The key or keys of the key-value pairs for the resource tag or tags assigned to the\n resource.
", + "properties": { + "Key": { + "description": "Tag key.
", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "Tag value.
", + "maxLength": 256, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "A replication configuration that you later provide to configure and start a AWS DMS Serverless replication", + "handlers": { + "create": { + "permissions": [ + "dms:CreateReplicationConfig", + "dms:AddTagsToResource", + "dms:ListTagsForResource", + "iam:CreateServiceLinkedRole", + "iam:AttachRolePolicy", + "iam:PutRolePolicy", + "iam:UpdateRoleDescription" + ] + }, + "delete": { + "permissions": [ + "dms:DescribeReplicationConfigs", + "dms:DeleteReplicationConfig", + "dms:ListTagsForResource", + "iam:DeleteServiceLinkedRole", + "iam:GetServiceLinkedRoleDeletionStatus" + ] + }, + "list": { + "permissions": [ + "dms:DescribeReplicationConfigs", + "dms:ListTagsForResource" + ] + }, + "read": { + "permissions": [ + "dms:DescribeReplicationConfigs", + "dms:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "dms:ModifyReplicationConfig", + "dms:AddTagsToResource", + "dms:RemoveTagsFromResource", + "dms:ListTagsForResource", + "iam:CreateServiceLinkedRole", + "iam:AttachRolePolicy", + "iam:PutRolePolicy", + "iam:UpdateRoleDescription" + ] + } + }, + "primaryIdentifier": [ + "/properties/ReplicationConfigArn" + ], + "properties": { + "ComputeConfig": { + "$ref": "#/definitions/ComputeConfig" + }, + "ReplicationConfigArn": { + "description": "The Amazon Resource Name (ARN) of the Replication Config", + "type": "string" + }, + "ReplicationConfigIdentifier": { + "description": "A unique identifier of replication configuration", + "type": "string" + }, + "ReplicationSettings": { + "description": "JSON settings for Servereless replications that are provisioned using this replication configuration", + "type": "object" + }, + "ReplicationType": { + "description": "The type of AWS DMS Serverless replication to provision using this replication configuration", + "enum": [ + "full-load", + "full-load-and-cdc", + "cdc" + ], + "type": "string" + }, + "ResourceIdentifier": { + "description": "A unique value or name that you get set for a given resource that can be used to construct an Amazon Resource Name (ARN) for that resource", + "type": "string" + }, + "SourceEndpointArn": { + "description": "The Amazon Resource Name (ARN) of the source endpoint for this AWS DMS Serverless replication configuration", + "type": "string" + }, + "SupplementalSettings": { + "description": "JSON settings for specifying supplemental data", + "type": "object" + }, + "TableMappings": { + "description": "JSON table mappings for AWS DMS Serverless replications that are provisioned using this replication configuration", + "type": "object" + }, + "Tags": { + "description": "Contains a map of the key-value pairs for the resource tag or tags assigned to the dataset.
", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 200, + "minItems": 1, + "type": "array" + }, + "TargetEndpointArn": { + "description": "The Amazon Resource Name (ARN) of the target endpoint for this AWS DMS Serverless replication configuration", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/ReplicationConfigArn" + ], + "required": [ + "ReplicationConfigIdentifier", + "SourceEndpointArn", + "TargetEndpointArn", + "ReplicationType", + "ComputeConfig", + "TableMappings" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-dms", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "dms:AddTagsToResource", + "dms:ListTagsForResource", + "dms:RemoveTagsFromResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::DMS::ReplicationConfig" +} diff --git a/src/schema/aws-dms-replicationinstance.json b/src/schema/aws-dms-replicationinstance.json new file mode 100644 index 00000000..8bddcdd3 --- /dev/null +++ b/src/schema/aws-dms-replicationinstance.json @@ -0,0 +1,111 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/KmsKeyId", + "/properties/ResourceIdentifier", + "/properties/DnsNameServers", + "/properties/ReplicationSubnetGroupIdentifier", + "/properties/PubliclyAccessible" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::DMS::ReplicationInstance", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "AllocatedStorage": { + "type": "integer" + }, + "AllowMajorVersionUpgrade": { + "type": "boolean" + }, + "AutoMinorVersionUpgrade": { + "type": "boolean" + }, + "AvailabilityZone": { + "type": "string" + }, + "DnsNameServers": { + "type": "string" + }, + "EngineVersion": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "KmsKeyId": { + "type": "string" + }, + "MultiAZ": { + "type": "boolean" + }, + "NetworkType": { + "type": "string" + }, + "PreferredMaintenanceWindow": { + "type": "string" + }, + "PubliclyAccessible": { + "type": "boolean" + }, + "ReplicationInstanceClass": { + "type": "string" + }, + "ReplicationInstanceIdentifier": { + "type": "string" + }, + "ReplicationInstancePrivateIpAddresses": { + "type": "string" + }, + "ReplicationInstancePublicIpAddresses": { + "type": "string" + }, + "ReplicationSubnetGroupIdentifier": { + "type": "string" + }, + "ResourceIdentifier": { + "type": "string" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + }, + "VpcSecurityGroupIds": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + } + }, + "readOnlyProperties": [ + "/properties/ReplicationInstancePublicIpAddresses", + "/properties/Id", + "/properties/ReplicationInstancePrivateIpAddresses" + ], + "required": [ + "ReplicationInstanceClass" + ], + "typeName": "AWS::DMS::ReplicationInstance" +} diff --git a/src/schema/aws-dms-replicationsubnetgroup.json b/src/schema/aws-dms-replicationsubnetgroup.json new file mode 100644 index 00000000..e4ac9b4b --- /dev/null +++ b/src/schema/aws-dms-replicationsubnetgroup.json @@ -0,0 +1,61 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ReplicationSubnetGroupIdentifier" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::DMS::ReplicationSubnetGroup", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Id": { + "type": "string" + }, + "ReplicationSubnetGroupDescription": { + "type": "string" + }, + "ReplicationSubnetGroupIdentifier": { + "type": "string" + }, + "SubnetIds": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "ReplicationSubnetGroupDescription", + "SubnetIds" + ], + "typeName": "AWS::DMS::ReplicationSubnetGroup" +} diff --git a/src/schema/aws-dms-replicationtask.json b/src/schema/aws-dms-replicationtask.json new file mode 100644 index 00000000..50d21774 --- /dev/null +++ b/src/schema/aws-dms-replicationtask.json @@ -0,0 +1,90 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ResourceIdentifier", + "/properties/TargetEndpointArn", + "/properties/ReplicationInstanceArn", + "/properties/SourceEndpointArn" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::DMS::ReplicationTask", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "CdcStartPosition": { + "type": "string" + }, + "CdcStartTime": { + "type": "number" + }, + "CdcStopPosition": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "MigrationType": { + "type": "string" + }, + "ReplicationInstanceArn": { + "type": "string" + }, + "ReplicationTaskIdentifier": { + "type": "string" + }, + "ReplicationTaskSettings": { + "type": "string" + }, + "ResourceIdentifier": { + "type": "string" + }, + "SourceEndpointArn": { + "type": "string" + }, + "TableMappings": { + "type": "string" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + }, + "TargetEndpointArn": { + "type": "string" + }, + "TaskData": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "TableMappings", + "SourceEndpointArn", + "MigrationType", + "TargetEndpointArn", + "ReplicationInstanceArn" + ], + "typeName": "AWS::DMS::ReplicationTask" +} diff --git a/src/schema/aws-docdb-dbcluster.json b/src/schema/aws-docdb-dbcluster.json new file mode 100644 index 00000000..7edd770e --- /dev/null +++ b/src/schema/aws-docdb-dbcluster.json @@ -0,0 +1,172 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/SnapshotIdentifier", + "/properties/KmsKeyId", + "/properties/MasterUsername", + "/properties/SourceDBClusterIdentifier", + "/properties/DBClusterIdentifier", + "/properties/AvailabilityZones", + "/properties/DBSubnetGroupName", + "/properties/StorageEncrypted" + ], + "definitions": { + "ServerlessV2ScalingConfiguration": { + "additionalProperties": false, + "properties": { + "MaxCapacity": { + "type": "number" + }, + "MinCapacity": { + "type": "number" + } + }, + "required": [ + "MinCapacity", + "MaxCapacity" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::DocDB::DBCluster", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "AvailabilityZones": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "BackupRetentionPeriod": { + "type": "integer" + }, + "ClusterResourceId": { + "type": "string" + }, + "CopyTagsToSnapshot": { + "type": "boolean" + }, + "DBClusterIdentifier": { + "type": "string" + }, + "DBClusterParameterGroupName": { + "type": "string" + }, + "DBSubnetGroupName": { + "type": "string" + }, + "DeletionProtection": { + "type": "boolean" + }, + "EnableCloudwatchLogsExports": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "Endpoint": { + "type": "string" + }, + "EngineVersion": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "KmsKeyId": { + "type": "string" + }, + "ManageMasterUserPassword": { + "type": "boolean" + }, + "MasterUserPassword": { + "type": "string" + }, + "MasterUserSecretKmsKeyId": { + "type": "string" + }, + "MasterUsername": { + "type": "string" + }, + "Port": { + "type": "integer" + }, + "PreferredBackupWindow": { + "type": "string" + }, + "PreferredMaintenanceWindow": { + "type": "string" + }, + "ReadEndpoint": { + "type": "string" + }, + "RestoreToTime": { + "type": "string" + }, + "RestoreType": { + "type": "string" + }, + "RotateMasterUserPassword": { + "type": "boolean" + }, + "ServerlessV2ScalingConfiguration": { + "$ref": "#/definitions/ServerlessV2ScalingConfiguration" + }, + "SnapshotIdentifier": { + "type": "string" + }, + "SourceDBClusterIdentifier": { + "type": "string" + }, + "StorageEncrypted": { + "type": "boolean" + }, + "StorageType": { + "type": "string" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + }, + "UseLatestRestorableTime": { + "type": "boolean" + }, + "VpcSecurityGroupIds": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + } + }, + "readOnlyProperties": [ + "/properties/ReadEndpoint", + "/properties/Id", + "/properties/Endpoint", + "/properties/ClusterResourceId" + ], + "typeName": "AWS::DocDB::DBCluster" +} diff --git a/src/schema/aws-docdb-dbclusterparametergroup.json b/src/schema/aws-docdb-dbclusterparametergroup.json new file mode 100644 index 00000000..68119487 --- /dev/null +++ b/src/schema/aws-docdb-dbclusterparametergroup.json @@ -0,0 +1,63 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Family", + "/properties/Description", + "/properties/Name" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::DocDB::DBClusterParameterGroup", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Description": { + "type": "string" + }, + "Family": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "Name": { + "type": "string" + }, + "Parameters": { + "type": "object" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "Family", + "Description", + "Parameters" + ], + "typeName": "AWS::DocDB::DBClusterParameterGroup" +} diff --git a/src/schema/aws-docdb-dbinstance.json b/src/schema/aws-docdb-dbinstance.json new file mode 100644 index 00000000..033c1422 --- /dev/null +++ b/src/schema/aws-docdb-dbinstance.json @@ -0,0 +1,85 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/DBClusterIdentifier", + "/properties/AvailabilityZone", + "/properties/DBInstanceIdentifier" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::DocDB::DBInstance", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "AutoMinorVersionUpgrade": { + "type": "boolean" + }, + "AvailabilityZone": { + "type": "string" + }, + "CACertificateIdentifier": { + "type": "string" + }, + "CertificateRotationRestart": { + "type": "boolean" + }, + "DBClusterIdentifier": { + "type": "string" + }, + "DBInstanceClass": { + "type": "string" + }, + "DBInstanceIdentifier": { + "type": "string" + }, + "EnablePerformanceInsights": { + "type": "boolean" + }, + "Endpoint": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "Port": { + "type": "string" + }, + "PreferredMaintenanceWindow": { + "type": "string" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + } + }, + "readOnlyProperties": [ + "/properties/Port", + "/properties/Id", + "/properties/Endpoint" + ], + "required": [ + "DBInstanceClass", + "DBClusterIdentifier" + ], + "typeName": "AWS::DocDB::DBInstance" +} diff --git a/src/schema/aws-docdb-dbsubnetgroup.json b/src/schema/aws-docdb-dbsubnetgroup.json new file mode 100644 index 00000000..14e861d7 --- /dev/null +++ b/src/schema/aws-docdb-dbsubnetgroup.json @@ -0,0 +1,61 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/DBSubnetGroupName" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::DocDB::DBSubnetGroup", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "DBSubnetGroupDescription": { + "type": "string" + }, + "DBSubnetGroupName": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "SubnetIds": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "DBSubnetGroupDescription", + "SubnetIds" + ], + "typeName": "AWS::DocDB::DBSubnetGroup" +} diff --git a/src/schema/aws-docdb-eventsubscription.json b/src/schema/aws-docdb-eventsubscription.json new file mode 100644 index 00000000..3b9db01d --- /dev/null +++ b/src/schema/aws-docdb-eventsubscription.json @@ -0,0 +1,49 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/SubscriptionName", + "/properties/SnsTopicArn" + ], + "description": "Resource Type definition for AWS::DocDB::EventSubscription", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Enabled": { + "type": "boolean" + }, + "EventCategories": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "Id": { + "type": "string" + }, + "SnsTopicArn": { + "type": "string" + }, + "SourceIds": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "SourceType": { + "type": "string" + }, + "SubscriptionName": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "SnsTopicArn" + ], + "typeName": "AWS::DocDB::EventSubscription" +} diff --git a/src/schema/aws-docdbelastic-cluster.json b/src/schema/aws-docdbelastic-cluster.json new file mode 100644 index 00000000..8daf22f4 --- /dev/null +++ b/src/schema/aws-docdbelastic-cluster.json @@ -0,0 +1,215 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/AdminUserName", + "/properties/AuthType", + "/properties/ClusterName", + "/properties/KmsKeyId" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "pattern": "^(?!aws:)[a-zA-Z+-=._:/]+$", + "type": "string" + }, + "Value": { + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "The AWS::DocDBElastic::Cluster Amazon DocumentDB (with MongoDB compatibility) Elastic Scale resource describes a Cluster", + "handlers": { + "create": { + "permissions": [ + "docdb-elastic:CreateCluster", + "docdb-elastic:TagResource", + "docdb-elastic:GetCluster", + "docdb-elastic:ListTagsForResource", + "ec2:CreateVpcEndpoint", + "ec2:DescribeVpcEndpoints", + "ec2:DeleteVpcEndpoints", + "ec2:ModifyVpcEndpoint", + "ec2:DescribeSecurityGroups", + "ec2:DescribeSubnets", + "ec2:DescribeVpcAttribute", + "ec2:DescribeVpcs", + "ec2:DescribeAvailabilityZones", + "secretsmanager:ListSecrets", + "secretsmanager:ListSecretVersionIds", + "secretsmanager:DescribeSecret", + "secretsmanager:GetSecretValue", + "secretsmanager:GetResourcePolicy", + "kms:DescribeKey", + "kms:CreateGrant", + "kms:GenerateDataKey", + "kms:Decrypt", + "iam:CreateServiceLinkedRole" + ] + }, + "delete": { + "permissions": [ + "docdb-elastic:DeleteCluster", + "docdb-elastic:GetCluster", + "ec2:DescribeVpcEndpoints", + "ec2:DeleteVpcEndpoints", + "ec2:ModifyVpcEndpoint", + "ec2:DescribeSecurityGroups", + "ec2:DescribeSubnets", + "ec2:DescribeVpcAttribute", + "ec2:DescribeVpcs", + "ec2:DescribeAvailabilityZones" + ] + }, + "list": { + "permissions": [ + "docdb-elastic:ListClusters" + ] + }, + "read": { + "permissions": [ + "docdb-elastic:GetCluster", + "docdb-elastic:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "docdb-elastic:UpdateCluster", + "docdb-elastic:TagResource", + "docdb-elastic:UntagResource", + "docdb-elastic:GetCluster", + "docdb-elastic:ListTagsForResource", + "ec2:CreateVpcEndpoint", + "ec2:DescribeVpcEndpoints", + "ec2:DeleteVpcEndpoints", + "ec2:ModifyVpcEndpoint", + "ec2:DescribeSecurityGroups", + "ec2:DescribeSubnets", + "ec2:DescribeVpcAttribute", + "ec2:DescribeVpcs", + "ec2:DescribeAvailabilityZones", + "secretsmanager:ListSecrets", + "secretsmanager:ListSecretVersionIds", + "secretsmanager:DescribeSecret", + "secretsmanager:GetSecretValue", + "secretsmanager:GetResourcePolicy", + "kms:DescribeKey", + "kms:CreateGrant", + "kms:GenerateDataKey", + "kms:Decrypt" + ] + } + }, + "primaryIdentifier": [ + "/properties/ClusterArn" + ], + "properties": { + "AdminUserName": { + "type": "string" + }, + "AdminUserPassword": { + "type": "string" + }, + "AuthType": { + "type": "string" + }, + "BackupRetentionPeriod": { + "type": "integer" + }, + "ClusterArn": { + "type": "string" + }, + "ClusterEndpoint": { + "type": "string" + }, + "ClusterName": { + "maxLength": 50, + "minLength": 1, + "pattern": "[a-zA-z][a-zA-Z0-9]*(-[a-zA-Z0-9]+)*", + "type": "string" + }, + "KmsKeyId": { + "type": "string" + }, + "PreferredBackupWindow": { + "type": "string" + }, + "PreferredMaintenanceWindow": { + "type": "string" + }, + "ShardCapacity": { + "type": "integer" + }, + "ShardCount": { + "type": "integer" + }, + "ShardInstanceCount": { + "type": "integer" + }, + "SubnetIds": { + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "minItems": 0, + "type": "array", + "uniqueItems": true + }, + "VpcSecurityGroupIds": { + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + } + }, + "readOnlyProperties": [ + "/properties/ClusterArn", + "/properties/ClusterEndpoint" + ], + "required": [ + "ClusterName", + "AdminUserName", + "ShardCapacity", + "ShardCount", + "AuthType" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-docdbelastic/", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "docdb-elastic:TagResource", + "docdb-elastic:UntagResource", + "docdb-elastic:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::DocDBElastic::Cluster", + "writeOnlyProperties": [ + "/properties/AdminUserPassword" + ] +} diff --git a/src/schema/aws-dsql-cluster.json b/src/schema/aws-dsql-cluster.json new file mode 100644 index 00000000..7c3f51be --- /dev/null +++ b/src/schema/aws-dsql-cluster.json @@ -0,0 +1,124 @@ +{ + "additionalProperties": false, + "definitions": { + "Tag": { + "additionalProperties": false, + "description": "A map of key and value pairs to use to tag your cluster.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 1 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 256, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ] + } + }, + "description": "Resource Type definition for AWS::DSQL::Cluster", + "handlers": { + "create": { + "permissions": [ + "dsql:CreateCluster", + "dsql:GetCluster", + "dsql:TagResource", + "dsql:ListTagsForResource", + "iam:CreateServiceLinkedRole" + ] + }, + "delete": { + "permissions": [ + "dsql:DeleteCluster", + "dsql:GetCluster", + "dsql:ListTagsForResource" + ] + }, + "list": { + "permissions": [ + "dsql:ListClusters", + "dsql:ListTagsForResource", + "tag:GetTagKeys", + "tag:GetTagValues" + ] + }, + "read": { + "permissions": [ + "dsql:GetCluster", + "dsql:ListTagsForResource", + "tag:GetTagKeys", + "tag:GetTagValues" + ] + }, + "update": { + "permissions": [ + "dsql:UpdateCluster", + "dsql:GetCluster", + "dsql:UntagResource", + "dsql:TagResource", + "dsql:ListTagsForResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/Identifier" + ], + "properties": { + "CreationTime": { + "description": "The time of when the cluster was created in ISO-8601 format.", + "type": "string" + }, + "DeletionProtectionEnabled": { + "description": "Whether deletion protection is enabled in this cluster.", + "type": "boolean" + }, + "Identifier": { + "description": "The ID of the created cluster.", + "type": "string" + }, + "ResourceArn": { + "description": "The Amazon Resource Name (ARN) for the cluster.", + "type": "string" + }, + "Status": { + "description": "The status of the cluster.", + "type": "string" + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + } + }, + "readOnlyProperties": [ + "/properties/ResourceArn", + "/properties/Identifier", + "/properties/CreationTime", + "/properties/Status" + ], + "required": [], + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "dsql:UntagResource", + "dsql:TagResource", + "dsql:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::DSQL::Cluster" +} diff --git a/src/schema/aws-dynamodb-globaltable.json b/src/schema/aws-dynamodb-globaltable.json new file mode 100644 index 00000000..4588d16b --- /dev/null +++ b/src/schema/aws-dynamodb-globaltable.json @@ -0,0 +1,721 @@ +{ + "additionalIdentifiers": [ + [ + "/properties/Arn" + ], + [ + "/properties/StreamArn" + ] + ], + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/LocalSecondaryIndexes", + "/properties/TableName", + "/properties/KeySchema" + ], + "definitions": { + "AttributeDefinition": { + "additionalProperties": false, + "properties": { + "AttributeName": { + "maxLength": 255, + "minLength": 1, + "type": "string" + }, + "AttributeType": { + "type": "string" + } + }, + "required": [ + "AttributeName", + "AttributeType" + ], + "type": "object" + }, + "CapacityAutoScalingSettings": { + "additionalProperties": false, + "properties": { + "MaxCapacity": { + "minimum": 1, + "type": "integer" + }, + "MinCapacity": { + "minimum": 1, + "type": "integer" + }, + "SeedCapacity": { + "minimum": 1, + "type": "integer" + }, + "TargetTrackingScalingPolicyConfiguration": { + "$ref": "#/definitions/TargetTrackingScalingPolicyConfiguration" + } + }, + "required": [ + "MinCapacity", + "MaxCapacity", + "TargetTrackingScalingPolicyConfiguration" + ], + "type": "object" + }, + "ContributorInsightsSpecification": { + "additionalProperties": false, + "properties": { + "Enabled": { + "type": "boolean" + } + }, + "required": [ + "Enabled" + ], + "type": "object" + }, + "GlobalSecondaryIndex": { + "additionalProperties": false, + "properties": { + "IndexName": { + "maxLength": 255, + "minLength": 3, + "type": "string" + }, + "KeySchema": { + "items": { + "$ref": "#/definitions/KeySchema" + }, + "maxItems": 2, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "Projection": { + "$ref": "#/definitions/Projection" + }, + "WarmThroughput": { + "$ref": "#/definitions/WarmThroughput" + }, + "WriteOnDemandThroughputSettings": { + "$ref": "#/definitions/WriteOnDemandThroughputSettings" + }, + "WriteProvisionedThroughputSettings": { + "$ref": "#/definitions/WriteProvisionedThroughputSettings" + } + }, + "required": [ + "IndexName", + "Projection", + "KeySchema" + ], + "type": "object" + }, + "KeySchema": { + "additionalProperties": false, + "properties": { + "AttributeName": { + "maxLength": 255, + "minLength": 1, + "type": "string" + }, + "KeyType": { + "type": "string" + } + }, + "required": [ + "KeyType", + "AttributeName" + ], + "type": "object" + }, + "KinesisStreamSpecification": { + "additionalProperties": false, + "properties": { + "ApproximateCreationDateTimePrecision": { + "enum": [ + "MICROSECOND", + "MILLISECOND" + ], + "type": "string" + }, + "StreamArn": { + "relationshipRef": { + "propertyPath": "/properties/Arn", + "typeName": "AWS::Kinesis::Stream" + }, + "type": "string" + } + }, + "required": [ + "StreamArn" + ], + "type": "object" + }, + "LocalSecondaryIndex": { + "additionalProperties": false, + "properties": { + "IndexName": { + "maxLength": 255, + "minLength": 3, + "type": "string" + }, + "KeySchema": { + "items": { + "$ref": "#/definitions/KeySchema" + }, + "maxItems": 2, + "type": "array", + "uniqueItems": true + }, + "Projection": { + "$ref": "#/definitions/Projection" + } + }, + "required": [ + "IndexName", + "Projection", + "KeySchema" + ], + "type": "object" + }, + "PointInTimeRecoverySpecification": { + "additionalProperties": false, + "dependencies": { + "RecoveryPeriodInDays": [ + "PointInTimeRecoveryEnabled" + ] + }, + "properties": { + "PointInTimeRecoveryEnabled": { + "type": "boolean" + }, + "RecoveryPeriodInDays": { + "maximum": 35, + "minimum": 1, + "type": "integer" + } + }, + "type": "object" + }, + "Projection": { + "additionalProperties": false, + "properties": { + "NonKeyAttributes": { + "insertionOrder": false, + "items": { + "type": "string" + }, + "maxItems": 20, + "type": "array", + "uniqueItems": true + }, + "ProjectionType": { + "type": "string" + } + }, + "type": "object" + }, + "ReadOnDemandThroughputSettings": { + "additionalProperties": false, + "properties": { + "MaxReadRequestUnits": { + "minimum": 1, + "type": "integer" + } + }, + "type": "object" + }, + "ReadProvisionedThroughputSettings": { + "additionalProperties": false, + "properties": { + "ReadCapacityAutoScalingSettings": { + "$ref": "#/definitions/CapacityAutoScalingSettings" + }, + "ReadCapacityUnits": { + "minimum": 1, + "type": "integer" + } + }, + "type": "object" + }, + "ReplicaGlobalSecondaryIndexSpecification": { + "additionalProperties": false, + "properties": { + "ContributorInsightsSpecification": { + "$ref": "#/definitions/ContributorInsightsSpecification" + }, + "IndexName": { + "maxLength": 255, + "minLength": 3, + "type": "string" + }, + "ReadOnDemandThroughputSettings": { + "$ref": "#/definitions/ReadOnDemandThroughputSettings" + }, + "ReadProvisionedThroughputSettings": { + "$ref": "#/definitions/ReadProvisionedThroughputSettings" + } + }, + "required": [ + "IndexName" + ], + "type": "object" + }, + "ReplicaSSESpecification": { + "additionalProperties": false, + "properties": { + "KMSMasterKeyId": { + "anyOf": [ + { + "relationshipRef": { + "propertyPath": "/properties/Arn", + "typeName": "AWS::KMS::Key" + } + }, + { + "relationshipRef": { + "propertyPath": "/properties/KeyId", + "typeName": "AWS::KMS::Key" + } + }, + { + "relationshipRef": { + "propertyPath": "/properties/AliasName", + "typeName": "AWS::KMS::Alias" + } + } + ], + "type": "string" + } + }, + "required": [ + "KMSMasterKeyId" + ], + "type": "object" + }, + "ReplicaSpecification": { + "additionalProperties": false, + "properties": { + "ContributorInsightsSpecification": { + "$ref": "#/definitions/ContributorInsightsSpecification" + }, + "DeletionProtectionEnabled": { + "type": "boolean" + }, + "GlobalSecondaryIndexes": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/ReplicaGlobalSecondaryIndexSpecification" + }, + "type": "array", + "uniqueItems": true + }, + "KinesisStreamSpecification": { + "$ref": "#/definitions/KinesisStreamSpecification" + }, + "PointInTimeRecoverySpecification": { + "$ref": "#/definitions/PointInTimeRecoverySpecification" + }, + "ReadOnDemandThroughputSettings": { + "$ref": "#/definitions/ReadOnDemandThroughputSettings" + }, + "ReadProvisionedThroughputSettings": { + "$ref": "#/definitions/ReadProvisionedThroughputSettings" + }, + "Region": { + "type": "string" + }, + "ReplicaStreamSpecification": { + "$ref": "#/definitions/ReplicaStreamSpecification" + }, + "ResourcePolicy": { + "$ref": "#/definitions/ResourcePolicy" + }, + "SSESpecification": { + "$ref": "#/definitions/ReplicaSSESpecification" + }, + "TableClass": { + "type": "string" + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "Region" + ], + "type": "object" + }, + "ReplicaStreamSpecification": { + "additionalProperties": false, + "properties": { + "ResourcePolicy": { + "$ref": "#/definitions/ResourcePolicy" + } + }, + "required": [ + "ResourcePolicy" + ], + "type": "object" + }, + "ResourcePolicy": { + "additionalProperties": false, + "properties": { + "PolicyDocument": { + "type": "object" + } + }, + "required": [ + "PolicyDocument" + ], + "type": "object" + }, + "SSESpecification": { + "additionalProperties": false, + "properties": { + "SSEEnabled": { + "type": "boolean" + }, + "SSEType": { + "type": "string" + } + }, + "required": [ + "SSEEnabled" + ], + "type": "object" + }, + "StreamSpecification": { + "additionalProperties": false, + "properties": { + "StreamViewType": { + "type": "string" + } + }, + "required": [ + "StreamViewType" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + }, + "TargetTrackingScalingPolicyConfiguration": { + "additionalProperties": false, + "properties": { + "DisableScaleIn": { + "type": "boolean" + }, + "ScaleInCooldown": { + "minimum": 0, + "type": "integer" + }, + "ScaleOutCooldown": { + "minimum": 0, + "type": "integer" + }, + "TargetValue": { + "format": "double", + "type": "number" + } + }, + "required": [ + "TargetValue" + ], + "type": "object" + }, + "TimeToLiveSpecification": { + "additionalProperties": false, + "properties": { + "AttributeName": { + "type": "string" + }, + "Enabled": { + "type": "boolean" + } + }, + "required": [ + "Enabled" + ], + "type": "object" + }, + "WarmThroughput": { + "additionalProperties": false, + "anyOf": [ + { + "required": [ + "ReadUnitsPerSecond" + ] + }, + { + "required": [ + "WriteUnitsPerSecond" + ] + } + ], + "properties": { + "ReadUnitsPerSecond": { + "minimum": 1, + "type": "integer" + }, + "WriteUnitsPerSecond": { + "minimum": 1, + "type": "integer" + } + }, + "type": "object" + }, + "WriteOnDemandThroughputSettings": { + "additionalProperties": false, + "properties": { + "MaxWriteRequestUnits": { + "minimum": 1, + "type": "integer" + } + }, + "type": "object" + }, + "WriteProvisionedThroughputSettings": { + "additionalProperties": false, + "properties": { + "WriteCapacityAutoScalingSettings": { + "$ref": "#/definitions/CapacityAutoScalingSettings" + } + }, + "type": "object" + } + }, + "description": "Version: None. Resource Type definition for AWS::DynamoDB::GlobalTable", + "handlers": { + "create": { + "permissions": [ + "dynamodb:CreateTable", + "dynamodb:CreateTableReplica", + "dynamodb:Describe*", + "dynamodb:UpdateTimeToLive", + "dynamodb:UpdateContributorInsights", + "dynamodb:UpdateContinuousBackups", + "dynamodb:ListTagsOfResource", + "dynamodb:Query", + "dynamodb:Scan", + "dynamodb:UpdateItem", + "dynamodb:PutItem", + "dynamodb:GetItem", + "dynamodb:DeleteItem", + "dynamodb:BatchWriteItem", + "dynamodb:TagResource", + "dynamodb:EnableKinesisStreamingDestination", + "dynamodb:DisableKinesisStreamingDestination", + "dynamodb:UpdateTableReplicaAutoScaling", + "dynamodb:TagResource", + "dynamodb:GetResourcePolicy", + "dynamodb:PutResourcePolicy", + "application-autoscaling:DeleteScalingPolicy", + "application-autoscaling:DeleteScheduledAction", + "application-autoscaling:DeregisterScalableTarget", + "application-autoscaling:Describe*", + "application-autoscaling:PutScalingPolicy", + "application-autoscaling:PutScheduledAction", + "application-autoscaling:RegisterScalableTarget", + "kinesis:ListStreams", + "kinesis:DescribeStream", + "kinesis:PutRecords", + "kms:CreateGrant", + "kms:DescribeKey", + "kms:ListAliases", + "kms:Decrypt", + "kms:RevokeGrant", + "cloudwatch:PutMetricData", + "iam:CreateServiceLinkedRole" + ] + }, + "delete": { + "permissions": [ + "dynamodb:Describe*", + "dynamodb:DeleteTable", + "application-autoscaling:DeleteScalingPolicy", + "application-autoscaling:DeleteScheduledAction", + "application-autoscaling:DeregisterScalableTarget", + "application-autoscaling:Describe*", + "application-autoscaling:PutScalingPolicy", + "application-autoscaling:PutScheduledAction", + "application-autoscaling:RegisterScalableTarget" + ] + }, + "list": { + "permissions": [ + "dynamodb:ListTables", + "cloudwatch:PutMetricData" + ] + }, + "read": { + "permissions": [ + "dynamodb:Describe*", + "dynamodb:GetResourcePolicy", + "application-autoscaling:Describe*", + "cloudwatch:PutMetricData", + "dynamodb:ListTagsOfResource", + "kms:DescribeKey" + ] + }, + "update": { + "permissions": [ + "dynamodb:Describe*", + "dynamodb:CreateTableReplica", + "dynamodb:UpdateTable", + "dynamodb:UpdateTimeToLive", + "dynamodb:UpdateContinuousBackups", + "dynamodb:UpdateContributorInsights", + "dynamodb:ListTagsOfResource", + "dynamodb:Query", + "dynamodb:Scan", + "dynamodb:UpdateItem", + "dynamodb:PutItem", + "dynamodb:GetItem", + "dynamodb:DeleteItem", + "dynamodb:BatchWriteItem", + "dynamodb:DeleteTable", + "dynamodb:DeleteTableReplica", + "dynamodb:UpdateItem", + "dynamodb:TagResource", + "dynamodb:UntagResource", + "dynamodb:EnableKinesisStreamingDestination", + "dynamodb:DisableKinesisStreamingDestination", + "dynamodb:UpdateTableReplicaAutoScaling", + "dynamodb:UpdateKinesisStreamingDestination", + "dynamodb:GetResourcePolicy", + "dynamodb:PutResourcePolicy", + "dynamodb:DeleteResourcePolicy", + "application-autoscaling:DeleteScalingPolicy", + "application-autoscaling:DeleteScheduledAction", + "application-autoscaling:DeregisterScalableTarget", + "application-autoscaling:Describe*", + "application-autoscaling:PutScalingPolicy", + "application-autoscaling:PutScheduledAction", + "application-autoscaling:RegisterScalableTarget", + "kinesis:ListStreams", + "kinesis:DescribeStream", + "kinesis:PutRecords", + "kms:CreateGrant", + "kms:DescribeKey", + "kms:ListAliases", + "kms:RevokeGrant", + "cloudwatch:PutMetricData" + ], + "timeoutInMinutes": 1200 + } + }, + "primaryIdentifier": [ + "/properties/TableName" + ], + "properties": { + "Arn": { + "type": "string" + }, + "AttributeDefinitions": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/AttributeDefinition" + }, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "BillingMode": { + "type": "string" + }, + "GlobalSecondaryIndexes": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/GlobalSecondaryIndex" + }, + "type": "array", + "uniqueItems": true + }, + "KeySchema": { + "items": { + "$ref": "#/definitions/KeySchema" + }, + "maxItems": 2, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "LocalSecondaryIndexes": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/LocalSecondaryIndex" + }, + "type": "array", + "uniqueItems": true + }, + "Replicas": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/ReplicaSpecification" + }, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "SSESpecification": { + "$ref": "#/definitions/SSESpecification" + }, + "StreamArn": { + "type": "string" + }, + "StreamSpecification": { + "$ref": "#/definitions/StreamSpecification" + }, + "TableId": { + "type": "string" + }, + "TableName": { + "type": "string" + }, + "TimeToLiveSpecification": { + "$ref": "#/definitions/TimeToLiveSpecification" + }, + "WarmThroughput": { + "$ref": "#/definitions/WarmThroughput" + }, + "WriteOnDemandThroughputSettings": { + "$ref": "#/definitions/WriteOnDemandThroughputSettings" + }, + "WriteProvisionedThroughputSettings": { + "$ref": "#/definitions/WriteProvisionedThroughputSettings" + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/StreamArn", + "/properties/TableId" + ], + "required": [ + "KeySchema", + "AttributeDefinitions", + "Replicas" + ], + "typeName": "AWS::DynamoDB::GlobalTable", + "writeOnlyProperties": [ + "/properties/Replicas/*/ReadProvisionedThroughputSettings/ReadCapacityAutoScalingSettings/SeedCapacity", + "/properties/Replicas/*/GlobalSecondaryIndexes/*/ReadProvisionedThroughputSettings/ReadCapacityAutoScalingSettings/SeedCapacity", + "/properties/WriteProvisionedThroughputSettings/WriteCapacityAutoScalingSettings/SeedCapacity", + "/properties/GlobalSecondaryIndexes/*/WriteProvisionedThroughputSettings/WriteCapacityAutoScalingSettings/SeedCapacity" + ] +} diff --git a/src/schema/aws-dynamodb-table.json b/src/schema/aws-dynamodb-table.json new file mode 100644 index 00000000..029cf0d5 --- /dev/null +++ b/src/schema/aws-dynamodb-table.json @@ -0,0 +1,734 @@ +{ + "additionalProperties": false, + "conditionalCreateOnlyProperties": [ + "/properties/KeySchema" + ], + "createOnlyProperties": [ + "/properties/TableName", + "/properties/ImportSourceSpecification" + ], + "definitions": { + "AttributeDefinition": { + "additionalProperties": false, + "description": "Represents an attribute for describing the schema for the table and indexes.", + "properties": { + "AttributeName": { + "description": "A name for the attribute.", + "type": "string" + }, + "AttributeType": { + "description": "The data type for the attribute, where:\n + ``S`` - the attribute is of type String\n + ``N`` - the attribute is of type Number\n + ``B`` - the attribute is of type Binary", + "type": "string" + } + }, + "required": [ + "AttributeName", + "AttributeType" + ], + "type": "object" + }, + "ContributorInsightsSpecification": { + "additionalProperties": false, + "description": "The settings used to enable or disable CloudWatch Contributor Insights.", + "properties": { + "Enabled": { + "description": "Indicates whether CloudWatch Contributor Insights are to be enabled (true) or disabled (false).", + "type": "boolean" + } + }, + "required": [ + "Enabled" + ], + "type": "object" + }, + "Csv": { + "additionalProperties": false, + "description": "The options for imported source files in CSV format. The values are Delimiter and HeaderList.", + "properties": { + "Delimiter": { + "description": "The delimiter used for separating items in the CSV file being imported.", + "type": "string" + }, + "HeaderList": { + "description": "List of the headers used to specify a common header for all source CSV files being imported. If this field is specified then the first line of each CSV file is treated as data instead of the header. If this field is not specified the the first line of each CSV file is treated as the header.", + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + "DeprecatedHashKeyElement": { + "additionalProperties": false, + "description": "", + "properties": { + "AttributeName": { + "type": "string" + }, + "AttributeType": { + "type": "string" + } + }, + "required": [ + "AttributeType", + "AttributeName" + ], + "type": "object" + }, + "DeprecatedKeySchema": { + "additionalProperties": false, + "description": "", + "properties": { + "HashKeyElement": { + "$ref": "#/definitions/DeprecatedHashKeyElement" + } + }, + "required": [ + "HashKeyElement" + ], + "type": "object" + }, + "GlobalSecondaryIndex": { + "additionalProperties": false, + "description": "Represents the properties of a global secondary index.", + "properties": { + "ContributorInsightsSpecification": { + "$ref": "#/definitions/ContributorInsightsSpecification", + "description": "The settings used to enable or disable CloudWatch Contributor Insights for the specified global secondary index." + }, + "IndexName": { + "description": "The name of the global secondary index. The name must be unique among all other indexes on this table.", + "type": "string" + }, + "KeySchema": { + "description": "The complete key schema for a global secondary index, which consists of one or more pairs of attribute names and key types:\n + ``HASH`` - partition key\n + ``RANGE`` - sort key\n \n The partition key of an item is also known as its *hash attribute*. The term \"hash attribute\" derives from DynamoDB's usage of an internal hash function to evenly distribute data items across partitions, based on their partition key values.\n The sort key of an item is also known as its *range attribute*. The term \"range attribute\" derives from the way DynamoDB stores items with the same partition key physically close together, in sorted order by the sort key value.", + "items": { + "$ref": "#/definitions/KeySchema" + }, + "type": "array", + "uniqueItems": true + }, + "OnDemandThroughput": { + "$ref": "#/definitions/OnDemandThroughput", + "description": "The maximum number of read and write units for the specified global secondary index. If you use this parameter, you must specify ``MaxReadRequestUnits``, ``MaxWriteRequestUnits``, or both." + }, + "Projection": { + "$ref": "#/definitions/Projection", + "description": "Represents attributes that are copied (projected) from the table into the global secondary index. These are in addition to the primary key attributes and index key attributes, which are automatically projected." + }, + "ProvisionedThroughput": { + "$ref": "#/definitions/ProvisionedThroughput", + "description": "Represents the provisioned throughput settings for the specified global secondary index.\n For current minimum and maximum provisioned throughput values, see [Service, Account, and Table Quotas](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Limits.html) in the *Amazon DynamoDB Developer Guide*." + }, + "WarmThroughput": { + "$ref": "#/definitions/WarmThroughput", + "description": "Represents the warm throughput value (in read units per second and write units per second) for the specified secondary index. If you use this parameter, you must specify ``ReadUnitsPerSecond``, ``WriteUnitsPerSecond``, or both." + } + }, + "required": [ + "IndexName", + "Projection", + "KeySchema" + ], + "type": "object" + }, + "ImportSourceSpecification": { + "additionalProperties": false, + "description": "Specifies the properties of data being imported from the S3 bucket source to the table.", + "properties": { + "InputCompressionType": { + "description": "Type of compression to be used on the input coming from the imported table.", + "type": "string" + }, + "InputFormat": { + "description": "The format of the source data. Valid values for ``ImportFormat`` are ``CSV``, ``DYNAMODB_JSON`` or ``ION``.", + "type": "string" + }, + "InputFormatOptions": { + "$ref": "#/definitions/InputFormatOptions", + "description": "Additional properties that specify how the input is formatted," + }, + "S3BucketSource": { + "$ref": "#/definitions/S3BucketSource", + "description": "The S3 bucket that provides the source for the import." + } + }, + "required": [ + "S3BucketSource", + "InputFormat" + ], + "type": "object" + }, + "InputFormatOptions": { + "additionalProperties": false, + "description": "The format options for the data that was imported into the target table. There is one value, CsvOption.", + "properties": { + "Csv": { + "$ref": "#/definitions/Csv", + "description": "The options for imported source files in CSV format. The values are Delimiter and HeaderList." + } + }, + "type": "object" + }, + "KeySchema": { + "additionalProperties": false, + "description": "Represents *a single element* of a key schema. A key schema specifies the attributes that make up the primary key of a table, or the key attributes of an index.\n A ``KeySchemaElement`` represents exactly one attribute of the primary key. For example, a simple primary key would be represented by one ``KeySchemaElement`` (for the partition key). A composite primary key would require one ``KeySchemaElement`` for the partition key, and another ``KeySchemaElement`` for the sort key.\n A ``KeySchemaElement`` must be a scalar, top-level attribute (not a nested attribute). The data type must be one of String, Number, or Binary. The attribute cannot be nested within a List or a Map.", + "properties": { + "AttributeName": { + "description": "The name of a key attribute.", + "type": "string" + }, + "KeyType": { + "description": "The role that this key attribute will assume:\n + ``HASH`` - partition key\n + ``RANGE`` - sort key\n \n The partition key of an item is also known as its *hash attribute*. The term \"hash attribute\" derives from DynamoDB's usage of an internal hash function to evenly distribute data items across partitions, based on their partition key values.\n The sort key of an item is also known as its *range attribute*. The term \"range attribute\" derives from the way DynamoDB stores items with the same partition key physically close together, in sorted order by the sort key value.", + "type": "string" + } + }, + "required": [ + "KeyType", + "AttributeName" + ], + "type": "object" + }, + "KinesisStreamSpecification": { + "additionalProperties": false, + "description": "The Kinesis Data Streams configuration for the specified table.", + "properties": { + "ApproximateCreationDateTimePrecision": { + "description": "The precision for the time and date that the stream was created.", + "enum": [ + "MICROSECOND", + "MILLISECOND" + ], + "type": "string" + }, + "StreamArn": { + "description": "The ARN for a specific Kinesis data stream.\n Length Constraints: Minimum length of 37. Maximum length of 1024.", + "relationshipRef": { + "propertyPath": "/properties/Arn", + "typeName": "AWS::Kinesis::Stream" + }, + "type": "string" + } + }, + "required": [ + "StreamArn" + ], + "type": "object" + }, + "LocalSecondaryIndex": { + "additionalProperties": false, + "description": "Represents the properties of a local secondary index. A local secondary index can only be created when its parent table is created.", + "properties": { + "IndexName": { + "description": "The name of the local secondary index. The name must be unique among all other indexes on this table.", + "type": "string" + }, + "KeySchema": { + "description": "The complete key schema for the local secondary index, consisting of one or more pairs of attribute names and key types:\n + ``HASH`` - partition key\n + ``RANGE`` - sort key\n \n The partition key of an item is also known as its *hash attribute*. The term \"hash attribute\" derives from DynamoDB's usage of an internal hash function to evenly distribute data items across partitions, based on their partition key values.\n The sort key of an item is also known as its *range attribute*. The term \"range attribute\" derives from the way DynamoDB stores items with the same partition key physically close together, in sorted order by the sort key value.", + "items": { + "$ref": "#/definitions/KeySchema" + }, + "type": "array", + "uniqueItems": true + }, + "Projection": { + "$ref": "#/definitions/Projection", + "description": "Represents attributes that are copied (projected) from the table into the local secondary index. These are in addition to the primary key attributes and index key attributes, which are automatically projected." + } + }, + "required": [ + "IndexName", + "Projection", + "KeySchema" + ], + "type": "object" + }, + "OnDemandThroughput": { + "additionalProperties": false, + "description": "Sets the maximum number of read and write units for the specified on-demand table. If you use this property, you must specify ``MaxReadRequestUnits``, ``MaxWriteRequestUnits``, or both.", + "properties": { + "MaxReadRequestUnits": { + "description": "Maximum number of read request units for the specified table.\n To specify a maximum ``OnDemandThroughput`` on your table, set the value of ``MaxReadRequestUnits`` as greater than or equal to 1. To remove the maximum ``OnDemandThroughput`` that is currently set on your table, set the value of ``MaxReadRequestUnits`` to -1.", + "minimum": 1, + "type": "integer" + }, + "MaxWriteRequestUnits": { + "description": "Maximum number of write request units for the specified table.\n To specify a maximum ``OnDemandThroughput`` on your table, set the value of ``MaxWriteRequestUnits`` as greater than or equal to 1. To remove the maximum ``OnDemandThroughput`` that is currently set on your table, set the value of ``MaxWriteRequestUnits`` to -1.", + "minimum": 1, + "type": "integer" + } + }, + "type": "object" + }, + "PointInTimeRecoverySpecification": { + "additionalProperties": false, + "dependencies": { + "RecoveryPeriodInDays": [ + "PointInTimeRecoveryEnabled" + ] + }, + "description": "The settings used to enable point in time recovery.", + "properties": { + "PointInTimeRecoveryEnabled": { + "description": "Indicates whether point in time recovery is enabled (true) or disabled (false) on the table.", + "type": "boolean" + }, + "RecoveryPeriodInDays": { + "description": "The number of preceding days for which continuous backups are taken and maintained. Your table data is only recoverable to any point-in-time from within the configured recovery period. This parameter is optional. If no value is provided, the value will default to 35.", + "maximum": 35, + "minimum": 1, + "type": "integer" + } + }, + "type": "object" + }, + "Projection": { + "additionalProperties": false, + "description": "Represents attributes that are copied (projected) from the table into an index. These are in addition to the primary key attributes and index key attributes, which are automatically projected.", + "properties": { + "NonKeyAttributes": { + "description": "Represents the non-key attribute names which will be projected into the index.\n For global and local secondary indexes, the total count of ``NonKeyAttributes`` summed across all of the secondary indexes, must not exceed 100. If you project the same attribute into two different indexes, this counts as two distinct attributes when determining the total. This limit only applies when you specify the ProjectionType of ``INCLUDE``. You still can specify the ProjectionType of ``ALL`` to project all attributes from the source table, even if the table has more than 100 attributes.", + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "ProjectionType": { + "description": "The set of attributes that are projected into the index:\n + ``KEYS_ONLY`` - Only the index and primary keys are projected into the index.\n + ``INCLUDE`` - In addition to the attributes described in ``KEYS_ONLY``, the secondary index will include other non-key attributes that you specify.\n + ``ALL`` - All of the table attributes are projected into the index.\n \n When using the DynamoDB console, ``ALL`` is selected by default.", + "type": "string" + } + }, + "type": "object" + }, + "ProvisionedThroughput": { + "additionalProperties": false, + "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 [Table ProvisionedThroughput](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_ProvisionedThroughput.html).", + "properties": { + "ReadCapacityUnits": { + "description": "The maximum number of strongly consistent reads consumed per second before DynamoDB returns a ``ThrottlingException``. For more information, see [Specifying Read and Write Requirements](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ProvisionedThroughput.html) in the *Amazon DynamoDB Developer Guide*.\n If read/write capacity mode is ``PAY_PER_REQUEST`` the value is set to 0.", + "type": "integer" + }, + "WriteCapacityUnits": { + "description": "The maximum number of writes consumed per second before DynamoDB returns a ``ThrottlingException``. For more information, see [Specifying Read and Write Requirements](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ProvisionedThroughput.html) in the *Amazon DynamoDB Developer Guide*.\n If read/write capacity mode is ``PAY_PER_REQUEST`` the value is set to 0.", + "type": "integer" + } + }, + "required": [ + "WriteCapacityUnits", + "ReadCapacityUnits" + ], + "type": "object" + }, + "ResourcePolicy": { + "additionalProperties": false, + "description": "Creates or updates a resource-based policy document that contains the permissions for DDB resources, such as a table, its indexes, and stream. Resource-based policies let you define access permissions by specifying who has access to each resource, and the actions they are allowed to perform on each resource.\n In a CFNshort template, you can provide the policy in JSON or YAML format because CFNshort converts YAML to JSON before submitting it to DDB. For more information about resource-based policies, see [Using resource-based policies for](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/access-control-resource-based.html) and [Resource-based policy examples](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/rbac-examples.html).\n While defining resource-based policies in your CFNshort templates, the following considerations apply:\n + The maximum size supported for a resource-based policy document in JSON format is 20 KB. DDB counts whitespaces when calculating the size of a policy against this limit. \n + Resource-based policies don't support [drift detection](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-stack-drift.html#). If you update a policy outside of the CFNshort stack template, you'll need to update the CFNshort stack with the changes.\n + Resource-based policies don't support out-of-band changes. If you add, update, or delete a policy outside of the CFNshort template, the change won't be overwritten if there are no changes to the policy within the template.\n For example, say that your template contains a resource-based policy, which you later update outside of the template. If you don't make any changes to the policy in the template, the updated policy in DDB won\u2019t be synced with the policy in the template.\n Conversely, say that your template doesn\u2019t contain a resource-based policy, but you add a policy outside of the template. This policy won\u2019t be removed from DDB as long as you don\u2019t add it to the template. When you add a policy to the template and update the stack, the existing policy in DDB will be updated to match the one defined in the template.\n \n For a full list of all considerations, see [Resource-based policy considerations](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/rbac-considerations.html).", + "properties": { + "PolicyDocument": { + "description": "A resource-based policy document that contains permissions to add to the specified DDB table, index, or both. In a CFNshort template, you can provide the policy in JSON or YAML format because CFNshort converts YAML to JSON before submitting it to DDB. For more information about resource-based policies, see [Using resource-based policies for](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/access-control-resource-based.html) and [Resource-based policy examples](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/rbac-examples.html).", + "type": "object" + } + }, + "required": [ + "PolicyDocument" + ], + "type": "object" + }, + "S3BucketSource": { + "additionalProperties": false, + "description": "The S3 bucket that is being imported from.", + "properties": { + "S3Bucket": { + "description": "The S3 bucket that is being imported from.", + "relationshipRef": { + "propertyPath": "/properties/BucketName", + "typeName": "AWS::S3::Bucket" + }, + "type": "string" + }, + "S3BucketOwner": { + "description": "The account number of the S3 bucket that is being imported from. If the bucket is owned by the requester this is optional.", + "type": "string" + }, + "S3KeyPrefix": { + "description": "The key prefix shared by all S3 Objects that are being imported.", + "type": "string" + } + }, + "required": [ + "S3Bucket" + ], + "type": "object" + }, + "SSESpecification": { + "additionalProperties": false, + "description": "Represents the settings used to enable server-side encryption.", + "properties": { + "KMSMasterKeyId": { + "anyOf": [ + { + "relationshipRef": { + "propertyPath": "/properties/Arn", + "typeName": "AWS::KMS::Key" + } + }, + { + "relationshipRef": { + "propertyPath": "/properties/KeyId", + "typeName": "AWS::KMS::Key" + } + }, + { + "relationshipRef": { + "propertyPath": "/properties/AliasName", + "typeName": "AWS::KMS::Alias" + } + } + ], + "description": "The KMS key that should be used for the KMS encryption. To specify a key, use its key ID, Amazon Resource Name (ARN), alias name, or alias ARN. Note that you should only provide this parameter if the key is different from the default DynamoDB key ``alias/aws/dynamodb``.", + "type": "string" + }, + "SSEEnabled": { + "description": "Indicates whether server-side encryption is done using an AWS managed key or an AWS owned key. If enabled (true), server-side encryption type is set to ``KMS`` and an AWS managed key is used (KMS charges apply). If disabled (false) or not specified, server-side encryption is set to AWS owned key.", + "type": "boolean" + }, + "SSEType": { + "description": "Server-side encryption type. The only supported value is:\n + ``KMS`` - Server-side encryption that uses KMSlong. The key is stored in your account and is managed by KMS (KMS charges apply).", + "type": "string" + } + }, + "required": [ + "SSEEnabled" + ], + "type": "object" + }, + "StreamSpecification": { + "additionalProperties": false, + "description": "Represents the DynamoDB Streams configuration for a table in DynamoDB.", + "properties": { + "ResourcePolicy": { + "$ref": "#/definitions/ResourcePolicy", + "description": "Creates or updates a resource-based policy document that contains the permissions for DDB resources, such as a table's streams. Resource-based policies let you define access permissions by specifying who has access to each resource, and the actions they are allowed to perform on each resource.\n In a CFNshort template, you can provide the policy in JSON or YAML format because CFNshort converts YAML to JSON before submitting it to DDB. For more information about resource-based policies, see [Using resource-based policies for](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/access-control-resource-based.html) and [Resource-based policy examples](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/rbac-examples.html)." + }, + "StreamViewType": { + "description": "When an item in the table is modified, ``StreamViewType`` determines what information is written to the stream for this table. Valid values for ``StreamViewType`` are:\n + ``KEYS_ONLY`` - Only the key attributes of the modified item are written to the stream.\n + ``NEW_IMAGE`` - The entire item, as it appears after it was modified, is written to the stream.\n + ``OLD_IMAGE`` - The entire item, as it appeared before it was modified, is written to the stream.\n + ``NEW_AND_OLD_IMAGES`` - Both the new and the old item images of the item are written to the stream.", + "type": "string" + } + }, + "required": [ + "StreamViewType" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "description": "Describes a tag. A tag is a key-value pair. You can add up to 50 tags to a single DynamoDB table. \n AWS-assigned tag names and values are automatically assigned the ``aws:`` prefix, which the user cannot assign. AWS-assigned tag names do not count towards the tag limit of 50. User-assigned tag names have the prefix ``user:`` in the Cost Allocation Report. You cannot backdate the application of a tag.\n For an overview on tagging DynamoDB resources, see [Tagging for DynamoDB](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Tagging.html) in the *Amazon DynamoDB Developer Guide*.", + "properties": { + "Key": { + "description": "The key of the tag. Tag keys are case sensitive. Each DynamoDB table can only have up to one tag with the same key. If you try to add an existing tag (same key), the existing tag value will be updated to the new value.", + "type": "string" + }, + "Value": { + "description": "The value of the tag. Tag values are case-sensitive and can be null.", + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + }, + "TimeToLiveSpecification": { + "additionalProperties": false, + "description": "Represents the settings used to enable or disable Time to Live (TTL) for the specified table.", + "properties": { + "AttributeName": { + "description": "The name of the TTL attribute used to store the expiration time for items in the table.\n + The ``AttributeName`` property is required when enabling the TTL, or when TTL is already enabled.\n + To update this property, you must first disable TTL and then enable TTL with the new attribute name.", + "type": "string" + }, + "Enabled": { + "description": "Indicates whether TTL is to be enabled (true) or disabled (false) on the table.", + "type": "boolean" + } + }, + "required": [ + "Enabled" + ], + "type": "object" + }, + "WarmThroughput": { + "additionalProperties": false, + "anyOf": [ + { + "required": [ + "ReadUnitsPerSecond" + ] + }, + { + "required": [ + "WriteUnitsPerSecond" + ] + } + ], + "description": "Provides visibility into the number of read and write operations your table or secondary index can instantaneously support. The settings can be modified using the ``UpdateTable`` operation to meet the throughput requirements of an upcoming peak event.", + "properties": { + "ReadUnitsPerSecond": { + "description": "Represents the number of read operations your base table can instantaneously support.", + "minimum": 1, + "type": "integer" + }, + "WriteUnitsPerSecond": { + "description": "Represents the number of write operations your base table can instantaneously support.", + "minimum": 1, + "type": "integer" + } + }, + "type": "object" + } + }, + "description": "The ``AWS::DynamoDB::Table`` resource creates a DDB table. For more information, see [CreateTable](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_CreateTable.html) in the *API Reference*.\n You should be aware of the following behaviors when working with DDB tables:\n + CFNlong typically creates DDB tables in parallel. However, if your template includes multiple DDB tables with indexes, you must declare dependencies so that the tables are created sequentially. DDBlong limits the number of tables with secondary indexes that are in the creating state. If you create multiple tables with indexes at the same time, DDB returns an error and the stack operation fails. For an example, see [DynamoDB Table with a DependsOn Attribute](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dynamodb-table.html#aws-resource-dynamodb-table--examples--DynamoDB_Table_with_a_DependsOn_Attribute).\n \n Our guidance is to use the latest schema documented for your CFNlong templates. This schema supports the provisioning of all table settings below. When using this schema in your CFNlong templates, please ensure that your Identity and Access Management (IAM) policies are updated with appropriate permissions to allow for the authorization of these setting changes.", + "handlers": { + "create": { + "permissions": [ + "dynamodb:CreateTable", + "dynamodb:DescribeImport", + "dynamodb:DescribeTable", + "dynamodb:DescribeTimeToLive", + "dynamodb:UpdateTimeToLive", + "dynamodb:UpdateContributorInsights", + "dynamodb:UpdateContinuousBackups", + "dynamodb:DescribeContinuousBackups", + "dynamodb:DescribeContributorInsights", + "dynamodb:EnableKinesisStreamingDestination", + "dynamodb:DisableKinesisStreamingDestination", + "dynamodb:DescribeKinesisStreamingDestination", + "dynamodb:ImportTable", + "dynamodb:ListTagsOfResource", + "dynamodb:TagResource", + "dynamodb:UpdateTable", + "dynamodb:GetResourcePolicy", + "dynamodb:PutResourcePolicy", + "kinesis:DescribeStream", + "kinesis:PutRecords", + "iam:CreateServiceLinkedRole", + "kms:CreateGrant", + "kms:Decrypt", + "kms:DescribeKey", + "kms:ListAliases", + "kms:Encrypt", + "kms:RevokeGrant", + "logs:CreateLogGroup", + "logs:CreateLogStream", + "logs:DescribeLogGroups", + "logs:DescribeLogStreams", + "logs:PutLogEvents", + "logs:PutRetentionPolicy", + "s3:GetObject", + "s3:GetObjectMetadata", + "s3:ListBucket" + ], + "timeoutInMinutes": 720 + }, + "delete": { + "permissions": [ + "dynamodb:DeleteTable", + "dynamodb:DescribeTable" + ], + "timeoutInMinutes": 720 + }, + "list": { + "permissions": [ + "dynamodb:ListTables" + ] + }, + "read": { + "permissions": [ + "dynamodb:DescribeTable", + "dynamodb:DescribeContinuousBackups", + "dynamodb:DescribeContributorInsights", + "dynamodb:DescribeKinesisStreamingDestination", + "dynamodb:ListTagsOfResource", + "dynamodb:GetResourcePolicy" + ] + }, + "update": { + "permissions": [ + "dynamodb:UpdateTable", + "dynamodb:DescribeTable", + "dynamodb:DescribeTimeToLive", + "dynamodb:UpdateTimeToLive", + "dynamodb:UpdateContinuousBackups", + "dynamodb:UpdateContributorInsights", + "dynamodb:UpdateKinesisStreamingDestination", + "dynamodb:DescribeContinuousBackups", + "dynamodb:DescribeKinesisStreamingDestination", + "dynamodb:ListTagsOfResource", + "dynamodb:TagResource", + "dynamodb:UntagResource", + "dynamodb:DescribeContributorInsights", + "dynamodb:EnableKinesisStreamingDestination", + "dynamodb:DisableKinesisStreamingDestination", + "dynamodb:GetResourcePolicy", + "dynamodb:PutResourcePolicy", + "dynamodb:DeleteResourcePolicy", + "kinesis:DescribeStream", + "kinesis:PutRecords", + "iam:CreateServiceLinkedRole", + "kms:CreateGrant", + "kms:DescribeKey", + "kms:ListAliases", + "kms:RevokeGrant" + ], + "timeoutInMinutes": 720 + } + }, + "primaryIdentifier": [ + "/properties/TableName" + ], + "properties": { + "Arn": { + "description": "", + "type": "string" + }, + "AttributeDefinitions": { + "description": "A list of attributes that describe the key schema for the table and indexes.\n This property is required to create a DDB table.\n Update requires: [Some interruptions](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-some-interrupt). Replacement if you edit an existing AttributeDefinition.", + "items": { + "$ref": "#/definitions/AttributeDefinition" + }, + "type": "array", + "uniqueItems": true + }, + "BillingMode": { + "description": "Specify how you are charged for read and write throughput and how you manage capacity.\n Valid values include:\n + ``PAY_PER_REQUEST`` - We recommend using ``PAY_PER_REQUEST`` for most DynamoDB workloads. ``PAY_PER_REQUEST`` sets the billing mode to [On-demand capacity mode](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/on-demand-capacity-mode.html). \n + ``PROVISIONED`` - We recommend using ``PROVISIONED`` for steady workloads with predictable growth where capacity requirements can be reliably forecasted. ``PROVISIONED`` sets the billing mode to [Provisioned capacity mode](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/provisioned-capacity-mode.html).\n \n If not specified, the default is ``PROVISIONED``.", + "type": "string" + }, + "ContributorInsightsSpecification": { + "$ref": "#/definitions/ContributorInsightsSpecification", + "description": "The settings used to enable or disable CloudWatch Contributor Insights for the specified table." + }, + "DeletionProtectionEnabled": { + "description": "Determines if a table is protected from deletion. When enabled, the table cannot be deleted by any user or process. This setting is disabled by default. For more information, see [Using deletion protection](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/WorkingWithTables.Basics.html#WorkingWithTables.Basics.DeletionProtection) in the *Developer Guide*.", + "type": "boolean" + }, + "GlobalSecondaryIndexes": { + "description": "Global secondary indexes to be created on the table. You can create up to 20 global secondary indexes.\n If you update a table to include a new global secondary index, CFNlong initiates the index creation and then proceeds with the stack update. CFNlong doesn't wait for the index to complete creation because the backfilling phase can take a long time, depending on the size of the table. You can't use the index or update the table until the index's status is ``ACTIVE``. You can track its status by using the DynamoDB [DescribeTable](https://docs.aws.amazon.com/cli/latest/reference/dynamodb/describe-table.html) command.\n If you add or delete an index during an update, we recommend that you don't update any other resources. If your stack fails to update and is rolled back while adding a new index, you must manually delete the index. \n Updates are not supported. The following are exceptions:\n + If you update either the contributor insights specification or the provisioned throughput values of global secondary indexes, you can update the table without interruption.\n + You can delete or add one global secondary index without interruption. If you do both in the same update (for example, by changing the index's logical ID), the update fails.", + "items": { + "$ref": "#/definitions/GlobalSecondaryIndex" + }, + "type": "array", + "uniqueItems": false + }, + "ImportSourceSpecification": { + "$ref": "#/definitions/ImportSourceSpecification", + "description": "Specifies the properties of data being imported from the S3 bucket source to the\" table.\n If you specify the ``ImportSourceSpecification`` property, and also specify either the ``StreamSpecification``, the ``TableClass`` property, the ``DeletionProtectionEnabled`` property, or the ``WarmThroughput`` property, the IAM entity creating/updating stack must have ``UpdateTable`` permission." + }, + "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.", + "oneOf": [ + { + "items": { + "$ref": "#/definitions/KeySchema" + }, + "type": "array", + "uniqueItems": true + }, + { + "type": "object" + } + ] + }, + "KinesisStreamSpecification": { + "$ref": "#/definitions/KinesisStreamSpecification", + "description": "The Kinesis Data Streams configuration for the specified table." + }, + "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.", + "items": { + "$ref": "#/definitions/LocalSecondaryIndex" + }, + "type": "array", + "uniqueItems": false + }, + "OnDemandThroughput": { + "$ref": "#/definitions/OnDemandThroughput", + "description": "Sets the maximum number of read and write units for the specified on-demand table. If you use this property, you must specify ``MaxReadRequestUnits``, ``MaxWriteRequestUnits``, or both." + }, + "PointInTimeRecoverySpecification": { + "$ref": "#/definitions/PointInTimeRecoverySpecification", + "description": "The settings used to enable point in time recovery." + }, + "ProvisionedThroughput": { + "$ref": "#/definitions/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](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_ProvisionedThroughput.html). \n If you set ``BillingMode`` as ``PROVISIONED``, you must specify this property. If you set ``BillingMode`` as ``PAY_PER_REQUEST``, you cannot specify this property." + }, + "ResourcePolicy": { + "$ref": "#/definitions/ResourcePolicy", + "description": "A resource-based policy document that contains permissions to add to the specified table. In a CFNshort template, you can provide the policy in JSON or YAML format because CFNshort converts YAML to JSON before submitting it to DDB. For more information about resource-based policies, see [Using resource-based policies for](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/access-control-resource-based.html) and [Resource-based policy examples](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/rbac-examples.html).\n When you attach a resource-based policy while creating a table, the policy creation is *strongly consistent*. For information about the considerations that you should keep in mind while attaching a resource-based policy, see [Resource-based policy considerations](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/rbac-considerations.html)." + }, + "SSESpecification": { + "$ref": "#/definitions/SSESpecification", + "description": "Specifies the settings to enable server-side encryption." + }, + "StreamArn": { + "description": "", + "type": "string" + }, + "StreamSpecification": { + "$ref": "#/definitions/StreamSpecification", + "description": "The settings for the DDB table stream, which capture changes to items stored in the table." + }, + "TableClass": { + "description": "The table class of the new table. Valid values are ``STANDARD`` and ``STANDARD_INFREQUENT_ACCESS``.", + "type": "string" + }, + "TableName": { + "description": "A name for the table. If you don't specify a name, CFNlong generates a unique physical ID and uses that ID for the table name. For more information, see [Name Type](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-name.html).\n If you specify a name, you cannot perform updates that require replacement of this resource. You can perform updates that require no or some interruption. If you must replace the resource, specify a new name.", + "type": "string" + }, + "Tags": { + "description": "An array of key-value pairs to apply to this resource.\n For more information, see [Tag](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-resource-tags.html).", + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + }, + "TimeToLiveSpecification": { + "$ref": "#/definitions/TimeToLiveSpecification", + "description": "Specifies the Time to Live (TTL) settings for the table.\n For detailed information about the limits in DynamoDB, see [Limits in Amazon DynamoDB](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Limits.html) in the Amazon DynamoDB Developer Guide." + }, + "WarmThroughput": { + "$ref": "#/definitions/WarmThroughput", + "description": "Represents the warm throughput (in read units per second and write units per second) for creating a table." + } + }, + "propertyTransform": { + "/properties/SSESpecification/KMSMasterKeyId": "$join([\"arn:aws(-[a-z]{1,4}){0,2}:kms:[a-z]{2,4}(-[a-z]{1,4})?-[a-z]{1,10}-[0-9]:[0-9]{12}:key\\/\", SSESpecification.KMSMasterKeyId]) $OR $join([\"arn:aws(-[a-z]{1,4}){0,2}:kms:[a-z]{2,4}(-[a-z]{1,4})?-[a-z]{1,10}-[0-9]:[0-9]{12}:key\\/\", KMSMasterKeyId])" + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/StreamArn" + ], + "required": [ + "KeySchema" + ], + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "dynamodb:TagResource", + "dynamodb:UntagResource", + "dynamodb:ListTagsOfResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::DynamoDB::Table", + "writeOnlyProperties": [ + "/properties/ImportSourceSpecification" + ] +} diff --git a/src/schema/aws-ec2-capacityreservation.json b/src/schema/aws-ec2-capacityreservation.json new file mode 100644 index 00000000..cd05f3c4 --- /dev/null +++ b/src/schema/aws-ec2-capacityreservation.json @@ -0,0 +1,245 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Tenancy", + "/properties/InstancePlatform", + "/properties/InstanceType", + "/properties/AvailabilityZone", + "/properties/TagSpecifications", + "/properties/OutPostArn", + "/properties/EphemeralStorage", + "/properties/EbsOptimized", + "/properties/PlacementGroupArn", + "/properties/AvailabilityZoneId" + ], + "definitions": { + "CapacityAllocation": { + "additionalProperties": false, + "properties": { + "AllocationType": { + "type": "string" + }, + "Count": { + "type": "integer" + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + }, + "TagSpecification": { + "additionalProperties": false, + "properties": { + "ResourceType": { + "type": "string" + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + } + }, + "description": "Resource Type definition for AWS::EC2::CapacityReservation", + "handlers": { + "create": { + "permissions": [ + "ec2:CreateCapacityReservation", + "ec2:DescribeCapacityReservations", + "ec2:CancelCapacityReservation", + "ec2:CreateTags" + ] + }, + "delete": { + "permissions": [ + "ec2:CreateCapacityReservation", + "ec2:DescribeCapacityReservations", + "ec2:CancelCapacityReservation", + "ec2:DeleteTags" + ] + }, + "list": { + "permissions": [ + "ec2:DescribeCapacityReservations" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeCapacityReservations" + ] + }, + "update": { + "permissions": [ + "ec2:ModifyCapacityReservation", + "ec2:CreateCapacityReservation", + "ec2:DescribeCapacityReservations", + "ec2:CancelCapacityReservation", + "ec2:AssociateCapacityReservationBillingOwner", + "ec2:CreateTags", + "ec2:DeleteTags" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "AvailabilityZone": { + "type": "string" + }, + "AvailabilityZoneId": { + "type": "string" + }, + "AvailableInstanceCount": { + "type": "integer" + }, + "CapacityAllocationSet": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/CapacityAllocation" + }, + "type": "array", + "uniqueItems": false + }, + "CapacityReservationArn": { + "type": "string" + }, + "CapacityReservationFleetId": { + "type": "string" + }, + "CommitmentInfo": { + "additionalProperties": false, + "properties": { + "CommitmentEndDate": { + "type": "string" + }, + "CommittedInstanceCount": { + "type": "integer" + } + }, + "type": "object" + }, + "CreateDate": { + "type": "string" + }, + "DeliveryPreference": { + "type": "string" + }, + "EbsOptimized": { + "type": "boolean" + }, + "EndDate": { + "type": "string" + }, + "EndDateType": { + "type": "string" + }, + "EphemeralStorage": { + "type": "boolean" + }, + "Id": { + "type": "string" + }, + "InstanceCount": { + "type": "integer" + }, + "InstanceMatchCriteria": { + "type": "string" + }, + "InstancePlatform": { + "type": "string" + }, + "InstanceType": { + "type": "string" + }, + "OutPostArn": { + "type": "string" + }, + "OwnerId": { + "type": "string" + }, + "PlacementGroupArn": { + "type": "string" + }, + "ReservationType": { + "type": "string" + }, + "StartDate": { + "type": "string" + }, + "State": { + "type": "string" + }, + "TagSpecifications": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/TagSpecification" + }, + "type": "array", + "uniqueItems": false + }, + "Tenancy": { + "type": "string" + }, + "TotalInstanceCount": { + "type": "integer" + }, + "UnusedReservationBillingOwnerId": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id", + "/properties/AvailableInstanceCount", + "/properties/TotalInstanceCount", + "/properties/StartDate", + "/properties/CapacityReservationArn", + "/properties/CreateDate", + "/properties/State", + "/properties/OwnerId", + "/properties/ReservationType", + "/properties/CapacityAllocationSet", + "/properties/CommitmentInfo", + "/properties/DeliveryPreference", + "/properties/CapacityReservationFleetId" + ], + "required": [ + "InstanceCount", + "InstancePlatform", + "InstanceType" + ], + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "ec2:CreateTags", + "ec2:DeleteTags" + ], + "tagOnCreate": true, + "tagProperty": "/properties/TagSpecifications", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::EC2::CapacityReservation", + "writeOnlyProperties": [ + "/properties/UnusedReservationBillingOwnerId" + ] +} diff --git a/src/schema/aws-ec2-capacityreservationfleet.json b/src/schema/aws-ec2-capacityreservationfleet.json new file mode 100644 index 00000000..16454303 --- /dev/null +++ b/src/schema/aws-ec2-capacityreservationfleet.json @@ -0,0 +1,191 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/InstanceTypeSpecifications", + "/properties/AllocationStrategy", + "/properties/TagSpecifications", + "/properties/EndDate", + "/properties/Tenancy", + "/properties/InstanceMatchCriteria" + ], + "definitions": { + "InstanceTypeSpecification": { + "additionalProperties": false, + "properties": { + "AvailabilityZone": { + "type": "string" + }, + "AvailabilityZoneId": { + "type": "string" + }, + "EbsOptimized": { + "type": "boolean" + }, + "InstancePlatform": { + "type": "string" + }, + "InstanceType": { + "type": "string" + }, + "Priority": { + "maximum": 999, + "minimum": 0, + "type": "integer" + }, + "Weight": { + "type": "number" + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + }, + "TagSpecification": { + "additionalProperties": false, + "properties": { + "ResourceType": { + "type": "string" + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + } + }, + "description": "Resource Type definition for AWS::EC2::CapacityReservationFleet", + "handlers": { + "create": { + "permissions": [ + "ec2:CreateCapacityReservationFleet", + "ec2:ModifyCapacityReservationFleet", + "ec2:DescribeCapacityReservationFleets", + "ec2:CancelCapacityReservationFleets", + "ec2:CreateCapacityReservation", + "ec2:DescribeCapacityReservations", + "ec2:CancelCapacityReservation", + "ec2:DescribeInstances", + "ec2:CreateTags", + "iam:CreateServiceLinkedRole" + ] + }, + "delete": { + "permissions": [ + "ec2:CreateCapacityReservationFleet", + "ec2:ModifyCapacityReservationFleet", + "ec2:DescribeCapacityReservationFleets", + "ec2:CancelCapacityReservationFleets", + "ec2:CreateCapacityReservation", + "ec2:DescribeCapacityReservations", + "ec2:CancelCapacityReservation", + "ec2:DeleteTags" + ] + }, + "list": { + "permissions": [ + "ec2:DescribeCapacityReservationFleets", + "ec2:DescribeCapacityReservations", + "ec2:DescribeInstances" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeCapacityReservationFleets", + "ec2:DescribeInstances", + "ec2:DescribeCapacityReservations" + ] + }, + "update": { + "permissions": [ + "ec2:CreateCapacityReservationFleet", + "ec2:ModifyCapacityReservationFleet", + "ec2:DescribeCapacityReservationFleets", + "ec2:CancelCapacityReservationFleets", + "ec2:CreateCapacityReservation", + "ec2:ModifyCapacityReservation", + "ec2:DescribeCapacityReservations", + "ec2:CancelCapacityReservation", + "ec2:DescribeInstances", + "ec2:DeleteTags" + ] + } + }, + "primaryIdentifier": [ + "/properties/CapacityReservationFleetId" + ], + "properties": { + "AllocationStrategy": { + "type": "string" + }, + "CapacityReservationFleetId": { + "type": "string" + }, + "EndDate": { + "type": "string" + }, + "InstanceMatchCriteria": { + "enum": [ + "open" + ], + "type": "string" + }, + "InstanceTypeSpecifications": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/InstanceTypeSpecification" + }, + "maxItems": 50, + "type": "array", + "uniqueItems": true + }, + "NoRemoveEndDate": { + "type": "boolean" + }, + "RemoveEndDate": { + "type": "boolean" + }, + "TagSpecifications": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/TagSpecification" + }, + "type": "array", + "uniqueItems": false + }, + "Tenancy": { + "enum": [ + "default" + ], + "type": "string" + }, + "TotalTargetCapacity": { + "maximum": 25000, + "minimum": 1, + "type": "integer" + } + }, + "readOnlyProperties": [ + "/properties/CapacityReservationFleetId" + ], + "taggable": true, + "typeName": "AWS::EC2::CapacityReservationFleet" +} diff --git a/src/schema/aws-ec2-carriergateway.json b/src/schema/aws-ec2-carriergateway.json new file mode 100644 index 00000000..42fae048 --- /dev/null +++ b/src/schema/aws-ec2-carriergateway.json @@ -0,0 +1,117 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/VpcId" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 127, + "minLength": 1, + "pattern": "^(?!aws:.*)", + "type": "string" + }, + "Value": { + "maxLength": 255, + "minLength": 1, + "pattern": "^(?!aws:.*)", + "type": "string" + } + }, + "type": "object" + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + } + }, + "description": "Resource Type definition for Carrier Gateway which describes the Carrier Gateway resource", + "handlers": { + "create": { + "permissions": [ + "ec2:CreateCarrierGateway", + "ec2:DescribeCarrierGateways", + "ec2:CreateTags" + ] + }, + "delete": { + "permissions": [ + "ec2:DeleteCarrierGateway", + "ec2:DescribeCarrierGateways", + "ec2:DeleteTags" + ] + }, + "list": { + "permissions": [ + "ec2:DescribeCarrierGateways" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeCarrierGateways", + "ec2:DescribeTags" + ] + }, + "update": { + "permissions": [ + "ec2:DescribeCarrierGateways", + "ec2:CreateTags", + "ec2:DeleteTags", + "ec2:DescribeTags" + ] + } + }, + "primaryIdentifier": [ + "/properties/CarrierGatewayId" + ], + "properties": { + "CarrierGatewayId": { + "description": "The ID of the carrier gateway.", + "type": "string" + }, + "OwnerId": { + "description": "The ID of the owner.", + "type": "string" + }, + "State": { + "description": "The state of the carrier gateway.", + "type": "string" + }, + "Tags": { + "$ref": "#/definitions/Tags", + "description": "The tags for the carrier gateway." + }, + "VpcId": { + "description": "The ID of the VPC.", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/CarrierGatewayId", + "/properties/OwnerId", + "/properties/State" + ], + "required": [ + "VpcId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "ec2:CreateTags", + "ec2:DeleteTags", + "ec2:DescribeTags" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::EC2::CarrierGateway" +} diff --git a/src/schema/aws-ec2-clientvpnauthorizationrule.json b/src/schema/aws-ec2-clientvpnauthorizationrule.json new file mode 100644 index 00000000..e7cf898d --- /dev/null +++ b/src/schema/aws-ec2-clientvpnauthorizationrule.json @@ -0,0 +1,42 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ClientVpnEndpointId", + "/properties/AuthorizeAllGroups", + "/properties/Description", + "/properties/AccessGroupId", + "/properties/TargetNetworkCidr" + ], + "description": "Resource Type definition for AWS::EC2::ClientVpnAuthorizationRule", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "AccessGroupId": { + "type": "string" + }, + "AuthorizeAllGroups": { + "type": "boolean" + }, + "ClientVpnEndpointId": { + "type": "string" + }, + "Description": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "TargetNetworkCidr": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "ClientVpnEndpointId", + "TargetNetworkCidr" + ], + "typeName": "AWS::EC2::ClientVpnAuthorizationRule" +} diff --git a/src/schema/aws-ec2-clientvpnendpoint.json b/src/schema/aws-ec2-clientvpnendpoint.json new file mode 100644 index 00000000..2a5d11c8 --- /dev/null +++ b/src/schema/aws-ec2-clientvpnendpoint.json @@ -0,0 +1,241 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/TransportProtocol", + "/properties/ClientCidrBlock", + "/properties/TagSpecifications", + "/properties/AuthenticationOptions" + ], + "definitions": { + "CertificateAuthenticationRequest": { + "additionalProperties": false, + "properties": { + "ClientRootCertificateChainArn": { + "type": "string" + } + }, + "required": [ + "ClientRootCertificateChainArn" + ], + "type": "object" + }, + "ClientAuthenticationRequest": { + "additionalProperties": false, + "properties": { + "ActiveDirectory": { + "$ref": "#/definitions/DirectoryServiceAuthenticationRequest" + }, + "FederatedAuthentication": { + "$ref": "#/definitions/FederatedAuthenticationRequest" + }, + "MutualAuthentication": { + "$ref": "#/definitions/CertificateAuthenticationRequest" + }, + "Type": { + "type": "string" + } + }, + "required": [ + "Type" + ], + "type": "object" + }, + "ClientConnectOptions": { + "additionalProperties": false, + "properties": { + "Enabled": { + "type": "boolean" + }, + "LambdaFunctionArn": { + "type": "string" + } + }, + "required": [ + "Enabled" + ], + "type": "object" + }, + "ClientLoginBannerOptions": { + "additionalProperties": false, + "properties": { + "BannerText": { + "type": "string" + }, + "Enabled": { + "type": "boolean" + } + }, + "required": [ + "Enabled" + ], + "type": "object" + }, + "ConnectionLogOptions": { + "additionalProperties": false, + "properties": { + "CloudwatchLogGroup": { + "type": "string" + }, + "CloudwatchLogStream": { + "type": "string" + }, + "Enabled": { + "type": "boolean" + } + }, + "required": [ + "Enabled" + ], + "type": "object" + }, + "DirectoryServiceAuthenticationRequest": { + "additionalProperties": false, + "properties": { + "DirectoryId": { + "type": "string" + } + }, + "required": [ + "DirectoryId" + ], + "type": "object" + }, + "FederatedAuthenticationRequest": { + "additionalProperties": false, + "properties": { + "SAMLProviderArn": { + "type": "string" + }, + "SelfServiceSAMLProviderArn": { + "type": "string" + } + }, + "required": [ + "SAMLProviderArn" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + }, + "TagSpecification": { + "additionalProperties": false, + "properties": { + "ResourceType": { + "type": "string" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + } + }, + "required": [ + "ResourceType", + "Tags" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::EC2::ClientVpnEndpoint", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "AuthenticationOptions": { + "items": { + "$ref": "#/definitions/ClientAuthenticationRequest" + }, + "type": "array", + "uniqueItems": false + }, + "ClientCidrBlock": { + "type": "string" + }, + "ClientConnectOptions": { + "$ref": "#/definitions/ClientConnectOptions" + }, + "ClientLoginBannerOptions": { + "$ref": "#/definitions/ClientLoginBannerOptions" + }, + "ConnectionLogOptions": { + "$ref": "#/definitions/ConnectionLogOptions" + }, + "Description": { + "type": "string" + }, + "DisconnectOnSessionTimeout": { + "type": "boolean" + }, + "DnsServers": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "Id": { + "type": "string" + }, + "SecurityGroupIds": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "SelfServicePortal": { + "type": "string" + }, + "ServerCertificateArn": { + "type": "string" + }, + "SessionTimeoutHours": { + "type": "integer" + }, + "SplitTunnel": { + "type": "boolean" + }, + "TagSpecifications": { + "items": { + "$ref": "#/definitions/TagSpecification" + }, + "type": "array", + "uniqueItems": false + }, + "TransportProtocol": { + "type": "string" + }, + "VpcId": { + "type": "string" + }, + "VpnPort": { + "type": "integer" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "ClientCidrBlock", + "ConnectionLogOptions", + "AuthenticationOptions", + "ServerCertificateArn" + ], + "typeName": "AWS::EC2::ClientVpnEndpoint" +} diff --git a/src/schema/aws-ec2-clientvpnroute.json b/src/schema/aws-ec2-clientvpnroute.json new file mode 100644 index 00000000..5d563c31 --- /dev/null +++ b/src/schema/aws-ec2-clientvpnroute.json @@ -0,0 +1,39 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ClientVpnEndpointId", + "/properties/DestinationCidrBlock", + "/properties/Description", + "/properties/TargetVpcSubnetId" + ], + "description": "Resource Type definition for AWS::EC2::ClientVpnRoute", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "ClientVpnEndpointId": { + "type": "string" + }, + "Description": { + "type": "string" + }, + "DestinationCidrBlock": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "TargetVpcSubnetId": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "ClientVpnEndpointId", + "TargetVpcSubnetId", + "DestinationCidrBlock" + ], + "typeName": "AWS::EC2::ClientVpnRoute" +} diff --git a/src/schema/aws-ec2-clientvpntargetnetworkassociation.json b/src/schema/aws-ec2-clientvpntargetnetworkassociation.json new file mode 100644 index 00000000..bf5c806a --- /dev/null +++ b/src/schema/aws-ec2-clientvpntargetnetworkassociation.json @@ -0,0 +1,30 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ClientVpnEndpointId", + "/properties/SubnetId" + ], + "description": "Resource Type definition for AWS::EC2::ClientVpnTargetNetworkAssociation", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "ClientVpnEndpointId": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "SubnetId": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "ClientVpnEndpointId", + "SubnetId" + ], + "typeName": "AWS::EC2::ClientVpnTargetNetworkAssociation" +} diff --git a/src/schema/aws-ec2-customergateway.json b/src/schema/aws-ec2-customergateway.json new file mode 100644 index 00000000..98f3f792 --- /dev/null +++ b/src/schema/aws-ec2-customergateway.json @@ -0,0 +1,131 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/CertificateArn", + "/properties/BgpAsn", + "/properties/BgpAsnExtended", + "/properties/Type", + "/properties/IpAddress", + "/properties/DeviceName" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "description": "Specifies a tag. For more information, see [Resource tags](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-resource-tags.html).", + "properties": { + "Key": { + "description": "The tag key.", + "type": "string" + }, + "Value": { + "description": "The tag value.", + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "description": "Specifies a customer gateway.", + "handlers": { + "create": { + "permissions": [ + "ec2:CreateCustomerGateway", + "ec2:DescribeCustomerGateways", + "ec2:CreateTags" + ] + }, + "delete": { + "permissions": [ + "ec2:DeleteCustomerGateway", + "ec2:DescribeCustomerGateways" + ] + }, + "list": { + "permissions": [ + "ec2:DescribeCustomerGateways" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeCustomerGateways" + ] + }, + "update": { + "permissions": [ + "ec2:CreateTags", + "ec2:DeleteTags", + "ec2:DescribeCustomerGateways" + ] + } + }, + "primaryIdentifier": [ + "/properties/CustomerGatewayId" + ], + "properties": { + "BgpAsn": { + "default": 65000, + "description": "For customer gateway devices that support BGP, specify the device's ASN. You must specify either ``BgpAsn`` or ``BgpAsnExtended`` when creating the customer gateway. If the ASN is larger than ``2,147,483,647``, you must use ``BgpAsnExtended``.\n Default: 65000\n Valid values: ``1`` to ``2,147,483,647``", + "type": "integer" + }, + "BgpAsnExtended": { + "description": "For customer gateway devices that support BGP, specify the device's ASN. You must specify either ``BgpAsn`` or ``BgpAsnExtended`` when creating the customer gateway. If the ASN is larger than ``2,147,483,647``, you must use ``BgpAsnExtended``.\n Valid values: ``2,147,483,648`` to ``4,294,967,295``", + "maximum": 4294967294, + "minimum": 2147483648, + "multipleOf": 1, + "type": "number" + }, + "CertificateArn": { + "description": "The Amazon Resource Name (ARN) for the customer gateway certificate.", + "pattern": "^arn:(aws[a-zA-Z-]*)?:acm:[a-z]{2}((-gov)|(-iso([a-z]{1})?))?-[a-z]+-\\d{1}:\\d{12}:certificate\\/[a-zA-Z0-9-_]+$", + "type": "string" + }, + "CustomerGatewayId": { + "description": "", + "type": "string" + }, + "DeviceName": { + "description": "The name of customer gateway device.", + "type": "string" + }, + "IpAddress": { + "description": "IPv4 address for the customer gateway device's outside interface. The address must be static. If ``OutsideIpAddressType`` in your VPN connection options is set to ``PrivateIpv4``, you can use an RFC6598 or RFC1918 private IPv4 address. If ``OutsideIpAddressType`` is set to ``PublicIpv4``, you can use a public IPv4 address.", + "type": "string" + }, + "Tags": { + "description": "One or more tags for the customer gateway.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + }, + "Type": { + "description": "The type of VPN connection that this customer gateway supports (``ipsec.1``).", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/CustomerGatewayId" + ], + "required": [ + "IpAddress", + "Type" + ], + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "ec2:CreateTags", + "ec2:DeleteTags" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::EC2::CustomerGateway" +} diff --git a/src/schema/aws-ec2-dhcpoptions.json b/src/schema/aws-ec2-dhcpoptions.json new file mode 100644 index 00000000..098d1877 --- /dev/null +++ b/src/schema/aws-ec2-dhcpoptions.json @@ -0,0 +1,136 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/NetbiosNameServers", + "/properties/NetbiosNodeType", + "/properties/NtpServers", + "/properties/DomainName", + "/properties/DomainNameServers", + "/properties/Ipv6AddressPreferredLeaseTime" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::EC2::DHCPOptions", + "handlers": { + "create": { + "permissions": [ + "ec2:CreateDhcpOptions", + "ec2:DescribeDhcpOptions", + "ec2:CreateTags" + ] + }, + "delete": { + "permissions": [ + "ec2:DeleteDhcpOptions", + "ec2:DeleteTags", + "ec2:DescribeDhcpOptions" + ] + }, + "list": { + "permissions": [ + "ec2:DescribeDhcpOptions" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeDhcpOptions", + "ec2:DescribeTags" + ] + }, + "update": { + "permissions": [ + "ec2:CreateTags", + "ec2:DescribeDhcpOptions", + "ec2:DeleteTags" + ] + } + }, + "primaryIdentifier": [ + "/properties/DhcpOptionsId" + ], + "properties": { + "DhcpOptionsId": { + "type": "string" + }, + "DomainName": { + "description": "This value is used to complete unqualified DNS hostnames.", + "type": "string" + }, + "DomainNameServers": { + "description": "The IPv4 addresses of up to four domain name servers, or AmazonProvidedDNS.", + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "Ipv6AddressPreferredLeaseTime": { + "description": "The preferred Lease Time for ipV6 address in seconds.", + "type": "integer" + }, + "NetbiosNameServers": { + "description": "The IPv4 addresses of up to four NetBIOS name servers.", + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "NetbiosNodeType": { + "description": "The NetBIOS node type (1, 2, 4, or 8).", + "type": "integer" + }, + "NtpServers": { + "description": "The IPv4 addresses of up to four Network Time Protocol (NTP) servers.", + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "Tags": { + "description": "Any tags assigned to the DHCP options set.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + } + }, + "readOnlyProperties": [ + "/properties/DhcpOptionsId" + ], + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "ec2:CreateTags", + "ec2:DeleteTags" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::EC2::DHCPOptions" +} diff --git a/src/schema/aws-ec2-ec2fleet.json b/src/schema/aws-ec2-ec2fleet.json new file mode 100644 index 00000000..3f5641ba --- /dev/null +++ b/src/schema/aws-ec2-ec2fleet.json @@ -0,0 +1,802 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/LaunchTemplateConfigs", + "/properties/OnDemandOptions", + "/properties/ReplaceUnhealthyInstances", + "/properties/SpotOptions", + "/properties/TagSpecifications", + "/properties/TerminateInstancesWithExpiration", + "/properties/Type", + "/properties/ValidFrom", + "/properties/ValidUntil" + ], + "definitions": { + "AcceleratorCountRequest": { + "additionalProperties": false, + "properties": { + "Max": { + "type": "integer" + }, + "Min": { + "type": "integer" + } + }, + "type": "object" + }, + "AcceleratorTotalMemoryMiBRequest": { + "additionalProperties": false, + "properties": { + "Max": { + "type": "integer" + }, + "Min": { + "type": "integer" + } + }, + "type": "object" + }, + "BaselineEbsBandwidthMbpsRequest": { + "additionalProperties": false, + "properties": { + "Max": { + "type": "integer" + }, + "Min": { + "type": "integer" + } + }, + "type": "object" + }, + "BaselinePerformanceFactorsRequest": { + "additionalProperties": false, + "properties": { + "Cpu": { + "$ref": "#/definitions/CpuPerformanceFactorRequest" + } + }, + "type": "object" + }, + "BlockDeviceMapping": { + "additionalProperties": false, + "properties": { + "DeviceName": { + "type": "string" + }, + "Ebs": { + "$ref": "#/definitions/EbsBlockDevice" + }, + "NoDevice": { + "type": "string" + }, + "VirtualName": { + "type": "string" + } + }, + "type": "object" + }, + "CapacityRebalance": { + "additionalProperties": false, + "properties": { + "ReplacementStrategy": { + "enum": [ + "launch", + "launch-before-terminate" + ], + "type": "string" + }, + "TerminationDelay": { + "type": "integer" + } + }, + "type": "object" + }, + "CapacityReservationOptionsRequest": { + "additionalProperties": false, + "properties": { + "UsageStrategy": { + "enum": [ + "use-capacity-reservations-first" + ], + "type": "string" + } + }, + "type": "object" + }, + "CpuPerformanceFactorRequest": { + "additionalProperties": false, + "properties": { + "References": { + "items": { + "$ref": "#/definitions/PerformanceFactorReferenceRequest" + }, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + }, + "EbsBlockDevice": { + "additionalProperties": false, + "properties": { + "DeleteOnTermination": { + "type": "boolean" + }, + "Encrypted": { + "type": "boolean" + }, + "Iops": { + "type": "integer" + }, + "KmsKeyId": { + "type": "string" + }, + "SnapshotId": { + "type": "string" + }, + "VolumeSize": { + "type": "integer" + }, + "VolumeType": { + "enum": [ + "gp2", + "gp3", + "io1", + "io2", + "sc1", + "st1", + "standard" + ], + "type": "string" + } + }, + "type": "object" + }, + "FleetLaunchTemplateConfigRequest": { + "additionalProperties": false, + "properties": { + "LaunchTemplateSpecification": { + "$ref": "#/definitions/FleetLaunchTemplateSpecificationRequest" + }, + "Overrides": { + "items": { + "$ref": "#/definitions/FleetLaunchTemplateOverridesRequest" + }, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + }, + "FleetLaunchTemplateOverridesRequest": { + "additionalProperties": false, + "properties": { + "AvailabilityZone": { + "type": "string" + }, + "InstanceRequirements": { + "$ref": "#/definitions/InstanceRequirementsRequest" + }, + "InstanceType": { + "type": "string" + }, + "MaxPrice": { + "type": "string" + }, + "Placement": { + "$ref": "#/definitions/Placement" + }, + "Priority": { + "type": "number" + }, + "SubnetId": { + "type": "string" + }, + "WeightedCapacity": { + "type": "number" + } + }, + "type": "object" + }, + "FleetLaunchTemplateSpecificationRequest": { + "additionalProperties": false, + "properties": { + "LaunchTemplateId": { + "type": "string" + }, + "LaunchTemplateName": { + "maxLength": 128, + "minLength": 3, + "pattern": "[a-zA-Z0-9\\(\\)\\.\\-/_]+", + "type": "string" + }, + "Version": { + "type": "string" + } + }, + "required": [ + "Version" + ], + "type": "object" + }, + "InstanceRequirementsRequest": { + "additionalProperties": false, + "properties": { + "AcceleratorCount": { + "$ref": "#/definitions/AcceleratorCountRequest" + }, + "AcceleratorManufacturers": { + "items": { + "enum": [ + "amazon-web-services", + "amd", + "habana", + "nvidia", + "xilinx" + ], + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "AcceleratorNames": { + "items": { + "enum": [ + "a10g", + "a100", + "h100", + "inferentia", + "k520", + "k80", + "m60", + "radeon-pro-v520", + "t4", + "t4g", + "vu9p", + "v100" + ], + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "AcceleratorTotalMemoryMiB": { + "$ref": "#/definitions/AcceleratorTotalMemoryMiBRequest" + }, + "AcceleratorTypes": { + "items": { + "enum": [ + "gpu", + "fpga", + "inference" + ], + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "AllowedInstanceTypes": { + "items": { + "maxLength": 30, + "minLength": 1, + "pattern": "[a-zA-Z0-9\\.\\*]+", + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "BareMetal": { + "enum": [ + "included", + "required", + "excluded" + ], + "type": "string" + }, + "BaselineEbsBandwidthMbps": { + "$ref": "#/definitions/BaselineEbsBandwidthMbpsRequest" + }, + "BaselinePerformanceFactors": { + "$ref": "#/definitions/BaselinePerformanceFactorsRequest" + }, + "BurstablePerformance": { + "enum": [ + "included", + "required", + "excluded" + ], + "type": "string" + }, + "CpuManufacturers": { + "items": { + "enum": [ + "intel", + "amd", + "amazon-web-services", + "apple" + ], + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "ExcludedInstanceTypes": { + "items": { + "maxLength": 30, + "minLength": 1, + "pattern": "[a-zA-Z0-9\\.\\*]+", + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "InstanceGenerations": { + "items": { + "enum": [ + "current", + "previous" + ], + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "LocalStorage": { + "enum": [ + "included", + "required", + "excluded" + ], + "type": "string" + }, + "LocalStorageTypes": { + "items": { + "enum": [ + "hdd", + "ssd" + ], + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "MaxSpotPriceAsPercentageOfOptimalOnDemandPrice": { + "type": "integer" + }, + "MemoryGiBPerVCpu": { + "$ref": "#/definitions/MemoryGiBPerVCpuRequest" + }, + "MemoryMiB": { + "$ref": "#/definitions/MemoryMiBRequest" + }, + "NetworkBandwidthGbps": { + "$ref": "#/definitions/NetworkBandwidthGbpsRequest" + }, + "NetworkInterfaceCount": { + "$ref": "#/definitions/NetworkInterfaceCountRequest" + }, + "OnDemandMaxPricePercentageOverLowestPrice": { + "type": "integer" + }, + "RequireHibernateSupport": { + "type": "boolean" + }, + "SpotMaxPricePercentageOverLowestPrice": { + "type": "integer" + }, + "TotalLocalStorageGB": { + "$ref": "#/definitions/TotalLocalStorageGBRequest" + }, + "VCpuCount": { + "$ref": "#/definitions/VCpuCountRangeRequest" + } + }, + "type": "object" + }, + "MaintenanceStrategies": { + "additionalProperties": false, + "properties": { + "CapacityRebalance": { + "$ref": "#/definitions/CapacityRebalance" + } + }, + "type": "object" + }, + "MemoryGiBPerVCpuRequest": { + "additionalProperties": false, + "properties": { + "Max": { + "type": "number" + }, + "Min": { + "type": "number" + } + }, + "type": "object" + }, + "MemoryMiBRequest": { + "additionalProperties": false, + "properties": { + "Max": { + "type": "integer" + }, + "Min": { + "type": "integer" + } + }, + "type": "object" + }, + "NetworkBandwidthGbpsRequest": { + "additionalProperties": false, + "properties": { + "Max": { + "type": "number" + }, + "Min": { + "type": "number" + } + }, + "type": "object" + }, + "NetworkInterfaceCountRequest": { + "additionalProperties": false, + "properties": { + "Max": { + "type": "integer" + }, + "Min": { + "type": "integer" + } + }, + "type": "object" + }, + "OnDemandOptionsRequest": { + "additionalProperties": false, + "properties": { + "AllocationStrategy": { + "type": "string" + }, + "CapacityReservationOptions": { + "$ref": "#/definitions/CapacityReservationOptionsRequest" + }, + "MaxTotalPrice": { + "type": "string" + }, + "MinTargetCapacity": { + "type": "integer" + }, + "SingleAvailabilityZone": { + "type": "boolean" + }, + "SingleInstanceType": { + "type": "boolean" + } + }, + "type": "object" + }, + "PerformanceFactorReferenceRequest": { + "additionalProperties": false, + "properties": { + "InstanceFamily": { + "type": "string" + } + }, + "type": "object" + }, + "Placement": { + "additionalProperties": false, + "properties": { + "Affinity": { + "type": "string" + }, + "AvailabilityZone": { + "type": "string" + }, + "GroupName": { + "type": "string" + }, + "HostId": { + "type": "string" + }, + "HostResourceGroupArn": { + "type": "string" + }, + "PartitionNumber": { + "type": "integer" + }, + "SpreadDomain": { + "type": "string" + }, + "Tenancy": { + "type": "string" + } + }, + "type": "object" + }, + "SpotOptionsRequest": { + "additionalProperties": false, + "properties": { + "AllocationStrategy": { + "enum": [ + "lowest-price", + "lowestPrice", + "diversified", + "capacityOptimized", + "capacity-optimized", + "capacityOptimizedPrioritized", + "capacity-optimized-prioritized", + "priceCapacityOptimized", + "price-capacity-optimized" + ], + "type": "string" + }, + "InstanceInterruptionBehavior": { + "enum": [ + "hibernate", + "stop", + "terminate" + ], + "type": "string" + }, + "InstancePoolsToUseCount": { + "type": "integer" + }, + "MaintenanceStrategies": { + "$ref": "#/definitions/MaintenanceStrategies" + }, + "MaxTotalPrice": { + "type": "string" + }, + "MinTargetCapacity": { + "type": "integer" + }, + "SingleAvailabilityZone": { + "type": "boolean" + }, + "SingleInstanceType": { + "type": "boolean" + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + }, + "TagSpecification": { + "additionalProperties": false, + "properties": { + "ResourceType": { + "enum": [ + "client-vpn-endpoint", + "customer-gateway", + "dedicated-host", + "dhcp-options", + "egress-only-internet-gateway", + "elastic-gpu", + "elastic-ip", + "export-image-task", + "export-instance-task", + "fleet", + "fpga-image", + "host-reservation", + "image", + "import-image-task", + "import-snapshot-task", + "instance", + "internet-gateway", + "key-pair", + "launch-template", + "local-gateway-route-table-vpc-association", + "natgateway", + "network-acl", + "network-insights-analysis", + "network-insights-path", + "network-interface", + "placement-group", + "reserved-instances", + "route-table", + "security-group", + "snapshot", + "spot-fleet-request", + "spot-instances-request", + "subnet", + "traffic-mirror-filter", + "traffic-mirror-session", + "traffic-mirror-target", + "transit-gateway", + "transit-gateway-attachment", + "transit-gateway-connect-peer", + "transit-gateway-multicast-domain", + "transit-gateway-route-table", + "volume", + "vpc", + "vpc-flow-log", + "vpc-peering-connection", + "vpn-connection", + "vpn-gateway" + ], + "type": "string" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + }, + "TargetCapacitySpecificationRequest": { + "additionalProperties": false, + "properties": { + "DefaultTargetCapacityType": { + "enum": [ + "on-demand", + "spot" + ], + "type": "string" + }, + "OnDemandTargetCapacity": { + "type": "integer" + }, + "SpotTargetCapacity": { + "type": "integer" + }, + "TargetCapacityUnitType": { + "enum": [ + "vcpu", + "memory-mib", + "units" + ], + "type": "string" + }, + "TotalTargetCapacity": { + "type": "integer" + } + }, + "required": [ + "TotalTargetCapacity" + ], + "type": "object" + }, + "TotalLocalStorageGBRequest": { + "additionalProperties": false, + "properties": { + "Max": { + "type": "number" + }, + "Min": { + "type": "number" + } + }, + "type": "object" + }, + "VCpuCountRangeRequest": { + "additionalProperties": false, + "properties": { + "Max": { + "type": "integer" + }, + "Min": { + "type": "integer" + } + }, + "type": "object" + } + }, + "description": "Resource Type definition for AWS::EC2::EC2Fleet", + "handlers": { + "create": { + "permissions": [ + "ec2:CreateFleet", + "ec2:DescribeFleets" + ] + }, + "delete": { + "permissions": [ + "ec2:DescribeFleets", + "ec2:DeleteFleets" + ] + }, + "list": { + "permissions": [ + "ec2:DescribeFleets" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeFleets" + ] + }, + "update": { + "permissions": [ + "ec2:ModifyFleet", + "ec2:DescribeFleets" + ] + } + }, + "primaryIdentifier": [ + "/properties/FleetId" + ], + "properties": { + "Context": { + "type": "string" + }, + "ExcessCapacityTerminationPolicy": { + "enum": [ + "termination", + "no-termination" + ], + "type": "string" + }, + "FleetId": { + "type": "string" + }, + "LaunchTemplateConfigs": { + "items": { + "$ref": "#/definitions/FleetLaunchTemplateConfigRequest" + }, + "maxItems": 50, + "type": "array", + "uniqueItems": false + }, + "OnDemandOptions": { + "$ref": "#/definitions/OnDemandOptionsRequest" + }, + "ReplaceUnhealthyInstances": { + "type": "boolean" + }, + "SpotOptions": { + "$ref": "#/definitions/SpotOptionsRequest" + }, + "TagSpecifications": { + "items": { + "$ref": "#/definitions/TagSpecification" + }, + "type": "array", + "uniqueItems": false + }, + "TargetCapacitySpecification": { + "$ref": "#/definitions/TargetCapacitySpecificationRequest" + }, + "TerminateInstancesWithExpiration": { + "type": "boolean" + }, + "Type": { + "enum": [ + "maintain", + "request", + "instant" + ], + "type": "string" + }, + "ValidFrom": { + "type": "string" + }, + "ValidUntil": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/FleetId" + ], + "required": [ + "TargetCapacitySpecification", + "LaunchTemplateConfigs" + ], + "typeName": "AWS::EC2::EC2Fleet" +} diff --git a/src/schema/aws-ec2-egressonlyinternetgateway.json b/src/schema/aws-ec2-egressonlyinternetgateway.json new file mode 100644 index 00000000..147b32e8 --- /dev/null +++ b/src/schema/aws-ec2-egressonlyinternetgateway.json @@ -0,0 +1,59 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/VpcId" + ], + "description": "Resource Type definition for AWS::EC2::EgressOnlyInternetGateway", + "handlers": { + "create": { + "permissions": [ + "ec2:CreateEgressOnlyInternetGateway", + "ec2:DescribeEgressOnlyInternetGateways" + ] + }, + "delete": { + "permissions": [ + "ec2:DeleteEgressOnlyInternetGateway", + "ec2:DescribeEgressOnlyInternetGateways", + "ec2:DescribeVpcs" + ] + }, + "list": { + "permissions": [ + "ec2:DescribeEgressOnlyInternetGateways" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeEgressOnlyInternetGateways" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Id": { + "description": "Service Generated ID of the EgressOnlyInternetGateway", + "type": "string" + }, + "VpcId": { + "description": "The ID of the VPC for which to create the egress-only internet gateway.", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "VpcId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ec2", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::EC2::EgressOnlyInternetGateway" +} diff --git a/src/schema/aws-ec2-eip.json b/src/schema/aws-ec2-eip.json new file mode 100644 index 00000000..eda39179 --- /dev/null +++ b/src/schema/aws-ec2-eip.json @@ -0,0 +1,147 @@ +{ + "$schema": "https://raw.githubusercontent.com/aws-cloudformation/cloudformation-resource-schema/blob/master/src/main/resources/schema/provider.definition.schema.v1.json", + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Domain", + "/properties/NetworkBorderGroup", + "/properties/TransferAddress", + "/properties/IpamPoolId", + "/properties/Address" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "description": "Specifies a tag. For more information, see [Add tags to a resource](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_Tags.html#cloudformation-add-tag-specifications).", + "properties": { + "Key": { + "description": "The tag key.", + "type": "string" + }, + "Value": { + "description": "The tag value.", + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "description": "Specifies an Elastic IP (EIP) address and can, optionally, associate it with an Amazon EC2 instance.\n You can allocate an Elastic IP address from an address pool owned by AWS or from an address pool created from a public IPv4 address range that you have brought to AWS for use with your AWS resources using bring your own IP addresses (BYOIP). For more information, see [Bring Your Own IP Addresses (BYOIP)](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-byoip.html) in the *Amazon EC2 User Guide*.\n For more information, see [Elastic IP Addresses](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/elastic-ip-addresses-eip.html) in the *Amazon EC2 User Guide*.", + "handlers": { + "create": { + "permissions": [ + "ec2:AllocateAddress", + "ec2:AcceptAddressTransfer", + "ec2:DescribeAddresses", + "ec2:AssociateAddress", + "ec2:CreateTags" + ] + }, + "delete": { + "permissions": [ + "ec2:ReleaseAddress", + "ec2:DescribeAddresses", + "ec2:DisassociateAddress" + ] + }, + "list": { + "permissions": [ + "ec2:DescribeAddresses" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeAddresses" + ] + }, + "update": { + "permissions": [ + "ec2:DescribeAddresses", + "ec2:DisassociateAddress", + "ec2:DeleteTags", + "ec2:CreateTags", + "ec2:AssociateAddress" + ] + } + }, + "primaryIdentifier": [ + "/properties/PublicIp", + "/properties/AllocationId" + ], + "properties": { + "Address": { + "description": "", + "type": "string" + }, + "AllocationId": { + "description": "", + "type": "string" + }, + "Domain": { + "description": "The network (``vpc``).\n If you define an Elastic IP address and associate it with a VPC that is defined in the same template, you must declare a dependency on the VPC-gateway attachment by using the [DependsOn Attribute](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-attribute-dependson.html) on this resource.", + "type": "string" + }, + "InstanceId": { + "description": "The ID of the instance.\n Updates to the ``InstanceId`` property may require *some interruptions*. Updates on an EIP reassociates the address on its associated resource.", + "type": "string" + }, + "IpamPoolId": { + "description": "", + "type": "string" + }, + "NetworkBorderGroup": { + "description": "A unique set of Availability Zones, Local Zones, or Wavelength Zones from which AWS advertises IP addresses. Use this parameter to limit the IP address to this location. IP addresses cannot move between network border groups.\n Use [DescribeAvailabilityZones](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DescribeAvailabilityZones.html) to view the network border groups.", + "type": "string" + }, + "PublicIp": { + "description": "", + "type": "string" + }, + "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.\n Updates to the ``PublicIpv4Pool`` property may require *some interruptions*. Updates on an EIP reassociates the address on its associated resource.", + "type": "string" + }, + "Tags": { + "description": "Any tags assigned to the Elastic IP address.\n Updates to the ``Tags`` property may require *some interruptions*. Updates on an EIP reassociates the address on its associated resource.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + }, + "TransferAddress": { + "description": "The Elastic IP address you are accepting for transfer. You can only accept one transferred address. For more information on Elastic IP address transfers, see [Transfer Elastic IP addresses](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-eips.html#transfer-EIPs-intro) in the *Amazon Virtual Private Cloud User Guide*.", + "type": "string" + } + }, + "propertyTransform": { + "/properties/Domain": "\"vpc\"" + }, + "readOnlyProperties": [ + "/properties/PublicIp", + "/properties/AllocationId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "ec2:CreateTags", + "ec2:DeleteTags", + "ec2:DescribeTags" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::EC2::EIP", + "writeOnlyProperties": [ + "/properties/TransferAddress", + "/properties/IpamPoolId", + "/properties/Address" + ] +} diff --git a/src/schema/aws-ec2-eipassociation.json b/src/schema/aws-ec2-eipassociation.json new file mode 100644 index 00000000..fff0fe09 --- /dev/null +++ b/src/schema/aws-ec2-eipassociation.json @@ -0,0 +1,76 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/AllocationId", + "/properties/NetworkInterfaceId", + "/properties/InstanceId", + "/properties/PrivateIpAddress", + "/properties/EIP" + ], + "deprecatedProperties": [ + "/properties/EIP" + ], + "description": "Associates an Elastic IP address with an instance or a network interface. Before you can use an Elastic IP address, you must allocate it to your account. For more information about working with Elastic IP addresses, see [Elastic IP address concepts and rules](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-eips.html#vpc-eip-overview).\n You must specify ``AllocationId`` and either ``InstanceId``, ``NetworkInterfaceId``, or ``PrivateIpAddress``.", + "handlers": { + "create": { + "permissions": [ + "ec2:DescribeAddresses", + "ec2:AssociateAddress" + ] + }, + "delete": { + "permissions": [ + "ec2:DisassociateAddress", + "ec2:DescribeAddresses" + ] + }, + "list": { + "permissions": [ + "ec2:DescribeAddresses" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeAddresses" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "AllocationId": { + "description": "The allocation ID. This is required.", + "type": "string" + }, + "EIP": { + "description": "", + "type": "string" + }, + "Id": { + "description": "", + "type": "string" + }, + "InstanceId": { + "description": "The ID of the instance. The instance must have exactly one attached network interface. You can specify either the instance ID or the network interface ID, but not both.", + "type": "string" + }, + "NetworkInterfaceId": { + "description": "The ID of the network interface. If the instance has more than one network interface, you must specify a network interface ID.\n You can specify either the instance ID or the network interface ID, but not both.", + "type": "string" + }, + "PrivateIpAddress": { + "description": "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.", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "replacementStrategy": "delete_then_create", + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ec2/tree/master/aws-ec2-eipassociation", + "tagging": { + "taggable": false + }, + "typeName": "AWS::EC2::EIPAssociation" +} diff --git a/src/schema/aws-ec2-enclavecertificateiamroleassociation.json b/src/schema/aws-ec2-enclavecertificateiamroleassociation.json new file mode 100644 index 00000000..7c40a518 --- /dev/null +++ b/src/schema/aws-ec2-enclavecertificateiamroleassociation.json @@ -0,0 +1,75 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/CertificateArn", + "/properties/RoleArn" + ], + "description": "Associates an AWS Identity and Access Management (IAM) role with an AWS Certificate Manager (ACM) certificate. This association is based on Amazon Resource Names and it enables the certificate to be used by the ACM for Nitro Enclaves application inside an enclave.", + "handlers": { + "create": { + "permissions": [ + "ec2:AssociateEnclaveCertificateIamRole", + "ec2:GetAssociatedEnclaveCertificateIamRoles" + ] + }, + "delete": { + "permissions": [ + "ec2:DisassociateEnclaveCertificateIamRole", + "ec2:GetAssociatedEnclaveCertificateIamRoles" + ] + }, + "list": { + "permissions": [ + "ec2:GetAssociatedEnclaveCertificateIamRoles" + ] + }, + "read": { + "permissions": [ + "ec2:GetAssociatedEnclaveCertificateIamRoles" + ] + } + }, + "primaryIdentifier": [ + "/properties/CertificateArn", + "/properties/RoleArn" + ], + "properties": { + "CertificateArn": { + "description": "The Amazon Resource Name (ARN) of the ACM certificate with which to associate the IAM role.", + "maxLength": 1283, + "minLength": 1, + "pattern": "^arn:aws[A-Za-z0-9-]{0,64}:acm:[A-Za-z0-9-]{1,64}:([0-9]{12})?:certificate/.+$", + "type": "string" + }, + "CertificateS3BucketName": { + "description": "The name of the Amazon S3 bucket to which the certificate was uploaded.", + "type": "string" + }, + "CertificateS3ObjectKey": { + "description": "The Amazon S3 object key where the certificate, certificate chain, and encrypted private key bundle are stored.", + "type": "string" + }, + "EncryptionKmsKeyId": { + "description": "The ID of the AWS KMS CMK used to encrypt the private key of the certificate.", + "type": "string" + }, + "RoleArn": { + "description": "The Amazon Resource Name (ARN) of the IAM role to associate with the ACM certificate. You can associate up to 16 IAM roles with an ACM certificate.", + "maxLength": 1283, + "minLength": 1, + "pattern": "^arn:aws[A-Za-z0-9-]{0,64}:iam:.*:([0-9]{12})?:role/.+$", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/CertificateS3BucketName", + "/properties/CertificateS3ObjectKey", + "/properties/EncryptionKmsKeyId" + ], + "required": [ + "CertificateArn", + "RoleArn" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ec2-acmcerts.git", + "typeName": "AWS::EC2::EnclaveCertificateIamRoleAssociation" +} diff --git a/src/schema/aws-ec2-flowlog.json b/src/schema/aws-ec2-flowlog.json new file mode 100644 index 00000000..d4d10b8c --- /dev/null +++ b/src/schema/aws-ec2-flowlog.json @@ -0,0 +1,190 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/DeliverCrossAccountRole", + "/properties/DeliverLogsPermissionArn", + "/properties/LogGroupName", + "/properties/LogDestination", + "/properties/ResourceId", + "/properties/TrafficType", + "/properties/LogDestinationType", + "/properties/ResourceType", + "/properties/LogFormat", + "/properties/MaxAggregationInterval", + "/properties/DestinationOptions" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "description": "Specifies a VPC flow log, which enables you to capture IP traffic for a specific network interface, subnet, or VPC.", + "handlers": { + "create": { + "permissions": [ + "ec2:CreateFlowLogs", + "ec2:DescribeFlowLogs", + "ec2:CreateTags", + "iam:PassRole", + "logs:CreateLogDelivery", + "s3:GetBucketPolicy", + "s3:PutBucketPolicy" + ] + }, + "delete": { + "permissions": [ + "ec2:DeleteFlowLogs", + "ec2:DescribeFlowLogs", + "logs:DeleteLogDelivery" + ] + }, + "list": { + "permissions": [ + "ec2:DescribeFlowLogs" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeFlowLogs" + ] + }, + "update": { + "permissions": [ + "ec2:CreateTags", + "ec2:DeleteTags", + "ec2:DescribeFlowLogs" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "DeliverCrossAccountRole": { + "description": "The ARN of the IAM role that allows Amazon EC2 to publish flow logs across accounts.", + "type": "string" + }, + "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. If you specify LogDestinationType as s3 or kinesis-data-firehose, do not specify DeliverLogsPermissionArn or LogGroupName.", + "type": "string" + }, + "DestinationOptions": { + "additionalProperties": false, + "properties": { + "FileFormat": { + "enum": [ + "plain-text", + "parquet" + ], + "type": "string" + }, + "HiveCompatiblePartitions": { + "type": "boolean" + }, + "PerHourPartition": { + "type": "boolean" + } + }, + "required": [ + "FileFormat", + "HiveCompatiblePartitions", + "PerHourPartition" + ], + "type": "object" + }, + "Id": { + "description": "The Flow Log ID", + "type": "string" + }, + "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, an Amazon S3 bucket, or a Kinesis Firehose stream. The value specified for this parameter depends on the value specified for LogDestinationType.", + "type": "string" + }, + "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.", + "enum": [ + "cloud-watch-logs", + "s3", + "kinesis-data-firehose" + ], + "type": "string" + }, + "LogFormat": { + "description": "The fields to include in the flow log record, in the order in which they should appear.", + "type": "string" + }, + "LogGroupName": { + "description": "The name of a new or existing CloudWatch Logs log group where Amazon EC2 publishes your flow logs. If you specify LogDestinationType as s3 or kinesis-data-firehose, do not specify DeliverLogsPermissionArn or LogGroupName.", + "type": "string" + }, + "MaxAggregationInterval": { + "description": "The maximum interval of time during which a flow of packets is captured and aggregated into a flow log record. You can specify 60 seconds (1 minute) or 600 seconds (10 minutes).", + "type": "integer" + }, + "ResourceId": { + "description": "The ID of the subnet, network interface, or VPC for which you want to create a flow log.", + "type": "string" + }, + "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.", + "enum": [ + "NetworkInterface", + "Subnet", + "VPC", + "TransitGateway", + "TransitGatewayAttachment" + ], + "type": "string" + }, + "Tags": { + "description": "The tags to apply to the flow logs.", + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + }, + "TrafficType": { + "description": "The type of traffic to log. You can log traffic that the resource accepts or rejects, or all traffic.", + "enum": [ + "ACCEPT", + "ALL", + "REJECT" + ], + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "ResourceType", + "ResourceId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ec2-flowlog.git", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "ec2:CreateTags", + "ec2:DeleteTags" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::EC2::FlowLog" +} diff --git a/src/schema/aws-ec2-gatewayroutetableassociation.json b/src/schema/aws-ec2-gatewayroutetableassociation.json new file mode 100644 index 00000000..4cf932a6 --- /dev/null +++ b/src/schema/aws-ec2-gatewayroutetableassociation.json @@ -0,0 +1,64 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/GatewayId" + ], + "description": "Associates a gateway with a route table. The gateway and route table must be in the same VPC. This association causes the incoming traffic to the gateway to be routed according to the routes in the route table.", + "handlers": { + "create": { + "permissions": [ + "ec2:DescribeRouteTables", + "ec2:AssociateRouteTable" + ] + }, + "delete": { + "permissions": [ + "ec2:DescribeRouteTables", + "ec2:DisassociateRouteTable" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeRouteTables" + ] + }, + "update": { + "permissions": [ + "ec2:DescribeRouteTables", + "ec2:ReplaceRouteTableAssociation" + ] + } + }, + "primaryIdentifier": [ + "/properties/GatewayId" + ], + "properties": { + "AssociationId": { + "description": "The route table association ID.", + "type": "string" + }, + "GatewayId": { + "description": "The ID of the gateway.", + "type": "string" + }, + "RouteTableId": { + "description": "The ID of the route table.", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/AssociationId" + ], + "required": [ + "RouteTableId", + "GatewayId" + ], + "sourceUrl": "https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-gatewayroutetableassociation.html", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::EC2::GatewayRouteTableAssociation" +} diff --git a/src/schema/aws-ec2-host.json b/src/schema/aws-ec2-host.json new file mode 100644 index 00000000..2d28b5fa --- /dev/null +++ b/src/schema/aws-ec2-host.json @@ -0,0 +1,90 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/AvailabilityZone", + "/properties/InstanceType", + "/properties/InstanceFamily", + "/properties/OutpostArn", + "/properties/AssetId" + ], + "description": "Resource Type definition for AWS::EC2::Host", + "handlers": { + "create": { + "permissions": [ + "ec2:AllocateHosts", + "ec2:DescribeHosts" + ] + }, + "delete": { + "permissions": [ + "ec2:ReleaseHosts", + "ec2:DescribeHosts" + ] + }, + "list": { + "permissions": [ + "ec2:DescribeHosts" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeHosts" + ] + }, + "update": { + "permissions": [ + "ec2:ModifyHosts", + "ec2:DescribeHosts" + ] + } + }, + "primaryIdentifier": [ + "/properties/HostId" + ], + "properties": { + "AssetId": { + "description": "The ID of the Outpost hardware asset.", + "type": "string" + }, + "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.", + "type": "string" + }, + "AvailabilityZone": { + "description": "The Availability Zone in which to allocate the Dedicated Host.", + "type": "string" + }, + "HostId": { + "description": "ID of the host created.", + "type": "string" + }, + "HostMaintenance": { + "description": "Automatically allocates a new dedicated host and moves your instances on to it if a degradation is detected on your current host.", + "type": "string" + }, + "HostRecovery": { + "description": "Indicates whether to enable or disable host recovery for the Dedicated Host. Host recovery is disabled by default.", + "type": "string" + }, + "InstanceFamily": { + "description": "Specifies the instance family to be supported by the Dedicated Hosts. If you specify an instance family, the Dedicated Hosts support multiple instance types within that instance family.", + "type": "string" + }, + "InstanceType": { + "description": "Specifies the instance type to be supported by the Dedicated Hosts. If you specify an instance type, the Dedicated Hosts support instances of the specified instance type only.", + "type": "string" + }, + "OutpostArn": { + "description": "The Amazon Resource Name (ARN) of the Amazon Web Services Outpost on which to allocate the Dedicated Host.", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/HostId" + ], + "required": [ + "AvailabilityZone" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ec2.git", + "typeName": "AWS::EC2::Host" +} diff --git a/src/schema/aws-ec2-instance.json b/src/schema/aws-ec2-instance.json new file mode 100644 index 00000000..350b0a5a --- /dev/null +++ b/src/schema/aws-ec2-instance.json @@ -0,0 +1,851 @@ +{ + "$schema": "https://schema.cloudformation.us-east-1.amazonaws.com/provider.definition.schema.v1.json", + "additionalProperties": false, + "conditionalCreateOnlyProperties": [ + "/properties/AdditionalInfo", + "/properties/Affinity", + "/properties/EbsOptimized", + "/properties/HostId", + "/properties/InstanceType", + "/properties/KernelId", + "/properties/PrivateDnsNameOptions", + "/properties/RamdiskId", + "/properties/SecurityGroupIds", + "/properties/Tenancy", + "/properties/UserData", + "/properties/BlockDeviceMappings" + ], + "createOnlyProperties": [ + "/properties/AvailabilityZone", + "/properties/CpuOptions", + "/properties/ElasticGpuSpecifications", + "/properties/ElasticInferenceAccelerators", + "/properties/EnclaveOptions", + "/properties/HibernationOptions", + "/properties/HostResourceGroupArn", + "/properties/ImageId", + "/properties/Ipv6AddressCount", + "/properties/Ipv6Addresses", + "/properties/KeyName", + "/properties/LaunchTemplate", + "/properties/LicenseSpecifications", + "/properties/NetworkInterfaces", + "/properties/PlacementGroupName", + "/properties/PrivateIpAddress", + "/properties/SecurityGroups", + "/properties/SubnetId" + ], + "definitions": { + "AssociationParameter": { + "additionalProperties": false, + "properties": { + "Key": { + "description": "The name of an input parameter that is in the associated SSM document.", + "type": "string" + }, + "Value": { + "description": "The value of an input parameter.", + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + }, + "BlockDeviceMapping": { + "additionalProperties": false, + "properties": { + "DeviceName": { + "description": "The device name (for example, /dev/sdh or xvdh).", + "type": "string" + }, + "Ebs": { + "$ref": "#/definitions/Ebs", + "description": "Parameters used to automatically set up EBS volumes when the instance is launched." + }, + "NoDevice": { + "additionalProperties": false, + "type": "object" + }, + "VirtualName": { + "type": "string" + } + }, + "required": [ + "DeviceName" + ], + "type": "object" + }, + "Ebs": { + "additionalProperties": false, + "properties": { + "DeleteOnTermination": { + "description": "Indicates whether the EBS volume is deleted on instance termination.", + "type": "boolean" + }, + "Encrypted": { + "description": "Indicates whether the volume should be encrypted.", + "type": "boolean" + }, + "Iops": { + "description": "The number of I/O operations per second (IOPS). For gp3, io1, and io2 volumes, this represents the number of IOPS that are provisioned for the volume. For gp2 volumes, this represents the baseline performance of the volume and the rate at which the volume accumulates I/O credits for bursting.", + "type": "integer" + }, + "KmsKeyId": { + "description": "The identifier of the AWS Key Management Service (AWS KMS) customer managed CMK to use for Amazon EBS encryption. If KmsKeyId is specified, the encrypted state must be true. If the encrypted state is true but you do not specify KmsKeyId, your AWS managed CMK for EBS is used.", + "type": "string" + }, + "SnapshotId": { + "description": "The ID of the snapshot.", + "type": "string" + }, + "VolumeSize": { + "description": "The size of the volume, in GiBs. You must specify either a snapshot ID or a volume size. If you specify a snapshot, the default is the snapshot size. You can specify a volume size that is equal to or larger than the snapshot size.", + "type": "integer" + }, + "VolumeType": { + "description": "The volume type.", + "type": "string" + } + }, + "type": "object" + }, + "ElasticGpuSpecification": { + "additionalProperties": false, + "properties": { + "Type": { + "description": "The type of Elastic Graphics accelerator.", + "type": "string" + } + }, + "required": [ + "Type" + ], + "type": "object" + }, + "ElasticInferenceAccelerator": { + "additionalProperties": false, + "properties": { + "Count": { + "description": "The number of elastic inference accelerators to attach to the instance.", + "minimum": 0, + "type": "integer" + }, + "Type": { + "description": "The type of elastic inference accelerator.", + "type": "string" + } + }, + "required": [ + "Type" + ], + "type": "object" + }, + "EnaSrdSpecification": { + "additionalProperties": false, + "description": "Specifies the ENA Express settings for the network interface that's attached to the instance.", + "properties": { + "EnaSrdEnabled": { + "description": "Specifies whether ENA Express is enabled for the network interface when you launch an instance.", + "type": "boolean" + }, + "EnaSrdUdpSpecification": { + "$ref": "#/definitions/EnaSrdUdpSpecification" + } + }, + "type": "object" + }, + "EnaSrdUdpSpecification": { + "additionalProperties": false, + "description": "Contains ENA Express settings for UDP network traffic for the network interface that's attached to the instance.", + "properties": { + "EnaSrdUdpEnabled": { + "description": "Indicates whether UDP traffic uses ENA Express for your instance.", + "type": "boolean" + } + }, + "type": "object" + }, + "InstanceIpv6Address": { + "additionalProperties": false, + "properties": { + "Ipv6Address": { + "description": "The IPv6 address.", + "type": "string" + } + }, + "required": [ + "Ipv6Address" + ], + "type": "object" + }, + "LaunchTemplateSpecification": { + "additionalProperties": false, + "oneOf": [ + { + "required": [ + "LaunchTemplateName", + "Version" + ] + }, + { + "required": [ + "LaunchTemplateId", + "Version" + ] + } + ], + "properties": { + "LaunchTemplateId": { + "description": "The ID of the launch template. You must specify the LaunchTemplateName or the LaunchTemplateId, but not both.", + "type": "string" + }, + "LaunchTemplateName": { + "description": "The name of the launch template. You must specify the LaunchTemplateName or the LaunchTemplateId, but not both.", + "type": "string" + }, + "Version": { + "description": "The version number of the launch template.", + "type": "string" + } + }, + "type": "object" + }, + "LicenseSpecification": { + "additionalProperties": false, + "properties": { + "LicenseConfigurationArn": { + "description": "The Amazon Resource Name (ARN) of the license configuration.", + "type": "string" + } + }, + "required": [ + "LicenseConfigurationArn" + ], + "type": "object" + }, + "NetworkInterface": { + "additionalProperties": false, + "properties": { + "AssociateCarrierIpAddress": { + "description": "Not currently supported by AWS CloudFormation.", + "type": "boolean" + }, + "AssociatePublicIpAddress": { + "description": "Indicates whether to assign a public IPv4 address to an instance you launch in a VPC.", + "type": "boolean" + }, + "DeleteOnTermination": { + "description": "If set to true, the interface is deleted when the instance is terminated.", + "type": "boolean" + }, + "Description": { + "description": "The description of the network interface.", + "type": "string" + }, + "DeviceIndex": { + "description": "The position of the network interface in the attachment order. A primary network interface has a device index of 0.", + "type": "string" + }, + "EnaSrdSpecification": { + "$ref": "#/definitions/EnaSrdSpecification" + }, + "GroupSet": { + "description": "The IDs of the security groups for the network interface.", + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "Ipv6AddressCount": { + "description": "A number of IPv6 addresses to assign to the network interface.", + "type": "integer" + }, + "Ipv6Addresses": { + "description": "The IPv6 addresses associated with the network interface.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/InstanceIpv6Address" + }, + "type": "array", + "uniqueItems": false + }, + "NetworkInterfaceId": { + "description": "The ID of the network interface.", + "type": "string" + }, + "PrivateIpAddress": { + "description": "The private IPv4 address of the network interface.", + "type": "string" + }, + "PrivateIpAddresses": { + "description": "One or more private IPv4 addresses to assign to the network interface.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/PrivateIpAddressSpecification" + }, + "type": "array", + "uniqueItems": false + }, + "SecondaryPrivateIpAddressCount": { + "description": "The number of secondary private IPv4 addresses.", + "type": "integer" + }, + "SubnetId": { + "description": "The ID of the subnet.", + "type": "string" + } + }, + "required": [ + "DeviceIndex" + ], + "type": "object" + }, + "PrivateDnsNameOptions": { + "additionalProperties": false, + "properties": { + "EnableResourceNameDnsAAAARecord": { + "description": "Indicates whether to respond to DNS queries for instance hostnames with DNS AAAA records. For more information, see Amazon EC2 instance hostname types in the Amazon Elastic Compute Cloud User Guide.", + "type": "boolean" + }, + "EnableResourceNameDnsARecord": { + "description": "Indicates whether to respond to DNS queries for instance hostnames with DNS A records. For more information, see Amazon EC2 instance hostname types in the Amazon Elastic Compute Cloud User Guide.", + "type": "boolean" + }, + "HostnameType": { + "description": "The type of hostnames to assign to instances in the subnet at launch. For IPv4 only subnets, an instance DNS name must be based on the instance IPv4 address. For IPv6 only subnets, an instance DNS name must be based on the instance ID. For dual-stack subnets, you can specify whether DNS names use the instance IPv4 address or the instance ID. For more information, see Amazon EC2 instance hostname types in the Amazon Elastic Compute Cloud User Guide.", + "enum": [ + "ip-name", + "resource-name" + ], + "type": "string" + } + }, + "type": "object" + }, + "PrivateIpAddressSpecification": { + "additionalProperties": false, + "properties": { + "Primary": { + "description": "Indicates whether the private IPv4 address is the primary private IPv4 address. Only one IPv4 address can be designated as primary.", + "type": "boolean" + }, + "PrivateIpAddress": { + "description": "The private IPv4 addresses.", + "type": "string" + } + }, + "required": [ + "PrivateIpAddress", + "Primary" + ], + "type": "object" + }, + "SsmAssociation": { + "additionalProperties": false, + "properties": { + "AssociationParameters": { + "description": "The input parameter values to use with the associated SSM document.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/AssociationParameter" + }, + "type": "array", + "uniqueItems": false + }, + "DocumentName": { + "description": "The name of an SSM document to associate with the instance.", + "type": "string" + } + }, + "required": [ + "DocumentName" + ], + "type": "object" + }, + "State": { + "additionalProperties": false, + "description": "The current state of the instance", + "properties": { + "Code": { + "description": "The state of the instance as a 16-bit unsigned integer.", + "type": "string" + }, + "Name": { + "description": "The current state of the instance.", + "type": "string" + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + }, + "Volume": { + "additionalProperties": false, + "properties": { + "Device": { + "description": "The device name (for example, /dev/sdh or xvdh).", + "type": "string" + }, + "VolumeId": { + "description": "The ID of the EBS volume. The volume and instance must be within the same Availability Zone.", + "type": "string" + } + }, + "required": [ + "VolumeId", + "Device" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::EC2::Instance", + "handlers": { + "create": { + "permissions": [ + "iam:PassRole", + "ec2:ModifyPrivateDnsNameOptions", + "ec2:DescribeElasticGpus", + "ec2:DescribeNetworkInterfaces", + "ec2:DescribeVolumes", + "ec2:RunInstances", + "ec2:AssociateIamInstanceProfile", + "ec2:DescribeIamInstanceProfileAssociations", + "ec2:DescribeInstances", + "ec2:DescribeSubnets", + "ec2:DescribeKeyPairs", + "ec2:DescribeSecurityGroups", + "ec2:DescribeVpcs", + "ec2:DescribeInstanceAttribute", + "ec2:DescribeInstanceCreditSpecifications", + "ec2:DescribeLaunchTemplates", + "ec2:DescribeLaunchTemplateVersions", + "ec2:DetachVolume", + "ec2:DisassociateIamInstanceProfile", + "ec2:ModifyInstanceAttribute", + "ec2:ModifyInstanceCreditSpecification", + "ec2:ModifyInstancePlacement", + "ec2:MonitorInstances", + "ec2:AttachVolume", + "ec2:CreateTags", + "ec2:ReplaceIamInstanceProfileAssociation", + "ec2:StartInstances", + "elastic-inference:DescribeAccelerators", + "ssm:CreateAssociation", + "ssm:DescribeAssociation", + "ssm:ListAssociations" + ] + }, + "delete": { + "permissions": [ + "ec2:DescribeInstances", + "ec2:TerminateInstances", + "ec2:DescribeElasticGpus", + "ec2:DescribeNetworkInterfaces", + "ec2:DescribeVolumes", + "ec2:DescribeInstances", + "ec2:DescribeInstanceAttribute", + "ec2:DescribeInstanceCreditSpecifications", + "ec2:DescribeLaunchTemplates", + "elastic-inference:DescribeAccelerators", + "ssm:DescribeAssociation", + "ssm:ListAssociations" + ] + }, + "list": { + "permissions": [ + "ec2:DescribeInstances" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeElasticGpus", + "ec2:DescribeNetworkInterfaces", + "ec2:DescribeVolumes", + "ec2:DescribeInstances", + "ec2:DescribeInstanceAttribute", + "ec2:DescribeInstanceCreditSpecifications", + "ec2:DescribeLaunchTemplates", + "elastic-inference:DescribeAccelerators", + "ssm:DescribeAssociation", + "ssm:ListAssociations" + ] + }, + "update": { + "permissions": [ + "ec2:DescribeElasticGpus", + "ec2:ModifyPrivateDnsNameOptions", + "ec2:DescribeNetworkInterfaces", + "ec2:AssociateIamInstanceProfile", + "ec2:DescribeIamInstanceProfileAssociations", + "ec2:DescribeInstances", + "ec2:DescribeSubnets", + "ec2:DescribeKeyPairs", + "ec2:DescribeSecurityGroups", + "ec2:DescribeVpcs", + "ec2:DescribeInstanceAttribute", + "ec2:DescribeInstanceCreditSpecifications", + "ec2:DescribeLaunchTemplates", + "ec2:DetachVolume", + "ec2:DisassociateIamInstanceProfile", + "ec2:ModifyInstanceAttribute", + "ec2:ModifyInstanceCreditSpecification", + "ec2:ModifyInstanceMaintenanceOptions", + "ec2:ModifyInstancePlacement", + "ec2:MonitorInstances", + "ec2:AttachVolume", + "ec2:CreateTags", + "ec2:DeleteTags", + "ec2:ReplaceIamInstanceProfileAssociation", + "ec2:StartInstances", + "ec2:StopInstances", + "ec2:UnmonitorInstances", + "elastic-inference:DescribeAccelerators", + "ssm:CreateAssociation", + "ssm:DeleteAssociation", + "ssm:DescribeAssociation", + "ssm:ListAssociations" + ] + } + }, + "primaryIdentifier": [ + "/properties/InstanceId" + ], + "properties": { + "AdditionalInfo": { + "description": "This property is reserved for internal use. If you use it, the stack fails with this error: Bad property set: [Testing this property] (Service: AmazonEC2; Status Code: 400; Error Code: InvalidParameterCombination; Request ID: 0XXXXXX-49c7-4b40-8bcc-76885dcXXXXX).", + "type": "string" + }, + "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.", + "enum": [ + "default", + "host" + ], + "type": "string" + }, + "AvailabilityZone": { + "description": "The Availability Zone of the instance.", + "type": "string" + }, + "BlockDeviceMappings": { + "description": "The block device mapping entries that defines the block devices to attach to the instance at launch.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/BlockDeviceMapping" + }, + "type": "array", + "uniqueItems": false + }, + "CpuOptions": { + "additionalProperties": false, + "description": "The CPU options for the instance.", + "properties": { + "CoreCount": { + "type": "integer" + }, + "ThreadsPerCore": { + "type": "integer" + } + }, + "type": "object" + }, + "CreditSpecification": { + "additionalProperties": false, + "description": "The credit option for CPU usage of the burstable performance instance. Valid values are standard and unlimited.", + "properties": { + "CPUCredits": { + "type": "string" + } + }, + "type": "object" + }, + "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.", + "type": "boolean" + }, + "EbsOptimized": { + "description": "Indicates whether the instance is optimized for Amazon EBS I/O.", + "type": "boolean" + }, + "ElasticGpuSpecifications": { + "description": "An elastic GPU to associate with the instance.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/ElasticGpuSpecification" + }, + "type": "array", + "uniqueItems": false + }, + "ElasticInferenceAccelerators": { + "description": "An elastic inference accelerator to associate with the instance.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/ElasticInferenceAccelerator" + }, + "type": "array", + "uniqueItems": false + }, + "EnclaveOptions": { + "additionalProperties": false, + "description": "Indicates whether the instance is enabled for AWS Nitro Enclaves.", + "properties": { + "Enabled": { + "description": "If this parameter is set to true, the instance is enabled for AWS Nitro Enclaves; otherwise, it is not enabled for AWS Nitro Enclaves.", + "type": "boolean" + } + }, + "type": "object" + }, + "HibernationOptions": { + "additionalProperties": false, + "description": "Indicates whether an instance is enabled for hibernation.", + "properties": { + "Configured": { + "default": false, + "description": "If you set this parameter to true, your instance is enabled for hibernation.", + "type": "boolean" + } + }, + "type": "object" + }, + "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.", + "type": "string" + }, + "HostResourceGroupArn": { + "description": "The ARN of the host resource group in which to launch the instances. If you specify a host resource group ARN, omit the Tenancy parameter or set it to host.", + "type": "string" + }, + "IamInstanceProfile": { + "description": "The IAM instance profile.", + "type": "string" + }, + "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.", + "type": "string" + }, + "InstanceId": { + "description": "The EC2 Instance ID.", + "type": "string" + }, + "InstanceInitiatedShutdownBehavior": { + "description": "Indicates whether an instance stops or terminates when you initiate shutdown from the instance (using the operating system command for system shutdown).", + "type": "string" + }, + "InstanceType": { + "description": "The instance type.", + "type": "string" + }, + "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.", + "type": "integer" + }, + "Ipv6Addresses": { + "description": "[EC2-VPC] The IPv6 addresses from the range of the subnet to associate with the primary network interface.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/InstanceIpv6Address" + }, + "type": "array", + "uniqueItems": false + }, + "KernelId": { + "description": "The ID of the kernel.", + "type": "string" + }, + "KeyName": { + "description": "The name of the key pair.", + "type": "string" + }, + "LaunchTemplate": { + "$ref": "#/definitions/LaunchTemplateSpecification", + "description": "The launch template to use to launch the instances.", + "type": "object" + }, + "LicenseSpecifications": { + "description": "The license configurations.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/LicenseSpecification" + }, + "type": "array", + "uniqueItems": false + }, + "Monitoring": { + "description": "Specifies whether detailed monitoring is enabled for the instance.", + "type": "boolean" + }, + "NetworkInterfaces": { + "description": "The network interfaces to associate with the instance.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/NetworkInterface" + }, + "type": "array", + "uniqueItems": false + }, + "PlacementGroupName": { + "description": "The name of an existing placement group that you want to launch the instance into (cluster | partition | spread).", + "type": "string" + }, + "PrivateDnsName": { + "description": "The private DNS name of the specified instance. For example: ip-10-24-34-0.ec2.internal.", + "type": "string" + }, + "PrivateDnsNameOptions": { + "$ref": "#/definitions/PrivateDnsNameOptions", + "description": "The options for the instance hostname.", + "type": "object" + }, + "PrivateIp": { + "description": "The private IP address of the specified instance. For example: 10.24.34.0.", + "type": "string" + }, + "PrivateIpAddress": { + "description": "[EC2-VPC] The primary IPv4 address. You must specify a value from the IPv4 address range of the subnet.", + "type": "string" + }, + "PropagateTagsToVolumeOnCreation": { + "description": "Indicates whether to assign the tags from the instance to all of the volumes attached to the instance at launch. If you specify true and you assign tags to the instance, those tags are automatically assigned to all of the volumes that you attach to the instance at launch. If you specify false, those tags are not assigned to the attached volumes.", + "type": "boolean" + }, + "PublicDnsName": { + "description": "The public DNS name of the specified instance. For example: ec2-107-20-50-45.compute-1.amazonaws.com.", + "type": "string" + }, + "PublicIp": { + "description": "The public IP address of the specified instance. For example: 192.0.2.0.", + "type": "string" + }, + "RamdiskId": { + "description": "The ID of the RAM disk to select.", + "type": "string" + }, + "SecurityGroupIds": { + "description": "The IDs of the security groups.", + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "SecurityGroups": { + "description": "the names of the security groups. For a nondefault VPC, you must use security group IDs instead.", + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "SourceDestCheck": { + "description": "Specifies whether to enable an instance launched in a VPC to perform NAT.", + "type": "boolean" + }, + "SsmAssociations": { + "description": "The SSM document and parameter values in AWS Systems Manager to associate with this instance.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/SsmAssociation" + }, + "type": "array", + "uniqueItems": false + }, + "State": { + "$ref": "#/definitions/State", + "description": "The current state of the instance.", + "type": "object" + }, + "SubnetId": { + "description": "[EC2-VPC] The ID of the subnet to launch the instance into.\n\n", + "type": "string" + }, + "Tags": { + "description": "The tags to add to the instance.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + }, + "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.", + "type": "string" + }, + "UserData": { + "description": "The user data to make available to the instance.", + "type": "string" + }, + "Volumes": { + "description": "The volumes to attach to the instance.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Volume" + }, + "type": "array", + "uniqueItems": false + }, + "VpcId": { + "description": "The ID of the VPC that the instance is running in.", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/InstanceId", + "/properties/PrivateIp", + "/properties/PublicDnsName", + "/properties/PublicIp", + "/properties/PrivateDnsName", + "/properties/VpcId", + "/properties/State" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ec2.git", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "ec2:CreateTags", + "ec2:DeleteTags" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::EC2::Instance", + "writeOnlyProperties": [ + "/properties/BlockDeviceMappings/*/NoDevice", + "/properties/BlockDeviceMappings/*/VirtualName", + "/properties/LicenseSpecification", + "/properties/AdditionalInfo", + "/properties/Ipv6AddressCount", + "/properties/Ipv6Addresses", + "/properties/PropagateTagsToVolumeOnCreation", + "/properties/LaunchTemplate" + ] +} diff --git a/src/schema/aws-ec2-instanceconnectendpoint.json b/src/schema/aws-ec2-instanceconnectendpoint.json new file mode 100644 index 00000000..7bf4b168 --- /dev/null +++ b/src/schema/aws-ec2-instanceconnectendpoint.json @@ -0,0 +1,128 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/SubnetId", + "/properties/ClientToken", + "/properties/PreserveClientIp", + "/properties/SecurityGroupIds" + ], + "definitions": { + "SecurityGroupId": { + "description": "A key-value pair to associate with a resource.", + "type": "string" + }, + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::EC2::InstanceConnectEndpoint", + "handlers": { + "create": { + "permissions": [ + "ec2:CreateInstanceConnectEndpoint", + "ec2:DescribeInstanceConnectEndpoints", + "ec2:CreateTags", + "ec2:CreateNetworkInterface", + "iam:CreateServiceLinkedRole" + ] + }, + "delete": { + "permissions": [ + "ec2:DeleteInstanceConnectEndpoint", + "ec2:DescribeInstanceConnectEndpoints" + ] + }, + "list": { + "permissions": [ + "ec2:DescribeInstanceConnectEndpoints" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeInstanceConnectEndpoints" + ] + }, + "update": { + "permissions": [ + "ec2:DescribeInstanceConnectEndpoints", + "ec2:CreateTags", + "ec2:DeleteTags" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "ClientToken": { + "description": "The client token of the instance connect endpoint.", + "type": "string" + }, + "Id": { + "description": "The id of the instance connect endpoint", + "type": "string" + }, + "PreserveClientIp": { + "description": "If true, the address of the instance connect endpoint client is preserved when connecting to the end resource", + "type": "boolean" + }, + "SecurityGroupIds": { + "description": "The security group IDs of the instance connect endpoint.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/SecurityGroupId" + }, + "type": "array", + "uniqueItems": true + }, + "SubnetId": { + "description": "The subnet id of the instance connect endpoint", + "type": "string" + }, + "Tags": { + "description": "The tags of the instance connect endpoint.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "SubnetId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "ec2:CreateTags", + "ec2:DeleteTags" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::EC2::InstanceConnectEndpoint", + "writeOnlyProperties": [ + "/properties/ClientToken" + ] +} diff --git a/src/schema/aws-ec2-internetgateway.json b/src/schema/aws-ec2-internetgateway.json new file mode 100644 index 00000000..dae5d787 --- /dev/null +++ b/src/schema/aws-ec2-internetgateway.json @@ -0,0 +1,94 @@ +{ + "additionalProperties": false, + "definitions": { + "Tag": { + "additionalProperties": false, + "description": "Specifies a tag. For more information, see [Resource tags](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-resource-tags.html).", + "properties": { + "Key": { + "description": "The tag key.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "The tag value.", + "maxLength": 256, + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "description": "Allocates an internet gateway for use with a VPC. After creating the Internet gateway, you then attach it to a VPC.", + "handlers": { + "create": { + "permissions": [ + "ec2:CreateInternetGateway", + "ec2:CreateTags", + "ec2:DescribeInternetGateways" + ] + }, + "delete": { + "permissions": [ + "ec2:DeleteInternetGateway", + "ec2:DescribeInternetGateways" + ] + }, + "list": { + "permissions": [ + "ec2:DescribeInternetGateways" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeInternetGateways" + ] + }, + "update": { + "permissions": [ + "ec2:DeleteTags", + "ec2:CreateTags", + "ec2:DescribeInternetGateways" + ] + } + }, + "primaryIdentifier": [ + "/properties/InternetGatewayId" + ], + "properties": { + "InternetGatewayId": { + "description": "", + "type": "string" + }, + "Tags": { + "description": "Any tags to assign to the internet gateway.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + } + }, + "readOnlyProperties": [ + "/properties/InternetGatewayId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "ec2:CreateTags", + "ec2:DeleteTags" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::EC2::InternetGateway" +} diff --git a/src/schema/aws-ec2-ipam.json b/src/schema/aws-ec2-ipam.json new file mode 100644 index 00000000..a434ec63 --- /dev/null +++ b/src/schema/aws-ec2-ipam.json @@ -0,0 +1,202 @@ +{ + "additionalProperties": false, + "definitions": { + "IpamOperatingRegion": { + "additionalProperties": false, + "description": "The regions IPAM is enabled for. Allows pools to be created in these regions, as well as enabling monitoring", + "properties": { + "RegionName": { + "description": "The name of the region.", + "type": "string" + } + }, + "required": [ + "RegionName" + ], + "type": "object" + }, + "IpamOrganizationalUnitExclusion": { + "additionalProperties": false, + "description": "If your IPAM is integrated with AWS Organizations and you add an organizational unit (OU) exclusion, IPAM will not manage the IP addresses in accounts in that OU exclusion.", + "properties": { + "OrganizationsEntityPath": { + "description": "An AWS Organizations entity path. Build the path for the OU(s) using AWS Organizations IDs separated by a '/'. Include all child OUs by ending the path with '/*'.", + "minLength": 1, + "type": "string" + } + }, + "required": [ + "OrganizationsEntityPath" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "Resource Schema of AWS::EC2::IPAM Type", + "handlers": { + "create": { + "permissions": [ + "ec2:CreateIpam", + "iam:CreateServiceLinkedRole", + "ec2:CreateTags", + "ec2:DescribeIpams", + "ec2:DescribeIpamResourceDiscoveries", + "ec2:ModifyIpamResourceDiscovery" + ] + }, + "delete": { + "permissions": [ + "ec2:DeleteIpam", + "ec2:DeleteTags", + "ec2:DescribeIpams" + ] + }, + "list": { + "permissions": [ + "ec2:DescribeIpams" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeIpams", + "ec2:DescribeIpamResourceDiscoveries" + ] + }, + "update": { + "permissions": [ + "ec2:ModifyIpam", + "ec2:CreateTags", + "ec2:DeleteTags", + "ec2:DescribeIpams", + "ec2:DescribeIpamResourceDiscoveries", + "ec2:ModifyIpamResourceDiscovery" + ] + } + }, + "primaryIdentifier": [ + "/properties/IpamId" + ], + "properties": { + "Arn": { + "description": "The Amazon Resource Name (ARN) of the IPAM.", + "type": "string" + }, + "DefaultResourceDiscoveryAssociationId": { + "description": "The Id of the default association to the default resource discovery, created with this IPAM.", + "type": "string" + }, + "DefaultResourceDiscoveryId": { + "description": "The Id of the default resource discovery, created with this IPAM.", + "type": "string" + }, + "DefaultResourceDiscoveryOrganizationalUnitExclusions": { + "description": "A set of organizational unit (OU) exclusions for the default resource discovery, created with this IPAM.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/IpamOrganizationalUnitExclusion" + }, + "type": "array", + "uniqueItems": true + }, + "Description": { + "type": "string" + }, + "EnablePrivateGua": { + "description": "Enable provisioning of GUA space in private pools.", + "type": "boolean" + }, + "IpamId": { + "description": "Id of the IPAM.", + "type": "string" + }, + "OperatingRegions": { + "description": "The regions IPAM is enabled for. Allows pools to be created in these regions, as well as enabling monitoring", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/IpamOperatingRegion" + }, + "type": "array", + "uniqueItems": true + }, + "PrivateDefaultScopeId": { + "description": "The Id of the default scope for publicly routable IP space, created with this IPAM.", + "type": "string" + }, + "PublicDefaultScopeId": { + "description": "The Id of the default scope for publicly routable IP space, created with this IPAM.", + "maxLength": 255, + "type": "string" + }, + "ResourceDiscoveryAssociationCount": { + "description": "The count of resource discoveries associated with this IPAM.", + "type": "integer" + }, + "ScopeCount": { + "description": "The number of scopes that currently exist in this IPAM.", + "type": "integer" + }, + "Tags": { + "description": "An array of key-value pairs to apply to this resource.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + }, + "Tier": { + "description": "The tier of the IPAM.", + "enum": [ + "free", + "advanced" + ], + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/IpamId", + "/properties/Arn", + "/properties/PublicDefaultScopeId", + "/properties/PrivateDefaultScopeId", + "/properties/ScopeCount", + "/properties/ResourceDiscoveryAssociationCount", + "/properties/DefaultResourceDiscoveryId", + "/properties/DefaultResourceDiscoveryAssociationId" + ], + "required": [], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ipam.git", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "ec2:DeleteTags", + "ec2:CreateTags" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::EC2::IPAM" +} diff --git a/src/schema/aws-ec2-ipamallocation.json b/src/schema/aws-ec2-ipamallocation.json new file mode 100644 index 00000000..a00c72ff --- /dev/null +++ b/src/schema/aws-ec2-ipamallocation.json @@ -0,0 +1,91 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/IpamPoolId", + "/properties/Cidr", + "/properties/Description", + "/properties/NetmaskLength" + ], + "definitions": { + "Cidr": { + "description": "Represents an IPAM custom allocation of a single IPv4 or IPv6 CIDR", + "type": "string" + } + }, + "description": "Resource Schema of AWS::EC2::IPAMAllocation Type", + "handlers": { + "create": { + "permissions": [ + "ec2:AllocateIpamPoolCidr", + "ec2:GetIpamPoolAllocations" + ] + }, + "delete": { + "permissions": [ + "ec2:ReleaseIpamPoolAllocation" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "IpamPoolId": { + "$ref": "resource-schema.json#/properties/IpamPoolId" + } + }, + "required": [ + "IpamPoolId" + ] + }, + "permissions": [ + "ec2:GetIpamPoolAllocations" + ] + }, + "read": { + "permissions": [ + "ec2:GetIpamPoolAllocations" + ] + } + }, + "primaryIdentifier": [ + "/properties/IpamPoolId", + "/properties/IpamPoolAllocationId", + "/properties/Cidr" + ], + "properties": { + "Cidr": { + "$ref": "#/definitions/Cidr" + }, + "Description": { + "type": "string" + }, + "IpamPoolAllocationId": { + "description": "Id of the allocation.", + "type": "string" + }, + "IpamPoolId": { + "description": "Id of the IPAM Pool.", + "type": "string" + }, + "NetmaskLength": { + "description": "The desired netmask length of the allocation. If set, IPAM will choose a block of free space with this size and return the CIDR representing it.", + "type": "integer" + } + }, + "readOnlyProperties": [ + "/properties/IpamPoolAllocationId" + ], + "required": [ + "IpamPoolId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::EC2::IPAMAllocation", + "writeOnlyProperties": [ + "/properties/NetmaskLength" + ] +} diff --git a/src/schema/aws-ec2-ipampool.json b/src/schema/aws-ec2-ipampool.json new file mode 100644 index 00000000..1527c4cb --- /dev/null +++ b/src/schema/aws-ec2-ipampool.json @@ -0,0 +1,286 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/IpamScopeId", + "/properties/SourceIpamPoolId", + "/properties/Locale", + "/properties/AddressFamily", + "/properties/PubliclyAdvertisable", + "/properties/PublicIpSource", + "/properties/AwsService", + "/properties/SourceResource" + ], + "definitions": { + "Cidr": { + "description": "Represents a single IPv4 or IPv6 CIDR", + "type": "string" + }, + "ProvisionedCidr": { + "additionalProperties": false, + "description": "An address space to be inserted into this pool. All allocations must be made from this address space.", + "properties": { + "Cidr": { + "$ref": "#/definitions/Cidr" + } + }, + "required": [ + "Cidr" + ], + "type": "object" + }, + "SourceResource": { + "additionalProperties": false, + "description": "The resource associated with this pool's space. Depending on the ResourceType, setting a SourceResource changes which space can be provisioned in this pool and which types of resources can receive allocations", + "properties": { + "ResourceId": { + "type": "string" + }, + "ResourceOwner": { + "type": "string" + }, + "ResourceRegion": { + "type": "string" + }, + "ResourceType": { + "type": "string" + } + }, + "required": [ + "ResourceId", + "ResourceType", + "ResourceRegion", + "ResourceOwner" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "Resource Schema of AWS::EC2::IPAMPool Type", + "handlers": { + "create": { + "permissions": [ + "ec2:CreateIpamPool", + "ec2:DescribeIpamPools", + "ec2:ProvisionIpamPoolCidr", + "ec2:GetIpamPoolCidrs", + "ec2:CreateTags" + ] + }, + "delete": { + "permissions": [ + "ec2:DeleteIpamPool", + "ec2:DescribeIpamPools", + "ec2:GetIpamPoolCidrs", + "ec2:DeprovisionIpamPoolCidr", + "ec2:DeleteTags" + ] + }, + "list": { + "permissions": [ + "ec2:DescribeIpamPools" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeIpamPools", + "ec2:GetIpamPoolCidrs" + ] + }, + "update": { + "permissions": [ + "ec2:ModifyIpamPool", + "ec2:DescribeIpamPools", + "ec2:GetIpamPoolCidrs", + "ec2:ProvisionIpamPoolCidr", + "ec2:DeprovisionIpamPoolCidr", + "ec2:CreateTags", + "ec2:DeleteTags" + ] + } + }, + "primaryIdentifier": [ + "/properties/IpamPoolId" + ], + "properties": { + "AddressFamily": { + "description": "The address family of the address space in this pool. Either IPv4 or IPv6.", + "type": "string" + }, + "AllocationDefaultNetmaskLength": { + "description": "The default netmask length for allocations made from this pool. This value is used when the netmask length of an allocation isn't specified.", + "type": "integer" + }, + "AllocationMaxNetmaskLength": { + "description": "The maximum allowed netmask length for allocations made from this pool.", + "type": "integer" + }, + "AllocationMinNetmaskLength": { + "description": "The minimum allowed netmask length for allocations made from this pool.", + "type": "integer" + }, + "AllocationResourceTags": { + "description": "When specified, an allocation will not be allowed unless a resource has a matching set of tags.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + }, + "Arn": { + "description": "The Amazon Resource Name (ARN) of the IPAM Pool.", + "type": "string" + }, + "AutoImport": { + "description": "Determines what to do if IPAM discovers resources that haven't been assigned an allocation. If set to true, an allocation will be made automatically.", + "type": "boolean" + }, + "AwsService": { + "description": "Limits which service in Amazon Web Services that the pool can be used in.", + "enum": [ + "ec2" + ], + "type": "string" + }, + "Description": { + "type": "string" + }, + "IpamArn": { + "description": "The Amazon Resource Name (ARN) of the IPAM this pool is a part of.", + "type": "string" + }, + "IpamPoolId": { + "description": "Id of the IPAM Pool.", + "type": "string" + }, + "IpamScopeArn": { + "description": "The Amazon Resource Name (ARN) of the scope this pool is a part of.", + "type": "string" + }, + "IpamScopeId": { + "description": "The Id of the scope this pool is a part of.", + "type": "string" + }, + "IpamScopeType": { + "description": "Determines whether this scope contains publicly routable space or space for a private network", + "enum": [ + "public", + "private" + ], + "type": "string" + }, + "Locale": { + "description": "The region of this pool. If not set, this will default to \"None\" which will disable non-custom allocations. If the locale has been specified for the source pool, this value must match.", + "type": "string" + }, + "PoolDepth": { + "description": "The depth of this pool in the source pool hierarchy.", + "type": "integer" + }, + "ProvisionedCidrs": { + "description": "A list of cidrs representing the address space available for allocation in this pool.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/ProvisionedCidr" + }, + "type": "array", + "uniqueItems": true + }, + "PublicIpSource": { + "description": "The IP address source for pools in the public scope. Only used for provisioning IP address CIDRs to pools in the public scope. Default is `byoip`.", + "enum": [ + "byoip", + "amazon" + ], + "type": "string" + }, + "PubliclyAdvertisable": { + "description": "Determines whether or not address space from this pool is publicly advertised. Must be set if and only if the pool is IPv6.", + "type": "boolean" + }, + "SourceIpamPoolId": { + "description": "The Id of this pool's source. If set, all space provisioned in this pool must be free space provisioned in the parent pool.", + "type": "string" + }, + "SourceResource": { + "$ref": "#/definitions/SourceResource" + }, + "State": { + "description": "The state of this pool. This can be one of the following values: \"create-in-progress\", \"create-complete\", \"modify-in-progress\", \"modify-complete\", \"delete-in-progress\", or \"delete-complete\"", + "enum": [ + "create-in-progress", + "create-complete", + "modify-in-progress", + "modify-complete", + "delete-in-progress", + "delete-complete" + ], + "type": "string" + }, + "StateMessage": { + "description": "An explanation of how the pool arrived at it current state.", + "type": "string" + }, + "Tags": { + "description": "An array of key-value pairs to apply to this resource.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + } + }, + "propertyTransform": { + "/properties/AddressFamily": "$lowercase(AddressFamily)" + }, + "readOnlyProperties": [ + "/properties/IpamPoolId", + "/properties/Arn", + "/properties/IpamScopeArn", + "/properties/IpamScopeType", + "/properties/IpamArn", + "/properties/PoolDepth", + "/properties/State", + "/properties/StateMessage" + ], + "required": [ + "IpamScopeId", + "AddressFamily" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ipam.git", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "ec2:DeleteTags", + "ec2:CreateTags" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::EC2::IPAMPool" +} diff --git a/src/schema/aws-ec2-ipampoolcidr.json b/src/schema/aws-ec2-ipampoolcidr.json new file mode 100644 index 00000000..27bbb11f --- /dev/null +++ b/src/schema/aws-ec2-ipampoolcidr.json @@ -0,0 +1,84 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/IpamPoolId", + "/properties/Cidr", + "/properties/NetmaskLength" + ], + "description": "Resource Schema of AWS::EC2::IPAMPoolCidr Type", + "handlers": { + "create": { + "permissions": [ + "ec2:ProvisionIpamPoolCidr", + "ec2:GetIpamPoolCidrs" + ] + }, + "delete": { + "permissions": [ + "ec2:DeprovisionIpamPoolCidr", + "ec2:GetIpamPoolCidrs" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "IpamPoolId": { + "$ref": "resource-schema.json#/properties/IpamPoolId" + } + }, + "required": [ + "IpamPoolId" + ] + }, + "permissions": [ + "ec2:GetIpamPoolCidrs" + ] + }, + "read": { + "permissions": [ + "ec2:GetIpamPoolCidrs" + ] + } + }, + "primaryIdentifier": [ + "/properties/IpamPoolId", + "/properties/IpamPoolCidrId" + ], + "properties": { + "Cidr": { + "description": "Represents a single IPv4 or IPv6 CIDR", + "type": "string" + }, + "IpamPoolCidrId": { + "description": "Id of the IPAM Pool Cidr.", + "type": "string" + }, + "IpamPoolId": { + "description": "Id of the IPAM Pool.", + "type": "string" + }, + "NetmaskLength": { + "description": "The desired netmask length of the provision. If set, IPAM will choose a block of free space with this size and return the CIDR representing it.", + "type": "integer" + }, + "State": { + "description": "Provisioned state of the cidr.", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/IpamPoolCidrId", + "/properties/State" + ], + "required": [ + "IpamPoolId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::EC2::IPAMPoolCidr" +} diff --git a/src/schema/aws-ec2-ipamresourcediscovery.json b/src/schema/aws-ec2-ipamresourcediscovery.json new file mode 100644 index 00000000..4d26e49f --- /dev/null +++ b/src/schema/aws-ec2-ipamresourcediscovery.json @@ -0,0 +1,176 @@ +{ + "additionalProperties": false, + "definitions": { + "IpamOperatingRegion": { + "additionalProperties": false, + "description": "The regions IPAM Resource Discovery is enabled for. Allows for monitoring.", + "properties": { + "RegionName": { + "description": "The name of the region.", + "type": "string" + } + }, + "required": [ + "RegionName" + ], + "type": "object" + }, + "IpamResourceDiscoveryOrganizationalUnitExclusion": { + "additionalProperties": false, + "description": "If your IPAM is integrated with AWS Organizations and you add an organizational unit (OU) exclusion, IPAM will not manage the IP addresses in accounts in that OU exclusion.", + "properties": { + "OrganizationsEntityPath": { + "description": "An AWS Organizations entity path. Build the path for the OU(s) using AWS Organizations IDs separated by a '/'. Include all child OUs by ending the path with '/*'.", + "minLength": 1, + "type": "string" + } + }, + "required": [ + "OrganizationsEntityPath" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "Resource Schema of AWS::EC2::IPAMResourceDiscovery Type", + "handlers": { + "create": { + "permissions": [ + "ec2:CreateIpamResourceDiscovery", + "ec2:DescribeIpamResourceDiscoveries", + "ec2:ModifyIpamResourceDiscovery", + "ec2:CreateTags", + "iam:CreateServiceLinkedRole" + ] + }, + "delete": { + "permissions": [ + "ec2:DeleteIpamResourceDiscovery", + "ec2:DescribeIpamResourceDiscoveries", + "ec2:DeleteTags" + ] + }, + "list": { + "permissions": [ + "ec2:DescribeIpamResourceDiscoveries" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeIpamResourceDiscoveries" + ] + }, + "update": { + "permissions": [ + "ec2:ModifyIpamResourceDiscovery", + "ec2:DescribeIpamResourceDiscoveries", + "ec2:CreateTags", + "ec2:DeleteTags" + ] + } + }, + "primaryIdentifier": [ + "/properties/IpamResourceDiscoveryId" + ], + "properties": { + "Description": { + "type": "string" + }, + "IpamResourceDiscoveryArn": { + "description": "Amazon Resource Name (Arn) for the Resource Discovery.", + "type": "string" + }, + "IpamResourceDiscoveryId": { + "description": "Id of the IPAM Pool.", + "type": "string" + }, + "IpamResourceDiscoveryRegion": { + "description": "The region the resource discovery is setup in. ", + "type": "string" + }, + "IsDefault": { + "description": "Determines whether or not address space from this pool is publicly advertised. Must be set if and only if the pool is IPv6.", + "type": "boolean" + }, + "OperatingRegions": { + "description": "The regions Resource Discovery is enabled for. Allows resource discoveries to be created in these regions, as well as enabling monitoring", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/IpamOperatingRegion" + }, + "type": "array", + "uniqueItems": true + }, + "OrganizationalUnitExclusions": { + "description": "A set of organizational unit (OU) exclusions for this resource.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/IpamResourceDiscoveryOrganizationalUnitExclusion" + }, + "type": "array", + "uniqueItems": true + }, + "OwnerId": { + "description": "Owner Account ID of the Resource Discovery", + "type": "string" + }, + "State": { + "description": "The state of this Resource Discovery.", + "type": "string" + }, + "Tags": { + "description": "An array of key-value pairs to apply to this resource.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + } + }, + "propertyTransform": {}, + "readOnlyProperties": [ + "/properties/IpamResourceDiscoveryId", + "/properties/IpamResourceDiscoveryArn", + "/properties/OwnerId", + "/properties/IpamResourceDiscoveryRegion", + "/properties/IsDefault", + "/properties/State" + ], + "required": [], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ipam.git", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "ec2:DeleteTags", + "ec2:CreateTags" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::EC2::IPAMResourceDiscovery" +} diff --git a/src/schema/aws-ec2-ipamresourcediscoveryassociation.json b/src/schema/aws-ec2-ipamresourcediscoveryassociation.json new file mode 100644 index 00000000..ffb04ec3 --- /dev/null +++ b/src/schema/aws-ec2-ipamresourcediscoveryassociation.json @@ -0,0 +1,147 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/IpamId", + "/properties/IpamResourceDiscoveryId" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "Resource Schema of AWS::EC2::IPAMResourceDiscoveryAssociation Type", + "handlers": { + "create": { + "permissions": [ + "ec2:AssociateIpamResourceDiscovery", + "ec2:DescribeIpamResourceDiscoveryAssociations", + "ec2:CreateTags" + ] + }, + "delete": { + "permissions": [ + "ec2:DisassociateIpamResourceDiscovery", + "ec2:DescribeIpamResourceDiscoveryAssociations", + "ec2:DeleteTags" + ] + }, + "list": { + "permissions": [ + "ec2:DescribeIpamResourceDiscoveryAssociations" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeIpamResourceDiscoveryAssociations" + ] + }, + "update": { + "permissions": [ + "ec2:DescribeIpamResourceDiscoveryAssociations", + "ec2:CreateTags", + "ec2:DeleteTags" + ] + } + }, + "primaryIdentifier": [ + "/properties/IpamResourceDiscoveryAssociationId" + ], + "properties": { + "IpamArn": { + "description": "Arn of the IPAM.", + "type": "string" + }, + "IpamId": { + "description": "The Id of the IPAM this Resource Discovery is associated to.", + "type": "string" + }, + "IpamRegion": { + "description": "The home region of the IPAM.", + "type": "string" + }, + "IpamResourceDiscoveryAssociationArn": { + "description": "The Amazon Resource Name (ARN) of the resource discovery association is a part of.", + "type": "string" + }, + "IpamResourceDiscoveryAssociationId": { + "description": "Id of the IPAM Resource Discovery Association.", + "type": "string" + }, + "IpamResourceDiscoveryId": { + "description": "The Amazon Resource Name (ARN) of the IPAM Resource Discovery Association.", + "type": "string" + }, + "IsDefault": { + "description": "If the Resource Discovery Association exists due as part of CreateIpam.", + "type": "boolean" + }, + "OwnerId": { + "description": "The AWS Account ID for the account where the shared IPAM exists.", + "type": "string" + }, + "ResourceDiscoveryStatus": { + "description": "The status of the resource discovery.", + "type": "string" + }, + "State": { + "description": "The operational state of the Resource Discovery Association. Related to Create/Delete activities.", + "type": "string" + }, + "Tags": { + "description": "An array of key-value pairs to apply to this resource.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/IpamArn", + "/properties/IpamRegion", + "/properties/IpamResourceDiscoveryAssociationId", + "/properties/IpamResourceDiscoveryAssociationArn", + "/properties/IsDefault", + "/properties/ResourceDiscoveryStatus", + "/properties/State", + "/properties/OwnerId" + ], + "required": [ + "IpamId", + "IpamResourceDiscoveryId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ipam.git", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "ec2:DeleteTags", + "ec2:CreateTags" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::EC2::IPAMResourceDiscoveryAssociation" +} diff --git a/src/schema/aws-ec2-ipamscope.json b/src/schema/aws-ec2-ipamscope.json new file mode 100644 index 00000000..bd3e363b --- /dev/null +++ b/src/schema/aws-ec2-ipamscope.json @@ -0,0 +1,139 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/IpamId" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "Resource Schema of AWS::EC2::IPAMScope Type", + "handlers": { + "create": { + "permissions": [ + "ec2:CreateIpamScope", + "ec2:DescribeIpamScopes", + "ec2:CreateTags" + ] + }, + "delete": { + "permissions": [ + "ec2:DeleteIpamScope", + "ec2:DescribeIpamScopes", + "ec2:DeleteTags" + ] + }, + "list": { + "permissions": [ + "ec2:DescribeIpamScopes" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeIpamScopes" + ] + }, + "update": { + "permissions": [ + "ec2:ModifyIpamScope", + "ec2:DescribeIpamScopes", + "ec2:CreateTags", + "ec2:DeleteTags" + ] + } + }, + "primaryIdentifier": [ + "/properties/IpamScopeId" + ], + "properties": { + "Arn": { + "description": "The Amazon Resource Name (ARN) of the IPAM scope.", + "type": "string" + }, + "Description": { + "type": "string" + }, + "IpamArn": { + "description": "The Amazon Resource Name (ARN) of the IPAM this scope is a part of.", + "type": "string" + }, + "IpamId": { + "description": "The Id of the IPAM this scope is a part of.", + "type": "string" + }, + "IpamScopeId": { + "description": "Id of the IPAM scope.", + "type": "string" + }, + "IpamScopeType": { + "description": "Determines whether this scope contains publicly routable space or space for a private network", + "enum": [ + "public", + "private" + ], + "type": "string" + }, + "IsDefault": { + "description": "Is this one of the default scopes created with the IPAM.", + "type": "boolean" + }, + "PoolCount": { + "description": "The number of pools that currently exist in this scope.", + "type": "integer" + }, + "Tags": { + "description": "An array of key-value pairs to apply to this resource.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/IpamScopeId", + "/properties/Arn", + "/properties/IpamArn", + "/properties/IsDefault", + "/properties/PoolCount", + "/properties/IpamScopeType" + ], + "required": [ + "IpamId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ipam.git", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "ec2:DeleteTags", + "ec2:CreateTags" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::EC2::IPAMScope" +} diff --git a/src/schema/aws-ec2-keypair.json b/src/schema/aws-ec2-keypair.json new file mode 100644 index 00000000..5d11d257 --- /dev/null +++ b/src/schema/aws-ec2-keypair.json @@ -0,0 +1,141 @@ +{ + "additionalIdentifiers": [ + [ + "/properties/KeyPairId" + ] + ], + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/KeyName", + "/properties/KeyType", + "/properties/KeyFormat", + "/properties/PublicKeyMaterial", + "/properties/Tags" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "description": "Specifies a tag. For more information, see [Resource tags](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-resource-tags.html).", + "properties": { + "Key": { + "description": "The tag key.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "The tag value.", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "Specifies a key pair for use with an EC2long instance as follows:\n + To import an existing key pair, include the ``PublicKeyMaterial`` property.\n + To create a new key pair, omit the ``PublicKeyMaterial`` property.\n \n When you import an existing key pair, you specify the public key material for the key. We assume that you have the private key material for the key. CFNlong does not create or return the private key material when you import a key pair.\n When you create a new key pair, the private key is saved to SYSlong Parameter Store, using a parameter with the following name: ``/ec2/keypair/{key_pair_id}``. For more information about retrieving private key, and the required permissions, see [Create a key pair using](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/create-key-pairs.html#create-key-pair-cloudformation) in the *User Guide*.\n When CFN deletes a key pair that was created or imported by a stack, it also deletes the parameter that was used to store the private key material in Parameter Store.", + "handlers": { + "create": { + "permissions": [ + "ec2:CreateKeyPair", + "ec2:ImportKeyPair", + "ec2:CreateTags", + "ssm:PutParameter" + ] + }, + "delete": { + "permissions": [ + "ec2:DeleteKeyPair", + "ssm:DeleteParameter", + "ec2:DescribeKeyPairs" + ] + }, + "list": { + "permissions": [ + "ec2:DescribeKeyPairs" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeKeyPairs" + ] + } + }, + "primaryIdentifier": [ + "/properties/KeyName" + ], + "properties": { + "KeyFingerprint": { + "description": "", + "type": "string" + }, + "KeyFormat": { + "default": "pem", + "description": "The format of the key pair.\n Default: ``pem``", + "enum": [ + "pem", + "ppk" + ], + "type": "string" + }, + "KeyName": { + "description": "A unique name for the key pair.\n Constraints: Up to 255 ASCII characters", + "type": "string" + }, + "KeyPairId": { + "description": "", + "type": "string" + }, + "KeyType": { + "default": "rsa", + "description": "The type of key pair. Note that ED25519 keys are not supported for Windows instances.\n If the ``PublicKeyMaterial`` property is specified, the ``KeyType`` property is ignored, and the key type is inferred from the ``PublicKeyMaterial`` value.\n Default: ``rsa``", + "enum": [ + "rsa", + "ed25519" + ], + "type": "string" + }, + "PublicKeyMaterial": { + "description": "The public key material. The ``PublicKeyMaterial`` property is used to import a key pair. If this property is not specified, then a new key pair will be created.", + "type": "string" + }, + "Tags": { + "description": "The tags to apply to the key pair.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + } + }, + "propertyTransform": { + "/properties/PublicKeyMaterial": "$join([PublicKeyMaterial, \"\n\"])" + }, + "readOnlyProperties": [ + "/properties/KeyPairId", + "/properties/KeyFingerprint" + ], + "required": [ + "KeyName" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "ec2:CreateTags" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": false, + "taggable": true + }, + "typeName": "AWS::EC2::KeyPair", + "writeOnlyProperties": [ + "/properties/KeyFormat" + ] +} diff --git a/src/schema/aws-ec2-launchtemplate.json b/src/schema/aws-ec2-launchtemplate.json new file mode 100644 index 00000000..c46334da --- /dev/null +++ b/src/schema/aws-ec2-launchtemplate.json @@ -0,0 +1,1209 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/LaunchTemplateName" + ], + "definitions": { + "AcceleratorCount": { + "additionalProperties": false, + "description": "The minimum and maximum number of accelerators (GPUs, FPGAs, or AWS Inferentia chips) on an instance.", + "properties": { + "Max": { + "description": "The maximum number of accelerators. To specify no maximum limit, omit this parameter. To exclude accelerator-enabled instance types, set ``Max`` to ``0``.", + "type": "integer" + }, + "Min": { + "description": "The minimum number of accelerators. To specify no minimum limit, omit this parameter.", + "type": "integer" + } + }, + "type": "object" + }, + "AcceleratorTotalMemoryMiB": { + "additionalProperties": false, + "description": "The minimum and maximum amount of total accelerator memory, in MiB.", + "properties": { + "Max": { + "description": "The maximum amount of accelerator memory, in MiB. To specify no maximum limit, omit this parameter.", + "type": "integer" + }, + "Min": { + "description": "The minimum amount of accelerator memory, in MiB. To specify no minimum limit, omit this parameter.", + "type": "integer" + } + }, + "type": "object" + }, + "BaselineEbsBandwidthMbps": { + "additionalProperties": false, + "description": "The minimum and maximum baseline bandwidth to Amazon EBS, in Mbps. For more information, see [Amazon EBS\u2013optimized instances](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-optimized.html) in the *Amazon EC2 User Guide*.", + "properties": { + "Max": { + "description": "The maximum baseline bandwidth, in Mbps. To specify no maximum limit, omit this parameter.", + "type": "integer" + }, + "Min": { + "description": "The minimum baseline bandwidth, in Mbps. To specify no minimum limit, omit this parameter.", + "type": "integer" + } + }, + "type": "object" + }, + "BaselinePerformanceFactors": { + "additionalProperties": false, + "description": "The baseline performance to consider, using an instance family as a baseline reference. The instance family establishes the lowest acceptable level of performance. Amazon EC2 uses this baseline to guide instance type selection, but there is no guarantee that the selected instance types will always exceed the baseline for every application.\n Currently, this parameter only supports CPU performance as a baseline performance factor. For example, specifying ``c6i`` would use the CPU performance of the ``c6i`` family as the baseline reference.", + "properties": { + "Cpu": { + "$ref": "#/definitions/Cpu", + "description": "The CPU performance to consider, using an instance family as the baseline reference." + } + }, + "type": "object" + }, + "BlockDeviceMapping": { + "additionalProperties": false, + "description": "Specifies a block device mapping for a launch template. You must specify ``DeviceName`` plus exactly one of the following properties: ``Ebs``, ``NoDevice``, or ``VirtualName``.\n ``BlockDeviceMapping`` is a property of [AWS::EC2::LaunchTemplate LaunchTemplateData](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata.html).", + "properties": { + "DeviceName": { + "description": "The device name (for example, /dev/sdh or xvdh).", + "type": "string" + }, + "Ebs": { + "$ref": "#/definitions/Ebs", + "description": "Parameters used to automatically set up EBS volumes when the instance is launched." + }, + "NoDevice": { + "description": "To omit the device from the block device mapping, specify an empty string.", + "type": "string" + }, + "VirtualName": { + "description": "The virtual device name (ephemeralN). Instance store volumes are numbered starting from 0. An instance type with 2 available instance store volumes can specify mappings for ephemeral0 and ephemeral1. The number of available instance store volumes depends on the instance type. After you connect to the instance, you must mount the volume.", + "type": "string" + } + }, + "type": "object" + }, + "CapacityReservationSpecification": { + "additionalProperties": false, + "description": "Specifies an instance's Capacity Reservation targeting option. You can specify only one option at a time.\n ``CapacityReservationSpecification`` is a property of [AWS::EC2::LaunchTemplate LaunchTemplateData](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata.html).", + "properties": { + "CapacityReservationPreference": { + "description": "Indicates the instance's Capacity Reservation preferences. Possible preferences include:\n + ``capacity-reservations-only`` - The instance will only run in a Capacity Reservation or Capacity Reservation group. If capacity isn't available, the instance will fail to launch.\n + ``open`` - The instance can run in any ``open`` Capacity Reservation that has matching attributes (instance type, platform, Availability Zone, tenancy).\n + ``none`` - The instance avoids running in a Capacity Reservation even if one is available. The instance runs in On-Demand capacity.", + "type": "string" + }, + "CapacityReservationTarget": { + "$ref": "#/definitions/CapacityReservationTarget", + "description": "Information about the target Capacity Reservation or Capacity Reservation group." + } + }, + "type": "object" + }, + "CapacityReservationTarget": { + "additionalProperties": false, + "description": "Specifies a target Capacity Reservation.\n ``CapacityReservationTarget`` is a property of the [Amazon EC2 LaunchTemplate LaunchTemplateData](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata.html) property type.", + "properties": { + "CapacityReservationId": { + "description": "The ID of the Capacity Reservation in which to run the instance.", + "type": "string" + }, + "CapacityReservationResourceGroupArn": { + "description": "The ARN of the Capacity Reservation resource group in which to run the instance.", + "type": "string" + } + }, + "type": "object" + }, + "ConnectionTrackingSpecification": { + "additionalProperties": false, + "description": "A security group connection tracking specification that enables you to set the idle timeout for connection tracking on an Elastic network interface. For more information, see [Connection tracking timeouts](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/security-group-connection-tracking.html#connection-tracking-timeouts) in the *Amazon EC2 User Guide*.", + "properties": { + "TcpEstablishedTimeout": { + "description": "Timeout (in seconds) for idle TCP connections in an established state. Min: 60 seconds. Max: 432000 seconds (5 days). Default: 432000 seconds. Recommended: Less than 432000 seconds.", + "type": "integer" + }, + "UdpStreamTimeout": { + "description": "Timeout (in seconds) for idle UDP flows classified as streams which have seen more than one request-response transaction. Min: 60 seconds. Max: 180 seconds (3 minutes). Default: 180 seconds.", + "type": "integer" + }, + "UdpTimeout": { + "description": "Timeout (in seconds) for idle UDP flows that have seen traffic only in a single direction or a single request-response transaction. Min: 30 seconds. Max: 60 seconds. Default: 30 seconds.", + "type": "integer" + } + }, + "type": "object" + }, + "Cpu": { + "additionalProperties": false, + "description": "Specifies the CPU performance to consider when using an instance family as the baseline reference.", + "properties": { + "References": { + "$ref": "#/definitions/References", + "description": "The instance family to use as the baseline reference for CPU performance. All instance types that match your specified attributes are compared against the CPU performance of the referenced instance family, regardless of CPU manufacturer or architecture differences." + } + }, + "type": "object" + }, + "CpuOptions": { + "additionalProperties": false, + "description": "Specifies the CPU options for an instance. For more information, see [Optimize CPU options](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-optimize-cpu.html) in the *User Guide*.\n ``CpuOptions`` is a property of [AWS::EC2::LaunchTemplate LaunchTemplateData](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata.html).", + "properties": { + "AmdSevSnp": { + "description": "Indicates whether to enable the instance for AMD SEV-SNP. AMD SEV-SNP is supported with M6a, R6a, and C6a instance types only. For more information, see [AMD SEV-SNP for Amazon EC2 instances](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/sev-snp.html).", + "enum": [ + "enabled", + "disabled" + ], + "type": "string" + }, + "CoreCount": { + "description": "The number of CPU cores for the instance.", + "type": "integer" + }, + "ThreadsPerCore": { + "description": "The number of threads per CPU core. To disable multithreading for the instance, specify a value of ``1``. Otherwise, specify the default value of ``2``.", + "type": "integer" + } + }, + "type": "object" + }, + "CreditSpecification": { + "additionalProperties": false, + "description": "Specifies the credit option for CPU usage of a T2, T3, or T3a instance.\n ``CreditSpecification`` is a property of [AWS::EC2::LaunchTemplate LaunchTemplateData](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata.html).", + "properties": { + "CpuCredits": { + "description": "The credit option for CPU usage of a T instance.\n Valid values: ``standard`` | ``unlimited``", + "type": "string" + } + }, + "type": "object" + }, + "Ebs": { + "additionalProperties": false, + "description": "Parameters for a block device for an EBS volume in an Amazon EC2 launch template.\n ``Ebs`` is a property of [AWS::EC2::LaunchTemplate BlockDeviceMapping](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-blockdevicemapping.html).", + "properties": { + "DeleteOnTermination": { + "description": "Indicates whether the EBS volume is deleted on instance termination.", + "type": "boolean" + }, + "Encrypted": { + "description": "Indicates whether the EBS volume is encrypted. Encrypted volumes can only be attached to instances that support Amazon EBS encryption. If you are creating a volume from a snapshot, you can't specify an encryption value.", + "type": "boolean" + }, + "Iops": { + "description": "The number of I/O operations per second (IOPS). For ``gp3``, ``io1``, and ``io2`` volumes, this represents the number of IOPS that are provisioned for the volume. For ``gp2`` volumes, this represents the baseline performance of the volume and the rate at which the volume accumulates I/O credits for bursting.\n The following are the supported values for each volume type:\n + ``gp3``: 3,000 - 16,000 IOPS\n + ``io1``: 100 - 64,000 IOPS\n + ``io2``: 100 - 256,000 IOPS\n \n For ``io2`` volumes, you can achieve up to 256,000 IOPS on [instances built on the Nitro System](https://docs.aws.amazon.com/ec2/latest/instancetypes/ec2-nitro-instances.html). On other instances, you can achieve performance up to 32,000 IOPS.\n This parameter is supported for ``io1``, ``io2``, and ``gp3`` volumes only.", + "type": "integer" + }, + "KmsKeyId": { + "description": "Identifier (key ID, key alias, key ARN, or alias ARN) of the customer managed KMS key to use for EBS encryption.", + "type": "string" + }, + "SnapshotId": { + "description": "The ID of the snapshot.", + "type": "string" + }, + "Throughput": { + "description": "The throughput to provision for a ``gp3`` volume, with a maximum of 1,000 MiB/s.\n Valid Range: Minimum value of 125. Maximum value of 1000.", + "type": "integer" + }, + "VolumeSize": { + "description": "The size of the volume, in GiBs. You must specify either a snapshot ID or a volume size. The following are the supported volumes sizes for each volume type:\n + ``gp2`` and ``gp3``: 1 - 16,384 GiB\n + ``io1``: 4 - 16,384 GiB\n + ``io2``: 4 - 65,536 GiB\n + ``st1`` and ``sc1``: 125 - 16,384 GiB\n + ``standard``: 1 - 1024 GiB", + "type": "integer" + }, + "VolumeType": { + "description": "The volume type. For more information, see [Amazon EBS volume types](https://docs.aws.amazon.com/ebs/latest/userguide/ebs-volume-types.html) in the *Amazon EBS User Guide*.", + "type": "string" + } + }, + "type": "object" + }, + "ElasticGpuSpecification": { + "additionalProperties": false, + "description": "Amazon Elastic Graphics reached end of life on January 8, 2024.\n Specifies a specification for an Elastic GPU for an Amazon EC2 launch template.\n ``ElasticGpuSpecification`` is a property of [AWS::EC2::LaunchTemplate LaunchTemplateData](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata.html).", + "properties": { + "Type": { + "description": "The type of Elastic Graphics accelerator.", + "type": "string" + } + }, + "type": "object" + }, + "EnaSrdSpecification": { + "additionalProperties": false, + "description": "ENA Express uses AWS Scalable Reliable Datagram (SRD) technology to increase the maximum bandwidth used per stream and minimize tail latency of network traffic between EC2 instances. With ENA Express, you can communicate between two EC2 instances in the same subnet within the same account, or in different accounts. Both sending and receiving instances must have ENA Express enabled.\n To improve the reliability of network packet delivery, ENA Express reorders network packets on the receiving end by default. However, some UDP-based applications are designed to handle network packets that are out of order to reduce the overhead for packet delivery at the network layer. When ENA Express is enabled, you can specify whether UDP network traffic uses it.", + "properties": { + "EnaSrdEnabled": { + "description": "Indicates whether ENA Express is enabled for the network interface.", + "type": "boolean" + }, + "EnaSrdUdpSpecification": { + "$ref": "#/definitions/EnaSrdUdpSpecification", + "description": "Configures ENA Express for UDP network traffic." + } + }, + "type": "object" + }, + "EnaSrdUdpSpecification": { + "additionalProperties": false, + "description": "ENA Express is compatible with both TCP and UDP transport protocols. When it's enabled, TCP traffic automatically uses it. However, some UDP-based applications are designed to handle network packets that are out of order, without a need for retransmission, such as live video broadcasting or other near-real-time applications. For UDP traffic, you can specify whether to use ENA Express, based on your application environment needs.", + "properties": { + "EnaSrdUdpEnabled": { + "description": "Indicates whether UDP traffic to and from the instance uses ENA Express. To specify this setting, you must first enable ENA Express.", + "type": "boolean" + } + }, + "type": "object" + }, + "EnclaveOptions": { + "additionalProperties": false, + "description": "Indicates whether the instance is enabled for AWS Nitro Enclaves.", + "properties": { + "Enabled": { + "description": "If this parameter is set to ``true``, the instance is enabled for AWS Nitro Enclaves; otherwise, it is not enabled for AWS Nitro Enclaves.", + "type": "boolean" + } + }, + "type": "object" + }, + "HibernationOptions": { + "additionalProperties": false, + "description": "Specifies whether your instance is configured for hibernation. This parameter is valid only if the instance meets the [hibernation prerequisites](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Hibernate.html#hibernating-prerequisites). For more information, see [Hibernate Your Instance](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Hibernate.html) in the *Amazon EC2 User Guide*.\n ``HibernationOptions`` is a property of [AWS::EC2::LaunchTemplate LaunchTemplateData](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata.html).", + "properties": { + "Configured": { + "description": "If you set this parameter to ``true``, the instance is enabled for hibernation.\n Default: ``false``", + "type": "boolean" + } + }, + "type": "object" + }, + "IamInstanceProfile": { + "additionalProperties": false, + "description": "Specifies an IAM instance profile, which is a container for an IAM role for your instance. You can use an IAM role to distribute your AWS credentials to your instances.\n If you are creating the launch template for use with an ASlong group, you can specify either the name or the ARN of the instance profile, but not both.\n ``IamInstanceProfile`` is a property of [AWS::EC2::LaunchTemplate LaunchTemplateData](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata.html).", + "properties": { + "Arn": { + "description": "The Amazon Resource Name (ARN) of the instance profile.", + "type": "string" + }, + "Name": { + "description": "The name of the instance profile.", + "type": "string" + } + }, + "type": "object" + }, + "InstanceMarketOptions": { + "additionalProperties": false, + "description": "Specifies the market (purchasing) option for an instance.\n ``InstanceMarketOptions`` is a property of the [AWS::EC2::LaunchTemplate LaunchTemplateData](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata.html).", + "properties": { + "MarketType": { + "description": "The market type.", + "type": "string" + }, + "SpotOptions": { + "$ref": "#/definitions/SpotOptions", + "description": "The options for Spot Instances." + } + }, + "type": "object" + }, + "InstanceRequirements": { + "additionalProperties": false, + "description": "The attributes for the instance types. When you specify instance attributes, Amazon EC2 will identify instance types with these attributes.\n You must specify ``VCpuCount`` and ``MemoryMiB``. All other attributes are optional. Any unspecified optional attribute is set to its default.\n When you specify multiple attributes, you get instance types that satisfy all of the specified attributes. If you specify multiple values for an attribute, you get instance types that satisfy any of the specified values.\n To limit the list of instance types from which Amazon EC2 can identify matching instance types, you can use one of the following parameters, but not both in the same request:\n + ``AllowedInstanceTypes`` - The instance types to include in the list. All other instance types are ignored, even if they match your specified attributes.\n + ``ExcludedInstanceTypes`` - The instance types to exclude from the list, even if they match your specified attributes.\n \n If you specify ``InstanceRequirements``, you can't specify ``InstanceType``.\n Attribute-based instance type selection is only supported when using Auto Scaling groups, EC2 Fleet, and Spot Fleet to launch instances. If you plan to use the launch template in the [launch instance wizard](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-launch-instance-wizard.html), or with the [RunInstances](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_RunInstances.html) API or [AWS::EC2::Instance](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance.html) AWS CloudFormation resource, you can't specify ``InstanceRequirements``.\n For more information, see [Specify attributes for instance type selection for EC2 Fleet or Spot Fleet](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-fleet-attribute-based-instance-type-selection.html) and [Spot placement score](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/spot-placement-score.html) in the *Amazon EC2 User Guide*.", + "properties": { + "AcceleratorCount": { + "$ref": "#/definitions/AcceleratorCount", + "description": "The minimum and maximum number of accelerators (GPUs, FPGAs, or AWS Inferentia chips) on an instance.\n To exclude accelerator-enabled instance types, set ``Max`` to ``0``.\n Default: No minimum or maximum limits" + }, + "AcceleratorManufacturers": { + "description": "Indicates whether instance types must have accelerators by specific manufacturers.\n + For instance types with AWS devices, specify ``amazon-web-services``.\n + For instance types with AMD devices, specify ``amd``.\n + For instance types with Habana devices, specify ``habana``.\n + For instance types with NVIDIA devices, specify ``nvidia``.\n + For instance types with Xilinx devices, specify ``xilinx``.\n \n Default: Any manufacturer", + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "AcceleratorNames": { + "description": "The accelerators that must be on the instance type.\n + For instance types with NVIDIA A10G GPUs, specify ``a10g``.\n + For instance types with NVIDIA A100 GPUs, specify ``a100``.\n + For instance types with NVIDIA H100 GPUs, specify ``h100``.\n + For instance types with AWS Inferentia chips, specify ``inferentia``.\n + For instance types with NVIDIA GRID K520 GPUs, specify ``k520``.\n + For instance types with NVIDIA K80 GPUs, specify ``k80``.\n + For instance types with NVIDIA M60 GPUs, specify ``m60``.\n + For instance types with AMD Radeon Pro V520 GPUs, specify ``radeon-pro-v520``.\n + For instance types with NVIDIA T4 GPUs, specify ``t4``.\n + For instance types with NVIDIA T4G GPUs, specify ``t4g``.\n + For instance types with Xilinx VU9P FPGAs, specify ``vu9p``.\n + For instance types with NVIDIA V100 GPUs, specify ``v100``.\n \n Default: Any accelerator", + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "AcceleratorTotalMemoryMiB": { + "$ref": "#/definitions/AcceleratorTotalMemoryMiB", + "description": "The minimum and maximum amount of total accelerator memory, in MiB.\n Default: No minimum or maximum limits" + }, + "AcceleratorTypes": { + "description": "The accelerator types that must be on the instance type.\n + For instance types with FPGA accelerators, specify ``fpga``.\n + For instance types with GPU accelerators, specify ``gpu``.\n \n Default: Any accelerator type", + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "AllowedInstanceTypes": { + "description": "The instance types to apply your specified attributes against. All other instance types are ignored, even if they match your specified attributes.\n You can use strings with one or more wild cards, represented by an asterisk (``*``), to allow an instance type, size, or generation. The following are examples: ``m5.8xlarge``, ``c5*.*``, ``m5a.*``, ``r*``, ``*3*``.\n For example, if you specify ``c5*``,Amazon EC2 will allow the entire C5 instance family, which includes all C5a and C5n instance types. If you specify ``m5a.*``, Amazon EC2 will allow all the M5a instance types, but not the M5n instance types.\n If you specify ``AllowedInstanceTypes``, you can't specify ``ExcludedInstanceTypes``.\n Default: All instance types", + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "BareMetal": { + "description": "Indicates whether bare metal instance types must be included, excluded, or required.\n + To include bare metal instance types, specify ``included``.\n + To require only bare metal instance types, specify ``required``.\n + To exclude bare metal instance types, specify ``excluded``.\n \n Default: ``excluded``", + "type": "string" + }, + "BaselineEbsBandwidthMbps": { + "$ref": "#/definitions/BaselineEbsBandwidthMbps", + "description": "The minimum and maximum baseline bandwidth to Amazon EBS, in Mbps. For more information, see [Amazon EBS\u2013optimized instances](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-optimized.html) in the *Amazon EC2 User Guide*.\n Default: No minimum or maximum limits" + }, + "BaselinePerformanceFactors": { + "$ref": "#/definitions/BaselinePerformanceFactors", + "description": "The baseline performance to consider, using an instance family as a baseline reference. The instance family establishes the lowest acceptable level of performance. Amazon EC2 uses this baseline to guide instance type selection, but there is no guarantee that the selected instance types will always exceed the baseline for every application. Currently, this parameter only supports CPU performance as a baseline performance factor. For more information, see [Performance protection](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-fleet-attribute-based-instance-type-selection.html#ec2fleet-abis-performance-protection) in the *Amazon EC2 User Guide*." + }, + "BurstablePerformance": { + "description": "Indicates whether burstable performance T instance types are included, excluded, or required. For more information, see [Burstable performance instances](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/burstable-performance-instances.html).\n + To include burstable performance instance types, specify ``included``.\n + To require only burstable performance instance types, specify ``required``.\n + To exclude burstable performance instance types, specify ``excluded``.\n \n Default: ``excluded``", + "type": "string" + }, + "CpuManufacturers": { + "description": "The CPU manufacturers to include.\n + For instance types with Intel CPUs, specify ``intel``.\n + For instance types with AMD CPUs, specify ``amd``.\n + For instance types with AWS CPUs, specify ``amazon-web-services``.\n + For instance types with Apple CPUs, specify ``apple``.\n \n Don't confuse the CPU manufacturer with the CPU architecture. Instances will be launched with a compatible CPU architecture based on the Amazon Machine Image (AMI) that you specify in your launch template.\n Default: Any manufacturer", + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "ExcludedInstanceTypes": { + "description": "The instance types to exclude.\n You can use strings with one or more wild cards, represented by an asterisk (``*``), to exclude an instance type, size, or generation. The following are examples: ``m5.8xlarge``, ``c5*.*``, ``m5a.*``, ``r*``, ``*3*``.\n For example, if you specify ``c5*``,Amazon EC2 will exclude the entire C5 instance family, which includes all C5a and C5n instance types. If you specify ``m5a.*``, Amazon EC2 will exclude all the M5a instance types, but not the M5n instance types.\n If you specify ``ExcludedInstanceTypes``, you can't specify ``AllowedInstanceTypes``.\n Default: No excluded instance types", + "items": { + "description": "The user data to make available to the instance.", + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "InstanceGenerations": { + "description": "Indicates whether current or previous generation instance types are included. The current generation instance types are recommended for use. Current generation instance types are typically the latest two to three generations in each instance family. For more information, see [Instance types](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html) in the *Amazon EC2 User Guide*.\n For current generation instance types, specify ``current``.\n For previous generation instance types, specify ``previous``.\n Default: Current and previous generation instance types", + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "LocalStorage": { + "description": "Indicates whether instance types with instance store volumes are included, excluded, or required. For more information, [Amazon EC2 instance store](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/InstanceStorage.html) in the *Amazon EC2 User Guide*.\n + To include instance types with instance store volumes, specify ``included``.\n + To require only instance types with instance store volumes, specify ``required``.\n + To exclude instance types with instance store volumes, specify ``excluded``.\n \n Default: ``included``", + "type": "string" + }, + "LocalStorageTypes": { + "description": "The type of local storage that is required.\n + For instance types with hard disk drive (HDD) storage, specify ``hdd``.\n + For instance types with solid state drive (SSD) storage, specify ``ssd``.\n \n Default: ``hdd`` and ``ssd``", + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "MaxSpotPriceAsPercentageOfOptimalOnDemandPrice": { + "description": "[Price protection] The price protection threshold for Spot Instances, as a percentage of an identified On-Demand price. The identified On-Demand price is the price of the lowest priced current generation C, M, or R instance type with your specified attributes. If no current generation C, M, or R instance type matches your attributes, then the identified price is from the lowest priced current generation instance types, and failing that, from the lowest priced previous generation instance types that match your attributes. When Amazon EC2 selects instance types with your attributes, it will exclude instance types whose price exceeds your specified threshold.\n The parameter accepts an integer, which Amazon EC2 interprets as a percentage.\n If you set ``TargetCapacityUnitType`` to ``vcpu`` or ``memory-mib``, the price protection threshold is based on the per vCPU or per memory price instead of the per instance price.\n Only one of ``SpotMaxPricePercentageOverLowestPrice`` or ``MaxSpotPriceAsPercentageOfOptimalOnDemandPrice`` can be specified. If you don't specify either, Amazon EC2 will automatically apply optimal price protection to consistently select from a wide range of instance types. To indicate no price protection threshold for Spot Instances, meaning you want to consider all instance types that match your attributes, include one of these parameters and specify a high value, such as ``999999``.", + "type": "integer" + }, + "MemoryGiBPerVCpu": { + "$ref": "#/definitions/MemoryGiBPerVCpu", + "description": "The minimum and maximum amount of memory per vCPU, in GiB.\n Default: No minimum or maximum limits" + }, + "MemoryMiB": { + "$ref": "#/definitions/MemoryMiB", + "description": "The minimum and maximum amount of memory, in MiB." + }, + "NetworkBandwidthGbps": { + "$ref": "#/definitions/NetworkBandwidthGbps", + "description": "The minimum and maximum amount of network bandwidth, in gigabits per second (Gbps).\n Default: No minimum or maximum limits" + }, + "NetworkInterfaceCount": { + "$ref": "#/definitions/NetworkInterfaceCount", + "description": "The minimum and maximum number of network interfaces.\n Default: No minimum or maximum limits" + }, + "OnDemandMaxPricePercentageOverLowestPrice": { + "description": "[Price protection] The price protection threshold for On-Demand Instances, as a percentage higher than an identified On-Demand price. The identified On-Demand price is the price of the lowest priced current generation C, M, or R instance type with your specified attributes. When Amazon EC2 selects instance types with your attributes, it will exclude instance types whose price exceeds your specified threshold.\n The parameter accepts an integer, which Amazon EC2 interprets as a percentage.\n To turn off price protection, specify a high value, such as ``999999``.\n This parameter is not supported for [GetSpotPlacementScores](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_GetSpotPlacementScores.html) and [GetInstanceTypesFromInstanceRequirements](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_GetInstanceTypesFromInstanceRequirements.html).\n If you set ``TargetCapacityUnitType`` to ``vcpu`` or ``memory-mib``, the price protection threshold is applied based on the per-vCPU or per-memory price instead of the per-instance price.\n Default: ``20``", + "type": "integer" + }, + "RequireHibernateSupport": { + "description": "Indicates whether instance types must support hibernation for On-Demand Instances.\n This parameter is not supported for [GetSpotPlacementScores](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_GetSpotPlacementScores.html).\n Default: ``false``", + "type": "boolean" + }, + "SpotMaxPricePercentageOverLowestPrice": { + "description": "[Price protection] The price protection threshold for Spot Instances, as a percentage higher than an identified Spot price. The identified Spot price is the Spot price of the lowest priced current generation C, M, or R instance type with your specified attributes. If no current generation C, M, or R instance type matches your attributes, then the identified Spot price is from the lowest priced current generation instance types, and failing that, from the lowest priced previous generation instance types that match your attributes. When Amazon EC2 selects instance types with your attributes, it will exclude instance types whose Spot price exceeds your specified threshold.\n The parameter accepts an integer, which Amazon EC2 interprets as a percentage.\n If you set ``TargetCapacityUnitType`` to ``vcpu`` or ``memory-mib``, the price protection threshold is applied based on the per-vCPU or per-memory price instead of the per-instance price.\n This parameter is not supported for [GetSpotPlacementScores](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_GetSpotPlacementScores.html) and [GetInstanceTypesFromInstanceRequirements](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_GetInstanceTypesFromInstanceRequirements.html).\n Only one of ``SpotMaxPricePercentageOverLowestPrice`` or ``MaxSpotPriceAsPercentageOfOptimalOnDemandPrice`` can be specified. If you don't specify either, Amazon EC2 will automatically apply optimal price protection to consistently select from a wide range of instance types. To indicate no price protection threshold for Spot Instances, meaning you want to consider all instance types that match your attributes, include one of these parameters and specify a high value, such as ``999999``.\n Default: ``100``", + "type": "integer" + }, + "TotalLocalStorageGB": { + "$ref": "#/definitions/TotalLocalStorageGB", + "description": "The minimum and maximum amount of total local storage, in GB.\n Default: No minimum or maximum limits" + }, + "VCpuCount": { + "$ref": "#/definitions/VCpuCount", + "description": "The minimum and maximum number of vCPUs." + } + }, + "type": "object" + }, + "Ipv4PrefixSpecification": { + "additionalProperties": false, + "description": "Specifies an IPv4 prefix for a network interface.\n ``Ipv4PrefixSpecification`` is a property of [AWS::EC2::LaunchTemplate NetworkInterface](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-networkinterface.html).", + "properties": { + "Ipv4Prefix": { + "description": "The IPv4 prefix. For information, see [Assigning prefixes to network interfaces](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-prefix-eni.html) in the *Amazon EC2 User Guide*.", + "type": "string" + } + }, + "type": "object" + }, + "Ipv6Add": { + "additionalProperties": false, + "description": "Specifies an IPv6 address in an Amazon EC2 launch template.\n ``Ipv6Add`` is a property of [AWS::EC2::LaunchTemplate NetworkInterface](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-networkinterface.html).", + "properties": { + "Ipv6Address": { + "description": "One or more specific IPv6 addresses from the IPv6 CIDR block range of your subnet. You can't use this option if you're specifying a number of IPv6 addresses.", + "type": "string" + } + }, + "type": "object" + }, + "Ipv6PrefixSpecification": { + "additionalProperties": false, + "description": "Specifies an IPv6 prefix for a network interface.\n ``Ipv6PrefixSpecification`` is a property of [AWS::EC2::LaunchTemplate NetworkInterface](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-networkinterface.html).", + "properties": { + "Ipv6Prefix": { + "description": "The IPv6 prefix.", + "type": "string" + } + }, + "type": "object" + }, + "LaunchTemplateData": { + "additionalProperties": false, + "description": "The information to include in the launch template.\n You must specify at least one parameter for the launch template data.", + "properties": { + "BlockDeviceMappings": { + "description": "The block device mapping.", + "items": { + "$ref": "#/definitions/BlockDeviceMapping" + }, + "type": "array", + "uniqueItems": false + }, + "CapacityReservationSpecification": { + "$ref": "#/definitions/CapacityReservationSpecification", + "description": "The Capacity Reservation targeting option. If you do not specify this parameter, the instance's Capacity Reservation preference defaults to ``open``, which enables it to run in any open Capacity Reservation that has matching attributes (instance type, platform, Availability Zone)." + }, + "CpuOptions": { + "$ref": "#/definitions/CpuOptions", + "description": "The CPU options for the instance. For more information, see [CPU options for Amazon EC2 instances](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-optimize-cpu.html) in the *Amazon EC2 User Guide*." + }, + "CreditSpecification": { + "$ref": "#/definitions/CreditSpecification", + "description": "The credit option for CPU usage of the instance. Valid only for T instances." + }, + "DisableApiStop": { + "description": "Indicates whether to enable the instance for stop protection. For more information, see [Enable stop protection for your EC2 instances](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-stop-protection.html) in the *Amazon EC2 User Guide*.", + "type": "boolean" + }, + "DisableApiTermination": { + "description": "Indicates whether termination protection is enabled for the instance. The default is ``false``, which means that you can terminate the instance using the Amazon EC2 console, command line tools, or API. You can enable termination protection when you launch an instance, while the instance is running, or while the instance is stopped.", + "type": "boolean" + }, + "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.", + "type": "boolean" + }, + "ElasticGpuSpecifications": { + "description": "Deprecated.\n Amazon Elastic Graphics reached end of life on January 8, 2024.", + "items": { + "$ref": "#/definitions/ElasticGpuSpecification" + }, + "type": "array", + "uniqueItems": false + }, + "ElasticInferenceAccelerators": { + "description": "Amazon Elastic Inference is no longer available.\n 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.\n You cannot specify accelerators from different generations in the same request.", + "items": { + "$ref": "#/definitions/LaunchTemplateElasticInferenceAccelerator" + }, + "type": "array", + "uniqueItems": false + }, + "EnclaveOptions": { + "$ref": "#/definitions/EnclaveOptions", + "description": "Indicates whether the instance is enabled for AWS Nitro Enclaves. For more information, see [What is Nitro Enclaves?](https://docs.aws.amazon.com/enclaves/latest/user/nitro-enclave.html) in the *Nitro Enclaves User Guide*.\n You can't enable AWS Nitro Enclaves and hibernation on the same instance." + }, + "HibernationOptions": { + "$ref": "#/definitions/HibernationOptions", + "description": "Indicates whether an instance is enabled for hibernation. This parameter is valid only if the instance meets the [hibernation prerequisites](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/hibernating-prerequisites.html). For more information, see [Hibernate your Amazon EC2 instance](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Hibernate.html) in the *Amazon EC2 User Guide*." + }, + "IamInstanceProfile": { + "$ref": "#/definitions/IamInstanceProfile", + "description": "The name or Amazon Resource Name (ARN) of an IAM instance profile." + }, + "ImageId": { + "description": "The ID of the AMI. Alternatively, you can specify a Systems Manager parameter, which will resolve to an AMI ID on launch.\n Valid formats:\n + ``ami-0ac394d6a3example`` \n + ``resolve:ssm:parameter-name`` \n + ``resolve:ssm:parameter-name:version-number`` \n + ``resolve:ssm:parameter-name:label`` \n \n For more information, see [Use a Systems Manager parameter to find an AMI](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/finding-an-ami.html#using-systems-manager-parameter-to-find-AMI) in the *Amazon Elastic Compute Cloud User Guide*.", + "type": "string" + }, + "InstanceInitiatedShutdownBehavior": { + "description": "Indicates whether an instance stops or terminates when you initiate shutdown from the instance (using the operating system command for system shutdown).\n Default: ``stop``", + "type": "string" + }, + "InstanceMarketOptions": { + "$ref": "#/definitions/InstanceMarketOptions", + "description": "The market (purchasing) option for the instances." + }, + "InstanceRequirements": { + "$ref": "#/definitions/InstanceRequirements", + "description": "The attributes for the instance types. When you specify instance attributes, Amazon EC2 will identify instance types with these attributes.\n You must specify ``VCpuCount`` and ``MemoryMiB``. All other attributes are optional. Any unspecified optional attribute is set to its default.\n When you specify multiple attributes, you get instance types that satisfy all of the specified attributes. If you specify multiple values for an attribute, you get instance types that satisfy any of the specified values.\n To limit the list of instance types from which Amazon EC2 can identify matching instance types, you can use one of the following parameters, but not both in the same request:\n + ``AllowedInstanceTypes`` - The instance types to include in the list. All other instance types are ignored, even if they match your specified attributes.\n + ``ExcludedInstanceTypes`` - The instance types to exclude from the list, even if they match your specified attributes.\n \n If you specify ``InstanceRequirements``, you can't specify ``InstanceType``.\n Attribute-based instance type selection is only supported when using Auto Scaling groups, EC2 Fleet, and Spot Fleet to launch instances. If you plan to use the launch template in the [launch instance wizard](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-launch-instance-wizard.html), or with the [RunInstances](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_RunInstances.html) API or [AWS::EC2::Instance](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance.html) AWS CloudFormation resource, you can't specify ``InstanceRequirements``.\n For more information, see [Specify attributes for instance type selection for EC2 Fleet or Spot Fleet](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-fleet-attribute-based-instance-type-selection.html) and [Spot placement score](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/spot-placement-score.html) in the *Amazon EC2 User Guide*." + }, + "InstanceType": { + "description": "The instance type. For more information, see [Amazon EC2 instance types](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html) in the *Amazon EC2 User Guide*.\n If you specify ``InstanceType``, you can't specify ``InstanceRequirements``.", + "type": "string" + }, + "KernelId": { + "description": "The ID of the kernel.\n We recommend that you use PV-GRUB instead of kernels and RAM disks. For more information, see [User Provided Kernels](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/UserProvidedkernels.html) in the *Amazon EC2 User Guide*.", + "type": "string" + }, + "KeyName": { + "description": "The name of the key pair. You can create a key pair using [CreateKeyPair](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CreateKeyPair.html) or [ImportKeyPair](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_ImportKeyPair.html).\n If you do not specify a key pair, you can't connect to the instance unless you choose an AMI that is configured to allow users another way to log in.", + "type": "string" + }, + "LicenseSpecifications": { + "description": "The license configurations.", + "items": { + "$ref": "#/definitions/LicenseSpecification" + }, + "type": "array", + "uniqueItems": false + }, + "MaintenanceOptions": { + "$ref": "#/definitions/MaintenanceOptions", + "description": "The maintenance options of your instance." + }, + "MetadataOptions": { + "$ref": "#/definitions/MetadataOptions", + "description": "The metadata options for the instance. For more information, see [Configure the Instance Metadata Service options](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/configuring-instance-metadata-options.html) in the *Amazon EC2 User Guide*." + }, + "Monitoring": { + "$ref": "#/definitions/Monitoring", + "description": "The monitoring for the instance." + }, + "NetworkInterfaces": { + "description": "The network interfaces for the instance.", + "items": { + "$ref": "#/definitions/NetworkInterface" + }, + "type": "array", + "uniqueItems": false + }, + "NetworkPerformanceOptions": { + "$ref": "#/definitions/NetworkPerformanceOptions", + "description": "The settings for the network performance options for the instance. For more information, see [EC2 instance bandwidth weighting configuration](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/configure-bandwidth-weighting.html)." + }, + "Placement": { + "$ref": "#/definitions/Placement", + "description": "The placement for the instance." + }, + "PrivateDnsNameOptions": { + "$ref": "#/definitions/PrivateDnsNameOptions", + "description": "The hostname type for EC2 instances launched into this subnet and how DNS A and AAAA record queries should be handled. For more information, see [Amazon EC2 instance hostname types](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-naming.html) in the *User Guide*." + }, + "RamDiskId": { + "description": "The ID of the RAM disk.\n We recommend that you use PV-GRUB instead of kernels and RAM disks. For more information, see [User provided kernels](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/UserProvidedkernels.html) in the *Amazon EC2 User Guide*.", + "type": "string" + }, + "SecurityGroupIds": { + "description": "The IDs of the security groups. You can specify the IDs of existing security groups and references to resources created by the stack template.\n If you specify a network interface, you must specify any security groups as part of the network interface instead.", + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "SecurityGroups": { + "description": "The names of the security groups. For a nondefault VPC, you must use security group IDs instead.\n If you specify a network interface, you must specify any security groups as part of the network interface instead of using this parameter.", + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "TagSpecifications": { + "description": "The tags to apply to resources that are created during instance launch.\n To tag the launch template itself, use [TagSpecifications](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-launchtemplate.html#cfn-ec2-launchtemplate-tagspecifications).", + "items": { + "$ref": "#/definitions/TagSpecification" + }, + "type": "array", + "uniqueItems": false + }, + "UserData": { + "description": "The user data to make available to the instance. You must provide base64-encoded text. User data is limited to 16 KB. For more information, see [Run commands when you launch an EC2 instance with user data input](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/user-data.html) in the *Amazon EC2 User Guide*.\n If you are creating the launch template for use with BATCH, the user data must be provided in the [MIME multi-part archive format](https://docs.aws.amazon.com/https://cloudinit.readthedocs.io/en/latest/topics/format.html#mime-multi-part-archive). For more information, see [Amazon EC2 user data in launch templates](https://docs.aws.amazon.com/batch/latest/userguide/launch-templates.html#lt-user-data) in the *User Guide*.", + "type": "string" + } + }, + "type": "object" + }, + "LaunchTemplateElasticInferenceAccelerator": { + "additionalProperties": false, + "description": "Amazon Elastic Inference is no longer available.\n Specifies an elastic inference accelerator.\n ``LaunchTemplateElasticInferenceAccelerator`` is a property of [AWS::EC2::LaunchTemplate LaunchTemplateData](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata.html).", + "properties": { + "Count": { + "description": "The number of elastic inference accelerators to attach to the instance. \n Default: 1", + "type": "integer" + }, + "Type": { + "description": "The type of elastic inference accelerator. The possible values are eia1.medium, eia1.large, and eia1.xlarge.", + "type": "string" + } + }, + "type": "object" + }, + "LaunchTemplateTagSpecification": { + "additionalProperties": false, + "description": "Specifies the tags to apply to the launch template during creation.\n To specify the tags for the resources that are created during instance launch, use [AWS::EC2::LaunchTemplate TagSpecification](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-tagspecification.html).\n ``LaunchTemplateTagSpecification`` is a property of [AWS::EC2::LaunchTemplate](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-launchtemplate.html).", + "properties": { + "ResourceType": { + "description": "The type of resource. To tag a launch template, ``ResourceType`` must be ``launch-template``.", + "type": "string" + }, + "Tags": { + "description": "The tags for the resource.", + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + }, + "LicenseSpecification": { + "additionalProperties": false, + "description": "Specifies a license configuration for an instance.\n ``LicenseSpecification`` is a property of [AWS::EC2::LaunchTemplate LaunchTemplateData](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata.html).", + "properties": { + "LicenseConfigurationArn": { + "description": "The Amazon Resource Name (ARN) of the license configuration.", + "type": "string" + } + }, + "type": "object" + }, + "MaintenanceOptions": { + "additionalProperties": false, + "description": "The maintenance options of your instance.", + "properties": { + "AutoRecovery": { + "description": "Disables the automatic recovery behavior of your instance or sets it to default.", + "type": "string" + } + }, + "type": "object" + }, + "MemoryGiBPerVCpu": { + "additionalProperties": false, + "description": "The minimum and maximum amount of memory per vCPU, in GiB.", + "properties": { + "Max": { + "description": "The maximum amount of memory per vCPU, in GiB. To specify no maximum limit, omit this parameter.", + "type": "number" + }, + "Min": { + "description": "The minimum amount of memory per vCPU, in GiB. To specify no minimum limit, omit this parameter.", + "type": "number" + } + }, + "type": "object" + }, + "MemoryMiB": { + "additionalProperties": false, + "description": "The minimum and maximum amount of memory, in MiB.", + "properties": { + "Max": { + "description": "The maximum amount of memory, in MiB. To specify no maximum limit, omit this parameter.", + "type": "integer" + }, + "Min": { + "description": "The minimum amount of memory, in MiB. To specify no minimum limit, specify ``0``.", + "type": "integer" + } + }, + "type": "object" + }, + "MetadataOptions": { + "additionalProperties": false, + "description": "The metadata options for the instance. For more information, see [Instance metadata and user data](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-metadata.html) in the *Amazon EC2 User Guide*.\n ``MetadataOptions`` is a property of [AWS::EC2::LaunchTemplate LaunchTemplateData](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata.html).", + "properties": { + "HttpEndpoint": { + "description": "Enables or disables the HTTP metadata endpoint on your instances. If the parameter is not specified, the default state is ``enabled``.\n If you specify a value of ``disabled``, you will not be able to access your instance metadata.", + "type": "string" + }, + "HttpProtocolIpv6": { + "description": "Enables or disables the IPv6 endpoint for the instance metadata service.\n Default: ``disabled``", + "type": "string" + }, + "HttpPutResponseHopLimit": { + "description": "The desired HTTP PUT response hop limit for instance metadata requests. The larger the number, the further instance metadata requests can travel.\n Default: ``1`` \n Possible values: Integers from 1 to 64", + "type": "integer" + }, + "HttpTokens": { + "description": "Indicates whether IMDSv2 is required.\n + ``optional`` - IMDSv2 is optional. You can choose whether to send a session token in your instance metadata retrieval requests. If you retrieve IAM role credentials without a session token, you receive the IMDSv1 role credentials. If you retrieve IAM role credentials using a valid session token, you receive the IMDSv2 role credentials.\n + ``required`` - IMDSv2 is required. You must send a session token in your instance metadata retrieval requests. With this option, retrieving the IAM role credentials always returns IMDSv2 credentials; IMDSv1 credentials are not available.\n \n Default: If the value of ``ImdsSupport`` for the Amazon Machine Image (AMI) for your instance is ``v2.0``, the default is ``required``.", + "type": "string" + }, + "InstanceMetadataTags": { + "description": "Set to ``enabled`` to allow access to instance tags from the instance metadata. Set to ``disabled`` to turn off access to instance tags from the instance metadata. For more information, see [View tags for your EC2 instances using instance metadata](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/work-with-tags-in-IMDS.html).\n Default: ``disabled``", + "type": "string" + } + }, + "type": "object" + }, + "Monitoring": { + "additionalProperties": false, + "description": "Specifies whether detailed monitoring is enabled for an instance. For more information about detailed monitoring, see [Enable or turn off detailed monitoring for your instances](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-cloudwatch-new.html) in the *User Guide*.\n ``Monitoring`` is a property of [AWS::EC2::LaunchTemplate LaunchTemplateData](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata.html).", + "properties": { + "Enabled": { + "description": "Specify ``true`` to enable detailed monitoring. Otherwise, basic monitoring is enabled.", + "type": "boolean" + } + }, + "type": "object" + }, + "NetworkBandwidthGbps": { + "additionalProperties": false, + "description": "The minimum and maximum amount of network bandwidth, in gigabits per second (Gbps).\n Setting the minimum bandwidth does not guarantee that your instance will achieve the minimum bandwidth. Amazon EC2 will identify instance types that support the specified minimum bandwidth, but the actual bandwidth of your instance might go below the specified minimum at times. For more information, see [Available instance bandwidth](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-network-bandwidth.html#available-instance-bandwidth) in the *Amazon EC2 User Guide*.", + "properties": { + "Max": { + "description": "The maximum amount of network bandwidth, in Gbps. To specify no maximum limit, omit this parameter.", + "type": "number" + }, + "Min": { + "description": "The minimum amount of network bandwidth, in Gbps. If this parameter is not specified, there is no minimum limit.", + "type": "number" + } + }, + "type": "object" + }, + "NetworkInterface": { + "additionalProperties": false, + "description": "Specifies the parameters for a network interface.\n ``NetworkInterface`` is a property of [AWS::EC2::LaunchTemplate LaunchTemplateData](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata.html).", + "properties": { + "AssociateCarrierIpAddress": { + "description": "Associates a Carrier IP address with eth0 for a new network interface.\n Use this option when you launch an instance in a Wavelength Zone and want to associate a Carrier IP address with the network interface. For more information about Carrier IP addresses, see [Carrier IP addresses](https://docs.aws.amazon.com/wavelength/latest/developerguide/how-wavelengths-work.html#provider-owned-ip) in the *Developer Guide*.", + "type": "boolean" + }, + "AssociatePublicIpAddress": { + "description": "Associates a public IPv4 address with eth0 for a new network interface.\n AWS charges for all public IPv4 addresses, including public IPv4 addresses associated with running instances and Elastic IP addresses. For more information, see the *Public IPv4 Address* tab on the [Amazon VPC pricing page](https://docs.aws.amazon.com/vpc/pricing/).", + "type": "boolean" + }, + "ConnectionTrackingSpecification": { + "$ref": "#/definitions/ConnectionTrackingSpecification", + "description": "A connection tracking specification for the network interface." + }, + "DeleteOnTermination": { + "description": "Indicates whether the network interface is deleted when the instance is terminated.", + "type": "boolean" + }, + "Description": { + "description": "A description for the network interface.", + "type": "string" + }, + "DeviceIndex": { + "description": "The device index for the network interface attachment. The primary network interface has a device index of 0. If the network interface is of type ``interface``, you must specify a device index.\n If you create a launch template that includes secondary network interfaces but no primary network interface, and you specify it using the ``LaunchTemplate`` property of ``AWS::EC2::Instance``, then you must include a primary network interface using the ``NetworkInterfaces`` property of ``AWS::EC2::Instance``.", + "type": "integer" + }, + "EnaSrdSpecification": { + "$ref": "#/definitions/EnaSrdSpecification", + "description": "The ENA Express configuration for the network interface." + }, + "Groups": { + "description": "The IDs of one or more security groups.", + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "InterfaceType": { + "description": "The type of network interface. To create an Elastic Fabric Adapter (EFA), specify ``efa`` or ``efa``. For more information, see [Elastic Fabric Adapter for AI/ML and HPC workloads on Amazon EC2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/efa.html) in the *Amazon EC2 User Guide*.\n If you are not creating an EFA, specify ``interface`` or omit this parameter.\n If you specify ``efa-only``, do not assign any IP addresses to the network interface. EFA-only network interfaces do not support IP addresses.\n Valid values: ``interface`` | ``efa`` | ``efa-only``", + "type": "string" + }, + "Ipv4PrefixCount": { + "description": "The number of IPv4 prefixes to be automatically assigned to the network interface. You cannot use this option if you use the ``Ipv4Prefix`` option.", + "type": "integer" + }, + "Ipv4Prefixes": { + "description": "One or more IPv4 prefixes to be assigned to the network interface. You cannot use this option if you use the ``Ipv4PrefixCount`` option.", + "items": { + "$ref": "#/definitions/Ipv4PrefixSpecification" + }, + "type": "array", + "uniqueItems": false + }, + "Ipv6AddressCount": { + "description": "The number of IPv6 addresses to assign to a network interface. Amazon EC2 automatically selects the IPv6 addresses from the subnet range. You can't use this option if specifying specific IPv6 addresses.", + "type": "integer" + }, + "Ipv6Addresses": { + "description": "One or more specific IPv6 addresses from the IPv6 CIDR block range of your subnet. You can't use this option if you're specifying a number of IPv6 addresses.", + "items": { + "$ref": "#/definitions/Ipv6Add" + }, + "type": "array", + "uniqueItems": false + }, + "Ipv6PrefixCount": { + "description": "The number of IPv6 prefixes to be automatically assigned to the network interface. You cannot use this option if you use the ``Ipv6Prefix`` option.", + "type": "integer" + }, + "Ipv6Prefixes": { + "description": "One or more IPv6 prefixes to be assigned to the network interface. You cannot use this option if you use the ``Ipv6PrefixCount`` option.", + "items": { + "$ref": "#/definitions/Ipv6PrefixSpecification" + }, + "type": "array", + "uniqueItems": false + }, + "NetworkCardIndex": { + "description": "The index of the network card. Some instance types support multiple network cards. The primary network interface must be assigned to network card index 0. The default is network card index 0.", + "type": "integer" + }, + "NetworkInterfaceId": { + "description": "The ID of the network interface.", + "type": "string" + }, + "PrimaryIpv6": { + "description": "The primary IPv6 address of the network interface. When you enable an IPv6 GUA address to be a primary IPv6, the first IPv6 GUA will be made the primary IPv6 address until the instance is terminated or the network interface is detached. For more information about primary IPv6 addresses, see [RunInstances](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_RunInstances.html).", + "type": "boolean" + }, + "PrivateIpAddress": { + "description": "The primary private IPv4 address of the network interface.", + "type": "string" + }, + "PrivateIpAddresses": { + "description": "One or more private IPv4 addresses.", + "items": { + "$ref": "#/definitions/PrivateIpAdd" + }, + "type": "array", + "uniqueItems": false + }, + "SecondaryPrivateIpAddressCount": { + "description": "The number of secondary private IPv4 addresses to assign to a network interface.", + "type": "integer" + }, + "SubnetId": { + "description": "The ID of the subnet for the network interface.", + "type": "string" + } + }, + "type": "object" + }, + "NetworkInterfaceCount": { + "additionalProperties": false, + "description": "The minimum and maximum number of network interfaces.", + "properties": { + "Max": { + "description": "The maximum number of network interfaces. To specify no maximum limit, omit this parameter.", + "type": "integer" + }, + "Min": { + "description": "The minimum number of network interfaces. To specify no minimum limit, omit this parameter.", + "type": "integer" + } + }, + "type": "object" + }, + "NetworkPerformanceOptions": { + "additionalProperties": false, + "description": "Contains settings for the network performance options for the instance.", + "properties": { + "BandwidthWeighting": { + "description": "Specify the bandwidth weighting option to boost the associated type of baseline bandwidth, as follows:\n + default This option uses the standard bandwidth configuration for your instance type. + vpc-1 This option boosts your networking baseline bandwidth and reduces your EBS baseline bandwidth. + ebs-1 This option boosts your EBS baseline bandwidth and reduces your networking baseline bandwidth.", + "type": "string" + } + }, + "type": "object" + }, + "Placement": { + "additionalProperties": false, + "description": "Specifies the placement of an instance.\n ``Placement`` is a property of [AWS::EC2::LaunchTemplate LaunchTemplateData](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata.html).", + "properties": { + "Affinity": { + "description": "The affinity setting for an instance on a Dedicated Host.", + "type": "string" + }, + "AvailabilityZone": { + "description": "The Availability Zone for the instance.", + "type": "string" + }, + "GroupId": { + "description": "The Group Id of a placement group. You must specify the Placement Group *Group Id* to launch an instance in a shared placement group.", + "type": "string" + }, + "GroupName": { + "description": "The name of the placement group for the instance.", + "type": "string" + }, + "HostId": { + "description": "The ID of the Dedicated Host for the instance.", + "type": "string" + }, + "HostResourceGroupArn": { + "description": "The ARN of the host resource group in which to launch the instances. If you specify a host resource group ARN, omit the *Tenancy* parameter or set it to ``host``.", + "type": "string" + }, + "PartitionNumber": { + "description": "The number of the partition the instance should launch in. Valid only if the placement group strategy is set to ``partition``.", + "type": "integer" + }, + "SpreadDomain": { + "description": "Reserved for future use.", + "type": "string" + }, + "Tenancy": { + "description": "The tenancy of the instance. An instance with a tenancy of dedicated runs on single-tenant hardware.", + "type": "string" + } + }, + "type": "object" + }, + "PrivateDnsNameOptions": { + "additionalProperties": false, + "description": "The hostname type for EC2 instances launched into this subnet and how DNS A and AAAA record queries should be handled. For more information, see [Amazon EC2 instance hostname types](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-naming.html) in the *User Guide*.", + "properties": { + "EnableResourceNameDnsAAAARecord": { + "description": "Indicates whether to respond to DNS queries for instance hostnames with DNS AAAA records.", + "type": "boolean" + }, + "EnableResourceNameDnsARecord": { + "description": "Indicates whether to respond to DNS queries for instance hostnames with DNS A records.", + "type": "boolean" + }, + "HostnameType": { + "description": "The type of hostname for EC2 instances. For IPv4 only subnets, an instance DNS name must be based on the instance IPv4 address. For IPv6 only subnets, an instance DNS name must be based on the instance ID. For dual-stack subnets, you can specify whether DNS names use the instance IPv4 address or the instance ID. For more information, see [Amazon EC2 instance hostname types](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-naming.html) in the *User Guide*.", + "type": "string" + } + }, + "type": "object" + }, + "PrivateIpAdd": { + "additionalProperties": false, + "description": "Specifies a secondary private IPv4 address for a network interface.\n ``PrivateIpAdd`` is a property of [AWS::EC2::LaunchTemplate NetworkInterface](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-networkinterface.html).", + "properties": { + "Primary": { + "description": "Indicates whether the private IPv4 address is the primary private IPv4 address. Only one IPv4 address can be designated as primary.", + "type": "boolean" + }, + "PrivateIpAddress": { + "description": "The private IPv4 address.", + "type": "string" + } + }, + "type": "object" + }, + "Reference": { + "additionalProperties": false, + "description": "Specifies an instance family to use as the baseline reference for CPU performance.", + "properties": { + "InstanceFamily": { + "description": "The instance family to use as a baseline reference.\n Ensure that you specify the correct value for the instance family. The instance family is everything before the period (``.``) in the instance type name. For example, in the instance type ``c6i.large``, the instance family is ``c6i``, not ``c6``. For more information, see [Amazon EC2 instance type naming conventions](https://docs.aws.amazon.com/ec2/latest/instancetypes/instance-type-names.html) in *Amazon EC2 Instance Types*.\n The following instance families are *not supported* for performance protection:\n + ``c1`` \n + ``g3`` | ``g3s`` \n + ``hpc7g`` \n + ``m1`` | ``m2`` \n + ``mac1`` | ``mac2`` | ``mac2-m1ultra`` | ``mac2-m2`` | ``mac2-m2pro`` \n + ``p3dn`` | ``p4d`` | ``p5`` \n + ``t1`` \n + ``u-12tb1`` | ``u-18tb1`` | ``u-24tb1`` | ``u-3tb1`` | ``u-6tb1`` | ``u-9tb1`` | ``u7i-12tb`` | ``u7in-16tb`` | ``u7in-24tb`` | ``u7in-32tb`` \n \n If you enable performance protection by specifying a supported instance family, the returned instance types will exclude the above unsupported instance families.", + "type": "string" + } + }, + "type": "object" + }, + "References": { + "description": "A list of references to be used as baseline for the CPU performance. Currently, you can only specify a single reference across different instance type variations such as CPU manufacturers, architectures etc.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/Reference" + }, + "type": "array", + "uniqueItems": true + }, + "SpotOptions": { + "additionalProperties": false, + "description": "Specifies options for Spot Instances.\n ``SpotOptions`` is a property of [AWS::EC2::LaunchTemplate InstanceMarketOptions](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata-instancemarketoptions.html).", + "properties": { + "BlockDurationMinutes": { + "description": "Deprecated.", + "type": "integer" + }, + "InstanceInterruptionBehavior": { + "description": "The behavior when a Spot Instance is interrupted. The default is ``terminate``.", + "type": "string" + }, + "MaxPrice": { + "description": "The maximum hourly price you're willing to pay for a Spot Instance. We do not recommend using this parameter because it can lead to increased interruptions. If you do not specify this parameter, you will pay the current Spot price. If you do specify this parameter, it must be more than USD $0.001. Specifying a value below USD $0.001 will result in an ``InvalidParameterValue`` error message when the launch template is used to launch an instance.\n If you specify a maximum price, your Spot Instances will be interrupted more frequently than if you do not specify this parameter.", + "type": "string" + }, + "SpotInstanceType": { + "description": "The Spot Instance request type.\n If you are using Spot Instances with an Auto Scaling group, use ``one-time`` requests, as the ASlong service handles requesting new Spot Instances whenever the group is below its desired capacity.", + "type": "string" + }, + "ValidUntil": { + "description": "The end date of the request, in UTC format (*YYYY-MM-DD*T*HH:MM:SS*Z). Supported only for persistent requests.\n + For a persistent request, the request remains active until the ``ValidUntil`` date and time is reached. Otherwise, the request remains active until you cancel it.\n + For a one-time request, ``ValidUntil`` is not supported. The request remains active until all instances launch or you cancel the request.\n \n Default: 7 days from the current date", + "type": "string" + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "description": "Specifies a tag. For more information, see [Resource tags](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-resource-tags.html).", + "properties": { + "Key": { + "description": "The tag key.", + "type": "string" + }, + "Value": { + "description": "The tag value.", + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + }, + "TagSpecification": { + "additionalProperties": false, + "description": "Specifies the tags to apply to resources that are created during instance launch.\n ``TagSpecification`` is a property type of [TagSpecifications](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata.html#cfn-ec2-launchtemplate-launchtemplatedata-tagspecifications). [TagSpecifications](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata.html#cfn-ec2-launchtemplate-launchtemplatedata-tagspecifications) is a property of [AWS::EC2::LaunchTemplate LaunchTemplateData](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata.html).", + "properties": { + "ResourceType": { + "description": "The type of resource to tag. You can specify tags for the following resource types only: ``instance`` | ``volume`` | ``network-interface`` | ``spot-instances-request``. If the instance does not include the resource type that you specify, the instance launch fails. For example, not all instance types include a volume.\n To tag a resource after it has been created, see [CreateTags](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CreateTags.html).", + "type": "string" + }, + "Tags": { + "description": "The tags to apply to the resource.", + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + }, + "TotalLocalStorageGB": { + "additionalProperties": false, + "description": "The minimum and maximum amount of total local storage, in GB.", + "properties": { + "Max": { + "description": "The maximum amount of total local storage, in GB. To specify no maximum limit, omit this parameter.", + "type": "number" + }, + "Min": { + "description": "The minimum amount of total local storage, in GB. To specify no minimum limit, omit this parameter.", + "type": "number" + } + }, + "type": "object" + }, + "VCpuCount": { + "additionalProperties": false, + "description": "The minimum and maximum number of vCPUs.", + "properties": { + "Max": { + "description": "The maximum number of vCPUs. To specify no maximum limit, omit this parameter.", + "type": "integer" + }, + "Min": { + "description": "The minimum number of vCPUs. To specify no minimum limit, specify ``0``.", + "type": "integer" + } + }, + "type": "object" + } + }, + "description": "Specifies the properties for creating a launch template.\n The minimum required properties for specifying a launch template are as follows:\n + You must specify at least one property for the launch template data.\n + You can optionally specify a name for the launch template. If you do not specify a name, CFN creates a name for you.\n \n A launch template can contain some or all of the configuration information to launch an instance. When you launch an instance using a launch template, instance properties that are not specified in the launch template use default values, except the ``ImageId`` property, which has no default value. If you do not specify an AMI ID for the launch template ``ImageId`` property, you must specify an AMI ID for the instance ``ImageId`` property.\n For more information, see [Launch an instance from a launch template](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-launch-templates.html) in the *Amazon EC2 User Guide*.", + "handlers": { + "create": { + "permissions": [ + "ec2:CreateLaunchTemplate", + "ec2:CreateTags" + ] + }, + "delete": { + "permissions": [ + "ec2:DeleteLaunchTemplate", + "ec2:DeleteTags", + "ec2:DescribeLaunchTemplates" + ] + }, + "list": { + "permissions": [ + "ec2:DescribeLaunchTemplates" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeLaunchTemplates" + ] + }, + "update": { + "permissions": [ + "ec2:CreateLaunchTemplateVersion" + ] + } + }, + "primaryIdentifier": [ + "/properties/LaunchTemplateId" + ], + "properties": { + "DefaultVersionNumber": { + "description": "", + "type": "string" + }, + "LatestVersionNumber": { + "description": "", + "type": "string" + }, + "LaunchTemplateData": { + "$ref": "#/definitions/LaunchTemplateData", + "description": "The information for the launch template." + }, + "LaunchTemplateId": { + "description": "", + "type": "string" + }, + "LaunchTemplateName": { + "description": "A name for the launch template.", + "type": "string" + }, + "TagSpecifications": { + "description": "The tags to apply to the launch template on creation. To tag the launch template, the resource type must be ``launch-template``.\n To specify the tags for resources that are created during instance launch, use [TagSpecifications](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata.html#cfn-ec2-launchtemplate-launchtemplatedata-tagspecifications).", + "items": { + "$ref": "#/definitions/LaunchTemplateTagSpecification" + }, + "type": "array", + "uniqueItems": false + }, + "VersionDescription": { + "description": "A description for the first version of the launch template.", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/DefaultVersionNumber", + "/properties/LaunchTemplateId", + "/properties/LatestVersionNumber" + ], + "required": [ + "LaunchTemplateData" + ], + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::EC2::LaunchTemplate", + "writeOnlyProperties": [ + "/properties/LaunchTemplateData", + "/properties/VersionDescription", + "/properties/TagSpecifications" + ] +} diff --git a/src/schema/aws-ec2-localgatewayroute.json b/src/schema/aws-ec2-localgatewayroute.json new file mode 100644 index 00000000..b7b0b494 --- /dev/null +++ b/src/schema/aws-ec2-localgatewayroute.json @@ -0,0 +1,97 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/DestinationCidrBlock", + "/properties/LocalGatewayRouteTableId" + ], + "description": "Resource Type definition for Local Gateway Route which describes a route for a local gateway route table.", + "handlers": { + "create": { + "permissions": [ + "ec2:CreateLocalGatewayRoute", + "ec2:SearchLocalGatewayRoutes" + ] + }, + "delete": { + "permissions": [ + "ec2:DeleteLocalGatewayRoute", + "ec2:SearchLocalGatewayRoutes" + ] + }, + "list": { + "permissions": [ + "ec2:DescribeLocalGatewayRouteTables", + "ec2:SearchLocalGatewayRoutes" + ] + }, + "read": { + "permissions": [ + "ec2:SearchLocalGatewayRoutes" + ] + }, + "update": { + "permissions": [ + "ec2:ModifyLocalGatewayRoute", + "ec2:SearchLocalGatewayRoutes" + ] + } + }, + "oneOf": [ + { + "required": [ + "DestinationCidrBlock", + "LocalGatewayRouteTableId", + "LocalGatewayVirtualInterfaceGroupId" + ] + }, + { + "required": [ + "DestinationCidrBlock", + "LocalGatewayRouteTableId", + "NetworkInterfaceId" + ] + } + ], + "primaryIdentifier": [ + "/properties/DestinationCidrBlock", + "/properties/LocalGatewayRouteTableId" + ], + "properties": { + "DestinationCidrBlock": { + "description": "The CIDR block used for destination matches.", + "type": "string" + }, + "LocalGatewayRouteTableId": { + "description": "The ID of the local gateway route table.", + "type": "string" + }, + "LocalGatewayVirtualInterfaceGroupId": { + "description": "The ID of the virtual interface group.", + "type": "string" + }, + "NetworkInterfaceId": { + "description": "The ID of the network interface.", + "type": "string" + }, + "State": { + "description": "The state of the route.", + "type": "string" + }, + "Type": { + "description": "The route type.", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/State", + "/properties/Type" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ec2-lgw.git", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::EC2::LocalGatewayRoute" +} diff --git a/src/schema/aws-ec2-localgatewayroutetable.json b/src/schema/aws-ec2-localgatewayroutetable.json new file mode 100644 index 00000000..97b63972 --- /dev/null +++ b/src/schema/aws-ec2-localgatewayroutetable.json @@ -0,0 +1,133 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/LocalGatewayId", + "/properties/Mode" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 127, + "minLength": 1, + "pattern": "^(?!aws:.*)", + "type": "string" + }, + "Value": { + "maxLength": 255, + "minLength": 1, + "pattern": "^(?!aws:.*)", + "type": "string" + } + }, + "type": "object" + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + } + }, + "description": "Resource Type definition for Local Gateway Route Table which describes a route table for a local gateway.", + "handlers": { + "create": { + "permissions": [ + "ec2:CreateLocalGatewayRouteTable", + "ec2:DescribeLocalGatewayRouteTables", + "ec2:CreateTags" + ] + }, + "delete": { + "permissions": [ + "ec2:DeleteLocalGatewayRouteTable", + "ec2:DescribeLocalGatewayRouteTables", + "ec2:DeleteTags" + ] + }, + "list": { + "permissions": [ + "ec2:DescribeLocalGatewayRouteTables" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeLocalGatewayRouteTables", + "ec2:DescribeTags" + ] + }, + "update": { + "permissions": [ + "ec2:DescribeLocalGatewayRouteTables", + "ec2:CreateTags", + "ec2:DeleteTags", + "ec2:DescribeTags" + ] + } + }, + "primaryIdentifier": [ + "/properties/LocalGatewayRouteTableId" + ], + "properties": { + "LocalGatewayId": { + "description": "The ID of the local gateway.", + "type": "string" + }, + "LocalGatewayRouteTableArn": { + "description": "The ARN of the local gateway route table.", + "type": "string" + }, + "LocalGatewayRouteTableId": { + "description": "The ID of the local gateway route table.", + "type": "string" + }, + "Mode": { + "description": "The mode of the local gateway route table.", + "type": "string" + }, + "OutpostArn": { + "description": "The ARN of the outpost.", + "type": "string" + }, + "OwnerId": { + "description": "The owner of the local gateway route table.", + "type": "string" + }, + "State": { + "description": "The state of the local gateway route table.", + "type": "string" + }, + "Tags": { + "$ref": "#/definitions/Tags", + "description": "The tags for the local gateway route table." + } + }, + "readOnlyProperties": [ + "/properties/LocalGatewayRouteTableId", + "/properties/LocalGatewayRouteTableArn", + "/properties/OutpostArn", + "/properties/OwnerId", + "/properties/State" + ], + "replacementStrategy": "delete_then_create", + "required": [ + "LocalGatewayId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ec2-lgw.git", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "ec2:DeleteTags", + "ec2:CreateTags", + "ec2:DescribeTags" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::EC2::LocalGatewayRouteTable" +} diff --git a/src/schema/aws-ec2-localgatewayroutetablevirtualinterfacegroupassociation.json b/src/schema/aws-ec2-localgatewayroutetablevirtualinterfacegroupassociation.json new file mode 100644 index 00000000..4691b9a7 --- /dev/null +++ b/src/schema/aws-ec2-localgatewayroutetablevirtualinterfacegroupassociation.json @@ -0,0 +1,134 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/LocalGatewayRouteTableId", + "/properties/LocalGatewayVirtualInterfaceGroupId" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 127, + "minLength": 1, + "pattern": "^(?!aws:.*)", + "type": "string" + }, + "Value": { + "maxLength": 255, + "minLength": 1, + "pattern": "^(?!aws:.*)", + "type": "string" + } + }, + "type": "object" + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + } + }, + "description": "Resource Type definition for Local Gateway Route Table Virtual Interface Group Association which describes a local gateway route table virtual interface group association for a local gateway.", + "handlers": { + "create": { + "permissions": [ + "ec2:CreateLocalGatewayRouteTableVirtualInterfaceGroupAssociation", + "ec2:DescribeLocalGatewayRouteTableVirtualInterfaceGroupAssociations", + "ec2:CreateTags" + ] + }, + "delete": { + "permissions": [ + "ec2:DeleteLocalGatewayRouteTableVirtualInterfaceGroupAssociation", + "ec2:DescribeLocalGatewayRouteTableVirtualInterfaceGroupAssociations", + "ec2:DeleteTags" + ] + }, + "list": { + "permissions": [ + "ec2:DescribeLocalGatewayRouteTableVirtualInterfaceGroupAssociations" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeLocalGatewayRouteTableVirtualInterfaceGroupAssociations", + "ec2:DescribeTags" + ] + }, + "update": { + "permissions": [ + "ec2:DescribeLocalGatewayRouteTableVirtualInterfaceGroupAssociations", + "ec2:CreateTags", + "ec2:DeleteTags", + "ec2:DescribeTags" + ] + } + }, + "primaryIdentifier": [ + "/properties/LocalGatewayRouteTableVirtualInterfaceGroupAssociationId" + ], + "properties": { + "LocalGatewayId": { + "description": "The ID of the local gateway.", + "type": "string" + }, + "LocalGatewayRouteTableArn": { + "description": "The ARN of the local gateway route table.", + "type": "string" + }, + "LocalGatewayRouteTableId": { + "description": "The ID of the local gateway route table.", + "type": "string" + }, + "LocalGatewayRouteTableVirtualInterfaceGroupAssociationId": { + "description": "The ID of the local gateway route table virtual interface group association.", + "type": "string" + }, + "LocalGatewayVirtualInterfaceGroupId": { + "description": "The ID of the local gateway route table virtual interface group.", + "type": "string" + }, + "OwnerId": { + "description": "The owner of the local gateway route table virtual interface group association.", + "type": "string" + }, + "State": { + "description": "The state of the local gateway route table virtual interface group association.", + "type": "string" + }, + "Tags": { + "$ref": "#/definitions/Tags", + "description": "The tags for the local gateway route table virtual interface group association." + } + }, + "readOnlyProperties": [ + "/properties/LocalGatewayRouteTableVirtualInterfaceGroupAssociationId", + "/properties/LocalGatewayId", + "/properties/LocalGatewayRouteTableArn", + "/properties/OwnerId", + "/properties/State" + ], + "replacementStrategy": "delete_then_create", + "required": [ + "LocalGatewayRouteTableId", + "LocalGatewayVirtualInterfaceGroupId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ec2-lgw.git", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "ec2:DeleteTags", + "ec2:CreateTags", + "ec2:DescribeTags" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::EC2::LocalGatewayRouteTableVirtualInterfaceGroupAssociation" +} diff --git a/src/schema/aws-ec2-localgatewayroutetablevpcassociation.json b/src/schema/aws-ec2-localgatewayroutetablevpcassociation.json new file mode 100644 index 00000000..48df7ee0 --- /dev/null +++ b/src/schema/aws-ec2-localgatewayroutetablevpcassociation.json @@ -0,0 +1,123 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/LocalGatewayRouteTableId", + "/properties/VpcId" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 127, + "minLength": 1, + "pattern": "^(?!aws:.*)", + "type": "string" + }, + "Value": { + "maxLength": 255, + "minLength": 1, + "pattern": "^(?!aws:.*)", + "type": "string" + } + }, + "type": "object" + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + } + }, + "description": "Resource Type definition for Local Gateway Route Table VPC Association which describes an association between a local gateway route table and a VPC.", + "handlers": { + "create": { + "permissions": [ + "ec2:CreateLocalGatewayRouteTableVpcAssociation", + "ec2:DescribeLocalGatewayRouteTableVpcAssociations", + "ec2:CreateTags" + ] + }, + "delete": { + "permissions": [ + "ec2:DeleteLocalGatewayRouteTableVpcAssociation", + "ec2:DescribeLocalGatewayRouteTableVpcAssociations", + "ec2:DeleteTags" + ] + }, + "list": { + "permissions": [ + "ec2:DescribeLocalGatewayRouteTableVpcAssociations" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeLocalGatewayRouteTableVpcAssociations", + "ec2:DescribeTags" + ] + }, + "update": { + "permissions": [ + "ec2:DescribeLocalGatewayRouteTableVpcAssociations", + "ec2:CreateTags", + "ec2:DeleteTags", + "ec2:DescribeTags" + ] + } + }, + "primaryIdentifier": [ + "/properties/LocalGatewayRouteTableVpcAssociationId" + ], + "properties": { + "LocalGatewayId": { + "description": "The ID of the local gateway.", + "type": "string" + }, + "LocalGatewayRouteTableId": { + "description": "The ID of the local gateway route table.", + "type": "string" + }, + "LocalGatewayRouteTableVpcAssociationId": { + "description": "The ID of the association.", + "type": "string" + }, + "State": { + "description": "The state of the association.", + "type": "string" + }, + "Tags": { + "$ref": "#/definitions/Tags", + "description": "The tags for the association." + }, + "VpcId": { + "description": "The ID of the VPC.", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/LocalGatewayId", + "/properties/LocalGatewayRouteTableVpcAssociationId", + "/properties/State" + ], + "required": [ + "LocalGatewayRouteTableId", + "VpcId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ec2-lgw.git", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "ec2:DeleteTags", + "ec2:CreateTags", + "ec2:DescribeTags" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::EC2::LocalGatewayRouteTableVPCAssociation" +} diff --git a/src/schema/aws-ec2-natgateway.json b/src/schema/aws-ec2-natgateway.json new file mode 100644 index 00000000..8c219d7c --- /dev/null +++ b/src/schema/aws-ec2-natgateway.json @@ -0,0 +1,149 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/SubnetId", + "/properties/ConnectivityType", + "/properties/AllocationId", + "/properties/PrivateIpAddress" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "description": "Specifies a tag. For more information, see [Resource tags](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-resource-tags.html).", + "properties": { + "Key": { + "description": "The tag key.", + "type": "string" + }, + "Value": { + "description": "The tag value.", + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "description": "Specifies a network address translation (NAT) gateway in the specified subnet. You can create either a public NAT gateway or a private NAT gateway. The default is a public NAT gateway. If you create a public NAT gateway, you must specify an elastic IP address.\n With a NAT gateway, instances in a private subnet can connect to the internet, other AWS services, or an on-premises network using the IP address of the NAT gateway. For more information, see [NAT gateways](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-nat-gateway.html) in the *Amazon VPC User Guide*.\n If you add a default route (``AWS::EC2::Route`` resource) that points to a NAT gateway, specify the NAT gateway ID for the route's ``NatGatewayId`` property.\n When you associate an Elastic IP address or secondary Elastic IP address with a public NAT gateway, the network border group of the Elastic IP address must match the network border group of the Availability Zone (AZ) that the public NAT gateway is in. Otherwise, the NAT gateway fails to launch. You can see the network border group for the AZ by viewing the details of the subnet. Similarly, you can view the network border group for the Elastic IP address by viewing its details. For more information, see [Allocate an Elastic IP address](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-eips.html#allocate-eip) in the *Amazon VPC User Guide*.", + "handlers": { + "create": { + "permissions": [ + "ec2:CreateNatGateway", + "ec2:DescribeNatGateways", + "ec2:CreateTags" + ] + }, + "delete": { + "permissions": [ + "ec2:DeleteNatGateway", + "ec2:DescribeNatGateways" + ] + }, + "list": { + "permissions": [ + "ec2:DescribeNatGateways" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeNatGateways" + ] + }, + "update": { + "permissions": [ + "ec2:DescribeNatGateways", + "ec2:CreateTags", + "ec2:DeleteTags", + "ec2:AssociateNatGatewayAddress", + "ec2:DisassociateNatGatewayAddress", + "ec2:AssignPrivateNatGatewayAddress", + "ec2:UnassignPrivateNatGatewayAddress" + ] + } + }, + "primaryIdentifier": [ + "/properties/NatGatewayId" + ], + "properties": { + "AllocationId": { + "description": "[Public NAT gateway only] The allocation ID of the Elastic IP address that's associated with the NAT gateway. This property is required for a public NAT gateway and cannot be specified with a private NAT gateway.", + "type": "string" + }, + "ConnectivityType": { + "description": "Indicates whether the NAT gateway supports public or private connectivity. The default is public connectivity.", + "type": "string" + }, + "MaxDrainDurationSeconds": { + "description": "The maximum amount of time to wait (in seconds) before forcibly releasing the IP addresses if connections are still in progress. Default value is 350 seconds.", + "type": "integer" + }, + "NatGatewayId": { + "description": "", + "type": "string" + }, + "PrivateIpAddress": { + "description": "The private IPv4 address to assign to the NAT gateway. If you don't provide an address, a private IPv4 address will be automatically assigned.", + "type": "string" + }, + "SecondaryAllocationIds": { + "description": "Secondary EIP allocation IDs. For more information, see [Create a NAT gateway](https://docs.aws.amazon.com/vpc/latest/userguide/nat-gateway-working-with.html) in the *Amazon VPC User Guide*.", + "insertionOrder": true, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "SecondaryPrivateIpAddressCount": { + "description": "[Private NAT gateway only] The number of secondary private IPv4 addresses you want to assign to the NAT gateway. For more information about secondary addresses, see [Create a NAT gateway](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-nat-gateway.html#nat-gateway-creating) in the *Amazon Virtual Private Cloud User Guide*.\n ``SecondaryPrivateIpAddressCount`` and ``SecondaryPrivateIpAddresses`` cannot be set at the same time.", + "minimum": 1, + "type": "integer" + }, + "SecondaryPrivateIpAddresses": { + "description": "Secondary private IPv4 addresses. For more information about secondary addresses, see [Create a NAT gateway](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-nat-gateway.html#nat-gateway-creating) in the *Amazon Virtual Private Cloud User Guide*.\n ``SecondaryPrivateIpAddressCount`` and ``SecondaryPrivateIpAddresses`` cannot be set at the same time.", + "insertionOrder": true, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "SubnetId": { + "description": "The ID of the subnet in which the NAT gateway is located.", + "type": "string" + }, + "Tags": { + "description": "The tags for the NAT gateway.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + } + }, + "readOnlyProperties": [ + "/properties/NatGatewayId" + ], + "required": [ + "SubnetId" + ], + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "ec2:DeleteTags", + "ec2:CreateTags" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::EC2::NatGateway", + "writeOnlyProperties": [ + "/properties/MaxDrainDurationSeconds" + ] +} diff --git a/src/schema/aws-ec2-networkacl.json b/src/schema/aws-ec2-networkacl.json new file mode 100644 index 00000000..4bd86908 --- /dev/null +++ b/src/schema/aws-ec2-networkacl.json @@ -0,0 +1,103 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/VpcId" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "description": "Specifies a tag. For more information, see [Resource tags](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-resource-tags.html).", + "properties": { + "Key": { + "description": "The tag key.", + "type": "string" + }, + "Value": { + "description": "The tag value.", + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "description": "Specifies a network ACL for your VPC.\n To add a network ACL entry, see [AWS::EC2::NetworkAclEntry](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-networkaclentry.html).", + "handlers": { + "create": { + "permissions": [ + "ec2:CreateNetworkAcl", + "ec2:DescribeNetworkAcls", + "ec2:CreateTags" + ] + }, + "delete": { + "permissions": [ + "ec2:DeleteTags", + "ec2:DeleteNetworkAcl", + "ec2:DescribeNetworkAcls" + ] + }, + "list": { + "permissions": [ + "ec2:DescribeNetworkAcls" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeNetworkAcls", + "ec2:DescribeTags" + ] + }, + "update": { + "permissions": [ + "ec2:DescribeNetworkAcls", + "ec2:DeleteTags", + "ec2:CreateTags" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Id": { + "description": "", + "type": "string" + }, + "Tags": { + "description": "The tags for the network ACL.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + }, + "VpcId": { + "description": "The ID of the VPC for the network ACL.", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "VpcId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ec2.git", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "ec2:CreateTags", + "ec2:DeleteTags" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::EC2::NetworkAcl" +} diff --git a/src/schema/aws-ec2-networkaclentry.json b/src/schema/aws-ec2-networkaclentry.json new file mode 100644 index 00000000..1a86aa55 --- /dev/null +++ b/src/schema/aws-ec2-networkaclentry.json @@ -0,0 +1,116 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Egress", + "/properties/RuleNumber", + "/properties/NetworkAclId" + ], + "definitions": { + "Icmp": { + "additionalProperties": false, + "properties": { + "Code": { + "type": "integer" + }, + "Type": { + "type": "integer" + } + }, + "type": "object" + }, + "PortRange": { + "additionalProperties": false, + "properties": { + "From": { + "type": "integer" + }, + "To": { + "type": "integer" + } + }, + "type": "object" + } + }, + "description": "Resource Type definition for AWS::EC2::NetworkAclEntry", + "handlers": { + "create": { + "permissions": [ + "ec2:CreateNetworkAclEntry", + "ec2:DescribeNetworkAcls" + ] + }, + "delete": { + "permissions": [ + "ec2:DeleteNetworkAclEntry", + "ec2:DescribeNetworkAcls" + ] + }, + "update": { + "permissions": [ + "ec2:ReplaceNetworkAclEntry", + "ec2:DescribeNetworkAcls" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "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", + "type": "string" + }, + "Egress": { + "description": "Indicates whether this is an egress rule (rule is applied to traffic leaving the subnet)", + "type": "boolean" + }, + "Icmp": { + "$ref": "#/definitions/Icmp", + "description": "The Internet Control Message Protocol (ICMP) code and type. Requirement is conditional: Required if specifying 1 (ICMP) for the protocol parameter" + }, + "Id": { + "type": "string" + }, + "Ipv6CidrBlock": { + "description": "The IPv6 network range to allow or deny, in CIDR notation (for example 2001:db8:1234:1a00::/64)", + "type": "string" + }, + "NetworkAclId": { + "description": "The ID of the network ACL", + "type": "string" + }, + "PortRange": { + "$ref": "#/definitions/PortRange", + "description": "The IPv4 network range to allow or deny, in CIDR notation (for example 172.16.0.0/24). We modify the specified CIDR block to its canonical form; for example, if you specify 100.68.0.18/18, we modify it to 100.68.0.0/18" + }, + "Protocol": { + "description": "The protocol number. A value of \"-1\" means all protocols. If you specify \"-1\" or a protocol number other than \"6\" (TCP), \"17\" (UDP), or \"1\" (ICMP), traffic on all ports is allowed, regardless of any ports or ICMP types or codes that you specify. If you specify protocol \"58\" (ICMPv6) and specify an IPv4 CIDR block, traffic for all ICMP types and codes allowed, regardless of any that you specify. If you specify protocol \"58\" (ICMPv6) and specify an IPv6 CIDR block, you must specify an ICMP type and code", + "type": "integer" + }, + "RuleAction": { + "description": "Indicates whether to allow or deny the traffic that matches the rule", + "type": "string" + }, + "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", + "type": "integer" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "NetworkAclId", + "RuleAction", + "RuleNumber", + "Protocol" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ec2.git", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::EC2::NetworkAclEntry" +} diff --git a/src/schema/aws-ec2-networkinsightsaccessscope.json b/src/schema/aws-ec2-networkinsightsaccessscope.json new file mode 100644 index 00000000..0f6fdbe1 --- /dev/null +++ b/src/schema/aws-ec2-networkinsightsaccessscope.json @@ -0,0 +1,247 @@ +{ + "additionalIdentifiers": [ + [ + "/properties/NetworkInsightsAccessScopeArn" + ] + ], + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/MatchPaths", + "/properties/ExcludePaths" + ], + "definitions": { + "AccessScopePathRequest": { + "additionalProperties": false, + "properties": { + "Destination": { + "$ref": "#/definitions/PathStatementRequest" + }, + "Source": { + "$ref": "#/definitions/PathStatementRequest" + }, + "ThroughResources": { + "insertionOrder": true, + "items": { + "$ref": "#/definitions/ThroughResourcesStatementRequest" + }, + "type": "array" + } + }, + "type": "object" + }, + "PacketHeaderStatementRequest": { + "additionalProperties": false, + "properties": { + "DestinationAddresses": { + "insertionOrder": true, + "items": { + "type": "string" + }, + "type": "array" + }, + "DestinationPorts": { + "insertionOrder": true, + "items": { + "type": "string" + }, + "type": "array" + }, + "DestinationPrefixLists": { + "insertionOrder": true, + "items": { + "type": "string" + }, + "type": "array" + }, + "Protocols": { + "insertionOrder": true, + "items": { + "$ref": "#/definitions/Protocol" + }, + "type": "array" + }, + "SourceAddresses": { + "insertionOrder": true, + "items": { + "type": "string" + }, + "type": "array" + }, + "SourcePorts": { + "insertionOrder": true, + "items": { + "type": "string" + }, + "type": "array" + }, + "SourcePrefixLists": { + "insertionOrder": true, + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "PathStatementRequest": { + "additionalProperties": false, + "properties": { + "PacketHeaderStatement": { + "$ref": "#/definitions/PacketHeaderStatementRequest" + }, + "ResourceStatement": { + "$ref": "#/definitions/ResourceStatementRequest" + } + }, + "type": "object" + }, + "Protocol": { + "enum": [ + "tcp", + "udp" + ], + "type": "string" + }, + "ResourceStatementRequest": { + "additionalProperties": false, + "properties": { + "ResourceTypes": { + "insertionOrder": true, + "items": { + "type": "string" + }, + "type": "array" + }, + "Resources": { + "insertionOrder": true, + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Key" + ], + "type": "object" + }, + "ThroughResourcesStatementRequest": { + "additionalProperties": false, + "properties": { + "ResourceStatement": { + "$ref": "#/definitions/ResourceStatementRequest" + } + }, + "type": "object" + } + }, + "description": "Resource schema for AWS::EC2::NetworkInsightsAccessScope", + "handlers": { + "create": { + "permissions": [ + "ec2:CreateNetworkInsightsAccessScope", + "ec2:CreateTags", + "tiros:CreateQuery" + ] + }, + "delete": { + "permissions": [ + "ec2:DeleteNetworkInsightsAccessScope", + "ec2:DeleteTags" + ] + }, + "list": { + "permissions": [ + "ec2:DescribeNetworkInsightsAccessScopes" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeNetworkInsightsAccessScopes", + "ec2:GetNetworkInsightsAccessScopeContent" + ] + }, + "update": { + "permissions": [ + "ec2:DescribeNetworkInsightsAccessScopes", + "ec2:GetNetworkInsightsAccessScopeContent", + "ec2:CreateTags", + "ec2:DeleteTags" + ] + } + }, + "primaryIdentifier": [ + "/properties/NetworkInsightsAccessScopeId" + ], + "properties": { + "CreatedDate": { + "type": "string" + }, + "ExcludePaths": { + "insertionOrder": true, + "items": { + "$ref": "#/definitions/AccessScopePathRequest" + }, + "type": "array" + }, + "MatchPaths": { + "insertionOrder": true, + "items": { + "$ref": "#/definitions/AccessScopePathRequest" + }, + "type": "array" + }, + "NetworkInsightsAccessScopeArn": { + "type": "string" + }, + "NetworkInsightsAccessScopeId": { + "type": "string" + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array" + }, + "UpdatedDate": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/NetworkInsightsAccessScopeId", + "/properties/NetworkInsightsAccessScopeArn", + "/properties/CreatedDate", + "/properties/UpdatedDate" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ec2-ni.git", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "ec2:CreateTags", + "ec2:DeleteTags" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::EC2::NetworkInsightsAccessScope", + "writeOnlyProperties": [ + "/properties/MatchPaths", + "/properties/ExcludePaths" + ] +} diff --git a/src/schema/aws-ec2-networkinsightsaccessscopeanalysis.json b/src/schema/aws-ec2-networkinsightsaccessscopeanalysis.json new file mode 100644 index 00000000..ec8dc1d8 --- /dev/null +++ b/src/schema/aws-ec2-networkinsightsaccessscopeanalysis.json @@ -0,0 +1,142 @@ +{ + "additionalIdentifiers": [ + [ + "/properties/NetworkInsightsAccessScopeAnalysisArn" + ] + ], + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/NetworkInsightsAccessScopeId" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Key" + ], + "type": "object" + } + }, + "description": "Resource schema for AWS::EC2::NetworkInsightsAccessScopeAnalysis", + "handlers": { + "create": { + "permissions": [ + "ec2:CreateTags", + "ec2:StartNetworkInsightsAccessScopeAnalysis", + "ec2:GetTransitGatewayRouteTablePropagations", + "ec2:Describe*", + "elasticloadbalancing:Describe*", + "directconnect:Describe*", + "tiros:CreateQuery", + "tiros:GetQueryAnswer", + "tiros:GetQueryExplanation" + ] + }, + "delete": { + "permissions": [ + "ec2:DeleteNetworkInsightsAccessScopeAnalysis", + "ec2:DeleteTags" + ] + }, + "list": { + "permissions": [ + "ec2:DescribeNetworkInsightsAccessScopeAnalyses" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeNetworkInsightsAccessScopeAnalyses" + ] + }, + "update": { + "permissions": [ + "ec2:DescribeNetworkInsightsAccessScopeAnalyses", + "ec2:CreateTags", + "ec2:DeleteTags" + ] + } + }, + "primaryIdentifier": [ + "/properties/NetworkInsightsAccessScopeAnalysisId" + ], + "properties": { + "AnalyzedEniCount": { + "type": "integer" + }, + "EndDate": { + "type": "string" + }, + "FindingsFound": { + "enum": [ + "true", + "false", + "unknown" + ], + "type": "string" + }, + "NetworkInsightsAccessScopeAnalysisArn": { + "type": "string" + }, + "NetworkInsightsAccessScopeAnalysisId": { + "type": "string" + }, + "NetworkInsightsAccessScopeId": { + "type": "string" + }, + "StartDate": { + "type": "string" + }, + "Status": { + "enum": [ + "running", + "failed", + "succeeded" + ], + "type": "string" + }, + "StatusMessage": { + "type": "string" + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array" + } + }, + "readOnlyProperties": [ + "/properties/NetworkInsightsAccessScopeAnalysisId", + "/properties/NetworkInsightsAccessScopeAnalysisArn", + "/properties/Status", + "/properties/StatusMessage", + "/properties/StartDate", + "/properties/EndDate", + "/properties/FindingsFound", + "/properties/AnalyzedEniCount" + ], + "required": [ + "NetworkInsightsAccessScopeId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ec2-ni.git", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "ec2:CreateTags", + "ec2:DeleteTags" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::EC2::NetworkInsightsAccessScopeAnalysis" +} diff --git a/src/schema/aws-ec2-networkinsightsanalysis.json b/src/schema/aws-ec2-networkinsightsanalysis.json new file mode 100644 index 00000000..9d50d7e9 --- /dev/null +++ b/src/schema/aws-ec2-networkinsightsanalysis.json @@ -0,0 +1,717 @@ +{ + "additionalIdentifiers": [ + [ + "/properties/NetworkInsightsAnalysisArn" + ] + ], + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/NetworkInsightsPathId", + "/properties/FilterInArns" + ], + "definitions": { + "AdditionalDetail": { + "additionalProperties": false, + "properties": { + "AdditionalDetailType": { + "type": "string" + }, + "Component": { + "$ref": "#/definitions/AnalysisComponent" + }, + "LoadBalancers": { + "insertionOrder": true, + "items": { + "$ref": "#/definitions/AnalysisComponent" + }, + "type": "array", + "uniqueItems": false + }, + "ServiceName": { + "type": "string" + } + }, + "type": "object" + }, + "AlternatePathHint": { + "additionalProperties": false, + "properties": { + "ComponentArn": { + "type": "string" + }, + "ComponentId": { + "type": "string" + } + }, + "type": "object" + }, + "AnalysisAclRule": { + "additionalProperties": false, + "properties": { + "Cidr": { + "type": "string" + }, + "Egress": { + "type": "boolean" + }, + "PortRange": { + "$ref": "#/definitions/PortRange" + }, + "Protocol": { + "$ref": "#/definitions/Protocol" + }, + "RuleAction": { + "type": "string" + }, + "RuleNumber": { + "type": "integer" + } + }, + "type": "object" + }, + "AnalysisComponent": { + "additionalProperties": false, + "properties": { + "Arn": { + "type": "string" + }, + "Id": { + "type": "string" + } + }, + "type": "object" + }, + "AnalysisLoadBalancerListener": { + "additionalProperties": false, + "properties": { + "InstancePort": { + "$ref": "#/definitions/Port" + }, + "LoadBalancerPort": { + "$ref": "#/definitions/Port" + } + }, + "type": "object" + }, + "AnalysisLoadBalancerTarget": { + "additionalProperties": false, + "properties": { + "Address": { + "$ref": "#/definitions/IpAddress" + }, + "AvailabilityZone": { + "type": "string" + }, + "Instance": { + "$ref": "#/definitions/AnalysisComponent" + }, + "Port": { + "$ref": "#/definitions/Port" + } + }, + "type": "object" + }, + "AnalysisPacketHeader": { + "additionalProperties": false, + "properties": { + "DestinationAddresses": { + "insertionOrder": true, + "items": { + "$ref": "#/definitions/IpAddress" + }, + "type": "array", + "uniqueItems": false + }, + "DestinationPortRanges": { + "insertionOrder": true, + "items": { + "$ref": "#/definitions/PortRange" + }, + "type": "array", + "uniqueItems": false + }, + "Protocol": { + "$ref": "#/definitions/Protocol" + }, + "SourceAddresses": { + "insertionOrder": true, + "items": { + "$ref": "#/definitions/IpAddress" + }, + "type": "array", + "uniqueItems": false + }, + "SourcePortRanges": { + "insertionOrder": true, + "items": { + "$ref": "#/definitions/PortRange" + }, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + }, + "AnalysisRouteTableRoute": { + "additionalProperties": false, + "properties": { + "NatGatewayId": { + "type": "string" + }, + "NetworkInterfaceId": { + "type": "string" + }, + "Origin": { + "type": "string" + }, + "State": { + "type": "string" + }, + "TransitGatewayId": { + "type": "string" + }, + "VpcPeeringConnectionId": { + "type": "string" + }, + "destinationCidr": { + "type": "string" + }, + "destinationPrefixListId": { + "type": "string" + }, + "egressOnlyInternetGatewayId": { + "type": "string" + }, + "gatewayId": { + "type": "string" + }, + "instanceId": { + "type": "string" + } + }, + "type": "object" + }, + "AnalysisSecurityGroupRule": { + "additionalProperties": false, + "properties": { + "Cidr": { + "type": "string" + }, + "Direction": { + "type": "string" + }, + "PortRange": { + "$ref": "#/definitions/PortRange" + }, + "PrefixListId": { + "type": "string" + }, + "Protocol": { + "$ref": "#/definitions/Protocol" + }, + "SecurityGroupId": { + "type": "string" + } + }, + "type": "object" + }, + "Explanation": { + "additionalProperties": false, + "properties": { + "Acl": { + "$ref": "#/definitions/AnalysisComponent" + }, + "AclRule": { + "$ref": "#/definitions/AnalysisAclRule" + }, + "Address": { + "$ref": "#/definitions/IpAddress" + }, + "Addresses": { + "insertionOrder": true, + "items": { + "$ref": "#/definitions/IpAddress" + }, + "type": "array", + "uniqueItems": false + }, + "AttachedTo": { + "$ref": "#/definitions/AnalysisComponent" + }, + "AvailabilityZones": { + "insertionOrder": true, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "Cidrs": { + "insertionOrder": true, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "ClassicLoadBalancerListener": { + "$ref": "#/definitions/AnalysisLoadBalancerListener" + }, + "Component": { + "$ref": "#/definitions/AnalysisComponent" + }, + "ComponentAccount": { + "type": "string" + }, + "ComponentRegion": { + "type": "string" + }, + "CustomerGateway": { + "$ref": "#/definitions/AnalysisComponent" + }, + "Destination": { + "$ref": "#/definitions/AnalysisComponent" + }, + "DestinationVpc": { + "$ref": "#/definitions/AnalysisComponent" + }, + "Direction": { + "type": "string" + }, + "ElasticLoadBalancerListener": { + "$ref": "#/definitions/AnalysisComponent" + }, + "ExplanationCode": { + "type": "string" + }, + "IngressRouteTable": { + "$ref": "#/definitions/AnalysisComponent" + }, + "InternetGateway": { + "$ref": "#/definitions/AnalysisComponent" + }, + "LoadBalancerArn": { + "$ref": "#/definitions/ResourceArn" + }, + "LoadBalancerListenerPort": { + "$ref": "#/definitions/Port" + }, + "LoadBalancerTarget": { + "$ref": "#/definitions/AnalysisLoadBalancerTarget" + }, + "LoadBalancerTargetGroup": { + "$ref": "#/definitions/AnalysisComponent" + }, + "LoadBalancerTargetGroups": { + "insertionOrder": true, + "items": { + "$ref": "#/definitions/AnalysisComponent" + }, + "type": "array", + "uniqueItems": false + }, + "LoadBalancerTargetPort": { + "$ref": "#/definitions/Port" + }, + "MissingComponent": { + "type": "string" + }, + "NatGateway": { + "$ref": "#/definitions/AnalysisComponent" + }, + "NetworkInterface": { + "$ref": "#/definitions/AnalysisComponent" + }, + "PacketField": { + "type": "string" + }, + "Port": { + "$ref": "#/definitions/Port" + }, + "PortRanges": { + "insertionOrder": true, + "items": { + "$ref": "#/definitions/PortRange" + }, + "type": "array", + "uniqueItems": false + }, + "PrefixList": { + "$ref": "#/definitions/AnalysisComponent" + }, + "Protocols": { + "insertionOrder": true, + "items": { + "$ref": "#/definitions/Protocol" + }, + "type": "array", + "uniqueItems": false + }, + "RouteTable": { + "$ref": "#/definitions/AnalysisComponent" + }, + "RouteTableRoute": { + "$ref": "#/definitions/AnalysisRouteTableRoute" + }, + "SecurityGroup": { + "$ref": "#/definitions/AnalysisComponent" + }, + "SecurityGroupRule": { + "$ref": "#/definitions/AnalysisSecurityGroupRule" + }, + "SecurityGroups": { + "insertionOrder": true, + "items": { + "$ref": "#/definitions/AnalysisComponent" + }, + "type": "array", + "uniqueItems": false + }, + "SourceVpc": { + "$ref": "#/definitions/AnalysisComponent" + }, + "State": { + "type": "string" + }, + "Subnet": { + "$ref": "#/definitions/AnalysisComponent" + }, + "SubnetRouteTable": { + "$ref": "#/definitions/AnalysisComponent" + }, + "TransitGateway": { + "$ref": "#/definitions/AnalysisComponent" + }, + "TransitGatewayAttachment": { + "$ref": "#/definitions/AnalysisComponent" + }, + "TransitGatewayRouteTable": { + "$ref": "#/definitions/AnalysisComponent" + }, + "TransitGatewayRouteTableRoute": { + "$ref": "#/definitions/TransitGatewayRouteTableRoute" + }, + "Vpc": { + "$ref": "#/definitions/AnalysisComponent" + }, + "VpcPeeringConnection": { + "$ref": "#/definitions/AnalysisComponent" + }, + "VpnConnection": { + "$ref": "#/definitions/AnalysisComponent" + }, + "VpnGateway": { + "$ref": "#/definitions/AnalysisComponent" + }, + "vpcEndpoint": { + "$ref": "#/definitions/AnalysisComponent" + } + }, + "type": "object" + }, + "IpAddress": { + "type": "string" + }, + "PathComponent": { + "additionalProperties": false, + "properties": { + "AclRule": { + "$ref": "#/definitions/AnalysisAclRule" + }, + "AdditionalDetails": { + "insertionOrder": true, + "items": { + "$ref": "#/definitions/AdditionalDetail" + }, + "type": "array", + "uniqueItems": false + }, + "Component": { + "$ref": "#/definitions/AnalysisComponent" + }, + "DestinationVpc": { + "$ref": "#/definitions/AnalysisComponent" + }, + "ElasticLoadBalancerListener": { + "$ref": "#/definitions/AnalysisComponent" + }, + "Explanations": { + "insertionOrder": true, + "items": { + "$ref": "#/definitions/Explanation" + }, + "type": "array", + "uniqueItems": false + }, + "InboundHeader": { + "$ref": "#/definitions/AnalysisPacketHeader" + }, + "OutboundHeader": { + "$ref": "#/definitions/AnalysisPacketHeader" + }, + "RouteTableRoute": { + "$ref": "#/definitions/AnalysisRouteTableRoute" + }, + "SecurityGroupRule": { + "$ref": "#/definitions/AnalysisSecurityGroupRule" + }, + "SequenceNumber": { + "type": "integer" + }, + "ServiceName": { + "type": "string" + }, + "SourceVpc": { + "$ref": "#/definitions/AnalysisComponent" + }, + "Subnet": { + "$ref": "#/definitions/AnalysisComponent" + }, + "TransitGateway": { + "$ref": "#/definitions/AnalysisComponent" + }, + "TransitGatewayRouteTableRoute": { + "$ref": "#/definitions/TransitGatewayRouteTableRoute" + }, + "Vpc": { + "$ref": "#/definitions/AnalysisComponent" + } + }, + "type": "object" + }, + "Port": { + "type": "integer" + }, + "PortRange": { + "additionalProperties": false, + "properties": { + "From": { + "type": "integer" + }, + "To": { + "type": "integer" + } + }, + "type": "object" + }, + "Protocol": { + "type": "string" + }, + "ResourceArn": { + "type": "string" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Key" + ], + "type": "object" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + }, + "TransitGatewayRouteTableRoute": { + "additionalProperties": false, + "properties": { + "AttachmentId": { + "type": "string" + }, + "DestinationCidr": { + "type": "string" + }, + "PrefixListId": { + "type": "string" + }, + "ResourceId": { + "type": "string" + }, + "ResourceType": { + "type": "string" + }, + "RouteOrigin": { + "type": "string" + }, + "State": { + "type": "string" + } + }, + "type": "object" + } + }, + "description": "Resource schema for AWS::EC2::NetworkInsightsAnalysis", + "handlers": { + "create": { + "permissions": [ + "ec2:CreateTags", + "ec2:StartNetworkInsightsAnalysis", + "ec2:GetTransitGatewayRouteTablePropagations", + "ec2:SearchTransitGatewayRoutes", + "ec2:Describe*", + "ec2:GetManagedPrefixListEntries", + "elasticloadbalancing:Describe*", + "directconnect:Describe*", + "tiros:CreateQuery", + "tiros:GetQueryAnswer", + "tiros:GetQueryExplanation" + ] + }, + "delete": { + "permissions": [ + "ec2:DeleteNetworkInsightsAnalysis", + "ec2:DeleteTags" + ] + }, + "list": { + "permissions": [ + "ec2:Describe*" + ] + }, + "read": { + "permissions": [ + "ec2:Describe*" + ] + }, + "update": { + "permissions": [ + "ec2:CreateTags", + "ec2:Describe*", + "ec2:DeleteTags" + ] + } + }, + "primaryIdentifier": [ + "/properties/NetworkInsightsAnalysisId" + ], + "properties": { + "AdditionalAccounts": { + "insertionOrder": true, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "AlternatePathHints": { + "insertionOrder": true, + "items": { + "$ref": "#/definitions/AlternatePathHint" + }, + "type": "array", + "uniqueItems": false + }, + "Explanations": { + "insertionOrder": true, + "items": { + "$ref": "#/definitions/Explanation" + }, + "type": "array", + "uniqueItems": false + }, + "FilterInArns": { + "insertionOrder": true, + "items": { + "$ref": "#/definitions/ResourceArn" + }, + "type": "array", + "uniqueItems": false + }, + "ForwardPathComponents": { + "insertionOrder": true, + "items": { + "$ref": "#/definitions/PathComponent" + }, + "type": "array", + "uniqueItems": false + }, + "NetworkInsightsAnalysisArn": { + "type": "string" + }, + "NetworkInsightsAnalysisId": { + "type": "string" + }, + "NetworkInsightsPathId": { + "type": "string" + }, + "NetworkPathFound": { + "type": "boolean" + }, + "ReturnPathComponents": { + "insertionOrder": true, + "items": { + "$ref": "#/definitions/PathComponent" + }, + "type": "array", + "uniqueItems": false + }, + "StartDate": { + "type": "string" + }, + "Status": { + "enum": [ + "running", + "failed", + "succeeded" + ], + "type": "string" + }, + "StatusMessage": { + "type": "string" + }, + "SuggestedAccounts": { + "insertionOrder": true, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/NetworkInsightsAnalysisId", + "/properties/NetworkInsightsAnalysisArn", + "/properties/StartDate", + "/properties/Status", + "/properties/StatusMessage", + "/properties/NetworkPathFound", + "/properties/ForwardPathComponents", + "/properties/ReturnPathComponents", + "/properties/Explanations", + "/properties/AlternatePathHints", + "/properties/SuggestedAccounts" + ], + "required": [ + "NetworkInsightsPathId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ec2-ni.git", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "ec2:CreateTags", + "ec2:DeleteTags" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::EC2::NetworkInsightsAnalysis" +} diff --git a/src/schema/aws-ec2-networkinsightspath.json b/src/schema/aws-ec2-networkinsightspath.json new file mode 100644 index 00000000..2d53d6b7 --- /dev/null +++ b/src/schema/aws-ec2-networkinsightspath.json @@ -0,0 +1,192 @@ +{ + "additionalIdentifiers": [ + [ + "/properties/NetworkInsightsPathArn" + ] + ], + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/SourceIp", + "/properties/DestinationIp", + "/properties/Source", + "/properties/Destination", + "/properties/Protocol", + "/properties/DestinationPort", + "/properties/FilterAtSource", + "/properties/FilterAtDestination" + ], + "definitions": { + "FilterPortRange": { + "additionalProperties": false, + "properties": { + "FromPort": { + "type": "integer" + }, + "ToPort": { + "type": "integer" + } + }, + "type": "object" + }, + "IpAddress": { + "type": "string" + }, + "PathFilter": { + "additionalProperties": false, + "properties": { + "DestinationAddress": { + "$ref": "#/definitions/IpAddress" + }, + "DestinationPortRange": { + "$ref": "#/definitions/FilterPortRange" + }, + "SourceAddress": { + "$ref": "#/definitions/IpAddress" + }, + "SourcePortRange": { + "$ref": "#/definitions/FilterPortRange" + } + }, + "type": "object" + }, + "Port": { + "type": "integer" + }, + "Protocol": { + "enum": [ + "tcp", + "udp" + ], + "type": "string" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Key" + ], + "type": "object" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + } + }, + "description": "Resource schema for AWS::EC2::NetworkInsightsPath", + "handlers": { + "create": { + "permissions": [ + "ec2:CreateNetworkInsightsPath", + "ec2:CreateTags" + ] + }, + "delete": { + "permissions": [ + "ec2:DeleteNetworkInsightsPath", + "ec2:DeleteTags" + ] + }, + "list": { + "permissions": [ + "ec2:DescribeNetworkInsightsPaths" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeNetworkInsightsPaths" + ] + }, + "update": { + "permissions": [ + "ec2:DescribeNetworkInsightsPaths", + "ec2:CreateTags", + "ec2:DeleteTags" + ] + } + }, + "primaryIdentifier": [ + "/properties/NetworkInsightsPathId" + ], + "properties": { + "CreatedDate": { + "type": "string" + }, + "Destination": { + "type": "string" + }, + "DestinationArn": { + "type": "string" + }, + "DestinationIp": { + "$ref": "#/definitions/IpAddress" + }, + "DestinationPort": { + "$ref": "#/definitions/Port" + }, + "FilterAtDestination": { + "$ref": "#/definitions/PathFilter" + }, + "FilterAtSource": { + "$ref": "#/definitions/PathFilter" + }, + "NetworkInsightsPathArn": { + "type": "string" + }, + "NetworkInsightsPathId": { + "type": "string" + }, + "Protocol": { + "$ref": "#/definitions/Protocol" + }, + "Source": { + "type": "string" + }, + "SourceArn": { + "type": "string" + }, + "SourceIp": { + "$ref": "#/definitions/IpAddress" + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array" + } + }, + "readOnlyProperties": [ + "/properties/NetworkInsightsPathId", + "/properties/NetworkInsightsPathArn", + "/properties/CreatedDate", + "/properties/SourceArn", + "/properties/DestinationArn" + ], + "required": [ + "Protocol", + "Source" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ec2-ni.git", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "ec2:CreateTags", + "ec2:DeleteTags" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::EC2::NetworkInsightsPath" +} diff --git a/src/schema/aws-ec2-networkinterface.json b/src/schema/aws-ec2-networkinterface.json new file mode 100644 index 00000000..1880efff --- /dev/null +++ b/src/schema/aws-ec2-networkinterface.json @@ -0,0 +1,290 @@ +{ + "$schema": "https://raw.githubusercontent.com/aws-cloudformation/cloudformation-resource-schema/master/src/main/resources/schema/provider.definition.schema.v1.json", + "additionalProperties": false, + "conditionalCreateOnlyProperties": [ + "/properties/PrivateIpAddresses", + "/properties/EnablePrimaryIpv6", + "/properties/ConnectionTrackingSpecification" + ], + "createOnlyProperties": [ + "/properties/PrivateIpAddress", + "/properties/InterfaceType", + "/properties/SubnetId" + ], + "definitions": { + "ConnectionTrackingSpecification": { + "additionalProperties": false, + "properties": { + "TcpEstablishedTimeout": { + "type": "integer" + }, + "UdpStreamTimeout": { + "type": "integer" + }, + "UdpTimeout": { + "type": "integer" + } + }, + "type": "object" + }, + "InstanceIpv6Address": { + "additionalProperties": false, + "properties": { + "Ipv6Address": { + "type": "string" + } + }, + "required": [ + "Ipv6Address" + ], + "type": "object" + }, + "Ipv4PrefixSpecification": { + "additionalProperties": false, + "properties": { + "Ipv4Prefix": { + "type": "string" + } + }, + "required": [ + "Ipv4Prefix" + ], + "type": "object" + }, + "Ipv6PrefixSpecification": { + "additionalProperties": false, + "properties": { + "Ipv6Prefix": { + "type": "string" + } + }, + "required": [ + "Ipv6Prefix" + ], + "type": "object" + }, + "PrivateIpAddressSpecification": { + "additionalProperties": false, + "properties": { + "Primary": { + "type": "boolean" + }, + "PrivateIpAddress": { + "type": "string" + } + }, + "required": [ + "PrivateIpAddress", + "Primary" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "description": "The AWS::EC2::NetworkInterface resource creates network interface", + "handlers": { + "create": { + "permissions": [ + "ec2:CreateNetworkInterface", + "ec2:DescribeNetworkInterfaces", + "ec2:CreateTags", + "ec2:ModifyNetworkInterfaceAttribute", + "ec2:ModifyPublicIpDnsNameOptions" + ] + }, + "delete": { + "permissions": [ + "ec2:DescribeNetworkInterfaces", + "ec2:DeleteNetworkInterface" + ] + }, + "list": { + "permissions": [ + "ec2:DescribeNetworkInterfaces" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeNetworkInterfaces" + ] + }, + "update": { + "permissions": [ + "ec2:DescribeNetworkInterfaces", + "ec2:ModifyNetworkInterfaceAttribute", + "ec2:UnassignIpv6Addresses", + "ec2:AssignIpv6Addresses", + "ec2:DeleteTags", + "ec2:CreateTags", + "ec2:UnassignPrivateIpAddresses", + "ec2:AssignPrivateIpAddresses", + "ec2:ModifyPublicIpDnsNameOptions" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "ConnectionTrackingSpecification": { + "$ref": "#/definitions/ConnectionTrackingSpecification" + }, + "Description": { + "description": "A description for the network interface.", + "type": "string" + }, + "EnablePrimaryIpv6": { + "description": "If you have instances or ENIs that rely on the IPv6 address not changing, to avoid disrupting traffic to instances or ENIs, you can enable a primary IPv6 address. Enable this option to automatically assign an IPv6 associated with the ENI attached to your instance to be the primary IPv6 address. When you enable an IPv6 address to be a primary IPv6, you cannot disable it. Traffic will be routed to the primary IPv6 address until the instance is terminated or the ENI is detached. If you have multiple IPv6 addresses associated with an ENI and you enable a primary IPv6 address, the first IPv6 address associated with the ENI becomes the primary IPv6 address.", + "type": "boolean" + }, + "GroupSet": { + "description": "A list of security group IDs associated with this network interface.", + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "Id": { + "description": "Network interface id.", + "type": "string" + }, + "InterfaceType": { + "description": "Indicates the type of network interface.", + "type": "string" + }, + "Ipv4PrefixCount": { + "description": "The number of IPv4 prefixes to assign to a network interface. When you specify a number of IPv4 prefixes, Amazon EC2 selects these prefixes from your existing subnet CIDR reservations, if available, or from free spaces in the subnet. By default, these will be /28 prefixes. You can't specify a count of IPv4 prefixes if you've specified one of the following: specific IPv4 prefixes, specific private IPv4 addresses, or a count of private IPv4 addresses.", + "type": "integer" + }, + "Ipv4Prefixes": { + "description": "Assigns a list of IPv4 prefixes to the network interface. If you want EC2 to automatically assign IPv4 prefixes, use the Ipv4PrefixCount property and do not specify this property. Presently, only /28 prefixes are supported. You can't specify IPv4 prefixes if you've specified one of the following: a count of IPv4 prefixes, specific private IPv4 addresses, or a count of private IPv4 addresses.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Ipv4PrefixSpecification" + }, + "type": "array", + "uniqueItems": false + }, + "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.", + "type": "integer" + }, + "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.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/InstanceIpv6Address" + }, + "type": "array", + "uniqueItems": true + }, + "Ipv6PrefixCount": { + "description": "The number of IPv6 prefixes to assign to a network interface. When you specify a number of IPv6 prefixes, Amazon EC2 selects these prefixes from your existing subnet CIDR reservations, if available, or from free spaces in the subnet. By default, these will be /80 prefixes. You can't specify a count of IPv6 prefixes if you've specified one of the following: specific IPv6 prefixes, specific IPv6 addresses, or a count of IPv6 addresses.", + "type": "integer" + }, + "Ipv6Prefixes": { + "description": "Assigns a list of IPv6 prefixes to the network interface. If you want EC2 to automatically assign IPv6 prefixes, use the Ipv6PrefixCount property and do not specify this property. Presently, only /80 prefixes are supported. You can't specify IPv6 prefixes if you've specified one of the following: a count of IPv6 prefixes, specific IPv6 addresses, or a count of IPv6 addresses.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Ipv6PrefixSpecification" + }, + "type": "array", + "uniqueItems": false + }, + "PrimaryIpv6Address": { + "description": "The primary IPv6 address", + "type": "string" + }, + "PrimaryPrivateIpAddress": { + "description": "Returns the primary private IP address of the network interface.", + "type": "string" + }, + "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. ", + "type": "string" + }, + "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.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/PrivateIpAddressSpecification" + }, + "type": "array", + "uniqueItems": false + }, + "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", + "type": "integer" + }, + "SecondaryPrivateIpAddresses": { + "description": "Returns the secondary private IP addresses of the network interface.", + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "SourceDestCheck": { + "description": "Indicates whether traffic to or from the instance is validated.", + "type": "boolean" + }, + "SubnetId": { + "description": "The ID of the subnet to associate with the network interface.", + "type": "string" + }, + "Tags": { + "description": "An arbitrary set of tags (key-value pairs) for this network interface.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + }, + "VpcId": { + "description": "The ID of the VPC", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id", + "/properties/SecondaryPrivateIpAddresses", + "/properties/PrimaryPrivateIpAddress", + "/properties/PrimaryIpv6Address", + "/properties/VpcId" + ], + "required": [ + "SubnetId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ec2/networkinterface", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "ec2:CreateTags", + "ec2:DeleteTags" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::EC2::NetworkInterface" +} diff --git a/src/schema/aws-ec2-networkinterfaceattachment.json b/src/schema/aws-ec2-networkinterfaceattachment.json new file mode 100644 index 00000000..78740cf5 --- /dev/null +++ b/src/schema/aws-ec2-networkinterfaceattachment.json @@ -0,0 +1,117 @@ +{ + "additionalIdentifiers": [ + [ + "/properties/NetworkInterfaceId" + ] + ], + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/DeviceIndex", + "/properties/InstanceId", + "/properties/NetworkInterfaceId" + ], + "definitions": { + "EnaSrdSpecification": { + "additionalProperties": false, + "description": "ENA Express uses AWS Scalable Reliable Datagram (SRD) technology to increase the maximum bandwidth used per stream and minimize tail latency of network traffic between EC2 instances. With ENA Express, you can communicate between two EC2 instances in the same subnet within the same account, or in different accounts. Both sending and receiving instances must have ENA Express enabled.\n To improve the reliability of network packet delivery, ENA Express reorders network packets on the receiving end by default. However, some UDP-based applications are designed to handle network packets that are out of order to reduce the overhead for packet delivery at the network layer. When ENA Express is enabled, you can specify whether UDP network traffic uses it.", + "properties": { + "EnaSrdEnabled": { + "description": "Indicates whether ENA Express is enabled for the network interface.", + "type": "boolean" + }, + "EnaSrdUdpSpecification": { + "additionalProperties": false, + "description": "Configures ENA Express for UDP network traffic.", + "properties": { + "EnaSrdUdpEnabled": { + "type": "boolean" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "description": "Attaches an elastic network interface (ENI) to an Amazon EC2 instance. You can use this resource type to attach additional network interfaces to an instance without interruption.", + "handlers": { + "create": { + "permissions": [ + "ec2:AttachNetworkInterface", + "ec2:DescribeNetworkInterfaces", + "ec2:ModifyNetworkInterfaceAttribute" + ] + }, + "delete": { + "permissions": [ + "ec2:DetachNetworkInterface", + "ec2:DescribeNetworkInterfaces" + ] + }, + "list": { + "permissions": [ + "ec2:DescribeNetworkInterfaces" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeNetworkInterfaces" + ] + }, + "update": { + "permissions": [ + "ec2:ModifyNetworkInterfaceAttribute", + "ec2:DescribeNetworkInterfaces", + "ec2:AttachNetworkInterface", + "ec2:DetachNetworkInterface" + ] + } + }, + "primaryIdentifier": [ + "/properties/AttachmentId" + ], + "properties": { + "AttachmentId": { + "description": "", + "type": "string" + }, + "DeleteOnTermination": { + "default": true, + "description": "Whether to delete the network interface when the instance terminates. By default, this value is set to ``true``.", + "type": "boolean" + }, + "DeviceIndex": { + "description": "The network interface's position in the attachment order. For example, the first attached network interface has a ``DeviceIndex`` of 0.", + "type": "string" + }, + "EnaSrdSpecification": { + "$ref": "#/definitions/EnaSrdSpecification", + "description": "Configures ENA Express for the network interface that this action attaches to the instance." + }, + "InstanceId": { + "description": "The ID of the instance to which you will attach the ENI.", + "type": "string" + }, + "NetworkInterfaceId": { + "description": "The ID of the ENI that you want to attach.", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/AttachmentId" + ], + "replacementStrategy": "delete_then_create", + "required": [ + "DeviceIndex", + "InstanceId", + "NetworkInterfaceId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ec2.git", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::EC2::NetworkInterfaceAttachment" +} diff --git a/src/schema/aws-ec2-networkinterfacepermission.json b/src/schema/aws-ec2-networkinterfacepermission.json new file mode 100644 index 00000000..0f335ac6 --- /dev/null +++ b/src/schema/aws-ec2-networkinterfacepermission.json @@ -0,0 +1,35 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/AwsAccountId", + "/properties/Permission", + "/properties/NetworkInterfaceId" + ], + "description": "Resource Type definition for AWS::EC2::NetworkInterfacePermission", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "AwsAccountId": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "NetworkInterfaceId": { + "type": "string" + }, + "Permission": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "AwsAccountId", + "NetworkInterfaceId", + "Permission" + ], + "typeName": "AWS::EC2::NetworkInterfacePermission" +} diff --git a/src/schema/aws-ec2-networkperformancemetricsubscription.json b/src/schema/aws-ec2-networkperformancemetricsubscription.json new file mode 100644 index 00000000..b2c25de1 --- /dev/null +++ b/src/schema/aws-ec2-networkperformancemetricsubscription.json @@ -0,0 +1,70 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Source", + "/properties/Destination", + "/properties/Metric", + "/properties/Statistic" + ], + "definitions": {}, + "description": "Resource Type definition for AWS::EC2::NetworkPerformanceMetricSubscription", + "handlers": { + "create": { + "permissions": [ + "ec2:DescribeAwsNetworkPerformanceMetricSubscriptions", + "ec2:EnableAwsNetworkPerformanceMetricSubscription" + ] + }, + "delete": { + "permissions": [ + "ec2:DescribeAwsNetworkPerformanceMetricSubscriptions", + "ec2:DisableAwsNetworkPerformanceMetricSubscription" + ] + }, + "list": { + "permissions": [ + "ec2:DescribeAwsNetworkPerformanceMetricSubscriptions" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeAwsNetworkPerformanceMetricSubscriptions" + ] + } + }, + "primaryIdentifier": [ + "/properties/Source", + "/properties/Destination", + "/properties/Metric", + "/properties/Statistic" + ], + "properties": { + "Destination": { + "description": "The target Region or Availability Zone for the metric to subscribe to.", + "type": "string" + }, + "Metric": { + "description": "The metric type to subscribe to.", + "type": "string" + }, + "Source": { + "description": "The starting Region or Availability Zone for metric to subscribe to.", + "type": "string" + }, + "Statistic": { + "description": "The statistic to subscribe to.", + "type": "string" + } + }, + "required": [ + "Source", + "Destination", + "Metric", + "Statistic" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "tagging": { + "taggable": false + }, + "typeName": "AWS::EC2::NetworkPerformanceMetricSubscription" +} diff --git a/src/schema/aws-ec2-placementgroup.json b/src/schema/aws-ec2-placementgroup.json new file mode 100644 index 00000000..be9698b3 --- /dev/null +++ b/src/schema/aws-ec2-placementgroup.json @@ -0,0 +1,105 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Tags", + "/properties/Strategy", + "/properties/SpreadLevel", + "/properties/PartitionCount" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::EC2::PlacementGroup", + "handlers": { + "create": { + "permissions": [ + "ec2:CreatePlacementGroup", + "ec2:DescribePlacementGroups", + "ec2:CreateTags" + ] + }, + "delete": { + "permissions": [ + "ec2:DeletePlacementGroup", + "ec2:DescribePlacementGroups" + ] + }, + "list": { + "permissions": [ + "ec2:DescribePlacementGroups" + ] + }, + "read": { + "permissions": [ + "ec2:DescribePlacementGroups" + ] + } + }, + "primaryIdentifier": [ + "/properties/GroupName" + ], + "properties": { + "GroupName": { + "description": "The Group Name of Placement Group.", + "type": "string" + }, + "PartitionCount": { + "description": "The number of partitions. Valid only when **Strategy** is set to `partition`", + "type": "integer" + }, + "SpreadLevel": { + "description": "The Spread Level of Placement Group is an enum where it accepts either host or rack when strategy is spread", + "type": "string" + }, + "Strategy": { + "description": "The placement strategy.", + "type": "string" + }, + "Tags": { + "description": "An array of key-value pairs to apply to this resource.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/GroupName" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ec2", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "ec2:CreateTags" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": false, + "taggable": true + }, + "typeName": "AWS::EC2::PlacementGroup" +} diff --git a/src/schema/aws-ec2-prefixlist.json b/src/schema/aws-ec2-prefixlist.json new file mode 100644 index 00000000..d2151f9c --- /dev/null +++ b/src/schema/aws-ec2-prefixlist.json @@ -0,0 +1,156 @@ +{ + "additionalProperties": false, + "definitions": { + "Entry": { + "additionalProperties": false, + "properties": { + "Cidr": { + "maxLength": 46, + "minLength": 1, + "type": "string" + }, + "Description": { + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Cidr" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "maxLength": 256, + "type": "string" + } + }, + "required": [ + "Key" + ], + "type": "object" + } + }, + "description": "Resource schema of AWS::EC2::PrefixList Type", + "handlers": { + "create": { + "permissions": [ + "EC2:CreateManagedPrefixList", + "EC2:DescribeManagedPrefixLists", + "EC2:CreateTags" + ] + }, + "delete": { + "permissions": [ + "EC2:DeleteManagedPrefixList", + "EC2:DescribeManagedPrefixLists" + ] + }, + "list": { + "permissions": [ + "EC2:DescribeManagedPrefixLists", + "EC2:GetManagedPrefixListEntries" + ] + }, + "read": { + "permissions": [ + "EC2:GetManagedPrefixListEntries", + "EC2:DescribeManagedPrefixLists" + ] + }, + "update": { + "permissions": [ + "EC2:DescribeManagedPrefixLists", + "EC2:GetManagedPrefixListEntries", + "EC2:ModifyManagedPrefixList", + "EC2:CreateTags", + "EC2:DeleteTags" + ] + } + }, + "primaryIdentifier": [ + "/properties/PrefixListId" + ], + "properties": { + "AddressFamily": { + "description": "Ip Version of Prefix List.", + "enum": [ + "IPv4", + "IPv6" + ], + "type": "string" + }, + "Arn": { + "description": "The Amazon Resource Name (ARN) of the Prefix List.", + "type": "string" + }, + "Entries": { + "description": "Entries of Prefix List.", + "items": { + "$ref": "#/definitions/Entry" + }, + "type": "array" + }, + "MaxEntries": { + "description": "Max Entries of Prefix List.", + "minimum": 1, + "type": "integer" + }, + "OwnerId": { + "description": "Owner Id of Prefix List.", + "type": "string" + }, + "PrefixListId": { + "description": "Id of Prefix List.", + "type": "string" + }, + "PrefixListName": { + "description": "Name of Prefix List.", + "maxLength": 255, + "minLength": 1, + "type": "string" + }, + "Tags": { + "description": "Tags for Prefix List", + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array" + }, + "Version": { + "description": "Version of Prefix List.", + "type": "integer" + } + }, + "readOnlyProperties": [ + "/properties/PrefixListId", + "/properties/OwnerId", + "/properties/Version", + "/properties/Arn" + ], + "required": [ + "PrefixListName", + "AddressFamily" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "EC2:DeleteTags", + "EC2:CreateTags" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::EC2::PrefixList" +} diff --git a/src/schema/aws-ec2-route.json b/src/schema/aws-ec2-route.json new file mode 100644 index 00000000..beb98a9c --- /dev/null +++ b/src/schema/aws-ec2-route.json @@ -0,0 +1,133 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/RouteTableId", + "/properties/DestinationCidrBlock", + "/properties/DestinationIpv6CidrBlock", + "/properties/DestinationPrefixListId" + ], + "description": "Specifies a route in a route table. For more information, see [Routes](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Route_Tables.html#route-table-routes) in the *Amazon VPC User Guide*.\n You must specify either a destination CIDR block or prefix list ID. You must also specify exactly one of the resources as the target.\n If you create a route that references a transit gateway in the same template where you create the transit gateway, you must declare a dependency on the transit gateway attachment. The route table cannot use the transit gateway until it has successfully attached to the VPC. Add a [DependsOn Attribute](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-attribute-dependson.html) in the ``AWS::EC2::Route`` resource to explicitly declare a dependency on the ``AWS::EC2::TransitGatewayAttachment`` resource.", + "handlers": { + "create": { + "permissions": [ + "ec2:CreateRoute", + "ec2:DescribeRouteTables", + "ec2:DescribeNetworkInterfaces" + ] + }, + "delete": { + "permissions": [ + "ec2:DeleteRoute", + "ec2:DescribeRouteTables" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "RouteTableId": { + "$ref": "resource-schema.json#/properties/RouteTableId" + } + }, + "required": [ + "RouteTableId" + ] + }, + "permissions": [ + "ec2:DescribeRouteTables" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeRouteTables" + ] + }, + "update": { + "permissions": [ + "ec2:ReplaceRoute", + "ec2:DescribeRouteTables", + "ec2:DescribeNetworkInterfaces" + ] + } + }, + "primaryIdentifier": [ + "/properties/RouteTableId", + "/properties/CidrBlock" + ], + "properties": { + "CarrierGatewayId": { + "description": "The ID of the carrier gateway.\n You can only use this option when the VPC contains a subnet which is associated with a Wavelength Zone.", + "type": "string" + }, + "CidrBlock": { + "description": "", + "type": "string" + }, + "CoreNetworkArn": { + "description": "The Amazon Resource Name (ARN) of the core network.", + "type": "string" + }, + "DestinationCidrBlock": { + "description": "The IPv4 CIDR address block used for the destination match. Routing decisions are based on the most specific match. We modify the specified CIDR block to its canonical form; for example, if you specify ``100.68.0.18/18``, we modify it to ``100.68.0.0/18``.", + "type": "string" + }, + "DestinationIpv6CidrBlock": { + "description": "The IPv6 CIDR block used for the destination match. Routing decisions are based on the most specific match.", + "type": "string" + }, + "DestinationPrefixListId": { + "description": "The ID of a prefix list used for the destination match.", + "type": "string" + }, + "EgressOnlyInternetGatewayId": { + "description": "[IPv6 traffic only] The ID of an egress-only internet gateway.", + "type": "string" + }, + "GatewayId": { + "description": "The ID of an internet gateway or virtual private gateway attached to your VPC.", + "type": "string" + }, + "InstanceId": { + "description": "The ID of a NAT instance in your VPC. The operation fails if you specify an instance ID unless exactly one network interface is attached.", + "type": "string" + }, + "LocalGatewayId": { + "description": "The ID of the local gateway.", + "type": "string" + }, + "NatGatewayId": { + "description": "[IPv4 traffic only] The ID of a NAT gateway.", + "type": "string" + }, + "NetworkInterfaceId": { + "description": "The ID of a network interface.", + "type": "string" + }, + "RouteTableId": { + "description": "The ID of the route table for the route.", + "type": "string" + }, + "TransitGatewayId": { + "description": "The ID of a transit gateway.", + "type": "string" + }, + "VpcEndpointId": { + "description": "The ID of a VPC endpoint. Supported for Gateway Load Balancer endpoints only.", + "type": "string" + }, + "VpcPeeringConnectionId": { + "description": "The ID of a VPC peering connection.", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/CidrBlock" + ], + "required": [ + "RouteTableId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ec2", + "tagging": { + "taggable": false + }, + "typeName": "AWS::EC2::Route" +} diff --git a/src/schema/aws-ec2-routeserver.json b/src/schema/aws-ec2-routeserver.json new file mode 100644 index 00000000..83cd7bbb --- /dev/null +++ b/src/schema/aws-ec2-routeserver.json @@ -0,0 +1,144 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/AmazonSideAsn" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "VPC Route Server", + "handlers": { + "create": { + "permissions": [ + "ec2:CreateRouteServer", + "ec2:CreateTags", + "ec2:DescribeRouteServers", + "sns:CreateTopic" + ] + }, + "delete": { + "permissions": [ + "ec2:DescribeTags", + "ec2:DescribeRouteServers", + "ec2:DeleteRouteServer", + "ec2:DeleteTags", + "sns:DeleteTopic" + ] + }, + "list": { + "permissions": [ + "ec2:DescribeTags", + "ec2:DescribeRouteServers" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeRouteServers", + "ec2:DescribeTags" + ] + }, + "update": { + "permissions": [ + "ec2:CreateTags", + "ec2:DeleteTags", + "ec2:DescribeRouteServers", + "ec2:DescribeTags", + "ec2:ModifyRouteServer" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "AmazonSideAsn": { + "description": "The Amazon-side ASN of the Route Server.", + "format": "int64", + "maximum": 4294967294, + "minimum": 1, + "type": "integer" + }, + "Arn": { + "description": "The Amazon Resource Name (ARN) of the Route Server.", + "type": "string" + }, + "Id": { + "description": "The ID of the Route Server.", + "type": "string" + }, + "PersistRoutes": { + "description": "Whether to enable persistent routes", + "enum": [ + "enable", + "disable" + ], + "type": "string" + }, + "PersistRoutesDuration": { + "description": "The duration of persistent routes in minutes", + "format": "int64", + "maximum": 5, + "minimum": 0, + "type": "integer" + }, + "SnsNotificationsEnabled": { + "description": "Whether to enable SNS notifications", + "type": "boolean" + }, + "Tags": { + "description": "An array of key-value pairs to apply to this resource.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/Id" + ], + "required": [ + "AmazonSideAsn" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "ec2:CreateTags", + "ec2:DescribeTags", + "ec2:DeleteTags" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::EC2::RouteServer", + "writeOnlyProperties": [ + "/properties/PersistRoutesDuration" + ] +} diff --git a/src/schema/aws-ec2-routeserverassociation.json b/src/schema/aws-ec2-routeserverassociation.json new file mode 100644 index 00000000..b14bf6c6 --- /dev/null +++ b/src/schema/aws-ec2-routeserverassociation.json @@ -0,0 +1,60 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/RouteServerId", + "/properties/VpcId" + ], + "definitions": {}, + "description": "VPC Route Server Association", + "handlers": { + "create": { + "permissions": [ + "ec2:AssociateRouteServer", + "ec2:GetRouteServerAssociations" + ] + }, + "delete": { + "permissions": [ + "ec2:GetRouteServerAssociations", + "ec2:DisassociateRouteServer" + ] + }, + "list": { + "permissions": [ + "ec2:DescribeRouteServers", + "ec2:GetRouteServerAssociations" + ] + }, + "read": { + "permissions": [ + "ec2:GetRouteServerAssociations" + ] + } + }, + "primaryIdentifier": [ + "/properties/RouteServerId", + "/properties/VpcId" + ], + "properties": { + "RouteServerId": { + "description": "Route Server ID", + "type": "string" + }, + "VpcId": { + "description": "VPC ID", + "type": "string" + } + }, + "required": [ + "RouteServerId", + "VpcId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::EC2::RouteServerAssociation" +} diff --git a/src/schema/aws-ec2-routeserverendpoint.json b/src/schema/aws-ec2-routeserverendpoint.json new file mode 100644 index 00000000..edad254c --- /dev/null +++ b/src/schema/aws-ec2-routeserverendpoint.json @@ -0,0 +1,147 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/RouteServerId", + "/properties/SubnetId" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "VPC Route Server Endpoint", + "handlers": { + "create": { + "permissions": [ + "ec2:CreateRouteServerEndpoint", + "ec2:CreateTags", + "ec2:DescribeRouteServerEndpoints", + "ec2:CreateNetworkInterface", + "ec2:CreateNetworkInterfacePermission", + "ec2:CreateSecurityGroup", + "ec2:DescribeSecurityGroups", + "ec2:AuthorizeSecurityGroupIngress" + ] + }, + "delete": { + "permissions": [ + "ec2:DescribeTags", + "ec2:DescribeRouteServerEndpoints", + "ec2:DeleteRouteServerEndpoint", + "ec2:DeleteTags", + "ec2:DeleteNetworkInterface", + "ec2:DeleteSecurityGroup", + "ec2:DescribeSecurityGroups", + "ec2:RevokeSecurityGroupIngress" + ] + }, + "list": { + "permissions": [ + "ec2:DescribeTags", + "ec2:DescribeRouteServerEndpoints" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeRouteServerEndpoints", + "ec2:DescribeTags" + ] + }, + "update": { + "permissions": [ + "ec2:CreateTags", + "ec2:DeleteTags", + "ec2:DescribeRouteServerEndpoints", + "ec2:DescribeTags", + "ec2:ModifyRouteServerEndpoint" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Arn": { + "description": "The Amazon Resource Name (ARN) of the Route Server Endpoint.", + "type": "string" + }, + "EniAddress": { + "description": "Elastic Network Interface IP address owned by the Route Server Endpoint", + "type": "string" + }, + "EniId": { + "description": "Elastic Network Interface ID owned by the Route Server Endpoint", + "type": "string" + }, + "Id": { + "description": "The ID of the Route Server Endpoint.", + "type": "string" + }, + "RouteServerId": { + "description": "Route Server ID", + "type": "string" + }, + "SubnetId": { + "description": "Subnet ID", + "type": "string" + }, + "Tags": { + "description": "An array of key-value pairs to apply to this resource.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + }, + "VpcId": { + "description": "VPC ID", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/Id", + "/properties/EniId", + "/properties/EniAddress", + "/properties/VpcId" + ], + "required": [ + "RouteServerId", + "SubnetId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "ec2:CreateTags", + "ec2:DescribeTags", + "ec2:DeleteTags" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::EC2::RouteServerEndpoint" +} diff --git a/src/schema/aws-ec2-routeserverpeer.json b/src/schema/aws-ec2-routeserverpeer.json new file mode 100644 index 00000000..59b22868 --- /dev/null +++ b/src/schema/aws-ec2-routeserverpeer.json @@ -0,0 +1,177 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/RouteServerEndpointId", + "/properties/PeerAddress", + "/properties/BgpOptions" + ], + "definitions": { + "BgpOptions": { + "additionalProperties": false, + "description": "BGP Options", + "properties": { + "PeerAsn": { + "description": "BGP ASN of the Route Server Peer", + "format": "int64", + "maximum": 4294967294, + "minimum": 1, + "type": "integer" + }, + "PeerLivenessDetection": { + "description": "BGP Liveness Detection", + "enum": [ + "bfd", + "bgp-keepalive" + ], + "type": "string" + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "VPC Route Server Peer", + "handlers": { + "create": { + "permissions": [ + "ec2:CreateRouteServerPeer", + "ec2:CreateTags", + "ec2:DescribeRouteServerPeers", + "ec2:AuthorizeSecurityGroupIngress" + ] + }, + "delete": { + "permissions": [ + "ec2:DescribeTags", + "ec2:DescribeRouteServerPeers", + "ec2:DeleteRouteServerPeer", + "ec2:DeleteTags", + "ec2:RevokeSecurityGroupIngress" + ] + }, + "list": { + "permissions": [ + "ec2:DescribeTags", + "ec2:DescribeRouteServerPeers" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeRouteServerPeers", + "ec2:DescribeTags" + ] + }, + "update": { + "permissions": [ + "ec2:CreateTags", + "ec2:DeleteTags", + "ec2:DescribeRouteServerPeers", + "ec2:DescribeTags", + "ec2:ModifyRouteServerPeer" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Arn": { + "description": "The Amazon Resource Name (ARN) of the Route Server Peer.", + "type": "string" + }, + "BgpOptions": { + "$ref": "#/definitions/BgpOptions" + }, + "EndpointEniAddress": { + "description": "Elastic Network Interface IP address owned by the Route Server Endpoint", + "type": "string" + }, + "EndpointEniId": { + "description": "Elastic Network Interface ID owned by the Route Server Endpoint", + "type": "string" + }, + "Id": { + "description": "The ID of the Route Server Peer.", + "type": "string" + }, + "PeerAddress": { + "description": "IP address of the Route Server Peer", + "type": "string" + }, + "RouteServerEndpointId": { + "description": "Route Server Endpoint ID", + "type": "string" + }, + "RouteServerId": { + "description": "Route Server ID", + "type": "string" + }, + "SubnetId": { + "description": "Subnet ID", + "type": "string" + }, + "Tags": { + "description": "An array of key-value pairs to apply to this resource.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + }, + "VpcId": { + "description": "VPC ID", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/Id", + "/properties/RouteServerId", + "/properties/EndpointEniId", + "/properties/EndpointEniAddress", + "/properties/SubnetId", + "/properties/VpcId" + ], + "required": [ + "RouteServerEndpointId", + "PeerAddress", + "BgpOptions" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "ec2:CreateTags", + "ec2:DescribeTags", + "ec2:DeleteTags" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::EC2::RouteServerPeer" +} diff --git a/src/schema/aws-ec2-routeserverpropagation.json b/src/schema/aws-ec2-routeserverpropagation.json new file mode 100644 index 00000000..4224e02f --- /dev/null +++ b/src/schema/aws-ec2-routeserverpropagation.json @@ -0,0 +1,60 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/RouteServerId", + "/properties/RouteTableId" + ], + "definitions": {}, + "description": "VPC Route Server Propagation", + "handlers": { + "create": { + "permissions": [ + "ec2:EnableRouteServerPropagation", + "ec2:GetRouteServerPropagations" + ] + }, + "delete": { + "permissions": [ + "ec2:GetRouteServerPropagations", + "ec2:DisableRouteServerPropagation" + ] + }, + "list": { + "permissions": [ + "ec2:DescribeRouteServers", + "ec2:GetRouteServerPropagations" + ] + }, + "read": { + "permissions": [ + "ec2:GetRouteServerPropagations" + ] + } + }, + "primaryIdentifier": [ + "/properties/RouteServerId", + "/properties/RouteTableId" + ], + "properties": { + "RouteServerId": { + "description": "Route Server ID", + "type": "string" + }, + "RouteTableId": { + "description": "Route Table ID", + "type": "string" + } + }, + "required": [ + "RouteServerId", + "RouteTableId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::EC2::RouteServerPropagation" +} diff --git a/src/schema/aws-ec2-routetable.json b/src/schema/aws-ec2-routetable.json new file mode 100644 index 00000000..4e49e7c1 --- /dev/null +++ b/src/schema/aws-ec2-routetable.json @@ -0,0 +1,101 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/VpcId" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "description": "Specifies a tag. For more information, see [Resource tags](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-resource-tags.html).", + "properties": { + "Key": { + "description": "The tag key.", + "type": "string" + }, + "Value": { + "description": "The tag value.", + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "description": "Specifies a route table for the specified VPC. After you create a route table, you can add routes and associate the table with a subnet.\n For more information, see [Route tables](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Route_Tables.html) in the *Amazon VPC User Guide*.", + "handlers": { + "create": { + "permissions": [ + "ec2:CreateRouteTable", + "ec2:CreateTags", + "ec2:DescribeRouteTables" + ] + }, + "delete": { + "permissions": [ + "ec2:DescribeRouteTables", + "ec2:DeleteRouteTable" + ] + }, + "list": { + "permissions": [ + "ec2:DescribeRouteTables" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeRouteTables" + ] + }, + "update": { + "permissions": [ + "ec2:CreateTags", + "ec2:DeleteTags", + "ec2:DescribeRouteTables" + ] + } + }, + "primaryIdentifier": [ + "/properties/RouteTableId" + ], + "properties": { + "RouteTableId": { + "description": "", + "type": "string" + }, + "Tags": { + "description": "Any tags assigned to the route table.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + }, + "VpcId": { + "description": "The ID of the VPC.", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/RouteTableId" + ], + "required": [ + "VpcId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ec2", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "ec2:CreateTags", + "ec2:DeleteTags" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::EC2::RouteTable" +} diff --git a/src/schema/aws-ec2-securitygroup.json b/src/schema/aws-ec2-securitygroup.json new file mode 100644 index 00000000..a4f39c2b --- /dev/null +++ b/src/schema/aws-ec2-securitygroup.json @@ -0,0 +1,225 @@ +{ + "$schema": "https://raw.githubusercontent.com/aws-cloudformation/cloudformation-resource-schema/master/src/main/resources/schema/provider.definition.schema.v1.json", + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/GroupDescription", + "/properties/GroupName", + "/properties/VpcId" + ], + "definitions": { + "Egress": { + "additionalProperties": false, + "properties": { + "CidrIp": { + "type": "string" + }, + "CidrIpv6": { + "type": "string" + }, + "Description": { + "type": "string" + }, + "DestinationPrefixListId": { + "type": "string" + }, + "DestinationSecurityGroupId": { + "type": "string" + }, + "FromPort": { + "type": "integer" + }, + "IpProtocol": { + "type": "string" + }, + "ToPort": { + "type": "integer" + } + }, + "required": [ + "IpProtocol" + ], + "type": "object" + }, + "Ingress": { + "additionalProperties": false, + "properties": { + "CidrIp": { + "type": "string" + }, + "CidrIpv6": { + "type": "string" + }, + "Description": { + "type": "string" + }, + "FromPort": { + "type": "integer" + }, + "IpProtocol": { + "type": "string" + }, + "SourcePrefixListId": { + "type": "string" + }, + "SourceSecurityGroupId": { + "type": "string" + }, + "SourceSecurityGroupName": { + "type": "string" + }, + "SourceSecurityGroupOwnerId": { + "type": "string" + }, + "ToPort": { + "type": "integer" + } + }, + "required": [ + "IpProtocol" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "deprecatedProperties": [ + "/properties/SecurityGroupEgress/*/SourceSecurityGroupId" + ], + "description": "Resource Type definition for AWS::EC2::SecurityGroup", + "handlers": { + "create": { + "permissions": [ + "ec2:CreateSecurityGroup", + "ec2:DescribeSecurityGroups", + "ec2:RevokeSecurityGroupEgress", + "ec2:AuthorizeSecurityGroupEgress", + "ec2:AuthorizeSecurityGroupIngress", + "ec2:CreateTags" + ] + }, + "delete": { + "permissions": [ + "ec2:DescribeSecurityGroups", + "ec2:DeleteSecurityGroup", + "ec2:DescribeInstances" + ] + }, + "list": { + "permissions": [ + "ec2:DescribeSecurityGroups" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeSecurityGroups" + ] + }, + "update": { + "permissions": [ + "ec2:RevokeSecurityGroupEgress", + "ec2:RevokeSecurityGroupIngress", + "ec2:DescribeSecurityGroups", + "ec2:AuthorizeSecurityGroupEgress", + "ec2:AuthorizeSecurityGroupIngress", + "ec2:CreateTags", + "ec2:DeleteTags" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "GroupDescription": { + "description": "A description for the security group.", + "type": "string" + }, + "GroupId": { + "description": "The group ID of the specified security group.", + "type": "string" + }, + "GroupName": { + "description": "The name of the security group.", + "type": "string" + }, + "Id": { + "description": "The group name or group ID depending on whether the SG is created in default or specific VPC", + "type": "string" + }, + "SecurityGroupEgress": { + "description": "[VPC only] The outbound rules associated with the security group. There is a short interruption during which you cannot connect to the security group.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Egress" + }, + "type": "array", + "uniqueItems": false + }, + "SecurityGroupIngress": { + "description": "The inbound rules associated with the security group. There is a short interruption during which you cannot connect to the security group.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Ingress" + }, + "type": "array", + "uniqueItems": false + }, + "Tags": { + "description": "Any tags assigned to the security group.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + }, + "VpcId": { + "description": "The ID of the VPC for the security group.", + "type": "string" + } + }, + "propertyTransform": { + "/properties/SecurityGroupEgress/*/FromPort": "($mapVal := $lookup({'1': 'icmp','6': 'tcp','17': 'udp','58': 'icmpv6'}, IpProtocol);$ipProtocol := $mapVal ? $mapVal : $lowercase(IpProtocol);$ipProtocol in ['imcp', 'tcp', 'udp', 'imcp'] ? FromPort : -1)", + "/properties/SecurityGroupEgress/*/IpProtocol": "($mapVal := $lookup({'1': 'icmp','6': 'tcp','17': 'udp','58': 'icmpv6'}, IpProtocol);$mapVal ? $mapVal : $lowercase(IpProtocol))", + "/properties/SecurityGroupEgress/*/ToPort": "($mapVal := $lookup({'1': 'icmp','6': 'tcp','17': 'udp','58': 'icmpv6'}, IpProtocol);$ipProtocol := $mapVal ? $mapVal : $lowercase(IpProtocol);$ipProtocol in ['imcp', 'tcp', 'udp', 'imcp'] ? ToPort : -1)", + "/properties/SecurityGroupIngress/*/FromPort": "($mapVal := $lookup({'1': 'icmp','6': 'tcp','17': 'udp','58': 'icmpv6'}, IpProtocol);$ipProtocol := $mapVal ? $mapVal : $lowercase(IpProtocol);$ipProtocol in ['imcp', 'tcp', 'udp', 'imcp'] ? FromPort : -1)", + "/properties/SecurityGroupIngress/*/IpProtocol": "($mapVal := $lookup({'1': 'icmp','6': 'tcp','17': 'udp','58': 'icmpv6'}, IpProtocol);$mapVal ? $mapVal : $lowercase(IpProtocol))", + "/properties/SecurityGroupIngress/*/ToPort": "($mapVal := $lookup({'1': 'icmp','6': 'tcp','17': 'udp','58': 'icmpv6'}, IpProtocol);$ipProtocol := $mapVal ? $mapVal : $lowercase(IpProtocol);$ipProtocol in ['imcp', 'tcp', 'udp', 'imcp'] ? ToPort : -1)" + }, + "readOnlyProperties": [ + "/properties/Id", + "/properties/GroupId" + ], + "required": [ + "GroupDescription" + ], + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "ec2:CreateTags", + "ec2:DeleteTags" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::EC2::SecurityGroup", + "writeOnlyProperties": [ + "/properties/SecurityGroupIngress/*/SourceSecurityGroupName" + ] +} diff --git a/src/schema/aws-ec2-securitygroupegress.json b/src/schema/aws-ec2-securitygroupegress.json new file mode 100644 index 00000000..4a164bd0 --- /dev/null +++ b/src/schema/aws-ec2-securitygroupegress.json @@ -0,0 +1,109 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/IpProtocol", + "/properties/DestinationSecurityGroupId", + "/properties/ToPort", + "/properties/CidrIp", + "/properties/FromPort", + "/properties/GroupId", + "/properties/CidrIpv6", + "/properties/DestinationPrefixListId" + ], + "description": "Adds the specified outbound (egress) rule to a security group.\n An outbound rule permits instances to send traffic to the specified IPv4 or IPv6 address range, the IP addresses that are specified by a prefix list, or the instances that are associated with a destination security group. For more information, see [Security group rules](https://docs.aws.amazon.com/vpc/latest/userguide/security-group-rules.html).\n You must specify exactly one of the following destinations: an IPv4 address range, an IPv6 address range, a prefix list, or a security group.\n You must specify a protocol for each rule (for example, TCP). If the protocol is TCP or UDP, you must also specify a port or port range. If the protocol is ICMP or ICMPv6, you must also specify the ICMP/ICMPv6 type and code. To specify all types or all codes, use -1.\n Rule changes are propagated to instances associated with the security group as quickly as possible. However, a small delay might occur.", + "handlers": { + "create": { + "permissions": [ + "ec2:AuthorizeSecurityGroupEgress", + "ec2:RevokeSecurityGroupEgress", + "ec2:DescribeSecurityGroupRules" + ] + }, + "delete": { + "permissions": [ + "ec2:RevokeSecurityGroupEgress", + "ec2:DescribeSecurityGroupRules" + ] + }, + "list": { + "permissions": [ + "ec2:DescribeSecurityGroupRules" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeSecurityGroupRules" + ] + }, + "update": { + "permissions": [ + "ec2:UpdateSecurityGroupRuleDescriptionsEgress" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "CidrIp": { + "description": "The IPv4 address range, in CIDR format.\n You must specify exactly one of the following: ``CidrIp``, ``CidrIpv6``, ``DestinationPrefixListId``, or ``DestinationSecurityGroupId``.\n For examples of rules that you can add to security groups for specific access scenarios, see [Security group rules for different use cases](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/security-group-rules-reference.html) in the *User Guide*.", + "type": "string" + }, + "CidrIpv6": { + "description": "The IPv6 address range, in CIDR format.\n You must specify exactly one of the following: ``CidrIp``, ``CidrIpv6``, ``DestinationPrefixListId``, or ``DestinationSecurityGroupId``.\n For examples of rules that you can add to security groups for specific access scenarios, see [Security group rules for different use cases](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/security-group-rules-reference.html) in the *User Guide*.", + "type": "string" + }, + "Description": { + "description": "The description of an egress (outbound) security group rule.\n Constraints: Up to 255 characters in length. Allowed characters are a-z, A-Z, 0-9, spaces, and ._-:/()#,@[]+=;{}!$*", + "type": "string" + }, + "DestinationPrefixListId": { + "description": "The prefix list IDs for an AWS service. This is the AWS service to access through a VPC endpoint from instances associated with the security group.\n You must specify exactly one of the following: ``CidrIp``, ``CidrIpv6``, ``DestinationPrefixListId``, or ``DestinationSecurityGroupId``.", + "type": "string" + }, + "DestinationSecurityGroupId": { + "description": "The ID of the security group.\n You must specify exactly one of the following: ``CidrIp``, ``CidrIpv6``, ``DestinationPrefixListId``, or ``DestinationSecurityGroupId``.", + "type": "string" + }, + "FromPort": { + "description": "If the protocol is TCP or UDP, this is the start of the port range. If the protocol is ICMP or ICMPv6, this is the ICMP type or -1 (all ICMP types).", + "type": "integer" + }, + "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.", + "type": "string" + }, + "Id": { + "description": "", + "type": "string" + }, + "IpProtocol": { + "description": "The IP protocol name (``tcp``, ``udp``, ``icmp``, ``icmpv6``) or number (see [Protocol Numbers](https://docs.aws.amazon.com/http://www.iana.org/assignments/protocol-numbers/protocol-numbers.xhtml)).\n Use ``-1`` to specify all protocols. When authorizing security group rules, specifying ``-1`` or a protocol number other than ``tcp``, ``udp``, ``icmp``, or ``icmpv6`` allows traffic on all ports, regardless of any port range you specify. For ``tcp``, ``udp``, and ``icmp``, you must specify a port range. For ``icmpv6``, the port range is optional; if you omit the port range, traffic for all types and codes is allowed.", + "type": "string" + }, + "ToPort": { + "description": "If the protocol is TCP or UDP, this is the end of the port range. If the protocol is ICMP or ICMPv6, this is the ICMP code or -1 (all ICMP codes). If the start port is -1 (all ICMP types), then the end port must be -1 (all ICMP codes).", + "type": "integer" + } + }, + "propertyTransform": { + "/properties/FromPort": "($mapVal := $lookup({'1': 'icmp','6': 'tcp','17': 'udp','58': 'icmpv6'}, IpProtocol);$ipProtocol := $mapVal ? $mapVal : $lowercase(IpProtocol);$ipProtocol in ['imcp', 'tcp', 'udp', 'imcp'] ? FromPort : -1)", + "/properties/IpProtocol": "($mapVal := $lookup({'1': 'icmp','6': 'tcp','17': 'udp','58': 'icmpv6'}, IpProtocol);$mapVal ? $mapVal : $lowercase(IpProtocol))", + "/properties/ToPort": "($mapVal := $lookup({'1': 'icmp','6': 'tcp','17': 'udp','58': 'icmpv6'}, IpProtocol);$ipProtocol := $mapVal ? $mapVal : $lowercase(IpProtocol);$ipProtocol in ['imcp', 'tcp', 'udp', 'imcp'] ? ToPort : -1)" + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "IpProtocol", + "GroupId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ec2.git", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::EC2::SecurityGroupEgress" +} diff --git a/src/schema/aws-ec2-securitygroupingress.json b/src/schema/aws-ec2-securitygroupingress.json new file mode 100644 index 00000000..685592bf --- /dev/null +++ b/src/schema/aws-ec2-securitygroupingress.json @@ -0,0 +1,123 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/GroupName", + "/properties/IpProtocol", + "/properties/SourceSecurityGroupId", + "/properties/SourcePrefixListId", + "/properties/ToPort", + "/properties/CidrIp", + "/properties/SourceSecurityGroupName", + "/properties/SourceSecurityGroupOwnerId", + "/properties/FromPort", + "/properties/GroupId", + "/properties/CidrIpv6" + ], + "description": "Resource Type definition for AWS::EC2::SecurityGroupIngress", + "handlers": { + "create": { + "permissions": [ + "ec2:DescribeSecurityGroupRules", + "ec2:AuthorizeSecurityGroupIngress" + ] + }, + "delete": { + "permissions": [ + "ec2:DescribeSecurityGroupRules", + "ec2:RevokeSecurityGroupIngress" + ] + }, + "list": { + "permissions": [ + "ec2:DescribeSecurityGroupRules" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeSecurityGroups", + "ec2:DescribeSecurityGroupRules" + ] + }, + "update": { + "permissions": [ + "ec2:UpdateSecurityGroupRuleDescriptionsIngress" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "CidrIp": { + "description": "The IPv4 ranges", + "type": "string" + }, + "CidrIpv6": { + "description": "[VPC only] The IPv6 ranges", + "type": "string" + }, + "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", + "type": "string" + }, + "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.\n\nUse this for ICMP and any protocol that uses ports.", + "type": "integer" + }, + "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.\n\nYou must specify the GroupName property or the GroupId property. For security groups that are in a VPC, you must use the GroupId property.", + "type": "string" + }, + "GroupName": { + "description": "The name of the security group.", + "type": "string" + }, + "Id": { + "description": "The Security Group Rule Id", + "type": "string" + }, + "IpProtocol": { + "description": "The IP protocol name (tcp, udp, icmp, icmpv6) or number (see Protocol Numbers).\n\n[VPC only] Use -1 to specify all protocols. When authorizing security group rules, specifying -1 or a protocol number other than tcp, udp, icmp, or icmpv6 allows traffic on all ports, regardless of any port range you specify. For tcp, udp, and icmp, you must specify a port range. For icmpv6, the port range is optional; if you omit the port range, traffic for all types and codes is allowed.", + "type": "string" + }, + "SourcePrefixListId": { + "description": "[EC2-VPC only] The ID of a prefix list.\n\n", + "type": "string" + }, + "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.", + "type": "string" + }, + "SourceSecurityGroupName": { + "description": "[EC2-Classic, default VPC] The name of the source security group.\n\nYou must specify the GroupName property or the GroupId property. For security groups that are in a VPC, you must use the GroupId property.", + "type": "string" + }, + "SourceSecurityGroupOwnerId": { + "description": "[nondefault VPC] The AWS account ID that owns the source security group. You can't specify this property with an IP address range.\n\nIf you specify SourceSecurityGroupName or SourceSecurityGroupId and that security group is owned by a different account than the account creating the stack, you must specify the SourceSecurityGroupOwnerId; otherwise, this property is optional.", + "type": "string" + }, + "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.\n\nUse this for ICMP and any protocol that uses ports.", + "type": "integer" + } + }, + "propertyTransform": { + "/properties/FromPort": "($mapVal := $lookup({'1': 'icmp','6': 'tcp','17': 'udp','58': 'icmpv6'}, IpProtocol);$ipProtocol := $mapVal ? $mapVal : $lowercase(IpProtocol);$ipProtocol in ['imcp', 'tcp', 'udp', 'imcp'] ? FromPort : -1)", + "/properties/IpProtocol": "($mapVal := $lookup({'1': 'icmp','6': 'tcp','17': 'udp','58': 'icmpv6'}, IpProtocol);$mapVal ? $mapVal : $lowercase(IpProtocol))", + "/properties/ToPort": "($mapVal := $lookup({'1': 'icmp','6': 'tcp','17': 'udp','58': 'icmpv6'}, IpProtocol);$ipProtocol := $mapVal ? $mapVal : $lowercase(IpProtocol);$ipProtocol in ['imcp', 'tcp', 'udp', 'imcp'] ? ToPort : -1)" + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "IpProtocol" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ec2.git", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::EC2::SecurityGroupIngress" +} diff --git a/src/schema/aws-ec2-securitygroupvpcassociation.json b/src/schema/aws-ec2-securitygroupvpcassociation.json new file mode 100644 index 00000000..e3c2829a --- /dev/null +++ b/src/schema/aws-ec2-securitygroupvpcassociation.json @@ -0,0 +1,85 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/GroupId", + "/properties/VpcId" + ], + "definitions": { + "SecurityGroupVpcAssociationState": { + "additionalProperties": false, + "enum": [ + "associating", + "associated", + "association-failed", + "disassociating", + "disassociated", + "disassociation-failed" + ], + "type": "string" + } + }, + "description": "Resource type definition for the AWS::EC2::SecurityGroupVpcAssociation resource", + "handlers": { + "create": { + "permissions": [ + "ec2:AssociateSecurityGroupVpc", + "ec2:DescribeSecurityGroupVpcAssociations" + ] + }, + "delete": { + "permissions": [ + "ec2:DisassociateSecurityGroupVpc", + "ec2:DescribeSecurityGroupVpcAssociations" + ] + }, + "list": { + "permissions": [ + "ec2:DescribeSecurityGroupVpcAssociations" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeSecurityGroupVpcAssociations" + ] + } + }, + "primaryIdentifier": [ + "/properties/GroupId", + "/properties/VpcId" + ], + "properties": { + "GroupId": { + "description": "The group ID of the specified security group.", + "type": "string" + }, + "State": { + "$ref": "#/definitions/SecurityGroupVpcAssociationState", + "description": "The state of the security group vpc association." + }, + "StateReason": { + "description": "The reason for the state of the security group vpc association.", + "type": "string" + }, + "VpcId": { + "description": "The ID of the VPC in the security group vpc association.", + "type": "string" + }, + "VpcOwnerId": { + "description": "The owner of the VPC in the security group vpc association.", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/VpcOwnerId", + "/properties/State", + "/properties/StateReason" + ], + "required": [ + "GroupId", + "VpcId" + ], + "tagging": { + "taggable": false + }, + "typeName": "AWS::EC2::SecurityGroupVpcAssociation" +} diff --git a/src/schema/aws-ec2-snapshotblockpublicaccess.json b/src/schema/aws-ec2-snapshotblockpublicaccess.json new file mode 100644 index 00000000..f45e595f --- /dev/null +++ b/src/schema/aws-ec2-snapshotblockpublicaccess.json @@ -0,0 +1,62 @@ +{ + "additionalProperties": false, + "description": "Resource Type definition for AWS::EC2::SnapshotBlockPublicAccess", + "handlers": { + "create": { + "permissions": [ + "ec2:EnableSnapshotBlockPublicAccess", + "ec2:GetSnapshotBlockPublicAccessState" + ] + }, + "delete": { + "permissions": [ + "ec2:DisableSnapshotBlockPublicAccess", + "ec2:GetSnapshotBlockPublicAccessState" + ] + }, + "list": { + "permissions": [ + "ec2:GetSnapshotBlockPublicAccessState" + ] + }, + "read": { + "permissions": [ + "ec2:GetSnapshotBlockPublicAccessState" + ] + }, + "update": { + "permissions": [ + "ec2:EnableSnapshotBlockPublicAccess", + "ec2:GetSnapshotBlockPublicAccessState" + ] + } + }, + "primaryIdentifier": [ + "/properties/AccountId" + ], + "properties": { + "AccountId": { + "description": "The identifier for the specified AWS account.", + "type": "string" + }, + "State": { + "description": "The state of EBS Snapshot Block Public Access.", + "enum": [ + "block-all-sharing", + "block-new-sharing" + ], + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/AccountId" + ], + "required": [ + "State" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ec2.git", + "tagging": { + "taggable": false + }, + "typeName": "AWS::EC2::SnapshotBlockPublicAccess" +} diff --git a/src/schema/aws-ec2-spotfleet.json b/src/schema/aws-ec2-spotfleet.json new file mode 100644 index 00000000..f4dd478a --- /dev/null +++ b/src/schema/aws-ec2-spotfleet.json @@ -0,0 +1,1014 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/SpotFleetRequestConfigData/AllocationStrategy", + "/properties/SpotFleetRequestConfigData/IamFleetRole", + "/properties/SpotFleetRequestConfigData/InstanceInterruptionBehavior", + "/properties/SpotFleetRequestConfigData/InstancePoolsToUseCount", + "/properties/SpotFleetRequestConfigData/LaunchSpecifications", + "/properties/SpotFleetRequestConfigData/LaunchTemplateConfigs", + "/properties/SpotFleetRequestConfigData/LoadBalancersConfig", + "/properties/SpotFleetRequestConfigData/OnDemandAllocationStrategy", + "/properties/SpotFleetRequestConfigData/OnDemandMaxTotalPrice", + "/properties/SpotFleetRequestConfigData/OnDemandTargetCapacity", + "/properties/SpotFleetRequestConfigData/ReplaceUnhealthyInstances", + "/properties/SpotFleetRequestConfigData/SpotMaintenanceStrategies", + "/properties/SpotFleetRequestConfigData/SpotMaxTotalPrice", + "/properties/SpotFleetRequestConfigData/SpotPrice", + "/properties/SpotFleetRequestConfigData/TagSpecifications", + "/properties/SpotFleetRequestConfigData/TerminateInstancesWithExpiration", + "/properties/SpotFleetRequestConfigData/Type", + "/properties/SpotFleetRequestConfigData/ValidFrom", + "/properties/SpotFleetRequestConfigData/ValidUntil" + ], + "definitions": { + "AcceleratorCountRequest": { + "additionalProperties": false, + "properties": { + "Max": { + "type": "integer" + }, + "Min": { + "type": "integer" + } + }, + "type": "object" + }, + "AcceleratorTotalMemoryMiBRequest": { + "additionalProperties": false, + "properties": { + "Max": { + "type": "integer" + }, + "Min": { + "type": "integer" + } + }, + "type": "object" + }, + "BaselineEbsBandwidthMbpsRequest": { + "additionalProperties": false, + "properties": { + "Max": { + "type": "integer" + }, + "Min": { + "type": "integer" + } + }, + "type": "object" + }, + "BaselinePerformanceFactorsRequest": { + "additionalProperties": false, + "properties": { + "Cpu": { + "$ref": "#/definitions/CpuPerformanceFactorRequest" + } + }, + "type": "object" + }, + "BlockDeviceMapping": { + "additionalProperties": false, + "properties": { + "DeviceName": { + "type": "string" + }, + "Ebs": { + "$ref": "#/definitions/EbsBlockDevice" + }, + "NoDevice": { + "type": "string" + }, + "VirtualName": { + "type": "string" + } + }, + "required": [ + "DeviceName" + ], + "type": "object" + }, + "ClassicLoadBalancer": { + "additionalProperties": false, + "properties": { + "Name": { + "type": "string" + } + }, + "required": [ + "Name" + ], + "type": "object" + }, + "ClassicLoadBalancersConfig": { + "additionalProperties": false, + "properties": { + "ClassicLoadBalancers": { + "items": { + "$ref": "#/definitions/ClassicLoadBalancer" + }, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "ClassicLoadBalancers" + ], + "type": "object" + }, + "CpuPerformanceFactorRequest": { + "additionalProperties": false, + "properties": { + "References": { + "items": { + "$ref": "#/definitions/PerformanceFactorReferenceRequest" + }, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + }, + "EbsBlockDevice": { + "additionalProperties": false, + "properties": { + "DeleteOnTermination": { + "type": "boolean" + }, + "Encrypted": { + "type": "boolean" + }, + "Iops": { + "type": "integer" + }, + "SnapshotId": { + "type": "string" + }, + "VolumeSize": { + "type": "integer" + }, + "VolumeType": { + "enum": [ + "gp2", + "gp3", + "io1", + "io2", + "sc1", + "st1", + "standard" + ], + "type": "string" + } + }, + "type": "object" + }, + "FleetLaunchTemplateSpecification": { + "additionalProperties": false, + "properties": { + "LaunchTemplateId": { + "type": "string" + }, + "LaunchTemplateName": { + "maxLength": 128, + "minLength": 3, + "pattern": "[a-zA-Z0-9\\(\\)\\.\\-/_]+", + "type": "string" + }, + "Version": { + "type": "string" + } + }, + "required": [ + "Version" + ], + "type": "object" + }, + "GroupIdentifier": { + "additionalProperties": false, + "properties": { + "GroupId": { + "type": "string" + } + }, + "required": [ + "GroupId" + ], + "type": "object" + }, + "IamInstanceProfileSpecification": { + "additionalProperties": false, + "properties": { + "Arn": { + "type": "string" + } + }, + "type": "object" + }, + "InstanceIpv6Address": { + "additionalProperties": false, + "properties": { + "Ipv6Address": { + "type": "string" + } + }, + "required": [ + "Ipv6Address" + ], + "type": "object" + }, + "InstanceNetworkInterfaceSpecification": { + "additionalProperties": false, + "properties": { + "AssociatePublicIpAddress": { + "type": "boolean" + }, + "DeleteOnTermination": { + "type": "boolean" + }, + "Description": { + "type": "string" + }, + "DeviceIndex": { + "type": "integer" + }, + "Groups": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "Ipv6AddressCount": { + "type": "integer" + }, + "Ipv6Addresses": { + "items": { + "$ref": "#/definitions/InstanceIpv6Address" + }, + "type": "array", + "uniqueItems": true + }, + "NetworkInterfaceId": { + "type": "string" + }, + "PrivateIpAddresses": { + "items": { + "$ref": "#/definitions/PrivateIpAddressSpecification" + }, + "type": "array", + "uniqueItems": true + }, + "SecondaryPrivateIpAddressCount": { + "type": "integer" + }, + "SubnetId": { + "type": "string" + } + }, + "type": "object" + }, + "InstanceRequirementsRequest": { + "additionalProperties": false, + "properties": { + "AcceleratorCount": { + "$ref": "#/definitions/AcceleratorCountRequest" + }, + "AcceleratorManufacturers": { + "items": { + "enum": [ + "amazon-web-services", + "amd", + "habana", + "nvidia", + "xilinx" + ], + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "AcceleratorNames": { + "items": { + "enum": [ + "a10g", + "a100", + "h100", + "inferentia", + "k520", + "k80", + "m60", + "radeon-pro-v520", + "t4", + "t4g", + "vu9p", + "v100" + ], + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "AcceleratorTotalMemoryMiB": { + "$ref": "#/definitions/AcceleratorTotalMemoryMiBRequest" + }, + "AcceleratorTypes": { + "items": { + "enum": [ + "gpu", + "fpga", + "inference" + ], + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "AllowedInstanceTypes": { + "items": { + "maxLength": 30, + "minLength": 1, + "pattern": "[a-zA-Z0-9\\.\\*]+", + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "BareMetal": { + "enum": [ + "included", + "required", + "excluded" + ], + "type": "string" + }, + "BaselineEbsBandwidthMbps": { + "$ref": "#/definitions/BaselineEbsBandwidthMbpsRequest" + }, + "BaselinePerformanceFactors": { + "$ref": "#/definitions/BaselinePerformanceFactorsRequest" + }, + "BurstablePerformance": { + "enum": [ + "included", + "required", + "excluded" + ], + "type": "string" + }, + "CpuManufacturers": { + "items": { + "enum": [ + "intel", + "amd", + "amazon-web-services", + "apple" + ], + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "ExcludedInstanceTypes": { + "items": { + "maxLength": 30, + "minLength": 1, + "pattern": "[a-zA-Z0-9\\.\\*]+", + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "InstanceGenerations": { + "items": { + "enum": [ + "current", + "previous" + ], + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "LocalStorage": { + "enum": [ + "included", + "required", + "excluded" + ], + "type": "string" + }, + "LocalStorageTypes": { + "items": { + "enum": [ + "hdd", + "ssd" + ], + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "MaxSpotPriceAsPercentageOfOptimalOnDemandPrice": { + "type": "integer" + }, + "MemoryGiBPerVCpu": { + "$ref": "#/definitions/MemoryGiBPerVCpuRequest" + }, + "MemoryMiB": { + "$ref": "#/definitions/MemoryMiBRequest" + }, + "NetworkBandwidthGbps": { + "$ref": "#/definitions/NetworkBandwidthGbpsRequest" + }, + "NetworkInterfaceCount": { + "$ref": "#/definitions/NetworkInterfaceCountRequest" + }, + "OnDemandMaxPricePercentageOverLowestPrice": { + "type": "integer" + }, + "RequireHibernateSupport": { + "type": "boolean" + }, + "SpotMaxPricePercentageOverLowestPrice": { + "type": "integer" + }, + "TotalLocalStorageGB": { + "$ref": "#/definitions/TotalLocalStorageGBRequest" + }, + "VCpuCount": { + "$ref": "#/definitions/VCpuCountRangeRequest" + } + }, + "type": "object" + }, + "LaunchTemplateConfig": { + "additionalProperties": false, + "properties": { + "LaunchTemplateSpecification": { + "$ref": "#/definitions/FleetLaunchTemplateSpecification" + }, + "Overrides": { + "items": { + "$ref": "#/definitions/LaunchTemplateOverrides" + }, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + "LaunchTemplateOverrides": { + "additionalProperties": false, + "properties": { + "AvailabilityZone": { + "type": "string" + }, + "InstanceRequirements": { + "$ref": "#/definitions/InstanceRequirementsRequest" + }, + "InstanceType": { + "type": "string" + }, + "Priority": { + "type": "number" + }, + "SpotPrice": { + "type": "string" + }, + "SubnetId": { + "type": "string" + }, + "WeightedCapacity": { + "type": "number" + } + }, + "type": "object" + }, + "LoadBalancersConfig": { + "additionalProperties": false, + "properties": { + "ClassicLoadBalancersConfig": { + "$ref": "#/definitions/ClassicLoadBalancersConfig" + }, + "TargetGroupsConfig": { + "$ref": "#/definitions/TargetGroupsConfig" + } + }, + "type": "object" + }, + "MemoryGiBPerVCpuRequest": { + "additionalProperties": false, + "properties": { + "Max": { + "type": "number" + }, + "Min": { + "type": "number" + } + }, + "type": "object" + }, + "MemoryMiBRequest": { + "additionalProperties": false, + "properties": { + "Max": { + "type": "integer" + }, + "Min": { + "type": "integer" + } + }, + "type": "object" + }, + "NetworkBandwidthGbpsRequest": { + "additionalProperties": false, + "properties": { + "Max": { + "type": "number" + }, + "Min": { + "type": "number" + } + }, + "type": "object" + }, + "NetworkInterfaceCountRequest": { + "additionalProperties": false, + "properties": { + "Max": { + "type": "integer" + }, + "Min": { + "type": "integer" + } + }, + "type": "object" + }, + "PerformanceFactorReferenceRequest": { + "additionalProperties": false, + "properties": { + "InstanceFamily": { + "type": "string" + } + }, + "type": "object" + }, + "PrivateIpAddressSpecification": { + "additionalProperties": false, + "properties": { + "Primary": { + "type": "boolean" + }, + "PrivateIpAddress": { + "type": "string" + } + }, + "required": [ + "PrivateIpAddress" + ], + "type": "object" + }, + "SpotCapacityRebalance": { + "additionalProperties": false, + "properties": { + "ReplacementStrategy": { + "enum": [ + "launch", + "launch-before-terminate" + ], + "type": "string" + }, + "TerminationDelay": { + "type": "integer" + } + }, + "type": "object" + }, + "SpotFleetLaunchSpecification": { + "additionalProperties": false, + "properties": { + "BlockDeviceMappings": { + "items": { + "$ref": "#/definitions/BlockDeviceMapping" + }, + "type": "array", + "uniqueItems": true + }, + "EbsOptimized": { + "default": false, + "type": "boolean" + }, + "IamInstanceProfile": { + "$ref": "#/definitions/IamInstanceProfileSpecification" + }, + "ImageId": { + "type": "string" + }, + "InstanceRequirements": { + "$ref": "#/definitions/InstanceRequirementsRequest" + }, + "InstanceType": { + "type": "string" + }, + "KernelId": { + "type": "string" + }, + "KeyName": { + "type": "string" + }, + "Monitoring": { + "$ref": "#/definitions/SpotFleetMonitoring" + }, + "NetworkInterfaces": { + "items": { + "$ref": "#/definitions/InstanceNetworkInterfaceSpecification" + }, + "type": "array", + "uniqueItems": true + }, + "Placement": { + "$ref": "#/definitions/SpotPlacement" + }, + "RamdiskId": { + "type": "string" + }, + "SecurityGroups": { + "items": { + "$ref": "#/definitions/GroupIdentifier" + }, + "type": "array", + "uniqueItems": true + }, + "SpotPrice": { + "type": "string" + }, + "SubnetId": { + "type": "string" + }, + "TagSpecifications": { + "items": { + "$ref": "#/definitions/SpotFleetTagSpecification" + }, + "type": "array", + "uniqueItems": true + }, + "UserData": { + "type": "string" + }, + "WeightedCapacity": { + "type": "number" + } + }, + "required": [ + "ImageId" + ], + "type": "object" + }, + "SpotFleetMonitoring": { + "additionalProperties": false, + "properties": { + "Enabled": { + "default": false, + "type": "boolean" + } + }, + "type": "object" + }, + "SpotFleetRequestConfigData": { + "additionalProperties": false, + "properties": { + "AllocationStrategy": { + "enum": [ + "capacityOptimized", + "capacityOptimizedPrioritized", + "diversified", + "lowestPrice", + "priceCapacityOptimized" + ], + "type": "string" + }, + "Context": { + "type": "string" + }, + "ExcessCapacityTerminationPolicy": { + "enum": [ + "Default", + "NoTermination", + "default", + "noTermination" + ], + "type": "string" + }, + "IamFleetRole": { + "type": "string" + }, + "InstanceInterruptionBehavior": { + "enum": [ + "hibernate", + "stop", + "terminate" + ], + "type": "string" + }, + "InstancePoolsToUseCount": { + "type": "integer" + }, + "LaunchSpecifications": { + "items": { + "$ref": "#/definitions/SpotFleetLaunchSpecification" + }, + "type": "array", + "uniqueItems": true + }, + "LaunchTemplateConfigs": { + "items": { + "$ref": "#/definitions/LaunchTemplateConfig" + }, + "type": "array", + "uniqueItems": true + }, + "LoadBalancersConfig": { + "$ref": "#/definitions/LoadBalancersConfig" + }, + "OnDemandAllocationStrategy": { + "type": "string" + }, + "OnDemandMaxTotalPrice": { + "type": "string" + }, + "OnDemandTargetCapacity": { + "type": "integer" + }, + "ReplaceUnhealthyInstances": { + "type": "boolean" + }, + "SpotMaintenanceStrategies": { + "$ref": "#/definitions/SpotMaintenanceStrategies" + }, + "SpotMaxTotalPrice": { + "type": "string" + }, + "SpotPrice": { + "type": "string" + }, + "TagSpecifications": { + "items": { + "$ref": "#/definitions/SpotFleetTagSpecification" + }, + "type": "array", + "uniqueItems": true + }, + "TargetCapacity": { + "type": "integer" + }, + "TargetCapacityUnitType": { + "enum": [ + "vcpu", + "memory-mib", + "units" + ], + "type": "string" + }, + "TerminateInstancesWithExpiration": { + "type": "boolean" + }, + "Type": { + "enum": [ + "maintain", + "request" + ], + "type": "string" + }, + "ValidFrom": { + "type": "string" + }, + "ValidUntil": { + "type": "string" + } + }, + "required": [ + "IamFleetRole", + "TargetCapacity" + ], + "type": "object" + }, + "SpotFleetTagSpecification": { + "additionalProperties": false, + "properties": { + "ResourceType": { + "enum": [ + "client-vpn-endpoint", + "customer-gateway", + "dedicated-host", + "dhcp-options", + "egress-only-internet-gateway", + "elastic-gpu", + "elastic-ip", + "export-image-task", + "export-instance-task", + "fleet", + "fpga-image", + "host-reservation", + "image", + "import-image-task", + "import-snapshot-task", + "instance", + "internet-gateway", + "key-pair", + "launch-template", + "local-gateway-route-table-vpc-association", + "natgateway", + "network-acl", + "network-insights-analysis", + "network-insights-path", + "network-interface", + "placement-group", + "reserved-instances", + "route-table", + "security-group", + "snapshot", + "spot-fleet-request", + "spot-instances-request", + "subnet", + "traffic-mirror-filter", + "traffic-mirror-session", + "traffic-mirror-target", + "transit-gateway", + "transit-gateway-attachment", + "transit-gateway-connect-peer", + "transit-gateway-multicast-domain", + "transit-gateway-route-table", + "volume", + "vpc", + "vpc-flow-log", + "vpc-peering-connection", + "vpn-connection", + "vpn-gateway" + ], + "type": "string" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + }, + "SpotMaintenanceStrategies": { + "additionalProperties": false, + "properties": { + "CapacityRebalance": { + "$ref": "#/definitions/SpotCapacityRebalance" + } + }, + "type": "object" + }, + "SpotPlacement": { + "additionalProperties": false, + "properties": { + "AvailabilityZone": { + "type": "string" + }, + "GroupName": { + "type": "string" + }, + "Tenancy": { + "enum": [ + "dedicated", + "default", + "host" + ], + "type": "string" + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + }, + "TargetGroup": { + "additionalProperties": false, + "properties": { + "Arn": { + "type": "string" + } + }, + "required": [ + "Arn" + ], + "type": "object" + }, + "TargetGroupsConfig": { + "additionalProperties": false, + "properties": { + "TargetGroups": { + "items": { + "$ref": "#/definitions/TargetGroup" + }, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "TargetGroups" + ], + "type": "object" + }, + "TotalLocalStorageGBRequest": { + "additionalProperties": false, + "properties": { + "Max": { + "type": "number" + }, + "Min": { + "type": "number" + } + }, + "type": "object" + }, + "VCpuCountRangeRequest": { + "additionalProperties": false, + "properties": { + "Max": { + "type": "integer" + }, + "Min": { + "type": "integer" + } + }, + "type": "object" + } + }, + "description": "Resource Type definition for AWS::EC2::SpotFleet", + "handlers": { + "create": { + "permissions": [ + "iam:PassRole", + "ec2:CreateTags", + "ec2:RequestSpotFleet", + "ec2:DescribeSpotFleetRequests", + "ec2:RunInstances" + ] + }, + "delete": { + "permissions": [ + "ec2:DescribeSpotFleetRequests", + "ec2:CancelSpotFleetRequests" + ] + }, + "list": { + "permissions": [ + "ec2:DescribeSpotFleetRequests" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeSpotFleetRequests" + ] + }, + "update": { + "permissions": [ + "ec2:ModifySpotFleetRequest", + "ec2:DescribeSpotFleetRequests" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Id": { + "type": "string" + }, + "SpotFleetRequestConfigData": { + "$ref": "#/definitions/SpotFleetRequestConfigData" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "SpotFleetRequestConfigData" + ], + "typeName": "AWS::EC2::SpotFleet", + "writeOnlyProperties": [ + "/properties/SpotFleetRequestConfigData/TagSpecifications", + "/properties/SpotFleetRequestConfigData/LaunchSpecifications/*/NetworkInterfaces/*/Groups" + ] +} diff --git a/src/schema/aws-ec2-subnet.json b/src/schema/aws-ec2-subnet.json new file mode 100644 index 00000000..42a2f274 --- /dev/null +++ b/src/schema/aws-ec2-subnet.json @@ -0,0 +1,210 @@ +{ + "additionalProperties": false, + "conditionalCreateOnlyProperties": [ + "/properties/Ipv6CidrBlock" + ], + "createOnlyProperties": [ + "/properties/VpcId", + "/properties/AvailabilityZone", + "/properties/AvailabilityZoneId", + "/properties/CidrBlock", + "/properties/OutpostArn", + "/properties/Ipv6Native", + "/properties/Ipv4IpamPoolId", + "/properties/Ipv4NetmaskLength", + "/properties/Ipv6IpamPoolId", + "/properties/Ipv6NetmaskLength" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "description": "Specifies a tag. For more information, see [Resource tags](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-resource-tags.html).", + "properties": { + "Key": { + "description": "The tag key.", + "type": "string" + }, + "Value": { + "description": "The tag value.", + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "description": "Specifies a subnet for the specified VPC.\n For an IPv4 only subnet, specify an IPv4 CIDR block. If the VPC has an IPv6 CIDR block, you can create an IPv6 only subnet or a dual stack subnet instead. For an IPv6 only subnet, specify an IPv6 CIDR block. For a dual stack subnet, specify both an IPv4 CIDR block and an IPv6 CIDR block.\n For more information, see [Subnets for your VPC](https://docs.aws.amazon.com/vpc/latest/userguide/configure-subnets.html) in the *Amazon VPC User Guide*.", + "handlers": { + "create": { + "permissions": [ + "ec2:DescribeSubnets", + "ec2:CreateSubnet", + "ec2:CreateTags", + "ec2:ModifySubnetAttribute" + ] + }, + "delete": { + "permissions": [ + "ec2:DescribeSubnets", + "ec2:DeleteSubnet" + ] + }, + "list": { + "permissions": [ + "ec2:DescribeSubnets", + "ec2:DescribeNetworkAcls" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeSubnets", + "ec2:DescribeNetworkAcls" + ] + }, + "update": { + "permissions": [ + "ec2:DescribeSubnets", + "ec2:ModifySubnetAttribute", + "ec2:CreateTags", + "ec2:DeleteTags", + "ec2:AssociateSubnetCidrBlock", + "ec2:DisassociateSubnetCidrBlock" + ] + } + }, + "primaryIdentifier": [ + "/properties/SubnetId" + ], + "properties": { + "AssignIpv6AddressOnCreation": { + "description": "Indicates whether a network interface created in this subnet receives an IPv6 address. The default value is ``false``.\n If you specify ``AssignIpv6AddressOnCreation``, you must also specify an IPv6 CIDR block.", + "type": "boolean" + }, + "AvailabilityZone": { + "description": "The Availability Zone of the subnet.\n If you update this property, you must also update the ``CidrBlock`` property.", + "type": "string" + }, + "AvailabilityZoneId": { + "description": "The AZ ID of the subnet.", + "type": "string" + }, + "CidrBlock": { + "description": "The IPv4 CIDR block assigned to the subnet.\n If you update this property, we create a new subnet, and then delete the existing one.", + "type": "string" + }, + "EnableDns64": { + "description": "Indicates whether DNS queries made to the Amazon-provided DNS Resolver in this subnet should return synthetic IPv6 addresses for IPv4-only destinations.\n You must first configure a NAT gateway in a public subnet (separate from the subnet containing the IPv6-only workloads). For example, the subnet containing the NAT gateway should have a ``0.0.0.0/0`` route pointing to the internet gateway. For more information, see [Configure DNS64 and NAT64](https://docs.aws.amazon.com/vpc/latest/userguide/nat-gateway-nat64-dns64.html#nat-gateway-nat64-dns64-walkthrough) in the *User Guide*.", + "type": "boolean" + }, + "EnableLniAtDeviceIndex": { + "description": "Indicates the device position for local network interfaces in this subnet. For example, ``1`` indicates local network interfaces in this subnet are the secondary network interface (eth1).", + "type": "integer" + }, + "Ipv4IpamPoolId": { + "description": "An IPv4 IPAM pool ID for the subnet.", + "type": "string" + }, + "Ipv4NetmaskLength": { + "description": "An IPv4 netmask length for the subnet.", + "type": "integer" + }, + "Ipv6CidrBlock": { + "description": "The IPv6 CIDR block.\n If you specify ``AssignIpv6AddressOnCreation``, you must also specify an IPv6 CIDR block.", + "type": "string" + }, + "Ipv6CidrBlocks": { + "description": "", + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "Ipv6IpamPoolId": { + "description": "An IPv6 IPAM pool ID for the subnet.", + "type": "string" + }, + "Ipv6Native": { + "description": "Indicates whether this is an IPv6 only subnet. For more information, see [Subnet basics](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Subnets.html#subnet-basics) in the *User Guide*.", + "type": "boolean" + }, + "Ipv6NetmaskLength": { + "description": "An IPv6 netmask length for the subnet.", + "type": "integer" + }, + "MapPublicIpOnLaunch": { + "description": "Indicates whether instances launched in this subnet receive a public IPv4 address. The default value is ``false``.\n AWS charges for all public IPv4 addresses, including public IPv4 addresses associated with running instances and Elastic IP addresses. For more information, see the *Public IPv4 Address* tab on the [VPC pricing page](https://docs.aws.amazon.com/vpc/pricing/).", + "type": "boolean" + }, + "NetworkAclAssociationId": { + "description": "", + "type": "string" + }, + "OutpostArn": { + "description": "The Amazon Resource Name (ARN) of the Outpost.", + "type": "string" + }, + "PrivateDnsNameOptionsOnLaunch": { + "additionalProperties": false, + "description": "The hostname type for EC2 instances launched into this subnet and how DNS A and AAAA record queries to the instances should be handled. For more information, see [Amazon EC2 instance hostname types](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-naming.html) in the *User Guide*.\n Available options:\n + EnableResourceNameDnsAAAARecord (true | false)\n + EnableResourceNameDnsARecord (true | false)\n + HostnameType (ip-name | resource-name)", + "properties": { + "EnableResourceNameDnsAAAARecord": { + "type": "boolean" + }, + "EnableResourceNameDnsARecord": { + "type": "boolean" + }, + "HostnameType": { + "type": "string" + } + }, + "type": "object" + }, + "SubnetId": { + "description": "", + "type": "string" + }, + "Tags": { + "description": "Any tags assigned to the subnet.", + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + }, + "VpcId": { + "description": "The ID of the VPC the subnet is in.\n If you update this property, you must also update the ``CidrBlock`` property.", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/NetworkAclAssociationId", + "/properties/SubnetId", + "/properties/Ipv6CidrBlocks" + ], + "required": [ + "VpcId" + ], + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "ec2:CreateTags", + "ec2:DeleteTags" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::EC2::Subnet", + "writeOnlyProperties": [ + "/properties/EnableLniAtDeviceIndex", + "/properties/Ipv4IpamPoolId", + "/properties/Ipv4NetmaskLength", + "/properties/Ipv6IpamPoolId", + "/properties/Ipv6NetmaskLength" + ] +} diff --git a/src/schema/aws-ec2-subnetcidrblock.json b/src/schema/aws-ec2-subnetcidrblock.json new file mode 100644 index 00000000..401ac1d5 --- /dev/null +++ b/src/schema/aws-ec2-subnetcidrblock.json @@ -0,0 +1,94 @@ +{ + "$schema": "https://schema.cloudformation.us-east-1.amazonaws.com/provider.definition.schema.v1.json", + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Ipv6CidrBlock", + "/properties/SubnetId", + "/properties/Ipv6IpamPoolId", + "/properties/Ipv6NetmaskLength" + ], + "description": "The AWS::EC2::SubnetCidrBlock resource creates association between subnet and IPv6 CIDR", + "handlers": { + "create": { + "permissions": [ + "ec2:AssociateSubnetCidrBlock", + "ec2:DescribeSubnets" + ] + }, + "delete": { + "permissions": [ + "ec2:DisassociateSubnetCidrBlock", + "ec2:DescribeSubnets" + ] + }, + "list": { + "permissions": [ + "ec2:DescribeSubnets" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeSubnets" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Id": { + "description": "Information about the IPv6 association.", + "type": "string" + }, + "IpSource": { + "description": "The IP Source of an IPv6 Subnet CIDR Block.", + "type": "string" + }, + "Ipv6AddressAttribute": { + "description": "The value denoting whether an IPv6 Subnet CIDR Block is public or private.", + "type": "string" + }, + "Ipv6CidrBlock": { + "description": "The IPv6 network range for the subnet, in CIDR notation. The subnet size must use a /64 prefix length", + "maxLength": 42, + "type": "string" + }, + "Ipv6IpamPoolId": { + "description": "The ID of an IPv6 Amazon VPC IP Address Manager (IPAM) pool from which to allocate, to get the subnet's CIDR", + "type": "string" + }, + "Ipv6NetmaskLength": { + "description": "The netmask length of the IPv6 CIDR to allocate to the subnet from an IPAM pool", + "maximum": 128, + "minimum": 0, + "type": "integer" + }, + "SubnetId": { + "description": "The ID of the subnet", + "type": "string" + } + }, + "propertyTransform": { + "/properties/Ipv6CidrBlock": "$join([$match($replace(Ipv6CidrBlock, /(^|:)(0{1,4})([0-9a-fA-F]{1,4})/, \"$1$3\"), /^([0-9a-fA-F]{1,4}:){4}/).match, \":/64\"])" + }, + "readOnlyProperties": [ + "/properties/Id", + "/properties/Ipv6AddressAttribute", + "/properties/IpSource" + ], + "required": [ + "SubnetId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ec2/subnetcidrblock", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::EC2::SubnetCidrBlock", + "writeOnlyProperties": [ + "/properties/Ipv6IpamPoolId", + "/properties/Ipv6NetmaskLength" + ] +} diff --git a/src/schema/aws-ec2-subnetnetworkaclassociation.json b/src/schema/aws-ec2-subnetnetworkaclassociation.json new file mode 100644 index 00000000..07e6e9d4 --- /dev/null +++ b/src/schema/aws-ec2-subnetnetworkaclassociation.json @@ -0,0 +1,64 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/SubnetId", + "/properties/NetworkAclId" + ], + "description": "Resource Type definition for AWS::EC2::SubnetNetworkAclAssociation", + "handlers": { + "create": { + "permissions": [ + "ec2:DescribeNetworkAcls", + "ec2:ReplaceNetworkAclAssociation" + ] + }, + "delete": { + "permissions": [ + "ec2:DescribeNetworkAcls", + "ec2:ReplaceNetworkAclAssociation" + ] + }, + "list": { + "permissions": [ + "ec2:DescribeNetworkAcls" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeNetworkAcls" + ] + } + }, + "primaryIdentifier": [ + "/properties/AssociationId" + ], + "properties": { + "AssociationId": { + "type": "string" + }, + "NetworkAclId": { + "description": "The ID of the network ACL", + "type": "string" + }, + "SubnetId": { + "description": "The ID of the subnet", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/AssociationId" + ], + "replacementStrategy": "delete_then_create", + "required": [ + "NetworkAclId", + "SubnetId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ec2.git", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::EC2::SubnetNetworkAclAssociation" +} diff --git a/src/schema/aws-ec2-subnetroutetableassociation.json b/src/schema/aws-ec2-subnetroutetableassociation.json new file mode 100644 index 00000000..0061f56c --- /dev/null +++ b/src/schema/aws-ec2-subnetroutetableassociation.json @@ -0,0 +1,68 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/SubnetId", + "/properties/RouteTableId" + ], + "description": "Associates a subnet with a route table. The subnet and route table must be in the same VPC. This association causes traffic originating from the subnet to be routed according to the routes in the route table. A route table can be associated with multiple subnets. To create a route table, see [AWS::EC2::RouteTable](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-routetable.html).", + "handlers": { + "create": { + "permissions": [ + "ec2:AssociateRouteTable", + "ec2:ReplaceRouteTableAssociation", + "ec2:DescribeSubnets", + "ec2:DescribeRouteTables" + ] + }, + "delete": { + "permissions": [ + "ec2:DisassociateRouteTable", + "ec2:DescribeSubnets", + "ec2:DescribeRouteTables" + ] + }, + "list": { + "permissions": [ + "ec2:DescribeRouteTables" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeRouteTables" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Id": { + "description": "", + "type": "string" + }, + "RouteTableId": { + "description": "The ID of the route table.\n The physical ID changes when the route table ID is changed.", + "type": "string" + }, + "SubnetId": { + "description": "The ID of the subnet.", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "replacementStrategy": "delete_then_create", + "required": [ + "RouteTableId", + "SubnetId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ec2.git", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::EC2::SubnetRouteTableAssociation" +} diff --git a/src/schema/aws-ec2-trafficmirrorfilter.json b/src/schema/aws-ec2-trafficmirrorfilter.json new file mode 100644 index 00000000..42639293 --- /dev/null +++ b/src/schema/aws-ec2-trafficmirrorfilter.json @@ -0,0 +1,54 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Description" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::EC2::TrafficMirrorFilter", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Description": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "NetworkServices": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "typeName": "AWS::EC2::TrafficMirrorFilter" +} diff --git a/src/schema/aws-ec2-trafficmirrorfilterrule.json b/src/schema/aws-ec2-trafficmirrorfilterrule.json new file mode 100644 index 00000000..850e64d0 --- /dev/null +++ b/src/schema/aws-ec2-trafficmirrorfilterrule.json @@ -0,0 +1,98 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/TrafficMirrorFilterId" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + }, + "TrafficMirrorPortRange": { + "additionalProperties": false, + "properties": { + "FromPort": { + "type": "integer" + }, + "ToPort": { + "type": "integer" + } + }, + "required": [ + "FromPort", + "ToPort" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::EC2::TrafficMirrorFilterRule", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Description": { + "type": "string" + }, + "DestinationCidrBlock": { + "type": "string" + }, + "DestinationPortRange": { + "$ref": "#/definitions/TrafficMirrorPortRange" + }, + "Id": { + "type": "string" + }, + "Protocol": { + "type": "integer" + }, + "RuleAction": { + "type": "string" + }, + "RuleNumber": { + "type": "integer" + }, + "SourceCidrBlock": { + "type": "string" + }, + "SourcePortRange": { + "$ref": "#/definitions/TrafficMirrorPortRange" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + }, + "TrafficDirection": { + "type": "string" + }, + "TrafficMirrorFilterId": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "RuleAction", + "SourceCidrBlock", + "RuleNumber", + "DestinationCidrBlock", + "TrafficMirrorFilterId", + "TrafficDirection" + ], + "typeName": "AWS::EC2::TrafficMirrorFilterRule" +} diff --git a/src/schema/aws-ec2-trafficmirrorsession.json b/src/schema/aws-ec2-trafficmirrorsession.json new file mode 100644 index 00000000..8489c11f --- /dev/null +++ b/src/schema/aws-ec2-trafficmirrorsession.json @@ -0,0 +1,71 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/NetworkInterfaceId" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::EC2::TrafficMirrorSession", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Description": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "NetworkInterfaceId": { + "type": "string" + }, + "PacketLength": { + "type": "integer" + }, + "SessionNumber": { + "type": "integer" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + }, + "TrafficMirrorFilterId": { + "type": "string" + }, + "TrafficMirrorTargetId": { + "type": "string" + }, + "VirtualNetworkId": { + "type": "integer" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "TrafficMirrorTargetId", + "NetworkInterfaceId", + "TrafficMirrorFilterId", + "SessionNumber" + ], + "typeName": "AWS::EC2::TrafficMirrorSession" +} diff --git a/src/schema/aws-ec2-trafficmirrortarget.json b/src/schema/aws-ec2-trafficmirrortarget.json new file mode 100644 index 00000000..09e5523e --- /dev/null +++ b/src/schema/aws-ec2-trafficmirrortarget.json @@ -0,0 +1,59 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/GatewayLoadBalancerEndpointId", + "/properties/NetworkLoadBalancerArn", + "/properties/NetworkInterfaceId", + "/properties/Description" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::EC2::TrafficMirrorTarget", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Description": { + "type": "string" + }, + "GatewayLoadBalancerEndpointId": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "NetworkInterfaceId": { + "type": "string" + }, + "NetworkLoadBalancerArn": { + "type": "string" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "typeName": "AWS::EC2::TrafficMirrorTarget" +} diff --git a/src/schema/aws-ec2-transitgateway.json b/src/schema/aws-ec2-transitgateway.json new file mode 100644 index 00000000..841d1763 --- /dev/null +++ b/src/schema/aws-ec2-transitgateway.json @@ -0,0 +1,143 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/AmazonSideAsn", + "/properties/MulticastSupport" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::EC2::TransitGateway", + "handlers": { + "create": { + "permissions": [ + "ec2:CreateTransitGateway", + "ec2:CreateTags", + "ec2:DescribeTransitGateways", + "ec2:DescribeTags" + ] + }, + "delete": { + "permissions": [ + "ec2:DescribeTransitGateways", + "ec2:DescribeTags", + "ec2:DeleteTransitGateway", + "ec2:DeleteTags" + ] + }, + "list": { + "permissions": [ + "ec2:DescribeTransitGateways", + "ec2:DescribeTags" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeTransitGateways", + "ec2:DescribeTags" + ] + }, + "update": { + "permissions": [ + "ec2:CreateTransitGateway", + "ec2:CreateTags", + "ec2:DescribeTransitGateways", + "ec2:DescribeTags", + "ec2:DeleteTransitGateway", + "ec2:DeleteTags", + "ec2:ModifyTransitGateway", + "ec2:ModifyTransitGatewayOptions" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "AmazonSideAsn": { + "format": "int64", + "type": "integer" + }, + "AssociationDefaultRouteTableId": { + "type": "string" + }, + "AutoAcceptSharedAttachments": { + "type": "string" + }, + "DefaultRouteTableAssociation": { + "type": "string" + }, + "DefaultRouteTablePropagation": { + "type": "string" + }, + "Description": { + "type": "string" + }, + "DnsSupport": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "MulticastSupport": { + "type": "string" + }, + "PropagationDefaultRouteTableId": { + "type": "string" + }, + "SecurityGroupReferencingSupport": { + "type": "string" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + }, + "TransitGatewayArn": { + "type": "string" + }, + "TransitGatewayCidrBlocks": { + "items": { + "type": "string" + }, + "type": "array" + }, + "VpnEcmpSupport": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id", + "/properties/TransitGatewayArn" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-transitgateway", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "ec2:CreateTags", + "ec2:DeleteTags" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::EC2::TransitGateway" +} diff --git a/src/schema/aws-ec2-transitgatewayattachment.json b/src/schema/aws-ec2-transitgatewayattachment.json new file mode 100644 index 00000000..994129bb --- /dev/null +++ b/src/schema/aws-ec2-transitgatewayattachment.json @@ -0,0 +1,145 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/TransitGatewayId", + "/properties/VpcId" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::EC2::TransitGatewayAttachment", + "handlers": { + "create": { + "permissions": [ + "ec2:DescribeTransitGatewayVpcAttachments", + "ec2:CreateTransitGatewayVpcAttachment", + "ec2:CreateTags", + "ec2:DescribeTags" + ] + }, + "delete": { + "permissions": [ + "ec2:DescribeTransitGatewayVpcAttachments", + "ec2:DeleteTransitGatewayVpcAttachment", + "ec2:DeleteTags", + "ec2:DescribeTags" + ] + }, + "list": { + "permissions": [ + "ec2:DescribeTransitGatewayVpcAttachments", + "ec2:DescribeTags" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeTransitGatewayVpcAttachments", + "ec2:DescribeTags" + ] + }, + "update": { + "permissions": [ + "ec2:DescribeTransitGatewayVpcAttachments", + "ec2:DescribeTags", + "ec2:CreateTransitGatewayVpcAttachment", + "ec2:CreateTags", + "ec2:DeleteTransitGatewayVpcAttachment", + "ec2:DeleteTags", + "ec2:ModifyTransitGatewayVpcAttachment" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Id": { + "type": "string" + }, + "Options": { + "additionalProperties": false, + "description": "The options for the transit gateway vpc attachment.", + "properties": { + "ApplianceModeSupport": { + "description": "Indicates whether to enable Ipv6 Support for Vpc Attachment. Valid Values: enable | disable", + "type": "string" + }, + "DnsSupport": { + "description": "Indicates whether to enable DNS Support for Vpc Attachment. Valid Values: enable | disable", + "type": "string" + }, + "Ipv6Support": { + "description": "Indicates whether to enable Ipv6 Support for Vpc Attachment. Valid Values: enable | disable", + "type": "string" + }, + "SecurityGroupReferencingSupport": { + "description": "Indicates whether to enable Security Group referencing support for Vpc Attachment. Valid Values: enable | disable", + "type": "string" + } + }, + "type": "object" + }, + "SubnetIds": { + "insertionOrder": false, + "items": { + "relationshipRef": { + "propertyPath": "/properties/SubnetId", + "typeName": "AWS::EC2::Subnet" + }, + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + }, + "TransitGatewayId": { + "type": "string" + }, + "VpcId": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "VpcId", + "SubnetIds", + "TransitGatewayId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-transitgateway", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "ec2:CreateTags", + "ec2:DeleteTags" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::EC2::TransitGatewayAttachment" +} diff --git a/src/schema/aws-ec2-transitgatewayconnect.json b/src/schema/aws-ec2-transitgatewayconnect.json new file mode 100644 index 00000000..87ea898e --- /dev/null +++ b/src/schema/aws-ec2-transitgatewayconnect.json @@ -0,0 +1,131 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/TransportTransitGatewayAttachmentId", + "/properties/Options" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "description": "The key of the tag. Constraints: Tag keys are case-sensitive and accept a maximum of 127 Unicode characters. May not begin with aws:.", + "type": "string" + }, + "Value": { + "description": "The value of the tag. Constraints: Tag values are case-sensitive and accept a maximum of 255 Unicode characters.", + "type": "string" + } + }, + "type": "object" + }, + "TransitGatewayConnectOptions": { + "additionalProperties": false, + "properties": { + "Protocol": { + "description": "The tunnel protocol.", + "type": "string" + } + }, + "type": "object" + } + }, + "description": "The AWS::EC2::TransitGatewayConnect type", + "handlers": { + "create": { + "permissions": [ + "ec2:CreateTransitGatewayConnect", + "ec2:DescribeTransitGatewayConnects", + "ec2:CreateTags", + "ec2:DescribeTags" + ] + }, + "delete": { + "permissions": [ + "ec2:DeleteTransitGatewayConnect", + "ec2:DescribeTransitGatewayConnects", + "ec2:DeleteTags", + "ec2:DescribeTags" + ] + }, + "list": { + "permissions": [ + "ec2:DescribeTransitGatewayConnects", + "ec2:DescribeTags" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeTransitGatewayConnects", + "ec2:DescribeTags" + ] + }, + "update": { + "permissions": [ + "ec2:DescribeTransitGatewayConnects", + "ec2:DeleteTags", + "ec2:CreateTags", + "ec2:DescribeTags" + ] + } + }, + "primaryIdentifier": [ + "/properties/TransitGatewayAttachmentId" + ], + "properties": { + "CreationTime": { + "description": "The creation time.", + "type": "string" + }, + "Options": { + "$ref": "#/definitions/TransitGatewayConnectOptions", + "description": "The Connect attachment options." + }, + "State": { + "description": "The state of the attachment.", + "type": "string" + }, + "Tags": { + "description": "The tags for the attachment.", + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array" + }, + "TransitGatewayAttachmentId": { + "description": "The ID of the Connect attachment.", + "type": "string" + }, + "TransitGatewayId": { + "description": "The ID of the transit gateway.", + "type": "string" + }, + "TransportTransitGatewayAttachmentId": { + "description": "The ID of the attachment from which the Connect attachment was created.", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/TransitGatewayAttachmentId", + "/properties/State", + "/properties/CreationTime", + "/properties/TransitGatewayId" + ], + "required": [ + "TransportTransitGatewayAttachmentId", + "Options" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-myservice", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "ec2:CreateTags", + "ec2:DeleteTags" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::EC2::TransitGatewayConnect" +} diff --git a/src/schema/aws-ec2-transitgatewaymulticastdomain.json b/src/schema/aws-ec2-transitgatewaymulticastdomain.json new file mode 100644 index 00000000..e863ce42 --- /dev/null +++ b/src/schema/aws-ec2-transitgatewaymulticastdomain.json @@ -0,0 +1,135 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/TransitGatewayId" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "description": "The key of the tag. Constraints: Tag keys are case-sensitive and accept a maximum of 127 Unicode characters. May not begin with aws:.", + "type": "string" + }, + "Value": { + "description": "The value of the tag. Constraints: Tag values are case-sensitive and accept a maximum of 255 Unicode characters.", + "type": "string" + } + }, + "type": "object" + } + }, + "description": "The AWS::EC2::TransitGatewayMulticastDomain type", + "handlers": { + "create": { + "permissions": [ + "ec2:DescribeTransitGatewayMulticastDomains", + "ec2:CreateTransitGatewayMulticastDomain", + "ec2:CreateTags", + "ec2:DescribeTags" + ] + }, + "delete": { + "permissions": [ + "ec2:DescribeTransitGatewayMulticastDomains", + "ec2:DeleteTransitGatewayMulticastDomain", + "ec2:DeleteTags", + "ec2:DescribeTags" + ] + }, + "list": { + "permissions": [ + "ec2:DescribeTransitGatewayMulticastDomains", + "ec2:DescribeTags" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeTransitGatewayMulticastDomains", + "ec2:DescribeTags" + ] + }, + "update": { + "permissions": [ + "ec2:DescribeTransitGatewayMulticastDomains", + "ec2:DeleteTags", + "ec2:CreateTags", + "ec2:DescribeTags" + ] + } + }, + "primaryIdentifier": [ + "/properties/TransitGatewayMulticastDomainId" + ], + "properties": { + "CreationTime": { + "description": "The time the transit gateway multicast domain was created.", + "format": "date-time", + "type": "string" + }, + "Options": { + "additionalProperties": false, + "description": "The options for the transit gateway multicast domain.", + "properties": { + "AutoAcceptSharedAssociations": { + "description": "Indicates whether to automatically cross-account subnet associations that are associated with the transit gateway multicast domain. Valid Values: enable | disable", + "type": "string" + }, + "Igmpv2Support": { + "description": "Indicates whether Internet Group Management Protocol (IGMP) version 2 is turned on for the transit gateway multicast domain. Valid Values: enable | disable", + "type": "string" + }, + "StaticSourcesSupport": { + "description": "Indicates whether support for statically configuring transit gateway multicast group sources is turned on. Valid Values: enable | disable", + "type": "string" + } + }, + "type": "object" + }, + "State": { + "description": "The state of the transit gateway multicast domain.", + "type": "string" + }, + "Tags": { + "description": "The tags for the transit gateway multicast domain.", + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array" + }, + "TransitGatewayId": { + "description": "The ID of the transit gateway.", + "type": "string" + }, + "TransitGatewayMulticastDomainArn": { + "description": "The Amazon Resource Name (ARN) of the transit gateway multicast domain.", + "type": "string" + }, + "TransitGatewayMulticastDomainId": { + "description": "The ID of the transit gateway multicast domain.", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/TransitGatewayMulticastDomainId", + "/properties/State", + "/properties/CreationTime", + "/properties/TransitGatewayMulticastDomainArn" + ], + "required": [ + "TransitGatewayId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-transitgateway/aws-ec2-transitgatewaymulticastdomain", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "ec2:CreateTags", + "ec2:DeleteTags" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::EC2::TransitGatewayMulticastDomain" +} diff --git a/src/schema/aws-ec2-transitgatewaymulticastdomainassociation.json b/src/schema/aws-ec2-transitgatewaymulticastdomainassociation.json new file mode 100644 index 00000000..cdecddc8 --- /dev/null +++ b/src/schema/aws-ec2-transitgatewaymulticastdomainassociation.json @@ -0,0 +1,82 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/TransitGatewayMulticastDomainId", + "/properties/TransitGatewayAttachmentId", + "/properties/SubnetId" + ], + "description": "The AWS::EC2::TransitGatewayMulticastDomainAssociation type", + "handlers": { + "create": { + "permissions": [ + "ec2:AssociateTransitGatewayMulticastDomain", + "ec2:GetTransitGatewayMulticastDomainAssociations" + ] + }, + "delete": { + "permissions": [ + "ec2:DisassociateTransitGatewayMulticastDomain", + "ec2:GetTransitGatewayMulticastDomainAssociations" + ] + }, + "list": { + "permissions": [ + "ec2:GetTransitGatewayMulticastDomainAssociations" + ] + }, + "read": { + "permissions": [ + "ec2:GetTransitGatewayMulticastDomainAssociations" + ] + } + }, + "primaryIdentifier": [ + "/properties/TransitGatewayMulticastDomainId", + "/properties/TransitGatewayAttachmentId", + "/properties/SubnetId" + ], + "properties": { + "ResourceId": { + "description": "The ID of the resource.", + "type": "string" + }, + "ResourceType": { + "description": "The type of resource, for example a VPC attachment.", + "type": "string" + }, + "State": { + "description": "The state of the subnet association.", + "type": "string" + }, + "SubnetId": { + "description": "The IDs of the subnets to associate with the transit gateway multicast domain.", + "type": "string" + }, + "TransitGatewayAttachmentId": { + "description": "The ID of the transit gateway attachment.", + "type": "string" + }, + "TransitGatewayMulticastDomainId": { + "description": "The ID of the transit gateway multicast domain.", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/ResourceId", + "/properties/ResourceType", + "/properties/State" + ], + "required": [ + "TransitGatewayMulticastDomainId", + "TransitGatewayAttachmentId", + "SubnetId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-myservice", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::EC2::TransitGatewayMulticastDomainAssociation" +} diff --git a/src/schema/aws-ec2-transitgatewaymulticastgroupmember.json b/src/schema/aws-ec2-transitgatewaymulticastgroupmember.json new file mode 100644 index 00000000..3d4c8331 --- /dev/null +++ b/src/schema/aws-ec2-transitgatewaymulticastgroupmember.json @@ -0,0 +1,112 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/TransitGatewayMulticastDomainId", + "/properties/GroupIpAddress", + "/properties/NetworkInterfaceId" + ], + "description": "The AWS::EC2::TransitGatewayMulticastGroupMember registers and deregisters members and sources (network interfaces) with the transit gateway multicast group", + "handlers": { + "create": { + "permissions": [ + "ec2:RegisterTransitGatewayMulticastGroupMembers", + "ec2:SearchTransitGatewayMulticastGroups" + ] + }, + "delete": { + "permissions": [ + "ec2:DeregisterTransitGatewayMulticastGroupMembers", + "ec2:SearchTransitGatewayMulticastGroups" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "TransitGatewayMulticastDomainId": { + "$ref": "resource-schema.json#/properties/TransitGatewayMulticastDomainId" + } + }, + "required": [ + "TransitGatewayMulticastDomainId" + ] + }, + "permissions": [ + "ec2:SearchTransitGatewayMulticastGroups" + ] + }, + "read": { + "permissions": [ + "ec2:SearchTransitGatewayMulticastGroups" + ] + } + }, + "primaryIdentifier": [ + "/properties/TransitGatewayMulticastDomainId", + "/properties/GroupIpAddress", + "/properties/NetworkInterfaceId" + ], + "properties": { + "GroupIpAddress": { + "description": "The IP address assigned to the transit gateway multicast group.", + "type": "string" + }, + "GroupMember": { + "description": "Indicates that the resource is a transit gateway multicast group member.", + "type": "boolean" + }, + "GroupSource": { + "description": "Indicates that the resource is a transit gateway multicast group member.", + "type": "boolean" + }, + "MemberType": { + "description": "The member type (for example, static).", + "type": "string" + }, + "NetworkInterfaceId": { + "description": "The ID of the transit gateway attachment.", + "type": "string" + }, + "ResourceId": { + "description": "The ID of the resource.", + "type": "string" + }, + "ResourceType": { + "description": "The type of resource, for example a VPC attachment.", + "type": "string" + }, + "SubnetId": { + "description": "The ID of the subnet.", + "type": "string" + }, + "TransitGatewayAttachmentId": { + "description": "The ID of the transit gateway attachment.", + "type": "string" + }, + "TransitGatewayMulticastDomainId": { + "description": "The ID of the transit gateway multicast domain.", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/SubnetId", + "/properties/ResourceId", + "/properties/ResourceType", + "/properties/GroupSource", + "/properties/GroupMember", + "/properties/MemberType", + "/properties/TransitGatewayAttachmentId" + ], + "required": [ + "GroupIpAddress", + "NetworkInterfaceId", + "TransitGatewayMulticastDomainId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-transitgatewaymulticastdomain/aws-ec2-transitgatewaymulticastgroupsource", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::EC2::TransitGatewayMulticastGroupMember" +} diff --git a/src/schema/aws-ec2-transitgatewaymulticastgroupsource.json b/src/schema/aws-ec2-transitgatewaymulticastgroupsource.json new file mode 100644 index 00000000..a4cbe8af --- /dev/null +++ b/src/schema/aws-ec2-transitgatewaymulticastgroupsource.json @@ -0,0 +1,112 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/TransitGatewayMulticastDomainId", + "/properties/GroupIpAddress", + "/properties/NetworkInterfaceId" + ], + "description": "The AWS::EC2::TransitGatewayMulticastGroupSource registers and deregisters members and sources (network interfaces) with the transit gateway multicast group", + "handlers": { + "create": { + "permissions": [ + "ec2:RegisterTransitGatewayMulticastGroupSources", + "ec2:SearchTransitGatewayMulticastGroups" + ] + }, + "delete": { + "permissions": [ + "ec2:DeregisterTransitGatewayMulticastGroupSources", + "ec2:SearchTransitGatewayMulticastGroups" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "TransitGatewayMulticastDomainId": { + "$ref": "resource-schema.json#/properties/TransitGatewayMulticastDomainId" + } + }, + "required": [ + "TransitGatewayMulticastDomainId" + ] + }, + "permissions": [ + "ec2:SearchTransitGatewayMulticastGroups" + ] + }, + "read": { + "permissions": [ + "ec2:SearchTransitGatewayMulticastGroups" + ] + } + }, + "primaryIdentifier": [ + "/properties/TransitGatewayMulticastDomainId", + "/properties/GroupIpAddress", + "/properties/NetworkInterfaceId" + ], + "properties": { + "GroupIpAddress": { + "description": "The IP address assigned to the transit gateway multicast group.", + "type": "string" + }, + "GroupMember": { + "description": "Indicates that the resource is a transit gateway multicast group member.", + "type": "boolean" + }, + "GroupSource": { + "description": "Indicates that the resource is a transit gateway multicast group member.", + "type": "boolean" + }, + "NetworkInterfaceId": { + "description": "The ID of the transit gateway attachment.", + "type": "string" + }, + "ResourceId": { + "description": "The ID of the resource.", + "type": "string" + }, + "ResourceType": { + "description": "The type of resource, for example a VPC attachment.", + "type": "string" + }, + "SourceType": { + "description": "The source type.", + "type": "string" + }, + "SubnetId": { + "description": "The ID of the subnet.", + "type": "string" + }, + "TransitGatewayAttachmentId": { + "description": "The ID of the transit gateway attachment.", + "type": "string" + }, + "TransitGatewayMulticastDomainId": { + "description": "The ID of the transit gateway multicast domain.", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/SubnetId", + "/properties/ResourceId", + "/properties/ResourceType", + "/properties/GroupSource", + "/properties/GroupMember", + "/properties/SourceType", + "/properties/TransitGatewayAttachmentId" + ], + "required": [ + "TransitGatewayMulticastDomainId", + "NetworkInterfaceId", + "GroupIpAddress" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-transitgatewaymulticastdomain/aws-ec2-transitgatewaymulticastgroupsource", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::EC2::TransitGatewayMulticastGroupSource" +} diff --git a/src/schema/aws-ec2-transitgatewaypeeringattachment.json b/src/schema/aws-ec2-transitgatewaypeeringattachment.json new file mode 100644 index 00000000..16a9b06a --- /dev/null +++ b/src/schema/aws-ec2-transitgatewaypeeringattachment.json @@ -0,0 +1,148 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/TransitGatewayId", + "/properties/PeerTransitGatewayId", + "/properties/PeerRegion", + "/properties/PeerAccountId" + ], + "definitions": { + "PeeringAttachmentStatus": { + "additionalProperties": false, + "properties": { + "Code": { + "description": "The status code.", + "type": "string" + }, + "Message": { + "description": "The status message, if applicable.", + "type": "string" + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "description": "The key of the tag. Constraints: Tag keys are case-sensitive and accept a maximum of 127 Unicode characters. May not begin with aws:.", + "type": "string" + }, + "Value": { + "description": "The value of the tag. Constraints: Tag values are case-sensitive and accept a maximum of 255 Unicode characters.", + "type": "string" + } + }, + "type": "object" + } + }, + "description": "The AWS::EC2::TransitGatewayPeeringAttachment type", + "handlers": { + "create": { + "permissions": [ + "ec2:CreateTransitGatewayPeeringAttachment", + "ec2:DescribeTransitGatewayPeeringAttachments", + "ec2:CreateTags", + "ec2:DescribeTags" + ] + }, + "delete": { + "permissions": [ + "ec2:DeleteTransitGatewayPeeringAttachment", + "ec2:DescribeTransitGatewayPeeringAttachments", + "ec2:DeleteTags", + "ec2:DescribeTags" + ] + }, + "list": { + "permissions": [ + "ec2:DescribeTransitGatewayPeeringAttachments", + "ec2:DescribeTags" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeTransitGatewayPeeringAttachments", + "ec2:DescribeTags" + ] + }, + "update": { + "permissions": [ + "ec2:DescribeTransitGatewayPeeringAttachments", + "ec2:CreateTags", + "ec2:DeleteTags", + "ec2:DescribeTags" + ] + } + }, + "primaryIdentifier": [ + "/properties/TransitGatewayAttachmentId" + ], + "properties": { + "CreationTime": { + "description": "The time the transit gateway peering attachment was created.", + "format": "date-time", + "type": "string" + }, + "PeerAccountId": { + "description": "The ID of the peer account", + "type": "string" + }, + "PeerRegion": { + "description": "Peer Region", + "type": "string" + }, + "PeerTransitGatewayId": { + "description": "The ID of the peer transit gateway.", + "type": "string" + }, + "State": { + "description": "The state of the transit gateway peering attachment. Note that the initiating state has been deprecated.", + "type": "string" + }, + "Status": { + "$ref": "#/definitions/PeeringAttachmentStatus", + "description": "The status of the transit gateway peering attachment." + }, + "Tags": { + "description": "The tags for the transit gateway peering attachment.", + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array" + }, + "TransitGatewayAttachmentId": { + "description": "The ID of the transit gateway peering attachment.", + "type": "string" + }, + "TransitGatewayId": { + "description": "The ID of the transit gateway.", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/TransitGatewayAttachmentId", + "/properties/Status", + "/properties/State", + "/properties/CreationTime" + ], + "required": [ + "TransitGatewayId", + "PeerTransitGatewayId", + "PeerAccountId", + "PeerRegion" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-myservice", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "ec2:CreateTags", + "ec2:DeleteTags" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::EC2::TransitGatewayPeeringAttachment" +} diff --git a/src/schema/aws-ec2-transitgatewayroute.json b/src/schema/aws-ec2-transitgatewayroute.json new file mode 100644 index 00000000..b2393079 --- /dev/null +++ b/src/schema/aws-ec2-transitgatewayroute.json @@ -0,0 +1,80 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/TransitGatewayRouteTableId", + "/properties/TransitGatewayAttachmentId", + "/properties/DestinationCidrBlock", + "/properties/Blackhole" + ], + "definitions": {}, + "description": "Resource Type definition for AWS::EC2::TransitGatewayRoute", + "handlers": { + "create": { + "permissions": [ + "ec2:CreateTransitGatewayRoute", + "ec2:SearchTransitGatewayRoutes" + ] + }, + "delete": { + "permissions": [ + "ec2:DeleteTransitGatewayRoute", + "ec2:SearchTransitGatewayRoutes" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "TransitGatewayRouteTableId": { + "$ref": "resource-schema.json#/properties/TransitGatewayRouteTableId" + } + }, + "required": [ + "TransitGatewayRouteTableId" + ] + }, + "permissions": [ + "ec2:SearchTransitGatewayRoutes" + ] + }, + "read": { + "permissions": [ + "ec2:SearchTransitGatewayRoutes" + ] + } + }, + "primaryIdentifier": [ + "/properties/TransitGatewayRouteTableId", + "/properties/DestinationCidrBlock" + ], + "properties": { + "Blackhole": { + "description": "Indicates whether to drop traffic that matches this route.", + "type": "boolean" + }, + "DestinationCidrBlock": { + "description": "The CIDR range used for destination matches. Routing decisions are based on the most specific match.", + "type": "string" + }, + "TransitGatewayAttachmentId": { + "description": "The ID of transit gateway attachment.", + "type": "string" + }, + "TransitGatewayRouteTableId": { + "description": "The ID of transit gateway route table.", + "type": "string" + } + }, + "replacementStrategy": "delete_then_create", + "required": [ + "TransitGatewayRouteTableId", + "DestinationCidrBlock" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-transitgateway.git", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::EC2::TransitGatewayRoute" +} diff --git a/src/schema/aws-ec2-transitgatewayroutetable.json b/src/schema/aws-ec2-transitgatewayroutetable.json new file mode 100644 index 00000000..e59fad6a --- /dev/null +++ b/src/schema/aws-ec2-transitgatewayroutetable.json @@ -0,0 +1,102 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/TransitGatewayId" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "description": "The key of the associated tag key-value pair", + "type": "string" + }, + "Value": { + "description": "The value of the associated tag key-value pair", + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::EC2::TransitGatewayRouteTable", + "handlers": { + "create": { + "permissions": [ + "ec2:CreateTransitGatewayRouteTable", + "ec2:CreateTags", + "ec2:DescribeTransitGatewayRouteTables" + ] + }, + "delete": { + "permissions": [ + "ec2:DeleteTransitGatewayRouteTable", + "ec2:DescribeTransitGatewayRouteTables", + "ec2:GetTransitGatewayRouteTableAssociations", + "ec2:DisassociateTransitGatewayRouteTable" + ] + }, + "list": { + "permissions": [ + "ec2:DescribeTransitGatewayRouteTables" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeTransitGatewayRouteTables" + ] + }, + "update": { + "permissions": [ + "ec2:DescribeTransitGatewayRouteTables", + "ec2:CreateTags", + "ec2:DeleteTags" + ] + } + }, + "primaryIdentifier": [ + "/properties/TransitGatewayRouteTableId" + ], + "properties": { + "Tags": { + "description": "Tags are composed of a Key/Value pair. You can use tags to categorize and track each parameter group. The tag value null is permitted.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + }, + "TransitGatewayId": { + "description": "The ID of the transit gateway.", + "type": "string" + }, + "TransitGatewayRouteTableId": { + "description": "Transit Gateway Route Table primary identifier", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/TransitGatewayRouteTableId" + ], + "required": [ + "TransitGatewayId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-transitgateway.git", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "ec2:CreateTags", + "ec2:DeleteTags" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::EC2::TransitGatewayRouteTable" +} diff --git a/src/schema/aws-ec2-transitgatewayroutetableassociation.json b/src/schema/aws-ec2-transitgatewayroutetableassociation.json new file mode 100644 index 00000000..f990601f --- /dev/null +++ b/src/schema/aws-ec2-transitgatewayroutetableassociation.json @@ -0,0 +1,70 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/TransitGatewayRouteTableId", + "/properties/TransitGatewayAttachmentId" + ], + "definitions": {}, + "description": "Resource Type definition for AWS::EC2::TransitGatewayRouteTableAssociation", + "handlers": { + "create": { + "permissions": [ + "ec2:AssociateTransitGatewayRouteTable", + "ec2:GetTransitGatewayRouteTableAssociations" + ] + }, + "delete": { + "permissions": [ + "ec2:GetTransitGatewayRouteTableAssociations", + "ec2:DisassociateTransitGatewayRouteTable" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "TransitGatewayRouteTableId": { + "$ref": "resource-schema.json#/properties/TransitGatewayRouteTableId" + } + }, + "required": [ + "TransitGatewayRouteTableId" + ] + }, + "permissions": [ + "ec2:GetTransitGatewayRouteTableAssociations" + ] + }, + "read": { + "permissions": [ + "ec2:GetTransitGatewayRouteTableAssociations" + ] + } + }, + "primaryIdentifier": [ + "/properties/TransitGatewayRouteTableId", + "/properties/TransitGatewayAttachmentId" + ], + "properties": { + "TransitGatewayAttachmentId": { + "description": "The ID of transit gateway attachment.", + "type": "string" + }, + "TransitGatewayRouteTableId": { + "description": "The ID of transit gateway route table.", + "type": "string" + } + }, + "replacementStrategy": "delete_then_create", + "required": [ + "TransitGatewayRouteTableId", + "TransitGatewayAttachmentId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-transitgateway.git", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::EC2::TransitGatewayRouteTableAssociation" +} diff --git a/src/schema/aws-ec2-transitgatewayroutetablepropagation.json b/src/schema/aws-ec2-transitgatewayroutetablepropagation.json new file mode 100644 index 00000000..3591b54e --- /dev/null +++ b/src/schema/aws-ec2-transitgatewayroutetablepropagation.json @@ -0,0 +1,69 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/TransitGatewayAttachmentId", + "/properties/TransitGatewayRouteTableId" + ], + "definitions": {}, + "description": "AWS::EC2::TransitGatewayRouteTablePropagation Type", + "handlers": { + "create": { + "permissions": [ + "ec2:GetTransitGatewayRouteTablePropagations", + "ec2:EnableTransitGatewayRouteTablePropagation" + ] + }, + "delete": { + "permissions": [ + "ec2:GetTransitGatewayRouteTablePropagations", + "ec2:DisableTransitGatewayRouteTablePropagation" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "TransitGatewayRouteTableId": { + "$ref": "resource-schema.json#/properties/TransitGatewayRouteTableId" + } + }, + "required": [ + "TransitGatewayRouteTableId" + ] + }, + "permissions": [ + "ec2:GetTransitGatewayRouteTablePropagations" + ] + }, + "read": { + "permissions": [ + "ec2:GetTransitGatewayRouteTablePropagations" + ] + } + }, + "primaryIdentifier": [ + "/properties/TransitGatewayRouteTableId", + "/properties/TransitGatewayAttachmentId" + ], + "properties": { + "TransitGatewayAttachmentId": { + "description": "The ID of transit gateway attachment.", + "type": "string" + }, + "TransitGatewayRouteTableId": { + "description": "The ID of transit gateway route table.", + "type": "string" + } + }, + "required": [ + "TransitGatewayRouteTableId", + "TransitGatewayAttachmentId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-transitgateway/aws-ec2-transitgatewayroutetablepropagation", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::EC2::TransitGatewayRouteTablePropagation" +} diff --git a/src/schema/aws-ec2-transitgatewayvpcattachment.json b/src/schema/aws-ec2-transitgatewayvpcattachment.json new file mode 100644 index 00000000..24e1bc3f --- /dev/null +++ b/src/schema/aws-ec2-transitgatewayvpcattachment.json @@ -0,0 +1,162 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/TransitGatewayId", + "/properties/SubnetIds", + "/properties/VpcId" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::EC2::TransitGatewayVpcAttachment", + "handlers": { + "create": { + "permissions": [ + "ec2:DescribeTransitGatewayVpcAttachments", + "ec2:CreateTransitGatewayVpcAttachment", + "ec2:CreateTags", + "ec2:DescribeTags" + ] + }, + "delete": { + "permissions": [ + "ec2:DescribeTransitGatewayVpcAttachments", + "ec2:DeleteTransitGatewayVpcAttachment", + "ec2:DeleteTags", + "ec2:DescribeTags" + ] + }, + "list": { + "permissions": [ + "ec2:DescribeTransitGatewayVpcAttachments", + "ec2:DescribeTags" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeTransitGatewayVpcAttachments", + "ec2:DescribeTags" + ] + }, + "update": { + "permissions": [ + "ec2:DescribeTransitGatewayVpcAttachments", + "ec2:DescribeTags", + "ec2:CreateTransitGatewayVpcAttachment", + "ec2:CreateTags", + "ec2:DeleteTransitGatewayVpcAttachment", + "ec2:DeleteTags", + "ec2:ModifyTransitGatewayVpcAttachment" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "AddSubnetIds": { + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "Id": { + "type": "string" + }, + "Options": { + "additionalProperties": false, + "description": "The options for the transit gateway vpc attachment.", + "properties": { + "ApplianceModeSupport": { + "description": "Indicates whether to enable Ipv6 Support for Vpc Attachment. Valid Values: enable | disable", + "type": "string" + }, + "DnsSupport": { + "description": "Indicates whether to enable DNS Support for Vpc Attachment. Valid Values: enable | disable", + "type": "string" + }, + "Ipv6Support": { + "description": "Indicates whether to enable Ipv6 Support for Vpc Attachment. Valid Values: enable | disable", + "type": "string" + }, + "SecurityGroupReferencingSupport": { + "description": "Indicates whether to enable Security Group referencing support for Vpc Attachment. Valid values: enable | disable", + "type": "string" + } + }, + "type": "object" + }, + "RemoveSubnetIds": { + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "SubnetIds": { + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + }, + "TransitGatewayId": { + "type": "string" + }, + "VpcId": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "SubnetIds", + "VpcId", + "TransitGatewayId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-transitgateway", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "ec2:CreateTags", + "ec2:DeleteTags" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::EC2::TransitGatewayVpcAttachment", + "writeOnlyProperties": [ + "/properties/AddSubnetIds", + "/properties/RemoveSubnetIds" + ] +} diff --git a/src/schema/aws-ec2-verifiedaccessendpoint.json b/src/schema/aws-ec2-verifiedaccessendpoint.json new file mode 100644 index 00000000..57435380 --- /dev/null +++ b/src/schema/aws-ec2-verifiedaccessendpoint.json @@ -0,0 +1,465 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ApplicationDomain", + "/properties/AttachmentType", + "/properties/DomainCertificateArn", + "/properties/EndpointDomainPrefix", + "/properties/EndpointType", + "/properties/SecurityGroupIds", + "/properties/NetworkInterfaceOptions/NetworkInterfaceId", + "/properties/LoadBalancerOptions/LoadBalancerArn", + "/properties/RdsOptions/Protocol", + "/properties/RdsOptions/RdsDbInstanceArn", + "/properties/RdsOptions/RdsDbClusterArn", + "/properties/RdsOptions/RdsDbProxyArn", + "/properties/CidrOptions/Cidr", + "/properties/CidrOptions/Protocol", + "/properties/CidrOptions/SubnetIds" + ], + "definitions": { + "CidrOptions": { + "additionalProperties": false, + "description": "The options for cidr type endpoint.", + "properties": { + "Cidr": { + "description": "The IP address range, in CIDR notation.", + "type": "string" + }, + "PortRanges": { + "description": "The list of port range.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/PortRange" + }, + "type": "array", + "uniqueItems": true + }, + "Protocol": { + "description": "The IP protocol.", + "type": "string" + }, + "SubnetIds": { + "description": "The IDs of the subnets.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/SubnetId" + }, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + "LoadBalancerOptions": { + "additionalProperties": false, + "description": "The load balancer details if creating the AWS Verified Access endpoint as load-balancertype.", + "properties": { + "LoadBalancerArn": { + "description": "The ARN of the load balancer.", + "type": "string" + }, + "Port": { + "description": "The IP port number.", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "PortRanges": { + "description": "The list of port range.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/PortRange" + }, + "type": "array", + "uniqueItems": true + }, + "Protocol": { + "description": "The IP protocol.", + "type": "string" + }, + "SubnetIds": { + "description": "The IDs of the subnets.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/SubnetId" + }, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + "NetworkInterfaceOptions": { + "additionalProperties": false, + "description": "The options for network-interface type endpoint.", + "properties": { + "NetworkInterfaceId": { + "description": "The ID of the network interface.", + "type": "string" + }, + "Port": { + "description": "The IP port number.", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "PortRanges": { + "description": "The list of port ranges.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/PortRange" + }, + "type": "array", + "uniqueItems": true + }, + "Protocol": { + "description": "The IP protocol.", + "type": "string" + } + }, + "type": "object" + }, + "PortRange": { + "additionalProperties": false, + "description": "The IP port range.", + "properties": { + "FromPort": { + "description": "The first port in the range.", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "ToPort": { + "description": "The last port in the range.", + "maximum": 65535, + "minimum": 1, + "type": "integer" + } + }, + "type": "object" + }, + "RdsOptions": { + "additionalProperties": false, + "description": "The options for rds type endpoint.", + "properties": { + "Port": { + "description": "The IP port number.", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "Protocol": { + "description": "The IP protocol.", + "type": "string" + }, + "RdsDbClusterArn": { + "description": "The ARN of the RDS DB cluster.", + "type": "string" + }, + "RdsDbInstanceArn": { + "description": "The ARN of the RDS DB instance.", + "type": "string" + }, + "RdsDbProxyArn": { + "description": "The ARN of the RDS DB proxy.", + "type": "string" + }, + "RdsEndpoint": { + "description": "The RDS endpoint.", + "type": "string" + }, + "SubnetIds": { + "description": "The IDs of the subnets.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/SubnetId" + }, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + "SecurityGroupId": { + "description": "The ID of a security group for the endpoint.", + "type": "string" + }, + "SseSpecification": { + "additionalProperties": false, + "description": "The configuration options for customer provided KMS encryption.", + "properties": { + "CustomerManagedKeyEnabled": { + "description": "Whether to encrypt the policy with the provided key or disable encryption", + "type": "boolean" + }, + "KmsKeyArn": { + "description": "KMS Key Arn used to encrypt the group policy", + "type": "string" + } + }, + "type": "object" + }, + "SubnetId": { + "description": "The IDs of the subnet.", + "type": "string" + }, + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "The AWS::EC2::VerifiedAccessEndpoint resource creates an AWS EC2 Verified Access Endpoint.", + "handlers": { + "create": { + "permissions": [ + "ec2:CreateVerifiedAccessEndpoint", + "ec2:DescribeVerifiedAccessEndpoints", + "ec2:DescribeSubnets", + "ec2:DescribeSecurityGroups", + "ec2:DescribeNetworkInterfaces", + "ec2:DescribeAccountAttributes", + "ec2:CreateTags", + "ec2:DescribeTags", + "ec2:DescribeVpcs", + "ec2:GetVerifiedAccessEndpointPolicy", + "elasticloadbalancing:DescribeLoadBalancers", + "elasticloadbalancing:DescribeListeners", + "elasticloadbalancing:DescribeListenerCertificates", + "iam:CreateServiceLinkedRole", + "acm:DescribeCertificate", + "sso:PutApplicationAccessScope", + "sso:GetSharedSsoConfiguration", + "sso:CreateManagedApplicationInstance", + "sso:DeleteManagedApplicationInstance", + "kms:DescribeKey", + "kms:GenerateDataKey", + "kms:RetireGrant", + "kms:CreateGrant", + "kms:Decrypt", + "rds:DescribeDbInstances", + "rds:DescribeDbProxies", + "rds:DescribeDbClusters", + "ec2:DescribeAvailabilityZones", + "ec2:DescribeVpcEndpointServiceConfigurations" + ], + "timeoutInMinutes": 600 + }, + "delete": { + "permissions": [ + "ec2:DescribeVerifiedAccessEndpoints", + "ec2:DeleteVerifiedAccessEndpoint", + "ec2:GetVerifiedAccessEndpointPolicy", + "ec2:DescribeTags", + "ec2:DeleteTags", + "sso:DeleteManagedApplicationInstance", + "kms:DescribeKey", + "kms:RetireGrant", + "kms:Decrypt", + "kms:GenerateDataKey" + ], + "timeoutInMinutes": 60 + }, + "list": { + "permissions": [ + "ec2:DescribeVerifiedAccessEndpoints", + "ec2:GetVerifiedAccessEndpointPolicy", + "ec2:DescribeTags", + "kms:DescribeKey", + "kms:Decrypt", + "kms:GenerateDataKey" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeVerifiedAccessEndpoints", + "ec2:GetVerifiedAccessEndpointPolicy", + "ec2:DescribeTags", + "kms:DescribeKey", + "kms:Decrypt", + "kms:GenerateDataKey" + ] + }, + "update": { + "permissions": [ + "ec2:ModifyVerifiedAccessEndpoint", + "ec2:ModifyVerifiedAccessEndpointPolicy", + "ec2:DescribeVerifiedAccessEndpoints", + "ec2:GetVerifiedAccessEndpointPolicy", + "ec2:DescribeSubnets", + "ec2:DescribeSecurityGroups", + "ec2:DescribeNetworkInterfaces", + "ec2:DescribeVpcs", + "ec2:DescribeTags", + "ec2:DeleteTags", + "ec2:CreateTags", + "elasticloadbalancing:DescribeLoadBalancers", + "elasticloadbalancing:DescribeListeners", + "elasticloadbalancing:DescribeListenerCertificates", + "kms:DescribeKey", + "kms:GenerateDataKey", + "kms:RetireGrant", + "kms:CreateGrant", + "kms:Decrypt", + "rds:DescribeDbInstances", + "rds:DescribeDbProxies", + "rds:DescribeDbClusters" + ], + "timeoutInMinutes": 60 + } + }, + "primaryIdentifier": [ + "/properties/VerifiedAccessEndpointId" + ], + "properties": { + "ApplicationDomain": { + "description": "The DNS name for users to reach your application.", + "type": "string" + }, + "AttachmentType": { + "description": "The type of attachment used to provide connectivity between the AWS Verified Access endpoint and the application.", + "type": "string" + }, + "CidrOptions": { + "$ref": "#/definitions/CidrOptions", + "description": "The options for cidr type endpoint." + }, + "CreationTime": { + "description": "The creation time.", + "type": "string" + }, + "Description": { + "description": "A description for the AWS Verified Access endpoint.", + "type": "string" + }, + "DeviceValidationDomain": { + "description": "Returned if endpoint has a device trust provider attached.", + "type": "string" + }, + "DomainCertificateArn": { + "description": "The ARN of a public TLS/SSL certificate imported into or created with ACM.", + "type": "string" + }, + "EndpointDomain": { + "description": "A DNS name that is generated for the endpoint.", + "type": "string" + }, + "EndpointDomainPrefix": { + "description": "A custom identifier that gets prepended to a DNS name that is generated for the endpoint.", + "type": "string" + }, + "EndpointType": { + "description": "The type of AWS Verified Access endpoint. Incoming application requests will be sent to an IP address, load balancer or a network interface depending on the endpoint type specified.The type of AWS Verified Access endpoint. Incoming application requests will be sent to an IP address, load balancer or a network interface depending on the endpoint type specified.", + "type": "string" + }, + "LastUpdatedTime": { + "description": "The last updated time.", + "type": "string" + }, + "LoadBalancerOptions": { + "$ref": "#/definitions/LoadBalancerOptions", + "description": "The load balancer details if creating the AWS Verified Access endpoint as load-balancer type." + }, + "NetworkInterfaceOptions": { + "$ref": "#/definitions/NetworkInterfaceOptions", + "description": "The options for network-interface type endpoint." + }, + "PolicyDocument": { + "description": "The AWS Verified Access policy document.", + "type": "string" + }, + "PolicyEnabled": { + "description": "The status of the Verified Access policy.", + "type": "boolean" + }, + "RdsOptions": { + "$ref": "#/definitions/RdsOptions", + "description": "The options for rds type endpoint." + }, + "SecurityGroupIds": { + "description": "The IDs of the security groups for the endpoint.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/SecurityGroupId" + }, + "type": "array", + "uniqueItems": true + }, + "SseSpecification": { + "$ref": "#/definitions/SseSpecification", + "description": "The configuration options for customer provided KMS encryption." + }, + "Status": { + "description": "The endpoint status.", + "type": "string" + }, + "Tags": { + "description": "An array of key-value pairs to apply to this resource.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + }, + "VerifiedAccessEndpointId": { + "description": "The ID of the AWS Verified Access endpoint.", + "type": "string" + }, + "VerifiedAccessGroupId": { + "description": "The ID of the AWS Verified Access group.", + "type": "string" + }, + "VerifiedAccessInstanceId": { + "description": "The ID of the AWS Verified Access instance.", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/VerifiedAccessEndpointId", + "/properties/EndpointDomain", + "/properties/CreationTime", + "/properties/LastUpdatedTime", + "/properties/Status", + "/properties/DeviceValidationDomain", + "/properties/VerifiedAccessInstanceId" + ], + "required": [ + "AttachmentType", + "EndpointType", + "VerifiedAccessGroupId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ec2-verified-access.aws-ec2-verifiedaccessendpoint", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "ec2:CreateTags", + "ec2:DescribeTags", + "ec2:DeleteTags" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::EC2::VerifiedAccessEndpoint" +} diff --git a/src/schema/aws-ec2-verifiedaccessgroup.json b/src/schema/aws-ec2-verifiedaccessgroup.json new file mode 100644 index 00000000..69145a2a --- /dev/null +++ b/src/schema/aws-ec2-verifiedaccessgroup.json @@ -0,0 +1,190 @@ +{ + "additionalProperties": false, + "definitions": { + "SseSpecification": { + "additionalProperties": false, + "description": "The configuration options for customer provided KMS encryption.", + "properties": { + "CustomerManagedKeyEnabled": { + "description": "Whether to encrypt the policy with the provided key or disable encryption", + "type": "boolean" + }, + "KmsKeyArn": { + "description": "KMS Key Arn used to encrypt the group policy", + "type": "string" + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "The AWS::EC2::VerifiedAccessGroup resource creates an AWS EC2 Verified Access Group.", + "handlers": { + "create": { + "permissions": [ + "ec2:CreateVerifiedAccessGroup", + "ec2:DescribeVerifiedAccessGroups", + "ec2:GetVerifiedAccessGroupPolicy", + "ec2:CreateTags", + "ec2:DescribeTags", + "kms:DescribeKey", + "kms:RetireGrant", + "kms:CreateGrant", + "kms:GenerateDataKey", + "kms:Decrypt" + ] + }, + "delete": { + "permissions": [ + "ec2:DeleteVerifiedAccessGroup", + "ec2:DeleteTags", + "ec2:DescribeVerifiedAccessGroups", + "ec2:DescribeTags", + "kms:DescribeKey", + "kms:RetireGrant", + "kms:CreateGrant", + "kms:GenerateDataKey", + "kms:Decrypt" + ] + }, + "list": { + "permissions": [ + "ec2:DescribeVerifiedAccessGroups", + "ec2:DescribeTags", + "kms:DescribeKey", + "kms:RetireGrant", + "kms:CreateGrant", + "kms:GenerateDataKey", + "kms:Decrypt" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeVerifiedAccessGroups", + "ec2:GetVerifiedAccessGroupPolicy", + "ec2:DescribeTags", + "kms:DescribeKey", + "kms:RetireGrant", + "kms:CreateGrant", + "kms:GenerateDataKey", + "kms:Decrypt" + ] + }, + "update": { + "permissions": [ + "ec2:ModifyVerifiedAccessGroup", + "ec2:ModifyVerifiedAccessGroupPolicy", + "ec2:DescribeVerifiedAccessGroups", + "ec2:GetVerifiedAccessGroupPolicy", + "ec2:DescribeTags", + "ec2:DeleteTags", + "ec2:CreateTags", + "kms:DescribeKey", + "kms:RetireGrant", + "kms:CreateGrant", + "kms:GenerateDataKey", + "kms:Decrypt" + ] + } + }, + "primaryIdentifier": [ + "/properties/VerifiedAccessGroupId" + ], + "properties": { + "CreationTime": { + "description": "Time this Verified Access Group was created.", + "type": "string" + }, + "Description": { + "description": "A description for the AWS Verified Access group.", + "type": "string" + }, + "LastUpdatedTime": { + "description": "Time this Verified Access Group was last updated.", + "type": "string" + }, + "Owner": { + "description": "The AWS account number that owns the group.", + "type": "string" + }, + "PolicyDocument": { + "description": "The AWS Verified Access policy document.", + "type": "string" + }, + "PolicyEnabled": { + "description": "The status of the Verified Access policy.", + "type": "boolean" + }, + "SseSpecification": { + "$ref": "#/definitions/SseSpecification", + "description": "The configuration options for customer provided KMS encryption." + }, + "Tags": { + "description": "An array of key-value pairs to apply to this resource.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + }, + "VerifiedAccessGroupArn": { + "description": "The ARN of the Verified Access group.", + "type": "string" + }, + "VerifiedAccessGroupId": { + "description": "The ID of the AWS Verified Access group.", + "type": "string" + }, + "VerifiedAccessInstanceId": { + "description": "The ID of the AWS Verified Access instance.", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/VerifiedAccessGroupId", + "/properties/CreationTime", + "/properties/LastUpdatedTime", + "/properties/Owner", + "/properties/VerifiedAccessGroupArn" + ], + "required": [ + "VerifiedAccessInstanceId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ec2-verified-access.aws-ec2-verifiedaccessgroup", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "ec2:CreateTags", + "ec2:DescribeTags", + "ec2:DeleteTags" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::EC2::VerifiedAccessGroup" +} diff --git a/src/schema/aws-ec2-verifiedaccessinstance.json b/src/schema/aws-ec2-verifiedaccessinstance.json new file mode 100644 index 00000000..764ddef4 --- /dev/null +++ b/src/schema/aws-ec2-verifiedaccessinstance.json @@ -0,0 +1,315 @@ +{ + "additionalProperties": false, + "definitions": { + "Nameserver": { + "description": "The value of the name server", + "type": "string" + }, + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "VerifiedAccessLogs": { + "additionalProperties": false, + "description": "The configuration options for AWS Verified Access instances.", + "properties": { + "CloudWatchLogs": { + "additionalProperties": false, + "description": "Sends Verified Access logs to CloudWatch Logs.", + "properties": { + "Enabled": { + "description": "Indicates whether logging is enabled.", + "type": "boolean" + }, + "LogGroup": { + "description": "The ID of the CloudWatch Logs log group.", + "type": "string" + } + }, + "type": "object" + }, + "IncludeTrustContext": { + "description": "Include claims from trust providers in Verified Access logs.", + "type": "boolean" + }, + "KinesisDataFirehose": { + "additionalProperties": false, + "description": "Sends Verified Access logs to Kinesis.", + "properties": { + "DeliveryStream": { + "description": "The ID of the delivery stream.", + "type": "string" + }, + "Enabled": { + "description": "Indicates whether logging is enabled.", + "type": "boolean" + } + }, + "type": "object" + }, + "LogVersion": { + "description": "Select log version for Verified Access logs.", + "type": "string" + }, + "S3": { + "additionalProperties": false, + "description": "Sends Verified Access logs to Amazon S3.", + "properties": { + "BucketName": { + "description": "The bucket name.", + "type": "string" + }, + "BucketOwner": { + "description": "The ID of the AWS account that owns the Amazon S3 bucket.", + "type": "string" + }, + "Enabled": { + "description": "Indicates whether logging is enabled.", + "type": "boolean" + }, + "Prefix": { + "description": "The bucket prefix.", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "VerifiedAccessTrustProvider": { + "additionalProperties": false, + "description": "A Verified Access Trust Provider.", + "properties": { + "Description": { + "description": "The description of trust provider.", + "type": "string" + }, + "DeviceTrustProviderType": { + "description": "The type of device-based trust provider.", + "type": "string" + }, + "TrustProviderType": { + "description": "The type of trust provider (user- or device-based).", + "type": "string" + }, + "UserTrustProviderType": { + "description": "The type of user-based trust provider.", + "type": "string" + }, + "VerifiedAccessTrustProviderId": { + "description": "The ID of the trust provider.", + "type": "string" + } + }, + "type": "object" + }, + "VerifiedAccessTrustProviderId": { + "description": "The ID of the AWS Verified Access trust provider.", + "type": "string" + } + }, + "description": "The AWS::EC2::VerifiedAccessInstance resource creates an AWS EC2 Verified Access Instance.", + "handlers": { + "create": { + "permissions": [ + "ec2:CreateVerifiedAccessInstance", + "ec2:AttachVerifiedAccessTrustProvider", + "ec2:ModifyVerifiedAccessInstanceLoggingConfiguration", + "ec2:DescribeVerifiedAccessInstances", + "ec2:DescribeVerifiedAccessInstanceLoggingConfigurations", + "ec2:DetachVerifiedAccessTrustProvider", + "ec2:DeleteVerifiedAccessInstance", + "ec2:CreateTags", + "ec2:DescribeTags", + "logs:CreateLogDelivery", + "logs:GetLogDelivery", + "logs:UpdateLogDelivery", + "logs:PutDestination", + "logs:DeleteLogDelivery", + "logs:ListLogDeliveries", + "logs:PutLogEvents", + "logs:DescribeLogStreams", + "s3:listBuckets", + "s3:PutObject", + "s3:GetBucketPolicy", + "s3:PutBucketPolicy", + "logs:DescribeLogGroups", + "logs:PutResourcePolicy", + "firehose:TagDeliveryStream", + "logs:DescribeResourcePolicies", + "iam:CreateServiceLinkedRole", + "verified-access:AllowVerifiedAccess" + ] + }, + "delete": { + "permissions": [ + "ec2:DeleteVerifiedAccessInstance", + "ec2:DeleteTags", + "ec2:DescribeVerifiedAccessInstances", + "ec2:DescribeVerifiedAccessInstanceLoggingConfigurations", + "ec2:DetachVerifiedAccessTrustProvider", + "ec2:GetVerifiedAccessGroupPolicy", + "ec2:DescribeTags", + "logs:ListLogDeliveries", + "logs:GetLogDelivery", + "logs:DeleteLogDelivery" + ] + }, + "list": { + "permissions": [ + "ec2:DescribeVerifiedAccessInstances", + "ec2:DescribeTags", + "logs:ListLogDeliveries", + "logs:GetLogDelivery" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeVerifiedAccessInstances", + "ec2:DescribeVerifiedAccessInstanceLoggingConfigurations", + "ec2:DescribeTags", + "logs:GetLogDelivery", + "logs:ListLogDeliveries" + ] + }, + "update": { + "permissions": [ + "ec2:ModifyVerifiedAccessInstance", + "ec2:ModifyVerifiedAccessInstanceLoggingConfiguration", + "ec2:DescribeVerifiedAccessInstances", + "ec2:DescribeVerifiedAccessInstanceLoggingConfigurations", + "ec2:DescribeTags", + "ec2:AttachVerifiedAccessTrustProvider", + "ec2:DetachVerifiedAccessTrustProvider", + "ec2:DeleteTags", + "ec2:CreateTags", + "ec2:DescribeTags", + "logs:CreateLogDelivery", + "logs:GetLogDelivery", + "logs:ListLogDeliveries", + "logs:UpdateLogDelivery", + "logs:DeleteLogDelivery", + "logs:PutDestination", + "logs:PutLogEvents", + "logs:DescribeLogStreams", + "s3:listBuckets", + "s3:PutObject", + "s3:GetBucketPolicy", + "s3:PutBucketPolicy", + "logs:DescribeLogGroups", + "logs:PutResourcePolicy", + "firehose:TagDeliveryStream", + "iam:CreateServiceLinkedRole", + "logs:DescribeResourcePolicies" + ] + } + }, + "primaryIdentifier": [ + "/properties/VerifiedAccessInstanceId" + ], + "properties": { + "CidrEndpointsCustomSubDomain": { + "description": "Introduce CidrEndpointsCustomSubDomain property to represent the domain (say, ava.my-company.com)", + "type": "string" + }, + "CidrEndpointsCustomSubDomainNameServers": { + "description": "Property to represent the name servers assoicated with the domain that AVA manages (say, ['ns1.amazonaws.com', 'ns2.amazonaws.com', 'ns3.amazonaws.com', 'ns4.amazonaws.com']).", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Nameserver" + }, + "type": "array" + }, + "CreationTime": { + "description": "Time this Verified Access Instance was created.", + "type": "string" + }, + "Description": { + "description": "A description for the AWS Verified Access instance.", + "type": "string" + }, + "FipsEnabled": { + "description": "Indicates whether FIPS is enabled", + "type": "boolean" + }, + "LastUpdatedTime": { + "description": "Time this Verified Access Instance was last updated.", + "type": "string" + }, + "LoggingConfigurations": { + "$ref": "#/definitions/VerifiedAccessLogs", + "description": "The configuration options for AWS Verified Access instances." + }, + "Tags": { + "description": "An array of key-value pairs to apply to this resource.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + }, + "VerifiedAccessInstanceId": { + "description": "The ID of the AWS Verified Access instance.", + "type": "string" + }, + "VerifiedAccessTrustProviderIds": { + "description": "The IDs of the AWS Verified Access trust providers.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/VerifiedAccessTrustProviderId" + }, + "type": "array", + "uniqueItems": true + }, + "VerifiedAccessTrustProviders": { + "description": "AWS Verified Access trust providers.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/VerifiedAccessTrustProvider" + }, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/VerifiedAccessInstanceId", + "/properties/CreationTime", + "/properties/LastUpdatedTime", + "/properties/CidrEndpointsCustomSubDomainNameServers" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ec2-verified-access.aws-ec2-verifiedaccessinstance", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "ec2:CreateTags", + "ec2:DescribeTags", + "ec2:DeleteTags" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::EC2::VerifiedAccessInstance" +} diff --git a/src/schema/aws-ec2-verifiedaccesstrustprovider.json b/src/schema/aws-ec2-verifiedaccesstrustprovider.json new file mode 100644 index 00000000..f20acffc --- /dev/null +++ b/src/schema/aws-ec2-verifiedaccesstrustprovider.json @@ -0,0 +1,286 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/PolicyReferenceName", + "/properties/DeviceOptions", + "/properties/DeviceTrustProviderType", + "/properties/TrustProviderType", + "/properties/UserTrustProviderType" + ], + "definitions": { + "DeviceOptions": { + "additionalProperties": false, + "description": "The options for device identity based trust providers.", + "properties": { + "PublicSigningKeyUrl": { + "description": "URL Verified Access will use to verify authenticity of the device tokens.", + "type": "string" + }, + "TenantId": { + "description": "The ID of the tenant application with the device-identity provider.", + "type": "string" + } + }, + "type": "object" + }, + "NativeApplicationOidcOptions": { + "additionalProperties": false, + "description": "The OpenID Connect details for an oidc -type, user-identity based trust provider for L4.", + "properties": { + "AuthorizationEndpoint": { + "description": "The OIDC authorization endpoint.", + "type": "string" + }, + "ClientId": { + "description": "The client identifier.", + "type": "string" + }, + "ClientSecret": { + "description": "The client secret.", + "type": "string" + }, + "Issuer": { + "description": "The OIDC issuer.", + "type": "string" + }, + "PublicSigningKeyEndpoint": { + "description": "The public signing key for endpoint", + "type": "string" + }, + "Scope": { + "description": "OpenID Connect (OIDC) scopes are used by an application during authentication to authorize access to details of a user. Each scope returns a specific set of user attributes.", + "type": "string" + }, + "TokenEndpoint": { + "description": "The OIDC token endpoint.", + "type": "string" + }, + "UserInfoEndpoint": { + "description": "The OIDC user info endpoint.", + "type": "string" + } + }, + "type": "object" + }, + "OidcOptions": { + "additionalProperties": false, + "description": "The OpenID Connect details for an oidc -type, user-identity based trust provider.", + "properties": { + "AuthorizationEndpoint": { + "description": "The OIDC authorization endpoint.", + "type": "string" + }, + "ClientId": { + "description": "The client identifier.", + "type": "string" + }, + "ClientSecret": { + "description": "The client secret.", + "type": "string" + }, + "Issuer": { + "description": "The OIDC issuer.", + "type": "string" + }, + "Scope": { + "description": "OpenID Connect (OIDC) scopes are used by an application during authentication to authorize access to details of a user. Each scope returns a specific set of user attributes.", + "type": "string" + }, + "TokenEndpoint": { + "description": "The OIDC token endpoint.", + "type": "string" + }, + "UserInfoEndpoint": { + "description": "The OIDC user info endpoint.", + "type": "string" + } + }, + "type": "object" + }, + "SseSpecification": { + "$ref": "#/definitions/SseSpecification", + "description": "The configuration options for customer provided KMS encryption." + }, + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "The AWS::EC2::VerifiedAccessTrustProvider type describes a verified access trust provider", + "handlers": { + "create": { + "permissions": [ + "ec2:CreateVerifiedAccessTrustProvider", + "ec2:DescribeVerifiedAccessTrustProviders", + "ec2:CreateTags", + "ec2:DescribeTags", + "sso:GetSharedSsoConfiguration", + "kms:DescribeKey", + "kms:RetireGrant", + "kms:CreateGrant", + "kms:GenerateDataKey", + "kms:Decrypt" + ] + }, + "delete": { + "permissions": [ + "ec2:DeleteVerifiedAccessTrustProvider", + "ec2:DeleteTags", + "ec2:DescribeVerifiedAccessTrustProviders", + "ec2:DescribeTags", + "kms:DescribeKey", + "kms:RetireGrant", + "kms:CreateGrant", + "kms:GenerateDataKey", + "kms:Decrypt" + ] + }, + "list": { + "permissions": [ + "ec2:DescribeVerifiedAccessTrustProviders", + "ec2:DescribeTags", + "kms:DescribeKey", + "kms:GenerateDataKey", + "kms:Decrypt" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeVerifiedAccessTrustProviders", + "ec2:DescribeTags", + "kms:DescribeKey", + "kms:GenerateDataKey", + "kms:Decrypt" + ] + }, + "update": { + "permissions": [ + "ec2:ModifyVerifiedAccessTrustProvider", + "ec2:DescribeVerifiedAccessTrustProviders", + "ec2:DescribeTags", + "ec2:DeleteTags", + "ec2:CreateTags", + "kms:DescribeKey", + "kms:RetireGrant", + "kms:CreateGrant", + "kms:GenerateDataKey", + "kms:Decrypt" + ] + } + }, + "primaryIdentifier": [ + "/properties/VerifiedAccessTrustProviderId" + ], + "properties": { + "CreationTime": { + "description": "The creation time.", + "type": "string" + }, + "Description": { + "description": "A description for the Amazon Web Services Verified Access trust provider.", + "type": "string" + }, + "DeviceOptions": { + "$ref": "#/definitions/DeviceOptions" + }, + "DeviceTrustProviderType": { + "description": "The type of device-based trust provider. Possible values: jamf|crowdstrike", + "type": "string" + }, + "LastUpdatedTime": { + "description": "The last updated time.", + "type": "string" + }, + "NativeApplicationOidcOptions": { + "$ref": "#/definitions/NativeApplicationOidcOptions" + }, + "OidcOptions": { + "$ref": "#/definitions/OidcOptions" + }, + "PolicyReferenceName": { + "description": "The identifier to be used when working with policy rules.", + "type": "string" + }, + "SseSpecification": { + "additionalProperties": false, + "description": "The configuration options for customer provided KMS encryption.", + "properties": { + "CustomerManagedKeyEnabled": { + "description": "Whether to encrypt the policy with the provided key or disable encryption", + "type": "boolean" + }, + "KmsKeyArn": { + "description": "KMS Key Arn used to encrypt the group policy", + "type": "string" + } + }, + "type": "object" + }, + "Tags": { + "description": "An array of key-value pairs to apply to this resource.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + }, + "TrustProviderType": { + "description": "Type of trust provider. Possible values: user|device", + "type": "string" + }, + "UserTrustProviderType": { + "description": "The type of device-based trust provider. Possible values: oidc|iam-identity-center", + "type": "string" + }, + "VerifiedAccessTrustProviderId": { + "description": "The ID of the Amazon Web Services Verified Access trust provider.", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/VerifiedAccessTrustProviderId", + "/properties/CreationTime", + "/properties/LastUpdatedTime" + ], + "required": [ + "TrustProviderType", + "PolicyReferenceName" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ec2-verified-access.aws-ec2-verifiedaccesstrustprovider", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "ec2:CreateTags", + "ec2:DescribeTags", + "ec2:DeleteTags" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::EC2::VerifiedAccessTrustProvider", + "writeOnlyProperties": [ + "/properties/NativeApplicationOidcOptions/ClientSecret" + ] +} diff --git a/src/schema/aws-ec2-volume.json b/src/schema/aws-ec2-volume.json new file mode 100644 index 00000000..fa50fc5d --- /dev/null +++ b/src/schema/aws-ec2-volume.json @@ -0,0 +1,156 @@ +{ + "additionalProperties": false, + "definitions": { + "Tag": { + "additionalProperties": false, + "description": "Specifies a tag. For more information, see [Resource tags](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-resource-tags.html).", + "properties": { + "Key": { + "description": "The tag key.", + "type": "string" + }, + "Value": { + "description": "The tag value.", + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "description": "Specifies an Amazon Elastic Block Store (Amazon EBS) volume.\n When you use CFNlong to update an Amazon EBS volume that modifies ``Iops``, ``Size``, or ``VolumeType``, there is a cooldown period before another operation can occur. This can cause your stack to report being in ``UPDATE_IN_PROGRESS`` or ``UPDATE_ROLLBACK_IN_PROGRESS`` for long periods of time.\n Amazon EBS does not support sizing down an Amazon EBS volume. CFNlong does not attempt to modify an Amazon EBS volume to a smaller size on rollback.\n Some common scenarios when you might encounter a cooldown period for Amazon EBS include:\n + You successfully update an Amazon EBS volume and the update succeeds. When you attempt another update within the cooldown window, that update will be subject to a cooldown period.\n + You successfully update an Amazon EBS volume and the update succeeds but another change in your ``update-stack`` call fails. The rollback will be subject to a cooldown period.\n \n For more information, see [Requirements for EBS volume modifications](https://docs.aws.amazon.com/ebs/latest/userguide/modify-volume-requirements.html).\n *DeletionPolicy attribute* \n To control how CFNlong handles the volume when the stack is deleted, set a deletion policy for your volume. You can choose to retain the volume, to delete the volume, or to create a snapshot of the volume. For more information, see [DeletionPolicy attribute](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-attribute-deletionpolicy.html).\n If you set a deletion policy that creates a snapshot, all tags on the volume are included in the snapshot.", + "handlers": { + "create": { + "permissions": [ + "ec2:CreateVolume", + "ec2:DescribeVolumes", + "ec2:DescribeVolumeAttribute", + "ec2:ModifyVolumeAttribute", + "ec2:CreateTags", + "kms:GenerateDataKeyWithoutPlaintext", + "kms:CreateGrant" + ], + "timeoutInMinutes": 725 + }, + "delete": { + "permissions": [ + "ec2:DeleteVolume", + "ec2:CreateSnapshot", + "ec2:DescribeSnapshots", + "ec2:DeleteTags", + "ec2:DescribeVolumes" + ] + }, + "list": { + "permissions": [ + "ec2:DescribeVolumes", + "ec2:DescribeTags", + "ec2:DescribeVolumeAttribute" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeVolumes", + "ec2:DescribeVolumeAttribute", + "ec2:DescribeTags" + ] + }, + "update": { + "permissions": [ + "ec2:ModifyVolume", + "ec2:ModifyVolumeAttribute", + "ec2:DescribeVolumeAttribute", + "ec2:DescribeVolumesModifications", + "ec2:DescribeVolumes", + "ec2:CreateTags", + "ec2:DeleteTags" + ], + "timeoutInMinutes": 2160 + } + }, + "primaryIdentifier": [ + "/properties/VolumeId" + ], + "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.", + "type": "boolean" + }, + "AvailabilityZone": { + "description": "The ID of the Availability Zone in which to create the volume. For example, ``us-east-1a``.", + "type": "string" + }, + "Encrypted": { + "description": "Indicates 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](https://docs.aws.amazon.com/ebs/latest/userguide/work-with-ebs-encr.html#encryption-by-default) in the *Amazon EBS User Guide*.\n Encrypted Amazon EBS volumes must be attached to instances that support Amazon EBS encryption. For more information, see [Supported instance types](https://docs.aws.amazon.com/ebs/latest/userguide/ebs-encryption-requirements.html#ebs-encryption_supported_instances).", + "type": "boolean" + }, + "Iops": { + "description": "The number of I/O operations per second (IOPS). For ``gp3``, ``io1``, and ``io2`` volumes, this represents the number of IOPS that are provisioned for the volume. For ``gp2`` volumes, this represents the baseline performance of the volume and the rate at which the volume accumulates I/O credits for bursting.\n The following are the supported values for each volume type:\n + ``gp3``: 3,000 - 16,000 IOPS\n + ``io1``: 100 - 64,000 IOPS\n + ``io2``: 100 - 256,000 IOPS\n \n For ``io2`` volumes, you can achieve up to 256,000 IOPS on [instances built on the Nitro System](https://docs.aws.amazon.com/ec2/latest/instancetypes/ec2-nitro-instances.html). On other instances, you can achieve performance up to 32,000 IOPS.\n This parameter is required for ``io1`` and ``io2`` volumes. The default for ``gp3`` volumes is 3,000 IOPS. This parameter is not supported for ``gp2``, ``st1``, ``sc1``, or ``standard`` volumes.", + "type": "integer" + }, + "KmsKeyId": { + "description": "The identifier of the kms-key-long to use for Amazon EBS encryption. If ``KmsKeyId`` is specified, the encrypted state must be ``true``.\n If you omit this property and your account is enabled for encryption by default, or *Encrypted* is set to ``true``, then the volume is encrypted using the default key specified for your account. If your account does not have a default key, then the volume is encrypted using the aws-managed-key.\n Alternatively, if you want to specify a different key, you can specify one of the following:\n + Key ID. For example, 1234abcd-12ab-34cd-56ef-1234567890ab.\n + Key alias. Specify the alias for the key, prefixed with ``alias/``. For example, for a key with the alias ``my_cmk``, use ``alias/my_cmk``. Or to specify the aws-managed-key, use ``alias/aws/ebs``.\n + Key ARN. For example, arn:aws:kms:us-east-1:012345678910:key/1234abcd-12ab-34cd-56ef-1234567890ab.\n + Alias ARN. For example, arn:aws:kms:us-east-1:012345678910:alias/ExampleAlias.", + "type": "string" + }, + "MultiAttachEnabled": { + "description": "Indicates whether Amazon EBS Multi-Attach is enabled.\n CFNlong does not currently support updating a single-attach volume to be multi-attach enabled, updating a multi-attach enabled volume to be single-attach, or updating the size or number of I/O operations per second (IOPS) of a multi-attach enabled volume.", + "type": "boolean" + }, + "OutpostArn": { + "description": "The Amazon Resource Name (ARN) of the Outpost.", + "type": "string" + }, + "Size": { + "description": "The size of the volume, in GiBs. You must specify either a snapshot ID or a volume size. If you specify a snapshot, the default is the snapshot size. You can specify a volume size that is equal to or larger than the snapshot size.\n The following are the supported volumes sizes for each volume type:\n + ``gp2`` and ``gp3``: 1 - 16,384 GiB\n + ``io1``: 4 - 16,384 GiB\n + ``io2``: 4 - 65,536 GiB\n + ``st1`` and ``sc1``: 125 - 16,384 GiB\n + ``standard``: 1 - 1024 GiB", + "type": "integer" + }, + "SnapshotId": { + "description": "The snapshot from which to create the volume. You must specify either a snapshot ID or a volume size.", + "type": "string" + }, + "Tags": { + "description": "The tags to apply to the volume during creation.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + }, + "Throughput": { + "description": "The throughput to provision for a volume, with a maximum of 1,000 MiB/s.\n This parameter is valid only for ``gp3`` volumes. The default value is 125.\n Valid Range: Minimum value of 125. Maximum value of 1000.", + "type": "integer" + }, + "VolumeId": { + "description": "", + "type": "string" + }, + "VolumeType": { + "description": "The volume type. This parameter can be one of the following values:\n + General Purpose SSD: ``gp2`` | ``gp3`` \n + Provisioned IOPS SSD: ``io1`` | ``io2`` \n + Throughput Optimized HDD: ``st1`` \n + Cold HDD: ``sc1`` \n + Magnetic: ``standard`` \n \n For more information, see [Amazon EBS volume types](https://docs.aws.amazon.com/ebs/latest/userguide/ebs-volume-types.html).\n Default: ``gp2``", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/VolumeId" + ], + "required": [ + "AvailabilityZone" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ec2.git", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "ec2:CreateTags", + "ec2:DeleteTags", + "ec2:DescribeTags" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::EC2::Volume" +} diff --git a/src/schema/aws-ec2-volumeattachment.json b/src/schema/aws-ec2-volumeattachment.json new file mode 100644 index 00000000..4181873c --- /dev/null +++ b/src/schema/aws-ec2-volumeattachment.json @@ -0,0 +1,81 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Device", + "/properties/InstanceId", + "/properties/VolumeId" + ], + "definitions": { + "Device": { + "description": "The device name", + "type": "string" + }, + "Id": { + "description": "", + "type": "string" + }, + "InstanceId": { + "description": "The ID of the instance to which the volume attaches", + "type": "string" + }, + "VolumeId": { + "description": "The ID of the Amazon EBS volume", + "type": "string" + } + }, + "description": "Attaches an Amazon EBS volume to a running instance and exposes it to the instance with the specified device name.\n Before this resource can be deleted (and therefore the volume detached), you must first unmount the volume in the instance. Failure to do so results in the volume being stuck in the busy state while it is trying to detach, which could possibly damage the file system or the data it contains.\n If an Amazon EBS volume is the root device of an instance, it cannot be detached while the instance is in the \"running\" state. To detach the root volume, stop the instance first.\n If the root volume is detached from an instance with an MKT product code, then the product codes from that volume are no longer associated with the instance.", + "handlers": { + "create": { + "permissions": [ + "ec2:AttachVolume", + "ec2:DescribeVolumes" + ] + }, + "delete": { + "permissions": [ + "ec2:DetachVolume", + "ec2:DescribeVolumes" + ] + }, + "list": { + "permissions": [ + "ec2:DescribeVolumes" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeVolumes" + ] + } + }, + "primaryIdentifier": [ + "/properties/VolumeId", + "/properties/InstanceId" + ], + "properties": { + "Device": { + "$ref": "#/definitions/Device", + "description": "The device name (for example, ``/dev/sdh`` or ``xvdh``)." + }, + "InstanceId": { + "$ref": "#/definitions/InstanceId", + "description": "The ID of the instance to which the volume attaches. This value can be a reference to an [AWS::EC2::Instance](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance.html) resource, or it can be the physical ID of an existing EC2 instance." + }, + "VolumeId": { + "$ref": "#/definitions/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](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ebs-volume.html) resource, or it can be the volume ID of an existing Amazon EBS volume." + } + }, + "required": [ + "VolumeId", + "InstanceId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::EC2::VolumeAttachment" +} diff --git a/src/schema/aws-ec2-vpc.json b/src/schema/aws-ec2-vpc.json new file mode 100644 index 00000000..2a38bc65 --- /dev/null +++ b/src/schema/aws-ec2-vpc.json @@ -0,0 +1,163 @@ +{ + "additionalProperties": false, + "conditionalCreateOnlyProperties": [ + "/properties/InstanceTenancy" + ], + "createOnlyProperties": [ + "/properties/CidrBlock", + "/properties/Ipv4IpamPoolId", + "/properties/Ipv4NetmaskLength" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "description": "Specifies a tag. For more information, see [Resource tags](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-resource-tags.html).", + "properties": { + "Key": { + "description": "The tag key.", + "type": "string" + }, + "Value": { + "description": "The tag value.", + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "description": "Specifies a virtual private cloud (VPC).\n To add an IPv6 CIDR block to the VPC, see [AWS::EC2::VPCCidrBlock](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-vpccidrblock.html).\n For more information, see [Virtual private clouds (VPC)](https://docs.aws.amazon.com/vpc/latest/userguide/configure-your-vpc.html) in the *Amazon VPC User Guide*.", + "handlers": { + "create": { + "permissions": [ + "ec2:CreateVpc", + "ec2:DescribeVpcs", + "ec2:ModifyVpcAttribute", + "ec2:CreateTags" + ] + }, + "delete": { + "permissions": [ + "ec2:DeleteVpc", + "ec2:DescribeVpcs" + ] + }, + "list": { + "permissions": [ + "ec2:DescribeVpcs" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeVpcs", + "ec2:DescribeSecurityGroups", + "ec2:DescribeNetworkAcls", + "ec2:DescribeVpcAttribute" + ] + }, + "update": { + "permissions": [ + "ec2:CreateTags", + "ec2:ModifyVpcAttribute", + "ec2:DeleteTags", + "ec2:ModifyVpcTenancy" + ] + } + }, + "primaryIdentifier": [ + "/properties/VpcId" + ], + "properties": { + "CidrBlock": { + "description": "The IPv4 network range for the VPC, in CIDR notation. For example, ``10.0.0.0/16``. We modify the specified CIDR block to its canonical form; for example, if you specify ``100.68.0.18/18``, we modify it to ``100.68.0.0/18``.\n You must specify either``CidrBlock`` or ``Ipv4IpamPoolId``.", + "type": "string" + }, + "CidrBlockAssociations": { + "description": "", + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "DefaultNetworkAcl": { + "description": "", + "insertionOrder": false, + "type": "string" + }, + "DefaultSecurityGroup": { + "description": "", + "insertionOrder": false, + "type": "string" + }, + "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. Disabled by default for nondefault VPCs. For more information, see [DNS attributes in your VPC](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-dns.html#vpc-dns-support).\n You can only enable DNS hostnames if you've enabled DNS support.", + "type": "boolean" + }, + "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. Enabled by default. For more information, see [DNS attributes in your VPC](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-dns.html#vpc-dns-support).", + "type": "boolean" + }, + "InstanceTenancy": { + "description": "The allowed tenancy of instances launched into the VPC.\n + ``default``: An instance launched into the VPC runs on shared hardware by default, unless you explicitly specify a different tenancy during instance launch.\n + ``dedicated``: An instance launched into the VPC runs on dedicated hardware by default, unless you explicitly specify a tenancy of ``host`` during instance launch. You cannot specify a tenancy of ``default`` during instance launch.\n \n Updating ``InstanceTenancy`` requires no replacement only if you are updating its value from ``dedicated`` to ``default``. Updating ``InstanceTenancy`` from ``default`` to ``dedicated`` requires replacement.", + "type": "string" + }, + "Ipv4IpamPoolId": { + "description": "The ID of an IPv4 IPAM pool you want to use for allocating this VPC's CIDR. For more information, see [What is IPAM?](https://docs.aws.amazon.com//vpc/latest/ipam/what-is-it-ipam.html) in the *Amazon VPC IPAM User Guide*.\n You must specify either``CidrBlock`` or ``Ipv4IpamPoolId``.", + "type": "string" + }, + "Ipv4NetmaskLength": { + "description": "The netmask length of the IPv4 CIDR you want to allocate to this VPC from an Amazon VPC IP Address Manager (IPAM) pool. For more information about IPAM, see [What is IPAM?](https://docs.aws.amazon.com//vpc/latest/ipam/what-is-it-ipam.html) in the *Amazon VPC IPAM User Guide*.", + "type": "integer" + }, + "Ipv6CidrBlocks": { + "description": "", + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "Tags": { + "description": "The tags for the VPC.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + }, + "VpcId": { + "description": "", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/CidrBlockAssociations", + "/properties/DefaultNetworkAcl", + "/properties/DefaultSecurityGroup", + "/properties/Ipv6CidrBlocks", + "/properties/VpcId" + ], + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "ec2:DeleteTags", + "ec2:CreateTags" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::EC2::VPC", + "writeOnlyProperties": [ + "/properties/Ipv4IpamPoolId", + "/properties/Ipv4NetmaskLength" + ] +} diff --git a/src/schema/aws-ec2-vpcblockpublicaccessexclusion.json b/src/schema/aws-ec2-vpcblockpublicaccessexclusion.json new file mode 100644 index 00000000..89750d42 --- /dev/null +++ b/src/schema/aws-ec2-vpcblockpublicaccessexclusion.json @@ -0,0 +1,131 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/VpcId", + "/properties/SubnetId" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::EC2::VPCBlockPublicAccessExclusion.", + "handlers": { + "create": { + "permissions": [ + "ec2:DescribeVpcBlockPublicAccessExclusions", + "ec2:CreateVpcBlockPublicAccessExclusion", + "ec2:CreateTags" + ] + }, + "delete": { + "permissions": [ + "ec2:DescribeVpcBlockPublicAccessExclusions", + "ec2:DeleteVpcBlockPublicAccessExclusion" + ] + }, + "list": { + "permissions": [ + "ec2:DescribeVpcBlockPublicAccessExclusions" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeVpcBlockPublicAccessExclusions" + ] + }, + "update": { + "permissions": [ + "ec2:DescribeVpcBlockPublicAccessExclusions", + "ec2:ModifyVpcBlockPublicAccessExclusion", + "ec2:CreateTags", + "ec2:DeleteTags" + ] + } + }, + "oneOf": [ + { + "required": [ + "VpcId" + ] + }, + { + "required": [ + "SubnetId" + ] + } + ], + "primaryIdentifier": [ + "/properties/ExclusionId" + ], + "properties": { + "ExclusionId": { + "description": "The ID of the exclusion", + "type": "string" + }, + "InternetGatewayExclusionMode": { + "description": "The desired Block Public Access Exclusion Mode for a specific VPC/Subnet.", + "enum": [ + "allow-bidirectional", + "allow-egress" + ], + "type": "string" + }, + "SubnetId": { + "description": "The ID of the subnet. Required only if you don't specify VpcId", + "type": "string" + }, + "Tags": { + "description": "An array of key-value pairs to apply to this resource.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + }, + "VpcId": { + "description": "The ID of the vpc. Required only if you don't specify SubnetId.", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/ExclusionId" + ], + "required": [ + "InternetGatewayExclusionMode" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ec2-vpcblockpublicaccessexclusion.git", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "ec2:CreateTags", + "ec2:DeleteTags" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::EC2::VPCBlockPublicAccessExclusion" +} diff --git a/src/schema/aws-ec2-vpcblockpublicaccessoptions.json b/src/schema/aws-ec2-vpcblockpublicaccessoptions.json new file mode 100644 index 00000000..5a47370f --- /dev/null +++ b/src/schema/aws-ec2-vpcblockpublicaccessoptions.json @@ -0,0 +1,60 @@ +{ + "additionalProperties": false, + "description": "Resource Type definition for AWS::EC2::VPCBlockPublicAccessOptions", + "handlers": { + "create": { + "permissions": [ + "ec2:DescribeVpcBlockPublicAccessOptions", + "ec2:ModifyVpcBlockPublicAccessOptions" + ] + }, + "delete": { + "permissions": [ + "ec2:DescribeVpcBlockPublicAccessOptions", + "ec2:ModifyVpcBlockPublicAccessOptions" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeVpcBlockPublicAccessOptions" + ] + }, + "update": { + "permissions": [ + "ec2:DescribeVpcBlockPublicAccessOptions", + "ec2:ModifyVpcBlockPublicAccessOptions" + ] + } + }, + "primaryIdentifier": [ + "/properties/AccountId" + ], + "properties": { + "AccountId": { + "description": "The identifier for the specified AWS account.", + "type": "string" + }, + "InternetGatewayBlockMode": { + "description": "The desired Block Public Access mode for Internet Gateways in your account. We do not allow to create in a off mode as this is the default value", + "enum": [ + "block-bidirectional", + "block-ingress" + ], + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/AccountId" + ], + "required": [ + "InternetGatewayBlockMode" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ec2-vpcblockpublicaccessoptions.git", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::EC2::VPCBlockPublicAccessOptions" +} diff --git a/src/schema/aws-ec2-vpccidrblock.json b/src/schema/aws-ec2-vpccidrblock.json new file mode 100644 index 00000000..08e0c50d --- /dev/null +++ b/src/schema/aws-ec2-vpccidrblock.json @@ -0,0 +1,128 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Ipv6Pool", + "/properties/VpcId", + "/properties/AmazonProvidedIpv6CidrBlock", + "/properties/Ipv6CidrBlock", + "/properties/CidrBlock", + "/properties/Ipv4IpamPoolId", + "/properties/Ipv4NetmaskLength", + "/properties/Ipv6IpamPoolId", + "/properties/Ipv6NetmaskLength", + "/properties/Ipv6CidrBlockNetworkBorderGroup" + ], + "description": "Resource Type definition for AWS::EC2::VPCCidrBlock", + "handlers": { + "create": { + "permissions": [ + "ec2:AssociateVpcCidrBlock", + "ec2:DescribeVpcs", + "ec2:AllocateIpamPoolCidr" + ] + }, + "delete": { + "permissions": [ + "ec2:DescribeVpcs", + "ec2:DisassociateVpcCidrBlock" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "VpcId": { + "description": "The ID of the VPC.", + "type": "string" + } + }, + "required": [ + "VpcId" + ] + }, + "permissions": [ + "ec2:DescribeVpcs" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeVpcs" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id", + "/properties/VpcId" + ], + "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.", + "type": "boolean" + }, + "CidrBlock": { + "description": "An IPv4 CIDR block to associate with the VPC.", + "type": "string" + }, + "Id": { + "description": "The Id of the VPC associated CIDR Block.", + "type": "string" + }, + "IpSource": { + "description": "The IP Source of an IPv6 VPC CIDR Block.", + "type": "string" + }, + "Ipv4IpamPoolId": { + "description": "The ID of the IPv4 IPAM pool to Associate a CIDR from to a VPC.", + "type": "string" + }, + "Ipv4NetmaskLength": { + "description": "The netmask length of the IPv4 CIDR you would like to associate from an Amazon VPC IP Address Manager (IPAM) pool.", + "type": "integer" + }, + "Ipv6AddressAttribute": { + "description": "The value denoting whether an IPv6 VPC CIDR Block is public or private.", + "type": "string" + }, + "Ipv6CidrBlock": { + "description": "An IPv6 CIDR block from the IPv6 address pool.", + "type": "string" + }, + "Ipv6CidrBlockNetworkBorderGroup": { + "description": "The name of the location from which we advertise the IPV6 CIDR block.", + "type": "string" + }, + "Ipv6IpamPoolId": { + "description": "The ID of the IPv6 IPAM pool to Associate a CIDR from to a VPC.", + "type": "string" + }, + "Ipv6NetmaskLength": { + "description": "The netmask length of the IPv6 CIDR you would like to associate from an Amazon VPC IP Address Manager (IPAM) pool.", + "type": "integer" + }, + "Ipv6Pool": { + "description": "The ID of an IPv6 address pool from which to allocate the IPv6 CIDR block.", + "type": "string" + }, + "VpcId": { + "description": "The ID of the VPC.", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id", + "/properties/Ipv6AddressAttribute", + "/properties/IpSource" + ], + "required": [ + "VpcId" + ], + "tagging": { + "taggable": false + }, + "typeName": "AWS::EC2::VPCCidrBlock", + "writeOnlyProperties": [ + "/properties/Ipv4IpamPoolId", + "/properties/Ipv4NetmaskLength", + "/properties/Ipv6IpamPoolId", + "/properties/Ipv6NetmaskLength" + ] +} diff --git a/src/schema/aws-ec2-vpcdhcpoptionsassociation.json b/src/schema/aws-ec2-vpcdhcpoptionsassociation.json new file mode 100644 index 00000000..c67314f6 --- /dev/null +++ b/src/schema/aws-ec2-vpcdhcpoptionsassociation.json @@ -0,0 +1,62 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/DhcpOptionsId", + "/properties/VpcId" + ], + "description": "Associates a set of DHCP options with a VPC, or associates no DHCP options with the VPC.", + "handlers": { + "create": { + "permissions": [ + "ec2:AssociateDhcpOptions" + ] + }, + "delete": { + "permissions": [ + "ec2:AssociateDhcpOptions" + ] + }, + "list": { + "permissions": [ + "ec2:DescribeVpcs" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeVpcs" + ] + }, + "update": { + "permissions": [ + "ec2:AssociateDhcpOptions" + ] + } + }, + "primaryIdentifier": [ + "/properties/DhcpOptionsId", + "/properties/VpcId" + ], + "properties": { + "DhcpOptionsId": { + "description": "The ID of the DHCP options set, or default to associate no DHCP options with the VPC.", + "type": "string" + }, + "VpcId": { + "description": "The ID of the VPC.", + "type": "string" + } + }, + "replacementStrategy": "delete_then_create", + "required": [ + "VpcId", + "DhcpOptionsId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ec2.git", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::EC2::VPCDHCPOptionsAssociation" +} diff --git a/src/schema/aws-ec2-vpcendpoint.json b/src/schema/aws-ec2-vpcendpoint.json new file mode 100644 index 00000000..079570c3 --- /dev/null +++ b/src/schema/aws-ec2-vpcendpoint.json @@ -0,0 +1,292 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ServiceName", + "/properties/VpcEndpointType", + "/properties/VpcId", + "/properties/ServiceNetworkArn", + "/properties/ResourceConfigurationArn", + "/properties/ServiceRegion" + ], + "definitions": { + "DnsOptionsSpecification": { + "additionalProperties": false, + "description": "Describes the DNS options for an endpoint.", + "properties": { + "DnsRecordIpType": { + "description": "The DNS records created for the endpoint.", + "enum": [ + "ipv4", + "ipv6", + "dualstack", + "service-defined", + "not-specified" + ], + "type": "string" + }, + "PrivateDnsOnlyForInboundResolverEndpoint": { + "description": "Indicates whether to enable private DNS only for inbound endpoints. This option is available only for services that support both gateway and interface endpoints. It routes traffic that originates from the VPC to the gateway endpoint and traffic that originates from on-premises to the interface endpoint.", + "enum": [ + "OnlyInboundResolver", + "AllResolvers", + "NotSpecified" + ], + "type": "string" + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "description": "Describes a tag.", + "properties": { + "Key": { + "description": "The key of the tag.\n Constraints: Tag keys are case-sensitive and accept a maximum of 127 Unicode characters. May not begin with ``aws:``.", + "type": "string" + }, + "Value": { + "description": "The value of the tag.\n Constraints: Tag values are case-sensitive and accept a maximum of 256 Unicode characters.", + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "description": "Specifies a VPC endpoint. A VPC endpoint provides a private connection between your VPC and an endpoint service. You can use an endpoint service provided by AWS, an MKT Partner, or another AWS accounts in your organization. For more information, see the [User Guide](https://docs.aws.amazon.com/vpc/latest/privatelink/).\n An endpoint of type ``Interface`` establishes connections between the subnets in your VPC and an AWS-service, your own service, or a service hosted by another AWS-account. With an interface VPC endpoint, you specify the subnets in which to create the endpoint and the security groups to associate with the endpoint network interfaces.\n An endpoint of type ``gateway`` serves as a target for a route in your route table for traffic destined for S3 or DDB. You can specify an endpoint policy for the endpoint, which controls access to the service from your VPC. You can also specify the VPC route tables that use the endpoint. For more information about connectivity to S3, see [Why can't I connect to an S3 bucket using a gateway VPC endpoint?](https://docs.aws.amazon.com/premiumsupport/knowledge-center/connect-s3-vpc-endpoint) \n An endpoint of type ``GatewayLoadBalancer`` provides private connectivity between your VPC and virtual appliances from a service provider.", + "handlers": { + "create": { + "permissions": [ + "ec2:CreateVpcEndpoint", + "ec2:DescribeVpcEndpoints", + "ec2:DescribeSubnets", + "ec2:DescribeSecurityGroups", + "vpc-lattice:CreateServiceNetworkVpcEndpointAssociation", + "vpc-lattice:DescribeServiceNetworkVpcEndpointAssociation", + "ec2:CreateTags", + "ec2:DeleteTags", + "vpce:AllowMultiRegion" + ], + "timeoutInMinutes": 210 + }, + "delete": { + "permissions": [ + "ec2:DeleteVpcEndpoints", + "ec2:DescribeVpcEndpoints", + "ec2:DescribeSubnets", + "ec2:DescribeSecurityGroups", + "vpc-lattice:DescribeServiceNetworkVpcEndpointAssociation", + "ec2:CreateTags", + "ec2:DeleteTags", + "vpce:AllowMultiRegion" + ], + "timeoutInMinutes": 210 + }, + "list": { + "permissions": [ + "ec2:DescribeVpcEndpoints", + "ec2:DescribeSubnets", + "ec2:DescribeSecurityGroups", + "vpc-lattice:DescribeServiceNetworkVpcEndpointAssociation" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeVpcEndpoints", + "ec2:DescribeSubnets", + "ec2:DescribeSecurityGroups", + "vpc-lattice:DescribeServiceNetworkVpcEndpointAssociation" + ] + }, + "update": { + "permissions": [ + "ec2:ModifyVpcEndpoint", + "ec2:DescribeVpcEndpoints", + "ec2:DescribeSubnets", + "ec2:DescribeSecurityGroups", + "vpc-lattice:CreateServiceNetworkVpcEndpointAssociation", + "vpc-lattice:DescribeServiceNetworkVpcEndpointAssociation", + "ec2:CreateTags", + "ec2:DeleteTags", + "vpce:AllowMultiRegion" + ], + "timeoutInMinutes": 210 + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "CreationTimestamp": { + "description": "", + "type": "string" + }, + "DnsEntries": { + "description": "", + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "DnsOptions": { + "$ref": "#/definitions/DnsOptionsSpecification", + "description": "Describes the DNS options for an endpoint." + }, + "Id": { + "description": "", + "type": "string" + }, + "IpAddressType": { + "description": "The supported IP address types.", + "enum": [ + "ipv4", + "ipv6", + "dualstack", + "not-specified" + ], + "type": "string" + }, + "NetworkInterfaceIds": { + "description": "", + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "PolicyDocument": { + "description": "An endpoint policy, which controls access to the service from the VPC. The default endpoint policy allows full access to the service. Endpoint policies are supported only for gateway and interface endpoints.\n For CloudFormation templates in YAML, you can provide the policy in JSON or YAML format. For example, if you have a JSON policy, you can convert it to YAML before including it in the YAML template, and CFNlong converts the policy to JSON format before calling the API actions for privatelink. Alternatively, you can include the JSON directly in the YAML, as shown in the following ``Properties`` section:\n ``Properties: VpcEndpointType: 'Interface' ServiceName: !Sub 'com.amazonaws.${AWS::Region}.logs' PolicyDocument: '{ \"Version\":\"2012-10-17\", \"Statement\": [{ \"Effect\":\"Allow\", \"Principal\":\"*\", \"Action\":[\"logs:Describe*\",\"logs:Get*\",\"logs:List*\",\"logs:FilterLogEvents\"], \"Resource\":\"*\" }] }'``", + "type": [ + "string", + "object" + ] + }, + "PrivateDnsEnabled": { + "description": "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.\n To use a private hosted zone, you must set the following VPC attributes to ``true``: ``enableDnsHostnames`` and ``enableDnsSupport``.\n This property is supported only for interface endpoints.\n Default: ``false``", + "type": "boolean" + }, + "ResourceConfigurationArn": { + "description": "The Amazon Resource Name (ARN) of the resource configuration.", + "type": "string" + }, + "RouteTableIds": { + "description": "The IDs of the route tables. Routing is supported only for gateway endpoints.", + "insertionOrder": false, + "items": { + "relationshipRef": { + "propertyPath": "/properties/RouteTableId", + "typeName": "AWS::EC2::RouteTable" + }, + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "SecurityGroupIds": { + "description": "The IDs of the security groups to associate with the endpoint network interfaces. If this parameter is not specified, we use the default security group for the VPC. Security groups are supported only for interface endpoints.", + "insertionOrder": false, + "items": { + "anyOf": [ + { + "relationshipRef": { + "propertyPath": "/properties/GroupId", + "typeName": "AWS::EC2::SecurityGroup" + } + }, + { + "relationshipRef": { + "propertyPath": "/properties/Id", + "typeName": "AWS::EC2::SecurityGroup" + } + }, + { + "relationshipRef": { + "propertyPath": "/properties/DefaultSecurityGroup", + "typeName": "AWS::EC2::VPC" + } + } + ], + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "ServiceName": { + "description": "The name of the endpoint service.", + "type": "string" + }, + "ServiceNetworkArn": { + "description": "The Amazon Resource Name (ARN) of the service network.", + "type": "string" + }, + "ServiceRegion": { + "description": "", + "type": "string" + }, + "SubnetIds": { + "description": "The IDs of the subnets in which to create endpoint network interfaces. You must specify this property for an interface endpoint or a Gateway Load Balancer endpoint. You can't specify this property for a gateway endpoint. For a Gateway Load Balancer endpoint, you can specify only one subnet.", + "insertionOrder": false, + "items": { + "relationshipRef": { + "propertyPath": "/properties/SubnetId", + "typeName": "AWS::EC2::Subnet" + }, + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "Tags": { + "description": "The tags to associate with the endpoint.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + }, + "VpcEndpointType": { + "description": "The type of endpoint.\n Default: Gateway", + "enum": [ + "Interface", + "Gateway", + "GatewayLoadBalancer", + "ServiceNetwork", + "Resource" + ], + "type": "string" + }, + "VpcId": { + "description": "The ID of the VPC.", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/NetworkInterfaceIds", + "/properties/CreationTimestamp", + "/properties/DnsEntries", + "/properties/Id" + ], + "required": [ + "VpcId" + ], + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "ec2:CreateTags", + "ec2:DeleteTags", + "ec2:DescribeVpcEndpoints" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::EC2::VPCEndpoint" +} diff --git a/src/schema/aws-ec2-vpcendpointconnectionnotification.json b/src/schema/aws-ec2-vpcendpointconnectionnotification.json new file mode 100644 index 00000000..9a0aa0ca --- /dev/null +++ b/src/schema/aws-ec2-vpcendpointconnectionnotification.json @@ -0,0 +1,81 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ServiceId", + "/properties/VPCEndpointId" + ], + "description": "Resource Type definition for AWS::EC2::VPCEndpointConnectionNotification", + "handlers": { + "create": { + "permissions": [ + "ec2:CreateVpcEndpointConnectionNotification" + ] + }, + "delete": { + "permissions": [ + "ec2:DeleteVpcEndpointConnectionNotifications" + ] + }, + "list": { + "permissions": [ + "ec2:DescribeVpcEndpointConnectionNotifications" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeVpcEndpointConnectionNotifications" + ] + }, + "update": { + "permissions": [ + "ec2:ModifyVpcEndpointConnectionNotification", + "ec2:DescribeVpcEndpointConnectionNotifications" + ] + } + }, + "primaryIdentifier": [ + "/properties/VPCEndpointConnectionNotificationId" + ], + "properties": { + "ConnectionEvents": { + "description": "The endpoint events for which to receive notifications.", + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "ConnectionNotificationArn": { + "description": "The ARN of the SNS topic for the notifications.", + "type": "string" + }, + "ServiceId": { + "description": "The ID of the endpoint service.", + "type": "string" + }, + "VPCEndpointConnectionNotificationId": { + "description": "VPC Endpoint Connection ID generated by service", + "type": "string" + }, + "VPCEndpointId": { + "description": "The ID of the endpoint.", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/VPCEndpointConnectionNotificationId" + ], + "required": [ + "ConnectionEvents", + "ConnectionNotificationArn" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ec2-vpc-endpoint", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::EC2::VPCEndpointConnectionNotification" +} diff --git a/src/schema/aws-ec2-vpcendpointservice.json b/src/schema/aws-ec2-vpcendpointservice.json new file mode 100644 index 00000000..22029501 --- /dev/null +++ b/src/schema/aws-ec2-vpcendpointservice.json @@ -0,0 +1,158 @@ +{ + "additionalProperties": false, + "definitions": { + "IpAddressType": { + "enum": [ + "ipv4", + "ipv6" + ], + "type": "string" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::EC2::VPCEndpointService", + "handlers": { + "create": { + "permissions": [ + "ec2:CreateVpcEndpointServiceConfiguration", + "ec2:ModifyVpcEndpointServicePayerResponsibility", + "cloudwatch:ListManagedInsightRules", + "cloudwatch:DeleteInsightRules", + "cloudwatch:PutManagedInsightRules", + "ec2:DescribeVpcEndpointServiceConfigurations", + "vpce:AllowMultiRegion", + "ec2:CreateTags" + ] + }, + "delete": { + "permissions": [ + "ec2:DeleteVpcEndpointServiceConfigurations", + "ec2:DescribeVpcEndpointServiceConfigurations", + "cloudwatch:ListManagedInsightRules", + "cloudwatch:DeleteInsightRules", + "ec2:DeleteTags", + "vpce:AllowMultiRegion" + ] + }, + "list": { + "permissions": [ + "ec2:DescribeVpcEndpointServiceConfigurations", + "cloudwatch:ListManagedInsightRules" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeVpcEndpointServiceConfigurations", + "cloudwatch:ListManagedInsightRules" + ] + }, + "update": { + "permissions": [ + "ec2:ModifyVpcEndpointServiceConfiguration", + "ec2:DescribeVpcEndpointServiceConfigurations", + "ec2:ModifyVpcEndpointServicePayerResponsibility", + "cloudwatch:ListManagedInsightRules", + "cloudwatch:DeleteInsightRules", + "cloudwatch:PutManagedInsightRules", + "ec2:CreateTags", + "ec2:DeleteTags", + "vpce:AllowMultiRegion" + ] + } + }, + "primaryIdentifier": [ + "/properties/ServiceId" + ], + "properties": { + "AcceptanceRequired": { + "type": "boolean" + }, + "ContributorInsightsEnabled": { + "type": "boolean" + }, + "GatewayLoadBalancerArns": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "NetworkLoadBalancerArns": { + "items": { + "relationshipRef": { + "propertyPath": "/properties/LoadBalancerArn", + "typeName": "AWS::ElasticLoadBalancingV2::LoadBalancer" + }, + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "PayerResponsibility": { + "type": "string" + }, + "ServiceId": { + "type": "string" + }, + "SupportedIpAddressTypes": { + "description": "Specify which Ip Address types are supported for VPC endpoint service.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/IpAddressType" + }, + "type": "array", + "uniqueItems": false + }, + "SupportedRegions": { + "description": "The Regions from which service consumers can access the service.", + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "Tags": { + "description": "The tags to add to the VPC endpoint service.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + } + }, + "readOnlyProperties": [ + "/properties/ServiceId" + ], + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "ec2:CreateTags", + "ec2:DeleteTags" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::EC2::VPCEndpointService", + "writeOnlyProperties": [ + "/properties/ContributorInsightsEnabled" + ] +} diff --git a/src/schema/aws-ec2-vpcendpointservicepermissions.json b/src/schema/aws-ec2-vpcendpointservicepermissions.json new file mode 100644 index 00000000..a0da250f --- /dev/null +++ b/src/schema/aws-ec2-vpcendpointservicepermissions.json @@ -0,0 +1,74 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ServiceId" + ], + "description": "Resource Type definition for AWS::EC2::VPCEndpointServicePermissions", + "handlers": { + "create": { + "permissions": [ + "ec2:CreateVpcEndpointServicePermissions", + "ec2:ModifyVpcEndpointServicePermissions", + "ec2:DeleteVpcEndpointServicePermissions", + "ec2:DescribeVpcEndpointServicePermissions" + ] + }, + "delete": { + "permissions": [ + "ec2:CreateVpcEndpointServicePermissions", + "ec2:ModifyVpcEndpointServicePermissions", + "ec2:DeleteVpcEndpointServicePermissions", + "ec2:DescribeVpcEndpointServicePermissions" + ] + }, + "list": { + "permissions": [ + "ec2:CreateVpcEndpointServicePermissions", + "ec2:ModifyVpcEndpointServicePermissions", + "ec2:DeleteVpcEndpointServicePermissions", + "ec2:DescribeVpcEndpointServicePermissions" + ] + }, + "read": { + "permissions": [ + "ec2:CreateVpcEndpointServicePermissions", + "ec2:ModifyVpcEndpointServicePermissions", + "ec2:DeleteVpcEndpointServicePermissions", + "ec2:DescribeVpcEndpointServicePermissions" + ] + }, + "update": { + "permissions": [ + "ec2:CreateVpcEndpointServicePermissions", + "ec2:ModifyVpcEndpointServicePermissions", + "ec2:DeleteVpcEndpointServicePermissions", + "ec2:DescribeVpcEndpointServicePermissions" + ] + } + }, + "primaryIdentifier": [ + "/properties/ServiceId" + ], + "properties": { + "AllowedPrincipals": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "ServiceId": { + "type": "string" + } + }, + "required": [ + "ServiceId" + ], + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::EC2::VPCEndpointServicePermissions" +} diff --git a/src/schema/aws-ec2-vpcgatewayattachment.json b/src/schema/aws-ec2-vpcgatewayattachment.json new file mode 100644 index 00000000..db1dca91 --- /dev/null +++ b/src/schema/aws-ec2-vpcgatewayattachment.json @@ -0,0 +1,84 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/VpcId" + ], + "description": "Resource Type definition for AWS::EC2::VPCGatewayAttachment", + "handlers": { + "create": { + "permissions": [ + "ec2:AttachInternetGateway", + "ec2:AttachVpnGateway", + "ec2:DescribeInternetGateways", + "ec2:DescribeVpnGateways" + ] + }, + "delete": { + "permissions": [ + "ec2:DetachInternetGateway", + "ec2:DetachVpnGateway", + "ec2:DescribeInternetGateways", + "ec2:DescribeVpnGateways" + ] + }, + "list": { + "permissions": [ + "ec2:DescribeInternetGateways", + "ec2:DescribeVpnGateways" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeInternetGateways", + "ec2:DescribeVpnGateways" + ] + }, + "update": { + "permissions": [ + "ec2:AttachInternetGateway", + "ec2:AttachVpnGateway", + "ec2:DetachInternetGateway", + "ec2:DetachVpnGateway", + "ec2:DescribeInternetGateways", + "ec2:DescribeVpnGateways" + ] + } + }, + "primaryIdentifier": [ + "/properties/AttachmentType", + "/properties/VpcId" + ], + "properties": { + "AttachmentType": { + "description": "Used to identify if this resource is an Internet Gateway or Vpn Gateway Attachment ", + "type": "string" + }, + "InternetGatewayId": { + "description": "The ID of the internet gateway. You must specify either InternetGatewayId or VpnGatewayId, but not both.", + "type": "string" + }, + "VpcId": { + "description": "The ID of the VPC.", + "type": "string" + }, + "VpnGatewayId": { + "description": "The ID of the virtual private gateway. You must specify either InternetGatewayId or VpnGatewayId, but not both.", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/AttachmentType" + ], + "replacementStrategy": "delete_then_create", + "required": [ + "VpcId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ec2-vpc-gateway-attachment.git", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::EC2::VPCGatewayAttachment" +} diff --git a/src/schema/aws-ec2-vpcpeeringconnection.json b/src/schema/aws-ec2-vpcpeeringconnection.json new file mode 100644 index 00000000..97307a87 --- /dev/null +++ b/src/schema/aws-ec2-vpcpeeringconnection.json @@ -0,0 +1,125 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/PeerRegion", + "/properties/PeerOwnerId", + "/properties/PeerVpcId", + "/properties/PeerRoleArn", + "/properties/VpcId" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::EC2::VPCPeeringConnection", + "handlers": { + "create": { + "permissions": [ + "ec2:CreateVpcPeeringConnection", + "ec2:DescribeVpcPeeringConnections", + "ec2:AcceptVpcPeeringConnection", + "ec2:CreateTags", + "sts:AssumeRole" + ] + }, + "delete": { + "permissions": [ + "ec2:DeleteVpcPeeringConnection", + "ec2:DescribeVpcPeeringConnections" + ] + }, + "list": { + "permissions": [ + "ec2:DescribeVpcPeeringConnections" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeVpcPeeringConnections" + ] + }, + "update": { + "permissions": [ + "ec2:CreateTags", + "ec2:DeleteTags", + "ec2:DescribeVpcPeeringConnections" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Id": { + "type": "string" + }, + "PeerOwnerId": { + "description": "The AWS account ID of the owner of the accepter VPC.", + "type": "string" + }, + "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.", + "type": "string" + }, + "PeerRoleArn": { + "description": "The Amazon Resource Name (ARN) of the VPC peer role for the peering connection in another AWS account.", + "type": "string" + }, + "PeerVpcId": { + "description": "The ID of the VPC with which you are creating the VPC peering connection. You must specify this parameter in the request.", + "type": "string" + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + }, + "VpcId": { + "description": "The ID of the VPC.", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "VpcId", + "PeerVpcId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-ec2-vpcpeering.git", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "ec2:CreateTags", + "ec2:DeleteTags" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::EC2::VPCPeeringConnection", + "writeOnlyProperties": [ + "/properties/PeerRoleArn" + ] +} diff --git a/src/schema/aws-ec2-vpnconnection.json b/src/schema/aws-ec2-vpnconnection.json new file mode 100644 index 00000000..e29ded2e --- /dev/null +++ b/src/schema/aws-ec2-vpnconnection.json @@ -0,0 +1,482 @@ +{ + "$schema": "https://raw.githubusercontent.com/aws-cloudformation/cloudformation-resource-schema/blob/master/src/main/resources/schema/provider.definition.schema.v1.json", + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Type", + "/properties/CustomerGatewayId", + "/properties/VpnGatewayId", + "/properties/TransitGatewayId", + "/properties/EnableAcceleration", + "/properties/LocalIpv4NetworkCidr", + "/properties/LocalIpv6NetworkCidr", + "/properties/OutsideIpAddressType", + "/properties/RemoteIpv4NetworkCidr", + "/properties/RemoteIpv6NetworkCidr", + "/properties/StaticRoutesOnly", + "/properties/TransportTransitGatewayAttachmentId", + "/properties/TunnelInsideIpVersion", + "/properties/VpnTunnelOptionsSpecifications" + ], + "definitions": { + "CloudwatchLogOptionsSpecification": { + "additionalProperties": false, + "description": "Options for sending VPN tunnel logs to CloudWatch.", + "properties": { + "LogEnabled": { + "description": "Enable or disable VPN tunnel logging feature. Default value is ``False``.\n Valid values: ``True`` | ``False``", + "type": "boolean" + }, + "LogGroupArn": { + "description": "The Amazon Resource Name (ARN) of the CloudWatch log group to send logs to.", + "type": "string" + }, + "LogOutputFormat": { + "description": "Set log format. Default format is ``json``.\n Valid values: ``json`` | ``text``", + "enum": [ + "json", + "text" + ], + "type": "string" + } + }, + "type": "object" + }, + "IKEVersionsRequestListValue": { + "additionalProperties": false, + "description": "The IKE version that is permitted for the VPN tunnel.", + "properties": { + "Value": { + "description": "The IKE version.", + "enum": [ + "ikev1", + "ikev2" + ], + "type": "string" + } + }, + "type": "object" + }, + "Phase1DHGroupNumbersRequestListValue": { + "additionalProperties": false, + "description": "Specifies a Diffie-Hellman group number for the VPN tunnel for phase 1 IKE negotiations.", + "properties": { + "Value": { + "description": "The Diffie-Hellmann group number.", + "enum": [ + 2, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24 + ], + "type": "integer" + } + }, + "type": "object" + }, + "Phase1EncryptionAlgorithmsRequestListValue": { + "additionalProperties": false, + "description": "Specifies the encryption algorithm for the VPN tunnel for phase 1 IKE negotiations.", + "properties": { + "Value": { + "description": "The value for the encryption algorithm.", + "enum": [ + "AES128", + "AES256", + "AES128-GCM-16", + "AES256-GCM-16" + ], + "type": "string" + } + }, + "type": "object" + }, + "Phase1IntegrityAlgorithmsRequestListValue": { + "additionalProperties": false, + "description": "Specifies the integrity algorithm for the VPN tunnel for phase 1 IKE negotiations.", + "properties": { + "Value": { + "description": "The value for the integrity algorithm.", + "enum": [ + "SHA1", + "SHA2-256", + "SHA2-384", + "SHA2-512" + ], + "type": "string" + } + }, + "type": "object" + }, + "Phase2DHGroupNumbersRequestListValue": { + "additionalProperties": false, + "description": "Specifies a Diffie-Hellman group number for the VPN tunnel for phase 2 IKE negotiations.", + "properties": { + "Value": { + "description": "The Diffie-Hellmann group number.", + "enum": [ + 2, + 5, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24 + ], + "type": "integer" + } + }, + "type": "object" + }, + "Phase2EncryptionAlgorithmsRequestListValue": { + "additionalProperties": false, + "description": "Specifies the encryption algorithm for the VPN tunnel for phase 2 IKE negotiations.", + "properties": { + "Value": { + "description": "The encryption algorithm.", + "enum": [ + "AES128", + "AES256", + "AES128-GCM-16", + "AES256-GCM-16" + ], + "type": "string" + } + }, + "type": "object" + }, + "Phase2IntegrityAlgorithmsRequestListValue": { + "additionalProperties": false, + "description": "Specifies the integrity algorithm for the VPN tunnel for phase 2 IKE negotiations.", + "properties": { + "Value": { + "description": "The integrity algorithm.", + "enum": [ + "SHA1", + "SHA2-256", + "SHA2-384", + "SHA2-512" + ], + "type": "string" + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "description": "Specifies a tag. For more information, see [Resource tags](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-resource-tags.html).", + "properties": { + "Key": { + "description": "The tag key.", + "type": "string" + }, + "Value": { + "description": "The tag value.", + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + }, + "VpnTunnelLogOptionsSpecification": { + "additionalProperties": false, + "description": "Options for logging VPN tunnel activity.", + "properties": { + "CloudwatchLogOptions": { + "$ref": "#/definitions/CloudwatchLogOptionsSpecification", + "description": "Options for sending VPN tunnel logs to CloudWatch." + } + }, + "type": "object" + }, + "VpnTunnelOptionsSpecification": { + "additionalProperties": false, + "description": "The tunnel options for a single VPN tunnel.", + "properties": { + "DPDTimeoutAction": { + "description": "The action to take after DPD timeout occurs. Specify ``restart`` to restart the IKE initiation. Specify ``clear`` to end the IKE session.\n Valid Values: ``clear`` | ``none`` | ``restart`` \n Default: ``clear``", + "enum": [ + "clear", + "none", + "restart" + ], + "type": "string" + }, + "DPDTimeoutSeconds": { + "description": "The number of seconds after which a DPD timeout occurs.\n Constraints: A value greater than or equal to 30.\n Default: ``30``", + "minimum": 30, + "type": "integer" + }, + "EnableTunnelLifecycleControl": { + "description": "Turn on or off tunnel endpoint lifecycle control feature.", + "type": "boolean" + }, + "IKEVersions": { + "description": "The IKE versions that are permitted for the VPN tunnel.\n Valid values: ``ikev1`` | ``ikev2``", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/IKEVersionsRequestListValue" + }, + "type": "array", + "uniqueItems": false + }, + "LogOptions": { + "$ref": "#/definitions/VpnTunnelLogOptionsSpecification", + "description": "Options for logging VPN tunnel activity." + }, + "Phase1DHGroupNumbers": { + "description": "One or more Diffie-Hellman group numbers that are permitted for the VPN tunnel for phase 1 IKE negotiations.\n Valid values: ``2`` | ``14`` | ``15`` | ``16`` | ``17`` | ``18`` | ``19`` | ``20`` | ``21`` | ``22`` | ``23`` | ``24``", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Phase1DHGroupNumbersRequestListValue" + }, + "type": "array", + "uniqueItems": false + }, + "Phase1EncryptionAlgorithms": { + "description": "One or more encryption algorithms that are permitted for the VPN tunnel for phase 1 IKE negotiations.\n Valid values: ``AES128`` | ``AES256`` | ``AES128-GCM-16`` | ``AES256-GCM-16``", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Phase1EncryptionAlgorithmsRequestListValue" + }, + "type": "array", + "uniqueItems": false + }, + "Phase1IntegrityAlgorithms": { + "description": "One or more integrity algorithms that are permitted for the VPN tunnel for phase 1 IKE negotiations.\n Valid values: ``SHA1`` | ``SHA2-256`` | ``SHA2-384`` | ``SHA2-512``", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Phase1IntegrityAlgorithmsRequestListValue" + }, + "type": "array", + "uniqueItems": false + }, + "Phase1LifetimeSeconds": { + "description": "The lifetime for phase 1 of the IKE negotiation, in seconds.\n Constraints: A value between 900 and 28,800.\n Default: ``28800``", + "maximum": 28800, + "minimum": 900, + "type": "integer" + }, + "Phase2DHGroupNumbers": { + "description": "One or more Diffie-Hellman group numbers that are permitted for the VPN tunnel for phase 2 IKE negotiations.\n Valid values: ``2`` | ``5`` | ``14`` | ``15`` | ``16`` | ``17`` | ``18`` | ``19`` | ``20`` | ``21`` | ``22`` | ``23`` | ``24``", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Phase2DHGroupNumbersRequestListValue" + }, + "type": "array", + "uniqueItems": false + }, + "Phase2EncryptionAlgorithms": { + "description": "One or more encryption algorithms that are permitted for the VPN tunnel for phase 2 IKE negotiations.\n Valid values: ``AES128`` | ``AES256`` | ``AES128-GCM-16`` | ``AES256-GCM-16``", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Phase2EncryptionAlgorithmsRequestListValue" + }, + "type": "array", + "uniqueItems": false + }, + "Phase2IntegrityAlgorithms": { + "description": "One or more integrity algorithms that are permitted for the VPN tunnel for phase 2 IKE negotiations.\n Valid values: ``SHA1`` | ``SHA2-256`` | ``SHA2-384`` | ``SHA2-512``", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Phase2IntegrityAlgorithmsRequestListValue" + }, + "type": "array", + "uniqueItems": false + }, + "Phase2LifetimeSeconds": { + "description": "The lifetime for phase 2 of the IKE negotiation, in seconds.\n Constraints: A value between 900 and 3,600. The value must be less than the value for ``Phase1LifetimeSeconds``.\n Default: ``3600``", + "maximum": 3600, + "minimum": 900, + "type": "integer" + }, + "PreSharedKey": { + "description": "The pre-shared key (PSK) to establish initial authentication between the virtual private gateway and customer gateway.\n Constraints: Allowed characters are alphanumeric characters, periods (.), and underscores (_). Must be between 8 and 64 characters in length and cannot start with zero (0).", + "type": "string" + }, + "RekeyFuzzPercentage": { + "description": "The percentage of the rekey window (determined by ``RekeyMarginTimeSeconds``) during which the rekey time is randomly selected.\n Constraints: A value between 0 and 100.\n Default: ``100``", + "maximum": 100, + "minimum": 0, + "type": "integer" + }, + "RekeyMarginTimeSeconds": { + "description": "The margin time, in seconds, before the phase 2 lifetime expires, during which the AWS side of the VPN connection performs an IKE rekey. The exact time of the rekey is randomly selected based on the value for ``RekeyFuzzPercentage``.\n Constraints: A value between 60 and half of ``Phase2LifetimeSeconds``.\n Default: ``270``", + "minimum": 60, + "type": "integer" + }, + "ReplayWindowSize": { + "description": "The number of packets in an IKE replay window.\n Constraints: A value between 64 and 2048.\n Default: ``1024``", + "maximum": 2048, + "minimum": 64, + "type": "integer" + }, + "StartupAction": { + "description": "The action to take when the establishing the tunnel for the VPN connection. By default, your customer gateway device must initiate the IKE negotiation and bring up the tunnel. Specify ``start`` for AWS to initiate the IKE negotiation.\n Valid Values: ``add`` | ``start`` \n Default: ``add``", + "enum": [ + "add", + "start" + ], + "type": "string" + }, + "TunnelInsideCidr": { + "description": "The range of inside IP addresses for the tunnel. Any specified CIDR blocks must be unique across all VPN connections that use the same virtual private gateway. \n Constraints: A size /30 CIDR block from the ``169.254.0.0/16`` range. The following CIDR blocks are reserved and cannot be used:\n + ``169.254.0.0/30`` \n + ``169.254.1.0/30`` \n + ``169.254.2.0/30`` \n + ``169.254.3.0/30`` \n + ``169.254.4.0/30`` \n + ``169.254.5.0/30`` \n + ``169.254.169.252/30``", + "type": "string" + }, + "TunnelInsideIpv6Cidr": { + "description": "The range of inside IPv6 addresses for the tunnel. Any specified CIDR blocks must be unique across all VPN connections that use the same transit gateway.\n Constraints: A size /126 CIDR block from the local ``fd00::/8`` range.", + "type": "string" + } + }, + "type": "object" + } + }, + "description": "Specifies a VPN connection between a virtual private gateway and a VPN customer gateway or a transit gateway and a VPN customer gateway.\n To specify a VPN connection between a transit gateway and customer gateway, use the ``TransitGatewayId`` and ``CustomerGatewayId`` properties.\n To specify a VPN connection between a virtual private gateway and customer gateway, use the ``VpnGatewayId`` and ``CustomerGatewayId`` properties.\n For more information, see [](https://docs.aws.amazon.com/vpn/latest/s2svpn/VPC_VPN.html) in the *User Guide*.", + "handlers": { + "create": { + "permissions": [ + "ec2:DescribeVpnConnections", + "ec2:CreateVpnConnection", + "ec2:CreateTags" + ] + }, + "delete": { + "permissions": [ + "ec2:DescribeVpnConnections", + "ec2:DeleteVpnConnection" + ] + }, + "list": { + "permissions": [ + "ec2:DescribeVpnConnections" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeVpnConnections" + ] + }, + "update": { + "permissions": [ + "ec2:DescribeVpnConnections", + "ec2:CreateTags", + "ec2:DeleteTags" + ] + } + }, + "primaryIdentifier": [ + "/properties/VpnConnectionId" + ], + "properties": { + "CustomerGatewayId": { + "description": "The ID of the customer gateway at your end of the VPN connection.", + "type": "string" + }, + "EnableAcceleration": { + "description": "Indicate whether to enable acceleration for the VPN connection.\n Default: ``false``", + "type": "boolean" + }, + "LocalIpv4NetworkCidr": { + "description": "The IPv4 CIDR on the customer gateway (on-premises) side of the VPN connection.\n Default: ``0.0.0.0/0``", + "type": "string" + }, + "LocalIpv6NetworkCidr": { + "description": "The IPv6 CIDR on the customer gateway (on-premises) side of the VPN connection.\n Default: ``::/0``", + "type": "string" + }, + "OutsideIpAddressType": { + "description": "The type of IPv4 address assigned to the outside interface of the customer gateway device.\n Valid values: ``PrivateIpv4`` | ``PublicIpv4`` \n Default: ``PublicIpv4``", + "type": "string" + }, + "RemoteIpv4NetworkCidr": { + "description": "The IPv4 CIDR on the AWS side of the VPN connection.\n Default: ``0.0.0.0/0``", + "type": "string" + }, + "RemoteIpv6NetworkCidr": { + "description": "The IPv6 CIDR on the AWS side of the VPN connection.\n Default: ``::/0``", + "type": "string" + }, + "StaticRoutesOnly": { + "description": "Indicates whether the VPN connection uses static routes only. Static routes must be used for devices that don't support BGP.\n If you are creating a VPN connection for a device that does not support Border Gateway Protocol (BGP), you must specify ``true``.", + "type": "boolean" + }, + "Tags": { + "description": "Any tags assigned to the VPN connection.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + }, + "TransitGatewayId": { + "description": "The ID of the transit gateway associated with the VPN connection.\n You must specify either ``TransitGatewayId`` or ``VpnGatewayId``, but not both.", + "type": "string" + }, + "TransportTransitGatewayAttachmentId": { + "description": "The transit gateway attachment ID to use for the VPN tunnel.\n Required if ``OutsideIpAddressType`` is set to ``PrivateIpv4``.", + "type": "string" + }, + "TunnelInsideIpVersion": { + "description": "Indicate whether the VPN tunnels process IPv4 or IPv6 traffic.\n Default: ``ipv4``", + "type": "string" + }, + "Type": { + "description": "The type of VPN connection.", + "type": "string" + }, + "VpnConnectionId": { + "description": "", + "type": "string" + }, + "VpnGatewayId": { + "description": "The ID of the virtual private gateway at the AWS side of the VPN connection.\n You must specify either ``TransitGatewayId`` or ``VpnGatewayId``, but not both.", + "type": "string" + }, + "VpnTunnelOptionsSpecifications": { + "description": "The tunnel options for the VPN connection.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/VpnTunnelOptionsSpecification" + }, + "type": "array", + "uniqueItems": false + } + }, + "readOnlyProperties": [ + "/properties/VpnConnectionId" + ], + "replacementStrategy": "delete_then_create", + "required": [ + "Type", + "CustomerGatewayId" + ], + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "ec2:CreateTags", + "ec2:DeleteTags" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::EC2::VPNConnection" +} diff --git a/src/schema/aws-ec2-vpnconnectionroute.json b/src/schema/aws-ec2-vpnconnectionroute.json new file mode 100644 index 00000000..8444ad6f --- /dev/null +++ b/src/schema/aws-ec2-vpnconnectionroute.json @@ -0,0 +1,55 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/DestinationCidrBlock", + "/properties/VpnConnectionId" + ], + "description": "Specifies a static route for a VPN connection between an existing virtual private gateway and a VPN customer gateway. The static route allows traffic to be routed from the virtual private gateway to the VPN customer gateway.\n For more information, see [](https://docs.aws.amazon.com/vpn/latest/s2svpn/VPC_VPN.html) in the *User Guide*.", + "handlers": { + "create": { + "permissions": [ + "ec2:CreateVpnConnectionRoute", + "ec2:DescribeVpnConnections" + ] + }, + "delete": { + "permissions": [ + "ec2:DeleteVpnConnectionRoute", + "ec2:DescribeVpnConnections" + ] + }, + "list": { + "permissions": [ + "ec2:DescribeVpnConnections" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeVpnConnections" + ] + } + }, + "primaryIdentifier": [ + "/properties/DestinationCidrBlock", + "/properties/VpnConnectionId" + ], + "properties": { + "DestinationCidrBlock": { + "description": "The CIDR block associated with the local subnet of the customer network.", + "type": "string" + }, + "VpnConnectionId": { + "description": "The ID of the VPN connection.", + "type": "string" + } + }, + "required": [ + "DestinationCidrBlock", + "VpnConnectionId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ec2.git", + "tagging": { + "taggable": false + }, + "typeName": "AWS::EC2::VPNConnectionRoute" +} diff --git a/src/schema/aws-ec2-vpngateway.json b/src/schema/aws-ec2-vpngateway.json new file mode 100644 index 00000000..8409e022 --- /dev/null +++ b/src/schema/aws-ec2-vpngateway.json @@ -0,0 +1,107 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/AmazonSideAsn", + "/properties/Type" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "description": "Specifies a tag. For more information, see [Resource tags](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-resource-tags.html).", + "properties": { + "Key": { + "description": "The tag key.", + "type": "string" + }, + "Value": { + "description": "The tag value.", + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "description": "Specifies a virtual private gateway. A virtual private gateway is the endpoint on the VPC side of your VPN connection. You can create a virtual private gateway before creating the VPC itself.\n For more information, see [](https://docs.aws.amazon.com/vpn/latest/s2svpn/VPC_VPN.html) in the *User Guide*.", + "handlers": { + "create": { + "permissions": [ + "ec2:CreateVpnGateway", + "ec2:DescribeVpnGateways", + "ec2:CreateTags" + ] + }, + "delete": { + "permissions": [ + "ec2:DeleteVpnGateway", + "ec2:DescribeVpnGateways" + ] + }, + "list": { + "permissions": [ + "ec2:DescribeVpnGateways" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeVpnGateways" + ] + }, + "update": { + "permissions": [ + "ec2:DescribeVpnGateways", + "ec2:CreateTags", + "ec2:DeleteTags" + ] + } + }, + "primaryIdentifier": [ + "/properties/VPNGatewayId" + ], + "properties": { + "AmazonSideAsn": { + "description": "The private Autonomous System Number (ASN) for the Amazon side of a BGP session.", + "format": "int64", + "type": "integer" + }, + "Tags": { + "description": "Any tags assigned to the virtual private gateway.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + }, + "Type": { + "description": "The type of VPN connection the virtual private gateway supports.", + "type": "string" + }, + "VPNGatewayId": { + "description": "", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/VPNGatewayId" + ], + "required": [ + "Type" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "ec2:CreateTags", + "ec2:DeleteTags" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::EC2::VPNGateway" +} diff --git a/src/schema/aws-ec2-vpngatewayroutepropagation.json b/src/schema/aws-ec2-vpngatewayroutepropagation.json new file mode 100644 index 00000000..8fbd81e1 --- /dev/null +++ b/src/schema/aws-ec2-vpngatewayroutepropagation.json @@ -0,0 +1,60 @@ +{ + "additionalProperties": false, + "description": "Resource Type definition for AWS::EC2::VPNGatewayRoutePropagation", + "handlers": { + "create": { + "permissions": [ + "ec2:EnableVgwRoutePropagation", + "ec2:DescribeRouteTables" + ] + }, + "delete": { + "permissions": [ + "ec2:DisableVgwRoutePropagation", + "ec2:DescribeRouteTables" + ] + }, + "update": { + "permissions": [ + "ec2:EnableVgwRoutePropagation", + "ec2:DescribeRouteTables" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Id": { + "type": "string" + }, + "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", + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "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", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "RouteTableIds", + "VpnGatewayId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ec2.git", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::EC2::VPNGatewayRoutePropagation" +} diff --git a/src/schema/aws-ecr-publicrepository.json b/src/schema/aws-ecr-publicrepository.json new file mode 100644 index 00000000..4783df6c --- /dev/null +++ b/src/schema/aws-ecr-publicrepository.json @@ -0,0 +1,196 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/RepositoryName" + ], + "definitions": { + "AboutText": { + "description": "Provide a detailed description of the repository. Identify what is included in the repository, any licensing details, or other relevant information.", + "maxLength": 10240, + "type": "string" + }, + "Architecture": { + "description": "The name of the architecture.", + "maxLength": 50, + "minLength": 1, + "type": "string" + }, + "ArchitectureList": { + "description": "Select the system architectures that the images in your repository are compatible with.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Architecture" + }, + "maxItems": 50, + "type": "array", + "uniqueItems": true + }, + "OperatingSystem": { + "description": "The name of the operating system.", + "maxLength": 50, + "minLength": 1, + "type": "string" + }, + "OperatingSystemList": { + "description": "Select the operating systems that the images in your repository are compatible with.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/OperatingSystem" + }, + "maxItems": 50, + "type": "array", + "uniqueItems": true + }, + "RegistryId": { + "description": "The AWS account ID associated with the registry that contains the repository. If you do not specify a registry, the default registry is assumed. ", + "maxLength": 12, + "minLength": 12, + "pattern": "^[0-9]{12}$", + "type": "string" + }, + "RepositoryDescription": { + "description": "The description of the public repository.", + "maxLength": 1024, + "type": "string" + }, + "Tag": { + "additionalProperties": false, + "description": "The metadata to apply to a resource to help you categorize and organize them. Each tag consists of a key and a 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.", + "properties": { + "Key": { + "description": "One part of a key-value pair that make up a tag. A ``key`` is a general label that acts like a category for more specific tag values.", + "maxLength": 127, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "A ``value`` acts as a descriptor within a tag category (key).", + "maxLength": 255, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + }, + "UsageText": { + "description": "Provide detailed information about how to use the images in the repository. This provides context, support information, and additional usage details for users of the repository.", + "maxLength": 10240, + "type": "string" + } + }, + "description": "The ``AWS::ECR::PublicRepository`` resource specifies an Amazon Elastic Container Registry Public (Amazon ECR Public) repository, where users can push and pull Docker images, Open Container Initiative (OCI) images, and OCI compatible artifacts. For more information, see [Amazon ECR public repositories](https://docs.aws.amazon.com/AmazonECR/latest/public/public-repositories.html) in the *Amazon ECR Public User Guide*.", + "handlers": { + "create": { + "permissions": [ + "ecr-public:CreateRepository", + "ecr-public:SetRepositoryPolicy", + "ecr-public:PutRepositoryCatalogData", + "ecr-public:TagResource" + ] + }, + "delete": { + "permissions": [ + "ecr-public:DeleteRepository" + ] + }, + "list": { + "permissions": [ + "ecr-public:DescribeRepositories" + ] + }, + "read": { + "permissions": [ + "ecr-public:DescribeRepositories", + "ecr-public:GetRepositoryPolicy", + "ecr-public:GetRepositoryCatalogData", + "ecr-public:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "ecr-public:DescribeRepositories", + "ecr-public:SetRepositoryPolicy", + "ecr-public:DeleteRepositoryPolicy", + "ecr-public:PutRepositoryCatalogData", + "ecr-public:TagResource", + "ecr-public:UntagResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/RepositoryName" + ], + "properties": { + "Arn": { + "description": "", + "type": "string" + }, + "RepositoryCatalogData": { + "additionalProperties": false, + "description": "The details about the repository that are publicly visible in the Amazon ECR Public Gallery. For more information, see [Amazon ECR Public repository catalog data](https://docs.aws.amazon.com/AmazonECR/latest/public/public-repository-catalog-data.html) in the *Amazon ECR Public User Guide*.", + "properties": { + "AboutText": { + "$ref": "#/definitions/AboutText" + }, + "Architectures": { + "$ref": "#/definitions/ArchitectureList" + }, + "OperatingSystems": { + "$ref": "#/definitions/OperatingSystemList" + }, + "RepositoryDescription": { + "$ref": "#/definitions/RepositoryDescription" + }, + "UsageText": { + "$ref": "#/definitions/UsageText" + } + }, + "type": "object" + }, + "RepositoryName": { + "description": "The name to use for the public 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, CFNlong generates a unique physical ID and uses that ID for the repository name. For more information, see [Name Type](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-name.html).\n If you specify a name, you cannot perform updates that require replacement of this resource. You can perform updates that require no or some interruption. If you must replace the resource, specify a new name.", + "maxLength": 256, + "minLength": 2, + "pattern": "^(?=.{2,256}$)((?:[a-z0-9]+(?:[._-][a-z0-9]+)*/)*[a-z0-9]+(?:[._-][a-z0-9]+)*)$", + "type": "string" + }, + "RepositoryPolicyText": { + "description": "The JSON repository policy text to apply to the public repository. For more information, see [Amazon ECR Public repository policies](https://docs.aws.amazon.com/AmazonECR/latest/public/public-repository-policies.html) in the *Amazon ECR Public User Guide*.", + "type": [ + "object", + "string" + ] + }, + "Tags": { + "description": "An array of key-value pairs to apply to this resource.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/Arn" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ecr.git", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "ecr-public:ListTagsForResource", + "ecr-public:TagResource", + "ecr-public:UntagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::ECR::PublicRepository" +} diff --git a/src/schema/aws-ecr-pullthroughcacherule.json b/src/schema/aws-ecr-pullthroughcacherule.json new file mode 100644 index 00000000..c78c060b --- /dev/null +++ b/src/schema/aws-ecr-pullthroughcacherule.json @@ -0,0 +1,164 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/EcrRepositoryPrefix", + "/properties/UpstreamRegistryUrl", + "/properties/CredentialArn", + "/properties/UpstreamRegistry", + "/properties/CustomRoleArn", + "/properties/UpstreamRepositoryPrefix" + ], + "definitions": { + "CredentialArn": { + "description": "The Amazon Resource Name (ARN) of the AWS Secrets Manager secret that identifies the credentials to authenticate to the upstream registry.", + "maxLength": 612, + "minLength": 50, + "pattern": "^arn:aws:secretsmanager:[a-zA-Z0-9-:]+:secret:ecr\\-pullthroughcache\\/[a-zA-Z0-9\\/_+=.@-]+$", + "type": "string" + }, + "CustomRoleArn": { + "description": "The ARN of the IAM role to be assumed by Amazon ECR to authenticate to ECR upstream registry. This role must be in the same account as the registry that you are configuring.", + "maxLength": 2048, + "type": "string" + }, + "EcrRepositoryPrefix": { + "description": "The ECRRepositoryPrefix is a custom alias for upstream registry url.", + "maxLength": 30, + "minLength": 2, + "pattern": "^((?:[a-z0-9]+(?:[._-][a-z0-9]+)*/)*[a-z0-9]+(?:[._-][a-z0-9]+)*/?|ROOT)$", + "type": "string" + }, + "PullThroughCacheRule": { + "additionalProperties": false, + "description": "", + "maxItems": 50, + "minItems": 0, + "properties": { + "CredentialArn": { + "$ref": "#/definitions/CredentialArn" + }, + "CustomRoleArn": { + "$ref": "#/definitions/CustomRoleArn" + }, + "EcrRepositoryPrefix": { + "$ref": "#/definitions/EcrRepositoryPrefix" + }, + "RegistryId": { + "$ref": "#/definitions/RegistryId" + }, + "UpstreamRegistry": { + "$ref": "#/definitions/UpstreamRegistry" + }, + "UpstreamRegistryUrl": { + "$ref": "#/definitions/UpstreamRegistryUrl" + }, + "UpstreamRepositoryPrefix": { + "$ref": "#/definitions/UpstreamRepositoryPrefix" + } + }, + "required": [ + "EcrRepositoryPrefix", + "UpstreamRegistryUrl" + ], + "type": "object" + }, + "RegistryId": { + "description": "The account ID of the registry pull-through cache repository will be created in.", + "pattern": "^[0-9]{12}$", + "type": "string" + }, + "UpstreamRegistry": { + "description": "The name of the upstream registry.", + "type": "string" + }, + "UpstreamRegistryUrl": { + "description": "The upstreamRegistryUrl is the endpoint of upstream registry url of the public repository to be cached", + "type": "string" + }, + "UpstreamRepositoryPrefix": { + "description": "The repository name prefix of upstream registry to match with the upstream repository name. When this field isn't specified, Amazon ECR will use the `ROOT`.", + "maxLength": 30, + "minLength": 2, + "pattern": "^((?:[a-z0-9]+(?:[._-][a-z0-9]+)*/)*[a-z0-9]+(?:[._-][a-z0-9]+)*/?|ROOT)$", + "type": "string" + } + }, + "description": "The ``AWS::ECR::PullThroughCacheRule`` resource creates or updates a pull through cache rule. A pull through cache rule provides a way to cache images from an upstream registry in your Amazon ECR private registry.", + "handlers": { + "create": { + "permissions": [ + "ecr:DescribePullThroughCacheRules", + "ecr:CreatePullThroughCacheRule", + "ecr:DeletePullThroughCacheRule", + "iam:CreateServiceLinkedRole", + "secretsmanager:GetSecretValue", + "iam:PassRole" + ] + }, + "delete": { + "permissions": [ + "ecr:DescribePullThroughCacheRules", + "ecr:DeletePullThroughCacheRule" + ] + }, + "list": { + "permissions": [ + "ecr:DescribePullThroughCacheRules" + ] + }, + "read": { + "permissions": [ + "ecr:DescribePullThroughCacheRules" + ] + }, + "update": { + "permissions": [ + "ecr:DescribePullThroughCacheRules", + "ecr:CreatePullThroughCacheRule", + "ecr:DeletePullThroughCacheRule", + "iam:CreateServiceLinkedRole", + "secretsmanager:GetSecretValue", + "iam:PassRole" + ] + } + }, + "primaryIdentifier": [ + "/properties/EcrRepositoryPrefix" + ], + "properties": { + "CredentialArn": { + "$ref": "#/definitions/CredentialArn", + "description": "The ARN of the Secrets Manager secret associated with the pull through cache rule." + }, + "CustomRoleArn": { + "$ref": "#/definitions/CustomRoleArn", + "description": "The ARN of the IAM role associated with the pull through cache rule." + }, + "EcrRepositoryPrefix": { + "$ref": "#/definitions/EcrRepositoryPrefix", + "description": "The Amazon ECR repository prefix associated with the pull through cache rule." + }, + "UpstreamRegistry": { + "$ref": "#/definitions/UpstreamRegistry", + "description": "The name of the upstream source registry associated with the pull through cache rule." + }, + "UpstreamRegistryUrl": { + "$ref": "#/definitions/UpstreamRegistryUrl", + "description": "The upstream registry URL associated with the pull through cache rule." + }, + "UpstreamRepositoryPrefix": { + "$ref": "#/definitions/UpstreamRepositoryPrefix", + "description": "The upstream repository prefix associated with the pull through cache rule." + } + }, + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ecr.git", + "tagging": { + "taggable": false + }, + "typeName": "AWS::ECR::PullThroughCacheRule", + "writeOnlyProperties": [ + "/properties/CredentialArn", + "/properties/UpstreamRegistry", + "/properties/CustomRoleArn" + ] +} diff --git a/src/schema/aws-ecr-registrypolicy.json b/src/schema/aws-ecr-registrypolicy.json new file mode 100644 index 00000000..425c052e --- /dev/null +++ b/src/schema/aws-ecr-registrypolicy.json @@ -0,0 +1,66 @@ +{ + "additionalProperties": false, + "definitions": { + "RegistryId": { + "description": "The registry id.", + "maxLength": 12, + "minLength": 12, + "pattern": "^[0-9]{12}$", + "type": "string" + } + }, + "description": "The ``AWS::ECR::RegistryPolicy`` resource creates or updates the permissions policy for a private registry.\n A private registry policy is used to specify permissions for another AWS-account and is used when configuring cross-account replication. For more information, see [Registry permissions](https://docs.aws.amazon.com/AmazonECR/latest/userguide/registry-permissions.html) in the *Amazon Elastic Container Registry User Guide*.", + "handlers": { + "create": { + "permissions": [ + "ecr:GetRegistryPolicy", + "ecr:PutRegistryPolicy" + ] + }, + "delete": { + "permissions": [ + "ecr:DeleteRegistryPolicy" + ] + }, + "list": { + "permissions": [ + "ecr:GetRegistryPolicy" + ] + }, + "read": { + "permissions": [ + "ecr:GetRegistryPolicy" + ] + }, + "update": { + "permissions": [ + "ecr:GetRegistryPolicy", + "ecr:PutRegistryPolicy" + ] + } + }, + "primaryIdentifier": [ + "/properties/RegistryId" + ], + "properties": { + "PolicyText": { + "description": "The JSON policy text for your registry.", + "type": "object" + }, + "RegistryId": { + "$ref": "#/definitions/RegistryId", + "description": "" + } + }, + "readOnlyProperties": [ + "/properties/RegistryId" + ], + "required": [ + "PolicyText" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ecr.git", + "tagging": { + "taggable": false + }, + "typeName": "AWS::ECR::RegistryPolicy" +} diff --git a/src/schema/aws-ecr-registryscanningconfiguration.json b/src/schema/aws-ecr-registryscanningconfiguration.json new file mode 100644 index 00000000..36442aa8 --- /dev/null +++ b/src/schema/aws-ecr-registryscanningconfiguration.json @@ -0,0 +1,154 @@ +{ + "additionalProperties": false, + "definitions": { + "Filter": { + "description": "The filter to use when scanning.", + "pattern": "^[a-z0-9*](?:[._\\-/a-z0-9*]?[a-z0-9*]+)*$", + "type": "string" + }, + "FilterType": { + "description": "The type associated with the filter.", + "enum": [ + "WILDCARD" + ], + "type": "string" + }, + "RegistryId": { + "description": "The registry id.", + "pattern": "^[0-9]{12}$", + "type": "string" + }, + "RepositoryFilter": { + "additionalProperties": false, + "description": "The details of a scanning repository filter.", + "properties": { + "Filter": { + "$ref": "#/definitions/Filter" + }, + "FilterType": { + "$ref": "#/definitions/FilterType" + } + }, + "required": [ + "Filter", + "FilterType" + ], + "type": "object" + }, + "ScanFrequency": { + "description": "The frequency that scans are performed.", + "enum": [ + "SCAN_ON_PUSH", + "CONTINUOUS_SCAN" + ], + "type": "string" + }, + "ScanType": { + "description": "The type of scanning configured for the registry.", + "enum": [ + "BASIC", + "ENHANCED" + ], + "type": "string" + }, + "ScanningRule": { + "additionalProperties": false, + "description": "A rule representing the details of a scanning configuration.", + "properties": { + "RepositoryFilters": { + "description": "The repository filters associated with the scanning configuration for a private registry.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/RepositoryFilter" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + }, + "ScanFrequency": { + "$ref": "#/definitions/ScanFrequency" + } + }, + "required": [ + "ScanFrequency", + "RepositoryFilters" + ], + "type": "object" + }, + "ScanningRules": { + "description": "The scanning rules associated with the registry. A registry scanning configuration may contain a maximum of 2 rules.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/ScanningRule" + }, + "maxItems": 2, + "minItems": 0, + "type": "array" + } + }, + "description": "The AWS::ECR::RegistryScanningConfiguration controls the scanning configuration for an Amazon Elastic Container Registry (Amazon Private ECR). For more information, see https://docs.aws.amazon.com/AmazonECR/latest/userguide/image-scanning.html", + "handlers": { + "create": { + "permissions": [ + "ecr:PutRegistryScanningConfiguration", + "ecr:GetRegistryScanningConfiguration", + "inspector2:Enable", + "iam:CreateServiceLinkedRole" + ] + }, + "delete": { + "permissions": [ + "ecr:PutRegistryScanningConfiguration", + "ecr:GetRegistryScanningConfiguration", + "inspector2:ListAccountPermissions", + "inspector2:Disable" + ] + }, + "list": { + "permissions": [ + "ecr:GetRegistryScanningConfiguration" + ] + }, + "read": { + "permissions": [ + "ecr:GetRegistryScanningConfiguration" + ] + }, + "update": { + "permissions": [ + "ecr:PutRegistryScanningConfiguration", + "ecr:GetRegistryScanningConfiguration", + "inspector2:Enable", + "inspector2:Disable", + "inspector2:ListAccountPermissions", + "iam:CreateServiceLinkedRole" + ] + } + }, + "primaryIdentifier": [ + "/properties/RegistryId" + ], + "properties": { + "RegistryId": { + "$ref": "#/definitions/RegistryId" + }, + "Rules": { + "$ref": "#/definitions/ScanningRules" + }, + "ScanType": { + "$ref": "#/definitions/ScanType" + } + }, + "readOnlyProperties": [ + "/properties/RegistryId" + ], + "required": [ + "Rules", + "ScanType" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ecr.git", + "tagging": { + "taggable": false + }, + "typeName": "AWS::ECR::RegistryScanningConfiguration" +} diff --git a/src/schema/aws-ecr-replicationconfiguration.json b/src/schema/aws-ecr-replicationconfiguration.json new file mode 100644 index 00000000..db6a2b8c --- /dev/null +++ b/src/schema/aws-ecr-replicationconfiguration.json @@ -0,0 +1,170 @@ +{ + "additionalProperties": false, + "definitions": { + "Filter": { + "description": "The repository filter to be applied for replication.", + "pattern": "^(?:[a-z0-9]+(?:[._-][a-z0-9]*)*/)*[a-z0-9]*(?:[._-][a-z0-9]*)*$", + "type": "string" + }, + "FilterType": { + "description": "Type of repository filter", + "enum": [ + "PREFIX_MATCH" + ], + "type": "string" + }, + "Region": { + "description": "A Region to replicate to.", + "pattern": "[0-9a-z-]{2,25}", + "type": "string" + }, + "RegistryId": { + "description": "The account ID of the destination registry to replicate to.", + "pattern": "^[0-9]{12}$", + "type": "string" + }, + "ReplicationConfiguration": { + "additionalProperties": false, + "description": "The replication configuration for a registry.", + "properties": { + "Rules": { + "description": "An array of objects representing the replication destinations and repository filters for a replication configuration.", + "items": { + "$ref": "#/definitions/ReplicationRule" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + } + }, + "required": [ + "Rules" + ], + "type": "object" + }, + "ReplicationDestination": { + "additionalProperties": false, + "description": "An array of objects representing the destination for a replication rule.", + "properties": { + "Region": { + "$ref": "#/definitions/Region", + "description": "The Region to replicate to." + }, + "RegistryId": { + "$ref": "#/definitions/RegistryId", + "description": "The AWS account ID of the Amazon ECR private registry to replicate to. When configuring cross-Region replication within your own registry, specify your own account ID." + } + }, + "required": [ + "Region", + "RegistryId" + ], + "type": "object" + }, + "ReplicationRule": { + "additionalProperties": false, + "description": "An array of objects representing the replication destinations and repository filters for a replication configuration.", + "properties": { + "Destinations": { + "description": "An array of objects representing the destination for a replication rule.", + "items": { + "$ref": "#/definitions/ReplicationDestination" + }, + "maxItems": 25, + "minItems": 1, + "type": "array" + }, + "RepositoryFilters": { + "description": "An array of objects representing the filters for a replication rule. Specifying a repository filter for a replication rule provides a method for controlling which repositories in a private registry are replicated.", + "items": { + "$ref": "#/definitions/RepositoryFilter" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + } + }, + "required": [ + "Destinations" + ], + "type": "object" + }, + "RepositoryFilter": { + "additionalProperties": false, + "description": "The filter settings used with image replication. Specifying a repository filter to a replication rule provides a method for controlling which repositories in a private registry are replicated. If no filters are added, the contents of all repositories are replicated.", + "properties": { + "Filter": { + "$ref": "#/definitions/Filter", + "description": "The repository filter details. When the ``PREFIX_MATCH`` filter type is specified, this value is required and should be the repository name prefix to configure replication for." + }, + "FilterType": { + "$ref": "#/definitions/FilterType", + "description": "The repository filter type. The only supported value is ``PREFIX_MATCH``, which is a repository name prefix specified with the ``filter`` parameter." + } + }, + "required": [ + "Filter", + "FilterType" + ], + "type": "object" + } + }, + "description": "The ``AWS::ECR::ReplicationConfiguration`` resource creates or updates the replication configuration for a private registry. The first time a replication configuration is applied to a private registry, a service-linked IAM role is created in your account for the replication process. For more information, see [Using Service-Linked Roles for Amazon ECR](https://docs.aws.amazon.com/AmazonECR/latest/userguide/using-service-linked-roles.html) in the *Amazon Elastic Container Registry User Guide*.\n When configuring cross-account replication, the destination account must grant the source account permission to replicate. This permission is controlled using a private registry permissions policy. For more information, see ``AWS::ECR::RegistryPolicy``.", + "handlers": { + "create": { + "permissions": [ + "ecr:DescribeRegistry", + "ecr:PutReplicationConfiguration", + "iam:CreateServiceLinkedRole" + ] + }, + "delete": { + "permissions": [ + "ecr:DescribeRegistry", + "ecr:PutReplicationConfiguration", + "iam:CreateServiceLinkedRole" + ] + }, + "list": { + "permissions": [ + "ecr:DescribeRegistry" + ] + }, + "read": { + "permissions": [ + "ecr:DescribeRegistry" + ] + }, + "update": { + "permissions": [ + "ecr:DescribeRegistry", + "ecr:PutReplicationConfiguration", + "iam:CreateServiceLinkedRole" + ] + } + }, + "primaryIdentifier": [ + "/properties/RegistryId" + ], + "properties": { + "RegistryId": { + "description": "", + "type": "string" + }, + "ReplicationConfiguration": { + "$ref": "#/definitions/ReplicationConfiguration", + "description": "The replication configuration for a registry." + } + }, + "readOnlyProperties": [ + "/properties/RegistryId" + ], + "required": [ + "ReplicationConfiguration" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ecr.git", + "tagging": { + "taggable": false + }, + "typeName": "AWS::ECR::ReplicationConfiguration" +} diff --git a/src/schema/aws-ecr-repository.json b/src/schema/aws-ecr-repository.json new file mode 100644 index 00000000..538aec3c --- /dev/null +++ b/src/schema/aws-ecr-repository.json @@ -0,0 +1,244 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/RepositoryName", + "/properties/EncryptionConfiguration", + "/properties/EncryptionConfiguration/EncryptionType", + "/properties/EncryptionConfiguration/KmsKey" + ], + "definitions": { + "EmptyOnDelete": { + "description": "If true, deleting the repository force deletes the contents of the repository. Without a force delete, you can only delete empty repositories.", + "type": "boolean" + }, + "EncryptionConfiguration": { + "additionalProperties": false, + "description": "The encryption configuration for the repository. This determines how the contents of your repository are encrypted at rest.\n By default, when no encryption configuration is set or the ``AES256`` encryption type is used, Amazon ECR uses server-side encryption with Amazon S3-managed encryption keys which encrypts your data at rest using an AES256 encryption algorithm. This does not require any action on your part.\n For more control over the encryption of the contents of your repository, you can use server-side encryption with KMSlong key stored in KMSlong (KMS) to encrypt your images. For more information, see [Amazon ECR encryption at rest](https://docs.aws.amazon.com/AmazonECR/latest/userguide/encryption-at-rest.html) in the *Amazon Elastic Container Registry User Guide*.", + "properties": { + "EncryptionType": { + "$ref": "#/definitions/EncryptionType", + "description": "The encryption type to use.\n If you use the ``KMS`` encryption type, the contents of the repository will be encrypted using server-side encryption with KMSlong key stored in KMS. When you use KMS to encrypt your data, you can either use the default AWS managed KMS key for Amazon ECR, or specify your own KMS key, which you already created.\n If you use the ``KMS_DSSE`` encryption type, the contents of the repository will be encrypted with two layers of encryption using server-side encryption with the KMS Management Service key stored in KMS. Similar to the ``KMS`` encryption type, you can either use the default AWS managed KMS key for Amazon ECR, or specify your own KMS key, which you've already created. \n If you use the ``AES256`` encryption type, Amazon ECR uses server-side encryption with Amazon S3-managed encryption keys which encrypts the images in the repository using an AES256 encryption algorithm.\n For more information, see [Amazon ECR encryption at rest](https://docs.aws.amazon.com/AmazonECR/latest/userguide/encryption-at-rest.html) in the *Amazon Elastic Container Registry User Guide*." + }, + "KmsKey": { + "$ref": "#/definitions/KmsKey", + "description": "If you use the ``KMS`` encryption type, specify the KMS key to use for encryption. The alias, key ID, or full ARN of the KMS key can be specified. The key must exist in the same Region as the repository. If no key is specified, the default AWS managed KMS key for Amazon ECR will be used." + } + }, + "required": [ + "EncryptionType" + ], + "type": "object" + }, + "EncryptionType": { + "description": "The encryption type to use.", + "enum": [ + "AES256", + "KMS", + "KMS_DSSE" + ], + "type": "string" + }, + "ImageScanningConfiguration": { + "additionalProperties": false, + "description": "The image scanning configuration for a repository.", + "properties": { + "ScanOnPush": { + "$ref": "#/definitions/ScanOnPush", + "description": "The setting that determines whether images are scanned after being pushed to a repository. If set to ``true``, images will be scanned after being pushed. If this parameter is not specified, it will default to ``false`` and images will not be scanned unless a scan is manually started." + } + }, + "type": "object" + }, + "KmsKey": { + "description": "If you use the KMS or KMS_DSSE encryption type, specify the CMK to use for encryption. The alias, key ID, or full ARN of the CMK can be specified. The key must exist in the same Region as the repository. If no key is specified, the default AWS managed CMK for Amazon ECR will be used.", + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "LifecyclePolicy": { + "additionalProperties": false, + "description": "The ``LifecyclePolicy`` property type specifies a lifecycle policy. For information about lifecycle policy syntax, see [Lifecycle policy template](https://docs.aws.amazon.com/AmazonECR/latest/userguide/LifecyclePolicies.html) in the *Amazon ECR User Guide*.", + "properties": { + "LifecyclePolicyText": { + "$ref": "#/definitions/LifecyclePolicyText", + "description": "The JSON repository policy text to apply to the repository." + }, + "RegistryId": { + "$ref": "#/definitions/RegistryId", + "description": "The AWS account ID associated with the registry that contains the repository. If you do\u2028 not specify a registry, the default registry is assumed." + } + }, + "type": "object" + }, + "LifecyclePolicyText": { + "description": "The JSON repository policy text to apply to the repository.", + "maxLength": 30720, + "minLength": 100, + "type": "string" + }, + "RegistryId": { + "description": "The AWS account ID associated with the registry that contains the repository. If you do not specify a registry, the default registry is assumed. ", + "maxLength": 12, + "minLength": 12, + "pattern": "^[0-9]{12}$", + "type": "string" + }, + "ScanOnPush": { + "description": "The setting that determines whether images are scanned after being pushed to a repository.", + "type": "boolean" + }, + "Tag": { + "additionalProperties": false, + "description": "The metadata to apply to a resource to help you categorize and organize them. Each tag consists of a key and a 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.", + "properties": { + "Key": { + "description": "One part of a key-value pair that make up a tag. A ``key`` is a general label that acts like a category for more specific tag values.", + "maxLength": 127, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "A ``value`` acts as a descriptor within a tag category (key).", + "maxLength": 255, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "description": "The ``AWS::ECR::Repository`` resource specifies an Amazon Elastic Container Registry (Amazon ECR) repository, where users can push and pull Docker images, Open Container Initiative (OCI) images, and OCI compatible artifacts. For more information, see [Amazon ECR private repositories](https://docs.aws.amazon.com/AmazonECR/latest/userguide/Repositories.html) in the *Amazon ECR User Guide*.", + "handlers": { + "create": { + "permissions": [ + "ecr:CreateRepository", + "ecr:PutLifecyclePolicy", + "ecr:SetRepositoryPolicy", + "ecr:TagResource", + "kms:DescribeKey", + "kms:CreateGrant", + "kms:RetireGrant" + ] + }, + "delete": { + "permissions": [ + "ecr:DeleteRepository", + "kms:RetireGrant" + ] + }, + "list": { + "permissions": [ + "ecr:DescribeRepositories" + ] + }, + "read": { + "permissions": [ + "ecr:DescribeRepositories", + "ecr:GetLifecyclePolicy", + "ecr:GetRepositoryPolicy", + "ecr:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "ecr:DescribeRepositories", + "ecr:PutLifecyclePolicy", + "ecr:SetRepositoryPolicy", + "ecr:TagResource", + "ecr:UntagResource", + "ecr:DeleteLifecyclePolicy", + "ecr:DeleteRepositoryPolicy", + "ecr:PutImageScanningConfiguration", + "ecr:PutImageTagMutability", + "kms:DescribeKey", + "kms:CreateGrant", + "kms:RetireGrant" + ] + } + }, + "primaryIdentifier": [ + "/properties/RepositoryName" + ], + "properties": { + "Arn": { + "description": "", + "type": "string" + }, + "EmptyOnDelete": { + "$ref": "#/definitions/EmptyOnDelete", + "description": "If true, deleting the repository force deletes the contents of the repository. If false, the repository must be empty before attempting to delete it." + }, + "EncryptionConfiguration": { + "$ref": "#/definitions/EncryptionConfiguration", + "description": "The encryption configuration for the repository. This determines how the contents of your repository are encrypted at rest." + }, + "ImageScanningConfiguration": { + "$ref": "#/definitions/ImageScanningConfiguration", + "description": "The image scanning configuration for the repository. This determines whether images are scanned for known vulnerabilities after being pushed to the repository." + }, + "ImageTagMutability": { + "description": "The tag mutability setting for the repository. If this parameter is omitted, the default setting of ``MUTABLE`` will be used which will allow image tags to be overwritten. If ``IMMUTABLE`` is specified, all image tags within the repository will be immutable which will prevent them from being overwritten.", + "enum": [ + "MUTABLE", + "IMMUTABLE" + ], + "type": "string" + }, + "LifecyclePolicy": { + "$ref": "#/definitions/LifecyclePolicy", + "description": "Creates or updates a lifecycle policy. For information about lifecycle policy syntax, see [Lifecycle policy template](https://docs.aws.amazon.com/AmazonECR/latest/userguide/LifecyclePolicies.html)." + }, + "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, CFNlong generates a unique physical ID and uses that ID for the repository name. For more information, see [Name type](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-name.html).\n The repository name must start with a letter and can only contain lowercase letters, numbers, hyphens, underscores, and forward slashes.\n If you specify a name, you cannot perform updates that require replacement of this resource. You can perform updates that require no or some interruption. If you must replace the resource, specify a new name.", + "maxLength": 256, + "minLength": 2, + "pattern": "^(?=.{2,256}$)((?:[a-z0-9]+(?:[._-][a-z0-9]+)*/)*[a-z0-9]+(?:[._-][a-z0-9]+)*)$", + "type": "string" + }, + "RepositoryPolicyText": { + "description": "The JSON repository policy text to apply to the repository. For more information, see [Amazon ECR repository policies](https://docs.aws.amazon.com/AmazonECR/latest/userguide/repository-policy-examples.html) in the *Amazon Elastic Container Registry User Guide*.", + "type": [ + "object", + "string" + ] + }, + "RepositoryUri": { + "description": "", + "type": "string" + }, + "Tags": { + "description": "An array of key-value pairs to apply to this resource.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/RepositoryUri" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ecr.git", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "ecr:TagResource", + "ecr:UntagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::ECR::Repository", + "writeOnlyProperties": [ + "/properties/EmptyOnDelete" + ] +} diff --git a/src/schema/aws-ecr-repositorycreationtemplate.json b/src/schema/aws-ecr-repositorycreationtemplate.json new file mode 100644 index 00000000..d686f7e6 --- /dev/null +++ b/src/schema/aws-ecr-repositorycreationtemplate.json @@ -0,0 +1,197 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Prefix" + ], + "definitions": { + "AppliedForItem": { + "description": "Enumerable Strings representing the repository creation scenarios that the template will apply towards.", + "enum": [ + "REPLICATION", + "PULL_THROUGH_CACHE" + ], + "type": "string" + }, + "EncryptionConfiguration": { + "additionalProperties": false, + "description": "The encryption configuration for the repository. This determines how the contents of your repository are encrypted at rest.\n By default, when no encryption configuration is set or the ``AES256`` encryption type is used, Amazon ECR uses server-side encryption with Amazon S3-managed encryption keys which encrypts your data at rest using an AES256 encryption algorithm. This does not require any action on your part.\n For more control over the encryption of the contents of your repository, you can use server-side encryption with KMSlong key stored in KMSlong (KMS) to encrypt your images. For more information, see [Amazon ECR encryption at rest](https://docs.aws.amazon.com/AmazonECR/latest/userguide/encryption-at-rest.html) in the *Amazon Elastic Container Registry User Guide*.", + "properties": { + "EncryptionType": { + "$ref": "#/definitions/EncryptionType", + "description": "The encryption type to use.\n If you use the ``KMS`` encryption type, the contents of the repository will be encrypted using server-side encryption with KMSlong key stored in KMS. When you use KMS to encrypt your data, you can either use the default AWS managed KMS key for Amazon ECR, or specify your own KMS key, which you already created.\n If you use the ``KMS_DSSE`` encryption type, the contents of the repository will be encrypted with two layers of encryption using server-side encryption with the KMS Management Service key stored in KMS. Similar to the ``KMS`` encryption type, you can either use the default AWS managed KMS key for Amazon ECR, or specify your own KMS key, which you've already created. \n If you use the ``AES256`` encryption type, Amazon ECR uses server-side encryption with Amazon S3-managed encryption keys which encrypts the images in the repository using an AES256 encryption algorithm.\n For more information, see [Amazon ECR encryption at rest](https://docs.aws.amazon.com/AmazonECR/latest/userguide/encryption-at-rest.html) in the *Amazon Elastic Container Registry User Guide*." + }, + "KmsKey": { + "$ref": "#/definitions/KmsKey", + "description": "If you use the ``KMS`` encryption type, specify the KMS key to use for encryption. The alias, key ID, or full ARN of the KMS key can be specified. The key must exist in the same Region as the repository. If no key is specified, the default AWS managed KMS key for Amazon ECR will be used." + } + }, + "required": [ + "EncryptionType" + ], + "type": "object" + }, + "EncryptionType": { + "description": "The encryption type to use.", + "enum": [ + "AES256", + "KMS", + "KMS_DSSE" + ], + "type": "string" + }, + "KmsKey": { + "description": "If you use the KMS or KMS_DSSE encryption type, specify the CMK to use for encryption. The alias, key ID, or full ARN of the CMK can be specified. The key must exist in the same Region as the repository. If no key is specified, the default AWS managed CMK for Amazon ECR will be used.", + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "Tag": { + "additionalProperties": false, + "description": "The metadata to apply to a resource to help you categorize and organize them. Each tag consists of a key and a 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.", + "properties": { + "Key": { + "description": "One part of a key-value pair that make up a tag. A ``key`` is a general label that acts like a category for more specific tag values.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "A ``value`` acts as a descriptor within a tag category (key).", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "The details of the repository creation template associated with the request.", + "handlers": { + "create": { + "permissions": [ + "ecr:CreateRepositoryCreationTemplate", + "ecr:PutLifecyclePolicy", + "ecr:SetRepositoryPolicy", + "ecr:CreateRepository", + "iam:CreateServiceLinkedRole", + "iam:PassRole" + ] + }, + "delete": { + "permissions": [ + "ecr:DeleteRepositoryCreationTemplate" + ] + }, + "list": { + "permissions": [ + "ecr:DescribeRepositoryCreationTemplates" + ] + }, + "read": { + "permissions": [ + "ecr:DescribeRepositoryCreationTemplates" + ] + }, + "update": { + "permissions": [ + "ecr:DescribeRepositoryCreationTemplates", + "ecr:UpdateRepositoryCreationTemplate", + "ecr:PutLifecyclePolicy", + "ecr:SetRepositoryPolicy", + "ecr:CreateRepository", + "iam:CreateServiceLinkedRole", + "iam:PassRole" + ] + } + }, + "primaryIdentifier": [ + "/properties/Prefix" + ], + "properties": { + "AppliedFor": { + "description": "A list of enumerable Strings representing the repository creation scenarios that this template will apply towards. The two supported scenarios are PULL_THROUGH_CACHE and REPLICATION", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/AppliedForItem" + }, + "type": "array", + "uniqueItems": true + }, + "CreatedAt": { + "description": "", + "type": "string" + }, + "CustomRoleArn": { + "description": "The ARN of the role to be assumed by Amazon ECR. Amazon ECR will assume your supplied role when the customRoleArn is specified. When this field isn't specified, Amazon ECR will use the service-linked role for the repository creation template.", + "maxLength": 2048, + "pattern": "^arn:aws[-a-z0-9]*:iam::[0-9]{12}:role/[A-Za-z0-9+=,-.@_]*$", + "type": "string" + }, + "Description": { + "description": "The description associated with the repository creation template.", + "maxLength": 256, + "minLength": 0, + "type": "string" + }, + "EncryptionConfiguration": { + "$ref": "#/definitions/EncryptionConfiguration", + "description": "The encryption configuration associated with the repository creation template." + }, + "ImageTagMutability": { + "description": "The tag mutability setting for the repository. If this parameter is omitted, the default setting of MUTABLE will be used which will allow image tags to be overwritten. If IMMUTABLE is specified, all image tags within the repository will be immutable which will prevent them from being overwritten.", + "enum": [ + "MUTABLE", + "IMMUTABLE" + ], + "type": "string" + }, + "LifecyclePolicy": { + "description": "The lifecycle policy to use for repositories created using the template.", + "maxLength": 30720, + "minLength": 100, + "type": "string" + }, + "Prefix": { + "description": "The repository namespace prefix associated with the repository creation template.", + "maxLength": 256, + "minLength": 1, + "pattern": "^((?:[a-z0-9]+(?:[._-][a-z0-9]+)*/)*[a-z0-9]+(?:[._-][a-z0-9]+)*/?|ROOT)$", + "type": "string" + }, + "RepositoryPolicy": { + "description": "he repository policy to apply to repositories created using the template. A repository policy is a permissions policy associated with a repository to control access permissions.", + "type": "string" + }, + "ResourceTags": { + "description": "The metadata to apply to the repository to help you categorize and organize. 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.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "type": "array", + "uniqueItems": true + }, + "UpdatedAt": { + "description": "", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/CreatedAt", + "/properties/UpdatedAt" + ], + "required": [ + "Prefix", + "AppliedFor" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ecr.git", + "tagging": { + "taggable": false + }, + "typeName": "AWS::ECR::RepositoryCreationTemplate" +} diff --git a/src/schema/aws-ecs-capacityprovider.json b/src/schema/aws-ecs-capacityprovider.json new file mode 100644 index 00000000..09159892 --- /dev/null +++ b/src/schema/aws-ecs-capacityprovider.json @@ -0,0 +1,147 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/AutoScalingGroupProvider/AutoScalingGroupArn", + "/properties/Name" + ], + "definitions": { + "AutoScalingGroupProvider": { + "additionalProperties": false, + "properties": { + "AutoScalingGroupArn": { + "type": "string" + }, + "ManagedDraining": { + "enum": [ + "DISABLED", + "ENABLED" + ], + "type": "string" + }, + "ManagedScaling": { + "$ref": "#/definitions/ManagedScaling" + }, + "ManagedTerminationProtection": { + "enum": [ + "DISABLED", + "ENABLED" + ], + "type": "string" + } + }, + "required": [ + "AutoScalingGroupArn" + ], + "type": "object" + }, + "ManagedScaling": { + "additionalProperties": false, + "description": "The managed scaling settings for the Auto Scaling group capacity provider.", + "properties": { + "InstanceWarmupPeriod": { + "type": "integer" + }, + "MaximumScalingStepSize": { + "type": "integer" + }, + "MinimumScalingStepSize": { + "type": "integer" + }, + "Status": { + "enum": [ + "DISABLED", + "ENABLED" + ], + "type": "string" + }, + "TargetCapacity": { + "type": "integer" + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "minLength": 1, + "type": "string" + }, + "Value": { + "minLength": 1, + "type": "string" + } + }, + "type": "object" + } + }, + "description": "Resource Type definition for AWS::ECS::CapacityProvider.", + "handlers": { + "create": { + "permissions": [ + "autoscaling:CreateOrUpdateTags", + "ecs:CreateCapacityProvider", + "ecs:DescribeCapacityProviders", + "ecs:TagResource" + ] + }, + "delete": { + "permissions": [ + "ecs:DescribeCapacityProviders", + "ecs:DeleteCapacityProvider" + ] + }, + "list": { + "permissions": [ + "ecs:DescribeCapacityProviders" + ] + }, + "read": { + "permissions": [ + "ecs:DescribeCapacityProviders" + ] + }, + "update": { + "permissions": [ + "ecs:UpdateCapacityProvider", + "ecs:DescribeCapacityProviders", + "ecs:ListTagsForResource", + "ecs:TagResource", + "ecs:UntagResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/Name" + ], + "properties": { + "AutoScalingGroupProvider": { + "$ref": "#/definitions/AutoScalingGroupProvider" + }, + "Name": { + "type": "string" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array" + } + }, + "propertyTransform": { + "/properties/AutoScalingGroupProvider/AutoScalingGroupArn": "$split(AutoScalingGroupProvider.AutoScalingGroupArn, \"autoScalingGroupName/\")[-1] $OR $split(AutoScalingGroupArn, \"autoScalingGroupName/\")[-1]" + }, + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "ecs:TagResource", + "ecs:UntagResource", + "ecs:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::ECS::CapacityProvider" +} diff --git a/src/schema/aws-ecs-cluster.json b/src/schema/aws-ecs-cluster.json new file mode 100644 index 00000000..d1babeb7 --- /dev/null +++ b/src/schema/aws-ecs-cluster.json @@ -0,0 +1,272 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ClusterName" + ], + "definitions": { + "CapacityProviderStrategyItem": { + "additionalProperties": false, + "description": "The ``CapacityProviderStrategyItem`` property specifies the details of the default capacity provider strategy for the cluster. When services or tasks are run in the cluster with no launch type or capacity provider strategy specified, the default capacity provider strategy is used.", + "properties": { + "Base": { + "description": "The *base* value designates how many tasks, at a minimum, to run on the specified capacity provider. Only one capacity provider in a capacity provider strategy can have a *base* defined. If no value is specified, the default value of ``0`` is used.", + "type": "integer" + }, + "CapacityProvider": { + "description": "The short name of the capacity provider.", + "relationshipRef": { + "propertyPath": "/properties/Name", + "typeName": "AWS::ECS::CapacityProvider" + }, + "type": "string" + }, + "Weight": { + "description": "The *weight* value designates the relative percentage of the total number of tasks launched that should use the specified capacity provider. The ``weight`` value is taken into consideration after the ``base`` value, if defined, is satisfied.\n If no ``weight`` value is specified, the default value of ``0`` is used. When multiple capacity providers are specified within a capacity provider strategy, at least one of the capacity providers must have a weight value greater than zero and any capacity providers with a weight of ``0`` can't be used to place tasks. If you specify multiple capacity providers in a strategy that all have a weight of ``0``, any ``RunTask`` or ``CreateService`` actions using the capacity provider strategy will fail.\n An example scenario for using weights is defining a strategy that contains two capacity providers and both have a weight of ``1``, then when the ``base`` is satisfied, the tasks will be split evenly across the two capacity providers. Using that same logic, if you specify a weight of ``1`` for *capacityProviderA* and a weight of ``4`` for *capacityProviderB*, then for every one task that's run using *capacityProviderA*, four tasks would use *capacityProviderB*.", + "type": "integer" + } + }, + "type": "object" + }, + "ClusterConfiguration": { + "additionalProperties": false, + "description": "The execute command and managed storage configuration for the cluster.", + "properties": { + "ExecuteCommandConfiguration": { + "$ref": "#/definitions/ExecuteCommandConfiguration", + "description": "The details of the execute command configuration." + }, + "ManagedStorageConfiguration": { + "$ref": "#/definitions/ManagedStorageConfiguration", + "description": "The details of the managed storage configuration." + } + }, + "type": "object" + }, + "ClusterSettings": { + "additionalProperties": false, + "description": "The settings to use when creating a cluster. This parameter is used to turn on CloudWatch Container Insights with enhanced observability or CloudWatch Container Insights for a cluster.\n Container Insights with enhanced observability provides all the Container Insights metrics, plus additional task and container metrics. This version supports enhanced observability for Amazon ECS clusters using the Amazon EC2 and Fargate launch types. After you configure Container Insights with enhanced observability on Amazon ECS, Container Insights auto-collects detailed infrastructure telemetry from the cluster level down to the container level in your environment and displays these critical performance data in curated dashboards removing the heavy lifting in observability set-up. \n For more information, see [Monitor Amazon ECS containers using Container Insights with enhanced observability](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/cloudwatch-container-insights.html) in the *Amazon Elastic Container Service Developer Guide*.", + "properties": { + "Name": { + "description": "The name of the cluster setting. The value is ``containerInsights`` .", + "type": "string" + }, + "Value": { + "description": "The value to set for the cluster setting. The supported values are ``enhanced``, ``enabled``, and ``disabled``. \n To use Container Insights with enhanced observability, set the ``containerInsights`` account setting to ``enhanced``.\n To use Container Insights, set the ``containerInsights`` account setting to ``enabled``.\n If a cluster value is specified, it will override the ``containerInsights`` value set with [PutAccountSetting](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_PutAccountSetting.html) or [PutAccountSettingDefault](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_PutAccountSettingDefault.html).", + "type": "string" + } + }, + "type": "object" + }, + "ExecuteCommandConfiguration": { + "additionalProperties": false, + "description": "The details of the execute command configuration.", + "properties": { + "KmsKeyId": { + "description": "Specify an KMSlong key ID to encrypt the data between the local client and the container.", + "relationshipRef": { + "propertyPath": "/properties/Arn", + "typeName": "AWS::KMS::Key" + }, + "type": "string" + }, + "LogConfiguration": { + "$ref": "#/definitions/ExecuteCommandLogConfiguration", + "description": "The log configuration for the results of the execute command actions. The logs can be sent to CloudWatch Logs or an Amazon S3 bucket. When ``logging=OVERRIDE`` is specified, a ``logConfiguration`` must be provided." + }, + "Logging": { + "description": "The log setting to use for redirecting logs for your execute command results. The following log settings are available.\n + ``NONE``: The execute command session is not logged.\n + ``DEFAULT``: The ``awslogs`` configuration in the task definition is used. If no logging parameter is specified, it defaults to this value. If no ``awslogs`` log driver is configured in the task definition, the output won't be logged.\n + ``OVERRIDE``: Specify the logging details as a part of ``logConfiguration``. If the ``OVERRIDE`` logging option is specified, the ``logConfiguration`` is required.", + "type": "string" + } + }, + "type": "object" + }, + "ExecuteCommandLogConfiguration": { + "additionalProperties": false, + "description": "The log configuration for the results of the execute command actions. The logs can be sent to CloudWatch Logs or an Amazon S3 bucket.", + "properties": { + "CloudWatchEncryptionEnabled": { + "description": "Determines whether to use encryption on the CloudWatch logs. If not specified, encryption will be off.", + "type": "boolean" + }, + "CloudWatchLogGroupName": { + "description": "The name of the CloudWatch log group to send logs to.\n The CloudWatch log group must already be created.", + "relationshipRef": { + "propertyPath": "/properties/LogGroupName", + "typeName": "AWS::Logs::LogGroup" + }, + "type": "string" + }, + "S3BucketName": { + "description": "The name of the S3 bucket to send logs to.\n The S3 bucket must already be created.", + "type": "string" + }, + "S3EncryptionEnabled": { + "description": "Determines whether to use encryption on the S3 logs. If not specified, encryption is not used.", + "type": "boolean" + }, + "S3KeyPrefix": { + "description": "An optional folder in the S3 bucket to place logs in.", + "type": "string" + } + }, + "type": "object" + }, + "ManagedStorageConfiguration": { + "additionalProperties": false, + "description": "The managed storage configuration for the cluster.", + "properties": { + "FargateEphemeralStorageKmsKeyId": { + "description": "Specify the KMSlong key ID for the Fargate ephemeral storage.\n The key must be a single Region key.", + "type": "string" + }, + "KmsKeyId": { + "description": "Specify a KMSlong key ID to encrypt the managed storage.\n The key must be a single Region key.", + "type": "string" + } + }, + "type": "object" + }, + "ServiceConnectDefaults": { + "additionalProperties": false, + "description": "Use this parameter to set a default Service Connect namespace. After you set a default Service Connect namespace, any new services with Service Connect turned on that are created in the cluster are added as client services in the namespace. This setting only applies to new services that set the ``enabled`` parameter to ``true`` in the ``ServiceConnectConfiguration``. You can set the namespace of each service individually in the ``ServiceConnectConfiguration`` to override this default parameter.\n Tasks that run in a namespace can use short names to connect to services in the namespace. Tasks can connect to services across all of the clusters in the namespace. Tasks connect through a managed proxy container that collects logs and metrics for increased visibility. Only the tasks that Amazon ECS services create are supported with Service Connect. For more information, see [Service Connect](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/service-connect.html) in the *Amazon Elastic Container Service Developer Guide*.", + "properties": { + "Namespace": { + "description": "The namespace name or full Amazon Resource Name (ARN) of the CMAPlong namespace that's used when you create a service and don't specify a Service Connect configuration. The namespace name can include up to 1024 characters. The name is case-sensitive. The name can't include greater than (>), less than (<), double quotation marks (\"), or slash (/).\n If you enter an existing namespace name or ARN, then that namespace will be used. Any namespace type is supported. The namespace must be in this account and this AWS Region.\n If you enter a new name, a CMAPlong namespace will be created. Amazon ECS creates a CMAP namespace with the \"API calls\" method of instance discovery only. This instance discovery method is the \"HTTP\" namespace type in the CLIlong. Other types of instance discovery aren't used by Service Connect.\n If you update the cluster with an empty string ``\"\"`` for the namespace name, the cluster configuration for Service Connect is removed. Note that the namespace will remain in CMAP and must be deleted separately.\n For more information about CMAPlong, see [Working with Services](https://docs.aws.amazon.com/cloud-map/latest/dg/working-with-services.html) in the *Developer Guide*.", + "type": "string" + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "description": "The metadata that you apply to a resource to help you categorize and organize them. Each tag consists of a key and an optional value. You define them.\n The following basic restrictions apply to tags:\n + Maximum number of tags per resource - 50\n + For each resource, each tag key must be unique, and each tag key can have only one value.\n + Maximum key length - 128 Unicode characters in UTF-8\n + Maximum value length - 256 Unicode characters in UTF-8\n + If your tagging schema is used across multiple services and resources, remember that other services may have restrictions on allowed characters. Generally allowed characters are: letters, numbers, and spaces representable in UTF-8, and the following characters: + - = . _ : / @.\n + Tag keys and values are case-sensitive.\n + Do not use ``aws:``, ``AWS:``, or any upper or lowercase combination of such as a prefix for either keys or values as it is reserved for AWS use. You cannot edit or delete tag keys or values with this prefix. Tags with this prefix do not count against your tags per resource limit.", + "properties": { + "Key": { + "description": "One part of a key-value pair that make up a tag. A ``key`` is a general label that acts like a category for more specific tag values.", + "type": "string" + }, + "Value": { + "description": "The optional part of a key-value pair that make up a tag. A ``value`` acts as a descriptor within a tag category (key).", + "type": "string" + } + }, + "type": "object" + } + }, + "description": "The ``AWS::ECS::Cluster`` resource creates an Amazon Elastic Container Service (Amazon ECS) cluster.", + "handlers": { + "create": { + "permissions": [ + "ecs:CreateCluster", + "ecs:DescribeClusters", + "iam:CreateServiceLinkedRole", + "ecs:TagResource", + "kms:DescribeKey" + ] + }, + "delete": { + "permissions": [ + "ecs:DeleteCluster", + "ecs:DescribeClusters", + "kms:DescribeKey" + ] + }, + "list": { + "permissions": [ + "ecs:DescribeClusters", + "ecs:ListClusters" + ] + }, + "read": { + "permissions": [ + "ecs:DescribeClusters", + "kms:DescribeKey" + ] + }, + "update": { + "permissions": [ + "ecs:PutAccountSettingDefault", + "ecs:DescribeClusters", + "ecs:TagResource", + "ecs:UntagResource", + "ecs:PutAccountSetting", + "ecs:ListTagsForResource", + "ecs:UpdateCluster", + "ecs:UpdateClusterSettings", + "ecs:PutClusterCapacityProviders", + "kms:DescribeKey" + ] + } + }, + "primaryIdentifier": [ + "/properties/ClusterName" + ], + "properties": { + "Arn": { + "description": "", + "type": "string" + }, + "CapacityProviders": { + "description": "The short name of one or more capacity providers to associate with the cluster. A capacity provider must be associated with a cluster before it can be included as part of the default capacity provider strategy of the cluster or used in a capacity provider strategy when calling the [CreateService](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_CreateService.html) or [RunTask](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_RunTask.html) actions.\n If specifying a capacity provider that uses an Auto Scaling group, the capacity provider must be created but not associated with another cluster. New Auto Scaling group capacity providers can be created with the [CreateCapacityProvider](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_CreateCapacityProvider.html) API operation.\n To use a FARGATElong capacity provider, specify either the ``FARGATE`` or ``FARGATE_SPOT`` capacity providers. The FARGATElong capacity providers are available to all accounts and only need to be associated with a cluster to be used.\n The [PutCapacityProvider](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_PutCapacityProvider.html) API operation is used to update the list of available capacity providers for a cluster after the cluster is created.", + "items": { + "type": "string" + }, + "type": "array" + }, + "ClusterName": { + "description": "A user-generated string that you use to identify your cluster. If you don't specify a name, CFNlong generates a unique physical ID for the name.", + "type": "string" + }, + "ClusterSettings": { + "description": "The settings to use when creating a cluster. This parameter is used to turn on CloudWatch Container Insights with enhanced observability or CloudWatch Container Insights for a cluster.\n Container Insights with enhanced observability provides all the Container Insights metrics, plus additional task and container metrics. This version supports enhanced observability for Amazon ECS clusters using the Amazon EC2 and Fargate launch types. After you configure Container Insights with enhanced observability on Amazon ECS, Container Insights auto-collects detailed infrastructure telemetry from the cluster level down to the container level in your environment and displays these critical performance data in curated dashboards removing the heavy lifting in observability set-up. \n For more information, see [Monitor Amazon ECS containers using Container Insights with enhanced observability](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/cloudwatch-container-insights.html) in the *Amazon Elastic Container Service Developer Guide*.", + "items": { + "$ref": "#/definitions/ClusterSettings" + }, + "type": "array" + }, + "Configuration": { + "$ref": "#/definitions/ClusterConfiguration", + "description": "The execute command and managed storage configuration for the cluster." + }, + "DefaultCapacityProviderStrategy": { + "description": "The default capacity provider strategy for the cluster. When services or tasks are run in the cluster with no launch type or capacity provider strategy specified, the default capacity provider strategy is used.", + "items": { + "$ref": "#/definitions/CapacityProviderStrategyItem" + }, + "type": "array" + }, + "ServiceConnectDefaults": { + "$ref": "#/definitions/ServiceConnectDefaults", + "description": "Use this parameter to set a default Service Connect namespace. After you set a default Service Connect namespace, any new services with Service Connect turned on that are created in the cluster are added as client services in the namespace. This setting only applies to new services that set the ``enabled`` parameter to ``true`` in the ``ServiceConnectConfiguration``. You can set the namespace of each service individually in the ``ServiceConnectConfiguration`` to override this default parameter.\n Tasks that run in a namespace can use short names to connect to services in the namespace. Tasks can connect to services across all of the clusters in the namespace. Tasks connect through a managed proxy container that collects logs and metrics for increased visibility. Only the tasks that Amazon ECS services create are supported with Service Connect. For more information, see [Service Connect](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/service-connect.html) in the *Amazon Elastic Container Service Developer Guide*." + }, + "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. You define both.\n The following basic restrictions apply to tags:\n + Maximum number of tags per resource - 50\n + For each resource, each tag key must be unique, and each tag key can have only one value.\n + Maximum key length - 128 Unicode characters in UTF-8\n + Maximum value length - 256 Unicode characters in UTF-8\n + If your tagging schema is used across multiple services and resources, remember that other services may have restrictions on allowed characters. Generally allowed characters are: letters, numbers, and spaces representable in UTF-8, and the following characters: + - = . _ : / @.\n + Tag keys and values are case-sensitive.\n + Do not use ``aws:``, ``AWS:``, or any upper or lowercase combination of such as a prefix for either keys or values as it is reserved for AWS use. You cannot edit or delete tag keys or values with this prefix. Tags with this prefix do not count against your tags per resource limit.", + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array" + } + }, + "propertyTransform": { + "/properties/Configuration/ManagedStorageConfiguration/FargateEphemeralStorageKmsKeyId": "$join([\"arn:aws[-a-z]*:kms:[a-z0-9-]+:[0-9]{12}:key/\", FargateEphemeralStorageKmsKeyId])" + }, + "readOnlyProperties": [ + "/properties/Arn" + ], + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "ecs:TagResource", + "ecs:UntagResource", + "ecs:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::ECS::Cluster", + "writeOnlyProperties": [ + "/properties/ServiceConnectDefaults" + ] +} diff --git a/src/schema/aws-ecs-clustercapacityproviderassociations.json b/src/schema/aws-ecs-clustercapacityproviderassociations.json new file mode 100644 index 00000000..9a060b06 --- /dev/null +++ b/src/schema/aws-ecs-clustercapacityproviderassociations.json @@ -0,0 +1,129 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Cluster" + ], + "definitions": { + "CapacityProvider": { + "anyOf": [ + { + "enum": [ + "FARGATE", + "FARGATE_SPOT" + ], + "type": "string" + }, + { + "maxLength": 2048, + "minLength": 1, + "type": "string" + } + ], + "description": "If using ec2 auto-scaling, the name of the associated capacity provider. Otherwise FARGATE, FARGATE_SPOT.", + "type": "string" + }, + "CapacityProviderStrategy": { + "additionalProperties": false, + "properties": { + "Base": { + "maximum": 100000, + "minimum": 0, + "type": "integer" + }, + "CapacityProvider": { + "$ref": "#/definitions/CapacityProvider" + }, + "Weight": { + "maximum": 1000, + "minimum": 0, + "type": "integer" + } + }, + "required": [ + "CapacityProvider" + ], + "type": "object" + }, + "CapacityProviders": { + "description": "List of capacity providers to associate with the cluster", + "items": { + "$ref": "#/definitions/CapacityProvider" + }, + "type": "array", + "uniqueItems": true + }, + "Cluster": { + "description": "The name of the cluster", + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "DefaultCapacityProviderStrategy": { + "description": "List of capacity providers to associate with the cluster", + "items": { + "$ref": "#/definitions/CapacityProviderStrategy" + }, + "type": "array" + } + }, + "description": "Associate a set of ECS Capacity Providers with a specified ECS Cluster", + "handlers": { + "create": { + "permissions": [ + "ecs:DescribeClusters", + "ecs:PutClusterCapacityProviders", + "ecs:DescribeCapacityProviders" + ] + }, + "delete": { + "permissions": [ + "ecs:PutClusterCapacityProviders", + "ecs:DescribeClusters" + ] + }, + "list": { + "permissions": [ + "ecs:DescribeClusters", + "ecs:ListClusters" + ] + }, + "read": { + "permissions": [ + "ecs:DescribeClusters" + ] + }, + "update": { + "permissions": [ + "ecs:DescribeClusters", + "ecs:PutClusterCapacityProviders" + ] + } + }, + "primaryIdentifier": [ + "/properties/Cluster" + ], + "properties": { + "CapacityProviders": { + "$ref": "#/definitions/CapacityProviders" + }, + "Cluster": { + "$ref": "#/definitions/Cluster" + }, + "DefaultCapacityProviderStrategy": { + "$ref": "#/definitions/DefaultCapacityProviderStrategy" + } + }, + "required": [ + "CapacityProviders", + "Cluster", + "DefaultCapacityProviderStrategy" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::ECS::ClusterCapacityProviderAssociations" +} diff --git a/src/schema/aws-ecs-primarytaskset.json b/src/schema/aws-ecs-primarytaskset.json new file mode 100644 index 00000000..c1889ac8 --- /dev/null +++ b/src/schema/aws-ecs-primarytaskset.json @@ -0,0 +1,59 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Cluster", + "/properties/Service" + ], + "description": "A pseudo-resource that manages which of your ECS task sets is primary.", + "handlers": { + "create": { + "permissions": [ + "ecs:DescribeTaskSets", + "ecs:UpdateServicePrimaryTaskSet" + ] + }, + "delete": { + "permissions": [] + }, + "read": { + "permissions": [] + }, + "update": { + "permissions": [ + "ecs:DescribeTaskSets", + "ecs:UpdateServicePrimaryTaskSet" + ] + } + }, + "primaryIdentifier": [ + "/properties/Cluster", + "/properties/Service" + ], + "properties": { + "Cluster": { + "description": "The short name or full Amazon Resource Name (ARN) of the cluster that hosts the service to create the task set in.", + "type": "string" + }, + "Service": { + "description": "The short name or full Amazon Resource Name (ARN) of the service to create the task set in.", + "type": "string" + }, + "TaskSetId": { + "description": "The ID or full Amazon Resource Name (ARN) of the task set.", + "type": "string" + } + }, + "required": [ + "Cluster", + "Service", + "TaskSetId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ecs.git", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::ECS::PrimaryTaskSet" +} diff --git a/src/schema/aws-ecs-service.json b/src/schema/aws-ecs-service.json new file mode 100644 index 00000000..d1924e4d --- /dev/null +++ b/src/schema/aws-ecs-service.json @@ -0,0 +1,790 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Cluster", + "/properties/DeploymentController", + "/properties/LaunchType", + "/properties/Role", + "/properties/SchedulingStrategy", + "/properties/ServiceName" + ], + "definitions": { + "AwsVpcConfiguration": { + "additionalProperties": false, + "description": "An object representing the networking details for a task or service. For example ``awsVpcConfiguration={subnets=[\"subnet-12344321\"],securityGroups=[\"sg-12344321\"]}``.", + "properties": { + "AssignPublicIp": { + "description": "Whether the task's elastic network interface receives a public IP address. \n Consider the following when you set this value:\n + When you use ``create-service`` or ``update-service``, the default is ``DISABLED``. \n + When the service ``deploymentController`` is ``ECS``, the value must be ``DISABLED``.", + "enum": [ + "DISABLED", + "ENABLED" + ], + "type": "string" + }, + "SecurityGroups": { + "description": "The IDs of the security groups associated with the task or service. If you don't specify a security group, the default security group for the VPC is used. There's a limit of 5 security groups that can be specified.\n All specified security groups must be from the same VPC.", + "items": { + "type": "string" + }, + "type": "array" + }, + "Subnets": { + "description": "The IDs of the subnets associated with the task or service. There's a limit of 16 subnets that can be specified.\n All specified subnets must be from the same VPC.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "CapacityProviderStrategyItem": { + "additionalProperties": false, + "description": "The details of a capacity provider strategy. A capacity provider strategy can be set when using the ``RunTask`` or ``CreateService`` APIs or as the default capacity provider strategy for a cluster with the ``CreateCluster`` API.\n Only capacity providers that are already associated with a cluster and have an ``ACTIVE`` or ``UPDATING`` status can be used in a capacity provider strategy. The ``PutClusterCapacityProviders`` API is used to associate a capacity provider with a cluster.\n If specifying a capacity provider that uses an Auto Scaling group, the capacity provider must already be created. New Auto Scaling group capacity providers can be created with the ``CreateCapacityProvider`` API operation.\n To use an FARGATElong capacity provider, specify either the ``FARGATE`` or ``FARGATE_SPOT`` capacity providers. The FARGATElong capacity providers are available to all accounts and only need to be associated with a cluster to be used in a capacity provider strategy.", + "properties": { + "Base": { + "description": "The *base* value designates how many tasks, at a minimum, to run on the specified capacity provider. Only one capacity provider in a capacity provider strategy can have a *base* defined. If no value is specified, the default value of ``0`` is used.", + "type": "integer" + }, + "CapacityProvider": { + "description": "The short name of the capacity provider.", + "type": "string" + }, + "Weight": { + "description": "The *weight* value designates the relative percentage of the total number of tasks launched that should use the specified capacity provider. The ``weight`` value is taken into consideration after the ``base`` value, if defined, is satisfied.\n If no ``weight`` value is specified, the default value of ``0`` is used. When multiple capacity providers are specified within a capacity provider strategy, at least one of the capacity providers must have a weight value greater than zero and any capacity providers with a weight of ``0`` can't be used to place tasks. If you specify multiple capacity providers in a strategy that all have a weight of ``0``, any ``RunTask`` or ``CreateService`` actions using the capacity provider strategy will fail.\n An example scenario for using weights is defining a strategy that contains two capacity providers and both have a weight of ``1``, then when the ``base`` is satisfied, the tasks will be split evenly across the two capacity providers. Using that same logic, if you specify a weight of ``1`` for *capacityProviderA* and a weight of ``4`` for *capacityProviderB*, then for every one task that's run using *capacityProviderA*, four tasks would use *capacityProviderB*.", + "type": "integer" + } + }, + "type": "object" + }, + "DeploymentAlarms": { + "additionalProperties": false, + "description": "One of the methods which provide a way for you to quickly identify when a deployment has failed, and then to optionally roll back the failure to the last working deployment.\n When the alarms are generated, Amazon ECS sets the service deployment to failed. Set the rollback parameter to have Amazon ECS to roll back your service to the last completed deployment after a failure.\n You can only use the ``DeploymentAlarms`` method to detect failures when the ``DeploymentController`` is set to ``ECS`` (rolling update).\n For more information, see [Rolling update](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/deployment-type-ecs.html) in the *Amazon Elastic Container Service Developer Guide*.", + "properties": { + "AlarmNames": { + "description": "One or more CloudWatch alarm names. Use a \",\" to separate the alarms.", + "items": { + "type": "string" + }, + "type": "array" + }, + "Enable": { + "description": "Determines whether to use the CloudWatch alarm option in the service deployment process.", + "type": "boolean" + }, + "Rollback": { + "description": "Determines whether to configure Amazon ECS to roll back the service if a service deployment fails. If rollback is used, when a service deployment fails, the service is rolled back to the last deployment that completed successfully.", + "type": "boolean" + } + }, + "required": [ + "AlarmNames", + "Rollback", + "Enable" + ], + "type": "object" + }, + "DeploymentCircuitBreaker": { + "additionalProperties": false, + "description": "The deployment circuit breaker can only be used for services using the rolling update (``ECS``) deployment type.\n The *deployment circuit breaker* determines whether a service deployment will fail if the service can't reach a steady state. If it is turned on, a service deployment will transition to a failed state and stop launching new tasks. You can also configure Amazon ECS to roll back your service to the last completed deployment after a failure. For more information, see [Rolling update](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/deployment-type-ecs.html) in the *Amazon Elastic Container Service Developer Guide*.\n For more information about API failure reasons, see [API failure reasons](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/api_failures_messages.html) in the *Amazon Elastic Container Service Developer Guide*.", + "properties": { + "Enable": { + "description": "Determines whether to use the deployment circuit breaker logic for the service.", + "type": "boolean" + }, + "Rollback": { + "description": "Determines whether to configure Amazon ECS to roll back the service if a service deployment fails. If rollback is on, when a service deployment fails, the service is rolled back to the last deployment that completed successfully.", + "type": "boolean" + } + }, + "required": [ + "Enable", + "Rollback" + ], + "type": "object" + }, + "DeploymentConfiguration": { + "additionalProperties": false, + "description": "Optional deployment parameters that control how many tasks run during a deployment and the ordering of stopping and starting tasks.", + "properties": { + "Alarms": { + "$ref": "#/definitions/DeploymentAlarms", + "description": "Information about the CloudWatch alarms." + }, + "DeploymentCircuitBreaker": { + "$ref": "#/definitions/DeploymentCircuitBreaker", + "description": "The deployment circuit breaker can only be used for services using the rolling update (``ECS``) deployment type.\n The *deployment circuit breaker* determines whether a service deployment will fail if the service can't reach a steady state. If you use the deployment circuit breaker, a service deployment will transition to a failed state and stop launching new tasks. If you use the rollback option, when a service deployment fails, the service is rolled back to the last deployment that completed successfully. For more information, see [Rolling update](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/deployment-type-ecs.html) in the *Amazon Elastic Container Service Developer Guide*" + }, + "MaximumPercent": { + "description": "If a service is using the rolling update (``ECS``) deployment type, the ``maximumPercent`` parameter represents an upper limit on the number of your service's tasks that are allowed in the ``RUNNING`` or ``PENDING`` state during a deployment, as a percentage of the ``desiredCount`` (rounded down to the nearest integer). This parameter enables you to define the deployment batch size. For example, if your service is using the ``REPLICA`` service scheduler and has a ``desiredCount`` of four tasks and a ``maximumPercent`` value of 200%, the scheduler may start four new tasks before stopping the four older tasks (provided that the cluster resources required to do this are available). The default ``maximumPercent`` value for a service using the ``REPLICA`` service scheduler is 200%.\n The Amazon ECS scheduler uses this parameter to replace unhealthy tasks by starting replacement tasks first and then stopping the unhealthy tasks, as long as cluster resources for starting replacement tasks are available. For more information about how the scheduler replaces unhealthy tasks, see [Amazon ECS services](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs_services.html).\n If a service is using either the blue/green (``CODE_DEPLOY``) or ``EXTERNAL`` deployment types, and tasks in the service use the EC2 launch type, the *maximum percent* value is set to the default value. The *maximum percent* value is used to define the upper limit on the number of the tasks in the service that remain in the ``RUNNING`` state while the container instances are in the ``DRAINING`` state.\n You can't specify a custom ``maximumPercent`` value for a service that uses either the blue/green (``CODE_DEPLOY``) or ``EXTERNAL`` deployment types and has tasks that use the EC2 launch type.\n If the service uses either the blue/green (``CODE_DEPLOY``) or ``EXTERNAL`` deployment types, and the tasks in the service use the Fargate launch type, the maximum percent value is not used. The value is still returned when describing your service.", + "type": "integer" + }, + "MinimumHealthyPercent": { + "description": "If a service is using the rolling update (``ECS``) deployment type, the ``minimumHealthyPercent`` represents a lower limit on the number of your service's tasks that must remain in the ``RUNNING`` state during a deployment, as a percentage of the ``desiredCount`` (rounded up to the nearest integer). This parameter enables you to deploy without using additional cluster capacity. For example, if your service has a ``desiredCount`` of four tasks and a ``minimumHealthyPercent`` of 50%, the service scheduler may stop two existing tasks to free up cluster capacity before starting two new tasks. \n If any tasks are unhealthy and if ``maximumPercent`` doesn't allow the Amazon ECS scheduler to start replacement tasks, the scheduler stops the unhealthy tasks one-by-one \u2014 using the ``minimumHealthyPercent`` as a constraint \u2014 to clear up capacity to launch replacement tasks. For more information about how the scheduler replaces unhealthy tasks, see [Amazon ECS services](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs_services.html) . \n For services that *do not* use a load balancer, the following should be noted:\n + A service is considered healthy if all essential containers within the tasks in the service pass their health checks.\n + If a task has no essential containers with a health check defined, the service scheduler will wait for 40 seconds after a task reaches a ``RUNNING`` state before the task is counted towards the minimum healthy percent total.\n + If a task has one or more essential containers with a health check defined, the service scheduler will wait for the task to reach a healthy status before counting it towards the minimum healthy percent total. A task is considered healthy when all essential containers within the task have passed their health checks. The amount of time the service scheduler can wait for is determined by the container health check settings. \n \n For services that *do* use a load balancer, the following should be noted:\n + If a task has no essential containers with a health check defined, the service scheduler will wait for the load balancer target group health check to return a healthy status before counting the task towards the minimum healthy percent total.\n + If a task has an essential container with a health check defined, the service scheduler will wait for both the task to reach a healthy status and the load balancer target group health check to return a healthy status before counting the task towards the minimum healthy percent total.\n \n The default value for a replica service for ``minimumHealthyPercent`` is 100%. The default ``minimumHealthyPercent`` value for a service using the ``DAEMON`` service schedule is 0% for the CLI, the AWS SDKs, and the APIs and 50% for the AWS Management Console.\n The minimum number of healthy tasks during a deployment is the ``desiredCount`` multiplied by the ``minimumHealthyPercent``/100, rounded up to the nearest integer value.\n If a service is using either the blue/green (``CODE_DEPLOY``) or ``EXTERNAL`` deployment types and is running tasks that use the EC2 launch type, the *minimum healthy percent* value is set to the default value. The *minimum healthy percent* value is used to define the lower limit on the number of the tasks in the service that remain in the ``RUNNING`` state while the container instances are in the ``DRAINING`` state.\n You can't specify a custom ``minimumHealthyPercent`` value for a service that uses either the blue/green (``CODE_DEPLOY``) or ``EXTERNAL`` deployment types and has tasks that use the EC2 launch type.\n If a service is using either the blue/green (``CODE_DEPLOY``) or ``EXTERNAL`` deployment types and is running tasks that use the Fargate launch type, the minimum healthy percent value is not used, although it is returned when describing your service.", + "type": "integer" + } + }, + "type": "object" + }, + "DeploymentController": { + "additionalProperties": false, + "description": "The deployment controller to use for the service.", + "properties": { + "Type": { + "description": "The deployment controller type to use. There are three deployment controller types available:\n + ECS The rolling update (ECS) deployment type involves replacing the current running version of the container with the latest version. The number of containers Amazon ECS adds or removes from the service during a rolling update is controlled by adjusting the minimum and maximum number of healthy tasks allowed during a service deployment, as specified in the DeploymentConfiguration. + CODE_DEPLOY The blue/green (CODE_DEPLOY) deployment type uses the blue/green deployment model powered by , which allows you to verify a new deployment of a service before sending production traffic to it. + EXTERNAL The external (EXTERNAL) deployment type enables you to use any third-party deployment controller for full control over the deployment process for an Amazon ECS service.", + "enum": [ + "CODE_DEPLOY", + "ECS", + "EXTERNAL" + ], + "type": "string" + } + }, + "type": "object" + }, + "EBSTagSpecification": { + "additionalProperties": false, + "description": "The tag specifications of an Amazon EBS volume.", + "properties": { + "PropagateTags": { + "description": "Determines whether to propagate the tags from the task definition to \u2028the Amazon EBS volume. Tags can only propagate to a ``SERVICE`` specified in \u2028``ServiceVolumeConfiguration``. If no value is specified, the tags aren't \u2028propagated.", + "enum": [ + "SERVICE", + "TASK_DEFINITION" + ], + "type": "string" + }, + "ResourceType": { + "description": "The type of volume resource.", + "type": "string" + }, + "Tags": { + "description": "The tags applied to this Amazon EBS volume. ``AmazonECSCreated`` and ``AmazonECSManaged`` are reserved tags that can't be used.", + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array" + } + }, + "required": [ + "ResourceType" + ], + "type": "object" + }, + "LoadBalancer": { + "additionalProperties": false, + "description": "The ``LoadBalancer`` property specifies details on a load balancer that is used with a service.\n If the service is using the ``CODE_DEPLOY`` deployment controller, the service is required to use either an Application Load Balancer or Network Load Balancer. When you are creating an ACDlong deployment group, you specify two target groups (referred to as a ``targetGroupPair``). Each target group binds to a separate task set in the deployment. The load balancer can also have up to two listeners, a required listener for production traffic and an optional listener that allows you to test new revisions of the service before routing production traffic to it.\n Services with tasks that use the ``awsvpc`` network mode (for example, those with the Fargate launch type) only support Application Load Balancers and Network Load Balancers. Classic Load Balancers are not supported. Also, when you create any target groups for these services, you must choose ``ip`` as the target type, not ``instance``. Tasks that use the ``awsvpc`` network mode are associated with an elastic network interface, not an Amazon EC2 instance.", + "properties": { + "ContainerName": { + "description": "The name of the container (as it appears in a container definition) to associate with the load balancer.\n You need to specify the container name when configuring the target group for an Amazon ECS load balancer.", + "type": "string" + }, + "ContainerPort": { + "description": "The port on the container to associate with the load balancer. This port must correspond to a ``containerPort`` in the task definition the tasks in the service are using. For tasks that use the EC2 launch type, the container instance they're launched on must allow ingress traffic on the ``hostPort`` of the port mapping.", + "type": "integer" + }, + "LoadBalancerName": { + "description": "The name of the load balancer to associate with the Amazon ECS service or task set.\n If you are using an Application Load Balancer or a Network Load Balancer the load balancer name parameter should be omitted.", + "type": "string" + }, + "TargetGroupArn": { + "description": "The full Amazon Resource Name (ARN) of the Elastic Load Balancing target group or groups associated with a service or task set.\n A target group ARN is only specified when using an Application Load Balancer or Network Load Balancer. \n For services using the ``ECS`` deployment controller, you can specify one or multiple target groups. For more information, see [Registering multiple target groups with a service](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/register-multiple-targetgroups.html) in the *Amazon Elastic Container Service Developer Guide*.\n For services using the ``CODE_DEPLOY`` deployment controller, you're required to define two target groups for the load balancer. For more information, see [Blue/green deployment with CodeDeploy](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/deployment-type-bluegreen.html) in the *Amazon Elastic Container Service Developer Guide*.\n If your service's task definition uses the ``awsvpc`` network mode, you must choose ``ip`` as the target type, not ``instance``. Do this when creating your target groups because tasks that use the ``awsvpc`` network mode are associated with an elastic network interface, not an Amazon EC2 instance. This network mode is required for the Fargate launch type.", + "type": "string" + } + }, + "type": "object" + }, + "LogConfiguration": { + "additionalProperties": false, + "description": "The log configuration for the container. This parameter maps to ``LogConfig`` in the docker container create command and the ``--log-driver`` option to docker run.\n By default, containers use the same logging driver that the Docker daemon uses. However, the container might use a different logging driver than the Docker daemon by specifying a log driver configuration in the container definition.\n Understand the following when specifying a log configuration for your containers.\n + Amazon ECS currently supports a subset of the logging drivers available to the Docker daemon. Additional log drivers may be available in future releases of the Amazon ECS container agent.\n For tasks on FARGATElong, the supported log drivers are ``awslogs``, ``splunk``, and ``awsfirelens``.\n For tasks hosted on Amazon EC2 instances, the supported log drivers are ``awslogs``, ``fluentd``, ``gelf``, ``json-file``, ``journald``,``syslog``, ``splunk``, and ``awsfirelens``.\n + This parameter requires version 1.18 of the Docker Remote API or greater on your container instance.\n + For tasks that are hosted on Amazon EC2 instances, the Amazon ECS container agent must register the available logging drivers with the ``ECS_AVAILABLE_LOGGING_DRIVERS`` environment variable before containers placed on that instance can use these log configuration options. For more information, see [Amazon ECS container agent configuration](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-agent-config.html) in the *Amazon Elastic Container Service Developer Guide*.\n + For tasks that are on FARGATElong, because you don't have access to the underlying infrastructure your tasks are hosted on, any additional software needed must be installed outside of the task. For example, the Fluentd output aggregators or a remote host running Logstash to send Gelf logs to.", + "properties": { + "LogDriver": { + "description": "The log driver to use for the container.\n For tasks on FARGATElong, the supported log drivers are ``awslogs``, ``splunk``, and ``awsfirelens``.\n For tasks hosted on Amazon EC2 instances, the supported log drivers are ``awslogs``, ``fluentd``, ``gelf``, ``json-file``, ``journald``, ``syslog``, ``splunk``, and ``awsfirelens``.\n For more information about using the ``awslogs`` log driver, see [Send Amazon ECS logs to CloudWatch](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/using_awslogs.html) in the *Amazon Elastic Container Service Developer Guide*.\n For more information about using the ``awsfirelens`` log driver, see [Send Amazon ECS logs to an service or Partner](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/using_firelens.html).\n If you have a custom driver that isn't listed, you can fork the Amazon ECS container agent project that's [available on GitHub](https://docs.aws.amazon.com/https://github.com/aws/amazon-ecs-agent) and customize it to work with that driver. We encourage you to submit pull requests for changes that you would like to have included. However, we don't currently provide support for running modified copies of this software.", + "type": "string" + }, + "Options": { + "additionalProperties": false, + "description": "The configuration options to send to the log driver.\n The options you can specify depend on the log driver. Some of the options you can specify when you use the ``awslogs`` log driver to route logs to Amazon CloudWatch include the following:\n + awslogs-create-group Required: No Specify whether you want the log group to be created automatically. If this option isn't specified, it defaults to false. Your IAM policy must include the logs:CreateLogGroup permission before you attempt to use awslogs-create-group. + awslogs-region Required: Yes Specify the Region that the awslogs log driver is to send your Docker logs to. You can choose to send all of your logs from clusters in different Regions to a single region in CloudWatch Logs. This is so that they're all visible in one location. Otherwise, you can separate them by Region for more granularity. Make sure that the specified log group exists in the Region that you specify with this option. + awslogs-group Required: Yes Make sure to specify a log group that the awslogs log driver sends its log streams to. + awslogs-stream-prefix Required: Yes, when using the Fargate launch type.Optional for the EC2 launch type, required for the Fargate launch type. Use the awslogs-stream-prefix option to associate a log stream with the specified prefix, the container name, and the ID of the Amazon ECS task that the container belongs to. If you specify a prefix with this option, then the log stream takes the format prefix-name/container-name/ecs-task-id. If you don't specify a prefix with this option, then the log stream is named after the container ID that's assigned by the Docker daemon on the container instance. Because it's difficult to trace logs back to the container that sent them with just the Docker container ID (which is only available on the container instance), we recommend that you specify a prefix with this option. For Amazon ECS services, you can use the service name as the prefix. Doing so, you can trace log streams to the service that the container belongs to, the name of the container that sent them, and the ID of the task that the container belongs to. You must specify a stream-prefix for your logs to have your logs appear in the Log pane when using the Amazon ECS console. + awslogs-datetime-format Required: No This option defines a multiline start pattern in Python strftime format. A log message consists of a line that matches the pattern and any following lines that don\u2019t match the pattern. The matched line is the delimiter between log messages. One example of a use case for using this format is for parsing output such as a stack dump, which might otherwise be logged in multiple entries. The correct pattern allows it to be captured in a single entry. For more information, see awslogs-datetime-format. You cannot configure both the awslogs-datetime-format and awslogs-multiline-pattern options. Multiline logging performs regular expression parsing and matching of all log messages. This might have a negative impact on logging performance. + awslogs-multiline-pattern Required: No This option defines a multiline start pattern that uses a regular expression. A log message consists of a line that matches the pattern and any following lines that don\u2019t match the pattern. The matched line is the delimiter between log messages. For more information, see awslogs-multiline-pattern. This option is ignored if awslogs-datetime-format is also configured. You cannot configure both the awslogs-datetime-format and awslogs-multiline-pattern options. Multiline logging performs regular expression parsing and matching of all log messages. This might have a negative impact on logging performance. + mode Required: No Valid values: non-blocking | blocking This option defines the delivery mode of log messages from the container to CloudWatch Logs. The delivery mode you choose affects application availability when the flow of logs from container to CloudWatch is interrupted. If you use the blocking mode and the flow of logs to CloudWatch is interrupted, calls from container code to write to the stdout and stderr streams will block. The logging thread of the application will block as a result. This may cause the application to become unresponsive and lead to container healthcheck failure. If you use the non-blocking mode, the container's logs are instead stored in an in-memory intermediate buffer configured with the max-buffer-size option. This prevents the application from becoming unresponsive when logs cannot be sent to CloudWatch. We recommend using this mode if you want to ensure service availability and are okay with some log loss. For more information, see Preventing log loss with non-blocking mode in the awslogs container log driver. + max-buffer-size Required: No Default value: 1m When non-blocking mode is used, the max-buffer-size log option controls the size of the buffer that's used for intermediate message storage. Make sure to specify an adequate buffer size based on your application. When the buffer fills up, further logs cannot be stored. Logs that cannot be stored are lost. \n To route logs using the ``splunk`` log router, you need to specify a ``splunk-token`` and a ``splunk-url``.\n When you use the ``awsfirelens`` log router to route logs to an AWS Service or AWS Partner Network destination for log storage and analytics, you can set the ``log-driver-buffer-limit`` option to limit the number of events that are buffered in memory, before being sent to the log router container. It can help to resolve potential log loss issue because high throughput might result in memory running out for the buffer inside of Docker.\n Other options you can specify when using ``awsfirelens`` to route logs depend on the destination. When you export logs to Amazon Data Firehose, you can specify the AWS Region with ``region`` and a name for the log stream with ``delivery_stream``.\n When you export logs to Amazon Kinesis Data Streams, you can specify an AWS Region with ``region`` and a data stream name with ``stream``.\n When you export logs to Amazon OpenSearch Service, you can specify options like ``Name``, ``Host`` (OpenSearch Service endpoint without protocol), ``Port``, ``Index``, ``Type``, ``Aws_auth``, ``Aws_region``, ``Suppress_Type_Name``, and ``tls``. For more information, see [Under the hood: FireLens for Amazon ECS Tasks](https://docs.aws.amazon.com/containers/under-the-hood-firelens-for-amazon-ecs-tasks/).\n When you export logs to Amazon S3, you can specify the bucket using the ``bucket`` option. You can also specify ``region``, ``total_file_size``, ``upload_timeout``, and ``use_put_object`` as options.\n This parameter requires version 1.19 of the Docker Remote API or greater on your container instance. To check the Docker Remote API version on your container instance, log in to your container instance and run the following command: ``sudo docker version --format '{{.Server.APIVersion}}'``", + "patternProperties": { + ".{1,}": { + "type": "string" + } + }, + "type": "object" + }, + "SecretOptions": { + "description": "The secrets to pass to the log configuration. For more information, see [Specifying sensitive data](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/specifying-sensitive-data.html) in the *Amazon Elastic Container Service Developer Guide*.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Secret" + }, + "type": "array" + } + }, + "type": "object" + }, + "NetworkConfiguration": { + "additionalProperties": false, + "description": "The network configuration for a task or service.", + "properties": { + "AwsvpcConfiguration": { + "$ref": "#/definitions/AwsVpcConfiguration", + "description": "The VPC subnets and security groups that are associated with a task.\n All specified subnets and security groups must be from the same VPC." + } + }, + "type": "object" + }, + "PlacementConstraint": { + "additionalProperties": false, + "description": "An object representing a constraint on task placement. For more information, see [Task placement constraints](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-placement-constraints.html) in the *Amazon Elastic Container Service Developer Guide*.\n If you're using the Fargate launch type, task placement constraints aren't supported.", + "properties": { + "Expression": { + "description": "A cluster query language expression to apply to the constraint. The expression can have a maximum length of 2000 characters. You can't specify an expression if the constraint type is ``distinctInstance``. For more information, see [Cluster query language](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/cluster-query-language.html) in the *Amazon Elastic Container Service Developer Guide*.", + "type": "string" + }, + "Type": { + "description": "The type of constraint. Use ``distinctInstance`` to ensure that each task in a particular group is running on a different container instance. Use ``memberOf`` to restrict the selection to a group of valid candidates.", + "enum": [ + "distinctInstance", + "memberOf" + ], + "type": "string" + } + }, + "required": [ + "Type" + ], + "type": "object" + }, + "PlacementStrategy": { + "additionalProperties": false, + "description": "The task placement strategy for a task or service. For more information, see [Task placement strategies](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-placement-strategies.html) in the *Amazon Elastic Container Service Developer Guide*.", + "properties": { + "Field": { + "description": "The field to apply the placement strategy against. For the ``spread`` placement strategy, valid values are ``instanceId`` (or ``host``, which has the same effect), or any platform or custom attribute that's applied to a container instance, such as ``attribute:ecs.availability-zone``. For the ``binpack`` placement strategy, valid values are ``cpu`` and ``memory``. For the ``random`` placement strategy, this field is not used.", + "type": "string" + }, + "Type": { + "description": "The type of placement strategy. The ``random`` placement strategy randomly places tasks on available candidates. The ``spread`` placement strategy spreads placement across available candidates evenly based on the ``field`` parameter. The ``binpack`` strategy places tasks on available candidates that have the least available amount of the resource that's specified with the ``field`` parameter. For example, if you binpack on memory, a task is placed on the instance with the least amount of remaining memory but still enough to run the task.", + "enum": [ + "binpack", + "random", + "spread" + ], + "type": "string" + } + }, + "required": [ + "Type" + ], + "type": "object" + }, + "Secret": { + "additionalProperties": false, + "description": "An object representing the secret to expose to your container. Secrets can be exposed to a container in the following ways:\n + To inject sensitive data into your containers as environment variables, use the ``secrets`` container definition parameter.\n + To reference sensitive information in the log configuration of a container, use the ``secretOptions`` container definition parameter.\n \n For more information, see [Specifying sensitive data](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/specifying-sensitive-data.html) in the *Amazon Elastic Container Service Developer Guide*.", + "properties": { + "Name": { + "description": "The name of the secret.", + "type": "string" + }, + "ValueFrom": { + "description": "The secret to expose to the container. The supported values are either the full ARN of the ASMlong secret or the full ARN of the parameter in the SSM Parameter Store.\n For information about the require IAMlong permissions, see [Required IAM permissions for Amazon ECS secrets](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/specifying-sensitive-data-secrets.html#secrets-iam) (for Secrets Manager) or [Required IAM permissions for Amazon ECS secrets](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/specifying-sensitive-data-parameters.html) (for Systems Manager Parameter store) in the *Amazon Elastic Container Service Developer Guide*.\n If the SSM Parameter Store parameter exists in the same Region as the task you're launching, then you can use either the full ARN or name of the parameter. If the parameter exists in a different Region, then the full ARN must be specified.", + "type": "string" + } + }, + "required": [ + "Name", + "ValueFrom" + ], + "type": "object" + }, + "ServiceConnectClientAlias": { + "additionalProperties": false, + "description": "Each alias (\"endpoint\") is a fully-qualified name and port number that other tasks (\"clients\") can use to connect to this service.\n Each name and port mapping must be unique within the namespace.\n Tasks that run in a namespace can use short names to connect to services in the namespace. Tasks can connect to services across all of the clusters in the namespace. Tasks connect through a managed proxy container that collects logs and metrics for increased visibility. Only the tasks that Amazon ECS services create are supported with Service Connect. For more information, see [Service Connect](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/service-connect.html) in the *Amazon Elastic Container Service Developer Guide*.", + "properties": { + "DnsName": { + "description": "The ``dnsName`` is the name that you use in the applications of client tasks to connect to this service. The name must be a valid DNS name but doesn't need to be fully-qualified. The name can include up to 127 characters. The name can include lowercase letters, numbers, underscores (_), hyphens (-), and periods (.). The name can't start with a hyphen.\n If this parameter isn't specified, the default value of ``discoveryName.namespace`` is used. If the ``discoveryName`` isn't specified, the port mapping name from the task definition is used in ``portName.namespace``.\n To avoid changing your applications in client Amazon ECS services, set this to the same name that the client application uses by default. For example, a few common names are ``database``, ``db``, or the lowercase name of a database, such as ``mysql`` or ``redis``. For more information, see [Service Connect](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/service-connect.html) in the *Amazon Elastic Container Service Developer Guide*.", + "type": "string" + }, + "Port": { + "description": "The listening port number for the Service Connect proxy. This port is available inside of all of the tasks within the same namespace.\n To avoid changing your applications in client Amazon ECS services, set this to the same port that the client application uses by default. For more information, see [Service Connect](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/service-connect.html) in the *Amazon Elastic Container Service Developer Guide*.", + "type": "integer" + } + }, + "required": [ + "Port" + ], + "type": "object" + }, + "ServiceConnectConfiguration": { + "additionalProperties": false, + "description": "The Service Connect configuration of your Amazon ECS service. The configuration for this service to discover and connect to services, and be discovered by, and connected from, other services within a namespace.\n Tasks that run in a namespace can use short names to connect to services in the namespace. Tasks can connect to services across all of the clusters in the namespace. Tasks connect through a managed proxy container that collects logs and metrics for increased visibility. Only the tasks that Amazon ECS services create are supported with Service Connect. For more information, see [Service Connect](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/service-connect.html) in the *Amazon Elastic Container Service Developer Guide*.", + "properties": { + "Enabled": { + "description": "Specifies whether to use Service Connect with this service.", + "type": "boolean" + }, + "LogConfiguration": { + "$ref": "#/definitions/LogConfiguration", + "description": "The log configuration for the container. This parameter maps to ``LogConfig`` in the docker container create command and the ``--log-driver`` option to docker run.\n By default, containers use the same logging driver that the Docker daemon uses. However, the container might use a different logging driver than the Docker daemon by specifying a log driver configuration in the container definition.\n Understand the following when specifying a log configuration for your containers.\n + Amazon ECS currently supports a subset of the logging drivers available to the Docker daemon. Additional log drivers may be available in future releases of the Amazon ECS container agent.\n For tasks on FARGATElong, the supported log drivers are ``awslogs``, ``splunk``, and ``awsfirelens``.\n For tasks hosted on Amazon EC2 instances, the supported log drivers are ``awslogs``, ``fluentd``, ``gelf``, ``json-file``, ``journald``,``syslog``, ``splunk``, and ``awsfirelens``.\n + This parameter requires version 1.18 of the Docker Remote API or greater on your container instance.\n + For tasks that are hosted on Amazon EC2 instances, the Amazon ECS container agent must register the available logging drivers with the ``ECS_AVAILABLE_LOGGING_DRIVERS`` environment variable before containers placed on that instance can use these log configuration options. For more information, see [Amazon ECS container agent configuration](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-agent-config.html) in the *Amazon Elastic Container Service Developer Guide*.\n + For tasks that are on FARGATElong, because you don't have access to the underlying infrastructure your tasks are hosted on, any additional software needed must be installed outside of the task. For example, the Fluentd output aggregators or a remote host running Logstash to send Gelf logs to." + }, + "Namespace": { + "description": "The namespace name or full Amazon Resource Name (ARN) of the CMAPlong namespace for use with Service Connect. The namespace must be in the same AWS Region as the Amazon ECS service and cluster. The type of namespace doesn't affect Service Connect. For more information about CMAPlong, see [Working with Services](https://docs.aws.amazon.com/cloud-map/latest/dg/working-with-services.html) in the *Developer Guide*.", + "type": "string" + }, + "Services": { + "description": "The list of Service Connect service objects. These are names and aliases (also known as endpoints) that are used by other Amazon ECS services to connect to this service. \n This field is not required for a \"client\" Amazon ECS service that's a member of a namespace only to connect to other services within the namespace. An example of this would be a frontend application that accepts incoming requests from either a load balancer that's attached to the service or by other means.\n An object selects a port from the task definition, assigns a name for the CMAPlong service, and a list of aliases (endpoints) and ports for client applications to refer to this service.", + "items": { + "$ref": "#/definitions/ServiceConnectService" + }, + "type": "array" + } + }, + "required": [ + "Enabled" + ], + "type": "object" + }, + "ServiceConnectService": { + "additionalProperties": false, + "description": "The Service Connect service object configuration. For more information, see [Service Connect](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/service-connect.html) in the *Amazon Elastic Container Service Developer Guide*.", + "properties": { + "ClientAliases": { + "description": "The list of client aliases for this Service Connect service. You use these to assign names that can be used by client applications. The maximum number of client aliases that you can have in this list is 1.\n Each alias (\"endpoint\") is a fully-qualified name and port number that other Amazon ECS tasks (\"clients\") can use to connect to this service.\n Each name and port mapping must be unique within the namespace.\n For each ``ServiceConnectService``, you must provide at least one ``clientAlias`` with one ``port``.", + "items": { + "$ref": "#/definitions/ServiceConnectClientAlias" + }, + "type": "array" + }, + "DiscoveryName": { + "description": "The ``discoveryName`` is the name of the new CMAP service that Amazon ECS creates for this Amazon ECS service. This must be unique within the CMAP namespace. The name can contain up to 64 characters. The name can include lowercase letters, numbers, underscores (_), and hyphens (-). The name can't start with a hyphen.\n If the ``discoveryName`` isn't specified, the port mapping name from the task definition is used in ``portName.namespace``.", + "type": "string" + }, + "IngressPortOverride": { + "description": "The port number for the Service Connect proxy to listen on.\n Use the value of this field to bypass the proxy for traffic on the port number specified in the named ``portMapping`` in the task definition of this application, and then use it in your VPC security groups to allow traffic into the proxy for this Amazon ECS service.\n In ``awsvpc`` mode and Fargate, the default value is the container port number. The container port number is in the ``portMapping`` in the task definition. In bridge mode, the default value is the ephemeral port of the Service Connect proxy.", + "type": "integer" + }, + "PortName": { + "description": "The ``portName`` must match the name of one of the ``portMappings`` from all the containers in the task definition of this Amazon ECS service.", + "type": "string" + }, + "Timeout": { + "$ref": "#/definitions/TimeoutConfiguration", + "description": "A reference to an object that represents the configured timeouts for Service Connect." + }, + "Tls": { + "$ref": "#/definitions/ServiceConnectTlsConfiguration", + "description": "A reference to an object that represents a Transport Layer Security (TLS) configuration." + } + }, + "required": [ + "PortName" + ], + "type": "object" + }, + "ServiceConnectTlsCertificateAuthority": { + "additionalProperties": false, + "description": "The certificate root authority that secures your service.", + "properties": { + "AwsPcaAuthorityArn": { + "description": "The ARN of the AWS Private Certificate Authority certificate.", + "type": "string" + } + }, + "type": "object" + }, + "ServiceConnectTlsConfiguration": { + "additionalProperties": false, + "description": "The key that encrypts and decrypts your resources for Service Connect TLS.", + "properties": { + "IssuerCertificateAuthority": { + "$ref": "#/definitions/ServiceConnectTlsCertificateAuthority", + "description": "The signer certificate authority." + }, + "KmsKey": { + "description": "The AWS Key Management Service key.", + "type": "string" + }, + "RoleArn": { + "description": "The Amazon Resource Name (ARN) of the IAM role that's associated with the Service Connect TLS.", + "type": "string" + } + }, + "required": [ + "IssuerCertificateAuthority" + ], + "type": "object" + }, + "ServiceManagedEBSVolumeConfiguration": { + "additionalProperties": false, + "description": "The configuration for the Amazon EBS volume that Amazon ECS creates and manages on your behalf. These settings are used to create each Amazon EBS volume, with one volume created for each task in the service. For information about the supported launch types and operating systems, see [Supported operating systems and launch types](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ebs-volumes.html#ebs-volumes-configuration) in the*Amazon Elastic Container Service Developer Guide*.\n Many of these parameters map 1:1 with the Amazon EBS ``CreateVolume`` API request parameters.", + "properties": { + "Encrypted": { + "description": "Indicates whether the volume should be encrypted. If no value is specified, encryption is turned on by default. This parameter maps 1:1 with the ``Encrypted`` parameter of the [CreateVolume API](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CreateVolume.html) in the *Amazon EC2 API Reference*.", + "type": "boolean" + }, + "FilesystemType": { + "description": "The filesystem type for the volume. For volumes created from a snapshot, you must specify the same filesystem type that the volume was using when the snapshot was created. If there is a filesystem type mismatch, the task will fail to start.\n The available Linux filesystem types are\u2028 ``ext3``, ``ext4``, and ``xfs``. If no value is specified, the ``xfs`` filesystem type is used by default.\n The available Windows filesystem types are ``NTFS``.", + "type": "string" + }, + "Iops": { + "description": "The number of I/O operations per second (IOPS). For ``gp3``, ``io1``, and ``io2`` volumes, this represents the number of IOPS that are provisioned for the volume. For ``gp2`` volumes, this represents the baseline performance of the volume and the rate at which the volume accumulates I/O credits for bursting.\n The following are the supported values for each volume type.\n + ``gp3``: 3,000 - 16,000 IOPS\n + ``io1``: 100 - 64,000 IOPS\n + ``io2``: 100 - 256,000 IOPS\n \n This parameter is required for ``io1`` and ``io2`` volume types. The default for ``gp3`` volumes is ``3,000 IOPS``. This parameter is not supported for ``st1``, ``sc1``, or ``standard`` volume types.\n This parameter maps 1:1 with the ``Iops`` parameter of the [CreateVolume API](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CreateVolume.html) in the *Amazon EC2 API Reference*.", + "type": "integer" + }, + "KmsKeyId": { + "description": "The Amazon Resource Name (ARN) identifier of the AWS Key Management Service key to use for Amazon EBS encryption. When encryption is turned on and no AWS Key Management Service key is specified, the default AWS managed key for Amazon EBS volumes is used. This parameter maps 1:1 with the ``KmsKeyId`` parameter of the [CreateVolume API](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CreateVolume.html) in the *Amazon EC2 API Reference*.\n AWS authenticates the AWS Key Management Service key asynchronously. Therefore, if you specify an ID, alias, or ARN that is invalid, the action can appear to complete, but eventually fails.", + "type": "string" + }, + "RoleArn": { + "description": "The ARN of the IAM role to associate with this volume. This is the Amazon ECS infrastructure IAM role that is used to manage your AWS infrastructure. We recommend using the Amazon ECS-managed ``AmazonECSInfrastructureRolePolicyForVolumes`` IAM policy with this role. For more information, see [Amazon ECS infrastructure IAM role](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/infrastructure_IAM_role.html) in the *Amazon ECS Developer Guide*.", + "type": "string" + }, + "SizeInGiB": { + "description": "The size of the volume in GiB. You must specify either a volume size or a snapshot ID. If you specify a snapshot ID, the snapshot size is used for the volume size by default. You can optionally specify a volume size greater than or equal to the snapshot size. This parameter maps 1:1 with the ``Size`` parameter of the [CreateVolume API](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CreateVolume.html) in the *Amazon EC2 API Reference*.\n The following are the supported volume size values for each volume type.\n + ``gp2`` and ``gp3``: 1-16,384\n + ``io1`` and ``io2``: 4-16,384\n + ``st1`` and ``sc1``: 125-16,384\n + ``standard``: 1-1,024", + "type": "integer" + }, + "SnapshotId": { + "description": "The snapshot that Amazon ECS uses to create the volume. You must specify either a snapshot ID or a volume size. This parameter maps 1:1 with the ``SnapshotId`` parameter of the [CreateVolume API](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CreateVolume.html) in the *Amazon EC2 API Reference*.", + "type": "string" + }, + "TagSpecifications": { + "description": "The tags to apply to the volume. Amazon ECS applies service-managed tags by default. This parameter maps 1:1 with the ``TagSpecifications.N`` parameter of the [CreateVolume API](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CreateVolume.html) in the *Amazon EC2 API Reference*.", + "items": { + "$ref": "#/definitions/EBSTagSpecification" + }, + "type": "array" + }, + "Throughput": { + "description": "The throughput to provision for a volume, in MiB/s, with a maximum of 1,000 MiB/s. This parameter maps 1:1 with the ``Throughput`` parameter of the [CreateVolume API](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CreateVolume.html) in the *Amazon EC2 API Reference*.\n This parameter is only supported for the ``gp3`` volume type.", + "type": "integer" + }, + "VolumeType": { + "description": "The volume type. This parameter maps 1:1 with the ``VolumeType`` parameter of the [CreateVolume API](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CreateVolume.html) in the *Amazon EC2 API Reference*. For more information, see [Amazon EBS volume types](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-volume-types.html) in the *Amazon EC2 User Guide*.\n The following are the supported volume types.\n + General Purpose SSD: ``gp2``|``gp3`` \n + Provisioned IOPS SSD: ``io1``|``io2`` \n + Throughput Optimized HDD: ``st1`` \n + Cold HDD: ``sc1`` \n + Magnetic: ``standard`` \n The magnetic volume type is not supported on Fargate.", + "type": "string" + } + }, + "required": [ + "RoleArn" + ], + "type": "object" + }, + "ServiceRegistry": { + "additionalProperties": false, + "description": "The details for the service registry.\n Each service may be associated with one service registry. Multiple service registries for each service are not supported.\n When you add, update, or remove the service registries configuration, Amazon ECS starts a new deployment. New tasks are registered and deregistered to the updated service registry configuration.", + "properties": { + "ContainerName": { + "description": "The container name value to be used for your service discovery service. It's already specified in the task definition. If the task definition that your service task specifies uses the ``bridge`` or ``host`` network mode, you must specify a ``containerName`` and ``containerPort`` combination from the task definition. If the task definition that your service task specifies uses the ``awsvpc`` network mode and a type SRV DNS record is used, you must specify either a ``containerName`` and ``containerPort`` combination or a ``port`` value. However, you can't specify both.", + "type": "string" + }, + "ContainerPort": { + "description": "The port value to be used for your service discovery service. It's already specified in the task definition. If the task definition your service task specifies uses the ``bridge`` or ``host`` network mode, you must specify a ``containerName`` and ``containerPort`` combination from the task definition. If the task definition your service task specifies uses the ``awsvpc`` network mode and a type SRV DNS record is used, you must specify either a ``containerName`` and ``containerPort`` combination or a ``port`` value. However, you can't specify both.", + "type": "integer" + }, + "Port": { + "description": "The port value used if your service discovery service specified an SRV record. This field might be used if both the ``awsvpc`` network mode and SRV records are used.", + "type": "integer" + }, + "RegistryArn": { + "description": "The Amazon Resource Name (ARN) of the service registry. The currently supported service registry is CMAP. For more information, see [CreateService](https://docs.aws.amazon.com/cloud-map/latest/api/API_CreateService.html).", + "type": "string" + } + }, + "type": "object" + }, + "ServiceVolumeConfiguration": { + "additionalProperties": false, + "description": "The configuration for a volume specified in the task definition as a volume that is configured at launch time. Currently, the only supported volume type is an Amazon EBS volume.", + "properties": { + "ManagedEBSVolume": { + "$ref": "#/definitions/ServiceManagedEBSVolumeConfiguration", + "description": "The configuration for the Amazon EBS volume that Amazon ECS creates and manages on your behalf. These settings are used to create each Amazon EBS volume, with one volume created for each task in the service. The Amazon EBS volumes are visible in your account in the Amazon EC2 console once they are created." + }, + "Name": { + "description": "The name of the volume. This value must match the volume name from the ``Volume`` object in the task definition.", + "type": "string" + } + }, + "required": [ + "Name" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "description": "The metadata that you apply to a resource to help you categorize and organize them. Each tag consists of a key and an optional value. You define them.\n The following basic restrictions apply to tags:\n + Maximum number of tags per resource - 50\n + For each resource, each tag key must be unique, and each tag key can have only one value.\n + Maximum key length - 128 Unicode characters in UTF-8\n + Maximum value length - 256 Unicode characters in UTF-8\n + If your tagging schema is used across multiple services and resources, remember that other services may have restrictions on allowed characters. Generally allowed characters are: letters, numbers, and spaces representable in UTF-8, and the following characters: + - = . _ : / @.\n + Tag keys and values are case-sensitive.\n + Do not use ``aws:``, ``AWS:``, or any upper or lowercase combination of such as a prefix for either keys or values as it is reserved for AWS use. You cannot edit or delete tag keys or values with this prefix. Tags with this prefix do not count against your tags per resource limit.\n \n In order to tag a service that has the following ARN format, you need to migrate the service to the long ARN. You must use the API, CLI or console to migrate the service ARN. For more information, see [Migrate an short service ARN to a long ARN](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/service-arn-migration.html) in the *Developer Guide*.\n ``arn:aws:ecs:region:aws_account_id:service/service-name`` \n After the migration is complete, the following are true:\n + The service ARN is: ``arn:aws:ecs:region:aws_account_id:service/cluster-name/service-name`` \n + You can use CFN to tag the service as you would a service with a long ARN format.\n + When the ``PhysicalResourceId`` in the CFN stack represents a service, the value does not change and will be the short service ARN.", + "properties": { + "Key": { + "description": "One part of a key-value pair that make up a tag. A ``key`` is a general label that acts like a category for more specific tag values.", + "type": "string" + }, + "Value": { + "description": "The optional part of a key-value pair that make up a tag. A ``value`` acts as a descriptor within a tag category (key).", + "type": "string" + } + }, + "type": "object" + }, + "TimeoutConfiguration": { + "additionalProperties": false, + "description": "An object that represents the timeout configurations for Service Connect.\n If ``idleTimeout`` is set to a time that is less than ``perRequestTimeout``, the connection will close when the ``idleTimeout`` is reached and not the ``perRequestTimeout``.", + "properties": { + "IdleTimeoutSeconds": { + "description": "The amount of time in seconds a connection will stay active while idle. A value of ``0`` can be set to disable ``idleTimeout``.\n The ``idleTimeout`` default for ``HTTP``/``HTTP2``/``GRPC`` is 5 minutes.\n The ``idleTimeout`` default for ``TCP`` is 1 hour.", + "type": "integer" + }, + "PerRequestTimeoutSeconds": { + "description": "The amount of time waiting for the upstream to respond with a complete response per request. A value of ``0`` can be set to disable ``perRequestTimeout``. ``perRequestTimeout`` can only be set if Service Connect ``appProtocol`` isn't ``TCP``. Only ``idleTimeout`` is allowed for ``TCP`` ``appProtocol``.", + "type": "integer" + } + }, + "type": "object" + }, + "VpcLatticeConfiguration": { + "additionalProperties": false, + "description": "The VPC Lattice configuration for your service that holds the information for the target group(s) Amazon ECS tasks will be registered to.", + "properties": { + "PortName": { + "description": "The name of the port mapping to register in the VPC Lattice target group. This is the name of the ``portMapping`` you defined in your task definition.", + "type": "string" + }, + "RoleArn": { + "description": "The ARN of the IAM role to associate with this VPC Lattice configuration. This is the Amazon ECS\u2028 infrastructure IAM role that is used to manage your VPC Lattice infrastructure.", + "type": "string" + }, + "TargetGroupArn": { + "description": "The full Amazon Resource Name (ARN) of the target group or groups associated with the VPC Lattice configuration that the Amazon ECS tasks will be registered to.", + "type": "string" + } + }, + "required": [ + "RoleArn", + "TargetGroupArn", + "PortName" + ], + "type": "object" + } + }, + "description": "The ``AWS::ECS::Service`` resource creates an Amazon Elastic Container Service (Amazon ECS) service that runs and maintains the requested number of tasks and associated load balancers.\n The stack update fails if you change any properties that require replacement and at least one ECS Service Connect ``ServiceConnectConfiguration`` property is configured. This is because AWS CloudFormation creates the replacement service first, but each ``ServiceConnectService`` must have a name that is unique in the namespace.\n Starting April 15, 2023, AWS; will not onboard new customers to Amazon Elastic Inference (EI), and will help current customers migrate their workloads to options that offer better price and performance. After April 15, 2023, new customers will not be able to launch instances with Amazon EI accelerators in Amazon SageMaker, ECS, or EC2. However, customers who have used Amazon EI at least once during the past 30-day period are considered current customers and will be able to continue using the service.", + "handlers": { + "create": { + "permissions": [ + "ecs:CreateService", + "ecs:DescribeServices", + "iam:PassRole", + "ecs:TagResource" + ], + "timeoutInMinutes": 180 + }, + "delete": { + "permissions": [ + "ecs:DeleteService", + "ecs:DescribeServices" + ], + "timeoutInMinutes": 30 + }, + "list": { + "permissions": [ + "ecs:DescribeServices", + "ecs:ListClusters", + "ecs:ListServices" + ] + }, + "read": { + "permissions": [ + "ecs:DescribeServices" + ] + }, + "update": { + "permissions": [ + "ecs:DescribeServices", + "ecs:ListTagsForResource", + "ecs:TagResource", + "ecs:UntagResource", + "ecs:UpdateService" + ], + "timeoutInMinutes": 180 + } + }, + "primaryIdentifier": [ + "/properties/ServiceArn", + "/properties/Cluster" + ], + "properties": { + "AvailabilityZoneRebalancing": { + "default": "DISABLED", + "description": "Indicates whether to use Availability Zone rebalancing for the service.\n For more information, see [Balancing an Amazon ECS service across Availability Zones](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/service-rebalancing.html) in the *Amazon Elastic Container Service Developer Guide*.", + "enum": [ + "ENABLED", + "DISABLED" + ], + "type": "string" + }, + "CapacityProviderStrategy": { + "description": "The capacity provider strategy to use for the service.\n If a ``capacityProviderStrategy`` is specified, the ``launchType`` parameter must be omitted. If no ``capacityProviderStrategy`` or ``launchType`` is specified, the ``defaultCapacityProviderStrategy`` for the cluster is used.\n A capacity provider strategy can contain a maximum of 20 capacity providers.\n To remove this property from your service resource, specify an empty ``CapacityProviderStrategyItem`` array.", + "items": { + "$ref": "#/definitions/CapacityProviderStrategyItem" + }, + "type": "array" + }, + "Cluster": { + "description": "The short name or full Amazon Resource Name (ARN) of the cluster that you run your service on. If you do not specify a cluster, the default cluster is assumed.", + "type": "string" + }, + "DeploymentConfiguration": { + "$ref": "#/definitions/DeploymentConfiguration", + "description": "Optional deployment parameters that control how many tasks run during the deployment and the ordering of stopping and starting tasks." + }, + "DeploymentController": { + "$ref": "#/definitions/DeploymentController", + "description": "The deployment controller to use for the service. If no deployment controller is specified, the default value of ``ECS`` is used." + }, + "DesiredCount": { + "description": "The number of instantiations of the specified task definition to place and keep running in your service.\n For new services, if a desired count is not specified, a default value of ``1`` is used. When using the ``DAEMON`` scheduling strategy, the desired count is not required.\n For existing services, if a desired count is not specified, it is omitted from the operation.", + "type": "integer" + }, + "EnableECSManagedTags": { + "description": "Specifies whether to turn on Amazon ECS managed tags for the tasks within the service. For more information, see [Tagging your Amazon ECS resources](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-using-tags.html) in the *Amazon Elastic Container Service Developer Guide*.\n When you use Amazon ECS managed tags, you need to set the ``propagateTags`` request parameter.", + "type": "boolean" + }, + "EnableExecuteCommand": { + "description": "Determines whether the execute command functionality is turned on for the service. If ``true``, the execute command functionality is turned on for all containers in tasks as part of the service.", + "type": "boolean" + }, + "HealthCheckGracePeriodSeconds": { + "description": "The period of time, in seconds, that the Amazon ECS service scheduler ignores unhealthy Elastic Load Balancing, VPC Lattice, and container health checks after a task has first started. If you don't specify a health check grace period value, the default value of ``0`` is used. If you don't use any of the health checks, then ``healthCheckGracePeriodSeconds`` is unused.\n If your service's tasks take a while to start and respond to health checks, you can specify a health check grace period of up to 2,147,483,647 seconds (about 69 years). During that time, the Amazon ECS service scheduler ignores health check status. This grace period can prevent the service scheduler from marking tasks as unhealthy and stopping them before they have time to come up.", + "type": "integer" + }, + "LaunchType": { + "description": "The launch type on which to run your service. For more information, see [Amazon ECS Launch Types](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/launch_types.html) in the *Amazon Elastic Container Service Developer Guide*.", + "enum": [ + "EC2", + "FARGATE", + "EXTERNAL" + ], + "type": "string" + }, + "LoadBalancers": { + "description": "A list of load balancer objects to associate with the service. 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](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/service-load-balancing.html) in the *Amazon Elastic Container Service Developer Guide*.\n To remove this property from your service resource, specify an empty ``LoadBalancer`` array.", + "items": { + "$ref": "#/definitions/LoadBalancer" + }, + "type": "array" + }, + "Name": { + "description": "", + "type": "string" + }, + "NetworkConfiguration": { + "$ref": "#/definitions/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](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-networking.html) in the *Amazon Elastic Container Service Developer Guide*." + }, + "PlacementConstraints": { + "description": "An array of placement constraint objects to use for tasks in your service. You can specify a maximum of 10 constraints for each task. This limit includes constraints in the task definition and those specified at runtime.\n To remove this property from your service resource, specify an empty ``PlacementConstraint`` array.", + "items": { + "$ref": "#/definitions/PlacementConstraint" + }, + "type": "array" + }, + "PlacementStrategies": { + "description": "The placement strategy objects to use for tasks in your service. You can specify a maximum of 5 strategy rules for each service.\n To remove this property from your service resource, specify an empty ``PlacementStrategy`` array.", + "items": { + "$ref": "#/definitions/PlacementStrategy" + }, + "type": "array" + }, + "PlatformVersion": { + "default": "LATEST", + "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. For more information, see [platform versions](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/platform_versions.html) in the *Amazon Elastic Container Service Developer Guide*.", + "type": "string" + }, + "PropagateTags": { + "description": "Specifies whether to propagate the tags from the task definition to the task. If no value is specified, the tags aren't propagated. Tags can only be propagated to the task during task creation. To add tags to a task after task creation, use the [TagResource](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_TagResource.html) API action.\n You must set this to a value other than ``NONE`` when you use Cost Explorer. For more information, see [Amazon ECS usage reports](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/usage-reports.html) in the *Amazon Elastic Container Service Developer Guide*.\n The default is ``NONE``.", + "enum": [ + "SERVICE", + "TASK_DEFINITION" + ], + "type": "string" + }, + "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 doesn't use the ``awsvpc`` network mode. If you specify the ``role`` parameter, you must also specify a load balancer object with the ``loadBalancers`` parameter.\n If your account has already created the Amazon ECS service-linked role, that role is used for your service unless you specify a role here. The service-linked role is required if your task definition uses the ``awsvpc`` network mode or if the service is configured to use service discovery, an external deployment controller, multiple target groups, or Elastic Inference accelerators in which case you don't specify a role here. For more information, see [Using service-linked roles for Amazon ECS](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/using-service-linked-roles.html) in the *Amazon Elastic Container Service Developer Guide*.\n If your specified role has a path other than ``/``, then you must either specify the full role ARN (this is recommended) or prefix the role name with the path. For example, if a role with the name ``bar`` has a path of ``/foo/`` then you would specify ``/foo/bar`` as the role name. For more information, see [Friendly names and paths](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_identifiers.html#identifiers-friendly-names) in the *IAM User Guide*.", + "type": "string" + }, + "SchedulingStrategy": { + "description": "The scheduling strategy to use for the service. For more information, see [Services](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs_services.html).\n There are two service scheduler strategies available:\n + ``REPLICA``-The replica scheduling strategy places and maintains the desired number of tasks across your cluster. By default, the service scheduler spreads tasks across Availability Zones. You can use task placement strategies and constraints to customize task placement decisions. This scheduler strategy is required if the service uses the ``CODE_DEPLOY`` or ``EXTERNAL`` deployment controller types.\n + ``DAEMON``-The daemon scheduling strategy deploys exactly one task on each active container instance that meets all of the task placement constraints that you specify in your cluster. The service scheduler also evaluates the task placement constraints for running tasks and will stop tasks that don't meet the placement constraints. When you're using this strategy, you don't need to specify a desired number of tasks, a task placement strategy, or use Service Auto Scaling policies.\n Tasks using the Fargate launch type or the ``CODE_DEPLOY`` or ``EXTERNAL`` deployment controller types don't support the ``DAEMON`` scheduling strategy.", + "enum": [ + "DAEMON", + "REPLICA" + ], + "type": "string" + }, + "ServiceArn": { + "description": "", + "type": "string" + }, + "ServiceConnectConfiguration": { + "$ref": "#/definitions/ServiceConnectConfiguration", + "description": "The configuration for this service to discover and connect to services, and be discovered by, and connected from, other services within a namespace.\n Tasks that run in a namespace can use short names to connect to services in the namespace. Tasks can connect to services across all of the clusters in the namespace. Tasks connect through a managed proxy container that collects logs and metrics for increased visibility. Only the tasks that Amazon ECS services create are supported with Service Connect. For more information, see [Service Connect](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/service-connect.html) in the *Amazon Elastic Container Service Developer Guide*." + }, + "ServiceName": { + "description": "The name of your service. Up to 255 letters (uppercase and lowercase), numbers, underscores, 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.\n The stack update fails if you change any properties that require replacement and the ``ServiceName`` is configured. This is because AWS CloudFormation creates the replacement service first, but each ``ServiceName`` must be unique in the cluster.", + "type": "string" + }, + "ServiceRegistries": { + "description": "The details of the service discovery registry to associate with this service. For more information, see [Service discovery](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/service-discovery.html).\n Each service may be associated with one service registry. Multiple service registries for each service isn't supported.\n To remove this property from your service resource, specify an empty ``ServiceRegistry`` array.", + "items": { + "$ref": "#/definitions/ServiceRegistry" + }, + "type": "array" + }, + "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.\n The following basic restrictions apply to tags:\n + Maximum number of tags per resource - 50\n + For each resource, each tag key must be unique, and each tag key can have only one value.\n + Maximum key length - 128 Unicode characters in UTF-8\n + Maximum value length - 256 Unicode characters in UTF-8\n + If your tagging schema is used across multiple services and resources, remember that other services may have restrictions on allowed characters. Generally allowed characters are: letters, numbers, and spaces representable in UTF-8, and the following characters: + - = . _ : / @.\n + Tag keys and values are case-sensitive.\n + Do not use ``aws:``, ``AWS:``, or any upper or lowercase combination of such as a prefix for either keys or values as it is reserved for AWS use. You cannot edit or delete tag keys or values with this prefix. Tags with this prefix do not count against your tags per resource limit.", + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array" + }, + "TaskDefinition": { + "description": "The ``family`` and ``revision`` (``family:revision``) or full ARN of the task definition to run in your service. If a ``revision`` isn't specified, the latest ``ACTIVE`` revision is used.\n A task definition must be specified if the service uses either the ``ECS`` or ``CODE_DEPLOY`` deployment controllers.\n For more information about deployment types, see [Amazon ECS deployment types](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/deployment-types.html).", + "type": "string" + }, + "VolumeConfigurations": { + "description": "The configuration for a volume specified in the task definition as a volume that is configured at launch time. Currently, the only supported volume type is an Amazon EBS volume.\n To remove this property from your service resource, specify an empty ``ServiceVolumeConfiguration`` array.", + "items": { + "$ref": "#/definitions/ServiceVolumeConfiguration" + }, + "type": "array" + }, + "VpcLatticeConfigurations": { + "description": "The VPC Lattice configuration for the service being created.", + "items": { + "$ref": "#/definitions/VpcLatticeConfiguration" + }, + "type": "array" + } + }, + "propertyTransform": { + "/properties/Role": "Role $OR $join([\"arn:(aws)[-]{0,1}[a-z]{0,3}[-]{0,1}[a-z]{0,3}:iam::[0-9]{12}[:]role/{1}\", Role])", + "/properties/TaskDefinition": "TaskDefinition $OR $join([\"arn:(aws)[-]{0,1}[a-z]{0,3}[-]{0,1}[a-z]{0,3}:ecs:[a-z0-9-]+:[0-9]{12}:task-definition/\", $contains(TaskDefinition,\":\")?TaskDefinition:$join([TaskDefinition, \":[0-9]+\"])])" + }, + "readOnlyProperties": [ + "/properties/ServiceArn", + "/properties/Name" + ], + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "ecs:TagResource", + "ecs:UntagResource", + "ecs:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::ECS::Service", + "writeOnlyProperties": [ + "/properties/ServiceConnectConfiguration", + "/properties/VolumeConfigurations" + ] +} diff --git a/src/schema/aws-ecs-taskdefinition.json b/src/schema/aws-ecs-taskdefinition.json new file mode 100644 index 00000000..2db0ee3c --- /dev/null +++ b/src/schema/aws-ecs-taskdefinition.json @@ -0,0 +1,1180 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Family", + "/properties/ContainerDefinitions", + "/properties/Cpu", + "/properties/EnableFaultInjection", + "/properties/ExecutionRoleArn", + "/properties/InferenceAccelerators", + "/properties/Memory", + "/properties/NetworkMode", + "/properties/PlacementConstraints", + "/properties/ProxyConfiguration", + "/properties/RequiresCompatibilities", + "/properties/RuntimePlatform", + "/properties/TaskRoleArn", + "/properties/Volumes", + "/properties/PidMode", + "/properties/IpcMode", + "/properties/EphemeralStorage" + ], + "definitions": { + "AuthorizationConfig": { + "additionalProperties": false, + "description": "The authorization configuration details for the Amazon EFS file system.", + "properties": { + "AccessPointId": { + "description": "The Amazon EFS access point ID to use. If an access point is specified, the root directory value specified in the ``EFSVolumeConfiguration`` must either be omitted or set to ``/`` which will enforce the path set on the EFS access point. If an access point is used, transit encryption must be on in the ``EFSVolumeConfiguration``. For more information, see [Working with Amazon EFS access points](https://docs.aws.amazon.com/efs/latest/ug/efs-access-points.html) in the *Amazon Elastic File System User Guide*.", + "type": "string" + }, + "IAM": { + "description": "Determines whether to use the Amazon ECS task role defined in a task definition when mounting the Amazon EFS file system. If it is turned on, transit encryption must be turned on in the ``EFSVolumeConfiguration``. If this parameter is omitted, the default value of ``DISABLED`` is used. For more information, see [Using Amazon EFS access points](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/efs-volumes.html#efs-volume-accesspoints) in the *Amazon Elastic Container Service Developer Guide*.", + "enum": [ + "ENABLED", + "DISABLED" + ], + "type": "string" + } + }, + "type": "object" + }, + "ContainerDefinition": { + "additionalProperties": false, + "description": "The ``ContainerDefinition`` property specifies a container definition. Container definitions are used in task definitions to describe the different containers that are launched as part of a task.", + "properties": { + "Command": { + "description": "The command that's passed to the container. This parameter maps to ``Cmd`` in the docker container create command and the ``COMMAND`` parameter to docker run. If there are multiple arguments, each argument is a separated string in the array.", + "insertionOrder": true, + "items": { + "type": "string" + }, + "type": "array" + }, + "Cpu": { + "description": "The number of ``cpu`` units reserved for the container. This parameter maps to ``CpuShares`` in the docker container create commandand the ``--cpu-shares`` option to docker run.\n This field is optional for tasks using the Fargate launch type, and the only requirement is that the total amount of CPU reserved for all containers within a task be lower than the task-level ``cpu`` value.\n You can determine the number of CPU units that are available per EC2 instance type by multiplying the vCPUs listed for that instance type on the [Amazon EC2 Instances](https://docs.aws.amazon.com/ec2/instance-types/) detail page by 1,024.\n Linux containers share unallocated CPU units with other containers on the container instance with the same ratio as their allocated amount. For example, if you run a single-container task on a single-core instance type with 512 CPU units specified for that container, and that's the only task running on the container instance, that container could use the full 1,024 CPU unit share at any given time. However, if you launched another copy of the same task on that container instance, each task is guaranteed a minimum of 512 CPU units when needed. Moreover, each container could float to higher CPU usage if the other container was not using it. If both tasks were 100% active all of the time, they would be limited to 512 CPU units.\n On Linux container instances, the Docker daemon on the container instance uses the CPU value to calculate the relative CPU share ratios for running containers. The minimum valid CPU share value that the Linux kernel allows is 2, and the maximum valid CPU share value that the Linux kernel allows is 262144. However, the CPU parameter isn't required, and you can use CPU values below 2 or above 262144 in your container definitions. For CPU values below 2 (including null) or above 262144, the behavior varies based on your Amazon ECS container agent version:\n + *Agent versions less than or equal to 1.1.0:* Null and zero CPU values are passed to Docker as 0, which Docker then converts to 1,024 CPU shares. CPU values of 1 are passed to Docker as 1, which the Linux kernel converts to two CPU shares.\n + *Agent versions greater than or equal to 1.2.0:* Null, zero, and CPU values of 1 are passed to Docker as 2.\n + *Agent versions greater than or equal to 1.84.0:* CPU values greater than 256 vCPU are passed to Docker as 256, which is equivalent to 262144 CPU shares.\n \n On Windows container instances, the CPU limit is enforced as an absolute limit, or a quota. Windows containers only have access to the specified amount of CPU that's described in the task definition. A null or zero CPU value is passed to Docker as ``0``, which Windows interprets as 1% of one CPU.", + "type": "integer" + }, + "CredentialSpecs": { + "description": "A list of ARNs in SSM or Amazon S3 to a credential spec (``CredSpec``) file that configures the container for Active Directory authentication. We recommend that you use this parameter instead of the ``dockerSecurityOptions``. The maximum number of ARNs is 1.\n There are two formats for each ARN.\n + credentialspecdomainless:MyARN You use credentialspecdomainless:MyARN to provide a CredSpec with an additional section for a secret in . You provide the login credentials to the domain in the secret. Each task that runs on any container instance can join different domains. You can use this format without joining the container instance to a domain. + credentialspec:MyARN You use credentialspec:MyARN to provide a CredSpec for a single domain. You must join the container instance to the domain before you start any tasks that use this task definition. \n In both formats, replace ``MyARN`` with the ARN in SSM or Amazon S3.\n If you provide a ``credentialspecdomainless:MyARN``, the ``credspec`` must provide a ARN in ASMlong for a secret containing the username, password, and the domain to connect to. For better security, the instance isn't joined to the domain for domainless authentication. Other applications on the instance can't use the domainless credentials. You can use this parameter to run tasks on the same instance, even it the tasks need to join different domains. For more information, see [Using gMSAs for Windows Containers](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/windows-gmsa.html) and [Using gMSAs for Linux Containers](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/linux-gmsa.html).", + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array" + }, + "DependsOn": { + "description": "The dependencies defined for container startup and shutdown. A container can contain multiple dependencies. When a dependency is defined for container startup, for container shutdown it is reversed.\n For tasks using the EC2 launch type, the container instances require at least version 1.26.0 of the container agent to turn on container dependencies. However, we recommend using the latest container agent version. For information about checking your agent version and updating to the latest version, see [Updating the Amazon ECS Container Agent](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-agent-update.html) in the *Amazon Elastic Container Service Developer Guide*. If you're using an Amazon ECS-optimized Linux AMI, your instance needs at least version 1.26.0-1 of the ``ecs-init`` package. If your container instances are launched from version ``20190301`` or later, then they contain the required versions of the container agent and ``ecs-init``. For more information, see [Amazon ECS-optimized Linux AMI](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-optimized_AMI.html) in the *Amazon Elastic Container Service Developer Guide*.\n For tasks using the Fargate launch type, the task or service requires the following platforms:\n + Linux platform version ``1.3.0`` or later.\n + Windows platform version ``1.0.0`` or later.\n \n If the task definition is used in a blue/green deployment that uses [AWS::CodeDeploy::DeploymentGroup BlueGreenDeploymentConfiguration](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codedeploy-deploymentgroup-bluegreendeploymentconfiguration.html), the ``dependsOn`` parameter is not supported. For more information see [Issue #680](https://docs.aws.amazon.com/https://github.com/aws-cloudformation/cloudformation-coverage-roadmap/issues/680) on the on the GitHub website.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/ContainerDependency" + }, + "type": "array" + }, + "DisableNetworking": { + "description": "When this parameter is true, networking is off within the container. This parameter maps to ``NetworkDisabled`` in the docker container create command.\n This parameter is not supported for Windows containers.", + "type": "boolean" + }, + "DnsSearchDomains": { + "description": "A list of DNS search domains that are presented to the container. This parameter maps to ``DnsSearch`` in the docker container create command and the ``--dns-search`` option to docker run.\n This parameter is not supported for Windows containers.", + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array" + }, + "DnsServers": { + "description": "A list of DNS servers that are presented to the container. This parameter maps to ``Dns`` in the docker container create command and the ``--dns`` option to docker run.\n This parameter is not supported for Windows containers.", + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array" + }, + "DockerLabels": { + "additionalProperties": false, + "description": "A key/value map of labels to add to the container. This parameter maps to ``Labels`` in the docker container create command and the ``--label`` option to docker run. This parameter requires version 1.18 of the Docker Remote API or greater on your container instance. To check the Docker Remote API version on your container instance, log in to your container instance and run the following command: ``sudo docker version --format '{{.Server.APIVersion}}'``", + "patternProperties": { + ".{1,}": { + "type": "string" + } + }, + "type": "object" + }, + "DockerSecurityOptions": { + "description": "A list of strings to provide custom configuration for multiple security systems. This field isn't valid for containers in tasks using the Fargate launch type.\n For Linux tasks on EC2, this parameter can be used to reference custom labels for SELinux and AppArmor multi-level security systems.\n For any tasks on EC2, this parameter can be used to reference a credential spec file that configures a container for Active Directory authentication. For more information, see [Using gMSAs for Windows Containers](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/windows-gmsa.html) and [Using gMSAs for Linux Containers](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/linux-gmsa.html) in the *Amazon Elastic Container Service Developer Guide*.\n This parameter maps to ``SecurityOpt`` in the docker container create command and the ``--security-opt`` option to docker run.\n The Amazon ECS container agent running on a container instance must register with the ``ECS_SELINUX_CAPABLE=true`` or ``ECS_APPARMOR_CAPABLE=true`` environment variables before containers placed on that instance can use these security options. For more information, see [Amazon ECS Container Agent Configuration](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-agent-config.html) in the *Amazon Elastic Container Service Developer Guide*.\n Valid values: \"no-new-privileges\" | \"apparmor:PROFILE\" | \"label:value\" | \"credentialspec:CredentialSpecFilePath\"", + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array" + }, + "EntryPoint": { + "description": "Early versions of the Amazon ECS container agent don't properly handle ``entryPoint`` parameters. If you have problems using ``entryPoint``, update your container agent or enter your commands and arguments as ``command`` array items instead.\n The entry point that's passed to the container. This parameter maps to ``Entrypoint`` in the docker container create command and the ``--entrypoint`` option to docker run.", + "insertionOrder": true, + "items": { + "type": "string" + }, + "type": "array" + }, + "Environment": { + "description": "The environment variables to pass to a container. This parameter maps to ``Env`` in the docker container create command and the ``--env`` option to docker run.\n We don't recommend that you use plaintext environment variables for sensitive information, such as credential data.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/KeyValuePair" + }, + "type": "array", + "uniqueItems": true + }, + "EnvironmentFiles": { + "description": "A list of files containing the environment variables to pass to a container. This parameter maps to the ``--env-file`` option to docker run.\n You can specify up to ten environment files. The file must have a ``.env`` file extension. Each line in an environment file contains an environment variable in ``VARIABLE=VALUE`` format. Lines beginning with ``#`` are treated as comments and are ignored.\n If there are environment variables specified using the ``environment`` parameter in a container definition, they take precedence over the variables contained within an environment file. If multiple environment files are specified that contain the same variable, they're processed from the top down. We recommend that you use unique variable names. For more information, see [Specifying Environment Variables](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/taskdef-envfiles.html) in the *Amazon Elastic Container Service Developer Guide*.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/EnvironmentFile" + }, + "type": "array" + }, + "Essential": { + "description": "If the ``essential`` parameter of a container is marked as ``true``, and that container fails or stops for any reason, all other containers that are part of the task are stopped. If the ``essential`` parameter of a container is marked as ``false``, its failure doesn't affect the rest of the containers in a task. If this parameter is omitted, a container is assumed to be essential.\n All tasks must have at least one essential container. If you have an application that's composed of multiple containers, group containers that are used for a common purpose into components, and separate the different components into multiple task definitions. For more information, see [Application Architecture](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/application_architecture.html) in the *Amazon Elastic Container Service Developer Guide*.", + "type": "boolean" + }, + "ExtraHosts": { + "description": "A list of hostnames and IP address mappings to append to the ``/etc/hosts`` file on the container. This parameter maps to ``ExtraHosts`` in the docker container create command and the ``--add-host`` option to docker run.\n This parameter isn't supported for Windows containers or tasks that use the ``awsvpc`` network mode.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/HostEntry" + }, + "type": "array" + }, + "FirelensConfiguration": { + "$ref": "#/definitions/FirelensConfiguration", + "description": "The FireLens configuration for the container. This is used to specify and configure a log router for container logs. For more information, see [Custom Log Routing](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/using_firelens.html) in the *Amazon Elastic Container Service Developer Guide*." + }, + "HealthCheck": { + "$ref": "#/definitions/HealthCheck", + "description": "The container health check command and associated configuration parameters for the container. This parameter maps to ``HealthCheck`` in the docker container create command and the ``HEALTHCHECK`` parameter of docker run." + }, + "Hostname": { + "description": "The hostname to use for your container. This parameter maps to ``Hostname`` in the docker container create command and the ``--hostname`` option to docker run.\n The ``hostname`` parameter is not supported if you're using the ``awsvpc`` network mode.", + "type": "string" + }, + "Image": { + "description": "The image used to start a container. This string is passed directly to the Docker daemon. By default, images in the Docker Hub registry are available. Other repositories are specified with either ``repository-url/image:tag`` or ``repository-url/image@digest``. Up to 255 letters (uppercase and lowercase), numbers, hyphens, underscores, colons, periods, forward slashes, and number signs are allowed. This parameter maps to ``Image`` in the docker container create command and the ``IMAGE`` parameter of docker run.\n + When a new task starts, the Amazon ECS container agent pulls the latest version of the specified image and tag for the container to use. However, subsequent updates to a repository image aren't propagated to already running tasks.\n + Images in Amazon ECR repositories can be specified by either using the full ``registry/repository:tag`` or ``registry/repository@digest``. For example, ``012345678910.dkr.ecr.The ingest domain URL where the source stream should be sent.
", + "properties": { + "Id": { + "description": "The system-generated unique identifier for the IngestEndpoint.
", + "type": "string" + }, + "Url": { + "description": "The ingest domain URL where the source stream should be sent.
", + "type": "string" + } + }, + "type": "object" + }, + "InputSwitchConfiguration": { + "additionalProperties": false, + "description": "The configuration for input switching based on the media quality confidence score (MQCS) as provided from AWS Elemental MediaLive.
", + "properties": { + "MQCSInputSwitching": { + "description": "When true, AWS Elemental MediaPackage performs input switching based on the MQCS. Default is true. This setting is valid only when InputType is CMAF.
The settings for what common media server data (CMSD) headers AWS Elemental MediaPackage includes in responses to the CDN.
", + "properties": { + "PublishMQCS": { + "description": "When true, AWS Elemental MediaPackage includes the MQCS in responses to the CDN. This setting is valid only when InputType is CMAF.
Represents an entry point into AWS Elemental MediaPackage for an ABR video content stream sent from an upstream encoder such as AWS Elemental MediaLive. The channel continuously analyzes the content that it receives and prepares it to be distributed to consumers via one or more origin endpoints.
", + "handlers": { + "create": { + "permissions": [ + "mediapackagev2:TagResource", + "mediapackagev2:CreateChannel" + ] + }, + "delete": { + "permissions": [ + "mediapackagev2:GetChannel", + "mediapackagev2:DeleteChannel" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "ChannelGroupName": { + "$ref": "resource-schema.json#/properties/ChannelGroupName" + } + }, + "required": [ + "ChannelGroupName" + ] + }, + "permissions": [ + "mediapackagev2:ListChannels" + ] + }, + "read": { + "permissions": [ + "mediapackagev2:GetChannel" + ] + }, + "update": { + "permissions": [ + "mediapackagev2:TagResource", + "mediapackagev2:UntagResource", + "mediapackagev2:ListTagsForResource", + "mediapackagev2:UpdateChannel" + ] + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "Arn": { + "description": "The Amazon Resource Name (ARN) associated with the resource.
", + "type": "string" + }, + "ChannelGroupName": { + "maxLength": 256, + "minLength": 1, + "pattern": "^[a-zA-Z0-9_-]+$", + "type": "string" + }, + "ChannelName": { + "maxLength": 256, + "minLength": 1, + "pattern": "^[a-zA-Z0-9_-]+$", + "type": "string" + }, + "CreatedAt": { + "description": "The date and time the channel was created.
", + "format": "date-time", + "type": "string" + }, + "Description": { + "description": "Enter any descriptive text that helps you to identify the channel.
", + "maxLength": 1024, + "minLength": 0, + "type": "string" + }, + "IngestEndpointUrls": { + "items": { + "type": "string" + }, + "type": "array" + }, + "IngestEndpoints": { + "description": "The list of ingest endpoints.
", + "items": { + "$ref": "#/definitions/IngestEndpoint" + }, + "type": "array" + }, + "InputSwitchConfiguration": { + "$ref": "#/definitions/InputSwitchConfiguration" + }, + "InputType": { + "$ref": "#/definitions/InputType" + }, + "ModifiedAt": { + "description": "The date and time the channel was modified.
", + "format": "date-time", + "type": "string" + }, + "OutputHeaderConfiguration": { + "$ref": "#/definitions/OutputHeaderConfiguration" + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array" + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/CreatedAt", + "/properties/IngestEndpoints", + "/properties/IngestEndpointUrls", + "/properties/ModifiedAt" + ], + "required": [ + "ChannelGroupName", + "ChannelName" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-mediapackagev2", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "mediapackagev2:TagResource", + "mediapackagev2:UntagResource", + "mediapackagev2:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::MediaPackageV2::Channel" +} diff --git a/src/schema/aws-mediapackagev2-channelgroup.json b/src/schema/aws-mediapackagev2-channelgroup.json new file mode 100644 index 00000000..478bb3bc --- /dev/null +++ b/src/schema/aws-mediapackagev2-channelgroup.json @@ -0,0 +1,123 @@ +{ + "additionalIdentifiers": [ + [ + "/properties/ChannelGroupName" + ] + ], + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ChannelGroupName" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "type": "object" + } + }, + "description": "Represents a channel group that facilitates the grouping of multiple channels.
", + "handlers": { + "create": { + "permissions": [ + "mediapackagev2:TagResource", + "mediapackagev2:CreateChannelGroup" + ] + }, + "delete": { + "permissions": [ + "mediapackagev2:GetChannelGroup", + "mediapackagev2:DeleteChannelGroup" + ] + }, + "list": { + "permissions": [ + "mediapackagev2:ListChannelGroups" + ] + }, + "read": { + "permissions": [ + "mediapackagev2:GetChannelGroup" + ] + }, + "update": { + "permissions": [ + "mediapackagev2:TagResource", + "mediapackagev2:UntagResource", + "mediapackagev2:ListTagsForResource", + "mediapackagev2:UpdateChannelGroup" + ] + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "Arn": { + "description": "The Amazon Resource Name (ARN) associated with the resource.
", + "type": "string" + }, + "ChannelGroupName": { + "maxLength": 256, + "minLength": 1, + "pattern": "^[a-zA-Z0-9_-]+$", + "type": "string" + }, + "CreatedAt": { + "description": "The date and time the channel group was created.
", + "format": "date-time", + "type": "string" + }, + "Description": { + "description": "Enter any descriptive text that helps you to identify the channel group.
", + "maxLength": 1024, + "minLength": 0, + "type": "string" + }, + "EgressDomain": { + "description": "The output domain where the source stream should be sent. Integrate the domain with a downstream CDN (such as Amazon CloudFront) or playback device.
", + "type": "string" + }, + "ModifiedAt": { + "description": "The date and time the channel group was modified.
", + "format": "date-time", + "type": "string" + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array" + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/CreatedAt", + "/properties/EgressDomain", + "/properties/ModifiedAt" + ], + "required": [ + "ChannelGroupName" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-mediapackagev2", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "mediapackagev2:TagResource", + "mediapackagev2:UntagResource", + "mediapackagev2:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::MediaPackageV2::ChannelGroup" +} diff --git a/src/schema/aws-mediapackagev2-channelpolicy.json b/src/schema/aws-mediapackagev2-channelpolicy.json new file mode 100644 index 00000000..04204027 --- /dev/null +++ b/src/schema/aws-mediapackagev2-channelpolicy.json @@ -0,0 +1,70 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ChannelGroupName", + "/properties/ChannelName" + ], + "description": "Represents a resource-based policy that allows or denies access to a channel.
", + "handlers": { + "create": { + "permissions": [ + "mediapackagev2:GetChannelPolicy", + "mediapackagev2:PutChannelPolicy" + ] + }, + "delete": { + "permissions": [ + "mediapackagev2:GetChannelPolicy", + "mediapackagev2:DeleteChannelPolicy" + ] + }, + "read": { + "permissions": [ + "mediapackagev2:GetChannelPolicy" + ] + }, + "update": { + "permissions": [ + "mediapackagev2:GetChannelPolicy", + "mediapackagev2:PutChannelPolicy" + ] + } + }, + "primaryIdentifier": [ + "/properties/ChannelGroupName", + "/properties/ChannelName" + ], + "properties": { + "ChannelGroupName": { + "maxLength": 256, + "minLength": 1, + "pattern": "^[a-zA-Z0-9_-]+$", + "type": "string" + }, + "ChannelName": { + "maxLength": 256, + "minLength": 1, + "pattern": "^[a-zA-Z0-9_-]+$", + "type": "string" + }, + "Policy": { + "type": [ + "object", + "string" + ] + } + }, + "required": [ + "ChannelGroupName", + "ChannelName", + "Policy" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-mediapackagev2", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::MediaPackageV2::ChannelPolicy" +} diff --git a/src/schema/aws-mediapackagev2-originendpoint.json b/src/schema/aws-mediapackagev2-originendpoint.json new file mode 100644 index 00000000..eba923e4 --- /dev/null +++ b/src/schema/aws-mediapackagev2-originendpoint.json @@ -0,0 +1,752 @@ +{ + "additionalIdentifiers": [ + [ + "/properties/ChannelGroupName", + "/properties/ChannelName", + "/properties/OriginEndpointName" + ] + ], + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ChannelGroupName", + "/properties/ChannelName", + "/properties/OriginEndpointName" + ], + "definitions": { + "AdMarkerDash": { + "enum": [ + "BINARY", + "XML" + ], + "type": "string" + }, + "AdMarkerHls": { + "enum": [ + "DATERANGE" + ], + "type": "string" + }, + "CmafEncryptionMethod": { + "enum": [ + "CENC", + "CBCS" + ], + "type": "string" + }, + "ContainerType": { + "enum": [ + "TS", + "CMAF" + ], + "type": "string" + }, + "DashDrmSignaling": { + "enum": [ + "INDIVIDUAL", + "REFERENCED" + ], + "type": "string" + }, + "DashManifestConfiguration": { + "additionalProperties": false, + "description": "Retrieve the DASH manifest configuration.
", + "properties": { + "DrmSignaling": { + "$ref": "#/definitions/DashDrmSignaling" + }, + "FilterConfiguration": { + "$ref": "#/definitions/FilterConfiguration" + }, + "ManifestName": { + "description": "A short string that's appended to the endpoint URL. The manifest name creates a unique path to this endpoint. If you don't enter a value, MediaPackage uses the default manifest name, index.
", + "maxLength": 256, + "minLength": 1, + "pattern": "^[a-zA-Z0-9_-]+$", + "type": "string" + }, + "ManifestWindowSeconds": { + "description": "The total duration (in seconds) of the manifest's content.
", + "type": "integer" + }, + "MinBufferTimeSeconds": { + "description": "Minimum amount of content (in seconds) that a player must keep available in the buffer.
", + "type": "integer" + }, + "MinUpdatePeriodSeconds": { + "description": "Minimum amount of time (in seconds) that the player should wait before requesting updates to the manifest.
", + "type": "integer" + }, + "PeriodTriggers": { + "description": "A list of triggers that controls when AWS Elemental MediaPackage separates the MPEG-DASH manifest into multiple periods. Leave this value empty to indicate that the manifest is contained all in one period.\n For more information about periods in the DASH manifest, see Multi-period DASH in AWS Elemental MediaPackage.
", + "items": { + "$ref": "#/definitions/DashPeriodTrigger" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + }, + "ScteDash": { + "$ref": "#/definitions/ScteDash" + }, + "SegmentTemplateFormat": { + "$ref": "#/definitions/DashSegmentTemplateFormat" + }, + "SuggestedPresentationDelaySeconds": { + "description": "The amount of time (in seconds) that the player should be from the end of the manifest.
", + "type": "integer" + }, + "UtcTiming": { + "$ref": "#/definitions/DashUtcTiming" + } + }, + "required": [ + "ManifestName" + ], + "type": "object" + }, + "DashPeriodTrigger": { + "enum": [ + "AVAILS", + "DRM_KEY_ROTATION", + "SOURCE_CHANGES", + "SOURCE_DISRUPTIONS", + "NONE" + ], + "type": "string" + }, + "DashSegmentTemplateFormat": { + "enum": [ + "NUMBER_WITH_TIMELINE" + ], + "type": "string" + }, + "DashUtcTiming": { + "additionalProperties": false, + "description": "Determines the type of UTC timing included in the DASH Media Presentation Description (MPD).
", + "properties": { + "TimingMode": { + "$ref": "#/definitions/DashUtcTimingMode" + }, + "TimingSource": { + "description": "The the method that the player uses to synchronize to coordinated universal time (UTC) wall clock time.
", + "maxLength": 1024, + "minLength": 1, + "type": "string" + } + }, + "type": "object" + }, + "DashUtcTimingMode": { + "enum": [ + "HTTP_HEAD", + "HTTP_ISO", + "HTTP_XSDATE", + "UTC_DIRECT" + ], + "type": "string" + }, + "DrmSystem": { + "enum": [ + "CLEAR_KEY_AES_128", + "FAIRPLAY", + "PLAYREADY", + "WIDEVINE", + "IRDETO" + ], + "type": "string" + }, + "Encryption": { + "additionalProperties": false, + "description": "The parameters for encrypting content.
", + "properties": { + "ConstantInitializationVector": { + "description": "A 128-bit, 16-byte hex value represented by a 32-character string, used in conjunction with the key for encrypting content. If you don't specify a value, then MediaPackage creates the constant initialization vector (IV).
", + "maxLength": 32, + "minLength": 32, + "pattern": "^[0-9a-fA-F]+$", + "type": "string" + }, + "EncryptionMethod": { + "$ref": "#/definitions/EncryptionMethod" + }, + "KeyRotationIntervalSeconds": { + "description": "The frequency (in seconds) of key changes for live workflows, in which content is streamed real time. The service retrieves content keys before the live content begins streaming, and then retrieves them as needed over the lifetime of the workflow. By default, key rotation is set to 300 seconds (5 minutes), the minimum rotation interval, which is equivalent to setting it to 300. If you don't enter an interval, content keys aren't rotated.
\nThe following example setting causes the service to rotate keys every thirty minutes: 1800\n
Configure one or more content encryption keys for your endpoints that use SPEKE Version 2.0. The encryption contract defines which content keys are used to encrypt the audio and video tracks in your stream. To configure the encryption contract, specify which audio and video encryption presets to use.
", + "properties": { + "PresetSpeke20Audio": { + "$ref": "#/definitions/PresetSpeke20Audio" + }, + "PresetSpeke20Video": { + "$ref": "#/definitions/PresetSpeke20Video" + } + }, + "required": [ + "PresetSpeke20Audio", + "PresetSpeke20Video" + ], + "type": "object" + }, + "EncryptionMethod": { + "additionalProperties": false, + "description": "The encryption type.
", + "properties": { + "CmafEncryptionMethod": { + "$ref": "#/definitions/CmafEncryptionMethod" + }, + "TsEncryptionMethod": { + "$ref": "#/definitions/TsEncryptionMethod" + } + }, + "type": "object" + }, + "EndpointErrorCondition": { + "enum": [ + "STALE_MANIFEST", + "INCOMPLETE_MANIFEST", + "MISSING_DRM_KEY", + "SLATE_INPUT" + ], + "type": "string" + }, + "FilterConfiguration": { + "additionalProperties": false, + "description": "Filter configuration includes settings for manifest filtering, start and end times, and time delay that apply to all of your egress requests for this manifest.
", + "properties": { + "ClipStartTime": { + "description": "Optionally specify the clip start time for all of your manifest egress requests. When you include clip start time, note that you cannot use clip start time query parameters for this manifest's endpoint URL.
", + "format": "date-time", + "type": "string" + }, + "End": { + "description": "Optionally specify the end time for all of your manifest egress requests. When you include end time, note that you cannot use end time query parameters for this manifest's endpoint URL.
", + "format": "date-time", + "type": "string" + }, + "ManifestFilter": { + "description": "Optionally specify one or more manifest filters for all of your manifest egress requests. When you include a manifest filter, note that you cannot use an identical manifest filter query parameter for this manifest's endpoint URL.
", + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "Start": { + "description": "Optionally specify the start time for all of your manifest egress requests. When you include start time, note that you cannot use start time query parameters for this manifest's endpoint URL.
", + "format": "date-time", + "type": "string" + }, + "TimeDelaySeconds": { + "description": "Optionally specify the time delay for all of your manifest egress requests. Enter a value that is smaller than your endpoint's startover window. When you include time delay, note that you cannot use time delay query parameters for this manifest's endpoint URL.
", + "maximum": 1209600, + "minimum": 0, + "type": "integer" + } + }, + "type": "object" + }, + "ForceEndpointErrorConfiguration": { + "additionalProperties": false, + "description": "The failover settings for the endpoint.
", + "properties": { + "EndpointErrorConditions": { + "description": "The failover conditions for the endpoint. The options are:
\n\n STALE_MANIFEST - The manifest stalled and there are no new segments or parts.
\n INCOMPLETE_MANIFEST - There is a gap in the manifest.
\n MISSING_DRM_KEY - Key rotation is enabled but we're unable to fetch the key for the current key period.
\n SLATE_INPUT - The segments which contain slate content are considered to be missing content.
Retrieve the HTTP live streaming (HLS) manifest configuration.
", + "properties": { + "ChildManifestName": { + "description": "A short string that's appended to the endpoint URL. The child manifest name creates a unique path to this endpoint. If you don't enter a value, MediaPackage uses the default child manifest name, index_1. The manifestName on the HLSManifest object overrides the manifestName you provided on the originEndpoint object.
", + "maxLength": 256, + "minLength": 1, + "pattern": "^[a-zA-Z0-9_-]+$", + "type": "string" + }, + "FilterConfiguration": { + "$ref": "#/definitions/FilterConfiguration" + }, + "ManifestName": { + "description": "A short short string that's appended to the endpoint URL. The manifest name creates a unique path to this endpoint. If you don't enter a value, MediaPackage uses the default manifest name, index. MediaPackage automatically inserts the format extension, such as .m3u8. You can't use the same manifest name if you use HLS manifest and low-latency HLS manifest. The manifestName on the HLSManifest object overrides the manifestName you provided on the originEndpoint object.
", + "maxLength": 256, + "minLength": 1, + "pattern": "^[a-zA-Z0-9_-]+$", + "type": "string" + }, + "ManifestWindowSeconds": { + "description": "The total duration (in seconds) of the manifest's content.
", + "type": "integer" + }, + "ProgramDateTimeIntervalSeconds": { + "description": "Inserts EXT-X-PROGRAM-DATE-TIME tags in the output manifest at the interval that you specify. If you don't enter an interval,\n EXT-X-PROGRAM-DATE-TIME tags aren't included in the manifest.\n The tags sync the stream to the wall clock so that viewers can seek to a specific time in the playback timeline on the player.
\nIrrespective of this parameter, if any ID3Timed metadata is in the HLS input, it is passed through to the HLS output.
", + "type": "integer" + }, + "ScteHls": { + "$ref": "#/definitions/ScteHls" + }, + "StartTag": { + "$ref": "#/definitions/StartTag" + }, + "Url": { + "description": "The egress domain URL for stream delivery from MediaPackage.
", + "type": "string" + }, + "UrlEncodeChildManifest": { + "description": "When enabled, MediaPackage URL-encodes the query string for API requests for HLS child manifests to comply with Amazon Web Services Signature Version 4 (SigV4) signature signing protocol.\n For more information, see Amazon Web Services Signature Version 4 for API requests in Identity and Access Management User Guide.
", + "type": "boolean" + } + }, + "required": [ + "ManifestName" + ], + "type": "object" + }, + "LowLatencyHlsManifestConfiguration": { + "additionalProperties": false, + "description": "Retrieve the low-latency HTTP live streaming (HLS) manifest configuration.
", + "properties": { + "ChildManifestName": { + "description": "A short string that's appended to the endpoint URL. The child manifest name creates a unique path to this endpoint. If you don't enter a value, MediaPackage uses the default child manifest name, index_1. The manifestName on the HLSManifest object overrides the manifestName you provided on the originEndpoint object.
", + "maxLength": 256, + "minLength": 1, + "pattern": "^[a-zA-Z0-9_-]+$", + "type": "string" + }, + "FilterConfiguration": { + "$ref": "#/definitions/FilterConfiguration" + }, + "ManifestName": { + "description": "A short short string that's appended to the endpoint URL. The manifest name creates a unique path to this endpoint. If you don't enter a value, MediaPackage uses the default manifest name, index. MediaPackage automatically inserts the format extension, such as .m3u8. You can't use the same manifest name if you use HLS manifest and low-latency HLS manifest. The manifestName on the HLSManifest object overrides the manifestName you provided on the originEndpoint object.
", + "maxLength": 256, + "minLength": 1, + "pattern": "^[a-zA-Z0-9_-]+$", + "type": "string" + }, + "ManifestWindowSeconds": { + "description": "The total duration (in seconds) of the manifest's content.
", + "type": "integer" + }, + "ProgramDateTimeIntervalSeconds": { + "description": "Inserts EXT-X-PROGRAM-DATE-TIME tags in the output manifest at the interval that you specify. If you don't enter an interval,\n EXT-X-PROGRAM-DATE-TIME tags aren't included in the manifest.\n The tags sync the stream to the wall clock so that viewers can seek to a specific time in the playback timeline on the player.
\nIrrespective of this parameter, if any ID3Timed metadata is in the HLS input, it is passed through to the HLS output.
", + "type": "integer" + }, + "ScteHls": { + "$ref": "#/definitions/ScteHls" + }, + "StartTag": { + "$ref": "#/definitions/StartTag" + }, + "Url": { + "description": "The egress domain URL for stream delivery from MediaPackage.
", + "type": "string" + }, + "UrlEncodeChildManifest": { + "description": "When enabled, MediaPackage URL-encodes the query string for API requests for LL-HLS child manifests to comply with Amazon Web Services Signature Version 4 (SigV4) signature signing protocol.\n For more information, see Amazon Web Services Signature Version 4 for API requests in Identity and Access Management User Guide.
", + "type": "boolean" + } + }, + "required": [ + "ManifestName" + ], + "type": "object" + }, + "PresetSpeke20Audio": { + "enum": [ + "PRESET_AUDIO_1", + "PRESET_AUDIO_2", + "PRESET_AUDIO_3", + "SHARED", + "UNENCRYPTED" + ], + "type": "string" + }, + "PresetSpeke20Video": { + "enum": [ + "PRESET_VIDEO_1", + "PRESET_VIDEO_2", + "PRESET_VIDEO_3", + "PRESET_VIDEO_4", + "PRESET_VIDEO_5", + "PRESET_VIDEO_6", + "PRESET_VIDEO_7", + "PRESET_VIDEO_8", + "SHARED", + "UNENCRYPTED" + ], + "type": "string" + }, + "Scte": { + "additionalProperties": false, + "description": "The SCTE configuration.
", + "properties": { + "ScteFilter": { + "description": "The SCTE-35 message types that you want to be treated as ad markers in the output.
", + "items": { + "$ref": "#/definitions/ScteFilter" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "ScteDash": { + "additionalProperties": false, + "description": "The SCTE configuration.
", + "properties": { + "AdMarkerDash": { + "$ref": "#/definitions/AdMarkerDash" + } + }, + "type": "object" + }, + "ScteFilter": { + "enum": [ + "SPLICE_INSERT", + "BREAK", + "PROVIDER_ADVERTISEMENT", + "DISTRIBUTOR_ADVERTISEMENT", + "PROVIDER_PLACEMENT_OPPORTUNITY", + "DISTRIBUTOR_PLACEMENT_OPPORTUNITY", + "PROVIDER_OVERLAY_PLACEMENT_OPPORTUNITY", + "DISTRIBUTOR_OVERLAY_PLACEMENT_OPPORTUNITY", + "PROGRAM" + ], + "type": "string" + }, + "ScteHls": { + "additionalProperties": false, + "description": "The SCTE configuration.
", + "properties": { + "AdMarkerHls": { + "$ref": "#/definitions/AdMarkerHls" + } + }, + "type": "object" + }, + "Segment": { + "additionalProperties": false, + "description": "The segment configuration, including the segment name, duration, and other configuration values.
", + "properties": { + "Encryption": { + "$ref": "#/definitions/Encryption" + }, + "IncludeIframeOnlyStreams": { + "description": "When selected, the stream set includes an additional I-frame only stream, along with the other tracks. If false, this extra stream is not included. MediaPackage generates an I-frame only stream from the first rendition in the manifest. The service inserts EXT-I-FRAMES-ONLY tags in the output manifest, and then generates and includes an I-frames only playlist in the stream. This playlist permits player functionality like fast forward and rewind.
", + "type": "boolean" + }, + "Scte": { + "$ref": "#/definitions/Scte" + }, + "SegmentDurationSeconds": { + "description": "The duration (in seconds) of each segment. Enter a value equal to, or a multiple of, the input segment duration. If the value that you enter is different from the input segment duration, MediaPackage rounds segments to the nearest multiple of the input segment duration.
", + "maximum": 30, + "minimum": 1, + "type": "integer" + }, + "SegmentName": { + "description": "The name that describes the segment. The name is the base name of the segment used in all content manifests inside of the endpoint. You can't use spaces in the name.
", + "maxLength": 256, + "minLength": 1, + "pattern": "^[a-zA-Z0-9_-]+$", + "type": "string" + }, + "TsIncludeDvbSubtitles": { + "description": "By default, MediaPackage excludes all digital video broadcasting (DVB) subtitles from the output. When selected, MediaPackage passes through DVB subtitles into the output.
", + "type": "boolean" + }, + "TsUseAudioRenditionGroup": { + "description": "When selected, MediaPackage bundles all audio tracks in a rendition group. All other tracks in the stream can be used with any audio rendition from the group.
", + "type": "boolean" + } + }, + "type": "object" + }, + "SpekeKeyProvider": { + "additionalProperties": false, + "description": "The parameters for the SPEKE key provider.
", + "properties": { + "DrmSystems": { + "description": "The DRM solution provider you're using to protect your content during distribution.
", + "items": { + "$ref": "#/definitions/DrmSystem" + }, + "maxItems": 4, + "minItems": 1, + "type": "array" + }, + "EncryptionContractConfiguration": { + "$ref": "#/definitions/EncryptionContractConfiguration" + }, + "ResourceId": { + "description": "The unique identifier for the content. The service sends this to the key server to identify the current endpoint. How unique you make this depends on how fine-grained you want access controls to be. The service does not permit you to use the same ID for two simultaneous encryption processes. The resource ID is also known as the content ID.
\nThe following example shows a resource ID: MovieNight20171126093045\n
The ARN for the IAM role granted by the key provider that provides access to the key provider API. This role must have a trust policy that allows MediaPackage to assume the role, and it must have a sufficient permissions policy to allow access to the specific key retrieval URL. Get this from your DRM solution provider.
\nValid format: arn:aws:iam::{accountID}:role/{name}. The following example shows a role ARN: arn:aws:iam::444455556666:role/SpekeAccess\n
The URL of the API Gateway proxy that you set up to talk to your key server. The API Gateway proxy must reside in the same AWS Region as MediaPackage and must start with https://.
\nThe following example shows a URL: https://1wm2dx1f33.execute-api.us-west-2.amazonaws.com/SpekeSample/copyProtection\n
To insert an EXT-X-START tag in your HLS playlist, specify a StartTag configuration object with a valid TimeOffset. When you do, you can also optionally specify whether to include a PRECISE value in the EXT-X-START tag.
", + "properties": { + "Precise": { + "description": "Specify the value for PRECISE within your EXT-X-START tag. Leave blank, or choose false, to use the default value NO. Choose yes to use the value YES.
", + "type": "boolean" + }, + "TimeOffset": { + "description": "Specify the value for TIME-OFFSET within your EXT-X-START tag. Enter a signed floating point value which, if positive, must be less than the configured manifest duration minus three times the configured segment target duration. If negative, the absolute value must be larger than three times the configured segment target duration, and the absolute value must be smaller than the configured manifest duration.
", + "type": "number" + } + }, + "required": [ + "TimeOffset" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "type": "object" + }, + "TsEncryptionMethod": { + "enum": [ + "AES_128", + "SAMPLE_AES" + ], + "type": "string" + } + }, + "description": "Represents an origin endpoint that is associated with a channel, offering a dynamically repackaged version of its content through various streaming media protocols. The content can be efficiently disseminated to end-users via a Content Delivery Network (CDN), like Amazon CloudFront.
", + "handlers": { + "create": { + "permissions": [ + "mediapackagev2:TagResource", + "mediapackagev2:CreateOriginEndpoint", + "iam:PassRole" + ] + }, + "delete": { + "permissions": [ + "mediapackagev2:GetOriginEndpoint", + "mediapackagev2:DeleteOriginEndpoint" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "ChannelGroupName": { + "$ref": "resource-schema.json#/properties/ChannelGroupName" + }, + "ChannelName": { + "$ref": "resource-schema.json#/properties/ChannelName" + } + }, + "required": [ + "ChannelGroupName", + "ChannelName" + ] + }, + "permissions": [ + "mediapackagev2:ListOriginEndpoints" + ] + }, + "read": { + "permissions": [ + "mediapackagev2:GetOriginEndpoint" + ] + }, + "update": { + "permissions": [ + "mediapackagev2:TagResource", + "mediapackagev2:UntagResource", + "mediapackagev2:ListTagsForResource", + "mediapackagev2:UpdateOriginEndpoint", + "iam:PassRole" + ] + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "Arn": { + "description": "The Amazon Resource Name (ARN) associated with the resource.
", + "type": "string" + }, + "ChannelGroupName": { + "maxLength": 256, + "minLength": 1, + "pattern": "^[a-zA-Z0-9_-]+$", + "type": "string" + }, + "ChannelName": { + "maxLength": 256, + "minLength": 1, + "pattern": "^[a-zA-Z0-9_-]+$", + "type": "string" + }, + "ContainerType": { + "$ref": "#/definitions/ContainerType" + }, + "CreatedAt": { + "description": "The date and time the origin endpoint was created.
", + "format": "date-time", + "type": "string" + }, + "DashManifestUrls": { + "items": { + "type": "string" + }, + "type": "array" + }, + "DashManifests": { + "description": "A DASH manifest configuration.
", + "items": { + "$ref": "#/definitions/DashManifestConfiguration" + }, + "type": "array" + }, + "Description": { + "description": "Enter any descriptive text that helps you to identify the origin endpoint.
", + "maxLength": 1024, + "minLength": 0, + "type": "string" + }, + "ForceEndpointErrorConfiguration": { + "$ref": "#/definitions/ForceEndpointErrorConfiguration" + }, + "HlsManifestUrls": { + "items": { + "type": "string" + }, + "type": "array" + }, + "HlsManifests": { + "description": "An HTTP live streaming (HLS) manifest configuration.
", + "items": { + "$ref": "#/definitions/HlsManifestConfiguration" + }, + "type": "array" + }, + "LowLatencyHlsManifestUrls": { + "items": { + "type": "string" + }, + "type": "array" + }, + "LowLatencyHlsManifests": { + "description": "A low-latency HLS manifest configuration.
", + "items": { + "$ref": "#/definitions/LowLatencyHlsManifestConfiguration" + }, + "type": "array" + }, + "ModifiedAt": { + "description": "The date and time the origin endpoint was modified.
", + "format": "date-time", + "type": "string" + }, + "OriginEndpointName": { + "maxLength": 256, + "minLength": 1, + "pattern": "^[a-zA-Z0-9_-]+$", + "type": "string" + }, + "Segment": { + "$ref": "#/definitions/Segment" + }, + "StartoverWindowSeconds": { + "description": "The size of the window (in seconds) to create a window of the live stream that's available for on-demand viewing. Viewers can start-over or catch-up on content that falls within the window. The maximum startover window is 1,209,600 seconds (14 days).
", + "maximum": 1209600, + "minimum": 60, + "type": "integer" + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array" + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/CreatedAt", + "/properties/DashManifestUrls", + "/properties/HlsManifestUrls", + "/properties/LowLatencyHlsManifestUrls", + "/properties/ModifiedAt", + "/properties/LowLatencyHlsManifests/*/Url", + "/properties/HlsManifests/*/Url" + ], + "required": [ + "ChannelGroupName", + "ChannelName", + "OriginEndpointName", + "ContainerType" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-mediapackagev2", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "mediapackagev2:TagResource", + "mediapackagev2:UntagResource", + "mediapackagev2:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::MediaPackageV2::OriginEndpoint" +} diff --git a/src/schema/aws-mediapackagev2-originendpointpolicy.json b/src/schema/aws-mediapackagev2-originendpointpolicy.json new file mode 100644 index 00000000..decdfb39 --- /dev/null +++ b/src/schema/aws-mediapackagev2-originendpointpolicy.json @@ -0,0 +1,79 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ChannelGroupName", + "/properties/ChannelName", + "/properties/OriginEndpointName" + ], + "description": "Represents a resource policy that allows or denies access to an origin endpoint.
", + "handlers": { + "create": { + "permissions": [ + "mediapackagev2:GetOriginEndpointPolicy", + "mediapackagev2:PutOriginEndpointPolicy" + ] + }, + "delete": { + "permissions": [ + "mediapackagev2:GetOriginEndpointPolicy", + "mediapackagev2:DeleteOriginEndpointPolicy" + ] + }, + "read": { + "permissions": [ + "mediapackagev2:GetOriginEndpointPolicy" + ] + }, + "update": { + "permissions": [ + "mediapackagev2:GetOriginEndpointPolicy", + "mediapackagev2:PutOriginEndpointPolicy" + ] + } + }, + "primaryIdentifier": [ + "/properties/ChannelGroupName", + "/properties/ChannelName", + "/properties/OriginEndpointName" + ], + "properties": { + "ChannelGroupName": { + "maxLength": 256, + "minLength": 1, + "pattern": "^[a-zA-Z0-9_-]+$", + "type": "string" + }, + "ChannelName": { + "maxLength": 256, + "minLength": 1, + "pattern": "^[a-zA-Z0-9_-]+$", + "type": "string" + }, + "OriginEndpointName": { + "maxLength": 256, + "minLength": 1, + "pattern": "^[a-zA-Z0-9_-]+$", + "type": "string" + }, + "Policy": { + "type": [ + "object", + "string" + ] + } + }, + "required": [ + "ChannelGroupName", + "ChannelName", + "OriginEndpointName", + "Policy" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-mediapackagev2", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::MediaPackageV2::OriginEndpointPolicy" +} diff --git a/src/schema/aws-mediastore-container.json b/src/schema/aws-mediastore-container.json new file mode 100644 index 00000000..5c964da1 --- /dev/null +++ b/src/schema/aws-mediastore-container.json @@ -0,0 +1,145 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ContainerName" + ], + "definitions": { + "CorsRule": { + "additionalProperties": false, + "properties": { + "AllowedHeaders": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "AllowedMethods": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "AllowedOrigins": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "ExposeHeaders": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "MaxAgeSeconds": { + "type": "integer" + } + }, + "type": "object" + }, + "MetricPolicy": { + "additionalProperties": false, + "properties": { + "ContainerLevelMetrics": { + "type": "string" + }, + "MetricPolicyRules": { + "items": { + "$ref": "#/definitions/MetricPolicyRule" + }, + "type": "array", + "uniqueItems": false + } + }, + "required": [ + "ContainerLevelMetrics" + ], + "type": "object" + }, + "MetricPolicyRule": { + "additionalProperties": false, + "properties": { + "ObjectGroup": { + "type": "string" + }, + "ObjectGroupName": { + "type": "string" + } + }, + "required": [ + "ObjectGroup", + "ObjectGroupName" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::MediaStore::Container", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "AccessLoggingEnabled": { + "type": "boolean" + }, + "ContainerName": { + "type": "string" + }, + "CorsPolicy": { + "items": { + "$ref": "#/definitions/CorsRule" + }, + "type": "array", + "uniqueItems": false + }, + "Endpoint": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "LifecyclePolicy": { + "type": "string" + }, + "MetricPolicy": { + "$ref": "#/definitions/MetricPolicy" + }, + "Policy": { + "type": "string" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + } + }, + "readOnlyProperties": [ + "/properties/Id", + "/properties/Endpoint" + ], + "required": [ + "ContainerName" + ], + "typeName": "AWS::MediaStore::Container" +} diff --git a/src/schema/aws-mediatailor-channel.json b/src/schema/aws-mediatailor-channel.json new file mode 100644 index 00000000..f679fa2e --- /dev/null +++ b/src/schema/aws-mediatailor-channel.json @@ -0,0 +1,271 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ChannelName", + "/properties/Tier" + ], + "definitions": { + "AdMarkupType": { + "enum": [ + "DATERANGE", + "SCTE35_ENHANCED" + ], + "type": "string" + }, + "DashPlaylistSettings": { + "additionalProperties": false, + "description": "Dash manifest configuration parameters.
", + "properties": { + "ManifestWindowSeconds": { + "description": "The total duration (in seconds) of each manifest. Minimum value: 30 seconds. Maximum value: 3600 seconds.
Minimum amount of content (measured in seconds) that a player must keep available in the buffer. Minimum value: 2 seconds. Maximum value: 60 seconds.
Minimum amount of time (in seconds) that the player should wait before requesting updates to the manifest. Minimum value: 2 seconds. Maximum value: 60 seconds.
Amount of time (in seconds) that the player should be from the live point at the end of the manifest. Minimum value: 2 seconds. Maximum value: 60 seconds.
HLS playlist configuration parameters.
", + "properties": { + "AdMarkupType": { + "description": "Determines the type of SCTE 35 tags to use in ad markup. Specify DATERANGE to use DATERANGE tags (for live or VOD content). Specify SCTE35_ENHANCED to use EXT-X-CUE-OUT and EXT-X-CUE-IN tags (for VOD content only).
The total duration (in seconds) of each manifest. Minimum value: 30 seconds. Maximum value: 3600 seconds.
The log configuration for the channel.
", + "properties": { + "LogTypes": { + "description": "The log types.
", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/LogType" + }, + "type": "array" + } + }, + "type": "object" + }, + "LogType": { + "enum": [ + "AS_RUN" + ], + "type": "string" + }, + "PlaybackMode": { + "enum": [ + "LOOP", + "LINEAR" + ], + "type": "string" + }, + "RequestOutputItem": { + "additionalProperties": false, + "description": "The output configuration for this channel.
", + "properties": { + "DashPlaylistSettings": { + "$ref": "#/definitions/DashPlaylistSettings" + }, + "HlsPlaylistSettings": { + "$ref": "#/definitions/HlsPlaylistSettings" + }, + "ManifestName": { + "description": "The name of the manifest for the channel. The name appears in the PlaybackUrl.
A string used to match which HttpPackageConfiguration is used for each VodSource.
Slate VOD source configuration.
", + "properties": { + "SourceLocationName": { + "description": "The name of the source location where the slate VOD source is stored.
", + "type": "string" + }, + "VodSourceName": { + "description": "The slate VOD source name. The VOD source must already exist in a source location before it can be used for slate.
", + "type": "string" + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + }, + "Tier": { + "enum": [ + "BASIC", + "STANDARD" + ], + "type": "string" + }, + "TimeShiftConfiguration": { + "additionalProperties": false, + "description": "The configuration for time-shifted viewing.
", + "properties": { + "MaxTimeDelaySeconds": { + "description": "The maximum time delay for time-shifted viewing. The minimum allowed maximum time delay is 0 seconds, and the maximum allowed maximum time delay is 21600 seconds (6 hours).
", + "type": "number" + } + }, + "required": [ + "MaxTimeDelaySeconds" + ], + "type": "object" + } + }, + "description": "Definition of AWS::MediaTailor::Channel Resource Type", + "handlers": { + "create": { + "permissions": [ + "mediatailor:CreateChannel", + "mediatailor:TagResource", + "mediatailor:ConfigureLogsForChannel", + "iam:CreateServiceLinkedRole", + "mediatailor:DescribeChannel" + ] + }, + "delete": { + "permissions": [ + "mediatailor:DeleteChannel", + "mediatailor:DescribeChannel" + ] + }, + "list": { + "permissions": [ + "mediatailor:ListChannels" + ] + }, + "read": { + "permissions": [ + "mediatailor:DescribeChannel" + ] + }, + "update": { + "permissions": [ + "mediatailor:UpdateChannel", + "mediatailor:TagResource", + "mediatailor:UntagResource", + "iam:CreateServiceLinkedRole", + "mediatailor:ConfigureLogsForChannel", + "mediatailor:DescribeChannel" + ] + } + }, + "primaryIdentifier": [ + "/properties/ChannelName" + ], + "properties": { + "Arn": { + "description": "The ARN of the channel.
", + "type": "string" + }, + "Audiences": { + "description": "The list of audiences defined in channel.
", + "items": { + "type": "string" + }, + "type": "array" + }, + "ChannelName": { + "type": "string" + }, + "FillerSlate": { + "$ref": "#/definitions/SlateSource" + }, + "LogConfiguration": { + "$ref": "#/definitions/LogConfigurationForChannel" + }, + "Outputs": { + "description": "The channel's output properties.
", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/RequestOutputItem" + }, + "type": "array" + }, + "PlaybackMode": { + "$ref": "#/definitions/PlaybackMode" + }, + "Tags": { + "description": "The tags to assign to the channel.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + }, + "Tier": { + "$ref": "#/definitions/Tier" + }, + "TimeShiftConfiguration": { + "$ref": "#/definitions/TimeShiftConfiguration" + } + }, + "readOnlyProperties": [ + "/properties/Arn" + ], + "required": [ + "ChannelName", + "Outputs", + "PlaybackMode" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-mediatailor.git", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::MediaTailor::Channel", + "writeOnlyProperties": [ + "/properties/Outputs" + ] +} diff --git a/src/schema/aws-mediatailor-channelpolicy.json b/src/schema/aws-mediatailor-channelpolicy.json new file mode 100644 index 00000000..a596c184 --- /dev/null +++ b/src/schema/aws-mediatailor-channelpolicy.json @@ -0,0 +1,58 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ChannelName" + ], + "description": "Definition of AWS::MediaTailor::ChannelPolicy Resource Type", + "handlers": { + "create": { + "permissions": [ + "mediatailor:PutChannelPolicy", + "mediatailor:GetChannelPolicy" + ] + }, + "delete": { + "permissions": [ + "mediatailor:DeleteChannelPolicy", + "mediatailor:GetChannelPolicy" + ] + }, + "read": { + "permissions": [ + "mediatailor:GetChannelPolicy" + ] + }, + "update": { + "permissions": [ + "mediatailor:PutChannelPolicy", + "mediatailor:GetChannelPolicy" + ] + } + }, + "primaryIdentifier": [ + "/properties/ChannelName" + ], + "properties": { + "ChannelName": { + "type": "string" + }, + "Policy": { + "description": "The IAM policy for the channel. IAM policies are used to control access to your channel.
", + "type": [ + "object", + "string" + ] + } + }, + "required": [ + "ChannelName", + "Policy" + ], + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::MediaTailor::ChannelPolicy" +} diff --git a/src/schema/aws-mediatailor-livesource.json b/src/schema/aws-mediatailor-livesource.json new file mode 100644 index 00000000..0a615dc5 --- /dev/null +++ b/src/schema/aws-mediatailor-livesource.json @@ -0,0 +1,148 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/LiveSourceName", + "/properties/SourceLocationName" + ], + "definitions": { + "HttpPackageConfiguration": { + "additionalProperties": false, + "description": "The HTTP package configuration properties for the requested VOD source.
", + "properties": { + "Path": { + "description": "The relative path to the URL for this VOD source. This is combined with SourceLocation::HttpConfiguration::BaseUrl to form a valid URL.
The name of the source group. This has to match one of the Channel::Outputs::SourceGroup.
The ARN of the live source.
", + "type": "string" + }, + "HttpPackageConfigurations": { + "description": "A list of HTTP package configuration parameters for this live source.
", + "items": { + "$ref": "#/definitions/HttpPackageConfiguration" + }, + "type": "array" + }, + "LiveSourceName": { + "type": "string" + }, + "SourceLocationName": { + "type": "string" + }, + "Tags": { + "description": "The tags to assign to the live source.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/Arn" + ], + "required": [ + "HttpPackageConfigurations", + "LiveSourceName", + "SourceLocationName" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-mediatailor", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::MediaTailor::LiveSource" +} diff --git a/src/schema/aws-mediatailor-playbackconfiguration.json b/src/schema/aws-mediatailor-playbackconfiguration.json new file mode 100644 index 00000000..09a39456 --- /dev/null +++ b/src/schema/aws-mediatailor-playbackconfiguration.json @@ -0,0 +1,300 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name" + ], + "definitions": { + "AdMarkerPassthrough": { + "additionalProperties": false, + "description": "For HLS, when set to true, MediaTailor passes through EXT-X-CUE-IN, EXT-X-CUE-OUT, and EXT-X-SPLICEPOINT-SCTE35 ad markers from the origin manifest to the MediaTailor personalized manifest. No logic is applied to these ad markers. For example, if EXT-X-CUE-OUT has a value of 60, but no ads are filled for that ad break, MediaTailor will not set the value to 0.", + "properties": { + "Enabled": { + "description": "Enables ad marker passthrough for your configuration.", + "type": "boolean" + } + }, + "type": "object" + }, + "AvailSuppression": { + "additionalProperties": false, + "description": "The configuration for avail suppression, also known as ad suppression. For more information about ad suppression, see Ad Suppression (https://docs.aws.amazon.com/mediatailor/latest/ug/ad-behavior.html).", + "properties": { + "FillPolicy": { + "description": "Defines the policy to apply to the avail suppression mode. BEHIND_LIVE_EDGE will always use the full avail suppression policy. AFTER_LIVE_EDGE mode can be used to invoke partial ad break fills when a session starts mid-break. Valid values are FULL_AVAIL_ONLY and PARTIAL_AVAIL", + "enum": [ + "PARTIAL_AVAIL", + "FULL_AVAIL_ONLY" + ], + "type": "string" + }, + "Mode": { + "description": "Sets the ad suppression mode. By default, ad suppression is off and all ad breaks are filled with ads or slate. When Mode is set to BEHIND_LIVE_EDGE, ad suppression is active and MediaTailor won't fill ad breaks on or behind the ad suppression Value time in the manifest lookback window. When Mode is set to AFTER_LIVE_EDGE, ad suppression is active and MediaTailor won't fill ad breaks that are within the live edge plus the avail suppression value.", + "enum": [ + "OFF", + "BEHIND_LIVE_EDGE", + "AFTER_LIVE_EDGE" + ], + "type": "string" + }, + "Value": { + "description": "A live edge offset time in HH:MM:SS. MediaTailor won't fill ad breaks on or behind this time in the manifest lookback window. If Value is set to 00:00:00, it is in sync with the live edge, and MediaTailor won't fill any ad breaks on or behind the live edge. If you set a Value time, MediaTailor won't fill any ad breaks on or behind this time in the manifest lookback window. For example, if you set 00:45:00, then MediaTailor will fill ad breaks that occur within 45 minutes behind the live edge, but won't fill ad breaks on or behind 45 minutes behind the live edge.", + "type": "string" + } + }, + "type": "object" + }, + "Bumper": { + "additionalProperties": false, + "description": "The configuration for bumpers. Bumpers are short audio or video clips that play at the start or before the end of an ad break. To learn more about bumpers, see Bumpers (https://docs.aws.amazon.com/mediatailor/latest/ug/bumpers.html).", + "properties": { + "EndUrl": { + "description": "The URL for the end bumper asset.", + "type": "string" + }, + "StartUrl": { + "description": "The URL for the start bumper asset.", + "type": "string" + } + }, + "type": "object" + }, + "CdnConfiguration": { + "additionalProperties": false, + "description": "The configuration for using a content delivery network (CDN), like Amazon CloudFront, for content and ad segment management.", + "properties": { + "AdSegmentUrlPrefix": { + "description": "A non-default content delivery network (CDN) to serve ad segments. By default, AWS Elemental MediaTailor uses Amazon CloudFront with default cache settings as its CDN for ad segments. To set up an alternate CDN, create a rule in your CDN for the origin ads.mediatailor.<region>.amazonaws.com. Then specify the rule's name in this AdSegmentUrlPrefix. When AWS Elemental MediaTailor serves a manifest, it reports your CDN as the source for ad segments.", + "type": "string" + }, + "ContentSegmentUrlPrefix": { + "description": "A content delivery network (CDN) to cache content segments, so that content requests don't always have to go to the origin server. First, create a rule in your CDN for the content segment origin server. Then specify the rule's name in this ContentSegmentUrlPrefix. When AWS Elemental MediaTailor serves a manifest, it reports your CDN as the source for content segments.", + "type": "string" + } + }, + "type": "object" + }, + "ConfigurationAliases": { + "additionalProperties": false, + "description": "The predefined aliases for dynamic variables.", + "patternProperties": { + "player_params\\.\\w+\\Z": { + "type": "object" + } + } + }, + "DashConfiguration": { + "additionalProperties": false, + "description": "The configuration for DASH PUT operations.", + "properties": { + "ManifestEndpointPrefix": { + "description": "The URL generated by MediaTailor to initiate a DASH playback session. The session uses server-side reporting.", + "type": "string" + }, + "MpdLocation": { + "description": "The setting that controls whether MediaTailor includes the Location tag in DASH manifests. MediaTailor populates the Location tag with the URL for manifest update requests, to be used by players that don't support sticky redirects. Disable this if you have CDN routing rules set up for accessing MediaTailor manifests, and you are either using client-side reporting or your players support sticky HTTP redirects. Valid values are DISABLED and EMT_DEFAULT. The EMT_DEFAULT setting enables the inclusion of the tag and is the default value.", + "type": "string" + }, + "OriginManifestType": { + "description": "The setting that controls whether MediaTailor handles manifests from the origin server as multi-period manifests or single-period manifests. If your origin server produces single-period manifests, set this to SINGLE_PERIOD. The default setting is MULTI_PERIOD. For multi-period manifests, omit this setting or set it to MULTI_PERIOD.", + "enum": [ + "SINGLE_PERIOD", + "MULTI_PERIOD" + ], + "type": "string" + } + }, + "type": "object" + }, + "HlsConfiguration": { + "additionalProperties": false, + "properties": { + "ManifestEndpointPrefix": { + "description": "The URL that is used to initiate a playback session for devices that support Apple HLS. The session uses server-side reporting.", + "type": "string" + } + }, + "type": "object" + }, + "LivePreRollConfiguration": { + "additionalProperties": false, + "description": "The configuration for pre-roll ad insertion.", + "properties": { + "AdDecisionServerUrl": { + "description": "The URL for the ad decision server (ADS) for pre-roll ads. This includes the specification of static parameters and placeholders for dynamic parameters. AWS Elemental MediaTailor substitutes player-specific and session-specific parameters as needed when calling the ADS. Alternately, for testing, you can provide a static VAST URL. The maximum length is 25,000 characters.", + "type": "string" + }, + "MaxDurationSeconds": { + "description": "The maximum allowed duration for the pre-roll ad avail. AWS Elemental MediaTailor won't play pre-roll ads to exceed this duration, regardless of the total duration of ads that the ADS returns.", + "type": "integer" + } + }, + "type": "object" + }, + "ManifestProcessingRules": { + "additionalProperties": false, + "description": "The configuration for manifest processing rules. Manifest processing rules enable customization of the personalized manifests created by MediaTailor.", + "properties": { + "AdMarkerPassthrough": { + "$ref": "#/definitions/AdMarkerPassthrough", + "description": "For HLS, when set to true, MediaTailor passes through EXT-X-CUE-IN, EXT-X-CUE-OUT, and EXT-X-SPLICEPOINT-SCTE35 ad markers from the origin manifest to the MediaTailor personalized manifest. No logic is applied to these ad markers. For example, if EXT-X-CUE-OUT has a value of 60, but no ads are filled for that ad break, MediaTailor will not set the value to 0." + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "description": "Resource schema for AWS::MediaTailor::PlaybackConfiguration", + "handlers": { + "create": { + "permissions": [ + "mediatailor:PutPlaybackConfiguration", + "mediatailor:ConfigureLogsForPlaybackConfiguration", + "iam:CreateServiceLinkedRole", + "mediatailor:UntagResource", + "mediatailor:TagResource" + ] + }, + "delete": { + "permissions": [ + "mediatailor:DeletePlaybackConfiguration" + ] + }, + "list": { + "permissions": [ + "mediatailor:ListPlaybackConfigurations" + ] + }, + "read": { + "permissions": [ + "mediatailor:GetPlaybackConfiguration" + ] + }, + "update": { + "permissions": [ + "mediatailor:PutPlaybackConfiguration", + "mediatailor:ConfigureLogsForPlaybackConfiguration", + "iam:CreateServiceLinkedRole", + "mediatailor:UntagResource", + "mediatailor:TagResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/Name" + ], + "properties": { + "AdDecisionServerUrl": { + "description": "The URL for the ad decision server (ADS). This includes the specification of static parameters and placeholders for dynamic parameters. AWS Elemental MediaTailor substitutes player-specific and session-specific parameters as needed when calling the ADS. Alternately, for testing you can provide a static VAST URL. The maximum length is 25,000 characters.", + "type": "string" + }, + "AvailSuppression": { + "$ref": "#/definitions/AvailSuppression", + "description": "The configuration for avail suppression, also known as ad suppression. For more information about ad suppression, see Ad Suppression (https://docs.aws.amazon.com/mediatailor/latest/ug/ad-behavior.html)." + }, + "Bumper": { + "$ref": "#/definitions/Bumper", + "description": "The configuration for bumpers. Bumpers are short audio or video clips that play at the start or before the end of an ad break. To learn more about bumpers, see Bumpers (https://docs.aws.amazon.com/mediatailor/latest/ug/bumpers.html)." + }, + "CdnConfiguration": { + "$ref": "#/definitions/CdnConfiguration", + "description": "The configuration for using a content delivery network (CDN), like Amazon CloudFront, for content and ad segment management." + }, + "ConfigurationAliases": { + "$ref": "#/definitions/ConfigurationAliases", + "description": "The player parameters and aliases used as dynamic variables during session initialization. For more information, see Domain Variables. " + }, + "DashConfiguration": { + "$ref": "#/definitions/DashConfiguration", + "description": "The configuration for DASH content." + }, + "HlsConfiguration": { + "$ref": "#/definitions/HlsConfiguration", + "description": "The configuration for HLS content." + }, + "LivePreRollConfiguration": { + "$ref": "#/definitions/LivePreRollConfiguration", + "description": "The configuration for pre-roll ad insertion." + }, + "ManifestProcessingRules": { + "$ref": "#/definitions/ManifestProcessingRules", + "description": "The configuration for manifest processing rules. Manifest processing rules enable customization of the personalized manifests created by MediaTailor." + }, + "Name": { + "description": "The identifier for the playback configuration.", + "maxLength": 64, + "minLength": 1, + "pattern": "^[a-zA-Z0-9_-]+$", + "type": "string" + }, + "PersonalizationThresholdSeconds": { + "description": "Defines the maximum duration of underfilled ad time (in seconds) allowed in an ad break. If the duration of underfilled ad time exceeds the personalization threshold, then the personalization of the ad break is abandoned and the underlying content is shown. This feature applies to ad replacement in live and VOD streams, rather than ad insertion, because it relies on an underlying content stream. For more information about ad break behavior, including ad replacement and insertion, see Ad Behavior in AWS Elemental MediaTailor (https://docs.aws.amazon.com/mediatailor/latest/ug/ad-behavior.html).", + "type": "integer" + }, + "PlaybackConfigurationArn": { + "description": "The Amazon Resource Name (ARN) for the playback configuration.", + "type": "string" + }, + "PlaybackEndpointPrefix": { + "description": "The URL that the player accesses to get a manifest from MediaTailor. This session will use server-side reporting.", + "type": "string" + }, + "SessionInitializationEndpointPrefix": { + "description": "The URL that the player uses to initialize a session that uses client-side reporting.", + "type": "string" + }, + "SlateAdUrl": { + "description": "The URL for a high-quality video asset to transcode and use to fill in time that's not used by ads. AWS Elemental MediaTailor shows the slate to fill in gaps in media content. Configuring the slate is optional for non-VPAID configurations. For VPAID, the slate is required because MediaTailor provides it in the slots that are designated for dynamic ad content. The slate must be a high-quality asset that contains both audio and video.", + "type": "string" + }, + "Tags": { + "description": "The tags to assign to the playback configuration.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + }, + "TranscodeProfileName": { + "description": "The name that is used to associate this playback configuration with a custom transcode profile. This overrides the dynamic transcoding defaults of MediaTailor. Use this only if you have already set up custom profiles with the help of AWS Support.", + "type": "string" + }, + "VideoContentSourceUrl": { + "description": "The URL prefix for the parent manifest for the stream, minus the asset ID. The maximum length is 512 characters.", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/SessionInitializationEndpointPrefix", + "/properties/HlsConfiguration/ManifestEndpointPrefix", + "/properties/DashConfiguration/ManifestEndpointPrefix", + "/properties/PlaybackConfigurationArn", + "/properties/PlaybackEndpointPrefix" + ], + "required": [ + "Name", + "VideoContentSourceUrl", + "AdDecisionServerUrl" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-mediatailor.git", + "tagging": { + "cloudFormationSystemTags": false, + "taggable": true + }, + "typeName": "AWS::MediaTailor::PlaybackConfiguration" +} diff --git a/src/schema/aws-mediatailor-sourcelocation.json b/src/schema/aws-mediatailor-sourcelocation.json new file mode 100644 index 00000000..97027030 --- /dev/null +++ b/src/schema/aws-mediatailor-sourcelocation.json @@ -0,0 +1,197 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/SourceLocationName" + ], + "definitions": { + "AccessConfiguration": { + "additionalProperties": false, + "description": "Access configuration parameters.
", + "properties": { + "AccessType": { + "$ref": "#/definitions/AccessType" + }, + "SecretsManagerAccessTokenConfiguration": { + "$ref": "#/definitions/SecretsManagerAccessTokenConfiguration" + } + }, + "type": "object" + }, + "AccessType": { + "enum": [ + "S3_SIGV4", + "SECRETS_MANAGER_ACCESS_TOKEN", + "AUTODETECT_SIGV4" + ], + "type": "string" + }, + "DefaultSegmentDeliveryConfiguration": { + "additionalProperties": false, + "description": "The optional configuration for a server that serves segments. Use this if you want the segment delivery server to be different from the source location server. For example, you can configure your source location server to be an origination server, such as MediaPackage, and the segment delivery server to be a content delivery network (CDN), such as CloudFront. If you don't specify a segment delivery server, then the source location server is used.
", + "properties": { + "BaseUrl": { + "description": "The hostname of the server that will be used to serve segments. This string must include the protocol, such as https://.
", + "type": "string" + } + }, + "type": "object" + }, + "HttpConfiguration": { + "additionalProperties": false, + "description": "The HTTP configuration for the source location.
", + "properties": { + "BaseUrl": { + "description": "The base URL for the source location host server. This string must include the protocol, such as https://.
", + "type": "string" + } + }, + "required": [ + "BaseUrl" + ], + "type": "object" + }, + "SecretsManagerAccessTokenConfiguration": { + "additionalProperties": false, + "description": "AWS Secrets Manager access token configuration parameters. For information about Secrets Manager access token authentication, see Working with AWS Secrets Manager access token authentication.
", + "properties": { + "HeaderName": { + "description": "The name of the HTTP header used to supply the access token in requests to the source location.
", + "type": "string" + }, + "SecretArn": { + "description": "The Amazon Resource Name (ARN) of the AWS Secrets Manager secret that contains the access token.
", + "type": "string" + }, + "SecretStringKey": { + "description": "The AWS Secrets Manager SecretString key associated with the access token. MediaTailor uses the key to look up SecretString key and value pair containing the access token.
", + "type": "string" + } + }, + "type": "object" + }, + "SegmentDeliveryConfiguration": { + "additionalProperties": false, + "description": "The segment delivery configuration settings.
", + "properties": { + "BaseUrl": { + "description": "The base URL of the host or path of the segment delivery server that you're using to serve segments. This is typically a content delivery network (CDN). The URL can be absolute or relative. To use an absolute URL include the protocol, such as https://example.com/some/path. To use a relative URL specify the relative path, such as /some/path*.
A unique identifier used to distinguish between multiple segment delivery configurations in a source location.
", + "type": "string" + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "description": "Definition of AWS::MediaTailor::SourceLocation Resource Type", + "handlers": { + "create": { + "permissions": [ + "mediatailor:CreateSourceLocation", + "mediatailor:DescribeSourceLocation", + "mediatailor:TagResource", + "secretsmanager:DescribeSecret", + "secretsmanager:GetSecretValue", + "kms:CreateGrant" + ] + }, + "delete": { + "permissions": [ + "mediatailor:DeleteSourceLocation", + "mediatailor:DescribeSourceLocation" + ] + }, + "list": { + "permissions": [ + "mediatailor:ListSourceLocations" + ] + }, + "read": { + "permissions": [ + "mediatailor:DescribeSourceLocation" + ] + }, + "update": { + "permissions": [ + "mediatailor:DescribeSourceLocation", + "mediatailor:TagResource", + "mediatailor:UntagResource", + "mediatailor:UpdateSourceLocation", + "secretsmanager:DescribeSecret", + "secretsmanager:GetSecretValue", + "kms:CreateGrant" + ] + } + }, + "primaryIdentifier": [ + "/properties/SourceLocationName" + ], + "properties": { + "AccessConfiguration": { + "$ref": "#/definitions/AccessConfiguration" + }, + "Arn": { + "description": "The ARN of the source location.
", + "type": "string" + }, + "DefaultSegmentDeliveryConfiguration": { + "$ref": "#/definitions/DefaultSegmentDeliveryConfiguration" + }, + "HttpConfiguration": { + "$ref": "#/definitions/HttpConfiguration" + }, + "SegmentDeliveryConfigurations": { + "description": "A list of the segment delivery configurations associated with this resource.
", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/SegmentDeliveryConfiguration" + }, + "type": "array" + }, + "SourceLocationName": { + "type": "string" + }, + "Tags": { + "description": "The tags to assign to the source location.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/Arn" + ], + "required": [ + "HttpConfiguration", + "SourceLocationName" + ], + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::MediaTailor::SourceLocation" +} diff --git a/src/schema/aws-mediatailor-vodsource.json b/src/schema/aws-mediatailor-vodsource.json new file mode 100644 index 00000000..6c1843ac --- /dev/null +++ b/src/schema/aws-mediatailor-vodsource.json @@ -0,0 +1,148 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/SourceLocationName", + "/properties/VodSourceName" + ], + "definitions": { + "HttpPackageConfiguration": { + "additionalProperties": false, + "description": "The HTTP package configuration properties for the requested VOD source.
", + "properties": { + "Path": { + "description": "The relative path to the URL for this VOD source. This is combined with SourceLocation::HttpConfiguration::BaseUrl to form a valid URL.
The name of the source group. This has to match one of the Channel::Outputs::SourceGroup.
The ARN of the VOD source.
", + "type": "string" + }, + "HttpPackageConfigurations": { + "description": "A list of HTTP package configuration parameters for this VOD source.
", + "items": { + "$ref": "#/definitions/HttpPackageConfiguration" + }, + "type": "array" + }, + "SourceLocationName": { + "type": "string" + }, + "Tags": { + "description": "The tags to assign to the VOD source.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + }, + "VodSourceName": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Arn" + ], + "required": [ + "HttpPackageConfigurations", + "SourceLocationName", + "VodSourceName" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-mediatailor", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::MediaTailor::VodSource" +} diff --git a/src/schema/aws-memorydb-acl.json b/src/schema/aws-memorydb-acl.json new file mode 100644 index 00000000..fb0b2825 --- /dev/null +++ b/src/schema/aws-memorydb-acl.json @@ -0,0 +1,131 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ACLName" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with 'aws:'. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 128, + "minLength": 1, + "pattern": "^(?!aws:)[a-zA-Z0-9 _\\.\\/=+:\\-@]*$", + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 256, + "minLength": 0, + "pattern": "^[a-zA-Z0-9 _\\.\\/=+:\\-@]*$", + "type": "string" + } + }, + "required": [ + "Key" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::MemoryDB::ACL", + "handlers": { + "create": { + "permissions": [ + "memorydb:CreateACL", + "memorydb:DescribeACLs", + "memorydb:TagResource", + "memorydb:ListTags", + "iam:CreateServiceLinkedRole" + ] + }, + "delete": { + "permissions": [ + "memorydb:ModifyReplicationGroup", + "memorydb:DeleteACL", + "memorydb:DescribeACLs" + ] + }, + "list": { + "permissions": [ + "memorydb:DescribeACLs", + "memorydb:ListTags" + ] + }, + "read": { + "permissions": [ + "memorydb:DescribeACLs", + "memorydb:ListTags" + ] + }, + "update": { + "permissions": [ + "memorydb:UpdateACL", + "memorydb:DescribeACLs", + "memorydb:ListTags", + "memorydb:TagResource", + "memorydb:UntagResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/ACLName" + ], + "properties": { + "ACLName": { + "description": "The name of the acl.", + "pattern": "[a-z][a-z0-9\\\\-]*", + "type": "string" + }, + "Arn": { + "description": "The Amazon Resource Name (ARN) of the acl.", + "type": "string" + }, + "Status": { + "description": "Indicates acl status. Can be \"creating\", \"active\", \"modifying\", \"deleting\".", + "type": "string" + }, + "Tags": { + "description": "An array of key-value pairs to apply to this cluster.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "type": "array", + "uniqueItems": true + }, + "UserNames": { + "$comment": "List of users.", + "description": "List of users associated to this acl.", + "insertionOrder": true, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/Status", + "/properties/Arn" + ], + "required": [ + "ACLName" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-memorydb", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "memorydb:TagResource", + "memorydb:ListTags", + "memorydb:UntagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::MemoryDB::ACL" +} diff --git a/src/schema/aws-memorydb-cluster.json b/src/schema/aws-memorydb-cluster.json new file mode 100644 index 00000000..1791b730 --- /dev/null +++ b/src/schema/aws-memorydb-cluster.json @@ -0,0 +1,306 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ClusterName", + "/properties/TLSEnabled", + "/properties/DataTiering", + "/properties/KmsKeyId", + "/properties/Port", + "/properties/SubnetGroupName", + "/properties/SnapshotArns", + "/properties/MultiRegionClusterName", + "/properties/SnapshotName", + "/properties/NetworkType" + ], + "definitions": { + "DataTieringStatus": { + "enum": [ + "true", + "false" + ], + "type": "string" + }, + "Endpoint": { + "additionalProperties": false, + "properties": { + "Address": { + "description": "The DNS address of the primary read-write node.", + "type": "string" + }, + "Port": { + "description": "The port number that the engine is listening on. ", + "type": "integer" + } + }, + "type": "object" + }, + "SupportedIpDiscoveryTypes": { + "enum": [ + "ipv4", + "ipv6" + ], + "type": "string" + }, + "SupportedNetworkTypes": { + "enum": [ + "ipv4", + "ipv6", + "dual_stack" + ], + "type": "string" + }, + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key for the tag. May not be null.", + "maxLength": 128, + "minLength": 1, + "pattern": "^(?!aws:)(?!memorydb:)[a-zA-Z0-9 _\\.\\/=+:\\-@]{1,128}$", + "type": "string" + }, + "Value": { + "description": "The tag's value. May be null.", + "maxLength": 256, + "minLength": 1, + "pattern": "^(?!aws:)(?!memorydb:)[a-zA-Z0-9 _\\.\\/=+:\\-@]{1,256}$", + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "The AWS::MemoryDB::Cluster resource creates an Amazon MemoryDB Cluster.", + "handlers": { + "create": { + "permissions": [ + "kms:DescribeKey", + "kms:CreateGrant", + "memorydb:CreateCluster", + "memorydb:DescribeClusters", + "memorydb:TagResource", + "memorydb:ListTags", + "iam:CreateServiceLinkedRole" + ], + "timeoutInMinutes": 720 + }, + "delete": { + "permissions": [ + "memorydb:DeleteCluster", + "memorydb:DescribeClusters" + ] + }, + "list": { + "permissions": [ + "memorydb:DescribeClusters" + ] + }, + "read": { + "permissions": [ + "memorydb:DescribeClusters", + "memorydb:ListTags" + ] + }, + "update": { + "permissions": [ + "memorydb:UpdateCluster", + "memorydb:DescribeClusters", + "memorydb:ListTags", + "memorydb:TagResource", + "memorydb:UntagResource" + ], + "timeoutInMinutes": 2160 + } + }, + "primaryIdentifier": [ + "/properties/ClusterName" + ], + "properties": { + "ACLName": { + "description": "The name of the Access Control List to associate with the cluster.", + "pattern": "[a-zA-Z][a-zA-Z0-9\\-]*", + "type": "string" + }, + "ARN": { + "description": "The Amazon Resource Name (ARN) of the cluster.", + "type": "string" + }, + "AutoMinorVersionUpgrade": { + "description": "A flag that enables automatic minor version upgrade when set to true.\n\nYou cannot modify the value of AutoMinorVersionUpgrade after the cluster is created. To enable AutoMinorVersionUpgrade on a cluster you must set AutoMinorVersionUpgrade to true when you create a cluster.", + "type": "boolean" + }, + "ClusterEndpoint": { + "$ref": "#/definitions/Endpoint", + "description": "The cluster endpoint." + }, + "ClusterName": { + "description": "The name of the cluster. This value must be unique as it also serves as the cluster identifier.", + "pattern": "[a-z][a-z0-9\\-]*", + "type": "string" + }, + "DataTiering": { + "$ref": "#/definitions/DataTieringStatus", + "description": "Enables data tiering. Data tiering is only supported for clusters using the r6gd node type. This parameter must be set when using r6gd nodes.", + "type": "object" + }, + "Description": { + "description": "An optional description of the cluster.", + "type": "string" + }, + "Engine": { + "description": "The engine type used by the cluster.", + "type": "string" + }, + "EngineVersion": { + "description": "The Redis engine version used by the cluster.", + "type": "string" + }, + "FinalSnapshotName": { + "description": "The user-supplied name of a final cluster snapshot. This is the unique name that identifies the snapshot. MemoryDB creates the snapshot, and then deletes the cluster immediately afterward.", + "type": "string" + }, + "IpDiscovery": { + "$ref": "#/definitions/SupportedIpDiscoveryTypes", + "description": "For clusters wth dual stack NetworkType, IpDiscovery controls the Ip protocol (ipv4 or ipv6) returned by the engine commands such as `cluster info` and `cluster nodes` which are used by clients to connect to the nodes in the cluster.", + "type": "object" + }, + "KmsKeyId": { + "description": "The ID of the KMS key used to encrypt the cluster.", + "type": "string" + }, + "MaintenanceWindow": { + "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.", + "type": "string" + }, + "MultiRegionClusterName": { + "description": "The name of the Global Datastore, it is generated by MemoryDB adding a prefix to MultiRegionClusterNameSuffix.", + "type": "string" + }, + "NetworkType": { + "$ref": "#/definitions/SupportedNetworkTypes", + "description": "Must be either ipv4 | ipv6 | dual_stack.", + "type": "object" + }, + "NodeType": { + "description": "The compute and memory capacity of the nodes in the cluster.", + "type": "string" + }, + "NumReplicasPerShard": { + "description": "The number of replicas to apply to each shard. The limit is 5.", + "type": "integer" + }, + "NumShards": { + "description": "The number of shards the cluster will contain.", + "type": "integer" + }, + "ParameterGroupName": { + "description": "The name of the parameter group associated with the cluster.", + "type": "string" + }, + "ParameterGroupStatus": { + "description": "The status of the parameter group used by the cluster.", + "type": "string" + }, + "Port": { + "description": "The port number on which each member of the cluster accepts connections.", + "type": "integer" + }, + "SecurityGroupIds": { + "description": "One or more Amazon VPC security groups associated with this cluster.", + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "SnapshotArns": { + "description": "A list of Amazon Resource Names (ARN) that uniquely identify the RDB snapshot files stored in Amazon S3. The snapshot files are used to populate the new cluster. The Amazon S3 object name in the ARN cannot contain any commas.", + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "SnapshotName": { + "description": "The name of a snapshot from which to restore data into the new cluster. The snapshot status changes to restoring while the new cluster is being created.", + "type": "string" + }, + "SnapshotRetentionLimit": { + "description": "The number of days for which MemoryDB 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.", + "type": "integer" + }, + "SnapshotWindow": { + "description": "The daily time range (in UTC) during which MemoryDB begins taking a daily snapshot of your cluster.", + "type": "string" + }, + "SnsTopicArn": { + "description": "The Amazon Resource Name (ARN) of the Amazon Simple Notification Service (SNS) topic to which notifications are sent.", + "type": "string" + }, + "SnsTopicStatus": { + "description": "The status of the Amazon SNS notification topic. Notifications are sent only if the status is enabled.", + "type": "string" + }, + "Status": { + "description": "The status of the cluster. For example, Available, Updating, Creating.", + "type": "string" + }, + "SubnetGroupName": { + "description": "The name of the subnet group to be used for the cluster.", + "type": "string" + }, + "TLSEnabled": { + "description": "A flag that enables in-transit encryption when set to true.\n\nYou cannot modify the value of TransitEncryptionEnabled after the cluster is created. To enable in-transit encryption on a cluster you must set TransitEncryptionEnabled to true when you create a cluster.", + "type": "boolean" + }, + "Tags": { + "description": "An array of key-value pairs to apply to this cluster.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/Status", + "/properties/ClusterEndpoint/Address", + "/properties/ClusterEndpoint/Port", + "/properties/ARN", + "/properties/ParameterGroupStatus" + ], + "required": [ + "ClusterName", + "NodeType", + "ACLName" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-memorydb", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "memorydb:TagResource", + "memorydb:ListTags", + "memorydb:UntagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::MemoryDB::Cluster", + "writeOnlyProperties": [ + "/properties/SnapshotArns", + "/properties/SnapshotName", + "/properties/MultiRegionClusterName", + "/properties/FinalSnapshotName" + ] +} diff --git a/src/schema/aws-memorydb-multiregioncluster.json b/src/schema/aws-memorydb-multiregioncluster.json new file mode 100644 index 00000000..63e430c6 --- /dev/null +++ b/src/schema/aws-memorydb-multiregioncluster.json @@ -0,0 +1,170 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/MultiRegionClusterNameSuffix", + "/properties/EngineVersion", + "/properties/MultiRegionParameterGroupName", + "/properties/TLSEnabled" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key for the tag. May not be null.", + "maxLength": 128, + "minLength": 1, + "pattern": "^(?!aws:)(?!memorydb:)[a-zA-Z0-9 _\\.\\/=+:\\-@]{1,128}$", + "type": "string" + }, + "Value": { + "description": "The tag's value. May be null.", + "maxLength": 256, + "minLength": 1, + "pattern": "^(?!aws:)(?!memorydb:)[a-zA-Z0-9 _\\.\\/=+:\\-@]{1,256}$", + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "The AWS::MemoryDB::Multi Region Cluster resource creates an Amazon MemoryDB Multi Region Cluster.", + "handlers": { + "create": { + "permissions": [ + "memorydb:CreateMultiRegionCluster", + "memorydb:DescribeMultiRegionClusters", + "memorydb:TagResource", + "memorydb:ListTags", + "iam:CreateServiceLinkedRole" + ], + "timeoutInMinutes": 2160 + }, + "delete": { + "permissions": [ + "memorydb:DeleteMultiRegionCluster", + "memorydb:DescribeMultiRegionClusters" + ] + }, + "list": { + "permissions": [ + "memorydb:DescribeMultiRegionClusters" + ] + }, + "read": { + "permissions": [ + "memorydb:DescribeMultiRegionClusters", + "memorydb:ListTags" + ] + }, + "update": { + "permissions": [ + "memorydb:UpdateMultiRegionCluster", + "memorydb:DescribeMultiRegionClusters", + "memorydb:ListTags", + "memorydb:TagResource", + "memorydb:UntagResource" + ], + "timeoutInMinutes": 2160 + } + }, + "primaryIdentifier": [ + "/properties/MultiRegionClusterName" + ], + "properties": { + "ARN": { + "description": "The Amazon Resource Name (ARN) of the multi region cluster.", + "type": "string" + }, + "Description": { + "description": "Description of the multi region cluster.", + "type": "string" + }, + "Engine": { + "description": "The engine type used by the multi region cluster.", + "type": "string" + }, + "EngineVersion": { + "description": "The Redis engine version used by the multi region cluster.", + "type": "string" + }, + "MultiRegionClusterName": { + "description": "The name of the Global Datastore, it is generated by MemoryDB adding a prefix to MultiRegionClusterNameSuffix.", + "type": "string" + }, + "MultiRegionClusterNameSuffix": { + "description": "The name of the Multi Region cluster. This value must be unique as it also serves as the multi region cluster identifier.", + "pattern": "[a-z][a-z0-9\\-]*", + "type": "string" + }, + "MultiRegionParameterGroupName": { + "description": "The name of the parameter group associated with the multi region cluster.", + "type": "string" + }, + "NodeType": { + "description": "The compute and memory capacity of the nodes in the multi region cluster.", + "type": "string" + }, + "NumShards": { + "description": "The number of shards the multi region cluster will contain.", + "type": "integer" + }, + "Status": { + "description": "The status of the multi region cluster. For example, Available, Updating, Creating.", + "type": "string" + }, + "TLSEnabled": { + "description": "A flag that enables in-transit encryption when set to true.\n\nYou cannot modify the value of TransitEncryptionEnabled after the cluster is created. To enable in-transit encryption on a cluster you must set TransitEncryptionEnabled to true when you create a cluster.", + "type": "boolean" + }, + "Tags": { + "description": "An array of key-value pairs to apply to this multi region cluster.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "type": "array", + "uniqueItems": true + }, + "UpdateStrategy": { + "description": "An enum string value that determines the update strategy for scaling. Possible values are 'COORDINATED' and 'UNCOORDINATED'. Default is 'COORDINATED'.", + "enum": [ + "COORDINATED", + "UNCOORDINATED" + ], + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/MultiRegionClusterName", + "/properties/Status", + "/properties/ARN" + ], + "required": [ + "NodeType" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-memorydb", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "memorydb:TagResource", + "memorydb:ListTags", + "memorydb:UntagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::MemoryDB::MultiRegionCluster", + "writeOnlyProperties": [ + "/properties/MultiRegionClusterNameSuffix", + "/properties/UpdateStrategy" + ] +} diff --git a/src/schema/aws-memorydb-parametergroup.json b/src/schema/aws-memorydb-parametergroup.json new file mode 100644 index 00000000..569392ec --- /dev/null +++ b/src/schema/aws-memorydb-parametergroup.json @@ -0,0 +1,133 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ParameterGroupName", + "/properties/Family", + "/properties/Description" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key for the tag. May not be null.", + "maxLength": 128, + "minLength": 1, + "pattern": "^(?!aws:)(?!memorydb:)[a-zA-Z0-9 _\\.\\/=+:\\-@]{1,128}$", + "type": "string" + }, + "Value": { + "description": "The tag's value. May be null.", + "maxLength": 256, + "minLength": 1, + "pattern": "^(?!aws:)(?!memorydb:)[a-zA-Z0-9 _\\.\\/=+:\\-@]{1,256}$", + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "The AWS::MemoryDB::ParameterGroup resource creates an Amazon MemoryDB ParameterGroup.", + "handlers": { + "create": { + "permissions": [ + "memorydb:CreateParameterGroup", + "memorydb:DescribeParameterGroups", + "memorydb:TagResource", + "memorydb:ListTags", + "iam:CreateServiceLinkedRole" + ] + }, + "delete": { + "permissions": [ + "memorydb:DeleteParameterGroup" + ] + }, + "list": { + "permissions": [ + "memorydb:DescribeParameterGroups" + ] + }, + "read": { + "permissions": [ + "memorydb:DescribeParameterGroups", + "memorydb:ListTags" + ] + }, + "update": { + "permissions": [ + "memorydb:UpdateParameterGroup", + "memorydb:DescribeParameterGroups", + "memorydb:DescribeParameters", + "memorydb:DescribeClusters", + "memorydb:ListTags", + "memorydb:TagResource", + "memorydb:UntagResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/ParameterGroupName" + ], + "properties": { + "ARN": { + "description": "The Amazon Resource Name (ARN) of the parameter group.", + "type": "string" + }, + "Description": { + "description": "A description of the parameter group.", + "type": "string" + }, + "Family": { + "description": "The name of the parameter group family that this parameter group is compatible with.", + "type": "string" + }, + "ParameterGroupName": { + "description": "The name of the parameter group.", + "type": "string" + }, + "Parameters": { + "description": "An map of parameter names and values for the parameter update. You must supply at least one parameter name and value; subsequent arguments are optional.", + "type": "object" + }, + "Tags": { + "description": "An array of key-value pairs to apply to this parameter group.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/ARN" + ], + "required": [ + "ParameterGroupName", + "Family" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-memorydb", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "memorydb:TagResource", + "memorydb:ListTags", + "memorydb:UntagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::MemoryDB::ParameterGroup", + "writeOnlyProperties": [ + "/properties/Parameters" + ] +} diff --git a/src/schema/aws-memorydb-subnetgroup.json b/src/schema/aws-memorydb-subnetgroup.json new file mode 100644 index 00000000..a5827cd9 --- /dev/null +++ b/src/schema/aws-memorydb-subnetgroup.json @@ -0,0 +1,139 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/SubnetGroupName" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key for the tag. May not be null.", + "maxLength": 128, + "minLength": 1, + "pattern": "^(?!aws:)(?!memorydb:)[a-zA-Z0-9 _\\.\\/=+:\\-@]{1,128}$", + "type": "string" + }, + "Value": { + "description": "The tag's value. May be null.", + "maxLength": 256, + "minLength": 1, + "pattern": "^(?!aws:)(?!memorydb:)[a-zA-Z0-9 _\\.\\/=+:\\-@]{1,256}$", + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "The AWS::MemoryDB::SubnetGroup resource creates an Amazon MemoryDB Subnet Group.", + "handlers": { + "create": { + "permissions": [ + "memorydb:CreateSubnetGroup", + "memorydb:DescribeSubnetGroups", + "memorydb:TagResource", + "memorydb:ListTags", + "iam:CreateServiceLinkedRole" + ] + }, + "delete": { + "permissions": [ + "memorydb:DeleteSubnetGroup", + "memorydb:DescribeSubnetGroups" + ] + }, + "list": { + "permissions": [ + "memorydb:DescribeSubnetGroups" + ] + }, + "read": { + "permissions": [ + "memorydb:DescribeSubnetGroups", + "memorydb:ListTags" + ] + }, + "update": { + "permissions": [ + "memorydb:UpdateSubnetGroup", + "memorydb:DescribeSubnetGroups", + "memorydb:ListTags", + "memorydb:TagResource", + "memorydb:UntagResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/SubnetGroupName" + ], + "properties": { + "ARN": { + "description": "The Amazon Resource Name (ARN) of the subnet group.", + "type": "string" + }, + "Description": { + "description": "An optional description of the subnet group.", + "type": "string" + }, + "SubnetGroupName": { + "description": "The name of the subnet group. This value must be unique as it also serves as the subnet group identifier.", + "pattern": "[a-z][a-z0-9\\-]*", + "type": "string" + }, + "SubnetIds": { + "description": "A list of VPC subnet IDs for the subnet group.", + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "SupportedNetworkTypes": { + "description": "Supported network types would be a list of network types supported by subnet group and can be either [ipv4] or [ipv4, dual_stack] or [ipv6].", + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "Tags": { + "description": "An array of key-value pairs to apply to this subnet group.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/ARN", + "/properties/SupportedNetworkTypes" + ], + "required": [ + "SubnetGroupName", + "SubnetIds" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-memorydb", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "memorydb:TagResource", + "memorydb:ListTags", + "memorydb:UntagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::MemoryDB::SubnetGroup" +} diff --git a/src/schema/aws-memorydb-user.json b/src/schema/aws-memorydb-user.json new file mode 100644 index 00000000..75772616 --- /dev/null +++ b/src/schema/aws-memorydb-user.json @@ -0,0 +1,154 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/UserName" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with 'aws:'. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 128, + "minLength": 1, + "pattern": "^(?!aws:)[a-zA-Z0-9 _\\.\\/=+:\\-@]*$", + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 256, + "minLength": 0, + "pattern": "^[a-zA-Z0-9 _\\.\\/=+:\\-@]*$", + "type": "string" + } + }, + "required": [ + "Key" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::MemoryDB::User", + "handlers": { + "create": { + "permissions": [ + "memorydb:CreateUser", + "memorydb:DescribeUsers", + "memorydb:TagResource", + "memorydb:ListTags", + "iam:CreateServiceLinkedRole" + ] + }, + "delete": { + "permissions": [ + "memorydb:DeleteUser", + "memorydb:DescribeUsers" + ] + }, + "list": { + "permissions": [ + "memorydb:DescribeUsers", + "memorydb:ListTags" + ] + }, + "read": { + "permissions": [ + "memorydb:DescribeUsers", + "memorydb:ListTags" + ] + }, + "update": { + "permissions": [ + "memorydb:UpdateUser", + "memorydb:DescribeUsers", + "memorydb:ListTags", + "memorydb:TagResource", + "memorydb:UntagResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/UserName" + ], + "properties": { + "AccessString": { + "description": "Access permissions string used for this user account.", + "type": "string" + }, + "Arn": { + "description": "The Amazon Resource Name (ARN) of the user account.", + "type": "string" + }, + "AuthenticationMode": { + "additionalProperties": false, + "properties": { + "Passwords": { + "$comment": "List of passwords.", + "description": "Passwords used for this user account. You can create up to two passwords for each user.", + "insertionOrder": true, + "items": { + "type": "string" + }, + "maxItems": 2, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "Type": { + "description": "Type of authentication strategy for this user.", + "enum": [ + "password", + "iam" + ], + "type": "string" + } + }, + "type": "object" + }, + "Status": { + "description": "Indicates the user status. Can be \"active\", \"modifying\" or \"deleting\".", + "type": "string" + }, + "Tags": { + "description": "An array of key-value pairs to apply to this user.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "type": "array", + "uniqueItems": true + }, + "UserName": { + "description": "The name of the user.", + "pattern": "[a-z][a-z0-9\\\\-]*", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Status", + "/properties/Arn" + ], + "required": [ + "UserName" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-memorydb", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "memorydb:TagResource", + "memorydb:ListTags", + "memorydb:UntagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::MemoryDB::User", + "writeOnlyProperties": [ + "/properties/AuthenticationMode", + "/properties/AccessString" + ] +} diff --git a/src/schema/aws-msk-batchscramsecret.json b/src/schema/aws-msk-batchscramsecret.json new file mode 100644 index 00000000..7619abbd --- /dev/null +++ b/src/schema/aws-msk-batchscramsecret.json @@ -0,0 +1,93 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ClusterArn" + ], + "definitions": { + "SecretArnList": { + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array" + } + }, + "description": "Resource Type definition for AWS::MSK::BatchScramSecret", + "handlers": { + "create": { + "permissions": [ + "kafka:BatchAssociateScramSecret", + "kafka:ListScramSecrets", + "kms:CreateGrant", + "kms:DescribeKey", + "secretsmanager:GetSecretValue" + ] + }, + "delete": { + "permissions": [ + "kafka:BatchDisassociateScramSecret", + "kafka:ListScramSecrets", + "kms:CreateGrant", + "kms:DescribeKey" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "ClusterArn": { + "$ref": "resource-schema.json#/properties/ClusterArn" + } + }, + "required": [ + "ClusterArn" + ] + }, + "permissions": [ + "kafka:ListScramSecrets", + "kms:CreateGrant", + "kms:DescribeKey", + "secretsmanager:GetSecretValue" + ] + }, + "read": { + "permissions": [ + "kafka:ListScramSecrets", + "kms:CreateGrant", + "kms:DescribeKey", + "secretsmanager:GetSecretValue" + ] + }, + "update": { + "permissions": [ + "kafka:BatchAssociateScramSecret", + "kafka:BatchDisassociateScramSecret", + "kafka:ListScramSecrets", + "kms:CreateGrant", + "kms:DescribeKey", + "secretsmanager:GetSecretValue" + ] + } + }, + "primaryIdentifier": [ + "/properties/ClusterArn" + ], + "properties": { + "ClusterArn": { + "type": "string" + }, + "SecretArnList": { + "$ref": "#/definitions/SecretArnList" + } + }, + "required": [ + "ClusterArn" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-msk", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::MSK::BatchScramSecret" +} diff --git a/src/schema/aws-msk-cluster.json b/src/schema/aws-msk-cluster.json new file mode 100644 index 00000000..9bea92f1 --- /dev/null +++ b/src/schema/aws-msk-cluster.json @@ -0,0 +1,622 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/BrokerNodeGroupInfo/BrokerAZDistribution", + "/properties/BrokerNodeGroupInfo/ClientSubnets", + "/properties/BrokerNodeGroupInfo/SecurityGroups", + "/properties/EncryptionInfo/EncryptionAtRest", + "/properties/EncryptionInfo/EncryptionInTransit/InCluster", + "/properties/ClusterName" + ], + "definitions": { + "BrokerLogs": { + "additionalProperties": false, + "properties": { + "CloudWatchLogs": { + "$ref": "#/definitions/CloudWatchLogs" + }, + "Firehose": { + "$ref": "#/definitions/Firehose" + }, + "S3": { + "$ref": "#/definitions/S3" + } + }, + "type": "object" + }, + "BrokerNodeGroupInfo": { + "additionalProperties": false, + "properties": { + "BrokerAZDistribution": { + "maxLength": 9, + "minLength": 6, + "type": "string" + }, + "ClientSubnets": { + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "ConnectivityInfo": { + "$ref": "#/definitions/ConnectivityInfo" + }, + "InstanceType": { + "maxLength": 32, + "minLength": 5, + "type": "string" + }, + "SecurityGroups": { + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "StorageInfo": { + "$ref": "#/definitions/StorageInfo" + } + }, + "required": [ + "ClientSubnets", + "InstanceType" + ], + "type": "object" + }, + "ClientAuthentication": { + "additionalProperties": false, + "properties": { + "Sasl": { + "$ref": "#/definitions/Sasl" + }, + "Tls": { + "$ref": "#/definitions/Tls" + }, + "Unauthenticated": { + "$ref": "#/definitions/Unauthenticated" + } + }, + "type": "object" + }, + "CloudWatchLogs": { + "additionalProperties": false, + "properties": { + "Enabled": { + "type": "boolean" + }, + "LogGroup": { + "type": "string" + } + }, + "required": [ + "Enabled" + ], + "type": "object" + }, + "ConfigurationInfo": { + "additionalProperties": false, + "properties": { + "Arn": { + "type": "string" + }, + "Revision": { + "type": "integer" + } + }, + "required": [ + "Revision", + "Arn" + ], + "type": "object" + }, + "ConnectivityInfo": { + "additionalProperties": false, + "properties": { + "PublicAccess": { + "$ref": "#/definitions/PublicAccess" + }, + "VpcConnectivity": { + "$ref": "#/definitions/VpcConnectivity" + } + }, + "type": "object" + }, + "EBSStorageInfo": { + "additionalProperties": false, + "properties": { + "ProvisionedThroughput": { + "$ref": "#/definitions/ProvisionedThroughput" + }, + "VolumeSize": { + "maximum": 16384, + "minimum": 1, + "type": "integer" + } + }, + "type": "object" + }, + "EncryptionAtRest": { + "additionalProperties": false, + "properties": { + "DataVolumeKMSKeyId": { + "type": "string" + } + }, + "required": [ + "DataVolumeKMSKeyId" + ], + "type": "object" + }, + "EncryptionInTransit": { + "additionalProperties": false, + "properties": { + "ClientBroker": { + "enum": [ + "TLS", + "TLS_PLAINTEXT", + "PLAINTEXT" + ], + "type": "string" + }, + "InCluster": { + "type": "boolean" + } + }, + "type": "object" + }, + "EncryptionInfo": { + "additionalProperties": false, + "properties": { + "EncryptionAtRest": { + "$ref": "#/definitions/EncryptionAtRest" + }, + "EncryptionInTransit": { + "$ref": "#/definitions/EncryptionInTransit" + } + }, + "type": "object" + }, + "Firehose": { + "additionalProperties": false, + "properties": { + "DeliveryStream": { + "type": "string" + }, + "Enabled": { + "type": "boolean" + } + }, + "required": [ + "Enabled" + ], + "type": "object" + }, + "Iam": { + "additionalProperties": false, + "properties": { + "Enabled": { + "type": "boolean" + } + }, + "required": [ + "Enabled" + ], + "type": "object" + }, + "JmxExporter": { + "additionalProperties": false, + "properties": { + "EnabledInBroker": { + "type": "boolean" + } + }, + "required": [ + "EnabledInBroker" + ], + "type": "object" + }, + "LoggingInfo": { + "additionalProperties": false, + "properties": { + "BrokerLogs": { + "$ref": "#/definitions/BrokerLogs" + } + }, + "required": [ + "BrokerLogs" + ], + "type": "object" + }, + "NodeExporter": { + "additionalProperties": false, + "properties": { + "EnabledInBroker": { + "type": "boolean" + } + }, + "required": [ + "EnabledInBroker" + ], + "type": "object" + }, + "OpenMonitoring": { + "additionalProperties": false, + "properties": { + "Prometheus": { + "$ref": "#/definitions/Prometheus" + } + }, + "required": [ + "Prometheus" + ], + "type": "object" + }, + "Prometheus": { + "additionalProperties": false, + "properties": { + "JmxExporter": { + "$ref": "#/definitions/JmxExporter" + }, + "NodeExporter": { + "$ref": "#/definitions/NodeExporter" + } + }, + "type": "object" + }, + "ProvisionedThroughput": { + "additionalProperties": false, + "properties": { + "Enabled": { + "type": "boolean" + }, + "VolumeThroughput": { + "type": "integer" + } + }, + "type": "object" + }, + "PublicAccess": { + "additionalProperties": false, + "properties": { + "Type": { + "maxLength": 23, + "minLength": 7, + "type": "string" + } + }, + "type": "object" + }, + "S3": { + "additionalProperties": false, + "properties": { + "Bucket": { + "type": "string" + }, + "Enabled": { + "type": "boolean" + }, + "Prefix": { + "type": "string" + } + }, + "required": [ + "Enabled" + ], + "type": "object" + }, + "Sasl": { + "additionalProperties": false, + "properties": { + "Iam": { + "$ref": "#/definitions/Iam" + }, + "Scram": { + "$ref": "#/definitions/Scram" + } + }, + "type": "object" + }, + "Scram": { + "additionalProperties": false, + "properties": { + "Enabled": { + "type": "boolean" + } + }, + "required": [ + "Enabled" + ], + "type": "object" + }, + "StorageInfo": { + "additionalProperties": false, + "properties": { + "EBSStorageInfo": { + "$ref": "#/definitions/EBSStorageInfo" + } + }, + "type": "object" + }, + "Tls": { + "additionalProperties": false, + "properties": { + "CertificateAuthorityArnList": { + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "Enabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "Unauthenticated": { + "additionalProperties": false, + "properties": { + "Enabled": { + "type": "boolean" + } + }, + "required": [ + "Enabled" + ], + "type": "object" + }, + "VpcConnectivity": { + "additionalProperties": false, + "properties": { + "ClientAuthentication": { + "$ref": "#/definitions/VpcConnectivityClientAuthentication" + } + }, + "type": "object" + }, + "VpcConnectivityClientAuthentication": { + "additionalProperties": false, + "properties": { + "Sasl": { + "$ref": "#/definitions/VpcConnectivitySasl" + }, + "Tls": { + "$ref": "#/definitions/VpcConnectivityTls" + } + }, + "type": "object" + }, + "VpcConnectivityIam": { + "additionalProperties": false, + "properties": { + "Enabled": { + "type": "boolean" + } + }, + "required": [ + "Enabled" + ], + "type": "object" + }, + "VpcConnectivitySasl": { + "additionalProperties": false, + "properties": { + "Iam": { + "$ref": "#/definitions/VpcConnectivityIam" + }, + "Scram": { + "$ref": "#/definitions/VpcConnectivityScram" + } + }, + "type": "object" + }, + "VpcConnectivityScram": { + "additionalProperties": false, + "properties": { + "Enabled": { + "type": "boolean" + } + }, + "required": [ + "Enabled" + ], + "type": "object" + }, + "VpcConnectivityTls": { + "additionalProperties": false, + "properties": { + "Enabled": { + "type": "boolean" + } + }, + "required": [ + "Enabled" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::MSK::Cluster", + "handlers": { + "create": { + "permissions": [ + "ec2:DescribeSecurityGroups", + "ec2:DescribeSubnets", + "ec2:DescribeVpcs", + "iam:AttachRolePolicy", + "iam:CreateServiceLinkedRole", + "iam:PutRolePolicy", + "kms:CreateGrant", + "kms:DescribeKey", + "kafka:CreateCluster", + "kafka:DescribeCluster", + "kafka:TagResource", + "logs:CreateLogDelivery", + "logs:GetLogDelivery", + "logs:UpdateLogDelivery", + "logs:DeleteLogDelivery", + "logs:ListLogDeliveries", + "s3:GetBucketPolicy", + "s3:PutBucketPolicy", + "logs:PutResourcePolicy", + "logs:DescribeResourcePolicies", + "logs:DescribeLogGroups", + "firehose:TagDeliveryStream", + "acm-pca:GetCertificateAuthorityCertificate" + ], + "timeoutInMinutes": 120 + }, + "delete": { + "permissions": [ + "kafka:DeleteCluster", + "kafka:DescribeCluster" + ], + "timeoutInMinutes": 30 + }, + "list": { + "permissions": [ + "kafka:ListClusters" + ] + }, + "read": { + "permissions": [ + "kafka:DescribeCluster" + ] + }, + "update": { + "permissions": [ + "kafka:UpdateMonitoring", + "kafka:UpdateClusterKafkaVersion", + "kafka:UpdateClusterConfiguration", + "kafka:UpdateBrokerType", + "kafka:UpdateBrokerCount", + "kafka:UpdateBrokerStorage", + "kafka:UpdateStorage", + "kafka:UpdateSecurity", + "kafka:UpdateConnectivity", + "kafka:DescribeCluster", + "kafka:DescribeClusterOperation", + "kafka:TagResource", + "kafka:UntagResource", + "ec2:DescribeSubnets", + "ec2:DescribeVpcs", + "ec2:DescribeSecurityGroups", + "iam:AttachRolePolicy", + "iam:CreateServiceLinkedRole", + "iam:PutRolePolicy", + "kms:DescribeKey", + "kms:CreateGrant", + "logs:CreateLogDelivery", + "logs:GetLogDelivery", + "logs:UpdateLogDelivery", + "logs:DeleteLogDelivery", + "logs:ListLogDeliveries", + "s3:GetBucketPolicy", + "logs:PutResourcePolicy", + "logs:DescribeResourcePolicies", + "logs:DescribeLogGroups", + "firehose:TagDeliveryStream", + "acm-pca:GetCertificateAuthorityCertificate" + ], + "timeoutInMinutes": 720 + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "Arn": { + "type": "string" + }, + "BrokerNodeGroupInfo": { + "$ref": "#/definitions/BrokerNodeGroupInfo" + }, + "ClientAuthentication": { + "$ref": "#/definitions/ClientAuthentication" + }, + "ClusterName": { + "maxLength": 64, + "minLength": 1, + "type": "string" + }, + "ConfigurationInfo": { + "$ref": "#/definitions/ConfigurationInfo" + }, + "CurrentVersion": { + "description": "The current version of the MSK cluster", + "type": "string" + }, + "EncryptionInfo": { + "$ref": "#/definitions/EncryptionInfo" + }, + "EnhancedMonitoring": { + "enum": [ + "DEFAULT", + "PER_BROKER", + "PER_TOPIC_PER_BROKER", + "PER_TOPIC_PER_PARTITION" + ], + "maxLength": 23, + "minLength": 7, + "type": "string" + }, + "KafkaVersion": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "LoggingInfo": { + "$ref": "#/definitions/LoggingInfo" + }, + "NumberOfBrokerNodes": { + "type": "integer" + }, + "OpenMonitoring": { + "$ref": "#/definitions/OpenMonitoring" + }, + "StorageMode": { + "enum": [ + "LOCAL", + "TIERED" + ], + "maxLength": 6, + "minLength": 5, + "type": "string" + }, + "Tags": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "patternProperties": { + "^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)$": { + "type": "string" + } + }, + "type": "object" + } + }, + "readOnlyProperties": [ + "/properties/Arn" + ], + "required": [ + "BrokerNodeGroupInfo", + "KafkaVersion", + "NumberOfBrokerNodes", + "ClusterName" + ], + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "kafka:TagResource", + "kafka:UntagResource", + "kafka:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::MSK::Cluster" +} diff --git a/src/schema/aws-msk-clusterpolicy.json b/src/schema/aws-msk-clusterpolicy.json new file mode 100644 index 00000000..0b1e64da --- /dev/null +++ b/src/schema/aws-msk-clusterpolicy.json @@ -0,0 +1,79 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ClusterArn" + ], + "definitions": {}, + "description": "Resource Type definition for AWS::MSK::ClusterPolicy", + "handlers": { + "create": { + "permissions": [ + "kafka:PutClusterPolicy", + "kafka:GetClusterPolicy" + ] + }, + "delete": { + "permissions": [ + "kafka:DeleteClusterPolicy", + "kafka:GetClusterPolicy" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "ClusterArn": { + "$ref": "resource-schema.json#/properties/ClusterArn" + } + }, + "required": [ + "ClusterArn" + ] + }, + "permissions": [ + "kafka:GetClusterPolicy" + ] + }, + "read": { + "permissions": [ + "kafka:GetClusterPolicy" + ] + }, + "update": { + "permissions": [ + "kafka:PutClusterPolicy", + "kafka:GetClusterPolicy" + ] + } + }, + "primaryIdentifier": [ + "/properties/ClusterArn" + ], + "properties": { + "ClusterArn": { + "description": "The arn of the cluster for the resource policy.", + "pattern": "^arn:[\\w-]+:kafka:[\\w-]+:\\d+:cluster.*\\Z", + "type": "string" + }, + "CurrentVersion": { + "description": "The current version of the policy attached to the specified cluster", + "pattern": "^(K)([a-zA-Z0-9]+)\\Z", + "type": "string" + }, + "Policy": { + "description": "A policy document containing permissions to add to the specified cluster.", + "type": "object" + } + }, + "readOnlyProperties": [ + "/properties/CurrentVersion" + ], + "required": [ + "Policy", + "ClusterArn" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-msk", + "tagging": { + "taggable": false + }, + "typeName": "AWS::MSK::ClusterPolicy" +} diff --git a/src/schema/aws-msk-configuration.json b/src/schema/aws-msk-configuration.json new file mode 100644 index 00000000..59f9a1c4 --- /dev/null +++ b/src/schema/aws-msk-configuration.json @@ -0,0 +1,105 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/KafkaVersionsList", + "/properties/Name" + ], + "definitions": { + "KafkaVersionsList": { + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array" + }, + "LatestRevision": { + "additionalProperties": false, + "properties": { + "CreationTime": { + "type": "string" + }, + "Description": { + "type": "string" + }, + "Revision": { + "type": "integer" + } + }, + "type": "object" + } + }, + "description": "Resource Type definition for AWS::MSK::Configuration", + "handlers": { + "create": { + "permissions": [ + "kafka:CreateConfiguration", + "Kafka:DescribeConfiguration" + ] + }, + "delete": { + "permissions": [ + "kafka:DeleteConfiguration", + "kafka:DescribeConfiguration" + ] + }, + "list": { + "permissions": [ + "kafka:ListConfigurations" + ] + }, + "read": { + "permissions": [ + "kafka:DescribeConfiguration" + ] + }, + "update": { + "permissions": [ + "kafka:UpdateConfiguration", + "kafka:DescribeConfiguration" + ] + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "Arn": { + "type": "string" + }, + "Description": { + "type": "string" + }, + "KafkaVersionsList": { + "$ref": "#/definitions/KafkaVersionsList" + }, + "LatestRevision": { + "$ref": "#/definitions/LatestRevision" + }, + "Name": { + "type": "string" + }, + "ServerProperties": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/LatestRevision/CreationTime", + "/properties/LatestRevision/Revision", + "/properties/LatestRevision/Description" + ], + "required": [ + "ServerProperties", + "Name" + ], + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::MSK::Configuration", + "writeOnlyProperties": [ + "/properties/ServerProperties" + ] +} diff --git a/src/schema/aws-msk-replicator.json b/src/schema/aws-msk-replicator.json new file mode 100644 index 00000000..b6ea7d40 --- /dev/null +++ b/src/schema/aws-msk-replicator.json @@ -0,0 +1,416 @@ +{ + "additionalIdentifiers": [ + [ + "/properties/ReplicatorName" + ] + ], + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ReplicatorName", + "/properties/Description", + "/properties/KafkaClusters", + "/properties/ServiceExecutionRoleArn", + "/properties/ReplicationInfoList/*/SourceKafkaClusterArn", + "/properties/ReplicationInfoList/*/TargetKafkaClusterArn", + "/properties/ReplicationInfoList/*/TargetCompressionType", + "/properties/ReplicationInfoList/*/TopicReplication/StartingPosition", + "/properties/ReplicationInfoList/*/TopicReplication/TopicNameConfiguration" + ], + "definitions": { + "AmazonMskCluster": { + "additionalProperties": false, + "description": "Details of an Amazon MSK cluster.", + "properties": { + "MskClusterArn": { + "description": "The ARN of an Amazon MSK cluster.", + "pattern": "arn:(aws|aws-us-gov|aws-cn):kafka:.*", + "type": "string" + } + }, + "required": [ + "MskClusterArn" + ], + "type": "object" + }, + "ConsumerGroupReplication": { + "additionalProperties": false, + "description": "Configuration relating to consumer group replication.", + "properties": { + "ConsumerGroupsToExclude": { + "description": "List of regular expression patterns indicating the consumer groups that should not be replicated.", + "insertionOrder": false, + "items": { + "maxLength": 256, + "type": "string" + }, + "maxItems": 100, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "ConsumerGroupsToReplicate": { + "description": "List of regular expression patterns indicating the consumer groups to copy.", + "insertionOrder": false, + "items": { + "maxLength": 256, + "type": "string" + }, + "maxItems": 100, + "minItems": 0, + "type": "array", + "uniqueItems": true + }, + "DetectAndCopyNewConsumerGroups": { + "description": "Whether to periodically check for new consumer groups.", + "type": "boolean" + }, + "SynchroniseConsumerGroupOffsets": { + "description": "Whether to periodically write the translated offsets to __consumer_offsets topic in target cluster.", + "type": "boolean" + } + }, + "required": [ + "ConsumerGroupsToReplicate" + ], + "type": "object" + }, + "KafkaCluster": { + "additionalProperties": false, + "description": "Details of a Kafka cluster for replication.", + "properties": { + "AmazonMskCluster": { + "$ref": "#/definitions/AmazonMskCluster", + "description": "Details of an Amazon MSK cluster. Exactly one of AmazonMskCluster is required." + }, + "VpcConfig": { + "$ref": "#/definitions/KafkaClusterClientVpcConfig", + "description": "Details of an Amazon VPC which has network connectivity to the Apache Kafka cluster." + } + }, + "required": [ + "AmazonMskCluster", + "VpcConfig" + ], + "type": "object" + }, + "KafkaClusterClientVpcConfig": { + "additionalProperties": false, + "description": "Details of an Amazon VPC which has network connectivity to the Kafka cluster.", + "properties": { + "SecurityGroupIds": { + "description": "The AWS security groups to associate with the elastic network interfaces in order to specify what the replicator has access to. If a security group is not specified, the default security group associated with the VPC is used.", + "insertionOrder": false, + "items": { + "type": "string" + }, + "maxItems": 16, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "SubnetIds": { + "description": "The list of subnets to connect to in the virtual private cloud (VPC). AWS creates elastic network interfaces inside these subnets.", + "insertionOrder": false, + "items": { + "type": "string" + }, + "maxItems": 3, + "minItems": 2, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "SubnetIds" + ], + "type": "object" + }, + "ReplicationInfo": { + "additionalProperties": false, + "description": "Specifies configuration for replication between a source and target Kafka cluster.", + "properties": { + "ConsumerGroupReplication": { + "$ref": "#/definitions/ConsumerGroupReplication", + "description": "Configuration relating to consumer group replication." + }, + "SourceKafkaClusterArn": { + "description": "Amazon Resource Name of the source Kafka cluster.", + "pattern": "arn:(aws|aws-us-gov|aws-cn):kafka:.*", + "type": "string" + }, + "TargetCompressionType": { + "description": "The type of compression to use writing records to target Kafka cluster.", + "enum": [ + "NONE", + "GZIP", + "SNAPPY", + "LZ4", + "ZSTD" + ], + "type": "string" + }, + "TargetKafkaClusterArn": { + "description": "Amazon Resource Name of the target Kafka cluster.", + "pattern": "arn:(aws|aws-us-gov|aws-cn):kafka:.*", + "type": "string" + }, + "TopicReplication": { + "$ref": "#/definitions/TopicReplication", + "description": "Configuration relating to topic replication." + } + }, + "required": [ + "SourceKafkaClusterArn", + "TargetKafkaClusterArn", + "TopicReplication", + "ConsumerGroupReplication", + "TargetCompressionType" + ], + "type": "object" + }, + "ReplicationStartingPosition": { + "additionalProperties": false, + "description": "Configuration for specifying the position in the topics to start replicating from.", + "properties": { + "Type": { + "$ref": "#/definitions/ReplicationStartingPositionType" + } + }, + "required": [], + "type": "object" + }, + "ReplicationStartingPositionType": { + "description": "The type of replication starting position.", + "enum": [ + "LATEST", + "EARLIEST" + ], + "type": "string" + }, + "ReplicationTopicNameConfiguration": { + "additionalProperties": false, + "description": "Configuration for specifying replicated topic names should be the same as their corresponding upstream topics or prefixed with source cluster alias.", + "properties": { + "Type": { + "$ref": "#/definitions/ReplicationTopicNameConfigurationType" + } + }, + "required": [], + "type": "object" + }, + "ReplicationTopicNameConfigurationType": { + "description": "The type of replicated topic name.", + "enum": [ + "PREFIXED_WITH_SOURCE_CLUSTER_ALIAS", + "IDENTICAL" + ], + "type": "string" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "maxLength": 256, + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + }, + "TopicReplication": { + "additionalProperties": false, + "properties": { + "CopyAccessControlListsForTopics": { + "description": "Whether to periodically configure remote topic ACLs to match their corresponding upstream topics.", + "type": "boolean" + }, + "CopyTopicConfigurations": { + "description": "Whether to periodically configure remote topics to match their corresponding upstream topics.", + "type": "boolean" + }, + "DetectAndCopyNewTopics": { + "description": "Whether to periodically check for new topics and partitions.", + "type": "boolean" + }, + "StartingPosition": { + "$ref": "#/definitions/ReplicationStartingPosition", + "description": "Configuration for specifying the position in the topics to start replicating from." + }, + "TopicNameConfiguration": { + "$ref": "#/definitions/ReplicationTopicNameConfiguration", + "description": "Configuration for specifying replicated topic names should be the same as their corresponding upstream topics or prefixed with source cluster alias." + }, + "TopicsToExclude": { + "description": "List of regular expression patterns indicating the topics that should not be replicated.", + "insertionOrder": false, + "items": { + "maxLength": 249, + "type": "string" + }, + "maxItems": 100, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "TopicsToReplicate": { + "description": "List of regular expression patterns indicating the topics to copy.", + "insertionOrder": false, + "items": { + "maxLength": 249, + "type": "string" + }, + "maxItems": 100, + "minItems": 1, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "TopicsToReplicate" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::MSK::Replicator", + "handlers": { + "create": { + "permissions": [ + "ec2:CreateNetworkInterface", + "ec2:DescribeSecurityGroups", + "ec2:DescribeSubnets", + "ec2:DescribeVpcs", + "iam:CreateServiceLinkedRole", + "iam:PassRole", + "kafka:CreateReplicator", + "kafka:CreateReplicatorReference", + "kafka:DescribeClusterV2", + "kafka:DescribeReplicator", + "kafka:GetBootstrapBrokers", + "kafka:ListTagsForResource", + "kafka:TagResource" + ] + }, + "delete": { + "permissions": [ + "kafka:DeleteReplicator", + "kafka:DescribeReplicator", + "kafka:ListTagsForResource", + "kafka:UntagResource" + ] + }, + "list": { + "permissions": [ + "kafka:ListReplicators" + ] + }, + "read": { + "permissions": [ + "kafka:DescribeReplicator", + "kafka:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "kafka:DescribeReplicator", + "kafka:ListTagsForResource", + "kafka:TagResource", + "kafka:UntagResource", + "kafka:UpdateReplicationInfo" + ] + } + }, + "primaryIdentifier": [ + "/properties/ReplicatorArn" + ], + "properties": { + "CurrentVersion": { + "description": "The current version of the MSK replicator.", + "type": "string" + }, + "Description": { + "description": "A summary description of the replicator.", + "maxLength": 1024, + "type": "string" + }, + "KafkaClusters": { + "description": "Specifies a list of Kafka clusters which are targets of the replicator.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/KafkaCluster" + }, + "maxItems": 2, + "minItems": 2, + "type": "array", + "uniqueItems": true + }, + "ReplicationInfoList": { + "description": "A list of replication configurations, where each configuration targets a given source cluster to target cluster replication flow.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/ReplicationInfo" + }, + "maxItems": 1, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "ReplicatorArn": { + "description": "Amazon Resource Name for the created replicator.", + "pattern": "arn:(aws|aws-us-gov|aws-cn):kafka:.*", + "type": "string" + }, + "ReplicatorName": { + "description": "The name of the replicator.", + "maxLength": 128, + "minLength": 1, + "pattern": "^[0-9A-Za-z][0-9A-Za-z-]{0,}$", + "type": "string" + }, + "ServiceExecutionRoleArn": { + "description": "The Amazon Resource Name (ARN) of the IAM role used by the replicator to access external resources.", + "pattern": "arn:(aws|aws-us-gov|aws-cn):iam:.*", + "type": "string" + }, + "Tags": { + "description": "A collection of tags associated with a resource", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/ReplicatorArn", + "/properties/CurrentVersion" + ], + "required": [ + "ReplicatorName", + "ReplicationInfoList", + "KafkaClusters", + "ServiceExecutionRoleArn" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-msk-replicator.git", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "kafka:UntagResource", + "kafka:ListTagsForResource", + "kafka:TagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::MSK::Replicator" +} diff --git a/src/schema/aws-msk-serverlesscluster.json b/src/schema/aws-msk-serverlesscluster.json new file mode 100644 index 00000000..4f24ff7a --- /dev/null +++ b/src/schema/aws-msk-serverlesscluster.json @@ -0,0 +1,163 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ClusterName", + "/properties/VpcConfigs", + "/properties/ClientAuthentication", + "/properties/Tags" + ], + "definitions": { + "ClientAuthentication": { + "additionalProperties": false, + "properties": { + "Sasl": { + "$ref": "#/definitions/Sasl" + } + }, + "required": [ + "Sasl" + ], + "type": "object" + }, + "Iam": { + "additionalProperties": false, + "properties": { + "Enabled": { + "type": "boolean" + } + }, + "required": [ + "Enabled" + ], + "type": "object" + }, + "Sasl": { + "additionalProperties": false, + "properties": { + "Iam": { + "$ref": "#/definitions/Iam" + } + }, + "required": [ + "Iam" + ], + "type": "object" + }, + "VpcConfig": { + "additionalProperties": false, + "properties": { + "SecurityGroups": { + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "SubnetIds": { + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "SubnetIds" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::MSK::ServerlessCluster", + "handlers": { + "create": { + "permissions": [ + "kafka:CreateClusterV2", + "kafka:TagResource", + "kafka:DescribeClusterV2", + "ec2:CreateVpcEndpoint", + "ec2:CreateTags", + "ec2:DescribeVpcAttribute", + "ec2:DescribeSubnets", + "ec2:DescribeVpcEndpoints", + "ec2:DescribeVpcs", + "ec2:DescribeSecurityGroups" + ], + "timeoutInMinutes": 120 + }, + "delete": { + "permissions": [ + "kafka:DeleteCluster", + "kafka:DescribeClusterV2", + "ec2:DeleteVpcEndpoints" + ], + "timeoutInMinutes": 75 + }, + "list": { + "permissions": [ + "kafka:ListClustersV2" + ] + }, + "read": { + "permissions": [ + "kafka:DescribeClusterV2" + ] + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "Arn": { + "type": "string" + }, + "ClientAuthentication": { + "$ref": "#/definitions/ClientAuthentication" + }, + "ClusterName": { + "maxLength": 64, + "minLength": 1, + "type": "string" + }, + "Tags": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "patternProperties": { + "^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)$": { + "type": "string" + } + }, + "type": "object" + }, + "VpcConfigs": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/VpcConfig" + }, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/Arn" + ], + "required": [ + "ClusterName", + "VpcConfigs", + "ClientAuthentication" + ], + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "kafka:TagResource", + "kafka:UntagResource", + "kafka:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": false, + "taggable": true + }, + "typeName": "AWS::MSK::ServerlessCluster" +} diff --git a/src/schema/aws-msk-vpcconnection.json b/src/schema/aws-msk-vpcconnection.json new file mode 100644 index 00000000..74de6407 --- /dev/null +++ b/src/schema/aws-msk-vpcconnection.json @@ -0,0 +1,166 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ClientSubnets", + "/properties/Authentication", + "/properties/SecurityGroups", + "/properties/TargetClusterArn", + "/properties/VpcId" + ], + "definitions": { + "Authentication": { + "description": "The type of private link authentication", + "enum": [ + "SASL_IAM", + "SASL_SCRAM", + "TLS" + ], + "maxLength": 10, + "minLength": 3, + "type": "string" + }, + "ClientSubnets": { + "insertionOrder": false, + "items": { + "pattern": "^(subnet-)([a-z0-9]+)\\Z", + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "SecurityGroups": { + "insertionOrder": false, + "items": { + "pattern": "^(sg-)([a-z0-9]+)\\Z", + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "Tags": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "patternProperties": { + "^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)$": { + "type": "string" + } + }, + "type": "object" + }, + "VpcId": { + "pattern": "^(vpc-)([a-z0-9]+)\\Z", + "type": "string" + } + }, + "description": "Resource Type definition for AWS::MSK::VpcConnection", + "handlers": { + "create": { + "permissions": [ + "ec2:CreateVpcEndpoint", + "ec2:DescribeSecurityGroups", + "ec2:DescribeSubnets", + "ec2:DescribeVpcAttribute", + "ec2:DescribeVpcs", + "ec2:DescribeVpcEndpoints", + "ec2:AcceptVpcEndpointConnections", + "ec2:RejectVpcEndpointConnections", + "ec2:DescribeVpcEndpointConnections", + "ec2:CreateTags", + "iam:AttachRolePolicy", + "iam:CreateServiceLinkedRole", + "iam:PutRolePolicy", + "kafka:CreateVpcConnection", + "kafka:DescribeVpcConnection", + "kafka:TagResource", + "kms:CreateGrant", + "kms:DescribeKey" + ] + }, + "delete": { + "permissions": [ + "ec2:DeleteVpcEndpoint", + "ec2:DeleteVpcEndpoints", + "ec2:DescribeVpcEndpoints", + "ec2:DescribeVpcEndpointConnections", + "kafka:DeleteVpcConnection", + "kafka:DescribeVpcConnection", + "kms:CreateGrant", + "kms:DescribeKey" + ] + }, + "list": { + "permissions": [ + "kafka:ListVpcConnections", + "kms:CreateGrant", + "kms:DescribeKey" + ] + }, + "read": { + "permissions": [ + "kafka:DescribeVpcConnection", + "kms:CreateGrant", + "kms:DescribeKey" + ] + }, + "update": { + "permissions": [ + "kafka:DescribeVpcConnection", + "kms:CreateGrant", + "kms:DescribeKey", + "kafka:TagResource", + "kafka:UntagResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "Arn": { + "type": "string" + }, + "Authentication": { + "$ref": "#/definitions/Authentication" + }, + "ClientSubnets": { + "$ref": "#/definitions/ClientSubnets" + }, + "SecurityGroups": { + "$ref": "#/definitions/SecurityGroups" + }, + "Tags": { + "$ref": "#/definitions/Tags" + }, + "TargetClusterArn": { + "description": "The Amazon Resource Name (ARN) of the target cluster", + "pattern": "^arn:[\\w-]+:kafka:[\\w-]+:\\d+:cluster.*\\Z", + "type": "string" + }, + "VpcId": { + "$ref": "#/definitions/VpcId" + } + }, + "readOnlyProperties": [ + "/properties/Arn" + ], + "required": [ + "Authentication", + "ClientSubnets", + "SecurityGroups", + "TargetClusterArn", + "VpcId" + ], + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "kafka:TagResource", + "kafka:UntagResource", + "kafka:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::MSK::VpcConnection" +} diff --git a/src/schema/aws-mwaa-environment.json b/src/schema/aws-mwaa-environment.json new file mode 100644 index 00000000..b96676da --- /dev/null +++ b/src/schema/aws-mwaa-environment.json @@ -0,0 +1,566 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name", + "/properties/KmsKey", + "/properties/NetworkConfiguration/SubnetIds", + "/properties/EndpointManagement" + ], + "definitions": { + "AirflowArn": { + "description": "", + "maxLength": 1224, + "minLength": 1, + "pattern": "^arn:(aws|aws-us-gov|aws-cn|aws-iso|aws-iso-b)(-[a-z]+)?:airflow:[a-z0-9\\-]+:\\d{12}:environment/\\w+", + "type": "string" + }, + "AirflowVersion": { + "description": "Version of airflow to deploy to the environment.", + "maxLength": 32, + "pattern": "^[0-9a-z.]+$", + "type": "string" + }, + "CeleryExecutorQueue": { + "description": "The celery executor queue associated with the environment.", + "maxLength": 1224, + "type": "string" + }, + "CloudWatchLogGroupArn": { + "description": "", + "maxLength": 1224, + "pattern": "^arn:(aws|aws-us-gov|aws-cn|aws-iso|aws-iso-b)(-[a-z]+)?:logs:[a-z0-9\\-]+:\\d{12}:log-group:\\w+", + "type": "string" + }, + "ConfigKey": { + "description": "", + "maxLength": 64, + "pattern": "^[a-z]+([a-z._]*[a-z]+)?$", + "type": "string" + }, + "ConfigValue": { + "description": "", + "maxLength": 256, + "pattern": ".*", + "type": "string" + }, + "CreatedAt": { + "description": "When the environment resource was created.", + "type": "string" + }, + "DatabaseVpcEndpointService": { + "description": "The database VPC endpoint service name.", + "maxLength": 1224, + "type": "string" + }, + "EndpointManagement": { + "description": "Defines whether the VPC endpoints configured for the environment are created, and managed, by the customer or by Amazon MWAA.", + "enum": [ + "CUSTOMER", + "SERVICE" + ], + "type": "string" + }, + "EnvironmentArn": { + "description": "ARN for the MWAA environment.", + "maxLength": 1224, + "minLength": 1, + "pattern": "^arn:(aws|aws-us-gov|aws-cn|aws-iso|aws-iso-b)(-[a-z]+)?:airflow:[a-z0-9\\-]+:\\d{12}:environment/\\w+", + "type": "string" + }, + "EnvironmentClass": { + "description": "Templated configuration for airflow processes and backing infrastructure.", + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "EnvironmentName": { + "description": "Customer-defined identifier for the environment, unique per customer region.", + "maxLength": 80, + "minLength": 1, + "pattern": "^[a-zA-Z][0-9a-zA-Z\\-_]*$", + "type": "string" + }, + "EnvironmentStatus": { + "description": "The status of the environment.", + "enum": [ + "CREATING", + "CREATE_FAILED", + "AVAILABLE", + "UPDATING", + "DELETING", + "DELETED", + "UPDATE_FAILED", + "UNAVAILABLE", + "PENDING" + ], + "type": "string" + }, + "ErrorCode": { + "description": "The error code associated with an error.", + "type": "string" + }, + "ErrorMessage": { + "description": "Error message describing a failed operation.", + "maxLength": 1024, + "minLength": 1, + "pattern": "^.+$", + "type": "string" + }, + "ExecutionRoleArn": { + "description": "IAM role to be used by tasks.", + "maxLength": 1224, + "pattern": "^arn:(aws|aws-us-gov|aws-cn|aws-iso|aws-iso-b)(-[a-z]+)?:iam::\\d{12}:role/?[a-zA-Z_0-9+=,.@\\-_/]+$", + "type": "string" + }, + "KmsKey": { + "description": "The identifier of the AWS Key Management Service (AWS KMS) customer master key (CMK) to use for MWAA data encryption.\n\n You can specify the CMK using any of the following:\n\n Key ID. For example, key/1234abcd-12ab-34cd-56ef-1234567890ab.\n\n Key alias. For example, alias/ExampleAlias.\n\n Key ARN. For example, arn:aws:kms:us-east-1:012345678910:key/abcd1234-a123-456a-a12b-a123b4cd56ef.\n\n Alias ARN. For example, arn:aws:kms:us-east-1:012345678910:alias/ExampleAlias.\n\n AWS authenticates the CMK asynchronously. Therefore, if you specify an ID, alias, or ARN that is not valid, the action can appear to complete, but eventually fails.", + "maxLength": 1224, + "pattern": "^(((arn:(aws|aws-us-gov|aws-cn|aws-iso|aws-iso-b)(-[a-z]+)?:kms:[a-z]{2}-[a-z]+-\\d:\\d+:)?key\\/)?[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}|(arn:(aws|aws-us-gov|aws-cn|aws-iso|aws-iso-b):kms:[a-z]{2}-[a-z]+-\\d:\\d+:)?alias/.+)$", + "type": "string" + }, + "LastUpdate": { + "additionalProperties": false, + "description": "Details about the last update performed on the environment.", + "properties": { + "CreatedAt": { + "$ref": "#/definitions/UpdateCreatedAt" + }, + "Error": { + "$ref": "#/definitions/UpdateError" + }, + "Status": { + "$ref": "#/definitions/UpdateStatus" + } + }, + "type": "object" + }, + "LoggingConfiguration": { + "additionalProperties": false, + "description": "Logging configuration for the environment.", + "properties": { + "DagProcessingLogs": { + "$ref": "#/definitions/ModuleLoggingConfiguration" + }, + "SchedulerLogs": { + "$ref": "#/definitions/ModuleLoggingConfiguration" + }, + "TaskLogs": { + "$ref": "#/definitions/ModuleLoggingConfiguration" + }, + "WebserverLogs": { + "$ref": "#/definitions/ModuleLoggingConfiguration" + }, + "WorkerLogs": { + "$ref": "#/definitions/ModuleLoggingConfiguration" + } + }, + "type": "object" + }, + "LoggingConfigurationInput": { + "additionalProperties": false, + "description": "Configures logging for the environment.", + "properties": { + "DagProcessingLogs": { + "$ref": "#/definitions/ModuleLoggingConfigurationInput" + }, + "SchedulerLogs": { + "$ref": "#/definitions/ModuleLoggingConfigurationInput" + }, + "TaskLogs": { + "$ref": "#/definitions/ModuleLoggingConfigurationInput" + }, + "WebserverLogs": { + "$ref": "#/definitions/ModuleLoggingConfigurationInput" + }, + "WorkerLogs": { + "$ref": "#/definitions/ModuleLoggingConfigurationInput" + } + }, + "type": "object" + }, + "LoggingEnabled": { + "description": "", + "type": "boolean" + }, + "LoggingLevel": { + "description": "", + "enum": [ + "CRITICAL", + "ERROR", + "WARNING", + "INFO", + "DEBUG" + ], + "type": "string" + }, + "MaxWebservers": { + "description": "Maximum webserver compute units.", + "minimum": 1, + "type": "integer" + }, + "MaxWorkers": { + "description": "Maximum worker compute units.", + "minimum": 1, + "type": "integer" + }, + "MinWebservers": { + "description": "Minimum webserver compute units.", + "minimum": 1, + "type": "integer" + }, + "MinWorkers": { + "description": "Minimum worker compute units.", + "minimum": 1, + "type": "integer" + }, + "ModuleLoggingConfiguration": { + "additionalProperties": false, + "description": "Logging configuration for a specific airflow component.", + "properties": { + "CloudWatchLogGroupArn": { + "$ref": "#/definitions/CloudWatchLogGroupArn" + }, + "Enabled": { + "$ref": "#/definitions/LoggingEnabled" + }, + "LogLevel": { + "$ref": "#/definitions/LoggingLevel" + } + }, + "type": "object" + }, + "ModuleLoggingConfigurationInput": { + "additionalProperties": false, + "description": "Configures airflow component logging for the environment.", + "properties": { + "Enabled": { + "$ref": "#/definitions/LoggingEnabled" + }, + "LogLevel": { + "$ref": "#/definitions/LoggingLevel" + } + }, + "type": "object" + }, + "NetworkConfiguration": { + "additionalProperties": false, + "description": "Configures the network resources of the environment.", + "properties": { + "SecurityGroupIds": { + "description": "A list of security groups to use for the environment.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/SecurityGroupId" + }, + "maxItems": 5, + "minItems": 1, + "type": "array" + }, + "SubnetIds": { + "description": "A list of subnets to use for the environment. These must be private subnets, in the same VPC, in two different availability zones.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/SubnetId" + }, + "maxItems": 2, + "minItems": 2, + "type": "array" + } + }, + "type": "object" + }, + "RelativePath": { + "description": "Represents an S3 prefix relative to the root of an S3 bucket.", + "maxLength": 1024, + "pattern": ".*", + "type": "string" + }, + "S3BucketArn": { + "description": "ARN for the AWS S3 bucket to use as the source of DAGs and plugins for the environment.", + "maxLength": 1224, + "minLength": 1, + "pattern": "^arn:(aws|aws-us-gov|aws-cn|aws-iso|aws-iso-b)(-[a-z]+)?:s3:::[a-z0-9.\\-]+$", + "type": "string" + }, + "S3ObjectVersion": { + "description": "Represents an version ID for an S3 object.", + "maxLength": 1024, + "type": "string" + }, + "Schedulers": { + "description": "Scheduler compute units.", + "minimum": 1, + "type": "integer" + }, + "SecurityGroupId": { + "description": "", + "maxLength": 1024, + "minLength": 1, + "pattern": "^sg-[a-zA-Z0-9\\-._]+$", + "type": "string" + }, + "ServiceRoleArn": { + "description": "IAM role to be used by MWAA to perform AWS API calls on behalf of the customer.", + "maxLength": 1224, + "pattern": "^arn:(aws|aws-us-gov|aws-cn|aws-iso|aws-iso-b)(-[a-z]+)?:iam::\\d{12}:role/?[a-zA-Z_0-9+=,.@\\-_/]+$", + "type": "string" + }, + "SubnetId": { + "description": "", + "maxLength": 1024, + "pattern": "^subnet-[a-zA-Z0-9\\-._]+$", + "type": "string" + }, + "UpdateCreatedAt": { + "description": "When the update request was created.", + "type": "string" + }, + "UpdateError": { + "additionalProperties": false, + "description": "The error associated with an update request.", + "properties": { + "ErrorCode": { + "$ref": "#/definitions/ErrorCode" + }, + "ErrorMessage": { + "$ref": "#/definitions/ErrorMessage" + } + }, + "type": "object" + }, + "UpdateStatus": { + "description": "", + "enum": [ + "SUCCESS", + "PENDING", + "FAILED" + ], + "type": "string" + }, + "WebserverAccessMode": { + "description": "Choice for mode of webserver access including over public internet or via private VPC endpoint.", + "enum": [ + "PRIVATE_ONLY", + "PUBLIC_ONLY" + ], + "type": "string" + }, + "WebserverUrl": { + "description": "Url endpoint for the environment's Airflow UI.", + "maxLength": 256, + "minLength": 1, + "pattern": "^https://.+$", + "type": "string" + }, + "WebserverVpcEndpointService": { + "description": "The webserver VPC endpoint service name, applicable if private webserver access mode selected.", + "maxLength": 1224, + "type": "string" + }, + "WeeklyMaintenanceWindowStart": { + "description": "Start time for the weekly maintenance window.", + "maxLength": 9, + "pattern": "(MON|TUE|WED|THU|FRI|SAT|SUN):([01]\\d|2[0-3]):(00|30)", + "type": "string" + } + }, + "description": "Resource schema for AWS::MWAA::Environment", + "handlers": { + "create": { + "permissions": [ + "airflow:GetEnvironment", + "airflow:CreateEnvironment", + "airflow:TagResource", + "airflow:UntagResource", + "iam:PassRole", + "iam:ListRoles", + "iam:CreatePolicy", + "iam:AttachRolePolicy", + "iam:CreateRole", + "iam:CreateServiceLinkedRole", + "s3:GetBucketLocation", + "s3:ListAllMyBuckets", + "s3:ListBucket", + "s3:ListBucketVersions", + "s3:CreateBucket", + "s3:PutObject", + "s3:GetEncryptionConfiguration", + "ec2:DescribeSecurityGroups", + "ec2:DescribeSubnets", + "ec2:DescribeVpcs", + "ec2:DescribeRouteTables", + "ec2:AuthorizeSecurityGroupIngress", + "ec2:CreateSecurityGroup", + "ec2:CreateVpcEndpoint", + "ec2:CreateNetworkInterface", + "kms:CreateGrant", + "kms:DescribeKey", + "kms:ListAliases" + ], + "timeoutInMinutes": 180 + }, + "delete": { + "permissions": [ + "airflow:GetEnvironment", + "airflow:DeleteEnvironment" + ] + }, + "list": { + "permissions": [ + "airflow:ListEnvironments" + ] + }, + "read": { + "permissions": [ + "airflow:GetEnvironment" + ] + }, + "update": { + "permissions": [ + "airflow:GetEnvironment", + "airflow:UpdateEnvironment", + "airflow:TagResource", + "airflow:UntagResource", + "iam:PassRole", + "iam:ListRoles", + "iam:AttachRolePolicy", + "s3:GetBucketLocation", + "s3:ListBucket", + "s3:ListBucketVersions", + "s3:GetEncryptionConfiguration", + "ec2:DescribeSecurityGroups", + "ec2:DescribeSubnets", + "ec2:DescribeVpcs", + "ec2:DescribeRouteTables", + "kms:DescribeKey", + "kms:ListAliases" + ], + "timeoutInMinutes": 480 + } + }, + "primaryIdentifier": [ + "/properties/Name" + ], + "properties": { + "AirflowConfigurationOptions": { + "description": "Key/value pairs representing Airflow configuration variables.\n Keys are prefixed by their section:\n\n [core]\n dags_folder={AIRFLOW_HOME}/dags\n\n Would be represented as\n\n \"core.dags_folder\": \"{AIRFLOW_HOME}/dags\"", + "type": "object" + }, + "AirflowVersion": { + "$ref": "#/definitions/AirflowVersion" + }, + "Arn": { + "$ref": "#/definitions/EnvironmentArn" + }, + "CeleryExecutorQueue": { + "$ref": "#/definitions/CeleryExecutorQueue" + }, + "DagS3Path": { + "$ref": "#/definitions/RelativePath" + }, + "DatabaseVpcEndpointService": { + "$ref": "#/definitions/DatabaseVpcEndpointService" + }, + "EndpointManagement": { + "$ref": "#/definitions/EndpointManagement" + }, + "EnvironmentClass": { + "$ref": "#/definitions/EnvironmentClass" + }, + "ExecutionRoleArn": { + "$ref": "#/definitions/ExecutionRoleArn" + }, + "KmsKey": { + "$ref": "#/definitions/KmsKey" + }, + "LoggingConfiguration": { + "$ref": "#/definitions/LoggingConfiguration" + }, + "MaxWebservers": { + "$ref": "#/definitions/MaxWebservers" + }, + "MaxWorkers": { + "$ref": "#/definitions/MaxWorkers" + }, + "MinWebservers": { + "$ref": "#/definitions/MinWebservers" + }, + "MinWorkers": { + "$ref": "#/definitions/MinWorkers" + }, + "Name": { + "$ref": "#/definitions/EnvironmentName" + }, + "NetworkConfiguration": { + "$ref": "#/definitions/NetworkConfiguration" + }, + "PluginsS3ObjectVersion": { + "$ref": "#/definitions/S3ObjectVersion" + }, + "PluginsS3Path": { + "$ref": "#/definitions/RelativePath" + }, + "RequirementsS3ObjectVersion": { + "$ref": "#/definitions/S3ObjectVersion" + }, + "RequirementsS3Path": { + "$ref": "#/definitions/RelativePath" + }, + "Schedulers": { + "$ref": "#/definitions/Schedulers" + }, + "SourceBucketArn": { + "$ref": "#/definitions/S3BucketArn" + }, + "StartupScriptS3ObjectVersion": { + "$ref": "#/definitions/S3ObjectVersion" + }, + "StartupScriptS3Path": { + "$ref": "#/definitions/RelativePath" + }, + "Tags": { + "description": "A map of tags for the environment.", + "type": "object" + }, + "WebserverAccessMode": { + "$ref": "#/definitions/WebserverAccessMode" + }, + "WebserverUrl": { + "$ref": "#/definitions/WebserverUrl" + }, + "WebserverVpcEndpointService": { + "$ref": "#/definitions/WebserverVpcEndpointService" + }, + "WeeklyMaintenanceWindowStart": { + "$ref": "#/definitions/WeeklyMaintenanceWindowStart" + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/CeleryExecutorQueue", + "/properties/DatabaseVpcEndpointService", + "/properties/WebserverVpcEndpointService", + "/properties/WebserverUrl", + "/properties/LoggingConfiguration/DagProcessingLogs/CloudWatchLogGroupArn", + "/properties/LoggingConfiguration/SchedulerLogs/CloudWatchLogGroupArn", + "/properties/LoggingConfiguration/WebserverLogs/CloudWatchLogGroupArn", + "/properties/LoggingConfiguration/WorkerLogs/CloudWatchLogGroupArn", + "/properties/LoggingConfiguration/TaskLogs/CloudWatchLogGroupArn" + ], + "required": [ + "Name" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-mwaa.git", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "airflow:UntagResource", + "airflow:TagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::MWAA::Environment" +} diff --git a/src/schema/aws-neptune-dbcluster.json b/src/schema/aws-neptune-dbcluster.json new file mode 100644 index 00000000..1750055c --- /dev/null +++ b/src/schema/aws-neptune-dbcluster.json @@ -0,0 +1,342 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/AvailabilityZones", + "/properties/DBClusterIdentifier", + "/properties/DBSubnetGroupName", + "/properties/KmsKeyId", + "/properties/RestoreToTime", + "/properties/RestoreType", + "/properties/SnapshotIdentifier", + "/properties/SourceDBClusterIdentifier", + "/properties/StorageEncrypted", + "/properties/UseLatestRestorableTime" + ], + "definitions": { + "DBClusterRole": { + "additionalProperties": false, + "description": "Describes an AWS Identity and Access Management (IAM) role that is associated with a DB cluster.", + "properties": { + "FeatureName": { + "description": "The name of the feature associated with the AWS Identity and Access Management (IAM) role. For the list of supported feature names, see DBEngineVersion in the Amazon Neptune API Reference.", + "type": "string" + }, + "RoleArn": { + "description": "The Amazon Resource Name (ARN) of the IAM role that is associated with the DB cluster.", + "type": "string" + } + }, + "required": [ + "RoleArn" + ], + "type": "object" + }, + "ServerlessScalingConfiguration": { + "additionalProperties": false, + "description": "Contains the scaling configuration of an Neptune Serverless DB cluster.", + "properties": { + "MaxCapacity": { + "description": "The maximum number of Neptune capacity units (NCUs) for a DB instance in an Neptune Serverless cluster. You can specify NCU values in half-step increments, such as 40, 40.5, 41, and so on. The smallest value you can use is 2.5, whereas the largest is 128.", + "maximum": 128, + "minimum": 2.5, + "type": "number" + }, + "MinCapacity": { + "description": "The minimum number of Neptune capacity units (NCUs) for a DB instance in an Neptune Serverless cluster. You can specify NCU values in half-step increments, such as 8, 8.5, 9, and so on. The smallest value you can use is 1, whereas the largest is 128.", + "maximum": 128, + "minimum": 1, + "type": "number" + } + }, + "required": [ + "MinCapacity", + "MaxCapacity" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key" + ], + "type": "object" + } + }, + "description": "The AWS::Neptune::DBCluster resource creates an Amazon Neptune DB cluster.", + "handlers": { + "create": { + "permissions": [ + "iam:PassRole", + "iam:CreateServiceLinkedRole", + "rds:AddRoleToDBCluster", + "rds:AddTagsToResource", + "rds:CreateDBCluster", + "rds:CreateDBInstance", + "rds:DescribeDBClusters", + "rds:ListTagsForResource", + "rds:ModifyDBCluster", + "rds:RestoreDBClusterFromSnapshot", + "rds:RestoreDBClusterToPointInTime", + "kms:CreateGrant", + "kms:DescribeKey" + ], + "timeoutInMinutes": 2160 + }, + "delete": { + "permissions": [ + "rds:DeleteDBCluster", + "rds:DeleteDBInstance", + "rds:DescribeDBClusters", + "rds:DescribeGlobalClusters", + "rds:ListTagsForResource", + "rds:RemoveFromGlobalCluster", + "rds:CreateDBClusterSnapshot", + "kms:CreateGrant", + "kms:DescribeKey" + ], + "timeoutInMinutes": 2160 + }, + "list": { + "permissions": [ + "rds:DescribeDBClusters", + "rds:ListTagsForResource", + "kms:CreateGrant", + "kms:DescribeKey" + ], + "timeoutInMinutes": 2160 + }, + "read": { + "permissions": [ + "rds:DescribeDBClusters", + "rds:ListTagsForResource", + "kms:CreateGrant", + "kms:DescribeKey" + ], + "timeoutInMinutes": 2160 + }, + "update": { + "permissions": [ + "ec2:DescribeSecurityGroups", + "iam:PassRole", + "rds:AddRoleToDBCluster", + "rds:AddTagsToResource", + "rds:DescribeDBClusters", + "rds:DescribeDBInstances", + "rds:DescribeDBSubnetGroups", + "rds:DescribeGlobalClusters", + "rds:ListTagsForResource", + "rds:ModifyDBCluster", + "rds:ModifyDBInstance", + "rds:RemoveFromGlobalCluster", + "rds:RemoveRoleFromDBCluster", + "rds:RemoveTagsFromResource", + "kms:CreateGrant", + "kms:DescribeKey" + ], + "timeoutInMinutes": 2160 + } + }, + "primaryIdentifier": [ + "/properties/DBClusterIdentifier" + ], + "properties": { + "AssociatedRoles": { + "description": "Provides a list of the AWS Identity and Access Management (IAM) roles that are associated with the DB cluster. IAM roles that are associated with a DB cluster grant permission for the DB cluster to access other AWS services on your behalf.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/DBClusterRole" + }, + "type": "array", + "uniqueItems": true + }, + "AvailabilityZones": { + "description": "Provides the list of EC2 Availability Zones that instances in the DB cluster can be created in.", + "insertionOrder": true, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "BackupRetentionPeriod": { + "default": 1, + "description": "Specifies the number of days for which automatic DB snapshots are retained.", + "minimum": 1, + "type": "integer" + }, + "ClusterResourceId": { + "description": "The resource id for the DB cluster. For example: `cluster-ABCD1234EFGH5678IJKL90MNOP`. The cluster ID uniquely identifies the cluster and is used in things like IAM authentication policies.", + "type": "string" + }, + "CopyTagsToSnapshot": { + "description": "A value that indicates whether to copy all tags from the DB cluster to snapshots of the DB cluster. The default behaviour is not to copy them.", + "type": "boolean" + }, + "DBClusterIdentifier": { + "description": "The DB cluster identifier. Contains a user-supplied DB cluster identifier. This identifier is the unique key that identifies a DB cluster stored as a lowercase string.", + "maxLength": 63, + "minLength": 1, + "pattern": "^[a-zA-Z]{1}(?:-?[a-zA-Z0-9]){0,62}$", + "type": "string" + }, + "DBClusterParameterGroupName": { + "description": "Provides the name of the DB cluster parameter group.", + "type": "string" + }, + "DBInstanceParameterGroupName": { + "description": "The name of the DB parameter group to apply to all instances of the DB cluster. Used only in case of a major EngineVersion upgrade request.", + "type": "string" + }, + "DBPort": { + "description": "The port number on which the DB instances in the DB cluster accept connections. \n\nIf not specified, the default port used is `8182`. \n\nNote: `Port` property will soon be deprecated from this resource. Please update existing templates to rename it with new property `DBPort` having same functionalities.", + "type": "integer" + }, + "DBSubnetGroupName": { + "description": "Specifies information on the subnet group associated with the DB cluster, including the name, description, and subnets in the subnet group.", + "type": "string" + }, + "DeletionProtection": { + "description": "Indicates whether or not the DB cluster has deletion protection enabled. The database can't be deleted when deletion protection is enabled.", + "type": "boolean" + }, + "EnableCloudwatchLogsExports": { + "description": "Specifies a list of log types that are enabled for export to CloudWatch Logs.", + "insertionOrder": true, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "Endpoint": { + "description": "The connection endpoint for the DB cluster. For example: `mystack-mydbcluster-1apw1j4phylrk.cg034hpkmmjt.us-east-2.rds.amazonaws.com`", + "type": "string" + }, + "EngineVersion": { + "description": "Indicates the database engine version.", + "type": "string" + }, + "IamAuthEnabled": { + "description": "True if mapping of Amazon Identity and Access Management (IAM) accounts to database accounts is enabled, and otherwise false.", + "type": "boolean" + }, + "KmsKeyId": { + "description": "The Amazon Resource Name (ARN) of the AWS KMS 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 KMS key is used. If you specify this property, you must set the StorageEncrypted property to true.", + "type": "string" + }, + "Port": { + "description": "The port number on which the DB cluster accepts connections. For example: `8182`.", + "type": "string" + }, + "PreferredBackupWindow": { + "description": "Specifies the daily time range during which automated backups are created if automated backups are enabled, as determined by the BackupRetentionPeriod.", + "type": "string" + }, + "PreferredMaintenanceWindow": { + "description": "Specifies the weekly time range during which system maintenance can occur, in Universal Coordinated Time (UTC).", + "type": "string" + }, + "ReadEndpoint": { + "description": "The reader endpoint for the DB cluster. For example: `mystack-mydbcluster-ro-1apw1j4phylrk.cg034hpkmmjt.us-east-2.rds.amazonaws.com`", + "type": "string" + }, + "RestoreToTime": { + "description": "Creates a new DB cluster from a DB snapshot or DB cluster snapshot.\n\nIf a DB snapshot is specified, the target DB cluster is created from the source DB snapshot with a default configuration and default security group.\n\nIf a DB cluster snapshot is specified, the target DB cluster is created from the source DB cluster restore point with the same configuration as the original source DB cluster, except that the new DB cluster is created with the default security group.", + "type": "string" + }, + "RestoreType": { + "default": "full-copy", + "description": "Creates a new DB cluster from a DB snapshot or DB cluster snapshot.\n\nIf a DB snapshot is specified, the target DB cluster is created from the source DB snapshot with a default configuration and default security group.\n\nIf a DB cluster snapshot is specified, the target DB cluster is created from the source DB cluster restore point with the same configuration as the original source DB cluster, except that the new DB cluster is created with the default security group.", + "type": "string" + }, + "ServerlessScalingConfiguration": { + "$ref": "#/definitions/ServerlessScalingConfiguration", + "description": "Contains the scaling configuration used by the Neptune Serverless Instances within this DB cluster." + }, + "SnapshotIdentifier": { + "description": "Specifies the identifier for a DB cluster snapshot. Must match the identifier of an existing snapshot.\n\nAfter you restore a DB cluster using a SnapshotIdentifier, you must specify the same SnapshotIdentifier for any future updates to the DB cluster. When you specify this property for an update, the DB cluster is not restored from the snapshot again, and the data in the database is not changed.\n\nHowever, if you don't specify the SnapshotIdentifier, an empty DB cluster is created, and the original DB cluster is deleted. If you specify a property that is different from the previous snapshot restore property, the DB cluster is restored from the snapshot specified by the SnapshotIdentifier, and the original DB cluster is deleted.", + "type": "string" + }, + "SourceDBClusterIdentifier": { + "description": "Creates a new DB cluster from a DB snapshot or DB cluster snapshot.\n\nIf a DB snapshot is specified, the target DB cluster is created from the source DB snapshot with a default configuration and default security group.\n\nIf a DB cluster snapshot is specified, the target DB cluster is created from the source DB cluster restore point with the same configuration as the original source DB cluster, except that the new DB cluster is created with the default security group.", + "type": "string" + }, + "StorageEncrypted": { + "description": "Indicates whether the DB cluster is encrypted.\n\nIf you specify the KmsKeyId property, then you must enable encryption and set this property to true.\n\nIf you enable the StorageEncrypted property but don't specify KmsKeyId property, then the default KMS key is used. If you specify KmsKeyId property, then that KMS Key is used to encrypt the database instances in the DB cluster.\n\nIf you specify the SourceDBClusterIdentifier property and don't specify this property or disable it. The value is inherited from the source DB cluster, and if the DB cluster is encrypted, the KmsKeyId property from the source cluster is used.\n\nIf you specify the DBSnapshotIdentifier and don't specify this property or disable it. The value is inherited from the snapshot, and the specified KmsKeyId property from the snapshot is used.", + "type": "boolean" + }, + "Tags": { + "description": "The tags assigned to this cluster.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "type": "array", + "uniqueItems": true + }, + "UseLatestRestorableTime": { + "description": "Creates a new DB cluster from a DB snapshot or DB cluster snapshot.\n\nIf a DB snapshot is specified, the target DB cluster is created from the source DB snapshot with a default configuration and default security group.\n\nIf a DB cluster snapshot is specified, the target DB cluster is created from the source DB cluster restore point with the same configuration as the original source DB cluster, except that the new DB cluster is created with the default security group.", + "type": "boolean" + }, + "VpcSecurityGroupIds": { + "description": "Provides a list of VPC security groups that the DB cluster belongs to.", + "insertionOrder": true, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + } + }, + "propertyTransform": { + "/properties/DBClusterIdentifier": "$lowercase(DBClusterIdentifier)", + "/properties/DBClusterParameterGroupName": "$lowercase(DBClusterParameterGroupName)", + "/properties/DBSubnetGroupName": "$lowercase(DBSubnetGroupName)", + "/properties/SnapshotIdentifier": "$lowercase(SnapshotIdentifier)", + "/properties/SourceDBClusterIdentifier": "$lowercase(SourceDBClusterIdentifier)" + }, + "readOnlyProperties": [ + "/properties/Endpoint", + "/properties/ClusterResourceId", + "/properties/Port", + "/properties/ReadEndpoint" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-neptune", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "rds:AddTagsToResource", + "rds:ListTagsForResource", + "rds:RemoveTagsFromResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::Neptune::DBCluster", + "writeOnlyProperties": [ + "/properties/DBInstanceParameterGroupName", + "/properties/RestoreToTime", + "/properties/RestoreType", + "/properties/SnapshotIdentifier", + "/properties/SourceDBClusterIdentifier", + "/properties/UseLatestRestorableTime" + ] +} diff --git a/src/schema/aws-neptune-dbclusterparametergroup.json b/src/schema/aws-neptune-dbclusterparametergroup.json new file mode 100644 index 00000000..74dcc783 --- /dev/null +++ b/src/schema/aws-neptune-dbclusterparametergroup.json @@ -0,0 +1,129 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name", + "/properties/Description", + "/properties/Family" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "The AWS::Neptune::DBClusterParameterGroup resource creates a new Amazon Neptune DB cluster parameter group", + "handlers": { + "create": { + "permissions": [ + "rds:AddTagsToResource", + "rds:CreateDBClusterParameterGroup", + "rds:DescribeDBClusterParameterGroups", + "rds:DescribeDBClusterParameters", + "rds:DescribeEngineDefaultClusterParameters", + "rds:ListTagsForResource", + "rds:ModifyDBClusterParameterGroup", + "iam:CreateServiceLinkedRole" + ], + "timeoutInMinutes": 180 + }, + "delete": { + "permissions": [ + "rds:DeleteDBClusterParameterGroup", + "rds:ListTagsForResource", + "rds:RemoveTagsFromResource" + ] + }, + "list": { + "permissions": [ + "rds:DescribeDBClusterParameterGroups", + "rds:ListTagsForResource" + ] + }, + "read": { + "permissions": [ + "rds:DescribeDBClusterParameterGroups", + "rds:ListTagsForResource", + "rds:DescribeDBClusterParameters" + ] + }, + "update": { + "permissions": [ + "rds:AddTagsToResource", + "rds:DescribeDBClusterParameterGroups", + "rds:DescribeDBClusterParameters", + "rds:DescribeDBClusters", + "rds:DescribeEngineDefaultClusterParameters", + "rds:ListTagsForResource", + "rds:ModifyDBClusterParameterGroup", + "rds:RemoveTagsFromResource", + "rds:ResetDBClusterParameterGroup" + ], + "timeoutInMinutes": 180 + } + }, + "primaryIdentifier": [ + "/properties/Name" + ], + "properties": { + "Description": { + "description": "Provides the customer-specified description for this DB cluster parameter group.", + "type": "string" + }, + "Family": { + "description": "Must be neptune1 for engine versions prior to 1.2.0.0, or neptune1.2 for engine version 1.2.0.0 and higher.", + "type": "string" + }, + "Name": { + "description": "Provides the name of the DB cluster parameter group.", + "type": "string" + }, + "Parameters": { + "description": "An array of parameters to be modified. A maximum of 20 parameters can be modified in a single request.", + "type": "object" + }, + "Tags": { + "description": "The list of tags for the cluster parameter group.", + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array" + } + }, + "propertyTransform": { + "/properties/Name": "$lowercase(Name)" + }, + "required": [ + "Description", + "Family", + "Parameters" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-neptune", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "rds:AddTagsToResource", + "rds:ListTagsForResource", + "rds:RemoveTagsFromResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::Neptune::DBClusterParameterGroup" +} diff --git a/src/schema/aws-neptune-dbinstance.json b/src/schema/aws-neptune-dbinstance.json new file mode 100644 index 00000000..b064fb2a --- /dev/null +++ b/src/schema/aws-neptune-dbinstance.json @@ -0,0 +1,89 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/DBClusterIdentifier", + "/properties/AvailabilityZone", + "/properties/DBInstanceIdentifier", + "/properties/DBSubnetGroupName", + "/properties/DBSnapshotIdentifier" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::Neptune::DBInstance", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "AllowMajorVersionUpgrade": { + "type": "boolean" + }, + "AutoMinorVersionUpgrade": { + "type": "boolean" + }, + "AvailabilityZone": { + "type": "string" + }, + "DBClusterIdentifier": { + "type": "string" + }, + "DBInstanceClass": { + "type": "string" + }, + "DBInstanceIdentifier": { + "type": "string" + }, + "DBParameterGroupName": { + "type": "string" + }, + "DBSnapshotIdentifier": { + "type": "string" + }, + "DBSubnetGroupName": { + "type": "string" + }, + "Endpoint": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "Port": { + "type": "string" + }, + "PreferredMaintenanceWindow": { + "type": "string" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + } + }, + "readOnlyProperties": [ + "/properties/Endpoint", + "/properties/Port", + "/properties/Id" + ], + "required": [ + "DBInstanceClass" + ], + "typeName": "AWS::Neptune::DBInstance" +} diff --git a/src/schema/aws-neptune-dbparametergroup.json b/src/schema/aws-neptune-dbparametergroup.json new file mode 100644 index 00000000..a202295d --- /dev/null +++ b/src/schema/aws-neptune-dbparametergroup.json @@ -0,0 +1,128 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name", + "/properties/Description", + "/properties/Family" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "AWS::Neptune::DBParameterGroup creates a new DB parameter group. This type can be declared in a template and referenced in the DBParameterGroupName parameter of AWS::Neptune::DBInstance", + "handlers": { + "create": { + "permissions": [ + "rds:AddTagsToResource", + "rds:CreateDBParameterGroup", + "rds:DescribeDBParameterGroups", + "rds:DescribeDBParameters", + "rds:DescribeEngineDefaultParameters", + "rds:ModifyDBParameterGroup", + "rds:ListTagsForResource", + "iam:CreateServiceLinkedRole" + ] + }, + "delete": { + "permissions": [ + "rds:DeleteDBParameterGroup", + "rds:RemoveTagsFromResource" + ] + }, + "list": { + "permissions": [ + "rds:DescribeDBParameterGroups", + "rds:ListTagsForResource" + ] + }, + "read": { + "permissions": [ + "rds:DescribeDBParameterGroups", + "rds:ListTagsForResource", + "rds:DescribeDBParameters", + "rds:DescribeEngineDefaultParameters" + ] + }, + "update": { + "permissions": [ + "rds:AddTagsToResource", + "rds:DescribeDBParameterGroups", + "rds:DescribeDBParameters", + "rds:DescribeEngineDefaultParameters", + "rds:ListTagsForResource", + "rds:ModifyDBParameterGroup", + "rds:ResetDBParameterGroup", + "rds:RemoveTagsFromResource", + "rds:DescribeDBInstances" + ] + } + }, + "primaryIdentifier": [ + "/properties/Name" + ], + "properties": { + "Description": { + "description": "Provides the customer-specified description for this DB parameter group.", + "type": "string" + }, + "Family": { + "description": "Must be `neptune1` for engine versions prior to 1.2.0.0, or `neptune1.2` for engine version `1.2.0.0` and higher.", + "type": "string" + }, + "Name": { + "description": "Provides the name of the DB parameter group.", + "type": "string" + }, + "Parameters": { + "description": "The parameters to set for this DB parameter group.\n\nThe parameters are expressed as a JSON object consisting of key-value pairs.\n\nChanges to dynamic parameters are applied immediately. During an update, if you have static parameters (whether they were changed or not), it triggers AWS CloudFormation to reboot the associated DB instance without failover.", + "type": "object" + }, + "Tags": { + "description": "An optional array of key-value pairs to apply to this DB parameter group.", + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + } + }, + "propertyTransform": { + "/properties/Name": "$lowercase(Name)" + }, + "required": [ + "Family", + "Description", + "Parameters" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-neptune", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "rds:AddTagsToResource", + "rds:ListTagsForResource", + "rds:RemoveTagsFromResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::Neptune::DBParameterGroup" +} diff --git a/src/schema/aws-neptune-dbsubnetgroup.json b/src/schema/aws-neptune-dbsubnetgroup.json new file mode 100644 index 00000000..ddaa0ad1 --- /dev/null +++ b/src/schema/aws-neptune-dbsubnetgroup.json @@ -0,0 +1,118 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/DBSubnetGroupName" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "description": "An optional array of key-value pairs to apply to this DB subnet group.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "The AWS::Neptune::DBSubnetGroup type creates an Amazon Neptune DB subnet group. Subnet groups must contain at least two subnets in two different Availability Zones in the same AWS Region.", + "handlers": { + "create": { + "permissions": [ + "rds:CreateDBSubnetGroup", + "rds:DescribeDBSubnetGroups", + "rds:ListTagsForResource", + "rds:AddTagsToResource", + "iam:CreateServiceLinkedRole" + ] + }, + "delete": { + "permissions": [ + "rds:DeleteDBSubnetGroup", + "rds:DescribeDBSubnetGroups", + "rds:ListTagsForResource", + "rds:RemoveTagsFromResource" + ] + }, + "list": { + "permissions": [ + "rds:DescribeDBSubnetGroups", + "rds:ListTagsForResource" + ] + }, + "read": { + "permissions": [ + "rds:DescribeDBSubnetGroups", + "rds:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "rds:ModifyDBSubnetGroup", + "rds:DescribeDBSubnetGroups", + "rds:AddTagsToResource", + "rds:RemoveTagsFromResource", + "rds:ListTagsForResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/DBSubnetGroupName" + ], + "properties": { + "DBSubnetGroupDescription": { + "description": "The description for the DB subnet group.", + "type": "string" + }, + "DBSubnetGroupName": { + "description": "The name for the DB subnet group. This value is stored as a lowercase string.\n\nConstraints: Must contain no more than 255 lowercase alphanumeric characters or hyphens. Must not be \"Default\".\n\nExample: mysubnetgroup\n\n", + "type": "string" + }, + "SubnetIds": { + "description": "The Amazon EC2 subnet IDs for the DB subnet group.", + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "Tags": { + "description": "An optional array of key-value pairs to apply to this DB subnet group.", + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + } + }, + "propertyTransform": { + "/properties/DBSubnetGroupName": "$lowercase(DBSubnetGroupName)" + }, + "required": [ + "DBSubnetGroupDescription", + "SubnetIds" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-neptune", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "rds:AddTagsToResource", + "rds:ListTagsForResource", + "rds:RemoveTagsFromResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::Neptune::DBSubnetGroup" +} diff --git a/src/schema/aws-neptune-eventsubscription.json b/src/schema/aws-neptune-eventsubscription.json new file mode 100644 index 00000000..05e09626 --- /dev/null +++ b/src/schema/aws-neptune-eventsubscription.json @@ -0,0 +1,42 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/SnsTopicArn" + ], + "description": "Resource Type definition for AWS::Neptune::EventSubscription", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Enabled": { + "type": "boolean" + }, + "EventCategories": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "Id": { + "type": "string" + }, + "SnsTopicArn": { + "type": "string" + }, + "SourceIds": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "SourceType": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "typeName": "AWS::Neptune::EventSubscription" +} diff --git a/src/schema/aws-neptunegraph-graph.json b/src/schema/aws-neptunegraph-graph.json new file mode 100644 index 00000000..019cb924 --- /dev/null +++ b/src/schema/aws-neptunegraph-graph.json @@ -0,0 +1,190 @@ +{ + "additionalIdentifiers": [ + [ + "/properties/GraphName" + ] + ], + "additionalProperties": false, + "conditionalCreateOnlyProperties": [ + "/properties/ProvisionedMemory" + ], + "createOnlyProperties": [ + "/properties/GraphName", + "/properties/ReplicaCount", + "/properties/VectorSearchConfiguration" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key" + ], + "type": "object" + }, + "VectorSearchConfiguration": { + "additionalProperties": false, + "description": "The vector search configuration.", + "properties": { + "VectorSearchDimension": { + "description": "The vector search dimension", + "type": "integer" + } + }, + "required": [ + "VectorSearchDimension" + ], + "type": "object" + } + }, + "description": "The AWS::NeptuneGraph::Graph resource creates an Amazon NeptuneGraph Graph.", + "handlers": { + "create": { + "permissions": [ + "iam:PassRole", + "neptune-graph:CreateGraph", + "neptune-graph:GetGraph", + "neptune-graph:ListTagsForResource", + "neptune-graph:TagResource", + "kms:DescribeKey", + "kms:CreateGrant", + "kms:Decrypt", + "iam:CreateServiceLinkedRole" + ], + "timeoutInMinutes": 2160 + }, + "delete": { + "permissions": [ + "neptune-graph:DeleteGraph", + "neptune-graph:GetGraph", + "kms:DescribeKey", + "kms:CreateGrant", + "kms:Decrypt" + ], + "timeoutInMinutes": 2160 + }, + "list": { + "permissions": [ + "neptune-graph:GetGraph", + "neptune-graph:ListGraphs", + "kms:DescribeKey", + "kms:CreateGrant", + "kms:Decrypt" + ], + "timeoutInMinutes": 2160 + }, + "read": { + "permissions": [ + "neptune-graph:GetGraph", + "neptune-graph:ListTagsForResource", + "kms:DescribeKey", + "kms:CreateGrant", + "kms:Decrypt" + ], + "timeoutInMinutes": 2160 + }, + "update": { + "permissions": [ + "iam:PassRole", + "neptune-graph:GetGraph", + "neptune-graph:ListTagsForResource", + "neptune-graph:TagResource", + "neptune-graph:UntagResource", + "neptune-graph:UpdateGraph", + "kms:DescribeKey", + "kms:CreateGrant", + "kms:Decrypt" + ], + "timeoutInMinutes": 2160 + } + }, + "primaryIdentifier": [ + "/properties/GraphId" + ], + "properties": { + "DeletionProtection": { + "description": "Value that indicates whether the Graph has deletion protection enabled. The graph can't be deleted when deletion protection is enabled.\n\n_Default_: If not specified, the default value is true.", + "type": "boolean" + }, + "Endpoint": { + "description": "The connection endpoint for the graph. For example: `g-12a3bcdef4.us-east-1.neptune-graph.amazonaws.com`", + "type": "string" + }, + "GraphArn": { + "description": "Graph resource ARN", + "type": "string" + }, + "GraphId": { + "description": "The auto-generated id assigned by the service.", + "type": "string" + }, + "GraphName": { + "description": "Contains a user-supplied name for the Graph. \n\nIf you don't specify a name, we generate a unique Graph Name using a combination of Stack Name and a UUID comprising of 4 characters.\n\n_Important_: If you specify a name, you cannot perform updates that require replacement of this resource. You can perform updates that require no or some interruption. If you must replace the resource, specify a new name.", + "maxLength": 63, + "minLength": 1, + "pattern": "^[a-zA-z][a-zA-Z0-9]*(-[a-zA-Z0-9]+)*$", + "type": "string" + }, + "ProvisionedMemory": { + "description": "Memory for the Graph.", + "type": "integer" + }, + "PublicConnectivity": { + "description": "Specifies whether the Graph can be reached over the internet. Access to all graphs requires IAM authentication.\n\nWhen the Graph is publicly reachable, its Domain Name System (DNS) endpoint resolves to the public IP address from the internet.\n\nWhen the Graph isn't publicly reachable, you need to create a PrivateGraphEndpoint in a given VPC to ensure the DNS name resolves to a private IP address that is reachable from the VPC.\n\n_Default_: If not specified, the default value is false.", + "type": "boolean" + }, + "ReplicaCount": { + "description": "Specifies the number of replicas you want when finished. All replicas will be provisioned in different availability zones.\n\nReplica Count should always be less than or equal to 2.\n\n_Default_: If not specified, the default value is 1.", + "type": "integer" + }, + "Tags": { + "description": "The tags associated with this graph.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "type": "array", + "uniqueItems": true + }, + "VectorSearchConfiguration": { + "$ref": "#/definitions/VectorSearchConfiguration", + "description": "Vector Search Configuration" + } + }, + "propertyTransform": { + "/properties/GraphId": "$lowercase(GraphId)", + "/properties/GraphName": "$lowercase(GraphName)" + }, + "readOnlyProperties": [ + "/properties/GraphArn", + "/properties/GraphId", + "/properties/Endpoint" + ], + "required": [ + "ProvisionedMemory" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-neptunegraph", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::NeptuneGraph::Graph" +} diff --git a/src/schema/aws-neptunegraph-privategraphendpoint.json b/src/schema/aws-neptunegraph-privategraphendpoint.json new file mode 100644 index 00000000..bbb71ba8 --- /dev/null +++ b/src/schema/aws-neptunegraph-privategraphendpoint.json @@ -0,0 +1,133 @@ +{ + "additionalIdentifiers": [ + [ + "/properties/GraphIdentifier", + "/properties/VpcId" + ] + ], + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/GraphIdentifier", + "/properties/SecurityGroupIds", + "/properties/SubnetIds", + "/properties/VpcId" + ], + "description": "The AWS::NeptuneGraph::PrivateGraphEndpoint resource creates an Amazon NeptuneGraph PrivateGraphEndpoint.", + "handlers": { + "create": { + "permissions": [ + "ec2:CreateVpcEndpoint", + "ec2:DescribeVpcEndpoints", + "ec2:DescribeSecurityGroups", + "ec2:DescribeSubnets", + "ec2:DescribeVpcs", + "ec2:DescribeVpcAttribute", + "ec2:DescribeAvailabilityZones", + "ec2:ModifyVpcEndpoint", + "route53:AssociateVPCWithHostedZone", + "iam:PassRole", + "neptune-graph:CreatePrivateGraphEndpoint", + "neptune-graph:GetPrivateGraphEndpoint", + "iam:CreateServiceLinkedRole" + ], + "timeoutInMinutes": 2160 + }, + "delete": { + "permissions": [ + "ec2:DeleteVpcEndpoints", + "ec2:DescribeVpcEndpoints", + "ec2:DescribeSecurityGroups", + "ec2:DescribeSubnets", + "ec2:DescribeVpcs", + "ec2:DescribeVpcAttribute", + "ec2:DescribeAvailabilityZones", + "ec2:ModifyVpcEndpoint", + "route53:DisassociateVPCFromHostedZone", + "neptune-graph:DeletePrivateGraphEndpoint", + "neptune-graph:GetPrivateGraphEndpoint" + ], + "timeoutInMinutes": 2160 + }, + "list": { + "permissions": [ + "neptune-graph:GetPrivateGraphEndpoint", + "neptune-graph:ListPrivateGraphEndpoints", + "neptune-graph:ListGraphs" + ], + "timeoutInMinutes": 2160 + }, + "read": { + "permissions": [ + "neptune-graph:GetPrivateGraphEndpoint" + ], + "timeoutInMinutes": 2160 + }, + "update": { + "permissions": [ + "iam:PassRole", + "neptune-graph:GetPrivateGraphEndpoint" + ], + "timeoutInMinutes": 2160 + } + }, + "primaryIdentifier": [ + "/properties/PrivateGraphEndpointIdentifier" + ], + "properties": { + "GraphIdentifier": { + "description": "The auto-generated Graph Id assigned by the service.", + "type": "string" + }, + "PrivateGraphEndpointIdentifier": { + "description": "PrivateGraphEndpoint resource identifier generated by concatenating the associated GraphIdentifier and VpcId with an underscore separator.\n\n For example, if GraphIdentifier is `g-12a3bcdef4` and VpcId is `vpc-0a12bc34567de8f90`, the generated PrivateGraphEndpointIdentifier will be `g-12a3bcdef4_vpc-0a12bc34567de8f90`", + "type": "string" + }, + "SecurityGroupIds": { + "description": "The security group Ids associated with the VPC where you want the private graph endpoint to be created, ie, the graph will be reachable from within the VPC.", + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array" + }, + "SubnetIds": { + "description": "The subnet Ids associated with the VPC where you want the private graph endpoint to be created, ie, the graph will be reachable from within the VPC.", + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array" + }, + "VpcEndpointId": { + "description": "VPC endpoint that provides a private connection between the Graph and specified VPC.", + "type": "string" + }, + "VpcId": { + "description": "The VPC where you want the private graph endpoint to be created, ie, the graph will be reachable from within the VPC.", + "type": "string" + } + }, + "propertyTransform": { + "/properties/GraphIdentifier": "$lowercase(GraphIdentifier)" + }, + "readOnlyProperties": [ + "/properties/PrivateGraphEndpointIdentifier", + "/properties/VpcEndpointId" + ], + "required": [ + "GraphIdentifier", + "VpcId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-neptunegraph", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::NeptuneGraph::PrivateGraphEndpoint", + "writeOnlyProperties": [ + "/properties/GraphIdentifier", + "/properties/SecurityGroupIds" + ] +} diff --git a/src/schema/aws-networkfirewall-firewall.json b/src/schema/aws-networkfirewall-firewall.json new file mode 100644 index 00000000..6dadf458 --- /dev/null +++ b/src/schema/aws-networkfirewall-firewall.json @@ -0,0 +1,223 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/VpcId", + "/properties/FirewallName" + ], + "definitions": { + "EnabledAnalysisType": { + "description": "An analysis type.", + "enum": [ + "TLS_SNI", + "HTTP_HOST" + ], + "type": "string" + }, + "EndpointId": { + "description": "An endpoint Id.", + "type": "string" + }, + "ResourceArn": { + "description": "A resource ARN.", + "maxLength": 256, + "minLength": 1, + "pattern": "^arn:aws.*$", + "type": "string" + }, + "SubnetMapping": { + "additionalProperties": false, + "properties": { + "IPAddressType": { + "description": "A IPAddressType", + "type": "string" + }, + "SubnetId": { + "description": "A SubnetId.", + "type": "string" + } + }, + "required": [ + "SubnetId" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "description": "Resource type definition for AWS::NetworkFirewall::Firewall", + "handlers": { + "create": { + "permissions": [ + "ec2:CreateVpcEndpoint", + "ec2:DescribeVpcEndpoints", + "ec2:DescribeSubnets", + "ec2:DescribeVpcs", + "iam:CreateServiceLinkedRole", + "network-firewall:CreateFirewall", + "network-firewall:DescribeFirewallPolicy", + "network-firewall:DescribeRuleGroup", + "network-firewall:TagResource", + "network-firewall:AssociateSubnets", + "network-firewall:AssociateFirewallPolicy", + "network-firewall:DescribeFirewall" + ] + }, + "delete": { + "permissions": [ + "ec2:DeleteVpcEndpoints", + "ec2:DescribeRouteTables", + "logs:DescribeLogGroups", + "logs:DescribeResourcePolicies", + "logs:GetLogDelivery", + "logs:ListLogDeliveries", + "network-firewall:DeleteFirewall", + "network-firewall:UntagResource", + "network-firewall:DescribeFirewall" + ] + }, + "list": { + "permissions": [ + "network-firewall:ListFirewalls" + ] + }, + "read": { + "permissions": [ + "network-firewall:DescribeFirewall", + "network-firewall:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "network-firewall:AssociateSubnets", + "network-firewall:DisassociateSubnets", + "network-firewall:UpdateFirewallDescription", + "network-firewall:UpdateFirewallDeleteProtection", + "network-firewall:UpdateSubnetChangeProtection", + "network-firewall:UpdateFirewallPolicyChangeProtection", + "network-firewall:AssociateFirewallPolicy", + "network-firewall:TagResource", + "network-firewall:UntagResource", + "network-firewall:DescribeFirewall", + "network-firewall:UpdateFirewallAnalysisSettings" + ] + } + }, + "primaryIdentifier": [ + "/properties/FirewallArn" + ], + "properties": { + "DeleteProtection": { + "type": "boolean" + }, + "Description": { + "maxLength": 512, + "pattern": "^.*$", + "type": "string" + }, + "EnabledAnalysisTypes": { + "description": "The types of analysis to enable for the firewall. Can be TLS_SNI, HTTP_HOST, or both.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/EnabledAnalysisType" + }, + "type": "array" + }, + "EndpointIds": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/EndpointId" + }, + "type": "array" + }, + "FirewallArn": { + "$ref": "#/definitions/ResourceArn" + }, + "FirewallId": { + "maxLength": 36, + "minLength": 36, + "pattern": "^([0-9a-f]{8})-([0-9a-f]{4}-){3}([0-9a-f]{12})$", + "type": "string" + }, + "FirewallName": { + "maxLength": 128, + "minLength": 1, + "pattern": "^[a-zA-Z0-9-]+$", + "type": "string" + }, + "FirewallPolicyArn": { + "$ref": "#/definitions/ResourceArn" + }, + "FirewallPolicyChangeProtection": { + "type": "boolean" + }, + "SubnetChangeProtection": { + "type": "boolean" + }, + "SubnetMappings": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/SubnetMapping" + }, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + }, + "VpcId": { + "maxLength": 128, + "minLength": 1, + "pattern": "^vpc-[0-9a-f]+$", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/FirewallArn", + "/properties/FirewallId", + "/properties/EndpointIds" + ], + "required": [ + "FirewallName", + "FirewallPolicyArn", + "VpcId", + "SubnetMappings" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-networkfirewall.git", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "network-firewall:TagResource", + "network-firewall:UntagResource", + "network-firewall:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::NetworkFirewall::Firewall" +} diff --git a/src/schema/aws-networkfirewall-firewallpolicy.json b/src/schema/aws-networkfirewall-firewallpolicy.json new file mode 100644 index 00000000..1e01ed68 --- /dev/null +++ b/src/schema/aws-networkfirewall-firewallpolicy.json @@ -0,0 +1,389 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/FirewallPolicyName" + ], + "definitions": { + "ActionDefinition": { + "additionalProperties": false, + "properties": { + "PublishMetricAction": { + "$ref": "#/definitions/PublishMetricAction" + } + }, + "type": "object" + }, + "CustomAction": { + "additionalProperties": false, + "properties": { + "ActionDefinition": { + "$ref": "#/definitions/ActionDefinition" + }, + "ActionName": { + "maxLength": 128, + "minLength": 1, + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + } + }, + "required": [ + "ActionName", + "ActionDefinition" + ], + "type": "object" + }, + "Dimension": { + "additionalProperties": false, + "properties": { + "Value": { + "maxLength": 128, + "minLength": 1, + "pattern": "^[a-zA-Z0-9-_ ]+$", + "type": "string" + } + }, + "required": [ + "Value" + ], + "type": "object" + }, + "FirewallPolicy": { + "additionalProperties": false, + "properties": { + "PolicyVariables": { + "additionalProperties": false, + "properties": { + "RuleVariables": { + "$ref": "#/definitions/RuleVariables" + } + }, + "type": "object" + }, + "StatefulDefaultActions": { + "insertionOrder": true, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "StatefulEngineOptions": { + "$ref": "#/definitions/StatefulEngineOptions" + }, + "StatefulRuleGroupReferences": { + "insertionOrder": true, + "items": { + "$ref": "#/definitions/StatefulRuleGroupReference" + }, + "type": "array", + "uniqueItems": false + }, + "StatelessCustomActions": { + "insertionOrder": true, + "items": { + "$ref": "#/definitions/CustomAction" + }, + "type": "array", + "uniqueItems": false + }, + "StatelessDefaultActions": { + "insertionOrder": true, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "StatelessFragmentDefaultActions": { + "insertionOrder": true, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "StatelessRuleGroupReferences": { + "insertionOrder": true, + "items": { + "$ref": "#/definitions/StatelessRuleGroupReference" + }, + "type": "array", + "uniqueItems": false + }, + "TLSInspectionConfigurationArn": { + "$ref": "#/definitions/ResourceArn" + } + }, + "required": [ + "StatelessDefaultActions", + "StatelessFragmentDefaultActions" + ], + "type": "object" + }, + "IPSet": { + "additionalProperties": false, + "properties": { + "Definition": { + "insertionOrder": true, + "items": { + "$ref": "#/definitions/VariableDefinition" + }, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + }, + "OverrideAction": { + "enum": [ + "DROP_TO_ALERT" + ], + "type": "string" + }, + "Priority": { + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "PublishMetricAction": { + "additionalProperties": false, + "properties": { + "Dimensions": { + "insertionOrder": true, + "items": { + "$ref": "#/definitions/Dimension" + }, + "type": "array", + "uniqueItems": false + } + }, + "required": [ + "Dimensions" + ], + "type": "object" + }, + "ResourceArn": { + "description": "A resource ARN.", + "maxLength": 256, + "minLength": 1, + "pattern": "^(arn:aws.*)$", + "type": "string" + }, + "RuleOrder": { + "enum": [ + "DEFAULT_ACTION_ORDER", + "STRICT_ORDER" + ], + "type": "string" + }, + "RuleVariables": { + "additionalProperties": false, + "patternProperties": { + "^[A-Za-z0-9_]{1,32}$": { + "$ref": "#/definitions/IPSet" + } + }, + "type": "object" + }, + "StatefulEngineOptions": { + "additionalProperties": false, + "properties": { + "FlowTimeouts": { + "additionalProperties": false, + "properties": { + "TcpIdleTimeoutSeconds": { + "maximum": 6000, + "minimum": 60, + "type": "integer" + } + }, + "type": "object" + }, + "RuleOrder": { + "$ref": "#/definitions/RuleOrder" + }, + "StreamExceptionPolicy": { + "$ref": "#/definitions/StreamExceptionPolicy" + } + }, + "type": "object" + }, + "StatefulRuleGroupOverride": { + "additionalProperties": false, + "properties": { + "Action": { + "$ref": "#/definitions/OverrideAction" + } + }, + "type": "object" + }, + "StatefulRuleGroupReference": { + "additionalProperties": false, + "properties": { + "Override": { + "$ref": "#/definitions/StatefulRuleGroupOverride" + }, + "Priority": { + "$ref": "#/definitions/Priority" + }, + "ResourceArn": { + "$ref": "#/definitions/ResourceArn" + } + }, + "required": [ + "ResourceArn" + ], + "type": "object" + }, + "StatelessRuleGroupReference": { + "additionalProperties": false, + "properties": { + "Priority": { + "$ref": "#/definitions/Priority" + }, + "ResourceArn": { + "$ref": "#/definitions/ResourceArn" + } + }, + "required": [ + "ResourceArn", + "Priority" + ], + "type": "object" + }, + "StreamExceptionPolicy": { + "enum": [ + "DROP", + "CONTINUE", + "REJECT" + ], + "type": "string" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "pattern": "^.*$", + "type": "string" + }, + "Value": { + "maxLength": 255, + "minLength": 0, + "pattern": "^.*$", + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "VariableDefinition": { + "minLength": 1, + "pattern": "^.*$", + "type": "string" + } + }, + "description": "Resource type definition for AWS::NetworkFirewall::FirewallPolicy", + "handlers": { + "create": { + "permissions": [ + "network-firewall:CreateFirewallPolicy", + "network-firewall:DescribeFirewallPolicy", + "network-firewall:ListTLSInspectionConfigurations", + "network-firewall:TagResource", + "network-firewall:ListRuleGroups" + ] + }, + "delete": { + "permissions": [ + "network-firewall:DeleteFirewallPolicy", + "network-firewall:DescribeFirewallPolicy", + "network-firewall:UntagResource" + ] + }, + "list": { + "permissions": [ + "network-firewall:ListFirewallPolicies" + ] + }, + "read": { + "permissions": [ + "network-firewall:DescribeFirewallPolicy", + "network-firewall:ListTagsForResources" + ] + }, + "update": { + "permissions": [ + "network-firewall:UpdateFirewallPolicy", + "network-firewall:DescribeFirewallPolicy", + "network-firewall:TagResource", + "network-firewall:UntagResource", + "network-firewall:ListRuleGroups", + "network-firewall:ListTLSInspectionConfigurations" + ] + } + }, + "primaryIdentifier": [ + "/properties/FirewallPolicyArn" + ], + "properties": { + "Description": { + "maxLength": 512, + "minLength": 1, + "pattern": "^.*$", + "type": "string" + }, + "FirewallPolicy": { + "$ref": "#/definitions/FirewallPolicy" + }, + "FirewallPolicyArn": { + "$ref": "#/definitions/ResourceArn" + }, + "FirewallPolicyId": { + "maxLength": 36, + "minLength": 36, + "pattern": "^([0-9a-f]{8})-([0-9a-f]{4}-){3}([0-9a-f]{12})$", + "type": "string" + }, + "FirewallPolicyName": { + "maxLength": 128, + "minLength": 1, + "pattern": "^[a-zA-Z0-9-]+$", + "type": "string" + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/FirewallPolicyArn", + "/properties/FirewallPolicyId" + ], + "required": [ + "FirewallPolicyName", + "FirewallPolicy" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-networkfirewall.git", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "network-firewall:TagResource", + "network-firewall:UntagResource", + "network-firewall:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::NetworkFirewall::FirewallPolicy" +} diff --git a/src/schema/aws-networkfirewall-loggingconfiguration.json b/src/schema/aws-networkfirewall-loggingconfiguration.json new file mode 100644 index 00000000..ce89fa2b --- /dev/null +++ b/src/schema/aws-networkfirewall-loggingconfiguration.json @@ -0,0 +1,152 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/FirewallName", + "/properties/FirewallArn" + ], + "definitions": { + "LogDestinationConfig": { + "additionalProperties": false, + "properties": { + "LogDestination": { + "additionalProperties": false, + "description": "A key-value pair to configure the logDestinations.", + "minProperties": 1, + "patternProperties": { + "^[0-9A-Za-z.\\-_@\\/]+$": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + } + }, + "type": "object" + }, + "LogDestinationType": { + "enum": [ + "S3", + "CloudWatchLogs", + "KinesisDataFirehose" + ], + "type": "string" + }, + "LogType": { + "enum": [ + "ALERT", + "FLOW", + "TLS" + ], + "type": "string" + } + }, + "required": [ + "LogType", + "LogDestinationType", + "LogDestination" + ], + "type": "object" + }, + "LoggingConfiguration": { + "additionalProperties": false, + "properties": { + "LogDestinationConfigs": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/LogDestinationConfig" + }, + "minItems": 1, + "type": "array" + } + }, + "required": [ + "LogDestinationConfigs" + ], + "type": "object" + }, + "ResourceArn": { + "description": "A resource ARN.", + "maxLength": 256, + "minLength": 1, + "pattern": "^arn:aws.*$", + "type": "string" + } + }, + "description": "Resource type definition for AWS::NetworkFirewall::LoggingConfiguration", + "handlers": { + "create": { + "permissions": [ + "logs:CreateLogDelivery", + "logs:GetLogDelivery", + "logs:ListLogDeliveries", + "s3:PutBucketPolicy", + "s3:GetBucketPolicy", + "logs:PutResourcePolicy", + "logs:DescribeResourcePolicies", + "logs:DescribeLogGroups", + "iam:CreateServiceLinkedRole", + "firehose:TagDeliveryStream", + "network-firewall:UpdateLoggingConfiguration", + "network-firewall:DescribeLoggingConfiguration" + ] + }, + "delete": { + "permissions": [ + "logs:DeleteLogDelivery", + "logs:ListLogDeliveries", + "logs:GetLogDelivery", + "network-firewall:UpdateLoggingConfiguration", + "network-firewall:DescribeLoggingConfiguration" + ] + }, + "read": { + "permissions": [ + "logs:GetLogDelivery", + "logs:ListLogDeliveries", + "network-firewall:DescribeLoggingConfiguration" + ] + }, + "update": { + "permissions": [ + "logs:CreateLogDelivery", + "logs:DeleteLogDelivery", + "logs:GetLogDelivery", + "logs:UpdateLogDelivery", + "logs:ListLogDeliveries", + "s3:PutBucketPolicy", + "s3:GetBucketPolicy", + "logs:PutResourcePolicy", + "logs:DescribeResourcePolicies", + "logs:DescribeLogGroups", + "iam:CreateServiceLinkedRole", + "firehose:TagDeliveryStream", + "network-firewall:UpdateLoggingConfiguration", + "network-firewall:DescribeLoggingConfiguration" + ] + } + }, + "primaryIdentifier": [ + "/properties/FirewallArn" + ], + "properties": { + "FirewallArn": { + "$ref": "#/definitions/ResourceArn" + }, + "FirewallName": { + "maxLength": 128, + "minLength": 1, + "pattern": "^[a-zA-Z0-9-]+$", + "type": "string" + }, + "LoggingConfiguration": { + "$ref": "#/definitions/LoggingConfiguration" + } + }, + "required": [ + "FirewallArn", + "LoggingConfiguration" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-networkfirewall.git", + "tagging": { + "taggable": false + }, + "typeName": "AWS::NetworkFirewall::LoggingConfiguration" +} diff --git a/src/schema/aws-networkfirewall-rulegroup.json b/src/schema/aws-networkfirewall-rulegroup.json new file mode 100644 index 00000000..8119d86e --- /dev/null +++ b/src/schema/aws-networkfirewall-rulegroup.json @@ -0,0 +1,726 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/RuleGroupName", + "/properties/Capacity", + "/properties/Type" + ], + "definitions": { + "ActionDefinition": { + "additionalProperties": false, + "properties": { + "PublishMetricAction": { + "$ref": "#/definitions/PublishMetricAction" + } + }, + "type": "object" + }, + "Address": { + "additionalProperties": false, + "properties": { + "AddressDefinition": { + "maxLength": 255, + "minLength": 1, + "pattern": "^([a-fA-F\\d:\\.]+/\\d{1,3})$", + "type": "string" + } + }, + "required": [ + "AddressDefinition" + ], + "type": "object" + }, + "CustomAction": { + "additionalProperties": false, + "properties": { + "ActionDefinition": { + "$ref": "#/definitions/ActionDefinition" + }, + "ActionName": { + "maxLength": 128, + "minLength": 1, + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + } + }, + "required": [ + "ActionName", + "ActionDefinition" + ], + "type": "object" + }, + "Dimension": { + "additionalProperties": false, + "properties": { + "Value": { + "maxLength": 128, + "minLength": 1, + "pattern": "^[a-zA-Z0-9-_ ]+$", + "type": "string" + } + }, + "required": [ + "Value" + ], + "type": "object" + }, + "GeneratedRulesType": { + "enum": [ + "ALLOWLIST", + "DENYLIST" + ], + "type": "string" + }, + "Header": { + "additionalProperties": false, + "properties": { + "Destination": { + "maxLength": 1024, + "minLength": 1, + "pattern": "^.*$", + "type": "string" + }, + "DestinationPort": { + "$ref": "#/definitions/Port" + }, + "Direction": { + "enum": [ + "FORWARD", + "ANY" + ], + "type": "string" + }, + "Protocol": { + "enum": [ + "IP", + "TCP", + "UDP", + "ICMP", + "HTTP", + "FTP", + "TLS", + "SMB", + "DNS", + "DCERPC", + "SSH", + "SMTP", + "IMAP", + "MSN", + "KRB5", + "IKEV2", + "TFTP", + "NTP", + "DHCP" + ], + "type": "string" + }, + "Source": { + "maxLength": 1024, + "minLength": 1, + "pattern": "^.*$", + "type": "string" + }, + "SourcePort": { + "$ref": "#/definitions/Port" + } + }, + "required": [ + "Protocol", + "Source", + "SourcePort", + "Direction", + "Destination", + "DestinationPort" + ], + "type": "object" + }, + "IPSet": { + "additionalProperties": false, + "properties": { + "Definition": { + "insertionOrder": true, + "items": { + "$ref": "#/definitions/VariableDefinition" + }, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + }, + "IPSetReference": { + "additionalProperties": false, + "properties": { + "ReferenceArn": { + "$ref": "#/definitions/ResourceArn" + } + }, + "type": "object" + }, + "MatchAttributes": { + "additionalProperties": false, + "properties": { + "DestinationPorts": { + "insertionOrder": true, + "items": { + "$ref": "#/definitions/PortRange" + }, + "type": "array", + "uniqueItems": false + }, + "Destinations": { + "insertionOrder": true, + "items": { + "$ref": "#/definitions/Address" + }, + "type": "array", + "uniqueItems": false + }, + "Protocols": { + "insertionOrder": true, + "items": { + "$ref": "#/definitions/ProtocolNumber" + }, + "type": "array", + "uniqueItems": false + }, + "SourcePorts": { + "insertionOrder": true, + "items": { + "$ref": "#/definitions/PortRange" + }, + "type": "array", + "uniqueItems": false + }, + "Sources": { + "insertionOrder": true, + "items": { + "$ref": "#/definitions/Address" + }, + "type": "array", + "uniqueItems": false + }, + "TCPFlags": { + "insertionOrder": true, + "items": { + "$ref": "#/definitions/TCPFlagField" + }, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + }, + "Port": { + "maxLength": 1024, + "minLength": 1, + "pattern": "^.*$", + "type": "string" + }, + "PortRange": { + "additionalProperties": false, + "properties": { + "FromPort": { + "$ref": "#/definitions/PortRangeBound" + }, + "ToPort": { + "$ref": "#/definitions/PortRangeBound" + } + }, + "required": [ + "FromPort", + "ToPort" + ], + "type": "object" + }, + "PortRangeBound": { + "maximum": 65535, + "minimum": 0, + "type": "integer" + }, + "PortSet": { + "additionalProperties": false, + "properties": { + "Definition": { + "insertionOrder": true, + "items": { + "$ref": "#/definitions/VariableDefinition" + }, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + }, + "ProtocolNumber": { + "maximum": 255, + "minimum": 0, + "type": "integer" + }, + "PublishMetricAction": { + "additionalProperties": false, + "properties": { + "Dimensions": { + "insertionOrder": true, + "items": { + "$ref": "#/definitions/Dimension" + }, + "type": "array", + "uniqueItems": false + } + }, + "required": [ + "Dimensions" + ], + "type": "object" + }, + "ReferenceSets": { + "additionalProperties": false, + "properties": { + "IPSetReferences": { + "additionalProperties": false, + "patternProperties": { + "^[A-Za-z0-9_]{1,32}$": { + "$ref": "#/definitions/IPSetReference" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "ResourceArn": { + "description": "A resource ARN.", + "maxLength": 256, + "minLength": 1, + "pattern": "^(arn:aws.*)$", + "type": "string" + }, + "RuleDefinition": { + "additionalProperties": false, + "properties": { + "Actions": { + "insertionOrder": true, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "MatchAttributes": { + "$ref": "#/definitions/MatchAttributes" + } + }, + "required": [ + "MatchAttributes", + "Actions" + ], + "type": "object" + }, + "RuleGroup": { + "additionalProperties": false, + "properties": { + "ReferenceSets": { + "$ref": "#/definitions/ReferenceSets" + }, + "RuleVariables": { + "$ref": "#/definitions/RuleVariables" + }, + "RulesSource": { + "$ref": "#/definitions/RulesSource" + }, + "StatefulRuleOptions": { + "$ref": "#/definitions/StatefulRuleOptions" + } + }, + "required": [ + "RulesSource" + ], + "type": "object" + }, + "RuleOption": { + "additionalProperties": false, + "properties": { + "Keyword": { + "maxLength": 128, + "minLength": 1, + "pattern": "^.*$", + "type": "string" + }, + "Settings": { + "insertionOrder": true, + "items": { + "$ref": "#/definitions/Setting" + }, + "type": "array", + "uniqueItems": false + } + }, + "required": [ + "Keyword" + ], + "type": "object" + }, + "RuleOrder": { + "enum": [ + "DEFAULT_ACTION_ORDER", + "STRICT_ORDER" + ], + "type": "string" + }, + "RuleVariables": { + "additionalProperties": false, + "properties": { + "IPSets": { + "additionalProperties": false, + "patternProperties": { + "^[A-Za-z0-9_]{1,32}$": { + "$ref": "#/definitions/IPSet" + } + }, + "type": "object" + }, + "PortSets": { + "additionalProperties": false, + "patternProperties": { + "^[A-Za-z0-9_]{1,32}$": { + "$ref": "#/definitions/PortSet" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "RulesSource": { + "additionalProperties": false, + "properties": { + "RulesSourceList": { + "$ref": "#/definitions/RulesSourceList" + }, + "RulesString": { + "$ref": "#/definitions/RulesString" + }, + "StatefulRules": { + "insertionOrder": true, + "items": { + "$ref": "#/definitions/StatefulRule" + }, + "type": "array", + "uniqueItems": false + }, + "StatelessRulesAndCustomActions": { + "$ref": "#/definitions/StatelessRulesAndCustomActions" + } + }, + "type": "object" + }, + "RulesSourceList": { + "additionalProperties": false, + "properties": { + "GeneratedRulesType": { + "$ref": "#/definitions/GeneratedRulesType" + }, + "TargetTypes": { + "insertionOrder": true, + "items": { + "$ref": "#/definitions/TargetType" + }, + "type": "array", + "uniqueItems": false + }, + "Targets": { + "insertionOrder": true, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + } + }, + "required": [ + "Targets", + "TargetTypes", + "GeneratedRulesType" + ], + "type": "object" + }, + "RulesString": { + "maxLength": 1000000, + "minLength": 0, + "type": "string" + }, + "Setting": { + "maxLength": 8192, + "minLength": 1, + "pattern": "^.*$", + "type": "string" + }, + "StatefulRule": { + "additionalProperties": false, + "properties": { + "Action": { + "enum": [ + "PASS", + "DROP", + "ALERT", + "REJECT" + ], + "type": "string" + }, + "Header": { + "$ref": "#/definitions/Header" + }, + "RuleOptions": { + "insertionOrder": true, + "items": { + "$ref": "#/definitions/RuleOption" + }, + "type": "array", + "uniqueItems": false + } + }, + "required": [ + "Action", + "Header", + "RuleOptions" + ], + "type": "object" + }, + "StatefulRuleOptions": { + "additionalProperties": false, + "properties": { + "RuleOrder": { + "$ref": "#/definitions/RuleOrder" + } + }, + "type": "object" + }, + "StatelessRule": { + "additionalProperties": false, + "properties": { + "Priority": { + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "RuleDefinition": { + "$ref": "#/definitions/RuleDefinition" + } + }, + "required": [ + "RuleDefinition", + "Priority" + ], + "type": "object" + }, + "StatelessRulesAndCustomActions": { + "additionalProperties": false, + "properties": { + "CustomActions": { + "insertionOrder": true, + "items": { + "$ref": "#/definitions/CustomAction" + }, + "type": "array", + "uniqueItems": false + }, + "StatelessRules": { + "insertionOrder": true, + "items": { + "$ref": "#/definitions/StatelessRule" + }, + "type": "array", + "uniqueItems": false + } + }, + "required": [ + "StatelessRules" + ], + "type": "object" + }, + "TCPFlag": { + "enum": [ + "FIN", + "SYN", + "RST", + "PSH", + "ACK", + "URG", + "ECE", + "CWR" + ], + "type": "string" + }, + "TCPFlagField": { + "additionalProperties": false, + "properties": { + "Flags": { + "insertionOrder": true, + "items": { + "$ref": "#/definitions/TCPFlag" + }, + "type": "array", + "uniqueItems": false + }, + "Masks": { + "insertionOrder": true, + "items": { + "$ref": "#/definitions/TCPFlag" + }, + "type": "array", + "uniqueItems": false + } + }, + "required": [ + "Flags" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "pattern": "^.*$", + "type": "string" + }, + "Value": { + "maxLength": 255, + "minLength": 0, + "pattern": "^.*$", + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "TargetType": { + "enum": [ + "TLS_SNI", + "HTTP_HOST" + ], + "type": "string" + }, + "VariableDefinition": { + "minLength": 1, + "pattern": "^.*$", + "type": "string" + } + }, + "description": "Resource type definition for AWS::NetworkFirewall::RuleGroup", + "handlers": { + "create": { + "permissions": [ + "network-firewall:CreateRuleGroup", + "network-firewall:DescribeRuleGroup", + "network-firewall:TagResource", + "network-firewall:ListRuleGroups", + "iam:CreateServiceLinkedRole", + "ec2:GetManagedPrefixListEntries" + ] + }, + "delete": { + "permissions": [ + "network-firewall:DeleteRuleGroup", + "network-firewall:DescribeRuleGroup", + "network-firewall:UntagResource" + ] + }, + "list": { + "permissions": [ + "network-firewall:ListRuleGroups" + ] + }, + "read": { + "permissions": [ + "network-firewall:DescribeRuleGroup", + "network-firewall:ListTagsForResources" + ] + }, + "update": { + "permissions": [ + "network-firewall:UpdateRuleGroup", + "network-firewall:DescribeRuleGroup", + "network-firewall:TagResource", + "network-firewall:UntagResource", + "iam:CreateServiceLinkedRole", + "ec2:GetManagedPrefixListEntries" + ] + } + }, + "primaryIdentifier": [ + "/properties/RuleGroupArn" + ], + "properties": { + "Capacity": { + "type": "integer" + }, + "Description": { + "maxLength": 512, + "minLength": 1, + "pattern": "^.*$", + "type": "string" + }, + "RuleGroup": { + "$ref": "#/definitions/RuleGroup" + }, + "RuleGroupArn": { + "$ref": "#/definitions/ResourceArn" + }, + "RuleGroupId": { + "maxLength": 36, + "minLength": 36, + "pattern": "^([0-9a-f]{8})-([0-9a-f]{4}-){3}([0-9a-f]{12})$", + "type": "string" + }, + "RuleGroupName": { + "maxLength": 128, + "minLength": 1, + "pattern": "^[a-zA-Z0-9-]+$", + "type": "string" + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + }, + "Type": { + "enum": [ + "STATELESS", + "STATEFUL" + ], + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/RuleGroupArn", + "/properties/RuleGroupId" + ], + "required": [ + "Type", + "Capacity", + "RuleGroupName" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-networkfirewall.git", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "network-firewall:TagResource", + "network-firewall:UntagResource", + "network-firewall:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::NetworkFirewall::RuleGroup" +} diff --git a/src/schema/aws-networkfirewall-tlsinspectionconfiguration.json b/src/schema/aws-networkfirewall-tlsinspectionconfiguration.json new file mode 100644 index 00000000..2fbd41fc --- /dev/null +++ b/src/schema/aws-networkfirewall-tlsinspectionconfiguration.json @@ -0,0 +1,296 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/TLSInspectionConfigurationName" + ], + "definitions": { + "Address": { + "additionalProperties": false, + "properties": { + "AddressDefinition": { + "maxLength": 255, + "minLength": 1, + "pattern": "^([a-fA-F\\d:\\.]+/\\d{1,3})$", + "type": "string" + } + }, + "required": [ + "AddressDefinition" + ], + "type": "object" + }, + "PortRange": { + "additionalProperties": false, + "properties": { + "FromPort": { + "$ref": "#/definitions/PortRangeBound" + }, + "ToPort": { + "$ref": "#/definitions/PortRangeBound" + } + }, + "required": [ + "FromPort", + "ToPort" + ], + "type": "object" + }, + "PortRangeBound": { + "maximum": 65535, + "minimum": 0, + "type": "integer" + }, + "ProtocolNumber": { + "maximum": 255, + "minimum": 0, + "type": "integer" + }, + "ResourceArn": { + "description": "A resource ARN.", + "maxLength": 256, + "minLength": 1, + "pattern": "^(arn:aws.*)$", + "type": "string" + }, + "RevokedStatusAction": { + "enum": [ + "PASS", + "DROP", + "REJECT" + ], + "type": "string" + }, + "ServerCertificate": { + "additionalProperties": false, + "properties": { + "ResourceArn": { + "$ref": "#/definitions/ResourceArn" + } + }, + "type": "object" + }, + "ServerCertificateConfiguration": { + "additionalProperties": false, + "properties": { + "CertificateAuthorityArn": { + "$ref": "#/definitions/ResourceArn" + }, + "CheckCertificateRevocationStatus": { + "additionalProperties": false, + "properties": { + "RevokedStatusAction": { + "$ref": "#/definitions/RevokedStatusAction" + }, + "UnknownStatusAction": { + "$ref": "#/definitions/UnknownStatusAction" + } + }, + "type": "object" + }, + "Scopes": { + "insertionOrder": true, + "items": { + "$ref": "#/definitions/ServerCertificateScope" + }, + "type": "array", + "uniqueItems": false + }, + "ServerCertificates": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/ServerCertificate" + }, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + "ServerCertificateScope": { + "additionalProperties": false, + "properties": { + "DestinationPorts": { + "insertionOrder": true, + "items": { + "$ref": "#/definitions/PortRange" + }, + "type": "array", + "uniqueItems": false + }, + "Destinations": { + "insertionOrder": true, + "items": { + "$ref": "#/definitions/Address" + }, + "type": "array", + "uniqueItems": false + }, + "Protocols": { + "insertionOrder": true, + "items": { + "$ref": "#/definitions/ProtocolNumber" + }, + "type": "array", + "uniqueItems": false + }, + "SourcePorts": { + "insertionOrder": true, + "items": { + "$ref": "#/definitions/PortRange" + }, + "type": "array", + "uniqueItems": false + }, + "Sources": { + "insertionOrder": true, + "items": { + "$ref": "#/definitions/Address" + }, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + }, + "TLSInspectionConfiguration": { + "additionalProperties": false, + "properties": { + "ServerCertificateConfigurations": { + "insertionOrder": true, + "items": { + "$ref": "#/definitions/ServerCertificateConfiguration" + }, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "pattern": "^.*$", + "type": "string" + }, + "Value": { + "maxLength": 255, + "minLength": 0, + "pattern": "^.*$", + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "UnknownStatusAction": { + "enum": [ + "PASS", + "DROP", + "REJECT" + ], + "type": "string" + } + }, + "description": "Resource type definition for AWS::NetworkFirewall::TLSInspectionConfiguration", + "handlers": { + "create": { + "permissions": [ + "iam:CreateServiceLinkedRole", + "network-firewall:CreateTLSInspectionConfiguration", + "network-firewall:DescribeTLSInspectionConfiguration", + "network-firewall:TagResource" + ] + }, + "delete": { + "permissions": [ + "network-firewall:DeleteTLSInspectionConfiguration", + "network-firewall:DescribeTLSInspectionConfiguration", + "network-firewall:UntagResource" + ] + }, + "list": { + "permissions": [ + "network-firewall:ListTLSInspectionConfigurations" + ] + }, + "read": { + "permissions": [ + "network-firewall:DescribeTLSInspectionConfiguration", + "network-firewall:ListTagsForResources" + ] + }, + "update": { + "permissions": [ + "network-firewall:UpdateTLSInspectionConfiguration", + "network-firewall:DescribeTLSInspectionConfiguration", + "network-firewall:TagResource", + "network-firewall:UntagResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/TLSInspectionConfigurationArn" + ], + "properties": { + "Description": { + "maxLength": 512, + "minLength": 1, + "pattern": "^.*$", + "type": "string" + }, + "TLSInspectionConfiguration": { + "$ref": "#/definitions/TLSInspectionConfiguration" + }, + "TLSInspectionConfigurationArn": { + "$ref": "#/definitions/ResourceArn" + }, + "TLSInspectionConfigurationId": { + "maxLength": 36, + "minLength": 36, + "pattern": "^([0-9a-f]{8})-([0-9a-f]{4}-){3}([0-9a-f]{12})$", + "type": "string" + }, + "TLSInspectionConfigurationName": { + "maxLength": 128, + "minLength": 1, + "pattern": "^[a-zA-Z0-9-]+$", + "type": "string" + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/TLSInspectionConfigurationArn", + "/properties/TLSInspectionConfigurationId" + ], + "required": [ + "TLSInspectionConfigurationName", + "TLSInspectionConfiguration" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-networkfirewall.git", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "network-firewall:TagResource", + "network-firewall:UntagResource", + "network-firewall:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::NetworkFirewall::TLSInspectionConfiguration" +} diff --git a/src/schema/aws-networkmanager-connectattachment.json b/src/schema/aws-networkmanager-connectattachment.json new file mode 100644 index 00000000..f054dd52 --- /dev/null +++ b/src/schema/aws-networkmanager-connectattachment.json @@ -0,0 +1,240 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/CoreNetworkId", + "/properties/EdgeLocation", + "/properties/TransportAttachmentId", + "/properties/Options" + ], + "definitions": { + "ConnectAttachmentOptions": { + "additionalProperties": false, + "description": "Connect attachment options for protocol", + "properties": { + "Protocol": { + "description": "Tunnel protocol for connect attachment", + "type": "string" + } + }, + "type": "object" + }, + "ProposedNetworkFunctionGroupChange": { + "additionalProperties": false, + "description": "The attachment to move from one network function group to another.", + "properties": { + "AttachmentPolicyRuleNumber": { + "description": "The rule number in the policy document that applies to this change.", + "type": "integer" + }, + "NetworkFunctionGroupName": { + "description": "The name of the network function group to change.", + "type": "string" + }, + "Tags": { + "description": "The key-value tags that changed for the network function group.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + "ProposedSegmentChange": { + "additionalProperties": false, + "description": "The attachment to move from one segment to another.", + "properties": { + "AttachmentPolicyRuleNumber": { + "description": "The rule number in the policy document that applies to this change.", + "type": "integer" + }, + "SegmentName": { + "description": "The name of the segment to change.", + "type": "string" + }, + "Tags": { + "description": "The list of key-value tags that changed for the segment.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "AWS::NetworkManager::ConnectAttachment Resource Type Definition", + "handlers": { + "create": { + "permissions": [ + "networkmanager:GetConnectAttachment", + "networkmanager:CreateConnectAttachment", + "networkmanager:TagResource", + "ec2:DescribeRegions" + ] + }, + "delete": { + "permissions": [ + "networkmanager:GetConnectAttachment", + "networkmanager:DeleteAttachment", + "ec2:DescribeRegions" + ] + }, + "list": { + "permissions": [ + "networkmanager:ListAttachments" + ] + }, + "read": { + "permissions": [ + "networkmanager:GetConnectAttachment" + ] + }, + "update": { + "permissions": [ + "networkmanager:GetConnectAttachment", + "networkmanager:ListTagsForResource", + "networkmanager:TagResource", + "networkmanager:UntagResource", + "ec2:DescribeRegions" + ] + } + }, + "primaryIdentifier": [ + "/properties/AttachmentId" + ], + "properties": { + "AttachmentId": { + "description": "The ID of the attachment.", + "type": "string" + }, + "AttachmentPolicyRuleNumber": { + "description": "The policy rule number associated with the attachment.", + "type": "integer" + }, + "AttachmentType": { + "description": "The type of attachment.", + "type": "string" + }, + "CoreNetworkArn": { + "description": "The ARN of a core network.", + "type": "string" + }, + "CoreNetworkId": { + "description": "ID of the CoreNetwork that the attachment will be attached to.", + "type": "string" + }, + "CreatedAt": { + "description": "Creation time of the attachment.", + "type": "string" + }, + "EdgeLocation": { + "description": "Edge location of the attachment.", + "type": "string" + }, + "NetworkFunctionGroupName": { + "description": "The name of the network function group attachment.", + "type": "string" + }, + "Options": { + "$ref": "#/definitions/ConnectAttachmentOptions", + "description": "Protocol options for connect attachment" + }, + "OwnerAccountId": { + "description": "The ID of the attachment account owner.", + "type": "string" + }, + "ProposedNetworkFunctionGroupChange": { + "$ref": "#/definitions/ProposedNetworkFunctionGroupChange", + "description": "The attachment to move from one network function group to another." + }, + "ProposedSegmentChange": { + "$ref": "#/definitions/ProposedSegmentChange", + "description": "The attachment to move from one segment to another." + }, + "ResourceArn": { + "description": "The attachment resource ARN.", + "type": "string" + }, + "SegmentName": { + "description": "The name of the segment attachment.", + "type": "string" + }, + "State": { + "description": "State of the attachment.", + "type": "string" + }, + "Tags": { + "description": "Tags for the attachment.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + }, + "TransportAttachmentId": { + "description": "Id of transport attachment", + "type": "string" + }, + "UpdatedAt": { + "description": "Last update time of the attachment.", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/CoreNetworkArn", + "/properties/CreatedAt", + "/properties/UpdatedAt", + "/properties/AttachmentType", + "/properties/State", + "/properties/ResourceArn", + "/properties/AttachmentId", + "/properties/OwnerAccountId", + "/properties/AttachmentPolicyRuleNumber", + "/properties/SegmentName" + ], + "required": [ + "CoreNetworkId", + "EdgeLocation", + "TransportAttachmentId", + "Options" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-networkmanager/aws-networkmanager-connectattachment", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "networkmanager:TagResource", + "networkmanager:UntagResource", + "networkmanager:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::NetworkManager::ConnectAttachment" +} diff --git a/src/schema/aws-networkmanager-connectpeer.json b/src/schema/aws-networkmanager-connectpeer.json new file mode 100644 index 00000000..6db89565 --- /dev/null +++ b/src/schema/aws-networkmanager-connectpeer.json @@ -0,0 +1,242 @@ +{ + "additionalIdentifiers": [ + [ + "/properties/ConnectAttachmentId", + "/properties/CoreNetworkAddress", + "/properties/InsideCidrBlocks" + ] + ], + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/PeerAddress", + "/properties/CoreNetworkAddress", + "/properties/BgpOptions", + "/properties/InsideCidrBlocks", + "/properties/ConnectAttachmentId", + "/properties/SubnetArn" + ], + "definitions": { + "BgpOptions": { + "additionalProperties": false, + "description": "Bgp options", + "properties": { + "PeerAsn": { + "type": "number" + } + }, + "type": "object" + }, + "ConnectPeerBgpConfiguration": { + "additionalProperties": false, + "description": "Bgp configuration for connect peer", + "properties": { + "CoreNetworkAddress": { + "description": "The address of a core network.", + "type": "string" + }, + "CoreNetworkAsn": { + "description": "The ASN of the Coret Network.", + "type": "number" + }, + "PeerAddress": { + "description": "The address of a core network Connect peer.", + "type": "string" + }, + "PeerAsn": { + "description": "The ASN of the Connect peer.", + "type": "number" + } + }, + "type": "object" + }, + "ConnectPeerConfiguration": { + "additionalProperties": false, + "properties": { + "BgpConfigurations": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/ConnectPeerBgpConfiguration" + }, + "type": "array" + }, + "CoreNetworkAddress": { + "description": "The IP address of a core network.", + "type": "string" + }, + "InsideCidrBlocks": { + "description": "The inside IP addresses used for a Connect peer configuration.", + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array" + }, + "PeerAddress": { + "description": "The IP address of the Connect peer.", + "type": "string" + }, + "Protocol": { + "$ref": "#/definitions/TunnelProtocol" + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "TunnelProtocol": { + "description": "The protocol used for a Connect peer configuration.", + "type": "string" + } + }, + "description": "AWS::NetworkManager::ConnectPeer Resource Type Definition.", + "handlers": { + "create": { + "permissions": [ + "networkmanager:GetConnectPeer", + "networkmanager:CreateConnectPeer", + "networkmanager:TagResource", + "ec2:DescribeRegions" + ] + }, + "delete": { + "permissions": [ + "networkmanager:GetConnectPeer", + "networkmanager:DeleteConnectPeer", + "ec2:DescribeRegions" + ] + }, + "list": { + "permissions": [ + "networkmanager:ListConnectPeers" + ] + }, + "read": { + "permissions": [ + "networkmanager:GetConnectPeer" + ] + }, + "update": { + "permissions": [ + "networkmanager:GetConnectPeer", + "networkmanager:ListTagsForResource", + "networkmanager:TagResource", + "networkmanager:UntagResource", + "ec2:DescribeRegions" + ] + } + }, + "primaryIdentifier": [ + "/properties/ConnectPeerId" + ], + "properties": { + "BgpOptions": { + "$ref": "#/definitions/BgpOptions", + "description": "Bgp options for connect peer." + }, + "Configuration": { + "$ref": "#/definitions/ConnectPeerConfiguration", + "description": "Configuration of the connect peer." + }, + "ConnectAttachmentId": { + "description": "The ID of the attachment to connect.", + "type": "string" + }, + "ConnectPeerId": { + "description": "The ID of the Connect peer.", + "type": "string" + }, + "CoreNetworkAddress": { + "description": "The IP address of a core network.", + "type": "string" + }, + "CoreNetworkId": { + "description": "The ID of the core network.", + "type": "string" + }, + "CreatedAt": { + "description": "Connect peer creation time.", + "type": "string" + }, + "EdgeLocation": { + "description": "The Connect peer Regions where edges are located.", + "type": "string" + }, + "InsideCidrBlocks": { + "description": "The inside IP addresses used for a Connect peer configuration.", + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array" + }, + "PeerAddress": { + "description": "The IP address of the Connect peer.", + "type": "string" + }, + "State": { + "description": "State of the connect peer.", + "type": "string" + }, + "SubnetArn": { + "description": "The subnet ARN for the connect peer.", + "type": "string" + }, + "Tags": { + "description": "An array of key-value pairs to apply to this resource.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/ConnectPeerId", + "/properties/State", + "/properties/CreatedAt", + "/properties/Configuration", + "/properties/CoreNetworkId", + "/properties/EdgeLocation" + ], + "required": [ + "ConnectAttachmentId", + "PeerAddress" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-networkmanager/aws-networkmanager-connectpeer", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "networkmanager:TagResource", + "networkmanager:UntagResource", + "networkmanager:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::NetworkManager::ConnectPeer", + "writeOnlyProperties": [ + "/properties/CoreNetworkAddress", + "/properties/BgpOptions", + "/properties/SubnetArn" + ] +} diff --git a/src/schema/aws-networkmanager-corenetwork.json b/src/schema/aws-networkmanager-corenetwork.json new file mode 100644 index 00000000..faddbcde --- /dev/null +++ b/src/schema/aws-networkmanager-corenetwork.json @@ -0,0 +1,268 @@ +{ + "additionalIdentifiers": [ + [ + "/properties/CoreNetworkArn" + ], + [ + "/properties/GlobalNetworkId" + ] + ], + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/GlobalNetworkId" + ], + "definitions": { + "CoreNetworkEdge": { + "additionalProperties": false, + "properties": { + "Asn": { + "description": "The ASN of a core network edge.", + "type": "number" + }, + "EdgeLocation": { + "description": "The Region where a core network edge is located.", + "type": "string" + }, + "InsideCidrBlocks": { + "insertionOrder": false, + "items": { + "description": "The inside IP addresses used for core network edges.", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "CoreNetworkNetworkFunctionGroup": { + "additionalProperties": false, + "properties": { + "EdgeLocations": { + "insertionOrder": false, + "items": { + "description": "The Regions where the edges are located.", + "type": "string" + }, + "type": "array" + }, + "Name": { + "description": "Name of network function group", + "type": "string" + }, + "Segments": { + "additionalProperties": false, + "properties": { + "SendTo": { + "insertionOrder": false, + "items": { + "description": "The send-to segments.", + "type": "string" + }, + "type": "array" + }, + "SendVia": { + "insertionOrder": false, + "items": { + "description": "The send-via segments.", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "CoreNetworkSegment": { + "additionalProperties": false, + "properties": { + "EdgeLocations": { + "insertionOrder": false, + "items": { + "description": "The Regions where the edges are located.", + "type": "string" + }, + "type": "array" + }, + "Name": { + "description": "Name of segment", + "type": "string" + }, + "SharedSegments": { + "insertionOrder": false, + "items": { + "description": "The shared segments of a core network.", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "AWS::NetworkManager::CoreNetwork Resource Type Definition.", + "handlers": { + "create": { + "permissions": [ + "networkmanager:CreateCoreNetwork", + "networkmanager:GetCoreNetwork", + "networkmanager:GetCoreNetworkPolicy", + "networkmanager:TagResource", + "ec2:DescribeRegions" + ], + "timeoutInMinutes": 720 + }, + "delete": { + "permissions": [ + "networkmanager:DeleteCoreNetwork", + "networkmanager:UntagResource", + "networkmanager:GetCoreNetwork", + "networkmanager:GetCoreNetworkPolicy", + "ec2:DescribeRegions" + ], + "timeoutInMinutes": 720 + }, + "list": { + "permissions": [ + "networkmanager:ListCoreNetworks" + ] + }, + "read": { + "permissions": [ + "networkmanager:GetCoreNetwork", + "networkmanager:GetCoreNetworkPolicy" + ] + }, + "update": { + "permissions": [ + "networkmanager:UpdateCoreNetwork", + "networkmanager:GetCoreNetwork", + "networkmanager:ListTagsForResource", + "networkmanager:PutCoreNetworkPolicy", + "networkmanager:GetCoreNetworkPolicy", + "networkmanager:ExecuteCoreNetworkChangeSet", + "networkmanager:TagResource", + "networkmanager:UntagResource", + "ec2:DescribeRegions" + ], + "timeoutInMinutes": 720 + } + }, + "primaryIdentifier": [ + "/properties/CoreNetworkId" + ], + "properties": { + "CoreNetworkArn": { + "description": "The ARN (Amazon resource name) of core network", + "type": "string" + }, + "CoreNetworkId": { + "description": "The Id of core network", + "type": "string" + }, + "CreatedAt": { + "description": "The creation time of core network", + "type": "string" + }, + "Description": { + "description": "The description of core network", + "type": "string" + }, + "Edges": { + "description": "The edges within a core network.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/CoreNetworkEdge" + }, + "type": "array" + }, + "GlobalNetworkId": { + "description": "The ID of the global network that your core network is a part of.", + "type": "string" + }, + "NetworkFunctionGroups": { + "description": "The network function groups within a core network.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/CoreNetworkNetworkFunctionGroup" + }, + "type": "array" + }, + "OwnerAccount": { + "description": "Owner of the core network", + "type": "string" + }, + "PolicyDocument": { + "description": "Live policy document for the core network, you must provide PolicyDocument in Json Format", + "type": "object" + }, + "Segments": { + "description": "The segments within a core network.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/CoreNetworkSegment" + }, + "type": "array" + }, + "State": { + "description": "The state of core network", + "type": "string" + }, + "Tags": { + "description": "The tags for the global network.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/OwnerAccount", + "/properties/CoreNetworkId", + "/properties/CoreNetworkArn", + "/properties/CreatedAt", + "/properties/State", + "/properties/Segments", + "/properties/NetworkFunctionGroups", + "/properties/Edges" + ], + "required": [ + "GlobalNetworkId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-networkmanager/aws-networkmanager-corenetwork", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "networkmanager:TagResource", + "networkmanager:UntagResource", + "networkmanager:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::NetworkManager::CoreNetwork" +} diff --git a/src/schema/aws-networkmanager-customergatewayassociation.json b/src/schema/aws-networkmanager-customergatewayassociation.json new file mode 100644 index 00000000..b47cd7aa --- /dev/null +++ b/src/schema/aws-networkmanager-customergatewayassociation.json @@ -0,0 +1,78 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/GlobalNetworkId", + "/properties/CustomerGatewayArn", + "/properties/DeviceId", + "/properties/LinkId" + ], + "description": "The AWS::NetworkManager::CustomerGatewayAssociation type associates a customer gateway with a device and optionally, with a link.", + "handlers": { + "create": { + "permissions": [ + "networkmanager:GetCustomerGatewayAssociations", + "networkmanager:AssociateCustomerGateway" + ] + }, + "delete": { + "permissions": [ + "networkmanager:DisassociateCustomerGateway" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "GlobalNetworkId": { + "$ref": "resource-schema.json#/properties/GlobalNetworkId" + } + }, + "required": [ + "GlobalNetworkId" + ] + }, + "permissions": [ + "networkmanager:GetCustomerGatewayAssociations" + ] + }, + "read": { + "permissions": [ + "networkmanager:GetCustomerGatewayAssociations" + ] + } + }, + "primaryIdentifier": [ + "/properties/GlobalNetworkId", + "/properties/CustomerGatewayArn" + ], + "properties": { + "CustomerGatewayArn": { + "description": "The Amazon Resource Name (ARN) of the customer gateway.", + "type": "string" + }, + "DeviceId": { + "description": "The ID of the device", + "type": "string" + }, + "GlobalNetworkId": { + "description": "The ID of the global network.", + "type": "string" + }, + "LinkId": { + "description": "The ID of the link", + "type": "string" + } + }, + "required": [ + "GlobalNetworkId", + "CustomerGatewayArn", + "DeviceId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-networkmanager.git", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::NetworkManager::CustomerGatewayAssociation" +} diff --git a/src/schema/aws-networkmanager-device.json b/src/schema/aws-networkmanager-device.json new file mode 100644 index 00000000..b86f615f --- /dev/null +++ b/src/schema/aws-networkmanager-device.json @@ -0,0 +1,201 @@ +{ + "additionalIdentifiers": [ + [ + "/properties/DeviceArn" + ] + ], + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/GlobalNetworkId" + ], + "definitions": { + "AWSLocation": { + "additionalProperties": false, + "description": "The Amazon Web Services location of the device, if applicable.", + "properties": { + "SubnetArn": { + "description": "The Amazon Resource Name (ARN) of the subnet that the device is located in.", + "type": "string" + }, + "Zone": { + "description": "The Zone that the device is located in. Specify the ID of an Availability Zone, Local Zone, Wavelength Zone, or an Outpost.", + "type": "string" + } + }, + "type": "object" + }, + "Location": { + "additionalProperties": false, + "description": "The site location.", + "properties": { + "Address": { + "description": "The physical address.", + "type": "string" + }, + "Latitude": { + "description": "The latitude.", + "type": "string" + }, + "Longitude": { + "description": "The longitude.", + "type": "string" + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a device resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "The AWS::NetworkManager::Device type describes a device.", + "handlers": { + "create": { + "permissions": [ + "networkmanager:CreateDevice", + "networkmanager:GetDevices", + "networkmanager:TagResource" + ] + }, + "delete": { + "permissions": [ + "networkmanager:GetDevices", + "networkmanager:DeleteDevice" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "GlobalNetworkId": { + "$ref": "resource-schema.json#/properties/GlobalNetworkId" + } + }, + "required": [ + "GlobalNetworkId" + ] + }, + "permissions": [ + "networkmanager:GetDevices" + ] + }, + "read": { + "permissions": [ + "networkmanager:GetDevices" + ] + }, + "update": { + "permissions": [ + "networkmanager:UpdateDevice", + "networkmanager:ListTagsForResource", + "networkmanager:GetDevices", + "networkmanager:TagResource", + "networkmanager:UntagResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/GlobalNetworkId", + "/properties/DeviceId" + ], + "properties": { + "AWSLocation": { + "$ref": "#/definitions/AWSLocation", + "description": "The Amazon Web Services location of the device, if applicable." + }, + "CreatedAt": { + "description": "The date and time that the device was created.", + "type": "string" + }, + "Description": { + "description": "The description of the device.", + "type": "string" + }, + "DeviceArn": { + "description": "The Amazon Resource Name (ARN) of the device.", + "type": "string" + }, + "DeviceId": { + "description": "The ID of the device.", + "type": "string" + }, + "GlobalNetworkId": { + "description": "The ID of the global network.", + "type": "string" + }, + "Location": { + "$ref": "#/definitions/Location", + "description": "The site location." + }, + "Model": { + "description": "The device model", + "type": "string" + }, + "SerialNumber": { + "description": "The device serial number.", + "type": "string" + }, + "SiteId": { + "description": "The site ID.", + "type": "string" + }, + "State": { + "description": "The state of the device.", + "type": "string" + }, + "Tags": { + "description": "The tags for the device.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + }, + "Type": { + "description": "The device type.", + "type": "string" + }, + "Vendor": { + "description": "The device vendor.", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/DeviceId", + "/properties/DeviceArn", + "/properties/State", + "/properties/CreatedAt" + ], + "required": [ + "GlobalNetworkId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-networkmanager.git", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "networkmanager:TagResource", + "networkmanager:UntagResource", + "networkmanager:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::NetworkManager::Device" +} diff --git a/src/schema/aws-networkmanager-directconnectgatewayattachment.json b/src/schema/aws-networkmanager-directconnectgatewayattachment.json new file mode 100644 index 00000000..96cf1fa5 --- /dev/null +++ b/src/schema/aws-networkmanager-directconnectgatewayattachment.json @@ -0,0 +1,239 @@ +{ + "additionalIdentifiers": [ + [ + "/properties/CoreNetworkId", + "/properties/DirectConnectGatewayArn" + ] + ], + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/CoreNetworkId", + "/properties/DirectConnectGatewayArn" + ], + "definitions": { + "ProposedNetworkFunctionGroupChange": { + "additionalProperties": false, + "description": "The attachment to move from one network function group to another.", + "properties": { + "AttachmentPolicyRuleNumber": { + "description": "The rule number in the policy document that applies to this change.", + "type": "integer" + }, + "NetworkFunctionGroupName": { + "description": "The name of the network function group to change.", + "type": "string" + }, + "Tags": { + "description": "The key-value tags that changed for the network function group.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + "ProposedSegmentChange": { + "additionalProperties": false, + "description": "The attachment to move from one segment to another.", + "properties": { + "AttachmentPolicyRuleNumber": { + "description": "The rule number in the policy document that applies to this change.", + "type": "integer" + }, + "SegmentName": { + "description": "The name of the segment to change.", + "type": "string" + }, + "Tags": { + "description": "The key-value tags that changed for the segment.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "AWS::NetworkManager::DirectConnectGatewayAttachment Resource Type", + "handlers": { + "create": { + "permissions": [ + "networkmanager:CreateDirectConnectGatewayAttachment", + "networkmanager:GetDirectConnectGatewayAttachment", + "networkmanager:TagResource", + "ec2:DescribeRegions", + "iam:CreateServiceLinkedRole" + ], + "timeoutInMinutes": 60 + }, + "delete": { + "permissions": [ + "networkmanager:DeleteAttachment", + "networkmanager:GetDirectConnectGatewayAttachment", + "networkmanager:UntagResource", + "ec2:DescribeRegions" + ], + "timeoutInMinutes": 60 + }, + "list": { + "permissions": [ + "networkmanager:ListAttachments" + ] + }, + "read": { + "permissions": [ + "networkmanager:GetDirectConnectGatewayAttachment" + ] + }, + "update": { + "permissions": [ + "networkmanager:UpdateDirectConnectGatewayAttachment", + "networkmanager:GetDirectConnectGatewayAttachment", + "networkmanager:ListTagsForResource", + "networkmanager:TagResource", + "networkmanager:UntagResource", + "ec2:DescribeRegions" + ], + "timeoutInMinutes": 60 + } + }, + "primaryIdentifier": [ + "/properties/AttachmentId" + ], + "properties": { + "AttachmentId": { + "description": "Id of the attachment.", + "type": "string" + }, + "AttachmentPolicyRuleNumber": { + "description": "The policy rule number associated with the attachment.", + "type": "integer" + }, + "AttachmentType": { + "description": "Attachment type.", + "type": "string" + }, + "CoreNetworkArn": { + "description": "The ARN of a core network for the Direct Connect Gateway attachment.", + "type": "string" + }, + "CoreNetworkId": { + "description": "The ID of a core network for the Direct Connect Gateway attachment.", + "type": "string" + }, + "CreatedAt": { + "description": "Creation time of the attachment.", + "type": "string" + }, + "DirectConnectGatewayArn": { + "description": "The ARN of the Direct Connect Gateway.", + "type": "string" + }, + "EdgeLocations": { + "description": "The Regions where the edges are located.", + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array" + }, + "NetworkFunctionGroupName": { + "description": "The name of the network function group attachment.", + "type": "string" + }, + "OwnerAccountId": { + "description": "Owner account of the attachment.", + "type": "string" + }, + "ProposedNetworkFunctionGroupChange": { + "$ref": "#/definitions/ProposedNetworkFunctionGroupChange", + "description": "The attachment to move from one network function group to another." + }, + "ProposedSegmentChange": { + "$ref": "#/definitions/ProposedSegmentChange", + "description": "The attachment to move from one segment to another." + }, + "ResourceArn": { + "description": "The ARN of the Resource.", + "type": "string" + }, + "SegmentName": { + "description": "The name of the segment attachment..", + "type": "string" + }, + "State": { + "description": "State of the attachment.", + "type": "string" + }, + "Tags": { + "description": "Tags for the attachment.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + }, + "UpdatedAt": { + "description": "Last update time of the attachment.", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/CoreNetworkArn", + "/properties/CreatedAt", + "/properties/UpdatedAt", + "/properties/AttachmentType", + "/properties/State", + "/properties/AttachmentId", + "/properties/OwnerAccountId", + "/properties/AttachmentPolicyRuleNumber", + "/properties/SegmentName", + "/properties/NetworkFunctionGroupName", + "/properties/ResourceArn" + ], + "required": [ + "CoreNetworkId", + "DirectConnectGatewayArn", + "EdgeLocations" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-networkmanager/aws-networkmanager-directconnectgatewayattachment", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "networkmanager:TagResource", + "networkmanager:UntagResource", + "networkmanager:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::NetworkManager::DirectConnectGatewayAttachment" +} diff --git a/src/schema/aws-networkmanager-globalnetwork.json b/src/schema/aws-networkmanager-globalnetwork.json new file mode 100644 index 00000000..bb325f1b --- /dev/null +++ b/src/schema/aws-networkmanager-globalnetwork.json @@ -0,0 +1,117 @@ +{ + "additionalIdentifiers": [ + [ + "/properties/Arn" + ] + ], + "additionalProperties": false, + "definitions": { + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a global network resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "The AWS::NetworkManager::GlobalNetwork type specifies a global network of the user's account", + "handlers": { + "create": { + "permissions": [ + "networkmanager:CreateGlobalNetwork", + "networkmanager:DescribeGlobalNetworks", + "networkmanager:TagResource", + "iam:CreateServiceLinkedRole" + ] + }, + "delete": { + "permissions": [ + "networkmanager:DeleteGlobalNetwork", + "networkmanager:DescribeGlobalNetworks" + ] + }, + "list": { + "permissions": [ + "networkmanager:DescribeGlobalNetworks" + ] + }, + "read": { + "permissions": [ + "networkmanager:DescribeGlobalNetworks" + ] + }, + "update": { + "permissions": [ + "networkmanager:UpdateGlobalNetwork", + "networkmanager:DescribeGlobalNetworks", + "networkmanager:TagResource", + "networkmanager:UntagResource", + "networkmanager:ListTagsForResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Arn": { + "description": "The Amazon Resource Name (ARN) of the global network.", + "type": "string" + }, + "CreatedAt": { + "description": "The date and time that the global network was created.", + "type": "string" + }, + "Description": { + "description": "The description of the global network.", + "type": "string" + }, + "Id": { + "description": "The ID of the global network.", + "type": "string" + }, + "State": { + "description": "The state of the global network.", + "type": "string" + }, + "Tags": { + "description": "The tags for the global network.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/Id", + "/properties/Arn" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-networkmanager.git", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "networkmanager:TagResource", + "networkmanager:UntagResource", + "networkmanager:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::NetworkManager::GlobalNetwork" +} diff --git a/src/schema/aws-networkmanager-link.json b/src/schema/aws-networkmanager-link.json new file mode 100644 index 00000000..378ee037 --- /dev/null +++ b/src/schema/aws-networkmanager-link.json @@ -0,0 +1,173 @@ +{ + "additionalIdentifiers": [ + [ + "/properties/LinkArn" + ] + ], + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/GlobalNetworkId", + "/properties/SiteId" + ], + "definitions": { + "Bandwidth": { + "additionalProperties": false, + "description": "The bandwidth for the link.", + "properties": { + "DownloadSpeed": { + "description": "Download speed in Mbps.", + "type": "integer" + }, + "UploadSpeed": { + "description": "Upload speed in Mbps.", + "type": "integer" + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a link resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "The AWS::NetworkManager::Link type describes a link.", + "handlers": { + "create": { + "permissions": [ + "networkmanager:CreateLink", + "networkmanager:GetLinks", + "networkmanager:TagResource" + ] + }, + "delete": { + "permissions": [ + "networkmanager:GetLinks", + "networkmanager:DeleteLink" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "GlobalNetworkId": { + "$ref": "resource-schema.json#/properties/GlobalNetworkId" + } + }, + "required": [ + "GlobalNetworkId" + ] + }, + "permissions": [ + "networkmanager:GetLinks" + ] + }, + "read": { + "permissions": [ + "networkmanager:GetLinks" + ] + }, + "update": { + "permissions": [ + "networkmanager:ListTagsForResource", + "networkmanager:TagResource", + "networkmanager:GetLinks", + "networkmanager:UntagResource", + "networkmanager:UpdateLink" + ] + } + }, + "primaryIdentifier": [ + "/properties/GlobalNetworkId", + "/properties/LinkId" + ], + "properties": { + "Bandwidth": { + "$ref": "#/definitions/Bandwidth", + "description": "The Bandwidth for the link." + }, + "CreatedAt": { + "description": "The date and time that the device was created.", + "type": "string" + }, + "Description": { + "description": "The description of the link.", + "type": "string" + }, + "GlobalNetworkId": { + "description": "The ID of the global network.", + "type": "string" + }, + "LinkArn": { + "description": "The Amazon Resource Name (ARN) of the link.", + "type": "string" + }, + "LinkId": { + "description": "The ID of the link.", + "type": "string" + }, + "Provider": { + "description": "The provider of the link.", + "type": "string" + }, + "SiteId": { + "description": "The ID of the site", + "type": "string" + }, + "State": { + "description": "The state of the link.", + "type": "string" + }, + "Tags": { + "description": "The tags for the link.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + }, + "Type": { + "description": "The type of the link.", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/LinkId", + "/properties/LinkArn", + "/properties/CreatedAt", + "/properties/State" + ], + "required": [ + "GlobalNetworkId", + "SiteId", + "Bandwidth" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-networkmanager.git", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "networkmanager:TagResource", + "networkmanager:UntagResource", + "networkmanager:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::NetworkManager::Link" +} diff --git a/src/schema/aws-networkmanager-linkassociation.json b/src/schema/aws-networkmanager-linkassociation.json new file mode 100644 index 00000000..d47440d9 --- /dev/null +++ b/src/schema/aws-networkmanager-linkassociation.json @@ -0,0 +1,74 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/GlobalNetworkId", + "/properties/DeviceId", + "/properties/LinkId" + ], + "description": "The AWS::NetworkManager::LinkAssociation type associates a link to a device. The device and link must be in the same global network and the same site.", + "handlers": { + "create": { + "permissions": [ + "networkmanager:GetLinkAssociations", + "networkmanager:AssociateLink" + ] + }, + "delete": { + "permissions": [ + "networkmanager:DisassociateLink" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "GlobalNetworkId": { + "$ref": "resource-schema.json#/properties/GlobalNetworkId" + } + }, + "required": [ + "GlobalNetworkId" + ] + }, + "permissions": [ + "networkmanager:GetLinkAssociations" + ] + }, + "read": { + "permissions": [ + "networkmanager:GetLinkAssociations" + ] + } + }, + "primaryIdentifier": [ + "/properties/GlobalNetworkId", + "/properties/DeviceId", + "/properties/LinkId" + ], + "properties": { + "DeviceId": { + "description": "The ID of the device", + "type": "string" + }, + "GlobalNetworkId": { + "description": "The ID of the global network.", + "type": "string" + }, + "LinkId": { + "description": "The ID of the link", + "type": "string" + } + }, + "required": [ + "GlobalNetworkId", + "DeviceId", + "LinkId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-networkmanager.git", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::NetworkManager::LinkAssociation" +} diff --git a/src/schema/aws-networkmanager-site.json b/src/schema/aws-networkmanager-site.json new file mode 100644 index 00000000..0a2e128a --- /dev/null +++ b/src/schema/aws-networkmanager-site.json @@ -0,0 +1,162 @@ +{ + "additionalIdentifiers": [ + [ + "/properties/SiteArn" + ] + ], + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/GlobalNetworkId" + ], + "definitions": { + "Location": { + "additionalProperties": false, + "description": "The location of the site", + "properties": { + "Address": { + "description": "The physical address.", + "type": "string" + }, + "Latitude": { + "description": "The latitude.", + "type": "string" + }, + "Longitude": { + "description": "The longitude.", + "type": "string" + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a site resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "The AWS::NetworkManager::Site type describes a site.", + "handlers": { + "create": { + "permissions": [ + "networkmanager:CreateSite", + "networkmanager:GetSites", + "networkmanager:TagResource" + ] + }, + "delete": { + "permissions": [ + "networkmanager:GetSites", + "networkmanager:DeleteSite" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "GlobalNetworkId": { + "$ref": "resource-schema.json#/properties/GlobalNetworkId" + } + }, + "required": [ + "GlobalNetworkId" + ] + }, + "permissions": [ + "networkmanager:GetSites" + ] + }, + "read": { + "permissions": [ + "networkmanager:GetSites" + ] + }, + "update": { + "permissions": [ + "networkmanager:GetSites", + "networkmanager:ListTagsForResource", + "networkmanager:TagResource", + "networkmanager:UntagResource", + "networkmanager:UpdateSite" + ] + } + }, + "primaryIdentifier": [ + "/properties/GlobalNetworkId", + "/properties/SiteId" + ], + "properties": { + "CreatedAt": { + "description": "The date and time that the device was created.", + "type": "string" + }, + "Description": { + "description": "The description of the site.", + "type": "string" + }, + "GlobalNetworkId": { + "description": "The ID of the global network.", + "type": "string" + }, + "Location": { + "$ref": "#/definitions/Location", + "description": "The location of the site." + }, + "SiteArn": { + "description": "The Amazon Resource Name (ARN) of the site.", + "type": "string" + }, + "SiteId": { + "description": "The ID of the site.", + "type": "string" + }, + "State": { + "description": "The state of the site.", + "type": "string" + }, + "Tags": { + "description": "The tags for the site.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/SiteId", + "/properties/SiteArn", + "/properties/State", + "/properties/CreatedAt" + ], + "required": [ + "GlobalNetworkId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-networkmanager.git", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "networkmanager:TagResource", + "networkmanager:UntagResource", + "networkmanager:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::NetworkManager::Site" +} diff --git a/src/schema/aws-networkmanager-sitetositevpnattachment.json b/src/schema/aws-networkmanager-sitetositevpnattachment.json new file mode 100644 index 00000000..8313c469 --- /dev/null +++ b/src/schema/aws-networkmanager-sitetositevpnattachment.json @@ -0,0 +1,230 @@ +{ + "additionalIdentifiers": [ + [ + "/properties/CoreNetworkId", + "/properties/VpnConnectionArn" + ] + ], + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/CoreNetworkId", + "/properties/VpnConnectionArn" + ], + "definitions": { + "ProposedNetworkFunctionGroupChange": { + "additionalProperties": false, + "description": "The attachment to move from one network function group to another.", + "properties": { + "AttachmentPolicyRuleNumber": { + "description": "The rule number in the policy document that applies to this change.", + "type": "integer" + }, + "NetworkFunctionGroupName": { + "description": "The name of the network function group to change.", + "type": "string" + }, + "Tags": { + "description": "The key-value tags that changed for the network function group.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + "ProposedSegmentChange": { + "additionalProperties": false, + "description": "The attachment to move from one segment to another.", + "properties": { + "AttachmentPolicyRuleNumber": { + "description": "The rule number in the policy document that applies to this change.", + "type": "integer" + }, + "SegmentName": { + "description": "The name of the segment to change.", + "type": "string" + }, + "Tags": { + "description": "The key-value tags that changed for the segment.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "AWS::NetworkManager::SiteToSiteVpnAttachment Resource Type definition.", + "handlers": { + "create": { + "permissions": [ + "networkmanager:GetSiteToSiteVpnAttachment", + "networkmanager:CreateSiteToSiteVpnAttachment", + "ec2:DescribeRegions", + "networkmanager:TagResource" + ], + "timeoutInMinutes": 120 + }, + "delete": { + "permissions": [ + "networkmanager:GetSiteToSiteVpnAttachment", + "networkmanager:DeleteAttachment", + "ec2:DescribeRegions" + ], + "timeoutInMinutes": 720 + }, + "list": { + "permissions": [ + "networkmanager:ListAttachments" + ] + }, + "read": { + "permissions": [ + "networkmanager:GetSiteToSiteVpnAttachment" + ] + }, + "update": { + "permissions": [ + "networkmanager:GetSiteToSiteVpnAttachment", + "networkmanager:ListTagsForResource", + "networkmanager:TagResource", + "networkmanager:UntagResource", + "ec2:DescribeRegions" + ] + } + }, + "primaryIdentifier": [ + "/properties/AttachmentId" + ], + "properties": { + "AttachmentId": { + "description": "The ID of the attachment.", + "type": "string" + }, + "AttachmentPolicyRuleNumber": { + "description": "The policy rule number associated with the attachment.", + "type": "integer" + }, + "AttachmentType": { + "description": "The type of attachment.", + "type": "string" + }, + "CoreNetworkArn": { + "description": "The ARN of a core network for the VPC attachment.", + "type": "string" + }, + "CoreNetworkId": { + "description": "The ID of a core network where you're creating a site-to-site VPN attachment.", + "type": "string" + }, + "CreatedAt": { + "description": "Creation time of the attachment.", + "type": "string" + }, + "EdgeLocation": { + "description": "The Region where the edge is located.", + "type": "string" + }, + "NetworkFunctionGroupName": { + "description": "The name of the network function group attachment.", + "type": "string" + }, + "OwnerAccountId": { + "description": "Owner account of the attachment.", + "type": "string" + }, + "ProposedNetworkFunctionGroupChange": { + "$ref": "#/definitions/ProposedNetworkFunctionGroupChange", + "description": "The attachment to move from one network function group to another." + }, + "ProposedSegmentChange": { + "$ref": "#/definitions/ProposedSegmentChange", + "description": "The attachment to move from one segment to another." + }, + "ResourceArn": { + "description": "The ARN of the Resource.", + "type": "string" + }, + "SegmentName": { + "description": "The name of the segment that attachment is in.", + "type": "string" + }, + "State": { + "description": "The state of the attachment.", + "type": "string" + }, + "Tags": { + "description": "Tags for the attachment.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + }, + "UpdatedAt": { + "description": "Last update time of the attachment.", + "type": "string" + }, + "VpnConnectionArn": { + "description": "The ARN of the site-to-site VPN attachment.", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/CoreNetworkArn", + "/properties/CreatedAt", + "/properties/UpdatedAt", + "/properties/AttachmentType", + "/properties/State", + "/properties/ResourceArn", + "/properties/AttachmentId", + "/properties/OwnerAccountId", + "/properties/EdgeLocation", + "/properties/AttachmentPolicyRuleNumber", + "/properties/SegmentName" + ], + "required": [ + "CoreNetworkId", + "VpnConnectionArn" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-networkmanager/aws-networkmanager-sitetositevpnattachment", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "networkmanager:TagResource", + "networkmanager:UntagResource", + "networkmanager:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::NetworkManager::SiteToSiteVpnAttachment" +} diff --git a/src/schema/aws-networkmanager-transitgatewaypeering.json b/src/schema/aws-networkmanager-transitgatewaypeering.json new file mode 100644 index 00000000..009256c2 --- /dev/null +++ b/src/schema/aws-networkmanager-transitgatewaypeering.json @@ -0,0 +1,161 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/CoreNetworkId", + "/properties/TransitGatewayArn" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "AWS::NetworkManager::TransitGatewayPeering Resoruce Type.", + "handlers": { + "create": { + "permissions": [ + "networkmanager:CreateTransitGatewayPeering", + "networkmanager:TagResource", + "networkmanager:GetTransitGatewayPeering", + "iam:CreateServiceLinkedRole", + "ec2:CreateTransitGatewayPeeringAttachment", + "ec2:AcceptTransitGatewayPeeringAttachment", + "ec2:DescribeRegions" + ], + "timeoutInMinutes": 60 + }, + "delete": { + "permissions": [ + "networkmanager:DeletePeering", + "networkmanager:GetTransitGatewayPeering", + "ec2:DescribeRegions" + ], + "timeoutInMinutes": 60 + }, + "list": { + "permissions": [ + "networkmanager:ListPeerings" + ] + }, + "read": { + "permissions": [ + "networkmanager:GetTransitGatewayPeering" + ] + }, + "update": { + "permissions": [ + "networkmanager:TagResource", + "networkmanager:UntagResource", + "networkmanager:ListTagsForResource", + "networkmanager:GetTransitGatewayPeering", + "ec2:DescribeRegions" + ] + } + }, + "primaryIdentifier": [ + "/properties/PeeringId" + ], + "properties": { + "CoreNetworkArn": { + "description": "The ARN (Amazon Resource Name) of the core network that you want to peer a transit gateway to.", + "type": "string" + }, + "CoreNetworkId": { + "description": "The Id of the core network that you want to peer a transit gateway to.", + "type": "string" + }, + "CreatedAt": { + "description": "The creation time of the transit gateway peering", + "type": "string" + }, + "EdgeLocation": { + "description": "The location of the transit gateway peering", + "type": "string" + }, + "OwnerAccountId": { + "description": "Peering owner account Id", + "type": "string" + }, + "PeeringId": { + "description": "The Id of the transit gateway peering", + "type": "string" + }, + "PeeringType": { + "description": "Peering type (TransitGatewayPeering)", + "type": "string" + }, + "ResourceArn": { + "description": "The ARN (Amazon Resource Name) of the resource that you will peer to a core network", + "type": "string" + }, + "State": { + "description": "The state of the transit gateway peering", + "type": "string" + }, + "Tags": { + "description": "An array of key-value pairs to apply to this resource.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + }, + "TransitGatewayArn": { + "description": "The ARN (Amazon Resource Name) of the transit gateway that you will peer to a core network", + "type": "string" + }, + "TransitGatewayPeeringAttachmentId": { + "description": "The ID of the TransitGatewayPeeringAttachment", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/CoreNetworkArn", + "/properties/PeeringId", + "/properties/State", + "/properties/PeeringType", + "/properties/OwnerAccountId", + "/properties/EdgeLocation", + "/properties/ResourceArn", + "/properties/CreatedAt", + "/properties/TransitGatewayPeeringAttachmentId" + ], + "required": [ + "CoreNetworkId", + "TransitGatewayArn" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-networkmanager/aws-networkmanager-transitgatewaypeering", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "networkmanager:TagResource", + "networkmanager:UntagResource", + "networkmanager:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::NetworkManager::TransitGatewayPeering" +} diff --git a/src/schema/aws-networkmanager-transitgatewayregistration.json b/src/schema/aws-networkmanager-transitgatewayregistration.json new file mode 100644 index 00000000..8e67bf35 --- /dev/null +++ b/src/schema/aws-networkmanager-transitgatewayregistration.json @@ -0,0 +1,70 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/GlobalNetworkId", + "/properties/TransitGatewayArn" + ], + "description": "The AWS::NetworkManager::TransitGatewayRegistration type registers a transit gateway in your global network. The transit gateway can be in any AWS Region, but it must be owned by the same AWS account that owns the global network. You cannot register a transit gateway in more than one global network.", + "handlers": { + "create": { + "permissions": [ + "networkmanager:RegisterTransitGateway", + "networkmanager:GetTransitGatewayRegistrations" + ], + "timeoutInMinutes": 30 + }, + "delete": { + "permissions": [ + "networkmanager:DeregisterTransitGateway", + "networkmanager:GetTransitGatewayRegistrations" + ], + "timeoutInMinutes": 30 + }, + "list": { + "handlerSchema": { + "properties": { + "GlobalNetworkId": { + "$ref": "resource-schema.json#/properties/GlobalNetworkId" + } + }, + "required": [ + "GlobalNetworkId" + ] + }, + "permissions": [ + "networkmanager:GetTransitGatewayRegistrations" + ] + }, + "read": { + "permissions": [ + "networkmanager:GetTransitGatewayRegistrations" + ] + } + }, + "primaryIdentifier": [ + "/properties/GlobalNetworkId", + "/properties/TransitGatewayArn" + ], + "properties": { + "GlobalNetworkId": { + "description": "The ID of the global network.", + "type": "string" + }, + "TransitGatewayArn": { + "description": "The Amazon Resource Name (ARN) of the transit gateway.", + "type": "string" + } + }, + "required": [ + "GlobalNetworkId", + "TransitGatewayArn" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-networkmanager.git", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::NetworkManager::TransitGatewayRegistration" +} diff --git a/src/schema/aws-networkmanager-transitgatewayroutetableattachment.json b/src/schema/aws-networkmanager-transitgatewayroutetableattachment.json new file mode 100644 index 00000000..914cfbba --- /dev/null +++ b/src/schema/aws-networkmanager-transitgatewayroutetableattachment.json @@ -0,0 +1,229 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/PeeringId", + "/properties/TransitGatewayRouteTableArn" + ], + "definitions": { + "ProposedNetworkFunctionGroupChange": { + "additionalProperties": false, + "description": "The attachment to move from one network function group to another.", + "properties": { + "AttachmentPolicyRuleNumber": { + "description": "The rule number in the policy document that applies to this change.", + "type": "integer" + }, + "NetworkFunctionGroupName": { + "description": "The name of the network function group to change.", + "type": "string" + }, + "Tags": { + "description": "The key-value tags that changed for the network function group.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + "ProposedSegmentChange": { + "additionalProperties": false, + "description": "The attachment to move from one segment to another.", + "properties": { + "AttachmentPolicyRuleNumber": { + "description": "The rule number in the policy document that applies to this change.", + "type": "integer" + }, + "SegmentName": { + "description": "The name of the segment to change.", + "type": "string" + }, + "Tags": { + "description": "The key-value tags that changed for the segment.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "insertionOrder": false, + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "AWS::NetworkManager::TransitGatewayRouteTableAttachment Resource Type definition.", + "handlers": { + "create": { + "permissions": [ + "networkmanager:CreateTransitGatewayRouteTableAttachment", + "networkmanager:GetTransitGatewayRouteTableAttachment", + "networkmanager:TagResource", + "iam:CreateServiceLinkedRole", + "ec2:DescribeRegions" + ] + }, + "delete": { + "permissions": [ + "networkmanager:GetTransitGatewayRouteTableAttachment", + "networkmanager:DeleteAttachment", + "ec2:DescribeRegions" + ] + }, + "list": { + "permissions": [ + "networkmanager:ListAttachments" + ] + }, + "read": { + "permissions": [ + "networkmanager:GetTransitGatewayRouteTableAttachment" + ] + }, + "update": { + "permissions": [ + "networkmanager:GetTransitGatewayRouteTableAttachment", + "networkmanager:ListTagsForResource", + "networkmanager:TagResource", + "networkmanager:UntagResource", + "ec2:DescribeRegions" + ] + } + }, + "primaryIdentifier": [ + "/properties/AttachmentId" + ], + "properties": { + "AttachmentId": { + "description": "The ID of the attachment.", + "type": "string" + }, + "AttachmentPolicyRuleNumber": { + "description": "The policy rule number associated with the attachment.", + "type": "integer" + }, + "AttachmentType": { + "description": "The type of attachment.", + "type": "string" + }, + "CoreNetworkArn": { + "description": "The ARN of a core network for the VPC attachment.", + "type": "string" + }, + "CoreNetworkId": { + "description": "The ID of a core network where you're creating a site-to-site VPN attachment.", + "type": "string" + }, + "CreatedAt": { + "description": "Creation time of the attachment.", + "type": "string" + }, + "EdgeLocation": { + "description": "The Region where the edge is located.", + "type": "string" + }, + "NetworkFunctionGroupName": { + "description": "The name of the network function group attachment.", + "type": "string" + }, + "OwnerAccountId": { + "description": "Owner account of the attachment.", + "type": "string" + }, + "PeeringId": { + "description": "The Id of peering between transit gateway and core network.", + "type": "string" + }, + "ProposedNetworkFunctionGroupChange": { + "$ref": "#/definitions/ProposedNetworkFunctionGroupChange", + "description": "The attachment to move from one network function group to another." + }, + "ProposedSegmentChange": { + "$ref": "#/definitions/ProposedSegmentChange", + "description": "The attachment to move from one segment to another." + }, + "ResourceArn": { + "description": "The ARN of the Resource.", + "type": "string" + }, + "SegmentName": { + "description": "The name of the segment that attachment is in.", + "type": "string" + }, + "State": { + "description": "The state of the attachment.", + "type": "string" + }, + "Tags": { + "description": "An array of key-value pairs to apply to this resource.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + }, + "TransitGatewayRouteTableArn": { + "description": "The Arn of transit gateway route table.", + "type": "string" + }, + "UpdatedAt": { + "description": "Last update time of the attachment.", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/CoreNetworkArn", + "/properties/CoreNetworkId", + "/properties/CreatedAt", + "/properties/UpdatedAt", + "/properties/AttachmentType", + "/properties/State", + "/properties/ResourceArn", + "/properties/AttachmentId", + "/properties/OwnerAccountId", + "/properties/EdgeLocation", + "/properties/AttachmentPolicyRuleNumber", + "/properties/SegmentName" + ], + "required": [ + "PeeringId", + "TransitGatewayRouteTableArn" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-networkmanager/aws-networkmanager-transitgatewayroutetableattachment", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "networkmanager:TagResource", + "networkmanager:UntagResource", + "networkmanager:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::NetworkManager::TransitGatewayRouteTableAttachment" +} diff --git a/src/schema/aws-networkmanager-vpcattachment.json b/src/schema/aws-networkmanager-vpcattachment.json new file mode 100644 index 00000000..441dadfa --- /dev/null +++ b/src/schema/aws-networkmanager-vpcattachment.json @@ -0,0 +1,265 @@ +{ + "additionalIdentifiers": [ + [ + "/properties/CoreNetworkId", + "/properties/VpcArn" + ] + ], + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/CoreNetworkId", + "/properties/VpcArn" + ], + "definitions": { + "ProposedNetworkFunctionGroupChange": { + "additionalProperties": false, + "description": "The attachment to move from one network function group to another.", + "properties": { + "AttachmentPolicyRuleNumber": { + "description": "The rule number in the policy document that applies to this change.", + "type": "integer" + }, + "NetworkFunctionGroupName": { + "description": "The name of the network function group to change.", + "type": "string" + }, + "Tags": { + "description": "The key-value tags that changed for the network function group.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + "ProposedSegmentChange": { + "additionalProperties": false, + "description": "The attachment to move from one segment to another.", + "properties": { + "AttachmentPolicyRuleNumber": { + "description": "The rule number in the policy document that applies to this change.", + "type": "integer" + }, + "SegmentName": { + "description": "The name of the segment to change.", + "type": "string" + }, + "Tags": { + "description": "The key-value tags that changed for the segment.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "VpcOptions": { + "additionalProperties": false, + "description": "Vpc options of the attachment.", + "properties": { + "ApplianceModeSupport": { + "default": false, + "description": "Indicates whether to enable ApplianceModeSupport Support for Vpc Attachment. Valid Values: true | false", + "type": "boolean" + }, + "Ipv6Support": { + "default": false, + "description": "Indicates whether to enable Ipv6 Support for Vpc Attachment. Valid Values: enable | disable", + "type": "boolean" + } + }, + "type": "object" + } + }, + "description": "AWS::NetworkManager::VpcAttachment Resoruce Type", + "handlers": { + "create": { + "permissions": [ + "networkmanager:CreateVpcAttachment", + "networkmanager:GetVpcAttachment", + "networkmanager:TagResource", + "ec2:DescribeRegions", + "iam:CreateServiceLinkedRole" + ], + "timeoutInMinutes": 60 + }, + "delete": { + "permissions": [ + "networkmanager:DeleteAttachment", + "networkmanager:GetVpcAttachment", + "networkmanager:UntagResource", + "ec2:DescribeRegions" + ], + "timeoutInMinutes": 60 + }, + "list": { + "permissions": [ + "networkmanager:ListAttachments" + ] + }, + "read": { + "permissions": [ + "networkmanager:GetVpcAttachment" + ] + }, + "update": { + "permissions": [ + "networkmanager:UpdateVpcAttachment", + "networkmanager:GetVpcAttachment", + "networkmanager:ListTagsForResource", + "networkmanager:TagResource", + "networkmanager:UntagResource", + "ec2:DescribeRegions" + ], + "timeoutInMinutes": 60 + } + }, + "primaryIdentifier": [ + "/properties/AttachmentId" + ], + "properties": { + "AttachmentId": { + "description": "Id of the attachment.", + "type": "string" + }, + "AttachmentPolicyRuleNumber": { + "description": "The policy rule number associated with the attachment.", + "type": "integer" + }, + "AttachmentType": { + "description": "Attachment type.", + "type": "string" + }, + "CoreNetworkArn": { + "description": "The ARN of a core network for the VPC attachment.", + "type": "string" + }, + "CoreNetworkId": { + "description": "The ID of a core network for the VPC attachment.", + "type": "string" + }, + "CreatedAt": { + "description": "Creation time of the attachment.", + "type": "string" + }, + "EdgeLocation": { + "description": "The Region where the edge is located.", + "type": "string" + }, + "NetworkFunctionGroupName": { + "description": "The name of the network function group attachment.", + "type": "string" + }, + "Options": { + "$ref": "#/definitions/VpcOptions", + "description": "Vpc options of the attachment." + }, + "OwnerAccountId": { + "description": "Owner account of the attachment.", + "type": "string" + }, + "ProposedNetworkFunctionGroupChange": { + "$ref": "#/definitions/ProposedNetworkFunctionGroupChange", + "description": "The attachment to move from one network function group to another." + }, + "ProposedSegmentChange": { + "$ref": "#/definitions/ProposedSegmentChange", + "description": "The attachment to move from one segment to another." + }, + "ResourceArn": { + "description": "The ARN of the Resource.", + "type": "string" + }, + "SegmentName": { + "description": "The name of the segment attachment..", + "type": "string" + }, + "State": { + "description": "State of the attachment.", + "type": "string" + }, + "SubnetArns": { + "description": "Subnet Arn list", + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array" + }, + "Tags": { + "description": "Tags for the attachment.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + }, + "UpdatedAt": { + "description": "Last update time of the attachment.", + "type": "string" + }, + "VpcArn": { + "description": "The ARN of the VPC.", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/CoreNetworkArn", + "/properties/CreatedAt", + "/properties/UpdatedAt", + "/properties/AttachmentType", + "/properties/State", + "/properties/AttachmentId", + "/properties/OwnerAccountId", + "/properties/EdgeLocation", + "/properties/AttachmentPolicyRuleNumber", + "/properties/SegmentName", + "/properties/NetworkFunctionGroupName", + "/properties/ResourceArn" + ], + "required": [ + "CoreNetworkId", + "VpcArn", + "SubnetArns" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-networkmanager/aws-networkmanager-vpcattachment", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "networkmanager:TagResource", + "networkmanager:UntagResource", + "networkmanager:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::NetworkManager::VpcAttachment" +} diff --git a/src/schema/aws-notifications-channelassociation.json b/src/schema/aws-notifications-channelassociation.json new file mode 100644 index 00000000..5fdd15ee --- /dev/null +++ b/src/schema/aws-notifications-channelassociation.json @@ -0,0 +1,66 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Arn", + "/properties/NotificationConfigurationArn" + ], + "description": "Definition of AWS::Notifications::ChannelAssociation Resource Type", + "handlers": { + "create": { + "permissions": [ + "notifications:AssociateChannel", + "notifications:ListChannels" + ] + }, + "delete": { + "permissions": [ + "notifications:DisassociateChannel" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "NotificationConfigurationArn": { + "pattern": "^arn:aws:notifications::[0-9]{12}:configuration\\/[a-z0-9]{27}$", + "type": "string" + } + }, + "required": [ + "NotificationConfigurationArn" + ] + }, + "permissions": [ + "notifications:ListChannels" + ] + }, + "read": { + "permissions": [ + "notifications:ListChannels" + ] + } + }, + "primaryIdentifier": [ + "/properties/Arn", + "/properties/NotificationConfigurationArn" + ], + "properties": { + "Arn": { + "description": "ARN identifier of the channel.\nExample: arn:aws:chatbot::123456789012:chat-configuration/slack-channel/security-ops", + "pattern": "^arn:aws:(chatbot|consoleapp|notifications-contacts):[a-zA-Z0-9-]*:[0-9]{12}:[a-zA-Z0-9-_.@]+/[a-zA-Z0-9/_.@:-]+$", + "type": "string" + }, + "NotificationConfigurationArn": { + "description": "ARN identifier of the NotificationConfiguration.\nExample: arn:aws:notifications::123456789012:configuration/a01jes88qxwkbj05xv9c967pgm1", + "pattern": "^arn:aws:notifications::[0-9]{12}:configuration\\/[a-z0-9]{27}$", + "type": "string" + } + }, + "required": [ + "Arn", + "NotificationConfigurationArn" + ], + "tagging": { + "taggable": false + }, + "typeName": "AWS::Notifications::ChannelAssociation" +} diff --git a/src/schema/aws-notifications-eventrule.json b/src/schema/aws-notifications-eventrule.json new file mode 100644 index 00000000..623c9086 --- /dev/null +++ b/src/schema/aws-notifications-eventrule.json @@ -0,0 +1,163 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/EventType", + "/properties/NotificationConfigurationArn", + "/properties/Source" + ], + "definitions": { + "EventRuleStatus": { + "enum": [ + "ACTIVE", + "INACTIVE", + "CREATING", + "UPDATING", + "DELETING" + ], + "type": "string" + }, + "EventRuleStatusSummary": { + "additionalProperties": false, + "properties": { + "Reason": { + "type": "string" + }, + "Status": { + "$ref": "#/definitions/EventRuleStatus" + } + }, + "required": [ + "Reason", + "Status" + ], + "type": "object" + }, + "StatusSummaryByRegion": { + "additionalProperties": false, + "patternProperties": { + "^([a-z]{1,2})-([a-z]{1,15}-)+([0-9])$": { + "$ref": "#/definitions/EventRuleStatusSummary" + } + }, + "type": "object" + }, + "Unit": { + "additionalProperties": false, + "type": "object" + } + }, + "description": "Definition of AWS::Notifications::EventRule Resource Type", + "handlers": { + "create": { + "permissions": [ + "notifications:CreateEventRule", + "notifications:UpdateEventRule", + "notifications:GetEventRule" + ] + }, + "delete": { + "permissions": [ + "notifications:DeleteEventRule", + "notifications:GetEventRule" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "NotificationConfigurationArn": { + "pattern": "^arn:aws:notifications::[0-9]{12}:configuration\\/[a-z0-9]{27}$", + "type": "string" + } + }, + "required": [ + "NotificationConfigurationArn" + ] + }, + "permissions": [ + "notifications:ListEventRules", + "notifications:GetEventRule" + ] + }, + "read": { + "permissions": [ + "notifications:GetEventRule" + ] + }, + "update": { + "permissions": [ + "notifications:UpdateEventRule", + "notifications:GetEventRule" + ] + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "Arn": { + "pattern": "^arn:aws:notifications::[0-9]{12}:configuration/[a-z0-9]{27}/rule/[a-z0-9]{27}$", + "type": "string" + }, + "CreationTime": { + "format": "date-time", + "type": "string" + }, + "EventPattern": { + "maxLength": 4096, + "minLength": 0, + "type": "string" + }, + "EventType": { + "maxLength": 128, + "minLength": 1, + "pattern": "^([a-zA-Z0-9 \\-\\(\\)])+$", + "type": "string" + }, + "ManagedRules": { + "items": { + "pattern": "^arn:aws:events:[a-z-\\d]{2,25}:\\d{12}:rule\\/[a-zA-Z-\\d]{1,1024}$", + "type": "string" + }, + "type": "array" + }, + "NotificationConfigurationArn": { + "pattern": "^arn:aws:notifications::[0-9]{12}:configuration/[a-z0-9]{27}$", + "type": "string" + }, + "Regions": { + "items": { + "maxLength": 25, + "minLength": 2, + "pattern": "^([a-z]{1,2})-([a-z]{1,15}-)+([0-9])$", + "type": "string" + }, + "minItems": 1, + "type": "array" + }, + "Source": { + "maxLength": 36, + "minLength": 1, + "pattern": "^aws.([a-z0-9\\-])+$", + "type": "string" + }, + "StatusSummaryByRegion": { + "$ref": "#/definitions/StatusSummaryByRegion" + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/CreationTime", + "/properties/ManagedRules", + "/properties/StatusSummaryByRegion" + ], + "required": [ + "EventType", + "NotificationConfigurationArn", + "Regions", + "Source" + ], + "tagging": { + "taggable": false + }, + "typeName": "AWS::Notifications::EventRule" +} diff --git a/src/schema/aws-notifications-managednotificationaccountcontactassociation.json b/src/schema/aws-notifications-managednotificationaccountcontactassociation.json new file mode 100644 index 00000000..f1f6d142 --- /dev/null +++ b/src/schema/aws-notifications-managednotificationaccountcontactassociation.json @@ -0,0 +1,86 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ManagedNotificationConfigurationArn", + "/properties/ContactIdentifier" + ], + "definitions": { + "ContactIdentifier": { + "description": "This unique identifier for Contact", + "enum": [ + "ACCOUNT_PRIMARY", + "ACCOUNT_ALTERNATE_SECURITY", + "ACCOUNT_ALTERNATE_OPERATIONS", + "ACCOUNT_ALTERNATE_BILLING" + ], + "type": "string" + }, + "ManagedNotificationConfigurationArn": { + "description": "The managed notification configuration ARN, against which the account contact association will be created", + "pattern": "^arn:[-.a-z0-9]{1,63}:notifications::[0-9]{12}:managed-notification-configuration/category/[a-zA-Z0-9-]{3,64}/sub-category/[a-zA-Z0-9-]{3,64}$", + "type": "string" + } + }, + "description": "This resource schema represents the ManagedNotificationAccountContactAssociation resource in the AWS User Notifications.", + "handlers": { + "create": { + "permissions": [ + "notifications:AssociateManagedNotificationAccountContact", + "notifications:ListManagedNotificationChannelAssociations" + ] + }, + "delete": { + "permissions": [ + "notifications:DisassociateManagedNotificationAccountContact", + "notifications:ListManagedNotificationChannelAssociations" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "ManagedNotificationConfigurationArn": { + "pattern": "^arn:[-.a-z0-9]{1,63}:notifications::([0-9]{12}|):managed-notification-configuration/category/[a-zA-Z0-9-]{3,64}/sub-category/[a-zA-Z0-9-]{3,64}$", + "type": "string" + } + }, + "required": [ + "ManagedNotificationConfigurationArn" + ] + }, + "permissions": [ + "notifications:ListManagedNotificationChannelAssociations" + ] + }, + "read": { + "permissions": [ + "notifications:ListManagedNotificationChannelAssociations" + ] + }, + "update": { + "permissions": [ + "notifications:ListManagedNotificationChannelAssociations" + ] + } + }, + "primaryIdentifier": [ + "/properties/ManagedNotificationConfigurationArn", + "/properties/ContactIdentifier" + ], + "properties": { + "ContactIdentifier": { + "$ref": "#/definitions/ContactIdentifier" + }, + "ManagedNotificationConfigurationArn": { + "$ref": "#/definitions/ManagedNotificationConfigurationArn" + } + }, + "required": [ + "ContactIdentifier", + "ManagedNotificationConfigurationArn" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "tagging": { + "taggable": false + }, + "typeName": "AWS::Notifications::ManagedNotificationAccountContactAssociation" +} diff --git a/src/schema/aws-notifications-managednotificationadditionalchannelassociation.json b/src/schema/aws-notifications-managednotificationadditionalchannelassociation.json new file mode 100644 index 00000000..61c13a2e --- /dev/null +++ b/src/schema/aws-notifications-managednotificationadditionalchannelassociation.json @@ -0,0 +1,66 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ChannelArn", + "/properties/ManagedNotificationConfigurationArn" + ], + "description": "Definition of AWS::Notifications::ManagedNotificationAdditionalChannelAssociation Resource Type", + "handlers": { + "create": { + "permissions": [ + "notifications:AssociateManagedNotificationAdditionalChannel", + "notifications:ListManagedNotificationChannelAssociations" + ] + }, + "delete": { + "permissions": [ + "notifications:DisassociateManagedNotificationAdditionalChannel", + "notifications:ListManagedNotificationChannelAssociations" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "NotificationConfigurationArn": { + "type": "string" + } + }, + "required": [ + "ManagedNotificationConfigurationArn" + ] + }, + "permissions": [ + "notifications:ListManagedNotificationChannelAssociations" + ] + }, + "read": { + "permissions": [ + "notifications:ListManagedNotificationChannelAssociations" + ] + } + }, + "primaryIdentifier": [ + "/properties/ChannelArn", + "/properties/ManagedNotificationConfigurationArn" + ], + "properties": { + "ChannelArn": { + "description": "ARN identifier of the channel.\nExample: arn:aws:chatbot::123456789012:chat-configuration/slack-channel/security-ops", + "pattern": "^arn:aws:(chatbot|consoleapp|notifications-contacts):[a-zA-Z0-9-]*:[0-9]{12}:[a-zA-Z0-9-_.@]+/[a-zA-Z0-9/_.@:-]+$", + "type": "string" + }, + "ManagedNotificationConfigurationArn": { + "description": "ARN identifier of the Managed Notification.\nExample: arn:aws:notifications::381491923782:managed-notification-configuration/category/AWS-Health/sub-category/Billing", + "pattern": "^arn:[-.a-z0-9]{1,63}:notifications::[0-9]{12}:managed-notification-configuration/category/[a-zA-Z0-9-]{3,64}/sub-category/[a-zA-Z0-9-]{3,64}$", + "type": "string" + } + }, + "required": [ + "ChannelArn", + "ManagedNotificationConfigurationArn" + ], + "tagging": { + "taggable": false + }, + "typeName": "AWS::Notifications::ManagedNotificationAdditionalChannelAssociation" +} diff --git a/src/schema/aws-notifications-notificationconfiguration.json b/src/schema/aws-notifications-notificationconfiguration.json new file mode 100644 index 00000000..f1a9e889 --- /dev/null +++ b/src/schema/aws-notifications-notificationconfiguration.json @@ -0,0 +1,153 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Tags" + ], + "definitions": { + "AggregationDuration": { + "enum": [ + "LONG", + "SHORT", + "NONE" + ], + "type": "string" + }, + "NotificationConfigurationStatus": { + "enum": [ + "ACTIVE", + "PARTIALLY_ACTIVE", + "INACTIVE", + "DELETING" + ], + "type": "string" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "TagMap": { + "description": "A list of tags that are attached to the role.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + } + }, + "description": "Definition of AWS::Notifications::NotificationConfiguration Resource Type", + "handlers": { + "create": { + "permissions": [ + "notifications:CreateNotificationConfiguration", + "notifications:GetNotificationConfiguration", + "notifications:UpdateNotificationConfiguration", + "notifications:TagResource", + "notifications:UntagResource", + "notifications:ListTagsForResource", + "iam:CreateServiceLinkedRole" + ] + }, + "delete": { + "permissions": [ + "notifications:DeleteNotificationConfiguration" + ] + }, + "list": { + "permissions": [ + "notifications:ListNotificationConfigurations", + "notifications:ListTagsForResource" + ] + }, + "read": { + "permissions": [ + "notifications:GetNotificationConfiguration", + "notifications:ListTagsForResource", + "notifications:TagResource", + "notifications:UntagResource" + ] + }, + "update": { + "permissions": [ + "notifications:CreateNotificationConfiguration", + "notifications:GetNotificationConfiguration", + "notifications:UpdateNotificationConfiguration", + "notifications:TagResource", + "notifications:UntagResource", + "notifications:ListTagsForResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "AggregationDuration": { + "$ref": "#/definitions/AggregationDuration" + }, + "Arn": { + "pattern": "^arn:aws:notifications::[0-9]{12}:configuration/[a-z0-9]{27}$", + "type": "string" + }, + "CreationTime": { + "format": "date-time", + "type": "string" + }, + "Description": { + "maxLength": 256, + "minLength": 0, + "pattern": "^[^\\u0001-\\u001F\\u007F-\\u009F]*$", + "type": "string" + }, + "Name": { + "maxLength": 64, + "minLength": 1, + "pattern": "^[A-Za-z0-9_\\-]+$", + "type": "string" + }, + "Status": { + "$ref": "#/definitions/NotificationConfigurationStatus" + }, + "Tags": { + "$ref": "#/definitions/TagMap" + } + }, + "readOnlyProperties": [ + "/properties/CreationTime", + "/properties/Status", + "/properties/Arn" + ], + "required": [ + "Description", + "Name" + ], + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "notifications:TagResource", + "notifications:UntagResource", + "notifications:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": false, + "taggable": true + }, + "typeName": "AWS::Notifications::NotificationConfiguration" +} diff --git a/src/schema/aws-notifications-notificationhub.json b/src/schema/aws-notifications-notificationhub.json new file mode 100644 index 00000000..3d1bf1d1 --- /dev/null +++ b/src/schema/aws-notifications-notificationhub.json @@ -0,0 +1,92 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Region" + ], + "definitions": { + "NotificationHubStatus": { + "enum": [ + "ACTIVE", + "REGISTERING", + "DEREGISTERING", + "INACTIVE" + ], + "type": "string" + }, + "NotificationHubStatusSummary": { + "additionalProperties": false, + "properties": { + "NotificationHubStatus": { + "$ref": "#/definitions/NotificationHubStatus" + }, + "NotificationHubStatusReason": { + "type": "string" + } + }, + "required": [ + "NotificationHubStatus", + "NotificationHubStatusReason" + ], + "type": "object" + }, + "Region": { + "description": "Region that NotificationHub is present in.", + "maxLength": 25, + "minLength": 2, + "pattern": "^([a-z]{1,2})-([a-z]{1,15}-)+([0-9])$", + "type": "string" + } + }, + "description": "Definition of AWS::Notifications::NotificationHub Resource Type", + "handlers": { + "create": { + "permissions": [ + "notifications:RegisterNotificationHub", + "notifications:ListNotificationHubs", + "iam:CreateServiceLinkedRole" + ] + }, + "delete": { + "permissions": [ + "notifications:DeregisterNotificationHub", + "notifications:ListNotificationHubs" + ] + }, + "list": { + "permissions": [ + "notifications:ListNotificationHubs" + ] + }, + "read": { + "permissions": [ + "notifications:ListNotificationHubs" + ] + } + }, + "primaryIdentifier": [ + "/properties/Region" + ], + "properties": { + "CreationTime": { + "format": "date-time", + "type": "string" + }, + "NotificationHubStatusSummary": { + "$ref": "#/definitions/NotificationHubStatusSummary" + }, + "Region": { + "$ref": "#/definitions/Region" + } + }, + "readOnlyProperties": [ + "/properties/CreationTime", + "/properties/NotificationHubStatusSummary" + ], + "required": [ + "Region" + ], + "tagging": { + "taggable": false + }, + "typeName": "AWS::Notifications::NotificationHub" +} diff --git a/src/schema/aws-notificationscontacts-emailcontact.json b/src/schema/aws-notificationscontacts-emailcontact.json new file mode 100644 index 00000000..680353b0 --- /dev/null +++ b/src/schema/aws-notificationscontacts-emailcontact.json @@ -0,0 +1,177 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/EmailAddress", + "/properties/Name", + "/properties/Tags" + ], + "definitions": { + "EmailContact": { + "additionalProperties": false, + "properties": { + "Address": { + "maxLength": 254, + "minLength": 6, + "pattern": "^(.+)@(.+)$", + "type": "string" + }, + "Arn": { + "pattern": "^arn:aws:notifications-contacts::[0-9]{12}:emailcontact/[a-z0-9]{27}$", + "type": "string" + }, + "CreationTime": { + "format": "date-time", + "type": "string" + }, + "Name": { + "maxLength": 64, + "minLength": 1, + "pattern": "[\\w-.~]+", + "type": "string" + }, + "Status": { + "$ref": "#/definitions/EmailContactStatus" + }, + "UpdateTime": { + "format": "date-time", + "type": "string" + } + }, + "required": [ + "Address", + "Arn", + "CreationTime", + "Name", + "Status", + "UpdateTime" + ], + "type": "object" + }, + "EmailContactStatus": { + "enum": [ + "inactive", + "active" + ], + "type": "string" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "TagMap": { + "description": "A list of tags that are attached to the role.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + } + }, + "description": "Definition of AWS::NotificationsContacts::EmailContact Resource Type", + "handlers": { + "create": { + "permissions": [ + "notifications-contacts:CreateEmailContact", + "notifications-contacts:GetEmailContact", + "notifications-contacts:SendActivationCode", + "notifications-contacts:ListEmailContacts", + "notifications-contacts:TagResource", + "notifications-contacts:UntagResource", + "notifications-contacts:ListTagsForResource" + ] + }, + "delete": { + "permissions": [ + "notifications-contacts:DeleteEmailContact", + "notifications-contacts:GetEmailContact" + ] + }, + "list": { + "permissions": [ + "notifications-contacts:ListEmailContacts" + ] + }, + "read": { + "permissions": [ + "notifications-contacts:GetEmailContact", + "notifications-contacts:ListTagsForResource", + "notifications-contacts:TagResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "Arn": { + "pattern": "^arn:aws:notifications-contacts::[0-9]{12}:emailcontact/[a-z0-9]{27}$", + "type": "string" + }, + "EmailAddress": { + "maxLength": 254, + "minLength": 6, + "pattern": "^(.+)@(.+)$", + "type": "string" + }, + "EmailContact": { + "$ref": "#/definitions/EmailContact" + }, + "Name": { + "maxLength": 64, + "minLength": 1, + "pattern": "[\\w-.~]+", + "type": "string" + }, + "Tags": { + "$ref": "#/definitions/TagMap" + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/EmailContact", + "/properties/EmailContact/Arn", + "/properties/EmailContact/Address", + "/properties/EmailContact/Name", + "/properties/EmailContact/Status", + "/properties/EmailContact/CreationTime", + "/properties/EmailContact/UpdateTime" + ], + "required": [ + "EmailAddress", + "Name" + ], + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "notifications-contacts:TagResource", + "notifications-contacts:UntagResource", + "notifications-contacts:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": false, + "taggable": true + }, + "typeName": "AWS::NotificationsContacts::EmailContact", + "writeOnlyProperties": [ + "/properties/EmailAddress", + "/properties/Name" + ] +} diff --git a/src/schema/aws-oam-link.json b/src/schema/aws-oam-link.json new file mode 100644 index 00000000..adc5f8ca --- /dev/null +++ b/src/schema/aws-oam-link.json @@ -0,0 +1,170 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/SinkIdentifier", + "/properties/LabelTemplate" + ], + "definitions": { + "LinkConfiguration": { + "additionalProperties": false, + "properties": { + "LogGroupConfiguration": { + "$ref": "#/definitions/LinkFilter" + }, + "MetricConfiguration": { + "$ref": "#/definitions/LinkFilter" + } + }, + "type": "object" + }, + "LinkFilter": { + "additionalProperties": false, + "properties": { + "Filter": { + "maxLength": 2000, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Filter" + ], + "type": "object" + }, + "ResourceType": { + "enum": [ + "AWS::CloudWatch::Metric", + "AWS::Logs::LogGroup", + "AWS::XRay::Trace", + "AWS::ApplicationInsights::Application", + "AWS::InternetMonitor::Monitor", + "AWS::ApplicationSignals::Service", + "AWS::ApplicationSignals::ServiceLevelObjective" + ], + "type": "string" + } + }, + "description": "Definition of AWS::Oam::Link Resource Type", + "handlers": { + "create": { + "permissions": [ + "oam:CreateLink", + "oam:GetLink", + "oam:TagResource", + "oam:ListTagsForResource", + "cloudwatch:Link", + "logs:Link", + "xray:Link", + "applicationinsights:Link", + "internetmonitor:Link", + "application-signals:Link" + ] + }, + "delete": { + "permissions": [ + "oam:DeleteLink", + "oam:GetLink" + ] + }, + "list": { + "permissions": [ + "oam:ListLinks" + ] + }, + "read": { + "permissions": [ + "oam:GetLink", + "oam:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "oam:GetLink", + "oam:UpdateLink", + "cloudwatch:Link", + "logs:Link", + "xray:Link", + "applicationinsights:Link", + "internetmonitor:Link", + "application-signals:Link", + "oam:TagResource", + "oam:UntagResource", + "oam:ListTagsForResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "Arn": { + "maxLength": 2048, + "type": "string" + }, + "Label": { + "type": "string" + }, + "LabelTemplate": { + "maxLength": 64, + "minLength": 1, + "type": "string" + }, + "LinkConfiguration": { + "$ref": "#/definitions/LinkConfiguration" + }, + "ResourceTypes": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/ResourceType" + }, + "maxItems": 50, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "SinkIdentifier": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "Tags": { + "additionalProperties": false, + "description": "Tags to apply to the link", + "patternProperties": { + "^(?!aws:.*).{1,128}$": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:.", + "maxLength": 256, + "minLength": 0, + "pattern": "^(?!aws:.*).{0,256}$", + "type": "string" + } + }, + "type": "object" + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/Label" + ], + "replacementStrategy": "delete_then_create", + "required": [ + "ResourceTypes", + "SinkIdentifier" + ], + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "oam:ListTagsForResource", + "oam:UntagResource", + "oam:TagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::Oam::Link", + "writeOnlyProperties": [ + "/properties/LabelTemplate" + ] +} diff --git a/src/schema/aws-oam-sink.json b/src/schema/aws-oam-sink.json new file mode 100644 index 00000000..2c978a05 --- /dev/null +++ b/src/schema/aws-oam-sink.json @@ -0,0 +1,102 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name" + ], + "description": "Resource Type definition for AWS::Oam::Sink", + "handlers": { + "create": { + "permissions": [ + "oam:CreateSink", + "oam:PutSinkPolicy", + "oam:GetSinkPolicy", + "oam:GetSink", + "oam:TagResource", + "oam:ListTagsForResource" + ] + }, + "delete": { + "permissions": [ + "oam:DeleteSink", + "oam:GetSinkPolicy", + "oam:GetSink" + ] + }, + "list": { + "permissions": [ + "oam:ListSinks" + ] + }, + "read": { + "permissions": [ + "oam:GetSinkPolicy", + "oam:GetSink", + "oam:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "oam:PutSinkPolicy", + "oam:GetSinkPolicy", + "oam:GetSink", + "oam:TagResource", + "oam:UntagResource", + "oam:ListTagsForResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "Arn": { + "description": "The Amazon resource name (ARN) of the ObservabilityAccessManager Sink", + "maxLength": 2048, + "type": "string" + }, + "Name": { + "description": "The name of the ObservabilityAccessManager Sink.", + "maxLength": 255, + "minLength": 1, + "pattern": "^[a-zA-Z0-9_.-]+$", + "type": "string" + }, + "Policy": { + "description": "The policy of this ObservabilityAccessManager Sink.", + "type": "object" + }, + "Tags": { + "additionalProperties": false, + "description": "Tags to apply to the sink", + "patternProperties": { + "^(?!aws:.*).{1,128}$": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:.", + "maxLength": 256, + "minLength": 0, + "pattern": "^(?!aws:.*).{0,256}$", + "type": "string" + } + }, + "type": "object" + } + }, + "readOnlyProperties": [ + "/properties/Arn" + ], + "required": [ + "Name" + ], + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "oam:ListTagsForResource", + "oam:UntagResource", + "oam:TagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::Oam::Sink" +} diff --git a/src/schema/aws-omics-annotationstore.json b/src/schema/aws-omics-annotationstore.json new file mode 100644 index 00000000..98a6986c --- /dev/null +++ b/src/schema/aws-omics-annotationstore.json @@ -0,0 +1,299 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name", + "/properties/Reference", + "/properties/SseConfig", + "/properties/StoreFormat", + "/properties/StoreOptions", + "/properties/Tags" + ], + "definitions": { + "AnnotationType": { + "enum": [ + "GENERIC", + "CHR_POS", + "CHR_POS_REF_ALT", + "CHR_START_END_ONE_BASE", + "CHR_START_END_REF_ALT_ONE_BASE", + "CHR_START_END_ZERO_BASE", + "CHR_START_END_REF_ALT_ZERO_BASE" + ], + "type": "string" + }, + "EncryptionType": { + "enum": [ + "KMS" + ], + "type": "string" + }, + "FormatToHeader": { + "additionalProperties": false, + "patternProperties": { + ".+": { + "maxLength": 1000, + "minLength": 0, + "type": "string" + } + }, + "type": "object" + }, + "FormatToHeaderKey": { + "enum": [ + "CHR", + "START", + "END", + "REF", + "ALT", + "POS" + ], + "type": "string" + }, + "ReferenceItem": { + "additionalProperties": false, + "properties": { + "ReferenceArn": { + "maxLength": 127, + "minLength": 1, + "pattern": "^arn:.+$", + "type": "string" + } + }, + "required": [ + "ReferenceArn" + ], + "type": "object" + }, + "SchemaItem": { + "additionalProperties": false, + "maxProperties": 1, + "minProperties": 1, + "patternProperties": { + "^[a-z0-9_]{1,255}$": { + "$ref": "#/definitions/SchemaValueType" + } + }, + "type": "object" + }, + "SchemaValueType": { + "enum": [ + "LONG", + "INT", + "STRING", + "FLOAT", + "DOUBLE", + "BOOLEAN" + ], + "type": "string" + }, + "SseConfig": { + "additionalProperties": false, + "properties": { + "KeyArn": { + "maxLength": 2048, + "minLength": 20, + "pattern": "arn:([^:\n]*):([^:\n]*):([^:\n]*):([0-9]{12}):([^:\n]*)", + "type": "string" + }, + "Type": { + "$ref": "#/definitions/EncryptionType" + } + }, + "required": [ + "Type" + ], + "type": "object" + }, + "StoreFormat": { + "enum": [ + "GFF", + "TSV", + "VCF" + ], + "type": "string" + }, + "StoreOptions": { + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "TsvStoreOptions": { + "$ref": "#/definitions/TsvStoreOptions" + } + }, + "required": [ + "TsvStoreOptions" + ], + "title": "TsvStoreOptions", + "type": "object" + } + ] + }, + "StoreStatus": { + "enum": [ + "CREATING", + "UPDATING", + "DELETING", + "ACTIVE", + "FAILED" + ], + "type": "string" + }, + "TagMap": { + "additionalProperties": false, + "patternProperties": { + ".+": { + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "type": "object" + }, + "TsvStoreOptions": { + "additionalProperties": false, + "properties": { + "AnnotationType": { + "$ref": "#/definitions/AnnotationType" + }, + "FormatToHeader": { + "$ref": "#/definitions/FormatToHeader" + }, + "Schema": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/SchemaItem" + }, + "maxItems": 5000, + "minItems": 1, + "type": "array" + } + }, + "type": "object" + } + }, + "description": "Definition of AWS::Omics::AnnotationStore Resource Type", + "handlers": { + "create": { + "permissions": [ + "omics:CreateAnnotationStore", + "omics:TagResource", + "kms:DescribeKey", + "kms:GenerateDataKey", + "kms:CreateGrant", + "ram:AcceptResourceShareInvitation", + "ram:GetResourceShareInvitations", + "omics:GetAnnotationStore" + ] + }, + "delete": { + "permissions": [ + "omics:DeleteAnnotationStore", + "omics:ListAnnotationStores" + ] + }, + "list": { + "permissions": [ + "omics:ListAnnotationStores" + ] + }, + "read": { + "permissions": [ + "omics:GetAnnotationStore" + ] + }, + "update": { + "permissions": [ + "omics:UpdateAnnotationStore", + "omics:TagResource", + "omics:UntagResource", + "omics:GetAnnotationStore", + "omics:ListTagsForResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/Name" + ], + "properties": { + "CreationTime": { + "format": "date-time", + "type": "string" + }, + "Description": { + "maxLength": 500, + "minLength": 0, + "type": "string" + }, + "Id": { + "pattern": "^[a-f0-9]{12}$", + "type": "string" + }, + "Name": { + "pattern": "^([a-z]){1}([a-z0-9_]){2,254}", + "type": "string" + }, + "Reference": { + "$ref": "#/definitions/ReferenceItem" + }, + "SseConfig": { + "$ref": "#/definitions/SseConfig" + }, + "Status": { + "$ref": "#/definitions/StoreStatus" + }, + "StatusMessage": { + "maxLength": 1000, + "minLength": 0, + "type": "string" + }, + "StoreArn": { + "maxLength": 2048, + "minLength": 20, + "pattern": "^arn:([^:\n]*):([^:\n]*):([^:\n]*):([0-9]{12}):([^:\n]*)$", + "type": "string" + }, + "StoreFormat": { + "$ref": "#/definitions/StoreFormat" + }, + "StoreOptions": { + "$ref": "#/definitions/StoreOptions" + }, + "StoreSizeBytes": { + "type": "number" + }, + "Tags": { + "$ref": "#/definitions/TagMap" + }, + "UpdateTime": { + "format": "date-time", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/CreationTime", + "/properties/Id", + "/properties/Status", + "/properties/StatusMessage", + "/properties/StoreArn", + "/properties/StoreSizeBytes", + "/properties/UpdateTime" + ], + "required": [ + "Name", + "StoreFormat" + ], + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "omics:TagResource", + "omics:UntagResource", + "omics:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::Omics::AnnotationStore" +} diff --git a/src/schema/aws-omics-referencestore.json b/src/schema/aws-omics-referencestore.json new file mode 100644 index 00000000..0bc9149e --- /dev/null +++ b/src/schema/aws-omics-referencestore.json @@ -0,0 +1,137 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Description", + "/properties/Name", + "/properties/SseConfig", + "/properties/Tags" + ], + "definitions": { + "EncryptionType": { + "enum": [ + "KMS" + ], + "type": "string" + }, + "SseConfig": { + "additionalProperties": false, + "description": "Server-side encryption (SSE) settings for a store.", + "properties": { + "KeyArn": { + "description": "An encryption key ARN.", + "maxLength": 2048, + "minLength": 20, + "pattern": "arn:([^:\n]*):([^:\n]*):([^:\n]*):([0-9]{12}):([^:\n]*)", + "type": "string" + }, + "Type": { + "$ref": "#/definitions/EncryptionType" + } + }, + "required": [ + "Type" + ], + "type": "object" + }, + "TagMap": { + "additionalProperties": false, + "patternProperties": { + ".+": { + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "type": "object" + } + }, + "description": "Definition of AWS::Omics::ReferenceStore Resource Type", + "handlers": { + "create": { + "permissions": [ + "omics:CreateReferenceStore", + "omics:TagResource", + "kms:DescribeKey" + ] + }, + "delete": { + "permissions": [ + "omics:DeleteReferenceStore" + ] + }, + "list": { + "permissions": [ + "omics:ListReferenceStores" + ] + }, + "read": { + "permissions": [ + "omics:GetReferenceStore", + "omics:ListTagsForResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/ReferenceStoreId" + ], + "properties": { + "Arn": { + "description": "The store's ARN.", + "maxLength": 127, + "minLength": 1, + "pattern": "^arn:.+$", + "type": "string" + }, + "CreationTime": { + "description": "When the store was created.", + "format": "date-time", + "type": "string" + }, + "Description": { + "description": "A description for the store.", + "maxLength": 255, + "minLength": 1, + "pattern": "^[\\p{L}||\\p{M}||\\p{Z}||\\p{S}||\\p{N}||\\p{P}]+$", + "type": "string" + }, + "Name": { + "description": "A name for the store.", + "maxLength": 127, + "minLength": 1, + "pattern": "^[\\p{L}||\\p{M}||\\p{Z}||\\p{S}||\\p{N}||\\p{P}]+$", + "type": "string" + }, + "ReferenceStoreId": { + "maxLength": 36, + "minLength": 10, + "pattern": "^[0-9]+$", + "type": "string" + }, + "SseConfig": { + "$ref": "#/definitions/SseConfig" + }, + "Tags": { + "$ref": "#/definitions/TagMap" + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/CreationTime", + "/properties/ReferenceStoreId" + ], + "required": [ + "Name" + ], + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "omics:TagResource", + "omics:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": false, + "taggable": true + }, + "typeName": "AWS::Omics::ReferenceStore" +} diff --git a/src/schema/aws-omics-rungroup.json b/src/schema/aws-omics-rungroup.json new file mode 100644 index 00000000..f348e5cc --- /dev/null +++ b/src/schema/aws-omics-rungroup.json @@ -0,0 +1,120 @@ +{ + "additionalProperties": false, + "definitions": { + "TagMap": { + "additionalProperties": false, + "description": "A map of resource tags", + "patternProperties": { + ".+": { + "description": "Resource tag value", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "type": "object" + } + }, + "description": "Definition of AWS::Omics::RunGroup Resource Type", + "handlers": { + "create": { + "permissions": [ + "omics:CreateRunGroup", + "omics:TagResource" + ] + }, + "delete": { + "permissions": [ + "omics:DeleteRunGroup", + "omics:GetRunGroup" + ] + }, + "list": { + "permissions": [ + "omics:ListRunGroups" + ] + }, + "read": { + "permissions": [ + "omics:GetRunGroup" + ] + }, + "update": { + "permissions": [ + "omics:UpdateRunGroup", + "omics:TagResource", + "omics:GetRunGroup", + "omics:ListTagsForResource", + "omics:UntagResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Arn": { + "maxLength": 128, + "minLength": 1, + "pattern": "^arn:.+$", + "type": "string" + }, + "CreationTime": { + "format": "date-time", + "type": "string" + }, + "Id": { + "maxLength": 18, + "minLength": 1, + "pattern": "^[0-9]+$", + "type": "string" + }, + "MaxCpus": { + "maximum": 100000, + "minimum": 1, + "type": "number" + }, + "MaxDuration": { + "maximum": 100000, + "minimum": 1, + "type": "number" + }, + "MaxGpus": { + "maximum": 100000, + "minimum": 1, + "type": "number" + }, + "MaxRuns": { + "maximum": 100000, + "minimum": 1, + "type": "number" + }, + "Name": { + "maxLength": 128, + "minLength": 1, + "pattern": "^[\\p{L}||\\p{M}||\\p{Z}||\\p{S}||\\p{N}||\\p{P}]+$", + "type": "string" + }, + "Tags": { + "$ref": "#/definitions/TagMap" + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/CreationTime", + "/properties/Id" + ], + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "omics:TagResource", + "omics:UntagResource", + "omics:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::Omics::RunGroup" +} diff --git a/src/schema/aws-omics-sequencestore.json b/src/schema/aws-omics-sequencestore.json new file mode 100644 index 00000000..d4e00921 --- /dev/null +++ b/src/schema/aws-omics-sequencestore.json @@ -0,0 +1,232 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ETagAlgorithmFamily", + "/properties/SseConfig" + ], + "definitions": { + "ETagAlgorithmFamily": { + "enum": [ + "MD5up", + "SHA256up", + "SHA512up" + ], + "type": "string" + }, + "EncryptionType": { + "enum": [ + "KMS" + ], + "type": "string" + }, + "SequenceStoreStatus": { + "enum": [ + "CREATING", + "ACTIVE", + "UPDATING", + "DELETING", + "FAILED" + ], + "type": "string" + }, + "SseConfig": { + "additionalProperties": false, + "description": "Server-side encryption (SSE) settings for a store.", + "properties": { + "KeyArn": { + "description": "An encryption key ARN.", + "maxLength": 2048, + "minLength": 20, + "pattern": "arn:([^:\n]*):([^:\n]*):([^:\n]*):([0-9]{12}):([^:\n]*)", + "type": "string" + }, + "Type": { + "$ref": "#/definitions/EncryptionType" + } + }, + "required": [ + "Type" + ], + "type": "object" + }, + "TagMap": { + "additionalProperties": false, + "patternProperties": { + ".+": { + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "type": "object" + } + }, + "description": "Resource Type definition for AWS::Omics::SequenceStore", + "handlers": { + "create": { + "permissions": [ + "omics:CreateSequenceStore", + "omics:GetSequenceStore", + "omics:GetS3AccessPolicy", + "omics:PutS3AccessPolicy", + "omics:ListTagsForResource", + "omics:TagResource", + "kms:DescribeKey" + ] + }, + "delete": { + "permissions": [ + "omics:DeleteSequenceStore" + ] + }, + "list": { + "permissions": [ + "omics:ListSequenceStores" + ] + }, + "read": { + "permissions": [ + "omics:GetS3AccessPolicy", + "omics:GetSequenceStore", + "omics:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "omics:UpdateSequenceStore", + "omics:GetSequenceStore", + "omics:TagResource", + "omics:UntagResource", + "omics:ListTagsForResource", + "omics:GetS3AccessPolicy", + "omics:DeleteS3AccessPolicy", + "omics:PutS3AccessPolicy" + ] + } + }, + "primaryIdentifier": [ + "/properties/SequenceStoreId" + ], + "properties": { + "AccessLogLocation": { + "description": "Location of the access logs.", + "pattern": "^$|^s3://([a-z0-9][a-z0-9-.]{1,61}[a-z0-9])/?((.{1,800})/)?$", + "type": "string" + }, + "Arn": { + "description": "The store's ARN.", + "maxLength": 127, + "minLength": 1, + "pattern": "^arn:.+$", + "type": "string" + }, + "CreationTime": { + "description": "When the store was created.", + "format": "date-time", + "type": "string" + }, + "Description": { + "description": "A description for the store.", + "maxLength": 255, + "minLength": 1, + "pattern": "^[\\p{L}||\\p{M}||\\p{Z}||\\p{S}||\\p{N}||\\p{P}]+$", + "type": "string" + }, + "ETagAlgorithmFamily": { + "$ref": "#/definitions/ETagAlgorithmFamily" + }, + "FallbackLocation": { + "description": "An S3 location that is used to store files that have failed a direct upload.", + "minLength": 0, + "pattern": "^$|^s3://([a-z0-9][a-z0-9-.]{1,61}[a-z0-9])/?((.{1,1024})/)?$", + "type": "string" + }, + "Name": { + "description": "A name for the store.", + "maxLength": 127, + "minLength": 1, + "pattern": "^[\\p{L}||\\p{M}||\\p{Z}||\\p{S}||\\p{N}||\\p{P}]+$", + "type": "string" + }, + "PropagatedSetLevelTags": { + "description": "The tags keys to propagate to the S3 objects associated with read sets in the sequence store.", + "items": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "maxItems": 50, + "minItems": 0, + "type": "array" + }, + "S3AccessPointArn": { + "description": "This is ARN of the access point associated with the S3 bucket storing read sets.", + "maxLength": 1024, + "minLength": 1, + "pattern": "^arn:[^:]*:s3:[^:]*:[^:]*:accesspoint/.*$", + "type": "string" + }, + "S3AccessPolicy": { + "description": "The resource policy that controls S3 access on the store", + "type": "object" + }, + "S3Uri": { + "description": "The S3 URI of the sequence store.", + "pattern": "^s3://([a-z0-9][a-z0-9-.]{1,61}[a-z0-9])/(.{1,1024})$", + "type": "string" + }, + "SequenceStoreId": { + "maxLength": 36, + "minLength": 10, + "pattern": "^[0-9]+$", + "type": "string" + }, + "SseConfig": { + "$ref": "#/definitions/SseConfig" + }, + "Status": { + "$ref": "#/definitions/SequenceStoreStatus" + }, + "StatusMessage": { + "description": "The status message of the sequence store.", + "maxLength": 127, + "minLength": 1, + "pattern": "^[\\p{L}||\\p{M}||\\p{Z}||\\p{S}||\\p{N}||\\p{P}]+$", + "type": "string" + }, + "Tags": { + "$ref": "#/definitions/TagMap" + }, + "UpdateTime": { + "description": "The last-updated time of the sequence store.", + "format": "date-time", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/CreationTime", + "/properties/S3AccessPointArn", + "/properties/S3Uri", + "/properties/SequenceStoreId", + "/properties/Status", + "/properties/StatusMessage", + "/properties/UpdateTime" + ], + "required": [ + "Name" + ], + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "omics:TagResource", + "omics:ListTagsForResource", + "omics:UntagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::Omics::SequenceStore" +} diff --git a/src/schema/aws-omics-variantstore.json b/src/schema/aws-omics-variantstore.json new file mode 100644 index 00000000..2dac788a --- /dev/null +++ b/src/schema/aws-omics-variantstore.json @@ -0,0 +1,189 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name", + "/properties/Reference", + "/properties/SseConfig", + "/properties/Tags" + ], + "definitions": { + "EncryptionType": { + "enum": [ + "KMS" + ], + "type": "string" + }, + "ReferenceItem": { + "additionalProperties": false, + "properties": { + "ReferenceArn": { + "maxLength": 127, + "minLength": 1, + "pattern": "^arn:.+$", + "type": "string" + } + }, + "required": [ + "ReferenceArn" + ], + "type": "object" + }, + "SseConfig": { + "additionalProperties": false, + "properties": { + "KeyArn": { + "maxLength": 2048, + "minLength": 20, + "pattern": "arn:([^:\n]*):([^:\n]*):([^:\n]*):([0-9]{12}):([^:\n]*)", + "type": "string" + }, + "Type": { + "$ref": "#/definitions/EncryptionType" + } + }, + "required": [ + "Type" + ], + "type": "object" + }, + "StoreStatus": { + "enum": [ + "CREATING", + "UPDATING", + "DELETING", + "ACTIVE", + "FAILED" + ], + "type": "string" + }, + "TagMap": { + "additionalProperties": false, + "patternProperties": { + ".+": { + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "type": "object" + } + }, + "description": "Definition of AWS::Omics::VariantStore Resource Type", + "handlers": { + "create": { + "permissions": [ + "omics:CreateVariantStore", + "omics:TagResource", + "kms:DescribeKey", + "kms:GenerateDataKey", + "kms:CreateGrant", + "ram:AcceptResourceShareInvitation", + "ram:GetResourceShareInvitations", + "omics:GetVariantStore" + ] + }, + "delete": { + "permissions": [ + "omics:DeleteVariantStore", + "omics:ListVariantStores" + ] + }, + "list": { + "permissions": [ + "omics:ListVariantStores" + ] + }, + "read": { + "permissions": [ + "omics:GetVariantStore" + ] + }, + "update": { + "permissions": [ + "omics:UpdateVariantStore", + "omics:TagResource", + "omics:UntagResource", + "omics:ListTagsForResource", + "omics:GetVariantStore" + ] + } + }, + "primaryIdentifier": [ + "/properties/Name" + ], + "properties": { + "CreationTime": { + "format": "date-time", + "type": "string" + }, + "Description": { + "maxLength": 500, + "minLength": 0, + "type": "string" + }, + "Id": { + "pattern": "^[a-f0-9]{12}$", + "type": "string" + }, + "Name": { + "pattern": "^([a-z]){1}([a-z0-9_]){2,254}", + "type": "string" + }, + "Reference": { + "$ref": "#/definitions/ReferenceItem" + }, + "SseConfig": { + "$ref": "#/definitions/SseConfig" + }, + "Status": { + "$ref": "#/definitions/StoreStatus" + }, + "StatusMessage": { + "maxLength": 1000, + "minLength": 0, + "type": "string" + }, + "StoreArn": { + "maxLength": 2048, + "minLength": 20, + "pattern": "^arn:([^:\n]*):([^:\n]*):([^:\n]*):([0-9]{12}):([^:\n]*)$", + "type": "string" + }, + "StoreSizeBytes": { + "type": "number" + }, + "Tags": { + "$ref": "#/definitions/TagMap" + }, + "UpdateTime": { + "format": "date-time", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/CreationTime", + "/properties/Id", + "/properties/Status", + "/properties/StatusMessage", + "/properties/StoreArn", + "/properties/StoreSizeBytes", + "/properties/UpdateTime" + ], + "required": [ + "Name", + "Reference" + ], + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "omics:TagResource", + "omics:UntagResource", + "omics:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::Omics::VariantStore" +} diff --git a/src/schema/aws-omics-workflow.json b/src/schema/aws-omics-workflow.json new file mode 100644 index 00000000..c105d757 --- /dev/null +++ b/src/schema/aws-omics-workflow.json @@ -0,0 +1,226 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/DefinitionUri", + "/properties/Engine", + "/properties/Main", + "/properties/ParameterTemplate", + "/properties/StorageCapacity", + "/properties/Accelerators" + ], + "definitions": { + "Accelerators": { + "enum": [ + "GPU" + ], + "maxLength": 64, + "minLength": 1, + "type": "string" + }, + "TagMap": { + "additionalProperties": false, + "description": "A map of resource tags", + "patternProperties": { + ".+": { + "description": "Resource tag value", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "type": "object" + }, + "WorkflowEngine": { + "enum": [ + "WDL", + "NEXTFLOW", + "CWL" + ], + "maxLength": 64, + "minLength": 1, + "type": "string" + }, + "WorkflowParameter": { + "additionalProperties": false, + "properties": { + "Description": { + "maxLength": 256, + "minLength": 0, + "pattern": "^[\\p{L}||\\p{M}||\\p{Z}||\\p{S}||\\p{N}||\\p{P}]+$", + "type": "string" + }, + "Optional": { + "type": "boolean" + } + }, + "type": "object" + }, + "WorkflowParameterTemplate": { + "additionalProperties": false, + "maxProperties": 1000, + "minProperties": 1, + "patternProperties": { + "^[\\p{L}||\\p{M}||\\p{Z}||\\p{S}||\\p{N}||\\p{P}]+$": { + "$ref": "#/definitions/WorkflowParameter" + } + }, + "type": "object" + }, + "WorkflowStatus": { + "enum": [ + "CREATING", + "ACTIVE", + "UPDATING", + "DELETED", + "FAILED" + ], + "maxLength": 64, + "minLength": 1, + "type": "string" + }, + "WorkflowType": { + "enum": [ + "PRIVATE" + ], + "maxLength": 64, + "minLength": 1, + "type": "string" + } + }, + "description": "Definition of AWS::Omics::Workflow Resource Type", + "handlers": { + "create": { + "permissions": [ + "omics:CreateWorkflow", + "omics:GetWorkflow", + "omics:TagResource", + "s3:PutObject", + "s3:GetObject", + "s3:GetObjectAttributes", + "s3:HeadObject", + "s3:GetEncryptionConfiguration", + "kms:Decrypt", + "kms:GenerateDataKey", + "kms:GenerateDataKeyPair", + "kms:GenerateDataKeyPairWithoutPlaintext", + "kms:GenerateDataKeyWithoutPlaintext" + ] + }, + "delete": { + "permissions": [ + "omics:DeleteWorkflow", + "omics:GetWorkflow" + ] + }, + "list": { + "permissions": [ + "omics:ListWorkflows" + ] + }, + "read": { + "permissions": [ + "omics:GetWorkflow" + ] + }, + "update": { + "permissions": [ + "omics:UpdateWorkflow", + "omics:GetWorkflow", + "omics:TagResource", + "omics:ListTagsForResource", + "omics:UntagResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Accelerators": { + "$ref": "#/definitions/Accelerators" + }, + "Arn": { + "maxLength": 128, + "minLength": 1, + "pattern": "^arn:.+$", + "type": "string" + }, + "CreationTime": { + "format": "date-time", + "type": "string" + }, + "DefinitionUri": { + "maxLength": 256, + "minLength": 1, + "pattern": "^[\\p{L}||\\p{M}||\\p{Z}||\\p{S}||\\p{N}||\\p{P}]+$", + "type": "string" + }, + "Description": { + "maxLength": 256, + "minLength": 1, + "pattern": "^[\\p{L}||\\p{M}||\\p{Z}||\\p{S}||\\p{N}||\\p{P}]+$", + "type": "string" + }, + "Engine": { + "$ref": "#/definitions/WorkflowEngine" + }, + "Id": { + "maxLength": 18, + "minLength": 1, + "pattern": "^[0-9]+$", + "type": "string" + }, + "Main": { + "maxLength": 128, + "minLength": 1, + "pattern": "^[\\p{L}||\\p{M}||\\p{Z}||\\p{S}||\\p{N}||\\p{P}]+$", + "type": "string" + }, + "Name": { + "maxLength": 128, + "minLength": 1, + "pattern": "^[\\p{L}||\\p{M}||\\p{Z}||\\p{S}||\\p{N}||\\p{P}]+$", + "type": "string" + }, + "ParameterTemplate": { + "$ref": "#/definitions/WorkflowParameterTemplate" + }, + "Status": { + "$ref": "#/definitions/WorkflowStatus" + }, + "StorageCapacity": { + "maximum": 100000, + "minimum": 0, + "type": "number" + }, + "Tags": { + "$ref": "#/definitions/TagMap" + }, + "Type": { + "$ref": "#/definitions/WorkflowType" + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/CreationTime", + "/properties/Id", + "/properties/Status", + "/properties/Type" + ], + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "omics:TagResource", + "omics:UntagResource", + "omics:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::Omics::Workflow", + "writeOnlyProperties": [ + "/properties/DefinitionUri" + ] +} diff --git a/src/schema/aws-opensearchserverless-accesspolicy.json b/src/schema/aws-opensearchserverless-accesspolicy.json new file mode 100644 index 00000000..e3088c83 --- /dev/null +++ b/src/schema/aws-opensearchserverless-accesspolicy.json @@ -0,0 +1,99 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Type", + "/properties/Name" + ], + "definitions": { + "AccessPolicyType": { + "description": "The possible types for the access policy", + "enum": [ + "data" + ], + "type": "string" + } + }, + "description": "Amazon OpenSearchServerless access policy resource", + "handlers": { + "create": { + "permissions": [ + "aoss:CreateAccessPolicy", + "aoss:GetAccessPolicy" + ] + }, + "delete": { + "permissions": [ + "aoss:DeleteAccessPolicy", + "aoss:GetAccessPolicy" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "Type": { + "$ref": "resource-schema.json#/properties/Type" + } + }, + "required": [ + "Type" + ] + }, + "permissions": [ + "aoss:ListAccessPolicies" + ] + }, + "read": { + "permissions": [ + "aoss:GetAccessPolicy" + ] + }, + "update": { + "permissions": [ + "aoss:UpdateAccessPolicy", + "aoss:GetAccessPolicy" + ] + } + }, + "primaryIdentifier": [ + "/properties/Type", + "/properties/Name" + ], + "properties": { + "Description": { + "description": "The description of the policy", + "maxLength": 1000, + "minLength": 1, + "type": "string" + }, + "Name": { + "description": "The name of the policy", + "maxLength": 32, + "minLength": 3, + "pattern": "^[a-z][a-z0-9-]{2,31}$", + "type": "string" + }, + "Policy": { + "description": "The JSON policy document that is the content for the policy", + "maxLength": 20480, + "minLength": 1, + "pattern": "[\\u0009\\u000A\\u000D\\u0020-\\u007E\\u00A1-\\u00FF]+", + "type": "string" + }, + "Type": { + "$ref": "#/definitions/AccessPolicyType" + } + }, + "required": [ + "Type", + "Name", + "Policy" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-opensearchserverless", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::OpenSearchServerless::AccessPolicy" +} diff --git a/src/schema/aws-opensearchserverless-collection.json b/src/schema/aws-opensearchserverless-collection.json new file mode 100644 index 00000000..bee66331 --- /dev/null +++ b/src/schema/aws-opensearchserverless-collection.json @@ -0,0 +1,161 @@ +{ + "additionalIdentifiers": [ + [ + "/properties/Name" + ], + [ + "/properties/Arn" + ] + ], + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name", + "/properties/Tags", + "/properties/Type" + ], + "definitions": { + "CollectionType": { + "description": "The possible types for the collection", + "enum": [ + "SEARCH", + "TIMESERIES", + "VECTORSEARCH" + ], + "type": "string" + }, + "StandbyReplicas": { + "description": "The possible standby replicas for the collection", + "enum": [ + "ENABLED", + "DISABLED" + ], + "type": "string" + }, + "Tag": { + "additionalProperties": false, + "description": "A key-value pair metadata associated with resource", + "properties": { + "Key": { + "description": "The key in the key-value pair", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "The value in the key-value pair", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "Amazon OpenSearchServerless collection resource", + "handlers": { + "create": { + "permissions": [ + "aoss:CreateCollection", + "aoss:BatchGetCollection", + "iam:CreateServiceLinkedRole" + ] + }, + "delete": { + "permissions": [ + "aoss:DeleteCollection", + "aoss:BatchGetCollection" + ] + }, + "list": { + "permissions": [ + "aoss:ListCollections" + ] + }, + "read": { + "permissions": [ + "aoss:BatchGetCollection" + ] + }, + "update": { + "permissions": [ + "aoss:UpdateCollection", + "aoss:BatchGetCollection" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Arn": { + "description": "The Amazon Resource Name (ARN) of the collection.", + "type": "string" + }, + "CollectionEndpoint": { + "description": "The endpoint for the collection.", + "type": "string" + }, + "DashboardEndpoint": { + "description": "The OpenSearch Dashboards endpoint for the collection.", + "type": "string" + }, + "Description": { + "description": "The description of the collection", + "maxLength": 1000, + "type": "string" + }, + "Id": { + "description": "The identifier of the collection", + "maxLength": 40, + "minLength": 3, + "type": "string" + }, + "Name": { + "description": "The name of the collection.\n\nThe name must meet the following criteria:\nUnique to your account and AWS Region\nStarts with a lowercase letter\nContains only lowercase letters a-z, the numbers 0-9 and the hyphen (-)\nContains between 3 and 32 characters\n", + "maxLength": 32, + "minLength": 3, + "pattern": "^[a-z][a-z0-9-]{2,31}$", + "type": "string" + }, + "StandbyReplicas": { + "$ref": "#/definitions/StandbyReplicas" + }, + "Tags": { + "description": "List of tags to be added to the resource", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "minItems": 0, + "type": "array" + }, + "Type": { + "$ref": "#/definitions/CollectionType" + } + }, + "readOnlyProperties": [ + "/properties/Id", + "/properties/Arn", + "/properties/CollectionEndpoint", + "/properties/DashboardEndpoint" + ], + "required": [ + "Name" + ], + "tagging": { + "cloudFormationSystemTags": true, + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": false, + "taggable": true + }, + "typeName": "AWS::OpenSearchServerless::Collection", + "writeOnlyProperties": [ + "/properties/Tags" + ] +} diff --git a/src/schema/aws-opensearchserverless-index.json b/src/schema/aws-opensearchserverless-index.json new file mode 100644 index 00000000..781e76e8 --- /dev/null +++ b/src/schema/aws-opensearchserverless-index.json @@ -0,0 +1,226 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/IndexName", + "/properties/CollectionEndpoint" + ], + "definitions": { + "IndexSettings": { + "additionalProperties": false, + "properties": { + "Index": { + "additionalProperties": false, + "properties": { + "Knn": { + "description": "Enable/disable k-nearest neighbor search capability", + "type": "boolean" + }, + "KnnAlgoParamEfSearch": { + "description": "Size of the dynamic list for the nearest neighbors", + "type": "integer" + }, + "RefreshInterval": { + "description": "How often to perform refresh operation (e.g. '1s', '5s')", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "PropertyMapping": { + "additionalProperties": false, + "properties": { + "Dimension": { + "description": "Dimension size for vector fields, defines the number of dimensions in the vector", + "type": "integer" + }, + "Index": { + "description": "Whether a field should be indexed", + "type": "boolean" + }, + "Method": { + "additionalProperties": false, + "description": "Configuration for k-NN search method", + "properties": { + "Engine": { + "description": "The k-NN search engine to use", + "enum": [ + "nmslib", + "faiss", + "lucene" + ], + "type": "string" + }, + "Name": { + "description": "The algorithm name for k-NN search", + "enum": [ + "hnsw", + "ivf" + ], + "type": "string" + }, + "Parameters": { + "additionalProperties": false, + "description": "Additional parameters for the k-NN algorithm", + "properties": { + "EfConstruction": { + "description": "The size of the dynamic list used during k-NN graph creation", + "minimum": 1, + "type": "integer" + }, + "M": { + "description": "Number of neighbors to consider during k-NN search", + "maximum": 100, + "minimum": 2, + "type": "integer" + } + }, + "type": "object" + }, + "SpaceType": { + "description": "The distance function used for k-NN search", + "enum": [ + "l2", + "l1", + "linf", + "cosinesimil", + "innerproduct", + "hamming" + ], + "type": "string" + } + }, + "required": [ + "Name", + "Engine" + ], + "type": "object" + }, + "Properties": { + "additionalProperties": false, + "description": "Nested fields within an object or nested field type", + "patternProperties": { + "^[A-Za-z0-9_.-]{1,64}$": { + "$ref": "#/definitions/PropertyMapping", + "description": "Nested field name and its mapping configuration" + } + }, + "type": "object" + }, + "Type": { + "description": "The field data type. Must be a valid OpenSearch field type.", + "enum": [ + "text", + "knn_vector" + ], + "type": "string" + }, + "Value": { + "description": "Default value for the field when not specified in a document", + "type": "string" + } + }, + "required": [ + "Type" + ], + "type": "object" + } + }, + "description": "An OpenSearch Serverless index resource", + "handlers": { + "create": { + "permissions": [ + "aoss:APIAccessAll" + ] + }, + "delete": { + "permissions": [ + "aoss:APIAccessAll" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "CollectionEndpoint": { + "$ref": "resource-schema.json#/properties/CollectionEndpoint" + } + }, + "required": [ + "CollectionEndpoint" + ] + }, + "permissions": [ + "aoss:APIAccessAll" + ] + }, + "read": { + "permissions": [ + "aoss:APIAccessAll" + ] + }, + "update": { + "permissions": [ + "aoss:APIAccessAll" + ] + } + }, + "primaryIdentifier": [ + "/properties/IndexName", + "/properties/CollectionEndpoint" + ], + "properties": { + "CollectionEndpoint": { + "description": "The endpoint for the collection.", + "type": "string" + }, + "IndexName": { + "description": "The name of the OpenSearch Serverless index.", + "pattern": "^(?![_-])[a-z][a-z0-9_-]*$", + "type": "string" + }, + "Mappings": { + "additionalProperties": false, + "description": "Index Mappings", + "properties": { + "Properties": { + "additionalProperties": false, + "description": "Defines the fields within the mapping, including their types and configurations", + "patternProperties": { + "^[A-Za-z0-9_.-]{1,64}$": { + "$ref": "#/definitions/PropertyMapping", + "description": "Field name and its mapping configuration" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "Settings": { + "$ref": "#/definitions/IndexSettings", + "description": "Index settings" + }, + "Uuid": { + "description": "The unique identifier for the index.", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Uuid" + ], + "required": [ + "CollectionEndpoint", + "IndexName" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-opensearchserverless", + "tagging": { + "taggable": false + }, + "typeName": "AWS::OpenSearchServerless::Index", + "writeOnlyProperties": [ + "/properties/Settings/Index/RefreshInterval", + "/properties/Settings/Index/KnnAlgoParamEfSearch" + ] +} diff --git a/src/schema/aws-opensearchserverless-lifecyclepolicy.json b/src/schema/aws-opensearchserverless-lifecyclepolicy.json new file mode 100644 index 00000000..c8fe60d4 --- /dev/null +++ b/src/schema/aws-opensearchserverless-lifecyclepolicy.json @@ -0,0 +1,97 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Type", + "/properties/Name" + ], + "definitions": { + "LifecyclePolicyType": { + "description": "The type of lifecycle policy", + "enum": [ + "retention" + ], + "type": "string" + } + }, + "description": "Amazon OpenSearchServerless lifecycle policy resource", + "handlers": { + "create": { + "permissions": [ + "aoss:CreateLifecyclePolicy" + ] + }, + "delete": { + "permissions": [ + "aoss:DeleteLifecyclePolicy" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "Type": { + "$ref": "resource-schema.json#/properties/Type" + } + }, + "required": [ + "Type" + ] + }, + "permissions": [ + "aoss:ListLifecyclePolicies" + ] + }, + "read": { + "permissions": [ + "aoss:BatchGetLifecyclePolicy" + ] + }, + "update": { + "permissions": [ + "aoss:UpdateLifecyclePolicy", + "aoss:BatchGetLifecyclePolicy" + ] + } + }, + "primaryIdentifier": [ + "/properties/Type", + "/properties/Name" + ], + "properties": { + "Description": { + "description": "The description of the policy", + "maxLength": 1000, + "minLength": 0, + "type": "string" + }, + "Name": { + "description": "The name of the policy", + "maxLength": 32, + "minLength": 3, + "pattern": "^[a-z][a-z0-9-]+$", + "type": "string" + }, + "Policy": { + "description": "The JSON policy document that is the content for the policy", + "maxLength": 20480, + "minLength": 1, + "pattern": "[\\u0009\\u000A\\u000D\\u0020-\\u007E\\u00A1-\\u00FF]+", + "type": "string" + }, + "Type": { + "$ref": "#/definitions/LifecyclePolicyType" + } + }, + "required": [ + "Type", + "Name", + "Policy" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-opensearchserverless", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::OpenSearchServerless::LifecyclePolicy" +} diff --git a/src/schema/aws-opensearchserverless-securityconfig.json b/src/schema/aws-opensearchserverless-securityconfig.json new file mode 100644 index 00000000..283c7303 --- /dev/null +++ b/src/schema/aws-opensearchserverless-securityconfig.json @@ -0,0 +1,209 @@ +{ + "additionalIdentifiers": [ + [ + "/properties/Name" + ] + ], + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Type", + "/properties/Name", + "/properties/IamIdentityCenterOptions/InstanceArn" + ], + "definitions": { + "IamIdentityCenterApplicationArn": { + "description": "The ARN of the IAM Identity Center application used to integrate with OpenSearch Serverless", + "type": "string" + }, + "IamIdentityCenterConfigOptions": { + "additionalProperties": false, + "description": "Describes IAM Identity Center options for an OpenSearch Serverless security configuration in the form of a key-value map", + "properties": { + "ApplicationArn": { + "$ref": "#/definitions/IamIdentityCenterApplicationArn" + }, + "ApplicationDescription": { + "description": "The description of the IAM Identity Center application used to integrate with OpenSearch Serverless", + "type": "string" + }, + "ApplicationName": { + "description": "The name of the IAM Identity Center application used to integrate with OpenSearch Serverless", + "type": "string" + }, + "GroupAttribute": { + "$ref": "#/definitions/IamIdentityCenterGroupAttribute" + }, + "InstanceArn": { + "$ref": "#/definitions/IamIdentityCenterInstanceArn" + }, + "UserAttribute": { + "$ref": "#/definitions/IamIdentityCenterUserAttribute" + } + }, + "required": [ + "InstanceArn" + ], + "type": "object" + }, + "IamIdentityCenterGroupAttribute": { + "description": "Group attribute for this IAM Identity Center integration", + "type": "string" + }, + "IamIdentityCenterInstanceArn": { + "description": "The ARN of the IAM Identity Center instance used to integrate with OpenSearch Serverless", + "type": "string" + }, + "IamIdentityCenterUserAttribute": { + "description": "User attribute for this IAM Identity Center integration", + "type": "string" + }, + "SamlConfigOptions": { + "additionalProperties": false, + "description": "Describes saml options in form of key value map", + "properties": { + "GroupAttribute": { + "description": "Group attribute for this saml integration", + "maxLength": 2048, + "minLength": 1, + "pattern": "[\\w+=,.@-]+", + "type": "string" + }, + "Metadata": { + "description": "The XML saml provider metadata document that you want to use", + "maxLength": 51200, + "minLength": 1, + "pattern": "[\\u0009\\u000A\\u000D\\u0020-\\u007E\\u00A1-\\u00FF]+", + "type": "string" + }, + "OpenSearchServerlessEntityId": { + "description": "Custom entity id attribute to override default entity id for this saml integration", + "maxLength": 1024, + "minLength": 1, + "pattern": "^aws:opensearch:[0-9]{12}:*", + "type": "string" + }, + "SessionTimeout": { + "description": "Defines the session timeout in minutes", + "type": "integer" + }, + "UserAttribute": { + "description": "Custom attribute for this saml integration", + "maxLength": 2048, + "minLength": 1, + "pattern": "[\\w+=,.@-]+", + "type": "string" + } + }, + "required": [ + "Metadata" + ], + "type": "object" + }, + "SecurityConfigType": { + "description": "Config type for security config", + "enum": [ + "saml", + "iamidentitycenter" + ], + "type": "string" + } + }, + "description": "Amazon OpenSearchServerless security config resource", + "handlers": { + "create": { + "permissions": [ + "aoss:CreateSecurityConfig", + "sso:CreateApplication", + "sso:ListApplications", + "sso:DeleteApplication", + "sso:PutApplicationAssignmentConfiguration", + "sso:PutApplicationAuthenticationMethod", + "sso:PutApplicationGrant" + ] + }, + "delete": { + "permissions": [ + "aoss:DeleteSecurityConfig", + "sso:ListApplicationAssignments", + "sso:DeleteApplicationAssignment", + "sso:DeleteApplication" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "Type": { + "$ref": "resource-schema.json#/properties/Type" + } + }, + "required": [ + "Type" + ] + }, + "permissions": [ + "aoss:ListSecurityConfigs" + ] + }, + "read": { + "permissions": [ + "aoss:GetSecurityConfig" + ] + }, + "update": { + "permissions": [ + "aoss:GetSecurityConfig", + "aoss:UpdateSecurityConfig" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Description": { + "description": "Security config description", + "maxLength": 1000, + "minLength": 1, + "type": "string" + }, + "IamIdentityCenterOptions": { + "$ref": "#/definitions/IamIdentityCenterConfigOptions" + }, + "Id": { + "description": "The identifier of the security config", + "maxLength": 100, + "minLength": 1, + "type": "string" + }, + "Name": { + "description": "The friendly name of the security config", + "maxLength": 32, + "minLength": 3, + "pattern": "^[a-z][a-z0-9-]{2,31}$", + "type": "string" + }, + "SamlOptions": { + "$ref": "#/definitions/SamlConfigOptions" + }, + "Type": { + "$ref": "#/definitions/SecurityConfigType" + } + }, + "readOnlyProperties": [ + "/properties/Id", + "/properties/IamIdentityCenterOptions/ApplicationArn", + "/properties/IamIdentityCenterOptions/ApplicationName", + "/properties/IamIdentityCenterOptions/ApplicationDescription" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-opensearchserverless", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::OpenSearchServerless::SecurityConfig", + "writeOnlyProperties": [ + "/properties/Name" + ] +} diff --git a/src/schema/aws-opensearchserverless-securitypolicy.json b/src/schema/aws-opensearchserverless-securitypolicy.json new file mode 100644 index 00000000..2a8fd811 --- /dev/null +++ b/src/schema/aws-opensearchserverless-securitypolicy.json @@ -0,0 +1,105 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Type", + "/properties/Name" + ], + "definitions": { + "SecurityPolicyType": { + "description": "The possible types for the network policy", + "enum": [ + "encryption", + "network" + ], + "type": "string" + } + }, + "description": "Amazon OpenSearchServerless security policy resource", + "handlers": { + "create": { + "permissions": [ + "aoss:GetSecurityPolicy", + "aoss:CreateSecurityPolicy", + "kms:DescribeKey", + "kms:CreateGrant" + ] + }, + "delete": { + "permissions": [ + "aoss:GetSecurityPolicy", + "aoss:DeleteSecurityPolicy" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "Type": { + "$ref": "resource-schema.json#/properties/Type" + } + }, + "required": [ + "Type" + ] + }, + "permissions": [ + "aoss:ListSecurityPolicies" + ] + }, + "read": { + "permissions": [ + "aoss:GetSecurityPolicy", + "kms:DescribeKey" + ] + }, + "update": { + "permissions": [ + "aoss:GetSecurityPolicy", + "aoss:UpdateSecurityPolicy", + "kms:DescribeKey", + "kms:CreateGrant" + ] + } + }, + "primaryIdentifier": [ + "/properties/Type", + "/properties/Name" + ], + "properties": { + "Description": { + "description": "The description of the policy", + "maxLength": 1000, + "minLength": 1, + "type": "string" + }, + "Name": { + "description": "The name of the policy", + "maxLength": 32, + "minLength": 3, + "pattern": "^[a-z][a-z0-9-]{2,31}$", + "type": "string" + }, + "Policy": { + "description": "The JSON policy document that is the content for the policy", + "maxLength": 20480, + "minLength": 1, + "pattern": "[\\u0009\\u000A\\u000D\\u0020-\\u007E\\u00A1-\\u00FF]+", + "type": "string" + }, + "Type": { + "$ref": "#/definitions/SecurityPolicyType" + } + }, + "required": [ + "Type", + "Name", + "Policy" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-opensearchserverless", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::OpenSearchServerless::SecurityPolicy" +} diff --git a/src/schema/aws-opensearchserverless-vpcendpoint.json b/src/schema/aws-opensearchserverless-vpcendpoint.json new file mode 100644 index 00000000..429663d7 --- /dev/null +++ b/src/schema/aws-opensearchserverless-vpcendpoint.json @@ -0,0 +1,159 @@ +{ + "additionalIdentifiers": [ + [ + "/properties/Name" + ] + ], + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name", + "/properties/VpcId" + ], + "description": "Amazon OpenSearchServerless vpc endpoint resource", + "handlers": { + "create": { + "permissions": [ + "aoss:BatchGetVpcEndpoint", + "aoss:CreateVpcEndpoint", + "ec2:CreateVpcEndpoint", + "ec2:DeleteVpcEndPoints", + "ec2:DescribeVpcEndpoints", + "ec2:ModifyVpcEndPoint", + "ec2:DescribeVpcs", + "ec2:DescribeSubnets", + "ec2:DescribeSecurityGroups", + "ec2:CreateTags", + "route53:ChangeResourceRecordSets", + "route53:GetChange", + "route53:GetHostedZone", + "route53:ListResourceRecordSets", + "route53:ListHostedZonesByName", + "route53:CreateHostedZone", + "route53:ListHostedZonesByVPC", + "route53:AssociateVPCWithHostedZone" + ] + }, + "delete": { + "permissions": [ + "aoss:BatchGetVpcEndpoint", + "aoss:DeleteVpcEndpoint", + "ec2:DeleteVpcEndPoints", + "ec2:DescribeVpcEndpoints", + "ec2:ModifyVpcEndPoint", + "ec2:DescribeVpcs", + "ec2:DescribeSubnets", + "ec2:DescribeSecurityGroups", + "ec2:CreateTags", + "route53:ChangeResourceRecordSets", + "route53:DeleteHostedZone", + "route53:GetChange", + "route53:GetHostedZone", + "route53:ListResourceRecordSets", + "route53:ListHostedZonesByName", + "route53:ListHostedZonesByVPC", + "route53:AssociateVPCWithHostedZone" + ] + }, + "list": { + "permissions": [ + "aoss:ListVpcEndpoints", + "ec2:DescribeVpcEndpoints" + ] + }, + "read": { + "permissions": [ + "aoss:BatchGetVpcEndpoint", + "ec2:DescribeVpcEndpoints" + ] + }, + "update": { + "permissions": [ + "aoss:BatchGetVpcEndpoint", + "aoss:UpdateVpcEndpoint", + "ec2:CreateVpcEndpoint", + "ec2:DeleteVpcEndPoints", + "ec2:DescribeVpcEndpoints", + "ec2:ModifyVpcEndPoint", + "ec2:DescribeVpcs", + "ec2:DescribeSubnets", + "ec2:DescribeSecurityGroups", + "ec2:CreateTags", + "route53:ChangeResourceRecordSets", + "route53:GetChange", + "route53:GetHostedZone", + "route53:ListResourceRecordSets", + "route53:ListHostedZonesByName", + "route53:CreateHostedZone", + "route53:ListHostedZonesByVPC", + "route53:AssociateVPCWithHostedZone" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Id": { + "description": "The identifier of the VPC Endpoint", + "maxLength": 255, + "minLength": 1, + "pattern": "^vpce-[0-9a-z]*$", + "type": "string" + }, + "Name": { + "description": "The name of the VPC Endpoint", + "maxLength": 32, + "minLength": 3, + "pattern": "^[a-z][a-z0-9-]{2,31}$", + "type": "string" + }, + "SecurityGroupIds": { + "description": "The ID of one or more security groups to associate with the endpoint network interface", + "insertionOrder": false, + "items": { + "maxLength": 128, + "minLength": 1, + "pattern": "^[\\w+\\-]+$", + "type": "string" + }, + "maxItems": 5, + "minItems": 1, + "type": "array" + }, + "SubnetIds": { + "description": "The ID of one or more subnets in which to create an endpoint network interface", + "insertionOrder": false, + "items": { + "maxLength": 32, + "minLength": 1, + "pattern": "^subnet-([0-9a-f]{8}|[0-9a-f]{17})$", + "type": "string" + }, + "maxItems": 6, + "minItems": 1, + "type": "array" + }, + "VpcId": { + "description": "The ID of the VPC in which the endpoint will be used.", + "maxLength": 255, + "minLength": 1, + "pattern": "^vpc-[0-9a-z]*$", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "Name", + "VpcId", + "SubnetIds" + ], + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::OpenSearchServerless::VpcEndpoint" +} diff --git a/src/schema/aws-opensearchservice-application.json b/src/schema/aws-opensearchservice-application.json new file mode 100644 index 00000000..f5cb30ee --- /dev/null +++ b/src/schema/aws-opensearchservice-application.json @@ -0,0 +1,210 @@ +{ + "additionalIdentifiers": [ + [ + "/properties/Arn" + ] + ], + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name" + ], + "definitions": { + "AppConfig": { + "additionalProperties": false, + "description": "A key-value pair of AppConfig", + "properties": { + "Key": { + "$ref": "#/definitions/AppConfigType", + "description": "The configuration key" + }, + "Value": { + "description": "The configuration value.", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "AppConfigType": { + "description": "AppConfig type values.", + "enum": [ + "opensearchDashboards.dashboardAdmin.users", + "opensearchDashboards.dashboardAdmin.groups" + ], + "type": "string" + }, + "DataSource": { + "additionalProperties": false, + "description": "Datasource arn and description", + "properties": { + "DataSourceArn": { + "$ref": "#/properties/Arn", + "description": "The ARN of the data source." + }, + "DataSourceDescription": { + "description": "Description of the data source.", + "type": "string" + } + }, + "required": [ + "DataSourceArn" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "description": "A key-value pair metadata associated with resource", + "properties": { + "Key": { + "description": "The key in the key-value pair", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "The value in the key-value pair", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "Amazon OpenSearchService application resource", + "handlers": { + "create": { + "permissions": [ + "es:CreateApplication", + "es:GetApplication", + "es:AddTags", + "es:ListTags", + "iam:CreateServiceLinkedRole" + ] + }, + "delete": { + "permissions": [ + "es:GetApplication", + "es:DeleteApplication" + ] + }, + "list": { + "permissions": [ + "es:ListApplications" + ] + }, + "read": { + "permissions": [ + "es:GetApplication", + "es:ListTags" + ] + }, + "update": { + "permissions": [ + "es:UpdateApplication", + "es:GetApplication", + "es:AddTags", + "es:RemoveTags", + "es:ListTags" + ] + } + }, + "primaryIdentifier": [ + "/properties/Name" + ], + "properties": { + "AppConfigs": { + "description": "List of application configurations.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/AppConfig" + }, + "type": "array" + }, + "Arn": { + "description": "Amazon Resource Name (ARN) format.", + "type": "string" + }, + "DataSources": { + "description": "List of data sources.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/DataSource" + }, + "type": "array" + }, + "Endpoint": { + "description": "The endpoint for the application.", + "type": "string" + }, + "IamIdentityCenterOptions": { + "additionalProperties": false, + "description": "Options for configuring IAM Identity Center", + "properties": { + "Enabled": { + "description": "Whether IAM Identity Center is enabled.", + "type": "boolean" + }, + "IamIdentityCenterInstanceArn": { + "$ref": "#/properties/Arn", + "description": "The ARN of the IAM Identity Center instance." + }, + "IamRoleForIdentityCenterApplicationArn": { + "description": "The ARN of the IAM role for Identity Center application.", + "type": "string" + } + }, + "type": "object" + }, + "Id": { + "description": "The identifier of the application.", + "maxLength": 40, + "minLength": 3, + "type": "string" + }, + "Name": { + "description": "The name of the application.", + "maxLength": 40, + "minLength": 3, + "pattern": "[a-z][a-z0-9\\-]+", + "type": "string" + }, + "Tags": { + "description": "An arbitrary set of tags (key-value pairs) for this application.", + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/Id", + "/properties/Arn" + ], + "required": [ + "Name" + ], + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "es:AddTags", + "es:RemoveTags", + "es:ListTags" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::OpenSearchService::Application" +} diff --git a/src/schema/aws-opensearchservice-domain.json b/src/schema/aws-opensearchservice-domain.json new file mode 100644 index 00000000..eb7d43af --- /dev/null +++ b/src/schema/aws-opensearchservice-domain.json @@ -0,0 +1,649 @@ +{ + "additionalProperties": false, + "conditionalCreateOnlyProperties": [ + "/properties/EncryptionAtRestOptions/properties", + "/properties/AdvancedSecurityOptions/properties/Enabled" + ], + "createOnlyProperties": [ + "/properties/DomainName" + ], + "definitions": { + "AdvancedSecurityOptionsInput": { + "additionalProperties": false, + "properties": { + "AnonymousAuthDisableDate": { + "type": "string" + }, + "AnonymousAuthEnabled": { + "type": "boolean" + }, + "Enabled": { + "type": "boolean" + }, + "InternalUserDatabaseEnabled": { + "type": "boolean" + }, + "JWTOptions": { + "$ref": "#/definitions/JWTOptions" + }, + "MasterUserOptions": { + "$ref": "#/definitions/MasterUserOptions" + }, + "SAMLOptions": { + "$ref": "#/definitions/SAMLOptions" + } + }, + "type": "object" + }, + "ClusterConfig": { + "additionalProperties": false, + "properties": { + "ColdStorageOptions": { + "$ref": "#/definitions/ColdStorageOptions" + }, + "DedicatedMasterCount": { + "type": "integer" + }, + "DedicatedMasterEnabled": { + "type": "boolean" + }, + "DedicatedMasterType": { + "type": "string" + }, + "InstanceCount": { + "type": "integer" + }, + "InstanceType": { + "type": "string" + }, + "MultiAZWithStandbyEnabled": { + "type": "boolean" + }, + "NodeOptions": { + "items": { + "$ref": "#/definitions/NodeOption" + }, + "type": "array" + }, + "WarmCount": { + "type": "integer" + }, + "WarmEnabled": { + "type": "boolean" + }, + "WarmType": { + "type": "string" + }, + "ZoneAwarenessConfig": { + "$ref": "#/definitions/ZoneAwarenessConfig" + }, + "ZoneAwarenessEnabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "CognitoOptions": { + "additionalProperties": false, + "properties": { + "Enabled": { + "type": "boolean" + }, + "IdentityPoolId": { + "type": "string" + }, + "RoleArn": { + "type": "string" + }, + "UserPoolId": { + "type": "string" + } + }, + "type": "object" + }, + "ColdStorageOptions": { + "additionalProperties": false, + "properties": { + "Enabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "DomainEndpointOptions": { + "additionalProperties": false, + "properties": { + "CustomEndpoint": { + "type": "string" + }, + "CustomEndpointCertificateArn": { + "type": "string" + }, + "CustomEndpointEnabled": { + "type": "boolean" + }, + "EnforceHTTPS": { + "type": "boolean" + }, + "TLSSecurityPolicy": { + "type": "string" + } + }, + "type": "object" + }, + "EBSOptions": { + "additionalProperties": false, + "properties": { + "EBSEnabled": { + "type": "boolean" + }, + "Iops": { + "type": "integer" + }, + "Throughput": { + "type": "integer" + }, + "VolumeSize": { + "type": "integer" + }, + "VolumeType": { + "type": "string" + } + }, + "type": "object" + }, + "EncryptionAtRestOptions": { + "additionalProperties": false, + "properties": { + "Enabled": { + "type": "boolean" + }, + "KmsKeyId": { + "type": "string" + } + }, + "type": "object" + }, + "IdentityCenterOptions": { + "additionalProperties": false, + "description": "Options for configuring Identity Center", + "properties": { + "EnabledAPIAccess": { + "description": "Whether Identity Center is enabled.", + "type": "boolean" + }, + "IdentityCenterApplicationARN": { + "description": "The ARN of the Identity Center application.", + "type": "string" + }, + "IdentityCenterInstanceARN": { + "description": "The ARN of the Identity Center instance.", + "type": "string" + }, + "IdentityStoreId": { + "description": "The IdentityStoreId for Identity Center options.", + "type": "string" + }, + "RolesKey": { + "$ref": "#/definitions/RolesKeyIdcType", + "description": "The roles key for Identity Center options." + }, + "SubjectKey": { + "$ref": "#/definitions/SubjectKeyIdcType", + "description": "The subject key for Identity Center options." + } + }, + "type": "object" + }, + "Idp": { + "additionalProperties": false, + "properties": { + "EntityId": { + "type": "string" + }, + "MetadataContent": { + "maxLength": 1048576, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "MetadataContent", + "EntityId" + ], + "type": "object" + }, + "JWTOptions": { + "additionalProperties": false, + "properties": { + "Enabled": { + "type": "boolean" + }, + "PublicKey": { + "type": "string" + }, + "RolesKey": { + "type": "string" + }, + "SubjectKey": { + "type": "string" + } + }, + "type": "object" + }, + "LogPublishingOption": { + "additionalProperties": false, + "properties": { + "CloudWatchLogsLogGroupArn": { + "type": "string" + }, + "Enabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "MasterUserOptions": { + "additionalProperties": false, + "properties": { + "MasterUserARN": { + "type": "string" + }, + "MasterUserName": { + "type": "string" + }, + "MasterUserPassword": { + "type": "string" + } + }, + "type": "object" + }, + "NodeConfig": { + "additionalProperties": false, + "properties": { + "Count": { + "type": "integer" + }, + "Enabled": { + "type": "boolean" + }, + "Type": { + "type": "string" + } + }, + "type": "object" + }, + "NodeOption": { + "additionalProperties": false, + "properties": { + "NodeConfig": { + "$ref": "#/definitions/NodeConfig" + }, + "NodeType": { + "enum": [ + "coordinator" + ], + "type": "string" + } + }, + "type": "object" + }, + "NodeToNodeEncryptionOptions": { + "additionalProperties": false, + "properties": { + "Enabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "OffPeakWindow": { + "additionalProperties": false, + "properties": { + "WindowStartTime": { + "$ref": "#/definitions/WindowStartTime" + } + }, + "type": "object" + }, + "OffPeakWindowOptions": { + "additionalProperties": false, + "properties": { + "Enabled": { + "type": "boolean" + }, + "OffPeakWindow": { + "$ref": "#/definitions/OffPeakWindow" + } + }, + "type": "object" + }, + "RolesKeyIdcType": { + "description": "Roles Key Idc type values.", + "enum": [ + "GroupName", + "GroupId" + ], + "type": "string" + }, + "SAMLOptions": { + "additionalProperties": false, + "properties": { + "Enabled": { + "type": "boolean" + }, + "Idp": { + "$ref": "#/definitions/Idp" + }, + "MasterBackendRole": { + "type": "string" + }, + "MasterUserName": { + "type": "string" + }, + "RolesKey": { + "type": "string" + }, + "SessionTimeoutMinutes": { + "type": "integer" + }, + "SubjectKey": { + "type": "string" + } + }, + "type": "object" + }, + "ServiceSoftwareOptions": { + "additionalProperties": false, + "properties": { + "AutomatedUpdateDate": { + "type": "string" + }, + "Cancellable": { + "type": "boolean" + }, + "CurrentVersion": { + "type": "string" + }, + "Description": { + "type": "string" + }, + "NewVersion": { + "type": "string" + }, + "OptionalDeployment": { + "type": "boolean" + }, + "UpdateAvailable": { + "type": "boolean" + }, + "UpdateStatus": { + "type": "string" + } + }, + "type": "object" + }, + "SnapshotOptions": { + "additionalProperties": false, + "properties": { + "AutomatedSnapshotStartHour": { + "type": "integer" + } + }, + "type": "object" + }, + "SoftwareUpdateOptions": { + "additionalProperties": false, + "properties": { + "AutoSoftwareUpdateEnabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "SubjectKeyIdcType": { + "description": "Subject Key Idc type values.", + "enum": [ + "UserName", + "UserId", + "Email" + ], + "type": "string" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "description": "The value of the tag.", + "maxLength": 128, + "minLength": 0, + "type": "string" + }, + "Value": { + "description": "The key of the tag.", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + }, + "VPCOptions": { + "additionalProperties": false, + "properties": { + "SecurityGroupIds": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "SubnetIds": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + "WindowStartTime": { + "additionalProperties": false, + "properties": { + "Hours": { + "maximum": 23, + "minimum": 0, + "type": "integer" + }, + "Minutes": { + "maximum": 59, + "minimum": 0, + "type": "integer" + } + }, + "required": [ + "Hours", + "Minutes" + ], + "type": "object" + }, + "ZoneAwarenessConfig": { + "additionalProperties": false, + "properties": { + "AvailabilityZoneCount": { + "type": "integer" + } + }, + "type": "object" + } + }, + "description": "An example resource schema demonstrating some basic constructs and validation rules.", + "handlers": { + "create": { + "permissions": [ + "es:CreateDomain", + "es:DescribeDomain", + "es:AddTags", + "es:ListTags" + ] + }, + "delete": { + "permissions": [ + "es:DeleteDomain", + "es:DescribeDomain" + ] + }, + "read": { + "permissions": [ + "es:DescribeDomain", + "es:ListTags" + ] + }, + "update": { + "permissions": [ + "es:UpdateDomain", + "es:UpgradeDomain", + "es:DescribeDomain", + "es:AddTags", + "es:RemoveTags", + "es:ListTags", + "es:DescribeDomainChangeProgress" + ], + "timeoutInMinutes": 2160 + } + }, + "primaryIdentifier": [ + "/properties/DomainName" + ], + "properties": { + "AccessPolicies": { + "type": "object" + }, + "AdvancedOptions": { + "additionalProperties": false, + "patternProperties": { + "[a-zA-Z0-9]+": { + "type": "string" + } + }, + "type": "object" + }, + "AdvancedSecurityOptions": { + "$ref": "#/definitions/AdvancedSecurityOptionsInput" + }, + "Arn": { + "type": "string" + }, + "ClusterConfig": { + "$ref": "#/definitions/ClusterConfig" + }, + "CognitoOptions": { + "$ref": "#/definitions/CognitoOptions" + }, + "DomainArn": { + "type": "string" + }, + "DomainEndpoint": { + "type": "string" + }, + "DomainEndpointOptions": { + "$ref": "#/definitions/DomainEndpointOptions" + }, + "DomainEndpointV2": { + "type": "string" + }, + "DomainEndpoints": { + "additionalProperties": false, + "patternProperties": { + "^.*$": { + "type": "string" + } + }, + "type": "object" + }, + "DomainName": { + "type": "string" + }, + "EBSOptions": { + "$ref": "#/definitions/EBSOptions" + }, + "EncryptionAtRestOptions": { + "$ref": "#/definitions/EncryptionAtRestOptions" + }, + "EngineVersion": { + "type": "string" + }, + "IPAddressType": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "IdentityCenterOptions": { + "$ref": "#/definitions/IdentityCenterOptions" + }, + "LogPublishingOptions": { + "additionalProperties": false, + "patternProperties": { + "[a-zA-Z0-9]+": { + "$ref": "#/definitions/LogPublishingOption" + } + }, + "type": "object" + }, + "NodeToNodeEncryptionOptions": { + "$ref": "#/definitions/NodeToNodeEncryptionOptions" + }, + "OffPeakWindowOptions": { + "$ref": "#/definitions/OffPeakWindowOptions" + }, + "ServiceSoftwareOptions": { + "$ref": "#/definitions/ServiceSoftwareOptions" + }, + "SkipShardMigrationWait": { + "type": "boolean" + }, + "SnapshotOptions": { + "$ref": "#/definitions/SnapshotOptions" + }, + "SoftwareUpdateOptions": { + "$ref": "#/definitions/SoftwareUpdateOptions" + }, + "Tags": { + "description": "An arbitrary set of tags (key-value pairs) for this Domain.", + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + }, + "VPCOptions": { + "$ref": "#/definitions/VPCOptions" + } + }, + "readOnlyProperties": [ + "/properties/Id", + "/properties/Arn", + "/properties/DomainArn", + "/properties/DomainEndpoint", + "/properties/DomainEndpointV2", + "/properties/DomainEndpoints", + "/properties/ServiceSoftwareOptions", + "/properties/AdvancedSecurityOptions/AnonymousAuthDisableDate", + "/properties/IdentityCenterOptions/IdentityCenterApplicationARN", + "/properties/IdentityCenterOptions/IdentityStoreId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "typeName": "AWS::OpenSearchService::Domain", + "writeOnlyProperties": [ + "/properties/AdvancedSecurityOptions/MasterUserOptions", + "/properties/AdvancedSecurityOptions/SAMLOptions/MasterUserName", + "/properties/AdvancedSecurityOptions/SAMLOptions/MasterBackendRole", + "/properties/AdvancedSecurityOptions/JWTOptions/PublicKey" + ] +} diff --git a/src/schema/aws-opsworks-app.json b/src/schema/aws-opsworks-app.json new file mode 100644 index 00000000..a5c0a003 --- /dev/null +++ b/src/schema/aws-opsworks-app.json @@ -0,0 +1,153 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Shortname", + "/properties/StackId" + ], + "definitions": { + "DataSource": { + "additionalProperties": false, + "properties": { + "Arn": { + "type": "string" + }, + "DatabaseName": { + "type": "string" + }, + "Type": { + "type": "string" + } + }, + "type": "object" + }, + "EnvironmentVariable": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Secure": { + "type": "boolean" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + }, + "Source": { + "additionalProperties": false, + "properties": { + "Password": { + "type": "string" + }, + "Revision": { + "type": "string" + }, + "SshKey": { + "type": "string" + }, + "Type": { + "type": "string" + }, + "Url": { + "type": "string" + }, + "Username": { + "type": "string" + } + }, + "type": "object" + }, + "SslConfiguration": { + "additionalProperties": false, + "properties": { + "Certificate": { + "type": "string" + }, + "Chain": { + "type": "string" + }, + "PrivateKey": { + "type": "string" + } + }, + "type": "object" + } + }, + "description": "Resource Type definition for AWS::OpsWorks::App", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "AppSource": { + "$ref": "#/definitions/Source" + }, + "Attributes": { + "patternProperties": { + "[a-zA-Z0-9]+": { + "type": "string" + } + }, + "type": "object" + }, + "DataSources": { + "items": { + "$ref": "#/definitions/DataSource" + }, + "type": "array", + "uniqueItems": true + }, + "Description": { + "type": "string" + }, + "Domains": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "EnableSsl": { + "type": "boolean" + }, + "Environment": { + "items": { + "$ref": "#/definitions/EnvironmentVariable" + }, + "type": "array", + "uniqueItems": false + }, + "Id": { + "type": "string" + }, + "Name": { + "type": "string" + }, + "Shortname": { + "type": "string" + }, + "SslConfiguration": { + "$ref": "#/definitions/SslConfiguration" + }, + "StackId": { + "type": "string" + }, + "Type": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "Type", + "Name", + "StackId" + ], + "typeName": "AWS::OpsWorks::App" +} diff --git a/src/schema/aws-opsworks-elasticloadbalancerattachment.json b/src/schema/aws-opsworks-elasticloadbalancerattachment.json new file mode 100644 index 00000000..df477416 --- /dev/null +++ b/src/schema/aws-opsworks-elasticloadbalancerattachment.json @@ -0,0 +1,26 @@ +{ + "additionalProperties": false, + "description": "Resource Type definition for AWS::OpsWorks::ElasticLoadBalancerAttachment", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "ElasticLoadBalancerName": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "LayerId": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "LayerId", + "ElasticLoadBalancerName" + ], + "typeName": "AWS::OpsWorks::ElasticLoadBalancerAttachment" +} diff --git a/src/schema/aws-opsworks-instance.json b/src/schema/aws-opsworks-instance.json new file mode 100644 index 00000000..e6ae7267 --- /dev/null +++ b/src/schema/aws-opsworks-instance.json @@ -0,0 +1,231 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Tenancy", + "/properties/BlockDeviceMappings", + "/properties/VirtualizationType", + "/properties/TimeBasedAutoScaling", + "/properties/RootDeviceType", + "/properties/AutoScalingType", + "/properties/StackId", + "/properties/AvailabilityZone", + "/properties/SubnetId", + "/properties/EbsOptimized" + ], + "definitions": { + "BlockDeviceMapping": { + "additionalProperties": false, + "properties": { + "DeviceName": { + "type": "string" + }, + "Ebs": { + "$ref": "#/definitions/EbsBlockDevice" + }, + "NoDevice": { + "type": "string" + }, + "VirtualName": { + "type": "string" + } + }, + "type": "object" + }, + "EbsBlockDevice": { + "additionalProperties": false, + "properties": { + "DeleteOnTermination": { + "type": "boolean" + }, + "Iops": { + "type": "integer" + }, + "SnapshotId": { + "type": "string" + }, + "VolumeSize": { + "type": "integer" + }, + "VolumeType": { + "type": "string" + } + }, + "type": "object" + }, + "TimeBasedAutoScaling": { + "additionalProperties": false, + "properties": { + "Friday": { + "patternProperties": { + "[a-zA-Z0-9]+": { + "type": "string" + } + }, + "type": "object" + }, + "Monday": { + "patternProperties": { + "[a-zA-Z0-9]+": { + "type": "string" + } + }, + "type": "object" + }, + "Saturday": { + "patternProperties": { + "[a-zA-Z0-9]+": { + "type": "string" + } + }, + "type": "object" + }, + "Sunday": { + "patternProperties": { + "[a-zA-Z0-9]+": { + "type": "string" + } + }, + "type": "object" + }, + "Thursday": { + "patternProperties": { + "[a-zA-Z0-9]+": { + "type": "string" + } + }, + "type": "object" + }, + "Tuesday": { + "patternProperties": { + "[a-zA-Z0-9]+": { + "type": "string" + } + }, + "type": "object" + }, + "Wednesday": { + "patternProperties": { + "[a-zA-Z0-9]+": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "description": "Resource Type definition for AWS::OpsWorks::Instance", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "AgentVersion": { + "type": "string" + }, + "AmiId": { + "type": "string" + }, + "Architecture": { + "type": "string" + }, + "AutoScalingType": { + "type": "string" + }, + "AvailabilityZone": { + "type": "string" + }, + "BlockDeviceMappings": { + "items": { + "$ref": "#/definitions/BlockDeviceMapping" + }, + "type": "array", + "uniqueItems": true + }, + "EbsOptimized": { + "type": "boolean" + }, + "ElasticIps": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "Hostname": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "InstallUpdatesOnBoot": { + "type": "boolean" + }, + "InstanceType": { + "type": "string" + }, + "LayerIds": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "Os": { + "type": "string" + }, + "PrivateDnsName": { + "type": "string" + }, + "PrivateIp": { + "type": "string" + }, + "PublicDnsName": { + "type": "string" + }, + "PublicIp": { + "type": "string" + }, + "RootDeviceType": { + "type": "string" + }, + "SshKeyName": { + "type": "string" + }, + "StackId": { + "type": "string" + }, + "SubnetId": { + "type": "string" + }, + "Tenancy": { + "type": "string" + }, + "TimeBasedAutoScaling": { + "$ref": "#/definitions/TimeBasedAutoScaling" + }, + "VirtualizationType": { + "type": "string" + }, + "Volumes": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/PublicDnsName", + "/properties/PrivateDnsName", + "/properties/PublicIp", + "/properties/PrivateIp", + "/properties/Id" + ], + "required": [ + "LayerIds", + "InstanceType", + "StackId" + ], + "typeName": "AWS::OpsWorks::Instance" +} diff --git a/src/schema/aws-opsworks-layer.json b/src/schema/aws-opsworks-layer.json new file mode 100644 index 00000000..80f81c44 --- /dev/null +++ b/src/schema/aws-opsworks-layer.json @@ -0,0 +1,253 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Type", + "/properties/StackId" + ], + "definitions": { + "AutoScalingThresholds": { + "additionalProperties": false, + "properties": { + "CpuThreshold": { + "type": "number" + }, + "IgnoreMetricsTime": { + "type": "integer" + }, + "InstanceCount": { + "type": "integer" + }, + "LoadThreshold": { + "type": "number" + }, + "MemoryThreshold": { + "type": "number" + }, + "ThresholdsWaitTime": { + "type": "integer" + } + }, + "type": "object" + }, + "LifecycleEventConfiguration": { + "additionalProperties": false, + "properties": { + "ShutdownEventConfiguration": { + "$ref": "#/definitions/ShutdownEventConfiguration" + } + }, + "type": "object" + }, + "LoadBasedAutoScaling": { + "additionalProperties": false, + "properties": { + "DownScaling": { + "$ref": "#/definitions/AutoScalingThresholds" + }, + "Enable": { + "type": "boolean" + }, + "UpScaling": { + "$ref": "#/definitions/AutoScalingThresholds" + } + }, + "type": "object" + }, + "Recipes": { + "additionalProperties": false, + "properties": { + "Configure": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "Deploy": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "Setup": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "Shutdown": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "Undeploy": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + "ShutdownEventConfiguration": { + "additionalProperties": false, + "properties": { + "DelayUntilElbConnectionsDrained": { + "type": "boolean" + }, + "ExecutionTimeout": { + "type": "integer" + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + }, + "VolumeConfiguration": { + "additionalProperties": false, + "properties": { + "Encrypted": { + "type": "boolean" + }, + "Iops": { + "type": "integer" + }, + "MountPoint": { + "type": "string" + }, + "NumberOfDisks": { + "type": "integer" + }, + "RaidLevel": { + "type": "integer" + }, + "Size": { + "type": "integer" + }, + "VolumeType": { + "type": "string" + } + }, + "type": "object" + } + }, + "description": "Resource Type definition for AWS::OpsWorks::Layer", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Attributes": { + "patternProperties": { + "[a-zA-Z0-9]+": { + "type": "string" + } + }, + "type": "object" + }, + "AutoAssignElasticIps": { + "type": "boolean" + }, + "AutoAssignPublicIps": { + "type": "boolean" + }, + "CustomInstanceProfileArn": { + "type": "string" + }, + "CustomJson": { + "type": "object" + }, + "CustomRecipes": { + "$ref": "#/definitions/Recipes" + }, + "CustomSecurityGroupIds": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "EnableAutoHealing": { + "type": "boolean" + }, + "Id": { + "type": "string" + }, + "InstallUpdatesOnBoot": { + "type": "boolean" + }, + "LifecycleEventConfiguration": { + "$ref": "#/definitions/LifecycleEventConfiguration" + }, + "LoadBasedAutoScaling": { + "$ref": "#/definitions/LoadBasedAutoScaling" + }, + "Name": { + "type": "string" + }, + "Packages": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "Shortname": { + "type": "string" + }, + "StackId": { + "type": "string" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + }, + "Type": { + "type": "string" + }, + "UseEbsOptimizedInstances": { + "type": "boolean" + }, + "VolumeConfigurations": { + "items": { + "$ref": "#/definitions/VolumeConfiguration" + }, + "type": "array", + "uniqueItems": false + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "EnableAutoHealing", + "Name", + "Type", + "AutoAssignElasticIps", + "Shortname", + "AutoAssignPublicIps", + "StackId" + ], + "typeName": "AWS::OpsWorks::Layer" +} diff --git a/src/schema/aws-opsworks-stack.json b/src/schema/aws-opsworks-stack.json new file mode 100644 index 00000000..81100875 --- /dev/null +++ b/src/schema/aws-opsworks-stack.json @@ -0,0 +1,225 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ServiceRoleArn", + "/properties/CloneAppIds", + "/properties/ClonePermissions", + "/properties/VpcId", + "/properties/SourceStackId" + ], + "definitions": { + "ChefConfiguration": { + "additionalProperties": false, + "properties": { + "BerkshelfVersion": { + "type": "string" + }, + "ManageBerkshelf": { + "type": "boolean" + } + }, + "type": "object" + }, + "ElasticIp": { + "additionalProperties": false, + "properties": { + "Ip": { + "type": "string" + }, + "Name": { + "type": "string" + } + }, + "required": [ + "Ip" + ], + "type": "object" + }, + "RdsDbInstance": { + "additionalProperties": false, + "properties": { + "DbPassword": { + "type": "string" + }, + "DbUser": { + "type": "string" + }, + "RdsDbInstanceArn": { + "type": "string" + } + }, + "required": [ + "DbPassword", + "DbUser", + "RdsDbInstanceArn" + ], + "type": "object" + }, + "Source": { + "additionalProperties": false, + "properties": { + "Password": { + "type": "string" + }, + "Revision": { + "type": "string" + }, + "SshKey": { + "type": "string" + }, + "Type": { + "type": "string" + }, + "Url": { + "type": "string" + }, + "Username": { + "type": "string" + } + }, + "type": "object" + }, + "StackConfigurationManager": { + "additionalProperties": false, + "properties": { + "Name": { + "type": "string" + }, + "Version": { + "type": "string" + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::OpsWorks::Stack", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "AgentVersion": { + "type": "string" + }, + "Attributes": { + "patternProperties": { + "[a-zA-Z0-9]+": { + "type": "string" + } + }, + "type": "object" + }, + "ChefConfiguration": { + "$ref": "#/definitions/ChefConfiguration" + }, + "CloneAppIds": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "ClonePermissions": { + "type": "boolean" + }, + "ConfigurationManager": { + "$ref": "#/definitions/StackConfigurationManager" + }, + "CustomCookbooksSource": { + "$ref": "#/definitions/Source" + }, + "CustomJson": { + "type": "object" + }, + "DefaultAvailabilityZone": { + "type": "string" + }, + "DefaultInstanceProfileArn": { + "type": "string" + }, + "DefaultOs": { + "type": "string" + }, + "DefaultRootDeviceType": { + "type": "string" + }, + "DefaultSshKeyName": { + "type": "string" + }, + "DefaultSubnetId": { + "type": "string" + }, + "EcsClusterArn": { + "type": "string" + }, + "ElasticIps": { + "items": { + "$ref": "#/definitions/ElasticIp" + }, + "type": "array", + "uniqueItems": true + }, + "HostnameTheme": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "Name": { + "type": "string" + }, + "RdsDbInstances": { + "items": { + "$ref": "#/definitions/RdsDbInstance" + }, + "type": "array", + "uniqueItems": true + }, + "ServiceRoleArn": { + "type": "string" + }, + "SourceStackId": { + "type": "string" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + }, + "UseCustomCookbooks": { + "type": "boolean" + }, + "UseOpsworksSecurityGroups": { + "type": "boolean" + }, + "VpcId": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "DefaultInstanceProfileArn", + "ServiceRoleArn", + "Name" + ], + "typeName": "AWS::OpsWorks::Stack" +} diff --git a/src/schema/aws-opsworks-userprofile.json b/src/schema/aws-opsworks-userprofile.json new file mode 100644 index 00000000..375b569d --- /dev/null +++ b/src/schema/aws-opsworks-userprofile.json @@ -0,0 +1,34 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/IamUserArn" + ], + "description": "Resource Type definition for AWS::OpsWorks::UserProfile", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "AllowSelfManagement": { + "type": "boolean" + }, + "IamUserArn": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "SshPublicKey": { + "type": "string" + }, + "SshUsername": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "IamUserArn" + ], + "typeName": "AWS::OpsWorks::UserProfile" +} diff --git a/src/schema/aws-opsworks-volume.json b/src/schema/aws-opsworks-volume.json new file mode 100644 index 00000000..1417fd3b --- /dev/null +++ b/src/schema/aws-opsworks-volume.json @@ -0,0 +1,36 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/StackId", + "/properties/Ec2VolumeId" + ], + "description": "Resource Type definition for AWS::OpsWorks::Volume", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Ec2VolumeId": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "MountPoint": { + "type": "string" + }, + "Name": { + "type": "string" + }, + "StackId": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "Ec2VolumeId", + "StackId" + ], + "typeName": "AWS::OpsWorks::Volume" +} diff --git a/src/schema/aws-opsworkscm-server.json b/src/schema/aws-opsworkscm-server.json new file mode 100644 index 00000000..346cc328 --- /dev/null +++ b/src/schema/aws-opsworkscm-server.json @@ -0,0 +1,236 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/KeyPair", + "/properties/CustomPrivateKey", + "/properties/ServiceRoleArn", + "/properties/InstanceType", + "/properties/CustomCertificate", + "/properties/CustomDomain", + "/properties/InstanceProfileArn", + "/properties/SecurityGroupIds", + "/properties/ServerName", + "/properties/SubnetIds", + "/properties/BackupId", + "/properties/EngineModel", + "/properties/AssociatePublicIpAddress", + "/properties/EngineVersion", + "/properties/Engine" + ], + "definitions": { + "EngineAttribute": { + "additionalProperties": false, + "properties": { + "Name": { + "maxLength": 10000, + "pattern": "(?s).*", + "type": "string" + }, + "Value": { + "maxLength": 10000, + "pattern": "(?s).*", + "type": "string" + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "pattern": "^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)$", + "type": "string" + }, + "Value": { + "maxLength": 256, + "minLength": 0, + "pattern": "^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)$", + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::OpsWorksCM::Server", + "handlers": { + "create": { + "permissions": [ + "opsworks-cm:CreateServer", + "opsworks-cm:DescribeServers", + "iam:PassRole" + ] + }, + "delete": { + "permissions": [ + "opsworks-cm:DeleteServer", + "opsworks-cm:DescribeServers" + ] + }, + "list": { + "permissions": [ + "opsworks-cm:DescribeServers", + "opsworks-cm:ListTagsForResource" + ] + }, + "read": { + "permissions": [ + "opsworks-cm:DescribeServers" + ] + }, + "update": { + "permissions": [ + "opsworks-cm:UpdateServer", + "opsworks-cm:TagResource", + "opsworks-cm:UntagResource", + "opsworks-cm:DescribeServers" + ] + } + }, + "primaryIdentifier": [ + "/properties/ServerName" + ], + "properties": { + "Arn": { + "maxLength": 10000, + "type": "string" + }, + "AssociatePublicIpAddress": { + "type": "boolean" + }, + "BackupId": { + "maxLength": 79, + "pattern": "[a-zA-Z][a-zA-Z0-9\\-\\.\\:]*", + "type": "string" + }, + "BackupRetentionCount": { + "minLength": 1, + "type": "integer" + }, + "CustomCertificate": { + "maxLength": 2097152, + "pattern": "(?s)\\s*-----BEGIN CERTIFICATE-----.+-----END CERTIFICATE-----\\s*", + "type": "string" + }, + "CustomDomain": { + "maxLength": 253, + "pattern": "^(((?!-)[A-Za-z0-9-]{0,62}[A-Za-z0-9])\\.)+((?!-)[A-Za-z0-9-]{1,62}[A-Za-z0-9])$", + "type": "string" + }, + "CustomPrivateKey": { + "maxLength": 4096, + "pattern": "(?ms)\\s*^-----BEGIN (?-s:.*)PRIVATE KEY-----$.*?^-----END (?-s:.*)PRIVATE KEY-----$\\s*", + "type": "string" + }, + "DisableAutomatedBackup": { + "type": "boolean" + }, + "Endpoint": { + "maxLength": 10000, + "type": "string" + }, + "Engine": { + "maxLength": 10000, + "type": "string" + }, + "EngineAttributes": { + "items": { + "$ref": "#/definitions/EngineAttribute" + }, + "type": "array", + "uniqueItems": false + }, + "EngineModel": { + "maxLength": 10000, + "type": "string" + }, + "EngineVersion": { + "maxLength": 10000, + "type": "string" + }, + "InstanceProfileArn": { + "maxLength": 10000, + "pattern": "arn:aws:iam::[0-9]{12}:instance-profile/.*", + "type": "string" + }, + "InstanceType": { + "maxLength": 10000, + "type": "string" + }, + "KeyPair": { + "maxLength": 10000, + "pattern": ".*", + "type": "string" + }, + "PreferredBackupWindow": { + "maxLength": 10000, + "pattern": "^((Mon|Tue|Wed|Thu|Fri|Sat|Sun):)?([0-1][0-9]|2[0-3]):[0-5][0-9]$", + "type": "string" + }, + "PreferredMaintenanceWindow": { + "maxLength": 10000, + "pattern": "^((Mon|Tue|Wed|Thu|Fri|Sat|Sun):)?([0-1][0-9]|2[0-3]):[0-5][0-9]$", + "type": "string" + }, + "SecurityGroupIds": { + "items": { + "maxLength": 10000, + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "ServerName": { + "maxLength": 40, + "minLength": 1, + "pattern": "[a-zA-Z][a-zA-Z0-9\\-]*", + "type": "string" + }, + "ServiceRoleArn": { + "maxLength": 10000, + "pattern": "arn:aws:iam::[0-9]{12}:role/.*", + "type": "string" + }, + "SubnetIds": { + "items": { + "maxLength": 10000, + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + } + }, + "readOnlyProperties": [ + "/properties/ServerName", + "/properties/Endpoint", + "/properties/Arn" + ], + "required": [ + "ServiceRoleArn", + "InstanceProfileArn", + "InstanceType" + ], + "typeName": "AWS::OpsWorksCM::Server", + "writeOnlyProperties": [ + "/properties/BackupId", + "/properties/CustomCertificate", + "/properties/CustomDomain", + "/properties/CustomPrivateKey", + "/properties/EngineAttributes", + "/properties/EngineVersion", + "/properties/KeyPair", + "/properties/Tags" + ] +} diff --git a/src/schema/aws-organizations-account.json b/src/schema/aws-organizations-account.json new file mode 100644 index 00000000..497e6162 --- /dev/null +++ b/src/schema/aws-organizations-account.json @@ -0,0 +1,179 @@ +{ + "additionalProperties": false, + "definitions": { + "Tag": { + "additionalProperties": false, + "description": "A custom key-value pair associated with a resource within your organization.", + "properties": { + "Key": { + "description": "The key identifier, or name, of the tag.", + "maxLength": 128, + "minLength": 1, + "pattern": "[\\s\\S]*", + "type": "string" + }, + "Value": { + "description": "The string value that's associated with the key of the tag. You can set the value of a tag to an empty string, but you can't set the value of a tag to null.", + "maxLength": 256, + "minLength": 0, + "pattern": "[\\s\\S]*", + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "description": "You can use AWS::Organizations::Account to manage accounts in organization.", + "handlers": { + "create": { + "permissions": [ + "organizations:CreateAccount", + "organizations:DescribeCreateAccountStatus", + "organizations:MoveAccount", + "organizations:ListAccounts", + "organizations:ListParents", + "organizations:TagResource", + "organizations:DescribeAccount", + "organizations:ListTagsForResource" + ] + }, + "delete": { + "permissions": [ + "organizations:CloseAccount" + ] + }, + "list": { + "permissions": [ + "organizations:ListAccounts" + ] + }, + "read": { + "permissions": [ + "organizations:DescribeAccount", + "organizations:ListParents", + "organizations:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "organizations:MoveAccount", + "organizations:TagResource", + "organizations:UntagResource", + "organizations:ListRoots", + "organizations:DescribeAccount", + "organizations:ListParents", + "organizations:ListTagsForResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/AccountId" + ], + "properties": { + "AccountId": { + "description": "If the account was created successfully, the unique identifier (ID) of the new account.", + "maxLength": 12, + "pattern": "^\\d{12}$", + "type": "string" + }, + "AccountName": { + "description": "The friendly name of the member account.", + "maxLength": 50, + "minLength": 1, + "pattern": "[\\u0020-\\u007E]+", + "type": "string" + }, + "Arn": { + "description": "The Amazon Resource Name (ARN) of the account.", + "pattern": "^arn:aws.*:organizations::\\d{12}:account\\/o-[a-z0-9]{10,32}\\/\\d{12}", + "type": "string" + }, + "Email": { + "description": "The email address of the owner to assign to the new member account.", + "maxLength": 64, + "minLength": 6, + "pattern": "[^\\s@]+@[^\\s@]+\\.[^\\s@]+", + "type": "string" + }, + "JoinedMethod": { + "description": "The method by which the account joined the organization.", + "enum": [ + "INVITED", + "CREATED" + ], + "type": "string" + }, + "JoinedTimestamp": { + "description": "The date the account became a part of the organization.", + "type": "string" + }, + "ParentIds": { + "description": "List of parent nodes for the member account. Currently only one parent at a time is supported. Default is root.", + "insertionOrder": false, + "items": { + "pattern": "^(r-[0-9a-z]{4,32})|(ou-[0-9a-z]{4,32}-[a-z0-9]{8,32})$", + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "RoleName": { + "default": "OrganizationAccountAccessRole", + "description": "The name of an IAM role that AWS Organizations automatically preconfigures in the new member account. Default name is OrganizationAccountAccessRole if not specified.", + "maxLength": 64, + "minLength": 1, + "pattern": "[\\w+=,.@-]{1,64}", + "type": "string" + }, + "Status": { + "description": "The status of the account in the organization.", + "enum": [ + "ACTIVE", + "SUSPENDED", + "PENDING_CLOSURE" + ], + "type": "string" + }, + "Tags": { + "description": "A list of tags that you want to attach to the newly created account. For each tag in the list, you must specify both a tag key and a value.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/AccountId", + "/properties/Status", + "/properties/JoinedTimestamp", + "/properties/JoinedMethod", + "/properties/Arn" + ], + "required": [ + "AccountName", + "Email" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-organizations", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "organizations:TagResource", + "organizations:UntagResource", + "organizations:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::Organizations::Account", + "writeOnlyProperties": [ + "/properties/RoleName" + ] +} diff --git a/src/schema/aws-organizations-organization.json b/src/schema/aws-organizations-organization.json new file mode 100644 index 00000000..ecdf05f2 --- /dev/null +++ b/src/schema/aws-organizations-organization.json @@ -0,0 +1,96 @@ +{ + "additionalProperties": false, + "description": "Resource schema for AWS::Organizations::Organization", + "handlers": { + "create": { + "permissions": [ + "organizations:CreateOrganization", + "organizations:DescribeOrganization", + "iam:CreateServiceLinkedRole", + "organizations:ListRoots" + ] + }, + "delete": { + "permissions": [ + "organizations:DeleteOrganization", + "organizations:DescribeOrganization" + ] + }, + "list": { + "permissions": [ + "organizations:DescribeOrganization" + ] + }, + "read": { + "permissions": [ + "organizations:DescribeOrganization", + "organizations:ListRoots" + ] + }, + "update": { + "permissions": [ + "organizations:DescribeOrganization" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Arn": { + "description": "The Amazon Resource Name (ARN) of an organization.", + "pattern": "^arn:aws.*:organizations::\\d{12}:organization\\/o-[a-z0-9]{10,32}", + "type": "string" + }, + "FeatureSet": { + "default": "ALL", + "description": "Specifies the feature set supported by the new organization. Each feature set supports different levels of functionality.", + "enum": [ + "ALL", + "CONSOLIDATED_BILLING" + ], + "type": "string" + }, + "Id": { + "description": "The unique identifier (ID) of an organization.", + "pattern": "^o-[a-z0-9]{10,32}$", + "type": "string" + }, + "ManagementAccountArn": { + "description": "The Amazon Resource Name (ARN) of the account that is designated as the management account for the organization.", + "pattern": "^arn:aws.*:organizations::\\d{12}:account\\/o-[a-z0-9]{10,32}\\/\\d{12}", + "type": "string" + }, + "ManagementAccountEmail": { + "description": "The email address that is associated with the AWS account that is designated as the management account for the organization.", + "maxLength": 64, + "minLength": 6, + "pattern": "[^\\s@]+@[^\\s@]+\\.[^\\s@]+", + "type": "string" + }, + "ManagementAccountId": { + "description": "The unique identifier (ID) of the management account of an organization.", + "pattern": "^\\d{12}$", + "type": "string" + }, + "RootId": { + "description": "The unique identifier (ID) for the root.", + "maxLength": 64, + "pattern": "^r-[0-9a-z]{4,32}$", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id", + "/properties/Arn", + "/properties/ManagementAccountArn", + "/properties/ManagementAccountId", + "/properties/ManagementAccountEmail", + "/properties/RootId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-organizations.git", + "tagging": { + "taggable": false + }, + "typeName": "AWS::Organizations::Organization" +} diff --git a/src/schema/aws-organizations-organizationalunit.json b/src/schema/aws-organizations-organizationalunit.json new file mode 100644 index 00000000..1acd3860 --- /dev/null +++ b/src/schema/aws-organizations-organizationalunit.json @@ -0,0 +1,141 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ParentId" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "description": "A custom key-value pair associated with a resource within your organization.", + "properties": { + "Key": { + "description": "The key identifier, or name, of the tag.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "The string value that's associated with the key of the tag. You can set the value of a tag to an empty string, but you can't set the value of a tag to null.", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "You can use organizational units (OUs) to group accounts together to administer as a single unit. This greatly simplifies the management of your accounts. For example, you can attach a policy-based control to an OU, and all accounts within the OU automatically inherit the policy. You can create multiple OUs within a single organization, and you can create OUs within other OUs. Each OU can contain multiple accounts, and you can move accounts from one OU to another. However, OU names must be unique within a parent OU or root.", + "handlers": { + "create": { + "permissions": [ + "organizations:CreateOrganizationalUnit", + "organizations:DescribeOrganizationalUnit", + "organizations:ListParents", + "organizations:ListOrganizationalUnitsForParent", + "organizations:ListTagsForResource", + "organizations:TagResource" + ] + }, + "delete": { + "permissions": [ + "organizations:DeleteOrganizationalUnit" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "ParentId": { + "$ref": "resource-schema.json#/properties/ParentId" + } + }, + "required": [ + "ParentId" + ] + }, + "permissions": [ + "organizations:ListOrganizationalUnitsForParent" + ] + }, + "read": { + "permissions": [ + "organizations:DescribeOrganizationalUnit", + "organizations:ListParents", + "organizations:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "organizations:DescribeOrganizationalUnit", + "organizations:ListParents", + "organizations:ListTagsForResource", + "organizations:TagResource", + "organizations:UntagResource", + "organizations:UpdateOrganizationalUnit" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Arn": { + "description": "The Amazon Resource Name (ARN) of this OU.", + "pattern": "^arn:aws.*:organizations::\\d{12}:ou/o-[a-z0-9]{10,32}/ou-[0-9a-z]{4,32}-[0-9a-z]{8,32}", + "type": "string" + }, + "Id": { + "description": "The unique identifier (ID) associated with this OU.", + "maxLength": 68, + "pattern": "^ou-[0-9a-z]{4,32}-[a-z0-9]{8,32}$", + "type": "string" + }, + "Name": { + "description": "The friendly name of this OU.", + "maxLength": 128, + "minLength": 1, + "pattern": "[\\s\\S]*", + "type": "string" + }, + "ParentId": { + "description": "The unique identifier (ID) of the parent root or OU that you want to create the new OU in.", + "maxLength": 100, + "pattern": "^(r-[0-9a-z]{4,32})|(ou-[0-9a-z]{4,32}-[a-z0-9]{8,32})$", + "type": "string" + }, + "Tags": { + "description": "A list of tags that you want to attach to the newly created OU.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/Id" + ], + "required": [ + "Name", + "ParentId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-organizations", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "organizations:TagResource", + "organizations:UntagResource", + "organizations:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::Organizations::OrganizationalUnit" +} diff --git a/src/schema/aws-organizations-policy.json b/src/schema/aws-organizations-policy.json new file mode 100644 index 00000000..c4b79f5d --- /dev/null +++ b/src/schema/aws-organizations-policy.json @@ -0,0 +1,186 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Type" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "description": "A custom key-value pair associated with a resource within your organization.", + "properties": { + "Key": { + "description": "The key identifier, or name, of the tag.", + "maxLength": 128, + "minLength": 1, + "pattern": "[\\s\\S]*", + "type": "string" + }, + "Value": { + "description": "The string value that's associated with the key of the tag. You can set the value of a tag to an empty string, but you can't set the value of a tag to null.", + "maxLength": 256, + "minLength": 0, + "pattern": "[\\s\\S]*", + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "description": "Policies in AWS Organizations enable you to manage different features of the AWS accounts in your organization. You can use policies when all features are enabled in your organization.", + "handlers": { + "create": { + "permissions": [ + "organizations:CreatePolicy", + "organizations:DescribePolicy", + "organizations:AttachPolicy", + "organizations:ListPolicies", + "organizations:ListTagsForResource", + "organizations:ListTargetsForPolicy", + "organizations:TagResource" + ] + }, + "delete": { + "permissions": [ + "organizations:DetachPolicy", + "organizations:DeletePolicy" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "Type": { + "$ref": "resource-schema.json#/properties/Type" + } + }, + "required": [ + "Type" + ] + }, + "permissions": [ + "organizations:ListPolicies" + ] + }, + "read": { + "permissions": [ + "organizations:DescribePolicy", + "organizations:ListTargetsForPolicy", + "organizations:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "organizations:AttachPolicy", + "organizations:DetachPolicy", + "organizations:UpdatePolicy", + "organizations:ListTagsForResource", + "organizations:ListTargetsForPolicy", + "organizations:TagResource", + "organizations:UntagResource", + "organizations:DescribePolicy" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Arn": { + "description": "ARN of the Policy", + "pattern": "^arn:aws.*:organizations::[0-9]{12}:policy/o-[a-z0-9]{10}/(service_control|tag|backup|aiservices_opt_out)_policy/p-[a-z0-9]{8}", + "type": "string" + }, + "AwsManaged": { + "description": "A boolean value that indicates whether the specified policy is an AWS managed policy. If true, then you can attach the policy to roots, OUs, or accounts, but you cannot edit it.", + "type": "boolean" + }, + "Content": { + "description": "The Policy text content. For AWS CloudFormation templates formatted in YAML, you can provide the policy in JSON or YAML format. AWS CloudFormation always converts a YAML policy to JSON format before submitting it.", + "maxLength": 1000000, + "minLength": 1, + "pattern": "[\\s\\S]*", + "type": [ + "object", + "string" + ] + }, + "Description": { + "description": "Human readable description of the policy", + "maxLength": 512, + "pattern": "[\\s\\S]*", + "type": "string" + }, + "Id": { + "description": "Id of the Policy", + "maxLength": 130, + "pattern": "^p-[0-9a-zA-Z_]{8,128}$", + "type": "string" + }, + "Name": { + "description": "Name of the Policy", + "maxLength": 128, + "minLength": 1, + "pattern": "[\\s\\S]*", + "type": "string" + }, + "Tags": { + "description": "A list of tags that you want to attach to the newly created policy. For each tag in the list, you must specify both a tag key and a value. You can set the value to an empty string, but you can't set it to null.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + }, + "TargetIds": { + "description": "List of unique identifiers (IDs) of the root, OU, or account that you want to attach the policy to", + "insertionOrder": false, + "items": { + "pattern": "^(r-[0-9a-z]{4,32})|(\\d{12})|(ou-[0-9a-z]{4,32}-[a-z0-9]{8,32})$", + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "Type": { + "description": "The type of policy to create. You can specify one of the following values: AISERVICES_OPT_OUT_POLICY, BACKUP_POLICY, SERVICE_CONTROL_POLICY, TAG_POLICY, CHATBOT_POLICY, RESOURCE_CONTROL_POLICY,DECLARATIVE_POLICY_EC2", + "enum": [ + "SERVICE_CONTROL_POLICY", + "AISERVICES_OPT_OUT_POLICY", + "BACKUP_POLICY", + "TAG_POLICY", + "CHATBOT_POLICY", + "RESOURCE_CONTROL_POLICY", + "DECLARATIVE_POLICY_EC2" + ], + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id", + "/properties/Arn", + "/properties/AwsManaged" + ], + "required": [ + "Name", + "Type", + "Content" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-organizations", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "organizations:TagResource", + "organizations:UntagResource", + "organizations:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::Organizations::Policy" +} diff --git a/src/schema/aws-organizations-resourcepolicy.json b/src/schema/aws-organizations-resourcepolicy.json new file mode 100644 index 00000000..889397c8 --- /dev/null +++ b/src/schema/aws-organizations-resourcepolicy.json @@ -0,0 +1,120 @@ +{ + "additionalProperties": false, + "definitions": { + "Tag": { + "additionalProperties": false, + "description": "A custom key-value pair associated with a resource within your organization.", + "properties": { + "Key": { + "description": "The key identifier, or name, of the tag.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "The string value that's associated with the key of the tag. You can set the value of a tag to an empty string, but you can't set the value of a tag to null.", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "You can use AWS::Organizations::ResourcePolicy to delegate policy management for AWS Organizations to specified member accounts to perform policy actions that are by default available only to the management account.", + "handlers": { + "create": { + "permissions": [ + "organizations:PutResourcePolicy", + "organizations:DescribeResourcePolicy", + "organizations:ListTagsForResource", + "organizations:TagResource" + ] + }, + "delete": { + "permissions": [ + "organizations:DeleteResourcePolicy" + ] + }, + "list": { + "permissions": [ + "organizations:DescribeResourcePolicy" + ] + }, + "read": { + "permissions": [ + "organizations:DescribeResourcePolicy", + "organizations:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "organizations:DescribeResourcePolicy", + "organizations:PutResourcePolicy", + "organizations:ListTagsForResource", + "organizations:TagResource", + "organizations:UntagResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Arn": { + "description": "The Amazon Resource Name (ARN) of the resource policy.", + "pattern": "^arn:aws.*:organizations::\\d{12}:resourcepolicy\\/o-[a-z0-9]{10,32}\\/rp-[0-9a-zA-Z_]{4,128}", + "type": "string" + }, + "Content": { + "description": "The policy document. For AWS CloudFormation templates formatted in YAML, you can provide the policy in JSON or YAML format. AWS CloudFormation always converts a YAML policy to JSON format before submitting it.", + "maxLength": 40000, + "minLength": 1, + "pattern": "[\\s\\S]*", + "type": [ + "object", + "string" + ] + }, + "Id": { + "description": "The unique identifier (ID) associated with this resource policy.", + "maxLength": 131, + "pattern": "^rp-[0-9a-zA-Z_]{4,128}$", + "type": "string" + }, + "Tags": { + "description": "A list of tags that you want to attach to the resource policy", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/Id", + "/properties/Arn" + ], + "required": [ + "Content" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-organizations", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "organizations:TagResource", + "organizations:UntagResource", + "organizations:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::Organizations::ResourcePolicy" +} diff --git a/src/schema/aws-osis-pipeline.json b/src/schema/aws-osis-pipeline.json new file mode 100644 index 00000000..b70b97ed --- /dev/null +++ b/src/schema/aws-osis-pipeline.json @@ -0,0 +1,317 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/PipelineName" + ], + "definitions": { + "BufferOptions": { + "additionalProperties": false, + "description": "Key-value pairs to configure buffering.", + "properties": { + "PersistentBufferEnabled": { + "description": "Whether persistent buffering should be enabled.", + "type": "boolean" + } + }, + "required": [ + "PersistentBufferEnabled" + ], + "type": "object" + }, + "EncryptionAtRestOptions": { + "additionalProperties": false, + "description": "Key-value pairs to configure encryption at rest.", + "properties": { + "KmsKeyArn": { + "description": "The KMS key to use for encrypting data. By default an AWS owned key is used", + "type": "string" + } + }, + "required": [ + "KmsKeyArn" + ], + "type": "object" + }, + "LogPublishingOptions": { + "additionalProperties": false, + "description": "Key-value pairs to configure log publishing.", + "properties": { + "CloudWatchLogDestination": { + "additionalProperties": false, + "description": "The destination for OpenSearch Ingestion Service logs sent to Amazon CloudWatch.", + "properties": { + "LogGroup": { + "maxLength": 512, + "minLength": 1, + "pattern": "\\/aws\\/vendedlogs\\/[\\.\\-_/#A-Za-z0-9]+", + "type": "string" + } + }, + "required": [ + "LogGroup" + ], + "type": "object" + }, + "IsLoggingEnabled": { + "description": "Whether logs should be published.", + "type": "boolean" + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "VpcEndpoint": { + "additionalProperties": false, + "description": "An OpenSearch Ingestion Service-managed VPC endpoint that will access one or more pipelines.", + "properties": { + "VpcEndpointId": { + "description": "The unique identifier of the endpoint.", + "type": "string" + }, + "VpcId": { + "description": "The ID for your VPC. AWS Privatelink generates this value when you create a VPC.", + "type": "string" + }, + "VpcOptions": { + "$ref": "#/definitions/VpcOptions" + } + }, + "type": "object" + }, + "VpcOptions": { + "additionalProperties": false, + "description": "Container for the values required to configure VPC access for the pipeline. If you don't specify these values, OpenSearch Ingestion Service creates the pipeline with a public endpoint.", + "properties": { + "SecurityGroupIds": { + "description": "A list of security groups associated with the VPC endpoint.", + "insertionOrder": false, + "items": { + "maxLength": 20, + "minLength": 11, + "pattern": "sg-\\w{8}(\\w{9})?", + "type": "string" + }, + "type": "array" + }, + "SubnetIds": { + "description": "A list of subnet IDs associated with the VPC endpoint.", + "insertionOrder": false, + "items": { + "maxLength": 24, + "minLength": 15, + "pattern": "subnet-\\w{8}(\\w{9})?", + "type": "string" + }, + "type": "array" + }, + "VpcAttachmentOptions": { + "additionalProperties": false, + "description": "Options for attaching a VPC to the pipeline.", + "properties": { + "AttachToVpc": { + "description": "Whether the pipeline should be attached to the provided VPC", + "type": "boolean" + }, + "CidrBlock": { + "description": "The CIDR block to be reserved for OpenSearch Ingestion to create elastic network interfaces (ENIs).", + "pattern": "^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)/(3[0-2]|[12]?[0-9])$", + "type": "string" + } + }, + "required": [ + "AttachToVpc", + "CidrBlock" + ], + "type": "object" + }, + "VpcEndpointManagement": { + "description": "Defines whether you or Amazon OpenSearch Ingestion service create and manage the VPC endpoint configured for the pipeline.", + "enum": [ + "CUSTOMER", + "SERVICE" + ], + "type": "string" + } + }, + "required": [ + "SubnetIds" + ], + "type": "object" + } + }, + "description": "An OpenSearch Ingestion Service Data Prepper pipeline running Data Prepper.", + "handlers": { + "create": { + "permissions": [ + "osis:CreatePipeline", + "osis:GetPipeline", + "osis:TagResource", + "osis:ListTagsForResource", + "iam:PassRole", + "iam:CreateServiceLinkedRole", + "logs:CreateLogDelivery", + "kms:DescribeKey" + ] + }, + "delete": { + "permissions": [ + "osis:DeletePipeline", + "osis:GetPipeline", + "logs:GetLogDelivery", + "logs:DeleteLogDelivery", + "logs:ListLogDeliveries" + ] + }, + "list": { + "permissions": [ + "osis:ListPipelines" + ] + }, + "read": { + "permissions": [ + "osis:GetPipeline", + "osis:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "osis:UpdatePipeline", + "osis:GetPipeline", + "osis:ListTagsForResource", + "osis:TagResource", + "osis:UntagResource", + "iam:PassRole", + "logs:GetLogDelivery", + "logs:UpdateLogDelivery", + "logs:ListLogDeliveries", + "kms:DescribeKey" + ] + } + }, + "primaryIdentifier": [ + "/properties/PipelineArn" + ], + "properties": { + "BufferOptions": { + "$ref": "#/definitions/BufferOptions" + }, + "EncryptionAtRestOptions": { + "$ref": "#/definitions/EncryptionAtRestOptions" + }, + "IngestEndpointUrls": { + "description": "A list of endpoints that can be used for ingesting data into a pipeline", + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array" + }, + "LogPublishingOptions": { + "$ref": "#/definitions/LogPublishingOptions" + }, + "MaxUnits": { + "description": "The maximum pipeline capacity, in Ingestion OpenSearch Compute Units (OCUs).", + "maximum": 384, + "minimum": 1, + "type": "integer" + }, + "MinUnits": { + "description": "The minimum pipeline capacity, in Ingestion OpenSearch Compute Units (OCUs).", + "maximum": 384, + "minimum": 1, + "type": "integer" + }, + "PipelineArn": { + "description": "The Amazon Resource Name (ARN) of the pipeline.", + "maxLength": 76, + "minLength": 46, + "pattern": "^arn:(aws|aws\\-cn|aws\\-us\\-gov|aws\\-iso|aws\\-iso\\-b):osis:.+:pipeline\\/.+$", + "type": "string" + }, + "PipelineConfigurationBody": { + "description": "The Data Prepper pipeline configuration.", + "maxLength": 24000, + "minLength": 1, + "type": "string" + }, + "PipelineName": { + "description": "Name of the OpenSearch Ingestion Service pipeline to create. Pipeline names are unique across the pipelines owned by an account within an AWS Region.", + "maxLength": 28, + "minLength": 3, + "pattern": "[a-z][a-z0-9\\-]+", + "type": "string" + }, + "Tags": { + "description": "An array of key-value pairs to apply to this resource.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + }, + "VpcEndpointService": { + "description": "The VPC endpoint service name for the pipeline.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "VpcEndpoints": { + "description": "The VPC interface endpoints that have access to the pipeline.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/VpcEndpoint" + }, + "type": "array" + }, + "VpcOptions": { + "$ref": "#/definitions/VpcOptions" + } + }, + "readOnlyProperties": [ + "/properties/PipelineArn", + "/properties/IngestEndpointUrls", + "/properties/VpcEndpoints", + "/properties/VpcEndpointService" + ], + "required": [ + "MaxUnits", + "MinUnits", + "PipelineConfigurationBody", + "PipelineName" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-osis.git", + "tagging": { + "cloudFormationSystemTags": true, + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::OSIS::Pipeline", + "writeOnlyProperties": [ + "/properties/VpcOptions" + ] +} diff --git a/src/schema/aws-panorama-applicationinstance.json b/src/schema/aws-panorama-applicationinstance.json new file mode 100644 index 00000000..baa5a0c8 --- /dev/null +++ b/src/schema/aws-panorama-applicationinstance.json @@ -0,0 +1,331 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name", + "/properties/Description", + "/properties/ManifestPayload", + "/properties/ManifestOverridesPayload", + "/properties/RuntimeRoleArn", + "/properties/DefaultRuntimeContextDevice", + "/properties/ApplicationInstanceIdToReplace" + ], + "definitions": { + "ApplicationInstanceArn": { + "maxLength": 255, + "minLength": 1, + "type": "string" + }, + "ApplicationInstanceHealthStatus": { + "enum": [ + "RUNNING", + "ERROR", + "NOT_AVAILABLE" + ], + "type": "string" + }, + "ApplicationInstanceId": { + "maxLength": 255, + "minLength": 1, + "pattern": "^[a-zA-Z0-9\\-\\_]+$", + "type": "string" + }, + "ApplicationInstanceStatus": { + "enum": [ + "DEPLOYMENT_PENDING", + "DEPLOYMENT_REQUESTED", + "DEPLOYMENT_IN_PROGRESS", + "DEPLOYMENT_ERROR", + "DEPLOYMENT_SUCCEEDED", + "REMOVAL_PENDING", + "REMOVAL_REQUESTED", + "REMOVAL_IN_PROGRESS", + "REMOVAL_FAILED", + "REMOVAL_SUCCEEDED" + ], + "type": "string" + }, + "ApplicationInstanceStatusDescription": { + "maxLength": 255, + "minLength": 1, + "type": "string" + }, + "DefaultRuntimeContextDevice": { + "maxLength": 255, + "minLength": 1, + "pattern": "^[a-zA-Z0-9\\-\\_]+$", + "type": "string" + }, + "Description": { + "maxLength": 255, + "minLength": 0, + "pattern": "^.*$", + "type": "string" + }, + "DeviceId": { + "maxLength": 255, + "minLength": 1, + "pattern": "^[a-zA-Z0-9\\-\\_]+$", + "type": "string" + }, + "DeviceName": { + "maxLength": 255, + "minLength": 1, + "pattern": "^[a-zA-Z0-9\\-\\_]+$", + "type": "string" + }, + "ManifestOverridesPayload": { + "additionalProperties": false, + "description": "Parameter overrides for an application instance. This is a JSON document that has a single key (``PayloadData``) where the value is an escaped string representation of the overrides document.", + "properties": { + "PayloadData": { + "$ref": "#/definitions/ManifestOverridesPayloadData", + "description": "The overrides document." + } + }, + "type": "object" + }, + "ManifestOverridesPayloadData": { + "maxLength": 51200, + "minLength": 0, + "pattern": "^.+$", + "type": "string" + }, + "ManifestPayload": { + "additionalProperties": false, + "description": "A application verion's manifest file. This is a JSON document that has a single key (``PayloadData``) where the value is an escaped string representation of the application manifest (``graph.json``). This file is located in the ``graphs`` folder in your application source.", + "properties": { + "PayloadData": { + "$ref": "#/definitions/ManifestPayloadData", + "description": "The application manifest." + } + }, + "type": "object" + }, + "ManifestPayloadData": { + "maxLength": 51200, + "minLength": 1, + "pattern": "^.+$", + "type": "string" + }, + "Name": { + "maxLength": 255, + "minLength": 1, + "pattern": "^[a-zA-Z0-9\\-\\_]+$", + "type": "string" + }, + "RuntimeRoleArn": { + "maxLength": 255, + "minLength": 1, + "pattern": "^arn:[a-z0-9][-.a-z0-9]{0,62}:iam::[0-9]{12}:role/.+$", + "type": "string" + }, + "StatusFilter": { + "enum": [ + "DEPLOYMENT_SUCCEEDED", + "DEPLOYMENT_ERROR", + "REMOVAL_SUCCEEDED", + "REMOVAL_FAILED", + "PROCESSING_DEPLOYMENT", + "PROCESSING_REMOVAL" + ], + "type": "string" + }, + "Tag": { + "additionalProperties": false, + "description": "", + "properties": { + "Key": { + "description": "", + "maxLength": 128, + "minLength": 1, + "pattern": "^.+$", + "type": "string" + }, + "Value": { + "description": "", + "maxLength": 256, + "minLength": 0, + "pattern": "^.+$", + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "TagList": { + "description": "List of tags", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + }, + "Timestamp": { + "type": "integer" + } + }, + "description": "Creates an application instance and deploys it to a device.", + "handlers": { + "create": { + "permissions": [ + "panorama:CreateApplicationInstance", + "panorama:ListTagsForResource", + "panorama:TagResource", + "panorama:DescribeApplicationInstance", + "panorama:DescribeApplicationInstanceDetails", + "iam:PassRole", + "s3:ListBucket", + "s3:PutObject", + "s3:GetObject", + "s3:GetObjectVersion" + ] + }, + "delete": { + "permissions": [ + "panorama:RemoveApplicationInstance", + "panorama:DescribeApplicationInstance", + "panorama:DescribeApplicationInstanceDetails", + "s3:DeleteObject", + "s3:DeleteObjectVersion", + "s3:DeleteObjectVersionTagging", + "s3:ListObjects", + "s3:GetObject", + "s3:GetObjectVersion" + ] + }, + "list": { + "permissions": [ + "panorama:ListApplicationInstances", + "s3:ListBucket", + "s3:GetObject", + "s3:GetObjectVersion" + ] + }, + "read": { + "permissions": [ + "panorama:DescribeApplicationInstance", + "panorama:DescribeApplicationInstanceDetails", + "panorama:ListTagsForResource", + "s3:ListObjects", + "s3:GetObject", + "s3:GetObjectVersion" + ] + }, + "update": { + "permissions": [ + "panorama:ListTagsForResource", + "panorama:TagResource", + "panorama:UntagResource", + "panorama:DescribeApplicationInstance", + "panorama:DescribeApplicationInstanceDetails", + "s3:ListObjects", + "s3:GetObject", + "s3:GetObjectVersion" + ] + } + }, + "primaryIdentifier": [ + "/properties/ApplicationInstanceId" + ], + "properties": { + "ApplicationInstanceId": { + "$ref": "#/definitions/ApplicationInstanceId", + "description": "" + }, + "ApplicationInstanceIdToReplace": { + "$ref": "#/definitions/ApplicationInstanceId", + "description": "The ID of an application instance to replace with the new instance." + }, + "Arn": { + "$ref": "#/definitions/ApplicationInstanceArn", + "description": "" + }, + "CreatedTime": { + "$ref": "#/definitions/Timestamp", + "description": "" + }, + "DefaultRuntimeContextDevice": { + "$ref": "#/definitions/DefaultRuntimeContextDevice", + "description": "The device's ID." + }, + "DefaultRuntimeContextDeviceName": { + "$ref": "#/definitions/DeviceName", + "description": "" + }, + "Description": { + "$ref": "#/definitions/Description", + "description": "A description for the application instance." + }, + "HealthStatus": { + "$ref": "#/definitions/ApplicationInstanceHealthStatus", + "description": "" + }, + "LastUpdatedTime": { + "$ref": "#/definitions/Timestamp", + "description": "" + }, + "ManifestOverridesPayload": { + "$ref": "#/definitions/ManifestOverridesPayload", + "description": "Setting overrides for the application manifest." + }, + "ManifestPayload": { + "$ref": "#/definitions/ManifestPayload", + "description": "The application's manifest document." + }, + "Name": { + "$ref": "#/definitions/Name", + "description": "A name for the application instance." + }, + "RuntimeRoleArn": { + "$ref": "#/definitions/RuntimeRoleArn", + "description": "The ARN of a runtime role for the application instance." + }, + "Status": { + "$ref": "#/definitions/ApplicationInstanceStatus", + "description": "" + }, + "StatusDescription": { + "$ref": "#/definitions/ApplicationInstanceStatusDescription", + "description": "" + }, + "Tags": { + "$ref": "#/definitions/TagList", + "description": "Tags for the application instance." + } + }, + "readOnlyProperties": [ + "/properties/ApplicationInstanceId", + "/properties/Arn", + "/properties/Status", + "/properties/HealthStatus", + "/properties/StatusDescription", + "/properties/DefaultRuntimeContextDeviceName", + "/properties/CreatedTime", + "/properties/LastUpdatedTime" + ], + "required": [ + "ManifestPayload", + "DefaultRuntimeContextDevice" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "panorama:ListTagsForResource", + "panorama:TagResource", + "panorama:UntagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::Panorama::ApplicationInstance", + "writeOnlyProperties": [ + "/properties/ApplicationInstanceIdToReplace" + ] +} diff --git a/src/schema/aws-panorama-package.json b/src/schema/aws-panorama-package.json new file mode 100644 index 00000000..12387b80 --- /dev/null +++ b/src/schema/aws-panorama-package.json @@ -0,0 +1,202 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/PackageName" + ], + "definitions": { + "NodePackageArn": { + "maxLength": 255, + "minLength": 1, + "type": "string" + }, + "NodePackageId": { + "maxLength": 255, + "minLength": 1, + "pattern": "^[a-zA-Z0-9\\-\\_\\/]+$", + "type": "string" + }, + "NodePackageName": { + "maxLength": 128, + "minLength": 1, + "pattern": "^[a-zA-Z0-9\\-\\_]+$", + "type": "string" + }, + "StorageLocation": { + "additionalProperties": false, + "description": "A storage location.", + "properties": { + "BinaryPrefixLocation": { + "description": "The location's binary prefix.", + "type": "string" + }, + "Bucket": { + "description": "The location's bucket.", + "type": "string" + }, + "GeneratedPrefixLocation": { + "description": "The location's generated prefix.", + "type": "string" + }, + "ManifestPrefixLocation": { + "description": "The location's manifest prefix.", + "type": "string" + }, + "RepoPrefixLocation": { + "description": "The location's repo prefix.", + "type": "string" + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "description": "", + "properties": { + "Key": { + "description": "", + "maxLength": 128, + "minLength": 1, + "pattern": "^.+$", + "type": "string" + }, + "Value": { + "description": "", + "maxLength": 256, + "minLength": 0, + "pattern": "^.+$", + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "TagList": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + }, + "Timestamp": { + "type": "integer" + } + }, + "description": "Creates a package and storage location in an Amazon S3 access point.", + "handlers": { + "create": { + "permissions": [ + "panorama:CreatePackage", + "panorama:ListTagsForResource", + "panorama:TagResource", + "panorama:DescribePackage", + "s3:ListBucket", + "s3:PutObject", + "s3:GetObject", + "s3:GetObjectVersion" + ] + }, + "delete": { + "permissions": [ + "panorama:DeletePackage", + "panorama:DescribePackage", + "s3:DeleteObject", + "s3:DeleteObjectVersion", + "s3:DeleteObjectVersionTagging", + "s3:ListObjects", + "s3:ListObjectsV2", + "s3:ListBucket", + "s3:GetObject", + "s3:GetObjectVersion" + ] + }, + "list": { + "permissions": [ + "panorama:ListPackages", + "s3:ListBucket", + "s3:GetObject", + "s3:GetObjectVersion" + ] + }, + "read": { + "permissions": [ + "panorama:DescribePackage", + "panorama:ListTagsForResource", + "s3:ListBucket", + "s3:GetObject", + "s3:GetObjectVersion" + ] + }, + "update": { + "permissions": [ + "panorama:DescribePackage", + "panorama:ListTagsForResource", + "panorama:TagResource", + "panorama:UntagResource", + "s3:PutObject", + "s3:ListBucket", + "s3:GetObject", + "s3:GetObjectVersion" + ] + } + }, + "primaryIdentifier": [ + "/properties/PackageId" + ], + "properties": { + "Arn": { + "$ref": "#/definitions/NodePackageArn", + "description": "" + }, + "CreatedTime": { + "$ref": "#/definitions/Timestamp", + "description": "" + }, + "PackageId": { + "$ref": "#/definitions/NodePackageId", + "description": "" + }, + "PackageName": { + "$ref": "#/definitions/NodePackageName", + "description": "A name for the package." + }, + "StorageLocation": { + "$ref": "#/definitions/StorageLocation", + "description": "A storage location." + }, + "Tags": { + "$ref": "#/definitions/TagList", + "description": "Tags for the package." + } + }, + "readOnlyProperties": [ + "/properties/PackageId", + "/properties/Arn", + "/properties/CreatedTime", + "/properties/StorageLocation/Bucket", + "/properties/StorageLocation/RepoPrefixLocation", + "/properties/StorageLocation/GeneratedPrefixLocation", + "/properties/StorageLocation/BinaryPrefixLocation", + "/properties/StorageLocation/ManifestPrefixLocation" + ], + "required": [ + "PackageName" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "panorama:ListTagsForResource", + "panorama:TagResource", + "panorama:UntagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::Panorama::Package" +} diff --git a/src/schema/aws-panorama-packageversion.json b/src/schema/aws-panorama-packageversion.json new file mode 100644 index 00000000..47bc8ca4 --- /dev/null +++ b/src/schema/aws-panorama-packageversion.json @@ -0,0 +1,179 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/OwnerAccount", + "/properties/PackageId", + "/properties/PackageVersion", + "/properties/PatchVersion" + ], + "definitions": { + "NodePackageArn": { + "maxLength": 255, + "minLength": 1, + "type": "string" + }, + "NodePackageId": { + "maxLength": 255, + "minLength": 1, + "pattern": "^[a-zA-Z0-9\\-\\_\\/]+$", + "type": "string" + }, + "NodePackageName": { + "maxLength": 128, + "minLength": 1, + "pattern": "^[a-zA-Z0-9\\-\\_]+$", + "type": "string" + }, + "NodePackagePatchVersion": { + "maxLength": 255, + "minLength": 1, + "pattern": "^[a-z0-9]+$", + "type": "string" + }, + "NodePackageVersion": { + "maxLength": 255, + "minLength": 1, + "pattern": "^([0-9]+)\\.([0-9]+)$", + "type": "string" + }, + "PackageOwnerAccount": { + "maxLength": 12, + "minLength": 1, + "pattern": "^[0-9a-z\\_]+$", + "type": "string" + }, + "PackageVersionStatus": { + "enum": [ + "REGISTER_PENDING", + "REGISTER_COMPLETED", + "FAILED", + "DELETING" + ], + "type": "string" + }, + "PackageVersionStatusDescription": { + "maxLength": 255, + "minLength": 1, + "type": "string" + }, + "TimeStamp": { + "type": "integer" + } + }, + "description": "Registers a package version.", + "handlers": { + "create": { + "permissions": [ + "panorama:RegisterPackageVersion", + "panorama:DescribePackageVersion", + "s3:ListBucket", + "s3:PutObject", + "s3:GetObject", + "s3:GetObjectVersion" + ] + }, + "delete": { + "permissions": [ + "panorama:DeregisterPackageVersion", + "panorama:DescribePackageVersion", + "s3:DeleteObject", + "s3:DeleteObjectVersion", + "s3:DeleteObjectVersionTagging", + "s3:ListBucket", + "s3:GetObject", + "s3:GetObjectVersion" + ] + }, + "read": { + "permissions": [ + "panorama:DescribePackageVersion", + "s3:ListBucket", + "s3:GetObject", + "s3:GetObjectVersion" + ] + }, + "update": { + "permissions": [ + "panorama:DescribePackageVersion", + "panorama:RegisterPackageVersion", + "s3:ListBucket", + "s3:PutObject", + "s3:GetObject", + "s3:GetObjectVersion" + ] + } + }, + "primaryIdentifier": [ + "/properties/PackageId", + "/properties/PackageVersion", + "/properties/PatchVersion" + ], + "properties": { + "IsLatestPatch": { + "description": "", + "type": "boolean" + }, + "MarkLatest": { + "description": "Whether to mark the new version as the latest version.", + "type": "boolean" + }, + "OwnerAccount": { + "$ref": "#/definitions/PackageOwnerAccount", + "description": "An owner account." + }, + "PackageArn": { + "$ref": "#/definitions/NodePackageArn", + "description": "" + }, + "PackageId": { + "$ref": "#/definitions/NodePackageId", + "description": "A package ID." + }, + "PackageName": { + "$ref": "#/definitions/NodePackageName", + "description": "" + }, + "PackageVersion": { + "$ref": "#/definitions/NodePackageVersion", + "description": "A package version." + }, + "PatchVersion": { + "$ref": "#/definitions/NodePackagePatchVersion", + "description": "A patch version." + }, + "RegisteredTime": { + "$ref": "#/definitions/TimeStamp", + "description": "" + }, + "Status": { + "$ref": "#/definitions/PackageVersionStatus", + "description": "" + }, + "StatusDescription": { + "$ref": "#/definitions/PackageVersionStatusDescription", + "description": "" + }, + "UpdatedLatestPatchVersion": { + "$ref": "#/definitions/NodePackagePatchVersion", + "description": "If the version was marked latest, the new version to maker as latest." + } + }, + "readOnlyProperties": [ + "/properties/PackageName", + "/properties/PackageArn", + "/properties/Status", + "/properties/StatusDescription", + "/properties/IsLatestPatch", + "/properties/RegisteredTime" + ], + "required": [ + "PackageId", + "PackageVersion", + "PatchVersion" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-panorama.git", + "typeName": "AWS::Panorama::PackageVersion", + "writeOnlyProperties": [ + "/properties/UpdatedLatestPatchVersion" + ] +} diff --git a/src/schema/aws-paymentcryptography-alias.json b/src/schema/aws-paymentcryptography-alias.json new file mode 100644 index 00000000..a1bef272 --- /dev/null +++ b/src/schema/aws-paymentcryptography-alias.json @@ -0,0 +1,58 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/AliasName" + ], + "description": "Definition of AWS::PaymentCryptography::Alias Resource Type", + "handlers": { + "create": { + "permissions": [ + "payment-cryptography:CreateAlias" + ] + }, + "delete": { + "permissions": [ + "payment-cryptography:DeleteAlias" + ] + }, + "list": { + "permissions": [ + "payment-cryptography:ListAliases" + ] + }, + "read": { + "permissions": [ + "payment-cryptography:GetAlias" + ] + }, + "update": { + "permissions": [ + "payment-cryptography:UpdateAlias" + ] + } + }, + "primaryIdentifier": [ + "/properties/AliasName" + ], + "properties": { + "AliasName": { + "maxLength": 256, + "minLength": 7, + "pattern": "^alias/[a-zA-Z0-9/_-]+$", + "type": "string" + }, + "KeyArn": { + "maxLength": 150, + "minLength": 70, + "pattern": "^arn:aws:payment-cryptography:[a-z]{2}-[a-z]{1,16}-[0-9]+:[0-9]{12}:key/[0-9a-zA-Z]{16,64}$", + "type": "string" + } + }, + "required": [ + "AliasName" + ], + "tagging": { + "taggable": false + }, + "typeName": "AWS::PaymentCryptography::Alias" +} diff --git a/src/schema/aws-paymentcryptography-key.json b/src/schema/aws-paymentcryptography-key.json new file mode 100644 index 00000000..82a91584 --- /dev/null +++ b/src/schema/aws-paymentcryptography-key.json @@ -0,0 +1,298 @@ +{ + "additionalProperties": false, + "definitions": { + "DeriveKeyUsage": { + "enum": [ + "TR31_B0_BASE_DERIVATION_KEY", + "TR31_C0_CARD_VERIFICATION_KEY", + "TR31_D0_SYMMETRIC_DATA_ENCRYPTION_KEY", + "TR31_E0_EMV_MKEY_APP_CRYPTOGRAMS", + "TR31_E1_EMV_MKEY_CONFIDENTIALITY", + "TR31_E2_EMV_MKEY_INTEGRITY", + "TR31_E4_EMV_MKEY_DYNAMIC_NUMBERS", + "TR31_E5_EMV_MKEY_CARD_PERSONALIZATION", + "TR31_E6_EMV_MKEY_OTHER", + "TR31_K0_KEY_ENCRYPTION_KEY", + "TR31_K1_KEY_BLOCK_PROTECTION_KEY", + "TR31_M3_ISO_9797_3_MAC_KEY", + "TR31_M1_ISO_9797_1_MAC_KEY", + "TR31_M6_ISO_9797_5_CMAC_KEY", + "TR31_M7_HMAC_KEY", + "TR31_P0_PIN_ENCRYPTION_KEY", + "TR31_P1_PIN_GENERATION_KEY", + "TR31_V1_IBM3624_PIN_VERIFICATION_KEY", + "TR31_V2_VISA_PIN_VERIFICATION_KEY" + ], + "type": "string" + }, + "KeyAlgorithm": { + "enum": [ + "TDES_2KEY", + "TDES_3KEY", + "AES_128", + "AES_192", + "AES_256", + "HMAC_SHA256", + "HMAC_SHA384", + "HMAC_SHA512", + "HMAC_SHA224", + "RSA_2048", + "RSA_3072", + "RSA_4096", + "ECC_NIST_P256", + "ECC_NIST_P384", + "ECC_NIST_P521" + ], + "type": "string" + }, + "KeyAttributes": { + "additionalProperties": false, + "properties": { + "KeyAlgorithm": { + "$ref": "#/definitions/KeyAlgorithm" + }, + "KeyClass": { + "$ref": "#/definitions/KeyClass" + }, + "KeyModesOfUse": { + "$ref": "#/definitions/KeyModesOfUse" + }, + "KeyUsage": { + "$ref": "#/definitions/KeyUsage" + } + }, + "required": [ + "KeyAlgorithm", + "KeyClass", + "KeyModesOfUse", + "KeyUsage" + ], + "type": "object" + }, + "KeyCheckValueAlgorithm": { + "enum": [ + "CMAC", + "ANSI_X9_24", + "HMAC" + ], + "type": "string" + }, + "KeyClass": { + "enum": [ + "SYMMETRIC_KEY", + "ASYMMETRIC_KEY_PAIR", + "PRIVATE_KEY", + "PUBLIC_KEY" + ], + "type": "string" + }, + "KeyModesOfUse": { + "additionalProperties": false, + "properties": { + "Decrypt": { + "default": false, + "type": "boolean" + }, + "DeriveKey": { + "default": false, + "type": "boolean" + }, + "Encrypt": { + "default": false, + "type": "boolean" + }, + "Generate": { + "default": false, + "type": "boolean" + }, + "NoRestrictions": { + "default": false, + "type": "boolean" + }, + "Sign": { + "default": false, + "type": "boolean" + }, + "Unwrap": { + "default": false, + "type": "boolean" + }, + "Verify": { + "default": false, + "type": "boolean" + }, + "Wrap": { + "default": false, + "type": "boolean" + } + }, + "type": "object" + }, + "KeyOrigin": { + "description": "Defines the source of a key", + "enum": [ + "EXTERNAL", + "AWS_PAYMENT_CRYPTOGRAPHY" + ], + "type": "string" + }, + "KeyState": { + "description": "Defines the state of a key", + "enum": [ + "CREATE_IN_PROGRESS", + "CREATE_COMPLETE", + "DELETE_PENDING", + "DELETE_COMPLETE" + ], + "type": "string" + }, + "KeyUsage": { + "enum": [ + "TR31_B0_BASE_DERIVATION_KEY", + "TR31_C0_CARD_VERIFICATION_KEY", + "TR31_D0_SYMMETRIC_DATA_ENCRYPTION_KEY", + "TR31_D1_ASYMMETRIC_KEY_FOR_DATA_ENCRYPTION", + "TR31_E0_EMV_MKEY_APP_CRYPTOGRAMS", + "TR31_E1_EMV_MKEY_CONFIDENTIALITY", + "TR31_E2_EMV_MKEY_INTEGRITY", + "TR31_E4_EMV_MKEY_DYNAMIC_NUMBERS", + "TR31_E5_EMV_MKEY_CARD_PERSONALIZATION", + "TR31_E6_EMV_MKEY_OTHER", + "TR31_K0_KEY_ENCRYPTION_KEY", + "TR31_K1_KEY_BLOCK_PROTECTION_KEY", + "TR31_K3_ASYMMETRIC_KEY_FOR_KEY_AGREEMENT", + "TR31_M3_ISO_9797_3_MAC_KEY", + "TR31_M1_ISO_9797_1_MAC_KEY", + "TR31_M6_ISO_9797_5_CMAC_KEY", + "TR31_M7_HMAC_KEY", + "TR31_P0_PIN_ENCRYPTION_KEY", + "TR31_P1_PIN_GENERATION_KEY", + "TR31_S0_ASYMMETRIC_KEY_FOR_DIGITAL_SIGNATURE", + "TR31_V1_IBM3624_PIN_VERIFICATION_KEY", + "TR31_V2_VISA_PIN_VERIFICATION_KEY", + "TR31_K2_TR34_ASYMMETRIC_KEY" + ], + "type": "string" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "maxLength": 256, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "Definition of AWS::PaymentCryptography::Key Resource Type", + "handlers": { + "create": { + "permissions": [ + "payment-cryptography:GetKey", + "payment-cryptography:CreateKey", + "payment-cryptography:TagResource" + ] + }, + "delete": { + "permissions": [ + "payment-cryptography:GetKey", + "payment-cryptography:DeleteKey" + ] + }, + "list": { + "permissions": [ + "payment-cryptography:ListKeys" + ] + }, + "read": { + "permissions": [ + "payment-cryptography:GetKey", + "payment-cryptography:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "payment-cryptography:GetKey", + "payment-cryptography:ListTagsForResource", + "payment-cryptography:TagResource", + "payment-cryptography:UntagResource", + "payment-cryptography:StartKeyUsage", + "payment-cryptography:StopKeyUsage" + ] + } + }, + "primaryIdentifier": [ + "/properties/KeyIdentifier" + ], + "properties": { + "DeriveKeyUsage": { + "$ref": "#/definitions/DeriveKeyUsage" + }, + "Enabled": { + "type": "boolean" + }, + "Exportable": { + "type": "boolean" + }, + "KeyAttributes": { + "$ref": "#/definitions/KeyAttributes" + }, + "KeyCheckValueAlgorithm": { + "$ref": "#/definitions/KeyCheckValueAlgorithm" + }, + "KeyIdentifier": { + "maxLength": 322, + "minLength": 7, + "pattern": "^arn:aws:payment-cryptography:[a-z]{2}-[a-z]{1,16}-[0-9]+:[0-9]{12}:(key/[0-9a-zA-Z]{16,64}|alias/[a-zA-Z0-9/_-]+)$|^alias/[a-zA-Z0-9/_-]+$", + "type": "string" + }, + "KeyOrigin": { + "$ref": "#/definitions/KeyOrigin" + }, + "KeyState": { + "$ref": "#/definitions/KeyState" + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + } + }, + "readOnlyProperties": [ + "/properties/KeyIdentifier", + "/properties/KeyOrigin", + "/properties/KeyState" + ], + "required": [ + "Exportable", + "KeyAttributes" + ], + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "payment-cryptography:ListTagsForResource", + "payment-cryptography:TagResource", + "payment-cryptography:UntagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::PaymentCryptography::Key" +} diff --git a/src/schema/aws-pcaconnectorad-connector.json b/src/schema/aws-pcaconnectorad-connector.json new file mode 100644 index 00000000..125afed5 --- /dev/null +++ b/src/schema/aws-pcaconnectorad-connector.json @@ -0,0 +1,144 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/CertificateAuthorityArn", + "/properties/DirectoryId", + "/properties/VpcInformation" + ], + "definitions": { + "Tags": { + "additionalProperties": false, + "patternProperties": { + ".+": { + "type": "string" + } + }, + "type": "object" + }, + "Unit": { + "additionalProperties": false, + "type": "object" + }, + "VpcInformation": { + "additionalProperties": false, + "properties": { + "IpAddressType": { + "enum": [ + "IPV4", + "DUALSTACK" + ], + "type": "string" + }, + "SecurityGroupIds": { + "items": { + "maxLength": 20, + "minLength": 11, + "pattern": "^(?:sg-[0-9a-f]{8}|sg-[0-9a-f]{17})$", + "type": "string" + }, + "maxItems": 5, + "minItems": 1, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "SecurityGroupIds" + ], + "type": "object" + } + }, + "description": "Represents a Connector that connects AWS PrivateCA and your directory", + "handlers": { + "create": { + "permissions": [ + "acm-pca:DescribeCertificateAuthority", + "acm-pca:GetCertificateAuthorityCertificate", + "acm-pca:GetCertificate", + "acm-pca:IssueCertificate", + "ds:DescribeDirectories", + "ec2:CreateTags", + "ec2:CreateVpcEndpoint", + "ec2:DescribeVpcEndpoints", + "pca-connector-ad:CreateConnector", + "pca-connector-ad:GetConnector", + "pca-connector-ad:TagResource" + ] + }, + "delete": { + "permissions": [ + "ec2:DeleteVpcEndpoints", + "ec2:DescribeVpcEndpoints", + "pca-connector-ad:GetConnector", + "pca-connector-ad:DeleteConnector", + "pca-connector-ad:UntagResource" + ] + }, + "list": { + "permissions": [ + "pca-connector-ad:ListConnectors" + ] + }, + "read": { + "permissions": [ + "pca-connector-ad:ListTagsForResource", + "pca-connector-ad:GetConnector" + ] + }, + "update": { + "permissions": [ + "pca-connector-ad:ListTagsForResource", + "pca-connector-ad:TagResource", + "pca-connector-ad:UntagResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/ConnectorArn" + ], + "properties": { + "CertificateAuthorityArn": { + "maxLength": 200, + "minLength": 5, + "pattern": "^arn:[\\w-]+:acm-pca:[\\w-]+:[0-9]+:certificate-authority\\/[0-9a-f]{8}(-[0-9a-f]{4}){3}-[0-9a-f]{12}$", + "type": "string" + }, + "ConnectorArn": { + "maxLength": 200, + "minLength": 5, + "pattern": "^arn:[\\w-]+:pca-connector-ad:[\\w-]+:[0-9]+:connector\\/[0-9a-f]{8}(-[0-9a-f]{4}){3}-[0-9a-f]{12}$", + "type": "string" + }, + "DirectoryId": { + "pattern": "^d-[0-9a-f]{10}$", + "type": "string" + }, + "Tags": { + "$ref": "#/definitions/Tags" + }, + "VpcInformation": { + "$ref": "#/definitions/VpcInformation" + } + }, + "readOnlyProperties": [ + "/properties/ConnectorArn" + ], + "required": [ + "CertificateAuthorityArn", + "DirectoryId", + "VpcInformation" + ], + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "pca-connector-ad:ListTagsForResource", + "pca-connector-ad:TagResource", + "pca-connector-ad:UntagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::PCAConnectorAD::Connector" +} diff --git a/src/schema/aws-pcaconnectorad-directoryregistration.json b/src/schema/aws-pcaconnectorad-directoryregistration.json new file mode 100644 index 00000000..a477c410 --- /dev/null +++ b/src/schema/aws-pcaconnectorad-directoryregistration.json @@ -0,0 +1,94 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/DirectoryId" + ], + "definitions": { + "Tags": { + "additionalProperties": false, + "patternProperties": { + ".+": { + "type": "string" + } + }, + "type": "object" + } + }, + "description": "Definition of AWS::PCAConnectorAD::DirectoryRegistration Resource Type", + "handlers": { + "create": { + "permissions": [ + "ds:AuthorizeApplication", + "ds:DescribeDirectories", + "pca-connector-ad:GetDirectoryRegistration", + "pca-connector-ad:CreateDirectoryRegistration", + "pca-connector-ad:TagResource" + ] + }, + "delete": { + "permissions": [ + "ds:DescribeDirectories", + "ds:UnauthorizeApplication", + "ds:UpdateAuthorizedApplication", + "pca-connector-ad:GetDirectoryRegistration", + "pca-connector-ad:DeleteDirectoryRegistration", + "pca-connector-ad:UntagResource" + ] + }, + "list": { + "permissions": [ + "pca-connector-ad:ListDirectoryRegistrations" + ] + }, + "read": { + "permissions": [ + "pca-connector-ad:GetDirectoryRegistration", + "pca-connector-ad:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "pca-connector-ad:ListTagsForResource", + "pca-connector-ad:TagResource", + "pca-connector-ad:UntagResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/DirectoryRegistrationArn" + ], + "properties": { + "DirectoryId": { + "pattern": "^d-[0-9a-f]{10}$", + "type": "string" + }, + "DirectoryRegistrationArn": { + "maxLength": 200, + "minLength": 5, + "pattern": "^arn:[\\w-]+:pca-connector-ad:[\\w-]+:[0-9]+:directory-registration(\\/[\\w-]+)$", + "type": "string" + }, + "Tags": { + "$ref": "#/definitions/Tags" + } + }, + "readOnlyProperties": [ + "/properties/DirectoryRegistrationArn" + ], + "required": [ + "DirectoryId" + ], + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "pca-connector-ad:ListTagsForResource", + "pca-connector-ad:TagResource", + "pca-connector-ad:UntagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::PCAConnectorAD::DirectoryRegistration" +} diff --git a/src/schema/aws-pcaconnectorad-serviceprincipalname.json b/src/schema/aws-pcaconnectorad-serviceprincipalname.json new file mode 100644 index 00000000..8ea9757c --- /dev/null +++ b/src/schema/aws-pcaconnectorad-serviceprincipalname.json @@ -0,0 +1,70 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ConnectorArn", + "/properties/DirectoryRegistrationArn" + ], + "description": "Definition of AWS::PCAConnectorAD::ServicePrincipalName Resource Type", + "handlers": { + "create": { + "permissions": [ + "ds:UpdateAuthorizedApplication", + "pca-connector-ad:GetServicePrincipalName", + "pca-connector-ad:CreateServicePrincipalName" + ] + }, + "delete": { + "permissions": [ + "ds:UpdateAuthorizedApplication", + "pca-connector-ad:GetServicePrincipalName", + "pca-connector-ad:DeleteServicePrincipalName" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "DirectoryRegistrationArn": { + "$ref": "resource-schema.json#/properties/DirectoryRegistrationArn" + } + }, + "required": [ + "DirectoryRegistrationArn" + ] + }, + "permissions": [ + "pca-connector-ad:ListServicePrincipalNames" + ] + }, + "read": { + "permissions": [ + "pca-connector-ad:GetServicePrincipalName" + ] + } + }, + "primaryIdentifier": [ + "/properties/ConnectorArn", + "/properties/DirectoryRegistrationArn" + ], + "properties": { + "ConnectorArn": { + "maxLength": 200, + "minLength": 5, + "pattern": "^arn:[\\w-]+:pca-connector-ad:[\\w-]+:[0-9]+:connector(\\/[\\w-]+)$", + "type": "string" + }, + "DirectoryRegistrationArn": { + "maxLength": 200, + "minLength": 5, + "pattern": "^arn:[\\w-]+:pca-connector-ad:[\\w-]+:[0-9]+:directory-registration(\\/[\\w-]+)$", + "type": "string" + } + }, + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-pcaconnectorad", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::PCAConnectorAD::ServicePrincipalName" +} diff --git a/src/schema/aws-pcaconnectorad-template.json b/src/schema/aws-pcaconnectorad-template.json new file mode 100644 index 00000000..43b778e5 --- /dev/null +++ b/src/schema/aws-pcaconnectorad-template.json @@ -0,0 +1,1040 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ConnectorArn", + "/properties/Name" + ], + "definitions": { + "ApplicationPolicies": { + "additionalProperties": false, + "properties": { + "Critical": { + "type": "boolean" + }, + "Policies": { + "items": { + "$ref": "#/definitions/ApplicationPolicy" + }, + "maxItems": 100, + "minItems": 1, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "Policies" + ], + "type": "object" + }, + "ApplicationPolicy": { + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "PolicyType": { + "$ref": "#/definitions/ApplicationPolicyType" + } + }, + "required": [ + "PolicyType" + ], + "title": "PolicyType", + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "PolicyObjectIdentifier": { + "maxLength": 64, + "minLength": 1, + "pattern": "^([0-2])\\.([0-9]|([0-3][0-9]))(\\.([0-9]+)){0,126}$", + "type": "string" + } + }, + "required": [ + "PolicyObjectIdentifier" + ], + "title": "PolicyObjectIdentifier", + "type": "object" + } + ] + }, + "ApplicationPolicyType": { + "enum": [ + "ALL_APPLICATION_POLICIES", + "ANY_PURPOSE", + "ATTESTATION_IDENTITY_KEY_CERTIFICATE", + "CERTIFICATE_REQUEST_AGENT", + "CLIENT_AUTHENTICATION", + "CODE_SIGNING", + "CTL_USAGE", + "DIGITAL_RIGHTS", + "DIRECTORY_SERVICE_EMAIL_REPLICATION", + "DISALLOWED_LIST", + "DNS_SERVER_TRUST", + "DOCUMENT_ENCRYPTION", + "DOCUMENT_SIGNING", + "DYNAMIC_CODE_GENERATOR", + "EARLY_LAUNCH_ANTIMALWARE_DRIVER", + "EMBEDDED_WINDOWS_SYSTEM_COMPONENT_VERIFICATION", + "ENCLAVE", + "ENCRYPTING_FILE_SYSTEM", + "ENDORSEMENT_KEY_CERTIFICATE", + "FILE_RECOVERY", + "HAL_EXTENSION", + "IP_SECURITY_END_SYSTEM", + "IP_SECURITY_IKE_INTERMEDIATE", + "IP_SECURITY_TUNNEL_TERMINATION", + "IP_SECURITY_USER", + "ISOLATED_USER_MODE", + "KDC_AUTHENTICATION", + "KERNEL_MODE_CODE_SIGNING", + "KEY_PACK_LICENSES", + "KEY_RECOVERY", + "KEY_RECOVERY_AGENT", + "LICENSE_SERVER_VERIFICATION", + "LIFETIME_SIGNING", + "MICROSOFT_PUBLISHER", + "MICROSOFT_TIME_STAMPING", + "MICROSOFT_TRUST_LIST_SIGNING", + "OCSP_SIGNING", + "OEM_WINDOWS_SYSTEM_COMPONENT_VERIFICATION", + "PLATFORM_CERTIFICATE", + "PREVIEW_BUILD_SIGNING", + "PRIVATE_KEY_ARCHIVAL", + "PROTECTED_PROCESS_LIGHT_VERIFICATION", + "PROTECTED_PROCESS_VERIFICATION", + "QUALIFIED_SUBORDINATION", + "REVOKED_LIST_SIGNER", + "ROOT_PROGRAM_AUTO_UPDATE_CA_REVOCATION", + "ROOT_PROGRAM_AUTO_UPDATE_END_REVOCATION", + "ROOT_PROGRAM_NO_OSCP_FAILOVER_TO_CRL", + "ROOT_LIST_SIGNER", + "SECURE_EMAIL", + "SERVER_AUTHENTICATION", + "SMART_CARD_LOGIN", + "SPC_ENCRYPTED_DIGEST_RETRY_COUNT", + "SPC_RELAXED_PE_MARKER_CHECK", + "TIME_STAMPING", + "WINDOWS_HARDWARE_DRIVER_ATTESTED_VERIFICATION", + "WINDOWS_HARDWARE_DRIVER_EXTENDED_VERIFICATION", + "WINDOWS_HARDWARE_DRIVER_VERIFICATION", + "WINDOWS_HELLO_RECOVERY_KEY_ENCRYPTION", + "WINDOWS_KITS_COMPONENT", + "WINDOWS_RT_VERIFICATION", + "WINDOWS_SOFTWARE_EXTENSION_VERIFICATION", + "WINDOWS_STORE", + "WINDOWS_SYSTEM_COMPONENT_VERIFICATION", + "WINDOWS_TCB_COMPONENT", + "WINDOWS_THIRD_PARTY_APPLICATION_COMPONENT", + "WINDOWS_UPDATE" + ], + "type": "string" + }, + "CertificateValidity": { + "additionalProperties": false, + "properties": { + "RenewalPeriod": { + "$ref": "#/definitions/ValidityPeriod" + }, + "ValidityPeriod": { + "$ref": "#/definitions/ValidityPeriod" + } + }, + "required": [ + "RenewalPeriod", + "ValidityPeriod" + ], + "type": "object" + }, + "ClientCompatibilityV2": { + "enum": [ + "WINDOWS_SERVER_2003", + "WINDOWS_SERVER_2008", + "WINDOWS_SERVER_2008_R2", + "WINDOWS_SERVER_2012", + "WINDOWS_SERVER_2012_R2", + "WINDOWS_SERVER_2016" + ], + "type": "string" + }, + "ClientCompatibilityV3": { + "enum": [ + "WINDOWS_SERVER_2008", + "WINDOWS_SERVER_2008_R2", + "WINDOWS_SERVER_2012", + "WINDOWS_SERVER_2012_R2", + "WINDOWS_SERVER_2016" + ], + "type": "string" + }, + "ClientCompatibilityV4": { + "enum": [ + "WINDOWS_SERVER_2012", + "WINDOWS_SERVER_2012_R2", + "WINDOWS_SERVER_2016" + ], + "type": "string" + }, + "EnrollmentFlagsV2": { + "additionalProperties": false, + "properties": { + "EnableKeyReuseOnNtTokenKeysetStorageFull": { + "type": "boolean" + }, + "IncludeSymmetricAlgorithms": { + "type": "boolean" + }, + "NoSecurityExtension": { + "type": "boolean" + }, + "RemoveInvalidCertificateFromPersonalStore": { + "type": "boolean" + }, + "UserInteractionRequired": { + "type": "boolean" + } + }, + "type": "object" + }, + "EnrollmentFlagsV3": { + "additionalProperties": false, + "properties": { + "EnableKeyReuseOnNtTokenKeysetStorageFull": { + "type": "boolean" + }, + "IncludeSymmetricAlgorithms": { + "type": "boolean" + }, + "NoSecurityExtension": { + "type": "boolean" + }, + "RemoveInvalidCertificateFromPersonalStore": { + "type": "boolean" + }, + "UserInteractionRequired": { + "type": "boolean" + } + }, + "type": "object" + }, + "EnrollmentFlagsV4": { + "additionalProperties": false, + "properties": { + "EnableKeyReuseOnNtTokenKeysetStorageFull": { + "type": "boolean" + }, + "IncludeSymmetricAlgorithms": { + "type": "boolean" + }, + "NoSecurityExtension": { + "type": "boolean" + }, + "RemoveInvalidCertificateFromPersonalStore": { + "type": "boolean" + }, + "UserInteractionRequired": { + "type": "boolean" + } + }, + "type": "object" + }, + "ExtensionsV2": { + "additionalProperties": false, + "properties": { + "ApplicationPolicies": { + "$ref": "#/definitions/ApplicationPolicies" + }, + "KeyUsage": { + "$ref": "#/definitions/KeyUsage" + } + }, + "required": [ + "KeyUsage" + ], + "type": "object" + }, + "ExtensionsV3": { + "additionalProperties": false, + "properties": { + "ApplicationPolicies": { + "$ref": "#/definitions/ApplicationPolicies" + }, + "KeyUsage": { + "$ref": "#/definitions/KeyUsage" + } + }, + "required": [ + "KeyUsage" + ], + "type": "object" + }, + "ExtensionsV4": { + "additionalProperties": false, + "properties": { + "ApplicationPolicies": { + "$ref": "#/definitions/ApplicationPolicies" + }, + "KeyUsage": { + "$ref": "#/definitions/KeyUsage" + } + }, + "required": [ + "KeyUsage" + ], + "type": "object" + }, + "GeneralFlagsV2": { + "additionalProperties": false, + "properties": { + "AutoEnrollment": { + "type": "boolean" + }, + "MachineType": { + "type": "boolean" + } + }, + "type": "object" + }, + "GeneralFlagsV3": { + "additionalProperties": false, + "properties": { + "AutoEnrollment": { + "type": "boolean" + }, + "MachineType": { + "type": "boolean" + } + }, + "type": "object" + }, + "GeneralFlagsV4": { + "additionalProperties": false, + "properties": { + "AutoEnrollment": { + "type": "boolean" + }, + "MachineType": { + "type": "boolean" + } + }, + "type": "object" + }, + "HashAlgorithm": { + "enum": [ + "SHA256", + "SHA384", + "SHA512" + ], + "type": "string" + }, + "KeySpec": { + "enum": [ + "KEY_EXCHANGE", + "SIGNATURE" + ], + "type": "string" + }, + "KeyUsage": { + "additionalProperties": false, + "properties": { + "Critical": { + "type": "boolean" + }, + "UsageFlags": { + "$ref": "#/definitions/KeyUsageFlags" + } + }, + "required": [ + "UsageFlags" + ], + "type": "object" + }, + "KeyUsageFlags": { + "additionalProperties": false, + "properties": { + "DataEncipherment": { + "type": "boolean" + }, + "DigitalSignature": { + "type": "boolean" + }, + "KeyAgreement": { + "type": "boolean" + }, + "KeyEncipherment": { + "type": "boolean" + }, + "NonRepudiation": { + "type": "boolean" + } + }, + "type": "object" + }, + "KeyUsageProperty": { + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "PropertyType": { + "$ref": "#/definitions/KeyUsagePropertyType" + } + }, + "required": [ + "PropertyType" + ], + "title": "PropertyType", + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "PropertyFlags": { + "$ref": "#/definitions/KeyUsagePropertyFlags" + } + }, + "required": [ + "PropertyFlags" + ], + "title": "PropertyFlags", + "type": "object" + } + ] + }, + "KeyUsagePropertyFlags": { + "additionalProperties": false, + "properties": { + "Decrypt": { + "type": "boolean" + }, + "KeyAgreement": { + "type": "boolean" + }, + "Sign": { + "type": "boolean" + } + }, + "type": "object" + }, + "KeyUsagePropertyType": { + "enum": [ + "ALL" + ], + "type": "string" + }, + "PrivateKeyAlgorithm": { + "enum": [ + "RSA", + "ECDH_P256", + "ECDH_P384", + "ECDH_P521" + ], + "type": "string" + }, + "PrivateKeyAttributesV2": { + "additionalProperties": false, + "properties": { + "CryptoProviders": { + "items": { + "maxLength": 100, + "minLength": 1, + "type": "string" + }, + "maxItems": 100, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "KeySpec": { + "$ref": "#/definitions/KeySpec" + }, + "MinimalKeyLength": { + "minimum": 1, + "type": "number" + } + }, + "required": [ + "KeySpec", + "MinimalKeyLength" + ], + "type": "object" + }, + "PrivateKeyAttributesV3": { + "additionalProperties": false, + "properties": { + "Algorithm": { + "$ref": "#/definitions/PrivateKeyAlgorithm" + }, + "CryptoProviders": { + "items": { + "maxLength": 100, + "minLength": 1, + "type": "string" + }, + "maxItems": 100, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "KeySpec": { + "$ref": "#/definitions/KeySpec" + }, + "KeyUsageProperty": { + "$ref": "#/definitions/KeyUsageProperty" + }, + "MinimalKeyLength": { + "minimum": 1, + "type": "number" + } + }, + "required": [ + "Algorithm", + "KeySpec", + "KeyUsageProperty", + "MinimalKeyLength" + ], + "type": "object" + }, + "PrivateKeyAttributesV4": { + "additionalProperties": false, + "properties": { + "Algorithm": { + "$ref": "#/definitions/PrivateKeyAlgorithm" + }, + "CryptoProviders": { + "items": { + "maxLength": 100, + "minLength": 1, + "type": "string" + }, + "maxItems": 100, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "KeySpec": { + "$ref": "#/definitions/KeySpec" + }, + "KeyUsageProperty": { + "$ref": "#/definitions/KeyUsageProperty" + }, + "MinimalKeyLength": { + "minimum": 1, + "type": "number" + } + }, + "required": [ + "KeySpec", + "MinimalKeyLength" + ], + "type": "object" + }, + "PrivateKeyFlagsV2": { + "additionalProperties": false, + "properties": { + "ClientVersion": { + "$ref": "#/definitions/ClientCompatibilityV2" + }, + "ExportableKey": { + "type": "boolean" + }, + "StrongKeyProtectionRequired": { + "type": "boolean" + } + }, + "required": [ + "ClientVersion" + ], + "type": "object" + }, + "PrivateKeyFlagsV3": { + "additionalProperties": false, + "properties": { + "ClientVersion": { + "$ref": "#/definitions/ClientCompatibilityV3" + }, + "ExportableKey": { + "type": "boolean" + }, + "RequireAlternateSignatureAlgorithm": { + "type": "boolean" + }, + "StrongKeyProtectionRequired": { + "type": "boolean" + } + }, + "required": [ + "ClientVersion" + ], + "type": "object" + }, + "PrivateKeyFlagsV4": { + "additionalProperties": false, + "properties": { + "ClientVersion": { + "$ref": "#/definitions/ClientCompatibilityV4" + }, + "ExportableKey": { + "type": "boolean" + }, + "RequireAlternateSignatureAlgorithm": { + "type": "boolean" + }, + "RequireSameKeyRenewal": { + "type": "boolean" + }, + "StrongKeyProtectionRequired": { + "type": "boolean" + }, + "UseLegacyProvider": { + "type": "boolean" + } + }, + "required": [ + "ClientVersion" + ], + "type": "object" + }, + "SubjectNameFlagsV2": { + "additionalProperties": false, + "properties": { + "RequireCommonName": { + "type": "boolean" + }, + "RequireDirectoryPath": { + "type": "boolean" + }, + "RequireDnsAsCn": { + "type": "boolean" + }, + "RequireEmail": { + "type": "boolean" + }, + "SanRequireDirectoryGuid": { + "type": "boolean" + }, + "SanRequireDns": { + "type": "boolean" + }, + "SanRequireDomainDns": { + "type": "boolean" + }, + "SanRequireEmail": { + "type": "boolean" + }, + "SanRequireSpn": { + "type": "boolean" + }, + "SanRequireUpn": { + "type": "boolean" + } + }, + "type": "object" + }, + "SubjectNameFlagsV3": { + "additionalProperties": false, + "properties": { + "RequireCommonName": { + "type": "boolean" + }, + "RequireDirectoryPath": { + "type": "boolean" + }, + "RequireDnsAsCn": { + "type": "boolean" + }, + "RequireEmail": { + "type": "boolean" + }, + "SanRequireDirectoryGuid": { + "type": "boolean" + }, + "SanRequireDns": { + "type": "boolean" + }, + "SanRequireDomainDns": { + "type": "boolean" + }, + "SanRequireEmail": { + "type": "boolean" + }, + "SanRequireSpn": { + "type": "boolean" + }, + "SanRequireUpn": { + "type": "boolean" + } + }, + "type": "object" + }, + "SubjectNameFlagsV4": { + "additionalProperties": false, + "properties": { + "RequireCommonName": { + "type": "boolean" + }, + "RequireDirectoryPath": { + "type": "boolean" + }, + "RequireDnsAsCn": { + "type": "boolean" + }, + "RequireEmail": { + "type": "boolean" + }, + "SanRequireDirectoryGuid": { + "type": "boolean" + }, + "SanRequireDns": { + "type": "boolean" + }, + "SanRequireDomainDns": { + "type": "boolean" + }, + "SanRequireEmail": { + "type": "boolean" + }, + "SanRequireSpn": { + "type": "boolean" + }, + "SanRequireUpn": { + "type": "boolean" + } + }, + "type": "object" + }, + "Tags": { + "additionalProperties": false, + "patternProperties": { + ".+": { + "type": "string" + } + }, + "type": "object" + }, + "TemplateDefinition": { + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "TemplateV2": { + "$ref": "#/definitions/TemplateV2" + } + }, + "required": [ + "TemplateV2" + ], + "title": "TemplateV2", + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "TemplateV3": { + "$ref": "#/definitions/TemplateV3" + } + }, + "required": [ + "TemplateV3" + ], + "title": "TemplateV3", + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "TemplateV4": { + "$ref": "#/definitions/TemplateV4" + } + }, + "required": [ + "TemplateV4" + ], + "title": "TemplateV4", + "type": "object" + } + ] + }, + "TemplateV2": { + "additionalProperties": false, + "properties": { + "CertificateValidity": { + "$ref": "#/definitions/CertificateValidity" + }, + "EnrollmentFlags": { + "$ref": "#/definitions/EnrollmentFlagsV2" + }, + "Extensions": { + "$ref": "#/definitions/ExtensionsV2" + }, + "GeneralFlags": { + "$ref": "#/definitions/GeneralFlagsV2" + }, + "PrivateKeyAttributes": { + "$ref": "#/definitions/PrivateKeyAttributesV2" + }, + "PrivateKeyFlags": { + "$ref": "#/definitions/PrivateKeyFlagsV2" + }, + "SubjectNameFlags": { + "$ref": "#/definitions/SubjectNameFlagsV2" + }, + "SupersededTemplates": { + "items": { + "maxLength": 64, + "minLength": 1, + "pattern": "^(?!^\\s+$)((?![\\x5c'\\x2b,;<=>#\\x22])([\\x20-\\x7E]))+$", + "type": "string" + }, + "maxItems": 100, + "minItems": 1, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "CertificateValidity", + "EnrollmentFlags", + "Extensions", + "GeneralFlags", + "PrivateKeyAttributes", + "PrivateKeyFlags", + "SubjectNameFlags" + ], + "type": "object" + }, + "TemplateV3": { + "additionalProperties": false, + "properties": { + "CertificateValidity": { + "$ref": "#/definitions/CertificateValidity" + }, + "EnrollmentFlags": { + "$ref": "#/definitions/EnrollmentFlagsV3" + }, + "Extensions": { + "$ref": "#/definitions/ExtensionsV3" + }, + "GeneralFlags": { + "$ref": "#/definitions/GeneralFlagsV3" + }, + "HashAlgorithm": { + "$ref": "#/definitions/HashAlgorithm" + }, + "PrivateKeyAttributes": { + "$ref": "#/definitions/PrivateKeyAttributesV3" + }, + "PrivateKeyFlags": { + "$ref": "#/definitions/PrivateKeyFlagsV3" + }, + "SubjectNameFlags": { + "$ref": "#/definitions/SubjectNameFlagsV3" + }, + "SupersededTemplates": { + "items": { + "maxLength": 64, + "minLength": 1, + "pattern": "^(?!^\\s+$)((?![\\x5c'\\x2b,;<=>#\\x22])([\\x20-\\x7E]))+$", + "type": "string" + }, + "maxItems": 100, + "minItems": 1, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "CertificateValidity", + "EnrollmentFlags", + "Extensions", + "GeneralFlags", + "HashAlgorithm", + "PrivateKeyAttributes", + "PrivateKeyFlags", + "SubjectNameFlags" + ], + "type": "object" + }, + "TemplateV4": { + "additionalProperties": false, + "properties": { + "CertificateValidity": { + "$ref": "#/definitions/CertificateValidity" + }, + "EnrollmentFlags": { + "$ref": "#/definitions/EnrollmentFlagsV4" + }, + "Extensions": { + "$ref": "#/definitions/ExtensionsV4" + }, + "GeneralFlags": { + "$ref": "#/definitions/GeneralFlagsV4" + }, + "HashAlgorithm": { + "$ref": "#/definitions/HashAlgorithm" + }, + "PrivateKeyAttributes": { + "$ref": "#/definitions/PrivateKeyAttributesV4" + }, + "PrivateKeyFlags": { + "$ref": "#/definitions/PrivateKeyFlagsV4" + }, + "SubjectNameFlags": { + "$ref": "#/definitions/SubjectNameFlagsV4" + }, + "SupersededTemplates": { + "items": { + "maxLength": 64, + "minLength": 1, + "pattern": "^(?!^\\s+$)((?![\\x5c'\\x2b,;<=>#\\x22])([\\x20-\\x7E]))+$", + "type": "string" + }, + "maxItems": 100, + "minItems": 1, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "CertificateValidity", + "EnrollmentFlags", + "Extensions", + "GeneralFlags", + "PrivateKeyAttributes", + "PrivateKeyFlags", + "SubjectNameFlags" + ], + "type": "object" + }, + "ValidityPeriod": { + "additionalProperties": false, + "properties": { + "Period": { + "maximum": 8766000, + "minimum": 1, + "type": "number" + }, + "PeriodType": { + "$ref": "#/definitions/ValidityPeriodType" + } + }, + "required": [ + "Period", + "PeriodType" + ], + "type": "object" + }, + "ValidityPeriodType": { + "enum": [ + "HOURS", + "DAYS", + "WEEKS", + "MONTHS", + "YEARS" + ], + "type": "string" + } + }, + "description": "Represents a template that defines certificate configurations, both for issuance and client handling", + "handlers": { + "create": { + "permissions": [ + "pca-connector-ad:CreateTemplate", + "pca-connector-ad:TagResource" + ] + }, + "delete": { + "permissions": [ + "pca-connector-ad:GetTemplate", + "pca-connector-ad:DeleteTemplate", + "pca-connector-ad:UntagResource" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "ConnectorArn": { + "$ref": "resource-schema.json#/properties/ConnectorArn" + } + }, + "required": [ + "ConnectorArn" + ] + }, + "permissions": [ + "pca-connector-ad:ListTemplates" + ] + }, + "read": { + "permissions": [ + "pca-connector-ad:GetTemplate", + "pca-connector-ad:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "pca-connector-ad:ListTagsForResource", + "pca-connector-ad:TagResource", + "pca-connector-ad:UntagResource", + "pca-connector-ad:UpdateTemplate" + ] + } + }, + "primaryIdentifier": [ + "/properties/TemplateArn" + ], + "properties": { + "ConnectorArn": { + "maxLength": 200, + "minLength": 5, + "pattern": "^arn:[\\w-]+:pca-connector-ad:[\\w-]+:[0-9]+:connector\\/[0-9a-f]{8}(-[0-9a-f]{4}){3}-[0-9a-f]{12}$", + "type": "string" + }, + "Definition": { + "$ref": "#/definitions/TemplateDefinition" + }, + "Name": { + "maxLength": 64, + "minLength": 1, + "pattern": "^(?!^\\s+$)((?![\\x5c'\\x2b,;<=>#\\x22])([\\x20-\\x7E]))+$", + "type": "string" + }, + "ReenrollAllCertificateHolders": { + "type": "boolean" + }, + "Tags": { + "$ref": "#/definitions/Tags" + }, + "TemplateArn": { + "maxLength": 200, + "minLength": 5, + "pattern": "^arn:[\\w-]+:pca-connector-ad:[\\w-]+:[0-9]+:connector\\/[0-9a-f]{8}(-[0-9a-f]{4}){3}-[0-9a-f]{12}\\/template\\/[0-9a-f]{8}(-[0-9a-f]{4}){3}-[0-9a-f]{12}$", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/TemplateArn" + ], + "required": [ + "ConnectorArn", + "Definition", + "Name" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-pcaconnectorad", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "pca-connector-ad:ListTagsForResource", + "pca-connector-ad:TagResource", + "pca-connector-ad:UntagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::PCAConnectorAD::Template", + "writeOnlyProperties": [ + "/properties/ReenrollAllCertificateHolders" + ] +} diff --git a/src/schema/aws-pcaconnectorad-templategroupaccesscontrolentry.json b/src/schema/aws-pcaconnectorad-templategroupaccesscontrolentry.json new file mode 100644 index 00000000..4ddf3a24 --- /dev/null +++ b/src/schema/aws-pcaconnectorad-templategroupaccesscontrolentry.json @@ -0,0 +1,110 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/GroupSecurityIdentifier", + "/properties/TemplateArn" + ], + "definitions": { + "AccessRight": { + "enum": [ + "ALLOW", + "DENY" + ], + "type": "string" + }, + "AccessRights": { + "additionalProperties": false, + "properties": { + "AutoEnroll": { + "$ref": "#/definitions/AccessRight" + }, + "Enroll": { + "$ref": "#/definitions/AccessRight" + } + }, + "type": "object" + } + }, + "description": "Definition of AWS::PCAConnectorAD::TemplateGroupAccessControlEntry Resource Type", + "handlers": { + "create": { + "permissions": [ + "pca-connector-ad:CreateTemplateGroupAccessControlEntry" + ] + }, + "delete": { + "permissions": [ + "pca-connector-ad:DeleteTemplateGroupAccessControlEntry", + "pca-connector-ad:GetTemplateGroupAccessControlEntry" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "TemplateArn": { + "$ref": "resource-schema.json#/properties/TemplateArn" + } + }, + "required": [ + "TemplateArn" + ] + }, + "permissions": [ + "pca-connector-ad:ListTemplateGroupAccessControlEntries" + ] + }, + "read": { + "permissions": [ + "pca-connector-ad:GetTemplateGroupAccessControlEntry" + ] + }, + "update": { + "permissions": [ + "pca-connector-ad:UpdateTemplateGroupAccessControlEntry" + ] + } + }, + "primaryIdentifier": [ + "/properties/GroupSecurityIdentifier", + "/properties/TemplateArn" + ], + "properties": { + "AccessRights": { + "$ref": "#/definitions/AccessRights" + }, + "GroupDisplayName": { + "maxLength": 256, + "minLength": 0, + "pattern": "^[\\x20-\\x7E]+$", + "type": "string" + }, + "GroupSecurityIdentifier": { + "maxLength": 256, + "minLength": 7, + "pattern": "^S-[0-9]-([0-9]+-){1,14}[0-9]+$", + "type": "string" + }, + "TemplateArn": { + "maxLength": 200, + "minLength": 5, + "pattern": "^arn:[\\w-]+:pca-connector-ad:[\\w-]+:[0-9]+:connector(\\/[\\w-]+)\\/template(\\/[\\w-]+)$", + "type": "string" + } + }, + "required": [ + "AccessRights", + "GroupDisplayName" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-pcaconnectorad", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::PCAConnectorAD::TemplateGroupAccessControlEntry", + "writeOnlyProperties": [ + "/properties/AccessRights", + "/properties/GroupDisplayName" + ] +} diff --git a/src/schema/aws-pcaconnectorscep-challenge.json b/src/schema/aws-pcaconnectorscep-challenge.json new file mode 100644 index 00000000..10633c6a --- /dev/null +++ b/src/schema/aws-pcaconnectorscep-challenge.json @@ -0,0 +1,105 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ConnectorArn" + ], + "definitions": { + "Tags": { + "additionalProperties": false, + "patternProperties": { + ".+": { + "type": "string" + } + }, + "type": "object" + }, + "Unit": { + "additionalProperties": false, + "type": "object" + } + }, + "description": "Represents a SCEP Challenge that is used for certificate enrollment", + "handlers": { + "create": { + "permissions": [ + "pca-connector-scep:CreateChallenge", + "pca-connector-scep:TagResource" + ] + }, + "delete": { + "permissions": [ + "pca-connector-scep:GetChallengeMetadata", + "pca-connector-scep:DeleteChallenge", + "pca-connector-scep:UntagResource" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "ConnectorArn": { + "$ref": "resource-schema.json#/properties/ConnectorArn" + } + }, + "required": [ + "ConnectorArn" + ] + }, + "permissions": [ + "pca-connector-scep:ListChallengeMetadata" + ] + }, + "read": { + "permissions": [ + "pca-connector-scep:ListTagsForResource", + "pca-connector-scep:GetChallengeMetadata" + ] + }, + "update": { + "permissions": [ + "pca-connector-scep:ListTagsForResource", + "pca-connector-scep:TagResource", + "pca-connector-scep:UntagResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/ChallengeArn" + ], + "properties": { + "ChallengeArn": { + "maxLength": 200, + "minLength": 5, + "pattern": "^arn:aws(-[a-z]+)*:pca-connector-scep:[a-z]+(-[a-z]+)+-[1-9]\\d*:\\d{12}:connector\\/[0-9a-f]{8}(-[0-9a-f]{4}){3}-[0-9a-f]{12}\\/challenge\\/[0-9a-f]{8}(-[0-9a-f]{4}){3}-[0-9a-f]{12}$", + "type": "string" + }, + "ConnectorArn": { + "maxLength": 200, + "minLength": 5, + "pattern": "^arn:aws(-[a-z]+)*:pca-connector-scep:[a-z]+(-[a-z]+)+-[1-9]\\d*:\\d{12}:connector\\/[0-9a-f]{8}(-[0-9a-f]{4}){3}-[0-9a-f]{12}$", + "type": "string" + }, + "Tags": { + "$ref": "#/definitions/Tags" + } + }, + "readOnlyProperties": [ + "/properties/ChallengeArn" + ], + "required": [ + "ConnectorArn" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-pcaconnectorscep", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "pca-connector-scep:ListTagsForResource", + "pca-connector-scep:TagResource", + "pca-connector-scep:UntagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::PCAConnectorSCEP::Challenge" +} diff --git a/src/schema/aws-pcaconnectorscep-connector.json b/src/schema/aws-pcaconnectorscep-connector.json new file mode 100644 index 00000000..75dbfb29 --- /dev/null +++ b/src/schema/aws-pcaconnectorscep-connector.json @@ -0,0 +1,183 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/CertificateAuthorityArn", + "/properties/MobileDeviceManagement" + ], + "definitions": { + "ConnectorType": { + "enum": [ + "GENERAL_PURPOSE", + "INTUNE" + ], + "type": "string" + }, + "IntuneConfiguration": { + "additionalProperties": false, + "properties": { + "AzureApplicationId": { + "maxLength": 100, + "minLength": 15, + "pattern": "^[a-zA-Z0-9]{2,15}-[a-zA-Z0-9]{2,15}-[a-zA-Z0-9]{2,15}-[a-zA-Z0-9]{2,15}-[a-zA-Z0-9]{2,15}$", + "type": "string" + }, + "Domain": { + "maxLength": 256, + "minLength": 1, + "pattern": "^[a-zA-Z0-9._-]+$", + "type": "string" + } + }, + "required": [ + "AzureApplicationId", + "Domain" + ], + "type": "object" + }, + "MobileDeviceManagement": { + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "Intune": { + "$ref": "#/definitions/IntuneConfiguration" + } + }, + "required": [ + "Intune" + ], + "title": "Intune" + } + ], + "type": "object" + }, + "OpenIdConfiguration": { + "additionalProperties": false, + "properties": { + "Audience": { + "type": "string" + }, + "Issuer": { + "type": "string" + }, + "Subject": { + "type": "string" + } + }, + "type": "object" + }, + "Tags": { + "additionalProperties": false, + "patternProperties": { + ".+": { + "type": "string" + } + }, + "type": "object" + }, + "Unit": { + "additionalProperties": false, + "type": "object" + } + }, + "description": "Represents a Connector that allows certificate issuance through Simple Certificate Enrollment Protocol (SCEP)", + "handlers": { + "create": { + "permissions": [ + "acm-pca:DescribeCertificateAuthority", + "acm-pca:GetCertificate", + "acm-pca:GetCertificateAuthorityCertificate", + "acm-pca:IssueCertificate", + "pca-connector-scep:GetConnector", + "pca-connector-scep:CreateConnector", + "pca-connector-scep:TagResource" + ] + }, + "delete": { + "permissions": [ + "acm-pca:DescribeCertificateAuthority", + "acm-pca:GetCertificate", + "acm-pca:GetCertificateAuthorityCertificate", + "acm-pca:IssueCertificate", + "pca-connector-scep:GetConnector", + "pca-connector-scep:DeleteConnector", + "pca-connector-scep:UntagResource" + ] + }, + "list": { + "permissions": [ + "pca-connector-scep:ListConnectors" + ] + }, + "read": { + "permissions": [ + "pca-connector-scep:ListTagsForResource", + "pca-connector-scep:GetConnector" + ] + }, + "update": { + "permissions": [ + "pca-connector-scep:ListTagsForResource", + "pca-connector-scep:TagResource", + "pca-connector-scep:UntagResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/ConnectorArn" + ], + "properties": { + "CertificateAuthorityArn": { + "maxLength": 200, + "minLength": 5, + "pattern": "^arn:aws(-[a-z]+)*:acm-pca:[a-z]+(-[a-z]+)+-[1-9]\\d*:\\d{12}:certificate-authority\\/[0-9a-f]{8}(-[0-9a-f]{4}){3}-[0-9a-f]{12}$", + "type": "string" + }, + "ConnectorArn": { + "maxLength": 200, + "minLength": 5, + "pattern": "^arn:aws(-[a-z]+)*:pca-connector-scep:[a-z]+(-[a-z]+)+-[1-9]\\d*:\\d{12}:connector\\/[0-9a-f]{8}(-[0-9a-f]{4}){3}-[0-9a-f]{12}$", + "type": "string" + }, + "Endpoint": { + "maxLength": 200, + "minLength": 5, + "type": "string" + }, + "MobileDeviceManagement": { + "$ref": "#/definitions/MobileDeviceManagement" + }, + "OpenIdConfiguration": { + "$ref": "#/definitions/OpenIdConfiguration" + }, + "Tags": { + "$ref": "#/definitions/Tags" + }, + "Type": { + "$ref": "#/definitions/ConnectorType" + } + }, + "readOnlyProperties": [ + "/properties/ConnectorArn", + "/properties/Endpoint", + "/properties/OpenIdConfiguration", + "/properties/Type" + ], + "required": [ + "CertificateAuthorityArn" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-pcaconnectorscep", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "pca-connector-scep:ListTagsForResource", + "pca-connector-scep:TagResource", + "pca-connector-scep:UntagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::PCAConnectorSCEP::Connector" +} diff --git a/src/schema/aws-pcs-cluster.json b/src/schema/aws-pcs-cluster.json new file mode 100644 index 00000000..dc26e865 --- /dev/null +++ b/src/schema/aws-pcs-cluster.json @@ -0,0 +1,333 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name", + "/properties/Networking", + "/properties/Scheduler", + "/properties/Size", + "/properties/SlurmConfiguration" + ], + "definitions": { + "AuthKey": { + "additionalProperties": false, + "description": "The shared Slurm key for authentication, also known as the cluster secret.", + "properties": { + "SecretArn": { + "description": "The Amazon Resource Name (ARN) of the the shared Slurm key.", + "type": "string" + }, + "SecretVersion": { + "description": "The version of the shared Slurm key.", + "type": "string" + } + }, + "required": [ + "SecretArn", + "SecretVersion" + ], + "type": "object" + }, + "Endpoint": { + "additionalProperties": false, + "description": "An endpoint available for interaction with the scheduler.", + "properties": { + "Port": { + "description": "The endpoint's connection port number.", + "type": "string" + }, + "PrivateIpAddress": { + "description": "The endpoint's private IP address.", + "type": "string" + }, + "PublicIpAddress": { + "description": "The endpoint's public IP address.", + "type": "string" + }, + "Type": { + "description": "Indicates the type of endpoint running at the specific IP address.", + "enum": [ + "SLURMCTLD", + "SLURMDBD" + ], + "type": "string" + } + }, + "required": [ + "Port", + "PrivateIpAddress", + "Type" + ], + "type": "object" + }, + "ErrorInfo": { + "additionalProperties": false, + "description": "An error that occurred during resource provisioning.", + "properties": { + "Code": { + "description": "The short-form error code.", + "type": "string" + }, + "Message": { + "description": "The detailed error information.", + "type": "string" + } + }, + "type": "object" + }, + "SecurityGroupId": { + "description": "A VPC security group ID.", + "type": "string" + }, + "SlurmCustomSetting": { + "additionalProperties": false, + "description": "Additional settings that directly map to Slurm settings.", + "properties": { + "ParameterName": { + "description": "AWS PCS supports configuration of the following Slurm parameters for clusters: Prolog, Epilog, and SelectTypeParameters.", + "type": "string" + }, + "ParameterValue": { + "description": "The value for the configured Slurm setting.", + "type": "string" + } + }, + "required": [ + "ParameterName", + "ParameterValue" + ], + "type": "object" + }, + "SubnetId": { + "description": "A VPC subnet ID.", + "type": "string" + }, + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key" + ], + "type": "object" + } + }, + "description": "AWS::PCS::Cluster resource creates an AWS PCS cluster.", + "handlers": { + "create": { + "permissions": [ + "ec2:CreateNetworkInterface", + "ec2:DescribeVpcs", + "ec2:DescribeSubnets", + "ec2:DescribeSecurityGroups", + "ec2:GetSecurityGroupsForVpc", + "iam:CreateServiceLinkedRole", + "secretsmanager:CreateSecret", + "secretsmanager:TagResource", + "pcs:CreateCluster", + "pcs:GetCluster", + "pcs:ListTagsForResource", + "pcs:TagResource" + ], + "timeoutInMinutes": 60 + }, + "delete": { + "permissions": [ + "pcs:DeleteCluster", + "pcs:GetCluster" + ], + "timeoutInMinutes": 60 + }, + "list": { + "permissions": [ + "pcs:ListClusters" + ] + }, + "read": { + "permissions": [ + "pcs:GetCluster", + "pcs:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "pcs:GetCluster", + "pcs:ListTagsForResource", + "pcs:TagResource", + "pcs:UntagResource" + ], + "timeoutInMinutes": 60 + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "Arn": { + "description": "The unique Amazon Resource Name (ARN) of the cluster.", + "type": "string" + }, + "Endpoints": { + "description": "The list of endpoints available for interaction with the scheduler.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Endpoint" + }, + "type": "array" + }, + "ErrorInfo": { + "description": "The list of errors that occurred during cluster provisioning.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/ErrorInfo" + }, + "type": "array" + }, + "Id": { + "description": "The generated unique ID of the cluster.", + "pattern": "^(pcs_[a-zA-Z0-9]+|[A-Za-z][A-Za-z0-9-]{1,40})$", + "type": "string" + }, + "Name": { + "description": "The name that identifies the cluster.", + "type": "string" + }, + "Networking": { + "additionalProperties": false, + "description": "The networking configuration for the cluster's control plane.", + "properties": { + "SecurityGroupIds": { + "description": "The list of security group IDs associated with the Elastic Network Interface (ENI) created in subnets.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/SecurityGroupId" + }, + "type": "array" + }, + "SubnetIds": { + "description": "The list of subnet IDs where AWS PCS creates an Elastic Network Interface (ENI) to enable communication between managed controllers and AWS PCS resources. The subnet must have an available IP address, cannot reside in AWS Outposts, AWS Wavelength, or an AWS Local Zone. AWS PCS currently supports only 1 subnet in this list.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/SubnetId" + }, + "type": "array" + } + }, + "type": "object" + }, + "Scheduler": { + "additionalProperties": false, + "description": "The cluster management and job scheduling software associated with the cluster.", + "properties": { + "Type": { + "description": "The software AWS PCS uses to manage cluster scaling and job scheduling.", + "enum": [ + "SLURM" + ], + "type": "string" + }, + "Version": { + "description": "The version of the specified scheduling software that AWS PCS uses to manage cluster scaling and job scheduling.", + "type": "string" + } + }, + "required": [ + "Type", + "Version" + ], + "type": "object" + }, + "Size": { + "description": "The size of the cluster.", + "enum": [ + "SMALL", + "MEDIUM", + "LARGE" + ], + "type": "string" + }, + "SlurmConfiguration": { + "additionalProperties": false, + "description": "Additional options related to the Slurm scheduler.", + "properties": { + "AuthKey": { + "$ref": "#/definitions/AuthKey" + }, + "ScaleDownIdleTimeInSeconds": { + "description": "The time before an idle node is scaled down.", + "minimum": 1, + "type": "integer" + }, + "SlurmCustomSettings": { + "description": "Additional Slurm-specific configuration that directly maps to Slurm settings.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/SlurmCustomSetting" + }, + "type": "array" + } + }, + "type": "object" + }, + "Status": { + "description": "The provisioning status of the cluster. The provisioning status doesn't indicate the overall health of the cluster.", + "enum": [ + "CREATING", + "ACTIVE", + "UPDATING", + "DELETING", + "CREATE_FAILED", + "DELETE_FAILED", + "UPDATE_FAILED" + ], + "type": "string" + }, + "Tags": { + "additionalProperties": false, + "description": "1 or more tags added to the resource. Each tag consists of a tag key and tag value. The tag value is optional and can be an empty string.", + "patternProperties": { + "^.+$": { + "type": "string" + } + } + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/Endpoints", + "/properties/ErrorInfo", + "/properties/Id", + "/properties/Status" + ], + "required": [ + "Networking", + "Scheduler", + "Size" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-pcs.git", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "pcs:TagResource", + "pcs:ListTagsForResource", + "pcs:UntagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::PCS::Cluster" +} diff --git a/src/schema/aws-pcs-computenodegroup.json b/src/schema/aws-pcs-computenodegroup.json new file mode 100644 index 00000000..47669860 --- /dev/null +++ b/src/schema/aws-pcs-computenodegroup.json @@ -0,0 +1,335 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name", + "/properties/ClusterId", + "/properties/InstanceConfigs" + ], + "definitions": { + "ErrorInfo": { + "additionalProperties": false, + "description": "An error that occurred during resource provisioning.", + "properties": { + "Code": { + "description": "The short-form error code.", + "type": "string" + }, + "Message": { + "description": "The detailed error information.", + "type": "string" + } + }, + "type": "object" + }, + "InstanceConfig": { + "additionalProperties": false, + "description": "An EC2 instance configuration AWS PCS uses to launch compute nodes.", + "properties": { + "InstanceType": { + "description": "The EC2 instance type that AWS PCS can provision in the compute node group.", + "type": "string" + } + }, + "type": "object" + }, + "SlurmCustomSetting": { + "additionalProperties": false, + "description": "Additional settings that directly map to Slurm settings.", + "properties": { + "ParameterName": { + "description": "AWS PCS supports configuration of the following Slurm parameters for compute node groups: Weight and RealMemory.", + "type": "string" + }, + "ParameterValue": { + "description": "The value for the configured Slurm setting.", + "type": "string" + } + }, + "required": [ + "ParameterName", + "ParameterValue" + ], + "type": "object" + }, + "SubnetId": { + "description": "A VPC subnet ID.", + "type": "string" + } + }, + "description": "AWS::PCS::ComputeNodeGroup resource creates an AWS PCS compute node group.", + "handlers": { + "create": { + "permissions": [ + "ec2:DescribeImages", + "ec2:DescribeVpcs", + "ec2:DescribeSubnets", + "ec2:DescribeSecurityGroups", + "ec2:DescribeLaunchTemplates", + "ec2:DescribeLaunchTemplateVersions", + "ec2:DescribeInstanceTypes", + "ec2:DescribeInstanceTypeOfferings", + "ec2:RunInstances", + "ec2:CreateFleet", + "ec2:CreateTags", + "iam:PassRole", + "iam:GetInstanceProfile", + "pcs:CreateComputeNodeGroup", + "pcs:GetComputeNodeGroup", + "pcs:ListTagsForResource", + "pcs:TagResource" + ], + "timeoutInMinutes": 60 + }, + "delete": { + "permissions": [ + "ec2:DescribeImages", + "ec2:DescribeVpcs", + "ec2:DescribeSubnets", + "ec2:DescribeSecurityGroups", + "ec2:DescribeLaunchTemplates", + "ec2:DescribeLaunchTemplateVersions", + "ec2:DescribeInstanceTypes", + "ec2:DescribeInstanceTypeOfferings", + "ec2:TerminateInstances", + "ec2:CreateFleet", + "ec2:CreateTags", + "iam:PassRole", + "iam:GetInstanceProfile", + "pcs:GetComputeNodeGroup", + "pcs:DeleteComputeNodeGroup", + "pcs:ListTagsForResource", + "pcs:TagResource", + "pcs:UntagResource" + ], + "timeoutInMinutes": 60 + }, + "list": { + "handlerSchema": { + "properties": { + "ClusterId": { + "$ref": "resource-schema.json#/properties/ClusterId" + } + }, + "required": [ + "ClusterId" + ] + }, + "permissions": [ + "pcs:ListClusters", + "pcs:ListComputeNodeGroups" + ] + }, + "read": { + "permissions": [ + "pcs:GetComputeNodeGroup", + "pcs:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "ec2:DescribeImages", + "ec2:DescribeVpcs", + "ec2:DescribeSubnets", + "ec2:DescribeSecurityGroups", + "ec2:DescribeLaunchTemplates", + "ec2:DescribeLaunchTemplateVersions", + "ec2:DescribeInstanceTypes", + "ec2:DescribeInstanceTypeOfferings", + "ec2:RunInstances", + "ec2:CreateFleet", + "ec2:CreateTags", + "iam:PassRole", + "iam:GetInstanceProfile", + "pcs:GetComputeNodeGroup", + "pcs:UpdateComputeNodeGroup", + "pcs:ListTagsForResource", + "pcs:TagResource", + "pcs:UntagResource" + ], + "timeoutInMinutes": 60 + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "AmiId": { + "description": "The ID of the Amazon Machine Image (AMI) that AWS PCS uses to launch instances. If not provided, AWS PCS uses the AMI ID specified in the custom launch template.", + "pattern": "^ami-[a-z0-9]+$", + "type": "string" + }, + "Arn": { + "description": "The unique Amazon Resource Name (ARN) of the compute node group.", + "type": "string" + }, + "ClusterId": { + "description": "The ID of the cluster of the compute node group.", + "type": "string" + }, + "CustomLaunchTemplate": { + "additionalProperties": false, + "description": "An Amazon EC2 launch template AWS PCS uses to launch compute nodes.", + "properties": { + "TemplateId": { + "description": "The ID of the EC2 launch template to use to provision instances.", + "type": "string" + }, + "Version": { + "description": "The version of the EC2 launch template to use to provision instances.", + "type": "string" + } + }, + "required": [ + "Version" + ], + "type": "object" + }, + "ErrorInfo": { + "description": "The list of errors that occurred during compute node group provisioning.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/ErrorInfo" + }, + "type": "array" + }, + "IamInstanceProfileArn": { + "description": "The Amazon Resource Name (ARN) of the IAM instance profile used to pass an IAM role when launching EC2 instances. The role contained in your instance profile must have pcs:RegisterComputeNodeGroupInstance permissions attached to provision instances correctly.", + "pattern": "^arn:aws([a-zA-Z-]{0,10})?:iam::[0-9]{12}:instance-profile/.{1,128}$", + "type": "string" + }, + "Id": { + "description": "The generated unique ID of the compute node group.", + "type": "string" + }, + "InstanceConfigs": { + "description": "A list of EC2 instance configurations that AWS PCS can provision in the compute node group.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/InstanceConfig" + }, + "type": "array" + }, + "Name": { + "description": "The name that identifies the compute node group.", + "type": "string" + }, + "PurchaseOption": { + "description": "Specifies how EC2 instances are purchased on your behalf. AWS PCS supports On-Demand and Spot instances. For more information, see Instance purchasing options in the Amazon Elastic Compute Cloud User Guide. If you don't provide this option, it defaults to On-Demand.", + "enum": [ + "ONDEMAND", + "SPOT" + ], + "type": "string" + }, + "ScalingConfiguration": { + "additionalProperties": false, + "description": "Specifies the boundaries of the compute node group auto scaling.", + "properties": { + "MaxInstanceCount": { + "description": "The upper bound of the number of instances allowed in the compute fleet.", + "minimum": 0, + "type": "integer" + }, + "MinInstanceCount": { + "description": "The lower bound of the number of instances allowed in the compute fleet.", + "minimum": 0, + "type": "integer" + } + }, + "required": [ + "MaxInstanceCount", + "MinInstanceCount" + ], + "type": "object" + }, + "SlurmConfiguration": { + "additionalProperties": false, + "description": "Additional options related to the Slurm scheduler.", + "properties": { + "SlurmCustomSettings": { + "description": "Additional Slurm-specific configuration that directly maps to Slurm settings.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/SlurmCustomSetting" + }, + "type": "array" + } + }, + "type": "object" + }, + "SpotOptions": { + "additionalProperties": false, + "description": "Additional configuration when you specify SPOT as the purchase option.", + "properties": { + "AllocationStrategy": { + "description": "The Amazon EC2 allocation strategy AWS PCS uses to provision EC2 instances. AWS PCS supports lowest price, capacity optimized, and price capacity optimized. If you don't provide this option, it defaults to price capacity optimized.", + "enum": [ + "lowest-price", + "capacity-optimized", + "price-capacity-optimized" + ], + "type": "string" + } + }, + "type": "object" + }, + "Status": { + "description": "The provisioning status of the compute node group. The provisioning status doesn't indicate the overall health of the compute node group.", + "enum": [ + "CREATING", + "ACTIVE", + "UPDATING", + "DELETING", + "CREATE_FAILED", + "DELETE_FAILED", + "UPDATE_FAILED" + ], + "type": "string" + }, + "SubnetIds": { + "description": "The list of subnet IDs where instances are provisioned by the compute node group. The subnets must be in the same VPC as the cluster.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/SubnetId" + }, + "type": "array" + }, + "Tags": { + "additionalProperties": false, + "description": "1 or more tags added to the resource. Each tag consists of a tag key and tag value. The tag value is optional and can be an empty string.", + "patternProperties": { + "^.+$": { + "type": "string" + } + } + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/ErrorInfo", + "/properties/Id", + "/properties/Status" + ], + "required": [ + "ClusterId", + "CustomLaunchTemplate", + "IamInstanceProfileArn", + "InstanceConfigs", + "ScalingConfiguration", + "SubnetIds" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-pcs.git", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "pcs:TagResource", + "pcs:ListTagsForResource", + "pcs:UntagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::PCS::ComputeNodeGroup" +} diff --git a/src/schema/aws-pcs-queue.json b/src/schema/aws-pcs-queue.json new file mode 100644 index 00000000..4333d8be --- /dev/null +++ b/src/schema/aws-pcs-queue.json @@ -0,0 +1,178 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name", + "/properties/ClusterId" + ], + "definitions": { + "ComputeNodeGroupConfiguration": { + "additionalProperties": false, + "description": "The compute node group configuration for a queue.", + "properties": { + "ComputeNodeGroupId": { + "description": "The compute node group ID for the compute node group configuration.", + "type": "string" + } + }, + "type": "object" + }, + "ErrorInfo": { + "additionalProperties": false, + "description": "An error that occurred during resource provisioning.", + "properties": { + "Code": { + "description": "The short-form error code.", + "type": "string" + }, + "Message": { + "description": "The detailed error information.", + "type": "string" + } + }, + "type": "object" + } + }, + "description": "AWS::PCS::Queue resource creates an AWS PCS queue.", + "handlers": { + "create": { + "permissions": [ + "ec2:CreateNetworkInterface", + "ec2:DescribeVpcs", + "ec2:DescribeSubnets", + "ec2:DescribeSecurityGroups", + "ec2:GetSecurityGroupsForVpc", + "iam:CreateServiceLinkedRole", + "secretsmanager:CreateSecret", + "secretsmanager:TagResource", + "pcs:CreateQueue", + "pcs:GetQueue", + "pcs:ListTagsForResource", + "pcs:TagResource" + ], + "timeoutInMinutes": 60 + }, + "delete": { + "permissions": [ + "pcs:DeleteQueue", + "pcs:GetQueue" + ], + "timeoutInMinutes": 60 + }, + "list": { + "handlerSchema": { + "properties": { + "ClusterId": { + "$ref": "resource-schema.json#/properties/ClusterId" + } + }, + "required": [ + "ClusterId" + ] + }, + "permissions": [ + "pcs:ListClusters", + "pcs:ListQueues" + ] + }, + "read": { + "permissions": [ + "pcs:GetQueue", + "pcs:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "pcs:GetQueue", + "pcs:UpdateQueue", + "pcs:ListTagsForResource", + "pcs:TagResource", + "pcs:UntagResource" + ], + "timeoutInMinutes": 60 + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "Arn": { + "description": "The unique Amazon Resource Name (ARN) of the queue.", + "pattern": "^(.*?)", + "type": "string" + }, + "ClusterId": { + "description": "The ID of the cluster of the queue.", + "type": "string" + }, + "ComputeNodeGroupConfigurations": { + "description": "The list of compute node group configurations associated with the queue. Queues assign jobs to associated compute node groups.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/ComputeNodeGroupConfiguration" + }, + "type": "array" + }, + "ErrorInfo": { + "description": "The list of errors that occurred during queue provisioning.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/ErrorInfo" + }, + "type": "array" + }, + "Id": { + "description": "The generated unique ID of the queue.", + "type": "string" + }, + "Name": { + "description": "The name that identifies the queue.", + "type": "string" + }, + "Status": { + "description": "The provisioning status of the queue. The provisioning status doesn't indicate the overall health of the queue.", + "enum": [ + "CREATING", + "ACTIVE", + "UPDATING", + "DELETING", + "CREATE_FAILED", + "DELETE_FAILED", + "UPDATE_FAILED" + ], + "type": "string" + }, + "Tags": { + "additionalProperties": false, + "description": "1 or more tags added to the resource. Each tag consists of a tag key and tag value. The tag value is optional and can be an empty string.", + "patternProperties": { + "^.+$": { + "type": "string" + } + }, + "type": "object" + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/ErrorInfo", + "/properties/Id", + "/properties/Status" + ], + "required": [ + "ClusterId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-pcs.git", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "pcs:TagResource", + "pcs:ListTagsForResource", + "pcs:UntagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::PCS::Queue" +} diff --git a/src/schema/aws-personalize-dataset.json b/src/schema/aws-personalize-dataset.json new file mode 100644 index 00000000..666c4065 --- /dev/null +++ b/src/schema/aws-personalize-dataset.json @@ -0,0 +1,150 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name", + "/properties/DatasetType", + "/properties/DatasetGroupArn", + "/properties/SchemaArn" + ], + "definitions": { + "DatasetImportJob": { + "additionalProperties": false, + "description": "Initial DatasetImportJob for the created dataset", + "properties": { + "DataSource": { + "additionalProperties": false, + "description": "The Amazon S3 bucket that contains the training data to import.", + "properties": { + "DataLocation": { + "description": "The path to the Amazon S3 bucket where the data that you want to upload to your dataset is stored.", + "maxLength": 256, + "pattern": "(s3|http|https)://.+", + "type": "string" + } + }, + "type": "object" + }, + "DatasetArn": { + "description": "The ARN of the dataset that receives the imported data", + "maxLength": 256, + "pattern": "arn:([a-z\\d-]+):personalize:.*:.*:.+", + "type": "string" + }, + "DatasetImportJobArn": { + "description": "The ARN of the dataset import job", + "maxLength": 256, + "pattern": "arn:([a-z\\d-]+):personalize:.*:.*:.+", + "type": "string" + }, + "JobName": { + "description": "The name for the dataset import job.", + "maxLength": 63, + "minLength": 1, + "pattern": "^[a-zA-Z0-9][a-zA-Z0-9\\-_]*", + "type": "string" + }, + "RoleArn": { + "description": "The ARN of the IAM role that has permissions to read from the Amazon S3 data source.", + "maxLength": 256, + "pattern": "arn:([a-z\\d-]+):iam::\\d{12}:role/?[a-zA-Z_0-9+=,.@\\-_/]+", + "type": "string" + } + }, + "type": "object" + } + }, + "description": "Resource schema for AWS::Personalize::Dataset.", + "handlers": { + "create": { + "permissions": [ + "personalize:CreateDataset", + "personalize:DescribeDataset", + "personalize:CreateDatasetImportJob", + "personalize:DescribeDatasetImportJob", + "iam:PassRole" + ], + "timeoutInMinutes": 2160 + }, + "delete": { + "permissions": [ + "personalize:DeleteDataset", + "personalize:DescribeDataset" + ] + }, + "list": { + "permissions": [ + "personalize:ListDatasets" + ] + }, + "read": { + "permissions": [ + "personalize:DescribeDataset" + ] + }, + "update": { + "permissions": [ + "personalize:DescribeDataset", + "personalize:CreateDatasetImportJob", + "personalize:DescribeDatasetImportJob", + "iam:PassRole" + ], + "timeoutInMinutes": 2160 + } + }, + "primaryIdentifier": [ + "/properties/DatasetArn" + ], + "properties": { + "DatasetArn": { + "description": "The ARN of the dataset", + "maxLength": 256, + "pattern": "arn:([a-z\\d-]+):personalize:.*:.*:.+", + "type": "string" + }, + "DatasetGroupArn": { + "description": "The Amazon Resource Name (ARN) of the dataset group to add the dataset to", + "maxLength": 256, + "pattern": "arn:([a-z\\d-]+):personalize:.*:.*:.+", + "type": "string" + }, + "DatasetImportJob": { + "$ref": "#/definitions/DatasetImportJob" + }, + "DatasetType": { + "description": "The type of dataset", + "enum": [ + "Interactions", + "Items", + "Users" + ], + "maxLength": 256, + "type": "string" + }, + "Name": { + "description": "The name for the dataset", + "maxLength": 63, + "minLength": 1, + "pattern": "^[a-zA-Z0-9][a-zA-Z0-9\\-_]*", + "type": "string" + }, + "SchemaArn": { + "description": "The ARN of the schema to associate with the dataset. The schema defines the dataset fields.", + "maxLength": 256, + "pattern": "arn:([a-z\\d-]+):personalize:.*:.*:.+", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/DatasetArn" + ], + "replacementStrategy": "delete_then_create", + "required": [ + "Name", + "DatasetType", + "DatasetGroupArn", + "SchemaArn" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-personalize", + "taggable": false, + "typeName": "AWS::Personalize::Dataset" +} diff --git a/src/schema/aws-personalize-datasetgroup.json b/src/schema/aws-personalize-datasetgroup.json new file mode 100644 index 00000000..1247c400 --- /dev/null +++ b/src/schema/aws-personalize-datasetgroup.json @@ -0,0 +1,82 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name", + "/properties/RoleArn", + "/properties/KmsKeyArn", + "/properties/Domain" + ], + "description": "Resource Schema for AWS::Personalize::DatasetGroup.", + "handlers": { + "create": { + "permissions": [ + "personalize:CreateDatasetGroup", + "personalize:DescribeDatasetGroup", + "iam:PassRole" + ] + }, + "delete": { + "permissions": [ + "personalize:DescribeDatasetGroup", + "personalize:DeleteDatasetGroup" + ] + }, + "list": { + "permissions": [ + "personalize:ListDatasetGroups" + ] + }, + "read": { + "permissions": [ + "personalize:DescribeDatasetGroup" + ] + } + }, + "primaryIdentifier": [ + "/properties/DatasetGroupArn" + ], + "properties": { + "DatasetGroupArn": { + "description": "The Amazon Resource Name (ARN) of the dataset group.", + "maxLength": 256, + "pattern": "arn:([a-z\\d-]+):personalize:.*:.*:.+", + "type": "string" + }, + "Domain": { + "description": "The domain of a Domain dataset group.", + "enum": [ + "ECOMMERCE", + "VIDEO_ON_DEMAND" + ], + "type": "string" + }, + "KmsKeyArn": { + "description": "The Amazon Resource Name(ARN) of a AWS Key Management Service (KMS) key used to encrypt the datasets.", + "maxLength": 2048, + "pattern": "arn:aws.*:kms:.*:[0-9]{12}:key/.*", + "type": "string" + }, + "Name": { + "description": "The name for the new dataset group.", + "maxLength": 63, + "minLength": 1, + "pattern": "^[a-zA-Z0-9][a-zA-Z0-9\\-_]*", + "type": "string" + }, + "RoleArn": { + "description": "The ARN of the AWS Identity and Access Management (IAM) role that has permissions to access the AWS Key Management Service (KMS) key. Supplying an IAM role is only valid when also specifying a KMS key.", + "maxLength": 256, + "minLength": 0, + "pattern": "arn:([a-z\\d-]+):iam::\\d{12}:role/?[a-zA-Z_0-9+=,.@\\-_/]+", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/DatasetGroupArn" + ], + "required": [ + "Name" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-personalize", + "typeName": "AWS::Personalize::DatasetGroup" +} diff --git a/src/schema/aws-personalize-schema.json b/src/schema/aws-personalize-schema.json new file mode 100644 index 00000000..c8e1fc88 --- /dev/null +++ b/src/schema/aws-personalize-schema.json @@ -0,0 +1,73 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name", + "/properties/Schema", + "/properties/Domain" + ], + "description": "Resource schema for AWS::Personalize::Schema.", + "handlers": { + "create": { + "permissions": [ + "personalize:CreateSchema", + "personalize:DescribeSchema" + ] + }, + "delete": { + "permissions": [ + "personalize:DeleteSchema", + "personalize:DescribeSchema" + ] + }, + "list": { + "permissions": [ + "personalize:ListSchemas" + ] + }, + "read": { + "permissions": [ + "personalize:DescribeSchema" + ] + } + }, + "primaryIdentifier": [ + "/properties/SchemaArn" + ], + "properties": { + "Domain": { + "description": "The domain of a Domain dataset group.", + "enum": [ + "ECOMMERCE", + "VIDEO_ON_DEMAND" + ], + "type": "string" + }, + "Name": { + "description": "Name for the schema.", + "maxLength": 63, + "minLength": 1, + "pattern": "^[a-zA-Z0-9][a-zA-Z0-9\\-_]*", + "type": "string" + }, + "Schema": { + "description": "A schema in Avro JSON format.", + "maxLength": 10000, + "type": "string" + }, + "SchemaArn": { + "description": "Arn for the schema.", + "maxLength": 256, + "pattern": "arn:([a-z\\d-]+):personalize:.*:.*:.+", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/SchemaArn" + ], + "required": [ + "Name", + "Schema" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-personalize", + "typeName": "AWS::Personalize::Schema" +} diff --git a/src/schema/aws-personalize-solution.json b/src/schema/aws-personalize-solution.json new file mode 100644 index 00000000..ea3ae312 --- /dev/null +++ b/src/schema/aws-personalize-solution.json @@ -0,0 +1,304 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name", + "/properties/EventType", + "/properties/DatasetGroupArn", + "/properties/PerformAutoML", + "/properties/PerformHPO", + "/properties/RecipeArn", + "/properties/SolutionConfig" + ], + "definitions": { + "CategoricalHyperParameterRange": { + "additionalProperties": false, + "description": "Provides the name and values of a Categorical hyperparameter.", + "properties": { + "Name": { + "description": "The name of the hyperparameter.", + "maxLength": 256, + "type": "string" + }, + "Values": { + "description": "A list of the categories for the hyperparameter.", + "insertionOrder": true, + "items": { + "maxLength": 1000, + "type": "string" + }, + "maxItems": 100, + "type": "array" + } + }, + "type": "object" + }, + "ContinuousHyperParameterRange": { + "additionalProperties": false, + "description": "Provides the name and range of a continuous hyperparameter.", + "properties": { + "MaxValue": { + "description": "The maximum allowable value for the hyperparameter.", + "minimum": -1000000, + "type": "number" + }, + "MinValue": { + "description": "The minimum allowable value for the hyperparameter.", + "minimum": -1000000, + "type": "number" + }, + "Name": { + "description": "The name of the hyperparameter.", + "maxLength": 256, + "type": "string" + } + }, + "type": "object" + }, + "IntegerHyperParameterRange": { + "additionalProperties": false, + "description": "Provides the name and range of an integer-valued hyperparameter.", + "properties": { + "MaxValue": { + "description": "The maximum allowable value for the hyperparameter.", + "maximum": 1000000, + "type": "integer" + }, + "MinValue": { + "description": "The minimum allowable value for the hyperparameter.", + "minimum": -1000000, + "type": "integer" + }, + "Name": { + "description": "The name of the hyperparameter.", + "maxLength": 256, + "type": "string" + } + }, + "type": "object" + }, + "SolutionArn": { + "description": "The ARN of the solution", + "maxLength": 256, + "pattern": "arn:([a-z\\d-]+):personalize:.*:.*:.+", + "type": "string" + }, + "SolutionConfig": { + "additionalProperties": false, + "description": "The configuration to use with the solution. When performAutoML is set to true, Amazon Personalize only evaluates the autoMLConfig section of the solution configuration.", + "properties": { + "AlgorithmHyperParameters": { + "additionalProperties": false, + "description": "Lists the hyperparameter names and ranges.", + "maxProperties": 100, + "patternProperties": { + ".{1,}": { + "type": "string" + } + }, + "type": "object" + }, + "AutoMLConfig": { + "additionalProperties": false, + "description": "The AutoMLConfig object containing a list of recipes to search when AutoML is performed.", + "properties": { + "MetricName": { + "description": "The metric to optimize.", + "maxLength": 256, + "type": "string" + }, + "RecipeList": { + "description": "The list of candidate recipes.", + "insertionOrder": true, + "items": { + "maxLength": 256, + "pattern": "arn:([a-z\\d-]+):personalize:.*:.*:.+", + "type": "string" + }, + "maxItems": 100, + "type": "array" + } + }, + "type": "object" + }, + "EventValueThreshold": { + "description": "Only events with a value greater than or equal to this threshold are used for training a model.", + "maxLength": 256, + "type": "string" + }, + "FeatureTransformationParameters": { + "additionalProperties": false, + "description": "Lists the feature transformation parameters.", + "maxProperties": 100, + "patternProperties": { + ".{1,}": { + "type": "string" + } + }, + "type": "object" + }, + "HpoConfig": { + "additionalProperties": false, + "description": "Describes the properties for hyperparameter optimization (HPO)", + "properties": { + "AlgorithmHyperParameterRanges": { + "additionalProperties": false, + "description": "The hyperparameters and their allowable ranges", + "properties": { + "CategoricalHyperParameterRanges": { + "description": "The categorical hyperparameters and their ranges.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/CategoricalHyperParameterRange" + }, + "maxItems": 100, + "type": "array" + }, + "ContinuousHyperParameterRanges": { + "description": "The continuous hyperparameters and their ranges.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/ContinuousHyperParameterRange" + }, + "maxItems": 100, + "type": "array" + }, + "IntegerHyperParameterRanges": { + "description": "The integer hyperparameters and their ranges.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/IntegerHyperParameterRange" + }, + "maxItems": 100, + "type": "array" + } + }, + "type": "object" + }, + "HpoObjective": { + "additionalProperties": false, + "description": "The metric to optimize during HPO.", + "properties": { + "MetricName": { + "description": "The name of the metric", + "maxLength": 256, + "type": "string" + }, + "MetricRegex": { + "description": "A regular expression for finding the metric in the training job logs.", + "maxLength": 256, + "type": "string" + }, + "Type": { + "description": "The type of the metric. Valid values are Maximize and Minimize.", + "enum": [ + "Maximize", + "Minimize" + ], + "type": "string" + } + }, + "type": "object" + }, + "HpoResourceConfig": { + "additionalProperties": false, + "description": "Describes the resource configuration for hyperparameter optimization (HPO).", + "properties": { + "MaxNumberOfTrainingJobs": { + "description": "The maximum number of training jobs when you create a solution version. The maximum value for maxNumberOfTrainingJobs is 40.", + "maxLength": 256, + "type": "string" + }, + "MaxParallelTrainingJobs": { + "description": "The maximum number of parallel training jobs when you create a solution version. The maximum value for maxParallelTrainingJobs is 10.", + "maxLength": 256, + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "description": "Resource schema for AWS::Personalize::Solution.", + "handlers": { + "create": { + "permissions": [ + "personalize:CreateSolution", + "personalize:DescribeSolution" + ] + }, + "delete": { + "permissions": [ + "personalize:DeleteSolution", + "personalize:DescribeSolution" + ] + }, + "list": { + "permissions": [ + "personalize:ListSolutions" + ] + }, + "read": { + "permissions": [ + "personalize:DescribeSolution" + ] + } + }, + "primaryIdentifier": [ + "/properties/SolutionArn" + ], + "properties": { + "DatasetGroupArn": { + "description": "The ARN of the dataset group that provides the training data.", + "maxLength": 256, + "pattern": "arn:([a-z\\d-]+):personalize:.*:.*:.+", + "type": "string" + }, + "EventType": { + "description": "When your have multiple event types (using an EVENT_TYPE schema field), this parameter specifies which event type (for example, 'click' or 'like') is used for training the model. If you do not provide an eventType, Amazon Personalize will use all interactions for training with equal weight regardless of type.", + "maxLength": 256, + "type": "string" + }, + "Name": { + "description": "The name for the solution", + "maxLength": 63, + "minLength": 1, + "pattern": "^[a-zA-Z0-9][a-zA-Z0-9\\-_]*", + "type": "string" + }, + "PerformAutoML": { + "description": "Whether to perform automated machine learning (AutoML). The default is false. For this case, you must specify recipeArn.", + "type": "boolean" + }, + "PerformHPO": { + "description": "Whether to perform hyperparameter optimization (HPO) on the specified or selected recipe. The default is false. When performing AutoML, this parameter is always true and you should not set it to false.", + "type": "boolean" + }, + "RecipeArn": { + "description": "The ARN of the recipe to use for model training. Only specified when performAutoML is false.", + "maxLength": 256, + "pattern": "arn:([a-z\\d-]+):personalize:.*:.*:.+", + "type": "string" + }, + "SolutionArn": { + "$ref": "#/definitions/SolutionArn" + }, + "SolutionConfig": { + "$ref": "#/definitions/SolutionConfig" + } + }, + "readOnlyProperties": [ + "/properties/SolutionArn" + ], + "required": [ + "Name", + "DatasetGroupArn" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-personalize", + "taggable": false, + "typeName": "AWS::Personalize::Solution" +} diff --git a/src/schema/aws-pinpoint-admchannel.json b/src/schema/aws-pinpoint-admchannel.json new file mode 100644 index 00000000..2c541808 --- /dev/null +++ b/src/schema/aws-pinpoint-admchannel.json @@ -0,0 +1,36 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ApplicationId" + ], + "description": "Resource Type definition for AWS::Pinpoint::ADMChannel", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "ApplicationId": { + "type": "string" + }, + "ClientId": { + "type": "string" + }, + "ClientSecret": { + "type": "string" + }, + "Enabled": { + "type": "boolean" + }, + "Id": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "ApplicationId", + "ClientId", + "ClientSecret" + ], + "typeName": "AWS::Pinpoint::ADMChannel" +} diff --git a/src/schema/aws-pinpoint-apnschannel.json b/src/schema/aws-pinpoint-apnschannel.json new file mode 100644 index 00000000..fc62c018 --- /dev/null +++ b/src/schema/aws-pinpoint-apnschannel.json @@ -0,0 +1,49 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ApplicationId" + ], + "description": "Resource Type definition for AWS::Pinpoint::APNSChannel", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "ApplicationId": { + "type": "string" + }, + "BundleId": { + "type": "string" + }, + "Certificate": { + "type": "string" + }, + "DefaultAuthenticationMethod": { + "type": "string" + }, + "Enabled": { + "type": "boolean" + }, + "Id": { + "type": "string" + }, + "PrivateKey": { + "type": "string" + }, + "TeamId": { + "type": "string" + }, + "TokenKey": { + "type": "string" + }, + "TokenKeyId": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "ApplicationId" + ], + "typeName": "AWS::Pinpoint::APNSChannel" +} diff --git a/src/schema/aws-pinpoint-apnssandboxchannel.json b/src/schema/aws-pinpoint-apnssandboxchannel.json new file mode 100644 index 00000000..35dec1ce --- /dev/null +++ b/src/schema/aws-pinpoint-apnssandboxchannel.json @@ -0,0 +1,49 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ApplicationId" + ], + "description": "Resource Type definition for AWS::Pinpoint::APNSSandboxChannel", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "ApplicationId": { + "type": "string" + }, + "BundleId": { + "type": "string" + }, + "Certificate": { + "type": "string" + }, + "DefaultAuthenticationMethod": { + "type": "string" + }, + "Enabled": { + "type": "boolean" + }, + "Id": { + "type": "string" + }, + "PrivateKey": { + "type": "string" + }, + "TeamId": { + "type": "string" + }, + "TokenKey": { + "type": "string" + }, + "TokenKeyId": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "ApplicationId" + ], + "typeName": "AWS::Pinpoint::APNSSandboxChannel" +} diff --git a/src/schema/aws-pinpoint-apnsvoipchannel.json b/src/schema/aws-pinpoint-apnsvoipchannel.json new file mode 100644 index 00000000..53d20fe8 --- /dev/null +++ b/src/schema/aws-pinpoint-apnsvoipchannel.json @@ -0,0 +1,49 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ApplicationId" + ], + "description": "Resource Type definition for AWS::Pinpoint::APNSVoipChannel", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "ApplicationId": { + "type": "string" + }, + "BundleId": { + "type": "string" + }, + "Certificate": { + "type": "string" + }, + "DefaultAuthenticationMethod": { + "type": "string" + }, + "Enabled": { + "type": "boolean" + }, + "Id": { + "type": "string" + }, + "PrivateKey": { + "type": "string" + }, + "TeamId": { + "type": "string" + }, + "TokenKey": { + "type": "string" + }, + "TokenKeyId": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "ApplicationId" + ], + "typeName": "AWS::Pinpoint::APNSVoipChannel" +} diff --git a/src/schema/aws-pinpoint-apnsvoipsandboxchannel.json b/src/schema/aws-pinpoint-apnsvoipsandboxchannel.json new file mode 100644 index 00000000..4dfefb2d --- /dev/null +++ b/src/schema/aws-pinpoint-apnsvoipsandboxchannel.json @@ -0,0 +1,49 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ApplicationId" + ], + "description": "Resource Type definition for AWS::Pinpoint::APNSVoipSandboxChannel", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "ApplicationId": { + "type": "string" + }, + "BundleId": { + "type": "string" + }, + "Certificate": { + "type": "string" + }, + "DefaultAuthenticationMethod": { + "type": "string" + }, + "Enabled": { + "type": "boolean" + }, + "Id": { + "type": "string" + }, + "PrivateKey": { + "type": "string" + }, + "TeamId": { + "type": "string" + }, + "TokenKey": { + "type": "string" + }, + "TokenKeyId": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "ApplicationId" + ], + "typeName": "AWS::Pinpoint::APNSVoipSandboxChannel" +} diff --git a/src/schema/aws-pinpoint-app.json b/src/schema/aws-pinpoint-app.json new file mode 100644 index 00000000..d099dc82 --- /dev/null +++ b/src/schema/aws-pinpoint-app.json @@ -0,0 +1,32 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name" + ], + "description": "Resource Type definition for AWS::Pinpoint::App", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Arn": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "Name": { + "type": "string" + }, + "Tags": { + "type": "object" + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/Id" + ], + "required": [ + "Name" + ], + "typeName": "AWS::Pinpoint::App" +} diff --git a/src/schema/aws-pinpoint-applicationsettings.json b/src/schema/aws-pinpoint-applicationsettings.json new file mode 100644 index 00000000..a28d4644 --- /dev/null +++ b/src/schema/aws-pinpoint-applicationsettings.json @@ -0,0 +1,88 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ApplicationId" + ], + "definitions": { + "CampaignHook": { + "additionalProperties": false, + "properties": { + "LambdaFunctionName": { + "type": "string" + }, + "Mode": { + "type": "string" + }, + "WebUrl": { + "type": "string" + } + }, + "type": "object" + }, + "Limits": { + "additionalProperties": false, + "properties": { + "Daily": { + "type": "integer" + }, + "MaximumDuration": { + "type": "integer" + }, + "MessagesPerSecond": { + "type": "integer" + }, + "Total": { + "type": "integer" + } + }, + "type": "object" + }, + "QuietTime": { + "additionalProperties": false, + "properties": { + "End": { + "type": "string" + }, + "Start": { + "type": "string" + } + }, + "required": [ + "Start", + "End" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::Pinpoint::ApplicationSettings", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "ApplicationId": { + "type": "string" + }, + "CampaignHook": { + "$ref": "#/definitions/CampaignHook" + }, + "CloudWatchMetricsEnabled": { + "type": "boolean" + }, + "Id": { + "type": "string" + }, + "Limits": { + "$ref": "#/definitions/Limits" + }, + "QuietTime": { + "$ref": "#/definitions/QuietTime" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "ApplicationId" + ], + "typeName": "AWS::Pinpoint::ApplicationSettings" +} diff --git a/src/schema/aws-pinpoint-baiduchannel.json b/src/schema/aws-pinpoint-baiduchannel.json new file mode 100644 index 00000000..e07692e9 --- /dev/null +++ b/src/schema/aws-pinpoint-baiduchannel.json @@ -0,0 +1,36 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ApplicationId" + ], + "description": "Resource Type definition for AWS::Pinpoint::BaiduChannel", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "ApiKey": { + "type": "string" + }, + "ApplicationId": { + "type": "string" + }, + "Enabled": { + "type": "boolean" + }, + "Id": { + "type": "string" + }, + "SecretKey": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "ApplicationId", + "SecretKey", + "ApiKey" + ], + "typeName": "AWS::Pinpoint::BaiduChannel" +} diff --git a/src/schema/aws-pinpoint-campaign.json b/src/schema/aws-pinpoint-campaign.json new file mode 100644 index 00000000..e3d597b8 --- /dev/null +++ b/src/schema/aws-pinpoint-campaign.json @@ -0,0 +1,537 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ApplicationId" + ], + "definitions": { + "CampaignCustomMessage": { + "additionalProperties": false, + "properties": { + "Data": { + "type": "string" + } + }, + "type": "object" + }, + "CampaignEmailMessage": { + "additionalProperties": false, + "properties": { + "Body": { + "type": "string" + }, + "FromAddress": { + "type": "string" + }, + "HtmlBody": { + "type": "string" + }, + "Title": { + "type": "string" + } + }, + "type": "object" + }, + "CampaignEventFilter": { + "additionalProperties": false, + "properties": { + "Dimensions": { + "$ref": "#/definitions/EventDimensions" + }, + "FilterType": { + "type": "string" + } + }, + "type": "object" + }, + "CampaignHook": { + "additionalProperties": false, + "properties": { + "LambdaFunctionName": { + "type": "string" + }, + "Mode": { + "type": "string" + }, + "WebUrl": { + "type": "string" + } + }, + "type": "object" + }, + "CampaignInAppMessage": { + "additionalProperties": false, + "properties": { + "Content": { + "items": { + "$ref": "#/definitions/InAppMessageContent" + }, + "type": "array", + "uniqueItems": false + }, + "CustomConfig": { + "type": "object" + }, + "Layout": { + "type": "string" + } + }, + "type": "object" + }, + "CampaignSmsMessage": { + "additionalProperties": false, + "properties": { + "Body": { + "type": "string" + }, + "EntityId": { + "type": "string" + }, + "MessageType": { + "type": "string" + }, + "OriginationNumber": { + "type": "string" + }, + "SenderId": { + "type": "string" + }, + "TemplateId": { + "type": "string" + } + }, + "type": "object" + }, + "CustomDeliveryConfiguration": { + "additionalProperties": false, + "properties": { + "DeliveryUri": { + "type": "string" + }, + "EndpointTypes": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + }, + "DefaultButtonConfiguration": { + "additionalProperties": false, + "properties": { + "BackgroundColor": { + "type": "string" + }, + "BorderRadius": { + "type": "integer" + }, + "ButtonAction": { + "type": "string" + }, + "Link": { + "type": "string" + }, + "Text": { + "type": "string" + }, + "TextColor": { + "type": "string" + } + }, + "type": "object" + }, + "EventDimensions": { + "additionalProperties": false, + "properties": { + "Attributes": { + "type": "object" + }, + "EventType": { + "$ref": "#/definitions/SetDimension" + }, + "Metrics": { + "type": "object" + } + }, + "type": "object" + }, + "InAppMessageBodyConfig": { + "additionalProperties": false, + "properties": { + "Alignment": { + "type": "string" + }, + "Body": { + "type": "string" + }, + "TextColor": { + "type": "string" + } + }, + "type": "object" + }, + "InAppMessageButton": { + "additionalProperties": false, + "properties": { + "Android": { + "$ref": "#/definitions/OverrideButtonConfiguration" + }, + "DefaultConfig": { + "$ref": "#/definitions/DefaultButtonConfiguration" + }, + "IOS": { + "$ref": "#/definitions/OverrideButtonConfiguration" + }, + "Web": { + "$ref": "#/definitions/OverrideButtonConfiguration" + } + }, + "type": "object" + }, + "InAppMessageContent": { + "additionalProperties": false, + "properties": { + "BackgroundColor": { + "type": "string" + }, + "BodyConfig": { + "$ref": "#/definitions/InAppMessageBodyConfig" + }, + "HeaderConfig": { + "$ref": "#/definitions/InAppMessageHeaderConfig" + }, + "ImageUrl": { + "type": "string" + }, + "PrimaryBtn": { + "$ref": "#/definitions/InAppMessageButton" + }, + "SecondaryBtn": { + "$ref": "#/definitions/InAppMessageButton" + } + }, + "type": "object" + }, + "InAppMessageHeaderConfig": { + "additionalProperties": false, + "properties": { + "Alignment": { + "type": "string" + }, + "Header": { + "type": "string" + }, + "TextColor": { + "type": "string" + } + }, + "type": "object" + }, + "Limits": { + "additionalProperties": false, + "properties": { + "Daily": { + "type": "integer" + }, + "MaximumDuration": { + "type": "integer" + }, + "MessagesPerSecond": { + "type": "integer" + }, + "Session": { + "type": "integer" + }, + "Total": { + "type": "integer" + } + }, + "type": "object" + }, + "Message": { + "additionalProperties": false, + "properties": { + "Action": { + "type": "string" + }, + "Body": { + "type": "string" + }, + "ImageIconUrl": { + "type": "string" + }, + "ImageSmallIconUrl": { + "type": "string" + }, + "ImageUrl": { + "type": "string" + }, + "JsonBody": { + "type": "string" + }, + "MediaUrl": { + "type": "string" + }, + "RawContent": { + "type": "string" + }, + "SilentPush": { + "type": "boolean" + }, + "TimeToLive": { + "type": "integer" + }, + "Title": { + "type": "string" + }, + "Url": { + "type": "string" + } + }, + "type": "object" + }, + "MessageConfiguration": { + "additionalProperties": false, + "properties": { + "ADMMessage": { + "$ref": "#/definitions/Message" + }, + "APNSMessage": { + "$ref": "#/definitions/Message" + }, + "BaiduMessage": { + "$ref": "#/definitions/Message" + }, + "CustomMessage": { + "$ref": "#/definitions/CampaignCustomMessage" + }, + "DefaultMessage": { + "$ref": "#/definitions/Message" + }, + "EmailMessage": { + "$ref": "#/definitions/CampaignEmailMessage" + }, + "GCMMessage": { + "$ref": "#/definitions/Message" + }, + "InAppMessage": { + "$ref": "#/definitions/CampaignInAppMessage" + }, + "SMSMessage": { + "$ref": "#/definitions/CampaignSmsMessage" + } + }, + "type": "object" + }, + "OverrideButtonConfiguration": { + "additionalProperties": false, + "properties": { + "ButtonAction": { + "type": "string" + }, + "Link": { + "type": "string" + } + }, + "type": "object" + }, + "QuietTime": { + "additionalProperties": false, + "properties": { + "End": { + "type": "string" + }, + "Start": { + "type": "string" + } + }, + "required": [ + "Start", + "End" + ], + "type": "object" + }, + "Schedule": { + "additionalProperties": false, + "properties": { + "EndTime": { + "type": "string" + }, + "EventFilter": { + "$ref": "#/definitions/CampaignEventFilter" + }, + "Frequency": { + "type": "string" + }, + "IsLocalTime": { + "type": "boolean" + }, + "QuietTime": { + "$ref": "#/definitions/QuietTime" + }, + "StartTime": { + "type": "string" + }, + "TimeZone": { + "type": "string" + } + }, + "type": "object" + }, + "SetDimension": { + "additionalProperties": false, + "properties": { + "DimensionType": { + "type": "string" + }, + "Values": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + }, + "Template": { + "additionalProperties": false, + "properties": { + "Name": { + "type": "string" + }, + "Version": { + "type": "string" + } + }, + "type": "object" + }, + "TemplateConfiguration": { + "additionalProperties": false, + "properties": { + "EmailTemplate": { + "$ref": "#/definitions/Template" + }, + "PushTemplate": { + "$ref": "#/definitions/Template" + }, + "SMSTemplate": { + "$ref": "#/definitions/Template" + }, + "VoiceTemplate": { + "$ref": "#/definitions/Template" + } + }, + "type": "object" + }, + "WriteTreatmentResource": { + "additionalProperties": false, + "properties": { + "CustomDeliveryConfiguration": { + "$ref": "#/definitions/CustomDeliveryConfiguration" + }, + "MessageConfiguration": { + "$ref": "#/definitions/MessageConfiguration" + }, + "Schedule": { + "$ref": "#/definitions/Schedule" + }, + "SizePercent": { + "type": "integer" + }, + "TemplateConfiguration": { + "$ref": "#/definitions/TemplateConfiguration" + }, + "TreatmentDescription": { + "type": "string" + }, + "TreatmentName": { + "type": "string" + } + }, + "type": "object" + } + }, + "description": "Resource Type definition for AWS::Pinpoint::Campaign", + "primaryIdentifier": [ + "/properties/CampaignId" + ], + "properties": { + "AdditionalTreatments": { + "items": { + "$ref": "#/definitions/WriteTreatmentResource" + }, + "type": "array", + "uniqueItems": false + }, + "ApplicationId": { + "type": "string" + }, + "Arn": { + "type": "string" + }, + "CampaignHook": { + "$ref": "#/definitions/CampaignHook" + }, + "CampaignId": { + "type": "string" + }, + "CustomDeliveryConfiguration": { + "$ref": "#/definitions/CustomDeliveryConfiguration" + }, + "Description": { + "type": "string" + }, + "HoldoutPercent": { + "type": "integer" + }, + "IsPaused": { + "type": "boolean" + }, + "Limits": { + "$ref": "#/definitions/Limits" + }, + "MessageConfiguration": { + "$ref": "#/definitions/MessageConfiguration" + }, + "Name": { + "type": "string" + }, + "Priority": { + "type": "integer" + }, + "Schedule": { + "$ref": "#/definitions/Schedule" + }, + "SegmentId": { + "type": "string" + }, + "SegmentVersion": { + "type": "integer" + }, + "Tags": { + "type": "object" + }, + "TemplateConfiguration": { + "$ref": "#/definitions/TemplateConfiguration" + }, + "TreatmentDescription": { + "type": "string" + }, + "TreatmentName": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/CampaignId" + ], + "required": [ + "SegmentId", + "Schedule", + "ApplicationId", + "Name" + ], + "typeName": "AWS::Pinpoint::Campaign" +} diff --git a/src/schema/aws-pinpoint-emailchannel.json b/src/schema/aws-pinpoint-emailchannel.json new file mode 100644 index 00000000..d320b190 --- /dev/null +++ b/src/schema/aws-pinpoint-emailchannel.json @@ -0,0 +1,45 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ApplicationId" + ], + "description": "Resource Type definition for AWS::Pinpoint::EmailChannel", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "ApplicationId": { + "type": "string" + }, + "ConfigurationSet": { + "type": "string" + }, + "Enabled": { + "type": "boolean" + }, + "FromAddress": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "Identity": { + "type": "string" + }, + "OrchestrationSendingRoleArn": { + "type": "string" + }, + "RoleArn": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "FromAddress", + "ApplicationId", + "Identity" + ], + "typeName": "AWS::Pinpoint::EmailChannel" +} diff --git a/src/schema/aws-pinpoint-emailtemplate.json b/src/schema/aws-pinpoint-emailtemplate.json new file mode 100644 index 00000000..76c92a78 --- /dev/null +++ b/src/schema/aws-pinpoint-emailtemplate.json @@ -0,0 +1,48 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/TemplateName" + ], + "description": "Resource Type definition for AWS::Pinpoint::EmailTemplate", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Arn": { + "type": "string" + }, + "DefaultSubstitutions": { + "type": "string" + }, + "HtmlPart": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "Subject": { + "type": "string" + }, + "Tags": { + "type": "object" + }, + "TemplateDescription": { + "type": "string" + }, + "TemplateName": { + "type": "string" + }, + "TextPart": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id", + "/properties/Arn" + ], + "required": [ + "TemplateName", + "Subject" + ], + "typeName": "AWS::Pinpoint::EmailTemplate" +} diff --git a/src/schema/aws-pinpoint-eventstream.json b/src/schema/aws-pinpoint-eventstream.json new file mode 100644 index 00000000..465e651c --- /dev/null +++ b/src/schema/aws-pinpoint-eventstream.json @@ -0,0 +1,33 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ApplicationId" + ], + "description": "Resource Type definition for AWS::Pinpoint::EventStream", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "ApplicationId": { + "type": "string" + }, + "DestinationStreamArn": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "RoleArn": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "ApplicationId", + "DestinationStreamArn", + "RoleArn" + ], + "typeName": "AWS::Pinpoint::EventStream" +} diff --git a/src/schema/aws-pinpoint-gcmchannel.json b/src/schema/aws-pinpoint-gcmchannel.json new file mode 100644 index 00000000..132664d9 --- /dev/null +++ b/src/schema/aws-pinpoint-gcmchannel.json @@ -0,0 +1,37 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ApplicationId" + ], + "description": "Resource Type definition for AWS::Pinpoint::GCMChannel", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "ApiKey": { + "type": "string" + }, + "ApplicationId": { + "type": "string" + }, + "DefaultAuthenticationMethod": { + "type": "string" + }, + "Enabled": { + "type": "boolean" + }, + "Id": { + "type": "string" + }, + "ServiceJson": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "ApplicationId" + ], + "typeName": "AWS::Pinpoint::GCMChannel" +} diff --git a/src/schema/aws-pinpoint-inapptemplate.json b/src/schema/aws-pinpoint-inapptemplate.json new file mode 100644 index 00000000..60f2574e --- /dev/null +++ b/src/schema/aws-pinpoint-inapptemplate.json @@ -0,0 +1,225 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/TemplateName" + ], + "definitions": { + "Alignment": { + "enum": [ + "LEFT", + "CENTER", + "RIGHT" + ], + "type": "string" + }, + "BodyConfig": { + "additionalProperties": false, + "properties": { + "Alignment": { + "$ref": "#/definitions/Alignment" + }, + "Body": { + "type": "string" + }, + "TextColor": { + "type": "string" + } + }, + "type": "object" + }, + "ButtonAction": { + "enum": [ + "LINK", + "DEEP_LINK", + "CLOSE" + ], + "type": "string" + }, + "ButtonConfig": { + "additionalProperties": false, + "properties": { + "Android": { + "$ref": "#/definitions/OverrideButtonConfiguration" + }, + "DefaultConfig": { + "$ref": "#/definitions/DefaultButtonConfiguration" + }, + "IOS": { + "$ref": "#/definitions/OverrideButtonConfiguration" + }, + "Web": { + "$ref": "#/definitions/OverrideButtonConfiguration" + } + }, + "type": "object" + }, + "DefaultButtonConfiguration": { + "additionalProperties": false, + "properties": { + "BackgroundColor": { + "type": "string" + }, + "BorderRadius": { + "type": "integer" + }, + "ButtonAction": { + "$ref": "#/definitions/ButtonAction" + }, + "Link": { + "type": "string" + }, + "Text": { + "type": "string" + }, + "TextColor": { + "type": "string" + } + }, + "type": "object" + }, + "HeaderConfig": { + "additionalProperties": false, + "properties": { + "Alignment": { + "$ref": "#/definitions/Alignment" + }, + "Header": { + "type": "string" + }, + "TextColor": { + "type": "string" + } + }, + "type": "object" + }, + "InAppMessageContent": { + "additionalProperties": false, + "properties": { + "BackgroundColor": { + "type": "string" + }, + "BodyConfig": { + "$ref": "#/definitions/BodyConfig" + }, + "HeaderConfig": { + "$ref": "#/definitions/HeaderConfig" + }, + "ImageUrl": { + "type": "string" + }, + "PrimaryBtn": { + "$ref": "#/definitions/ButtonConfig" + }, + "SecondaryBtn": { + "$ref": "#/definitions/ButtonConfig" + } + }, + "type": "object" + }, + "OverrideButtonConfiguration": { + "additionalProperties": false, + "properties": { + "ButtonAction": { + "$ref": "#/definitions/ButtonAction" + }, + "Link": { + "type": "string" + } + }, + "type": "object" + } + }, + "description": "Resource Type definition for AWS::Pinpoint::InAppTemplate", + "handlers": { + "create": { + "permissions": [ + "mobiletargeting:CreateInAppTemplate", + "mobiletargeting:GetInAppTemplate", + "mobiletargeting:TagResource" + ] + }, + "delete": { + "permissions": [ + "mobiletargeting:DeleteInAppTemplate", + "mobiletargeting:GetInAppTemplate" + ] + }, + "list": { + "permissions": [ + "mobiletargeting:GetInAppTemplate", + "mobiletargeting:ListTemplates" + ] + }, + "read": { + "permissions": [ + "mobiletargeting:GetInAppTemplate", + "mobiletargeting:ListTemplates" + ] + }, + "update": { + "permissions": [ + "mobiletargeting:UpdateInAppTemplate", + "mobiletargeting:GetInAppTemplate", + "mobiletargeting:TagResource", + "mobiletargeting:UntagResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/TemplateName" + ], + "properties": { + "Arn": { + "type": "string" + }, + "Content": { + "insertionOrder": true, + "items": { + "$ref": "#/definitions/InAppMessageContent" + }, + "type": "array" + }, + "CustomConfig": { + "type": "object" + }, + "Layout": { + "enum": [ + "BOTTOM_BANNER", + "TOP_BANNER", + "OVERLAYS", + "MOBILE_FEED", + "MIDDLE_BANNER", + "CAROUSEL" + ], + "type": "string" + }, + "Tags": { + "type": "object" + }, + "TemplateDescription": { + "type": "string" + }, + "TemplateName": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Arn" + ], + "required": [ + "TemplateName" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "mobiletargeting:TagResource", + "mobiletargeting:UntagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::Pinpoint::InAppTemplate" +} diff --git a/src/schema/aws-pinpoint-pushtemplate.json b/src/schema/aws-pinpoint-pushtemplate.json new file mode 100644 index 00000000..a268987e --- /dev/null +++ b/src/schema/aws-pinpoint-pushtemplate.json @@ -0,0 +1,130 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/TemplateName" + ], + "definitions": { + "APNSPushNotificationTemplate": { + "additionalProperties": false, + "properties": { + "Action": { + "type": "string" + }, + "Body": { + "type": "string" + }, + "MediaUrl": { + "type": "string" + }, + "Sound": { + "type": "string" + }, + "Title": { + "type": "string" + }, + "Url": { + "type": "string" + } + }, + "type": "object" + }, + "AndroidPushNotificationTemplate": { + "additionalProperties": false, + "properties": { + "Action": { + "type": "string" + }, + "Body": { + "type": "string" + }, + "ImageIconUrl": { + "type": "string" + }, + "ImageUrl": { + "type": "string" + }, + "SmallImageIconUrl": { + "type": "string" + }, + "Sound": { + "type": "string" + }, + "Title": { + "type": "string" + }, + "Url": { + "type": "string" + } + }, + "type": "object" + }, + "DefaultPushNotificationTemplate": { + "additionalProperties": false, + "properties": { + "Action": { + "type": "string" + }, + "Body": { + "type": "string" + }, + "Sound": { + "type": "string" + }, + "Title": { + "type": "string" + }, + "Url": { + "type": "string" + } + }, + "type": "object" + } + }, + "description": "Resource Type definition for AWS::Pinpoint::PushTemplate", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "ADM": { + "$ref": "#/definitions/AndroidPushNotificationTemplate" + }, + "APNS": { + "$ref": "#/definitions/APNSPushNotificationTemplate" + }, + "Arn": { + "type": "string" + }, + "Baidu": { + "$ref": "#/definitions/AndroidPushNotificationTemplate" + }, + "Default": { + "$ref": "#/definitions/DefaultPushNotificationTemplate" + }, + "DefaultSubstitutions": { + "type": "string" + }, + "GCM": { + "$ref": "#/definitions/AndroidPushNotificationTemplate" + }, + "Id": { + "type": "string" + }, + "Tags": { + "type": "object" + }, + "TemplateDescription": { + "type": "string" + }, + "TemplateName": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id", + "/properties/Arn" + ], + "required": [ + "TemplateName" + ], + "typeName": "AWS::Pinpoint::PushTemplate" +} diff --git a/src/schema/aws-pinpoint-segment.json b/src/schema/aws-pinpoint-segment.json new file mode 100644 index 00000000..5293532b --- /dev/null +++ b/src/schema/aws-pinpoint-segment.json @@ -0,0 +1,234 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ApplicationId" + ], + "definitions": { + "Behavior": { + "additionalProperties": false, + "properties": { + "Recency": { + "$ref": "#/definitions/Recency" + } + }, + "type": "object" + }, + "Coordinates": { + "additionalProperties": false, + "properties": { + "Latitude": { + "type": "number" + }, + "Longitude": { + "type": "number" + } + }, + "required": [ + "Longitude", + "Latitude" + ], + "type": "object" + }, + "Demographic": { + "additionalProperties": false, + "properties": { + "AppVersion": { + "$ref": "#/definitions/SetDimension" + }, + "Channel": { + "$ref": "#/definitions/SetDimension" + }, + "DeviceType": { + "$ref": "#/definitions/SetDimension" + }, + "Make": { + "$ref": "#/definitions/SetDimension" + }, + "Model": { + "$ref": "#/definitions/SetDimension" + }, + "Platform": { + "$ref": "#/definitions/SetDimension" + } + }, + "type": "object" + }, + "GPSPoint": { + "additionalProperties": false, + "properties": { + "Coordinates": { + "$ref": "#/definitions/Coordinates" + }, + "RangeInKilometers": { + "type": "number" + } + }, + "required": [ + "RangeInKilometers", + "Coordinates" + ], + "type": "object" + }, + "Groups": { + "additionalProperties": false, + "properties": { + "Dimensions": { + "items": { + "$ref": "#/definitions/SegmentDimensions" + }, + "type": "array", + "uniqueItems": false + }, + "SourceSegments": { + "items": { + "$ref": "#/definitions/SourceSegments" + }, + "type": "array", + "uniqueItems": false + }, + "SourceType": { + "type": "string" + }, + "Type": { + "type": "string" + } + }, + "type": "object" + }, + "Location": { + "additionalProperties": false, + "properties": { + "Country": { + "$ref": "#/definitions/SetDimension" + }, + "GPSPoint": { + "$ref": "#/definitions/GPSPoint" + } + }, + "type": "object" + }, + "Recency": { + "additionalProperties": false, + "properties": { + "Duration": { + "type": "string" + }, + "RecencyType": { + "type": "string" + } + }, + "required": [ + "Duration", + "RecencyType" + ], + "type": "object" + }, + "SegmentDimensions": { + "additionalProperties": false, + "properties": { + "Attributes": { + "type": "object" + }, + "Behavior": { + "$ref": "#/definitions/Behavior" + }, + "Demographic": { + "$ref": "#/definitions/Demographic" + }, + "Location": { + "$ref": "#/definitions/Location" + }, + "Metrics": { + "type": "object" + }, + "UserAttributes": { + "type": "object" + } + }, + "type": "object" + }, + "SegmentGroups": { + "additionalProperties": false, + "properties": { + "Groups": { + "items": { + "$ref": "#/definitions/Groups" + }, + "type": "array", + "uniqueItems": false + }, + "Include": { + "type": "string" + } + }, + "type": "object" + }, + "SetDimension": { + "additionalProperties": false, + "properties": { + "DimensionType": { + "type": "string" + }, + "Values": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + }, + "SourceSegments": { + "additionalProperties": false, + "properties": { + "Id": { + "type": "string" + }, + "Version": { + "type": "integer" + } + }, + "required": [ + "Id" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::Pinpoint::Segment", + "primaryIdentifier": [ + "/properties/SegmentId" + ], + "properties": { + "ApplicationId": { + "type": "string" + }, + "Arn": { + "type": "string" + }, + "Dimensions": { + "$ref": "#/definitions/SegmentDimensions" + }, + "Name": { + "type": "string" + }, + "SegmentGroups": { + "$ref": "#/definitions/SegmentGroups" + }, + "SegmentId": { + "type": "string" + }, + "Tags": { + "type": "object" + } + }, + "readOnlyProperties": [ + "/properties/SegmentId", + "/properties/Arn" + ], + "required": [ + "ApplicationId", + "Name" + ], + "typeName": "AWS::Pinpoint::Segment" +} diff --git a/src/schema/aws-pinpoint-smschannel.json b/src/schema/aws-pinpoint-smschannel.json new file mode 100644 index 00000000..d3a47227 --- /dev/null +++ b/src/schema/aws-pinpoint-smschannel.json @@ -0,0 +1,34 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ApplicationId" + ], + "description": "Resource Type definition for AWS::Pinpoint::SMSChannel", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "ApplicationId": { + "type": "string" + }, + "Enabled": { + "type": "boolean" + }, + "Id": { + "type": "string" + }, + "SenderId": { + "type": "string" + }, + "ShortCode": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "ApplicationId" + ], + "typeName": "AWS::Pinpoint::SMSChannel" +} diff --git a/src/schema/aws-pinpoint-smstemplate.json b/src/schema/aws-pinpoint-smstemplate.json new file mode 100644 index 00000000..61738a55 --- /dev/null +++ b/src/schema/aws-pinpoint-smstemplate.json @@ -0,0 +1,42 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/TemplateName" + ], + "description": "Resource Type definition for AWS::Pinpoint::SmsTemplate", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Arn": { + "type": "string" + }, + "Body": { + "type": "string" + }, + "DefaultSubstitutions": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "Tags": { + "type": "object" + }, + "TemplateDescription": { + "type": "string" + }, + "TemplateName": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id", + "/properties/Arn" + ], + "required": [ + "TemplateName", + "Body" + ], + "typeName": "AWS::Pinpoint::SmsTemplate" +} diff --git a/src/schema/aws-pinpoint-voicechannel.json b/src/schema/aws-pinpoint-voicechannel.json new file mode 100644 index 00000000..acce4ef0 --- /dev/null +++ b/src/schema/aws-pinpoint-voicechannel.json @@ -0,0 +1,28 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ApplicationId" + ], + "description": "Resource Type definition for AWS::Pinpoint::VoiceChannel", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "ApplicationId": { + "type": "string" + }, + "Enabled": { + "type": "boolean" + }, + "Id": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "ApplicationId" + ], + "typeName": "AWS::Pinpoint::VoiceChannel" +} diff --git a/src/schema/aws-pinpointemail-configurationset.json b/src/schema/aws-pinpointemail-configurationset.json new file mode 100644 index 00000000..fa073f9f --- /dev/null +++ b/src/schema/aws-pinpointemail-configurationset.json @@ -0,0 +1,94 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name" + ], + "definitions": { + "DeliveryOptions": { + "additionalProperties": false, + "properties": { + "SendingPoolName": { + "type": "string" + } + }, + "type": "object" + }, + "ReputationOptions": { + "additionalProperties": false, + "properties": { + "ReputationMetricsEnabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "SendingOptions": { + "additionalProperties": false, + "properties": { + "SendingEnabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "Tags": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "type": "object" + }, + "TrackingOptions": { + "additionalProperties": false, + "properties": { + "CustomRedirectDomain": { + "type": "string" + } + }, + "type": "object" + } + }, + "description": "Resource Type definition for AWS::PinpointEmail::ConfigurationSet", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "DeliveryOptions": { + "$ref": "#/definitions/DeliveryOptions" + }, + "Id": { + "type": "string" + }, + "Name": { + "type": "string" + }, + "ReputationOptions": { + "$ref": "#/definitions/ReputationOptions" + }, + "SendingOptions": { + "$ref": "#/definitions/SendingOptions" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tags" + }, + "type": "array", + "uniqueItems": false + }, + "TrackingOptions": { + "$ref": "#/definitions/TrackingOptions" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "Name" + ], + "typeName": "AWS::PinpointEmail::ConfigurationSet" +} diff --git a/src/schema/aws-pinpointemail-configurationseteventdestination.json b/src/schema/aws-pinpointemail-configurationseteventdestination.json new file mode 100644 index 00000000..0410f373 --- /dev/null +++ b/src/schema/aws-pinpointemail-configurationseteventdestination.json @@ -0,0 +1,136 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ConfigurationSetName", + "/properties/EventDestinationName" + ], + "definitions": { + "CloudWatchDestination": { + "additionalProperties": false, + "properties": { + "DimensionConfigurations": { + "items": { + "$ref": "#/definitions/DimensionConfiguration" + }, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + }, + "DimensionConfiguration": { + "additionalProperties": false, + "properties": { + "DefaultDimensionValue": { + "type": "string" + }, + "DimensionName": { + "type": "string" + }, + "DimensionValueSource": { + "type": "string" + } + }, + "required": [ + "DimensionValueSource", + "DefaultDimensionValue", + "DimensionName" + ], + "type": "object" + }, + "EventDestination": { + "additionalProperties": false, + "properties": { + "CloudWatchDestination": { + "$ref": "#/definitions/CloudWatchDestination" + }, + "Enabled": { + "type": "boolean" + }, + "KinesisFirehoseDestination": { + "$ref": "#/definitions/KinesisFirehoseDestination" + }, + "MatchingEventTypes": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "PinpointDestination": { + "$ref": "#/definitions/PinpointDestination" + }, + "SnsDestination": { + "$ref": "#/definitions/SnsDestination" + } + }, + "required": [ + "MatchingEventTypes" + ], + "type": "object" + }, + "KinesisFirehoseDestination": { + "additionalProperties": false, + "properties": { + "DeliveryStreamArn": { + "type": "string" + }, + "IamRoleArn": { + "type": "string" + } + }, + "required": [ + "DeliveryStreamArn", + "IamRoleArn" + ], + "type": "object" + }, + "PinpointDestination": { + "additionalProperties": false, + "properties": { + "ApplicationArn": { + "type": "string" + } + }, + "type": "object" + }, + "SnsDestination": { + "additionalProperties": false, + "properties": { + "TopicArn": { + "type": "string" + } + }, + "required": [ + "TopicArn" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::PinpointEmail::ConfigurationSetEventDestination", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "ConfigurationSetName": { + "type": "string" + }, + "EventDestination": { + "$ref": "#/definitions/EventDestination" + }, + "EventDestinationName": { + "type": "string" + }, + "Id": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "ConfigurationSetName", + "EventDestinationName" + ], + "typeName": "AWS::PinpointEmail::ConfigurationSetEventDestination" +} diff --git a/src/schema/aws-pinpointemail-dedicatedippool.json b/src/schema/aws-pinpointemail-dedicatedippool.json new file mode 100644 index 00000000..0ed89049 --- /dev/null +++ b/src/schema/aws-pinpointemail-dedicatedippool.json @@ -0,0 +1,43 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/PoolName" + ], + "definitions": { + "Tags": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "type": "object" + } + }, + "description": "Resource Type definition for AWS::PinpointEmail::DedicatedIpPool", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Id": { + "type": "string" + }, + "PoolName": { + "type": "string" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tags" + }, + "type": "array", + "uniqueItems": false + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "typeName": "AWS::PinpointEmail::DedicatedIpPool" +} diff --git a/src/schema/aws-pinpointemail-identity.json b/src/schema/aws-pinpointemail-identity.json new file mode 100644 index 00000000..f0f41e7f --- /dev/null +++ b/src/schema/aws-pinpointemail-identity.json @@ -0,0 +1,91 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name" + ], + "definitions": { + "MailFromAttributes": { + "additionalProperties": false, + "properties": { + "BehaviorOnMxFailure": { + "type": "string" + }, + "MailFromDomain": { + "type": "string" + } + }, + "type": "object" + }, + "Tags": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "type": "object" + } + }, + "description": "Resource Type definition for AWS::PinpointEmail::Identity", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "DkimSigningEnabled": { + "type": "boolean" + }, + "FeedbackForwardingEnabled": { + "type": "boolean" + }, + "Id": { + "type": "string" + }, + "IdentityDNSRecordName1": { + "type": "string" + }, + "IdentityDNSRecordName2": { + "type": "string" + }, + "IdentityDNSRecordName3": { + "type": "string" + }, + "IdentityDNSRecordValue1": { + "type": "string" + }, + "IdentityDNSRecordValue2": { + "type": "string" + }, + "IdentityDNSRecordValue3": { + "type": "string" + }, + "MailFromAttributes": { + "$ref": "#/definitions/MailFromAttributes" + }, + "Name": { + "type": "string" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tags" + }, + "type": "array", + "uniqueItems": false + } + }, + "readOnlyProperties": [ + "/properties/IdentityDNSRecordName1", + "/properties/IdentityDNSRecordValue1", + "/properties/IdentityDNSRecordName3", + "/properties/IdentityDNSRecordValue2", + "/properties/IdentityDNSRecordName2", + "/properties/IdentityDNSRecordValue3", + "/properties/Id" + ], + "required": [ + "Name" + ], + "typeName": "AWS::PinpointEmail::Identity" +} diff --git a/src/schema/aws-pipes-pipe.json b/src/schema/aws-pipes-pipe.json new file mode 100644 index 00000000..7e197391 --- /dev/null +++ b/src/schema/aws-pipes-pipe.json @@ -0,0 +1,1928 @@ +{ + "additionalIdentifiers": [ + [ + "/properties/Arn" + ] + ], + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name", + "/properties/Source", + "/properties/SourceParameters/DynamoDBStreamParameters/StartingPosition", + "/properties/SourceParameters/KinesisStreamParameters/StartingPosition", + "/properties/SourceParameters/KinesisStreamParameters/StartingPositionTimestamp", + "/properties/SourceParameters/ActiveMQBrokerParameters/QueueName", + "/properties/SourceParameters/RabbitMQBrokerParameters/QueueName", + "/properties/SourceParameters/RabbitMQBrokerParameters/VirtualHost", + "/properties/SourceParameters/ManagedStreamingKafkaParameters/TopicName", + "/properties/SourceParameters/ManagedStreamingKafkaParameters/StartingPosition", + "/properties/SourceParameters/ManagedStreamingKafkaParameters/ConsumerGroupID", + "/properties/SourceParameters/SelfManagedKafkaParameters/TopicName", + "/properties/SourceParameters/SelfManagedKafkaParameters/StartingPosition", + "/properties/SourceParameters/SelfManagedKafkaParameters/AdditionalBootstrapServers", + "/properties/SourceParameters/SelfManagedKafkaParameters/ConsumerGroupID" + ], + "definitions": { + "AssignPublicIp": { + "enum": [ + "ENABLED", + "DISABLED" + ], + "type": "string" + }, + "AwsVpcConfiguration": { + "additionalProperties": false, + "properties": { + "AssignPublicIp": { + "$ref": "#/definitions/AssignPublicIp" + }, + "SecurityGroups": { + "items": { + "maxLength": 1024, + "minLength": 1, + "pattern": "^sg-[0-9a-zA-Z]*|(\\$(\\.[\\w/_-]+(\\[(\\d+|\\*)\\])*)*)$", + "type": "string" + }, + "maxItems": 5, + "minItems": 0, + "type": "array" + }, + "Subnets": { + "items": { + "maxLength": 1024, + "minLength": 1, + "pattern": "^subnet-[0-9a-z]*|(\\$(\\.[\\w/_-]+(\\[(\\d+|\\*)\\])*)*)$", + "type": "string" + }, + "maxItems": 16, + "minItems": 0, + "type": "array" + } + }, + "required": [ + "Subnets" + ], + "type": "object" + }, + "BatchArrayProperties": { + "additionalProperties": false, + "properties": { + "Size": { + "default": 0, + "maximum": 10000, + "minimum": 2, + "type": "integer" + } + }, + "type": "object" + }, + "BatchContainerOverrides": { + "additionalProperties": false, + "properties": { + "Command": { + "items": { + "type": "string" + }, + "type": "array" + }, + "Environment": { + "items": { + "$ref": "#/definitions/BatchEnvironmentVariable" + }, + "type": "array" + }, + "InstanceType": { + "type": "string" + }, + "ResourceRequirements": { + "items": { + "$ref": "#/definitions/BatchResourceRequirement" + }, + "type": "array" + } + }, + "type": "object" + }, + "BatchEnvironmentVariable": { + "additionalProperties": false, + "properties": { + "Name": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "type": "object" + }, + "BatchJobDependency": { + "additionalProperties": false, + "properties": { + "JobId": { + "type": "string" + }, + "Type": { + "$ref": "#/definitions/BatchJobDependencyType" + } + }, + "type": "object" + }, + "BatchJobDependencyType": { + "enum": [ + "N_TO_N", + "SEQUENTIAL" + ], + "type": "string" + }, + "BatchParametersMap": { + "additionalProperties": false, + "patternProperties": { + ".+": { + "type": "string" + } + }, + "type": "object" + }, + "BatchResourceRequirement": { + "additionalProperties": false, + "properties": { + "Type": { + "$ref": "#/definitions/BatchResourceRequirementType" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Type", + "Value" + ], + "type": "object" + }, + "BatchResourceRequirementType": { + "enum": [ + "GPU", + "MEMORY", + "VCPU" + ], + "type": "string" + }, + "BatchRetryStrategy": { + "additionalProperties": false, + "properties": { + "Attempts": { + "default": 0, + "maximum": 10, + "minimum": 1, + "type": "integer" + } + }, + "type": "object" + }, + "CapacityProviderStrategyItem": { + "additionalProperties": false, + "properties": { + "Base": { + "default": 0, + "maximum": 100000, + "minimum": 0, + "type": "integer" + }, + "CapacityProvider": { + "maxLength": 255, + "minLength": 1, + "type": "string" + }, + "Weight": { + "default": 0, + "maximum": 1000, + "minimum": 0, + "type": "integer" + } + }, + "required": [ + "CapacityProvider" + ], + "type": "object" + }, + "CloudwatchLogsLogDestination": { + "additionalProperties": false, + "properties": { + "LogGroupArn": { + "maxLength": 1600, + "minLength": 1, + "pattern": "^(^arn:aws([a-z]|\\-)*:logs:([a-z]{2}((-gov)|(-iso([a-z]?)))?-[a-z]+-\\d{1}):(\\d{12}):log-group:.+)$", + "type": "string" + } + }, + "type": "object" + }, + "DeadLetterConfig": { + "additionalProperties": false, + "properties": { + "Arn": { + "maxLength": 1600, + "minLength": 1, + "pattern": "^arn:(aws[a-zA-Z0-9-]*):([a-zA-Z0-9\\-]+):([a-z]{2}((-gov)|(-iso([a-z]?)))?-[a-z]+-\\d{1})?:(\\d{12})?:(.+)$", + "type": "string" + } + }, + "type": "object" + }, + "DimensionMapping": { + "additionalProperties": false, + "properties": { + "DimensionName": { + "maxLength": 256, + "minLength": 1, + "type": "string" + }, + "DimensionValue": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "DimensionValueType": { + "$ref": "#/definitions/DimensionValueType" + } + }, + "required": [ + "DimensionName", + "DimensionValue", + "DimensionValueType" + ], + "type": "object" + }, + "DimensionValueType": { + "enum": [ + "VARCHAR" + ], + "type": "string" + }, + "DynamoDBStreamStartPosition": { + "enum": [ + "TRIM_HORIZON", + "LATEST" + ], + "type": "string" + }, + "EcsContainerOverride": { + "additionalProperties": false, + "properties": { + "Command": { + "items": { + "type": "string" + }, + "type": "array" + }, + "Cpu": { + "type": "integer" + }, + "Environment": { + "items": { + "$ref": "#/definitions/EcsEnvironmentVariable" + }, + "type": "array" + }, + "EnvironmentFiles": { + "items": { + "$ref": "#/definitions/EcsEnvironmentFile" + }, + "type": "array" + }, + "Memory": { + "type": "integer" + }, + "MemoryReservation": { + "type": "integer" + }, + "Name": { + "type": "string" + }, + "ResourceRequirements": { + "items": { + "$ref": "#/definitions/EcsResourceRequirement" + }, + "type": "array" + } + }, + "type": "object" + }, + "EcsEnvironmentFile": { + "additionalProperties": false, + "properties": { + "Type": { + "$ref": "#/definitions/EcsEnvironmentFileType" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Type", + "Value" + ], + "type": "object" + }, + "EcsEnvironmentFileType": { + "enum": [ + "s3" + ], + "type": "string" + }, + "EcsEnvironmentVariable": { + "additionalProperties": false, + "properties": { + "Name": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "type": "object" + }, + "EcsEphemeralStorage": { + "additionalProperties": false, + "properties": { + "SizeInGiB": { + "default": 0, + "maximum": 200, + "minimum": 21, + "type": "integer" + } + }, + "required": [ + "SizeInGiB" + ], + "type": "object" + }, + "EcsInferenceAcceleratorOverride": { + "additionalProperties": false, + "properties": { + "DeviceName": { + "type": "string" + }, + "DeviceType": { + "type": "string" + } + }, + "type": "object" + }, + "EcsResourceRequirement": { + "additionalProperties": false, + "properties": { + "Type": { + "$ref": "#/definitions/EcsResourceRequirementType" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Type", + "Value" + ], + "type": "object" + }, + "EcsResourceRequirementType": { + "enum": [ + "GPU", + "InferenceAccelerator" + ], + "type": "string" + }, + "EcsTaskOverride": { + "additionalProperties": false, + "properties": { + "ContainerOverrides": { + "items": { + "$ref": "#/definitions/EcsContainerOverride" + }, + "type": "array" + }, + "Cpu": { + "type": "string" + }, + "EphemeralStorage": { + "$ref": "#/definitions/EcsEphemeralStorage" + }, + "ExecutionRoleArn": { + "maxLength": 1600, + "minLength": 1, + "pattern": "^arn:(aws[a-zA-Z0-9-]*):([a-zA-Z0-9\\-]+):([a-z]{2}((-gov)|(-iso([a-z]?)))?-[a-z]+-\\d{1})?:(\\d{12})?:(.+)|(\\$(\\.[\\w/_-]+(\\[(\\d+|\\*)\\])*)*)$", + "type": "string" + }, + "InferenceAcceleratorOverrides": { + "items": { + "$ref": "#/definitions/EcsInferenceAcceleratorOverride" + }, + "type": "array" + }, + "Memory": { + "type": "string" + }, + "TaskRoleArn": { + "maxLength": 1600, + "minLength": 1, + "pattern": "^arn:(aws[a-zA-Z0-9-]*):([a-zA-Z0-9\\-]+):([a-z]{2}((-gov)|(-iso([a-z]?)))?-[a-z]+-\\d{1})?:(\\d{12})?:(.+)|(\\$(\\.[\\w/_-]+(\\[(\\d+|\\*)\\])*)*)$", + "type": "string" + } + }, + "type": "object" + }, + "EpochTimeUnit": { + "enum": [ + "MILLISECONDS", + "SECONDS", + "MICROSECONDS", + "NANOSECONDS" + ], + "type": "string" + }, + "Filter": { + "additionalProperties": false, + "properties": { + "Pattern": { + "maxLength": 4096, + "minLength": 0, + "type": "string" + } + }, + "type": "object" + }, + "FilterCriteria": { + "additionalProperties": false, + "properties": { + "Filters": { + "items": { + "$ref": "#/definitions/Filter" + }, + "maxItems": 5, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "FirehoseLogDestination": { + "additionalProperties": false, + "properties": { + "DeliveryStreamArn": { + "maxLength": 1600, + "minLength": 1, + "pattern": "^(^arn:aws([a-z]|\\-)*:firehose:([a-z]{2}((-gov)|(-iso([a-z]?)))?-[a-z]+-\\d{1}):(\\d{12}):deliverystream/.+)$", + "type": "string" + } + }, + "type": "object" + }, + "HeaderParametersMap": { + "additionalProperties": false, + "patternProperties": { + "^[!#$%&'*+-.^_`|~0-9a-zA-Z]+|(\\$(\\.[\\w/_-]+(\\[(\\d+|\\*)\\])*)*)$": { + "maxLength": 512, + "minLength": 0, + "pattern": "^[ \\t]*[\\x20-\\x7E]+([ \\t]+[\\x20-\\x7E]+)*[ \\t]*|(\\$(\\.[\\w/_-]+(\\[(\\d+|\\*)\\])*)*)$", + "type": "string" + } + }, + "type": "object" + }, + "IncludeExecutionDataOption": { + "enum": [ + "ALL" + ], + "type": "string" + }, + "KinesisStreamStartPosition": { + "enum": [ + "TRIM_HORIZON", + "LATEST", + "AT_TIMESTAMP" + ], + "type": "string" + }, + "LaunchType": { + "enum": [ + "EC2", + "FARGATE", + "EXTERNAL" + ], + "type": "string" + }, + "LogLevel": { + "enum": [ + "OFF", + "ERROR", + "INFO", + "TRACE" + ], + "type": "string" + }, + "MQBrokerAccessCredentials": { + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "BasicAuth": { + "description": "Optional SecretManager ARN which stores the database credentials", + "maxLength": 1600, + "minLength": 1, + "pattern": "^(^arn:aws([a-z]|\\-)*:secretsmanager:([a-z]{2}((-gov)|(-iso([a-z]?)))?-[a-z]+-\\d{1}):(\\d{12}):secret:.+)$", + "type": "string" + } + }, + "required": [ + "BasicAuth" + ], + "title": "BasicAuth", + "type": "object" + } + ] + }, + "MSKAccessCredentials": { + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "SaslScram512Auth": { + "description": "Optional SecretManager ARN which stores the database credentials", + "maxLength": 1600, + "minLength": 1, + "pattern": "^(^arn:aws([a-z]|\\-)*:secretsmanager:([a-z]{2}((-gov)|(-iso([a-z]?)))?-[a-z]+-\\d{1}):(\\d{12}):secret:.+)$", + "type": "string" + } + }, + "required": [ + "SaslScram512Auth" + ], + "title": "SaslScram512Auth", + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "ClientCertificateTlsAuth": { + "description": "Optional SecretManager ARN which stores the database credentials", + "maxLength": 1600, + "minLength": 1, + "pattern": "^(^arn:aws([a-z]|\\-)*:secretsmanager:([a-z]{2}((-gov)|(-iso([a-z]?)))?-[a-z]+-\\d{1}):(\\d{12}):secret:.+)$", + "type": "string" + } + }, + "required": [ + "ClientCertificateTlsAuth" + ], + "title": "ClientCertificateTlsAuth", + "type": "object" + } + ] + }, + "MSKStartPosition": { + "enum": [ + "TRIM_HORIZON", + "LATEST" + ], + "type": "string" + }, + "MeasureValueType": { + "enum": [ + "DOUBLE", + "BIGINT", + "VARCHAR", + "BOOLEAN", + "TIMESTAMP" + ], + "type": "string" + }, + "MultiMeasureAttributeMapping": { + "additionalProperties": false, + "properties": { + "MeasureValue": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "MeasureValueType": { + "$ref": "#/definitions/MeasureValueType" + }, + "MultiMeasureAttributeName": { + "maxLength": 256, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "MeasureValue", + "MeasureValueType", + "MultiMeasureAttributeName" + ], + "type": "object" + }, + "MultiMeasureMapping": { + "additionalProperties": false, + "properties": { + "MultiMeasureAttributeMappings": { + "items": { + "$ref": "#/definitions/MultiMeasureAttributeMapping" + }, + "maxItems": 256, + "minItems": 1, + "type": "array" + }, + "MultiMeasureName": { + "maxLength": 256, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "MultiMeasureAttributeMappings", + "MultiMeasureName" + ], + "type": "object" + }, + "NetworkConfiguration": { + "additionalProperties": false, + "properties": { + "AwsvpcConfiguration": { + "$ref": "#/definitions/AwsVpcConfiguration" + } + }, + "type": "object" + }, + "OnPartialBatchItemFailureStreams": { + "enum": [ + "AUTOMATIC_BISECT" + ], + "type": "string" + }, + "PipeEnrichmentHttpParameters": { + "additionalProperties": false, + "properties": { + "HeaderParameters": { + "$ref": "#/definitions/HeaderParametersMap" + }, + "PathParameterValues": { + "items": { + "pattern": "^(?!\\s*$).+|(\\$(\\.[\\w/_-]+(\\[(\\d+|\\*)\\])*)*)$", + "type": "string" + }, + "type": "array" + }, + "QueryStringParameters": { + "$ref": "#/definitions/QueryStringParametersMap" + } + }, + "type": "object" + }, + "PipeEnrichmentParameters": { + "additionalProperties": false, + "properties": { + "HttpParameters": { + "$ref": "#/definitions/PipeEnrichmentHttpParameters" + }, + "InputTemplate": { + "maxLength": 8192, + "minLength": 0, + "type": "string" + } + }, + "type": "object" + }, + "PipeLogConfiguration": { + "additionalProperties": false, + "properties": { + "CloudwatchLogsLogDestination": { + "$ref": "#/definitions/CloudwatchLogsLogDestination" + }, + "FirehoseLogDestination": { + "$ref": "#/definitions/FirehoseLogDestination" + }, + "IncludeExecutionData": { + "items": { + "$ref": "#/definitions/IncludeExecutionDataOption" + }, + "type": "array", + "uniqueItems": true + }, + "Level": { + "$ref": "#/definitions/LogLevel" + }, + "S3LogDestination": { + "$ref": "#/definitions/S3LogDestination" + } + }, + "type": "object" + }, + "PipeSourceActiveMQBrokerParameters": { + "additionalProperties": false, + "properties": { + "BatchSize": { + "maximum": 10000, + "minimum": 1, + "type": "integer" + }, + "Credentials": { + "$ref": "#/definitions/MQBrokerAccessCredentials" + }, + "MaximumBatchingWindowInSeconds": { + "maximum": 300, + "minimum": 0, + "type": "integer" + }, + "QueueName": { + "maxLength": 1000, + "minLength": 1, + "pattern": "^[\\s\\S]*$", + "type": "string" + } + }, + "required": [ + "Credentials", + "QueueName" + ], + "type": "object" + }, + "PipeSourceDynamoDBStreamParameters": { + "additionalProperties": false, + "properties": { + "BatchSize": { + "maximum": 10000, + "minimum": 1, + "type": "integer" + }, + "DeadLetterConfig": { + "$ref": "#/definitions/DeadLetterConfig" + }, + "MaximumBatchingWindowInSeconds": { + "maximum": 300, + "minimum": 0, + "type": "integer" + }, + "MaximumRecordAgeInSeconds": { + "maximum": 604800, + "minimum": -1, + "type": "integer" + }, + "MaximumRetryAttempts": { + "maximum": 10000, + "minimum": -1, + "type": "integer" + }, + "OnPartialBatchItemFailure": { + "$ref": "#/definitions/OnPartialBatchItemFailureStreams" + }, + "ParallelizationFactor": { + "maximum": 10, + "minimum": 1, + "type": "integer" + }, + "StartingPosition": { + "$ref": "#/definitions/DynamoDBStreamStartPosition" + } + }, + "required": [ + "StartingPosition" + ], + "type": "object" + }, + "PipeSourceKinesisStreamParameters": { + "additionalProperties": false, + "properties": { + "BatchSize": { + "maximum": 10000, + "minimum": 1, + "type": "integer" + }, + "DeadLetterConfig": { + "$ref": "#/definitions/DeadLetterConfig" + }, + "MaximumBatchingWindowInSeconds": { + "maximum": 300, + "minimum": 0, + "type": "integer" + }, + "MaximumRecordAgeInSeconds": { + "maximum": 604800, + "minimum": -1, + "type": "integer" + }, + "MaximumRetryAttempts": { + "maximum": 10000, + "minimum": -1, + "type": "integer" + }, + "OnPartialBatchItemFailure": { + "$ref": "#/definitions/OnPartialBatchItemFailureStreams" + }, + "ParallelizationFactor": { + "maximum": 10, + "minimum": 1, + "type": "integer" + }, + "StartingPosition": { + "$ref": "#/definitions/KinesisStreamStartPosition" + }, + "StartingPositionTimestamp": { + "format": "date-time", + "type": "string" + } + }, + "required": [ + "StartingPosition" + ], + "type": "object" + }, + "PipeSourceManagedStreamingKafkaParameters": { + "additionalProperties": false, + "properties": { + "BatchSize": { + "maximum": 10000, + "minimum": 1, + "type": "integer" + }, + "ConsumerGroupID": { + "maxLength": 200, + "minLength": 1, + "pattern": "^[a-zA-Z0-9-\\/*:_+=.@-]*$", + "type": "string" + }, + "Credentials": { + "$ref": "#/definitions/MSKAccessCredentials" + }, + "MaximumBatchingWindowInSeconds": { + "maximum": 300, + "minimum": 0, + "type": "integer" + }, + "StartingPosition": { + "$ref": "#/definitions/MSKStartPosition" + }, + "TopicName": { + "maxLength": 249, + "minLength": 1, + "pattern": "^[^.]([a-zA-Z0-9\\-_.]+)$", + "type": "string" + } + }, + "required": [ + "TopicName" + ], + "type": "object" + }, + "PipeSourceParameters": { + "additionalProperties": false, + "properties": { + "ActiveMQBrokerParameters": { + "$ref": "#/definitions/PipeSourceActiveMQBrokerParameters" + }, + "DynamoDBStreamParameters": { + "$ref": "#/definitions/PipeSourceDynamoDBStreamParameters" + }, + "FilterCriteria": { + "$ref": "#/definitions/FilterCriteria" + }, + "KinesisStreamParameters": { + "$ref": "#/definitions/PipeSourceKinesisStreamParameters" + }, + "ManagedStreamingKafkaParameters": { + "$ref": "#/definitions/PipeSourceManagedStreamingKafkaParameters" + }, + "RabbitMQBrokerParameters": { + "$ref": "#/definitions/PipeSourceRabbitMQBrokerParameters" + }, + "SelfManagedKafkaParameters": { + "$ref": "#/definitions/PipeSourceSelfManagedKafkaParameters" + }, + "SqsQueueParameters": { + "$ref": "#/definitions/PipeSourceSqsQueueParameters" + } + }, + "type": "object" + }, + "PipeSourceRabbitMQBrokerParameters": { + "additionalProperties": false, + "properties": { + "BatchSize": { + "maximum": 10000, + "minimum": 1, + "type": "integer" + }, + "Credentials": { + "$ref": "#/definitions/MQBrokerAccessCredentials" + }, + "MaximumBatchingWindowInSeconds": { + "maximum": 300, + "minimum": 0, + "type": "integer" + }, + "QueueName": { + "maxLength": 1000, + "minLength": 1, + "pattern": "^[\\s\\S]*$", + "type": "string" + }, + "VirtualHost": { + "maxLength": 200, + "minLength": 1, + "pattern": "^[a-zA-Z0-9-\\/*:_+=.@-]*$", + "type": "string" + } + }, + "required": [ + "Credentials", + "QueueName" + ], + "type": "object" + }, + "PipeSourceSelfManagedKafkaParameters": { + "additionalProperties": false, + "properties": { + "AdditionalBootstrapServers": { + "items": { + "maxLength": 300, + "minLength": 1, + "pattern": "^(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\\-]*[a-zA-Z0-9])\\.)*([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9\\-]*[A-Za-z0-9]):[0-9]{1,5}$", + "type": "string" + }, + "maxItems": 2, + "minItems": 0, + "type": "array" + }, + "BatchSize": { + "maximum": 10000, + "minimum": 1, + "type": "integer" + }, + "ConsumerGroupID": { + "maxLength": 200, + "minLength": 1, + "pattern": "^[a-zA-Z0-9-\\/*:_+=.@-]*$", + "type": "string" + }, + "Credentials": { + "$ref": "#/definitions/SelfManagedKafkaAccessConfigurationCredentials" + }, + "MaximumBatchingWindowInSeconds": { + "maximum": 300, + "minimum": 0, + "type": "integer" + }, + "ServerRootCaCertificate": { + "description": "Optional SecretManager ARN which stores the database credentials", + "maxLength": 1600, + "minLength": 1, + "pattern": "^(^arn:aws([a-z]|\\-)*:secretsmanager:([a-z]{2}((-gov)|(-iso([a-z]?)))?-[a-z]+-\\d{1}):(\\d{12}):secret:.+)$", + "type": "string" + }, + "StartingPosition": { + "$ref": "#/definitions/SelfManagedKafkaStartPosition" + }, + "TopicName": { + "maxLength": 249, + "minLength": 1, + "pattern": "^[^.]([a-zA-Z0-9\\-_.]+)$", + "type": "string" + }, + "Vpc": { + "$ref": "#/definitions/SelfManagedKafkaAccessConfigurationVpc" + } + }, + "required": [ + "TopicName" + ], + "type": "object" + }, + "PipeSourceSqsQueueParameters": { + "additionalProperties": false, + "properties": { + "BatchSize": { + "maximum": 10000, + "minimum": 1, + "type": "integer" + }, + "MaximumBatchingWindowInSeconds": { + "maximum": 300, + "minimum": 0, + "type": "integer" + } + }, + "type": "object" + }, + "PipeState": { + "enum": [ + "RUNNING", + "STOPPED", + "CREATING", + "UPDATING", + "DELETING", + "STARTING", + "STOPPING", + "CREATE_FAILED", + "UPDATE_FAILED", + "START_FAILED", + "STOP_FAILED", + "DELETE_FAILED", + "CREATE_ROLLBACK_FAILED", + "DELETE_ROLLBACK_FAILED", + "UPDATE_ROLLBACK_FAILED" + ], + "type": "string" + }, + "PipeTargetBatchJobParameters": { + "additionalProperties": false, + "properties": { + "ArrayProperties": { + "$ref": "#/definitions/BatchArrayProperties" + }, + "ContainerOverrides": { + "$ref": "#/definitions/BatchContainerOverrides" + }, + "DependsOn": { + "items": { + "$ref": "#/definitions/BatchJobDependency" + }, + "maxItems": 20, + "minItems": 0, + "type": "array" + }, + "JobDefinition": { + "type": "string" + }, + "JobName": { + "type": "string" + }, + "Parameters": { + "$ref": "#/definitions/BatchParametersMap" + }, + "RetryStrategy": { + "$ref": "#/definitions/BatchRetryStrategy" + } + }, + "required": [ + "JobDefinition", + "JobName" + ], + "type": "object" + }, + "PipeTargetCloudWatchLogsParameters": { + "additionalProperties": false, + "properties": { + "LogStreamName": { + "maxLength": 256, + "minLength": 1, + "type": "string" + }, + "Timestamp": { + "maxLength": 256, + "minLength": 1, + "pattern": "^\\$(\\.[\\w_-]+(\\[(\\d+|\\*)\\])*)*$", + "type": "string" + } + }, + "type": "object" + }, + "PipeTargetEcsTaskParameters": { + "additionalProperties": false, + "properties": { + "CapacityProviderStrategy": { + "items": { + "$ref": "#/definitions/CapacityProviderStrategyItem" + }, + "maxItems": 6, + "minItems": 0, + "type": "array" + }, + "EnableECSManagedTags": { + "default": false, + "type": "boolean" + }, + "EnableExecuteCommand": { + "default": false, + "type": "boolean" + }, + "Group": { + "type": "string" + }, + "LaunchType": { + "$ref": "#/definitions/LaunchType" + }, + "NetworkConfiguration": { + "$ref": "#/definitions/NetworkConfiguration" + }, + "Overrides": { + "$ref": "#/definitions/EcsTaskOverride" + }, + "PlacementConstraints": { + "items": { + "$ref": "#/definitions/PlacementConstraint" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + }, + "PlacementStrategy": { + "items": { + "$ref": "#/definitions/PlacementStrategy" + }, + "maxItems": 5, + "minItems": 0, + "type": "array" + }, + "PlatformVersion": { + "type": "string" + }, + "PropagateTags": { + "$ref": "#/definitions/PropagateTags" + }, + "ReferenceId": { + "maxLength": 1024, + "minLength": 0, + "type": "string" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array" + }, + "TaskCount": { + "minimum": 1, + "type": "integer" + }, + "TaskDefinitionArn": { + "maxLength": 1600, + "minLength": 1, + "pattern": "^arn:(aws[a-zA-Z0-9-]*):([a-zA-Z0-9\\-]+):([a-z]{2}((-gov)|(-iso([a-z]?)))?-[a-z]+-\\d{1})?:(\\d{12})?:(.+)|(\\$(\\.[\\w/_-]+(\\[(\\d+|\\*)\\])*)*)$", + "type": "string" + } + }, + "required": [ + "TaskDefinitionArn" + ], + "type": "object" + }, + "PipeTargetEventBridgeEventBusParameters": { + "additionalProperties": false, + "properties": { + "DetailType": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "EndpointId": { + "maxLength": 50, + "minLength": 1, + "pattern": "^[A-Za-z0-9\\-]+[\\.][A-Za-z0-9\\-]+$", + "type": "string" + }, + "Resources": { + "items": { + "maxLength": 1600, + "minLength": 1, + "pattern": "^arn:(aws[a-zA-Z0-9-]*):([a-zA-Z0-9\\-]+):([a-z]{2}((-gov)|(-iso([a-z]?)))?-[a-z]+-\\d{1})?:(\\d{12})?:(.+)|(\\$(\\.[\\w/_-]+(\\[(\\d+|\\*)\\])*)*)$", + "type": "string" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + }, + "Source": { + "maxLength": 256, + "minLength": 1, + "pattern": "(?=[/\\.\\-_A-Za-z0-9]+)((?!aws\\.).*)|(\\$(\\.[\\w/_-]+(\\[(\\d+|\\*)\\])*)*)", + "type": "string" + }, + "Time": { + "maxLength": 256, + "minLength": 1, + "pattern": "^\\$(\\.[\\w/_-]+(\\[(\\d+|\\*)\\])*)*$", + "type": "string" + } + }, + "type": "object" + }, + "PipeTargetHttpParameters": { + "additionalProperties": false, + "properties": { + "HeaderParameters": { + "$ref": "#/definitions/HeaderParametersMap" + }, + "PathParameterValues": { + "items": { + "pattern": "^(?!\\s*$).+|(\\$(\\.[\\w/_-]+(\\[(\\d+|\\*)\\])*)*)$", + "type": "string" + }, + "type": "array" + }, + "QueryStringParameters": { + "$ref": "#/definitions/QueryStringParametersMap" + } + }, + "type": "object" + }, + "PipeTargetInvocationType": { + "enum": [ + "REQUEST_RESPONSE", + "FIRE_AND_FORGET" + ], + "type": "string" + }, + "PipeTargetKinesisStreamParameters": { + "additionalProperties": false, + "properties": { + "PartitionKey": { + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "PartitionKey" + ], + "type": "object" + }, + "PipeTargetLambdaFunctionParameters": { + "additionalProperties": false, + "properties": { + "InvocationType": { + "$ref": "#/definitions/PipeTargetInvocationType" + } + }, + "type": "object" + }, + "PipeTargetParameters": { + "additionalProperties": false, + "properties": { + "BatchJobParameters": { + "$ref": "#/definitions/PipeTargetBatchJobParameters" + }, + "CloudWatchLogsParameters": { + "$ref": "#/definitions/PipeTargetCloudWatchLogsParameters" + }, + "EcsTaskParameters": { + "$ref": "#/definitions/PipeTargetEcsTaskParameters" + }, + "EventBridgeEventBusParameters": { + "$ref": "#/definitions/PipeTargetEventBridgeEventBusParameters" + }, + "HttpParameters": { + "$ref": "#/definitions/PipeTargetHttpParameters" + }, + "InputTemplate": { + "maxLength": 8192, + "minLength": 0, + "type": "string" + }, + "KinesisStreamParameters": { + "$ref": "#/definitions/PipeTargetKinesisStreamParameters" + }, + "LambdaFunctionParameters": { + "$ref": "#/definitions/PipeTargetLambdaFunctionParameters" + }, + "RedshiftDataParameters": { + "$ref": "#/definitions/PipeTargetRedshiftDataParameters" + }, + "SageMakerPipelineParameters": { + "$ref": "#/definitions/PipeTargetSageMakerPipelineParameters" + }, + "SqsQueueParameters": { + "$ref": "#/definitions/PipeTargetSqsQueueParameters" + }, + "StepFunctionStateMachineParameters": { + "$ref": "#/definitions/PipeTargetStateMachineParameters" + }, + "TimestreamParameters": { + "$ref": "#/definitions/PipeTargetTimestreamParameters" + } + }, + "type": "object" + }, + "PipeTargetRedshiftDataParameters": { + "additionalProperties": false, + "properties": { + "Database": { + "description": "Redshift Database", + "maxLength": 64, + "minLength": 1, + "type": "string" + }, + "DbUser": { + "description": "Database user name", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "SecretManagerArn": { + "description": "Optional SecretManager ARN which stores the database credentials", + "maxLength": 1600, + "minLength": 1, + "pattern": "^(^arn:aws([a-z]|\\-)*:secretsmanager:([a-z]{2}((-gov)|(-iso([a-z]?)))?-[a-z]+-\\d{1}):(\\d{12}):secret:.+)|(\\$(\\.[\\w/_-]+(\\[(\\d+|\\*)\\])*)*)$", + "type": "string" + }, + "Sqls": { + "description": "A list of SQLs.", + "items": { + "description": "A single Redshift SQL", + "maxLength": 100000, + "minLength": 1, + "type": "string" + }, + "maxItems": 40, + "minItems": 1, + "type": "array" + }, + "StatementName": { + "description": "A name for Redshift DataAPI statement which can be used as filter of ListStatement.", + "maxLength": 500, + "minLength": 1, + "type": "string" + }, + "WithEvent": { + "default": false, + "type": "boolean" + } + }, + "required": [ + "Database", + "Sqls" + ], + "type": "object" + }, + "PipeTargetSageMakerPipelineParameters": { + "additionalProperties": false, + "properties": { + "PipelineParameterList": { + "items": { + "$ref": "#/definitions/SageMakerPipelineParameter" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "PipeTargetSqsQueueParameters": { + "additionalProperties": false, + "properties": { + "MessageDeduplicationId": { + "maxLength": 100, + "minLength": 0, + "type": "string" + }, + "MessageGroupId": { + "maxLength": 100, + "minLength": 0, + "type": "string" + } + }, + "type": "object" + }, + "PipeTargetStateMachineParameters": { + "additionalProperties": false, + "properties": { + "InvocationType": { + "$ref": "#/definitions/PipeTargetInvocationType" + } + }, + "type": "object" + }, + "PipeTargetTimestreamParameters": { + "additionalProperties": false, + "properties": { + "DimensionMappings": { + "items": { + "$ref": "#/definitions/DimensionMapping" + }, + "maxItems": 128, + "minItems": 1, + "type": "array" + }, + "EpochTimeUnit": { + "$ref": "#/definitions/EpochTimeUnit" + }, + "MultiMeasureMappings": { + "items": { + "$ref": "#/definitions/MultiMeasureMapping" + }, + "maxItems": 1024, + "minItems": 0, + "type": "array" + }, + "SingleMeasureMappings": { + "items": { + "$ref": "#/definitions/SingleMeasureMapping" + }, + "maxItems": 8192, + "minItems": 0, + "type": "array" + }, + "TimeFieldType": { + "$ref": "#/definitions/TimeFieldType" + }, + "TimeValue": { + "maxLength": 256, + "minLength": 1, + "type": "string" + }, + "TimestampFormat": { + "maxLength": 256, + "minLength": 1, + "type": "string" + }, + "VersionValue": { + "maxLength": 256, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "DimensionMappings", + "TimeValue", + "VersionValue" + ], + "type": "object" + }, + "PlacementConstraint": { + "additionalProperties": false, + "properties": { + "Expression": { + "maxLength": 2000, + "minLength": 0, + "type": "string" + }, + "Type": { + "$ref": "#/definitions/PlacementConstraintType" + } + }, + "type": "object" + }, + "PlacementConstraintType": { + "enum": [ + "distinctInstance", + "memberOf" + ], + "type": "string" + }, + "PlacementStrategy": { + "additionalProperties": false, + "properties": { + "Field": { + "maxLength": 255, + "minLength": 0, + "type": "string" + }, + "Type": { + "$ref": "#/definitions/PlacementStrategyType" + } + }, + "type": "object" + }, + "PlacementStrategyType": { + "enum": [ + "random", + "spread", + "binpack" + ], + "type": "string" + }, + "PropagateTags": { + "enum": [ + "TASK_DEFINITION" + ], + "type": "string" + }, + "QueryStringParametersMap": { + "additionalProperties": false, + "patternProperties": { + "^[^\\x00-\\x1F\\x7F]+|(\\$(\\.[\\w/_-]+(\\[(\\d+|\\*)\\])*)*)$": { + "maxLength": 512, + "minLength": 0, + "pattern": "^[^\\x00-\\x09\\x0B\\x0C\\x0E-\\x1F\\x7F]+|(\\$(\\.[\\w/_-]+(\\[(\\d+|\\*)\\])*)*)$", + "type": "string" + } + }, + "type": "object" + }, + "RequestedPipeState": { + "enum": [ + "RUNNING", + "STOPPED" + ], + "type": "string" + }, + "S3LogDestination": { + "additionalProperties": false, + "properties": { + "BucketName": { + "type": "string" + }, + "BucketOwner": { + "type": "string" + }, + "OutputFormat": { + "$ref": "#/definitions/S3OutputFormat" + }, + "Prefix": { + "type": "string" + } + }, + "type": "object" + }, + "S3OutputFormat": { + "enum": [ + "json", + "plain", + "w3c" + ], + "type": "string" + }, + "SageMakerPipelineParameter": { + "additionalProperties": false, + "properties": { + "Name": { + "maxLength": 256, + "minLength": 1, + "pattern": "^[a-zA-Z0-9](-*[a-zA-Z0-9])*|(\\$(\\.[\\w/_-]+(\\[(\\d+|\\*)\\])*)*)$", + "type": "string" + }, + "Value": { + "maxLength": 1024, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Name", + "Value" + ], + "type": "object" + }, + "SelfManagedKafkaAccessConfigurationCredentials": { + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "BasicAuth": { + "description": "Optional SecretManager ARN which stores the database credentials", + "maxLength": 1600, + "minLength": 1, + "pattern": "^(^arn:aws([a-z]|\\-)*:secretsmanager:([a-z]{2}((-gov)|(-iso([a-z]?)))?-[a-z]+-\\d{1}):(\\d{12}):secret:.+)$", + "type": "string" + } + }, + "required": [ + "BasicAuth" + ], + "title": "BasicAuth", + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "SaslScram512Auth": { + "description": "Optional SecretManager ARN which stores the database credentials", + "maxLength": 1600, + "minLength": 1, + "pattern": "^(^arn:aws([a-z]|\\-)*:secretsmanager:([a-z]{2}((-gov)|(-iso([a-z]?)))?-[a-z]+-\\d{1}):(\\d{12}):secret:.+)$", + "type": "string" + } + }, + "required": [ + "SaslScram512Auth" + ], + "title": "SaslScram512Auth", + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "SaslScram256Auth": { + "description": "Optional SecretManager ARN which stores the database credentials", + "maxLength": 1600, + "minLength": 1, + "pattern": "^(^arn:aws([a-z]|\\-)*:secretsmanager:([a-z]{2}((-gov)|(-iso([a-z]?)))?-[a-z]+-\\d{1}):(\\d{12}):secret:.+)$", + "type": "string" + } + }, + "required": [ + "SaslScram256Auth" + ], + "title": "SaslScram256Auth", + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "ClientCertificateTlsAuth": { + "description": "Optional SecretManager ARN which stores the database credentials", + "maxLength": 1600, + "minLength": 1, + "pattern": "^(^arn:aws([a-z]|\\-)*:secretsmanager:([a-z]{2}((-gov)|(-iso([a-z]?)))?-[a-z]+-\\d{1}):(\\d{12}):secret:.+)$", + "type": "string" + } + }, + "required": [ + "ClientCertificateTlsAuth" + ], + "title": "ClientCertificateTlsAuth", + "type": "object" + } + ] + }, + "SelfManagedKafkaAccessConfigurationVpc": { + "additionalProperties": false, + "properties": { + "SecurityGroup": { + "description": "List of SecurityGroupId.", + "items": { + "maxLength": 1024, + "minLength": 1, + "pattern": "^sg-[0-9a-zA-Z]*$", + "type": "string" + }, + "maxItems": 5, + "minItems": 0, + "type": "array" + }, + "Subnets": { + "description": "List of SubnetId.", + "items": { + "maxLength": 1024, + "minLength": 1, + "pattern": "^subnet-[0-9a-z]*$", + "type": "string" + }, + "maxItems": 16, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "SelfManagedKafkaStartPosition": { + "enum": [ + "TRIM_HORIZON", + "LATEST" + ], + "type": "string" + }, + "SingleMeasureMapping": { + "additionalProperties": false, + "properties": { + "MeasureName": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "MeasureValue": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "MeasureValueType": { + "$ref": "#/definitions/MeasureValueType" + } + }, + "required": [ + "MeasureName", + "MeasureValue", + "MeasureValueType" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "TagMap": { + "additionalProperties": false, + "maxProperties": 50, + "minProperties": 1, + "patternProperties": { + ".+": { + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "type": "object" + }, + "TimeFieldType": { + "enum": [ + "EPOCH", + "TIMESTAMP_FORMAT" + ], + "type": "string" + } + }, + "description": "Definition of AWS::Pipes::Pipe Resource Type", + "handlers": { + "create": { + "permissions": [ + "pipes:CreatePipe", + "pipes:DescribePipe", + "pipes:TagResource", + "iam:PassRole", + "logs:PutResourcePolicy", + "logs:DescribeResourcePolicies", + "logs:DescribeLogGroups", + "iam:CreateServiceLinkedRole", + "logs:CreateLogDelivery", + "logs:GetLogDelivery", + "logs:ListLogDeliveries", + "s3:PutBucketPolicy", + "s3:GetBucketPolicy", + "firehose:TagDeliveryStream", + "kms:DescribeKey", + "kms:Decrypt", + "kms:GenerateDataKey" + ] + }, + "delete": { + "permissions": [ + "pipes:DeletePipe", + "pipes:DescribePipe", + "pipes:UntagResource", + "logs:CreateLogDelivery", + "logs:UpdateLogDelivery", + "logs:DeleteLogDelivery", + "logs:GetLogDelivery", + "logs:ListLogDeliveries", + "kms:DescribeKey", + "kms:Decrypt", + "kms:GenerateDataKey" + ] + }, + "list": { + "permissions": [ + "pipes:ListPipes" + ] + }, + "read": { + "permissions": [ + "pipes:DescribePipe", + "kms:Decrypt" + ] + }, + "update": { + "permissions": [ + "pipes:UpdatePipe", + "pipes:TagResource", + "pipes:UntagResource", + "pipes:DescribePipe", + "iam:PassRole", + "logs:PutResourcePolicy", + "logs:DescribeResourcePolicies", + "logs:DescribeLogGroups", + "iam:CreateServiceLinkedRole", + "logs:CreateLogDelivery", + "logs:UpdateLogDelivery", + "logs:DeleteLogDelivery", + "logs:GetLogDelivery", + "logs:ListLogDeliveries", + "s3:PutBucketPolicy", + "s3:GetBucketPolicy", + "firehose:TagDeliveryStream", + "kms:DescribeKey", + "kms:Decrypt", + "kms:GenerateDataKey" + ] + } + }, + "primaryIdentifier": [ + "/properties/Name" + ], + "properties": { + "Arn": { + "maxLength": 1600, + "minLength": 1, + "pattern": "^arn:aws([a-z]|\\-)*:([a-zA-Z0-9\\-]+):([a-z]|\\d|\\-)*:([0-9]{12})?:(.+)$", + "type": "string" + }, + "CreationTime": { + "format": "date-time", + "type": "string" + }, + "CurrentState": { + "$ref": "#/definitions/PipeState" + }, + "Description": { + "maxLength": 512, + "minLength": 0, + "pattern": "^.*$", + "type": "string" + }, + "DesiredState": { + "$ref": "#/definitions/RequestedPipeState" + }, + "Enrichment": { + "maxLength": 1600, + "minLength": 0, + "pattern": "^$|arn:(aws[a-zA-Z0-9-]*):([a-zA-Z0-9\\-]+):([a-z]{2}((-gov)|(-iso([a-z]?)))?-[a-z]+-\\d{1})?:(\\d{12})?:(.+)$", + "type": "string" + }, + "EnrichmentParameters": { + "$ref": "#/definitions/PipeEnrichmentParameters" + }, + "KmsKeyIdentifier": { + "maxLength": 2048, + "minLength": 0, + "type": "string" + }, + "LastModifiedTime": { + "format": "date-time", + "type": "string" + }, + "LogConfiguration": { + "$ref": "#/definitions/PipeLogConfiguration" + }, + "Name": { + "maxLength": 64, + "minLength": 1, + "pattern": "^[\\.\\-_A-Za-z0-9]+$", + "type": "string" + }, + "RoleArn": { + "maxLength": 1600, + "minLength": 1, + "pattern": "^arn:(aws[a-zA-Z-]*)?:iam::\\d{12}:role/?[a-zA-Z0-9+=,.@\\-_/]+$", + "type": "string" + }, + "Source": { + "maxLength": 1600, + "minLength": 1, + "pattern": "^smk://(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\\-]*[a-zA-Z0-9])\\.)*([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9\\-]*[A-Za-z0-9]):[0-9]{1,5}|arn:(aws[a-zA-Z0-9-]*):([a-zA-Z0-9\\-]+):([a-z]{2}((-gov)|(-iso([a-z]?)))?-[a-z]+-\\d{1})?:(\\d{12})?:(.+)$", + "type": "string" + }, + "SourceParameters": { + "$ref": "#/definitions/PipeSourceParameters" + }, + "StateReason": { + "maxLength": 512, + "minLength": 0, + "pattern": "^.*$", + "type": "string" + }, + "Tags": { + "$ref": "#/definitions/TagMap" + }, + "Target": { + "maxLength": 1600, + "minLength": 1, + "pattern": "^arn:(aws[a-zA-Z0-9-]*):([a-zA-Z0-9\\-]+):([a-z]{2}((-gov)|(-iso([a-z]?)))?-[a-z]+-\\d{1})?:(\\d{12})?:(.+)$", + "type": "string" + }, + "TargetParameters": { + "$ref": "#/definitions/PipeTargetParameters" + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/CreationTime", + "/properties/CurrentState", + "/properties/LastModifiedTime", + "/properties/StateReason" + ], + "required": [ + "RoleArn", + "Source", + "Target" + ], + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "pipes:TagResource", + "pipes:UntagResource", + "pipes:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::Pipes::Pipe", + "writeOnlyProperties": [ + "/properties/TargetParameters", + "/properties/SourceParameters" + ] +} diff --git a/src/schema/aws-proton-environmentaccountconnection.json b/src/schema/aws-proton-environmentaccountconnection.json new file mode 100644 index 00000000..6195db4b --- /dev/null +++ b/src/schema/aws-proton-environmentaccountconnection.json @@ -0,0 +1,170 @@ +{ + "additionalIdentifiers": [ + [ + "/properties/Id" + ] + ], + "additionalProperties": false, + "definitions": { + "Status": { + "enum": [ + "PENDING", + "CONNECTED", + "REJECTED" + ], + "type": "string" + }, + "Tag": { + "additionalProperties": false, + "description": "A description of a resource tag.
", + "properties": { + "Key": { + "description": "The key of the resource tag.
", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "The value of the resource tag.
", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "Resource Schema describing various properties for AWS Proton Environment Account Connections resources.", + "handlers": { + "create": { + "permissions": [ + "proton:CreateEnvironmentAccountConnection", + "proton:TagResource", + "iam:PassRole", + "proton:ListTagsForResource", + "proton:GetEnvironmentAccountConnection" + ] + }, + "delete": { + "permissions": [ + "proton:DeleteEnvironmentAccountConnection", + "proton:UntagResource", + "iam:PassRole", + "proton:ListTagsForResource", + "proton:GetEnvironmentAccountConnection" + ] + }, + "list": { + "permissions": [ + "proton:ListEnvironmentAccountConnections" + ] + }, + "read": { + "permissions": [ + "proton:GetEnvironmentAccountConnection", + "proton:ListTagsForResource", + "iam:PassRole", + "proton:GetEnvironmentAccountConnection" + ] + }, + "update": { + "permissions": [ + "proton:CreateEnvironmentAccountConnection", + "proton:ListTagsForResource", + "proton:TagResource", + "proton:UntagResource", + "proton:UpdateEnvironmentAccountConnection", + "iam:PassRole", + "proton:GetEnvironmentAccountConnection" + ] + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "Arn": { + "description": "The Amazon Resource Name (ARN) of the environment account connection.", + "type": "string" + }, + "CodebuildRoleArn": { + "description": "The Amazon Resource Name (ARN) of an IAM service role in the environment account. AWS Proton uses this role to provision infrastructure resources using CodeBuild-based provisioning in the associated environment account.", + "maxLength": 200, + "minLength": 1, + "pattern": "^arn:(aws|aws-cn|aws-us-gov):iam::\\d{12}:role/([\\w+=,.@-]{1,512}[/:])*([\\w+=,.@-]{1,64})$", + "type": "string" + }, + "ComponentRoleArn": { + "description": "The Amazon Resource Name (ARN) of the IAM service role that AWS Proton uses when provisioning directly defined components in the associated environment account. It determines the scope of infrastructure that a component can provision in the account.", + "maxLength": 200, + "minLength": 1, + "pattern": "^arn:(aws|aws-cn|aws-us-gov):iam::\\d{12}:role/([\\w+=,.@-]{1,512}[/:])*([\\w+=,.@-]{1,64})$", + "type": "string" + }, + "EnvironmentAccountId": { + "description": "The environment account that's connected to the environment account connection.", + "pattern": "^\\d{12}$", + "type": "string" + }, + "EnvironmentName": { + "description": "The name of the AWS Proton environment that's created in the associated management account.", + "maxLength": 100, + "minLength": 1, + "pattern": "^[0-9A-Za-z]+[0-9A-Za-z_\\-]*$", + "type": "string" + }, + "Id": { + "description": "The ID of the environment account connection.", + "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$", + "type": "string" + }, + "ManagementAccountId": { + "description": "The ID of the management account that accepts or rejects the environment account connection. You create an manage the AWS Proton environment in this account. If the management account accepts the environment account connection, AWS Proton can use the associated IAM role to provision environment infrastructure resources in the associated environment account.", + "pattern": "^\\d{12}$", + "type": "string" + }, + "RoleArn": { + "description": "The Amazon Resource Name (ARN) of the IAM service role that's created in the environment account. AWS Proton uses this role to provision infrastructure resources in the associated environment account.", + "maxLength": 200, + "minLength": 1, + "pattern": "^arn:(aws|aws-cn|aws-us-gov):iam::\\d{12}:role/([\\w+=,.@-]{1,512}[/:])*([\\w+=,.@-]{1,64})$", + "type": "string" + }, + "Status": { + "$ref": "#/definitions/Status", + "description": "The status of the environment account connection." + }, + "Tags": { + "description": "An optional list of metadata items that you can associate with the Proton environment account connection. A tag is a key-value pair.
\nFor more information, see Proton resources and tagging in the\n Proton User Guide.
", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/Id", + "/properties/Status" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-proton", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "proton:ListTagsForResource", + "proton:UntagResource", + "proton:TagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::Proton::EnvironmentAccountConnection" +} diff --git a/src/schema/aws-proton-environmenttemplate.json b/src/schema/aws-proton-environmenttemplate.json new file mode 100644 index 00000000..cad9a4dd --- /dev/null +++ b/src/schema/aws-proton-environmenttemplate.json @@ -0,0 +1,294 @@ +{ + "additionalIdentifiers": [ + [ + "/properties/Name" + ] + ], + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/EncryptionKey", + "/properties/Name", + "/properties/Provisioning" + ], + "definitions": { + "Provisioning": { + "enum": [ + "CUSTOMER_MANAGED" + ], + "type": "string" + }, + "Tag": { + "additionalProperties": false, + "description": "A description of a resource tag.
", + "properties": { + "Key": { + "description": "The key of the resource tag.
", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "The value of the resource tag.
", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "Definition of AWS::Proton::EnvironmentTemplate Resource Type", + "handlers": { + "create": { + "permissions": [ + "proton:CreateEnvironmentTemplate", + "proton:DeleteEnvironmentTemplate", + "proton:ListTagsForResource", + "proton:TagResource", + "proton:GetEnvironmentTemplate", + "kms:CancelKeyDeletion", + "kms:CreateAlias", + "kms:CreateCustomKeyStore", + "kms:CreateGrant", + "kms:CreateKey", + "kms:DeleteAlias", + "kms:DeleteCustomKeyStore", + "kms:DeleteImportedKeyMaterial", + "kms:DescribeCustomKeyStores", + "kms:DescribeKey", + "kms:DisableKey", + "kms:DisableKeyRotation", + "kms:EnableKey", + "kms:EnableKeyRotation", + "kms:GenerateDataKey", + "kms:GetKeyPolicy", + "kms:GetKeyRotationStatus", + "kms:GetParametersForImport", + "kms:GetPublicKey", + "kms:ListAliases", + "kms:ListGrants", + "kms:ListKeyPolicies", + "kms:ListKeyRotations", + "kms:ListKeys", + "kms:ListResourceTags", + "kms:ListRetirableGrants", + "kms:PutKeyPolicy", + "kms:RevokeGrant", + "kms:ScheduleKeyDeletion", + "kms:TagResource", + "kms:UntagResource", + "kms:UpdateAlias", + "kms:UpdateCustomKeyStore", + "kms:UpdateKeyDescription", + "kms:UpdatePrimaryRegion" + ] + }, + "delete": { + "permissions": [ + "proton:CreateEnvironmentTemplate", + "proton:DeleteEnvironmentTemplate", + "proton:GetEnvironmentTemplate", + "proton:ListTagsForResource", + "proton:TagResource", + "proton:UntagResource", + "kms:CancelKeyDeletion", + "kms:CreateAlias", + "kms:CreateCustomKeyStore", + "kms:CreateGrant", + "kms:CreateKey", + "kms:DeleteAlias", + "kms:DeleteCustomKeyStore", + "kms:DeleteImportedKeyMaterial", + "kms:DescribeCustomKeyStores", + "kms:DescribeKey", + "kms:DisableKey", + "kms:DisableKeyRotation", + "kms:EnableKey", + "kms:EnableKeyRotation", + "kms:GenerateDataKey", + "kms:GetKeyPolicy", + "kms:GetKeyRotationStatus", + "kms:GetParametersForImport", + "kms:GetPublicKey", + "kms:ListAliases", + "kms:ListGrants", + "kms:ListKeyPolicies", + "kms:ListKeyRotations", + "kms:ListKeys", + "kms:ListResourceTags", + "kms:ListRetirableGrants", + "kms:PutKeyPolicy", + "kms:RevokeGrant", + "kms:ScheduleKeyDeletion", + "kms:TagResource", + "kms:UntagResource", + "kms:UpdateAlias", + "kms:UpdateCustomKeyStore", + "kms:UpdateKeyDescription", + "kms:UpdatePrimaryRegion" + ] + }, + "list": { + "permissions": [ + "proton:ListEnvironmentTemplates" + ] + }, + "read": { + "permissions": [ + "proton:CreateEnvironmentTemplate", + "proton:DeleteEnvironmentTemplate", + "proton:ListTagsForResource", + "proton:GetEnvironmentTemplate", + "kms:CancelKeyDeletion", + "kms:CreateAlias", + "kms:CreateCustomKeyStore", + "kms:CreateGrant", + "kms:CreateKey", + "kms:DeleteAlias", + "kms:DeleteCustomKeyStore", + "kms:DeleteImportedKeyMaterial", + "kms:DescribeCustomKeyStores", + "kms:DescribeKey", + "kms:DisableKey", + "kms:DisableKeyRotation", + "kms:EnableKey", + "kms:EnableKeyRotation", + "kms:GenerateDataKey", + "kms:GetKeyPolicy", + "kms:GetKeyRotationStatus", + "kms:GetParametersForImport", + "kms:GetPublicKey", + "kms:ListAliases", + "kms:ListGrants", + "kms:ListKeyPolicies", + "kms:ListKeyRotations", + "kms:ListKeys", + "kms:ListResourceTags", + "kms:ListRetirableGrants", + "kms:PutKeyPolicy", + "kms:RevokeGrant", + "kms:ScheduleKeyDeletion", + "kms:TagResource", + "kms:UntagResource", + "kms:UpdateAlias", + "kms:UpdateCustomKeyStore", + "kms:UpdateKeyDescription", + "kms:UpdatePrimaryRegion" + ] + }, + "update": { + "permissions": [ + "proton:CreateEnvironmentTemplate", + "proton:DeleteEnvironmentTemplate", + "proton:GetEnvironmentTemplate", + "proton:ListTagsForResource", + "proton:TagResource", + "proton:UpdateEnvironmentTemplate", + "proton:UntagResource", + "kms:CancelKeyDeletion", + "kms:CreateAlias", + "kms:CreateCustomKeyStore", + "kms:CreateGrant", + "kms:CreateKey", + "kms:DeleteAlias", + "kms:DeleteCustomKeyStore", + "kms:DeleteImportedKeyMaterial", + "kms:DescribeCustomKeyStores", + "kms:DescribeKey", + "kms:DisableKey", + "kms:DisableKeyRotation", + "kms:EnableKey", + "kms:EnableKeyRotation", + "kms:GenerateDataKey", + "kms:GetKeyPolicy", + "kms:GetKeyRotationStatus", + "kms:GetParametersForImport", + "kms:GetPublicKey", + "kms:ListAliases", + "kms:ListGrants", + "kms:ListKeyPolicies", + "kms:ListKeyRotations", + "kms:ListKeys", + "kms:ListResourceTags", + "kms:ListRetirableGrants", + "kms:PutKeyPolicy", + "kms:RevokeGrant", + "kms:ScheduleKeyDeletion", + "kms:TagResource", + "kms:UntagResource", + "kms:UpdateAlias", + "kms:UpdateCustomKeyStore", + "kms:UpdateKeyDescription", + "kms:UpdatePrimaryRegion" + ] + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "Arn": { + "description": "The Amazon Resource Name (ARN) of the environment template.
", + "type": "string" + }, + "Description": { + "description": "A description of the environment template.
", + "maxLength": 500, + "minLength": 0, + "type": "string" + }, + "DisplayName": { + "description": "The environment template name as displayed in the developer interface.
", + "maxLength": 100, + "minLength": 1, + "type": "string" + }, + "EncryptionKey": { + "description": "A customer provided encryption key that Proton uses to encrypt data.
", + "maxLength": 200, + "minLength": 1, + "pattern": "^arn:(aws|aws-cn|aws-us-gov):[a-zA-Z0-9-]+:[a-zA-Z0-9-]*:\\d{12}:([\\w+=,.@-]+[/:])*[\\w+=,.@-]+$", + "type": "string" + }, + "Name": { + "maxLength": 100, + "minLength": 1, + "pattern": "^[0-9A-Za-z]+[0-9A-Za-z_\\-]*$", + "type": "string" + }, + "Provisioning": { + "$ref": "#/definitions/Provisioning" + }, + "Tags": { + "description": "An optional list of metadata items that you can associate with the Proton environment template. A tag is a key-value pair.
\nFor more information, see Proton resources and tagging in the\n Proton User Guide.
", + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "minItems": 0, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/Arn" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-proton", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "proton:ListTagsForResource", + "proton:UntagResource", + "proton:TagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::Proton::EnvironmentTemplate" +} diff --git a/src/schema/aws-proton-servicetemplate.json b/src/schema/aws-proton-servicetemplate.json new file mode 100644 index 00000000..473f38d0 --- /dev/null +++ b/src/schema/aws-proton-servicetemplate.json @@ -0,0 +1,290 @@ +{ + "additionalIdentifiers": [ + [ + "/properties/Name" + ] + ], + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/EncryptionKey", + "/properties/Name", + "/properties/PipelineProvisioning" + ], + "definitions": { + "Provisioning": { + "enum": [ + "CUSTOMER_MANAGED" + ], + "type": "string" + }, + "Tag": { + "additionalProperties": false, + "description": "A description of a resource tag.
", + "properties": { + "Key": { + "description": "The key of the resource tag.
", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "The value of the resource tag.
", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "Definition of AWS::Proton::ServiceTemplate Resource Type", + "handlers": { + "create": { + "permissions": [ + "proton:CreateServiceTemplate", + "proton:TagResource", + "proton:GetServiceTemplate", + "kms:CancelKeyDeletion", + "kms:CreateAlias", + "kms:CreateCustomKeyStore", + "kms:CreateGrant", + "kms:CreateKey", + "kms:DeleteAlias", + "kms:DeleteCustomKeyStore", + "kms:DeleteImportedKeyMaterial", + "kms:DescribeCustomKeyStores", + "kms:DescribeKey", + "kms:DisableKey", + "kms:DisableKeyRotation", + "kms:EnableKey", + "kms:EnableKeyRotation", + "kms:GenerateDataKey", + "kms:GetKeyPolicy", + "kms:GetKeyRotationStatus", + "kms:GetParametersForImport", + "kms:GetPublicKey", + "kms:ListAliases", + "kms:ListGrants", + "kms:ListKeyPolicies", + "kms:ListKeyRotations", + "kms:ListKeys", + "kms:ListResourceTags", + "kms:ListRetirableGrants", + "kms:PutKeyPolicy", + "kms:RevokeGrant", + "kms:ScheduleKeyDeletion", + "kms:TagResource", + "kms:UntagResource", + "kms:UpdateAlias", + "kms:UpdateCustomKeyStore", + "kms:UpdateKeyDescription", + "kms:UpdatePrimaryRegion" + ] + }, + "delete": { + "permissions": [ + "proton:DeleteServiceTemplate", + "proton:UntagResource", + "proton:GetServiceTemplate", + "kms:CancelKeyDeletion", + "kms:CreateAlias", + "kms:CreateCustomKeyStore", + "kms:CreateGrant", + "kms:CreateKey", + "kms:DeleteAlias", + "kms:DeleteCustomKeyStore", + "kms:DeleteImportedKeyMaterial", + "kms:DescribeCustomKeyStores", + "kms:DescribeKey", + "kms:DisableKey", + "kms:DisableKeyRotation", + "kms:EnableKey", + "kms:EnableKeyRotation", + "kms:GenerateDataKey", + "kms:GetKeyPolicy", + "kms:GetKeyRotationStatus", + "kms:GetParametersForImport", + "kms:GetPublicKey", + "kms:ListAliases", + "kms:ListGrants", + "kms:ListKeyPolicies", + "kms:ListKeyRotations", + "kms:ListKeys", + "kms:ListResourceTags", + "kms:ListRetirableGrants", + "kms:PutKeyPolicy", + "kms:RevokeGrant", + "kms:ScheduleKeyDeletion", + "kms:TagResource", + "kms:UntagResource", + "kms:UpdateAlias", + "kms:UpdateCustomKeyStore", + "kms:UpdateKeyDescription", + "kms:UpdatePrimaryRegion" + ] + }, + "list": { + "permissions": [ + "proton:ListServiceTemplates", + "proton:ListTagsForResource" + ] + }, + "read": { + "permissions": [ + "proton:GetServiceTemplate", + "proton:ListTagsForResource", + "kms:CancelKeyDeletion", + "kms:CreateAlias", + "kms:CreateCustomKeyStore", + "kms:CreateGrant", + "kms:CreateKey", + "kms:DeleteAlias", + "kms:DeleteCustomKeyStore", + "kms:DeleteImportedKeyMaterial", + "kms:DescribeCustomKeyStores", + "kms:DescribeKey", + "kms:DisableKey", + "kms:DisableKeyRotation", + "kms:EnableKey", + "kms:EnableKeyRotation", + "kms:GenerateDataKey", + "kms:GetKeyPolicy", + "kms:GetKeyRotationStatus", + "kms:GetParametersForImport", + "kms:GetPublicKey", + "kms:ListAliases", + "kms:ListGrants", + "kms:ListKeyPolicies", + "kms:ListKeyRotations", + "kms:ListKeys", + "kms:ListResourceTags", + "kms:ListRetirableGrants", + "kms:PutKeyPolicy", + "kms:RevokeGrant", + "kms:ScheduleKeyDeletion", + "kms:TagResource", + "kms:UntagResource", + "kms:UpdateAlias", + "kms:UpdateCustomKeyStore", + "kms:UpdateKeyDescription", + "kms:UpdatePrimaryRegion" + ] + }, + "update": { + "permissions": [ + "proton:GetServiceTemplate", + "proton:CreateServiceTemplate", + "proton:ListTagsForResource", + "proton:TagResource", + "proton:UntagResource", + "proton:UpdateServiceTemplate", + "kms:CancelKeyDeletion", + "kms:CreateAlias", + "kms:CreateCustomKeyStore", + "kms:CreateGrant", + "kms:CreateKey", + "kms:DeleteAlias", + "kms:DeleteCustomKeyStore", + "kms:DeleteImportedKeyMaterial", + "kms:DescribeCustomKeyStores", + "kms:DescribeKey", + "kms:DisableKey", + "kms:DisableKeyRotation", + "kms:EnableKey", + "kms:EnableKeyRotation", + "kms:GenerateDataKey", + "kms:GetKeyPolicy", + "kms:GetKeyRotationStatus", + "kms:GetParametersForImport", + "kms:GetPublicKey", + "kms:ListAliases", + "kms:ListGrants", + "kms:ListKeyPolicies", + "kms:ListKeyRotations", + "kms:ListKeys", + "kms:ListResourceTags", + "kms:ListRetirableGrants", + "kms:PutKeyPolicy", + "kms:RevokeGrant", + "kms:ScheduleKeyDeletion", + "kms:TagResource", + "kms:UntagResource", + "kms:UpdateAlias", + "kms:UpdateCustomKeyStore", + "kms:UpdateKeyDescription", + "kms:UpdatePrimaryRegion" + ] + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "Arn": { + "description": "The Amazon Resource Name (ARN) of the service template.
", + "maxLength": 200, + "minLength": 1, + "pattern": "^arn:(aws|aws-cn|aws-us-gov):[a-zA-Z0-9-]+:[a-zA-Z0-9-]*:\\d{12}:([\\w+=,.@-]+[/:])*[\\w+=,.@-]+$", + "type": "string" + }, + "Description": { + "description": "A description of the service template.
", + "maxLength": 500, + "minLength": 0, + "type": "string" + }, + "DisplayName": { + "description": "The name of the service template as displayed in the developer interface.
", + "maxLength": 100, + "minLength": 1, + "type": "string" + }, + "EncryptionKey": { + "description": "A customer provided encryption key that's used to encrypt data.
", + "maxLength": 200, + "minLength": 1, + "pattern": "^arn:(aws|aws-cn|aws-us-gov):[a-zA-Z0-9-]+:[a-zA-Z0-9-]*:\\d{12}:([\\w+=,.@-]+[/:])*[\\w+=,.@-]+$", + "type": "string" + }, + "Name": { + "maxLength": 100, + "minLength": 1, + "pattern": "^[0-9A-Za-z]+[0-9A-Za-z_\\-]*$", + "type": "string" + }, + "PipelineProvisioning": { + "$ref": "#/definitions/Provisioning" + }, + "Tags": { + "description": "An optional list of metadata items that you can associate with the Proton service template. A tag is a key-value pair.
\nFor more information, see Proton resources and tagging in the\n Proton User Guide.
", + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "minItems": 0, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/Arn" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-proton", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "proton:ListTagsForResource", + "proton:UntagResource", + "proton:TagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::Proton::ServiceTemplate" +} diff --git a/src/schema/aws-qbusiness-application.json b/src/schema/aws-qbusiness-application.json new file mode 100644 index 00000000..3e8920da --- /dev/null +++ b/src/schema/aws-qbusiness-application.json @@ -0,0 +1,351 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ClientIdsForOIDC", + "/properties/EncryptionConfiguration", + "/properties/IamIdentityProviderArn", + "/properties/IdentityType", + "/properties/QuickSightConfiguration" + ], + "definitions": { + "ApplicationStatus": { + "enum": [ + "CREATING", + "ACTIVE", + "DELETING", + "FAILED", + "UPDATING" + ], + "type": "string" + }, + "AttachmentsConfiguration": { + "additionalProperties": false, + "properties": { + "AttachmentsControlMode": { + "$ref": "#/definitions/AttachmentsControlMode" + } + }, + "required": [ + "AttachmentsControlMode" + ], + "type": "object" + }, + "AttachmentsControlMode": { + "enum": [ + "ENABLED", + "DISABLED" + ], + "type": "string" + }, + "AutoSubscriptionConfiguration": { + "additionalProperties": false, + "properties": { + "AutoSubscribe": { + "$ref": "#/definitions/AutoSubscriptionStatus" + }, + "DefaultSubscriptionType": { + "$ref": "#/definitions/SubscriptionType" + } + }, + "required": [ + "AutoSubscribe" + ], + "type": "object" + }, + "AutoSubscriptionStatus": { + "enum": [ + "ENABLED", + "DISABLED" + ], + "type": "string" + }, + "EncryptionConfiguration": { + "additionalProperties": false, + "properties": { + "KmsKeyId": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + } + }, + "type": "object" + }, + "IdentityType": { + "enum": [ + "AWS_IAM_IDP_SAML", + "AWS_IAM_IDP_OIDC", + "AWS_IAM_IDC", + "AWS_QUICKSIGHT_IDP" + ], + "type": "string" + }, + "PersonalizationConfiguration": { + "additionalProperties": false, + "properties": { + "PersonalizationControlMode": { + "$ref": "#/definitions/PersonalizationControlMode" + } + }, + "required": [ + "PersonalizationControlMode" + ], + "type": "object" + }, + "PersonalizationControlMode": { + "enum": [ + "ENABLED", + "DISABLED" + ], + "type": "string" + }, + "QAppsConfiguration": { + "additionalProperties": false, + "properties": { + "QAppsControlMode": { + "$ref": "#/definitions/QAppsControlMode" + } + }, + "required": [ + "QAppsControlMode" + ], + "type": "object" + }, + "QAppsControlMode": { + "enum": [ + "ENABLED", + "DISABLED" + ], + "type": "string" + }, + "QuickSightConfiguration": { + "additionalProperties": false, + "properties": { + "ClientNamespace": { + "maxLength": 64, + "minLength": 1, + "pattern": "^[a-zA-Z0-9._-]*$", + "type": "string" + } + }, + "required": [ + "ClientNamespace" + ], + "type": "object" + }, + "SubscriptionType": { + "enum": [ + "Q_LITE", + "Q_BUSINESS" + ], + "type": "string" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "Definition of AWS::QBusiness::Application Resource Type", + "handlers": { + "create": { + "permissions": [ + "iam:GetSAMLProvider", + "iam:PassRole", + "kms:CreateGrant", + "kms:DescribeKey", + "qbusiness:CreateApplication", + "qbusiness:GetApplication", + "qbusiness:ListTagsForResource", + "qbusiness:TagResource", + "qbusiness:UpdateApplication", + "quicksight:DescribeAccountSubscription", + "quicksight:ListNamespaces", + "sso:CreateApplication", + "sso:DeleteApplication", + "sso:DescribeInstance", + "sso:PutApplicationAccessScope", + "sso:PutApplicationAuthenticationMethod", + "sso:PutApplicationGrant" + ] + }, + "delete": { + "permissions": [ + "kms:RetireGrant", + "qbusiness:DeleteApplication", + "qbusiness:GetApplication", + "sso:DeleteApplication" + ] + }, + "list": { + "permissions": [ + "qbusiness:ListApplications" + ] + }, + "read": { + "permissions": [ + "qbusiness:GetApplication", + "qbusiness:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "iam:PassRole", + "qbusiness:GetApplication", + "qbusiness:ListTagsForResource", + "qbusiness:TagResource", + "qbusiness:UntagResource", + "qbusiness:UpdateApplication", + "sso:CreateApplication", + "sso:DeleteApplication", + "sso:DescribeInstance", + "sso:PutApplicationAccessScope", + "sso:PutApplicationAuthenticationMethod", + "sso:PutApplicationGrant" + ] + } + }, + "primaryIdentifier": [ + "/properties/ApplicationId" + ], + "properties": { + "ApplicationArn": { + "maxLength": 1284, + "minLength": 0, + "pattern": "^arn:[a-z0-9-\\.]{1,63}:[a-z0-9-\\.]{0,63}:[a-z0-9-\\.]{0,63}:[a-z0-9-\\.]{0,63}:[^/].{0,1023}$", + "type": "string" + }, + "ApplicationId": { + "maxLength": 36, + "minLength": 36, + "pattern": "^[a-zA-Z0-9][a-zA-Z0-9-]{35}$", + "type": "string" + }, + "AttachmentsConfiguration": { + "$ref": "#/definitions/AttachmentsConfiguration" + }, + "AutoSubscriptionConfiguration": { + "$ref": "#/definitions/AutoSubscriptionConfiguration" + }, + "ClientIdsForOIDC": { + "items": { + "maxLength": 255, + "minLength": 1, + "pattern": "^[a-zA-Z0-9_.:/()*?=-]*$", + "type": "string" + }, + "type": "array" + }, + "CreatedAt": { + "format": "date-time", + "type": "string" + }, + "Description": { + "maxLength": 1000, + "minLength": 0, + "pattern": "^[\\s\\S]*$", + "type": "string" + }, + "DisplayName": { + "maxLength": 1000, + "minLength": 1, + "pattern": "^[a-zA-Z0-9][a-zA-Z0-9_-]*$", + "type": "string" + }, + "EncryptionConfiguration": { + "$ref": "#/definitions/EncryptionConfiguration" + }, + "IamIdentityProviderArn": { + "maxLength": 2048, + "minLength": 20, + "pattern": "^arn:aws:iam::\\d{12}:(oidc-provider|saml-provider)/[a-zA-Z0-9_\\.\\/@\\-]+$", + "type": "string" + }, + "IdentityCenterApplicationArn": { + "maxLength": 1224, + "minLength": 10, + "pattern": "^arn:(aws|aws-us-gov|aws-cn|aws-iso|aws-iso-b):sso::\\d{12}:application/(sso)?ins-[a-zA-Z0-9-.]{16}/apl-[a-zA-Z0-9]{16}$", + "type": "string" + }, + "IdentityCenterInstanceArn": { + "maxLength": 1224, + "minLength": 10, + "pattern": "^arn:(aws|aws-us-gov|aws-cn|aws-iso|aws-iso-b):sso:::instance/(sso)?ins-[a-zA-Z0-9-.]{16}$", + "type": "string" + }, + "IdentityType": { + "$ref": "#/definitions/IdentityType" + }, + "PersonalizationConfiguration": { + "$ref": "#/definitions/PersonalizationConfiguration" + }, + "QAppsConfiguration": { + "$ref": "#/definitions/QAppsConfiguration" + }, + "QuickSightConfiguration": { + "$ref": "#/definitions/QuickSightConfiguration" + }, + "RoleArn": { + "maxLength": 1284, + "minLength": 0, + "pattern": "^arn:[a-z0-9-\\.]{1,63}:[a-z0-9-\\.]{0,63}:[a-z0-9-\\.]{0,63}:[a-z0-9-\\.]{0,63}:[^/].{0,1023}$", + "type": "string" + }, + "Status": { + "$ref": "#/definitions/ApplicationStatus" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "UpdatedAt": { + "format": "date-time", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/ApplicationArn", + "/properties/ApplicationId", + "/properties/CreatedAt", + "/properties/IdentityCenterApplicationArn", + "/properties/Status", + "/properties/UpdatedAt" + ], + "required": [ + "DisplayName" + ], + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "qbusiness:UntagResource", + "qbusiness:TagResource", + "qbusiness:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::QBusiness::Application", + "writeOnlyProperties": [ + "/properties/IdentityCenterInstanceArn" + ] +} diff --git a/src/schema/aws-qbusiness-dataaccessor.json b/src/schema/aws-qbusiness-dataaccessor.json new file mode 100644 index 00000000..5758b7fa --- /dev/null +++ b/src/schema/aws-qbusiness-dataaccessor.json @@ -0,0 +1,330 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ApplicationId", + "/properties/Principal" + ], + "definitions": { + "ActionConfiguration": { + "additionalProperties": false, + "properties": { + "Action": { + "pattern": "^qbusiness:[a-zA-Z]+$", + "type": "string" + }, + "FilterConfiguration": { + "$ref": "#/definitions/ActionFilterConfiguration" + } + }, + "required": [ + "Action" + ], + "type": "object" + }, + "ActionFilterConfiguration": { + "additionalProperties": false, + "properties": { + "DocumentAttributeFilter": { + "$ref": "#/definitions/AttributeFilter" + } + }, + "required": [ + "DocumentAttributeFilter" + ], + "type": "object" + }, + "AttributeFilter": { + "additionalProperties": false, + "properties": { + "AndAllFilters": { + "items": { + "$ref": "#/definitions/AttributeFilter" + }, + "type": "array" + }, + "ContainsAll": { + "$ref": "#/definitions/DocumentAttribute" + }, + "ContainsAny": { + "$ref": "#/definitions/DocumentAttribute" + }, + "EqualsTo": { + "$ref": "#/definitions/DocumentAttribute" + }, + "GreaterThan": { + "$ref": "#/definitions/DocumentAttribute" + }, + "GreaterThanOrEquals": { + "$ref": "#/definitions/DocumentAttribute" + }, + "LessThan": { + "$ref": "#/definitions/DocumentAttribute" + }, + "LessThanOrEquals": { + "$ref": "#/definitions/DocumentAttribute" + }, + "NotFilter": { + "$ref": "#/definitions/AttributeFilter" + }, + "OrAllFilters": { + "items": { + "$ref": "#/definitions/AttributeFilter" + }, + "type": "array" + } + }, + "type": "object" + }, + "DocumentAttribute": { + "additionalProperties": false, + "properties": { + "Name": { + "maxLength": 200, + "minLength": 1, + "pattern": "^[a-zA-Z0-9_][a-zA-Z0-9_-]*$", + "type": "string" + }, + "Value": { + "$ref": "#/definitions/DocumentAttributeValue" + } + }, + "required": [ + "Name", + "Value" + ], + "type": "object" + }, + "DocumentAttributeValue": { + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "StringValue": { + "maxLength": 2048, + "type": "string" + } + }, + "required": [ + "StringValue" + ], + "title": "StringValue", + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "StringListValue": { + "items": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "StringListValue" + ], + "title": "StringListValue", + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "LongValue": { + "type": "number" + } + }, + "required": [ + "LongValue" + ], + "title": "LongValue", + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "DateValue": { + "format": "date-time", + "type": "string" + } + }, + "required": [ + "DateValue" + ], + "title": "DateValue", + "type": "object" + } + ] + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "Unit": { + "additionalProperties": false, + "type": "object" + } + }, + "description": "Definition of AWS::QBusiness::DataAccessor Resource Type", + "handlers": { + "create": { + "permissions": [ + "qbusiness:CreateDataAccessor", + "qbusiness:GetDataAccessor", + "qbusiness:ListTagsForResource", + "qbusiness:TagResource", + "sso:CreateApplication", + "sso:PutApplicationAuthenticationMethod", + "sso:PutApplicationGrant", + "sso:PutApplicationAccessScope" + ] + }, + "delete": { + "permissions": [ + "qbusiness:DeleteDataAccessor", + "qbusiness:GetDataAccessor", + "sso:DeleteApplication" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "ApplicationId": { + "$ref": "resource-schema.json#/properties/ApplicationId" + } + }, + "required": [ + "ApplicationId" + ] + }, + "permissions": [ + "qbusiness:ListDataAccessors" + ] + }, + "read": { + "permissions": [ + "qbusiness:GetDataAccessor", + "qbusiness:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "qbusiness:GetDataAccessor", + "qbusiness:ListTagsForResource", + "qbusiness:TagResource", + "qbusiness:UntagResource", + "qbusiness:UpdateDataAccessor" + ] + } + }, + "primaryIdentifier": [ + "/properties/ApplicationId", + "/properties/DataAccessorId" + ], + "properties": { + "ActionConfigurations": { + "items": { + "$ref": "#/definitions/ActionConfiguration" + }, + "maxItems": 10, + "minItems": 1, + "type": "array" + }, + "ApplicationId": { + "maxLength": 36, + "minLength": 36, + "pattern": "^[a-zA-Z0-9][a-zA-Z0-9-]{35}$", + "type": "string" + }, + "CreatedAt": { + "format": "date-time", + "type": "string" + }, + "DataAccessorArn": { + "maxLength": 1284, + "minLength": 0, + "pattern": "^arn:[a-z0-9-\\.]{1,63}:[a-z0-9-\\.]{0,63}:[a-z0-9-\\.]{0,63}:[a-z0-9-\\.]{0,63}:[^/].{0,1023}$", + "type": "string" + }, + "DataAccessorId": { + "maxLength": 36, + "minLength": 36, + "pattern": "^[a-zA-Z0-9][a-zA-Z0-9-]{35}$", + "type": "string" + }, + "DisplayName": { + "maxLength": 100, + "minLength": 1, + "pattern": "^[a-zA-Z0-9][a-zA-Z0-9_-]*$", + "type": "string" + }, + "IdcApplicationArn": { + "maxLength": 1224, + "minLength": 10, + "pattern": "^arn:(aws|aws-us-gov|aws-cn|aws-iso|aws-iso-b):sso::\\d{12}:application/(sso)?ins-[a-zA-Z0-9-.]{16}/apl-[a-zA-Z0-9]{16}$", + "type": "string" + }, + "Principal": { + "maxLength": 1284, + "minLength": 1, + "pattern": "^arn:aws:iam::[0-9]{12}:role/[a-zA-Z0-9_/+=,.@-]+$", + "type": "string" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "UpdatedAt": { + "format": "date-time", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/CreatedAt", + "/properties/DataAccessorArn", + "/properties/DataAccessorId", + "/properties/IdcApplicationArn", + "/properties/UpdatedAt" + ], + "required": [ + "ApplicationId", + "ActionConfigurations", + "DisplayName", + "Principal" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-qbusiness", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "qbusiness:UntagResource", + "qbusiness:TagResource", + "qbusiness:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::QBusiness::DataAccessor" +} diff --git a/src/schema/aws-qbusiness-datasource.json b/src/schema/aws-qbusiness-datasource.json new file mode 100644 index 00000000..bc8a2ba0 --- /dev/null +++ b/src/schema/aws-qbusiness-datasource.json @@ -0,0 +1,512 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ApplicationId", + "/properties/IndexId" + ], + "definitions": { + "AttributeValueOperator": { + "enum": [ + "DELETE" + ], + "type": "string" + }, + "AudioExtractionConfiguration": { + "additionalProperties": false, + "properties": { + "AudioExtractionStatus": { + "$ref": "#/definitions/AudioExtractionStatus" + } + }, + "required": [ + "AudioExtractionStatus" + ], + "type": "object" + }, + "AudioExtractionStatus": { + "enum": [ + "ENABLED", + "DISABLED" + ], + "type": "string" + }, + "DataSourceStatus": { + "enum": [ + "PENDING_CREATION", + "CREATING", + "ACTIVE", + "DELETING", + "FAILED", + "UPDATING" + ], + "type": "string" + }, + "DataSourceVpcConfiguration": { + "additionalProperties": false, + "properties": { + "SecurityGroupIds": { + "insertionOrder": false, + "items": { + "maxLength": 200, + "minLength": 1, + "pattern": "^[-0-9a-zA-Z]+$", + "type": "string" + }, + "maxItems": 10, + "minItems": 1, + "type": "array" + }, + "SubnetIds": { + "insertionOrder": false, + "items": { + "maxLength": 200, + "minLength": 1, + "pattern": "^[-0-9a-zA-Z]+$", + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "SecurityGroupIds", + "SubnetIds" + ], + "type": "object" + }, + "DocumentAttributeCondition": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 200, + "minLength": 1, + "pattern": "^[a-zA-Z0-9_][a-zA-Z0-9_-]*$", + "type": "string" + }, + "Operator": { + "$ref": "#/definitions/DocumentEnrichmentConditionOperator" + }, + "Value": { + "$ref": "#/definitions/DocumentAttributeValue" + } + }, + "required": [ + "Key", + "Operator" + ], + "type": "object" + }, + "DocumentAttributeTarget": { + "additionalProperties": false, + "properties": { + "AttributeValueOperator": { + "$ref": "#/definitions/AttributeValueOperator" + }, + "Key": { + "maxLength": 200, + "minLength": 1, + "pattern": "^[a-zA-Z0-9_][a-zA-Z0-9_-]*$", + "type": "string" + }, + "Value": { + "$ref": "#/definitions/DocumentAttributeValue" + } + }, + "required": [ + "Key" + ], + "type": "object" + }, + "DocumentAttributeValue": { + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "StringValue": { + "maxLength": 2048, + "type": "string" + } + }, + "required": [ + "StringValue" + ], + "title": "StringValue", + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "StringListValue": { + "insertionOrder": true, + "items": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "StringListValue" + ], + "title": "StringListValue", + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "LongValue": { + "type": "number" + } + }, + "required": [ + "LongValue" + ], + "title": "LongValue", + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "DateValue": { + "format": "date-time", + "type": "string" + } + }, + "required": [ + "DateValue" + ], + "title": "DateValue", + "type": "object" + } + ] + }, + "DocumentContentOperator": { + "enum": [ + "DELETE" + ], + "type": "string" + }, + "DocumentEnrichmentConditionOperator": { + "enum": [ + "GREATER_THAN", + "GREATER_THAN_OR_EQUALS", + "LESS_THAN", + "LESS_THAN_OR_EQUALS", + "EQUALS", + "NOT_EQUALS", + "CONTAINS", + "NOT_CONTAINS", + "EXISTS", + "NOT_EXISTS", + "BEGINS_WITH" + ], + "type": "string" + }, + "DocumentEnrichmentConfiguration": { + "additionalProperties": false, + "properties": { + "InlineConfigurations": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/InlineDocumentEnrichmentConfiguration" + }, + "maxItems": 100, + "minItems": 1, + "type": "array" + }, + "PostExtractionHookConfiguration": { + "$ref": "#/definitions/HookConfiguration" + }, + "PreExtractionHookConfiguration": { + "$ref": "#/definitions/HookConfiguration" + } + }, + "type": "object" + }, + "HookConfiguration": { + "additionalProperties": false, + "properties": { + "InvocationCondition": { + "$ref": "#/definitions/DocumentAttributeCondition" + }, + "LambdaArn": { + "maxLength": 2048, + "minLength": 1, + "pattern": "^arn:aws[a-zA-Z-]*:lambda:[a-z-]*-[0-9]:[0-9]{12}:function:[a-zA-Z0-9-_]+(/[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})?(:[a-zA-Z0-9-_]+)?$", + "type": "string" + }, + "RoleArn": { + "maxLength": 1284, + "minLength": 0, + "pattern": "^arn:[a-z0-9-\\.]{1,63}:[a-z0-9-\\.]{0,63}:[a-z0-9-\\.]{0,63}:[a-z0-9-\\.]{0,63}:[^/].{0,1023}$", + "type": "string" + }, + "S3BucketName": { + "maxLength": 63, + "minLength": 1, + "pattern": "^[a-z0-9][\\.\\-a-z0-9]{1,61}[a-z0-9]$", + "type": "string" + } + }, + "type": "object" + }, + "ImageExtractionConfiguration": { + "additionalProperties": false, + "properties": { + "ImageExtractionStatus": { + "$ref": "#/definitions/ImageExtractionStatus" + } + }, + "required": [ + "ImageExtractionStatus" + ], + "type": "object" + }, + "ImageExtractionStatus": { + "enum": [ + "ENABLED", + "DISABLED" + ], + "type": "string" + }, + "InlineDocumentEnrichmentConfiguration": { + "additionalProperties": false, + "properties": { + "Condition": { + "$ref": "#/definitions/DocumentAttributeCondition" + }, + "DocumentContentOperator": { + "$ref": "#/definitions/DocumentContentOperator" + }, + "Target": { + "$ref": "#/definitions/DocumentAttributeTarget" + } + }, + "type": "object" + }, + "MediaExtractionConfiguration": { + "additionalProperties": false, + "properties": { + "AudioExtractionConfiguration": { + "$ref": "#/definitions/AudioExtractionConfiguration" + }, + "ImageExtractionConfiguration": { + "$ref": "#/definitions/ImageExtractionConfiguration" + }, + "VideoExtractionConfiguration": { + "$ref": "#/definitions/VideoExtractionConfiguration" + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "VideoExtractionConfiguration": { + "additionalProperties": false, + "properties": { + "VideoExtractionStatus": { + "$ref": "#/definitions/VideoExtractionStatus" + } + }, + "required": [ + "VideoExtractionStatus" + ], + "type": "object" + }, + "VideoExtractionStatus": { + "enum": [ + "ENABLED", + "DISABLED" + ], + "type": "string" + } + }, + "description": "Definition of AWS::QBusiness::DataSource Resource Type", + "handlers": { + "create": { + "permissions": [ + "iam:PassRole", + "qbusiness:CreateDataSource", + "qbusiness:GetDataSource", + "qbusiness:ListTagsForResource", + "qbusiness:TagResource" + ] + }, + "delete": { + "permissions": [ + "qbusiness:DeleteDataSource", + "qbusiness:GetDataSource" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "ApplicationId": { + "$ref": "resource-schema.json#/properties/ApplicationId" + }, + "IndexId": { + "$ref": "resource-schema.json#/properties/IndexId" + } + }, + "required": [ + "IndexId", + "ApplicationId" + ] + }, + "permissions": [ + "qbusiness:ListDataSources" + ] + }, + "read": { + "permissions": [ + "qbusiness:GetDataSource", + "qbusiness:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "iam:PassRole", + "qbusiness:GetDataSource", + "qbusiness:ListTagsForResource", + "qbusiness:TagResource", + "qbusiness:UntagResource", + "qbusiness:UpdateDataSource" + ] + } + }, + "primaryIdentifier": [ + "/properties/ApplicationId", + "/properties/DataSourceId", + "/properties/IndexId" + ], + "properties": { + "ApplicationId": { + "maxLength": 36, + "minLength": 36, + "pattern": "^[a-zA-Z0-9][a-zA-Z0-9-]{35}$", + "type": "string" + }, + "Configuration": {}, + "CreatedAt": { + "format": "date-time", + "type": "string" + }, + "DataSourceArn": { + "maxLength": 1284, + "minLength": 0, + "pattern": "^arn:[a-z0-9-\\.]{1,63}:[a-z0-9-\\.]{0,63}:[a-z0-9-\\.]{0,63}:[a-z0-9-\\.]{0,63}:[^/].{0,1023}$", + "type": "string" + }, + "DataSourceId": { + "maxLength": 36, + "minLength": 36, + "pattern": "^[a-zA-Z0-9][a-zA-Z0-9-]{35}$", + "type": "string" + }, + "Description": { + "maxLength": 1000, + "minLength": 0, + "pattern": "^[\\s\\S]*$", + "type": "string" + }, + "DisplayName": { + "maxLength": 1000, + "minLength": 1, + "pattern": "^[a-zA-Z0-9][a-zA-Z0-9_-]*$", + "type": "string" + }, + "DocumentEnrichmentConfiguration": { + "$ref": "#/definitions/DocumentEnrichmentConfiguration" + }, + "IndexId": { + "maxLength": 36, + "minLength": 36, + "pattern": "^[a-zA-Z0-9][a-zA-Z0-9-]{35}$", + "type": "string" + }, + "MediaExtractionConfiguration": { + "$ref": "#/definitions/MediaExtractionConfiguration" + }, + "RoleArn": { + "maxLength": 1284, + "minLength": 0, + "pattern": "^arn:[a-z0-9-\\.]{1,63}:[a-z0-9-\\.]{0,63}:[a-z0-9-\\.]{0,63}:[a-z0-9-\\.]{0,63}:[^/].{0,1023}$", + "type": "string" + }, + "Status": { + "$ref": "#/definitions/DataSourceStatus" + }, + "SyncSchedule": { + "maxLength": 998, + "pattern": "^[\\s\\S]*$", + "type": "string" + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "Type": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "UpdatedAt": { + "format": "date-time", + "type": "string" + }, + "VpcConfiguration": { + "$ref": "#/definitions/DataSourceVpcConfiguration" + } + }, + "readOnlyProperties": [ + "/properties/CreatedAt", + "/properties/DataSourceArn", + "/properties/DataSourceId", + "/properties/Status", + "/properties/Type", + "/properties/UpdatedAt" + ], + "required": [ + "ApplicationId", + "IndexId", + "Configuration", + "DisplayName" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-qbusiness", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "qbusiness:UntagResource", + "qbusiness:TagResource", + "qbusiness:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::QBusiness::DataSource" +} diff --git a/src/schema/aws-qbusiness-index.json b/src/schema/aws-qbusiness-index.json new file mode 100644 index 00000000..5d4cb290 --- /dev/null +++ b/src/schema/aws-qbusiness-index.json @@ -0,0 +1,261 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ApplicationId", + "/properties/Type" + ], + "definitions": { + "AttributeType": { + "enum": [ + "STRING", + "STRING_LIST", + "NUMBER", + "DATE" + ], + "type": "string" + }, + "DocumentAttributeConfiguration": { + "additionalProperties": false, + "properties": { + "Name": { + "maxLength": 30, + "minLength": 1, + "pattern": "^[a-zA-Z0-9_][a-zA-Z0-9_-]*$", + "type": "string" + }, + "Search": { + "$ref": "#/definitions/Status" + }, + "Type": { + "$ref": "#/definitions/AttributeType" + } + }, + "type": "object" + }, + "IndexCapacityConfiguration": { + "additionalProperties": false, + "properties": { + "Units": { + "minimum": 1, + "type": "number" + } + }, + "type": "object" + }, + "IndexStatistics": { + "additionalProperties": false, + "properties": { + "TextDocumentStatistics": { + "$ref": "#/definitions/TextDocumentStatistics" + } + }, + "type": "object" + }, + "IndexStatus": { + "enum": [ + "CREATING", + "ACTIVE", + "DELETING", + "FAILED", + "UPDATING" + ], + "type": "string" + }, + "IndexType": { + "enum": [ + "ENTERPRISE", + "STARTER" + ], + "type": "string" + }, + "Status": { + "enum": [ + "ENABLED", + "DISABLED" + ], + "type": "string" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "TextDocumentStatistics": { + "additionalProperties": false, + "properties": { + "IndexedTextBytes": { + "minimum": 0, + "type": "number" + }, + "IndexedTextDocumentCount": { + "minimum": 0, + "type": "number" + } + }, + "type": "object" + } + }, + "description": "Definition of AWS::QBusiness::Index Resource Type", + "handlers": { + "create": { + "permissions": [ + "qbusiness:CreateIndex", + "qbusiness:GetIndex", + "qbusiness:ListTagsForResource", + "qbusiness:TagResource", + "qbusiness:UpdateIndex" + ] + }, + "delete": { + "permissions": [ + "qbusiness:DeleteIndex", + "qbusiness:GetIndex" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "ApplicationId": { + "$ref": "resource-schema.json#/properties/ApplicationId" + } + }, + "required": [ + "ApplicationId" + ] + }, + "permissions": [ + "qbusiness:ListIndices" + ] + }, + "read": { + "permissions": [ + "qbusiness:GetIndex", + "qbusiness:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "qbusiness:GetIndex", + "qbusiness:ListTagsForResource", + "qbusiness:TagResource", + "qbusiness:UntagResource", + "qbusiness:UpdateIndex" + ] + } + }, + "primaryIdentifier": [ + "/properties/ApplicationId", + "/properties/IndexId" + ], + "properties": { + "ApplicationId": { + "maxLength": 36, + "minLength": 36, + "pattern": "^[a-zA-Z0-9][a-zA-Z0-9-]{35}$", + "type": "string" + }, + "CapacityConfiguration": { + "$ref": "#/definitions/IndexCapacityConfiguration" + }, + "CreatedAt": { + "format": "date-time", + "type": "string" + }, + "Description": { + "maxLength": 1000, + "minLength": 0, + "pattern": "^[\\s\\S]*$", + "type": "string" + }, + "DisplayName": { + "maxLength": 1000, + "minLength": 1, + "pattern": "^[a-zA-Z0-9][a-zA-Z0-9_-]*$", + "type": "string" + }, + "DocumentAttributeConfigurations": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/DocumentAttributeConfiguration" + }, + "maxItems": 500, + "minItems": 1, + "type": "array" + }, + "IndexArn": { + "maxLength": 1284, + "minLength": 0, + "pattern": "^arn:[a-z0-9-\\.]{1,63}:[a-z0-9-\\.]{0,63}:[a-z0-9-\\.]{0,63}:[a-z0-9-\\.]{0,63}:[^/].{0,1023}$", + "type": "string" + }, + "IndexId": { + "maxLength": 36, + "minLength": 36, + "pattern": "^[a-zA-Z0-9][a-zA-Z0-9-]{35}$", + "type": "string" + }, + "IndexStatistics": { + "$ref": "#/definitions/IndexStatistics" + }, + "Status": { + "$ref": "#/definitions/IndexStatus" + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "Type": { + "$ref": "#/definitions/IndexType" + }, + "UpdatedAt": { + "format": "date-time", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/CreatedAt", + "/properties/IndexArn", + "/properties/IndexId", + "/properties/IndexStatistics", + "/properties/Status", + "/properties/UpdatedAt" + ], + "required": [ + "ApplicationId", + "DisplayName" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-qbusiness", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "qbusiness:UntagResource", + "qbusiness:TagResource", + "qbusiness:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::QBusiness::Index" +} diff --git a/src/schema/aws-qbusiness-permission.json b/src/schema/aws-qbusiness-permission.json new file mode 100644 index 00000000..ac60cbda --- /dev/null +++ b/src/schema/aws-qbusiness-permission.json @@ -0,0 +1,91 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ApplicationId", + "/properties/StatementId", + "/properties/Actions", + "/properties/Principal" + ], + "description": "Definition of AWS::QBusiness::Permission Resource Type", + "handlers": { + "create": { + "permissions": [ + "qbusiness:AssociatePermission", + "qbusiness:PutResourcePolicy" + ] + }, + "delete": { + "permissions": [ + "qbusiness:DisassociatePermission", + "qbusiness:PutResourcePolicy" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "ApplicationId": { + "$ref": "resource-schema.json#/properties/ApplicationId" + } + }, + "required": [ + "ApplicationId" + ] + }, + "permissions": [ + "qbusiness:GetPolicy" + ] + }, + "read": { + "permissions": [ + "qbusiness:GetPolicy" + ] + } + }, + "primaryIdentifier": [ + "/properties/ApplicationId", + "/properties/StatementId" + ], + "properties": { + "Actions": { + "items": { + "pattern": "^qbusiness:[a-zA-Z]+$", + "type": "string" + }, + "maxItems": 10, + "minItems": 1, + "type": "array" + }, + "ApplicationId": { + "maxLength": 36, + "minLength": 36, + "pattern": "^[a-zA-Z0-9][a-zA-Z0-9-]{35}$", + "type": "string" + }, + "Principal": { + "maxLength": 1284, + "minLength": 1, + "pattern": "^arn:aws:iam::[0-9]{12}:role/[a-zA-Z0-9_/+=,.@-]+$", + "type": "string" + }, + "StatementId": { + "maxLength": 100, + "minLength": 1, + "pattern": "^[a-zA-Z0-9_-]+$", + "type": "string" + } + }, + "required": [ + "ApplicationId", + "StatementId", + "Actions", + "Principal" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-qbusiness", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::QBusiness::Permission" +} diff --git a/src/schema/aws-qbusiness-plugin.json b/src/schema/aws-qbusiness-plugin.json new file mode 100644 index 00000000..224581b0 --- /dev/null +++ b/src/schema/aws-qbusiness-plugin.json @@ -0,0 +1,394 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ApplicationId", + "/properties/Type" + ], + "definitions": { + "APISchema": { + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "Payload": { + "type": "string" + } + }, + "required": [ + "Payload" + ], + "title": "Payload", + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "S3": { + "$ref": "#/definitions/S3" + } + }, + "required": [ + "S3" + ], + "title": "S3", + "type": "object" + } + ] + }, + "APISchemaType": { + "enum": [ + "OPEN_API_V3" + ], + "type": "string" + }, + "BasicAuthConfiguration": { + "additionalProperties": false, + "properties": { + "RoleArn": { + "maxLength": 1284, + "minLength": 0, + "pattern": "^arn:[a-z0-9-\\.]{1,63}:[a-z0-9-\\.]{0,63}:[a-z0-9-\\.]{0,63}:[a-z0-9-\\.]{0,63}:[^/].{0,1023}$", + "type": "string" + }, + "SecretArn": { + "maxLength": 1284, + "minLength": 0, + "pattern": "^arn:[a-z0-9-\\.]{1,63}:[a-z0-9-\\.]{0,63}:[a-z0-9-\\.]{0,63}:[a-z0-9-\\.]{0,63}:[^/].{0,1023}$", + "type": "string" + } + }, + "required": [ + "RoleArn", + "SecretArn" + ], + "type": "object" + }, + "CustomPluginConfiguration": { + "additionalProperties": false, + "properties": { + "ApiSchema": { + "$ref": "#/definitions/APISchema" + }, + "ApiSchemaType": { + "$ref": "#/definitions/APISchemaType" + }, + "Description": { + "maxLength": 200, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "ApiSchema", + "ApiSchemaType", + "Description" + ], + "type": "object" + }, + "NoAuthConfiguration": { + "additionalProperties": false, + "type": "object" + }, + "OAuth2ClientCredentialConfiguration": { + "additionalProperties": false, + "properties": { + "AuthorizationUrl": { + "maxLength": 2048, + "minLength": 1, + "pattern": "^(https?|ftp|file)://([^\\s]*)$", + "type": "string" + }, + "RoleArn": { + "maxLength": 1284, + "minLength": 0, + "pattern": "^arn:[a-z0-9-\\.]{1,63}:[a-z0-9-\\.]{0,63}:[a-z0-9-\\.]{0,63}:[a-z0-9-\\.]{0,63}:[^/].{0,1023}$", + "type": "string" + }, + "SecretArn": { + "maxLength": 1284, + "minLength": 0, + "pattern": "^arn:[a-z0-9-\\.]{1,63}:[a-z0-9-\\.]{0,63}:[a-z0-9-\\.]{0,63}:[a-z0-9-\\.]{0,63}:[^/].{0,1023}$", + "type": "string" + }, + "TokenUrl": { + "maxLength": 2048, + "minLength": 1, + "pattern": "^(https?|ftp|file)://([^\\s]*)$", + "type": "string" + } + }, + "required": [ + "RoleArn", + "SecretArn" + ], + "type": "object" + }, + "PluginAuthConfiguration": { + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "BasicAuthConfiguration": { + "$ref": "#/definitions/BasicAuthConfiguration" + } + }, + "required": [ + "BasicAuthConfiguration" + ], + "title": "BasicAuthConfiguration", + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "OAuth2ClientCredentialConfiguration": { + "$ref": "#/definitions/OAuth2ClientCredentialConfiguration" + } + }, + "required": [ + "OAuth2ClientCredentialConfiguration" + ], + "title": "OAuth2ClientCredentialConfiguration", + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "NoAuthConfiguration": { + "$ref": "#/definitions/NoAuthConfiguration" + } + }, + "required": [ + "NoAuthConfiguration" + ], + "title": "NoAuthConfiguration", + "type": "object" + } + ] + }, + "PluginBuildStatus": { + "enum": [ + "READY", + "CREATE_IN_PROGRESS", + "CREATE_FAILED", + "UPDATE_IN_PROGRESS", + "UPDATE_FAILED", + "DELETE_IN_PROGRESS", + "DELETE_FAILED" + ], + "type": "string" + }, + "PluginState": { + "enum": [ + "ENABLED", + "DISABLED" + ], + "type": "string" + }, + "PluginType": { + "enum": [ + "SERVICE_NOW", + "SALESFORCE", + "JIRA", + "ZENDESK", + "CUSTOM", + "QUICKSIGHT", + "SERVICENOW_NOW_PLATFORM", + "JIRA_CLOUD", + "SALESFORCE_CRM", + "ZENDESK_SUITE", + "ATLASSIAN_CONFLUENCE", + "GOOGLE_CALENDAR", + "MICROSOFT_TEAMS", + "MICROSOFT_EXCHANGE", + "PAGERDUTY_ADVANCE", + "SMARTSHEET", + "ASANA" + ], + "type": "string" + }, + "S3": { + "additionalProperties": false, + "properties": { + "Bucket": { + "maxLength": 63, + "minLength": 1, + "pattern": "^[a-z0-9][\\.\\-a-z0-9]{1,61}[a-z0-9]$", + "type": "string" + }, + "Key": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Bucket", + "Key" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "Definition of AWS::QBusiness::Plugin Resource Type", + "handlers": { + "create": { + "permissions": [ + "iam:PassRole", + "qbusiness:CreatePlugin", + "qbusiness:GetPlugin", + "qbusiness:ListTagsForResource", + "qbusiness:TagResource" + ] + }, + "delete": { + "permissions": [ + "qbusiness:DeletePlugin", + "qbusiness:GetPlugin" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "ApplicationId": { + "$ref": "resource-schema.json#/properties/ApplicationId" + } + }, + "required": [ + "ApplicationId" + ] + }, + "permissions": [ + "qbusiness:ListPlugins" + ] + }, + "read": { + "permissions": [ + "qbusiness:GetPlugin", + "qbusiness:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "iam:PassRole", + "qbusiness:GetPlugin", + "qbusiness:ListTagsForResource", + "qbusiness:TagResource", + "qbusiness:UntagResource", + "qbusiness:UpdatePlugin" + ] + } + }, + "primaryIdentifier": [ + "/properties/ApplicationId", + "/properties/PluginId" + ], + "properties": { + "ApplicationId": { + "maxLength": 36, + "minLength": 36, + "pattern": "^[a-zA-Z0-9][a-zA-Z0-9-]{35}$", + "type": "string" + }, + "AuthConfiguration": { + "$ref": "#/definitions/PluginAuthConfiguration" + }, + "BuildStatus": { + "$ref": "#/definitions/PluginBuildStatus" + }, + "CreatedAt": { + "format": "date-time", + "type": "string" + }, + "CustomPluginConfiguration": { + "$ref": "#/definitions/CustomPluginConfiguration" + }, + "DisplayName": { + "maxLength": 100, + "minLength": 1, + "pattern": "^[a-zA-Z0-9][a-zA-Z0-9_-]*$", + "type": "string" + }, + "PluginArn": { + "maxLength": 1284, + "minLength": 0, + "pattern": "^arn:[a-z0-9-\\.]{1,63}:[a-z0-9-\\.]{0,63}:[a-z0-9-\\.]{0,63}:[a-z0-9-\\.]{0,63}:[^/].{0,1023}$", + "type": "string" + }, + "PluginId": { + "maxLength": 36, + "minLength": 36, + "pattern": "^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$", + "type": "string" + }, + "ServerUrl": { + "maxLength": 2048, + "minLength": 1, + "pattern": "^(https?|ftp|file)://([^\\s]*)$", + "type": "string" + }, + "State": { + "$ref": "#/definitions/PluginState" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "Type": { + "$ref": "#/definitions/PluginType" + }, + "UpdatedAt": { + "format": "date-time", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/BuildStatus", + "/properties/CreatedAt", + "/properties/PluginArn", + "/properties/PluginId", + "/properties/UpdatedAt" + ], + "required": [ + "AuthConfiguration", + "DisplayName", + "Type" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-qbusiness", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "qbusiness:UntagResource", + "qbusiness:TagResource", + "qbusiness:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::QBusiness::Plugin" +} diff --git a/src/schema/aws-qbusiness-retriever.json b/src/schema/aws-qbusiness-retriever.json new file mode 100644 index 00000000..a45d2a5e --- /dev/null +++ b/src/schema/aws-qbusiness-retriever.json @@ -0,0 +1,242 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ApplicationId", + "/properties/Type" + ], + "definitions": { + "KendraIndexConfiguration": { + "additionalProperties": false, + "properties": { + "IndexId": { + "maxLength": 36, + "minLength": 36, + "pattern": "^[a-zA-Z0-9][a-zA-Z0-9-]{35}$", + "type": "string" + } + }, + "required": [ + "IndexId" + ], + "type": "object" + }, + "NativeIndexConfiguration": { + "additionalProperties": false, + "properties": { + "IndexId": { + "maxLength": 36, + "minLength": 36, + "pattern": "^[a-zA-Z0-9][a-zA-Z0-9-]{35}$", + "type": "string" + } + }, + "required": [ + "IndexId" + ], + "type": "object" + }, + "RetrieverConfiguration": { + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "NativeIndexConfiguration": { + "$ref": "#/definitions/NativeIndexConfiguration" + } + }, + "required": [ + "NativeIndexConfiguration" + ], + "title": "NativeIndexConfiguration", + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "KendraIndexConfiguration": { + "$ref": "#/definitions/KendraIndexConfiguration" + } + }, + "required": [ + "KendraIndexConfiguration" + ], + "title": "KendraIndexConfiguration", + "type": "object" + } + ] + }, + "RetrieverStatus": { + "enum": [ + "CREATING", + "ACTIVE", + "FAILED" + ], + "type": "string" + }, + "RetrieverType": { + "enum": [ + "NATIVE_INDEX", + "KENDRA_INDEX" + ], + "type": "string" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "Definition of AWS::QBusiness::Retriever Resource Type", + "handlers": { + "create": { + "permissions": [ + "iam:PassRole", + "qbusiness:CreateRetriever", + "qbusiness:GetRetriever", + "qbusiness:ListTagsForResource", + "qbusiness:TagResource" + ] + }, + "delete": { + "permissions": [ + "qbusiness:DeleteRetriever", + "qbusiness:GetRetriever" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "ApplicationId": { + "$ref": "resource-schema.json#/properties/ApplicationId" + } + }, + "required": [ + "ApplicationId" + ] + }, + "permissions": [ + "qbusiness:ListRetrievers" + ] + }, + "read": { + "permissions": [ + "qbusiness:GetRetriever", + "qbusiness:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "iam:PassRole", + "qbusiness:GetRetriever", + "qbusiness:ListTagsForResource", + "qbusiness:TagResource", + "qbusiness:UntagResource", + "qbusiness:UpdateRetriever" + ] + } + }, + "primaryIdentifier": [ + "/properties/ApplicationId", + "/properties/RetrieverId" + ], + "properties": { + "ApplicationId": { + "maxLength": 36, + "minLength": 36, + "pattern": "^[a-zA-Z0-9][a-zA-Z0-9-]{35}$", + "type": "string" + }, + "Configuration": { + "$ref": "#/definitions/RetrieverConfiguration" + }, + "CreatedAt": { + "format": "date-time", + "type": "string" + }, + "DisplayName": { + "maxLength": 1000, + "minLength": 1, + "pattern": "^[a-zA-Z0-9][a-zA-Z0-9_-]*$", + "type": "string" + }, + "RetrieverArn": { + "maxLength": 1284, + "minLength": 0, + "pattern": "^arn:[a-z0-9-\\.]{1,63}:[a-z0-9-\\.]{0,63}:[a-z0-9-\\.]{0,63}:[a-z0-9-\\.]{0,63}:[^/].{0,1023}$", + "type": "string" + }, + "RetrieverId": { + "maxLength": 36, + "minLength": 36, + "pattern": "^[a-zA-Z0-9][a-zA-Z0-9-]{35}$", + "type": "string" + }, + "RoleArn": { + "maxLength": 1284, + "minLength": 0, + "pattern": "^arn:[a-z0-9-\\.]{1,63}:[a-z0-9-\\.]{0,63}:[a-z0-9-\\.]{0,63}:[a-z0-9-\\.]{0,63}:[^/].{0,1023}$", + "type": "string" + }, + "Status": { + "$ref": "#/definitions/RetrieverStatus" + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "Type": { + "$ref": "#/definitions/RetrieverType" + }, + "UpdatedAt": { + "format": "date-time", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/CreatedAt", + "/properties/RetrieverArn", + "/properties/RetrieverId", + "/properties/Status", + "/properties/UpdatedAt" + ], + "required": [ + "ApplicationId", + "Configuration", + "DisplayName", + "Type" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-qbusiness", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "qbusiness:UntagResource", + "qbusiness:TagResource", + "qbusiness:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::QBusiness::Retriever" +} diff --git a/src/schema/aws-qbusiness-webexperience.json b/src/schema/aws-qbusiness-webexperience.json new file mode 100644 index 00000000..af1aedb7 --- /dev/null +++ b/src/schema/aws-qbusiness-webexperience.json @@ -0,0 +1,346 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ApplicationId" + ], + "definitions": { + "BrowserExtension": { + "enum": [ + "FIREFOX", + "CHROME" + ], + "type": "string" + }, + "BrowserExtensionConfiguration": { + "additionalProperties": false, + "properties": { + "EnabledBrowserExtensions": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/BrowserExtension" + }, + "maxItems": 2, + "minItems": 0, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "EnabledBrowserExtensions" + ], + "type": "object" + }, + "CustomizationConfiguration": { + "additionalProperties": false, + "properties": { + "CustomCSSUrl": { + "maxLength": 1284, + "minLength": 0, + "pattern": "^(https?://[a-zA-Z0-9-_.+%/]+\\.css)?$", + "type": "string" + }, + "FaviconUrl": { + "maxLength": 1284, + "minLength": 0, + "pattern": "^(https?://[a-zA-Z0-9-_.+%/]+\\.(svg|ico))?$", + "type": "string" + }, + "FontUrl": { + "maxLength": 1284, + "minLength": 0, + "pattern": "^(https?://[a-zA-Z0-9-_.+%/]+\\.(ttf|woff|woff2|otf))?$", + "type": "string" + }, + "LogoUrl": { + "maxLength": 1284, + "minLength": 0, + "pattern": "^(https?://[a-zA-Z0-9-_.+%/]+\\.(svg|png))?$", + "type": "string" + } + }, + "type": "object" + }, + "IdentityProviderConfiguration": { + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "SamlConfiguration": { + "$ref": "#/definitions/SamlProviderConfiguration" + } + }, + "required": [ + "SamlConfiguration" + ], + "title": "SamlConfiguration", + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "OpenIDConnectConfiguration": { + "$ref": "#/definitions/OpenIDConnectProviderConfiguration" + } + }, + "required": [ + "OpenIDConnectConfiguration" + ], + "title": "OpenIDConnectConfiguration", + "type": "object" + } + ] + }, + "OpenIDConnectProviderConfiguration": { + "additionalProperties": false, + "properties": { + "SecretsArn": { + "maxLength": 1284, + "minLength": 0, + "pattern": "^arn:[a-z0-9-\\.]{1,63}:[a-z0-9-\\.]{0,63}:[a-z0-9-\\.]{0,63}:[a-z0-9-\\.]{0,63}:[^/].{0,1023}$", + "type": "string" + }, + "SecretsRole": { + "maxLength": 1284, + "minLength": 0, + "pattern": "^arn:[a-z0-9-\\.]{1,63}:[a-z0-9-\\.]{0,63}:[a-z0-9-\\.]{0,63}:[a-z0-9-\\.]{0,63}:[^/].{0,1023}$", + "type": "string" + } + }, + "required": [ + "SecretsArn", + "SecretsRole" + ], + "type": "object" + }, + "Origin": { + "maxLength": 64, + "minLength": 1, + "pattern": "^(http:\\/\\/|https:\\/\\/)[a-zA-Z0-9-_.]+(?::[0-9]{1,5})?$", + "type": "string" + }, + "SamlProviderConfiguration": { + "additionalProperties": false, + "properties": { + "AuthenticationUrl": { + "maxLength": 1284, + "minLength": 1, + "pattern": "^https://.*$", + "type": "string" + } + }, + "required": [ + "AuthenticationUrl" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "WebExperienceSamplePromptsControlMode": { + "enum": [ + "ENABLED", + "DISABLED" + ], + "type": "string" + }, + "WebExperienceStatus": { + "enum": [ + "CREATING", + "ACTIVE", + "DELETING", + "FAILED", + "PENDING_AUTH_CONFIG" + ], + "type": "string" + } + }, + "description": "Definition of AWS::QBusiness::WebExperience Resource Type", + "handlers": { + "create": { + "permissions": [ + "iam:PassRole", + "qbusiness:CreateWebExperience", + "qbusiness:GetWebExperience", + "qbusiness:ListTagsForResource", + "qbusiness:TagResource", + "sso:PutApplicationGrant", + "sso:UpdateApplication" + ] + }, + "delete": { + "permissions": [ + "qbusiness:DeleteWebExperience", + "qbusiness:GetWebExperience" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "ApplicationId": { + "$ref": "resource-schema.json#/properties/ApplicationId" + } + }, + "required": [ + "ApplicationId" + ] + }, + "permissions": [ + "qbusiness:ListWebExperiences" + ] + }, + "read": { + "permissions": [ + "qbusiness:GetWebExperience", + "qbusiness:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "iam:PassRole", + "qbusiness:GetWebExperience", + "qbusiness:ListTagsForResource", + "qbusiness:TagResource", + "qbusiness:UntagResource", + "qbusiness:UpdateWebExperience", + "sso:PutApplicationGrant", + "sso:UpdateApplication" + ] + } + }, + "primaryIdentifier": [ + "/properties/ApplicationId", + "/properties/WebExperienceId" + ], + "properties": { + "ApplicationId": { + "maxLength": 36, + "minLength": 36, + "pattern": "^[a-zA-Z0-9][a-zA-Z0-9-]{35}$", + "type": "string" + }, + "BrowserExtensionConfiguration": { + "$ref": "#/definitions/BrowserExtensionConfiguration" + }, + "CreatedAt": { + "format": "date-time", + "type": "string" + }, + "CustomizationConfiguration": { + "$ref": "#/definitions/CustomizationConfiguration" + }, + "DefaultEndpoint": { + "maxLength": 2048, + "minLength": 1, + "pattern": "^(https?|ftp|file)://([^\\s]*)$", + "type": "string" + }, + "IdentityProviderConfiguration": { + "$ref": "#/definitions/IdentityProviderConfiguration" + }, + "Origins": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Origin" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + }, + "RoleArn": { + "maxLength": 1284, + "minLength": 0, + "pattern": "^arn:[a-z0-9-\\.]{1,63}:[a-z0-9-\\.]{0,63}:[a-z0-9-\\.]{0,63}:[a-z0-9-\\.]{0,63}:[^/].{0,1023}$", + "type": "string" + }, + "SamplePromptsControlMode": { + "$ref": "#/definitions/WebExperienceSamplePromptsControlMode" + }, + "Status": { + "$ref": "#/definitions/WebExperienceStatus" + }, + "Subtitle": { + "maxLength": 500, + "minLength": 0, + "pattern": "^[\\s\\S]*$", + "type": "string" + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "Title": { + "maxLength": 500, + "minLength": 0, + "pattern": "^[\\s\\S]*$", + "type": "string" + }, + "UpdatedAt": { + "format": "date-time", + "type": "string" + }, + "WebExperienceArn": { + "maxLength": 1284, + "minLength": 0, + "pattern": "^arn:[a-z0-9-\\.]{1,63}:[a-z0-9-\\.]{0,63}:[a-z0-9-\\.]{0,63}:[a-z0-9-\\.]{0,63}:[^/].{0,1023}$", + "type": "string" + }, + "WebExperienceId": { + "maxLength": 36, + "minLength": 36, + "pattern": "^[a-zA-Z0-9][a-zA-Z0-9-]*$", + "type": "string" + }, + "WelcomeMessage": { + "maxLength": 300, + "minLength": 0, + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/CreatedAt", + "/properties/DefaultEndpoint", + "/properties/Status", + "/properties/UpdatedAt", + "/properties/WebExperienceArn", + "/properties/WebExperienceId" + ], + "required": [ + "ApplicationId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-qbusiness", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "qbusiness:UntagResource", + "qbusiness:TagResource", + "qbusiness:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::QBusiness::WebExperience" +} diff --git a/src/schema/aws-qldb-ledger.json b/src/schema/aws-qldb-ledger.json new file mode 100644 index 00000000..33191a47 --- /dev/null +++ b/src/schema/aws-qldb-ledger.json @@ -0,0 +1,59 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::QLDB::Ledger", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "DeletionProtection": { + "type": "boolean" + }, + "Id": { + "type": "string" + }, + "KmsKey": { + "type": "string" + }, + "Name": { + "type": "string" + }, + "PermissionsMode": { + "type": "string" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "PermissionsMode" + ], + "typeName": "AWS::QLDB::Ledger" +} diff --git a/src/schema/aws-qldb-stream.json b/src/schema/aws-qldb-stream.json new file mode 100644 index 00000000..03c7a629 --- /dev/null +++ b/src/schema/aws-qldb-stream.json @@ -0,0 +1,161 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/LedgerName", + "/properties/StreamName", + "/properties/RoleArn", + "/properties/KinesisConfiguration", + "/properties/InclusiveStartTime", + "/properties/ExclusiveEndTime" + ], + "definitions": { + "Arn": { + "pattern": "arn:[\\w+=/,.@-]+:[\\w+=/,.@-]+:[\\w+=/,.@-]*:[0-9]*:[\\w+=,.@-]+(/[\\w+=,.@-]+)*", + "type": "string" + }, + "KinesisConfiguration": { + "additionalProperties": false, + "properties": { + "AggregationEnabled": { + "type": "boolean" + }, + "StreamArn": { + "$ref": "#/definitions/Arn", + "type": "object" + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 127 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", + "maxLength": 127, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 1 to 255 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", + "maxLength": 255, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "Resource schema for AWS::QLDB::Stream.", + "handlers": { + "create": { + "permissions": [ + "iam:PassRole", + "qldb:StreamJournalToKinesis", + "qldb:DescribeJournalKinesisStream" + ] + }, + "delete": { + "permissions": [ + "qldb:CancelJournalKinesisStream", + "qldb:DescribeJournalKinesisStream" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "LedgerName": { + "type": "string" + } + }, + "required": [ + "LedgerName" + ] + }, + "permissions": [ + "qldb:listJournalKinesisStreamsForLedger" + ] + }, + "read": { + "permissions": [ + "qldb:DescribeJournalKinesisStream", + "qldb:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "qldb:DescribeJournalKinesisStream", + "qldb:UntagResource", + "qldb:TagResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/LedgerName", + "/properties/Id" + ], + "properties": { + "Arn": { + "$ref": "#/definitions/Arn" + }, + "ExclusiveEndTime": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "InclusiveStartTime": { + "type": "string" + }, + "KinesisConfiguration": { + "$ref": "#/definitions/KinesisConfiguration" + }, + "LedgerName": { + "type": "string" + }, + "RoleArn": { + "$ref": "#/definitions/Arn" + }, + "StreamName": { + "type": "string" + }, + "Tags": { + "description": "An array of key-value pairs to apply to this resource.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/Id", + "/properties/Arn" + ], + "required": [ + "LedgerName", + "StreamName", + "RoleArn", + "KinesisConfiguration", + "InclusiveStartTime" + ], + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "qldb:TagResource", + "qldb:UntagResource", + "qldb:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::QLDB::Stream" +} diff --git a/src/schema/aws-quicksight-analysis.json b/src/schema/aws-quicksight-analysis.json new file mode 100644 index 00000000..2a8a678b --- /dev/null +++ b/src/schema/aws-quicksight-analysis.json @@ -0,0 +1,12941 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/AnalysisId", + "/properties/AwsAccountId" + ], + "definitions": { + "AggregationFunction": { + "additionalProperties": false, + "properties": { + "AttributeAggregationFunction": { + "$ref": "#/definitions/AttributeAggregationFunction" + }, + "CategoricalAggregationFunction": { + "$ref": "#/definitions/CategoricalAggregationFunction" + }, + "DateAggregationFunction": { + "$ref": "#/definitions/DateAggregationFunction" + }, + "NumericalAggregationFunction": { + "$ref": "#/definitions/NumericalAggregationFunction" + } + }, + "type": "object" + }, + "AggregationSortConfiguration": { + "additionalProperties": false, + "properties": { + "AggregationFunction": { + "$ref": "#/definitions/AggregationFunction" + }, + "Column": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "SortDirection": { + "$ref": "#/definitions/SortDirection" + } + }, + "required": [ + "Column", + "SortDirection" + ], + "type": "object" + }, + "AllSheetsFilterScopeConfiguration": { + "additionalProperties": false, + "type": "object" + }, + "AnalysisDefaults": { + "additionalProperties": false, + "properties": { + "DefaultNewSheetConfiguration": { + "$ref": "#/definitions/DefaultNewSheetConfiguration" + } + }, + "required": [ + "DefaultNewSheetConfiguration" + ], + "type": "object" + }, + "AnalysisDefinition": { + "additionalProperties": false, + "properties": { + "AnalysisDefaults": { + "$ref": "#/definitions/AnalysisDefaults" + }, + "CalculatedFields": { + "items": { + "$ref": "#/definitions/CalculatedField" + }, + "maxItems": 500, + "minItems": 0, + "type": "array" + }, + "ColumnConfigurations": { + "items": { + "$ref": "#/definitions/ColumnConfiguration" + }, + "maxItems": 2000, + "minItems": 0, + "type": "array" + }, + "DataSetIdentifierDeclarations": { + "items": { + "$ref": "#/definitions/DataSetIdentifierDeclaration" + }, + "maxItems": 50, + "minItems": 1, + "type": "array" + }, + "FilterGroups": { + "items": { + "$ref": "#/definitions/FilterGroup" + }, + "maxItems": 2000, + "minItems": 0, + "type": "array" + }, + "Options": { + "$ref": "#/definitions/AssetOptions" + }, + "ParameterDeclarations": { + "items": { + "$ref": "#/definitions/ParameterDeclaration" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "QueryExecutionOptions": { + "$ref": "#/definitions/QueryExecutionOptions" + }, + "Sheets": { + "items": { + "$ref": "#/definitions/SheetDefinition" + }, + "maxItems": 20, + "minItems": 0, + "type": "array" + }, + "StaticFiles": { + "items": { + "$ref": "#/definitions/StaticFile" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + } + }, + "required": [ + "DataSetIdentifierDeclarations" + ], + "type": "object" + }, + "AnalysisError": { + "additionalProperties": false, + "description": "Analysis error.
", + "properties": { + "Message": { + "description": "The message associated with the analysis error.
", + "pattern": "\\S", + "type": "string" + }, + "Type": { + "$ref": "#/definitions/AnalysisErrorType" + }, + "ViolatedEntities": { + "description": "Lists the violated entities that caused the analysis error
", + "items": { + "$ref": "#/definitions/Entity" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "AnalysisErrorType": { + "enum": [ + "ACCESS_DENIED", + "SOURCE_NOT_FOUND", + "DATA_SET_NOT_FOUND", + "INTERNAL_FAILURE", + "PARAMETER_VALUE_INCOMPATIBLE", + "PARAMETER_TYPE_INVALID", + "PARAMETER_NOT_FOUND", + "COLUMN_TYPE_MISMATCH", + "COLUMN_GEOGRAPHIC_ROLE_MISMATCH", + "COLUMN_REPLACEMENT_MISSING" + ], + "type": "string" + }, + "AnalysisSourceEntity": { + "additionalProperties": false, + "description": "The source entity of an analysis.
", + "properties": { + "SourceTemplate": { + "$ref": "#/definitions/AnalysisSourceTemplate" + } + }, + "type": "object" + }, + "AnalysisSourceTemplate": { + "additionalProperties": false, + "description": "The source template of an analysis.
", + "properties": { + "Arn": { + "description": "The Amazon Resource Name (ARN) of the source template of an analysis.
", + "type": "string" + }, + "DataSetReferences": { + "description": "The dataset references of the source template of an analysis.
", + "items": { + "$ref": "#/definitions/DataSetReference" + }, + "minItems": 1, + "type": "array" + } + }, + "required": [ + "Arn", + "DataSetReferences" + ], + "type": "object" + }, + "AnchorDateConfiguration": { + "additionalProperties": false, + "properties": { + "AnchorOption": { + "$ref": "#/definitions/AnchorOption" + }, + "ParameterName": { + "maxLength": 2048, + "minLength": 1, + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + } + }, + "type": "object" + }, + "AnchorOption": { + "enum": [ + "NOW" + ], + "type": "string" + }, + "ArcAxisConfiguration": { + "additionalProperties": false, + "properties": { + "Range": { + "$ref": "#/definitions/ArcAxisDisplayRange" + }, + "ReserveRange": { + "default": 0, + "type": "number" + } + }, + "type": "object" + }, + "ArcAxisDisplayRange": { + "additionalProperties": false, + "properties": { + "Max": { + "default": null, + "type": "number" + }, + "Min": { + "default": null, + "type": "number" + } + }, + "type": "object" + }, + "ArcConfiguration": { + "additionalProperties": false, + "properties": { + "ArcAngle": { + "default": null, + "type": "number" + }, + "ArcThickness": { + "$ref": "#/definitions/ArcThicknessOptions" + } + }, + "type": "object" + }, + "ArcOptions": { + "additionalProperties": false, + "properties": { + "ArcThickness": { + "$ref": "#/definitions/ArcThickness" + } + }, + "type": "object" + }, + "ArcThickness": { + "enum": [ + "SMALL", + "MEDIUM", + "LARGE", + "WHOLE" + ], + "type": "string" + }, + "ArcThicknessOptions": { + "enum": [ + "SMALL", + "MEDIUM", + "LARGE" + ], + "type": "string" + }, + "AssetOptions": { + "additionalProperties": false, + "properties": { + "Timezone": { + "type": "string" + }, + "WeekStart": { + "$ref": "#/definitions/DayOfTheWeek" + } + }, + "type": "object" + }, + "AttributeAggregationFunction": { + "additionalProperties": false, + "properties": { + "SimpleAttributeAggregation": { + "$ref": "#/definitions/SimpleAttributeAggregationFunction" + }, + "ValueForMultipleValues": { + "type": "string" + } + }, + "type": "object" + }, + "AxisBinding": { + "enum": [ + "PRIMARY_YAXIS", + "SECONDARY_YAXIS" + ], + "type": "string" + }, + "AxisDataOptions": { + "additionalProperties": false, + "properties": { + "DateAxisOptions": { + "$ref": "#/definitions/DateAxisOptions" + }, + "NumericAxisOptions": { + "$ref": "#/definitions/NumericAxisOptions" + } + }, + "type": "object" + }, + "AxisDisplayDataDrivenRange": { + "additionalProperties": false, + "type": "object" + }, + "AxisDisplayMinMaxRange": { + "additionalProperties": false, + "properties": { + "Maximum": { + "default": null, + "type": "number" + }, + "Minimum": { + "default": null, + "type": "number" + } + }, + "type": "object" + }, + "AxisDisplayOptions": { + "additionalProperties": false, + "properties": { + "AxisLineVisibility": { + "$ref": "#/definitions/Visibility" + }, + "AxisOffset": { + "description": "String based length that is composed of value and unit in px", + "type": "string" + }, + "DataOptions": { + "$ref": "#/definitions/AxisDataOptions" + }, + "GridLineVisibility": { + "$ref": "#/definitions/Visibility" + }, + "ScrollbarOptions": { + "$ref": "#/definitions/ScrollBarOptions" + }, + "TickLabelOptions": { + "$ref": "#/definitions/AxisTickLabelOptions" + } + }, + "type": "object" + }, + "AxisDisplayRange": { + "additionalProperties": false, + "properties": { + "DataDriven": { + "$ref": "#/definitions/AxisDisplayDataDrivenRange" + }, + "MinMax": { + "$ref": "#/definitions/AxisDisplayMinMaxRange" + } + }, + "type": "object" + }, + "AxisLabelOptions": { + "additionalProperties": false, + "properties": { + "ApplyTo": { + "$ref": "#/definitions/AxisLabelReferenceOptions" + }, + "CustomLabel": { + "type": "string" + }, + "FontConfiguration": { + "$ref": "#/definitions/FontConfiguration" + } + }, + "type": "object" + }, + "AxisLabelReferenceOptions": { + "additionalProperties": false, + "properties": { + "Column": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "FieldId": { + "maxLength": 512, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Column", + "FieldId" + ], + "type": "object" + }, + "AxisLinearScale": { + "additionalProperties": false, + "properties": { + "StepCount": { + "default": null, + "type": "number" + }, + "StepSize": { + "default": null, + "type": "number" + } + }, + "type": "object" + }, + "AxisLogarithmicScale": { + "additionalProperties": false, + "properties": { + "Base": { + "default": null, + "type": "number" + } + }, + "type": "object" + }, + "AxisScale": { + "additionalProperties": false, + "properties": { + "Linear": { + "$ref": "#/definitions/AxisLinearScale" + }, + "Logarithmic": { + "$ref": "#/definitions/AxisLogarithmicScale" + } + }, + "type": "object" + }, + "AxisTickLabelOptions": { + "additionalProperties": false, + "properties": { + "LabelOptions": { + "$ref": "#/definitions/LabelOptions" + }, + "RotationAngle": { + "default": null, + "type": "number" + } + }, + "type": "object" + }, + "BarChartAggregatedFieldWells": { + "additionalProperties": false, + "properties": { + "Category": { + "items": { + "$ref": "#/definitions/DimensionField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "Colors": { + "items": { + "$ref": "#/definitions/DimensionField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "SmallMultiples": { + "items": { + "$ref": "#/definitions/DimensionField" + }, + "maxItems": 1, + "minItems": 0, + "type": "array" + }, + "Values": { + "items": { + "$ref": "#/definitions/MeasureField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "BarChartConfiguration": { + "additionalProperties": false, + "properties": { + "BarsArrangement": { + "$ref": "#/definitions/BarsArrangement" + }, + "CategoryAxis": { + "$ref": "#/definitions/AxisDisplayOptions" + }, + "CategoryLabelOptions": { + "$ref": "#/definitions/ChartAxisLabelOptions" + }, + "ColorLabelOptions": { + "$ref": "#/definitions/ChartAxisLabelOptions" + }, + "ContributionAnalysisDefaults": { + "items": { + "$ref": "#/definitions/ContributionAnalysisDefault" + }, + "maxItems": 200, + "minItems": 1, + "type": "array" + }, + "DataLabels": { + "$ref": "#/definitions/DataLabelOptions" + }, + "FieldWells": { + "$ref": "#/definitions/BarChartFieldWells" + }, + "Interactions": { + "$ref": "#/definitions/VisualInteractionOptions" + }, + "Legend": { + "$ref": "#/definitions/LegendOptions" + }, + "Orientation": { + "$ref": "#/definitions/BarChartOrientation" + }, + "ReferenceLines": { + "items": { + "$ref": "#/definitions/ReferenceLine" + }, + "maxItems": 20, + "minItems": 0, + "type": "array" + }, + "SmallMultiplesOptions": { + "$ref": "#/definitions/SmallMultiplesOptions" + }, + "SortConfiguration": { + "$ref": "#/definitions/BarChartSortConfiguration" + }, + "Tooltip": { + "$ref": "#/definitions/TooltipOptions" + }, + "ValueAxis": { + "$ref": "#/definitions/AxisDisplayOptions" + }, + "ValueLabelOptions": { + "$ref": "#/definitions/ChartAxisLabelOptions" + }, + "VisualPalette": { + "$ref": "#/definitions/VisualPalette" + } + }, + "type": "object" + }, + "BarChartFieldWells": { + "additionalProperties": false, + "properties": { + "BarChartAggregatedFieldWells": { + "$ref": "#/definitions/BarChartAggregatedFieldWells" + } + }, + "type": "object" + }, + "BarChartOrientation": { + "enum": [ + "HORIZONTAL", + "VERTICAL" + ], + "type": "string" + }, + "BarChartSortConfiguration": { + "additionalProperties": false, + "properties": { + "CategoryItemsLimit": { + "$ref": "#/definitions/ItemsLimitConfiguration" + }, + "CategorySort": { + "items": { + "$ref": "#/definitions/FieldSortOptions" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + }, + "ColorItemsLimit": { + "$ref": "#/definitions/ItemsLimitConfiguration" + }, + "ColorSort": { + "items": { + "$ref": "#/definitions/FieldSortOptions" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + }, + "SmallMultiplesLimitConfiguration": { + "$ref": "#/definitions/ItemsLimitConfiguration" + }, + "SmallMultiplesSort": { + "items": { + "$ref": "#/definitions/FieldSortOptions" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "BarChartVisual": { + "additionalProperties": false, + "properties": { + "Actions": { + "items": { + "$ref": "#/definitions/VisualCustomAction" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + }, + "ChartConfiguration": { + "$ref": "#/definitions/BarChartConfiguration" + }, + "ColumnHierarchies": { + "items": { + "$ref": "#/definitions/ColumnHierarchy" + }, + "maxItems": 2, + "minItems": 0, + "type": "array" + }, + "Subtitle": { + "$ref": "#/definitions/VisualSubtitleLabelOptions" + }, + "Title": { + "$ref": "#/definitions/VisualTitleLabelOptions" + }, + "VisualContentAltText": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "VisualId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + } + }, + "required": [ + "VisualId" + ], + "type": "object" + }, + "BarsArrangement": { + "enum": [ + "CLUSTERED", + "STACKED", + "STACKED_PERCENT" + ], + "type": "string" + }, + "BaseMapStyleType": { + "enum": [ + "LIGHT_GRAY", + "DARK_GRAY", + "STREET", + "IMAGERY" + ], + "type": "string" + }, + "BinCountOptions": { + "additionalProperties": false, + "properties": { + "Value": { + "minimum": 0, + "type": "number" + } + }, + "type": "object" + }, + "BinWidthOptions": { + "additionalProperties": false, + "properties": { + "BinCountLimit": { + "maximum": 1000, + "minimum": 0, + "type": "number" + }, + "Value": { + "minimum": 0, + "type": "number" + } + }, + "type": "object" + }, + "BodySectionConfiguration": { + "additionalProperties": false, + "properties": { + "Content": { + "$ref": "#/definitions/BodySectionContent" + }, + "PageBreakConfiguration": { + "$ref": "#/definitions/SectionPageBreakConfiguration" + }, + "RepeatConfiguration": { + "$ref": "#/definitions/BodySectionRepeatConfiguration" + }, + "SectionId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "Style": { + "$ref": "#/definitions/SectionStyle" + } + }, + "required": [ + "Content", + "SectionId" + ], + "type": "object" + }, + "BodySectionContent": { + "additionalProperties": false, + "properties": { + "Layout": { + "$ref": "#/definitions/SectionLayoutConfiguration" + } + }, + "type": "object" + }, + "BodySectionDynamicCategoryDimensionConfiguration": { + "additionalProperties": false, + "properties": { + "Column": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "Limit": { + "maximum": 1000, + "minimum": 1, + "type": "number" + }, + "SortByMetrics": { + "items": { + "$ref": "#/definitions/ColumnSort" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + } + }, + "required": [ + "Column" + ], + "type": "object" + }, + "BodySectionDynamicNumericDimensionConfiguration": { + "additionalProperties": false, + "properties": { + "Column": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "Limit": { + "maximum": 1000, + "minimum": 1, + "type": "number" + }, + "SortByMetrics": { + "items": { + "$ref": "#/definitions/ColumnSort" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + } + }, + "required": [ + "Column" + ], + "type": "object" + }, + "BodySectionRepeatConfiguration": { + "additionalProperties": false, + "properties": { + "DimensionConfigurations": { + "items": { + "$ref": "#/definitions/BodySectionRepeatDimensionConfiguration" + }, + "maxItems": 3, + "minItems": 0, + "type": "array" + }, + "NonRepeatingVisuals": { + "items": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "maxItems": 20, + "minItems": 0, + "type": "array" + }, + "PageBreakConfiguration": { + "$ref": "#/definitions/BodySectionRepeatPageBreakConfiguration" + } + }, + "type": "object" + }, + "BodySectionRepeatDimensionConfiguration": { + "additionalProperties": false, + "properties": { + "DynamicCategoryDimensionConfiguration": { + "$ref": "#/definitions/BodySectionDynamicCategoryDimensionConfiguration" + }, + "DynamicNumericDimensionConfiguration": { + "$ref": "#/definitions/BodySectionDynamicNumericDimensionConfiguration" + } + }, + "type": "object" + }, + "BodySectionRepeatPageBreakConfiguration": { + "additionalProperties": false, + "properties": { + "After": { + "$ref": "#/definitions/SectionAfterPageBreak" + } + }, + "type": "object" + }, + "BoxPlotAggregatedFieldWells": { + "additionalProperties": false, + "properties": { + "GroupBy": { + "items": { + "$ref": "#/definitions/DimensionField" + }, + "maxItems": 1, + "minItems": 0, + "type": "array" + }, + "Values": { + "items": { + "$ref": "#/definitions/MeasureField" + }, + "maxItems": 5, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "BoxPlotChartConfiguration": { + "additionalProperties": false, + "properties": { + "BoxPlotOptions": { + "$ref": "#/definitions/BoxPlotOptions" + }, + "CategoryAxis": { + "$ref": "#/definitions/AxisDisplayOptions" + }, + "CategoryLabelOptions": { + "$ref": "#/definitions/ChartAxisLabelOptions" + }, + "FieldWells": { + "$ref": "#/definitions/BoxPlotFieldWells" + }, + "Interactions": { + "$ref": "#/definitions/VisualInteractionOptions" + }, + "Legend": { + "$ref": "#/definitions/LegendOptions" + }, + "PrimaryYAxisDisplayOptions": { + "$ref": "#/definitions/AxisDisplayOptions" + }, + "PrimaryYAxisLabelOptions": { + "$ref": "#/definitions/ChartAxisLabelOptions" + }, + "ReferenceLines": { + "items": { + "$ref": "#/definitions/ReferenceLine" + }, + "maxItems": 20, + "minItems": 0, + "type": "array" + }, + "SortConfiguration": { + "$ref": "#/definitions/BoxPlotSortConfiguration" + }, + "Tooltip": { + "$ref": "#/definitions/TooltipOptions" + }, + "VisualPalette": { + "$ref": "#/definitions/VisualPalette" + } + }, + "type": "object" + }, + "BoxPlotFieldWells": { + "additionalProperties": false, + "properties": { + "BoxPlotAggregatedFieldWells": { + "$ref": "#/definitions/BoxPlotAggregatedFieldWells" + } + }, + "type": "object" + }, + "BoxPlotFillStyle": { + "enum": [ + "SOLID", + "TRANSPARENT" + ], + "type": "string" + }, + "BoxPlotOptions": { + "additionalProperties": false, + "properties": { + "AllDataPointsVisibility": { + "$ref": "#/definitions/Visibility" + }, + "OutlierVisibility": { + "$ref": "#/definitions/Visibility" + }, + "StyleOptions": { + "$ref": "#/definitions/BoxPlotStyleOptions" + } + }, + "type": "object" + }, + "BoxPlotSortConfiguration": { + "additionalProperties": false, + "properties": { + "CategorySort": { + "items": { + "$ref": "#/definitions/FieldSortOptions" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + }, + "PaginationConfiguration": { + "$ref": "#/definitions/PaginationConfiguration" + } + }, + "type": "object" + }, + "BoxPlotStyleOptions": { + "additionalProperties": false, + "properties": { + "FillStyle": { + "$ref": "#/definitions/BoxPlotFillStyle" + } + }, + "type": "object" + }, + "BoxPlotVisual": { + "additionalProperties": false, + "properties": { + "Actions": { + "items": { + "$ref": "#/definitions/VisualCustomAction" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + }, + "ChartConfiguration": { + "$ref": "#/definitions/BoxPlotChartConfiguration" + }, + "ColumnHierarchies": { + "items": { + "$ref": "#/definitions/ColumnHierarchy" + }, + "maxItems": 2, + "minItems": 0, + "type": "array" + }, + "Subtitle": { + "$ref": "#/definitions/VisualSubtitleLabelOptions" + }, + "Title": { + "$ref": "#/definitions/VisualTitleLabelOptions" + }, + "VisualContentAltText": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "VisualId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + } + }, + "required": [ + "VisualId" + ], + "type": "object" + }, + "CalculatedField": { + "additionalProperties": false, + "properties": { + "DataSetIdentifier": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "Expression": { + "maxLength": 32000, + "minLength": 1, + "type": "string" + }, + "Name": { + "maxLength": 127, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "DataSetIdentifier", + "Expression", + "Name" + ], + "type": "object" + }, + "CalculatedMeasureField": { + "additionalProperties": false, + "properties": { + "Expression": { + "maxLength": 4096, + "minLength": 1, + "type": "string" + }, + "FieldId": { + "maxLength": 512, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Expression", + "FieldId" + ], + "type": "object" + }, + "CascadingControlConfiguration": { + "additionalProperties": false, + "properties": { + "SourceControls": { + "items": { + "$ref": "#/definitions/CascadingControlSource" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "CascadingControlSource": { + "additionalProperties": false, + "properties": { + "ColumnToMatch": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "SourceSheetControlId": { + "type": "string" + } + }, + "type": "object" + }, + "CategoricalAggregationFunction": { + "enum": [ + "COUNT", + "DISTINCT_COUNT" + ], + "type": "string" + }, + "CategoricalDimensionField": { + "additionalProperties": false, + "properties": { + "Column": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "FieldId": { + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "FormatConfiguration": { + "$ref": "#/definitions/StringFormatConfiguration" + }, + "HierarchyId": { + "maxLength": 512, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Column", + "FieldId" + ], + "type": "object" + }, + "CategoricalMeasureField": { + "additionalProperties": false, + "properties": { + "AggregationFunction": { + "$ref": "#/definitions/CategoricalAggregationFunction" + }, + "Column": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "FieldId": { + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "FormatConfiguration": { + "$ref": "#/definitions/StringFormatConfiguration" + } + }, + "required": [ + "Column", + "FieldId" + ], + "type": "object" + }, + "CategoryDrillDownFilter": { + "additionalProperties": false, + "properties": { + "CategoryValues": { + "items": { + "maxLength": 512, + "minLength": 0, + "type": "string" + }, + "maxItems": 100000, + "minItems": 0, + "type": "array" + }, + "Column": { + "$ref": "#/definitions/ColumnIdentifier" + } + }, + "required": [ + "CategoryValues", + "Column" + ], + "type": "object" + }, + "CategoryFilter": { + "additionalProperties": false, + "properties": { + "Column": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "Configuration": { + "$ref": "#/definitions/CategoryFilterConfiguration" + }, + "DefaultFilterControlConfiguration": { + "$ref": "#/definitions/DefaultFilterControlConfiguration" + }, + "FilterId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + } + }, + "required": [ + "Column", + "Configuration", + "FilterId" + ], + "type": "object" + }, + "CategoryFilterConfiguration": { + "additionalProperties": false, + "properties": { + "CustomFilterConfiguration": { + "$ref": "#/definitions/CustomFilterConfiguration" + }, + "CustomFilterListConfiguration": { + "$ref": "#/definitions/CustomFilterListConfiguration" + }, + "FilterListConfiguration": { + "$ref": "#/definitions/FilterListConfiguration" + } + }, + "type": "object" + }, + "CategoryFilterMatchOperator": { + "enum": [ + "EQUALS", + "DOES_NOT_EQUAL", + "CONTAINS", + "DOES_NOT_CONTAIN", + "STARTS_WITH", + "ENDS_WITH" + ], + "type": "string" + }, + "CategoryFilterSelectAllOptions": { + "enum": [ + "FILTER_ALL_VALUES" + ], + "type": "string" + }, + "CategoryInnerFilter": { + "additionalProperties": false, + "properties": { + "Column": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "Configuration": { + "$ref": "#/definitions/CategoryFilterConfiguration" + }, + "DefaultFilterControlConfiguration": { + "$ref": "#/definitions/DefaultFilterControlConfiguration" + } + }, + "required": [ + "Column", + "Configuration" + ], + "type": "object" + }, + "ChartAxisLabelOptions": { + "additionalProperties": false, + "properties": { + "AxisLabelOptions": { + "items": { + "$ref": "#/definitions/AxisLabelOptions" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + }, + "SortIconVisibility": { + "$ref": "#/definitions/Visibility" + }, + "Visibility": { + "$ref": "#/definitions/Visibility" + } + }, + "type": "object" + }, + "ClusterMarker": { + "additionalProperties": false, + "properties": { + "SimpleClusterMarker": { + "$ref": "#/definitions/SimpleClusterMarker" + } + }, + "type": "object" + }, + "ClusterMarkerConfiguration": { + "additionalProperties": false, + "properties": { + "ClusterMarker": { + "$ref": "#/definitions/ClusterMarker" + } + }, + "type": "object" + }, + "ColorFillType": { + "enum": [ + "DISCRETE", + "GRADIENT" + ], + "type": "string" + }, + "ColorScale": { + "additionalProperties": false, + "properties": { + "ColorFillType": { + "$ref": "#/definitions/ColorFillType" + }, + "Colors": { + "items": { + "$ref": "#/definitions/DataColor" + }, + "maxItems": 3, + "minItems": 2, + "type": "array" + }, + "NullValueColor": { + "$ref": "#/definitions/DataColor" + } + }, + "required": [ + "ColorFillType", + "Colors" + ], + "type": "object" + }, + "ColorsConfiguration": { + "additionalProperties": false, + "properties": { + "CustomColors": { + "items": { + "$ref": "#/definitions/CustomColor" + }, + "maxItems": 50, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "ColumnConfiguration": { + "additionalProperties": false, + "properties": { + "ColorsConfiguration": { + "$ref": "#/definitions/ColorsConfiguration" + }, + "Column": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "FormatConfiguration": { + "$ref": "#/definitions/FormatConfiguration" + }, + "Role": { + "$ref": "#/definitions/ColumnRole" + } + }, + "required": [ + "Column" + ], + "type": "object" + }, + "ColumnHierarchy": { + "additionalProperties": false, + "properties": { + "DateTimeHierarchy": { + "$ref": "#/definitions/DateTimeHierarchy" + }, + "ExplicitHierarchy": { + "$ref": "#/definitions/ExplicitHierarchy" + }, + "PredefinedHierarchy": { + "$ref": "#/definitions/PredefinedHierarchy" + } + }, + "type": "object" + }, + "ColumnIdentifier": { + "additionalProperties": false, + "properties": { + "ColumnName": { + "maxLength": 127, + "minLength": 1, + "type": "string" + }, + "DataSetIdentifier": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "ColumnName", + "DataSetIdentifier" + ], + "type": "object" + }, + "ColumnRole": { + "enum": [ + "DIMENSION", + "MEASURE" + ], + "type": "string" + }, + "ColumnSort": { + "additionalProperties": false, + "properties": { + "AggregationFunction": { + "$ref": "#/definitions/AggregationFunction" + }, + "Direction": { + "$ref": "#/definitions/SortDirection" + }, + "SortBy": { + "$ref": "#/definitions/ColumnIdentifier" + } + }, + "required": [ + "Direction", + "SortBy" + ], + "type": "object" + }, + "ColumnTooltipItem": { + "additionalProperties": false, + "properties": { + "Aggregation": { + "$ref": "#/definitions/AggregationFunction" + }, + "Column": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "Label": { + "type": "string" + }, + "TooltipTarget": { + "$ref": "#/definitions/TooltipTarget" + }, + "Visibility": { + "$ref": "#/definitions/Visibility" + } + }, + "required": [ + "Column" + ], + "type": "object" + }, + "ComboChartAggregatedFieldWells": { + "additionalProperties": false, + "properties": { + "BarValues": { + "items": { + "$ref": "#/definitions/MeasureField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "Category": { + "items": { + "$ref": "#/definitions/DimensionField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "Colors": { + "items": { + "$ref": "#/definitions/DimensionField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "LineValues": { + "items": { + "$ref": "#/definitions/MeasureField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "ComboChartConfiguration": { + "additionalProperties": false, + "properties": { + "BarDataLabels": { + "$ref": "#/definitions/DataLabelOptions" + }, + "BarsArrangement": { + "$ref": "#/definitions/BarsArrangement" + }, + "CategoryAxis": { + "$ref": "#/definitions/AxisDisplayOptions" + }, + "CategoryLabelOptions": { + "$ref": "#/definitions/ChartAxisLabelOptions" + }, + "ColorLabelOptions": { + "$ref": "#/definitions/ChartAxisLabelOptions" + }, + "FieldWells": { + "$ref": "#/definitions/ComboChartFieldWells" + }, + "Interactions": { + "$ref": "#/definitions/VisualInteractionOptions" + }, + "Legend": { + "$ref": "#/definitions/LegendOptions" + }, + "LineDataLabels": { + "$ref": "#/definitions/DataLabelOptions" + }, + "PrimaryYAxisDisplayOptions": { + "$ref": "#/definitions/AxisDisplayOptions" + }, + "PrimaryYAxisLabelOptions": { + "$ref": "#/definitions/ChartAxisLabelOptions" + }, + "ReferenceLines": { + "items": { + "$ref": "#/definitions/ReferenceLine" + }, + "maxItems": 20, + "minItems": 0, + "type": "array" + }, + "SecondaryYAxisDisplayOptions": { + "$ref": "#/definitions/AxisDisplayOptions" + }, + "SecondaryYAxisLabelOptions": { + "$ref": "#/definitions/ChartAxisLabelOptions" + }, + "SingleAxisOptions": { + "$ref": "#/definitions/SingleAxisOptions" + }, + "SortConfiguration": { + "$ref": "#/definitions/ComboChartSortConfiguration" + }, + "Tooltip": { + "$ref": "#/definitions/TooltipOptions" + }, + "VisualPalette": { + "$ref": "#/definitions/VisualPalette" + } + }, + "type": "object" + }, + "ComboChartFieldWells": { + "additionalProperties": false, + "properties": { + "ComboChartAggregatedFieldWells": { + "$ref": "#/definitions/ComboChartAggregatedFieldWells" + } + }, + "type": "object" + }, + "ComboChartSortConfiguration": { + "additionalProperties": false, + "properties": { + "CategoryItemsLimit": { + "$ref": "#/definitions/ItemsLimitConfiguration" + }, + "CategorySort": { + "items": { + "$ref": "#/definitions/FieldSortOptions" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + }, + "ColorItemsLimit": { + "$ref": "#/definitions/ItemsLimitConfiguration" + }, + "ColorSort": { + "items": { + "$ref": "#/definitions/FieldSortOptions" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "ComboChartVisual": { + "additionalProperties": false, + "properties": { + "Actions": { + "items": { + "$ref": "#/definitions/VisualCustomAction" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + }, + "ChartConfiguration": { + "$ref": "#/definitions/ComboChartConfiguration" + }, + "ColumnHierarchies": { + "items": { + "$ref": "#/definitions/ColumnHierarchy" + }, + "maxItems": 2, + "minItems": 0, + "type": "array" + }, + "Subtitle": { + "$ref": "#/definitions/VisualSubtitleLabelOptions" + }, + "Title": { + "$ref": "#/definitions/VisualTitleLabelOptions" + }, + "VisualContentAltText": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "VisualId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + } + }, + "required": [ + "VisualId" + ], + "type": "object" + }, + "CommitMode": { + "enum": [ + "AUTO", + "MANUAL" + ], + "type": "string" + }, + "ComparisonConfiguration": { + "additionalProperties": false, + "properties": { + "ComparisonFormat": { + "$ref": "#/definitions/ComparisonFormatConfiguration" + }, + "ComparisonMethod": { + "$ref": "#/definitions/ComparisonMethod" + } + }, + "type": "object" + }, + "ComparisonFormatConfiguration": { + "additionalProperties": false, + "properties": { + "NumberDisplayFormatConfiguration": { + "$ref": "#/definitions/NumberDisplayFormatConfiguration" + }, + "PercentageDisplayFormatConfiguration": { + "$ref": "#/definitions/PercentageDisplayFormatConfiguration" + } + }, + "type": "object" + }, + "ComparisonMethod": { + "enum": [ + "DIFFERENCE", + "PERCENT_DIFFERENCE", + "PERCENT" + ], + "type": "string" + }, + "Computation": { + "additionalProperties": false, + "properties": { + "Forecast": { + "$ref": "#/definitions/ForecastComputation" + }, + "GrowthRate": { + "$ref": "#/definitions/GrowthRateComputation" + }, + "MaximumMinimum": { + "$ref": "#/definitions/MaximumMinimumComputation" + }, + "MetricComparison": { + "$ref": "#/definitions/MetricComparisonComputation" + }, + "PeriodOverPeriod": { + "$ref": "#/definitions/PeriodOverPeriodComputation" + }, + "PeriodToDate": { + "$ref": "#/definitions/PeriodToDateComputation" + }, + "TopBottomMovers": { + "$ref": "#/definitions/TopBottomMoversComputation" + }, + "TopBottomRanked": { + "$ref": "#/definitions/TopBottomRankedComputation" + }, + "TotalAggregation": { + "$ref": "#/definitions/TotalAggregationComputation" + }, + "UniqueValues": { + "$ref": "#/definitions/UniqueValuesComputation" + } + }, + "type": "object" + }, + "ConditionalFormattingColor": { + "additionalProperties": false, + "properties": { + "Gradient": { + "$ref": "#/definitions/ConditionalFormattingGradientColor" + }, + "Solid": { + "$ref": "#/definitions/ConditionalFormattingSolidColor" + } + }, + "type": "object" + }, + "ConditionalFormattingCustomIconCondition": { + "additionalProperties": false, + "properties": { + "Color": { + "pattern": "^#[A-F0-9]{6}$", + "type": "string" + }, + "DisplayConfiguration": { + "$ref": "#/definitions/ConditionalFormattingIconDisplayConfiguration" + }, + "Expression": { + "maxLength": 4096, + "minLength": 1, + "type": "string" + }, + "IconOptions": { + "$ref": "#/definitions/ConditionalFormattingCustomIconOptions" + } + }, + "required": [ + "Expression", + "IconOptions" + ], + "type": "object" + }, + "ConditionalFormattingCustomIconOptions": { + "additionalProperties": false, + "properties": { + "Icon": { + "$ref": "#/definitions/Icon" + }, + "UnicodeIcon": { + "pattern": "^[^\\u0000-\\u00FF]$", + "type": "string" + } + }, + "type": "object" + }, + "ConditionalFormattingGradientColor": { + "additionalProperties": false, + "properties": { + "Color": { + "$ref": "#/definitions/GradientColor" + }, + "Expression": { + "maxLength": 4096, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Color", + "Expression" + ], + "type": "object" + }, + "ConditionalFormattingIcon": { + "additionalProperties": false, + "properties": { + "CustomCondition": { + "$ref": "#/definitions/ConditionalFormattingCustomIconCondition" + }, + "IconSet": { + "$ref": "#/definitions/ConditionalFormattingIconSet" + } + }, + "type": "object" + }, + "ConditionalFormattingIconDisplayConfiguration": { + "additionalProperties": false, + "properties": { + "IconDisplayOption": { + "$ref": "#/definitions/ConditionalFormattingIconDisplayOption" + } + }, + "type": "object" + }, + "ConditionalFormattingIconDisplayOption": { + "enum": [ + "ICON_ONLY" + ], + "type": "string" + }, + "ConditionalFormattingIconSet": { + "additionalProperties": false, + "properties": { + "Expression": { + "maxLength": 4096, + "minLength": 1, + "type": "string" + }, + "IconSetType": { + "$ref": "#/definitions/ConditionalFormattingIconSetType" + } + }, + "required": [ + "Expression" + ], + "type": "object" + }, + "ConditionalFormattingIconSetType": { + "enum": [ + "PLUS_MINUS", + "CHECK_X", + "THREE_COLOR_ARROW", + "THREE_GRAY_ARROW", + "CARET_UP_MINUS_DOWN", + "THREE_SHAPE", + "THREE_CIRCLE", + "FLAGS", + "BARS", + "FOUR_COLOR_ARROW", + "FOUR_GRAY_ARROW" + ], + "type": "string" + }, + "ConditionalFormattingSolidColor": { + "additionalProperties": false, + "properties": { + "Color": { + "pattern": "^#[A-F0-9]{6}$", + "type": "string" + }, + "Expression": { + "maxLength": 4096, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Expression" + ], + "type": "object" + }, + "ContextMenuOption": { + "additionalProperties": false, + "properties": { + "AvailabilityStatus": { + "$ref": "#/definitions/DashboardBehavior" + } + }, + "type": "object" + }, + "ContributionAnalysisDefault": { + "additionalProperties": false, + "properties": { + "ContributorDimensions": { + "items": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "maxItems": 4, + "minItems": 1, + "type": "array" + }, + "MeasureFieldId": { + "maxLength": 512, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "ContributorDimensions", + "MeasureFieldId" + ], + "type": "object" + }, + "CrossDatasetTypes": { + "enum": [ + "ALL_DATASETS", + "SINGLE_DATASET" + ], + "type": "string" + }, + "CurrencyDisplayFormatConfiguration": { + "additionalProperties": false, + "properties": { + "DecimalPlacesConfiguration": { + "$ref": "#/definitions/DecimalPlacesConfiguration" + }, + "NegativeValueConfiguration": { + "$ref": "#/definitions/NegativeValueConfiguration" + }, + "NullValueFormatConfiguration": { + "$ref": "#/definitions/NullValueFormatConfiguration" + }, + "NumberScale": { + "$ref": "#/definitions/NumberScale" + }, + "Prefix": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "SeparatorConfiguration": { + "$ref": "#/definitions/NumericSeparatorConfiguration" + }, + "Suffix": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Symbol": { + "pattern": "^[A-Z]{3}$", + "type": "string" + } + }, + "type": "object" + }, + "CustomActionFilterOperation": { + "additionalProperties": false, + "properties": { + "SelectedFieldsConfiguration": { + "$ref": "#/definitions/FilterOperationSelectedFieldsConfiguration" + }, + "TargetVisualsConfiguration": { + "$ref": "#/definitions/FilterOperationTargetVisualsConfiguration" + } + }, + "required": [ + "SelectedFieldsConfiguration", + "TargetVisualsConfiguration" + ], + "type": "object" + }, + "CustomActionNavigationOperation": { + "additionalProperties": false, + "properties": { + "LocalNavigationConfiguration": { + "$ref": "#/definitions/LocalNavigationConfiguration" + } + }, + "type": "object" + }, + "CustomActionSetParametersOperation": { + "additionalProperties": false, + "properties": { + "ParameterValueConfigurations": { + "items": { + "$ref": "#/definitions/SetParameterValueConfiguration" + }, + "maxItems": 200, + "minItems": 1, + "type": "array" + } + }, + "required": [ + "ParameterValueConfigurations" + ], + "type": "object" + }, + "CustomActionURLOperation": { + "additionalProperties": false, + "properties": { + "URLTarget": { + "$ref": "#/definitions/URLTargetConfiguration" + }, + "URLTemplate": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "URLTarget", + "URLTemplate" + ], + "type": "object" + }, + "CustomColor": { + "additionalProperties": false, + "properties": { + "Color": { + "pattern": "^#[A-F0-9]{6}$", + "type": "string" + }, + "FieldValue": { + "maxLength": 2048, + "minLength": 0, + "type": "string" + }, + "SpecialValue": { + "$ref": "#/definitions/SpecialValue" + } + }, + "required": [ + "Color" + ], + "type": "object" + }, + "CustomContentConfiguration": { + "additionalProperties": false, + "properties": { + "ContentType": { + "$ref": "#/definitions/CustomContentType" + }, + "ContentUrl": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "ImageScaling": { + "$ref": "#/definitions/CustomContentImageScalingConfiguration" + }, + "Interactions": { + "$ref": "#/definitions/VisualInteractionOptions" + } + }, + "type": "object" + }, + "CustomContentImageScalingConfiguration": { + "enum": [ + "FIT_TO_HEIGHT", + "FIT_TO_WIDTH", + "DO_NOT_SCALE", + "SCALE_TO_VISUAL" + ], + "type": "string" + }, + "CustomContentType": { + "enum": [ + "IMAGE", + "OTHER_EMBEDDED_CONTENT" + ], + "type": "string" + }, + "CustomContentVisual": { + "additionalProperties": false, + "properties": { + "Actions": { + "items": { + "$ref": "#/definitions/VisualCustomAction" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + }, + "ChartConfiguration": { + "$ref": "#/definitions/CustomContentConfiguration" + }, + "DataSetIdentifier": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "Subtitle": { + "$ref": "#/definitions/VisualSubtitleLabelOptions" + }, + "Title": { + "$ref": "#/definitions/VisualTitleLabelOptions" + }, + "VisualContentAltText": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "VisualId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + } + }, + "required": [ + "DataSetIdentifier", + "VisualId" + ], + "type": "object" + }, + "CustomFilterConfiguration": { + "additionalProperties": false, + "properties": { + "CategoryValue": { + "maxLength": 512, + "minLength": 0, + "type": "string" + }, + "MatchOperator": { + "$ref": "#/definitions/CategoryFilterMatchOperator" + }, + "NullOption": { + "$ref": "#/definitions/FilterNullOption" + }, + "ParameterName": { + "maxLength": 2048, + "minLength": 1, + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + "SelectAllOptions": { + "$ref": "#/definitions/CategoryFilterSelectAllOptions" + } + }, + "required": [ + "MatchOperator", + "NullOption" + ], + "type": "object" + }, + "CustomFilterListConfiguration": { + "additionalProperties": false, + "properties": { + "CategoryValues": { + "items": { + "maxLength": 512, + "minLength": 0, + "type": "string" + }, + "maxItems": 100000, + "minItems": 0, + "type": "array" + }, + "MatchOperator": { + "$ref": "#/definitions/CategoryFilterMatchOperator" + }, + "NullOption": { + "$ref": "#/definitions/FilterNullOption" + }, + "SelectAllOptions": { + "$ref": "#/definitions/CategoryFilterSelectAllOptions" + } + }, + "required": [ + "MatchOperator", + "NullOption" + ], + "type": "object" + }, + "CustomNarrativeOptions": { + "additionalProperties": false, + "properties": { + "Narrative": { + "maxLength": 150000, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Narrative" + ], + "type": "object" + }, + "CustomParameterValues": { + "additionalProperties": false, + "properties": { + "DateTimeValues": { + "items": { + "format": "date-time", + "type": "string" + }, + "maxItems": 50000, + "minItems": 0, + "type": "array" + }, + "DecimalValues": { + "items": { + "type": "number" + }, + "maxItems": 50000, + "minItems": 0, + "type": "array" + }, + "IntegerValues": { + "items": { + "type": "number" + }, + "maxItems": 50000, + "minItems": 0, + "type": "array" + }, + "StringValues": { + "items": { + "type": "string" + }, + "maxItems": 50000, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "CustomValuesConfiguration": { + "additionalProperties": false, + "properties": { + "CustomValues": { + "$ref": "#/definitions/CustomParameterValues" + }, + "IncludeNullValue": { + "type": "boolean" + } + }, + "required": [ + "CustomValues" + ], + "type": "object" + }, + "DashboardBehavior": { + "enum": [ + "ENABLED", + "DISABLED" + ], + "type": "string" + }, + "DataBarsOptions": { + "additionalProperties": false, + "properties": { + "FieldId": { + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "NegativeColor": { + "pattern": "^#[A-F0-9]{6}$", + "type": "string" + }, + "PositiveColor": { + "pattern": "^#[A-F0-9]{6}$", + "type": "string" + } + }, + "required": [ + "FieldId" + ], + "type": "object" + }, + "DataColor": { + "additionalProperties": false, + "properties": { + "Color": { + "pattern": "^#[A-F0-9]{6}$", + "type": "string" + }, + "DataValue": { + "default": null, + "type": "number" + } + }, + "type": "object" + }, + "DataFieldSeriesItem": { + "additionalProperties": false, + "properties": { + "AxisBinding": { + "$ref": "#/definitions/AxisBinding" + }, + "FieldId": { + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "FieldValue": { + "type": "string" + }, + "Settings": { + "$ref": "#/definitions/LineChartSeriesSettings" + } + }, + "required": [ + "AxisBinding", + "FieldId" + ], + "type": "object" + }, + "DataLabelContent": { + "enum": [ + "VALUE", + "PERCENT", + "VALUE_AND_PERCENT" + ], + "type": "string" + }, + "DataLabelOptions": { + "additionalProperties": false, + "properties": { + "CategoryLabelVisibility": { + "$ref": "#/definitions/Visibility" + }, + "DataLabelTypes": { + "items": { + "$ref": "#/definitions/DataLabelType" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + }, + "LabelColor": { + "pattern": "^#[A-F0-9]{6}$", + "type": "string" + }, + "LabelContent": { + "$ref": "#/definitions/DataLabelContent" + }, + "LabelFontConfiguration": { + "$ref": "#/definitions/FontConfiguration" + }, + "MeasureLabelVisibility": { + "$ref": "#/definitions/Visibility" + }, + "Overlap": { + "$ref": "#/definitions/DataLabelOverlap" + }, + "Position": { + "$ref": "#/definitions/DataLabelPosition" + }, + "TotalsVisibility": { + "$ref": "#/definitions/Visibility" + }, + "Visibility": { + "$ref": "#/definitions/Visibility" + } + }, + "type": "object" + }, + "DataLabelOverlap": { + "enum": [ + "DISABLE_OVERLAP", + "ENABLE_OVERLAP" + ], + "type": "string" + }, + "DataLabelPosition": { + "enum": [ + "INSIDE", + "OUTSIDE", + "LEFT", + "TOP", + "BOTTOM", + "RIGHT" + ], + "type": "string" + }, + "DataLabelType": { + "additionalProperties": false, + "properties": { + "DataPathLabelType": { + "$ref": "#/definitions/DataPathLabelType" + }, + "FieldLabelType": { + "$ref": "#/definitions/FieldLabelType" + }, + "MaximumLabelType": { + "$ref": "#/definitions/MaximumLabelType" + }, + "MinimumLabelType": { + "$ref": "#/definitions/MinimumLabelType" + }, + "RangeEndsLabelType": { + "$ref": "#/definitions/RangeEndsLabelType" + } + }, + "type": "object" + }, + "DataPathColor": { + "additionalProperties": false, + "properties": { + "Color": { + "pattern": "^#[A-F0-9]{6}$", + "type": "string" + }, + "Element": { + "$ref": "#/definitions/DataPathValue" + }, + "TimeGranularity": { + "$ref": "#/definitions/TimeGranularity" + } + }, + "required": [ + "Color", + "Element" + ], + "type": "object" + }, + "DataPathLabelType": { + "additionalProperties": false, + "properties": { + "FieldId": { + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "FieldValue": { + "maxLength": 2048, + "minLength": 0, + "type": "string" + }, + "Visibility": { + "$ref": "#/definitions/Visibility" + } + }, + "type": "object" + }, + "DataPathSort": { + "additionalProperties": false, + "properties": { + "Direction": { + "$ref": "#/definitions/SortDirection" + }, + "SortPaths": { + "items": { + "$ref": "#/definitions/DataPathValue" + }, + "maxItems": 20, + "minItems": 0, + "type": "array" + } + }, + "required": [ + "Direction", + "SortPaths" + ], + "type": "object" + }, + "DataPathType": { + "additionalProperties": false, + "properties": { + "PivotTableDataPathType": { + "$ref": "#/definitions/PivotTableDataPathType" + } + }, + "type": "object" + }, + "DataPathValue": { + "additionalProperties": false, + "properties": { + "DataPathType": { + "$ref": "#/definitions/DataPathType" + }, + "FieldId": { + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "FieldValue": { + "maxLength": 2048, + "minLength": 0, + "type": "string" + } + }, + "type": "object" + }, + "DataSetIdentifierDeclaration": { + "additionalProperties": false, + "properties": { + "DataSetArn": { + "type": "string" + }, + "Identifier": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "DataSetArn", + "Identifier" + ], + "type": "object" + }, + "DataSetReference": { + "additionalProperties": false, + "description": "Dataset reference.
", + "properties": { + "DataSetArn": { + "description": "Dataset Amazon Resource Name (ARN).
", + "type": "string" + }, + "DataSetPlaceholder": { + "description": "Dataset placeholder.
", + "pattern": "\\S", + "type": "string" + } + }, + "required": [ + "DataSetArn", + "DataSetPlaceholder" + ], + "type": "object" + }, + "DateAggregationFunction": { + "enum": [ + "COUNT", + "DISTINCT_COUNT", + "MIN", + "MAX" + ], + "type": "string" + }, + "DateAxisOptions": { + "additionalProperties": false, + "properties": { + "MissingDateVisibility": { + "$ref": "#/definitions/Visibility" + } + }, + "type": "object" + }, + "DateDimensionField": { + "additionalProperties": false, + "properties": { + "Column": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "DateGranularity": { + "$ref": "#/definitions/TimeGranularity" + }, + "FieldId": { + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "FormatConfiguration": { + "$ref": "#/definitions/DateTimeFormatConfiguration" + }, + "HierarchyId": { + "maxLength": 512, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Column", + "FieldId" + ], + "type": "object" + }, + "DateMeasureField": { + "additionalProperties": false, + "properties": { + "AggregationFunction": { + "$ref": "#/definitions/DateAggregationFunction" + }, + "Column": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "FieldId": { + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "FormatConfiguration": { + "$ref": "#/definitions/DateTimeFormatConfiguration" + } + }, + "required": [ + "Column", + "FieldId" + ], + "type": "object" + }, + "DateTimeDefaultValues": { + "additionalProperties": false, + "properties": { + "DynamicValue": { + "$ref": "#/definitions/DynamicDefaultValue" + }, + "RollingDate": { + "$ref": "#/definitions/RollingDateConfiguration" + }, + "StaticValues": { + "items": { + "format": "date-time", + "type": "string" + }, + "maxItems": 50000, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "DateTimeFormatConfiguration": { + "additionalProperties": false, + "properties": { + "DateTimeFormat": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "NullValueFormatConfiguration": { + "$ref": "#/definitions/NullValueFormatConfiguration" + }, + "NumericFormatConfiguration": { + "$ref": "#/definitions/NumericFormatConfiguration" + } + }, + "type": "object" + }, + "DateTimeHierarchy": { + "additionalProperties": false, + "properties": { + "DrillDownFilters": { + "items": { + "$ref": "#/definitions/DrillDownFilter" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + }, + "HierarchyId": { + "maxLength": 512, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "HierarchyId" + ], + "type": "object" + }, + "DateTimeParameter": { + "additionalProperties": false, + "description": "A date-time parameter.
", + "properties": { + "Name": { + "description": "A display name for the date-time parameter.
", + "pattern": "\\S", + "type": "string" + }, + "Values": { + "description": "The values for the date-time parameter.
", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "Name", + "Values" + ], + "type": "object" + }, + "DateTimeParameterDeclaration": { + "additionalProperties": false, + "properties": { + "DefaultValues": { + "$ref": "#/definitions/DateTimeDefaultValues" + }, + "MappedDataSetParameters": { + "items": { + "$ref": "#/definitions/MappedDataSetParameter" + }, + "maxItems": 150, + "minItems": 0, + "type": "array" + }, + "Name": { + "maxLength": 2048, + "minLength": 1, + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + "TimeGranularity": { + "$ref": "#/definitions/TimeGranularity" + }, + "ValueWhenUnset": { + "$ref": "#/definitions/DateTimeValueWhenUnsetConfiguration" + } + }, + "required": [ + "Name" + ], + "type": "object" + }, + "DateTimePickerControlDisplayOptions": { + "additionalProperties": false, + "properties": { + "DateIconVisibility": { + "$ref": "#/definitions/Visibility" + }, + "DateTimeFormat": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "HelperTextVisibility": { + "$ref": "#/definitions/Visibility" + }, + "InfoIconLabelOptions": { + "$ref": "#/definitions/SheetControlInfoIconLabelOptions" + }, + "TitleOptions": { + "$ref": "#/definitions/LabelOptions" + } + }, + "type": "object" + }, + "DateTimeValueWhenUnsetConfiguration": { + "additionalProperties": false, + "properties": { + "CustomValue": { + "format": "date-time", + "type": "string" + }, + "ValueWhenUnsetOption": { + "$ref": "#/definitions/ValueWhenUnsetOption" + } + }, + "type": "object" + }, + "DayOfTheWeek": { + "enum": [ + "SUNDAY", + "MONDAY", + "TUESDAY", + "WEDNESDAY", + "THURSDAY", + "FRIDAY", + "SATURDAY" + ], + "type": "string" + }, + "DecimalDefaultValues": { + "additionalProperties": false, + "properties": { + "DynamicValue": { + "$ref": "#/definitions/DynamicDefaultValue" + }, + "StaticValues": { + "items": { + "type": "number" + }, + "maxItems": 50000, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "DecimalParameter": { + "additionalProperties": false, + "description": "A decimal parameter.
", + "properties": { + "Name": { + "description": "A display name for the decimal parameter.
", + "pattern": "\\S", + "type": "string" + }, + "Values": { + "description": "The values for the decimal parameter.
", + "items": { + "default": 0, + "type": "number" + }, + "type": "array" + } + }, + "required": [ + "Name", + "Values" + ], + "type": "object" + }, + "DecimalParameterDeclaration": { + "additionalProperties": false, + "properties": { + "DefaultValues": { + "$ref": "#/definitions/DecimalDefaultValues" + }, + "MappedDataSetParameters": { + "items": { + "$ref": "#/definitions/MappedDataSetParameter" + }, + "maxItems": 150, + "minItems": 0, + "type": "array" + }, + "Name": { + "maxLength": 2048, + "minLength": 1, + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + "ParameterValueType": { + "$ref": "#/definitions/ParameterValueType" + }, + "ValueWhenUnset": { + "$ref": "#/definitions/DecimalValueWhenUnsetConfiguration" + } + }, + "required": [ + "Name", + "ParameterValueType" + ], + "type": "object" + }, + "DecimalPlacesConfiguration": { + "additionalProperties": false, + "properties": { + "DecimalPlaces": { + "maximum": 20, + "minimum": 0, + "type": "number" + } + }, + "required": [ + "DecimalPlaces" + ], + "type": "object" + }, + "DecimalValueWhenUnsetConfiguration": { + "additionalProperties": false, + "properties": { + "CustomValue": { + "default": null, + "type": "number" + }, + "ValueWhenUnsetOption": { + "$ref": "#/definitions/ValueWhenUnsetOption" + } + }, + "type": "object" + }, + "DefaultDateTimePickerControlOptions": { + "additionalProperties": false, + "properties": { + "CommitMode": { + "$ref": "#/definitions/CommitMode" + }, + "DisplayOptions": { + "$ref": "#/definitions/DateTimePickerControlDisplayOptions" + }, + "Type": { + "$ref": "#/definitions/SheetControlDateTimePickerType" + } + }, + "type": "object" + }, + "DefaultFilterControlConfiguration": { + "additionalProperties": false, + "properties": { + "ControlOptions": { + "$ref": "#/definitions/DefaultFilterControlOptions" + }, + "Title": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "ControlOptions", + "Title" + ], + "type": "object" + }, + "DefaultFilterControlOptions": { + "additionalProperties": false, + "properties": { + "DefaultDateTimePickerOptions": { + "$ref": "#/definitions/DefaultDateTimePickerControlOptions" + }, + "DefaultDropdownOptions": { + "$ref": "#/definitions/DefaultFilterDropDownControlOptions" + }, + "DefaultListOptions": { + "$ref": "#/definitions/DefaultFilterListControlOptions" + }, + "DefaultRelativeDateTimeOptions": { + "$ref": "#/definitions/DefaultRelativeDateTimeControlOptions" + }, + "DefaultSliderOptions": { + "$ref": "#/definitions/DefaultSliderControlOptions" + }, + "DefaultTextAreaOptions": { + "$ref": "#/definitions/DefaultTextAreaControlOptions" + }, + "DefaultTextFieldOptions": { + "$ref": "#/definitions/DefaultTextFieldControlOptions" + } + }, + "type": "object" + }, + "DefaultFilterDropDownControlOptions": { + "additionalProperties": false, + "properties": { + "CommitMode": { + "$ref": "#/definitions/CommitMode" + }, + "DisplayOptions": { + "$ref": "#/definitions/DropDownControlDisplayOptions" + }, + "SelectableValues": { + "$ref": "#/definitions/FilterSelectableValues" + }, + "Type": { + "$ref": "#/definitions/SheetControlListType" + } + }, + "type": "object" + }, + "DefaultFilterListControlOptions": { + "additionalProperties": false, + "properties": { + "DisplayOptions": { + "$ref": "#/definitions/ListControlDisplayOptions" + }, + "SelectableValues": { + "$ref": "#/definitions/FilterSelectableValues" + }, + "Type": { + "$ref": "#/definitions/SheetControlListType" + } + }, + "type": "object" + }, + "DefaultFreeFormLayoutConfiguration": { + "additionalProperties": false, + "properties": { + "CanvasSizeOptions": { + "$ref": "#/definitions/FreeFormLayoutCanvasSizeOptions" + } + }, + "required": [ + "CanvasSizeOptions" + ], + "type": "object" + }, + "DefaultGridLayoutConfiguration": { + "additionalProperties": false, + "properties": { + "CanvasSizeOptions": { + "$ref": "#/definitions/GridLayoutCanvasSizeOptions" + } + }, + "required": [ + "CanvasSizeOptions" + ], + "type": "object" + }, + "DefaultInteractiveLayoutConfiguration": { + "additionalProperties": false, + "properties": { + "FreeForm": { + "$ref": "#/definitions/DefaultFreeFormLayoutConfiguration" + }, + "Grid": { + "$ref": "#/definitions/DefaultGridLayoutConfiguration" + } + }, + "type": "object" + }, + "DefaultNewSheetConfiguration": { + "additionalProperties": false, + "properties": { + "InteractiveLayoutConfiguration": { + "$ref": "#/definitions/DefaultInteractiveLayoutConfiguration" + }, + "PaginatedLayoutConfiguration": { + "$ref": "#/definitions/DefaultPaginatedLayoutConfiguration" + }, + "SheetContentType": { + "$ref": "#/definitions/SheetContentType" + } + }, + "type": "object" + }, + "DefaultPaginatedLayoutConfiguration": { + "additionalProperties": false, + "properties": { + "SectionBased": { + "$ref": "#/definitions/DefaultSectionBasedLayoutConfiguration" + } + }, + "type": "object" + }, + "DefaultRelativeDateTimeControlOptions": { + "additionalProperties": false, + "properties": { + "CommitMode": { + "$ref": "#/definitions/CommitMode" + }, + "DisplayOptions": { + "$ref": "#/definitions/RelativeDateTimeControlDisplayOptions" + } + }, + "type": "object" + }, + "DefaultSectionBasedLayoutConfiguration": { + "additionalProperties": false, + "properties": { + "CanvasSizeOptions": { + "$ref": "#/definitions/SectionBasedLayoutCanvasSizeOptions" + } + }, + "required": [ + "CanvasSizeOptions" + ], + "type": "object" + }, + "DefaultSliderControlOptions": { + "additionalProperties": false, + "properties": { + "DisplayOptions": { + "$ref": "#/definitions/SliderControlDisplayOptions" + }, + "MaximumValue": { + "default": 0, + "type": "number" + }, + "MinimumValue": { + "default": 0, + "type": "number" + }, + "StepSize": { + "default": 0, + "type": "number" + }, + "Type": { + "$ref": "#/definitions/SheetControlSliderType" + } + }, + "required": [ + "MaximumValue", + "MinimumValue", + "StepSize" + ], + "type": "object" + }, + "DefaultTextAreaControlOptions": { + "additionalProperties": false, + "properties": { + "Delimiter": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "DisplayOptions": { + "$ref": "#/definitions/TextAreaControlDisplayOptions" + } + }, + "type": "object" + }, + "DefaultTextFieldControlOptions": { + "additionalProperties": false, + "properties": { + "DisplayOptions": { + "$ref": "#/definitions/TextFieldControlDisplayOptions" + } + }, + "type": "object" + }, + "DestinationParameterValueConfiguration": { + "additionalProperties": false, + "properties": { + "CustomValuesConfiguration": { + "$ref": "#/definitions/CustomValuesConfiguration" + }, + "SelectAllValueOptions": { + "$ref": "#/definitions/SelectAllValueOptions" + }, + "SourceColumn": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "SourceField": { + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "SourceParameterName": { + "type": "string" + } + }, + "type": "object" + }, + "DigitGroupingStyle": { + "enum": [ + "DEFAULT", + "LAKHS" + ], + "type": "string" + }, + "DimensionField": { + "additionalProperties": false, + "properties": { + "CategoricalDimensionField": { + "$ref": "#/definitions/CategoricalDimensionField" + }, + "DateDimensionField": { + "$ref": "#/definitions/DateDimensionField" + }, + "NumericalDimensionField": { + "$ref": "#/definitions/NumericalDimensionField" + } + }, + "type": "object" + }, + "DonutCenterOptions": { + "additionalProperties": false, + "properties": { + "LabelVisibility": { + "$ref": "#/definitions/Visibility" + } + }, + "type": "object" + }, + "DonutOptions": { + "additionalProperties": false, + "properties": { + "ArcOptions": { + "$ref": "#/definitions/ArcOptions" + }, + "DonutCenterOptions": { + "$ref": "#/definitions/DonutCenterOptions" + } + }, + "type": "object" + }, + "DrillDownFilter": { + "additionalProperties": false, + "properties": { + "CategoryFilter": { + "$ref": "#/definitions/CategoryDrillDownFilter" + }, + "NumericEqualityFilter": { + "$ref": "#/definitions/NumericEqualityDrillDownFilter" + }, + "TimeRangeFilter": { + "$ref": "#/definitions/TimeRangeDrillDownFilter" + } + }, + "type": "object" + }, + "DropDownControlDisplayOptions": { + "additionalProperties": false, + "properties": { + "InfoIconLabelOptions": { + "$ref": "#/definitions/SheetControlInfoIconLabelOptions" + }, + "SelectAllOptions": { + "$ref": "#/definitions/ListControlSelectAllOptions" + }, + "TitleOptions": { + "$ref": "#/definitions/LabelOptions" + } + }, + "type": "object" + }, + "DynamicDefaultValue": { + "additionalProperties": false, + "properties": { + "DefaultValueColumn": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "GroupNameColumn": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "UserNameColumn": { + "$ref": "#/definitions/ColumnIdentifier" + } + }, + "required": [ + "DefaultValueColumn" + ], + "type": "object" + }, + "EmptyVisual": { + "additionalProperties": false, + "properties": { + "Actions": { + "items": { + "$ref": "#/definitions/VisualCustomAction" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + }, + "DataSetIdentifier": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "VisualId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + } + }, + "required": [ + "DataSetIdentifier", + "VisualId" + ], + "type": "object" + }, + "Entity": { + "additionalProperties": false, + "properties": { + "Path": { + "pattern": "\\S", + "type": "string" + } + }, + "type": "object" + }, + "ExcludePeriodConfiguration": { + "additionalProperties": false, + "properties": { + "Amount": { + "default": null, + "type": "number" + }, + "Granularity": { + "$ref": "#/definitions/TimeGranularity" + }, + "Status": { + "$ref": "#/definitions/WidgetStatus" + } + }, + "required": [ + "Amount", + "Granularity" + ], + "type": "object" + }, + "ExplicitHierarchy": { + "additionalProperties": false, + "properties": { + "Columns": { + "items": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "maxItems": 10, + "minItems": 2, + "type": "array" + }, + "DrillDownFilters": { + "items": { + "$ref": "#/definitions/DrillDownFilter" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + }, + "HierarchyId": { + "maxLength": 512, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Columns", + "HierarchyId" + ], + "type": "object" + }, + "FieldBasedTooltip": { + "additionalProperties": false, + "properties": { + "AggregationVisibility": { + "$ref": "#/definitions/Visibility" + }, + "TooltipFields": { + "items": { + "$ref": "#/definitions/TooltipItem" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + }, + "TooltipTitleType": { + "$ref": "#/definitions/TooltipTitleType" + } + }, + "type": "object" + }, + "FieldLabelType": { + "additionalProperties": false, + "properties": { + "FieldId": { + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "Visibility": { + "$ref": "#/definitions/Visibility" + } + }, + "type": "object" + }, + "FieldSeriesItem": { + "additionalProperties": false, + "properties": { + "AxisBinding": { + "$ref": "#/definitions/AxisBinding" + }, + "FieldId": { + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "Settings": { + "$ref": "#/definitions/LineChartSeriesSettings" + } + }, + "required": [ + "AxisBinding", + "FieldId" + ], + "type": "object" + }, + "FieldSort": { + "additionalProperties": false, + "properties": { + "Direction": { + "$ref": "#/definitions/SortDirection" + }, + "FieldId": { + "maxLength": 512, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Direction", + "FieldId" + ], + "type": "object" + }, + "FieldSortOptions": { + "additionalProperties": false, + "properties": { + "ColumnSort": { + "$ref": "#/definitions/ColumnSort" + }, + "FieldSort": { + "$ref": "#/definitions/FieldSort" + } + }, + "type": "object" + }, + "FieldTooltipItem": { + "additionalProperties": false, + "properties": { + "FieldId": { + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "Label": { + "type": "string" + }, + "TooltipTarget": { + "$ref": "#/definitions/TooltipTarget" + }, + "Visibility": { + "$ref": "#/definitions/Visibility" + } + }, + "required": [ + "FieldId" + ], + "type": "object" + }, + "FilledMapAggregatedFieldWells": { + "additionalProperties": false, + "properties": { + "Geospatial": { + "items": { + "$ref": "#/definitions/DimensionField" + }, + "maxItems": 1, + "minItems": 0, + "type": "array" + }, + "Values": { + "items": { + "$ref": "#/definitions/MeasureField" + }, + "maxItems": 1, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "FilledMapConditionalFormatting": { + "additionalProperties": false, + "properties": { + "ConditionalFormattingOptions": { + "items": { + "$ref": "#/definitions/FilledMapConditionalFormattingOption" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + } + }, + "required": [ + "ConditionalFormattingOptions" + ], + "type": "object" + }, + "FilledMapConditionalFormattingOption": { + "additionalProperties": false, + "properties": { + "Shape": { + "$ref": "#/definitions/FilledMapShapeConditionalFormatting" + } + }, + "required": [ + "Shape" + ], + "type": "object" + }, + "FilledMapConfiguration": { + "additionalProperties": false, + "properties": { + "FieldWells": { + "$ref": "#/definitions/FilledMapFieldWells" + }, + "Interactions": { + "$ref": "#/definitions/VisualInteractionOptions" + }, + "Legend": { + "$ref": "#/definitions/LegendOptions" + }, + "MapStyleOptions": { + "$ref": "#/definitions/GeospatialMapStyleOptions" + }, + "SortConfiguration": { + "$ref": "#/definitions/FilledMapSortConfiguration" + }, + "Tooltip": { + "$ref": "#/definitions/TooltipOptions" + }, + "WindowOptions": { + "$ref": "#/definitions/GeospatialWindowOptions" + } + }, + "type": "object" + }, + "FilledMapFieldWells": { + "additionalProperties": false, + "properties": { + "FilledMapAggregatedFieldWells": { + "$ref": "#/definitions/FilledMapAggregatedFieldWells" + } + }, + "type": "object" + }, + "FilledMapShapeConditionalFormatting": { + "additionalProperties": false, + "properties": { + "FieldId": { + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "Format": { + "$ref": "#/definitions/ShapeConditionalFormat" + } + }, + "required": [ + "FieldId" + ], + "type": "object" + }, + "FilledMapSortConfiguration": { + "additionalProperties": false, + "properties": { + "CategorySort": { + "items": { + "$ref": "#/definitions/FieldSortOptions" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "FilledMapVisual": { + "additionalProperties": false, + "properties": { + "Actions": { + "items": { + "$ref": "#/definitions/VisualCustomAction" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + }, + "ChartConfiguration": { + "$ref": "#/definitions/FilledMapConfiguration" + }, + "ColumnHierarchies": { + "items": { + "$ref": "#/definitions/ColumnHierarchy" + }, + "maxItems": 2, + "minItems": 0, + "type": "array" + }, + "ConditionalFormatting": { + "$ref": "#/definitions/FilledMapConditionalFormatting" + }, + "Subtitle": { + "$ref": "#/definitions/VisualSubtitleLabelOptions" + }, + "Title": { + "$ref": "#/definitions/VisualTitleLabelOptions" + }, + "VisualContentAltText": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "VisualId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + } + }, + "required": [ + "VisualId" + ], + "type": "object" + }, + "Filter": { + "additionalProperties": false, + "properties": { + "CategoryFilter": { + "$ref": "#/definitions/CategoryFilter" + }, + "NestedFilter": { + "$ref": "#/definitions/NestedFilter" + }, + "NumericEqualityFilter": { + "$ref": "#/definitions/NumericEqualityFilter" + }, + "NumericRangeFilter": { + "$ref": "#/definitions/NumericRangeFilter" + }, + "RelativeDatesFilter": { + "$ref": "#/definitions/RelativeDatesFilter" + }, + "TimeEqualityFilter": { + "$ref": "#/definitions/TimeEqualityFilter" + }, + "TimeRangeFilter": { + "$ref": "#/definitions/TimeRangeFilter" + }, + "TopBottomFilter": { + "$ref": "#/definitions/TopBottomFilter" + } + }, + "type": "object" + }, + "FilterControl": { + "additionalProperties": false, + "properties": { + "CrossSheet": { + "$ref": "#/definitions/FilterCrossSheetControl" + }, + "DateTimePicker": { + "$ref": "#/definitions/FilterDateTimePickerControl" + }, + "Dropdown": { + "$ref": "#/definitions/FilterDropDownControl" + }, + "List": { + "$ref": "#/definitions/FilterListControl" + }, + "RelativeDateTime": { + "$ref": "#/definitions/FilterRelativeDateTimeControl" + }, + "Slider": { + "$ref": "#/definitions/FilterSliderControl" + }, + "TextArea": { + "$ref": "#/definitions/FilterTextAreaControl" + }, + "TextField": { + "$ref": "#/definitions/FilterTextFieldControl" + } + }, + "type": "object" + }, + "FilterCrossSheetControl": { + "additionalProperties": false, + "properties": { + "CascadingControlConfiguration": { + "$ref": "#/definitions/CascadingControlConfiguration" + }, + "FilterControlId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "SourceFilterId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + } + }, + "required": [ + "FilterControlId", + "SourceFilterId" + ], + "type": "object" + }, + "FilterDateTimePickerControl": { + "additionalProperties": false, + "properties": { + "CommitMode": { + "$ref": "#/definitions/CommitMode" + }, + "DisplayOptions": { + "$ref": "#/definitions/DateTimePickerControlDisplayOptions" + }, + "FilterControlId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "SourceFilterId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "Title": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "Type": { + "$ref": "#/definitions/SheetControlDateTimePickerType" + } + }, + "required": [ + "FilterControlId", + "SourceFilterId", + "Title" + ], + "type": "object" + }, + "FilterDropDownControl": { + "additionalProperties": false, + "properties": { + "CascadingControlConfiguration": { + "$ref": "#/definitions/CascadingControlConfiguration" + }, + "CommitMode": { + "$ref": "#/definitions/CommitMode" + }, + "DisplayOptions": { + "$ref": "#/definitions/DropDownControlDisplayOptions" + }, + "FilterControlId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "SelectableValues": { + "$ref": "#/definitions/FilterSelectableValues" + }, + "SourceFilterId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "Title": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "Type": { + "$ref": "#/definitions/SheetControlListType" + } + }, + "required": [ + "FilterControlId", + "SourceFilterId", + "Title" + ], + "type": "object" + }, + "FilterGroup": { + "additionalProperties": false, + "properties": { + "CrossDataset": { + "$ref": "#/definitions/CrossDatasetTypes" + }, + "FilterGroupId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "Filters": { + "items": { + "$ref": "#/definitions/Filter" + }, + "maxItems": 20, + "minItems": 0, + "type": "array" + }, + "ScopeConfiguration": { + "$ref": "#/definitions/FilterScopeConfiguration" + }, + "Status": { + "$ref": "#/definitions/WidgetStatus" + } + }, + "required": [ + "CrossDataset", + "FilterGroupId", + "Filters", + "ScopeConfiguration" + ], + "type": "object" + }, + "FilterListConfiguration": { + "additionalProperties": false, + "properties": { + "CategoryValues": { + "items": { + "maxLength": 512, + "minLength": 0, + "type": "string" + }, + "maxItems": 100000, + "minItems": 0, + "type": "array" + }, + "MatchOperator": { + "$ref": "#/definitions/CategoryFilterMatchOperator" + }, + "NullOption": { + "$ref": "#/definitions/FilterNullOption" + }, + "SelectAllOptions": { + "$ref": "#/definitions/CategoryFilterSelectAllOptions" + } + }, + "required": [ + "MatchOperator" + ], + "type": "object" + }, + "FilterListControl": { + "additionalProperties": false, + "properties": { + "CascadingControlConfiguration": { + "$ref": "#/definitions/CascadingControlConfiguration" + }, + "DisplayOptions": { + "$ref": "#/definitions/ListControlDisplayOptions" + }, + "FilterControlId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "SelectableValues": { + "$ref": "#/definitions/FilterSelectableValues" + }, + "SourceFilterId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "Title": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "Type": { + "$ref": "#/definitions/SheetControlListType" + } + }, + "required": [ + "FilterControlId", + "SourceFilterId", + "Title" + ], + "type": "object" + }, + "FilterNullOption": { + "enum": [ + "ALL_VALUES", + "NULLS_ONLY", + "NON_NULLS_ONLY" + ], + "type": "string" + }, + "FilterOperationSelectedFieldsConfiguration": { + "additionalProperties": false, + "properties": { + "SelectedColumns": { + "description": "The selected columns of a dataset.
", + "items": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + }, + "SelectedFieldOptions": { + "$ref": "#/definitions/SelectedFieldOptions" + }, + "SelectedFields": { + "items": { + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "maxItems": 20, + "minItems": 1, + "type": "array" + } + }, + "type": "object" + }, + "FilterOperationTargetVisualsConfiguration": { + "additionalProperties": false, + "properties": { + "SameSheetTargetVisualConfiguration": { + "$ref": "#/definitions/SameSheetTargetVisualConfiguration" + } + }, + "type": "object" + }, + "FilterRelativeDateTimeControl": { + "additionalProperties": false, + "properties": { + "CommitMode": { + "$ref": "#/definitions/CommitMode" + }, + "DisplayOptions": { + "$ref": "#/definitions/RelativeDateTimeControlDisplayOptions" + }, + "FilterControlId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "SourceFilterId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "Title": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "FilterControlId", + "SourceFilterId", + "Title" + ], + "type": "object" + }, + "FilterScopeConfiguration": { + "additionalProperties": false, + "properties": { + "AllSheets": { + "$ref": "#/definitions/AllSheetsFilterScopeConfiguration" + }, + "SelectedSheets": { + "$ref": "#/definitions/SelectedSheetsFilterScopeConfiguration" + } + }, + "type": "object" + }, + "FilterSelectableValues": { + "additionalProperties": false, + "properties": { + "Values": { + "items": { + "type": "string" + }, + "maxItems": 50000, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "FilterSliderControl": { + "additionalProperties": false, + "properties": { + "DisplayOptions": { + "$ref": "#/definitions/SliderControlDisplayOptions" + }, + "FilterControlId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "MaximumValue": { + "default": 0, + "type": "number" + }, + "MinimumValue": { + "default": 0, + "type": "number" + }, + "SourceFilterId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "StepSize": { + "default": 0, + "type": "number" + }, + "Title": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "Type": { + "$ref": "#/definitions/SheetControlSliderType" + } + }, + "required": [ + "FilterControlId", + "MaximumValue", + "MinimumValue", + "SourceFilterId", + "StepSize", + "Title" + ], + "type": "object" + }, + "FilterTextAreaControl": { + "additionalProperties": false, + "properties": { + "Delimiter": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "DisplayOptions": { + "$ref": "#/definitions/TextAreaControlDisplayOptions" + }, + "FilterControlId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "SourceFilterId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "Title": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "FilterControlId", + "SourceFilterId", + "Title" + ], + "type": "object" + }, + "FilterTextFieldControl": { + "additionalProperties": false, + "properties": { + "DisplayOptions": { + "$ref": "#/definitions/TextFieldControlDisplayOptions" + }, + "FilterControlId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "SourceFilterId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "Title": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "FilterControlId", + "SourceFilterId", + "Title" + ], + "type": "object" + }, + "FilterVisualScope": { + "enum": [ + "ALL_VISUALS", + "SELECTED_VISUALS" + ], + "type": "string" + }, + "FontConfiguration": { + "additionalProperties": false, + "properties": { + "FontColor": { + "pattern": "^#[A-F0-9]{6}$", + "type": "string" + }, + "FontDecoration": { + "$ref": "#/definitions/FontDecoration" + }, + "FontFamily": { + "type": "string" + }, + "FontSize": { + "$ref": "#/definitions/FontSize" + }, + "FontStyle": { + "$ref": "#/definitions/FontStyle" + }, + "FontWeight": { + "$ref": "#/definitions/FontWeight" + } + }, + "type": "object" + }, + "FontDecoration": { + "enum": [ + "UNDERLINE", + "NONE" + ], + "type": "string" + }, + "FontSize": { + "additionalProperties": false, + "properties": { + "Absolute": { + "description": "String based length that is composed of value and unit in px", + "type": "string" + }, + "Relative": { + "$ref": "#/definitions/RelativeFontSize" + } + }, + "type": "object" + }, + "FontStyle": { + "enum": [ + "NORMAL", + "ITALIC" + ], + "type": "string" + }, + "FontWeight": { + "additionalProperties": false, + "properties": { + "Name": { + "$ref": "#/definitions/FontWeightName" + } + }, + "type": "object" + }, + "FontWeightName": { + "enum": [ + "NORMAL", + "BOLD" + ], + "type": "string" + }, + "ForecastComputation": { + "additionalProperties": false, + "properties": { + "ComputationId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "CustomSeasonalityValue": { + "default": null, + "maximum": 180, + "minimum": 1, + "type": "number" + }, + "LowerBoundary": { + "default": null, + "type": "number" + }, + "Name": { + "type": "string" + }, + "PeriodsBackward": { + "maximum": 1000, + "minimum": 0, + "type": "number" + }, + "PeriodsForward": { + "maximum": 1000, + "minimum": 1, + "type": "number" + }, + "PredictionInterval": { + "maximum": 95, + "minimum": 50, + "type": "number" + }, + "Seasonality": { + "$ref": "#/definitions/ForecastComputationSeasonality" + }, + "Time": { + "$ref": "#/definitions/DimensionField" + }, + "UpperBoundary": { + "default": null, + "type": "number" + }, + "Value": { + "$ref": "#/definitions/MeasureField" + } + }, + "required": [ + "ComputationId" + ], + "type": "object" + }, + "ForecastComputationSeasonality": { + "enum": [ + "AUTOMATIC", + "CUSTOM" + ], + "type": "string" + }, + "ForecastConfiguration": { + "additionalProperties": false, + "properties": { + "ForecastProperties": { + "$ref": "#/definitions/TimeBasedForecastProperties" + }, + "Scenario": { + "$ref": "#/definitions/ForecastScenario" + } + }, + "type": "object" + }, + "ForecastScenario": { + "additionalProperties": false, + "properties": { + "WhatIfPointScenario": { + "$ref": "#/definitions/WhatIfPointScenario" + }, + "WhatIfRangeScenario": { + "$ref": "#/definitions/WhatIfRangeScenario" + } + }, + "type": "object" + }, + "FormatConfiguration": { + "additionalProperties": false, + "properties": { + "DateTimeFormatConfiguration": { + "$ref": "#/definitions/DateTimeFormatConfiguration" + }, + "NumberFormatConfiguration": { + "$ref": "#/definitions/NumberFormatConfiguration" + }, + "StringFormatConfiguration": { + "$ref": "#/definitions/StringFormatConfiguration" + } + }, + "type": "object" + }, + "FreeFormLayoutCanvasSizeOptions": { + "additionalProperties": false, + "properties": { + "ScreenCanvasSizeOptions": { + "$ref": "#/definitions/FreeFormLayoutScreenCanvasSizeOptions" + } + }, + "type": "object" + }, + "FreeFormLayoutConfiguration": { + "additionalProperties": false, + "properties": { + "CanvasSizeOptions": { + "$ref": "#/definitions/FreeFormLayoutCanvasSizeOptions" + }, + "Elements": { + "items": { + "$ref": "#/definitions/FreeFormLayoutElement" + }, + "maxItems": 430, + "minItems": 0, + "type": "array" + } + }, + "required": [ + "Elements" + ], + "type": "object" + }, + "FreeFormLayoutElement": { + "additionalProperties": false, + "properties": { + "BackgroundStyle": { + "$ref": "#/definitions/FreeFormLayoutElementBackgroundStyle" + }, + "BorderStyle": { + "$ref": "#/definitions/FreeFormLayoutElementBorderStyle" + }, + "ElementId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "ElementType": { + "$ref": "#/definitions/LayoutElementType" + }, + "Height": { + "description": "String based length that is composed of value and unit in px", + "type": "string" + }, + "LoadingAnimation": { + "$ref": "#/definitions/LoadingAnimation" + }, + "RenderingRules": { + "items": { + "$ref": "#/definitions/SheetElementRenderingRule" + }, + "maxItems": 10000, + "minItems": 0, + "type": "array" + }, + "SelectedBorderStyle": { + "$ref": "#/definitions/FreeFormLayoutElementBorderStyle" + }, + "Visibility": { + "$ref": "#/definitions/Visibility" + }, + "Width": { + "description": "String based length that is composed of value and unit in px", + "type": "string" + }, + "XAxisLocation": { + "description": "String based length that is composed of value and unit in px", + "type": "string" + }, + "YAxisLocation": { + "description": "String based length that is composed of value and unit in px with Integer.MAX_VALUE as maximum value", + "type": "string" + } + }, + "required": [ + "ElementId", + "ElementType", + "Height", + "Width", + "XAxisLocation", + "YAxisLocation" + ], + "type": "object" + }, + "FreeFormLayoutElementBackgroundStyle": { + "additionalProperties": false, + "properties": { + "Color": { + "pattern": "^#[A-F0-9]{6}(?:[A-F0-9]{2})?$", + "type": "string" + }, + "Visibility": { + "$ref": "#/definitions/Visibility" + } + }, + "type": "object" + }, + "FreeFormLayoutElementBorderStyle": { + "additionalProperties": false, + "properties": { + "Color": { + "pattern": "^#[A-F0-9]{6}(?:[A-F0-9]{2})?$", + "type": "string" + }, + "Visibility": { + "$ref": "#/definitions/Visibility" + } + }, + "type": "object" + }, + "FreeFormLayoutScreenCanvasSizeOptions": { + "additionalProperties": false, + "properties": { + "OptimizedViewPortWidth": { + "description": "String based length that is composed of value and unit in px", + "type": "string" + } + }, + "required": [ + "OptimizedViewPortWidth" + ], + "type": "object" + }, + "FreeFormSectionLayoutConfiguration": { + "additionalProperties": false, + "properties": { + "Elements": { + "items": { + "$ref": "#/definitions/FreeFormLayoutElement" + }, + "maxItems": 430, + "minItems": 0, + "type": "array" + } + }, + "required": [ + "Elements" + ], + "type": "object" + }, + "FunnelChartAggregatedFieldWells": { + "additionalProperties": false, + "properties": { + "Category": { + "items": { + "$ref": "#/definitions/DimensionField" + }, + "maxItems": 1, + "minItems": 0, + "type": "array" + }, + "Values": { + "items": { + "$ref": "#/definitions/MeasureField" + }, + "maxItems": 1, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "FunnelChartConfiguration": { + "additionalProperties": false, + "properties": { + "CategoryLabelOptions": { + "$ref": "#/definitions/ChartAxisLabelOptions" + }, + "DataLabelOptions": { + "$ref": "#/definitions/FunnelChartDataLabelOptions" + }, + "FieldWells": { + "$ref": "#/definitions/FunnelChartFieldWells" + }, + "Interactions": { + "$ref": "#/definitions/VisualInteractionOptions" + }, + "SortConfiguration": { + "$ref": "#/definitions/FunnelChartSortConfiguration" + }, + "Tooltip": { + "$ref": "#/definitions/TooltipOptions" + }, + "ValueLabelOptions": { + "$ref": "#/definitions/ChartAxisLabelOptions" + }, + "VisualPalette": { + "$ref": "#/definitions/VisualPalette" + } + }, + "type": "object" + }, + "FunnelChartDataLabelOptions": { + "additionalProperties": false, + "properties": { + "CategoryLabelVisibility": { + "$ref": "#/definitions/Visibility" + }, + "LabelColor": { + "pattern": "^#[A-F0-9]{6}$", + "type": "string" + }, + "LabelFontConfiguration": { + "$ref": "#/definitions/FontConfiguration" + }, + "MeasureDataLabelStyle": { + "$ref": "#/definitions/FunnelChartMeasureDataLabelStyle" + }, + "MeasureLabelVisibility": { + "$ref": "#/definitions/Visibility" + }, + "Position": { + "$ref": "#/definitions/DataLabelPosition" + }, + "Visibility": { + "$ref": "#/definitions/Visibility" + } + }, + "type": "object" + }, + "FunnelChartFieldWells": { + "additionalProperties": false, + "properties": { + "FunnelChartAggregatedFieldWells": { + "$ref": "#/definitions/FunnelChartAggregatedFieldWells" + } + }, + "type": "object" + }, + "FunnelChartMeasureDataLabelStyle": { + "enum": [ + "VALUE_ONLY", + "PERCENTAGE_BY_FIRST_STAGE", + "PERCENTAGE_BY_PREVIOUS_STAGE", + "VALUE_AND_PERCENTAGE_BY_FIRST_STAGE", + "VALUE_AND_PERCENTAGE_BY_PREVIOUS_STAGE" + ], + "type": "string" + }, + "FunnelChartSortConfiguration": { + "additionalProperties": false, + "properties": { + "CategoryItemsLimit": { + "$ref": "#/definitions/ItemsLimitConfiguration" + }, + "CategorySort": { + "items": { + "$ref": "#/definitions/FieldSortOptions" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "FunnelChartVisual": { + "additionalProperties": false, + "properties": { + "Actions": { + "items": { + "$ref": "#/definitions/VisualCustomAction" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + }, + "ChartConfiguration": { + "$ref": "#/definitions/FunnelChartConfiguration" + }, + "ColumnHierarchies": { + "items": { + "$ref": "#/definitions/ColumnHierarchy" + }, + "maxItems": 2, + "minItems": 0, + "type": "array" + }, + "Subtitle": { + "$ref": "#/definitions/VisualSubtitleLabelOptions" + }, + "Title": { + "$ref": "#/definitions/VisualTitleLabelOptions" + }, + "VisualContentAltText": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "VisualId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + } + }, + "required": [ + "VisualId" + ], + "type": "object" + }, + "GaugeChartArcConditionalFormatting": { + "additionalProperties": false, + "properties": { + "ForegroundColor": { + "$ref": "#/definitions/ConditionalFormattingColor" + } + }, + "type": "object" + }, + "GaugeChartColorConfiguration": { + "additionalProperties": false, + "properties": { + "BackgroundColor": { + "pattern": "^#[A-F0-9]{6}$", + "type": "string" + }, + "ForegroundColor": { + "pattern": "^#[A-F0-9]{6}$", + "type": "string" + } + }, + "type": "object" + }, + "GaugeChartConditionalFormatting": { + "additionalProperties": false, + "properties": { + "ConditionalFormattingOptions": { + "items": { + "$ref": "#/definitions/GaugeChartConditionalFormattingOption" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "GaugeChartConditionalFormattingOption": { + "additionalProperties": false, + "properties": { + "Arc": { + "$ref": "#/definitions/GaugeChartArcConditionalFormatting" + }, + "PrimaryValue": { + "$ref": "#/definitions/GaugeChartPrimaryValueConditionalFormatting" + } + }, + "type": "object" + }, + "GaugeChartConfiguration": { + "additionalProperties": false, + "properties": { + "ColorConfiguration": { + "$ref": "#/definitions/GaugeChartColorConfiguration" + }, + "DataLabels": { + "$ref": "#/definitions/DataLabelOptions" + }, + "FieldWells": { + "$ref": "#/definitions/GaugeChartFieldWells" + }, + "GaugeChartOptions": { + "$ref": "#/definitions/GaugeChartOptions" + }, + "Interactions": { + "$ref": "#/definitions/VisualInteractionOptions" + }, + "TooltipOptions": { + "$ref": "#/definitions/TooltipOptions" + }, + "VisualPalette": { + "$ref": "#/definitions/VisualPalette" + } + }, + "type": "object" + }, + "GaugeChartFieldWells": { + "additionalProperties": false, + "properties": { + "TargetValues": { + "items": { + "$ref": "#/definitions/MeasureField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "Values": { + "items": { + "$ref": "#/definitions/MeasureField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "GaugeChartOptions": { + "additionalProperties": false, + "properties": { + "Arc": { + "$ref": "#/definitions/ArcConfiguration" + }, + "ArcAxis": { + "$ref": "#/definitions/ArcAxisConfiguration" + }, + "Comparison": { + "$ref": "#/definitions/ComparisonConfiguration" + }, + "PrimaryValueDisplayType": { + "$ref": "#/definitions/PrimaryValueDisplayType" + }, + "PrimaryValueFontConfiguration": { + "$ref": "#/definitions/FontConfiguration" + } + }, + "type": "object" + }, + "GaugeChartPrimaryValueConditionalFormatting": { + "additionalProperties": false, + "properties": { + "Icon": { + "$ref": "#/definitions/ConditionalFormattingIcon" + }, + "TextColor": { + "$ref": "#/definitions/ConditionalFormattingColor" + } + }, + "type": "object" + }, + "GaugeChartVisual": { + "additionalProperties": false, + "properties": { + "Actions": { + "items": { + "$ref": "#/definitions/VisualCustomAction" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + }, + "ChartConfiguration": { + "$ref": "#/definitions/GaugeChartConfiguration" + }, + "ConditionalFormatting": { + "$ref": "#/definitions/GaugeChartConditionalFormatting" + }, + "Subtitle": { + "$ref": "#/definitions/VisualSubtitleLabelOptions" + }, + "Title": { + "$ref": "#/definitions/VisualTitleLabelOptions" + }, + "VisualContentAltText": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "VisualId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + } + }, + "required": [ + "VisualId" + ], + "type": "object" + }, + "GeospatialCategoricalColor": { + "additionalProperties": false, + "properties": { + "CategoryDataColors": { + "items": { + "$ref": "#/definitions/GeospatialCategoricalDataColor" + }, + "type": "array" + }, + "DefaultOpacity": { + "maximum": 1, + "minimum": 0, + "type": "number" + }, + "NullDataSettings": { + "$ref": "#/definitions/GeospatialNullDataSettings" + }, + "NullDataVisibility": { + "$ref": "#/definitions/Visibility" + } + }, + "required": [ + "CategoryDataColors" + ], + "type": "object" + }, + "GeospatialCategoricalDataColor": { + "additionalProperties": false, + "properties": { + "Color": { + "pattern": "^#[A-F0-9]{6}(?:[A-F0-9]{2})?$", + "type": "string" + }, + "DataValue": { + "type": "string" + } + }, + "required": [ + "Color", + "DataValue" + ], + "type": "object" + }, + "GeospatialCircleRadius": { + "additionalProperties": false, + "properties": { + "Radius": { + "minimum": 0, + "type": "number" + } + }, + "type": "object" + }, + "GeospatialCircleSymbolStyle": { + "additionalProperties": false, + "properties": { + "CircleRadius": { + "$ref": "#/definitions/GeospatialCircleRadius" + }, + "FillColor": { + "$ref": "#/definitions/GeospatialColor" + }, + "StrokeColor": { + "$ref": "#/definitions/GeospatialColor" + }, + "StrokeWidth": { + "$ref": "#/definitions/GeospatialLineWidth" + } + }, + "type": "object" + }, + "GeospatialColor": { + "additionalProperties": false, + "properties": { + "Categorical": { + "$ref": "#/definitions/GeospatialCategoricalColor" + }, + "Gradient": { + "$ref": "#/definitions/GeospatialGradientColor" + }, + "Solid": { + "$ref": "#/definitions/GeospatialSolidColor" + } + }, + "type": "object" + }, + "GeospatialColorState": { + "description": "Defines view state of the color", + "enum": [ + "ENABLED", + "DISABLED" + ], + "type": "string" + }, + "GeospatialCoordinateBounds": { + "additionalProperties": false, + "properties": { + "East": { + "maximum": 1800, + "minimum": -1800, + "type": "number" + }, + "North": { + "maximum": 90, + "minimum": -90, + "type": "number" + }, + "South": { + "maximum": 90, + "minimum": -90, + "type": "number" + }, + "West": { + "maximum": 1800, + "minimum": -1800, + "type": "number" + } + }, + "required": [ + "East", + "North", + "South", + "West" + ], + "type": "object" + }, + "GeospatialDataSourceItem": { + "additionalProperties": false, + "properties": { + "StaticFileDataSource": { + "$ref": "#/definitions/GeospatialStaticFileSource" + } + }, + "type": "object" + }, + "GeospatialGradientColor": { + "additionalProperties": false, + "properties": { + "DefaultOpacity": { + "maximum": 1, + "minimum": 0, + "type": "number" + }, + "NullDataSettings": { + "$ref": "#/definitions/GeospatialNullDataSettings" + }, + "NullDataVisibility": { + "$ref": "#/definitions/Visibility" + }, + "StepColors": { + "items": { + "$ref": "#/definitions/GeospatialGradientStepColor" + }, + "maxItems": 3, + "minItems": 2, + "type": "array" + } + }, + "required": [ + "StepColors" + ], + "type": "object" + }, + "GeospatialGradientStepColor": { + "additionalProperties": false, + "properties": { + "Color": { + "pattern": "^#[A-F0-9]{6}(?:[A-F0-9]{2})?$", + "type": "string" + }, + "DataValue": { + "default": 0, + "type": "number" + } + }, + "required": [ + "Color", + "DataValue" + ], + "type": "object" + }, + "GeospatialHeatmapColorScale": { + "additionalProperties": false, + "properties": { + "Colors": { + "items": { + "$ref": "#/definitions/GeospatialHeatmapDataColor" + }, + "maxItems": 2, + "minItems": 2, + "type": "array" + } + }, + "type": "object" + }, + "GeospatialHeatmapConfiguration": { + "additionalProperties": false, + "properties": { + "HeatmapColor": { + "$ref": "#/definitions/GeospatialHeatmapColorScale" + } + }, + "type": "object" + }, + "GeospatialHeatmapDataColor": { + "additionalProperties": false, + "properties": { + "Color": { + "pattern": "^#[A-F0-9]{6}$", + "type": "string" + } + }, + "required": [ + "Color" + ], + "type": "object" + }, + "GeospatialLayerColorField": { + "additionalProperties": false, + "properties": { + "ColorDimensionsFields": { + "items": { + "$ref": "#/definitions/DimensionField" + }, + "maxItems": 1, + "minItems": 0, + "type": "array" + }, + "ColorValuesFields": { + "items": { + "$ref": "#/definitions/MeasureField" + }, + "maxItems": 1, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "GeospatialLayerDefinition": { + "additionalProperties": false, + "properties": { + "LineLayer": { + "$ref": "#/definitions/GeospatialLineLayer" + }, + "PointLayer": { + "$ref": "#/definitions/GeospatialPointLayer" + }, + "PolygonLayer": { + "$ref": "#/definitions/GeospatialPolygonLayer" + } + }, + "type": "object" + }, + "GeospatialLayerItem": { + "additionalProperties": false, + "properties": { + "Actions": { + "items": { + "$ref": "#/definitions/LayerCustomAction" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + }, + "DataSource": { + "$ref": "#/definitions/GeospatialDataSourceItem" + }, + "JoinDefinition": { + "$ref": "#/definitions/GeospatialLayerJoinDefinition" + }, + "Label": { + "type": "string" + }, + "LayerDefinition": { + "$ref": "#/definitions/GeospatialLayerDefinition" + }, + "LayerId": { + "type": "string" + }, + "LayerType": { + "$ref": "#/definitions/GeospatialLayerType" + }, + "Tooltip": { + "$ref": "#/definitions/TooltipOptions" + }, + "Visibility": { + "$ref": "#/definitions/Visibility" + } + }, + "required": [ + "LayerId" + ], + "type": "object" + }, + "GeospatialLayerJoinDefinition": { + "additionalProperties": false, + "properties": { + "ColorField": { + "$ref": "#/definitions/GeospatialLayerColorField" + }, + "DatasetKeyField": { + "$ref": "#/definitions/UnaggregatedField" + }, + "ShapeKeyField": { + "type": "string" + } + }, + "type": "object" + }, + "GeospatialLayerMapConfiguration": { + "additionalProperties": false, + "properties": { + "Interactions": { + "$ref": "#/definitions/VisualInteractionOptions" + }, + "Legend": { + "$ref": "#/definitions/LegendOptions" + }, + "MapLayers": { + "items": { + "$ref": "#/definitions/GeospatialLayerItem" + }, + "type": "array" + }, + "MapState": { + "$ref": "#/definitions/GeospatialMapState" + }, + "MapStyle": { + "$ref": "#/definitions/GeospatialMapStyle" + } + }, + "type": "object" + }, + "GeospatialLayerType": { + "enum": [ + "POINT", + "LINE", + "POLYGON" + ], + "type": "string" + }, + "GeospatialLineLayer": { + "additionalProperties": false, + "properties": { + "Style": { + "$ref": "#/definitions/GeospatialLineStyle" + } + }, + "required": [ + "Style" + ], + "type": "object" + }, + "GeospatialLineStyle": { + "additionalProperties": false, + "properties": { + "LineSymbolStyle": { + "$ref": "#/definitions/GeospatialLineSymbolStyle" + } + }, + "type": "object" + }, + "GeospatialLineSymbolStyle": { + "additionalProperties": false, + "properties": { + "FillColor": { + "$ref": "#/definitions/GeospatialColor" + }, + "LineWidth": { + "$ref": "#/definitions/GeospatialLineWidth" + } + }, + "type": "object" + }, + "GeospatialLineWidth": { + "additionalProperties": false, + "properties": { + "LineWidth": { + "minimum": 0, + "type": "number" + } + }, + "type": "object" + }, + "GeospatialMapAggregatedFieldWells": { + "additionalProperties": false, + "properties": { + "Colors": { + "items": { + "$ref": "#/definitions/DimensionField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "Geospatial": { + "items": { + "$ref": "#/definitions/DimensionField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "Values": { + "items": { + "$ref": "#/definitions/MeasureField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "GeospatialMapConfiguration": { + "additionalProperties": false, + "properties": { + "FieldWells": { + "$ref": "#/definitions/GeospatialMapFieldWells" + }, + "Interactions": { + "$ref": "#/definitions/VisualInteractionOptions" + }, + "Legend": { + "$ref": "#/definitions/LegendOptions" + }, + "MapStyleOptions": { + "$ref": "#/definitions/GeospatialMapStyleOptions" + }, + "PointStyleOptions": { + "$ref": "#/definitions/GeospatialPointStyleOptions" + }, + "Tooltip": { + "$ref": "#/definitions/TooltipOptions" + }, + "VisualPalette": { + "$ref": "#/definitions/VisualPalette" + }, + "WindowOptions": { + "$ref": "#/definitions/GeospatialWindowOptions" + } + }, + "type": "object" + }, + "GeospatialMapFieldWells": { + "additionalProperties": false, + "properties": { + "GeospatialMapAggregatedFieldWells": { + "$ref": "#/definitions/GeospatialMapAggregatedFieldWells" + } + }, + "type": "object" + }, + "GeospatialMapNavigation": { + "enum": [ + "ENABLED", + "DISABLED" + ], + "type": "string" + }, + "GeospatialMapState": { + "additionalProperties": false, + "properties": { + "Bounds": { + "$ref": "#/definitions/GeospatialCoordinateBounds" + }, + "MapNavigation": { + "$ref": "#/definitions/GeospatialMapNavigation" + } + }, + "type": "object" + }, + "GeospatialMapStyle": { + "additionalProperties": false, + "properties": { + "BackgroundColor": { + "pattern": "^#[A-F0-9]{6}(?:[A-F0-9]{2})?$", + "type": "string" + }, + "BaseMapStyle": { + "$ref": "#/definitions/BaseMapStyleType" + }, + "BaseMapVisibility": { + "$ref": "#/definitions/Visibility" + } + }, + "type": "object" + }, + "GeospatialMapStyleOptions": { + "additionalProperties": false, + "properties": { + "BaseMapStyle": { + "$ref": "#/definitions/BaseMapStyleType" + } + }, + "type": "object" + }, + "GeospatialMapVisual": { + "additionalProperties": false, + "properties": { + "Actions": { + "items": { + "$ref": "#/definitions/VisualCustomAction" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + }, + "ChartConfiguration": { + "$ref": "#/definitions/GeospatialMapConfiguration" + }, + "ColumnHierarchies": { + "items": { + "$ref": "#/definitions/ColumnHierarchy" + }, + "maxItems": 2, + "minItems": 0, + "type": "array" + }, + "Subtitle": { + "$ref": "#/definitions/VisualSubtitleLabelOptions" + }, + "Title": { + "$ref": "#/definitions/VisualTitleLabelOptions" + }, + "VisualContentAltText": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "VisualId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + } + }, + "required": [ + "VisualId" + ], + "type": "object" + }, + "GeospatialNullDataSettings": { + "additionalProperties": false, + "properties": { + "SymbolStyle": { + "$ref": "#/definitions/GeospatialNullSymbolStyle" + } + }, + "required": [ + "SymbolStyle" + ], + "type": "object" + }, + "GeospatialNullSymbolStyle": { + "additionalProperties": false, + "properties": { + "FillColor": { + "pattern": "^#[A-F0-9]{6}(?:[A-F0-9]{2})?$", + "type": "string" + }, + "StrokeColor": { + "pattern": "^#[A-F0-9]{6}(?:[A-F0-9]{2})?$", + "type": "string" + }, + "StrokeWidth": { + "minimum": 0, + "type": "number" + } + }, + "type": "object" + }, + "GeospatialPointLayer": { + "additionalProperties": false, + "properties": { + "Style": { + "$ref": "#/definitions/GeospatialPointStyle" + } + }, + "required": [ + "Style" + ], + "type": "object" + }, + "GeospatialPointStyle": { + "additionalProperties": false, + "properties": { + "CircleSymbolStyle": { + "$ref": "#/definitions/GeospatialCircleSymbolStyle" + } + }, + "type": "object" + }, + "GeospatialPointStyleOptions": { + "additionalProperties": false, + "properties": { + "ClusterMarkerConfiguration": { + "$ref": "#/definitions/ClusterMarkerConfiguration" + }, + "HeatmapConfiguration": { + "$ref": "#/definitions/GeospatialHeatmapConfiguration" + }, + "SelectedPointStyle": { + "$ref": "#/definitions/GeospatialSelectedPointStyle" + } + }, + "type": "object" + }, + "GeospatialPolygonLayer": { + "additionalProperties": false, + "properties": { + "Style": { + "$ref": "#/definitions/GeospatialPolygonStyle" + } + }, + "required": [ + "Style" + ], + "type": "object" + }, + "GeospatialPolygonStyle": { + "additionalProperties": false, + "properties": { + "PolygonSymbolStyle": { + "$ref": "#/definitions/GeospatialPolygonSymbolStyle" + } + }, + "type": "object" + }, + "GeospatialPolygonSymbolStyle": { + "additionalProperties": false, + "properties": { + "FillColor": { + "$ref": "#/definitions/GeospatialColor" + }, + "StrokeColor": { + "$ref": "#/definitions/GeospatialColor" + }, + "StrokeWidth": { + "$ref": "#/definitions/GeospatialLineWidth" + } + }, + "type": "object" + }, + "GeospatialSelectedPointStyle": { + "enum": [ + "POINT", + "CLUSTER", + "HEATMAP" + ], + "type": "string" + }, + "GeospatialSolidColor": { + "additionalProperties": false, + "description": "Describes the properties for a solid color", + "properties": { + "Color": { + "pattern": "^#[A-F0-9]{6}(?:[A-F0-9]{2})?$", + "type": "string" + }, + "State": { + "$ref": "#/definitions/GeospatialColorState" + } + }, + "required": [ + "Color" + ], + "type": "object" + }, + "GeospatialStaticFileSource": { + "additionalProperties": false, + "properties": { + "StaticFileId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + } + }, + "required": [ + "StaticFileId" + ], + "type": "object" + }, + "GeospatialWindowOptions": { + "additionalProperties": false, + "properties": { + "Bounds": { + "$ref": "#/definitions/GeospatialCoordinateBounds" + }, + "MapZoomMode": { + "$ref": "#/definitions/MapZoomMode" + } + }, + "type": "object" + }, + "GlobalTableBorderOptions": { + "additionalProperties": false, + "properties": { + "SideSpecificBorder": { + "$ref": "#/definitions/TableSideBorderOptions" + }, + "UniformBorder": { + "$ref": "#/definitions/TableBorderOptions" + } + }, + "type": "object" + }, + "GradientColor": { + "additionalProperties": false, + "properties": { + "Stops": { + "items": { + "$ref": "#/definitions/GradientStop" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "GradientStop": { + "additionalProperties": false, + "properties": { + "Color": { + "pattern": "^#[A-F0-9]{6}$", + "type": "string" + }, + "DataValue": { + "default": null, + "type": "number" + }, + "GradientOffset": { + "default": 0, + "type": "number" + } + }, + "required": [ + "GradientOffset" + ], + "type": "object" + }, + "GridLayoutCanvasSizeOptions": { + "additionalProperties": false, + "properties": { + "ScreenCanvasSizeOptions": { + "$ref": "#/definitions/GridLayoutScreenCanvasSizeOptions" + } + }, + "type": "object" + }, + "GridLayoutConfiguration": { + "additionalProperties": false, + "properties": { + "CanvasSizeOptions": { + "$ref": "#/definitions/GridLayoutCanvasSizeOptions" + }, + "Elements": { + "items": { + "$ref": "#/definitions/GridLayoutElement" + }, + "maxItems": 430, + "minItems": 0, + "type": "array" + } + }, + "required": [ + "Elements" + ], + "type": "object" + }, + "GridLayoutElement": { + "additionalProperties": false, + "properties": { + "ColumnIndex": { + "maximum": 35, + "minimum": 0, + "type": "number" + }, + "ColumnSpan": { + "maximum": 36, + "minimum": 1, + "type": "number" + }, + "ElementId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "ElementType": { + "$ref": "#/definitions/LayoutElementType" + }, + "RowIndex": { + "maximum": 9009, + "minimum": 0, + "type": "number" + }, + "RowSpan": { + "maximum": 21, + "minimum": 1, + "type": "number" + } + }, + "required": [ + "ColumnSpan", + "ElementId", + "ElementType", + "RowSpan" + ], + "type": "object" + }, + "GridLayoutScreenCanvasSizeOptions": { + "additionalProperties": false, + "properties": { + "OptimizedViewPortWidth": { + "description": "String based length that is composed of value and unit in px", + "type": "string" + }, + "ResizeOption": { + "$ref": "#/definitions/ResizeOption" + } + }, + "required": [ + "ResizeOption" + ], + "type": "object" + }, + "GrowthRateComputation": { + "additionalProperties": false, + "properties": { + "ComputationId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "Name": { + "type": "string" + }, + "PeriodSize": { + "default": 0, + "maximum": 52, + "minimum": 2, + "type": "number" + }, + "Time": { + "$ref": "#/definitions/DimensionField" + }, + "Value": { + "$ref": "#/definitions/MeasureField" + } + }, + "required": [ + "ComputationId" + ], + "type": "object" + }, + "HeaderFooterSectionConfiguration": { + "additionalProperties": false, + "properties": { + "Layout": { + "$ref": "#/definitions/SectionLayoutConfiguration" + }, + "SectionId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "Style": { + "$ref": "#/definitions/SectionStyle" + } + }, + "required": [ + "Layout", + "SectionId" + ], + "type": "object" + }, + "HeatMapAggregatedFieldWells": { + "additionalProperties": false, + "properties": { + "Columns": { + "items": { + "$ref": "#/definitions/DimensionField" + }, + "maxItems": 1, + "minItems": 0, + "type": "array" + }, + "Rows": { + "items": { + "$ref": "#/definitions/DimensionField" + }, + "maxItems": 1, + "minItems": 0, + "type": "array" + }, + "Values": { + "items": { + "$ref": "#/definitions/MeasureField" + }, + "maxItems": 1, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "HeatMapConfiguration": { + "additionalProperties": false, + "properties": { + "ColorScale": { + "$ref": "#/definitions/ColorScale" + }, + "ColumnLabelOptions": { + "$ref": "#/definitions/ChartAxisLabelOptions" + }, + "DataLabels": { + "$ref": "#/definitions/DataLabelOptions" + }, + "FieldWells": { + "$ref": "#/definitions/HeatMapFieldWells" + }, + "Interactions": { + "$ref": "#/definitions/VisualInteractionOptions" + }, + "Legend": { + "$ref": "#/definitions/LegendOptions" + }, + "RowLabelOptions": { + "$ref": "#/definitions/ChartAxisLabelOptions" + }, + "SortConfiguration": { + "$ref": "#/definitions/HeatMapSortConfiguration" + }, + "Tooltip": { + "$ref": "#/definitions/TooltipOptions" + } + }, + "type": "object" + }, + "HeatMapFieldWells": { + "additionalProperties": false, + "properties": { + "HeatMapAggregatedFieldWells": { + "$ref": "#/definitions/HeatMapAggregatedFieldWells" + } + }, + "type": "object" + }, + "HeatMapSortConfiguration": { + "additionalProperties": false, + "properties": { + "HeatMapColumnItemsLimitConfiguration": { + "$ref": "#/definitions/ItemsLimitConfiguration" + }, + "HeatMapColumnSort": { + "items": { + "$ref": "#/definitions/FieldSortOptions" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + }, + "HeatMapRowItemsLimitConfiguration": { + "$ref": "#/definitions/ItemsLimitConfiguration" + }, + "HeatMapRowSort": { + "items": { + "$ref": "#/definitions/FieldSortOptions" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "HeatMapVisual": { + "additionalProperties": false, + "properties": { + "Actions": { + "items": { + "$ref": "#/definitions/VisualCustomAction" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + }, + "ChartConfiguration": { + "$ref": "#/definitions/HeatMapConfiguration" + }, + "ColumnHierarchies": { + "items": { + "$ref": "#/definitions/ColumnHierarchy" + }, + "maxItems": 2, + "minItems": 0, + "type": "array" + }, + "Subtitle": { + "$ref": "#/definitions/VisualSubtitleLabelOptions" + }, + "Title": { + "$ref": "#/definitions/VisualTitleLabelOptions" + }, + "VisualContentAltText": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "VisualId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + } + }, + "required": [ + "VisualId" + ], + "type": "object" + }, + "HistogramAggregatedFieldWells": { + "additionalProperties": false, + "properties": { + "Values": { + "items": { + "$ref": "#/definitions/MeasureField" + }, + "maxItems": 1, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "HistogramBinOptions": { + "additionalProperties": false, + "properties": { + "BinCount": { + "$ref": "#/definitions/BinCountOptions" + }, + "BinWidth": { + "$ref": "#/definitions/BinWidthOptions" + }, + "SelectedBinType": { + "$ref": "#/definitions/HistogramBinType" + }, + "StartValue": { + "default": null, + "type": "number" + } + }, + "type": "object" + }, + "HistogramBinType": { + "enum": [ + "BIN_COUNT", + "BIN_WIDTH" + ], + "type": "string" + }, + "HistogramConfiguration": { + "additionalProperties": false, + "properties": { + "BinOptions": { + "$ref": "#/definitions/HistogramBinOptions" + }, + "DataLabels": { + "$ref": "#/definitions/DataLabelOptions" + }, + "FieldWells": { + "$ref": "#/definitions/HistogramFieldWells" + }, + "Interactions": { + "$ref": "#/definitions/VisualInteractionOptions" + }, + "Tooltip": { + "$ref": "#/definitions/TooltipOptions" + }, + "VisualPalette": { + "$ref": "#/definitions/VisualPalette" + }, + "XAxisDisplayOptions": { + "$ref": "#/definitions/AxisDisplayOptions" + }, + "XAxisLabelOptions": { + "$ref": "#/definitions/ChartAxisLabelOptions" + }, + "YAxisDisplayOptions": { + "$ref": "#/definitions/AxisDisplayOptions" + } + }, + "type": "object" + }, + "HistogramFieldWells": { + "additionalProperties": false, + "properties": { + "HistogramAggregatedFieldWells": { + "$ref": "#/definitions/HistogramAggregatedFieldWells" + } + }, + "type": "object" + }, + "HistogramVisual": { + "additionalProperties": false, + "properties": { + "Actions": { + "items": { + "$ref": "#/definitions/VisualCustomAction" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + }, + "ChartConfiguration": { + "$ref": "#/definitions/HistogramConfiguration" + }, + "Subtitle": { + "$ref": "#/definitions/VisualSubtitleLabelOptions" + }, + "Title": { + "$ref": "#/definitions/VisualTitleLabelOptions" + }, + "VisualContentAltText": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "VisualId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + } + }, + "required": [ + "VisualId" + ], + "type": "object" + }, + "HorizontalTextAlignment": { + "enum": [ + "LEFT", + "CENTER", + "RIGHT", + "AUTO" + ], + "type": "string" + }, + "Icon": { + "enum": [ + "CARET_UP", + "CARET_DOWN", + "PLUS", + "MINUS", + "ARROW_UP", + "ARROW_DOWN", + "ARROW_LEFT", + "ARROW_UP_LEFT", + "ARROW_DOWN_LEFT", + "ARROW_RIGHT", + "ARROW_UP_RIGHT", + "ARROW_DOWN_RIGHT", + "FACE_UP", + "FACE_DOWN", + "FACE_FLAT", + "ONE_BAR", + "TWO_BAR", + "THREE_BAR", + "CIRCLE", + "TRIANGLE", + "SQUARE", + "FLAG", + "THUMBS_UP", + "THUMBS_DOWN", + "CHECKMARK", + "X" + ], + "type": "string" + }, + "ImageCustomAction": { + "additionalProperties": false, + "properties": { + "ActionOperations": { + "items": { + "$ref": "#/definitions/ImageCustomActionOperation" + }, + "maxItems": 2, + "minItems": 1, + "type": "array" + }, + "CustomActionId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "Name": { + "maxLength": 256, + "minLength": 1, + "type": "string" + }, + "Status": { + "$ref": "#/definitions/WidgetStatus" + }, + "Trigger": { + "$ref": "#/definitions/ImageCustomActionTrigger" + } + }, + "required": [ + "ActionOperations", + "CustomActionId", + "Name", + "Trigger" + ], + "type": "object" + }, + "ImageCustomActionOperation": { + "additionalProperties": false, + "properties": { + "NavigationOperation": { + "$ref": "#/definitions/CustomActionNavigationOperation" + }, + "SetParametersOperation": { + "$ref": "#/definitions/CustomActionSetParametersOperation" + }, + "URLOperation": { + "$ref": "#/definitions/CustomActionURLOperation" + } + }, + "type": "object" + }, + "ImageCustomActionTrigger": { + "enum": [ + "CLICK", + "MENU" + ], + "type": "string" + }, + "ImageInteractionOptions": { + "additionalProperties": false, + "properties": { + "ImageMenuOption": { + "$ref": "#/definitions/ImageMenuOption" + } + }, + "type": "object" + }, + "ImageMenuOption": { + "additionalProperties": false, + "properties": { + "AvailabilityStatus": { + "$ref": "#/definitions/DashboardBehavior" + } + }, + "type": "object" + }, + "ImageStaticFile": { + "additionalProperties": false, + "properties": { + "Source": { + "$ref": "#/definitions/StaticFileSource" + }, + "StaticFileId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + } + }, + "required": [ + "StaticFileId" + ], + "type": "object" + }, + "InnerFilter": { + "additionalProperties": false, + "properties": { + "CategoryInnerFilter": { + "$ref": "#/definitions/CategoryInnerFilter" + } + }, + "type": "object" + }, + "InsightConfiguration": { + "additionalProperties": false, + "properties": { + "Computations": { + "items": { + "$ref": "#/definitions/Computation" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + }, + "CustomNarrative": { + "$ref": "#/definitions/CustomNarrativeOptions" + }, + "Interactions": { + "$ref": "#/definitions/VisualInteractionOptions" + } + }, + "type": "object" + }, + "InsightVisual": { + "additionalProperties": false, + "properties": { + "Actions": { + "items": { + "$ref": "#/definitions/VisualCustomAction" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + }, + "DataSetIdentifier": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "InsightConfiguration": { + "$ref": "#/definitions/InsightConfiguration" + }, + "Subtitle": { + "$ref": "#/definitions/VisualSubtitleLabelOptions" + }, + "Title": { + "$ref": "#/definitions/VisualTitleLabelOptions" + }, + "VisualContentAltText": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "VisualId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + } + }, + "required": [ + "DataSetIdentifier", + "VisualId" + ], + "type": "object" + }, + "IntegerDefaultValues": { + "additionalProperties": false, + "properties": { + "DynamicValue": { + "$ref": "#/definitions/DynamicDefaultValue" + }, + "StaticValues": { + "items": { + "type": "number" + }, + "maxItems": 50000, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "IntegerParameter": { + "additionalProperties": false, + "description": "An integer parameter.
", + "properties": { + "Name": { + "description": "The name of the integer parameter.
", + "pattern": "\\S", + "type": "string" + }, + "Values": { + "description": "The values for the integer parameter.
", + "items": { + "default": 0, + "type": "number" + }, + "type": "array" + } + }, + "required": [ + "Name", + "Values" + ], + "type": "object" + }, + "IntegerParameterDeclaration": { + "additionalProperties": false, + "properties": { + "DefaultValues": { + "$ref": "#/definitions/IntegerDefaultValues" + }, + "MappedDataSetParameters": { + "items": { + "$ref": "#/definitions/MappedDataSetParameter" + }, + "maxItems": 150, + "minItems": 0, + "type": "array" + }, + "Name": { + "maxLength": 2048, + "minLength": 1, + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + "ParameterValueType": { + "$ref": "#/definitions/ParameterValueType" + }, + "ValueWhenUnset": { + "$ref": "#/definitions/IntegerValueWhenUnsetConfiguration" + } + }, + "required": [ + "Name", + "ParameterValueType" + ], + "type": "object" + }, + "IntegerValueWhenUnsetConfiguration": { + "additionalProperties": false, + "properties": { + "CustomValue": { + "default": null, + "type": "number" + }, + "ValueWhenUnsetOption": { + "$ref": "#/definitions/ValueWhenUnsetOption" + } + }, + "type": "object" + }, + "ItemsLimitConfiguration": { + "additionalProperties": false, + "properties": { + "ItemsLimit": { + "default": null, + "type": "number" + }, + "OtherCategories": { + "$ref": "#/definitions/OtherCategories" + } + }, + "type": "object" + }, + "KPIActualValueConditionalFormatting": { + "additionalProperties": false, + "properties": { + "Icon": { + "$ref": "#/definitions/ConditionalFormattingIcon" + }, + "TextColor": { + "$ref": "#/definitions/ConditionalFormattingColor" + } + }, + "type": "object" + }, + "KPIComparisonValueConditionalFormatting": { + "additionalProperties": false, + "properties": { + "Icon": { + "$ref": "#/definitions/ConditionalFormattingIcon" + }, + "TextColor": { + "$ref": "#/definitions/ConditionalFormattingColor" + } + }, + "type": "object" + }, + "KPIConditionalFormatting": { + "additionalProperties": false, + "properties": { + "ConditionalFormattingOptions": { + "items": { + "$ref": "#/definitions/KPIConditionalFormattingOption" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "KPIConditionalFormattingOption": { + "additionalProperties": false, + "properties": { + "ActualValue": { + "$ref": "#/definitions/KPIActualValueConditionalFormatting" + }, + "ComparisonValue": { + "$ref": "#/definitions/KPIComparisonValueConditionalFormatting" + }, + "PrimaryValue": { + "$ref": "#/definitions/KPIPrimaryValueConditionalFormatting" + }, + "ProgressBar": { + "$ref": "#/definitions/KPIProgressBarConditionalFormatting" + } + }, + "type": "object" + }, + "KPIConfiguration": { + "additionalProperties": false, + "properties": { + "FieldWells": { + "$ref": "#/definitions/KPIFieldWells" + }, + "Interactions": { + "$ref": "#/definitions/VisualInteractionOptions" + }, + "KPIOptions": { + "$ref": "#/definitions/KPIOptions" + }, + "SortConfiguration": { + "$ref": "#/definitions/KPISortConfiguration" + } + }, + "type": "object" + }, + "KPIFieldWells": { + "additionalProperties": false, + "properties": { + "TargetValues": { + "items": { + "$ref": "#/definitions/MeasureField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "TrendGroups": { + "items": { + "$ref": "#/definitions/DimensionField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "Values": { + "items": { + "$ref": "#/definitions/MeasureField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "KPIOptions": { + "additionalProperties": false, + "properties": { + "Comparison": { + "$ref": "#/definitions/ComparisonConfiguration" + }, + "PrimaryValueDisplayType": { + "$ref": "#/definitions/PrimaryValueDisplayType" + }, + "PrimaryValueFontConfiguration": { + "$ref": "#/definitions/FontConfiguration" + }, + "ProgressBar": { + "$ref": "#/definitions/ProgressBarOptions" + }, + "SecondaryValue": { + "$ref": "#/definitions/SecondaryValueOptions" + }, + "SecondaryValueFontConfiguration": { + "$ref": "#/definitions/FontConfiguration" + }, + "Sparkline": { + "$ref": "#/definitions/KPISparklineOptions" + }, + "TrendArrows": { + "$ref": "#/definitions/TrendArrowOptions" + }, + "VisualLayoutOptions": { + "$ref": "#/definitions/KPIVisualLayoutOptions" + } + }, + "type": "object" + }, + "KPIPrimaryValueConditionalFormatting": { + "additionalProperties": false, + "properties": { + "Icon": { + "$ref": "#/definitions/ConditionalFormattingIcon" + }, + "TextColor": { + "$ref": "#/definitions/ConditionalFormattingColor" + } + }, + "type": "object" + }, + "KPIProgressBarConditionalFormatting": { + "additionalProperties": false, + "properties": { + "ForegroundColor": { + "$ref": "#/definitions/ConditionalFormattingColor" + } + }, + "type": "object" + }, + "KPISortConfiguration": { + "additionalProperties": false, + "properties": { + "TrendGroupSort": { + "items": { + "$ref": "#/definitions/FieldSortOptions" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "KPISparklineOptions": { + "additionalProperties": false, + "properties": { + "Color": { + "pattern": "^#[A-F0-9]{6}$", + "type": "string" + }, + "TooltipVisibility": { + "$ref": "#/definitions/Visibility" + }, + "Type": { + "$ref": "#/definitions/KPISparklineType" + }, + "Visibility": { + "$ref": "#/definitions/Visibility" + } + }, + "required": [ + "Type" + ], + "type": "object" + }, + "KPISparklineType": { + "enum": [ + "LINE", + "AREA" + ], + "type": "string" + }, + "KPIVisual": { + "additionalProperties": false, + "properties": { + "Actions": { + "items": { + "$ref": "#/definitions/VisualCustomAction" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + }, + "ChartConfiguration": { + "$ref": "#/definitions/KPIConfiguration" + }, + "ColumnHierarchies": { + "items": { + "$ref": "#/definitions/ColumnHierarchy" + }, + "maxItems": 2, + "minItems": 0, + "type": "array" + }, + "ConditionalFormatting": { + "$ref": "#/definitions/KPIConditionalFormatting" + }, + "Subtitle": { + "$ref": "#/definitions/VisualSubtitleLabelOptions" + }, + "Title": { + "$ref": "#/definitions/VisualTitleLabelOptions" + }, + "VisualContentAltText": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "VisualId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + } + }, + "required": [ + "VisualId" + ], + "type": "object" + }, + "KPIVisualLayoutOptions": { + "additionalProperties": false, + "properties": { + "StandardLayout": { + "$ref": "#/definitions/KPIVisualStandardLayout" + } + }, + "type": "object" + }, + "KPIVisualStandardLayout": { + "additionalProperties": false, + "properties": { + "Type": { + "$ref": "#/definitions/KPIVisualStandardLayoutType" + } + }, + "required": [ + "Type" + ], + "type": "object" + }, + "KPIVisualStandardLayoutType": { + "enum": [ + "CLASSIC", + "VERTICAL" + ], + "type": "string" + }, + "LabelOptions": { + "additionalProperties": false, + "properties": { + "CustomLabel": { + "type": "string" + }, + "FontConfiguration": { + "$ref": "#/definitions/FontConfiguration" + }, + "Visibility": { + "$ref": "#/definitions/Visibility" + } + }, + "type": "object" + }, + "LayerCustomAction": { + "additionalProperties": false, + "properties": { + "ActionOperations": { + "items": { + "$ref": "#/definitions/LayerCustomActionOperation" + }, + "maxItems": 2, + "minItems": 1, + "type": "array" + }, + "CustomActionId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "Name": { + "maxLength": 256, + "minLength": 1, + "type": "string" + }, + "Status": { + "$ref": "#/definitions/WidgetStatus" + }, + "Trigger": { + "$ref": "#/definitions/LayerCustomActionTrigger" + } + }, + "required": [ + "ActionOperations", + "CustomActionId", + "Name", + "Trigger" + ], + "type": "object" + }, + "LayerCustomActionOperation": { + "additionalProperties": false, + "properties": { + "FilterOperation": { + "$ref": "#/definitions/CustomActionFilterOperation" + }, + "NavigationOperation": { + "$ref": "#/definitions/CustomActionNavigationOperation" + }, + "SetParametersOperation": { + "$ref": "#/definitions/CustomActionSetParametersOperation" + }, + "URLOperation": { + "$ref": "#/definitions/CustomActionURLOperation" + } + }, + "type": "object" + }, + "LayerCustomActionTrigger": { + "enum": [ + "DATA_POINT_CLICK", + "DATA_POINT_MENU" + ], + "type": "string" + }, + "LayerMapVisual": { + "additionalProperties": false, + "properties": { + "ChartConfiguration": { + "$ref": "#/definitions/GeospatialLayerMapConfiguration" + }, + "DataSetIdentifier": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "Subtitle": { + "$ref": "#/definitions/VisualSubtitleLabelOptions" + }, + "Title": { + "$ref": "#/definitions/VisualTitleLabelOptions" + }, + "VisualContentAltText": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "VisualId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + } + }, + "required": [ + "DataSetIdentifier", + "VisualId" + ], + "type": "object" + }, + "Layout": { + "additionalProperties": false, + "properties": { + "Configuration": { + "$ref": "#/definitions/LayoutConfiguration" + } + }, + "required": [ + "Configuration" + ], + "type": "object" + }, + "LayoutConfiguration": { + "additionalProperties": false, + "properties": { + "FreeFormLayout": { + "$ref": "#/definitions/FreeFormLayoutConfiguration" + }, + "GridLayout": { + "$ref": "#/definitions/GridLayoutConfiguration" + }, + "SectionBasedLayout": { + "$ref": "#/definitions/SectionBasedLayoutConfiguration" + } + }, + "type": "object" + }, + "LayoutElementType": { + "enum": [ + "VISUAL", + "FILTER_CONTROL", + "PARAMETER_CONTROL", + "TEXT_BOX", + "IMAGE" + ], + "type": "string" + }, + "LegendOptions": { + "additionalProperties": false, + "properties": { + "Height": { + "description": "String based length that is composed of value and unit in px", + "type": "string" + }, + "Position": { + "$ref": "#/definitions/LegendPosition" + }, + "Title": { + "$ref": "#/definitions/LabelOptions" + }, + "ValueFontConfiguration": { + "$ref": "#/definitions/FontConfiguration" + }, + "Visibility": { + "$ref": "#/definitions/Visibility" + }, + "Width": { + "description": "String based length that is composed of value and unit in px", + "type": "string" + } + }, + "type": "object" + }, + "LegendPosition": { + "enum": [ + "AUTO", + "RIGHT", + "BOTTOM", + "TOP" + ], + "type": "string" + }, + "LineChartAggregatedFieldWells": { + "additionalProperties": false, + "properties": { + "Category": { + "items": { + "$ref": "#/definitions/DimensionField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "Colors": { + "items": { + "$ref": "#/definitions/DimensionField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "SmallMultiples": { + "items": { + "$ref": "#/definitions/DimensionField" + }, + "maxItems": 1, + "minItems": 0, + "type": "array" + }, + "Values": { + "items": { + "$ref": "#/definitions/MeasureField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "LineChartConfiguration": { + "additionalProperties": false, + "properties": { + "ContributionAnalysisDefaults": { + "items": { + "$ref": "#/definitions/ContributionAnalysisDefault" + }, + "maxItems": 200, + "minItems": 1, + "type": "array" + }, + "DataLabels": { + "$ref": "#/definitions/DataLabelOptions" + }, + "DefaultSeriesSettings": { + "$ref": "#/definitions/LineChartDefaultSeriesSettings" + }, + "FieldWells": { + "$ref": "#/definitions/LineChartFieldWells" + }, + "ForecastConfigurations": { + "items": { + "$ref": "#/definitions/ForecastConfiguration" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + }, + "Interactions": { + "$ref": "#/definitions/VisualInteractionOptions" + }, + "Legend": { + "$ref": "#/definitions/LegendOptions" + }, + "PrimaryYAxisDisplayOptions": { + "$ref": "#/definitions/LineSeriesAxisDisplayOptions" + }, + "PrimaryYAxisLabelOptions": { + "$ref": "#/definitions/ChartAxisLabelOptions" + }, + "ReferenceLines": { + "items": { + "$ref": "#/definitions/ReferenceLine" + }, + "maxItems": 20, + "minItems": 0, + "type": "array" + }, + "SecondaryYAxisDisplayOptions": { + "$ref": "#/definitions/LineSeriesAxisDisplayOptions" + }, + "SecondaryYAxisLabelOptions": { + "$ref": "#/definitions/ChartAxisLabelOptions" + }, + "Series": { + "items": { + "$ref": "#/definitions/SeriesItem" + }, + "maxItems": 2000, + "minItems": 0, + "type": "array" + }, + "SingleAxisOptions": { + "$ref": "#/definitions/SingleAxisOptions" + }, + "SmallMultiplesOptions": { + "$ref": "#/definitions/SmallMultiplesOptions" + }, + "SortConfiguration": { + "$ref": "#/definitions/LineChartSortConfiguration" + }, + "Tooltip": { + "$ref": "#/definitions/TooltipOptions" + }, + "Type": { + "$ref": "#/definitions/LineChartType" + }, + "VisualPalette": { + "$ref": "#/definitions/VisualPalette" + }, + "XAxisDisplayOptions": { + "$ref": "#/definitions/AxisDisplayOptions" + }, + "XAxisLabelOptions": { + "$ref": "#/definitions/ChartAxisLabelOptions" + } + }, + "type": "object" + }, + "LineChartDefaultSeriesSettings": { + "additionalProperties": false, + "properties": { + "AxisBinding": { + "$ref": "#/definitions/AxisBinding" + }, + "LineStyleSettings": { + "$ref": "#/definitions/LineChartLineStyleSettings" + }, + "MarkerStyleSettings": { + "$ref": "#/definitions/LineChartMarkerStyleSettings" + } + }, + "type": "object" + }, + "LineChartFieldWells": { + "additionalProperties": false, + "properties": { + "LineChartAggregatedFieldWells": { + "$ref": "#/definitions/LineChartAggregatedFieldWells" + } + }, + "type": "object" + }, + "LineChartLineStyle": { + "enum": [ + "SOLID", + "DOTTED", + "DASHED" + ], + "type": "string" + }, + "LineChartLineStyleSettings": { + "additionalProperties": false, + "properties": { + "LineInterpolation": { + "$ref": "#/definitions/LineInterpolation" + }, + "LineStyle": { + "$ref": "#/definitions/LineChartLineStyle" + }, + "LineVisibility": { + "$ref": "#/definitions/Visibility" + }, + "LineWidth": { + "description": "String based length that is composed of value and unit in px", + "type": "string" + } + }, + "type": "object" + }, + "LineChartMarkerShape": { + "enum": [ + "CIRCLE", + "TRIANGLE", + "SQUARE", + "DIAMOND", + "ROUNDED_SQUARE" + ], + "type": "string" + }, + "LineChartMarkerStyleSettings": { + "additionalProperties": false, + "properties": { + "MarkerColor": { + "pattern": "^#[A-F0-9]{6}$", + "type": "string" + }, + "MarkerShape": { + "$ref": "#/definitions/LineChartMarkerShape" + }, + "MarkerSize": { + "description": "String based length that is composed of value and unit in px", + "type": "string" + }, + "MarkerVisibility": { + "$ref": "#/definitions/Visibility" + } + }, + "type": "object" + }, + "LineChartSeriesSettings": { + "additionalProperties": false, + "properties": { + "LineStyleSettings": { + "$ref": "#/definitions/LineChartLineStyleSettings" + }, + "MarkerStyleSettings": { + "$ref": "#/definitions/LineChartMarkerStyleSettings" + } + }, + "type": "object" + }, + "LineChartSortConfiguration": { + "additionalProperties": false, + "properties": { + "CategoryItemsLimitConfiguration": { + "$ref": "#/definitions/ItemsLimitConfiguration" + }, + "CategorySort": { + "items": { + "$ref": "#/definitions/FieldSortOptions" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + }, + "ColorItemsLimitConfiguration": { + "$ref": "#/definitions/ItemsLimitConfiguration" + }, + "SmallMultiplesLimitConfiguration": { + "$ref": "#/definitions/ItemsLimitConfiguration" + }, + "SmallMultiplesSort": { + "items": { + "$ref": "#/definitions/FieldSortOptions" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "LineChartType": { + "enum": [ + "LINE", + "AREA", + "STACKED_AREA" + ], + "type": "string" + }, + "LineChartVisual": { + "additionalProperties": false, + "properties": { + "Actions": { + "items": { + "$ref": "#/definitions/VisualCustomAction" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + }, + "ChartConfiguration": { + "$ref": "#/definitions/LineChartConfiguration" + }, + "ColumnHierarchies": { + "items": { + "$ref": "#/definitions/ColumnHierarchy" + }, + "maxItems": 2, + "minItems": 0, + "type": "array" + }, + "Subtitle": { + "$ref": "#/definitions/VisualSubtitleLabelOptions" + }, + "Title": { + "$ref": "#/definitions/VisualTitleLabelOptions" + }, + "VisualContentAltText": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "VisualId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + } + }, + "required": [ + "VisualId" + ], + "type": "object" + }, + "LineInterpolation": { + "enum": [ + "LINEAR", + "SMOOTH", + "STEPPED" + ], + "type": "string" + }, + "LineSeriesAxisDisplayOptions": { + "additionalProperties": false, + "properties": { + "AxisOptions": { + "$ref": "#/definitions/AxisDisplayOptions" + }, + "MissingDataConfigurations": { + "items": { + "$ref": "#/definitions/MissingDataConfiguration" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "ListControlDisplayOptions": { + "additionalProperties": false, + "properties": { + "InfoIconLabelOptions": { + "$ref": "#/definitions/SheetControlInfoIconLabelOptions" + }, + "SearchOptions": { + "$ref": "#/definitions/ListControlSearchOptions" + }, + "SelectAllOptions": { + "$ref": "#/definitions/ListControlSelectAllOptions" + }, + "TitleOptions": { + "$ref": "#/definitions/LabelOptions" + } + }, + "type": "object" + }, + "ListControlSearchOptions": { + "additionalProperties": false, + "properties": { + "Visibility": { + "$ref": "#/definitions/Visibility" + } + }, + "type": "object" + }, + "ListControlSelectAllOptions": { + "additionalProperties": false, + "properties": { + "Visibility": { + "$ref": "#/definitions/Visibility" + } + }, + "type": "object" + }, + "LoadingAnimation": { + "additionalProperties": false, + "properties": { + "Visibility": { + "$ref": "#/definitions/Visibility" + } + }, + "type": "object" + }, + "LocalNavigationConfiguration": { + "additionalProperties": false, + "properties": { + "TargetSheetId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + } + }, + "required": [ + "TargetSheetId" + ], + "type": "object" + }, + "LongFormatText": { + "additionalProperties": false, + "properties": { + "PlainText": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "RichText": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + } + }, + "type": "object" + }, + "MapZoomMode": { + "enum": [ + "AUTO", + "MANUAL" + ], + "type": "string" + }, + "MappedDataSetParameter": { + "additionalProperties": false, + "properties": { + "DataSetIdentifier": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "DataSetParameterName": { + "maxLength": 2048, + "minLength": 1, + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + } + }, + "required": [ + "DataSetIdentifier", + "DataSetParameterName" + ], + "type": "object" + }, + "MaximumLabelType": { + "additionalProperties": false, + "properties": { + "Visibility": { + "$ref": "#/definitions/Visibility" + } + }, + "type": "object" + }, + "MaximumMinimumComputation": { + "additionalProperties": false, + "properties": { + "ComputationId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "Name": { + "type": "string" + }, + "Time": { + "$ref": "#/definitions/DimensionField" + }, + "Type": { + "$ref": "#/definitions/MaximumMinimumComputationType" + }, + "Value": { + "$ref": "#/definitions/MeasureField" + } + }, + "required": [ + "ComputationId", + "Type" + ], + "type": "object" + }, + "MaximumMinimumComputationType": { + "enum": [ + "MAXIMUM", + "MINIMUM" + ], + "type": "string" + }, + "MeasureField": { + "additionalProperties": false, + "properties": { + "CalculatedMeasureField": { + "$ref": "#/definitions/CalculatedMeasureField" + }, + "CategoricalMeasureField": { + "$ref": "#/definitions/CategoricalMeasureField" + }, + "DateMeasureField": { + "$ref": "#/definitions/DateMeasureField" + }, + "NumericalMeasureField": { + "$ref": "#/definitions/NumericalMeasureField" + } + }, + "type": "object" + }, + "MetricComparisonComputation": { + "additionalProperties": false, + "properties": { + "ComputationId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "FromValue": { + "$ref": "#/definitions/MeasureField" + }, + "Name": { + "type": "string" + }, + "TargetValue": { + "$ref": "#/definitions/MeasureField" + }, + "Time": { + "$ref": "#/definitions/DimensionField" + } + }, + "required": [ + "ComputationId" + ], + "type": "object" + }, + "MinimumLabelType": { + "additionalProperties": false, + "properties": { + "Visibility": { + "$ref": "#/definitions/Visibility" + } + }, + "type": "object" + }, + "MissingDataConfiguration": { + "additionalProperties": false, + "properties": { + "TreatmentOption": { + "$ref": "#/definitions/MissingDataTreatmentOption" + } + }, + "type": "object" + }, + "MissingDataTreatmentOption": { + "enum": [ + "INTERPOLATE", + "SHOW_AS_ZERO", + "SHOW_AS_BLANK" + ], + "type": "string" + }, + "NegativeValueConfiguration": { + "additionalProperties": false, + "properties": { + "DisplayMode": { + "$ref": "#/definitions/NegativeValueDisplayMode" + } + }, + "required": [ + "DisplayMode" + ], + "type": "object" + }, + "NegativeValueDisplayMode": { + "enum": [ + "POSITIVE", + "NEGATIVE" + ], + "type": "string" + }, + "NestedFilter": { + "additionalProperties": false, + "properties": { + "Column": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "FilterId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "IncludeInnerSet": { + "default": false, + "type": "boolean" + }, + "InnerFilter": { + "$ref": "#/definitions/InnerFilter" + } + }, + "required": [ + "Column", + "FilterId", + "IncludeInnerSet", + "InnerFilter" + ], + "type": "object" + }, + "NullValueFormatConfiguration": { + "additionalProperties": false, + "properties": { + "NullString": { + "maxLength": 128, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "NullString" + ], + "type": "object" + }, + "NumberDisplayFormatConfiguration": { + "additionalProperties": false, + "properties": { + "DecimalPlacesConfiguration": { + "$ref": "#/definitions/DecimalPlacesConfiguration" + }, + "NegativeValueConfiguration": { + "$ref": "#/definitions/NegativeValueConfiguration" + }, + "NullValueFormatConfiguration": { + "$ref": "#/definitions/NullValueFormatConfiguration" + }, + "NumberScale": { + "$ref": "#/definitions/NumberScale" + }, + "Prefix": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "SeparatorConfiguration": { + "$ref": "#/definitions/NumericSeparatorConfiguration" + }, + "Suffix": { + "maxLength": 128, + "minLength": 1, + "type": "string" + } + }, + "type": "object" + }, + "NumberFormatConfiguration": { + "additionalProperties": false, + "properties": { + "FormatConfiguration": { + "$ref": "#/definitions/NumericFormatConfiguration" + } + }, + "type": "object" + }, + "NumberScale": { + "enum": [ + "NONE", + "AUTO", + "THOUSANDS", + "MILLIONS", + "BILLIONS", + "TRILLIONS", + "LAKHS", + "CRORES" + ], + "type": "string" + }, + "NumericAxisOptions": { + "additionalProperties": false, + "properties": { + "Range": { + "$ref": "#/definitions/AxisDisplayRange" + }, + "Scale": { + "$ref": "#/definitions/AxisScale" + } + }, + "type": "object" + }, + "NumericEqualityDrillDownFilter": { + "additionalProperties": false, + "properties": { + "Column": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "Value": { + "default": 0, + "type": "number" + } + }, + "required": [ + "Column", + "Value" + ], + "type": "object" + }, + "NumericEqualityFilter": { + "additionalProperties": false, + "properties": { + "AggregationFunction": { + "$ref": "#/definitions/AggregationFunction" + }, + "Column": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "DefaultFilterControlConfiguration": { + "$ref": "#/definitions/DefaultFilterControlConfiguration" + }, + "FilterId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "MatchOperator": { + "$ref": "#/definitions/NumericEqualityMatchOperator" + }, + "NullOption": { + "$ref": "#/definitions/FilterNullOption" + }, + "ParameterName": { + "maxLength": 2048, + "minLength": 1, + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + "SelectAllOptions": { + "$ref": "#/definitions/NumericFilterSelectAllOptions" + }, + "Value": { + "default": null, + "type": "number" + } + }, + "required": [ + "Column", + "FilterId", + "MatchOperator", + "NullOption" + ], + "type": "object" + }, + "NumericEqualityMatchOperator": { + "enum": [ + "EQUALS", + "DOES_NOT_EQUAL" + ], + "type": "string" + }, + "NumericFilterSelectAllOptions": { + "enum": [ + "FILTER_ALL_VALUES" + ], + "type": "string" + }, + "NumericFormatConfiguration": { + "additionalProperties": false, + "properties": { + "CurrencyDisplayFormatConfiguration": { + "$ref": "#/definitions/CurrencyDisplayFormatConfiguration" + }, + "NumberDisplayFormatConfiguration": { + "$ref": "#/definitions/NumberDisplayFormatConfiguration" + }, + "PercentageDisplayFormatConfiguration": { + "$ref": "#/definitions/PercentageDisplayFormatConfiguration" + } + }, + "type": "object" + }, + "NumericRangeFilter": { + "additionalProperties": false, + "properties": { + "AggregationFunction": { + "$ref": "#/definitions/AggregationFunction" + }, + "Column": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "DefaultFilterControlConfiguration": { + "$ref": "#/definitions/DefaultFilterControlConfiguration" + }, + "FilterId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "IncludeMaximum": { + "default": null, + "type": "boolean" + }, + "IncludeMinimum": { + "default": null, + "type": "boolean" + }, + "NullOption": { + "$ref": "#/definitions/FilterNullOption" + }, + "RangeMaximum": { + "$ref": "#/definitions/NumericRangeFilterValue" + }, + "RangeMinimum": { + "$ref": "#/definitions/NumericRangeFilterValue" + }, + "SelectAllOptions": { + "$ref": "#/definitions/NumericFilterSelectAllOptions" + } + }, + "required": [ + "Column", + "FilterId", + "NullOption" + ], + "type": "object" + }, + "NumericRangeFilterValue": { + "additionalProperties": false, + "properties": { + "Parameter": { + "maxLength": 2048, + "minLength": 1, + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + "StaticValue": { + "default": null, + "type": "number" + } + }, + "type": "object" + }, + "NumericSeparatorConfiguration": { + "additionalProperties": false, + "properties": { + "DecimalSeparator": { + "$ref": "#/definitions/NumericSeparatorSymbol" + }, + "ThousandsSeparator": { + "$ref": "#/definitions/ThousandSeparatorOptions" + } + }, + "type": "object" + }, + "NumericSeparatorSymbol": { + "enum": [ + "COMMA", + "DOT", + "SPACE" + ], + "type": "string" + }, + "NumericalAggregationFunction": { + "additionalProperties": false, + "properties": { + "PercentileAggregation": { + "$ref": "#/definitions/PercentileAggregation" + }, + "SimpleNumericalAggregation": { + "$ref": "#/definitions/SimpleNumericalAggregationFunction" + } + }, + "type": "object" + }, + "NumericalDimensionField": { + "additionalProperties": false, + "properties": { + "Column": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "FieldId": { + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "FormatConfiguration": { + "$ref": "#/definitions/NumberFormatConfiguration" + }, + "HierarchyId": { + "maxLength": 512, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Column", + "FieldId" + ], + "type": "object" + }, + "NumericalMeasureField": { + "additionalProperties": false, + "properties": { + "AggregationFunction": { + "$ref": "#/definitions/NumericalAggregationFunction" + }, + "Column": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "FieldId": { + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "FormatConfiguration": { + "$ref": "#/definitions/NumberFormatConfiguration" + } + }, + "required": [ + "Column", + "FieldId" + ], + "type": "object" + }, + "OtherCategories": { + "enum": [ + "INCLUDE", + "EXCLUDE" + ], + "type": "string" + }, + "PaginationConfiguration": { + "additionalProperties": false, + "properties": { + "PageNumber": { + "minimum": 0, + "type": "number" + }, + "PageSize": { + "default": null, + "type": "number" + } + }, + "required": [ + "PageNumber", + "PageSize" + ], + "type": "object" + }, + "PanelBorderStyle": { + "enum": [ + "SOLID", + "DASHED", + "DOTTED" + ], + "type": "string" + }, + "PanelConfiguration": { + "additionalProperties": false, + "properties": { + "BackgroundColor": { + "pattern": "^#[A-F0-9]{6}(?:[A-F0-9]{2})?$", + "type": "string" + }, + "BackgroundVisibility": { + "$ref": "#/definitions/Visibility" + }, + "BorderColor": { + "pattern": "^#[A-F0-9]{6}(?:[A-F0-9]{2})?$", + "type": "string" + }, + "BorderStyle": { + "$ref": "#/definitions/PanelBorderStyle" + }, + "BorderThickness": { + "description": "String based length that is composed of value and unit in px", + "type": "string" + }, + "BorderVisibility": { + "$ref": "#/definitions/Visibility" + }, + "GutterSpacing": { + "description": "String based length that is composed of value and unit in px", + "type": "string" + }, + "GutterVisibility": { + "$ref": "#/definitions/Visibility" + }, + "Title": { + "$ref": "#/definitions/PanelTitleOptions" + } + }, + "type": "object" + }, + "PanelTitleOptions": { + "additionalProperties": false, + "properties": { + "FontConfiguration": { + "$ref": "#/definitions/FontConfiguration" + }, + "HorizontalTextAlignment": { + "$ref": "#/definitions/HorizontalTextAlignment" + }, + "Visibility": { + "$ref": "#/definitions/Visibility" + } + }, + "type": "object" + }, + "PaperOrientation": { + "enum": [ + "PORTRAIT", + "LANDSCAPE" + ], + "type": "string" + }, + "PaperSize": { + "enum": [ + "US_LETTER", + "US_LEGAL", + "US_TABLOID_LEDGER", + "A0", + "A1", + "A2", + "A3", + "A4", + "A5", + "JIS_B4", + "JIS_B5" + ], + "type": "string" + }, + "ParameterControl": { + "additionalProperties": false, + "properties": { + "DateTimePicker": { + "$ref": "#/definitions/ParameterDateTimePickerControl" + }, + "Dropdown": { + "$ref": "#/definitions/ParameterDropDownControl" + }, + "List": { + "$ref": "#/definitions/ParameterListControl" + }, + "Slider": { + "$ref": "#/definitions/ParameterSliderControl" + }, + "TextArea": { + "$ref": "#/definitions/ParameterTextAreaControl" + }, + "TextField": { + "$ref": "#/definitions/ParameterTextFieldControl" + } + }, + "type": "object" + }, + "ParameterDateTimePickerControl": { + "additionalProperties": false, + "properties": { + "DisplayOptions": { + "$ref": "#/definitions/DateTimePickerControlDisplayOptions" + }, + "ParameterControlId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "SourceParameterName": { + "maxLength": 2048, + "minLength": 1, + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + "Title": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "ParameterControlId", + "SourceParameterName", + "Title" + ], + "type": "object" + }, + "ParameterDeclaration": { + "additionalProperties": false, + "properties": { + "DateTimeParameterDeclaration": { + "$ref": "#/definitions/DateTimeParameterDeclaration" + }, + "DecimalParameterDeclaration": { + "$ref": "#/definitions/DecimalParameterDeclaration" + }, + "IntegerParameterDeclaration": { + "$ref": "#/definitions/IntegerParameterDeclaration" + }, + "StringParameterDeclaration": { + "$ref": "#/definitions/StringParameterDeclaration" + } + }, + "type": "object" + }, + "ParameterDropDownControl": { + "additionalProperties": false, + "properties": { + "CascadingControlConfiguration": { + "$ref": "#/definitions/CascadingControlConfiguration" + }, + "CommitMode": { + "$ref": "#/definitions/CommitMode" + }, + "DisplayOptions": { + "$ref": "#/definitions/DropDownControlDisplayOptions" + }, + "ParameterControlId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "SelectableValues": { + "$ref": "#/definitions/ParameterSelectableValues" + }, + "SourceParameterName": { + "maxLength": 2048, + "minLength": 1, + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + "Title": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "Type": { + "$ref": "#/definitions/SheetControlListType" + } + }, + "required": [ + "ParameterControlId", + "SourceParameterName", + "Title" + ], + "type": "object" + }, + "ParameterListControl": { + "additionalProperties": false, + "properties": { + "CascadingControlConfiguration": { + "$ref": "#/definitions/CascadingControlConfiguration" + }, + "DisplayOptions": { + "$ref": "#/definitions/ListControlDisplayOptions" + }, + "ParameterControlId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "SelectableValues": { + "$ref": "#/definitions/ParameterSelectableValues" + }, + "SourceParameterName": { + "maxLength": 2048, + "minLength": 1, + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + "Title": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "Type": { + "$ref": "#/definitions/SheetControlListType" + } + }, + "required": [ + "ParameterControlId", + "SourceParameterName", + "Title" + ], + "type": "object" + }, + "ParameterSelectableValues": { + "additionalProperties": false, + "properties": { + "LinkToDataSetColumn": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "Values": { + "items": { + "type": "string" + }, + "maxItems": 50000, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "ParameterSliderControl": { + "additionalProperties": false, + "properties": { + "DisplayOptions": { + "$ref": "#/definitions/SliderControlDisplayOptions" + }, + "MaximumValue": { + "default": 0, + "type": "number" + }, + "MinimumValue": { + "default": 0, + "type": "number" + }, + "ParameterControlId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "SourceParameterName": { + "maxLength": 2048, + "minLength": 1, + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + "StepSize": { + "default": 0, + "type": "number" + }, + "Title": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "MaximumValue", + "MinimumValue", + "ParameterControlId", + "SourceParameterName", + "StepSize", + "Title" + ], + "type": "object" + }, + "ParameterTextAreaControl": { + "additionalProperties": false, + "properties": { + "Delimiter": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "DisplayOptions": { + "$ref": "#/definitions/TextAreaControlDisplayOptions" + }, + "ParameterControlId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "SourceParameterName": { + "maxLength": 2048, + "minLength": 1, + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + "Title": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "ParameterControlId", + "SourceParameterName", + "Title" + ], + "type": "object" + }, + "ParameterTextFieldControl": { + "additionalProperties": false, + "properties": { + "DisplayOptions": { + "$ref": "#/definitions/TextFieldControlDisplayOptions" + }, + "ParameterControlId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "SourceParameterName": { + "maxLength": 2048, + "minLength": 1, + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + "Title": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "ParameterControlId", + "SourceParameterName", + "Title" + ], + "type": "object" + }, + "ParameterValueType": { + "enum": [ + "MULTI_VALUED", + "SINGLE_VALUED" + ], + "type": "string" + }, + "Parameters": { + "additionalProperties": false, + "description": "A list of Amazon QuickSight parameters and the list's override values.
", + "properties": { + "DateTimeParameters": { + "description": "The parameters that have a data type of date-time.
", + "items": { + "$ref": "#/definitions/DateTimeParameter" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + }, + "DecimalParameters": { + "description": "The parameters that have a data type of decimal.
", + "items": { + "$ref": "#/definitions/DecimalParameter" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + }, + "IntegerParameters": { + "description": "The parameters that have a data type of integer.
", + "items": { + "$ref": "#/definitions/IntegerParameter" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + }, + "StringParameters": { + "description": "The parameters that have a data type of string.
", + "items": { + "$ref": "#/definitions/StringParameter" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "PercentVisibleRange": { + "additionalProperties": false, + "properties": { + "From": { + "default": null, + "maximum": 100, + "minimum": 0, + "type": "number" + }, + "To": { + "default": null, + "maximum": 100, + "minimum": 0, + "type": "number" + } + }, + "type": "object" + }, + "PercentageDisplayFormatConfiguration": { + "additionalProperties": false, + "properties": { + "DecimalPlacesConfiguration": { + "$ref": "#/definitions/DecimalPlacesConfiguration" + }, + "NegativeValueConfiguration": { + "$ref": "#/definitions/NegativeValueConfiguration" + }, + "NullValueFormatConfiguration": { + "$ref": "#/definitions/NullValueFormatConfiguration" + }, + "Prefix": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "SeparatorConfiguration": { + "$ref": "#/definitions/NumericSeparatorConfiguration" + }, + "Suffix": { + "maxLength": 128, + "minLength": 1, + "type": "string" + } + }, + "type": "object" + }, + "PercentileAggregation": { + "additionalProperties": false, + "properties": { + "PercentileValue": { + "maximum": 100, + "minimum": 0, + "type": "number" + } + }, + "type": "object" + }, + "PeriodOverPeriodComputation": { + "additionalProperties": false, + "properties": { + "ComputationId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "Name": { + "type": "string" + }, + "Time": { + "$ref": "#/definitions/DimensionField" + }, + "Value": { + "$ref": "#/definitions/MeasureField" + } + }, + "required": [ + "ComputationId" + ], + "type": "object" + }, + "PeriodToDateComputation": { + "additionalProperties": false, + "properties": { + "ComputationId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "Name": { + "type": "string" + }, + "PeriodTimeGranularity": { + "$ref": "#/definitions/TimeGranularity" + }, + "Time": { + "$ref": "#/definitions/DimensionField" + }, + "Value": { + "$ref": "#/definitions/MeasureField" + } + }, + "required": [ + "ComputationId" + ], + "type": "object" + }, + "PieChartAggregatedFieldWells": { + "additionalProperties": false, + "properties": { + "Category": { + "items": { + "$ref": "#/definitions/DimensionField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "SmallMultiples": { + "items": { + "$ref": "#/definitions/DimensionField" + }, + "maxItems": 1, + "minItems": 0, + "type": "array" + }, + "Values": { + "items": { + "$ref": "#/definitions/MeasureField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "PieChartConfiguration": { + "additionalProperties": false, + "properties": { + "CategoryLabelOptions": { + "$ref": "#/definitions/ChartAxisLabelOptions" + }, + "ContributionAnalysisDefaults": { + "items": { + "$ref": "#/definitions/ContributionAnalysisDefault" + }, + "maxItems": 200, + "minItems": 1, + "type": "array" + }, + "DataLabels": { + "$ref": "#/definitions/DataLabelOptions" + }, + "DonutOptions": { + "$ref": "#/definitions/DonutOptions" + }, + "FieldWells": { + "$ref": "#/definitions/PieChartFieldWells" + }, + "Interactions": { + "$ref": "#/definitions/VisualInteractionOptions" + }, + "Legend": { + "$ref": "#/definitions/LegendOptions" + }, + "SmallMultiplesOptions": { + "$ref": "#/definitions/SmallMultiplesOptions" + }, + "SortConfiguration": { + "$ref": "#/definitions/PieChartSortConfiguration" + }, + "Tooltip": { + "$ref": "#/definitions/TooltipOptions" + }, + "ValueLabelOptions": { + "$ref": "#/definitions/ChartAxisLabelOptions" + }, + "VisualPalette": { + "$ref": "#/definitions/VisualPalette" + } + }, + "type": "object" + }, + "PieChartFieldWells": { + "additionalProperties": false, + "properties": { + "PieChartAggregatedFieldWells": { + "$ref": "#/definitions/PieChartAggregatedFieldWells" + } + }, + "type": "object" + }, + "PieChartSortConfiguration": { + "additionalProperties": false, + "properties": { + "CategoryItemsLimit": { + "$ref": "#/definitions/ItemsLimitConfiguration" + }, + "CategorySort": { + "items": { + "$ref": "#/definitions/FieldSortOptions" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + }, + "SmallMultiplesLimitConfiguration": { + "$ref": "#/definitions/ItemsLimitConfiguration" + }, + "SmallMultiplesSort": { + "items": { + "$ref": "#/definitions/FieldSortOptions" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "PieChartVisual": { + "additionalProperties": false, + "properties": { + "Actions": { + "items": { + "$ref": "#/definitions/VisualCustomAction" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + }, + "ChartConfiguration": { + "$ref": "#/definitions/PieChartConfiguration" + }, + "ColumnHierarchies": { + "items": { + "$ref": "#/definitions/ColumnHierarchy" + }, + "maxItems": 2, + "minItems": 0, + "type": "array" + }, + "Subtitle": { + "$ref": "#/definitions/VisualSubtitleLabelOptions" + }, + "Title": { + "$ref": "#/definitions/VisualTitleLabelOptions" + }, + "VisualContentAltText": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "VisualId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + } + }, + "required": [ + "VisualId" + ], + "type": "object" + }, + "PivotFieldSortOptions": { + "additionalProperties": false, + "properties": { + "FieldId": { + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "SortBy": { + "$ref": "#/definitions/PivotTableSortBy" + } + }, + "required": [ + "FieldId", + "SortBy" + ], + "type": "object" + }, + "PivotTableAggregatedFieldWells": { + "additionalProperties": false, + "properties": { + "Columns": { + "items": { + "$ref": "#/definitions/DimensionField" + }, + "maxItems": 40, + "minItems": 0, + "type": "array" + }, + "Rows": { + "items": { + "$ref": "#/definitions/DimensionField" + }, + "maxItems": 40, + "minItems": 0, + "type": "array" + }, + "Values": { + "items": { + "$ref": "#/definitions/MeasureField" + }, + "maxItems": 40, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "PivotTableCellConditionalFormatting": { + "additionalProperties": false, + "properties": { + "FieldId": { + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "Scope": { + "$ref": "#/definitions/PivotTableConditionalFormattingScope" + }, + "Scopes": { + "items": { + "$ref": "#/definitions/PivotTableConditionalFormattingScope" + }, + "maxItems": 3, + "minItems": 0, + "type": "array" + }, + "TextFormat": { + "$ref": "#/definitions/TextConditionalFormat" + } + }, + "required": [ + "FieldId" + ], + "type": "object" + }, + "PivotTableConditionalFormatting": { + "additionalProperties": false, + "properties": { + "ConditionalFormattingOptions": { + "items": { + "$ref": "#/definitions/PivotTableConditionalFormattingOption" + }, + "maxItems": 500, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "PivotTableConditionalFormattingOption": { + "additionalProperties": false, + "properties": { + "Cell": { + "$ref": "#/definitions/PivotTableCellConditionalFormatting" + } + }, + "type": "object" + }, + "PivotTableConditionalFormattingScope": { + "additionalProperties": false, + "properties": { + "Role": { + "$ref": "#/definitions/PivotTableConditionalFormattingScopeRole" + } + }, + "type": "object" + }, + "PivotTableConditionalFormattingScopeRole": { + "enum": [ + "FIELD", + "FIELD_TOTAL", + "GRAND_TOTAL" + ], + "type": "string" + }, + "PivotTableConfiguration": { + "additionalProperties": false, + "properties": { + "FieldOptions": { + "$ref": "#/definitions/PivotTableFieldOptions" + }, + "FieldWells": { + "$ref": "#/definitions/PivotTableFieldWells" + }, + "Interactions": { + "$ref": "#/definitions/VisualInteractionOptions" + }, + "PaginatedReportOptions": { + "$ref": "#/definitions/PivotTablePaginatedReportOptions" + }, + "SortConfiguration": { + "$ref": "#/definitions/PivotTableSortConfiguration" + }, + "TableOptions": { + "$ref": "#/definitions/PivotTableOptions" + }, + "TotalOptions": { + "$ref": "#/definitions/PivotTableTotalOptions" + } + }, + "type": "object" + }, + "PivotTableDataPathOption": { + "additionalProperties": false, + "properties": { + "DataPathList": { + "items": { + "$ref": "#/definitions/DataPathValue" + }, + "maxItems": 20, + "minItems": 0, + "type": "array" + }, + "Width": { + "description": "String based length that is composed of value and unit in px", + "type": "string" + } + }, + "required": [ + "DataPathList" + ], + "type": "object" + }, + "PivotTableDataPathType": { + "enum": [ + "HIERARCHY_ROWS_LAYOUT_COLUMN", + "MULTIPLE_ROW_METRICS_COLUMN", + "EMPTY_COLUMN_HEADER", + "COUNT_METRIC_COLUMN" + ], + "type": "string" + }, + "PivotTableFieldCollapseState": { + "enum": [ + "COLLAPSED", + "EXPANDED" + ], + "type": "string" + }, + "PivotTableFieldCollapseStateOption": { + "additionalProperties": false, + "properties": { + "State": { + "$ref": "#/definitions/PivotTableFieldCollapseState" + }, + "Target": { + "$ref": "#/definitions/PivotTableFieldCollapseStateTarget" + } + }, + "required": [ + "Target" + ], + "type": "object" + }, + "PivotTableFieldCollapseStateTarget": { + "additionalProperties": false, + "properties": { + "FieldDataPathValues": { + "items": { + "$ref": "#/definitions/DataPathValue" + }, + "maxItems": 20, + "minItems": 0, + "type": "array" + }, + "FieldId": { + "type": "string" + } + }, + "type": "object" + }, + "PivotTableFieldOption": { + "additionalProperties": false, + "properties": { + "CustomLabel": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "FieldId": { + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "Visibility": { + "$ref": "#/definitions/Visibility" + } + }, + "required": [ + "FieldId" + ], + "type": "object" + }, + "PivotTableFieldOptions": { + "additionalProperties": false, + "properties": { + "CollapseStateOptions": { + "items": { + "$ref": "#/definitions/PivotTableFieldCollapseStateOption" + }, + "type": "array" + }, + "DataPathOptions": { + "items": { + "$ref": "#/definitions/PivotTableDataPathOption" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + }, + "SelectedFieldOptions": { + "items": { + "$ref": "#/definitions/PivotTableFieldOption" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "PivotTableFieldSubtotalOptions": { + "additionalProperties": false, + "properties": { + "FieldId": { + "maxLength": 512, + "minLength": 1, + "type": "string" + } + }, + "type": "object" + }, + "PivotTableFieldWells": { + "additionalProperties": false, + "properties": { + "PivotTableAggregatedFieldWells": { + "$ref": "#/definitions/PivotTableAggregatedFieldWells" + } + }, + "type": "object" + }, + "PivotTableMetricPlacement": { + "enum": [ + "ROW", + "COLUMN" + ], + "type": "string" + }, + "PivotTableOptions": { + "additionalProperties": false, + "properties": { + "CellStyle": { + "$ref": "#/definitions/TableCellStyle" + }, + "CollapsedRowDimensionsVisibility": { + "$ref": "#/definitions/Visibility" + }, + "ColumnHeaderStyle": { + "$ref": "#/definitions/TableCellStyle" + }, + "ColumnNamesVisibility": { + "$ref": "#/definitions/Visibility" + }, + "DefaultCellWidth": { + "description": "String based length that is composed of value and unit in px", + "type": "string" + }, + "MetricPlacement": { + "$ref": "#/definitions/PivotTableMetricPlacement" + }, + "RowAlternateColorOptions": { + "$ref": "#/definitions/RowAlternateColorOptions" + }, + "RowFieldNamesStyle": { + "$ref": "#/definitions/TableCellStyle" + }, + "RowHeaderStyle": { + "$ref": "#/definitions/TableCellStyle" + }, + "RowsLabelOptions": { + "$ref": "#/definitions/PivotTableRowsLabelOptions" + }, + "RowsLayout": { + "$ref": "#/definitions/PivotTableRowsLayout" + }, + "SingleMetricVisibility": { + "$ref": "#/definitions/Visibility" + }, + "ToggleButtonsVisibility": { + "$ref": "#/definitions/Visibility" + } + }, + "type": "object" + }, + "PivotTablePaginatedReportOptions": { + "additionalProperties": false, + "properties": { + "OverflowColumnHeaderVisibility": { + "$ref": "#/definitions/Visibility" + }, + "VerticalOverflowVisibility": { + "$ref": "#/definitions/Visibility" + } + }, + "type": "object" + }, + "PivotTableRowsLabelOptions": { + "additionalProperties": false, + "properties": { + "CustomLabel": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "Visibility": { + "$ref": "#/definitions/Visibility" + } + }, + "type": "object" + }, + "PivotTableRowsLayout": { + "enum": [ + "TABULAR", + "HIERARCHY" + ], + "type": "string" + }, + "PivotTableSortBy": { + "additionalProperties": false, + "properties": { + "Column": { + "$ref": "#/definitions/ColumnSort" + }, + "DataPath": { + "$ref": "#/definitions/DataPathSort" + }, + "Field": { + "$ref": "#/definitions/FieldSort" + } + }, + "type": "object" + }, + "PivotTableSortConfiguration": { + "additionalProperties": false, + "properties": { + "FieldSortOptions": { + "items": { + "$ref": "#/definitions/PivotFieldSortOptions" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "PivotTableSubtotalLevel": { + "enum": [ + "ALL", + "CUSTOM", + "LAST" + ], + "type": "string" + }, + "PivotTableTotalOptions": { + "additionalProperties": false, + "properties": { + "ColumnSubtotalOptions": { + "$ref": "#/definitions/SubtotalOptions" + }, + "ColumnTotalOptions": { + "$ref": "#/definitions/PivotTotalOptions" + }, + "RowSubtotalOptions": { + "$ref": "#/definitions/SubtotalOptions" + }, + "RowTotalOptions": { + "$ref": "#/definitions/PivotTotalOptions" + } + }, + "type": "object" + }, + "PivotTableVisual": { + "additionalProperties": false, + "properties": { + "Actions": { + "items": { + "$ref": "#/definitions/VisualCustomAction" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + }, + "ChartConfiguration": { + "$ref": "#/definitions/PivotTableConfiguration" + }, + "ConditionalFormatting": { + "$ref": "#/definitions/PivotTableConditionalFormatting" + }, + "Subtitle": { + "$ref": "#/definitions/VisualSubtitleLabelOptions" + }, + "Title": { + "$ref": "#/definitions/VisualTitleLabelOptions" + }, + "VisualContentAltText": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "VisualId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + } + }, + "required": [ + "VisualId" + ], + "type": "object" + }, + "PivotTotalOptions": { + "additionalProperties": false, + "properties": { + "CustomLabel": { + "type": "string" + }, + "MetricHeaderCellStyle": { + "$ref": "#/definitions/TableCellStyle" + }, + "Placement": { + "$ref": "#/definitions/TableTotalsPlacement" + }, + "ScrollStatus": { + "$ref": "#/definitions/TableTotalsScrollStatus" + }, + "TotalAggregationOptions": { + "items": { + "$ref": "#/definitions/TotalAggregationOption" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "TotalCellStyle": { + "$ref": "#/definitions/TableCellStyle" + }, + "TotalsVisibility": { + "$ref": "#/definitions/Visibility" + }, + "ValueCellStyle": { + "$ref": "#/definitions/TableCellStyle" + } + }, + "type": "object" + }, + "PluginVisual": { + "additionalProperties": false, + "properties": { + "ChartConfiguration": { + "$ref": "#/definitions/PluginVisualConfiguration" + }, + "PluginArn": { + "type": "string" + }, + "Subtitle": { + "$ref": "#/definitions/VisualSubtitleLabelOptions" + }, + "Title": { + "$ref": "#/definitions/VisualTitleLabelOptions" + }, + "VisualContentAltText": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "VisualId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + } + }, + "required": [ + "PluginArn", + "VisualId" + ], + "type": "object" + }, + "PluginVisualAxisName": { + "enum": [ + "GROUP_BY", + "VALUE" + ], + "type": "string" + }, + "PluginVisualConfiguration": { + "additionalProperties": false, + "properties": { + "FieldWells": { + "items": { + "$ref": "#/definitions/PluginVisualFieldWell" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + }, + "SortConfiguration": { + "$ref": "#/definitions/PluginVisualSortConfiguration" + }, + "VisualOptions": { + "$ref": "#/definitions/PluginVisualOptions" + } + }, + "type": "object" + }, + "PluginVisualFieldWell": { + "additionalProperties": false, + "properties": { + "AxisName": { + "$ref": "#/definitions/PluginVisualAxisName" + }, + "Dimensions": { + "items": { + "$ref": "#/definitions/DimensionField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "Measures": { + "items": { + "$ref": "#/definitions/MeasureField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "Unaggregated": { + "items": { + "$ref": "#/definitions/UnaggregatedField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "PluginVisualItemsLimitConfiguration": { + "additionalProperties": false, + "properties": { + "ItemsLimit": { + "default": null, + "type": "number" + } + }, + "type": "object" + }, + "PluginVisualOptions": { + "additionalProperties": false, + "properties": { + "VisualProperties": { + "items": { + "$ref": "#/definitions/PluginVisualProperty" + }, + "type": "array" + } + }, + "type": "object" + }, + "PluginVisualProperty": { + "additionalProperties": false, + "properties": { + "Name": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "type": "object" + }, + "PluginVisualSortConfiguration": { + "additionalProperties": false, + "properties": { + "PluginVisualTableQuerySort": { + "$ref": "#/definitions/PluginVisualTableQuerySort" + } + }, + "type": "object" + }, + "PluginVisualTableQuerySort": { + "additionalProperties": false, + "properties": { + "ItemsLimitConfiguration": { + "$ref": "#/definitions/PluginVisualItemsLimitConfiguration" + }, + "RowSort": { + "items": { + "$ref": "#/definitions/FieldSortOptions" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "PredefinedHierarchy": { + "additionalProperties": false, + "properties": { + "Columns": { + "items": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "maxItems": 10, + "minItems": 1, + "type": "array" + }, + "DrillDownFilters": { + "items": { + "$ref": "#/definitions/DrillDownFilter" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + }, + "HierarchyId": { + "maxLength": 512, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Columns", + "HierarchyId" + ], + "type": "object" + }, + "PrimaryValueDisplayType": { + "enum": [ + "HIDDEN", + "COMPARISON", + "ACTUAL" + ], + "type": "string" + }, + "ProgressBarOptions": { + "additionalProperties": false, + "properties": { + "Visibility": { + "$ref": "#/definitions/Visibility" + } + }, + "type": "object" + }, + "QueryExecutionMode": { + "enum": [ + "AUTO", + "MANUAL" + ], + "type": "string" + }, + "QueryExecutionOptions": { + "additionalProperties": false, + "properties": { + "QueryExecutionMode": { + "$ref": "#/definitions/QueryExecutionMode" + } + }, + "type": "object" + }, + "RadarChartAggregatedFieldWells": { + "additionalProperties": false, + "properties": { + "Category": { + "items": { + "$ref": "#/definitions/DimensionField" + }, + "maxItems": 1, + "minItems": 0, + "type": "array" + }, + "Color": { + "items": { + "$ref": "#/definitions/DimensionField" + }, + "maxItems": 1, + "minItems": 0, + "type": "array" + }, + "Values": { + "items": { + "$ref": "#/definitions/MeasureField" + }, + "maxItems": 20, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "RadarChartAreaStyleSettings": { + "additionalProperties": false, + "properties": { + "Visibility": { + "$ref": "#/definitions/Visibility" + } + }, + "type": "object" + }, + "RadarChartAxesRangeScale": { + "enum": [ + "AUTO", + "INDEPENDENT", + "SHARED" + ], + "type": "string" + }, + "RadarChartConfiguration": { + "additionalProperties": false, + "properties": { + "AlternateBandColorsVisibility": { + "$ref": "#/definitions/Visibility" + }, + "AlternateBandEvenColor": { + "pattern": "^#[A-F0-9]{6}$", + "type": "string" + }, + "AlternateBandOddColor": { + "pattern": "^#[A-F0-9]{6}$", + "type": "string" + }, + "AxesRangeScale": { + "$ref": "#/definitions/RadarChartAxesRangeScale" + }, + "BaseSeriesSettings": { + "$ref": "#/definitions/RadarChartSeriesSettings" + }, + "CategoryAxis": { + "$ref": "#/definitions/AxisDisplayOptions" + }, + "CategoryLabelOptions": { + "$ref": "#/definitions/ChartAxisLabelOptions" + }, + "ColorAxis": { + "$ref": "#/definitions/AxisDisplayOptions" + }, + "ColorLabelOptions": { + "$ref": "#/definitions/ChartAxisLabelOptions" + }, + "FieldWells": { + "$ref": "#/definitions/RadarChartFieldWells" + }, + "Interactions": { + "$ref": "#/definitions/VisualInteractionOptions" + }, + "Legend": { + "$ref": "#/definitions/LegendOptions" + }, + "Shape": { + "$ref": "#/definitions/RadarChartShape" + }, + "SortConfiguration": { + "$ref": "#/definitions/RadarChartSortConfiguration" + }, + "StartAngle": { + "maximum": 360, + "minimum": -360, + "type": "number" + }, + "VisualPalette": { + "$ref": "#/definitions/VisualPalette" + } + }, + "type": "object" + }, + "RadarChartFieldWells": { + "additionalProperties": false, + "properties": { + "RadarChartAggregatedFieldWells": { + "$ref": "#/definitions/RadarChartAggregatedFieldWells" + } + }, + "type": "object" + }, + "RadarChartSeriesSettings": { + "additionalProperties": false, + "properties": { + "AreaStyleSettings": { + "$ref": "#/definitions/RadarChartAreaStyleSettings" + } + }, + "type": "object" + }, + "RadarChartShape": { + "enum": [ + "CIRCLE", + "POLYGON" + ], + "type": "string" + }, + "RadarChartSortConfiguration": { + "additionalProperties": false, + "properties": { + "CategoryItemsLimit": { + "$ref": "#/definitions/ItemsLimitConfiguration" + }, + "CategorySort": { + "items": { + "$ref": "#/definitions/FieldSortOptions" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + }, + "ColorItemsLimit": { + "$ref": "#/definitions/ItemsLimitConfiguration" + }, + "ColorSort": { + "items": { + "$ref": "#/definitions/FieldSortOptions" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "RadarChartVisual": { + "additionalProperties": false, + "properties": { + "Actions": { + "items": { + "$ref": "#/definitions/VisualCustomAction" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + }, + "ChartConfiguration": { + "$ref": "#/definitions/RadarChartConfiguration" + }, + "ColumnHierarchies": { + "items": { + "$ref": "#/definitions/ColumnHierarchy" + }, + "maxItems": 2, + "minItems": 0, + "type": "array" + }, + "Subtitle": { + "$ref": "#/definitions/VisualSubtitleLabelOptions" + }, + "Title": { + "$ref": "#/definitions/VisualTitleLabelOptions" + }, + "VisualContentAltText": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "VisualId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + } + }, + "required": [ + "VisualId" + ], + "type": "object" + }, + "RangeEndsLabelType": { + "additionalProperties": false, + "properties": { + "Visibility": { + "$ref": "#/definitions/Visibility" + } + }, + "type": "object" + }, + "ReferenceLine": { + "additionalProperties": false, + "properties": { + "DataConfiguration": { + "$ref": "#/definitions/ReferenceLineDataConfiguration" + }, + "LabelConfiguration": { + "$ref": "#/definitions/ReferenceLineLabelConfiguration" + }, + "Status": { + "$ref": "#/definitions/WidgetStatus" + }, + "StyleConfiguration": { + "$ref": "#/definitions/ReferenceLineStyleConfiguration" + } + }, + "required": [ + "DataConfiguration" + ], + "type": "object" + }, + "ReferenceLineCustomLabelConfiguration": { + "additionalProperties": false, + "properties": { + "CustomLabel": { + "pattern": "\\S", + "type": "string" + } + }, + "required": [ + "CustomLabel" + ], + "type": "object" + }, + "ReferenceLineDataConfiguration": { + "additionalProperties": false, + "properties": { + "AxisBinding": { + "$ref": "#/definitions/AxisBinding" + }, + "DynamicConfiguration": { + "$ref": "#/definitions/ReferenceLineDynamicDataConfiguration" + }, + "SeriesType": { + "$ref": "#/definitions/ReferenceLineSeriesType" + }, + "StaticConfiguration": { + "$ref": "#/definitions/ReferenceLineStaticDataConfiguration" + } + }, + "type": "object" + }, + "ReferenceLineDynamicDataConfiguration": { + "additionalProperties": false, + "properties": { + "Calculation": { + "$ref": "#/definitions/NumericalAggregationFunction" + }, + "Column": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "MeasureAggregationFunction": { + "$ref": "#/definitions/AggregationFunction" + } + }, + "required": [ + "Calculation", + "Column" + ], + "type": "object" + }, + "ReferenceLineLabelConfiguration": { + "additionalProperties": false, + "properties": { + "CustomLabelConfiguration": { + "$ref": "#/definitions/ReferenceLineCustomLabelConfiguration" + }, + "FontColor": { + "pattern": "^#[A-F0-9]{6}$", + "type": "string" + }, + "FontConfiguration": { + "$ref": "#/definitions/FontConfiguration" + }, + "HorizontalPosition": { + "$ref": "#/definitions/ReferenceLineLabelHorizontalPosition" + }, + "ValueLabelConfiguration": { + "$ref": "#/definitions/ReferenceLineValueLabelConfiguration" + }, + "VerticalPosition": { + "$ref": "#/definitions/ReferenceLineLabelVerticalPosition" + } + }, + "type": "object" + }, + "ReferenceLineLabelHorizontalPosition": { + "enum": [ + "LEFT", + "CENTER", + "RIGHT" + ], + "type": "string" + }, + "ReferenceLineLabelVerticalPosition": { + "enum": [ + "ABOVE", + "BELOW" + ], + "type": "string" + }, + "ReferenceLinePatternType": { + "enum": [ + "SOLID", + "DASHED", + "DOTTED" + ], + "type": "string" + }, + "ReferenceLineSeriesType": { + "enum": [ + "BAR", + "LINE" + ], + "type": "string" + }, + "ReferenceLineStaticDataConfiguration": { + "additionalProperties": false, + "properties": { + "Value": { + "default": 0, + "type": "number" + } + }, + "required": [ + "Value" + ], + "type": "object" + }, + "ReferenceLineStyleConfiguration": { + "additionalProperties": false, + "properties": { + "Color": { + "pattern": "^#[A-F0-9]{6}$", + "type": "string" + }, + "Pattern": { + "$ref": "#/definitions/ReferenceLinePatternType" + } + }, + "type": "object" + }, + "ReferenceLineValueLabelConfiguration": { + "additionalProperties": false, + "properties": { + "FormatConfiguration": { + "$ref": "#/definitions/NumericFormatConfiguration" + }, + "RelativePosition": { + "$ref": "#/definitions/ReferenceLineValueLabelRelativePosition" + } + }, + "type": "object" + }, + "ReferenceLineValueLabelRelativePosition": { + "enum": [ + "BEFORE_CUSTOM_LABEL", + "AFTER_CUSTOM_LABEL" + ], + "type": "string" + }, + "RelativeDateTimeControlDisplayOptions": { + "additionalProperties": false, + "properties": { + "DateTimeFormat": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "InfoIconLabelOptions": { + "$ref": "#/definitions/SheetControlInfoIconLabelOptions" + }, + "TitleOptions": { + "$ref": "#/definitions/LabelOptions" + } + }, + "type": "object" + }, + "RelativeDateType": { + "enum": [ + "PREVIOUS", + "THIS", + "LAST", + "NOW", + "NEXT" + ], + "type": "string" + }, + "RelativeDatesFilter": { + "additionalProperties": false, + "properties": { + "AnchorDateConfiguration": { + "$ref": "#/definitions/AnchorDateConfiguration" + }, + "Column": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "DefaultFilterControlConfiguration": { + "$ref": "#/definitions/DefaultFilterControlConfiguration" + }, + "ExcludePeriodConfiguration": { + "$ref": "#/definitions/ExcludePeriodConfiguration" + }, + "FilterId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "MinimumGranularity": { + "$ref": "#/definitions/TimeGranularity" + }, + "NullOption": { + "$ref": "#/definitions/FilterNullOption" + }, + "ParameterName": { + "maxLength": 2048, + "minLength": 1, + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + "RelativeDateType": { + "$ref": "#/definitions/RelativeDateType" + }, + "RelativeDateValue": { + "default": null, + "type": "number" + }, + "TimeGranularity": { + "$ref": "#/definitions/TimeGranularity" + } + }, + "required": [ + "AnchorDateConfiguration", + "Column", + "FilterId", + "NullOption", + "RelativeDateType", + "TimeGranularity" + ], + "type": "object" + }, + "RelativeFontSize": { + "enum": [ + "EXTRA_SMALL", + "SMALL", + "MEDIUM", + "LARGE", + "EXTRA_LARGE" + ], + "type": "string" + }, + "ResizeOption": { + "enum": [ + "FIXED", + "RESPONSIVE" + ], + "type": "string" + }, + "ResourcePermission": { + "additionalProperties": false, + "description": "Permission for the resource.
", + "properties": { + "Actions": { + "description": "The IAM action to grant or revoke permissions on.
", + "items": { + "type": "string" + }, + "maxItems": 20, + "minItems": 1, + "type": "array" + }, + "Principal": { + "description": "The Amazon Resource Name (ARN) of the principal. This can be one of the\n following:
\nThe ARN of an Amazon QuickSight user or group associated with a data source or dataset. (This is common.)
\nThe ARN of an Amazon QuickSight user, group, or namespace associated with an analysis, dashboard, template, or theme. (This is common.)
\nThe ARN of an Amazon Web Services account root: This is an IAM ARN rather than a QuickSight\n ARN. Use this option only to share resources (templates) across Amazon Web Services accounts.\n (This is less common.)
\nA sheet, which is an object that contains a set of visuals that\n are viewed together on one page in Amazon QuickSight. Every analysis and dashboard\n contains at least one sheet. Each sheet contains at least one visualization widget, for\n example a chart, pivot table, or narrative insight. Sheets can be associated with other\n components, such as controls, filters, and so on.
", + "properties": { + "Name": { + "description": "The name of a sheet. This name is displayed on the sheet's tab in the Amazon QuickSight\n console.
", + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "SheetId": { + "description": "The unique identifier associated with a sheet.
", + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + } + }, + "type": "object" + }, + "SheetContentType": { + "enum": [ + "PAGINATED", + "INTERACTIVE" + ], + "type": "string" + }, + "SheetControlDateTimePickerType": { + "enum": [ + "SINGLE_VALUED", + "DATE_RANGE" + ], + "type": "string" + }, + "SheetControlInfoIconLabelOptions": { + "additionalProperties": false, + "properties": { + "InfoIconText": { + "maxLength": 100, + "minLength": 1, + "type": "string" + }, + "Visibility": { + "$ref": "#/definitions/Visibility" + } + }, + "type": "object" + }, + "SheetControlLayout": { + "additionalProperties": false, + "properties": { + "Configuration": { + "$ref": "#/definitions/SheetControlLayoutConfiguration" + } + }, + "required": [ + "Configuration" + ], + "type": "object" + }, + "SheetControlLayoutConfiguration": { + "additionalProperties": false, + "properties": { + "GridLayout": { + "$ref": "#/definitions/GridLayoutConfiguration" + } + }, + "type": "object" + }, + "SheetControlListType": { + "enum": [ + "MULTI_SELECT", + "SINGLE_SELECT" + ], + "type": "string" + }, + "SheetControlSliderType": { + "enum": [ + "SINGLE_POINT", + "RANGE" + ], + "type": "string" + }, + "SheetDefinition": { + "additionalProperties": false, + "properties": { + "ContentType": { + "$ref": "#/definitions/SheetContentType" + }, + "Description": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "FilterControls": { + "items": { + "$ref": "#/definitions/FilterControl" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "Images": { + "items": { + "$ref": "#/definitions/SheetImage" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + }, + "Layouts": { + "items": { + "$ref": "#/definitions/Layout" + }, + "maxItems": 1, + "minItems": 1, + "type": "array" + }, + "Name": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "ParameterControls": { + "items": { + "$ref": "#/definitions/ParameterControl" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "SheetControlLayouts": { + "items": { + "$ref": "#/definitions/SheetControlLayout" + }, + "maxItems": 1, + "minItems": 0, + "type": "array" + }, + "SheetId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "TextBoxes": { + "items": { + "$ref": "#/definitions/SheetTextBox" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + }, + "Title": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "Visuals": { + "items": { + "$ref": "#/definitions/Visual" + }, + "maxItems": 50, + "minItems": 0, + "type": "array" + } + }, + "required": [ + "SheetId" + ], + "type": "object" + }, + "SheetElementConfigurationOverrides": { + "additionalProperties": false, + "properties": { + "Visibility": { + "$ref": "#/definitions/Visibility" + } + }, + "type": "object" + }, + "SheetElementRenderingRule": { + "additionalProperties": false, + "properties": { + "ConfigurationOverrides": { + "$ref": "#/definitions/SheetElementConfigurationOverrides" + }, + "Expression": { + "maxLength": 4096, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "ConfigurationOverrides", + "Expression" + ], + "type": "object" + }, + "SheetImage": { + "additionalProperties": false, + "properties": { + "Actions": { + "items": { + "$ref": "#/definitions/ImageCustomAction" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + }, + "ImageContentAltText": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "Interactions": { + "$ref": "#/definitions/ImageInteractionOptions" + }, + "Scaling": { + "$ref": "#/definitions/SheetImageScalingConfiguration" + }, + "SheetImageId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "Source": { + "$ref": "#/definitions/SheetImageSource" + }, + "Tooltip": { + "$ref": "#/definitions/SheetImageTooltipConfiguration" + } + }, + "required": [ + "SheetImageId", + "Source" + ], + "type": "object" + }, + "SheetImageScalingConfiguration": { + "additionalProperties": false, + "properties": { + "ScalingType": { + "$ref": "#/definitions/SheetImageScalingType" + } + }, + "type": "object" + }, + "SheetImageScalingType": { + "enum": [ + "SCALE_TO_WIDTH", + "SCALE_TO_HEIGHT", + "SCALE_TO_CONTAINER", + "SCALE_NONE" + ], + "type": "string" + }, + "SheetImageSource": { + "additionalProperties": false, + "properties": { + "SheetImageStaticFileSource": { + "$ref": "#/definitions/SheetImageStaticFileSource" + } + }, + "type": "object" + }, + "SheetImageStaticFileSource": { + "additionalProperties": false, + "properties": { + "StaticFileId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + } + }, + "required": [ + "StaticFileId" + ], + "type": "object" + }, + "SheetImageTooltipConfiguration": { + "additionalProperties": false, + "properties": { + "TooltipText": { + "$ref": "#/definitions/SheetImageTooltipText" + }, + "Visibility": { + "$ref": "#/definitions/Visibility" + } + }, + "type": "object" + }, + "SheetImageTooltipText": { + "additionalProperties": false, + "properties": { + "PlainText": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + } + }, + "type": "object" + }, + "SheetTextBox": { + "additionalProperties": false, + "properties": { + "Content": { + "maxLength": 150000, + "minLength": 0, + "type": "string" + }, + "SheetTextBoxId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + } + }, + "required": [ + "SheetTextBoxId" + ], + "type": "object" + }, + "SheetVisualScopingConfiguration": { + "additionalProperties": false, + "properties": { + "Scope": { + "$ref": "#/definitions/FilterVisualScope" + }, + "SheetId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "VisualIds": { + "items": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "maxItems": 50, + "minItems": 0, + "type": "array" + } + }, + "required": [ + "Scope", + "SheetId" + ], + "type": "object" + }, + "ShortFormatText": { + "additionalProperties": false, + "properties": { + "PlainText": { + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "RichText": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + } + }, + "type": "object" + }, + "SimpleAttributeAggregationFunction": { + "enum": [ + "UNIQUE_VALUE" + ], + "type": "string" + }, + "SimpleClusterMarker": { + "additionalProperties": false, + "properties": { + "Color": { + "pattern": "^#[A-F0-9]{6}$", + "type": "string" + } + }, + "type": "object" + }, + "SimpleNumericalAggregationFunction": { + "enum": [ + "SUM", + "AVERAGE", + "MIN", + "MAX", + "COUNT", + "DISTINCT_COUNT", + "VAR", + "VARP", + "STDEV", + "STDEVP", + "MEDIAN" + ], + "type": "string" + }, + "SimpleTotalAggregationFunction": { + "enum": [ + "DEFAULT", + "SUM", + "AVERAGE", + "MIN", + "MAX", + "NONE" + ], + "type": "string" + }, + "SingleAxisOptions": { + "additionalProperties": false, + "properties": { + "YAxisOptions": { + "$ref": "#/definitions/YAxisOptions" + } + }, + "type": "object" + }, + "SingleYAxisOption": { + "enum": [ + "PRIMARY_Y_AXIS" + ], + "type": "string" + }, + "SliderControlDisplayOptions": { + "additionalProperties": false, + "properties": { + "InfoIconLabelOptions": { + "$ref": "#/definitions/SheetControlInfoIconLabelOptions" + }, + "TitleOptions": { + "$ref": "#/definitions/LabelOptions" + } + }, + "type": "object" + }, + "SmallMultiplesAxisPlacement": { + "enum": [ + "OUTSIDE", + "INSIDE" + ], + "type": "string" + }, + "SmallMultiplesAxisProperties": { + "additionalProperties": false, + "properties": { + "Placement": { + "$ref": "#/definitions/SmallMultiplesAxisPlacement" + }, + "Scale": { + "$ref": "#/definitions/SmallMultiplesAxisScale" + } + }, + "type": "object" + }, + "SmallMultiplesAxisScale": { + "enum": [ + "SHARED", + "INDEPENDENT" + ], + "type": "string" + }, + "SmallMultiplesOptions": { + "additionalProperties": false, + "properties": { + "MaxVisibleColumns": { + "maximum": 10, + "minimum": 1, + "type": "number" + }, + "MaxVisibleRows": { + "maximum": 10, + "minimum": 1, + "type": "number" + }, + "PanelConfiguration": { + "$ref": "#/definitions/PanelConfiguration" + }, + "XAxis": { + "$ref": "#/definitions/SmallMultiplesAxisProperties" + }, + "YAxis": { + "$ref": "#/definitions/SmallMultiplesAxisProperties" + } + }, + "type": "object" + }, + "SortDirection": { + "enum": [ + "ASC", + "DESC" + ], + "type": "string" + }, + "Spacing": { + "additionalProperties": false, + "properties": { + "Bottom": { + "description": "String based length that is composed of value and unit", + "type": "string" + }, + "Left": { + "description": "String based length that is composed of value and unit", + "type": "string" + }, + "Right": { + "description": "String based length that is composed of value and unit", + "type": "string" + }, + "Top": { + "description": "String based length that is composed of value and unit", + "type": "string" + } + }, + "type": "object" + }, + "SpatialStaticFile": { + "additionalProperties": false, + "properties": { + "Source": { + "$ref": "#/definitions/StaticFileSource" + }, + "StaticFileId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + } + }, + "required": [ + "StaticFileId" + ], + "type": "object" + }, + "SpecialValue": { + "enum": [ + "EMPTY", + "NULL", + "OTHER" + ], + "type": "string" + }, + "StaticFile": { + "additionalProperties": false, + "properties": { + "ImageStaticFile": { + "$ref": "#/definitions/ImageStaticFile" + }, + "SpatialStaticFile": { + "$ref": "#/definitions/SpatialStaticFile" + } + }, + "type": "object" + }, + "StaticFileS3SourceOptions": { + "additionalProperties": false, + "properties": { + "BucketName": { + "type": "string" + }, + "ObjectKey": { + "type": "string" + }, + "Region": { + "type": "string" + } + }, + "required": [ + "BucketName", + "ObjectKey", + "Region" + ], + "type": "object" + }, + "StaticFileSource": { + "additionalProperties": false, + "properties": { + "S3Options": { + "$ref": "#/definitions/StaticFileS3SourceOptions" + }, + "UrlOptions": { + "$ref": "#/definitions/StaticFileUrlSourceOptions" + } + }, + "type": "object" + }, + "StaticFileUrlSourceOptions": { + "additionalProperties": false, + "properties": { + "Url": { + "type": "string" + } + }, + "required": [ + "Url" + ], + "type": "object" + }, + "StringDefaultValues": { + "additionalProperties": false, + "properties": { + "DynamicValue": { + "$ref": "#/definitions/DynamicDefaultValue" + }, + "StaticValues": { + "items": { + "type": "string" + }, + "maxItems": 50000, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "StringFormatConfiguration": { + "additionalProperties": false, + "properties": { + "NullValueFormatConfiguration": { + "$ref": "#/definitions/NullValueFormatConfiguration" + }, + "NumericFormatConfiguration": { + "$ref": "#/definitions/NumericFormatConfiguration" + } + }, + "type": "object" + }, + "StringParameter": { + "additionalProperties": false, + "description": "A string parameter.
", + "properties": { + "Name": { + "description": "A display name for a string parameter.
", + "pattern": "\\S", + "type": "string" + }, + "Values": { + "description": "The values of a string parameter.
", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "Name", + "Values" + ], + "type": "object" + }, + "StringParameterDeclaration": { + "additionalProperties": false, + "properties": { + "DefaultValues": { + "$ref": "#/definitions/StringDefaultValues" + }, + "MappedDataSetParameters": { + "items": { + "$ref": "#/definitions/MappedDataSetParameter" + }, + "maxItems": 150, + "minItems": 0, + "type": "array" + }, + "Name": { + "maxLength": 2048, + "minLength": 1, + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + "ParameterValueType": { + "$ref": "#/definitions/ParameterValueType" + }, + "ValueWhenUnset": { + "$ref": "#/definitions/StringValueWhenUnsetConfiguration" + } + }, + "required": [ + "Name", + "ParameterValueType" + ], + "type": "object" + }, + "StringValueWhenUnsetConfiguration": { + "additionalProperties": false, + "properties": { + "CustomValue": { + "type": "string" + }, + "ValueWhenUnsetOption": { + "$ref": "#/definitions/ValueWhenUnsetOption" + } + }, + "type": "object" + }, + "StyledCellType": { + "enum": [ + "TOTAL", + "METRIC_HEADER", + "VALUE" + ], + "type": "string" + }, + "SubtotalOptions": { + "additionalProperties": false, + "properties": { + "CustomLabel": { + "type": "string" + }, + "FieldLevel": { + "$ref": "#/definitions/PivotTableSubtotalLevel" + }, + "FieldLevelOptions": { + "items": { + "$ref": "#/definitions/PivotTableFieldSubtotalOptions" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + }, + "MetricHeaderCellStyle": { + "$ref": "#/definitions/TableCellStyle" + }, + "StyleTargets": { + "items": { + "$ref": "#/definitions/TableStyleTarget" + }, + "maxItems": 3, + "minItems": 0, + "type": "array" + }, + "TotalCellStyle": { + "$ref": "#/definitions/TableCellStyle" + }, + "TotalsVisibility": { + "$ref": "#/definitions/Visibility" + }, + "ValueCellStyle": { + "$ref": "#/definitions/TableCellStyle" + } + }, + "type": "object" + }, + "TableAggregatedFieldWells": { + "additionalProperties": false, + "properties": { + "GroupBy": { + "items": { + "$ref": "#/definitions/DimensionField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "Values": { + "items": { + "$ref": "#/definitions/MeasureField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "TableBorderOptions": { + "additionalProperties": false, + "properties": { + "Color": { + "pattern": "^#[A-F0-9]{6}$", + "type": "string" + }, + "Style": { + "$ref": "#/definitions/TableBorderStyle" + }, + "Thickness": { + "maximum": 4, + "minimum": 1, + "type": "number" + } + }, + "type": "object" + }, + "TableBorderStyle": { + "enum": [ + "NONE", + "SOLID" + ], + "type": "string" + }, + "TableCellConditionalFormatting": { + "additionalProperties": false, + "properties": { + "FieldId": { + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "TextFormat": { + "$ref": "#/definitions/TextConditionalFormat" + } + }, + "required": [ + "FieldId" + ], + "type": "object" + }, + "TableCellImageScalingConfiguration": { + "enum": [ + "FIT_TO_CELL_HEIGHT", + "FIT_TO_CELL_WIDTH", + "DO_NOT_SCALE" + ], + "type": "string" + }, + "TableCellImageSizingConfiguration": { + "additionalProperties": false, + "properties": { + "TableCellImageScalingConfiguration": { + "$ref": "#/definitions/TableCellImageScalingConfiguration" + } + }, + "type": "object" + }, + "TableCellStyle": { + "additionalProperties": false, + "properties": { + "BackgroundColor": { + "pattern": "^#[A-F0-9]{6}$", + "type": "string" + }, + "Border": { + "$ref": "#/definitions/GlobalTableBorderOptions" + }, + "FontConfiguration": { + "$ref": "#/definitions/FontConfiguration" + }, + "Height": { + "maximum": 500, + "minimum": 8, + "type": "number" + }, + "HorizontalTextAlignment": { + "$ref": "#/definitions/HorizontalTextAlignment" + }, + "TextWrap": { + "$ref": "#/definitions/TextWrap" + }, + "VerticalTextAlignment": { + "$ref": "#/definitions/VerticalTextAlignment" + }, + "Visibility": { + "$ref": "#/definitions/Visibility" + } + }, + "type": "object" + }, + "TableConditionalFormatting": { + "additionalProperties": false, + "properties": { + "ConditionalFormattingOptions": { + "items": { + "$ref": "#/definitions/TableConditionalFormattingOption" + }, + "maxItems": 500, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "TableConditionalFormattingOption": { + "additionalProperties": false, + "properties": { + "Cell": { + "$ref": "#/definitions/TableCellConditionalFormatting" + }, + "Row": { + "$ref": "#/definitions/TableRowConditionalFormatting" + } + }, + "type": "object" + }, + "TableConfiguration": { + "additionalProperties": false, + "properties": { + "FieldOptions": { + "$ref": "#/definitions/TableFieldOptions" + }, + "FieldWells": { + "$ref": "#/definitions/TableFieldWells" + }, + "Interactions": { + "$ref": "#/definitions/VisualInteractionOptions" + }, + "PaginatedReportOptions": { + "$ref": "#/definitions/TablePaginatedReportOptions" + }, + "SortConfiguration": { + "$ref": "#/definitions/TableSortConfiguration" + }, + "TableInlineVisualizations": { + "items": { + "$ref": "#/definitions/TableInlineVisualization" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "TableOptions": { + "$ref": "#/definitions/TableOptions" + }, + "TotalOptions": { + "$ref": "#/definitions/TotalOptions" + } + }, + "type": "object" + }, + "TableFieldCustomIconContent": { + "additionalProperties": false, + "properties": { + "Icon": { + "$ref": "#/definitions/TableFieldIconSetType" + } + }, + "type": "object" + }, + "TableFieldCustomTextContent": { + "additionalProperties": false, + "properties": { + "FontConfiguration": { + "$ref": "#/definitions/FontConfiguration" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "FontConfiguration" + ], + "type": "object" + }, + "TableFieldIconSetType": { + "enum": [ + "LINK" + ], + "type": "string" + }, + "TableFieldImageConfiguration": { + "additionalProperties": false, + "properties": { + "SizingOptions": { + "$ref": "#/definitions/TableCellImageSizingConfiguration" + } + }, + "type": "object" + }, + "TableFieldLinkConfiguration": { + "additionalProperties": false, + "properties": { + "Content": { + "$ref": "#/definitions/TableFieldLinkContentConfiguration" + }, + "Target": { + "$ref": "#/definitions/URLTargetConfiguration" + } + }, + "required": [ + "Content", + "Target" + ], + "type": "object" + }, + "TableFieldLinkContentConfiguration": { + "additionalProperties": false, + "properties": { + "CustomIconContent": { + "$ref": "#/definitions/TableFieldCustomIconContent" + }, + "CustomTextContent": { + "$ref": "#/definitions/TableFieldCustomTextContent" + } + }, + "type": "object" + }, + "TableFieldOption": { + "additionalProperties": false, + "properties": { + "CustomLabel": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "FieldId": { + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "URLStyling": { + "$ref": "#/definitions/TableFieldURLConfiguration" + }, + "Visibility": { + "$ref": "#/definitions/Visibility" + }, + "Width": { + "description": "String based length that is composed of value and unit in px", + "type": "string" + } + }, + "required": [ + "FieldId" + ], + "type": "object" + }, + "TableFieldOptions": { + "additionalProperties": false, + "properties": { + "Order": { + "items": { + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "PinnedFieldOptions": { + "$ref": "#/definitions/TablePinnedFieldOptions" + }, + "SelectedFieldOptions": { + "items": { + "$ref": "#/definitions/TableFieldOption" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + }, + "TransposedTableOptions": { + "items": { + "$ref": "#/definitions/TransposedTableOption" + }, + "maxItems": 10001, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "TableFieldURLConfiguration": { + "additionalProperties": false, + "properties": { + "ImageConfiguration": { + "$ref": "#/definitions/TableFieldImageConfiguration" + }, + "LinkConfiguration": { + "$ref": "#/definitions/TableFieldLinkConfiguration" + } + }, + "type": "object" + }, + "TableFieldWells": { + "additionalProperties": false, + "properties": { + "TableAggregatedFieldWells": { + "$ref": "#/definitions/TableAggregatedFieldWells" + }, + "TableUnaggregatedFieldWells": { + "$ref": "#/definitions/TableUnaggregatedFieldWells" + } + }, + "type": "object" + }, + "TableInlineVisualization": { + "additionalProperties": false, + "properties": { + "DataBars": { + "$ref": "#/definitions/DataBarsOptions" + } + }, + "type": "object" + }, + "TableOptions": { + "additionalProperties": false, + "properties": { + "CellStyle": { + "$ref": "#/definitions/TableCellStyle" + }, + "HeaderStyle": { + "$ref": "#/definitions/TableCellStyle" + }, + "Orientation": { + "$ref": "#/definitions/TableOrientation" + }, + "RowAlternateColorOptions": { + "$ref": "#/definitions/RowAlternateColorOptions" + } + }, + "type": "object" + }, + "TableOrientation": { + "enum": [ + "VERTICAL", + "HORIZONTAL" + ], + "type": "string" + }, + "TablePaginatedReportOptions": { + "additionalProperties": false, + "properties": { + "OverflowColumnHeaderVisibility": { + "$ref": "#/definitions/Visibility" + }, + "VerticalOverflowVisibility": { + "$ref": "#/definitions/Visibility" + } + }, + "type": "object" + }, + "TablePinnedFieldOptions": { + "additionalProperties": false, + "properties": { + "PinnedLeftFields": { + "items": { + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "maxItems": 201, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "TableRowConditionalFormatting": { + "additionalProperties": false, + "properties": { + "BackgroundColor": { + "$ref": "#/definitions/ConditionalFormattingColor" + }, + "TextColor": { + "$ref": "#/definitions/ConditionalFormattingColor" + } + }, + "type": "object" + }, + "TableSideBorderOptions": { + "additionalProperties": false, + "properties": { + "Bottom": { + "$ref": "#/definitions/TableBorderOptions" + }, + "InnerHorizontal": { + "$ref": "#/definitions/TableBorderOptions" + }, + "InnerVertical": { + "$ref": "#/definitions/TableBorderOptions" + }, + "Left": { + "$ref": "#/definitions/TableBorderOptions" + }, + "Right": { + "$ref": "#/definitions/TableBorderOptions" + }, + "Top": { + "$ref": "#/definitions/TableBorderOptions" + } + }, + "type": "object" + }, + "TableSortConfiguration": { + "additionalProperties": false, + "properties": { + "PaginationConfiguration": { + "$ref": "#/definitions/PaginationConfiguration" + }, + "RowSort": { + "items": { + "$ref": "#/definitions/FieldSortOptions" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "TableStyleTarget": { + "additionalProperties": false, + "properties": { + "CellType": { + "$ref": "#/definitions/StyledCellType" + } + }, + "required": [ + "CellType" + ], + "type": "object" + }, + "TableTotalsPlacement": { + "enum": [ + "START", + "END", + "AUTO" + ], + "type": "string" + }, + "TableTotalsScrollStatus": { + "enum": [ + "PINNED", + "SCROLLED" + ], + "type": "string" + }, + "TableUnaggregatedFieldWells": { + "additionalProperties": false, + "properties": { + "Values": { + "items": { + "$ref": "#/definitions/UnaggregatedField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "TableVisual": { + "additionalProperties": false, + "properties": { + "Actions": { + "items": { + "$ref": "#/definitions/VisualCustomAction" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + }, + "ChartConfiguration": { + "$ref": "#/definitions/TableConfiguration" + }, + "ConditionalFormatting": { + "$ref": "#/definitions/TableConditionalFormatting" + }, + "Subtitle": { + "$ref": "#/definitions/VisualSubtitleLabelOptions" + }, + "Title": { + "$ref": "#/definitions/VisualTitleLabelOptions" + }, + "VisualContentAltText": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "VisualId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + } + }, + "required": [ + "VisualId" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "description": "The key or keys of the key-value pairs for the resource tag or tags assigned to the\n resource.
", + "properties": { + "Key": { + "description": "Tag key.
", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "Tag value.
", + "maxLength": 256, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "TargetVisualOptions": { + "enum": [ + "ALL_VISUALS" + ], + "type": "string" + }, + "TextAreaControlDisplayOptions": { + "additionalProperties": false, + "properties": { + "InfoIconLabelOptions": { + "$ref": "#/definitions/SheetControlInfoIconLabelOptions" + }, + "PlaceholderOptions": { + "$ref": "#/definitions/TextControlPlaceholderOptions" + }, + "TitleOptions": { + "$ref": "#/definitions/LabelOptions" + } + }, + "type": "object" + }, + "TextConditionalFormat": { + "additionalProperties": false, + "properties": { + "BackgroundColor": { + "$ref": "#/definitions/ConditionalFormattingColor" + }, + "Icon": { + "$ref": "#/definitions/ConditionalFormattingIcon" + }, + "TextColor": { + "$ref": "#/definitions/ConditionalFormattingColor" + } + }, + "type": "object" + }, + "TextControlPlaceholderOptions": { + "additionalProperties": false, + "properties": { + "Visibility": { + "$ref": "#/definitions/Visibility" + } + }, + "type": "object" + }, + "TextFieldControlDisplayOptions": { + "additionalProperties": false, + "properties": { + "InfoIconLabelOptions": { + "$ref": "#/definitions/SheetControlInfoIconLabelOptions" + }, + "PlaceholderOptions": { + "$ref": "#/definitions/TextControlPlaceholderOptions" + }, + "TitleOptions": { + "$ref": "#/definitions/LabelOptions" + } + }, + "type": "object" + }, + "TextWrap": { + "enum": [ + "NONE", + "WRAP" + ], + "type": "string" + }, + "ThousandSeparatorOptions": { + "additionalProperties": false, + "properties": { + "GroupingStyle": { + "$ref": "#/definitions/DigitGroupingStyle" + }, + "Symbol": { + "$ref": "#/definitions/NumericSeparatorSymbol" + }, + "Visibility": { + "$ref": "#/definitions/Visibility" + } + }, + "type": "object" + }, + "TimeBasedForecastProperties": { + "additionalProperties": false, + "properties": { + "LowerBoundary": { + "default": null, + "type": "number" + }, + "PeriodsBackward": { + "maximum": 1000, + "minimum": 0, + "type": "number" + }, + "PeriodsForward": { + "maximum": 1000, + "minimum": 1, + "type": "number" + }, + "PredictionInterval": { + "maximum": 95, + "minimum": 50, + "type": "number" + }, + "Seasonality": { + "maximum": 180, + "minimum": 1, + "type": "number" + }, + "UpperBoundary": { + "default": null, + "type": "number" + } + }, + "type": "object" + }, + "TimeEqualityFilter": { + "additionalProperties": false, + "properties": { + "Column": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "DefaultFilterControlConfiguration": { + "$ref": "#/definitions/DefaultFilterControlConfiguration" + }, + "FilterId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "ParameterName": { + "maxLength": 2048, + "minLength": 1, + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + "RollingDate": { + "$ref": "#/definitions/RollingDateConfiguration" + }, + "TimeGranularity": { + "$ref": "#/definitions/TimeGranularity" + }, + "Value": { + "format": "date-time", + "type": "string" + } + }, + "required": [ + "Column", + "FilterId" + ], + "type": "object" + }, + "TimeGranularity": { + "enum": [ + "YEAR", + "QUARTER", + "MONTH", + "WEEK", + "DAY", + "HOUR", + "MINUTE", + "SECOND", + "MILLISECOND" + ], + "type": "string" + }, + "TimeRangeDrillDownFilter": { + "additionalProperties": false, + "properties": { + "Column": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "RangeMaximum": { + "format": "date-time", + "type": "string" + }, + "RangeMinimum": { + "format": "date-time", + "type": "string" + }, + "TimeGranularity": { + "$ref": "#/definitions/TimeGranularity" + } + }, + "required": [ + "Column", + "RangeMaximum", + "RangeMinimum", + "TimeGranularity" + ], + "type": "object" + }, + "TimeRangeFilter": { + "additionalProperties": false, + "properties": { + "Column": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "DefaultFilterControlConfiguration": { + "$ref": "#/definitions/DefaultFilterControlConfiguration" + }, + "ExcludePeriodConfiguration": { + "$ref": "#/definitions/ExcludePeriodConfiguration" + }, + "FilterId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "IncludeMaximum": { + "default": null, + "type": "boolean" + }, + "IncludeMinimum": { + "default": null, + "type": "boolean" + }, + "NullOption": { + "$ref": "#/definitions/FilterNullOption" + }, + "RangeMaximumValue": { + "$ref": "#/definitions/TimeRangeFilterValue" + }, + "RangeMinimumValue": { + "$ref": "#/definitions/TimeRangeFilterValue" + }, + "TimeGranularity": { + "$ref": "#/definitions/TimeGranularity" + } + }, + "required": [ + "Column", + "FilterId", + "NullOption" + ], + "type": "object" + }, + "TimeRangeFilterValue": { + "additionalProperties": false, + "properties": { + "Parameter": { + "maxLength": 2048, + "minLength": 1, + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + "RollingDate": { + "$ref": "#/definitions/RollingDateConfiguration" + }, + "StaticValue": { + "format": "date-time", + "type": "string" + } + }, + "type": "object" + }, + "TooltipItem": { + "additionalProperties": false, + "properties": { + "ColumnTooltipItem": { + "$ref": "#/definitions/ColumnTooltipItem" + }, + "FieldTooltipItem": { + "$ref": "#/definitions/FieldTooltipItem" + } + }, + "type": "object" + }, + "TooltipOptions": { + "additionalProperties": false, + "properties": { + "FieldBasedTooltip": { + "$ref": "#/definitions/FieldBasedTooltip" + }, + "SelectedTooltipType": { + "$ref": "#/definitions/SelectedTooltipType" + }, + "TooltipVisibility": { + "$ref": "#/definitions/Visibility" + } + }, + "type": "object" + }, + "TooltipTarget": { + "enum": [ + "BOTH", + "BAR", + "LINE" + ], + "type": "string" + }, + "TooltipTitleType": { + "enum": [ + "NONE", + "PRIMARY_VALUE" + ], + "type": "string" + }, + "TopBottomComputationType": { + "enum": [ + "TOP", + "BOTTOM" + ], + "type": "string" + }, + "TopBottomFilter": { + "additionalProperties": false, + "properties": { + "AggregationSortConfigurations": { + "items": { + "$ref": "#/definitions/AggregationSortConfiguration" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + }, + "Column": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "DefaultFilterControlConfiguration": { + "$ref": "#/definitions/DefaultFilterControlConfiguration" + }, + "FilterId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "Limit": { + "default": null, + "type": "number" + }, + "ParameterName": { + "maxLength": 2048, + "minLength": 1, + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + "TimeGranularity": { + "$ref": "#/definitions/TimeGranularity" + } + }, + "required": [ + "AggregationSortConfigurations", + "Column", + "FilterId" + ], + "type": "object" + }, + "TopBottomMoversComputation": { + "additionalProperties": false, + "properties": { + "Category": { + "$ref": "#/definitions/DimensionField" + }, + "ComputationId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "MoverSize": { + "default": 0, + "maximum": 20, + "minimum": 1, + "type": "number" + }, + "Name": { + "type": "string" + }, + "SortOrder": { + "$ref": "#/definitions/TopBottomSortOrder" + }, + "Time": { + "$ref": "#/definitions/DimensionField" + }, + "Type": { + "$ref": "#/definitions/TopBottomComputationType" + }, + "Value": { + "$ref": "#/definitions/MeasureField" + } + }, + "required": [ + "ComputationId", + "Type" + ], + "type": "object" + }, + "TopBottomRankedComputation": { + "additionalProperties": false, + "properties": { + "Category": { + "$ref": "#/definitions/DimensionField" + }, + "ComputationId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "Name": { + "type": "string" + }, + "ResultSize": { + "default": 0, + "maximum": 20, + "minimum": 1, + "type": "number" + }, + "Type": { + "$ref": "#/definitions/TopBottomComputationType" + }, + "Value": { + "$ref": "#/definitions/MeasureField" + } + }, + "required": [ + "ComputationId", + "Type" + ], + "type": "object" + }, + "TopBottomSortOrder": { + "enum": [ + "PERCENT_DIFFERENCE", + "ABSOLUTE_DIFFERENCE" + ], + "type": "string" + }, + "TotalAggregationComputation": { + "additionalProperties": false, + "properties": { + "ComputationId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "Name": { + "type": "string" + }, + "Value": { + "$ref": "#/definitions/MeasureField" + } + }, + "required": [ + "ComputationId" + ], + "type": "object" + }, + "TotalAggregationFunction": { + "additionalProperties": false, + "properties": { + "SimpleTotalAggregationFunction": { + "$ref": "#/definitions/SimpleTotalAggregationFunction" + } + }, + "type": "object" + }, + "TotalAggregationOption": { + "additionalProperties": false, + "properties": { + "FieldId": { + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "TotalAggregationFunction": { + "$ref": "#/definitions/TotalAggregationFunction" + } + }, + "required": [ + "FieldId", + "TotalAggregationFunction" + ], + "type": "object" + }, + "TotalOptions": { + "additionalProperties": false, + "properties": { + "CustomLabel": { + "type": "string" + }, + "Placement": { + "$ref": "#/definitions/TableTotalsPlacement" + }, + "ScrollStatus": { + "$ref": "#/definitions/TableTotalsScrollStatus" + }, + "TotalAggregationOptions": { + "items": { + "$ref": "#/definitions/TotalAggregationOption" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "TotalCellStyle": { + "$ref": "#/definitions/TableCellStyle" + }, + "TotalsVisibility": { + "$ref": "#/definitions/Visibility" + } + }, + "type": "object" + }, + "TransposedColumnType": { + "enum": [ + "ROW_HEADER_COLUMN", + "VALUE_COLUMN" + ], + "type": "string" + }, + "TransposedTableOption": { + "additionalProperties": false, + "properties": { + "ColumnIndex": { + "maximum": 9999, + "minimum": 0, + "type": "number" + }, + "ColumnType": { + "$ref": "#/definitions/TransposedColumnType" + }, + "ColumnWidth": { + "description": "String based length that is composed of value and unit in px", + "type": "string" + } + }, + "required": [ + "ColumnType" + ], + "type": "object" + }, + "TreeMapAggregatedFieldWells": { + "additionalProperties": false, + "properties": { + "Colors": { + "items": { + "$ref": "#/definitions/MeasureField" + }, + "maxItems": 1, + "minItems": 0, + "type": "array" + }, + "Groups": { + "items": { + "$ref": "#/definitions/DimensionField" + }, + "maxItems": 1, + "minItems": 0, + "type": "array" + }, + "Sizes": { + "items": { + "$ref": "#/definitions/MeasureField" + }, + "maxItems": 1, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "TreeMapConfiguration": { + "additionalProperties": false, + "properties": { + "ColorLabelOptions": { + "$ref": "#/definitions/ChartAxisLabelOptions" + }, + "ColorScale": { + "$ref": "#/definitions/ColorScale" + }, + "DataLabels": { + "$ref": "#/definitions/DataLabelOptions" + }, + "FieldWells": { + "$ref": "#/definitions/TreeMapFieldWells" + }, + "GroupLabelOptions": { + "$ref": "#/definitions/ChartAxisLabelOptions" + }, + "Interactions": { + "$ref": "#/definitions/VisualInteractionOptions" + }, + "Legend": { + "$ref": "#/definitions/LegendOptions" + }, + "SizeLabelOptions": { + "$ref": "#/definitions/ChartAxisLabelOptions" + }, + "SortConfiguration": { + "$ref": "#/definitions/TreeMapSortConfiguration" + }, + "Tooltip": { + "$ref": "#/definitions/TooltipOptions" + } + }, + "type": "object" + }, + "TreeMapFieldWells": { + "additionalProperties": false, + "properties": { + "TreeMapAggregatedFieldWells": { + "$ref": "#/definitions/TreeMapAggregatedFieldWells" + } + }, + "type": "object" + }, + "TreeMapSortConfiguration": { + "additionalProperties": false, + "properties": { + "TreeMapGroupItemsLimitConfiguration": { + "$ref": "#/definitions/ItemsLimitConfiguration" + }, + "TreeMapSort": { + "items": { + "$ref": "#/definitions/FieldSortOptions" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "TreeMapVisual": { + "additionalProperties": false, + "properties": { + "Actions": { + "items": { + "$ref": "#/definitions/VisualCustomAction" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + }, + "ChartConfiguration": { + "$ref": "#/definitions/TreeMapConfiguration" + }, + "ColumnHierarchies": { + "items": { + "$ref": "#/definitions/ColumnHierarchy" + }, + "maxItems": 2, + "minItems": 0, + "type": "array" + }, + "Subtitle": { + "$ref": "#/definitions/VisualSubtitleLabelOptions" + }, + "Title": { + "$ref": "#/definitions/VisualTitleLabelOptions" + }, + "VisualContentAltText": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "VisualId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + } + }, + "required": [ + "VisualId" + ], + "type": "object" + }, + "TrendArrowOptions": { + "additionalProperties": false, + "properties": { + "Visibility": { + "$ref": "#/definitions/Visibility" + } + }, + "type": "object" + }, + "URLTargetConfiguration": { + "enum": [ + "NEW_TAB", + "NEW_WINDOW", + "SAME_TAB" + ], + "type": "string" + }, + "UnaggregatedField": { + "additionalProperties": false, + "properties": { + "Column": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "FieldId": { + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "FormatConfiguration": { + "$ref": "#/definitions/FormatConfiguration" + } + }, + "required": [ + "Column", + "FieldId" + ], + "type": "object" + }, + "UniqueValuesComputation": { + "additionalProperties": false, + "properties": { + "Category": { + "$ref": "#/definitions/DimensionField" + }, + "ComputationId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "Name": { + "type": "string" + } + }, + "required": [ + "ComputationId" + ], + "type": "object" + }, + "ValidationStrategy": { + "additionalProperties": false, + "description": "The option to relax the validation that is required to create and update analyses, dashboards, and templates with definition objects. When you set this value to LENIENT, validation is skipped for specific errors.
The Amazon Resource Name (ARN) of the analysis.
", + "type": "string" + }, + "AwsAccountId": { + "maxLength": 12, + "minLength": 12, + "pattern": "^[0-9]{12}$", + "type": "string" + }, + "CreatedTime": { + "description": "The time that the analysis was created.
", + "format": "date-time", + "type": "string" + }, + "DataSetArns": { + "description": "The ARNs of the datasets of the analysis.
", + "items": { + "type": "string" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + }, + "Definition": { + "$ref": "#/definitions/AnalysisDefinition" + }, + "Errors": { + "description": "Errors associated with the analysis.
", + "items": { + "$ref": "#/definitions/AnalysisError" + }, + "minItems": 1, + "type": "array" + }, + "FolderArns": { + "items": { + "type": "string" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + }, + "LastUpdatedTime": { + "description": "The time that the analysis was last updated.
", + "format": "date-time", + "type": "string" + }, + "Name": { + "description": "The descriptive name of the analysis.
", + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "Parameters": { + "$ref": "#/definitions/Parameters" + }, + "Permissions": { + "items": { + "$ref": "#/definitions/ResourcePermission" + }, + "maxItems": 64, + "minItems": 1, + "type": "array" + }, + "Sheets": { + "description": "A list of the associated sheets with the unique identifier and name of each sheet.
", + "items": { + "$ref": "#/definitions/Sheet" + }, + "maxItems": 20, + "minItems": 0, + "type": "array" + }, + "SourceEntity": { + "$ref": "#/definitions/AnalysisSourceEntity" + }, + "Status": { + "$ref": "#/definitions/ResourceStatus" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 200, + "minItems": 1, + "type": "array" + }, + "ThemeArn": { + "description": "The ARN of the theme of the analysis.
", + "type": "string" + }, + "ValidationStrategy": { + "$ref": "#/definitions/ValidationStrategy" + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/CreatedTime", + "/properties/DataSetArns", + "/properties/LastUpdatedTime" + ], + "required": [ + "AwsAccountId", + "AnalysisId", + "Name" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-quicksight", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "quicksight:TagResource", + "quicksight:UntagResource", + "quicksight:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::QuickSight::Analysis", + "writeOnlyProperties": [ + "/properties/Definition", + "/properties/Parameters", + "/properties/SourceEntity", + "/properties/Status", + "/properties/ValidationStrategy", + "/properties/FolderArns" + ] +} diff --git a/src/schema/aws-quicksight-custompermissions.json b/src/schema/aws-quicksight-custompermissions.json new file mode 100644 index 00000000..6e18afc9 --- /dev/null +++ b/src/schema/aws-quicksight-custompermissions.json @@ -0,0 +1,180 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/AwsAccountId", + "/properties/CustomPermissionsName" + ], + "definitions": { + "Capabilities": { + "additionalProperties": false, + "properties": { + "AddOrRunAnomalyDetectionForAnalyses": { + "$ref": "#/definitions/CapabilityState" + }, + "CreateAndUpdateDashboardEmailReports": { + "$ref": "#/definitions/CapabilityState" + }, + "CreateAndUpdateDataSources": { + "$ref": "#/definitions/CapabilityState" + }, + "CreateAndUpdateDatasets": { + "$ref": "#/definitions/CapabilityState" + }, + "CreateAndUpdateThemes": { + "$ref": "#/definitions/CapabilityState" + }, + "CreateAndUpdateThresholdAlerts": { + "$ref": "#/definitions/CapabilityState" + }, + "CreateSPICEDataset": { + "$ref": "#/definitions/CapabilityState" + }, + "CreateSharedFolders": { + "$ref": "#/definitions/CapabilityState" + }, + "ExportToCsv": { + "$ref": "#/definitions/CapabilityState" + }, + "ExportToExcel": { + "$ref": "#/definitions/CapabilityState" + }, + "RenameSharedFolders": { + "$ref": "#/definitions/CapabilityState" + }, + "ShareAnalyses": { + "$ref": "#/definitions/CapabilityState" + }, + "ShareDashboards": { + "$ref": "#/definitions/CapabilityState" + }, + "ShareDataSources": { + "$ref": "#/definitions/CapabilityState" + }, + "ShareDatasets": { + "$ref": "#/definitions/CapabilityState" + }, + "SubscribeDashboardEmailReports": { + "$ref": "#/definitions/CapabilityState" + }, + "ViewAccountSPICECapacity": { + "$ref": "#/definitions/CapabilityState" + } + }, + "type": "object" + }, + "CapabilityState": { + "enum": [ + "DENY" + ], + "type": "string" + }, + "Tag": { + "additionalProperties": false, + "description": "The key or keys of the key-value pairs for the resource tag or tags assigned to the\n resource.
", + "properties": { + "Key": { + "description": "Tag key.
", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "Tag value.
", + "maxLength": 256, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "Definition of the AWS::QuickSight::CustomPermissions Resource Type.", + "handlers": { + "create": { + "permissions": [ + "quicksight:CreateCustomPermissions", + "quicksight:TagResource" + ] + }, + "delete": { + "permissions": [ + "quicksight:DeleteCustomPermissions" + ] + }, + "list": { + "permissions": [ + "quicksight:ListCustomPermissions" + ] + }, + "read": { + "permissions": [ + "quicksight:DescribeCustomPermissions", + "quicksight:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "quicksight:UpdateCustomPermissions", + "quicksight:TagResource", + "quicksight:UntagResource", + "quicksight:ListTagsForResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/AwsAccountId", + "/properties/CustomPermissionsName" + ], + "properties": { + "Arn": { + "type": "string" + }, + "AwsAccountId": { + "maxLength": 12, + "minLength": 12, + "pattern": "^[0-9]{12}$", + "type": "string" + }, + "Capabilities": { + "$ref": "#/definitions/Capabilities" + }, + "CustomPermissionsName": { + "maxLength": 64, + "minLength": 1, + "pattern": "^[a-zA-Z0-9+=,.@_-]+$", + "type": "string" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 200, + "minItems": 1, + "type": "array" + } + }, + "readOnlyProperties": [ + "/properties/Arn" + ], + "required": [ + "AwsAccountId", + "CustomPermissionsName" + ], + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "quicksight:TagResource", + "quicksight:UntagResource", + "quicksight:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::QuickSight::CustomPermissions" +} diff --git a/src/schema/aws-quicksight-dashboard.json b/src/schema/aws-quicksight-dashboard.json new file mode 100644 index 00000000..a89117eb --- /dev/null +++ b/src/schema/aws-quicksight-dashboard.json @@ -0,0 +1,13161 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/AwsAccountId", + "/properties/DashboardId" + ], + "definitions": { + "AdHocFilteringOption": { + "additionalProperties": false, + "description": "An ad hoc (one-time) filtering option.
", + "properties": { + "AvailabilityStatus": { + "$ref": "#/definitions/DashboardBehavior" + } + }, + "type": "object" + }, + "AggregationFunction": { + "additionalProperties": false, + "properties": { + "AttributeAggregationFunction": { + "$ref": "#/definitions/AttributeAggregationFunction" + }, + "CategoricalAggregationFunction": { + "$ref": "#/definitions/CategoricalAggregationFunction" + }, + "DateAggregationFunction": { + "$ref": "#/definitions/DateAggregationFunction" + }, + "NumericalAggregationFunction": { + "$ref": "#/definitions/NumericalAggregationFunction" + } + }, + "type": "object" + }, + "AggregationSortConfiguration": { + "additionalProperties": false, + "properties": { + "AggregationFunction": { + "$ref": "#/definitions/AggregationFunction" + }, + "Column": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "SortDirection": { + "$ref": "#/definitions/SortDirection" + } + }, + "required": [ + "Column", + "SortDirection" + ], + "type": "object" + }, + "AllSheetsFilterScopeConfiguration": { + "additionalProperties": false, + "type": "object" + }, + "AnalysisDefaults": { + "additionalProperties": false, + "properties": { + "DefaultNewSheetConfiguration": { + "$ref": "#/definitions/DefaultNewSheetConfiguration" + } + }, + "required": [ + "DefaultNewSheetConfiguration" + ], + "type": "object" + }, + "AnchorDateConfiguration": { + "additionalProperties": false, + "properties": { + "AnchorOption": { + "$ref": "#/definitions/AnchorOption" + }, + "ParameterName": { + "maxLength": 2048, + "minLength": 1, + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + } + }, + "type": "object" + }, + "AnchorOption": { + "enum": [ + "NOW" + ], + "type": "string" + }, + "ArcAxisConfiguration": { + "additionalProperties": false, + "properties": { + "Range": { + "$ref": "#/definitions/ArcAxisDisplayRange" + }, + "ReserveRange": { + "default": 0, + "type": "number" + } + }, + "type": "object" + }, + "ArcAxisDisplayRange": { + "additionalProperties": false, + "properties": { + "Max": { + "default": null, + "type": "number" + }, + "Min": { + "default": null, + "type": "number" + } + }, + "type": "object" + }, + "ArcConfiguration": { + "additionalProperties": false, + "properties": { + "ArcAngle": { + "default": null, + "type": "number" + }, + "ArcThickness": { + "$ref": "#/definitions/ArcThicknessOptions" + } + }, + "type": "object" + }, + "ArcOptions": { + "additionalProperties": false, + "properties": { + "ArcThickness": { + "$ref": "#/definitions/ArcThickness" + } + }, + "type": "object" + }, + "ArcThickness": { + "enum": [ + "SMALL", + "MEDIUM", + "LARGE", + "WHOLE" + ], + "type": "string" + }, + "ArcThicknessOptions": { + "enum": [ + "SMALL", + "MEDIUM", + "LARGE" + ], + "type": "string" + }, + "AssetOptions": { + "additionalProperties": false, + "properties": { + "Timezone": { + "type": "string" + }, + "WeekStart": { + "$ref": "#/definitions/DayOfTheWeek" + } + }, + "type": "object" + }, + "AttributeAggregationFunction": { + "additionalProperties": false, + "properties": { + "SimpleAttributeAggregation": { + "$ref": "#/definitions/SimpleAttributeAggregationFunction" + }, + "ValueForMultipleValues": { + "type": "string" + } + }, + "type": "object" + }, + "AxisBinding": { + "enum": [ + "PRIMARY_YAXIS", + "SECONDARY_YAXIS" + ], + "type": "string" + }, + "AxisDataOptions": { + "additionalProperties": false, + "properties": { + "DateAxisOptions": { + "$ref": "#/definitions/DateAxisOptions" + }, + "NumericAxisOptions": { + "$ref": "#/definitions/NumericAxisOptions" + } + }, + "type": "object" + }, + "AxisDisplayDataDrivenRange": { + "additionalProperties": false, + "type": "object" + }, + "AxisDisplayMinMaxRange": { + "additionalProperties": false, + "properties": { + "Maximum": { + "default": null, + "type": "number" + }, + "Minimum": { + "default": null, + "type": "number" + } + }, + "type": "object" + }, + "AxisDisplayOptions": { + "additionalProperties": false, + "properties": { + "AxisLineVisibility": { + "$ref": "#/definitions/Visibility" + }, + "AxisOffset": { + "description": "String based length that is composed of value and unit in px", + "type": "string" + }, + "DataOptions": { + "$ref": "#/definitions/AxisDataOptions" + }, + "GridLineVisibility": { + "$ref": "#/definitions/Visibility" + }, + "ScrollbarOptions": { + "$ref": "#/definitions/ScrollBarOptions" + }, + "TickLabelOptions": { + "$ref": "#/definitions/AxisTickLabelOptions" + } + }, + "type": "object" + }, + "AxisDisplayRange": { + "additionalProperties": false, + "properties": { + "DataDriven": { + "$ref": "#/definitions/AxisDisplayDataDrivenRange" + }, + "MinMax": { + "$ref": "#/definitions/AxisDisplayMinMaxRange" + } + }, + "type": "object" + }, + "AxisLabelOptions": { + "additionalProperties": false, + "properties": { + "ApplyTo": { + "$ref": "#/definitions/AxisLabelReferenceOptions" + }, + "CustomLabel": { + "type": "string" + }, + "FontConfiguration": { + "$ref": "#/definitions/FontConfiguration" + } + }, + "type": "object" + }, + "AxisLabelReferenceOptions": { + "additionalProperties": false, + "properties": { + "Column": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "FieldId": { + "maxLength": 512, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Column", + "FieldId" + ], + "type": "object" + }, + "AxisLinearScale": { + "additionalProperties": false, + "properties": { + "StepCount": { + "default": null, + "type": "number" + }, + "StepSize": { + "default": null, + "type": "number" + } + }, + "type": "object" + }, + "AxisLogarithmicScale": { + "additionalProperties": false, + "properties": { + "Base": { + "default": null, + "type": "number" + } + }, + "type": "object" + }, + "AxisScale": { + "additionalProperties": false, + "properties": { + "Linear": { + "$ref": "#/definitions/AxisLinearScale" + }, + "Logarithmic": { + "$ref": "#/definitions/AxisLogarithmicScale" + } + }, + "type": "object" + }, + "AxisTickLabelOptions": { + "additionalProperties": false, + "properties": { + "LabelOptions": { + "$ref": "#/definitions/LabelOptions" + }, + "RotationAngle": { + "default": null, + "type": "number" + } + }, + "type": "object" + }, + "BarChartAggregatedFieldWells": { + "additionalProperties": false, + "properties": { + "Category": { + "items": { + "$ref": "#/definitions/DimensionField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "Colors": { + "items": { + "$ref": "#/definitions/DimensionField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "SmallMultiples": { + "items": { + "$ref": "#/definitions/DimensionField" + }, + "maxItems": 1, + "minItems": 0, + "type": "array" + }, + "Values": { + "items": { + "$ref": "#/definitions/MeasureField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "BarChartConfiguration": { + "additionalProperties": false, + "properties": { + "BarsArrangement": { + "$ref": "#/definitions/BarsArrangement" + }, + "CategoryAxis": { + "$ref": "#/definitions/AxisDisplayOptions" + }, + "CategoryLabelOptions": { + "$ref": "#/definitions/ChartAxisLabelOptions" + }, + "ColorLabelOptions": { + "$ref": "#/definitions/ChartAxisLabelOptions" + }, + "ContributionAnalysisDefaults": { + "items": { + "$ref": "#/definitions/ContributionAnalysisDefault" + }, + "maxItems": 200, + "minItems": 1, + "type": "array" + }, + "DataLabels": { + "$ref": "#/definitions/DataLabelOptions" + }, + "FieldWells": { + "$ref": "#/definitions/BarChartFieldWells" + }, + "Interactions": { + "$ref": "#/definitions/VisualInteractionOptions" + }, + "Legend": { + "$ref": "#/definitions/LegendOptions" + }, + "Orientation": { + "$ref": "#/definitions/BarChartOrientation" + }, + "ReferenceLines": { + "items": { + "$ref": "#/definitions/ReferenceLine" + }, + "maxItems": 20, + "minItems": 0, + "type": "array" + }, + "SmallMultiplesOptions": { + "$ref": "#/definitions/SmallMultiplesOptions" + }, + "SortConfiguration": { + "$ref": "#/definitions/BarChartSortConfiguration" + }, + "Tooltip": { + "$ref": "#/definitions/TooltipOptions" + }, + "ValueAxis": { + "$ref": "#/definitions/AxisDisplayOptions" + }, + "ValueLabelOptions": { + "$ref": "#/definitions/ChartAxisLabelOptions" + }, + "VisualPalette": { + "$ref": "#/definitions/VisualPalette" + } + }, + "type": "object" + }, + "BarChartFieldWells": { + "additionalProperties": false, + "properties": { + "BarChartAggregatedFieldWells": { + "$ref": "#/definitions/BarChartAggregatedFieldWells" + } + }, + "type": "object" + }, + "BarChartOrientation": { + "enum": [ + "HORIZONTAL", + "VERTICAL" + ], + "type": "string" + }, + "BarChartSortConfiguration": { + "additionalProperties": false, + "properties": { + "CategoryItemsLimit": { + "$ref": "#/definitions/ItemsLimitConfiguration" + }, + "CategorySort": { + "items": { + "$ref": "#/definitions/FieldSortOptions" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + }, + "ColorItemsLimit": { + "$ref": "#/definitions/ItemsLimitConfiguration" + }, + "ColorSort": { + "items": { + "$ref": "#/definitions/FieldSortOptions" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + }, + "SmallMultiplesLimitConfiguration": { + "$ref": "#/definitions/ItemsLimitConfiguration" + }, + "SmallMultiplesSort": { + "items": { + "$ref": "#/definitions/FieldSortOptions" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "BarChartVisual": { + "additionalProperties": false, + "properties": { + "Actions": { + "items": { + "$ref": "#/definitions/VisualCustomAction" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + }, + "ChartConfiguration": { + "$ref": "#/definitions/BarChartConfiguration" + }, + "ColumnHierarchies": { + "items": { + "$ref": "#/definitions/ColumnHierarchy" + }, + "maxItems": 2, + "minItems": 0, + "type": "array" + }, + "Subtitle": { + "$ref": "#/definitions/VisualSubtitleLabelOptions" + }, + "Title": { + "$ref": "#/definitions/VisualTitleLabelOptions" + }, + "VisualContentAltText": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "VisualId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + } + }, + "required": [ + "VisualId" + ], + "type": "object" + }, + "BarsArrangement": { + "enum": [ + "CLUSTERED", + "STACKED", + "STACKED_PERCENT" + ], + "type": "string" + }, + "BaseMapStyleType": { + "enum": [ + "LIGHT_GRAY", + "DARK_GRAY", + "STREET", + "IMAGERY" + ], + "type": "string" + }, + "BinCountOptions": { + "additionalProperties": false, + "properties": { + "Value": { + "minimum": 0, + "type": "number" + } + }, + "type": "object" + }, + "BinWidthOptions": { + "additionalProperties": false, + "properties": { + "BinCountLimit": { + "maximum": 1000, + "minimum": 0, + "type": "number" + }, + "Value": { + "minimum": 0, + "type": "number" + } + }, + "type": "object" + }, + "BodySectionConfiguration": { + "additionalProperties": false, + "properties": { + "Content": { + "$ref": "#/definitions/BodySectionContent" + }, + "PageBreakConfiguration": { + "$ref": "#/definitions/SectionPageBreakConfiguration" + }, + "RepeatConfiguration": { + "$ref": "#/definitions/BodySectionRepeatConfiguration" + }, + "SectionId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "Style": { + "$ref": "#/definitions/SectionStyle" + } + }, + "required": [ + "Content", + "SectionId" + ], + "type": "object" + }, + "BodySectionContent": { + "additionalProperties": false, + "properties": { + "Layout": { + "$ref": "#/definitions/SectionLayoutConfiguration" + } + }, + "type": "object" + }, + "BodySectionDynamicCategoryDimensionConfiguration": { + "additionalProperties": false, + "properties": { + "Column": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "Limit": { + "maximum": 1000, + "minimum": 1, + "type": "number" + }, + "SortByMetrics": { + "items": { + "$ref": "#/definitions/ColumnSort" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + } + }, + "required": [ + "Column" + ], + "type": "object" + }, + "BodySectionDynamicNumericDimensionConfiguration": { + "additionalProperties": false, + "properties": { + "Column": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "Limit": { + "maximum": 1000, + "minimum": 1, + "type": "number" + }, + "SortByMetrics": { + "items": { + "$ref": "#/definitions/ColumnSort" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + } + }, + "required": [ + "Column" + ], + "type": "object" + }, + "BodySectionRepeatConfiguration": { + "additionalProperties": false, + "properties": { + "DimensionConfigurations": { + "items": { + "$ref": "#/definitions/BodySectionRepeatDimensionConfiguration" + }, + "maxItems": 3, + "minItems": 0, + "type": "array" + }, + "NonRepeatingVisuals": { + "items": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "maxItems": 20, + "minItems": 0, + "type": "array" + }, + "PageBreakConfiguration": { + "$ref": "#/definitions/BodySectionRepeatPageBreakConfiguration" + } + }, + "type": "object" + }, + "BodySectionRepeatDimensionConfiguration": { + "additionalProperties": false, + "properties": { + "DynamicCategoryDimensionConfiguration": { + "$ref": "#/definitions/BodySectionDynamicCategoryDimensionConfiguration" + }, + "DynamicNumericDimensionConfiguration": { + "$ref": "#/definitions/BodySectionDynamicNumericDimensionConfiguration" + } + }, + "type": "object" + }, + "BodySectionRepeatPageBreakConfiguration": { + "additionalProperties": false, + "properties": { + "After": { + "$ref": "#/definitions/SectionAfterPageBreak" + } + }, + "type": "object" + }, + "BoxPlotAggregatedFieldWells": { + "additionalProperties": false, + "properties": { + "GroupBy": { + "items": { + "$ref": "#/definitions/DimensionField" + }, + "maxItems": 1, + "minItems": 0, + "type": "array" + }, + "Values": { + "items": { + "$ref": "#/definitions/MeasureField" + }, + "maxItems": 5, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "BoxPlotChartConfiguration": { + "additionalProperties": false, + "properties": { + "BoxPlotOptions": { + "$ref": "#/definitions/BoxPlotOptions" + }, + "CategoryAxis": { + "$ref": "#/definitions/AxisDisplayOptions" + }, + "CategoryLabelOptions": { + "$ref": "#/definitions/ChartAxisLabelOptions" + }, + "FieldWells": { + "$ref": "#/definitions/BoxPlotFieldWells" + }, + "Interactions": { + "$ref": "#/definitions/VisualInteractionOptions" + }, + "Legend": { + "$ref": "#/definitions/LegendOptions" + }, + "PrimaryYAxisDisplayOptions": { + "$ref": "#/definitions/AxisDisplayOptions" + }, + "PrimaryYAxisLabelOptions": { + "$ref": "#/definitions/ChartAxisLabelOptions" + }, + "ReferenceLines": { + "items": { + "$ref": "#/definitions/ReferenceLine" + }, + "maxItems": 20, + "minItems": 0, + "type": "array" + }, + "SortConfiguration": { + "$ref": "#/definitions/BoxPlotSortConfiguration" + }, + "Tooltip": { + "$ref": "#/definitions/TooltipOptions" + }, + "VisualPalette": { + "$ref": "#/definitions/VisualPalette" + } + }, + "type": "object" + }, + "BoxPlotFieldWells": { + "additionalProperties": false, + "properties": { + "BoxPlotAggregatedFieldWells": { + "$ref": "#/definitions/BoxPlotAggregatedFieldWells" + } + }, + "type": "object" + }, + "BoxPlotFillStyle": { + "enum": [ + "SOLID", + "TRANSPARENT" + ], + "type": "string" + }, + "BoxPlotOptions": { + "additionalProperties": false, + "properties": { + "AllDataPointsVisibility": { + "$ref": "#/definitions/Visibility" + }, + "OutlierVisibility": { + "$ref": "#/definitions/Visibility" + }, + "StyleOptions": { + "$ref": "#/definitions/BoxPlotStyleOptions" + } + }, + "type": "object" + }, + "BoxPlotSortConfiguration": { + "additionalProperties": false, + "properties": { + "CategorySort": { + "items": { + "$ref": "#/definitions/FieldSortOptions" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + }, + "PaginationConfiguration": { + "$ref": "#/definitions/PaginationConfiguration" + } + }, + "type": "object" + }, + "BoxPlotStyleOptions": { + "additionalProperties": false, + "properties": { + "FillStyle": { + "$ref": "#/definitions/BoxPlotFillStyle" + } + }, + "type": "object" + }, + "BoxPlotVisual": { + "additionalProperties": false, + "properties": { + "Actions": { + "items": { + "$ref": "#/definitions/VisualCustomAction" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + }, + "ChartConfiguration": { + "$ref": "#/definitions/BoxPlotChartConfiguration" + }, + "ColumnHierarchies": { + "items": { + "$ref": "#/definitions/ColumnHierarchy" + }, + "maxItems": 2, + "minItems": 0, + "type": "array" + }, + "Subtitle": { + "$ref": "#/definitions/VisualSubtitleLabelOptions" + }, + "Title": { + "$ref": "#/definitions/VisualTitleLabelOptions" + }, + "VisualContentAltText": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "VisualId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + } + }, + "required": [ + "VisualId" + ], + "type": "object" + }, + "CalculatedField": { + "additionalProperties": false, + "properties": { + "DataSetIdentifier": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "Expression": { + "maxLength": 32000, + "minLength": 1, + "type": "string" + }, + "Name": { + "maxLength": 127, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "DataSetIdentifier", + "Expression", + "Name" + ], + "type": "object" + }, + "CalculatedMeasureField": { + "additionalProperties": false, + "properties": { + "Expression": { + "maxLength": 4096, + "minLength": 1, + "type": "string" + }, + "FieldId": { + "maxLength": 512, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Expression", + "FieldId" + ], + "type": "object" + }, + "CascadingControlConfiguration": { + "additionalProperties": false, + "properties": { + "SourceControls": { + "items": { + "$ref": "#/definitions/CascadingControlSource" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "CascadingControlSource": { + "additionalProperties": false, + "properties": { + "ColumnToMatch": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "SourceSheetControlId": { + "type": "string" + } + }, + "type": "object" + }, + "CategoricalAggregationFunction": { + "enum": [ + "COUNT", + "DISTINCT_COUNT" + ], + "type": "string" + }, + "CategoricalDimensionField": { + "additionalProperties": false, + "properties": { + "Column": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "FieldId": { + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "FormatConfiguration": { + "$ref": "#/definitions/StringFormatConfiguration" + }, + "HierarchyId": { + "maxLength": 512, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Column", + "FieldId" + ], + "type": "object" + }, + "CategoricalMeasureField": { + "additionalProperties": false, + "properties": { + "AggregationFunction": { + "$ref": "#/definitions/CategoricalAggregationFunction" + }, + "Column": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "FieldId": { + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "FormatConfiguration": { + "$ref": "#/definitions/StringFormatConfiguration" + } + }, + "required": [ + "Column", + "FieldId" + ], + "type": "object" + }, + "CategoryDrillDownFilter": { + "additionalProperties": false, + "properties": { + "CategoryValues": { + "items": { + "maxLength": 512, + "minLength": 0, + "type": "string" + }, + "maxItems": 100000, + "minItems": 0, + "type": "array" + }, + "Column": { + "$ref": "#/definitions/ColumnIdentifier" + } + }, + "required": [ + "CategoryValues", + "Column" + ], + "type": "object" + }, + "CategoryFilter": { + "additionalProperties": false, + "properties": { + "Column": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "Configuration": { + "$ref": "#/definitions/CategoryFilterConfiguration" + }, + "DefaultFilterControlConfiguration": { + "$ref": "#/definitions/DefaultFilterControlConfiguration" + }, + "FilterId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + } + }, + "required": [ + "Column", + "Configuration", + "FilterId" + ], + "type": "object" + }, + "CategoryFilterConfiguration": { + "additionalProperties": false, + "properties": { + "CustomFilterConfiguration": { + "$ref": "#/definitions/CustomFilterConfiguration" + }, + "CustomFilterListConfiguration": { + "$ref": "#/definitions/CustomFilterListConfiguration" + }, + "FilterListConfiguration": { + "$ref": "#/definitions/FilterListConfiguration" + } + }, + "type": "object" + }, + "CategoryFilterMatchOperator": { + "enum": [ + "EQUALS", + "DOES_NOT_EQUAL", + "CONTAINS", + "DOES_NOT_CONTAIN", + "STARTS_WITH", + "ENDS_WITH" + ], + "type": "string" + }, + "CategoryFilterSelectAllOptions": { + "enum": [ + "FILTER_ALL_VALUES" + ], + "type": "string" + }, + "CategoryInnerFilter": { + "additionalProperties": false, + "properties": { + "Column": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "Configuration": { + "$ref": "#/definitions/CategoryFilterConfiguration" + }, + "DefaultFilterControlConfiguration": { + "$ref": "#/definitions/DefaultFilterControlConfiguration" + } + }, + "required": [ + "Column", + "Configuration" + ], + "type": "object" + }, + "ChartAxisLabelOptions": { + "additionalProperties": false, + "properties": { + "AxisLabelOptions": { + "items": { + "$ref": "#/definitions/AxisLabelOptions" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + }, + "SortIconVisibility": { + "$ref": "#/definitions/Visibility" + }, + "Visibility": { + "$ref": "#/definitions/Visibility" + } + }, + "type": "object" + }, + "ClusterMarker": { + "additionalProperties": false, + "properties": { + "SimpleClusterMarker": { + "$ref": "#/definitions/SimpleClusterMarker" + } + }, + "type": "object" + }, + "ClusterMarkerConfiguration": { + "additionalProperties": false, + "properties": { + "ClusterMarker": { + "$ref": "#/definitions/ClusterMarker" + } + }, + "type": "object" + }, + "ColorFillType": { + "enum": [ + "DISCRETE", + "GRADIENT" + ], + "type": "string" + }, + "ColorScale": { + "additionalProperties": false, + "properties": { + "ColorFillType": { + "$ref": "#/definitions/ColorFillType" + }, + "Colors": { + "items": { + "$ref": "#/definitions/DataColor" + }, + "maxItems": 3, + "minItems": 2, + "type": "array" + }, + "NullValueColor": { + "$ref": "#/definitions/DataColor" + } + }, + "required": [ + "ColorFillType", + "Colors" + ], + "type": "object" + }, + "ColorsConfiguration": { + "additionalProperties": false, + "properties": { + "CustomColors": { + "items": { + "$ref": "#/definitions/CustomColor" + }, + "maxItems": 50, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "ColumnConfiguration": { + "additionalProperties": false, + "properties": { + "ColorsConfiguration": { + "$ref": "#/definitions/ColorsConfiguration" + }, + "Column": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "FormatConfiguration": { + "$ref": "#/definitions/FormatConfiguration" + }, + "Role": { + "$ref": "#/definitions/ColumnRole" + } + }, + "required": [ + "Column" + ], + "type": "object" + }, + "ColumnHierarchy": { + "additionalProperties": false, + "properties": { + "DateTimeHierarchy": { + "$ref": "#/definitions/DateTimeHierarchy" + }, + "ExplicitHierarchy": { + "$ref": "#/definitions/ExplicitHierarchy" + }, + "PredefinedHierarchy": { + "$ref": "#/definitions/PredefinedHierarchy" + } + }, + "type": "object" + }, + "ColumnIdentifier": { + "additionalProperties": false, + "properties": { + "ColumnName": { + "maxLength": 127, + "minLength": 1, + "type": "string" + }, + "DataSetIdentifier": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "ColumnName", + "DataSetIdentifier" + ], + "type": "object" + }, + "ColumnRole": { + "enum": [ + "DIMENSION", + "MEASURE" + ], + "type": "string" + }, + "ColumnSort": { + "additionalProperties": false, + "properties": { + "AggregationFunction": { + "$ref": "#/definitions/AggregationFunction" + }, + "Direction": { + "$ref": "#/definitions/SortDirection" + }, + "SortBy": { + "$ref": "#/definitions/ColumnIdentifier" + } + }, + "required": [ + "Direction", + "SortBy" + ], + "type": "object" + }, + "ColumnTooltipItem": { + "additionalProperties": false, + "properties": { + "Aggregation": { + "$ref": "#/definitions/AggregationFunction" + }, + "Column": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "Label": { + "type": "string" + }, + "TooltipTarget": { + "$ref": "#/definitions/TooltipTarget" + }, + "Visibility": { + "$ref": "#/definitions/Visibility" + } + }, + "required": [ + "Column" + ], + "type": "object" + }, + "ComboChartAggregatedFieldWells": { + "additionalProperties": false, + "properties": { + "BarValues": { + "items": { + "$ref": "#/definitions/MeasureField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "Category": { + "items": { + "$ref": "#/definitions/DimensionField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "Colors": { + "items": { + "$ref": "#/definitions/DimensionField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "LineValues": { + "items": { + "$ref": "#/definitions/MeasureField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "ComboChartConfiguration": { + "additionalProperties": false, + "properties": { + "BarDataLabels": { + "$ref": "#/definitions/DataLabelOptions" + }, + "BarsArrangement": { + "$ref": "#/definitions/BarsArrangement" + }, + "CategoryAxis": { + "$ref": "#/definitions/AxisDisplayOptions" + }, + "CategoryLabelOptions": { + "$ref": "#/definitions/ChartAxisLabelOptions" + }, + "ColorLabelOptions": { + "$ref": "#/definitions/ChartAxisLabelOptions" + }, + "FieldWells": { + "$ref": "#/definitions/ComboChartFieldWells" + }, + "Interactions": { + "$ref": "#/definitions/VisualInteractionOptions" + }, + "Legend": { + "$ref": "#/definitions/LegendOptions" + }, + "LineDataLabels": { + "$ref": "#/definitions/DataLabelOptions" + }, + "PrimaryYAxisDisplayOptions": { + "$ref": "#/definitions/AxisDisplayOptions" + }, + "PrimaryYAxisLabelOptions": { + "$ref": "#/definitions/ChartAxisLabelOptions" + }, + "ReferenceLines": { + "items": { + "$ref": "#/definitions/ReferenceLine" + }, + "maxItems": 20, + "minItems": 0, + "type": "array" + }, + "SecondaryYAxisDisplayOptions": { + "$ref": "#/definitions/AxisDisplayOptions" + }, + "SecondaryYAxisLabelOptions": { + "$ref": "#/definitions/ChartAxisLabelOptions" + }, + "SingleAxisOptions": { + "$ref": "#/definitions/SingleAxisOptions" + }, + "SortConfiguration": { + "$ref": "#/definitions/ComboChartSortConfiguration" + }, + "Tooltip": { + "$ref": "#/definitions/TooltipOptions" + }, + "VisualPalette": { + "$ref": "#/definitions/VisualPalette" + } + }, + "type": "object" + }, + "ComboChartFieldWells": { + "additionalProperties": false, + "properties": { + "ComboChartAggregatedFieldWells": { + "$ref": "#/definitions/ComboChartAggregatedFieldWells" + } + }, + "type": "object" + }, + "ComboChartSortConfiguration": { + "additionalProperties": false, + "properties": { + "CategoryItemsLimit": { + "$ref": "#/definitions/ItemsLimitConfiguration" + }, + "CategorySort": { + "items": { + "$ref": "#/definitions/FieldSortOptions" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + }, + "ColorItemsLimit": { + "$ref": "#/definitions/ItemsLimitConfiguration" + }, + "ColorSort": { + "items": { + "$ref": "#/definitions/FieldSortOptions" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "ComboChartVisual": { + "additionalProperties": false, + "properties": { + "Actions": { + "items": { + "$ref": "#/definitions/VisualCustomAction" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + }, + "ChartConfiguration": { + "$ref": "#/definitions/ComboChartConfiguration" + }, + "ColumnHierarchies": { + "items": { + "$ref": "#/definitions/ColumnHierarchy" + }, + "maxItems": 2, + "minItems": 0, + "type": "array" + }, + "Subtitle": { + "$ref": "#/definitions/VisualSubtitleLabelOptions" + }, + "Title": { + "$ref": "#/definitions/VisualTitleLabelOptions" + }, + "VisualContentAltText": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "VisualId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + } + }, + "required": [ + "VisualId" + ], + "type": "object" + }, + "CommitMode": { + "enum": [ + "AUTO", + "MANUAL" + ], + "type": "string" + }, + "ComparisonConfiguration": { + "additionalProperties": false, + "properties": { + "ComparisonFormat": { + "$ref": "#/definitions/ComparisonFormatConfiguration" + }, + "ComparisonMethod": { + "$ref": "#/definitions/ComparisonMethod" + } + }, + "type": "object" + }, + "ComparisonFormatConfiguration": { + "additionalProperties": false, + "properties": { + "NumberDisplayFormatConfiguration": { + "$ref": "#/definitions/NumberDisplayFormatConfiguration" + }, + "PercentageDisplayFormatConfiguration": { + "$ref": "#/definitions/PercentageDisplayFormatConfiguration" + } + }, + "type": "object" + }, + "ComparisonMethod": { + "enum": [ + "DIFFERENCE", + "PERCENT_DIFFERENCE", + "PERCENT" + ], + "type": "string" + }, + "Computation": { + "additionalProperties": false, + "properties": { + "Forecast": { + "$ref": "#/definitions/ForecastComputation" + }, + "GrowthRate": { + "$ref": "#/definitions/GrowthRateComputation" + }, + "MaximumMinimum": { + "$ref": "#/definitions/MaximumMinimumComputation" + }, + "MetricComparison": { + "$ref": "#/definitions/MetricComparisonComputation" + }, + "PeriodOverPeriod": { + "$ref": "#/definitions/PeriodOverPeriodComputation" + }, + "PeriodToDate": { + "$ref": "#/definitions/PeriodToDateComputation" + }, + "TopBottomMovers": { + "$ref": "#/definitions/TopBottomMoversComputation" + }, + "TopBottomRanked": { + "$ref": "#/definitions/TopBottomRankedComputation" + }, + "TotalAggregation": { + "$ref": "#/definitions/TotalAggregationComputation" + }, + "UniqueValues": { + "$ref": "#/definitions/UniqueValuesComputation" + } + }, + "type": "object" + }, + "ConditionalFormattingColor": { + "additionalProperties": false, + "properties": { + "Gradient": { + "$ref": "#/definitions/ConditionalFormattingGradientColor" + }, + "Solid": { + "$ref": "#/definitions/ConditionalFormattingSolidColor" + } + }, + "type": "object" + }, + "ConditionalFormattingCustomIconCondition": { + "additionalProperties": false, + "properties": { + "Color": { + "pattern": "^#[A-F0-9]{6}$", + "type": "string" + }, + "DisplayConfiguration": { + "$ref": "#/definitions/ConditionalFormattingIconDisplayConfiguration" + }, + "Expression": { + "maxLength": 4096, + "minLength": 1, + "type": "string" + }, + "IconOptions": { + "$ref": "#/definitions/ConditionalFormattingCustomIconOptions" + } + }, + "required": [ + "Expression", + "IconOptions" + ], + "type": "object" + }, + "ConditionalFormattingCustomIconOptions": { + "additionalProperties": false, + "properties": { + "Icon": { + "$ref": "#/definitions/Icon" + }, + "UnicodeIcon": { + "pattern": "^[^\\u0000-\\u00FF]$", + "type": "string" + } + }, + "type": "object" + }, + "ConditionalFormattingGradientColor": { + "additionalProperties": false, + "properties": { + "Color": { + "$ref": "#/definitions/GradientColor" + }, + "Expression": { + "maxLength": 4096, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Color", + "Expression" + ], + "type": "object" + }, + "ConditionalFormattingIcon": { + "additionalProperties": false, + "properties": { + "CustomCondition": { + "$ref": "#/definitions/ConditionalFormattingCustomIconCondition" + }, + "IconSet": { + "$ref": "#/definitions/ConditionalFormattingIconSet" + } + }, + "type": "object" + }, + "ConditionalFormattingIconDisplayConfiguration": { + "additionalProperties": false, + "properties": { + "IconDisplayOption": { + "$ref": "#/definitions/ConditionalFormattingIconDisplayOption" + } + }, + "type": "object" + }, + "ConditionalFormattingIconDisplayOption": { + "enum": [ + "ICON_ONLY" + ], + "type": "string" + }, + "ConditionalFormattingIconSet": { + "additionalProperties": false, + "properties": { + "Expression": { + "maxLength": 4096, + "minLength": 1, + "type": "string" + }, + "IconSetType": { + "$ref": "#/definitions/ConditionalFormattingIconSetType" + } + }, + "required": [ + "Expression" + ], + "type": "object" + }, + "ConditionalFormattingIconSetType": { + "enum": [ + "PLUS_MINUS", + "CHECK_X", + "THREE_COLOR_ARROW", + "THREE_GRAY_ARROW", + "CARET_UP_MINUS_DOWN", + "THREE_SHAPE", + "THREE_CIRCLE", + "FLAGS", + "BARS", + "FOUR_COLOR_ARROW", + "FOUR_GRAY_ARROW" + ], + "type": "string" + }, + "ConditionalFormattingSolidColor": { + "additionalProperties": false, + "properties": { + "Color": { + "pattern": "^#[A-F0-9]{6}$", + "type": "string" + }, + "Expression": { + "maxLength": 4096, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Expression" + ], + "type": "object" + }, + "ContextMenuOption": { + "additionalProperties": false, + "properties": { + "AvailabilityStatus": { + "$ref": "#/definitions/DashboardBehavior" + } + }, + "type": "object" + }, + "ContributionAnalysisDefault": { + "additionalProperties": false, + "properties": { + "ContributorDimensions": { + "items": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "maxItems": 4, + "minItems": 1, + "type": "array" + }, + "MeasureFieldId": { + "maxLength": 512, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "ContributorDimensions", + "MeasureFieldId" + ], + "type": "object" + }, + "CrossDatasetTypes": { + "enum": [ + "ALL_DATASETS", + "SINGLE_DATASET" + ], + "type": "string" + }, + "CurrencyDisplayFormatConfiguration": { + "additionalProperties": false, + "properties": { + "DecimalPlacesConfiguration": { + "$ref": "#/definitions/DecimalPlacesConfiguration" + }, + "NegativeValueConfiguration": { + "$ref": "#/definitions/NegativeValueConfiguration" + }, + "NullValueFormatConfiguration": { + "$ref": "#/definitions/NullValueFormatConfiguration" + }, + "NumberScale": { + "$ref": "#/definitions/NumberScale" + }, + "Prefix": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "SeparatorConfiguration": { + "$ref": "#/definitions/NumericSeparatorConfiguration" + }, + "Suffix": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Symbol": { + "pattern": "^[A-Z]{3}$", + "type": "string" + } + }, + "type": "object" + }, + "CustomActionFilterOperation": { + "additionalProperties": false, + "properties": { + "SelectedFieldsConfiguration": { + "$ref": "#/definitions/FilterOperationSelectedFieldsConfiguration" + }, + "TargetVisualsConfiguration": { + "$ref": "#/definitions/FilterOperationTargetVisualsConfiguration" + } + }, + "required": [ + "SelectedFieldsConfiguration", + "TargetVisualsConfiguration" + ], + "type": "object" + }, + "CustomActionNavigationOperation": { + "additionalProperties": false, + "properties": { + "LocalNavigationConfiguration": { + "$ref": "#/definitions/LocalNavigationConfiguration" + } + }, + "type": "object" + }, + "CustomActionSetParametersOperation": { + "additionalProperties": false, + "properties": { + "ParameterValueConfigurations": { + "items": { + "$ref": "#/definitions/SetParameterValueConfiguration" + }, + "maxItems": 200, + "minItems": 1, + "type": "array" + } + }, + "required": [ + "ParameterValueConfigurations" + ], + "type": "object" + }, + "CustomActionURLOperation": { + "additionalProperties": false, + "properties": { + "URLTarget": { + "$ref": "#/definitions/URLTargetConfiguration" + }, + "URLTemplate": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "URLTarget", + "URLTemplate" + ], + "type": "object" + }, + "CustomColor": { + "additionalProperties": false, + "properties": { + "Color": { + "pattern": "^#[A-F0-9]{6}$", + "type": "string" + }, + "FieldValue": { + "maxLength": 2048, + "minLength": 0, + "type": "string" + }, + "SpecialValue": { + "$ref": "#/definitions/SpecialValue" + } + }, + "required": [ + "Color" + ], + "type": "object" + }, + "CustomContentConfiguration": { + "additionalProperties": false, + "properties": { + "ContentType": { + "$ref": "#/definitions/CustomContentType" + }, + "ContentUrl": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "ImageScaling": { + "$ref": "#/definitions/CustomContentImageScalingConfiguration" + }, + "Interactions": { + "$ref": "#/definitions/VisualInteractionOptions" + } + }, + "type": "object" + }, + "CustomContentImageScalingConfiguration": { + "enum": [ + "FIT_TO_HEIGHT", + "FIT_TO_WIDTH", + "DO_NOT_SCALE", + "SCALE_TO_VISUAL" + ], + "type": "string" + }, + "CustomContentType": { + "enum": [ + "IMAGE", + "OTHER_EMBEDDED_CONTENT" + ], + "type": "string" + }, + "CustomContentVisual": { + "additionalProperties": false, + "properties": { + "Actions": { + "items": { + "$ref": "#/definitions/VisualCustomAction" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + }, + "ChartConfiguration": { + "$ref": "#/definitions/CustomContentConfiguration" + }, + "DataSetIdentifier": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "Subtitle": { + "$ref": "#/definitions/VisualSubtitleLabelOptions" + }, + "Title": { + "$ref": "#/definitions/VisualTitleLabelOptions" + }, + "VisualContentAltText": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "VisualId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + } + }, + "required": [ + "DataSetIdentifier", + "VisualId" + ], + "type": "object" + }, + "CustomFilterConfiguration": { + "additionalProperties": false, + "properties": { + "CategoryValue": { + "maxLength": 512, + "minLength": 0, + "type": "string" + }, + "MatchOperator": { + "$ref": "#/definitions/CategoryFilterMatchOperator" + }, + "NullOption": { + "$ref": "#/definitions/FilterNullOption" + }, + "ParameterName": { + "maxLength": 2048, + "minLength": 1, + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + "SelectAllOptions": { + "$ref": "#/definitions/CategoryFilterSelectAllOptions" + } + }, + "required": [ + "MatchOperator", + "NullOption" + ], + "type": "object" + }, + "CustomFilterListConfiguration": { + "additionalProperties": false, + "properties": { + "CategoryValues": { + "items": { + "maxLength": 512, + "minLength": 0, + "type": "string" + }, + "maxItems": 100000, + "minItems": 0, + "type": "array" + }, + "MatchOperator": { + "$ref": "#/definitions/CategoryFilterMatchOperator" + }, + "NullOption": { + "$ref": "#/definitions/FilterNullOption" + }, + "SelectAllOptions": { + "$ref": "#/definitions/CategoryFilterSelectAllOptions" + } + }, + "required": [ + "MatchOperator", + "NullOption" + ], + "type": "object" + }, + "CustomNarrativeOptions": { + "additionalProperties": false, + "properties": { + "Narrative": { + "maxLength": 150000, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Narrative" + ], + "type": "object" + }, + "CustomParameterValues": { + "additionalProperties": false, + "properties": { + "DateTimeValues": { + "items": { + "format": "date-time", + "type": "string" + }, + "maxItems": 50000, + "minItems": 0, + "type": "array" + }, + "DecimalValues": { + "items": { + "type": "number" + }, + "maxItems": 50000, + "minItems": 0, + "type": "array" + }, + "IntegerValues": { + "items": { + "type": "number" + }, + "maxItems": 50000, + "minItems": 0, + "type": "array" + }, + "StringValues": { + "items": { + "type": "string" + }, + "maxItems": 50000, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "CustomValuesConfiguration": { + "additionalProperties": false, + "properties": { + "CustomValues": { + "$ref": "#/definitions/CustomParameterValues" + }, + "IncludeNullValue": { + "type": "boolean" + } + }, + "required": [ + "CustomValues" + ], + "type": "object" + }, + "DashboardBehavior": { + "enum": [ + "ENABLED", + "DISABLED" + ], + "type": "string" + }, + "DashboardError": { + "additionalProperties": false, + "description": "Dashboard error.
", + "properties": { + "Message": { + "description": "Message.
", + "pattern": "\\S", + "type": "string" + }, + "Type": { + "$ref": "#/definitions/DashboardErrorType" + }, + "ViolatedEntities": { + "description": "Lists the violated entities that caused the dashboard error.
", + "items": { + "$ref": "#/definitions/Entity" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "DashboardErrorType": { + "enum": [ + "ACCESS_DENIED", + "SOURCE_NOT_FOUND", + "DATA_SET_NOT_FOUND", + "INTERNAL_FAILURE", + "PARAMETER_VALUE_INCOMPATIBLE", + "PARAMETER_TYPE_INVALID", + "PARAMETER_NOT_FOUND", + "COLUMN_TYPE_MISMATCH", + "COLUMN_GEOGRAPHIC_ROLE_MISMATCH", + "COLUMN_REPLACEMENT_MISSING" + ], + "type": "string" + }, + "DashboardPublishOptions": { + "additionalProperties": false, + "description": "Dashboard publish options.
", + "properties": { + "AdHocFilteringOption": { + "$ref": "#/definitions/AdHocFilteringOption" + }, + "DataPointDrillUpDownOption": { + "$ref": "#/definitions/DataPointDrillUpDownOption" + }, + "DataPointMenuLabelOption": { + "$ref": "#/definitions/DataPointMenuLabelOption" + }, + "DataPointTooltipOption": { + "$ref": "#/definitions/DataPointTooltipOption" + }, + "ExportToCSVOption": { + "$ref": "#/definitions/ExportToCSVOption" + }, + "ExportWithHiddenFieldsOption": { + "$ref": "#/definitions/ExportWithHiddenFieldsOption" + }, + "SheetControlsOption": { + "$ref": "#/definitions/SheetControlsOption" + }, + "SheetLayoutElementMaximizationOption": { + "$ref": "#/definitions/SheetLayoutElementMaximizationOption" + }, + "VisualAxisSortOption": { + "$ref": "#/definitions/VisualAxisSortOption" + }, + "VisualMenuOption": { + "$ref": "#/definitions/VisualMenuOption" + }, + "VisualPublishOptions": { + "$ref": "#/definitions/DashboardVisualPublishOptions" + } + }, + "type": "object" + }, + "DashboardSourceEntity": { + "additionalProperties": false, + "description": "Dashboard source entity.
", + "properties": { + "SourceTemplate": { + "$ref": "#/definitions/DashboardSourceTemplate" + } + }, + "type": "object" + }, + "DashboardSourceTemplate": { + "additionalProperties": false, + "description": "Dashboard source template.
", + "properties": { + "Arn": { + "description": "The Amazon Resource Name (ARN) of the resource.
", + "type": "string" + }, + "DataSetReferences": { + "description": "Dataset references.
", + "items": { + "$ref": "#/definitions/DataSetReference" + }, + "minItems": 1, + "type": "array" + } + }, + "required": [ + "Arn", + "DataSetReferences" + ], + "type": "object" + }, + "DashboardUIState": { + "enum": [ + "EXPANDED", + "COLLAPSED" + ], + "type": "string" + }, + "DashboardVersion": { + "additionalProperties": false, + "description": "Dashboard version.
", + "properties": { + "Arn": { + "description": "The Amazon Resource Name (ARN) of the resource.
", + "type": "string" + }, + "CreatedTime": { + "description": "The time that this dashboard version was created.
", + "format": "date-time", + "type": "string" + }, + "DataSetArns": { + "description": "The Amazon Resource Numbers (ARNs) for the datasets that are associated with this\n version of the dashboard.
", + "items": { + "type": "string" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + }, + "Description": { + "description": "Description.
", + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "Errors": { + "description": "Errors associated with this dashboard version.
", + "items": { + "$ref": "#/definitions/DashboardError" + }, + "minItems": 1, + "type": "array" + }, + "Sheets": { + "description": "A list of the associated sheets with the unique identifier and name of each sheet.
", + "items": { + "$ref": "#/definitions/Sheet" + }, + "maxItems": 20, + "minItems": 0, + "type": "array" + }, + "SourceEntityArn": { + "description": "Source entity ARN.
", + "type": "string" + }, + "Status": { + "$ref": "#/definitions/ResourceStatus" + }, + "ThemeArn": { + "description": "The ARN of the theme associated with a version of the dashboard.
", + "type": "string" + }, + "VersionNumber": { + "description": "Version number for this version of the dashboard.
", + "minimum": 1, + "type": "number" + } + }, + "type": "object" + }, + "DashboardVersionDefinition": { + "additionalProperties": false, + "properties": { + "AnalysisDefaults": { + "$ref": "#/definitions/AnalysisDefaults" + }, + "CalculatedFields": { + "items": { + "$ref": "#/definitions/CalculatedField" + }, + "maxItems": 500, + "minItems": 0, + "type": "array" + }, + "ColumnConfigurations": { + "items": { + "$ref": "#/definitions/ColumnConfiguration" + }, + "maxItems": 2000, + "minItems": 0, + "type": "array" + }, + "DataSetIdentifierDeclarations": { + "items": { + "$ref": "#/definitions/DataSetIdentifierDeclaration" + }, + "maxItems": 50, + "minItems": 1, + "type": "array" + }, + "FilterGroups": { + "items": { + "$ref": "#/definitions/FilterGroup" + }, + "maxItems": 2000, + "minItems": 0, + "type": "array" + }, + "Options": { + "$ref": "#/definitions/AssetOptions" + }, + "ParameterDeclarations": { + "items": { + "$ref": "#/definitions/ParameterDeclaration" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "Sheets": { + "items": { + "$ref": "#/definitions/SheetDefinition" + }, + "maxItems": 20, + "minItems": 0, + "type": "array" + }, + "StaticFiles": { + "items": { + "$ref": "#/definitions/StaticFile" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + } + }, + "required": [ + "DataSetIdentifierDeclarations" + ], + "type": "object" + }, + "DashboardVisualPublishOptions": { + "additionalProperties": false, + "description": "The visual publish options of a visual in a dashboard
", + "properties": { + "ExportHiddenFieldsOption": { + "$ref": "#/definitions/ExportHiddenFieldsOption" + } + }, + "type": "object" + }, + "DataBarsOptions": { + "additionalProperties": false, + "properties": { + "FieldId": { + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "NegativeColor": { + "pattern": "^#[A-F0-9]{6}$", + "type": "string" + }, + "PositiveColor": { + "pattern": "^#[A-F0-9]{6}$", + "type": "string" + } + }, + "required": [ + "FieldId" + ], + "type": "object" + }, + "DataColor": { + "additionalProperties": false, + "properties": { + "Color": { + "pattern": "^#[A-F0-9]{6}$", + "type": "string" + }, + "DataValue": { + "default": null, + "type": "number" + } + }, + "type": "object" + }, + "DataFieldSeriesItem": { + "additionalProperties": false, + "properties": { + "AxisBinding": { + "$ref": "#/definitions/AxisBinding" + }, + "FieldId": { + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "FieldValue": { + "type": "string" + }, + "Settings": { + "$ref": "#/definitions/LineChartSeriesSettings" + } + }, + "required": [ + "AxisBinding", + "FieldId" + ], + "type": "object" + }, + "DataLabelContent": { + "enum": [ + "VALUE", + "PERCENT", + "VALUE_AND_PERCENT" + ], + "type": "string" + }, + "DataLabelOptions": { + "additionalProperties": false, + "properties": { + "CategoryLabelVisibility": { + "$ref": "#/definitions/Visibility" + }, + "DataLabelTypes": { + "items": { + "$ref": "#/definitions/DataLabelType" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + }, + "LabelColor": { + "pattern": "^#[A-F0-9]{6}$", + "type": "string" + }, + "LabelContent": { + "$ref": "#/definitions/DataLabelContent" + }, + "LabelFontConfiguration": { + "$ref": "#/definitions/FontConfiguration" + }, + "MeasureLabelVisibility": { + "$ref": "#/definitions/Visibility" + }, + "Overlap": { + "$ref": "#/definitions/DataLabelOverlap" + }, + "Position": { + "$ref": "#/definitions/DataLabelPosition" + }, + "TotalsVisibility": { + "$ref": "#/definitions/Visibility" + }, + "Visibility": { + "$ref": "#/definitions/Visibility" + } + }, + "type": "object" + }, + "DataLabelOverlap": { + "enum": [ + "DISABLE_OVERLAP", + "ENABLE_OVERLAP" + ], + "type": "string" + }, + "DataLabelPosition": { + "enum": [ + "INSIDE", + "OUTSIDE", + "LEFT", + "TOP", + "BOTTOM", + "RIGHT" + ], + "type": "string" + }, + "DataLabelType": { + "additionalProperties": false, + "properties": { + "DataPathLabelType": { + "$ref": "#/definitions/DataPathLabelType" + }, + "FieldLabelType": { + "$ref": "#/definitions/FieldLabelType" + }, + "MaximumLabelType": { + "$ref": "#/definitions/MaximumLabelType" + }, + "MinimumLabelType": { + "$ref": "#/definitions/MinimumLabelType" + }, + "RangeEndsLabelType": { + "$ref": "#/definitions/RangeEndsLabelType" + } + }, + "type": "object" + }, + "DataPathColor": { + "additionalProperties": false, + "properties": { + "Color": { + "pattern": "^#[A-F0-9]{6}$", + "type": "string" + }, + "Element": { + "$ref": "#/definitions/DataPathValue" + }, + "TimeGranularity": { + "$ref": "#/definitions/TimeGranularity" + } + }, + "required": [ + "Color", + "Element" + ], + "type": "object" + }, + "DataPathLabelType": { + "additionalProperties": false, + "properties": { + "FieldId": { + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "FieldValue": { + "maxLength": 2048, + "minLength": 0, + "type": "string" + }, + "Visibility": { + "$ref": "#/definitions/Visibility" + } + }, + "type": "object" + }, + "DataPathSort": { + "additionalProperties": false, + "properties": { + "Direction": { + "$ref": "#/definitions/SortDirection" + }, + "SortPaths": { + "items": { + "$ref": "#/definitions/DataPathValue" + }, + "maxItems": 20, + "minItems": 0, + "type": "array" + } + }, + "required": [ + "Direction", + "SortPaths" + ], + "type": "object" + }, + "DataPathType": { + "additionalProperties": false, + "properties": { + "PivotTableDataPathType": { + "$ref": "#/definitions/PivotTableDataPathType" + } + }, + "type": "object" + }, + "DataPathValue": { + "additionalProperties": false, + "properties": { + "DataPathType": { + "$ref": "#/definitions/DataPathType" + }, + "FieldId": { + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "FieldValue": { + "maxLength": 2048, + "minLength": 0, + "type": "string" + } + }, + "type": "object" + }, + "DataPointDrillUpDownOption": { + "additionalProperties": false, + "description": "The drill down options for data points in a dashbaord.
", + "properties": { + "AvailabilityStatus": { + "$ref": "#/definitions/DashboardBehavior" + } + }, + "type": "object" + }, + "DataPointMenuLabelOption": { + "additionalProperties": false, + "description": "The data point menu options of a dashboard.
", + "properties": { + "AvailabilityStatus": { + "$ref": "#/definitions/DashboardBehavior" + } + }, + "type": "object" + }, + "DataPointTooltipOption": { + "additionalProperties": false, + "description": "The data point tooltip options.
", + "properties": { + "AvailabilityStatus": { + "$ref": "#/definitions/DashboardBehavior" + } + }, + "type": "object" + }, + "DataSetIdentifierDeclaration": { + "additionalProperties": false, + "properties": { + "DataSetArn": { + "type": "string" + }, + "Identifier": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "DataSetArn", + "Identifier" + ], + "type": "object" + }, + "DataSetReference": { + "additionalProperties": false, + "description": "Dataset reference.
", + "properties": { + "DataSetArn": { + "description": "Dataset Amazon Resource Name (ARN).
", + "type": "string" + }, + "DataSetPlaceholder": { + "description": "Dataset placeholder.
", + "pattern": "\\S", + "type": "string" + } + }, + "required": [ + "DataSetArn", + "DataSetPlaceholder" + ], + "type": "object" + }, + "DateAggregationFunction": { + "enum": [ + "COUNT", + "DISTINCT_COUNT", + "MIN", + "MAX" + ], + "type": "string" + }, + "DateAxisOptions": { + "additionalProperties": false, + "properties": { + "MissingDateVisibility": { + "$ref": "#/definitions/Visibility" + } + }, + "type": "object" + }, + "DateDimensionField": { + "additionalProperties": false, + "properties": { + "Column": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "DateGranularity": { + "$ref": "#/definitions/TimeGranularity" + }, + "FieldId": { + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "FormatConfiguration": { + "$ref": "#/definitions/DateTimeFormatConfiguration" + }, + "HierarchyId": { + "maxLength": 512, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Column", + "FieldId" + ], + "type": "object" + }, + "DateMeasureField": { + "additionalProperties": false, + "properties": { + "AggregationFunction": { + "$ref": "#/definitions/DateAggregationFunction" + }, + "Column": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "FieldId": { + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "FormatConfiguration": { + "$ref": "#/definitions/DateTimeFormatConfiguration" + } + }, + "required": [ + "Column", + "FieldId" + ], + "type": "object" + }, + "DateTimeDefaultValues": { + "additionalProperties": false, + "properties": { + "DynamicValue": { + "$ref": "#/definitions/DynamicDefaultValue" + }, + "RollingDate": { + "$ref": "#/definitions/RollingDateConfiguration" + }, + "StaticValues": { + "items": { + "format": "date-time", + "type": "string" + }, + "maxItems": 50000, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "DateTimeFormatConfiguration": { + "additionalProperties": false, + "properties": { + "DateTimeFormat": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "NullValueFormatConfiguration": { + "$ref": "#/definitions/NullValueFormatConfiguration" + }, + "NumericFormatConfiguration": { + "$ref": "#/definitions/NumericFormatConfiguration" + } + }, + "type": "object" + }, + "DateTimeHierarchy": { + "additionalProperties": false, + "properties": { + "DrillDownFilters": { + "items": { + "$ref": "#/definitions/DrillDownFilter" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + }, + "HierarchyId": { + "maxLength": 512, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "HierarchyId" + ], + "type": "object" + }, + "DateTimeParameter": { + "additionalProperties": false, + "description": "A date-time parameter.
", + "properties": { + "Name": { + "description": "A display name for the date-time parameter.
", + "pattern": "\\S", + "type": "string" + }, + "Values": { + "description": "The values for the date-time parameter.
", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "Name", + "Values" + ], + "type": "object" + }, + "DateTimeParameterDeclaration": { + "additionalProperties": false, + "properties": { + "DefaultValues": { + "$ref": "#/definitions/DateTimeDefaultValues" + }, + "MappedDataSetParameters": { + "items": { + "$ref": "#/definitions/MappedDataSetParameter" + }, + "maxItems": 150, + "minItems": 0, + "type": "array" + }, + "Name": { + "maxLength": 2048, + "minLength": 1, + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + "TimeGranularity": { + "$ref": "#/definitions/TimeGranularity" + }, + "ValueWhenUnset": { + "$ref": "#/definitions/DateTimeValueWhenUnsetConfiguration" + } + }, + "required": [ + "Name" + ], + "type": "object" + }, + "DateTimePickerControlDisplayOptions": { + "additionalProperties": false, + "properties": { + "DateIconVisibility": { + "$ref": "#/definitions/Visibility" + }, + "DateTimeFormat": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "HelperTextVisibility": { + "$ref": "#/definitions/Visibility" + }, + "InfoIconLabelOptions": { + "$ref": "#/definitions/SheetControlInfoIconLabelOptions" + }, + "TitleOptions": { + "$ref": "#/definitions/LabelOptions" + } + }, + "type": "object" + }, + "DateTimeValueWhenUnsetConfiguration": { + "additionalProperties": false, + "properties": { + "CustomValue": { + "format": "date-time", + "type": "string" + }, + "ValueWhenUnsetOption": { + "$ref": "#/definitions/ValueWhenUnsetOption" + } + }, + "type": "object" + }, + "DayOfTheWeek": { + "enum": [ + "SUNDAY", + "MONDAY", + "TUESDAY", + "WEDNESDAY", + "THURSDAY", + "FRIDAY", + "SATURDAY" + ], + "type": "string" + }, + "DecimalDefaultValues": { + "additionalProperties": false, + "properties": { + "DynamicValue": { + "$ref": "#/definitions/DynamicDefaultValue" + }, + "StaticValues": { + "items": { + "type": "number" + }, + "maxItems": 50000, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "DecimalParameter": { + "additionalProperties": false, + "description": "A decimal parameter.
", + "properties": { + "Name": { + "description": "A display name for the decimal parameter.
", + "pattern": "\\S", + "type": "string" + }, + "Values": { + "description": "The values for the decimal parameter.
", + "items": { + "default": 0, + "type": "number" + }, + "type": "array" + } + }, + "required": [ + "Name", + "Values" + ], + "type": "object" + }, + "DecimalParameterDeclaration": { + "additionalProperties": false, + "properties": { + "DefaultValues": { + "$ref": "#/definitions/DecimalDefaultValues" + }, + "MappedDataSetParameters": { + "items": { + "$ref": "#/definitions/MappedDataSetParameter" + }, + "maxItems": 150, + "minItems": 0, + "type": "array" + }, + "Name": { + "maxLength": 2048, + "minLength": 1, + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + "ParameterValueType": { + "$ref": "#/definitions/ParameterValueType" + }, + "ValueWhenUnset": { + "$ref": "#/definitions/DecimalValueWhenUnsetConfiguration" + } + }, + "required": [ + "Name", + "ParameterValueType" + ], + "type": "object" + }, + "DecimalPlacesConfiguration": { + "additionalProperties": false, + "properties": { + "DecimalPlaces": { + "maximum": 20, + "minimum": 0, + "type": "number" + } + }, + "required": [ + "DecimalPlaces" + ], + "type": "object" + }, + "DecimalValueWhenUnsetConfiguration": { + "additionalProperties": false, + "properties": { + "CustomValue": { + "default": null, + "type": "number" + }, + "ValueWhenUnsetOption": { + "$ref": "#/definitions/ValueWhenUnsetOption" + } + }, + "type": "object" + }, + "DefaultDateTimePickerControlOptions": { + "additionalProperties": false, + "properties": { + "CommitMode": { + "$ref": "#/definitions/CommitMode" + }, + "DisplayOptions": { + "$ref": "#/definitions/DateTimePickerControlDisplayOptions" + }, + "Type": { + "$ref": "#/definitions/SheetControlDateTimePickerType" + } + }, + "type": "object" + }, + "DefaultFilterControlConfiguration": { + "additionalProperties": false, + "properties": { + "ControlOptions": { + "$ref": "#/definitions/DefaultFilterControlOptions" + }, + "Title": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "ControlOptions", + "Title" + ], + "type": "object" + }, + "DefaultFilterControlOptions": { + "additionalProperties": false, + "properties": { + "DefaultDateTimePickerOptions": { + "$ref": "#/definitions/DefaultDateTimePickerControlOptions" + }, + "DefaultDropdownOptions": { + "$ref": "#/definitions/DefaultFilterDropDownControlOptions" + }, + "DefaultListOptions": { + "$ref": "#/definitions/DefaultFilterListControlOptions" + }, + "DefaultRelativeDateTimeOptions": { + "$ref": "#/definitions/DefaultRelativeDateTimeControlOptions" + }, + "DefaultSliderOptions": { + "$ref": "#/definitions/DefaultSliderControlOptions" + }, + "DefaultTextAreaOptions": { + "$ref": "#/definitions/DefaultTextAreaControlOptions" + }, + "DefaultTextFieldOptions": { + "$ref": "#/definitions/DefaultTextFieldControlOptions" + } + }, + "type": "object" + }, + "DefaultFilterDropDownControlOptions": { + "additionalProperties": false, + "properties": { + "CommitMode": { + "$ref": "#/definitions/CommitMode" + }, + "DisplayOptions": { + "$ref": "#/definitions/DropDownControlDisplayOptions" + }, + "SelectableValues": { + "$ref": "#/definitions/FilterSelectableValues" + }, + "Type": { + "$ref": "#/definitions/SheetControlListType" + } + }, + "type": "object" + }, + "DefaultFilterListControlOptions": { + "additionalProperties": false, + "properties": { + "DisplayOptions": { + "$ref": "#/definitions/ListControlDisplayOptions" + }, + "SelectableValues": { + "$ref": "#/definitions/FilterSelectableValues" + }, + "Type": { + "$ref": "#/definitions/SheetControlListType" + } + }, + "type": "object" + }, + "DefaultFreeFormLayoutConfiguration": { + "additionalProperties": false, + "properties": { + "CanvasSizeOptions": { + "$ref": "#/definitions/FreeFormLayoutCanvasSizeOptions" + } + }, + "required": [ + "CanvasSizeOptions" + ], + "type": "object" + }, + "DefaultGridLayoutConfiguration": { + "additionalProperties": false, + "properties": { + "CanvasSizeOptions": { + "$ref": "#/definitions/GridLayoutCanvasSizeOptions" + } + }, + "required": [ + "CanvasSizeOptions" + ], + "type": "object" + }, + "DefaultInteractiveLayoutConfiguration": { + "additionalProperties": false, + "properties": { + "FreeForm": { + "$ref": "#/definitions/DefaultFreeFormLayoutConfiguration" + }, + "Grid": { + "$ref": "#/definitions/DefaultGridLayoutConfiguration" + } + }, + "type": "object" + }, + "DefaultNewSheetConfiguration": { + "additionalProperties": false, + "properties": { + "InteractiveLayoutConfiguration": { + "$ref": "#/definitions/DefaultInteractiveLayoutConfiguration" + }, + "PaginatedLayoutConfiguration": { + "$ref": "#/definitions/DefaultPaginatedLayoutConfiguration" + }, + "SheetContentType": { + "$ref": "#/definitions/SheetContentType" + } + }, + "type": "object" + }, + "DefaultPaginatedLayoutConfiguration": { + "additionalProperties": false, + "properties": { + "SectionBased": { + "$ref": "#/definitions/DefaultSectionBasedLayoutConfiguration" + } + }, + "type": "object" + }, + "DefaultRelativeDateTimeControlOptions": { + "additionalProperties": false, + "properties": { + "CommitMode": { + "$ref": "#/definitions/CommitMode" + }, + "DisplayOptions": { + "$ref": "#/definitions/RelativeDateTimeControlDisplayOptions" + } + }, + "type": "object" + }, + "DefaultSectionBasedLayoutConfiguration": { + "additionalProperties": false, + "properties": { + "CanvasSizeOptions": { + "$ref": "#/definitions/SectionBasedLayoutCanvasSizeOptions" + } + }, + "required": [ + "CanvasSizeOptions" + ], + "type": "object" + }, + "DefaultSliderControlOptions": { + "additionalProperties": false, + "properties": { + "DisplayOptions": { + "$ref": "#/definitions/SliderControlDisplayOptions" + }, + "MaximumValue": { + "default": 0, + "type": "number" + }, + "MinimumValue": { + "default": 0, + "type": "number" + }, + "StepSize": { + "default": 0, + "type": "number" + }, + "Type": { + "$ref": "#/definitions/SheetControlSliderType" + } + }, + "required": [ + "MaximumValue", + "MinimumValue", + "StepSize" + ], + "type": "object" + }, + "DefaultTextAreaControlOptions": { + "additionalProperties": false, + "properties": { + "Delimiter": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "DisplayOptions": { + "$ref": "#/definitions/TextAreaControlDisplayOptions" + } + }, + "type": "object" + }, + "DefaultTextFieldControlOptions": { + "additionalProperties": false, + "properties": { + "DisplayOptions": { + "$ref": "#/definitions/TextFieldControlDisplayOptions" + } + }, + "type": "object" + }, + "DestinationParameterValueConfiguration": { + "additionalProperties": false, + "properties": { + "CustomValuesConfiguration": { + "$ref": "#/definitions/CustomValuesConfiguration" + }, + "SelectAllValueOptions": { + "$ref": "#/definitions/SelectAllValueOptions" + }, + "SourceColumn": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "SourceField": { + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "SourceParameterName": { + "type": "string" + } + }, + "type": "object" + }, + "DigitGroupingStyle": { + "enum": [ + "DEFAULT", + "LAKHS" + ], + "type": "string" + }, + "DimensionField": { + "additionalProperties": false, + "properties": { + "CategoricalDimensionField": { + "$ref": "#/definitions/CategoricalDimensionField" + }, + "DateDimensionField": { + "$ref": "#/definitions/DateDimensionField" + }, + "NumericalDimensionField": { + "$ref": "#/definitions/NumericalDimensionField" + } + }, + "type": "object" + }, + "DonutCenterOptions": { + "additionalProperties": false, + "properties": { + "LabelVisibility": { + "$ref": "#/definitions/Visibility" + } + }, + "type": "object" + }, + "DonutOptions": { + "additionalProperties": false, + "properties": { + "ArcOptions": { + "$ref": "#/definitions/ArcOptions" + }, + "DonutCenterOptions": { + "$ref": "#/definitions/DonutCenterOptions" + } + }, + "type": "object" + }, + "DrillDownFilter": { + "additionalProperties": false, + "properties": { + "CategoryFilter": { + "$ref": "#/definitions/CategoryDrillDownFilter" + }, + "NumericEqualityFilter": { + "$ref": "#/definitions/NumericEqualityDrillDownFilter" + }, + "TimeRangeFilter": { + "$ref": "#/definitions/TimeRangeDrillDownFilter" + } + }, + "type": "object" + }, + "DropDownControlDisplayOptions": { + "additionalProperties": false, + "properties": { + "InfoIconLabelOptions": { + "$ref": "#/definitions/SheetControlInfoIconLabelOptions" + }, + "SelectAllOptions": { + "$ref": "#/definitions/ListControlSelectAllOptions" + }, + "TitleOptions": { + "$ref": "#/definitions/LabelOptions" + } + }, + "type": "object" + }, + "DynamicDefaultValue": { + "additionalProperties": false, + "properties": { + "DefaultValueColumn": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "GroupNameColumn": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "UserNameColumn": { + "$ref": "#/definitions/ColumnIdentifier" + } + }, + "required": [ + "DefaultValueColumn" + ], + "type": "object" + }, + "EmptyVisual": { + "additionalProperties": false, + "properties": { + "Actions": { + "items": { + "$ref": "#/definitions/VisualCustomAction" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + }, + "DataSetIdentifier": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "VisualId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + } + }, + "required": [ + "DataSetIdentifier", + "VisualId" + ], + "type": "object" + }, + "Entity": { + "additionalProperties": false, + "properties": { + "Path": { + "pattern": "\\S", + "type": "string" + } + }, + "type": "object" + }, + "ExcludePeriodConfiguration": { + "additionalProperties": false, + "properties": { + "Amount": { + "default": null, + "type": "number" + }, + "Granularity": { + "$ref": "#/definitions/TimeGranularity" + }, + "Status": { + "$ref": "#/definitions/WidgetStatus" + } + }, + "required": [ + "Amount", + "Granularity" + ], + "type": "object" + }, + "ExplicitHierarchy": { + "additionalProperties": false, + "properties": { + "Columns": { + "items": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "maxItems": 10, + "minItems": 2, + "type": "array" + }, + "DrillDownFilters": { + "items": { + "$ref": "#/definitions/DrillDownFilter" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + }, + "HierarchyId": { + "maxLength": 512, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Columns", + "HierarchyId" + ], + "type": "object" + }, + "ExportHiddenFieldsOption": { + "additionalProperties": false, + "description": "Determines if hidden fields are included in an exported dashboard.
", + "properties": { + "AvailabilityStatus": { + "$ref": "#/definitions/DashboardBehavior" + } + }, + "type": "object" + }, + "ExportToCSVOption": { + "additionalProperties": false, + "description": "Export to .csv option.
", + "properties": { + "AvailabilityStatus": { + "$ref": "#/definitions/DashboardBehavior" + } + }, + "type": "object" + }, + "ExportWithHiddenFieldsOption": { + "additionalProperties": false, + "description": "Determines whether or not hidden fields are visible on exported dashbaords.
", + "properties": { + "AvailabilityStatus": { + "$ref": "#/definitions/DashboardBehavior" + } + }, + "type": "object" + }, + "FieldBasedTooltip": { + "additionalProperties": false, + "properties": { + "AggregationVisibility": { + "$ref": "#/definitions/Visibility" + }, + "TooltipFields": { + "items": { + "$ref": "#/definitions/TooltipItem" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + }, + "TooltipTitleType": { + "$ref": "#/definitions/TooltipTitleType" + } + }, + "type": "object" + }, + "FieldLabelType": { + "additionalProperties": false, + "properties": { + "FieldId": { + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "Visibility": { + "$ref": "#/definitions/Visibility" + } + }, + "type": "object" + }, + "FieldSeriesItem": { + "additionalProperties": false, + "properties": { + "AxisBinding": { + "$ref": "#/definitions/AxisBinding" + }, + "FieldId": { + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "Settings": { + "$ref": "#/definitions/LineChartSeriesSettings" + } + }, + "required": [ + "AxisBinding", + "FieldId" + ], + "type": "object" + }, + "FieldSort": { + "additionalProperties": false, + "properties": { + "Direction": { + "$ref": "#/definitions/SortDirection" + }, + "FieldId": { + "maxLength": 512, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Direction", + "FieldId" + ], + "type": "object" + }, + "FieldSortOptions": { + "additionalProperties": false, + "properties": { + "ColumnSort": { + "$ref": "#/definitions/ColumnSort" + }, + "FieldSort": { + "$ref": "#/definitions/FieldSort" + } + }, + "type": "object" + }, + "FieldTooltipItem": { + "additionalProperties": false, + "properties": { + "FieldId": { + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "Label": { + "type": "string" + }, + "TooltipTarget": { + "$ref": "#/definitions/TooltipTarget" + }, + "Visibility": { + "$ref": "#/definitions/Visibility" + } + }, + "required": [ + "FieldId" + ], + "type": "object" + }, + "FilledMapAggregatedFieldWells": { + "additionalProperties": false, + "properties": { + "Geospatial": { + "items": { + "$ref": "#/definitions/DimensionField" + }, + "maxItems": 1, + "minItems": 0, + "type": "array" + }, + "Values": { + "items": { + "$ref": "#/definitions/MeasureField" + }, + "maxItems": 1, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "FilledMapConditionalFormatting": { + "additionalProperties": false, + "properties": { + "ConditionalFormattingOptions": { + "items": { + "$ref": "#/definitions/FilledMapConditionalFormattingOption" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + } + }, + "required": [ + "ConditionalFormattingOptions" + ], + "type": "object" + }, + "FilledMapConditionalFormattingOption": { + "additionalProperties": false, + "properties": { + "Shape": { + "$ref": "#/definitions/FilledMapShapeConditionalFormatting" + } + }, + "required": [ + "Shape" + ], + "type": "object" + }, + "FilledMapConfiguration": { + "additionalProperties": false, + "properties": { + "FieldWells": { + "$ref": "#/definitions/FilledMapFieldWells" + }, + "Interactions": { + "$ref": "#/definitions/VisualInteractionOptions" + }, + "Legend": { + "$ref": "#/definitions/LegendOptions" + }, + "MapStyleOptions": { + "$ref": "#/definitions/GeospatialMapStyleOptions" + }, + "SortConfiguration": { + "$ref": "#/definitions/FilledMapSortConfiguration" + }, + "Tooltip": { + "$ref": "#/definitions/TooltipOptions" + }, + "WindowOptions": { + "$ref": "#/definitions/GeospatialWindowOptions" + } + }, + "type": "object" + }, + "FilledMapFieldWells": { + "additionalProperties": false, + "properties": { + "FilledMapAggregatedFieldWells": { + "$ref": "#/definitions/FilledMapAggregatedFieldWells" + } + }, + "type": "object" + }, + "FilledMapShapeConditionalFormatting": { + "additionalProperties": false, + "properties": { + "FieldId": { + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "Format": { + "$ref": "#/definitions/ShapeConditionalFormat" + } + }, + "required": [ + "FieldId" + ], + "type": "object" + }, + "FilledMapSortConfiguration": { + "additionalProperties": false, + "properties": { + "CategorySort": { + "items": { + "$ref": "#/definitions/FieldSortOptions" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "FilledMapVisual": { + "additionalProperties": false, + "properties": { + "Actions": { + "items": { + "$ref": "#/definitions/VisualCustomAction" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + }, + "ChartConfiguration": { + "$ref": "#/definitions/FilledMapConfiguration" + }, + "ColumnHierarchies": { + "items": { + "$ref": "#/definitions/ColumnHierarchy" + }, + "maxItems": 2, + "minItems": 0, + "type": "array" + }, + "ConditionalFormatting": { + "$ref": "#/definitions/FilledMapConditionalFormatting" + }, + "Subtitle": { + "$ref": "#/definitions/VisualSubtitleLabelOptions" + }, + "Title": { + "$ref": "#/definitions/VisualTitleLabelOptions" + }, + "VisualContentAltText": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "VisualId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + } + }, + "required": [ + "VisualId" + ], + "type": "object" + }, + "Filter": { + "additionalProperties": false, + "properties": { + "CategoryFilter": { + "$ref": "#/definitions/CategoryFilter" + }, + "NestedFilter": { + "$ref": "#/definitions/NestedFilter" + }, + "NumericEqualityFilter": { + "$ref": "#/definitions/NumericEqualityFilter" + }, + "NumericRangeFilter": { + "$ref": "#/definitions/NumericRangeFilter" + }, + "RelativeDatesFilter": { + "$ref": "#/definitions/RelativeDatesFilter" + }, + "TimeEqualityFilter": { + "$ref": "#/definitions/TimeEqualityFilter" + }, + "TimeRangeFilter": { + "$ref": "#/definitions/TimeRangeFilter" + }, + "TopBottomFilter": { + "$ref": "#/definitions/TopBottomFilter" + } + }, + "type": "object" + }, + "FilterControl": { + "additionalProperties": false, + "properties": { + "CrossSheet": { + "$ref": "#/definitions/FilterCrossSheetControl" + }, + "DateTimePicker": { + "$ref": "#/definitions/FilterDateTimePickerControl" + }, + "Dropdown": { + "$ref": "#/definitions/FilterDropDownControl" + }, + "List": { + "$ref": "#/definitions/FilterListControl" + }, + "RelativeDateTime": { + "$ref": "#/definitions/FilterRelativeDateTimeControl" + }, + "Slider": { + "$ref": "#/definitions/FilterSliderControl" + }, + "TextArea": { + "$ref": "#/definitions/FilterTextAreaControl" + }, + "TextField": { + "$ref": "#/definitions/FilterTextFieldControl" + } + }, + "type": "object" + }, + "FilterCrossSheetControl": { + "additionalProperties": false, + "properties": { + "CascadingControlConfiguration": { + "$ref": "#/definitions/CascadingControlConfiguration" + }, + "FilterControlId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "SourceFilterId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + } + }, + "required": [ + "FilterControlId", + "SourceFilterId" + ], + "type": "object" + }, + "FilterDateTimePickerControl": { + "additionalProperties": false, + "properties": { + "CommitMode": { + "$ref": "#/definitions/CommitMode" + }, + "DisplayOptions": { + "$ref": "#/definitions/DateTimePickerControlDisplayOptions" + }, + "FilterControlId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "SourceFilterId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "Title": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "Type": { + "$ref": "#/definitions/SheetControlDateTimePickerType" + } + }, + "required": [ + "FilterControlId", + "SourceFilterId", + "Title" + ], + "type": "object" + }, + "FilterDropDownControl": { + "additionalProperties": false, + "properties": { + "CascadingControlConfiguration": { + "$ref": "#/definitions/CascadingControlConfiguration" + }, + "CommitMode": { + "$ref": "#/definitions/CommitMode" + }, + "DisplayOptions": { + "$ref": "#/definitions/DropDownControlDisplayOptions" + }, + "FilterControlId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "SelectableValues": { + "$ref": "#/definitions/FilterSelectableValues" + }, + "SourceFilterId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "Title": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "Type": { + "$ref": "#/definitions/SheetControlListType" + } + }, + "required": [ + "FilterControlId", + "SourceFilterId", + "Title" + ], + "type": "object" + }, + "FilterGroup": { + "additionalProperties": false, + "properties": { + "CrossDataset": { + "$ref": "#/definitions/CrossDatasetTypes" + }, + "FilterGroupId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "Filters": { + "items": { + "$ref": "#/definitions/Filter" + }, + "maxItems": 20, + "minItems": 0, + "type": "array" + }, + "ScopeConfiguration": { + "$ref": "#/definitions/FilterScopeConfiguration" + }, + "Status": { + "$ref": "#/definitions/WidgetStatus" + } + }, + "required": [ + "CrossDataset", + "FilterGroupId", + "Filters", + "ScopeConfiguration" + ], + "type": "object" + }, + "FilterListConfiguration": { + "additionalProperties": false, + "properties": { + "CategoryValues": { + "items": { + "maxLength": 512, + "minLength": 0, + "type": "string" + }, + "maxItems": 100000, + "minItems": 0, + "type": "array" + }, + "MatchOperator": { + "$ref": "#/definitions/CategoryFilterMatchOperator" + }, + "NullOption": { + "$ref": "#/definitions/FilterNullOption" + }, + "SelectAllOptions": { + "$ref": "#/definitions/CategoryFilterSelectAllOptions" + } + }, + "required": [ + "MatchOperator" + ], + "type": "object" + }, + "FilterListControl": { + "additionalProperties": false, + "properties": { + "CascadingControlConfiguration": { + "$ref": "#/definitions/CascadingControlConfiguration" + }, + "DisplayOptions": { + "$ref": "#/definitions/ListControlDisplayOptions" + }, + "FilterControlId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "SelectableValues": { + "$ref": "#/definitions/FilterSelectableValues" + }, + "SourceFilterId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "Title": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "Type": { + "$ref": "#/definitions/SheetControlListType" + } + }, + "required": [ + "FilterControlId", + "SourceFilterId", + "Title" + ], + "type": "object" + }, + "FilterNullOption": { + "enum": [ + "ALL_VALUES", + "NULLS_ONLY", + "NON_NULLS_ONLY" + ], + "type": "string" + }, + "FilterOperationSelectedFieldsConfiguration": { + "additionalProperties": false, + "properties": { + "SelectedColumns": { + "description": "The selected columns of a dataset.
", + "items": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + }, + "SelectedFieldOptions": { + "$ref": "#/definitions/SelectedFieldOptions" + }, + "SelectedFields": { + "items": { + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "maxItems": 20, + "minItems": 1, + "type": "array" + } + }, + "type": "object" + }, + "FilterOperationTargetVisualsConfiguration": { + "additionalProperties": false, + "properties": { + "SameSheetTargetVisualConfiguration": { + "$ref": "#/definitions/SameSheetTargetVisualConfiguration" + } + }, + "type": "object" + }, + "FilterRelativeDateTimeControl": { + "additionalProperties": false, + "properties": { + "CommitMode": { + "$ref": "#/definitions/CommitMode" + }, + "DisplayOptions": { + "$ref": "#/definitions/RelativeDateTimeControlDisplayOptions" + }, + "FilterControlId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "SourceFilterId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "Title": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "FilterControlId", + "SourceFilterId", + "Title" + ], + "type": "object" + }, + "FilterScopeConfiguration": { + "additionalProperties": false, + "properties": { + "AllSheets": { + "$ref": "#/definitions/AllSheetsFilterScopeConfiguration" + }, + "SelectedSheets": { + "$ref": "#/definitions/SelectedSheetsFilterScopeConfiguration" + } + }, + "type": "object" + }, + "FilterSelectableValues": { + "additionalProperties": false, + "properties": { + "Values": { + "items": { + "type": "string" + }, + "maxItems": 50000, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "FilterSliderControl": { + "additionalProperties": false, + "properties": { + "DisplayOptions": { + "$ref": "#/definitions/SliderControlDisplayOptions" + }, + "FilterControlId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "MaximumValue": { + "default": 0, + "type": "number" + }, + "MinimumValue": { + "default": 0, + "type": "number" + }, + "SourceFilterId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "StepSize": { + "default": 0, + "type": "number" + }, + "Title": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "Type": { + "$ref": "#/definitions/SheetControlSliderType" + } + }, + "required": [ + "FilterControlId", + "MaximumValue", + "MinimumValue", + "SourceFilterId", + "StepSize", + "Title" + ], + "type": "object" + }, + "FilterTextAreaControl": { + "additionalProperties": false, + "properties": { + "Delimiter": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "DisplayOptions": { + "$ref": "#/definitions/TextAreaControlDisplayOptions" + }, + "FilterControlId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "SourceFilterId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "Title": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "FilterControlId", + "SourceFilterId", + "Title" + ], + "type": "object" + }, + "FilterTextFieldControl": { + "additionalProperties": false, + "properties": { + "DisplayOptions": { + "$ref": "#/definitions/TextFieldControlDisplayOptions" + }, + "FilterControlId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "SourceFilterId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "Title": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "FilterControlId", + "SourceFilterId", + "Title" + ], + "type": "object" + }, + "FilterVisualScope": { + "enum": [ + "ALL_VISUALS", + "SELECTED_VISUALS" + ], + "type": "string" + }, + "FontConfiguration": { + "additionalProperties": false, + "properties": { + "FontColor": { + "pattern": "^#[A-F0-9]{6}$", + "type": "string" + }, + "FontDecoration": { + "$ref": "#/definitions/FontDecoration" + }, + "FontFamily": { + "type": "string" + }, + "FontSize": { + "$ref": "#/definitions/FontSize" + }, + "FontStyle": { + "$ref": "#/definitions/FontStyle" + }, + "FontWeight": { + "$ref": "#/definitions/FontWeight" + } + }, + "type": "object" + }, + "FontDecoration": { + "enum": [ + "UNDERLINE", + "NONE" + ], + "type": "string" + }, + "FontSize": { + "additionalProperties": false, + "properties": { + "Absolute": { + "description": "String based length that is composed of value and unit in px", + "type": "string" + }, + "Relative": { + "$ref": "#/definitions/RelativeFontSize" + } + }, + "type": "object" + }, + "FontStyle": { + "enum": [ + "NORMAL", + "ITALIC" + ], + "type": "string" + }, + "FontWeight": { + "additionalProperties": false, + "properties": { + "Name": { + "$ref": "#/definitions/FontWeightName" + } + }, + "type": "object" + }, + "FontWeightName": { + "enum": [ + "NORMAL", + "BOLD" + ], + "type": "string" + }, + "ForecastComputation": { + "additionalProperties": false, + "properties": { + "ComputationId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "CustomSeasonalityValue": { + "default": null, + "maximum": 180, + "minimum": 1, + "type": "number" + }, + "LowerBoundary": { + "default": null, + "type": "number" + }, + "Name": { + "type": "string" + }, + "PeriodsBackward": { + "maximum": 1000, + "minimum": 0, + "type": "number" + }, + "PeriodsForward": { + "maximum": 1000, + "minimum": 1, + "type": "number" + }, + "PredictionInterval": { + "maximum": 95, + "minimum": 50, + "type": "number" + }, + "Seasonality": { + "$ref": "#/definitions/ForecastComputationSeasonality" + }, + "Time": { + "$ref": "#/definitions/DimensionField" + }, + "UpperBoundary": { + "default": null, + "type": "number" + }, + "Value": { + "$ref": "#/definitions/MeasureField" + } + }, + "required": [ + "ComputationId" + ], + "type": "object" + }, + "ForecastComputationSeasonality": { + "enum": [ + "AUTOMATIC", + "CUSTOM" + ], + "type": "string" + }, + "ForecastConfiguration": { + "additionalProperties": false, + "properties": { + "ForecastProperties": { + "$ref": "#/definitions/TimeBasedForecastProperties" + }, + "Scenario": { + "$ref": "#/definitions/ForecastScenario" + } + }, + "type": "object" + }, + "ForecastScenario": { + "additionalProperties": false, + "properties": { + "WhatIfPointScenario": { + "$ref": "#/definitions/WhatIfPointScenario" + }, + "WhatIfRangeScenario": { + "$ref": "#/definitions/WhatIfRangeScenario" + } + }, + "type": "object" + }, + "FormatConfiguration": { + "additionalProperties": false, + "properties": { + "DateTimeFormatConfiguration": { + "$ref": "#/definitions/DateTimeFormatConfiguration" + }, + "NumberFormatConfiguration": { + "$ref": "#/definitions/NumberFormatConfiguration" + }, + "StringFormatConfiguration": { + "$ref": "#/definitions/StringFormatConfiguration" + } + }, + "type": "object" + }, + "FreeFormLayoutCanvasSizeOptions": { + "additionalProperties": false, + "properties": { + "ScreenCanvasSizeOptions": { + "$ref": "#/definitions/FreeFormLayoutScreenCanvasSizeOptions" + } + }, + "type": "object" + }, + "FreeFormLayoutConfiguration": { + "additionalProperties": false, + "properties": { + "CanvasSizeOptions": { + "$ref": "#/definitions/FreeFormLayoutCanvasSizeOptions" + }, + "Elements": { + "items": { + "$ref": "#/definitions/FreeFormLayoutElement" + }, + "maxItems": 430, + "minItems": 0, + "type": "array" + } + }, + "required": [ + "Elements" + ], + "type": "object" + }, + "FreeFormLayoutElement": { + "additionalProperties": false, + "properties": { + "BackgroundStyle": { + "$ref": "#/definitions/FreeFormLayoutElementBackgroundStyle" + }, + "BorderStyle": { + "$ref": "#/definitions/FreeFormLayoutElementBorderStyle" + }, + "ElementId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "ElementType": { + "$ref": "#/definitions/LayoutElementType" + }, + "Height": { + "description": "String based length that is composed of value and unit in px", + "type": "string" + }, + "LoadingAnimation": { + "$ref": "#/definitions/LoadingAnimation" + }, + "RenderingRules": { + "items": { + "$ref": "#/definitions/SheetElementRenderingRule" + }, + "maxItems": 10000, + "minItems": 0, + "type": "array" + }, + "SelectedBorderStyle": { + "$ref": "#/definitions/FreeFormLayoutElementBorderStyle" + }, + "Visibility": { + "$ref": "#/definitions/Visibility" + }, + "Width": { + "description": "String based length that is composed of value and unit in px", + "type": "string" + }, + "XAxisLocation": { + "description": "String based length that is composed of value and unit in px", + "type": "string" + }, + "YAxisLocation": { + "description": "String based length that is composed of value and unit in px with Integer.MAX_VALUE as maximum value", + "type": "string" + } + }, + "required": [ + "ElementId", + "ElementType", + "Height", + "Width", + "XAxisLocation", + "YAxisLocation" + ], + "type": "object" + }, + "FreeFormLayoutElementBackgroundStyle": { + "additionalProperties": false, + "properties": { + "Color": { + "pattern": "^#[A-F0-9]{6}(?:[A-F0-9]{2})?$", + "type": "string" + }, + "Visibility": { + "$ref": "#/definitions/Visibility" + } + }, + "type": "object" + }, + "FreeFormLayoutElementBorderStyle": { + "additionalProperties": false, + "properties": { + "Color": { + "pattern": "^#[A-F0-9]{6}(?:[A-F0-9]{2})?$", + "type": "string" + }, + "Visibility": { + "$ref": "#/definitions/Visibility" + } + }, + "type": "object" + }, + "FreeFormLayoutScreenCanvasSizeOptions": { + "additionalProperties": false, + "properties": { + "OptimizedViewPortWidth": { + "description": "String based length that is composed of value and unit in px", + "type": "string" + } + }, + "required": [ + "OptimizedViewPortWidth" + ], + "type": "object" + }, + "FreeFormSectionLayoutConfiguration": { + "additionalProperties": false, + "properties": { + "Elements": { + "items": { + "$ref": "#/definitions/FreeFormLayoutElement" + }, + "maxItems": 430, + "minItems": 0, + "type": "array" + } + }, + "required": [ + "Elements" + ], + "type": "object" + }, + "FunnelChartAggregatedFieldWells": { + "additionalProperties": false, + "properties": { + "Category": { + "items": { + "$ref": "#/definitions/DimensionField" + }, + "maxItems": 1, + "minItems": 0, + "type": "array" + }, + "Values": { + "items": { + "$ref": "#/definitions/MeasureField" + }, + "maxItems": 1, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "FunnelChartConfiguration": { + "additionalProperties": false, + "properties": { + "CategoryLabelOptions": { + "$ref": "#/definitions/ChartAxisLabelOptions" + }, + "DataLabelOptions": { + "$ref": "#/definitions/FunnelChartDataLabelOptions" + }, + "FieldWells": { + "$ref": "#/definitions/FunnelChartFieldWells" + }, + "Interactions": { + "$ref": "#/definitions/VisualInteractionOptions" + }, + "SortConfiguration": { + "$ref": "#/definitions/FunnelChartSortConfiguration" + }, + "Tooltip": { + "$ref": "#/definitions/TooltipOptions" + }, + "ValueLabelOptions": { + "$ref": "#/definitions/ChartAxisLabelOptions" + }, + "VisualPalette": { + "$ref": "#/definitions/VisualPalette" + } + }, + "type": "object" + }, + "FunnelChartDataLabelOptions": { + "additionalProperties": false, + "properties": { + "CategoryLabelVisibility": { + "$ref": "#/definitions/Visibility" + }, + "LabelColor": { + "pattern": "^#[A-F0-9]{6}$", + "type": "string" + }, + "LabelFontConfiguration": { + "$ref": "#/definitions/FontConfiguration" + }, + "MeasureDataLabelStyle": { + "$ref": "#/definitions/FunnelChartMeasureDataLabelStyle" + }, + "MeasureLabelVisibility": { + "$ref": "#/definitions/Visibility" + }, + "Position": { + "$ref": "#/definitions/DataLabelPosition" + }, + "Visibility": { + "$ref": "#/definitions/Visibility" + } + }, + "type": "object" + }, + "FunnelChartFieldWells": { + "additionalProperties": false, + "properties": { + "FunnelChartAggregatedFieldWells": { + "$ref": "#/definitions/FunnelChartAggregatedFieldWells" + } + }, + "type": "object" + }, + "FunnelChartMeasureDataLabelStyle": { + "enum": [ + "VALUE_ONLY", + "PERCENTAGE_BY_FIRST_STAGE", + "PERCENTAGE_BY_PREVIOUS_STAGE", + "VALUE_AND_PERCENTAGE_BY_FIRST_STAGE", + "VALUE_AND_PERCENTAGE_BY_PREVIOUS_STAGE" + ], + "type": "string" + }, + "FunnelChartSortConfiguration": { + "additionalProperties": false, + "properties": { + "CategoryItemsLimit": { + "$ref": "#/definitions/ItemsLimitConfiguration" + }, + "CategorySort": { + "items": { + "$ref": "#/definitions/FieldSortOptions" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "FunnelChartVisual": { + "additionalProperties": false, + "properties": { + "Actions": { + "items": { + "$ref": "#/definitions/VisualCustomAction" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + }, + "ChartConfiguration": { + "$ref": "#/definitions/FunnelChartConfiguration" + }, + "ColumnHierarchies": { + "items": { + "$ref": "#/definitions/ColumnHierarchy" + }, + "maxItems": 2, + "minItems": 0, + "type": "array" + }, + "Subtitle": { + "$ref": "#/definitions/VisualSubtitleLabelOptions" + }, + "Title": { + "$ref": "#/definitions/VisualTitleLabelOptions" + }, + "VisualContentAltText": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "VisualId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + } + }, + "required": [ + "VisualId" + ], + "type": "object" + }, + "GaugeChartArcConditionalFormatting": { + "additionalProperties": false, + "properties": { + "ForegroundColor": { + "$ref": "#/definitions/ConditionalFormattingColor" + } + }, + "type": "object" + }, + "GaugeChartColorConfiguration": { + "additionalProperties": false, + "properties": { + "BackgroundColor": { + "pattern": "^#[A-F0-9]{6}$", + "type": "string" + }, + "ForegroundColor": { + "pattern": "^#[A-F0-9]{6}$", + "type": "string" + } + }, + "type": "object" + }, + "GaugeChartConditionalFormatting": { + "additionalProperties": false, + "properties": { + "ConditionalFormattingOptions": { + "items": { + "$ref": "#/definitions/GaugeChartConditionalFormattingOption" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "GaugeChartConditionalFormattingOption": { + "additionalProperties": false, + "properties": { + "Arc": { + "$ref": "#/definitions/GaugeChartArcConditionalFormatting" + }, + "PrimaryValue": { + "$ref": "#/definitions/GaugeChartPrimaryValueConditionalFormatting" + } + }, + "type": "object" + }, + "GaugeChartConfiguration": { + "additionalProperties": false, + "properties": { + "ColorConfiguration": { + "$ref": "#/definitions/GaugeChartColorConfiguration" + }, + "DataLabels": { + "$ref": "#/definitions/DataLabelOptions" + }, + "FieldWells": { + "$ref": "#/definitions/GaugeChartFieldWells" + }, + "GaugeChartOptions": { + "$ref": "#/definitions/GaugeChartOptions" + }, + "Interactions": { + "$ref": "#/definitions/VisualInteractionOptions" + }, + "TooltipOptions": { + "$ref": "#/definitions/TooltipOptions" + }, + "VisualPalette": { + "$ref": "#/definitions/VisualPalette" + } + }, + "type": "object" + }, + "GaugeChartFieldWells": { + "additionalProperties": false, + "properties": { + "TargetValues": { + "items": { + "$ref": "#/definitions/MeasureField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "Values": { + "items": { + "$ref": "#/definitions/MeasureField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "GaugeChartOptions": { + "additionalProperties": false, + "properties": { + "Arc": { + "$ref": "#/definitions/ArcConfiguration" + }, + "ArcAxis": { + "$ref": "#/definitions/ArcAxisConfiguration" + }, + "Comparison": { + "$ref": "#/definitions/ComparisonConfiguration" + }, + "PrimaryValueDisplayType": { + "$ref": "#/definitions/PrimaryValueDisplayType" + }, + "PrimaryValueFontConfiguration": { + "$ref": "#/definitions/FontConfiguration" + } + }, + "type": "object" + }, + "GaugeChartPrimaryValueConditionalFormatting": { + "additionalProperties": false, + "properties": { + "Icon": { + "$ref": "#/definitions/ConditionalFormattingIcon" + }, + "TextColor": { + "$ref": "#/definitions/ConditionalFormattingColor" + } + }, + "type": "object" + }, + "GaugeChartVisual": { + "additionalProperties": false, + "properties": { + "Actions": { + "items": { + "$ref": "#/definitions/VisualCustomAction" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + }, + "ChartConfiguration": { + "$ref": "#/definitions/GaugeChartConfiguration" + }, + "ConditionalFormatting": { + "$ref": "#/definitions/GaugeChartConditionalFormatting" + }, + "Subtitle": { + "$ref": "#/definitions/VisualSubtitleLabelOptions" + }, + "Title": { + "$ref": "#/definitions/VisualTitleLabelOptions" + }, + "VisualContentAltText": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "VisualId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + } + }, + "required": [ + "VisualId" + ], + "type": "object" + }, + "GeospatialCategoricalColor": { + "additionalProperties": false, + "properties": { + "CategoryDataColors": { + "items": { + "$ref": "#/definitions/GeospatialCategoricalDataColor" + }, + "type": "array" + }, + "DefaultOpacity": { + "maximum": 1, + "minimum": 0, + "type": "number" + }, + "NullDataSettings": { + "$ref": "#/definitions/GeospatialNullDataSettings" + }, + "NullDataVisibility": { + "$ref": "#/definitions/Visibility" + } + }, + "required": [ + "CategoryDataColors" + ], + "type": "object" + }, + "GeospatialCategoricalDataColor": { + "additionalProperties": false, + "properties": { + "Color": { + "pattern": "^#[A-F0-9]{6}(?:[A-F0-9]{2})?$", + "type": "string" + }, + "DataValue": { + "type": "string" + } + }, + "required": [ + "Color", + "DataValue" + ], + "type": "object" + }, + "GeospatialCircleRadius": { + "additionalProperties": false, + "properties": { + "Radius": { + "minimum": 0, + "type": "number" + } + }, + "type": "object" + }, + "GeospatialCircleSymbolStyle": { + "additionalProperties": false, + "properties": { + "CircleRadius": { + "$ref": "#/definitions/GeospatialCircleRadius" + }, + "FillColor": { + "$ref": "#/definitions/GeospatialColor" + }, + "StrokeColor": { + "$ref": "#/definitions/GeospatialColor" + }, + "StrokeWidth": { + "$ref": "#/definitions/GeospatialLineWidth" + } + }, + "type": "object" + }, + "GeospatialColor": { + "additionalProperties": false, + "properties": { + "Categorical": { + "$ref": "#/definitions/GeospatialCategoricalColor" + }, + "Gradient": { + "$ref": "#/definitions/GeospatialGradientColor" + }, + "Solid": { + "$ref": "#/definitions/GeospatialSolidColor" + } + }, + "type": "object" + }, + "GeospatialColorState": { + "description": "Defines view state of the color", + "enum": [ + "ENABLED", + "DISABLED" + ], + "type": "string" + }, + "GeospatialCoordinateBounds": { + "additionalProperties": false, + "properties": { + "East": { + "maximum": 1800, + "minimum": -1800, + "type": "number" + }, + "North": { + "maximum": 90, + "minimum": -90, + "type": "number" + }, + "South": { + "maximum": 90, + "minimum": -90, + "type": "number" + }, + "West": { + "maximum": 1800, + "minimum": -1800, + "type": "number" + } + }, + "required": [ + "East", + "North", + "South", + "West" + ], + "type": "object" + }, + "GeospatialDataSourceItem": { + "additionalProperties": false, + "properties": { + "StaticFileDataSource": { + "$ref": "#/definitions/GeospatialStaticFileSource" + } + }, + "type": "object" + }, + "GeospatialGradientColor": { + "additionalProperties": false, + "properties": { + "DefaultOpacity": { + "maximum": 1, + "minimum": 0, + "type": "number" + }, + "NullDataSettings": { + "$ref": "#/definitions/GeospatialNullDataSettings" + }, + "NullDataVisibility": { + "$ref": "#/definitions/Visibility" + }, + "StepColors": { + "items": { + "$ref": "#/definitions/GeospatialGradientStepColor" + }, + "maxItems": 3, + "minItems": 2, + "type": "array" + } + }, + "required": [ + "StepColors" + ], + "type": "object" + }, + "GeospatialGradientStepColor": { + "additionalProperties": false, + "properties": { + "Color": { + "pattern": "^#[A-F0-9]{6}(?:[A-F0-9]{2})?$", + "type": "string" + }, + "DataValue": { + "default": 0, + "type": "number" + } + }, + "required": [ + "Color", + "DataValue" + ], + "type": "object" + }, + "GeospatialHeatmapColorScale": { + "additionalProperties": false, + "properties": { + "Colors": { + "items": { + "$ref": "#/definitions/GeospatialHeatmapDataColor" + }, + "maxItems": 2, + "minItems": 2, + "type": "array" + } + }, + "type": "object" + }, + "GeospatialHeatmapConfiguration": { + "additionalProperties": false, + "properties": { + "HeatmapColor": { + "$ref": "#/definitions/GeospatialHeatmapColorScale" + } + }, + "type": "object" + }, + "GeospatialHeatmapDataColor": { + "additionalProperties": false, + "properties": { + "Color": { + "pattern": "^#[A-F0-9]{6}$", + "type": "string" + } + }, + "required": [ + "Color" + ], + "type": "object" + }, + "GeospatialLayerColorField": { + "additionalProperties": false, + "properties": { + "ColorDimensionsFields": { + "items": { + "$ref": "#/definitions/DimensionField" + }, + "maxItems": 1, + "minItems": 0, + "type": "array" + }, + "ColorValuesFields": { + "items": { + "$ref": "#/definitions/MeasureField" + }, + "maxItems": 1, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "GeospatialLayerDefinition": { + "additionalProperties": false, + "properties": { + "LineLayer": { + "$ref": "#/definitions/GeospatialLineLayer" + }, + "PointLayer": { + "$ref": "#/definitions/GeospatialPointLayer" + }, + "PolygonLayer": { + "$ref": "#/definitions/GeospatialPolygonLayer" + } + }, + "type": "object" + }, + "GeospatialLayerItem": { + "additionalProperties": false, + "properties": { + "Actions": { + "items": { + "$ref": "#/definitions/LayerCustomAction" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + }, + "DataSource": { + "$ref": "#/definitions/GeospatialDataSourceItem" + }, + "JoinDefinition": { + "$ref": "#/definitions/GeospatialLayerJoinDefinition" + }, + "Label": { + "type": "string" + }, + "LayerDefinition": { + "$ref": "#/definitions/GeospatialLayerDefinition" + }, + "LayerId": { + "type": "string" + }, + "LayerType": { + "$ref": "#/definitions/GeospatialLayerType" + }, + "Tooltip": { + "$ref": "#/definitions/TooltipOptions" + }, + "Visibility": { + "$ref": "#/definitions/Visibility" + } + }, + "required": [ + "LayerId" + ], + "type": "object" + }, + "GeospatialLayerJoinDefinition": { + "additionalProperties": false, + "properties": { + "ColorField": { + "$ref": "#/definitions/GeospatialLayerColorField" + }, + "DatasetKeyField": { + "$ref": "#/definitions/UnaggregatedField" + }, + "ShapeKeyField": { + "type": "string" + } + }, + "type": "object" + }, + "GeospatialLayerMapConfiguration": { + "additionalProperties": false, + "properties": { + "Interactions": { + "$ref": "#/definitions/VisualInteractionOptions" + }, + "Legend": { + "$ref": "#/definitions/LegendOptions" + }, + "MapLayers": { + "items": { + "$ref": "#/definitions/GeospatialLayerItem" + }, + "type": "array" + }, + "MapState": { + "$ref": "#/definitions/GeospatialMapState" + }, + "MapStyle": { + "$ref": "#/definitions/GeospatialMapStyle" + } + }, + "type": "object" + }, + "GeospatialLayerType": { + "enum": [ + "POINT", + "LINE", + "POLYGON" + ], + "type": "string" + }, + "GeospatialLineLayer": { + "additionalProperties": false, + "properties": { + "Style": { + "$ref": "#/definitions/GeospatialLineStyle" + } + }, + "required": [ + "Style" + ], + "type": "object" + }, + "GeospatialLineStyle": { + "additionalProperties": false, + "properties": { + "LineSymbolStyle": { + "$ref": "#/definitions/GeospatialLineSymbolStyle" + } + }, + "type": "object" + }, + "GeospatialLineSymbolStyle": { + "additionalProperties": false, + "properties": { + "FillColor": { + "$ref": "#/definitions/GeospatialColor" + }, + "LineWidth": { + "$ref": "#/definitions/GeospatialLineWidth" + } + }, + "type": "object" + }, + "GeospatialLineWidth": { + "additionalProperties": false, + "properties": { + "LineWidth": { + "minimum": 0, + "type": "number" + } + }, + "type": "object" + }, + "GeospatialMapAggregatedFieldWells": { + "additionalProperties": false, + "properties": { + "Colors": { + "items": { + "$ref": "#/definitions/DimensionField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "Geospatial": { + "items": { + "$ref": "#/definitions/DimensionField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "Values": { + "items": { + "$ref": "#/definitions/MeasureField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "GeospatialMapConfiguration": { + "additionalProperties": false, + "properties": { + "FieldWells": { + "$ref": "#/definitions/GeospatialMapFieldWells" + }, + "Interactions": { + "$ref": "#/definitions/VisualInteractionOptions" + }, + "Legend": { + "$ref": "#/definitions/LegendOptions" + }, + "MapStyleOptions": { + "$ref": "#/definitions/GeospatialMapStyleOptions" + }, + "PointStyleOptions": { + "$ref": "#/definitions/GeospatialPointStyleOptions" + }, + "Tooltip": { + "$ref": "#/definitions/TooltipOptions" + }, + "VisualPalette": { + "$ref": "#/definitions/VisualPalette" + }, + "WindowOptions": { + "$ref": "#/definitions/GeospatialWindowOptions" + } + }, + "type": "object" + }, + "GeospatialMapFieldWells": { + "additionalProperties": false, + "properties": { + "GeospatialMapAggregatedFieldWells": { + "$ref": "#/definitions/GeospatialMapAggregatedFieldWells" + } + }, + "type": "object" + }, + "GeospatialMapNavigation": { + "enum": [ + "ENABLED", + "DISABLED" + ], + "type": "string" + }, + "GeospatialMapState": { + "additionalProperties": false, + "properties": { + "Bounds": { + "$ref": "#/definitions/GeospatialCoordinateBounds" + }, + "MapNavigation": { + "$ref": "#/definitions/GeospatialMapNavigation" + } + }, + "type": "object" + }, + "GeospatialMapStyle": { + "additionalProperties": false, + "properties": { + "BackgroundColor": { + "pattern": "^#[A-F0-9]{6}(?:[A-F0-9]{2})?$", + "type": "string" + }, + "BaseMapStyle": { + "$ref": "#/definitions/BaseMapStyleType" + }, + "BaseMapVisibility": { + "$ref": "#/definitions/Visibility" + } + }, + "type": "object" + }, + "GeospatialMapStyleOptions": { + "additionalProperties": false, + "properties": { + "BaseMapStyle": { + "$ref": "#/definitions/BaseMapStyleType" + } + }, + "type": "object" + }, + "GeospatialMapVisual": { + "additionalProperties": false, + "properties": { + "Actions": { + "items": { + "$ref": "#/definitions/VisualCustomAction" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + }, + "ChartConfiguration": { + "$ref": "#/definitions/GeospatialMapConfiguration" + }, + "ColumnHierarchies": { + "items": { + "$ref": "#/definitions/ColumnHierarchy" + }, + "maxItems": 2, + "minItems": 0, + "type": "array" + }, + "Subtitle": { + "$ref": "#/definitions/VisualSubtitleLabelOptions" + }, + "Title": { + "$ref": "#/definitions/VisualTitleLabelOptions" + }, + "VisualContentAltText": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "VisualId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + } + }, + "required": [ + "VisualId" + ], + "type": "object" + }, + "GeospatialNullDataSettings": { + "additionalProperties": false, + "properties": { + "SymbolStyle": { + "$ref": "#/definitions/GeospatialNullSymbolStyle" + } + }, + "required": [ + "SymbolStyle" + ], + "type": "object" + }, + "GeospatialNullSymbolStyle": { + "additionalProperties": false, + "properties": { + "FillColor": { + "pattern": "^#[A-F0-9]{6}(?:[A-F0-9]{2})?$", + "type": "string" + }, + "StrokeColor": { + "pattern": "^#[A-F0-9]{6}(?:[A-F0-9]{2})?$", + "type": "string" + }, + "StrokeWidth": { + "minimum": 0, + "type": "number" + } + }, + "type": "object" + }, + "GeospatialPointLayer": { + "additionalProperties": false, + "properties": { + "Style": { + "$ref": "#/definitions/GeospatialPointStyle" + } + }, + "required": [ + "Style" + ], + "type": "object" + }, + "GeospatialPointStyle": { + "additionalProperties": false, + "properties": { + "CircleSymbolStyle": { + "$ref": "#/definitions/GeospatialCircleSymbolStyle" + } + }, + "type": "object" + }, + "GeospatialPointStyleOptions": { + "additionalProperties": false, + "properties": { + "ClusterMarkerConfiguration": { + "$ref": "#/definitions/ClusterMarkerConfiguration" + }, + "HeatmapConfiguration": { + "$ref": "#/definitions/GeospatialHeatmapConfiguration" + }, + "SelectedPointStyle": { + "$ref": "#/definitions/GeospatialSelectedPointStyle" + } + }, + "type": "object" + }, + "GeospatialPolygonLayer": { + "additionalProperties": false, + "properties": { + "Style": { + "$ref": "#/definitions/GeospatialPolygonStyle" + } + }, + "required": [ + "Style" + ], + "type": "object" + }, + "GeospatialPolygonStyle": { + "additionalProperties": false, + "properties": { + "PolygonSymbolStyle": { + "$ref": "#/definitions/GeospatialPolygonSymbolStyle" + } + }, + "type": "object" + }, + "GeospatialPolygonSymbolStyle": { + "additionalProperties": false, + "properties": { + "FillColor": { + "$ref": "#/definitions/GeospatialColor" + }, + "StrokeColor": { + "$ref": "#/definitions/GeospatialColor" + }, + "StrokeWidth": { + "$ref": "#/definitions/GeospatialLineWidth" + } + }, + "type": "object" + }, + "GeospatialSelectedPointStyle": { + "enum": [ + "POINT", + "CLUSTER", + "HEATMAP" + ], + "type": "string" + }, + "GeospatialSolidColor": { + "additionalProperties": false, + "description": "Describes the properties for a solid color", + "properties": { + "Color": { + "pattern": "^#[A-F0-9]{6}(?:[A-F0-9]{2})?$", + "type": "string" + }, + "State": { + "$ref": "#/definitions/GeospatialColorState" + } + }, + "required": [ + "Color" + ], + "type": "object" + }, + "GeospatialStaticFileSource": { + "additionalProperties": false, + "properties": { + "StaticFileId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + } + }, + "required": [ + "StaticFileId" + ], + "type": "object" + }, + "GeospatialWindowOptions": { + "additionalProperties": false, + "properties": { + "Bounds": { + "$ref": "#/definitions/GeospatialCoordinateBounds" + }, + "MapZoomMode": { + "$ref": "#/definitions/MapZoomMode" + } + }, + "type": "object" + }, + "GlobalTableBorderOptions": { + "additionalProperties": false, + "properties": { + "SideSpecificBorder": { + "$ref": "#/definitions/TableSideBorderOptions" + }, + "UniformBorder": { + "$ref": "#/definitions/TableBorderOptions" + } + }, + "type": "object" + }, + "GradientColor": { + "additionalProperties": false, + "properties": { + "Stops": { + "items": { + "$ref": "#/definitions/GradientStop" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "GradientStop": { + "additionalProperties": false, + "properties": { + "Color": { + "pattern": "^#[A-F0-9]{6}$", + "type": "string" + }, + "DataValue": { + "default": null, + "type": "number" + }, + "GradientOffset": { + "default": 0, + "type": "number" + } + }, + "required": [ + "GradientOffset" + ], + "type": "object" + }, + "GridLayoutCanvasSizeOptions": { + "additionalProperties": false, + "properties": { + "ScreenCanvasSizeOptions": { + "$ref": "#/definitions/GridLayoutScreenCanvasSizeOptions" + } + }, + "type": "object" + }, + "GridLayoutConfiguration": { + "additionalProperties": false, + "properties": { + "CanvasSizeOptions": { + "$ref": "#/definitions/GridLayoutCanvasSizeOptions" + }, + "Elements": { + "items": { + "$ref": "#/definitions/GridLayoutElement" + }, + "maxItems": 430, + "minItems": 0, + "type": "array" + } + }, + "required": [ + "Elements" + ], + "type": "object" + }, + "GridLayoutElement": { + "additionalProperties": false, + "properties": { + "ColumnIndex": { + "maximum": 35, + "minimum": 0, + "type": "number" + }, + "ColumnSpan": { + "maximum": 36, + "minimum": 1, + "type": "number" + }, + "ElementId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "ElementType": { + "$ref": "#/definitions/LayoutElementType" + }, + "RowIndex": { + "maximum": 9009, + "minimum": 0, + "type": "number" + }, + "RowSpan": { + "maximum": 21, + "minimum": 1, + "type": "number" + } + }, + "required": [ + "ColumnSpan", + "ElementId", + "ElementType", + "RowSpan" + ], + "type": "object" + }, + "GridLayoutScreenCanvasSizeOptions": { + "additionalProperties": false, + "properties": { + "OptimizedViewPortWidth": { + "description": "String based length that is composed of value and unit in px", + "type": "string" + }, + "ResizeOption": { + "$ref": "#/definitions/ResizeOption" + } + }, + "required": [ + "ResizeOption" + ], + "type": "object" + }, + "GrowthRateComputation": { + "additionalProperties": false, + "properties": { + "ComputationId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "Name": { + "type": "string" + }, + "PeriodSize": { + "default": 0, + "maximum": 52, + "minimum": 2, + "type": "number" + }, + "Time": { + "$ref": "#/definitions/DimensionField" + }, + "Value": { + "$ref": "#/definitions/MeasureField" + } + }, + "required": [ + "ComputationId" + ], + "type": "object" + }, + "HeaderFooterSectionConfiguration": { + "additionalProperties": false, + "properties": { + "Layout": { + "$ref": "#/definitions/SectionLayoutConfiguration" + }, + "SectionId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "Style": { + "$ref": "#/definitions/SectionStyle" + } + }, + "required": [ + "Layout", + "SectionId" + ], + "type": "object" + }, + "HeatMapAggregatedFieldWells": { + "additionalProperties": false, + "properties": { + "Columns": { + "items": { + "$ref": "#/definitions/DimensionField" + }, + "maxItems": 1, + "minItems": 0, + "type": "array" + }, + "Rows": { + "items": { + "$ref": "#/definitions/DimensionField" + }, + "maxItems": 1, + "minItems": 0, + "type": "array" + }, + "Values": { + "items": { + "$ref": "#/definitions/MeasureField" + }, + "maxItems": 1, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "HeatMapConfiguration": { + "additionalProperties": false, + "properties": { + "ColorScale": { + "$ref": "#/definitions/ColorScale" + }, + "ColumnLabelOptions": { + "$ref": "#/definitions/ChartAxisLabelOptions" + }, + "DataLabels": { + "$ref": "#/definitions/DataLabelOptions" + }, + "FieldWells": { + "$ref": "#/definitions/HeatMapFieldWells" + }, + "Interactions": { + "$ref": "#/definitions/VisualInteractionOptions" + }, + "Legend": { + "$ref": "#/definitions/LegendOptions" + }, + "RowLabelOptions": { + "$ref": "#/definitions/ChartAxisLabelOptions" + }, + "SortConfiguration": { + "$ref": "#/definitions/HeatMapSortConfiguration" + }, + "Tooltip": { + "$ref": "#/definitions/TooltipOptions" + } + }, + "type": "object" + }, + "HeatMapFieldWells": { + "additionalProperties": false, + "properties": { + "HeatMapAggregatedFieldWells": { + "$ref": "#/definitions/HeatMapAggregatedFieldWells" + } + }, + "type": "object" + }, + "HeatMapSortConfiguration": { + "additionalProperties": false, + "properties": { + "HeatMapColumnItemsLimitConfiguration": { + "$ref": "#/definitions/ItemsLimitConfiguration" + }, + "HeatMapColumnSort": { + "items": { + "$ref": "#/definitions/FieldSortOptions" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + }, + "HeatMapRowItemsLimitConfiguration": { + "$ref": "#/definitions/ItemsLimitConfiguration" + }, + "HeatMapRowSort": { + "items": { + "$ref": "#/definitions/FieldSortOptions" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "HeatMapVisual": { + "additionalProperties": false, + "properties": { + "Actions": { + "items": { + "$ref": "#/definitions/VisualCustomAction" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + }, + "ChartConfiguration": { + "$ref": "#/definitions/HeatMapConfiguration" + }, + "ColumnHierarchies": { + "items": { + "$ref": "#/definitions/ColumnHierarchy" + }, + "maxItems": 2, + "minItems": 0, + "type": "array" + }, + "Subtitle": { + "$ref": "#/definitions/VisualSubtitleLabelOptions" + }, + "Title": { + "$ref": "#/definitions/VisualTitleLabelOptions" + }, + "VisualContentAltText": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "VisualId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + } + }, + "required": [ + "VisualId" + ], + "type": "object" + }, + "HistogramAggregatedFieldWells": { + "additionalProperties": false, + "properties": { + "Values": { + "items": { + "$ref": "#/definitions/MeasureField" + }, + "maxItems": 1, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "HistogramBinOptions": { + "additionalProperties": false, + "properties": { + "BinCount": { + "$ref": "#/definitions/BinCountOptions" + }, + "BinWidth": { + "$ref": "#/definitions/BinWidthOptions" + }, + "SelectedBinType": { + "$ref": "#/definitions/HistogramBinType" + }, + "StartValue": { + "default": null, + "type": "number" + } + }, + "type": "object" + }, + "HistogramBinType": { + "enum": [ + "BIN_COUNT", + "BIN_WIDTH" + ], + "type": "string" + }, + "HistogramConfiguration": { + "additionalProperties": false, + "properties": { + "BinOptions": { + "$ref": "#/definitions/HistogramBinOptions" + }, + "DataLabels": { + "$ref": "#/definitions/DataLabelOptions" + }, + "FieldWells": { + "$ref": "#/definitions/HistogramFieldWells" + }, + "Interactions": { + "$ref": "#/definitions/VisualInteractionOptions" + }, + "Tooltip": { + "$ref": "#/definitions/TooltipOptions" + }, + "VisualPalette": { + "$ref": "#/definitions/VisualPalette" + }, + "XAxisDisplayOptions": { + "$ref": "#/definitions/AxisDisplayOptions" + }, + "XAxisLabelOptions": { + "$ref": "#/definitions/ChartAxisLabelOptions" + }, + "YAxisDisplayOptions": { + "$ref": "#/definitions/AxisDisplayOptions" + } + }, + "type": "object" + }, + "HistogramFieldWells": { + "additionalProperties": false, + "properties": { + "HistogramAggregatedFieldWells": { + "$ref": "#/definitions/HistogramAggregatedFieldWells" + } + }, + "type": "object" + }, + "HistogramVisual": { + "additionalProperties": false, + "properties": { + "Actions": { + "items": { + "$ref": "#/definitions/VisualCustomAction" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + }, + "ChartConfiguration": { + "$ref": "#/definitions/HistogramConfiguration" + }, + "Subtitle": { + "$ref": "#/definitions/VisualSubtitleLabelOptions" + }, + "Title": { + "$ref": "#/definitions/VisualTitleLabelOptions" + }, + "VisualContentAltText": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "VisualId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + } + }, + "required": [ + "VisualId" + ], + "type": "object" + }, + "HorizontalTextAlignment": { + "enum": [ + "LEFT", + "CENTER", + "RIGHT", + "AUTO" + ], + "type": "string" + }, + "Icon": { + "enum": [ + "CARET_UP", + "CARET_DOWN", + "PLUS", + "MINUS", + "ARROW_UP", + "ARROW_DOWN", + "ARROW_LEFT", + "ARROW_UP_LEFT", + "ARROW_DOWN_LEFT", + "ARROW_RIGHT", + "ARROW_UP_RIGHT", + "ARROW_DOWN_RIGHT", + "FACE_UP", + "FACE_DOWN", + "FACE_FLAT", + "ONE_BAR", + "TWO_BAR", + "THREE_BAR", + "CIRCLE", + "TRIANGLE", + "SQUARE", + "FLAG", + "THUMBS_UP", + "THUMBS_DOWN", + "CHECKMARK", + "X" + ], + "type": "string" + }, + "ImageCustomAction": { + "additionalProperties": false, + "properties": { + "ActionOperations": { + "items": { + "$ref": "#/definitions/ImageCustomActionOperation" + }, + "maxItems": 2, + "minItems": 1, + "type": "array" + }, + "CustomActionId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "Name": { + "maxLength": 256, + "minLength": 1, + "type": "string" + }, + "Status": { + "$ref": "#/definitions/WidgetStatus" + }, + "Trigger": { + "$ref": "#/definitions/ImageCustomActionTrigger" + } + }, + "required": [ + "ActionOperations", + "CustomActionId", + "Name", + "Trigger" + ], + "type": "object" + }, + "ImageCustomActionOperation": { + "additionalProperties": false, + "properties": { + "NavigationOperation": { + "$ref": "#/definitions/CustomActionNavigationOperation" + }, + "SetParametersOperation": { + "$ref": "#/definitions/CustomActionSetParametersOperation" + }, + "URLOperation": { + "$ref": "#/definitions/CustomActionURLOperation" + } + }, + "type": "object" + }, + "ImageCustomActionTrigger": { + "enum": [ + "CLICK", + "MENU" + ], + "type": "string" + }, + "ImageInteractionOptions": { + "additionalProperties": false, + "properties": { + "ImageMenuOption": { + "$ref": "#/definitions/ImageMenuOption" + } + }, + "type": "object" + }, + "ImageMenuOption": { + "additionalProperties": false, + "properties": { + "AvailabilityStatus": { + "$ref": "#/definitions/DashboardBehavior" + } + }, + "type": "object" + }, + "ImageStaticFile": { + "additionalProperties": false, + "properties": { + "Source": { + "$ref": "#/definitions/StaticFileSource" + }, + "StaticFileId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + } + }, + "required": [ + "StaticFileId" + ], + "type": "object" + }, + "InnerFilter": { + "additionalProperties": false, + "properties": { + "CategoryInnerFilter": { + "$ref": "#/definitions/CategoryInnerFilter" + } + }, + "type": "object" + }, + "InsightConfiguration": { + "additionalProperties": false, + "properties": { + "Computations": { + "items": { + "$ref": "#/definitions/Computation" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + }, + "CustomNarrative": { + "$ref": "#/definitions/CustomNarrativeOptions" + }, + "Interactions": { + "$ref": "#/definitions/VisualInteractionOptions" + } + }, + "type": "object" + }, + "InsightVisual": { + "additionalProperties": false, + "properties": { + "Actions": { + "items": { + "$ref": "#/definitions/VisualCustomAction" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + }, + "DataSetIdentifier": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "InsightConfiguration": { + "$ref": "#/definitions/InsightConfiguration" + }, + "Subtitle": { + "$ref": "#/definitions/VisualSubtitleLabelOptions" + }, + "Title": { + "$ref": "#/definitions/VisualTitleLabelOptions" + }, + "VisualContentAltText": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "VisualId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + } + }, + "required": [ + "DataSetIdentifier", + "VisualId" + ], + "type": "object" + }, + "IntegerDefaultValues": { + "additionalProperties": false, + "properties": { + "DynamicValue": { + "$ref": "#/definitions/DynamicDefaultValue" + }, + "StaticValues": { + "items": { + "type": "number" + }, + "maxItems": 50000, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "IntegerParameter": { + "additionalProperties": false, + "description": "An integer parameter.
", + "properties": { + "Name": { + "description": "The name of the integer parameter.
", + "pattern": "\\S", + "type": "string" + }, + "Values": { + "description": "The values for the integer parameter.
", + "items": { + "default": 0, + "type": "number" + }, + "type": "array" + } + }, + "required": [ + "Name", + "Values" + ], + "type": "object" + }, + "IntegerParameterDeclaration": { + "additionalProperties": false, + "properties": { + "DefaultValues": { + "$ref": "#/definitions/IntegerDefaultValues" + }, + "MappedDataSetParameters": { + "items": { + "$ref": "#/definitions/MappedDataSetParameter" + }, + "maxItems": 150, + "minItems": 0, + "type": "array" + }, + "Name": { + "maxLength": 2048, + "minLength": 1, + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + "ParameterValueType": { + "$ref": "#/definitions/ParameterValueType" + }, + "ValueWhenUnset": { + "$ref": "#/definitions/IntegerValueWhenUnsetConfiguration" + } + }, + "required": [ + "Name", + "ParameterValueType" + ], + "type": "object" + }, + "IntegerValueWhenUnsetConfiguration": { + "additionalProperties": false, + "properties": { + "CustomValue": { + "default": null, + "type": "number" + }, + "ValueWhenUnsetOption": { + "$ref": "#/definitions/ValueWhenUnsetOption" + } + }, + "type": "object" + }, + "ItemsLimitConfiguration": { + "additionalProperties": false, + "properties": { + "ItemsLimit": { + "default": null, + "type": "number" + }, + "OtherCategories": { + "$ref": "#/definitions/OtherCategories" + } + }, + "type": "object" + }, + "KPIActualValueConditionalFormatting": { + "additionalProperties": false, + "properties": { + "Icon": { + "$ref": "#/definitions/ConditionalFormattingIcon" + }, + "TextColor": { + "$ref": "#/definitions/ConditionalFormattingColor" + } + }, + "type": "object" + }, + "KPIComparisonValueConditionalFormatting": { + "additionalProperties": false, + "properties": { + "Icon": { + "$ref": "#/definitions/ConditionalFormattingIcon" + }, + "TextColor": { + "$ref": "#/definitions/ConditionalFormattingColor" + } + }, + "type": "object" + }, + "KPIConditionalFormatting": { + "additionalProperties": false, + "properties": { + "ConditionalFormattingOptions": { + "items": { + "$ref": "#/definitions/KPIConditionalFormattingOption" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "KPIConditionalFormattingOption": { + "additionalProperties": false, + "properties": { + "ActualValue": { + "$ref": "#/definitions/KPIActualValueConditionalFormatting" + }, + "ComparisonValue": { + "$ref": "#/definitions/KPIComparisonValueConditionalFormatting" + }, + "PrimaryValue": { + "$ref": "#/definitions/KPIPrimaryValueConditionalFormatting" + }, + "ProgressBar": { + "$ref": "#/definitions/KPIProgressBarConditionalFormatting" + } + }, + "type": "object" + }, + "KPIConfiguration": { + "additionalProperties": false, + "properties": { + "FieldWells": { + "$ref": "#/definitions/KPIFieldWells" + }, + "Interactions": { + "$ref": "#/definitions/VisualInteractionOptions" + }, + "KPIOptions": { + "$ref": "#/definitions/KPIOptions" + }, + "SortConfiguration": { + "$ref": "#/definitions/KPISortConfiguration" + } + }, + "type": "object" + }, + "KPIFieldWells": { + "additionalProperties": false, + "properties": { + "TargetValues": { + "items": { + "$ref": "#/definitions/MeasureField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "TrendGroups": { + "items": { + "$ref": "#/definitions/DimensionField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "Values": { + "items": { + "$ref": "#/definitions/MeasureField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "KPIOptions": { + "additionalProperties": false, + "properties": { + "Comparison": { + "$ref": "#/definitions/ComparisonConfiguration" + }, + "PrimaryValueDisplayType": { + "$ref": "#/definitions/PrimaryValueDisplayType" + }, + "PrimaryValueFontConfiguration": { + "$ref": "#/definitions/FontConfiguration" + }, + "ProgressBar": { + "$ref": "#/definitions/ProgressBarOptions" + }, + "SecondaryValue": { + "$ref": "#/definitions/SecondaryValueOptions" + }, + "SecondaryValueFontConfiguration": { + "$ref": "#/definitions/FontConfiguration" + }, + "Sparkline": { + "$ref": "#/definitions/KPISparklineOptions" + }, + "TrendArrows": { + "$ref": "#/definitions/TrendArrowOptions" + }, + "VisualLayoutOptions": { + "$ref": "#/definitions/KPIVisualLayoutOptions" + } + }, + "type": "object" + }, + "KPIPrimaryValueConditionalFormatting": { + "additionalProperties": false, + "properties": { + "Icon": { + "$ref": "#/definitions/ConditionalFormattingIcon" + }, + "TextColor": { + "$ref": "#/definitions/ConditionalFormattingColor" + } + }, + "type": "object" + }, + "KPIProgressBarConditionalFormatting": { + "additionalProperties": false, + "properties": { + "ForegroundColor": { + "$ref": "#/definitions/ConditionalFormattingColor" + } + }, + "type": "object" + }, + "KPISortConfiguration": { + "additionalProperties": false, + "properties": { + "TrendGroupSort": { + "items": { + "$ref": "#/definitions/FieldSortOptions" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "KPISparklineOptions": { + "additionalProperties": false, + "properties": { + "Color": { + "pattern": "^#[A-F0-9]{6}$", + "type": "string" + }, + "TooltipVisibility": { + "$ref": "#/definitions/Visibility" + }, + "Type": { + "$ref": "#/definitions/KPISparklineType" + }, + "Visibility": { + "$ref": "#/definitions/Visibility" + } + }, + "required": [ + "Type" + ], + "type": "object" + }, + "KPISparklineType": { + "enum": [ + "LINE", + "AREA" + ], + "type": "string" + }, + "KPIVisual": { + "additionalProperties": false, + "properties": { + "Actions": { + "items": { + "$ref": "#/definitions/VisualCustomAction" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + }, + "ChartConfiguration": { + "$ref": "#/definitions/KPIConfiguration" + }, + "ColumnHierarchies": { + "items": { + "$ref": "#/definitions/ColumnHierarchy" + }, + "maxItems": 2, + "minItems": 0, + "type": "array" + }, + "ConditionalFormatting": { + "$ref": "#/definitions/KPIConditionalFormatting" + }, + "Subtitle": { + "$ref": "#/definitions/VisualSubtitleLabelOptions" + }, + "Title": { + "$ref": "#/definitions/VisualTitleLabelOptions" + }, + "VisualContentAltText": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "VisualId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + } + }, + "required": [ + "VisualId" + ], + "type": "object" + }, + "KPIVisualLayoutOptions": { + "additionalProperties": false, + "properties": { + "StandardLayout": { + "$ref": "#/definitions/KPIVisualStandardLayout" + } + }, + "type": "object" + }, + "KPIVisualStandardLayout": { + "additionalProperties": false, + "properties": { + "Type": { + "$ref": "#/definitions/KPIVisualStandardLayoutType" + } + }, + "required": [ + "Type" + ], + "type": "object" + }, + "KPIVisualStandardLayoutType": { + "enum": [ + "CLASSIC", + "VERTICAL" + ], + "type": "string" + }, + "LabelOptions": { + "additionalProperties": false, + "properties": { + "CustomLabel": { + "type": "string" + }, + "FontConfiguration": { + "$ref": "#/definitions/FontConfiguration" + }, + "Visibility": { + "$ref": "#/definitions/Visibility" + } + }, + "type": "object" + }, + "LayerCustomAction": { + "additionalProperties": false, + "properties": { + "ActionOperations": { + "items": { + "$ref": "#/definitions/LayerCustomActionOperation" + }, + "maxItems": 2, + "minItems": 1, + "type": "array" + }, + "CustomActionId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "Name": { + "maxLength": 256, + "minLength": 1, + "type": "string" + }, + "Status": { + "$ref": "#/definitions/WidgetStatus" + }, + "Trigger": { + "$ref": "#/definitions/LayerCustomActionTrigger" + } + }, + "required": [ + "ActionOperations", + "CustomActionId", + "Name", + "Trigger" + ], + "type": "object" + }, + "LayerCustomActionOperation": { + "additionalProperties": false, + "properties": { + "FilterOperation": { + "$ref": "#/definitions/CustomActionFilterOperation" + }, + "NavigationOperation": { + "$ref": "#/definitions/CustomActionNavigationOperation" + }, + "SetParametersOperation": { + "$ref": "#/definitions/CustomActionSetParametersOperation" + }, + "URLOperation": { + "$ref": "#/definitions/CustomActionURLOperation" + } + }, + "type": "object" + }, + "LayerCustomActionTrigger": { + "enum": [ + "DATA_POINT_CLICK", + "DATA_POINT_MENU" + ], + "type": "string" + }, + "LayerMapVisual": { + "additionalProperties": false, + "properties": { + "ChartConfiguration": { + "$ref": "#/definitions/GeospatialLayerMapConfiguration" + }, + "DataSetIdentifier": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "Subtitle": { + "$ref": "#/definitions/VisualSubtitleLabelOptions" + }, + "Title": { + "$ref": "#/definitions/VisualTitleLabelOptions" + }, + "VisualContentAltText": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "VisualId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + } + }, + "required": [ + "DataSetIdentifier", + "VisualId" + ], + "type": "object" + }, + "Layout": { + "additionalProperties": false, + "properties": { + "Configuration": { + "$ref": "#/definitions/LayoutConfiguration" + } + }, + "required": [ + "Configuration" + ], + "type": "object" + }, + "LayoutConfiguration": { + "additionalProperties": false, + "properties": { + "FreeFormLayout": { + "$ref": "#/definitions/FreeFormLayoutConfiguration" + }, + "GridLayout": { + "$ref": "#/definitions/GridLayoutConfiguration" + }, + "SectionBasedLayout": { + "$ref": "#/definitions/SectionBasedLayoutConfiguration" + } + }, + "type": "object" + }, + "LayoutElementType": { + "enum": [ + "VISUAL", + "FILTER_CONTROL", + "PARAMETER_CONTROL", + "TEXT_BOX", + "IMAGE" + ], + "type": "string" + }, + "LegendOptions": { + "additionalProperties": false, + "properties": { + "Height": { + "description": "String based length that is composed of value and unit in px", + "type": "string" + }, + "Position": { + "$ref": "#/definitions/LegendPosition" + }, + "Title": { + "$ref": "#/definitions/LabelOptions" + }, + "ValueFontConfiguration": { + "$ref": "#/definitions/FontConfiguration" + }, + "Visibility": { + "$ref": "#/definitions/Visibility" + }, + "Width": { + "description": "String based length that is composed of value and unit in px", + "type": "string" + } + }, + "type": "object" + }, + "LegendPosition": { + "enum": [ + "AUTO", + "RIGHT", + "BOTTOM", + "TOP" + ], + "type": "string" + }, + "LineChartAggregatedFieldWells": { + "additionalProperties": false, + "properties": { + "Category": { + "items": { + "$ref": "#/definitions/DimensionField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "Colors": { + "items": { + "$ref": "#/definitions/DimensionField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "SmallMultiples": { + "items": { + "$ref": "#/definitions/DimensionField" + }, + "maxItems": 1, + "minItems": 0, + "type": "array" + }, + "Values": { + "items": { + "$ref": "#/definitions/MeasureField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "LineChartConfiguration": { + "additionalProperties": false, + "properties": { + "ContributionAnalysisDefaults": { + "items": { + "$ref": "#/definitions/ContributionAnalysisDefault" + }, + "maxItems": 200, + "minItems": 1, + "type": "array" + }, + "DataLabels": { + "$ref": "#/definitions/DataLabelOptions" + }, + "DefaultSeriesSettings": { + "$ref": "#/definitions/LineChartDefaultSeriesSettings" + }, + "FieldWells": { + "$ref": "#/definitions/LineChartFieldWells" + }, + "ForecastConfigurations": { + "items": { + "$ref": "#/definitions/ForecastConfiguration" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + }, + "Interactions": { + "$ref": "#/definitions/VisualInteractionOptions" + }, + "Legend": { + "$ref": "#/definitions/LegendOptions" + }, + "PrimaryYAxisDisplayOptions": { + "$ref": "#/definitions/LineSeriesAxisDisplayOptions" + }, + "PrimaryYAxisLabelOptions": { + "$ref": "#/definitions/ChartAxisLabelOptions" + }, + "ReferenceLines": { + "items": { + "$ref": "#/definitions/ReferenceLine" + }, + "maxItems": 20, + "minItems": 0, + "type": "array" + }, + "SecondaryYAxisDisplayOptions": { + "$ref": "#/definitions/LineSeriesAxisDisplayOptions" + }, + "SecondaryYAxisLabelOptions": { + "$ref": "#/definitions/ChartAxisLabelOptions" + }, + "Series": { + "items": { + "$ref": "#/definitions/SeriesItem" + }, + "maxItems": 2000, + "minItems": 0, + "type": "array" + }, + "SingleAxisOptions": { + "$ref": "#/definitions/SingleAxisOptions" + }, + "SmallMultiplesOptions": { + "$ref": "#/definitions/SmallMultiplesOptions" + }, + "SortConfiguration": { + "$ref": "#/definitions/LineChartSortConfiguration" + }, + "Tooltip": { + "$ref": "#/definitions/TooltipOptions" + }, + "Type": { + "$ref": "#/definitions/LineChartType" + }, + "VisualPalette": { + "$ref": "#/definitions/VisualPalette" + }, + "XAxisDisplayOptions": { + "$ref": "#/definitions/AxisDisplayOptions" + }, + "XAxisLabelOptions": { + "$ref": "#/definitions/ChartAxisLabelOptions" + } + }, + "type": "object" + }, + "LineChartDefaultSeriesSettings": { + "additionalProperties": false, + "properties": { + "AxisBinding": { + "$ref": "#/definitions/AxisBinding" + }, + "LineStyleSettings": { + "$ref": "#/definitions/LineChartLineStyleSettings" + }, + "MarkerStyleSettings": { + "$ref": "#/definitions/LineChartMarkerStyleSettings" + } + }, + "type": "object" + }, + "LineChartFieldWells": { + "additionalProperties": false, + "properties": { + "LineChartAggregatedFieldWells": { + "$ref": "#/definitions/LineChartAggregatedFieldWells" + } + }, + "type": "object" + }, + "LineChartLineStyle": { + "enum": [ + "SOLID", + "DOTTED", + "DASHED" + ], + "type": "string" + }, + "LineChartLineStyleSettings": { + "additionalProperties": false, + "properties": { + "LineInterpolation": { + "$ref": "#/definitions/LineInterpolation" + }, + "LineStyle": { + "$ref": "#/definitions/LineChartLineStyle" + }, + "LineVisibility": { + "$ref": "#/definitions/Visibility" + }, + "LineWidth": { + "description": "String based length that is composed of value and unit in px", + "type": "string" + } + }, + "type": "object" + }, + "LineChartMarkerShape": { + "enum": [ + "CIRCLE", + "TRIANGLE", + "SQUARE", + "DIAMOND", + "ROUNDED_SQUARE" + ], + "type": "string" + }, + "LineChartMarkerStyleSettings": { + "additionalProperties": false, + "properties": { + "MarkerColor": { + "pattern": "^#[A-F0-9]{6}$", + "type": "string" + }, + "MarkerShape": { + "$ref": "#/definitions/LineChartMarkerShape" + }, + "MarkerSize": { + "description": "String based length that is composed of value and unit in px", + "type": "string" + }, + "MarkerVisibility": { + "$ref": "#/definitions/Visibility" + } + }, + "type": "object" + }, + "LineChartSeriesSettings": { + "additionalProperties": false, + "properties": { + "LineStyleSettings": { + "$ref": "#/definitions/LineChartLineStyleSettings" + }, + "MarkerStyleSettings": { + "$ref": "#/definitions/LineChartMarkerStyleSettings" + } + }, + "type": "object" + }, + "LineChartSortConfiguration": { + "additionalProperties": false, + "properties": { + "CategoryItemsLimitConfiguration": { + "$ref": "#/definitions/ItemsLimitConfiguration" + }, + "CategorySort": { + "items": { + "$ref": "#/definitions/FieldSortOptions" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + }, + "ColorItemsLimitConfiguration": { + "$ref": "#/definitions/ItemsLimitConfiguration" + }, + "SmallMultiplesLimitConfiguration": { + "$ref": "#/definitions/ItemsLimitConfiguration" + }, + "SmallMultiplesSort": { + "items": { + "$ref": "#/definitions/FieldSortOptions" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "LineChartType": { + "enum": [ + "LINE", + "AREA", + "STACKED_AREA" + ], + "type": "string" + }, + "LineChartVisual": { + "additionalProperties": false, + "properties": { + "Actions": { + "items": { + "$ref": "#/definitions/VisualCustomAction" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + }, + "ChartConfiguration": { + "$ref": "#/definitions/LineChartConfiguration" + }, + "ColumnHierarchies": { + "items": { + "$ref": "#/definitions/ColumnHierarchy" + }, + "maxItems": 2, + "minItems": 0, + "type": "array" + }, + "Subtitle": { + "$ref": "#/definitions/VisualSubtitleLabelOptions" + }, + "Title": { + "$ref": "#/definitions/VisualTitleLabelOptions" + }, + "VisualContentAltText": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "VisualId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + } + }, + "required": [ + "VisualId" + ], + "type": "object" + }, + "LineInterpolation": { + "enum": [ + "LINEAR", + "SMOOTH", + "STEPPED" + ], + "type": "string" + }, + "LineSeriesAxisDisplayOptions": { + "additionalProperties": false, + "properties": { + "AxisOptions": { + "$ref": "#/definitions/AxisDisplayOptions" + }, + "MissingDataConfigurations": { + "items": { + "$ref": "#/definitions/MissingDataConfiguration" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "LinkSharingConfiguration": { + "additionalProperties": false, + "properties": { + "Permissions": { + "items": { + "$ref": "#/definitions/ResourcePermission" + }, + "maxItems": 64, + "minItems": 1, + "type": "array" + } + }, + "type": "object" + }, + "ListControlDisplayOptions": { + "additionalProperties": false, + "properties": { + "InfoIconLabelOptions": { + "$ref": "#/definitions/SheetControlInfoIconLabelOptions" + }, + "SearchOptions": { + "$ref": "#/definitions/ListControlSearchOptions" + }, + "SelectAllOptions": { + "$ref": "#/definitions/ListControlSelectAllOptions" + }, + "TitleOptions": { + "$ref": "#/definitions/LabelOptions" + } + }, + "type": "object" + }, + "ListControlSearchOptions": { + "additionalProperties": false, + "properties": { + "Visibility": { + "$ref": "#/definitions/Visibility" + } + }, + "type": "object" + }, + "ListControlSelectAllOptions": { + "additionalProperties": false, + "properties": { + "Visibility": { + "$ref": "#/definitions/Visibility" + } + }, + "type": "object" + }, + "LoadingAnimation": { + "additionalProperties": false, + "properties": { + "Visibility": { + "$ref": "#/definitions/Visibility" + } + }, + "type": "object" + }, + "LocalNavigationConfiguration": { + "additionalProperties": false, + "properties": { + "TargetSheetId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + } + }, + "required": [ + "TargetSheetId" + ], + "type": "object" + }, + "LongFormatText": { + "additionalProperties": false, + "properties": { + "PlainText": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "RichText": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + } + }, + "type": "object" + }, + "MapZoomMode": { + "enum": [ + "AUTO", + "MANUAL" + ], + "type": "string" + }, + "MappedDataSetParameter": { + "additionalProperties": false, + "properties": { + "DataSetIdentifier": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "DataSetParameterName": { + "maxLength": 2048, + "minLength": 1, + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + } + }, + "required": [ + "DataSetIdentifier", + "DataSetParameterName" + ], + "type": "object" + }, + "MaximumLabelType": { + "additionalProperties": false, + "properties": { + "Visibility": { + "$ref": "#/definitions/Visibility" + } + }, + "type": "object" + }, + "MaximumMinimumComputation": { + "additionalProperties": false, + "properties": { + "ComputationId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "Name": { + "type": "string" + }, + "Time": { + "$ref": "#/definitions/DimensionField" + }, + "Type": { + "$ref": "#/definitions/MaximumMinimumComputationType" + }, + "Value": { + "$ref": "#/definitions/MeasureField" + } + }, + "required": [ + "ComputationId", + "Type" + ], + "type": "object" + }, + "MaximumMinimumComputationType": { + "enum": [ + "MAXIMUM", + "MINIMUM" + ], + "type": "string" + }, + "MeasureField": { + "additionalProperties": false, + "properties": { + "CalculatedMeasureField": { + "$ref": "#/definitions/CalculatedMeasureField" + }, + "CategoricalMeasureField": { + "$ref": "#/definitions/CategoricalMeasureField" + }, + "DateMeasureField": { + "$ref": "#/definitions/DateMeasureField" + }, + "NumericalMeasureField": { + "$ref": "#/definitions/NumericalMeasureField" + } + }, + "type": "object" + }, + "MetricComparisonComputation": { + "additionalProperties": false, + "properties": { + "ComputationId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "FromValue": { + "$ref": "#/definitions/MeasureField" + }, + "Name": { + "type": "string" + }, + "TargetValue": { + "$ref": "#/definitions/MeasureField" + }, + "Time": { + "$ref": "#/definitions/DimensionField" + } + }, + "required": [ + "ComputationId" + ], + "type": "object" + }, + "MinimumLabelType": { + "additionalProperties": false, + "properties": { + "Visibility": { + "$ref": "#/definitions/Visibility" + } + }, + "type": "object" + }, + "MissingDataConfiguration": { + "additionalProperties": false, + "properties": { + "TreatmentOption": { + "$ref": "#/definitions/MissingDataTreatmentOption" + } + }, + "type": "object" + }, + "MissingDataTreatmentOption": { + "enum": [ + "INTERPOLATE", + "SHOW_AS_ZERO", + "SHOW_AS_BLANK" + ], + "type": "string" + }, + "NegativeValueConfiguration": { + "additionalProperties": false, + "properties": { + "DisplayMode": { + "$ref": "#/definitions/NegativeValueDisplayMode" + } + }, + "required": [ + "DisplayMode" + ], + "type": "object" + }, + "NegativeValueDisplayMode": { + "enum": [ + "POSITIVE", + "NEGATIVE" + ], + "type": "string" + }, + "NestedFilter": { + "additionalProperties": false, + "properties": { + "Column": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "FilterId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "IncludeInnerSet": { + "default": false, + "type": "boolean" + }, + "InnerFilter": { + "$ref": "#/definitions/InnerFilter" + } + }, + "required": [ + "Column", + "FilterId", + "IncludeInnerSet", + "InnerFilter" + ], + "type": "object" + }, + "NullValueFormatConfiguration": { + "additionalProperties": false, + "properties": { + "NullString": { + "maxLength": 128, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "NullString" + ], + "type": "object" + }, + "NumberDisplayFormatConfiguration": { + "additionalProperties": false, + "properties": { + "DecimalPlacesConfiguration": { + "$ref": "#/definitions/DecimalPlacesConfiguration" + }, + "NegativeValueConfiguration": { + "$ref": "#/definitions/NegativeValueConfiguration" + }, + "NullValueFormatConfiguration": { + "$ref": "#/definitions/NullValueFormatConfiguration" + }, + "NumberScale": { + "$ref": "#/definitions/NumberScale" + }, + "Prefix": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "SeparatorConfiguration": { + "$ref": "#/definitions/NumericSeparatorConfiguration" + }, + "Suffix": { + "maxLength": 128, + "minLength": 1, + "type": "string" + } + }, + "type": "object" + }, + "NumberFormatConfiguration": { + "additionalProperties": false, + "properties": { + "FormatConfiguration": { + "$ref": "#/definitions/NumericFormatConfiguration" + } + }, + "type": "object" + }, + "NumberScale": { + "enum": [ + "NONE", + "AUTO", + "THOUSANDS", + "MILLIONS", + "BILLIONS", + "TRILLIONS", + "LAKHS", + "CRORES" + ], + "type": "string" + }, + "NumericAxisOptions": { + "additionalProperties": false, + "properties": { + "Range": { + "$ref": "#/definitions/AxisDisplayRange" + }, + "Scale": { + "$ref": "#/definitions/AxisScale" + } + }, + "type": "object" + }, + "NumericEqualityDrillDownFilter": { + "additionalProperties": false, + "properties": { + "Column": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "Value": { + "default": 0, + "type": "number" + } + }, + "required": [ + "Column", + "Value" + ], + "type": "object" + }, + "NumericEqualityFilter": { + "additionalProperties": false, + "properties": { + "AggregationFunction": { + "$ref": "#/definitions/AggregationFunction" + }, + "Column": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "DefaultFilterControlConfiguration": { + "$ref": "#/definitions/DefaultFilterControlConfiguration" + }, + "FilterId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "MatchOperator": { + "$ref": "#/definitions/NumericEqualityMatchOperator" + }, + "NullOption": { + "$ref": "#/definitions/FilterNullOption" + }, + "ParameterName": { + "maxLength": 2048, + "minLength": 1, + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + "SelectAllOptions": { + "$ref": "#/definitions/NumericFilterSelectAllOptions" + }, + "Value": { + "default": null, + "type": "number" + } + }, + "required": [ + "Column", + "FilterId", + "MatchOperator", + "NullOption" + ], + "type": "object" + }, + "NumericEqualityMatchOperator": { + "enum": [ + "EQUALS", + "DOES_NOT_EQUAL" + ], + "type": "string" + }, + "NumericFilterSelectAllOptions": { + "enum": [ + "FILTER_ALL_VALUES" + ], + "type": "string" + }, + "NumericFormatConfiguration": { + "additionalProperties": false, + "properties": { + "CurrencyDisplayFormatConfiguration": { + "$ref": "#/definitions/CurrencyDisplayFormatConfiguration" + }, + "NumberDisplayFormatConfiguration": { + "$ref": "#/definitions/NumberDisplayFormatConfiguration" + }, + "PercentageDisplayFormatConfiguration": { + "$ref": "#/definitions/PercentageDisplayFormatConfiguration" + } + }, + "type": "object" + }, + "NumericRangeFilter": { + "additionalProperties": false, + "properties": { + "AggregationFunction": { + "$ref": "#/definitions/AggregationFunction" + }, + "Column": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "DefaultFilterControlConfiguration": { + "$ref": "#/definitions/DefaultFilterControlConfiguration" + }, + "FilterId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "IncludeMaximum": { + "default": null, + "type": "boolean" + }, + "IncludeMinimum": { + "default": null, + "type": "boolean" + }, + "NullOption": { + "$ref": "#/definitions/FilterNullOption" + }, + "RangeMaximum": { + "$ref": "#/definitions/NumericRangeFilterValue" + }, + "RangeMinimum": { + "$ref": "#/definitions/NumericRangeFilterValue" + }, + "SelectAllOptions": { + "$ref": "#/definitions/NumericFilterSelectAllOptions" + } + }, + "required": [ + "Column", + "FilterId", + "NullOption" + ], + "type": "object" + }, + "NumericRangeFilterValue": { + "additionalProperties": false, + "properties": { + "Parameter": { + "maxLength": 2048, + "minLength": 1, + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + "StaticValue": { + "default": null, + "type": "number" + } + }, + "type": "object" + }, + "NumericSeparatorConfiguration": { + "additionalProperties": false, + "properties": { + "DecimalSeparator": { + "$ref": "#/definitions/NumericSeparatorSymbol" + }, + "ThousandsSeparator": { + "$ref": "#/definitions/ThousandSeparatorOptions" + } + }, + "type": "object" + }, + "NumericSeparatorSymbol": { + "enum": [ + "COMMA", + "DOT", + "SPACE" + ], + "type": "string" + }, + "NumericalAggregationFunction": { + "additionalProperties": false, + "properties": { + "PercentileAggregation": { + "$ref": "#/definitions/PercentileAggregation" + }, + "SimpleNumericalAggregation": { + "$ref": "#/definitions/SimpleNumericalAggregationFunction" + } + }, + "type": "object" + }, + "NumericalDimensionField": { + "additionalProperties": false, + "properties": { + "Column": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "FieldId": { + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "FormatConfiguration": { + "$ref": "#/definitions/NumberFormatConfiguration" + }, + "HierarchyId": { + "maxLength": 512, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Column", + "FieldId" + ], + "type": "object" + }, + "NumericalMeasureField": { + "additionalProperties": false, + "properties": { + "AggregationFunction": { + "$ref": "#/definitions/NumericalAggregationFunction" + }, + "Column": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "FieldId": { + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "FormatConfiguration": { + "$ref": "#/definitions/NumberFormatConfiguration" + } + }, + "required": [ + "Column", + "FieldId" + ], + "type": "object" + }, + "OtherCategories": { + "enum": [ + "INCLUDE", + "EXCLUDE" + ], + "type": "string" + }, + "PaginationConfiguration": { + "additionalProperties": false, + "properties": { + "PageNumber": { + "minimum": 0, + "type": "number" + }, + "PageSize": { + "default": null, + "type": "number" + } + }, + "required": [ + "PageNumber", + "PageSize" + ], + "type": "object" + }, + "PanelBorderStyle": { + "enum": [ + "SOLID", + "DASHED", + "DOTTED" + ], + "type": "string" + }, + "PanelConfiguration": { + "additionalProperties": false, + "properties": { + "BackgroundColor": { + "pattern": "^#[A-F0-9]{6}(?:[A-F0-9]{2})?$", + "type": "string" + }, + "BackgroundVisibility": { + "$ref": "#/definitions/Visibility" + }, + "BorderColor": { + "pattern": "^#[A-F0-9]{6}(?:[A-F0-9]{2})?$", + "type": "string" + }, + "BorderStyle": { + "$ref": "#/definitions/PanelBorderStyle" + }, + "BorderThickness": { + "description": "String based length that is composed of value and unit in px", + "type": "string" + }, + "BorderVisibility": { + "$ref": "#/definitions/Visibility" + }, + "GutterSpacing": { + "description": "String based length that is composed of value and unit in px", + "type": "string" + }, + "GutterVisibility": { + "$ref": "#/definitions/Visibility" + }, + "Title": { + "$ref": "#/definitions/PanelTitleOptions" + } + }, + "type": "object" + }, + "PanelTitleOptions": { + "additionalProperties": false, + "properties": { + "FontConfiguration": { + "$ref": "#/definitions/FontConfiguration" + }, + "HorizontalTextAlignment": { + "$ref": "#/definitions/HorizontalTextAlignment" + }, + "Visibility": { + "$ref": "#/definitions/Visibility" + } + }, + "type": "object" + }, + "PaperOrientation": { + "enum": [ + "PORTRAIT", + "LANDSCAPE" + ], + "type": "string" + }, + "PaperSize": { + "enum": [ + "US_LETTER", + "US_LEGAL", + "US_TABLOID_LEDGER", + "A0", + "A1", + "A2", + "A3", + "A4", + "A5", + "JIS_B4", + "JIS_B5" + ], + "type": "string" + }, + "ParameterControl": { + "additionalProperties": false, + "properties": { + "DateTimePicker": { + "$ref": "#/definitions/ParameterDateTimePickerControl" + }, + "Dropdown": { + "$ref": "#/definitions/ParameterDropDownControl" + }, + "List": { + "$ref": "#/definitions/ParameterListControl" + }, + "Slider": { + "$ref": "#/definitions/ParameterSliderControl" + }, + "TextArea": { + "$ref": "#/definitions/ParameterTextAreaControl" + }, + "TextField": { + "$ref": "#/definitions/ParameterTextFieldControl" + } + }, + "type": "object" + }, + "ParameterDateTimePickerControl": { + "additionalProperties": false, + "properties": { + "DisplayOptions": { + "$ref": "#/definitions/DateTimePickerControlDisplayOptions" + }, + "ParameterControlId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "SourceParameterName": { + "maxLength": 2048, + "minLength": 1, + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + "Title": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "ParameterControlId", + "SourceParameterName", + "Title" + ], + "type": "object" + }, + "ParameterDeclaration": { + "additionalProperties": false, + "properties": { + "DateTimeParameterDeclaration": { + "$ref": "#/definitions/DateTimeParameterDeclaration" + }, + "DecimalParameterDeclaration": { + "$ref": "#/definitions/DecimalParameterDeclaration" + }, + "IntegerParameterDeclaration": { + "$ref": "#/definitions/IntegerParameterDeclaration" + }, + "StringParameterDeclaration": { + "$ref": "#/definitions/StringParameterDeclaration" + } + }, + "type": "object" + }, + "ParameterDropDownControl": { + "additionalProperties": false, + "properties": { + "CascadingControlConfiguration": { + "$ref": "#/definitions/CascadingControlConfiguration" + }, + "CommitMode": { + "$ref": "#/definitions/CommitMode" + }, + "DisplayOptions": { + "$ref": "#/definitions/DropDownControlDisplayOptions" + }, + "ParameterControlId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "SelectableValues": { + "$ref": "#/definitions/ParameterSelectableValues" + }, + "SourceParameterName": { + "maxLength": 2048, + "minLength": 1, + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + "Title": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "Type": { + "$ref": "#/definitions/SheetControlListType" + } + }, + "required": [ + "ParameterControlId", + "SourceParameterName", + "Title" + ], + "type": "object" + }, + "ParameterListControl": { + "additionalProperties": false, + "properties": { + "CascadingControlConfiguration": { + "$ref": "#/definitions/CascadingControlConfiguration" + }, + "DisplayOptions": { + "$ref": "#/definitions/ListControlDisplayOptions" + }, + "ParameterControlId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "SelectableValues": { + "$ref": "#/definitions/ParameterSelectableValues" + }, + "SourceParameterName": { + "maxLength": 2048, + "minLength": 1, + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + "Title": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "Type": { + "$ref": "#/definitions/SheetControlListType" + } + }, + "required": [ + "ParameterControlId", + "SourceParameterName", + "Title" + ], + "type": "object" + }, + "ParameterSelectableValues": { + "additionalProperties": false, + "properties": { + "LinkToDataSetColumn": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "Values": { + "items": { + "type": "string" + }, + "maxItems": 50000, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "ParameterSliderControl": { + "additionalProperties": false, + "properties": { + "DisplayOptions": { + "$ref": "#/definitions/SliderControlDisplayOptions" + }, + "MaximumValue": { + "default": 0, + "type": "number" + }, + "MinimumValue": { + "default": 0, + "type": "number" + }, + "ParameterControlId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "SourceParameterName": { + "maxLength": 2048, + "minLength": 1, + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + "StepSize": { + "default": 0, + "type": "number" + }, + "Title": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "MaximumValue", + "MinimumValue", + "ParameterControlId", + "SourceParameterName", + "StepSize", + "Title" + ], + "type": "object" + }, + "ParameterTextAreaControl": { + "additionalProperties": false, + "properties": { + "Delimiter": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "DisplayOptions": { + "$ref": "#/definitions/TextAreaControlDisplayOptions" + }, + "ParameterControlId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "SourceParameterName": { + "maxLength": 2048, + "minLength": 1, + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + "Title": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "ParameterControlId", + "SourceParameterName", + "Title" + ], + "type": "object" + }, + "ParameterTextFieldControl": { + "additionalProperties": false, + "properties": { + "DisplayOptions": { + "$ref": "#/definitions/TextFieldControlDisplayOptions" + }, + "ParameterControlId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "SourceParameterName": { + "maxLength": 2048, + "minLength": 1, + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + "Title": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "ParameterControlId", + "SourceParameterName", + "Title" + ], + "type": "object" + }, + "ParameterValueType": { + "enum": [ + "MULTI_VALUED", + "SINGLE_VALUED" + ], + "type": "string" + }, + "Parameters": { + "additionalProperties": false, + "description": "A list of Amazon QuickSight parameters and the list's override values.
", + "properties": { + "DateTimeParameters": { + "description": "The parameters that have a data type of date-time.
", + "items": { + "$ref": "#/definitions/DateTimeParameter" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + }, + "DecimalParameters": { + "description": "The parameters that have a data type of decimal.
", + "items": { + "$ref": "#/definitions/DecimalParameter" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + }, + "IntegerParameters": { + "description": "The parameters that have a data type of integer.
", + "items": { + "$ref": "#/definitions/IntegerParameter" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + }, + "StringParameters": { + "description": "The parameters that have a data type of string.
", + "items": { + "$ref": "#/definitions/StringParameter" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "PercentVisibleRange": { + "additionalProperties": false, + "properties": { + "From": { + "default": null, + "maximum": 100, + "minimum": 0, + "type": "number" + }, + "To": { + "default": null, + "maximum": 100, + "minimum": 0, + "type": "number" + } + }, + "type": "object" + }, + "PercentageDisplayFormatConfiguration": { + "additionalProperties": false, + "properties": { + "DecimalPlacesConfiguration": { + "$ref": "#/definitions/DecimalPlacesConfiguration" + }, + "NegativeValueConfiguration": { + "$ref": "#/definitions/NegativeValueConfiguration" + }, + "NullValueFormatConfiguration": { + "$ref": "#/definitions/NullValueFormatConfiguration" + }, + "Prefix": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "SeparatorConfiguration": { + "$ref": "#/definitions/NumericSeparatorConfiguration" + }, + "Suffix": { + "maxLength": 128, + "minLength": 1, + "type": "string" + } + }, + "type": "object" + }, + "PercentileAggregation": { + "additionalProperties": false, + "properties": { + "PercentileValue": { + "maximum": 100, + "minimum": 0, + "type": "number" + } + }, + "type": "object" + }, + "PeriodOverPeriodComputation": { + "additionalProperties": false, + "properties": { + "ComputationId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "Name": { + "type": "string" + }, + "Time": { + "$ref": "#/definitions/DimensionField" + }, + "Value": { + "$ref": "#/definitions/MeasureField" + } + }, + "required": [ + "ComputationId" + ], + "type": "object" + }, + "PeriodToDateComputation": { + "additionalProperties": false, + "properties": { + "ComputationId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "Name": { + "type": "string" + }, + "PeriodTimeGranularity": { + "$ref": "#/definitions/TimeGranularity" + }, + "Time": { + "$ref": "#/definitions/DimensionField" + }, + "Value": { + "$ref": "#/definitions/MeasureField" + } + }, + "required": [ + "ComputationId" + ], + "type": "object" + }, + "PieChartAggregatedFieldWells": { + "additionalProperties": false, + "properties": { + "Category": { + "items": { + "$ref": "#/definitions/DimensionField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "SmallMultiples": { + "items": { + "$ref": "#/definitions/DimensionField" + }, + "maxItems": 1, + "minItems": 0, + "type": "array" + }, + "Values": { + "items": { + "$ref": "#/definitions/MeasureField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "PieChartConfiguration": { + "additionalProperties": false, + "properties": { + "CategoryLabelOptions": { + "$ref": "#/definitions/ChartAxisLabelOptions" + }, + "ContributionAnalysisDefaults": { + "items": { + "$ref": "#/definitions/ContributionAnalysisDefault" + }, + "maxItems": 200, + "minItems": 1, + "type": "array" + }, + "DataLabels": { + "$ref": "#/definitions/DataLabelOptions" + }, + "DonutOptions": { + "$ref": "#/definitions/DonutOptions" + }, + "FieldWells": { + "$ref": "#/definitions/PieChartFieldWells" + }, + "Interactions": { + "$ref": "#/definitions/VisualInteractionOptions" + }, + "Legend": { + "$ref": "#/definitions/LegendOptions" + }, + "SmallMultiplesOptions": { + "$ref": "#/definitions/SmallMultiplesOptions" + }, + "SortConfiguration": { + "$ref": "#/definitions/PieChartSortConfiguration" + }, + "Tooltip": { + "$ref": "#/definitions/TooltipOptions" + }, + "ValueLabelOptions": { + "$ref": "#/definitions/ChartAxisLabelOptions" + }, + "VisualPalette": { + "$ref": "#/definitions/VisualPalette" + } + }, + "type": "object" + }, + "PieChartFieldWells": { + "additionalProperties": false, + "properties": { + "PieChartAggregatedFieldWells": { + "$ref": "#/definitions/PieChartAggregatedFieldWells" + } + }, + "type": "object" + }, + "PieChartSortConfiguration": { + "additionalProperties": false, + "properties": { + "CategoryItemsLimit": { + "$ref": "#/definitions/ItemsLimitConfiguration" + }, + "CategorySort": { + "items": { + "$ref": "#/definitions/FieldSortOptions" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + }, + "SmallMultiplesLimitConfiguration": { + "$ref": "#/definitions/ItemsLimitConfiguration" + }, + "SmallMultiplesSort": { + "items": { + "$ref": "#/definitions/FieldSortOptions" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "PieChartVisual": { + "additionalProperties": false, + "properties": { + "Actions": { + "items": { + "$ref": "#/definitions/VisualCustomAction" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + }, + "ChartConfiguration": { + "$ref": "#/definitions/PieChartConfiguration" + }, + "ColumnHierarchies": { + "items": { + "$ref": "#/definitions/ColumnHierarchy" + }, + "maxItems": 2, + "minItems": 0, + "type": "array" + }, + "Subtitle": { + "$ref": "#/definitions/VisualSubtitleLabelOptions" + }, + "Title": { + "$ref": "#/definitions/VisualTitleLabelOptions" + }, + "VisualContentAltText": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "VisualId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + } + }, + "required": [ + "VisualId" + ], + "type": "object" + }, + "PivotFieldSortOptions": { + "additionalProperties": false, + "properties": { + "FieldId": { + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "SortBy": { + "$ref": "#/definitions/PivotTableSortBy" + } + }, + "required": [ + "FieldId", + "SortBy" + ], + "type": "object" + }, + "PivotTableAggregatedFieldWells": { + "additionalProperties": false, + "properties": { + "Columns": { + "items": { + "$ref": "#/definitions/DimensionField" + }, + "maxItems": 40, + "minItems": 0, + "type": "array" + }, + "Rows": { + "items": { + "$ref": "#/definitions/DimensionField" + }, + "maxItems": 40, + "minItems": 0, + "type": "array" + }, + "Values": { + "items": { + "$ref": "#/definitions/MeasureField" + }, + "maxItems": 40, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "PivotTableCellConditionalFormatting": { + "additionalProperties": false, + "properties": { + "FieldId": { + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "Scope": { + "$ref": "#/definitions/PivotTableConditionalFormattingScope" + }, + "Scopes": { + "items": { + "$ref": "#/definitions/PivotTableConditionalFormattingScope" + }, + "maxItems": 3, + "minItems": 0, + "type": "array" + }, + "TextFormat": { + "$ref": "#/definitions/TextConditionalFormat" + } + }, + "required": [ + "FieldId" + ], + "type": "object" + }, + "PivotTableConditionalFormatting": { + "additionalProperties": false, + "properties": { + "ConditionalFormattingOptions": { + "items": { + "$ref": "#/definitions/PivotTableConditionalFormattingOption" + }, + "maxItems": 500, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "PivotTableConditionalFormattingOption": { + "additionalProperties": false, + "properties": { + "Cell": { + "$ref": "#/definitions/PivotTableCellConditionalFormatting" + } + }, + "type": "object" + }, + "PivotTableConditionalFormattingScope": { + "additionalProperties": false, + "properties": { + "Role": { + "$ref": "#/definitions/PivotTableConditionalFormattingScopeRole" + } + }, + "type": "object" + }, + "PivotTableConditionalFormattingScopeRole": { + "enum": [ + "FIELD", + "FIELD_TOTAL", + "GRAND_TOTAL" + ], + "type": "string" + }, + "PivotTableConfiguration": { + "additionalProperties": false, + "properties": { + "FieldOptions": { + "$ref": "#/definitions/PivotTableFieldOptions" + }, + "FieldWells": { + "$ref": "#/definitions/PivotTableFieldWells" + }, + "Interactions": { + "$ref": "#/definitions/VisualInteractionOptions" + }, + "PaginatedReportOptions": { + "$ref": "#/definitions/PivotTablePaginatedReportOptions" + }, + "SortConfiguration": { + "$ref": "#/definitions/PivotTableSortConfiguration" + }, + "TableOptions": { + "$ref": "#/definitions/PivotTableOptions" + }, + "TotalOptions": { + "$ref": "#/definitions/PivotTableTotalOptions" + } + }, + "type": "object" + }, + "PivotTableDataPathOption": { + "additionalProperties": false, + "properties": { + "DataPathList": { + "items": { + "$ref": "#/definitions/DataPathValue" + }, + "maxItems": 20, + "minItems": 0, + "type": "array" + }, + "Width": { + "description": "String based length that is composed of value and unit in px", + "type": "string" + } + }, + "required": [ + "DataPathList" + ], + "type": "object" + }, + "PivotTableDataPathType": { + "enum": [ + "HIERARCHY_ROWS_LAYOUT_COLUMN", + "MULTIPLE_ROW_METRICS_COLUMN", + "EMPTY_COLUMN_HEADER", + "COUNT_METRIC_COLUMN" + ], + "type": "string" + }, + "PivotTableFieldCollapseState": { + "enum": [ + "COLLAPSED", + "EXPANDED" + ], + "type": "string" + }, + "PivotTableFieldCollapseStateOption": { + "additionalProperties": false, + "properties": { + "State": { + "$ref": "#/definitions/PivotTableFieldCollapseState" + }, + "Target": { + "$ref": "#/definitions/PivotTableFieldCollapseStateTarget" + } + }, + "required": [ + "Target" + ], + "type": "object" + }, + "PivotTableFieldCollapseStateTarget": { + "additionalProperties": false, + "properties": { + "FieldDataPathValues": { + "items": { + "$ref": "#/definitions/DataPathValue" + }, + "maxItems": 20, + "minItems": 0, + "type": "array" + }, + "FieldId": { + "type": "string" + } + }, + "type": "object" + }, + "PivotTableFieldOption": { + "additionalProperties": false, + "properties": { + "CustomLabel": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "FieldId": { + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "Visibility": { + "$ref": "#/definitions/Visibility" + } + }, + "required": [ + "FieldId" + ], + "type": "object" + }, + "PivotTableFieldOptions": { + "additionalProperties": false, + "properties": { + "CollapseStateOptions": { + "items": { + "$ref": "#/definitions/PivotTableFieldCollapseStateOption" + }, + "type": "array" + }, + "DataPathOptions": { + "items": { + "$ref": "#/definitions/PivotTableDataPathOption" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + }, + "SelectedFieldOptions": { + "items": { + "$ref": "#/definitions/PivotTableFieldOption" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "PivotTableFieldSubtotalOptions": { + "additionalProperties": false, + "properties": { + "FieldId": { + "maxLength": 512, + "minLength": 1, + "type": "string" + } + }, + "type": "object" + }, + "PivotTableFieldWells": { + "additionalProperties": false, + "properties": { + "PivotTableAggregatedFieldWells": { + "$ref": "#/definitions/PivotTableAggregatedFieldWells" + } + }, + "type": "object" + }, + "PivotTableMetricPlacement": { + "enum": [ + "ROW", + "COLUMN" + ], + "type": "string" + }, + "PivotTableOptions": { + "additionalProperties": false, + "properties": { + "CellStyle": { + "$ref": "#/definitions/TableCellStyle" + }, + "CollapsedRowDimensionsVisibility": { + "$ref": "#/definitions/Visibility" + }, + "ColumnHeaderStyle": { + "$ref": "#/definitions/TableCellStyle" + }, + "ColumnNamesVisibility": { + "$ref": "#/definitions/Visibility" + }, + "DefaultCellWidth": { + "description": "String based length that is composed of value and unit in px", + "type": "string" + }, + "MetricPlacement": { + "$ref": "#/definitions/PivotTableMetricPlacement" + }, + "RowAlternateColorOptions": { + "$ref": "#/definitions/RowAlternateColorOptions" + }, + "RowFieldNamesStyle": { + "$ref": "#/definitions/TableCellStyle" + }, + "RowHeaderStyle": { + "$ref": "#/definitions/TableCellStyle" + }, + "RowsLabelOptions": { + "$ref": "#/definitions/PivotTableRowsLabelOptions" + }, + "RowsLayout": { + "$ref": "#/definitions/PivotTableRowsLayout" + }, + "SingleMetricVisibility": { + "$ref": "#/definitions/Visibility" + }, + "ToggleButtonsVisibility": { + "$ref": "#/definitions/Visibility" + } + }, + "type": "object" + }, + "PivotTablePaginatedReportOptions": { + "additionalProperties": false, + "properties": { + "OverflowColumnHeaderVisibility": { + "$ref": "#/definitions/Visibility" + }, + "VerticalOverflowVisibility": { + "$ref": "#/definitions/Visibility" + } + }, + "type": "object" + }, + "PivotTableRowsLabelOptions": { + "additionalProperties": false, + "properties": { + "CustomLabel": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "Visibility": { + "$ref": "#/definitions/Visibility" + } + }, + "type": "object" + }, + "PivotTableRowsLayout": { + "enum": [ + "TABULAR", + "HIERARCHY" + ], + "type": "string" + }, + "PivotTableSortBy": { + "additionalProperties": false, + "properties": { + "Column": { + "$ref": "#/definitions/ColumnSort" + }, + "DataPath": { + "$ref": "#/definitions/DataPathSort" + }, + "Field": { + "$ref": "#/definitions/FieldSort" + } + }, + "type": "object" + }, + "PivotTableSortConfiguration": { + "additionalProperties": false, + "properties": { + "FieldSortOptions": { + "items": { + "$ref": "#/definitions/PivotFieldSortOptions" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "PivotTableSubtotalLevel": { + "enum": [ + "ALL", + "CUSTOM", + "LAST" + ], + "type": "string" + }, + "PivotTableTotalOptions": { + "additionalProperties": false, + "properties": { + "ColumnSubtotalOptions": { + "$ref": "#/definitions/SubtotalOptions" + }, + "ColumnTotalOptions": { + "$ref": "#/definitions/PivotTotalOptions" + }, + "RowSubtotalOptions": { + "$ref": "#/definitions/SubtotalOptions" + }, + "RowTotalOptions": { + "$ref": "#/definitions/PivotTotalOptions" + } + }, + "type": "object" + }, + "PivotTableVisual": { + "additionalProperties": false, + "properties": { + "Actions": { + "items": { + "$ref": "#/definitions/VisualCustomAction" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + }, + "ChartConfiguration": { + "$ref": "#/definitions/PivotTableConfiguration" + }, + "ConditionalFormatting": { + "$ref": "#/definitions/PivotTableConditionalFormatting" + }, + "Subtitle": { + "$ref": "#/definitions/VisualSubtitleLabelOptions" + }, + "Title": { + "$ref": "#/definitions/VisualTitleLabelOptions" + }, + "VisualContentAltText": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "VisualId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + } + }, + "required": [ + "VisualId" + ], + "type": "object" + }, + "PivotTotalOptions": { + "additionalProperties": false, + "properties": { + "CustomLabel": { + "type": "string" + }, + "MetricHeaderCellStyle": { + "$ref": "#/definitions/TableCellStyle" + }, + "Placement": { + "$ref": "#/definitions/TableTotalsPlacement" + }, + "ScrollStatus": { + "$ref": "#/definitions/TableTotalsScrollStatus" + }, + "TotalAggregationOptions": { + "items": { + "$ref": "#/definitions/TotalAggregationOption" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "TotalCellStyle": { + "$ref": "#/definitions/TableCellStyle" + }, + "TotalsVisibility": { + "$ref": "#/definitions/Visibility" + }, + "ValueCellStyle": { + "$ref": "#/definitions/TableCellStyle" + } + }, + "type": "object" + }, + "PluginVisual": { + "additionalProperties": false, + "properties": { + "ChartConfiguration": { + "$ref": "#/definitions/PluginVisualConfiguration" + }, + "PluginArn": { + "type": "string" + }, + "Subtitle": { + "$ref": "#/definitions/VisualSubtitleLabelOptions" + }, + "Title": { + "$ref": "#/definitions/VisualTitleLabelOptions" + }, + "VisualContentAltText": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "VisualId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + } + }, + "required": [ + "PluginArn", + "VisualId" + ], + "type": "object" + }, + "PluginVisualAxisName": { + "enum": [ + "GROUP_BY", + "VALUE" + ], + "type": "string" + }, + "PluginVisualConfiguration": { + "additionalProperties": false, + "properties": { + "FieldWells": { + "items": { + "$ref": "#/definitions/PluginVisualFieldWell" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + }, + "SortConfiguration": { + "$ref": "#/definitions/PluginVisualSortConfiguration" + }, + "VisualOptions": { + "$ref": "#/definitions/PluginVisualOptions" + } + }, + "type": "object" + }, + "PluginVisualFieldWell": { + "additionalProperties": false, + "properties": { + "AxisName": { + "$ref": "#/definitions/PluginVisualAxisName" + }, + "Dimensions": { + "items": { + "$ref": "#/definitions/DimensionField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "Measures": { + "items": { + "$ref": "#/definitions/MeasureField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "Unaggregated": { + "items": { + "$ref": "#/definitions/UnaggregatedField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "PluginVisualItemsLimitConfiguration": { + "additionalProperties": false, + "properties": { + "ItemsLimit": { + "default": null, + "type": "number" + } + }, + "type": "object" + }, + "PluginVisualOptions": { + "additionalProperties": false, + "properties": { + "VisualProperties": { + "items": { + "$ref": "#/definitions/PluginVisualProperty" + }, + "type": "array" + } + }, + "type": "object" + }, + "PluginVisualProperty": { + "additionalProperties": false, + "properties": { + "Name": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "type": "object" + }, + "PluginVisualSortConfiguration": { + "additionalProperties": false, + "properties": { + "PluginVisualTableQuerySort": { + "$ref": "#/definitions/PluginVisualTableQuerySort" + } + }, + "type": "object" + }, + "PluginVisualTableQuerySort": { + "additionalProperties": false, + "properties": { + "ItemsLimitConfiguration": { + "$ref": "#/definitions/PluginVisualItemsLimitConfiguration" + }, + "RowSort": { + "items": { + "$ref": "#/definitions/FieldSortOptions" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "PredefinedHierarchy": { + "additionalProperties": false, + "properties": { + "Columns": { + "items": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "maxItems": 10, + "minItems": 1, + "type": "array" + }, + "DrillDownFilters": { + "items": { + "$ref": "#/definitions/DrillDownFilter" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + }, + "HierarchyId": { + "maxLength": 512, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Columns", + "HierarchyId" + ], + "type": "object" + }, + "PrimaryValueDisplayType": { + "enum": [ + "HIDDEN", + "COMPARISON", + "ACTUAL" + ], + "type": "string" + }, + "ProgressBarOptions": { + "additionalProperties": false, + "properties": { + "Visibility": { + "$ref": "#/definitions/Visibility" + } + }, + "type": "object" + }, + "RadarChartAggregatedFieldWells": { + "additionalProperties": false, + "properties": { + "Category": { + "items": { + "$ref": "#/definitions/DimensionField" + }, + "maxItems": 1, + "minItems": 0, + "type": "array" + }, + "Color": { + "items": { + "$ref": "#/definitions/DimensionField" + }, + "maxItems": 1, + "minItems": 0, + "type": "array" + }, + "Values": { + "items": { + "$ref": "#/definitions/MeasureField" + }, + "maxItems": 20, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "RadarChartAreaStyleSettings": { + "additionalProperties": false, + "properties": { + "Visibility": { + "$ref": "#/definitions/Visibility" + } + }, + "type": "object" + }, + "RadarChartAxesRangeScale": { + "enum": [ + "AUTO", + "INDEPENDENT", + "SHARED" + ], + "type": "string" + }, + "RadarChartConfiguration": { + "additionalProperties": false, + "properties": { + "AlternateBandColorsVisibility": { + "$ref": "#/definitions/Visibility" + }, + "AlternateBandEvenColor": { + "pattern": "^#[A-F0-9]{6}$", + "type": "string" + }, + "AlternateBandOddColor": { + "pattern": "^#[A-F0-9]{6}$", + "type": "string" + }, + "AxesRangeScale": { + "$ref": "#/definitions/RadarChartAxesRangeScale" + }, + "BaseSeriesSettings": { + "$ref": "#/definitions/RadarChartSeriesSettings" + }, + "CategoryAxis": { + "$ref": "#/definitions/AxisDisplayOptions" + }, + "CategoryLabelOptions": { + "$ref": "#/definitions/ChartAxisLabelOptions" + }, + "ColorAxis": { + "$ref": "#/definitions/AxisDisplayOptions" + }, + "ColorLabelOptions": { + "$ref": "#/definitions/ChartAxisLabelOptions" + }, + "FieldWells": { + "$ref": "#/definitions/RadarChartFieldWells" + }, + "Interactions": { + "$ref": "#/definitions/VisualInteractionOptions" + }, + "Legend": { + "$ref": "#/definitions/LegendOptions" + }, + "Shape": { + "$ref": "#/definitions/RadarChartShape" + }, + "SortConfiguration": { + "$ref": "#/definitions/RadarChartSortConfiguration" + }, + "StartAngle": { + "maximum": 360, + "minimum": -360, + "type": "number" + }, + "VisualPalette": { + "$ref": "#/definitions/VisualPalette" + } + }, + "type": "object" + }, + "RadarChartFieldWells": { + "additionalProperties": false, + "properties": { + "RadarChartAggregatedFieldWells": { + "$ref": "#/definitions/RadarChartAggregatedFieldWells" + } + }, + "type": "object" + }, + "RadarChartSeriesSettings": { + "additionalProperties": false, + "properties": { + "AreaStyleSettings": { + "$ref": "#/definitions/RadarChartAreaStyleSettings" + } + }, + "type": "object" + }, + "RadarChartShape": { + "enum": [ + "CIRCLE", + "POLYGON" + ], + "type": "string" + }, + "RadarChartSortConfiguration": { + "additionalProperties": false, + "properties": { + "CategoryItemsLimit": { + "$ref": "#/definitions/ItemsLimitConfiguration" + }, + "CategorySort": { + "items": { + "$ref": "#/definitions/FieldSortOptions" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + }, + "ColorItemsLimit": { + "$ref": "#/definitions/ItemsLimitConfiguration" + }, + "ColorSort": { + "items": { + "$ref": "#/definitions/FieldSortOptions" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "RadarChartVisual": { + "additionalProperties": false, + "properties": { + "Actions": { + "items": { + "$ref": "#/definitions/VisualCustomAction" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + }, + "ChartConfiguration": { + "$ref": "#/definitions/RadarChartConfiguration" + }, + "ColumnHierarchies": { + "items": { + "$ref": "#/definitions/ColumnHierarchy" + }, + "maxItems": 2, + "minItems": 0, + "type": "array" + }, + "Subtitle": { + "$ref": "#/definitions/VisualSubtitleLabelOptions" + }, + "Title": { + "$ref": "#/definitions/VisualTitleLabelOptions" + }, + "VisualContentAltText": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "VisualId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + } + }, + "required": [ + "VisualId" + ], + "type": "object" + }, + "RangeEndsLabelType": { + "additionalProperties": false, + "properties": { + "Visibility": { + "$ref": "#/definitions/Visibility" + } + }, + "type": "object" + }, + "ReferenceLine": { + "additionalProperties": false, + "properties": { + "DataConfiguration": { + "$ref": "#/definitions/ReferenceLineDataConfiguration" + }, + "LabelConfiguration": { + "$ref": "#/definitions/ReferenceLineLabelConfiguration" + }, + "Status": { + "$ref": "#/definitions/WidgetStatus" + }, + "StyleConfiguration": { + "$ref": "#/definitions/ReferenceLineStyleConfiguration" + } + }, + "required": [ + "DataConfiguration" + ], + "type": "object" + }, + "ReferenceLineCustomLabelConfiguration": { + "additionalProperties": false, + "properties": { + "CustomLabel": { + "pattern": "\\S", + "type": "string" + } + }, + "required": [ + "CustomLabel" + ], + "type": "object" + }, + "ReferenceLineDataConfiguration": { + "additionalProperties": false, + "properties": { + "AxisBinding": { + "$ref": "#/definitions/AxisBinding" + }, + "DynamicConfiguration": { + "$ref": "#/definitions/ReferenceLineDynamicDataConfiguration" + }, + "SeriesType": { + "$ref": "#/definitions/ReferenceLineSeriesType" + }, + "StaticConfiguration": { + "$ref": "#/definitions/ReferenceLineStaticDataConfiguration" + } + }, + "type": "object" + }, + "ReferenceLineDynamicDataConfiguration": { + "additionalProperties": false, + "properties": { + "Calculation": { + "$ref": "#/definitions/NumericalAggregationFunction" + }, + "Column": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "MeasureAggregationFunction": { + "$ref": "#/definitions/AggregationFunction" + } + }, + "required": [ + "Calculation", + "Column" + ], + "type": "object" + }, + "ReferenceLineLabelConfiguration": { + "additionalProperties": false, + "properties": { + "CustomLabelConfiguration": { + "$ref": "#/definitions/ReferenceLineCustomLabelConfiguration" + }, + "FontColor": { + "pattern": "^#[A-F0-9]{6}$", + "type": "string" + }, + "FontConfiguration": { + "$ref": "#/definitions/FontConfiguration" + }, + "HorizontalPosition": { + "$ref": "#/definitions/ReferenceLineLabelHorizontalPosition" + }, + "ValueLabelConfiguration": { + "$ref": "#/definitions/ReferenceLineValueLabelConfiguration" + }, + "VerticalPosition": { + "$ref": "#/definitions/ReferenceLineLabelVerticalPosition" + } + }, + "type": "object" + }, + "ReferenceLineLabelHorizontalPosition": { + "enum": [ + "LEFT", + "CENTER", + "RIGHT" + ], + "type": "string" + }, + "ReferenceLineLabelVerticalPosition": { + "enum": [ + "ABOVE", + "BELOW" + ], + "type": "string" + }, + "ReferenceLinePatternType": { + "enum": [ + "SOLID", + "DASHED", + "DOTTED" + ], + "type": "string" + }, + "ReferenceLineSeriesType": { + "enum": [ + "BAR", + "LINE" + ], + "type": "string" + }, + "ReferenceLineStaticDataConfiguration": { + "additionalProperties": false, + "properties": { + "Value": { + "default": 0, + "type": "number" + } + }, + "required": [ + "Value" + ], + "type": "object" + }, + "ReferenceLineStyleConfiguration": { + "additionalProperties": false, + "properties": { + "Color": { + "pattern": "^#[A-F0-9]{6}$", + "type": "string" + }, + "Pattern": { + "$ref": "#/definitions/ReferenceLinePatternType" + } + }, + "type": "object" + }, + "ReferenceLineValueLabelConfiguration": { + "additionalProperties": false, + "properties": { + "FormatConfiguration": { + "$ref": "#/definitions/NumericFormatConfiguration" + }, + "RelativePosition": { + "$ref": "#/definitions/ReferenceLineValueLabelRelativePosition" + } + }, + "type": "object" + }, + "ReferenceLineValueLabelRelativePosition": { + "enum": [ + "BEFORE_CUSTOM_LABEL", + "AFTER_CUSTOM_LABEL" + ], + "type": "string" + }, + "RelativeDateTimeControlDisplayOptions": { + "additionalProperties": false, + "properties": { + "DateTimeFormat": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "InfoIconLabelOptions": { + "$ref": "#/definitions/SheetControlInfoIconLabelOptions" + }, + "TitleOptions": { + "$ref": "#/definitions/LabelOptions" + } + }, + "type": "object" + }, + "RelativeDateType": { + "enum": [ + "PREVIOUS", + "THIS", + "LAST", + "NOW", + "NEXT" + ], + "type": "string" + }, + "RelativeDatesFilter": { + "additionalProperties": false, + "properties": { + "AnchorDateConfiguration": { + "$ref": "#/definitions/AnchorDateConfiguration" + }, + "Column": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "DefaultFilterControlConfiguration": { + "$ref": "#/definitions/DefaultFilterControlConfiguration" + }, + "ExcludePeriodConfiguration": { + "$ref": "#/definitions/ExcludePeriodConfiguration" + }, + "FilterId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "MinimumGranularity": { + "$ref": "#/definitions/TimeGranularity" + }, + "NullOption": { + "$ref": "#/definitions/FilterNullOption" + }, + "ParameterName": { + "maxLength": 2048, + "minLength": 1, + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + "RelativeDateType": { + "$ref": "#/definitions/RelativeDateType" + }, + "RelativeDateValue": { + "default": null, + "type": "number" + }, + "TimeGranularity": { + "$ref": "#/definitions/TimeGranularity" + } + }, + "required": [ + "AnchorDateConfiguration", + "Column", + "FilterId", + "NullOption", + "RelativeDateType", + "TimeGranularity" + ], + "type": "object" + }, + "RelativeFontSize": { + "enum": [ + "EXTRA_SMALL", + "SMALL", + "MEDIUM", + "LARGE", + "EXTRA_LARGE" + ], + "type": "string" + }, + "ResizeOption": { + "enum": [ + "FIXED", + "RESPONSIVE" + ], + "type": "string" + }, + "ResourcePermission": { + "additionalProperties": false, + "description": "Permission for the resource.
", + "properties": { + "Actions": { + "description": "The IAM action to grant or revoke permissions on.
", + "items": { + "type": "string" + }, + "maxItems": 20, + "minItems": 1, + "type": "array" + }, + "Principal": { + "description": "The Amazon Resource Name (ARN) of the principal. This can be one of the\n following:
\nThe ARN of an Amazon QuickSight user or group associated with a data source or dataset. (This is common.)
\nThe ARN of an Amazon QuickSight user, group, or namespace associated with an analysis, dashboard, template, or theme. (This is common.)
\nThe ARN of an Amazon Web Services account root: This is an IAM ARN rather than a QuickSight\n ARN. Use this option only to share resources (templates) across Amazon Web Services accounts.\n (This is less common.)
\nA sheet, which is an object that contains a set of visuals that\n are viewed together on one page in Amazon QuickSight. Every analysis and dashboard\n contains at least one sheet. Each sheet contains at least one visualization widget, for\n example a chart, pivot table, or narrative insight. Sheets can be associated with other\n components, such as controls, filters, and so on.
", + "properties": { + "Name": { + "description": "The name of a sheet. This name is displayed on the sheet's tab in the Amazon QuickSight\n console.
", + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "SheetId": { + "description": "The unique identifier associated with a sheet.
", + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + } + }, + "type": "object" + }, + "SheetContentType": { + "enum": [ + "PAGINATED", + "INTERACTIVE" + ], + "type": "string" + }, + "SheetControlDateTimePickerType": { + "enum": [ + "SINGLE_VALUED", + "DATE_RANGE" + ], + "type": "string" + }, + "SheetControlInfoIconLabelOptions": { + "additionalProperties": false, + "properties": { + "InfoIconText": { + "maxLength": 100, + "minLength": 1, + "type": "string" + }, + "Visibility": { + "$ref": "#/definitions/Visibility" + } + }, + "type": "object" + }, + "SheetControlLayout": { + "additionalProperties": false, + "properties": { + "Configuration": { + "$ref": "#/definitions/SheetControlLayoutConfiguration" + } + }, + "required": [ + "Configuration" + ], + "type": "object" + }, + "SheetControlLayoutConfiguration": { + "additionalProperties": false, + "properties": { + "GridLayout": { + "$ref": "#/definitions/GridLayoutConfiguration" + } + }, + "type": "object" + }, + "SheetControlListType": { + "enum": [ + "MULTI_SELECT", + "SINGLE_SELECT" + ], + "type": "string" + }, + "SheetControlSliderType": { + "enum": [ + "SINGLE_POINT", + "RANGE" + ], + "type": "string" + }, + "SheetControlsOption": { + "additionalProperties": false, + "description": "Sheet controls option.
", + "properties": { + "VisibilityState": { + "$ref": "#/definitions/DashboardUIState" + } + }, + "type": "object" + }, + "SheetDefinition": { + "additionalProperties": false, + "properties": { + "ContentType": { + "$ref": "#/definitions/SheetContentType" + }, + "Description": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "FilterControls": { + "items": { + "$ref": "#/definitions/FilterControl" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "Images": { + "items": { + "$ref": "#/definitions/SheetImage" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + }, + "Layouts": { + "items": { + "$ref": "#/definitions/Layout" + }, + "maxItems": 1, + "minItems": 1, + "type": "array" + }, + "Name": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "ParameterControls": { + "items": { + "$ref": "#/definitions/ParameterControl" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "SheetControlLayouts": { + "items": { + "$ref": "#/definitions/SheetControlLayout" + }, + "maxItems": 1, + "minItems": 0, + "type": "array" + }, + "SheetId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "TextBoxes": { + "items": { + "$ref": "#/definitions/SheetTextBox" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + }, + "Title": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "Visuals": { + "items": { + "$ref": "#/definitions/Visual" + }, + "maxItems": 50, + "minItems": 0, + "type": "array" + } + }, + "required": [ + "SheetId" + ], + "type": "object" + }, + "SheetElementConfigurationOverrides": { + "additionalProperties": false, + "properties": { + "Visibility": { + "$ref": "#/definitions/Visibility" + } + }, + "type": "object" + }, + "SheetElementRenderingRule": { + "additionalProperties": false, + "properties": { + "ConfigurationOverrides": { + "$ref": "#/definitions/SheetElementConfigurationOverrides" + }, + "Expression": { + "maxLength": 4096, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "ConfigurationOverrides", + "Expression" + ], + "type": "object" + }, + "SheetImage": { + "additionalProperties": false, + "properties": { + "Actions": { + "items": { + "$ref": "#/definitions/ImageCustomAction" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + }, + "ImageContentAltText": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "Interactions": { + "$ref": "#/definitions/ImageInteractionOptions" + }, + "Scaling": { + "$ref": "#/definitions/SheetImageScalingConfiguration" + }, + "SheetImageId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "Source": { + "$ref": "#/definitions/SheetImageSource" + }, + "Tooltip": { + "$ref": "#/definitions/SheetImageTooltipConfiguration" + } + }, + "required": [ + "SheetImageId", + "Source" + ], + "type": "object" + }, + "SheetImageScalingConfiguration": { + "additionalProperties": false, + "properties": { + "ScalingType": { + "$ref": "#/definitions/SheetImageScalingType" + } + }, + "type": "object" + }, + "SheetImageScalingType": { + "enum": [ + "SCALE_TO_WIDTH", + "SCALE_TO_HEIGHT", + "SCALE_TO_CONTAINER", + "SCALE_NONE" + ], + "type": "string" + }, + "SheetImageSource": { + "additionalProperties": false, + "properties": { + "SheetImageStaticFileSource": { + "$ref": "#/definitions/SheetImageStaticFileSource" + } + }, + "type": "object" + }, + "SheetImageStaticFileSource": { + "additionalProperties": false, + "properties": { + "StaticFileId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + } + }, + "required": [ + "StaticFileId" + ], + "type": "object" + }, + "SheetImageTooltipConfiguration": { + "additionalProperties": false, + "properties": { + "TooltipText": { + "$ref": "#/definitions/SheetImageTooltipText" + }, + "Visibility": { + "$ref": "#/definitions/Visibility" + } + }, + "type": "object" + }, + "SheetImageTooltipText": { + "additionalProperties": false, + "properties": { + "PlainText": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + } + }, + "type": "object" + }, + "SheetLayoutElementMaximizationOption": { + "additionalProperties": false, + "description": "The sheet layout maximization options of a dashbaord.
", + "properties": { + "AvailabilityStatus": { + "$ref": "#/definitions/DashboardBehavior" + } + }, + "type": "object" + }, + "SheetTextBox": { + "additionalProperties": false, + "properties": { + "Content": { + "maxLength": 150000, + "minLength": 0, + "type": "string" + }, + "SheetTextBoxId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + } + }, + "required": [ + "SheetTextBoxId" + ], + "type": "object" + }, + "SheetVisualScopingConfiguration": { + "additionalProperties": false, + "properties": { + "Scope": { + "$ref": "#/definitions/FilterVisualScope" + }, + "SheetId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "VisualIds": { + "items": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "maxItems": 50, + "minItems": 0, + "type": "array" + } + }, + "required": [ + "Scope", + "SheetId" + ], + "type": "object" + }, + "ShortFormatText": { + "additionalProperties": false, + "properties": { + "PlainText": { + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "RichText": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + } + }, + "type": "object" + }, + "SimpleAttributeAggregationFunction": { + "enum": [ + "UNIQUE_VALUE" + ], + "type": "string" + }, + "SimpleClusterMarker": { + "additionalProperties": false, + "properties": { + "Color": { + "pattern": "^#[A-F0-9]{6}$", + "type": "string" + } + }, + "type": "object" + }, + "SimpleNumericalAggregationFunction": { + "enum": [ + "SUM", + "AVERAGE", + "MIN", + "MAX", + "COUNT", + "DISTINCT_COUNT", + "VAR", + "VARP", + "STDEV", + "STDEVP", + "MEDIAN" + ], + "type": "string" + }, + "SimpleTotalAggregationFunction": { + "enum": [ + "DEFAULT", + "SUM", + "AVERAGE", + "MIN", + "MAX", + "NONE" + ], + "type": "string" + }, + "SingleAxisOptions": { + "additionalProperties": false, + "properties": { + "YAxisOptions": { + "$ref": "#/definitions/YAxisOptions" + } + }, + "type": "object" + }, + "SingleYAxisOption": { + "enum": [ + "PRIMARY_Y_AXIS" + ], + "type": "string" + }, + "SliderControlDisplayOptions": { + "additionalProperties": false, + "properties": { + "InfoIconLabelOptions": { + "$ref": "#/definitions/SheetControlInfoIconLabelOptions" + }, + "TitleOptions": { + "$ref": "#/definitions/LabelOptions" + } + }, + "type": "object" + }, + "SmallMultiplesAxisPlacement": { + "enum": [ + "OUTSIDE", + "INSIDE" + ], + "type": "string" + }, + "SmallMultiplesAxisProperties": { + "additionalProperties": false, + "properties": { + "Placement": { + "$ref": "#/definitions/SmallMultiplesAxisPlacement" + }, + "Scale": { + "$ref": "#/definitions/SmallMultiplesAxisScale" + } + }, + "type": "object" + }, + "SmallMultiplesAxisScale": { + "enum": [ + "SHARED", + "INDEPENDENT" + ], + "type": "string" + }, + "SmallMultiplesOptions": { + "additionalProperties": false, + "properties": { + "MaxVisibleColumns": { + "maximum": 10, + "minimum": 1, + "type": "number" + }, + "MaxVisibleRows": { + "maximum": 10, + "minimum": 1, + "type": "number" + }, + "PanelConfiguration": { + "$ref": "#/definitions/PanelConfiguration" + }, + "XAxis": { + "$ref": "#/definitions/SmallMultiplesAxisProperties" + }, + "YAxis": { + "$ref": "#/definitions/SmallMultiplesAxisProperties" + } + }, + "type": "object" + }, + "SortDirection": { + "enum": [ + "ASC", + "DESC" + ], + "type": "string" + }, + "Spacing": { + "additionalProperties": false, + "properties": { + "Bottom": { + "description": "String based length that is composed of value and unit", + "type": "string" + }, + "Left": { + "description": "String based length that is composed of value and unit", + "type": "string" + }, + "Right": { + "description": "String based length that is composed of value and unit", + "type": "string" + }, + "Top": { + "description": "String based length that is composed of value and unit", + "type": "string" + } + }, + "type": "object" + }, + "SpatialStaticFile": { + "additionalProperties": false, + "properties": { + "Source": { + "$ref": "#/definitions/StaticFileSource" + }, + "StaticFileId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + } + }, + "required": [ + "StaticFileId" + ], + "type": "object" + }, + "SpecialValue": { + "enum": [ + "EMPTY", + "NULL", + "OTHER" + ], + "type": "string" + }, + "StaticFile": { + "additionalProperties": false, + "properties": { + "ImageStaticFile": { + "$ref": "#/definitions/ImageStaticFile" + }, + "SpatialStaticFile": { + "$ref": "#/definitions/SpatialStaticFile" + } + }, + "type": "object" + }, + "StaticFileS3SourceOptions": { + "additionalProperties": false, + "properties": { + "BucketName": { + "type": "string" + }, + "ObjectKey": { + "type": "string" + }, + "Region": { + "type": "string" + } + }, + "required": [ + "BucketName", + "ObjectKey", + "Region" + ], + "type": "object" + }, + "StaticFileSource": { + "additionalProperties": false, + "properties": { + "S3Options": { + "$ref": "#/definitions/StaticFileS3SourceOptions" + }, + "UrlOptions": { + "$ref": "#/definitions/StaticFileUrlSourceOptions" + } + }, + "type": "object" + }, + "StaticFileUrlSourceOptions": { + "additionalProperties": false, + "properties": { + "Url": { + "type": "string" + } + }, + "required": [ + "Url" + ], + "type": "object" + }, + "StringDefaultValues": { + "additionalProperties": false, + "properties": { + "DynamicValue": { + "$ref": "#/definitions/DynamicDefaultValue" + }, + "StaticValues": { + "items": { + "type": "string" + }, + "maxItems": 50000, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "StringFormatConfiguration": { + "additionalProperties": false, + "properties": { + "NullValueFormatConfiguration": { + "$ref": "#/definitions/NullValueFormatConfiguration" + }, + "NumericFormatConfiguration": { + "$ref": "#/definitions/NumericFormatConfiguration" + } + }, + "type": "object" + }, + "StringParameter": { + "additionalProperties": false, + "description": "A string parameter.
", + "properties": { + "Name": { + "description": "A display name for a string parameter.
", + "pattern": "\\S", + "type": "string" + }, + "Values": { + "description": "The values of a string parameter.
", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "Name", + "Values" + ], + "type": "object" + }, + "StringParameterDeclaration": { + "additionalProperties": false, + "properties": { + "DefaultValues": { + "$ref": "#/definitions/StringDefaultValues" + }, + "MappedDataSetParameters": { + "items": { + "$ref": "#/definitions/MappedDataSetParameter" + }, + "maxItems": 150, + "minItems": 0, + "type": "array" + }, + "Name": { + "maxLength": 2048, + "minLength": 1, + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + "ParameterValueType": { + "$ref": "#/definitions/ParameterValueType" + }, + "ValueWhenUnset": { + "$ref": "#/definitions/StringValueWhenUnsetConfiguration" + } + }, + "required": [ + "Name", + "ParameterValueType" + ], + "type": "object" + }, + "StringValueWhenUnsetConfiguration": { + "additionalProperties": false, + "properties": { + "CustomValue": { + "type": "string" + }, + "ValueWhenUnsetOption": { + "$ref": "#/definitions/ValueWhenUnsetOption" + } + }, + "type": "object" + }, + "StyledCellType": { + "enum": [ + "TOTAL", + "METRIC_HEADER", + "VALUE" + ], + "type": "string" + }, + "SubtotalOptions": { + "additionalProperties": false, + "properties": { + "CustomLabel": { + "type": "string" + }, + "FieldLevel": { + "$ref": "#/definitions/PivotTableSubtotalLevel" + }, + "FieldLevelOptions": { + "items": { + "$ref": "#/definitions/PivotTableFieldSubtotalOptions" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + }, + "MetricHeaderCellStyle": { + "$ref": "#/definitions/TableCellStyle" + }, + "StyleTargets": { + "items": { + "$ref": "#/definitions/TableStyleTarget" + }, + "maxItems": 3, + "minItems": 0, + "type": "array" + }, + "TotalCellStyle": { + "$ref": "#/definitions/TableCellStyle" + }, + "TotalsVisibility": { + "$ref": "#/definitions/Visibility" + }, + "ValueCellStyle": { + "$ref": "#/definitions/TableCellStyle" + } + }, + "type": "object" + }, + "TableAggregatedFieldWells": { + "additionalProperties": false, + "properties": { + "GroupBy": { + "items": { + "$ref": "#/definitions/DimensionField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "Values": { + "items": { + "$ref": "#/definitions/MeasureField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "TableBorderOptions": { + "additionalProperties": false, + "properties": { + "Color": { + "pattern": "^#[A-F0-9]{6}$", + "type": "string" + }, + "Style": { + "$ref": "#/definitions/TableBorderStyle" + }, + "Thickness": { + "maximum": 4, + "minimum": 1, + "type": "number" + } + }, + "type": "object" + }, + "TableBorderStyle": { + "enum": [ + "NONE", + "SOLID" + ], + "type": "string" + }, + "TableCellConditionalFormatting": { + "additionalProperties": false, + "properties": { + "FieldId": { + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "TextFormat": { + "$ref": "#/definitions/TextConditionalFormat" + } + }, + "required": [ + "FieldId" + ], + "type": "object" + }, + "TableCellImageScalingConfiguration": { + "enum": [ + "FIT_TO_CELL_HEIGHT", + "FIT_TO_CELL_WIDTH", + "DO_NOT_SCALE" + ], + "type": "string" + }, + "TableCellImageSizingConfiguration": { + "additionalProperties": false, + "properties": { + "TableCellImageScalingConfiguration": { + "$ref": "#/definitions/TableCellImageScalingConfiguration" + } + }, + "type": "object" + }, + "TableCellStyle": { + "additionalProperties": false, + "properties": { + "BackgroundColor": { + "pattern": "^#[A-F0-9]{6}$", + "type": "string" + }, + "Border": { + "$ref": "#/definitions/GlobalTableBorderOptions" + }, + "FontConfiguration": { + "$ref": "#/definitions/FontConfiguration" + }, + "Height": { + "maximum": 500, + "minimum": 8, + "type": "number" + }, + "HorizontalTextAlignment": { + "$ref": "#/definitions/HorizontalTextAlignment" + }, + "TextWrap": { + "$ref": "#/definitions/TextWrap" + }, + "VerticalTextAlignment": { + "$ref": "#/definitions/VerticalTextAlignment" + }, + "Visibility": { + "$ref": "#/definitions/Visibility" + } + }, + "type": "object" + }, + "TableConditionalFormatting": { + "additionalProperties": false, + "properties": { + "ConditionalFormattingOptions": { + "items": { + "$ref": "#/definitions/TableConditionalFormattingOption" + }, + "maxItems": 500, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "TableConditionalFormattingOption": { + "additionalProperties": false, + "properties": { + "Cell": { + "$ref": "#/definitions/TableCellConditionalFormatting" + }, + "Row": { + "$ref": "#/definitions/TableRowConditionalFormatting" + } + }, + "type": "object" + }, + "TableConfiguration": { + "additionalProperties": false, + "properties": { + "FieldOptions": { + "$ref": "#/definitions/TableFieldOptions" + }, + "FieldWells": { + "$ref": "#/definitions/TableFieldWells" + }, + "Interactions": { + "$ref": "#/definitions/VisualInteractionOptions" + }, + "PaginatedReportOptions": { + "$ref": "#/definitions/TablePaginatedReportOptions" + }, + "SortConfiguration": { + "$ref": "#/definitions/TableSortConfiguration" + }, + "TableInlineVisualizations": { + "items": { + "$ref": "#/definitions/TableInlineVisualization" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "TableOptions": { + "$ref": "#/definitions/TableOptions" + }, + "TotalOptions": { + "$ref": "#/definitions/TotalOptions" + } + }, + "type": "object" + }, + "TableFieldCustomIconContent": { + "additionalProperties": false, + "properties": { + "Icon": { + "$ref": "#/definitions/TableFieldIconSetType" + } + }, + "type": "object" + }, + "TableFieldCustomTextContent": { + "additionalProperties": false, + "properties": { + "FontConfiguration": { + "$ref": "#/definitions/FontConfiguration" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "FontConfiguration" + ], + "type": "object" + }, + "TableFieldIconSetType": { + "enum": [ + "LINK" + ], + "type": "string" + }, + "TableFieldImageConfiguration": { + "additionalProperties": false, + "properties": { + "SizingOptions": { + "$ref": "#/definitions/TableCellImageSizingConfiguration" + } + }, + "type": "object" + }, + "TableFieldLinkConfiguration": { + "additionalProperties": false, + "properties": { + "Content": { + "$ref": "#/definitions/TableFieldLinkContentConfiguration" + }, + "Target": { + "$ref": "#/definitions/URLTargetConfiguration" + } + }, + "required": [ + "Content", + "Target" + ], + "type": "object" + }, + "TableFieldLinkContentConfiguration": { + "additionalProperties": false, + "properties": { + "CustomIconContent": { + "$ref": "#/definitions/TableFieldCustomIconContent" + }, + "CustomTextContent": { + "$ref": "#/definitions/TableFieldCustomTextContent" + } + }, + "type": "object" + }, + "TableFieldOption": { + "additionalProperties": false, + "properties": { + "CustomLabel": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "FieldId": { + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "URLStyling": { + "$ref": "#/definitions/TableFieldURLConfiguration" + }, + "Visibility": { + "$ref": "#/definitions/Visibility" + }, + "Width": { + "description": "String based length that is composed of value and unit in px", + "type": "string" + } + }, + "required": [ + "FieldId" + ], + "type": "object" + }, + "TableFieldOptions": { + "additionalProperties": false, + "properties": { + "Order": { + "items": { + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "PinnedFieldOptions": { + "$ref": "#/definitions/TablePinnedFieldOptions" + }, + "SelectedFieldOptions": { + "items": { + "$ref": "#/definitions/TableFieldOption" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + }, + "TransposedTableOptions": { + "items": { + "$ref": "#/definitions/TransposedTableOption" + }, + "maxItems": 10001, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "TableFieldURLConfiguration": { + "additionalProperties": false, + "properties": { + "ImageConfiguration": { + "$ref": "#/definitions/TableFieldImageConfiguration" + }, + "LinkConfiguration": { + "$ref": "#/definitions/TableFieldLinkConfiguration" + } + }, + "type": "object" + }, + "TableFieldWells": { + "additionalProperties": false, + "properties": { + "TableAggregatedFieldWells": { + "$ref": "#/definitions/TableAggregatedFieldWells" + }, + "TableUnaggregatedFieldWells": { + "$ref": "#/definitions/TableUnaggregatedFieldWells" + } + }, + "type": "object" + }, + "TableInlineVisualization": { + "additionalProperties": false, + "properties": { + "DataBars": { + "$ref": "#/definitions/DataBarsOptions" + } + }, + "type": "object" + }, + "TableOptions": { + "additionalProperties": false, + "properties": { + "CellStyle": { + "$ref": "#/definitions/TableCellStyle" + }, + "HeaderStyle": { + "$ref": "#/definitions/TableCellStyle" + }, + "Orientation": { + "$ref": "#/definitions/TableOrientation" + }, + "RowAlternateColorOptions": { + "$ref": "#/definitions/RowAlternateColorOptions" + } + }, + "type": "object" + }, + "TableOrientation": { + "enum": [ + "VERTICAL", + "HORIZONTAL" + ], + "type": "string" + }, + "TablePaginatedReportOptions": { + "additionalProperties": false, + "properties": { + "OverflowColumnHeaderVisibility": { + "$ref": "#/definitions/Visibility" + }, + "VerticalOverflowVisibility": { + "$ref": "#/definitions/Visibility" + } + }, + "type": "object" + }, + "TablePinnedFieldOptions": { + "additionalProperties": false, + "properties": { + "PinnedLeftFields": { + "items": { + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "maxItems": 201, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "TableRowConditionalFormatting": { + "additionalProperties": false, + "properties": { + "BackgroundColor": { + "$ref": "#/definitions/ConditionalFormattingColor" + }, + "TextColor": { + "$ref": "#/definitions/ConditionalFormattingColor" + } + }, + "type": "object" + }, + "TableSideBorderOptions": { + "additionalProperties": false, + "properties": { + "Bottom": { + "$ref": "#/definitions/TableBorderOptions" + }, + "InnerHorizontal": { + "$ref": "#/definitions/TableBorderOptions" + }, + "InnerVertical": { + "$ref": "#/definitions/TableBorderOptions" + }, + "Left": { + "$ref": "#/definitions/TableBorderOptions" + }, + "Right": { + "$ref": "#/definitions/TableBorderOptions" + }, + "Top": { + "$ref": "#/definitions/TableBorderOptions" + } + }, + "type": "object" + }, + "TableSortConfiguration": { + "additionalProperties": false, + "properties": { + "PaginationConfiguration": { + "$ref": "#/definitions/PaginationConfiguration" + }, + "RowSort": { + "items": { + "$ref": "#/definitions/FieldSortOptions" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "TableStyleTarget": { + "additionalProperties": false, + "properties": { + "CellType": { + "$ref": "#/definitions/StyledCellType" + } + }, + "required": [ + "CellType" + ], + "type": "object" + }, + "TableTotalsPlacement": { + "enum": [ + "START", + "END", + "AUTO" + ], + "type": "string" + }, + "TableTotalsScrollStatus": { + "enum": [ + "PINNED", + "SCROLLED" + ], + "type": "string" + }, + "TableUnaggregatedFieldWells": { + "additionalProperties": false, + "properties": { + "Values": { + "items": { + "$ref": "#/definitions/UnaggregatedField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "TableVisual": { + "additionalProperties": false, + "properties": { + "Actions": { + "items": { + "$ref": "#/definitions/VisualCustomAction" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + }, + "ChartConfiguration": { + "$ref": "#/definitions/TableConfiguration" + }, + "ConditionalFormatting": { + "$ref": "#/definitions/TableConditionalFormatting" + }, + "Subtitle": { + "$ref": "#/definitions/VisualSubtitleLabelOptions" + }, + "Title": { + "$ref": "#/definitions/VisualTitleLabelOptions" + }, + "VisualContentAltText": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "VisualId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + } + }, + "required": [ + "VisualId" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "description": "The key or keys of the key-value pairs for the resource tag or tags assigned to the\n resource.
", + "properties": { + "Key": { + "description": "Tag key.
", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "Tag value.
", + "maxLength": 256, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "TargetVisualOptions": { + "enum": [ + "ALL_VISUALS" + ], + "type": "string" + }, + "TextAreaControlDisplayOptions": { + "additionalProperties": false, + "properties": { + "InfoIconLabelOptions": { + "$ref": "#/definitions/SheetControlInfoIconLabelOptions" + }, + "PlaceholderOptions": { + "$ref": "#/definitions/TextControlPlaceholderOptions" + }, + "TitleOptions": { + "$ref": "#/definitions/LabelOptions" + } + }, + "type": "object" + }, + "TextConditionalFormat": { + "additionalProperties": false, + "properties": { + "BackgroundColor": { + "$ref": "#/definitions/ConditionalFormattingColor" + }, + "Icon": { + "$ref": "#/definitions/ConditionalFormattingIcon" + }, + "TextColor": { + "$ref": "#/definitions/ConditionalFormattingColor" + } + }, + "type": "object" + }, + "TextControlPlaceholderOptions": { + "additionalProperties": false, + "properties": { + "Visibility": { + "$ref": "#/definitions/Visibility" + } + }, + "type": "object" + }, + "TextFieldControlDisplayOptions": { + "additionalProperties": false, + "properties": { + "InfoIconLabelOptions": { + "$ref": "#/definitions/SheetControlInfoIconLabelOptions" + }, + "PlaceholderOptions": { + "$ref": "#/definitions/TextControlPlaceholderOptions" + }, + "TitleOptions": { + "$ref": "#/definitions/LabelOptions" + } + }, + "type": "object" + }, + "TextWrap": { + "enum": [ + "NONE", + "WRAP" + ], + "type": "string" + }, + "ThousandSeparatorOptions": { + "additionalProperties": false, + "properties": { + "GroupingStyle": { + "$ref": "#/definitions/DigitGroupingStyle" + }, + "Symbol": { + "$ref": "#/definitions/NumericSeparatorSymbol" + }, + "Visibility": { + "$ref": "#/definitions/Visibility" + } + }, + "type": "object" + }, + "TimeBasedForecastProperties": { + "additionalProperties": false, + "properties": { + "LowerBoundary": { + "default": null, + "type": "number" + }, + "PeriodsBackward": { + "maximum": 1000, + "minimum": 0, + "type": "number" + }, + "PeriodsForward": { + "maximum": 1000, + "minimum": 1, + "type": "number" + }, + "PredictionInterval": { + "maximum": 95, + "minimum": 50, + "type": "number" + }, + "Seasonality": { + "maximum": 180, + "minimum": 1, + "type": "number" + }, + "UpperBoundary": { + "default": null, + "type": "number" + } + }, + "type": "object" + }, + "TimeEqualityFilter": { + "additionalProperties": false, + "properties": { + "Column": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "DefaultFilterControlConfiguration": { + "$ref": "#/definitions/DefaultFilterControlConfiguration" + }, + "FilterId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "ParameterName": { + "maxLength": 2048, + "minLength": 1, + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + "RollingDate": { + "$ref": "#/definitions/RollingDateConfiguration" + }, + "TimeGranularity": { + "$ref": "#/definitions/TimeGranularity" + }, + "Value": { + "format": "date-time", + "type": "string" + } + }, + "required": [ + "Column", + "FilterId" + ], + "type": "object" + }, + "TimeGranularity": { + "enum": [ + "YEAR", + "QUARTER", + "MONTH", + "WEEK", + "DAY", + "HOUR", + "MINUTE", + "SECOND", + "MILLISECOND" + ], + "type": "string" + }, + "TimeRangeDrillDownFilter": { + "additionalProperties": false, + "properties": { + "Column": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "RangeMaximum": { + "format": "date-time", + "type": "string" + }, + "RangeMinimum": { + "format": "date-time", + "type": "string" + }, + "TimeGranularity": { + "$ref": "#/definitions/TimeGranularity" + } + }, + "required": [ + "Column", + "RangeMaximum", + "RangeMinimum", + "TimeGranularity" + ], + "type": "object" + }, + "TimeRangeFilter": { + "additionalProperties": false, + "properties": { + "Column": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "DefaultFilterControlConfiguration": { + "$ref": "#/definitions/DefaultFilterControlConfiguration" + }, + "ExcludePeriodConfiguration": { + "$ref": "#/definitions/ExcludePeriodConfiguration" + }, + "FilterId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "IncludeMaximum": { + "default": null, + "type": "boolean" + }, + "IncludeMinimum": { + "default": null, + "type": "boolean" + }, + "NullOption": { + "$ref": "#/definitions/FilterNullOption" + }, + "RangeMaximumValue": { + "$ref": "#/definitions/TimeRangeFilterValue" + }, + "RangeMinimumValue": { + "$ref": "#/definitions/TimeRangeFilterValue" + }, + "TimeGranularity": { + "$ref": "#/definitions/TimeGranularity" + } + }, + "required": [ + "Column", + "FilterId", + "NullOption" + ], + "type": "object" + }, + "TimeRangeFilterValue": { + "additionalProperties": false, + "properties": { + "Parameter": { + "maxLength": 2048, + "minLength": 1, + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + "RollingDate": { + "$ref": "#/definitions/RollingDateConfiguration" + }, + "StaticValue": { + "format": "date-time", + "type": "string" + } + }, + "type": "object" + }, + "TooltipItem": { + "additionalProperties": false, + "properties": { + "ColumnTooltipItem": { + "$ref": "#/definitions/ColumnTooltipItem" + }, + "FieldTooltipItem": { + "$ref": "#/definitions/FieldTooltipItem" + } + }, + "type": "object" + }, + "TooltipOptions": { + "additionalProperties": false, + "properties": { + "FieldBasedTooltip": { + "$ref": "#/definitions/FieldBasedTooltip" + }, + "SelectedTooltipType": { + "$ref": "#/definitions/SelectedTooltipType" + }, + "TooltipVisibility": { + "$ref": "#/definitions/Visibility" + } + }, + "type": "object" + }, + "TooltipTarget": { + "enum": [ + "BOTH", + "BAR", + "LINE" + ], + "type": "string" + }, + "TooltipTitleType": { + "enum": [ + "NONE", + "PRIMARY_VALUE" + ], + "type": "string" + }, + "TopBottomComputationType": { + "enum": [ + "TOP", + "BOTTOM" + ], + "type": "string" + }, + "TopBottomFilter": { + "additionalProperties": false, + "properties": { + "AggregationSortConfigurations": { + "items": { + "$ref": "#/definitions/AggregationSortConfiguration" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + }, + "Column": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "DefaultFilterControlConfiguration": { + "$ref": "#/definitions/DefaultFilterControlConfiguration" + }, + "FilterId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "Limit": { + "default": null, + "type": "number" + }, + "ParameterName": { + "maxLength": 2048, + "minLength": 1, + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + "TimeGranularity": { + "$ref": "#/definitions/TimeGranularity" + } + }, + "required": [ + "AggregationSortConfigurations", + "Column", + "FilterId" + ], + "type": "object" + }, + "TopBottomMoversComputation": { + "additionalProperties": false, + "properties": { + "Category": { + "$ref": "#/definitions/DimensionField" + }, + "ComputationId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "MoverSize": { + "default": 0, + "maximum": 20, + "minimum": 1, + "type": "number" + }, + "Name": { + "type": "string" + }, + "SortOrder": { + "$ref": "#/definitions/TopBottomSortOrder" + }, + "Time": { + "$ref": "#/definitions/DimensionField" + }, + "Type": { + "$ref": "#/definitions/TopBottomComputationType" + }, + "Value": { + "$ref": "#/definitions/MeasureField" + } + }, + "required": [ + "ComputationId", + "Type" + ], + "type": "object" + }, + "TopBottomRankedComputation": { + "additionalProperties": false, + "properties": { + "Category": { + "$ref": "#/definitions/DimensionField" + }, + "ComputationId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "Name": { + "type": "string" + }, + "ResultSize": { + "default": 0, + "maximum": 20, + "minimum": 1, + "type": "number" + }, + "Type": { + "$ref": "#/definitions/TopBottomComputationType" + }, + "Value": { + "$ref": "#/definitions/MeasureField" + } + }, + "required": [ + "ComputationId", + "Type" + ], + "type": "object" + }, + "TopBottomSortOrder": { + "enum": [ + "PERCENT_DIFFERENCE", + "ABSOLUTE_DIFFERENCE" + ], + "type": "string" + }, + "TotalAggregationComputation": { + "additionalProperties": false, + "properties": { + "ComputationId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "Name": { + "type": "string" + }, + "Value": { + "$ref": "#/definitions/MeasureField" + } + }, + "required": [ + "ComputationId" + ], + "type": "object" + }, + "TotalAggregationFunction": { + "additionalProperties": false, + "properties": { + "SimpleTotalAggregationFunction": { + "$ref": "#/definitions/SimpleTotalAggregationFunction" + } + }, + "type": "object" + }, + "TotalAggregationOption": { + "additionalProperties": false, + "properties": { + "FieldId": { + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "TotalAggregationFunction": { + "$ref": "#/definitions/TotalAggregationFunction" + } + }, + "required": [ + "FieldId", + "TotalAggregationFunction" + ], + "type": "object" + }, + "TotalOptions": { + "additionalProperties": false, + "properties": { + "CustomLabel": { + "type": "string" + }, + "Placement": { + "$ref": "#/definitions/TableTotalsPlacement" + }, + "ScrollStatus": { + "$ref": "#/definitions/TableTotalsScrollStatus" + }, + "TotalAggregationOptions": { + "items": { + "$ref": "#/definitions/TotalAggregationOption" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "TotalCellStyle": { + "$ref": "#/definitions/TableCellStyle" + }, + "TotalsVisibility": { + "$ref": "#/definitions/Visibility" + } + }, + "type": "object" + }, + "TransposedColumnType": { + "enum": [ + "ROW_HEADER_COLUMN", + "VALUE_COLUMN" + ], + "type": "string" + }, + "TransposedTableOption": { + "additionalProperties": false, + "properties": { + "ColumnIndex": { + "maximum": 9999, + "minimum": 0, + "type": "number" + }, + "ColumnType": { + "$ref": "#/definitions/TransposedColumnType" + }, + "ColumnWidth": { + "description": "String based length that is composed of value and unit in px", + "type": "string" + } + }, + "required": [ + "ColumnType" + ], + "type": "object" + }, + "TreeMapAggregatedFieldWells": { + "additionalProperties": false, + "properties": { + "Colors": { + "items": { + "$ref": "#/definitions/MeasureField" + }, + "maxItems": 1, + "minItems": 0, + "type": "array" + }, + "Groups": { + "items": { + "$ref": "#/definitions/DimensionField" + }, + "maxItems": 1, + "minItems": 0, + "type": "array" + }, + "Sizes": { + "items": { + "$ref": "#/definitions/MeasureField" + }, + "maxItems": 1, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "TreeMapConfiguration": { + "additionalProperties": false, + "properties": { + "ColorLabelOptions": { + "$ref": "#/definitions/ChartAxisLabelOptions" + }, + "ColorScale": { + "$ref": "#/definitions/ColorScale" + }, + "DataLabels": { + "$ref": "#/definitions/DataLabelOptions" + }, + "FieldWells": { + "$ref": "#/definitions/TreeMapFieldWells" + }, + "GroupLabelOptions": { + "$ref": "#/definitions/ChartAxisLabelOptions" + }, + "Interactions": { + "$ref": "#/definitions/VisualInteractionOptions" + }, + "Legend": { + "$ref": "#/definitions/LegendOptions" + }, + "SizeLabelOptions": { + "$ref": "#/definitions/ChartAxisLabelOptions" + }, + "SortConfiguration": { + "$ref": "#/definitions/TreeMapSortConfiguration" + }, + "Tooltip": { + "$ref": "#/definitions/TooltipOptions" + } + }, + "type": "object" + }, + "TreeMapFieldWells": { + "additionalProperties": false, + "properties": { + "TreeMapAggregatedFieldWells": { + "$ref": "#/definitions/TreeMapAggregatedFieldWells" + } + }, + "type": "object" + }, + "TreeMapSortConfiguration": { + "additionalProperties": false, + "properties": { + "TreeMapGroupItemsLimitConfiguration": { + "$ref": "#/definitions/ItemsLimitConfiguration" + }, + "TreeMapSort": { + "items": { + "$ref": "#/definitions/FieldSortOptions" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "TreeMapVisual": { + "additionalProperties": false, + "properties": { + "Actions": { + "items": { + "$ref": "#/definitions/VisualCustomAction" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + }, + "ChartConfiguration": { + "$ref": "#/definitions/TreeMapConfiguration" + }, + "ColumnHierarchies": { + "items": { + "$ref": "#/definitions/ColumnHierarchy" + }, + "maxItems": 2, + "minItems": 0, + "type": "array" + }, + "Subtitle": { + "$ref": "#/definitions/VisualSubtitleLabelOptions" + }, + "Title": { + "$ref": "#/definitions/VisualTitleLabelOptions" + }, + "VisualContentAltText": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "VisualId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + } + }, + "required": [ + "VisualId" + ], + "type": "object" + }, + "TrendArrowOptions": { + "additionalProperties": false, + "properties": { + "Visibility": { + "$ref": "#/definitions/Visibility" + } + }, + "type": "object" + }, + "URLTargetConfiguration": { + "enum": [ + "NEW_TAB", + "NEW_WINDOW", + "SAME_TAB" + ], + "type": "string" + }, + "UnaggregatedField": { + "additionalProperties": false, + "properties": { + "Column": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "FieldId": { + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "FormatConfiguration": { + "$ref": "#/definitions/FormatConfiguration" + } + }, + "required": [ + "Column", + "FieldId" + ], + "type": "object" + }, + "UniqueValuesComputation": { + "additionalProperties": false, + "properties": { + "Category": { + "$ref": "#/definitions/DimensionField" + }, + "ComputationId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "Name": { + "type": "string" + } + }, + "required": [ + "ComputationId" + ], + "type": "object" + }, + "ValidationStrategy": { + "additionalProperties": false, + "description": "The option to relax the validation that is required to create and update analyses, dashboards, and templates with definition objects. When you set this value to LENIENT, validation is skipped for specific errors.
The Amazon Resource Name (ARN) of the resource.
", + "type": "string" + }, + "AwsAccountId": { + "maxLength": 12, + "minLength": 12, + "pattern": "^[0-9]{12}$", + "type": "string" + }, + "CreatedTime": { + "description": "The time that this dashboard was created.
", + "format": "date-time", + "type": "string" + }, + "DashboardId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "DashboardPublishOptions": { + "$ref": "#/definitions/DashboardPublishOptions" + }, + "Definition": { + "$ref": "#/definitions/DashboardVersionDefinition" + }, + "FolderArns": { + "items": { + "type": "string" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + }, + "LastPublishedTime": { + "description": "The last time that this dashboard was published.
", + "format": "date-time", + "type": "string" + }, + "LastUpdatedTime": { + "description": "The last time that this dashboard was updated.
", + "format": "date-time", + "type": "string" + }, + "LinkEntities": { + "items": { + "maxLength": 1024, + "minLength": 1, + "pattern": "^arn:aws[\\w\\-]*:quicksight:[\\w\\-]+:\\d+:analysis/[\\w\\-]{1,512}$", + "type": "string" + }, + "maxItems": 5, + "minItems": 0, + "type": "array" + }, + "LinkSharingConfiguration": { + "$ref": "#/definitions/LinkSharingConfiguration" + }, + "Name": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "Parameters": { + "$ref": "#/definitions/Parameters" + }, + "Permissions": { + "items": { + "$ref": "#/definitions/ResourcePermission" + }, + "maxItems": 64, + "minItems": 1, + "type": "array" + }, + "SourceEntity": { + "$ref": "#/definitions/DashboardSourceEntity" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 200, + "minItems": 1, + "type": "array" + }, + "ThemeArn": { + "type": "string" + }, + "ValidationStrategy": { + "$ref": "#/definitions/ValidationStrategy" + }, + "Version": { + "$ref": "#/definitions/DashboardVersion" + }, + "VersionDescription": { + "maxLength": 512, + "minLength": 1, + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/CreatedTime", + "/properties/LastPublishedTime", + "/properties/LastUpdatedTime", + "/properties/Version" + ], + "required": [ + "AwsAccountId", + "DashboardId", + "Name" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-quicksight", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "quicksight:TagResource", + "quicksight:UntagResource", + "quicksight:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::QuickSight::Dashboard", + "writeOnlyProperties": [ + "/properties/DashboardPublishOptions", + "/properties/Definition", + "/properties/LinkSharingConfiguration", + "/properties/Parameters", + "/properties/SourceEntity", + "/properties/ThemeArn", + "/properties/VersionDescription", + "/properties/ValidationStrategy", + "/properties/FolderArns" + ] +} diff --git a/src/schema/aws-quicksight-dataset.json b/src/schema/aws-quicksight-dataset.json new file mode 100644 index 00000000..705c9427 --- /dev/null +++ b/src/schema/aws-quicksight-dataset.json @@ -0,0 +1,1646 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/AwsAccountId", + "/properties/DataSetId" + ], + "definitions": { + "CalculatedColumn": { + "additionalProperties": false, + "description": "A calculated column for a dataset.
", + "properties": { + "ColumnId": { + "description": "A unique ID to identify a calculated column. During a dataset update, if the column ID\n of a calculated column matches that of an existing calculated column, Amazon QuickSight\n preserves the existing calculated column.
", + "maxLength": 64, + "minLength": 1, + "type": "string" + }, + "ColumnName": { + "description": "Column name.
", + "maxLength": 127, + "minLength": 1, + "type": "string" + }, + "Expression": { + "description": "An expression that defines the calculated column.
", + "maxLength": 250000, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "ColumnId", + "ColumnName", + "Expression" + ], + "type": "object" + }, + "CastColumnTypeOperation": { + "additionalProperties": false, + "description": "A transform operation that casts a column to a different type.
", + "properties": { + "ColumnName": { + "description": "Column name.
", + "maxLength": 127, + "minLength": 1, + "type": "string" + }, + "Format": { + "description": "When casting a column from string to datetime type, you can supply a string in a\n format supported by Amazon QuickSight to denote the source data format.
", + "maxLength": 32, + "minLength": 0, + "type": "string" + }, + "NewColumnType": { + "$ref": "#/definitions/ColumnDataType" + }, + "SubType": { + "$ref": "#/definitions/ColumnDataSubType" + } + }, + "required": [ + "ColumnName", + "NewColumnType" + ], + "type": "object" + }, + "ColumnDataSubType": { + "enum": [ + "FLOAT", + "FIXED" + ], + "type": "string" + }, + "ColumnDataType": { + "enum": [ + "STRING", + "INTEGER", + "DECIMAL", + "DATETIME" + ], + "type": "string" + }, + "ColumnDescription": { + "additionalProperties": false, + "description": "Metadata that contains a description for a column.
", + "properties": { + "Text": { + "description": "The text of a description for a column.
", + "maxLength": 500, + "minLength": 0, + "type": "string" + } + }, + "type": "object" + }, + "ColumnGroup": { + "additionalProperties": false, + "description": "Groupings of columns that work together in certain Amazon QuickSight features. This is\n a variant type structure. For this structure to be valid, only one of the attributes can\n be non-null.
", + "properties": { + "GeoSpatialColumnGroup": { + "$ref": "#/definitions/GeoSpatialColumnGroup" + } + }, + "type": "object" + }, + "ColumnLevelPermissionRule": { + "additionalProperties": false, + "description": "A rule defined to grant access on one or more restricted columns.\n Each dataset can have multiple rules.\n To create a restricted column, you add it to one or more rules.\n Each rule must contain at least one column and at least one user or group.\n To be able to see a restricted column, a user or group needs to be added\n to a rule for that column.
", + "properties": { + "ColumnNames": { + "description": "An array of column names.
", + "items": { + "type": "string" + }, + "minItems": 1, + "type": "array" + }, + "Principals": { + "description": "An array of Amazon Resource Names (ARNs) for Amazon QuickSight users or groups.
", + "items": { + "type": "string" + }, + "maxItems": 100, + "minItems": 1, + "type": "array" + } + }, + "type": "object" + }, + "ColumnTag": { + "additionalProperties": false, + "description": "A tag for a column in a\n \n TagColumnOperation\n \n structure. This is a\n variant type structure. For this structure to be valid, only one of the attributes can\n be non-null.
A transform operation that creates calculated columns. Columns created in one such\n operation form a lexical closure.
", + "properties": { + "Columns": { + "description": "Calculated columns to create.
", + "items": { + "$ref": "#/definitions/CalculatedColumn" + }, + "maxItems": 128, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "CustomSql": { + "additionalProperties": false, + "description": "A physical table type built from the results of the custom SQL query.
", + "properties": { + "Columns": { + "description": "The column schema from the SQL query result set.
", + "items": { + "$ref": "#/definitions/InputColumn" + }, + "maxItems": 2048, + "minItems": 1, + "type": "array" + }, + "DataSourceArn": { + "description": "The Amazon Resource Name (ARN) of the data source.
", + "type": "string" + }, + "Name": { + "description": "A display name for the SQL query result.
", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "SqlQuery": { + "description": "The SQL query.
", + "maxLength": 168000, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "DataSourceArn", + "Name", + "SqlQuery" + ], + "type": "object" + }, + "DataSetImportMode": { + "enum": [ + "SPICE", + "DIRECT_QUERY" + ], + "type": "string" + }, + "DataSetRefreshProperties": { + "additionalProperties": false, + "description": "The refresh properties of a dataset.
", + "properties": { + "FailureConfiguration": { + "$ref": "#/definitions/RefreshFailureConfiguration" + }, + "RefreshConfiguration": { + "$ref": "#/definitions/RefreshConfiguration" + } + }, + "type": "object" + }, + "DataSetUsageConfiguration": { + "additionalProperties": false, + "description": "The usage configuration to apply to child datasets that reference this dataset as a source.
", + "properties": { + "DisableUseAsDirectQuerySource": { + "default": false, + "description": "An option that controls whether a child dataset of a direct query can use this dataset as a source.
", + "type": "boolean" + }, + "DisableUseAsImportedSource": { + "default": false, + "description": "An option that controls whether a child dataset that's stored in QuickSight can use this dataset as a source.
", + "type": "boolean" + } + }, + "type": "object" + }, + "DataSetUseAs": { + "enum": [ + "RLS_RULES" + ], + "type": "string" + }, + "DatasetParameter": { + "additionalProperties": false, + "description": "A dataset parameter.
", + "properties": { + "DateTimeDatasetParameter": { + "$ref": "#/definitions/DateTimeDatasetParameter" + }, + "DecimalDatasetParameter": { + "$ref": "#/definitions/DecimalDatasetParameter" + }, + "IntegerDatasetParameter": { + "$ref": "#/definitions/IntegerDatasetParameter" + }, + "StringDatasetParameter": { + "$ref": "#/definitions/StringDatasetParameter" + } + }, + "type": "object" + }, + "DatasetParameterValueType": { + "enum": [ + "MULTI_VALUED", + "SINGLE_VALUED" + ], + "type": "string" + }, + "DateTimeDatasetParameter": { + "additionalProperties": false, + "description": "A date time parameter for a dataset.
", + "properties": { + "DefaultValues": { + "$ref": "#/definitions/DateTimeDatasetParameterDefaultValues" + }, + "Id": { + "description": "An identifier for the parameter that is created in the dataset.
", + "maxLength": 128, + "minLength": 1, + "pattern": "^[a-zA-Z0-9-]+$", + "type": "string" + }, + "Name": { + "description": "The name of the date time parameter that is created in the dataset.
", + "maxLength": 2048, + "minLength": 1, + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + "TimeGranularity": { + "$ref": "#/definitions/TimeGranularity" + }, + "ValueType": { + "$ref": "#/definitions/DatasetParameterValueType" + } + }, + "required": [ + "Id", + "Name", + "ValueType" + ], + "type": "object" + }, + "DateTimeDatasetParameterDefaultValues": { + "additionalProperties": false, + "description": "The default values of a date time parameter.
", + "properties": { + "StaticValues": { + "description": "A list of static default values for a given date time parameter.
", + "items": { + "description": "The default value for the date time parameter.
", + "type": "string" + }, + "maxItems": 32, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "DecimalDatasetParameter": { + "additionalProperties": false, + "description": "A decimal parameter for a dataset.
", + "properties": { + "DefaultValues": { + "$ref": "#/definitions/DecimalDatasetParameterDefaultValues" + }, + "Id": { + "description": "An identifier for the decimal parameter created in the dataset.
", + "maxLength": 128, + "minLength": 1, + "pattern": "^[a-zA-Z0-9-]+$", + "type": "string" + }, + "Name": { + "description": "The name of the decimal parameter that is created in the dataset.
", + "maxLength": 2048, + "minLength": 1, + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + "ValueType": { + "$ref": "#/definitions/DatasetParameterValueType" + } + }, + "required": [ + "Id", + "Name", + "ValueType" + ], + "type": "object" + }, + "DecimalDatasetParameterDefaultValues": { + "additionalProperties": false, + "description": "The default values of a decimal parameter.
", + "properties": { + "StaticValues": { + "description": "A list of static default values for a given decimal parameter.
", + "items": { + "default": 0, + "description": "The default value for the decimal parameter.
", + "type": "number" + }, + "maxItems": 32, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "FieldFolder": { + "additionalProperties": false, + "description": "A FieldFolder element is a folder that contains fields and nested subfolders.
", + "properties": { + "Columns": { + "description": "A folder has a list of columns. A column can only be in one folder.
", + "items": { + "type": "string" + }, + "maxItems": 5000, + "minItems": 0, + "type": "array" + }, + "Description": { + "description": "The description for a field folder.
", + "maxLength": 500, + "minLength": 0, + "type": "string" + } + }, + "type": "object" + }, + "FieldFolderMap": { + "additionalProperties": false, + "patternProperties": { + ".+": { + "$ref": "#/definitions/FieldFolder" + } + }, + "type": "object" + }, + "FileFormat": { + "enum": [ + "CSV", + "TSV", + "CLF", + "ELF", + "XLSX", + "JSON" + ], + "type": "string" + }, + "FilterOperation": { + "additionalProperties": false, + "description": "A transform operation that filters rows based on a condition.
", + "properties": { + "ConditionExpression": { + "description": "An expression that must evaluate to a Boolean value. Rows for which the expression\n evaluates to true are kept in the dataset.
", + "maxLength": 4096, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "ConditionExpression" + ], + "type": "object" + }, + "GeoSpatialColumnGroup": { + "additionalProperties": false, + "description": "Geospatial column group that denotes a hierarchy.
", + "properties": { + "Columns": { + "description": "Columns in this hierarchy.
", + "items": { + "maxLength": 127, + "minLength": 1, + "type": "string" + }, + "maxItems": 16, + "minItems": 1, + "type": "array" + }, + "CountryCode": { + "$ref": "#/definitions/GeoSpatialCountryCode" + }, + "Name": { + "description": "A display name for the hierarchy.
", + "maxLength": 64, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Columns", + "Name" + ], + "type": "object" + }, + "GeoSpatialCountryCode": { + "enum": [ + "US" + ], + "type": "string" + }, + "GeoSpatialDataRole": { + "enum": [ + "COUNTRY", + "STATE", + "COUNTY", + "CITY", + "POSTCODE", + "LONGITUDE", + "LATITUDE", + "POLITICAL1", + "CENSUS_TRACT", + "CENSUS_BLOCK_GROUP", + "CENSUS_BLOCK" + ], + "type": "string" + }, + "IncrementalRefresh": { + "additionalProperties": false, + "description": "The incremental refresh configuration for a dataset.
", + "properties": { + "LookbackWindow": { + "$ref": "#/definitions/LookbackWindow" + } + }, + "required": [ + "LookbackWindow" + ], + "type": "object" + }, + "IngestionWaitPolicy": { + "additionalProperties": false, + "description": "Wait policy to use when creating/updating dataset. Default is to wait for SPICE ingestion to finish with timeout of 36 hours.
", + "properties": { + "IngestionWaitTimeInHours": { + "default": 36, + "description": "The maximum time (in hours) to wait for Ingestion to complete. Default timeout is 36 hours.\n Applicable only when DataSetImportMode mode is set to SPICE and WaitForSpiceIngestion is set to true.
", + "maximum": 36, + "minimum": 1, + "type": "number" + }, + "WaitForSpiceIngestion": { + "default": true, + "description": "Wait for SPICE ingestion to finish to mark dataset creation/update successful. Default (true).\n Applicable only when DataSetImportMode mode is set to SPICE.
", + "type": "boolean" + } + }, + "type": "object" + }, + "InputColumn": { + "additionalProperties": false, + "description": "Metadata for a column that is used as the input of a transform operation.
", + "properties": { + "Name": { + "description": "The name of this column in the underlying data source.
", + "maxLength": 127, + "minLength": 1, + "type": "string" + }, + "SubType": { + "$ref": "#/definitions/ColumnDataSubType" + }, + "Type": { + "$ref": "#/definitions/InputColumnDataType" + } + }, + "required": [ + "Name", + "Type" + ], + "type": "object" + }, + "InputColumnDataType": { + "enum": [ + "STRING", + "INTEGER", + "DECIMAL", + "DATETIME", + "BIT", + "BOOLEAN", + "JSON" + ], + "type": "string" + }, + "IntegerDatasetParameter": { + "additionalProperties": false, + "description": "An integer parameter for a dataset.
", + "properties": { + "DefaultValues": { + "$ref": "#/definitions/IntegerDatasetParameterDefaultValues" + }, + "Id": { + "description": "An identifier for the integer parameter created in the dataset.
", + "maxLength": 128, + "minLength": 1, + "pattern": "^[a-zA-Z0-9-]+$", + "type": "string" + }, + "Name": { + "description": "The name of the integer parameter that is created in the dataset.
", + "maxLength": 2048, + "minLength": 1, + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + "ValueType": { + "$ref": "#/definitions/DatasetParameterValueType" + } + }, + "required": [ + "Id", + "Name", + "ValueType" + ], + "type": "object" + }, + "IntegerDatasetParameterDefaultValues": { + "additionalProperties": false, + "description": "The default values of an integer parameter.
", + "properties": { + "StaticValues": { + "description": "A list of static default values for a given integer parameter.
", + "items": { + "default": 0, + "description": "The default value for the integer parameter.
", + "type": "number" + }, + "maxItems": 32, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "JoinInstruction": { + "additionalProperties": false, + "description": "The instructions associated with a join.
", + "properties": { + "LeftJoinKeyProperties": { + "$ref": "#/definitions/JoinKeyProperties" + }, + "LeftOperand": { + "description": "The operand on the left side of a join.
", + "maxLength": 64, + "minLength": 1, + "pattern": "^[0-9a-zA-Z-]*$", + "type": "string" + }, + "OnClause": { + "description": "The join instructions provided in the ON clause of a join.
The operand on the right side of a join.
", + "maxLength": 64, + "minLength": 1, + "pattern": "^[0-9a-zA-Z-]*$", + "type": "string" + }, + "Type": { + "$ref": "#/definitions/JoinType" + } + }, + "required": [ + "LeftOperand", + "OnClause", + "RightOperand", + "Type" + ], + "type": "object" + }, + "JoinKeyProperties": { + "additionalProperties": false, + "description": "Properties associated with the columns participating in a join.
", + "properties": { + "UniqueKey": { + "description": "A value that indicates that a row in a table is uniquely identified by the columns in\n a join key. This is used by Amazon QuickSight to optimize query performance.
", + "type": "boolean" + } + }, + "type": "object" + }, + "JoinType": { + "enum": [ + "INNER", + "OUTER", + "LEFT", + "RIGHT" + ], + "type": "string" + }, + "LogicalTable": { + "additionalProperties": false, + "description": "A logical table is a unit that joins and that data\n transformations operate on. A logical table has a source, which can be either a physical\n table or result of a join. When a logical table points to a physical table, the logical\n table acts as a mutable copy of that physical table through transform operations.
", + "properties": { + "Alias": { + "description": "A display name for the logical table.
", + "maxLength": 64, + "minLength": 1, + "type": "string" + }, + "DataTransforms": { + "description": "Transform operations that act on this logical table. For this structure to be valid, only one of the attributes can be non-null.
", + "items": { + "$ref": "#/definitions/TransformOperation" + }, + "maxItems": 2048, + "minItems": 1, + "type": "array" + }, + "Source": { + "$ref": "#/definitions/LogicalTableSource" + } + }, + "required": [ + "Alias" + ], + "type": "object" + }, + "LogicalTableMap": { + "additionalProperties": false, + "maxProperties": 64, + "minProperties": 1, + "patternProperties": { + "^[0-9a-zA-Z-]*$": { + "$ref": "#/definitions/LogicalTable" + } + }, + "type": "object" + }, + "LogicalTableSource": { + "additionalProperties": false, + "description": "Information about the source of a logical table. This is a variant type structure. For\n this structure to be valid, only one of the attributes can be non-null.
", + "properties": { + "DataSetArn": { + "description": "The Amazon Resource Number (ARN) of the parent dataset.
", + "type": "string" + }, + "JoinInstruction": { + "$ref": "#/definitions/JoinInstruction" + }, + "PhysicalTableId": { + "description": "Physical table ID.
", + "maxLength": 64, + "minLength": 1, + "pattern": "^[0-9a-zA-Z-]*$", + "type": "string" + } + }, + "type": "object" + }, + "LookbackWindow": { + "additionalProperties": false, + "description": "The lookback window setup of an incremental refresh configuration.
", + "properties": { + "ColumnName": { + "description": "The name of the lookback window column.
", + "type": "string" + }, + "Size": { + "default": 0, + "description": "The lookback window column size.
", + "minimum": 1, + "type": "number" + }, + "SizeUnit": { + "$ref": "#/definitions/LookbackWindowSizeUnit" + } + }, + "required": [ + "ColumnName", + "Size", + "SizeUnit" + ], + "type": "object" + }, + "LookbackWindowSizeUnit": { + "enum": [ + "HOUR", + "DAY", + "WEEK" + ], + "type": "string" + }, + "NewDefaultValues": { + "additionalProperties": false, + "description": "The configuration that overrides the existing default values for a dataset parameter that is inherited from another dataset.
", + "properties": { + "DateTimeStaticValues": { + "description": "A list of static default values for a given date time parameter.
", + "items": { + "description": "The default value for the date time parameter.
", + "type": "string" + }, + "maxItems": 32, + "minItems": 0, + "type": "array" + }, + "DecimalStaticValues": { + "description": "A list of static default values for a given decimal parameter.
", + "items": { + "default": 0, + "description": "The default value for the decimal parameter.
", + "type": "number" + }, + "maxItems": 32, + "minItems": 0, + "type": "array" + }, + "IntegerStaticValues": { + "description": "A list of static default values for a given integer parameter.
", + "items": { + "default": 0, + "description": "The default value for the integer parameter.
", + "type": "number" + }, + "maxItems": 32, + "minItems": 0, + "type": "array" + }, + "StringStaticValues": { + "description": "A list of static default values for a given string parameter.
", + "items": { + "description": "The default value for the string parameter.
", + "maxLength": 512, + "minLength": 0, + "type": "string" + }, + "maxItems": 32, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "OutputColumn": { + "additionalProperties": false, + "description": "Output column.
", + "properties": { + "Description": { + "description": "A description for a column.
", + "maxLength": 500, + "minLength": 0, + "type": "string" + }, + "Name": { + "description": "The display name of the column..
", + "maxLength": 127, + "minLength": 1, + "type": "string" + }, + "SubType": { + "$ref": "#/definitions/ColumnDataSubType" + }, + "Type": { + "$ref": "#/definitions/ColumnDataType" + } + }, + "type": "object" + }, + "OverrideDatasetParameterOperation": { + "additionalProperties": false, + "description": "A transform operation that overrides the dataset parameter values that are defined in another dataset.
", + "properties": { + "NewDefaultValues": { + "$ref": "#/definitions/NewDefaultValues" + }, + "NewParameterName": { + "description": "The new name for the parameter.
", + "maxLength": 2048, + "minLength": 1, + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + "ParameterName": { + "description": "The name of the parameter to be overridden with different values.
", + "maxLength": 2048, + "minLength": 1, + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + } + }, + "required": [ + "ParameterName" + ], + "type": "object" + }, + "PerformanceConfiguration": { + "additionalProperties": false, + "properties": { + "UniqueKeys": { + "items": { + "$ref": "#/definitions/UniqueKey" + }, + "maxItems": 1, + "minItems": 1, + "type": "array" + } + }, + "type": "object" + }, + "PhysicalTable": { + "additionalProperties": false, + "description": "A view of a data source that contains information about the shape of the data in the\n underlying source. This is a variant type structure. For this structure to be valid,\n only one of the attributes can be non-null.
", + "properties": { + "CustomSql": { + "$ref": "#/definitions/CustomSql" + }, + "RelationalTable": { + "$ref": "#/definitions/RelationalTable" + }, + "S3Source": { + "$ref": "#/definitions/S3Source" + } + }, + "type": "object" + }, + "PhysicalTableMap": { + "additionalProperties": false, + "maxProperties": 32, + "minProperties": 0, + "patternProperties": { + "^[0-9a-zA-Z-]*$": { + "$ref": "#/definitions/PhysicalTable" + } + }, + "type": "object" + }, + "ProjectOperation": { + "additionalProperties": false, + "description": "A transform operation that projects columns. Operations that come after a projection\n can only refer to projected columns.
", + "properties": { + "ProjectedColumns": { + "description": "Projected columns.
", + "items": { + "type": "string" + }, + "maxItems": 2000, + "minItems": 0, + "type": "array" + } + }, + "required": [ + "ProjectedColumns" + ], + "type": "object" + }, + "RefreshConfiguration": { + "additionalProperties": false, + "description": "The refresh configuration of a dataset.
", + "properties": { + "IncrementalRefresh": { + "$ref": "#/definitions/IncrementalRefresh" + } + }, + "required": [ + "IncrementalRefresh" + ], + "type": "object" + }, + "RefreshFailureAlertStatus": { + "enum": [ + "ENABLED", + "DISABLED" + ], + "type": "string" + }, + "RefreshFailureConfiguration": { + "additionalProperties": false, + "properties": { + "EmailAlert": { + "$ref": "#/definitions/RefreshFailureEmailAlert" + } + }, + "type": "object" + }, + "RefreshFailureEmailAlert": { + "additionalProperties": false, + "properties": { + "AlertStatus": { + "$ref": "#/definitions/RefreshFailureAlertStatus" + } + }, + "type": "object" + }, + "RelationalTable": { + "additionalProperties": false, + "description": "A physical table type for relational data sources.
", + "properties": { + "Catalog": { + "description": "The catalog associated with a table.
", + "maxLength": 256, + "minLength": 0, + "type": "string" + }, + "DataSourceArn": { + "description": "The Amazon Resource Name (ARN) for the data source.
", + "type": "string" + }, + "InputColumns": { + "description": "The column schema of the table.
", + "items": { + "$ref": "#/definitions/InputColumn" + }, + "maxItems": 2048, + "minItems": 1, + "type": "array" + }, + "Name": { + "description": "The name of the relational table.
", + "maxLength": 256, + "minLength": 1, + "type": "string" + }, + "Schema": { + "description": "The schema name. This name applies to certain relational database engines.
", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "DataSourceArn", + "Name" + ], + "type": "object" + }, + "RenameColumnOperation": { + "additionalProperties": false, + "description": "A transform operation that renames a column.
", + "properties": { + "ColumnName": { + "description": "The name of the column to be renamed.
", + "maxLength": 127, + "minLength": 1, + "type": "string" + }, + "NewColumnName": { + "description": "The new name for the column.
", + "maxLength": 127, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "ColumnName" + ], + "type": "object" + }, + "ResourcePermission": { + "additionalProperties": false, + "description": "Permission for the resource.
", + "properties": { + "Actions": { + "description": "The IAM action to grant or revoke permissions on.
", + "items": { + "type": "string" + }, + "maxItems": 20, + "minItems": 1, + "type": "array" + }, + "Principal": { + "description": "The Amazon Resource Name (ARN) of the principal. This can be one of the\n following:
\nThe ARN of an Amazon QuickSight user or group associated with a data source or dataset. (This is common.)
\nThe ARN of an Amazon QuickSight user, group, or namespace associated with an analysis, dashboard, template, or theme. (This is common.)
\nThe ARN of an Amazon Web Services account root: This is an IAM ARN rather than a QuickSight\n ARN. Use this option only to share resources (templates) across Amazon Web Services accounts.\n (This is less common.)
\nInformation about a dataset that contains permissions for row-level security (RLS).\n The permissions dataset maps fields to users or groups. For more information, see\n Using Row-Level Security (RLS) to Restrict Access to a Dataset in the Amazon QuickSight User\n Guide.
\nThe option to deny permissions by setting PermissionPolicy to DENY_ACCESS is\n not supported for new RLS datasets.
The Amazon Resource Name (ARN) of the dataset that contains permissions for RLS.
", + "type": "string" + }, + "FormatVersion": { + "$ref": "#/definitions/RowLevelPermissionFormatVersion" + }, + "Namespace": { + "description": "The namespace associated with the dataset that contains permissions for RLS.
", + "maxLength": 64, + "minLength": 0, + "pattern": "^[a-zA-Z0-9._-]*$", + "type": "string" + }, + "PermissionPolicy": { + "$ref": "#/definitions/RowLevelPermissionPolicy" + }, + "Status": { + "$ref": "#/definitions/Status" + } + }, + "required": [ + "Arn", + "PermissionPolicy" + ], + "type": "object" + }, + "RowLevelPermissionFormatVersion": { + "enum": [ + "VERSION_1", + "VERSION_2" + ], + "type": "string" + }, + "RowLevelPermissionPolicy": { + "enum": [ + "GRANT_ACCESS", + "DENY_ACCESS" + ], + "type": "string" + }, + "RowLevelPermissionTagConfiguration": { + "additionalProperties": false, + "description": "The configuration of tags on a dataset to set row-level security.
", + "properties": { + "Status": { + "$ref": "#/definitions/Status" + }, + "TagRuleConfigurations": { + "description": "A list of tag configuration rules to apply to a dataset. All tag configurations have the OR condition. Tags within each tile will be joined (AND). At least one rule in this structure must have all tag values assigned to it to apply Row-level security (RLS) to the dataset.
", + "items": { + "items": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "maxItems": 50, + "minItems": 1, + "type": "array" + }, + "maxItems": 50, + "minItems": 1, + "type": "array" + }, + "TagRules": { + "description": "A set of rules associated with row-level security, such as the tag names and columns that they are assigned to.
", + "items": { + "$ref": "#/definitions/RowLevelPermissionTagRule" + }, + "maxItems": 50, + "minItems": 1, + "type": "array" + } + }, + "required": [ + "TagRules" + ], + "type": "object" + }, + "RowLevelPermissionTagRule": { + "additionalProperties": false, + "description": "A set of rules associated with a tag.
", + "properties": { + "ColumnName": { + "description": "The column name that a tag key is assigned to.
", + "type": "string" + }, + "MatchAllValue": { + "description": "A string that you want to use to filter by all the values in a column in the dataset and don\u2019t want to list the values one by one. For example, you can use an asterisk as your match all value.
", + "maxLength": 256, + "minLength": 1, + "type": "string" + }, + "TagKey": { + "description": "The unique key for a tag.
", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "TagMultiValueDelimiter": { + "description": "A string that you want to use to delimit the values when you pass the values at run time. For example, you can delimit the values with a comma.
", + "maxLength": 10, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "ColumnName", + "TagKey" + ], + "type": "object" + }, + "S3Source": { + "additionalProperties": false, + "description": "A physical table type for an S3 data source.
", + "properties": { + "DataSourceArn": { + "description": "The Amazon Resource Name (ARN) for the data source.
", + "type": "string" + }, + "InputColumns": { + "description": "A physical table type for an S3 data source.
\nFor files that aren't JSON, only STRING data types are supported in input columns.
A string parameter for a dataset.
", + "properties": { + "DefaultValues": { + "$ref": "#/definitions/StringDatasetParameterDefaultValues" + }, + "Id": { + "description": "An identifier for the string parameter that is created in the dataset.
", + "maxLength": 128, + "minLength": 1, + "pattern": "^[a-zA-Z0-9-]+$", + "type": "string" + }, + "Name": { + "description": "The name of the string parameter that is created in the dataset.
", + "maxLength": 2048, + "minLength": 1, + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + "ValueType": { + "$ref": "#/definitions/DatasetParameterValueType" + } + }, + "required": [ + "Id", + "Name", + "ValueType" + ], + "type": "object" + }, + "StringDatasetParameterDefaultValues": { + "additionalProperties": false, + "description": "The default values of a string parameter.
", + "properties": { + "StaticValues": { + "description": "A list of static default values for a given string parameter.
", + "items": { + "description": "The default value for the string parameter.
", + "maxLength": 512, + "minLength": 0, + "type": "string" + }, + "maxItems": 32, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "description": "The key or keys of the key-value pairs for the resource tag or tags assigned to the\n resource.
", + "properties": { + "Key": { + "description": "Tag key.
", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "Tag value.
", + "maxLength": 256, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "TagColumnOperation": { + "additionalProperties": false, + "description": "A transform operation that tags a column with additional information.
", + "properties": { + "ColumnName": { + "description": "The column that this operation acts on.
", + "maxLength": 127, + "minLength": 1, + "type": "string" + }, + "Tags": { + "description": "The dataset column tag, currently only used for geospatial type tagging.
\nThis is not tags for the Amazon Web Services tagging feature.
\nA data transformation on a logical table. This is a variant type structure. For this\n structure to be valid, only one of the attributes can be non-null.
", + "properties": { + "CastColumnTypeOperation": { + "$ref": "#/definitions/CastColumnTypeOperation" + }, + "CreateColumnsOperation": { + "$ref": "#/definitions/CreateColumnsOperation" + }, + "FilterOperation": { + "$ref": "#/definitions/FilterOperation" + }, + "OverrideDatasetParameterOperation": { + "$ref": "#/definitions/OverrideDatasetParameterOperation" + }, + "ProjectOperation": { + "$ref": "#/definitions/ProjectOperation" + }, + "RenameColumnOperation": { + "$ref": "#/definitions/RenameColumnOperation" + }, + "TagColumnOperation": { + "$ref": "#/definitions/TagColumnOperation" + }, + "UntagColumnOperation": { + "$ref": "#/definitions/UntagColumnOperation" + } + }, + "type": "object" + }, + "UniqueKey": { + "additionalProperties": false, + "properties": { + "ColumnNames": { + "items": { + "maxLength": 127, + "minLength": 1, + "type": "string" + }, + "maxItems": 1, + "minItems": 1, + "type": "array" + } + }, + "required": [ + "ColumnNames" + ], + "type": "object" + }, + "UntagColumnOperation": { + "additionalProperties": false, + "description": "A transform operation that removes tags associated with a column.
", + "properties": { + "ColumnName": { + "description": "The column that this operation acts on.
", + "maxLength": 127, + "minLength": 1, + "type": "string" + }, + "TagNames": { + "description": "The column tags to remove from this column.
", + "items": { + "$ref": "#/definitions/ColumnTagName" + }, + "type": "array" + } + }, + "required": [ + "ColumnName", + "TagNames" + ], + "type": "object" + }, + "UploadSettings": { + "additionalProperties": false, + "description": "Information about the format for a source file or files.
", + "properties": { + "ContainsHeader": { + "description": "Whether the file has a header row, or the files each have a header row.
", + "type": "boolean" + }, + "Delimiter": { + "description": "The delimiter between values in the file.
", + "maxLength": 1, + "minLength": 1, + "type": "string" + }, + "Format": { + "$ref": "#/definitions/FileFormat" + }, + "StartFromRow": { + "description": "A row number to start reading data from.
", + "minimum": 1, + "type": "number" + }, + "TextQualifier": { + "$ref": "#/definitions/TextQualifier" + } + }, + "type": "object" + } + }, + "description": "Definition of the AWS::QuickSight::DataSet Resource Type.", + "handlers": { + "create": { + "permissions": [ + "quicksight:DescribeDataSet", + "quicksight:DescribeDataSetPermissions", + "quicksight:DescribeIngestion", + "quicksight:ListIngestions", + "quicksight:CreateDataSet", + "quicksight:PassDataSource", + "quicksight:PassDataSet", + "quicksight:TagResource", + "quicksight:ListTagsForResource", + "quicksight:DescribeDataSetRefreshProperties", + "quicksight:PutDataSetRefreshProperties", + "quicksight:CreateFolderMembership", + "quicksight:DeleteFolderMembership", + "quicksight:ListFoldersForResource" + ] + }, + "delete": { + "permissions": [ + "quicksight:DescribeDataSet", + "quicksight:DeleteDataSet", + "quicksight:ListTagsForResource", + "quicksight:DescribeIngestion", + "quicksight:DeleteDataSetRefreshProperties", + "quicksight:DescribeDataSetRefreshProperties" + ] + }, + "list": { + "permissions": [ + "quicksight:DescribeDataSet", + "quicksight:ListDataSets" + ] + }, + "read": { + "permissions": [ + "quicksight:DescribeDataSet", + "quicksight:DescribeDataSetPermissions", + "quicksight:ListTagsForResource", + "quicksight:DescribeDataSetRefreshProperties" + ] + }, + "update": { + "permissions": [ + "quicksight:DescribeDataSet", + "quicksight:DescribeDataSetPermissions", + "quicksight:PassDataSource", + "quicksight:UpdateDataSet", + "quicksight:UpdateDataSetPermissions", + "quicksight:PassDataSet", + "quicksight:DescribeIngestion", + "quicksight:ListIngestions", + "quicksight:CancelIngestion", + "quicksight:CreateFolderMembership", + "quicksight:DeleteFolderMembership", + "quicksight:ListFoldersForResource", + "quicksight:TagResource", + "quicksight:UntagResource", + "quicksight:ListTagsForResource", + "quicksight:PutDataSetRefreshProperties", + "quicksight:DescribeDataSetRefreshProperties", + "quicksight:DeleteDataSetRefreshProperties" + ] + } + }, + "primaryIdentifier": [ + "/properties/AwsAccountId", + "/properties/DataSetId" + ], + "properties": { + "Arn": { + "description": "The Amazon Resource Name (ARN) of the resource.
", + "type": "string" + }, + "AwsAccountId": { + "maxLength": 12, + "minLength": 12, + "pattern": "^[0-9]{12}$", + "type": "string" + }, + "ColumnGroups": { + "description": "Groupings of columns that work together in certain Amazon QuickSight features. Currently, only geospatial hierarchy is supported.
", + "items": { + "$ref": "#/definitions/ColumnGroup" + }, + "maxItems": 8, + "minItems": 1, + "type": "array" + }, + "ColumnLevelPermissionRules": { + "description": "A set of one or more definitions of a \n ColumnLevelPermissionRule\n .
The amount of SPICE capacity used by this dataset. This is 0 if the dataset isn't\n imported into SPICE.
", + "type": "number" + }, + "CreatedTime": { + "description": "The time that this dataset was created.
", + "format": "string", + "type": "string" + }, + "DataSetId": { + "type": "string" + }, + "DataSetRefreshProperties": { + "$ref": "#/definitions/DataSetRefreshProperties" + }, + "DataSetUsageConfiguration": { + "$ref": "#/definitions/DataSetUsageConfiguration" + }, + "DatasetParameters": { + "description": "The parameter declarations of the dataset.
", + "items": { + "$ref": "#/definitions/DatasetParameter" + }, + "maxItems": 32, + "minItems": 0, + "type": "array" + }, + "FieldFolders": { + "$ref": "#/definitions/FieldFolderMap" + }, + "FolderArns": { + "description": "When you create the dataset, Amazon QuickSight adds the dataset to these folders.
", + "items": { + "type": "string" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + }, + "ImportMode": { + "$ref": "#/definitions/DataSetImportMode" + }, + "IngestionWaitPolicy": { + "$ref": "#/definitions/IngestionWaitPolicy" + }, + "LastUpdatedTime": { + "description": "The last time that this dataset was updated.
", + "format": "string", + "type": "string" + }, + "LogicalTableMap": { + "$ref": "#/definitions/LogicalTableMap" + }, + "Name": { + "description": "The display name for the dataset.
", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "OutputColumns": { + "description": "The list of columns after all transforms. These columns are available in templates,\n analyses, and dashboards.
", + "items": { + "$ref": "#/definitions/OutputColumn" + }, + "type": "array" + }, + "PerformanceConfiguration": { + "$ref": "#/definitions/PerformanceConfiguration" + }, + "Permissions": { + "description": "A list of resource permissions on the dataset.
", + "items": { + "$ref": "#/definitions/ResourcePermission" + }, + "maxItems": 64, + "minItems": 1, + "type": "array" + }, + "PhysicalTableMap": { + "$ref": "#/definitions/PhysicalTableMap" + }, + "RowLevelPermissionDataSet": { + "$ref": "#/definitions/RowLevelPermissionDataSet" + }, + "RowLevelPermissionTagConfiguration": { + "$ref": "#/definitions/RowLevelPermissionTagConfiguration" + }, + "Tags": { + "description": "Contains a map of the key-value pairs for the resource tag or tags assigned to the dataset.
", + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 200, + "minItems": 1, + "type": "array" + }, + "UseAs": { + "$ref": "#/definitions/DataSetUseAs" + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/ConsumedSpiceCapacityInBytes", + "/properties/CreatedTime", + "/properties/LastUpdatedTime", + "/properties/OutputColumns" + ], + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "quicksight:TagResource", + "quicksight:UntagResource", + "quicksight:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::QuickSight::DataSet", + "writeOnlyProperties": [ + "/properties/FieldFolders", + "/properties/IngestionWaitPolicy", + "/properties/FolderArns" + ] +} diff --git a/src/schema/aws-quicksight-datasource.json b/src/schema/aws-quicksight-datasource.json new file mode 100644 index 00000000..e3e43d57 --- /dev/null +++ b/src/schema/aws-quicksight-datasource.json @@ -0,0 +1,1178 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/AwsAccountId", + "/properties/DataSourceId", + "/properties/Type" + ], + "definitions": { + "AmazonElasticsearchParameters": { + "additionalProperties": false, + "description": "The parameters for OpenSearch.
", + "properties": { + "Domain": { + "description": "The OpenSearch domain.
", + "maxLength": 64, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Domain" + ], + "type": "object" + }, + "AmazonOpenSearchParameters": { + "additionalProperties": false, + "description": "The parameters for OpenSearch.
", + "properties": { + "Domain": { + "description": "The OpenSearch domain.
", + "maxLength": 64, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Domain" + ], + "type": "object" + }, + "AthenaParameters": { + "additionalProperties": false, + "description": "Parameters for Amazon Athena.
", + "properties": { + "RoleArn": { + "description": "Use the RoleArn structure to override an account-wide role for a specific Athena data source. For example, say an account administrator has turned off all Athena access with an account-wide role. The administrator can then use RoleArn to bypass the account-wide role and allow Athena access for the single Athena data source that is specified in the structure, even if the account-wide role forbidding Athena access is still active.
The workgroup that Amazon Athena uses.
", + "maxLength": 128, + "minLength": 1, + "type": "string" + } + }, + "type": "object" + }, + "AuroraParameters": { + "additionalProperties": false, + "description": "Parameters for Amazon Aurora.
", + "properties": { + "Database": { + "description": "Database.
", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Host": { + "description": "Host.
", + "maxLength": 256, + "minLength": 1, + "type": "string" + }, + "Port": { + "default": 0, + "description": "Port.
", + "maximum": 65535, + "minimum": 1, + "type": "number" + } + }, + "required": [ + "Database", + "Host", + "Port" + ], + "type": "object" + }, + "AuroraPostgreSqlParameters": { + "additionalProperties": false, + "description": "Parameters for Amazon Aurora PostgreSQL-Compatible Edition.
", + "properties": { + "Database": { + "description": "The Amazon Aurora PostgreSQL database to connect to.
", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Host": { + "description": "The Amazon Aurora PostgreSQL-Compatible host to connect to.
", + "maxLength": 256, + "minLength": 1, + "type": "string" + }, + "Port": { + "default": 0, + "description": "The port that Amazon Aurora PostgreSQL is listening on.
", + "maximum": 65535, + "minimum": 1, + "type": "number" + } + }, + "required": [ + "Database", + "Host", + "Port" + ], + "type": "object" + }, + "AuthenticationType": { + "enum": [ + "PASSWORD", + "TOKEN", + "X509" + ], + "type": "string" + }, + "AwsIotAnalyticsParameters": { + "additionalProperties": false, + "description": "The parameters for IoT Analytics.
", + "properties": { + "DataSetName": { + "description": "Dataset name.
", + "maxLength": 128, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "DataSetName" + ], + "type": "object" + }, + "CredentialPair": { + "additionalProperties": false, + "description": "The combination of user name and password that are used as credentials.
", + "properties": { + "AlternateDataSourceParameters": { + "description": "A set of alternate data source parameters that you want to share for these\n credentials. The credentials are applied in tandem with the data source parameters when\n you copy a data source by using a create or update request. The API operation compares\n the DataSourceParameters structure that's in the request with the\n structures in the AlternateDataSourceParameters allow list. If the\n structures are an exact match, the request is allowed to use the new data source with\n the existing credentials. If the AlternateDataSourceParameters list is\n null, the DataSourceParameters originally used with these\n Credentials is automatically allowed.
Password.
", + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "Username": { + "description": "User name.
", + "maxLength": 64, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Password", + "Username" + ], + "type": "object" + }, + "DataSourceCredentials": { + "additionalProperties": false, + "description": "Data source credentials. This is a variant type structure. For this structure to be\n valid, only one of the attributes can be non-null.
", + "properties": { + "CopySourceArn": { + "description": "The Amazon Resource Name (ARN) of a data source that has the credential pair that you\n want to use. When CopySourceArn is not null, the credential pair from the\n data source in the ARN is used as the credentials for the\n DataSourceCredentials structure.
The Amazon Resource Name (ARN) of the secret associated with the data source in Amazon Secrets Manager.
", + "maxLength": 2048, + "minLength": 1, + "pattern": "^arn:[-a-z0-9]*:secretsmanager:[-a-z0-9]*:[0-9]{12}:secret:.+$", + "type": "string" + } + }, + "type": "object" + }, + "DataSourceErrorInfo": { + "additionalProperties": false, + "description": "Error information for the data source creation or update.
", + "properties": { + "Message": { + "description": "Error message.
", + "type": "string" + }, + "Type": { + "$ref": "#/definitions/DataSourceErrorInfoType" + } + }, + "type": "object" + }, + "DataSourceErrorInfoType": { + "enum": [ + "ACCESS_DENIED", + "COPY_SOURCE_NOT_FOUND", + "TIMEOUT", + "ENGINE_VERSION_NOT_SUPPORTED", + "UNKNOWN_HOST", + "GENERIC_SQL_FAILURE", + "CONFLICT", + "UNKNOWN" + ], + "type": "string" + }, + "DataSourceParameters": { + "additionalProperties": false, + "description": "The parameters that Amazon QuickSight uses to connect to your underlying data source.\n This is a variant type structure. For this structure to be valid, only one of the\n attributes can be non-null.
", + "properties": { + "AmazonElasticsearchParameters": { + "$ref": "#/definitions/AmazonElasticsearchParameters" + }, + "AmazonOpenSearchParameters": { + "$ref": "#/definitions/AmazonOpenSearchParameters" + }, + "AthenaParameters": { + "$ref": "#/definitions/AthenaParameters" + }, + "AuroraParameters": { + "$ref": "#/definitions/AuroraParameters" + }, + "AuroraPostgreSqlParameters": { + "$ref": "#/definitions/AuroraPostgreSqlParameters" + }, + "DatabricksParameters": { + "$ref": "#/definitions/DatabricksParameters" + }, + "MariaDbParameters": { + "$ref": "#/definitions/MariaDbParameters" + }, + "MySqlParameters": { + "$ref": "#/definitions/MySqlParameters" + }, + "OracleParameters": { + "$ref": "#/definitions/OracleParameters" + }, + "PostgreSqlParameters": { + "$ref": "#/definitions/PostgreSqlParameters" + }, + "PrestoParameters": { + "$ref": "#/definitions/PrestoParameters" + }, + "RdsParameters": { + "$ref": "#/definitions/RdsParameters" + }, + "RedshiftParameters": { + "$ref": "#/definitions/RedshiftParameters" + }, + "S3Parameters": { + "$ref": "#/definitions/S3Parameters" + }, + "SnowflakeParameters": { + "$ref": "#/definitions/SnowflakeParameters" + }, + "SparkParameters": { + "$ref": "#/definitions/SparkParameters" + }, + "SqlServerParameters": { + "$ref": "#/definitions/SqlServerParameters" + }, + "StarburstParameters": { + "$ref": "#/definitions/StarburstParameters" + }, + "TeradataParameters": { + "$ref": "#/definitions/TeradataParameters" + }, + "TrinoParameters": { + "$ref": "#/definitions/TrinoParameters" + } + }, + "type": "object" + }, + "DataSourceType": { + "enum": [ + "ADOBE_ANALYTICS", + "AMAZON_ELASTICSEARCH", + "AMAZON_OPENSEARCH", + "ATHENA", + "AURORA", + "AURORA_POSTGRESQL", + "AWS_IOT_ANALYTICS", + "DATABRICKS", + "DENODO", + "DREMIO", + "DYNAMODB", + "SAPHANA", + "DB2_AS400", + "EXASOL", + "FILE", + "GITHUB", + "JIRA", + "MARIADB", + "MYSQL", + "ORACLE", + "POSTGRESQL", + "PRESTO", + "REDSHIFT", + "S3", + "S3_TABLES", + "SALESFORCE", + "SERVICENOW", + "SNOWFLAKE", + "SPARK", + "SQLSERVER", + "TERADATA", + "TIMESTREAM", + "TWITTER", + "BIGQUERY", + "GOOGLE_ANALYTICS", + "TRINO", + "STARBURST", + "MONGO", + "MONGO_ATLAS", + "DOCUMENTDB", + "APPFLOW", + "IMPALA", + "GLUE" + ], + "type": "string" + }, + "DatabricksParameters": { + "additionalProperties": false, + "description": "The parameters that are required to connect to a Databricks data source.
", + "properties": { + "Host": { + "description": "The host name of the Databricks data source.
", + "maxLength": 256, + "minLength": 1, + "type": "string" + }, + "Port": { + "default": 0, + "description": "The port for the Databricks data source.
", + "maximum": 65535, + "minimum": 1, + "type": "number" + }, + "SqlEndpointPath": { + "description": "The HTTP path of the Databricks data source.
", + "maxLength": 4096, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Host", + "Port", + "SqlEndpointPath" + ], + "type": "object" + }, + "IdentityCenterConfiguration": { + "additionalProperties": false, + "description": "The parameters for an IAM Identity Center configuration.
", + "properties": { + "EnableIdentityPropagation": { + "default": null, + "description": "A Boolean option that controls whether Trusted Identity Propagation should be used.
", + "type": "boolean" + } + }, + "type": "object" + }, + "ManifestFileLocation": { + "additionalProperties": false, + "description": "Amazon S3 manifest file location.
", + "properties": { + "Bucket": { + "description": "Amazon S3 bucket.
", + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "Key": { + "description": "Amazon S3 key that identifies an object.
", + "maxLength": 1024, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Bucket", + "Key" + ], + "type": "object" + }, + "MariaDbParameters": { + "additionalProperties": false, + "description": "The parameters for MariaDB.
", + "properties": { + "Database": { + "description": "Database.
", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Host": { + "description": "Host.
", + "maxLength": 256, + "minLength": 1, + "type": "string" + }, + "Port": { + "default": 0, + "description": "Port.
", + "maximum": 65535, + "minimum": 1, + "type": "number" + } + }, + "required": [ + "Database", + "Host", + "Port" + ], + "type": "object" + }, + "MySqlParameters": { + "additionalProperties": false, + "description": "The parameters for MySQL.
", + "properties": { + "Database": { + "description": "Database.
", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Host": { + "description": "Host.
", + "maxLength": 256, + "minLength": 1, + "type": "string" + }, + "Port": { + "default": 0, + "description": "Port.
", + "maximum": 65535, + "minimum": 1, + "type": "number" + } + }, + "required": [ + "Database", + "Host", + "Port" + ], + "type": "object" + }, + "OAuthParameters": { + "additionalProperties": false, + "properties": { + "IdentityProviderResourceUri": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "IdentityProviderVpcConnectionProperties": { + "$ref": "#/definitions/VpcConnectionProperties" + }, + "OAuthScope": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "TokenProviderUrl": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "TokenProviderUrl" + ], + "type": "object" + }, + "OracleParameters": { + "additionalProperties": false, + "description": "The parameters for Oracle.
", + "properties": { + "Database": { + "description": "The database.
", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Host": { + "description": "An Oracle host.
", + "maxLength": 256, + "minLength": 1, + "type": "string" + }, + "Port": { + "default": 0, + "description": "The port.
", + "maximum": 65535, + "minimum": 1, + "type": "number" + } + }, + "required": [ + "Database", + "Host", + "Port" + ], + "type": "object" + }, + "PostgreSqlParameters": { + "additionalProperties": false, + "description": "The parameters for PostgreSQL.
", + "properties": { + "Database": { + "description": "Database.
", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Host": { + "description": "Host.
", + "maxLength": 256, + "minLength": 1, + "type": "string" + }, + "Port": { + "default": 0, + "description": "Port.
", + "maximum": 65535, + "minimum": 1, + "type": "number" + } + }, + "required": [ + "Database", + "Host", + "Port" + ], + "type": "object" + }, + "PrestoParameters": { + "additionalProperties": false, + "description": "The parameters for Presto.
", + "properties": { + "Catalog": { + "description": "Catalog.
", + "maxLength": 128, + "minLength": 0, + "type": "string" + }, + "Host": { + "description": "Host.
", + "maxLength": 256, + "minLength": 1, + "type": "string" + }, + "Port": { + "default": 0, + "description": "Port.
", + "maximum": 65535, + "minimum": 1, + "type": "number" + } + }, + "required": [ + "Catalog", + "Host", + "Port" + ], + "type": "object" + }, + "RdsParameters": { + "additionalProperties": false, + "description": "The parameters for Amazon RDS.
", + "properties": { + "Database": { + "description": "Database.
", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "InstanceId": { + "description": "Instance ID.
", + "maxLength": 64, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Database", + "InstanceId" + ], + "type": "object" + }, + "RedshiftIAMParameters": { + "additionalProperties": false, + "description": "A structure that grants Amazon QuickSight access to your cluster and make a call to the redshift:GetClusterCredentials API. For more information on the redshift:GetClusterCredentials API, see \n GetClusterCredentials\n .
Automatically creates a database user. If your database doesn't have a DatabaseUser, set this parameter to True. If there is no DatabaseUser, Amazon QuickSight can't connect to your cluster. The RoleArn that you use for this operation must grant access to redshift:CreateClusterUser to successfully create the user.
A list of groups whose permissions will be granted to Amazon QuickSight to access the cluster. These permissions are combined with the permissions granted to Amazon QuickSight by the DatabaseUser. If you choose to include this parameter, the RoleArn must grant access to redshift:JoinGroup.
The user whose permissions and group memberships will be used by Amazon QuickSight to access the cluster. If this user already exists in your database, Amazon QuickSight is granted the same permissions that the user has. If the user doesn't exist, set the value of AutoCreateDatabaseUser to True to create a new user with PUBLIC permissions.
Use the RoleArn structure to allow Amazon QuickSight to call redshift:GetClusterCredentials on your cluster. The calling principal must have iam:PassRole access to pass the role to Amazon QuickSight. The role's trust policy must allow the Amazon QuickSight service principal to assume the role.
The parameters for Amazon Redshift. The ClusterId field can be blank if\n Host and Port are both set. The Host and Port fields can be blank if the ClusterId field is set.
Cluster ID. This field can be blank if the Host and Port are\n provided.
Database.
", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Host": { + "description": "Host. This field can be blank if ClusterId is provided.
Port. This field can be blank if the ClusterId is provided.
Permission for the resource.
", + "properties": { + "Actions": { + "description": "The IAM action to grant or revoke permissions on.
", + "items": { + "type": "string" + }, + "maxItems": 20, + "minItems": 1, + "type": "array" + }, + "Principal": { + "description": "The Amazon Resource Name (ARN) of the principal. This can be one of the\n following:
\nThe ARN of an Amazon QuickSight user or group associated with a data source or dataset. (This is common.)
\nThe ARN of an Amazon QuickSight user, group, or namespace associated with an analysis, dashboard, template, or theme. (This is common.)
\nThe ARN of an Amazon Web Services account root: This is an IAM ARN rather than a QuickSight\n ARN. Use this option only to share resources (templates) across Amazon Web Services accounts.\n (This is less common.)
\nThe parameters for S3.
", + "properties": { + "ManifestFileLocation": { + "$ref": "#/definitions/ManifestFileLocation" + }, + "RoleArn": { + "description": "Use the RoleArn structure to override an account-wide role for a specific S3 data source. For example, say an account administrator has turned off all S3 access with an account-wide role. The administrator can then use RoleArn to bypass the account-wide role and allow S3 access for the single S3 data source that is specified in the structure, even if the account-wide role forbidding S3 access is still active.
The parameters for Snowflake.
", + "properties": { + "AuthenticationType": { + "$ref": "#/definitions/AuthenticationType" + }, + "Database": { + "description": "Database.
", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "DatabaseAccessControlRole": { + "maxLength": 128, + "minLength": 0, + "type": "string" + }, + "Host": { + "description": "Host.
", + "maxLength": 256, + "minLength": 1, + "type": "string" + }, + "OAuthParameters": { + "$ref": "#/definitions/OAuthParameters" + }, + "Warehouse": { + "description": "Warehouse.
", + "maxLength": 128, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Database", + "Host", + "Warehouse" + ], + "type": "object" + }, + "SparkParameters": { + "additionalProperties": false, + "description": "The parameters for Spark.
", + "properties": { + "Host": { + "description": "Host.
", + "maxLength": 256, + "minLength": 1, + "type": "string" + }, + "Port": { + "default": 0, + "description": "Port.
", + "maximum": 65535, + "minimum": 1, + "type": "number" + } + }, + "required": [ + "Host", + "Port" + ], + "type": "object" + }, + "SqlServerParameters": { + "additionalProperties": false, + "description": "The parameters for SQL Server.
", + "properties": { + "Database": { + "description": "Database.
", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Host": { + "description": "Host.
", + "maxLength": 256, + "minLength": 1, + "type": "string" + }, + "Port": { + "default": 0, + "description": "Port.
", + "maximum": 65535, + "minimum": 1, + "type": "number" + } + }, + "required": [ + "Database", + "Host", + "Port" + ], + "type": "object" + }, + "SslProperties": { + "additionalProperties": false, + "description": "Secure Socket Layer (SSL) properties that apply when Amazon QuickSight connects to your\n underlying data source.
", + "properties": { + "DisableSsl": { + "default": false, + "description": "A Boolean option to control whether SSL should be disabled.
", + "type": "boolean" + } + }, + "type": "object" + }, + "StarburstParameters": { + "additionalProperties": false, + "description": "The parameters that are required to connect to a Starburst data source.
", + "properties": { + "AuthenticationType": { + "$ref": "#/definitions/AuthenticationType" + }, + "Catalog": { + "description": "The catalog name for the Starburst data source.
", + "maxLength": 128, + "minLength": 0, + "type": "string" + }, + "DatabaseAccessControlRole": { + "maxLength": 128, + "minLength": 0, + "type": "string" + }, + "Host": { + "description": "The host name of the Starburst data source.
", + "maxLength": 256, + "minLength": 1, + "type": "string" + }, + "OAuthParameters": { + "$ref": "#/definitions/OAuthParameters" + }, + "Port": { + "default": 0, + "description": "The port for the Starburst data source.
", + "maximum": 65535, + "minimum": 1, + "type": "number" + }, + "ProductType": { + "$ref": "#/definitions/StarburstProductType" + } + }, + "required": [ + "Catalog", + "Host", + "Port" + ], + "type": "object" + }, + "StarburstProductType": { + "enum": [ + "GALAXY", + "ENTERPRISE" + ], + "type": "string" + }, + "Tag": { + "additionalProperties": false, + "description": "The key or keys of the key-value pairs for the resource tag or tags assigned to the\n resource.
", + "properties": { + "Key": { + "description": "Tag key.
", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "Tag value.
", + "maxLength": 256, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "TeradataParameters": { + "additionalProperties": false, + "description": "The parameters for Teradata.
", + "properties": { + "Database": { + "description": "Database.
", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Host": { + "description": "Host.
", + "maxLength": 256, + "minLength": 1, + "type": "string" + }, + "Port": { + "default": 0, + "description": "Port.
", + "maximum": 65535, + "minimum": 1, + "type": "number" + } + }, + "required": [ + "Database", + "Host", + "Port" + ], + "type": "object" + }, + "TrinoParameters": { + "additionalProperties": false, + "description": "The parameters that are required to connect to a Trino data source.
", + "properties": { + "Catalog": { + "description": "The catalog name for the Trino data source.
", + "maxLength": 128, + "minLength": 0, + "type": "string" + }, + "Host": { + "description": "The host name of the Trino data source.
", + "maxLength": 256, + "minLength": 1, + "type": "string" + }, + "Port": { + "default": 0, + "description": "The port for the Trino data source.
", + "maximum": 65535, + "minimum": 1, + "type": "number" + } + }, + "required": [ + "Catalog", + "Host", + "Port" + ], + "type": "object" + }, + "VpcConnectionProperties": { + "additionalProperties": false, + "description": "VPC connection properties.
", + "properties": { + "VpcConnectionArn": { + "description": "The Amazon Resource Name (ARN) for the VPC connection.
", + "type": "string" + } + }, + "required": [ + "VpcConnectionArn" + ], + "type": "object" + } + }, + "description": "Definition of the AWS::QuickSight::DataSource Resource Type.", + "handlers": { + "create": { + "permissions": [ + "quicksight:CreateDataSource", + "quicksight:DescribeDataSource", + "quicksight:DescribeDataSourcePermissions", + "quicksight:TagResource", + "quicksight:ListTagsForResource", + "quicksight:CreateFolderMembership", + "quicksight:DeleteFolderMembership", + "quicksight:ListFoldersForResource" + ] + }, + "delete": { + "permissions": [ + "quicksight:DescribeDataSource", + "quicksight:DescribeDataSourcePermissions", + "quicksight:DeleteDataSource", + "quicksight:ListTagsForResource" + ] + }, + "list": { + "permissions": [ + "quicksight:DescribeDataSource", + "quicksight:ListDataSources" + ] + }, + "read": { + "permissions": [ + "quicksight:DescribeDataSource", + "quicksight:DescribeDataSourcePermissions", + "quicksight:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "quicksight:DescribeDataSource", + "quicksight:DescribeDataSourcePermissions", + "quicksight:UpdateDataSource", + "quicksight:UpdateDataSourcePermissions", + "quicksight:CreateFolderMembership", + "quicksight:DeleteFolderMembership", + "quicksight:ListFoldersForResource", + "quicksight:TagResource", + "quicksight:UntagResource", + "quicksight:ListTagsForResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/AwsAccountId", + "/properties/DataSourceId" + ], + "properties": { + "AlternateDataSourceParameters": { + "description": "A set of alternate data source parameters that you want to share for the credentials\n stored with this data source. The credentials are applied in tandem with the data source\n parameters when you copy a data source by using a create or update request. The API\n operation compares the DataSourceParameters structure that's in the request\n with the structures in the AlternateDataSourceParameters allow list. If the\n structures are an exact match, the request is allowed to use the credentials from this\n existing data source. If the AlternateDataSourceParameters list is null,\n the Credentials originally used with this DataSourceParameters\n are automatically allowed.
The Amazon Resource Name (ARN) of the data source.
", + "type": "string" + }, + "AwsAccountId": { + "maxLength": 12, + "minLength": 12, + "pattern": "^[0-9]{12}$", + "type": "string" + }, + "CreatedTime": { + "description": "The time that this data source was created.
", + "format": "date-time", + "type": "string" + }, + "Credentials": { + "$ref": "#/definitions/DataSourceCredentials" + }, + "DataSourceId": { + "type": "string" + }, + "DataSourceParameters": { + "$ref": "#/definitions/DataSourceParameters" + }, + "ErrorInfo": { + "$ref": "#/definitions/DataSourceErrorInfo" + }, + "FolderArns": { + "items": { + "type": "string" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + }, + "LastUpdatedTime": { + "description": "The last time that this data source was updated.
", + "format": "date-time", + "type": "string" + }, + "Name": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Permissions": { + "items": { + "$ref": "#/definitions/ResourcePermission" + }, + "maxItems": 64, + "minItems": 1, + "type": "array" + }, + "SslProperties": { + "$ref": "#/definitions/SslProperties" + }, + "Status": { + "$ref": "#/definitions/ResourceStatus" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 200, + "minItems": 1, + "type": "array" + }, + "Type": { + "$ref": "#/definitions/DataSourceType" + }, + "VpcConnectionProperties": { + "$ref": "#/definitions/VpcConnectionProperties" + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/CreatedTime", + "/properties/LastUpdatedTime", + "/properties/Status" + ], + "required": [ + "Name", + "Type" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-quicksight", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "quicksight:TagResource", + "quicksight:UntagResource", + "quicksight:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::QuickSight::DataSource", + "writeOnlyProperties": [ + "/properties/Credentials", + "/properties/FolderArns" + ] +} diff --git a/src/schema/aws-quicksight-folder.json b/src/schema/aws-quicksight-folder.json new file mode 100644 index 00000000..315ffdbf --- /dev/null +++ b/src/schema/aws-quicksight-folder.json @@ -0,0 +1,204 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ParentFolderArn", + "/properties/SharingModel", + "/properties/FolderType", + "/properties/FolderId", + "/properties/AwsAccountId" + ], + "definitions": { + "FolderType": { + "enum": [ + "SHARED", + "RESTRICTED" + ], + "type": "string" + }, + "ResourcePermission": { + "additionalProperties": false, + "description": "Permission for the resource.
", + "properties": { + "Actions": { + "description": "The IAM action to grant or revoke permissions on.
", + "insertionOrder": false, + "items": { + "type": "string" + }, + "maxItems": 20, + "minItems": 1, + "type": "array" + }, + "Principal": { + "description": "The Amazon Resource Name (ARN) of the principal. This can be one of the\n following:
\nThe ARN of an Amazon QuickSight user or group associated with a data source or dataset. (This is common.)
\nThe ARN of an Amazon QuickSight user, group, or namespace associated with an analysis, dashboard, template, or theme. (This is common.)
\nThe ARN of an Amazon Web Services account root: This is an IAM ARN rather than a QuickSight\n ARN. Use this option only to share resources (templates) across Amazon Web Services accounts.\n (This is less common.)
\nThe key or keys of the key-value pairs for the resource tag or tags assigned to the\n resource.
", + "properties": { + "Key": { + "description": "Tag key.
", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "Tag value.
", + "maxLength": 256, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "Definition of the AWS::QuickSight::Folder Resource Type.", + "handlers": { + "create": { + "permissions": [ + "quicksight:CreateFolder", + "quicksight:DescribeFolder", + "quicksight:UpdateFolderPermissions", + "quicksight:DescribeFolderPermissions", + "quicksight:TagResource", + "quicksight:ListTagsForResource" + ] + }, + "delete": { + "permissions": [ + "quicksight:DeleteFolder" + ] + }, + "list": { + "permissions": [ + "quicksight:ListFolders" + ] + }, + "read": { + "permissions": [ + "quicksight:DescribeFolder", + "quicksight:DescribeFolderPermissions", + "quicksight:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "quicksight:DescribeFolder", + "quicksight:UpdateFolder", + "quicksight:DescribeFolderPermissions", + "quicksight:UpdateFolderPermissions", + "quicksight:ListTagsForResource", + "quicksight:TagResource", + "quicksight:UntagResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/AwsAccountId", + "/properties/FolderId" + ], + "properties": { + "Arn": { + "description": "The Amazon Resource Name (ARN) for the folder.
", + "pattern": "^arn:.*", + "type": "string" + }, + "AwsAccountId": { + "maxLength": 12, + "minLength": 12, + "pattern": "^[0-9]{12}$", + "type": "string" + }, + "CreatedTime": { + "description": "The time that the folder was created.
", + "format": "date-time", + "type": "string" + }, + "FolderId": { + "maxLength": 2048, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "FolderType": { + "$ref": "#/definitions/FolderType" + }, + "LastUpdatedTime": { + "description": "The time that the folder was last updated.
", + "format": "date-time", + "type": "string" + }, + "Name": { + "maxLength": 200, + "minLength": 1, + "type": "string" + }, + "ParentFolderArn": { + "type": "string" + }, + "Permissions": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/ResourcePermission" + }, + "maxItems": 64, + "minItems": 1, + "type": "array" + }, + "SharingModel": { + "$ref": "#/definitions/SharingModel" + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 200, + "minItems": 1, + "type": "array" + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/CreatedTime", + "/properties/LastUpdatedTime" + ], + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "quicksight:TagResource", + "quicksight:UntagResource", + "quicksight:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::QuickSight::Folder", + "writeOnlyProperties": [ + "/properties/ParentFolderArn" + ] +} diff --git a/src/schema/aws-quicksight-refreshschedule.json b/src/schema/aws-quicksight-refreshschedule.json new file mode 100644 index 00000000..1137036e --- /dev/null +++ b/src/schema/aws-quicksight-refreshschedule.json @@ -0,0 +1,173 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/AwsAccountId", + "/properties/DataSetId", + "/properties/Schedule/ScheduleId" + ], + "definitions": { + "RefreshScheduleMap": { + "additionalProperties": false, + "properties": { + "RefreshType": { + "enum": [ + "FULL_REFRESH", + "INCREMENTAL_REFRESH" + ], + "type": "string" + }, + "ScheduleFrequency": { + "additionalProperties": false, + "description": "Information about the schedule frequency.
", + "properties": { + "Interval": { + "enum": [ + "MINUTE15", + "MINUTE30", + "HOURLY", + "DAILY", + "WEEKLY", + "MONTHLY" + ], + "type": "string" + }, + "RefreshOnDay": { + "additionalProperties": false, + "description": "The day scheduled for refresh.
", + "properties": { + "DayOfMonth": { + "description": "The Day Of Month for scheduled refresh.
", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "DayOfWeek": { + "enum": [ + "SUNDAY", + "MONDAY", + "TUESDAY", + "WEDNESDAY", + "THURSDAY", + "FRIDAY", + "SATURDAY" + ], + "type": "string" + } + }, + "required": [], + "type": "object" + }, + "TimeOfTheDay": { + "description": "The time of the day for scheduled refresh.
", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "TimeZone": { + "description": "The timezone for scheduled refresh.
", + "maxLength": 128, + "minLength": 1, + "type": "string" + } + }, + "required": [], + "type": "object" + }, + "ScheduleId": { + "description": "An unique identifier for the refresh schedule.
", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "StartAfterDateTime": { + "description": "The date time after which refresh is to be scheduled
", + "maxLength": 128, + "minLength": 1, + "type": "string" + } + }, + "required": [], + "type": "object" + } + }, + "description": "Definition of the AWS::QuickSight::RefreshSchedule Resource Type.", + "handlers": { + "create": { + "permissions": [ + "quicksight:CreateRefreshSchedule", + "quicksight:DescribeRefreshSchedule" + ] + }, + "delete": { + "permissions": [ + "quicksight:DeleteRefreshSchedule", + "quicksight:DescribeRefreshSchedule" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "AwsAccountId": { + "$ref": "resource-schema.json#/properties/AwsAccountId" + }, + "DataSetId": { + "$ref": "resource-schema.json#/properties/DataSetId" + } + }, + "required": [ + "AwsAccountId", + "DataSetId" + ] + }, + "permissions": [ + "quicksight:ListRefreshSchedules" + ] + }, + "read": { + "permissions": [ + "quicksight:DescribeRefreshSchedule" + ] + }, + "update": { + "permissions": [ + "quicksight:UpdateRefreshSchedule", + "quicksight:DescribeRefreshSchedule" + ] + } + }, + "primaryIdentifier": [ + "/properties/AwsAccountId", + "/properties/DataSetId", + "/properties/Schedule/ScheduleId" + ], + "properties": { + "Arn": { + "description": "The Amazon Resource Name (ARN) of the data source.
", + "type": "string" + }, + "AwsAccountId": { + "maxLength": 12, + "minLength": 12, + "pattern": "^[0-9]{12}$", + "type": "string" + }, + "DataSetId": { + "type": "string" + }, + "Schedule": { + "$ref": "#/definitions/RefreshScheduleMap" + } + }, + "readOnlyProperties": [ + "/properties/Arn" + ], + "required": [], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-quicksight", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::QuickSight::RefreshSchedule" +} diff --git a/src/schema/aws-quicksight-template.json b/src/schema/aws-quicksight-template.json new file mode 100644 index 00000000..5104466c --- /dev/null +++ b/src/schema/aws-quicksight-template.json @@ -0,0 +1,12378 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/AwsAccountId", + "/properties/TemplateId" + ], + "definitions": { + "AggregationFunction": { + "additionalProperties": false, + "properties": { + "AttributeAggregationFunction": { + "$ref": "#/definitions/AttributeAggregationFunction" + }, + "CategoricalAggregationFunction": { + "$ref": "#/definitions/CategoricalAggregationFunction" + }, + "DateAggregationFunction": { + "$ref": "#/definitions/DateAggregationFunction" + }, + "NumericalAggregationFunction": { + "$ref": "#/definitions/NumericalAggregationFunction" + } + }, + "type": "object" + }, + "AggregationSortConfiguration": { + "additionalProperties": false, + "properties": { + "AggregationFunction": { + "$ref": "#/definitions/AggregationFunction" + }, + "Column": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "SortDirection": { + "$ref": "#/definitions/SortDirection" + } + }, + "required": [ + "Column", + "SortDirection" + ], + "type": "object" + }, + "AllSheetsFilterScopeConfiguration": { + "additionalProperties": false, + "type": "object" + }, + "AnalysisDefaults": { + "additionalProperties": false, + "properties": { + "DefaultNewSheetConfiguration": { + "$ref": "#/definitions/DefaultNewSheetConfiguration" + } + }, + "required": [ + "DefaultNewSheetConfiguration" + ], + "type": "object" + }, + "AnchorDateConfiguration": { + "additionalProperties": false, + "properties": { + "AnchorOption": { + "$ref": "#/definitions/AnchorOption" + }, + "ParameterName": { + "maxLength": 2048, + "minLength": 1, + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + } + }, + "type": "object" + }, + "AnchorOption": { + "enum": [ + "NOW" + ], + "type": "string" + }, + "ArcAxisConfiguration": { + "additionalProperties": false, + "properties": { + "Range": { + "$ref": "#/definitions/ArcAxisDisplayRange" + }, + "ReserveRange": { + "default": 0, + "type": "number" + } + }, + "type": "object" + }, + "ArcAxisDisplayRange": { + "additionalProperties": false, + "properties": { + "Max": { + "default": null, + "type": "number" + }, + "Min": { + "default": null, + "type": "number" + } + }, + "type": "object" + }, + "ArcConfiguration": { + "additionalProperties": false, + "properties": { + "ArcAngle": { + "default": null, + "type": "number" + }, + "ArcThickness": { + "$ref": "#/definitions/ArcThicknessOptions" + } + }, + "type": "object" + }, + "ArcOptions": { + "additionalProperties": false, + "properties": { + "ArcThickness": { + "$ref": "#/definitions/ArcThickness" + } + }, + "type": "object" + }, + "ArcThickness": { + "enum": [ + "SMALL", + "MEDIUM", + "LARGE", + "WHOLE" + ], + "type": "string" + }, + "ArcThicknessOptions": { + "enum": [ + "SMALL", + "MEDIUM", + "LARGE" + ], + "type": "string" + }, + "AssetOptions": { + "additionalProperties": false, + "properties": { + "Timezone": { + "type": "string" + }, + "WeekStart": { + "$ref": "#/definitions/DayOfTheWeek" + } + }, + "type": "object" + }, + "AttributeAggregationFunction": { + "additionalProperties": false, + "properties": { + "SimpleAttributeAggregation": { + "$ref": "#/definitions/SimpleAttributeAggregationFunction" + }, + "ValueForMultipleValues": { + "type": "string" + } + }, + "type": "object" + }, + "AxisBinding": { + "enum": [ + "PRIMARY_YAXIS", + "SECONDARY_YAXIS" + ], + "type": "string" + }, + "AxisDataOptions": { + "additionalProperties": false, + "properties": { + "DateAxisOptions": { + "$ref": "#/definitions/DateAxisOptions" + }, + "NumericAxisOptions": { + "$ref": "#/definitions/NumericAxisOptions" + } + }, + "type": "object" + }, + "AxisDisplayDataDrivenRange": { + "additionalProperties": false, + "type": "object" + }, + "AxisDisplayMinMaxRange": { + "additionalProperties": false, + "properties": { + "Maximum": { + "default": null, + "type": "number" + }, + "Minimum": { + "default": null, + "type": "number" + } + }, + "type": "object" + }, + "AxisDisplayOptions": { + "additionalProperties": false, + "properties": { + "AxisLineVisibility": {}, + "AxisOffset": { + "description": "String based length that is composed of value and unit in px", + "type": "string" + }, + "DataOptions": { + "$ref": "#/definitions/AxisDataOptions" + }, + "GridLineVisibility": {}, + "ScrollbarOptions": { + "$ref": "#/definitions/ScrollBarOptions" + }, + "TickLabelOptions": { + "$ref": "#/definitions/AxisTickLabelOptions" + } + }, + "type": "object" + }, + "AxisDisplayRange": { + "additionalProperties": false, + "properties": { + "DataDriven": { + "$ref": "#/definitions/AxisDisplayDataDrivenRange" + }, + "MinMax": { + "$ref": "#/definitions/AxisDisplayMinMaxRange" + } + }, + "type": "object" + }, + "AxisLabelOptions": { + "additionalProperties": false, + "properties": { + "ApplyTo": { + "$ref": "#/definitions/AxisLabelReferenceOptions" + }, + "CustomLabel": { + "type": "string" + }, + "FontConfiguration": { + "$ref": "#/definitions/FontConfiguration" + } + }, + "type": "object" + }, + "AxisLabelReferenceOptions": { + "additionalProperties": false, + "properties": { + "Column": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "FieldId": { + "maxLength": 512, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Column", + "FieldId" + ], + "type": "object" + }, + "AxisLinearScale": { + "additionalProperties": false, + "properties": { + "StepCount": { + "default": null, + "type": "number" + }, + "StepSize": { + "default": null, + "type": "number" + } + }, + "type": "object" + }, + "AxisLogarithmicScale": { + "additionalProperties": false, + "properties": { + "Base": { + "default": null, + "type": "number" + } + }, + "type": "object" + }, + "AxisScale": { + "additionalProperties": false, + "properties": { + "Linear": { + "$ref": "#/definitions/AxisLinearScale" + }, + "Logarithmic": { + "$ref": "#/definitions/AxisLogarithmicScale" + } + }, + "type": "object" + }, + "AxisTickLabelOptions": { + "additionalProperties": false, + "properties": { + "LabelOptions": { + "$ref": "#/definitions/LabelOptions" + }, + "RotationAngle": { + "default": null, + "type": "number" + } + }, + "type": "object" + }, + "BarChartAggregatedFieldWells": { + "additionalProperties": false, + "properties": { + "Category": { + "items": { + "$ref": "#/definitions/DimensionField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "Colors": { + "items": { + "$ref": "#/definitions/DimensionField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "SmallMultiples": { + "items": { + "$ref": "#/definitions/DimensionField" + }, + "maxItems": 1, + "minItems": 0, + "type": "array" + }, + "Values": { + "items": { + "$ref": "#/definitions/MeasureField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "BarChartConfiguration": { + "additionalProperties": false, + "properties": { + "BarsArrangement": { + "$ref": "#/definitions/BarsArrangement" + }, + "CategoryAxis": { + "$ref": "#/definitions/AxisDisplayOptions" + }, + "CategoryLabelOptions": { + "$ref": "#/definitions/ChartAxisLabelOptions" + }, + "ColorLabelOptions": { + "$ref": "#/definitions/ChartAxisLabelOptions" + }, + "ContributionAnalysisDefaults": { + "items": { + "$ref": "#/definitions/ContributionAnalysisDefault" + }, + "maxItems": 200, + "minItems": 1, + "type": "array" + }, + "DataLabels": { + "$ref": "#/definitions/DataLabelOptions" + }, + "FieldWells": { + "$ref": "#/definitions/BarChartFieldWells" + }, + "Interactions": { + "$ref": "#/definitions/VisualInteractionOptions" + }, + "Legend": { + "$ref": "#/definitions/LegendOptions" + }, + "Orientation": { + "$ref": "#/definitions/BarChartOrientation" + }, + "ReferenceLines": { + "items": { + "$ref": "#/definitions/ReferenceLine" + }, + "maxItems": 20, + "minItems": 0, + "type": "array" + }, + "SmallMultiplesOptions": { + "$ref": "#/definitions/SmallMultiplesOptions" + }, + "SortConfiguration": { + "$ref": "#/definitions/BarChartSortConfiguration" + }, + "Tooltip": { + "$ref": "#/definitions/TooltipOptions" + }, + "ValueAxis": { + "$ref": "#/definitions/AxisDisplayOptions" + }, + "ValueLabelOptions": { + "$ref": "#/definitions/ChartAxisLabelOptions" + }, + "VisualPalette": { + "$ref": "#/definitions/VisualPalette" + } + }, + "type": "object" + }, + "BarChartFieldWells": { + "additionalProperties": false, + "properties": { + "BarChartAggregatedFieldWells": { + "$ref": "#/definitions/BarChartAggregatedFieldWells" + } + }, + "type": "object" + }, + "BarChartOrientation": { + "enum": [ + "HORIZONTAL", + "VERTICAL" + ], + "type": "string" + }, + "BarChartSortConfiguration": { + "additionalProperties": false, + "properties": { + "CategoryItemsLimit": { + "$ref": "#/definitions/ItemsLimitConfiguration" + }, + "CategorySort": { + "items": { + "$ref": "#/definitions/FieldSortOptions" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + }, + "ColorItemsLimit": { + "$ref": "#/definitions/ItemsLimitConfiguration" + }, + "ColorSort": { + "items": { + "$ref": "#/definitions/FieldSortOptions" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + }, + "SmallMultiplesLimitConfiguration": { + "$ref": "#/definitions/ItemsLimitConfiguration" + }, + "SmallMultiplesSort": { + "items": { + "$ref": "#/definitions/FieldSortOptions" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "BarChartVisual": { + "additionalProperties": false, + "properties": { + "Actions": { + "items": { + "$ref": "#/definitions/VisualCustomAction" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + }, + "ChartConfiguration": { + "$ref": "#/definitions/BarChartConfiguration" + }, + "ColumnHierarchies": { + "items": { + "$ref": "#/definitions/ColumnHierarchy" + }, + "maxItems": 2, + "minItems": 0, + "type": "array" + }, + "Subtitle": { + "$ref": "#/definitions/VisualSubtitleLabelOptions" + }, + "Title": { + "$ref": "#/definitions/VisualTitleLabelOptions" + }, + "VisualContentAltText": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "VisualId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + } + }, + "required": [ + "VisualId" + ], + "type": "object" + }, + "BarsArrangement": { + "enum": [ + "CLUSTERED", + "STACKED", + "STACKED_PERCENT" + ], + "type": "string" + }, + "BaseMapStyleType": { + "enum": [ + "LIGHT_GRAY", + "DARK_GRAY", + "STREET", + "IMAGERY" + ], + "type": "string" + }, + "BinCountOptions": { + "additionalProperties": false, + "properties": { + "Value": { + "minimum": 0, + "type": "number" + } + }, + "type": "object" + }, + "BinWidthOptions": { + "additionalProperties": false, + "properties": { + "BinCountLimit": { + "maximum": 1000, + "minimum": 0, + "type": "number" + }, + "Value": { + "minimum": 0, + "type": "number" + } + }, + "type": "object" + }, + "BodySectionConfiguration": { + "additionalProperties": false, + "properties": { + "Content": { + "$ref": "#/definitions/BodySectionContent" + }, + "PageBreakConfiguration": { + "$ref": "#/definitions/SectionPageBreakConfiguration" + }, + "RepeatConfiguration": { + "$ref": "#/definitions/BodySectionRepeatConfiguration" + }, + "SectionId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "Style": { + "$ref": "#/definitions/SectionStyle" + } + }, + "required": [ + "Content", + "SectionId" + ], + "type": "object" + }, + "BodySectionContent": { + "additionalProperties": false, + "properties": { + "Layout": { + "$ref": "#/definitions/SectionLayoutConfiguration" + } + }, + "type": "object" + }, + "BodySectionDynamicCategoryDimensionConfiguration": { + "additionalProperties": false, + "properties": { + "Column": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "Limit": { + "maximum": 1000, + "minimum": 1, + "type": "number" + }, + "SortByMetrics": { + "items": { + "$ref": "#/definitions/ColumnSort" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + } + }, + "required": [ + "Column" + ], + "type": "object" + }, + "BodySectionDynamicNumericDimensionConfiguration": { + "additionalProperties": false, + "properties": { + "Column": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "Limit": { + "maximum": 1000, + "minimum": 1, + "type": "number" + }, + "SortByMetrics": { + "items": { + "$ref": "#/definitions/ColumnSort" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + } + }, + "required": [ + "Column" + ], + "type": "object" + }, + "BodySectionRepeatConfiguration": { + "additionalProperties": false, + "properties": { + "DimensionConfigurations": { + "items": { + "$ref": "#/definitions/BodySectionRepeatDimensionConfiguration" + }, + "maxItems": 3, + "minItems": 0, + "type": "array" + }, + "NonRepeatingVisuals": { + "items": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "maxItems": 20, + "minItems": 0, + "type": "array" + }, + "PageBreakConfiguration": { + "$ref": "#/definitions/BodySectionRepeatPageBreakConfiguration" + } + }, + "type": "object" + }, + "BodySectionRepeatDimensionConfiguration": { + "additionalProperties": false, + "properties": { + "DynamicCategoryDimensionConfiguration": { + "$ref": "#/definitions/BodySectionDynamicCategoryDimensionConfiguration" + }, + "DynamicNumericDimensionConfiguration": { + "$ref": "#/definitions/BodySectionDynamicNumericDimensionConfiguration" + } + }, + "type": "object" + }, + "BodySectionRepeatPageBreakConfiguration": { + "additionalProperties": false, + "properties": { + "After": { + "$ref": "#/definitions/SectionAfterPageBreak" + } + }, + "type": "object" + }, + "BoxPlotAggregatedFieldWells": { + "additionalProperties": false, + "properties": { + "GroupBy": { + "items": { + "$ref": "#/definitions/DimensionField" + }, + "maxItems": 1, + "minItems": 0, + "type": "array" + }, + "Values": { + "items": { + "$ref": "#/definitions/MeasureField" + }, + "maxItems": 5, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "BoxPlotChartConfiguration": { + "additionalProperties": false, + "properties": { + "BoxPlotOptions": { + "$ref": "#/definitions/BoxPlotOptions" + }, + "CategoryAxis": { + "$ref": "#/definitions/AxisDisplayOptions" + }, + "CategoryLabelOptions": { + "$ref": "#/definitions/ChartAxisLabelOptions" + }, + "FieldWells": { + "$ref": "#/definitions/BoxPlotFieldWells" + }, + "Interactions": { + "$ref": "#/definitions/VisualInteractionOptions" + }, + "Legend": { + "$ref": "#/definitions/LegendOptions" + }, + "PrimaryYAxisDisplayOptions": { + "$ref": "#/definitions/AxisDisplayOptions" + }, + "PrimaryYAxisLabelOptions": { + "$ref": "#/definitions/ChartAxisLabelOptions" + }, + "ReferenceLines": { + "items": { + "$ref": "#/definitions/ReferenceLine" + }, + "maxItems": 20, + "minItems": 0, + "type": "array" + }, + "SortConfiguration": { + "$ref": "#/definitions/BoxPlotSortConfiguration" + }, + "Tooltip": { + "$ref": "#/definitions/TooltipOptions" + }, + "VisualPalette": { + "$ref": "#/definitions/VisualPalette" + } + }, + "type": "object" + }, + "BoxPlotFieldWells": { + "additionalProperties": false, + "properties": { + "BoxPlotAggregatedFieldWells": { + "$ref": "#/definitions/BoxPlotAggregatedFieldWells" + } + }, + "type": "object" + }, + "BoxPlotFillStyle": { + "enum": [ + "SOLID", + "TRANSPARENT" + ], + "type": "string" + }, + "BoxPlotOptions": { + "additionalProperties": false, + "properties": { + "AllDataPointsVisibility": {}, + "OutlierVisibility": {}, + "StyleOptions": { + "$ref": "#/definitions/BoxPlotStyleOptions" + } + }, + "type": "object" + }, + "BoxPlotSortConfiguration": { + "additionalProperties": false, + "properties": { + "CategorySort": { + "items": { + "$ref": "#/definitions/FieldSortOptions" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + }, + "PaginationConfiguration": { + "$ref": "#/definitions/PaginationConfiguration" + } + }, + "type": "object" + }, + "BoxPlotStyleOptions": { + "additionalProperties": false, + "properties": { + "FillStyle": { + "$ref": "#/definitions/BoxPlotFillStyle" + } + }, + "type": "object" + }, + "BoxPlotVisual": { + "additionalProperties": false, + "properties": { + "Actions": { + "items": { + "$ref": "#/definitions/VisualCustomAction" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + }, + "ChartConfiguration": { + "$ref": "#/definitions/BoxPlotChartConfiguration" + }, + "ColumnHierarchies": { + "items": { + "$ref": "#/definitions/ColumnHierarchy" + }, + "maxItems": 2, + "minItems": 0, + "type": "array" + }, + "Subtitle": { + "$ref": "#/definitions/VisualSubtitleLabelOptions" + }, + "Title": { + "$ref": "#/definitions/VisualTitleLabelOptions" + }, + "VisualContentAltText": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "VisualId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + } + }, + "required": [ + "VisualId" + ], + "type": "object" + }, + "CalculatedField": { + "additionalProperties": false, + "properties": { + "DataSetIdentifier": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "Expression": { + "maxLength": 32000, + "minLength": 1, + "type": "string" + }, + "Name": { + "maxLength": 127, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "DataSetIdentifier", + "Expression", + "Name" + ], + "type": "object" + }, + "CalculatedMeasureField": { + "additionalProperties": false, + "properties": { + "Expression": { + "maxLength": 4096, + "minLength": 1, + "type": "string" + }, + "FieldId": { + "maxLength": 512, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Expression", + "FieldId" + ], + "type": "object" + }, + "CascadingControlConfiguration": { + "additionalProperties": false, + "properties": { + "SourceControls": { + "items": { + "$ref": "#/definitions/CascadingControlSource" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "CascadingControlSource": { + "additionalProperties": false, + "properties": { + "ColumnToMatch": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "SourceSheetControlId": { + "type": "string" + } + }, + "type": "object" + }, + "CategoricalAggregationFunction": { + "enum": [ + "COUNT", + "DISTINCT_COUNT" + ], + "type": "string" + }, + "CategoricalDimensionField": { + "additionalProperties": false, + "properties": { + "Column": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "FieldId": { + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "FormatConfiguration": { + "$ref": "#/definitions/StringFormatConfiguration" + }, + "HierarchyId": { + "maxLength": 512, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Column", + "FieldId" + ], + "type": "object" + }, + "CategoricalMeasureField": { + "additionalProperties": false, + "properties": { + "AggregationFunction": { + "$ref": "#/definitions/CategoricalAggregationFunction" + }, + "Column": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "FieldId": { + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "FormatConfiguration": { + "$ref": "#/definitions/StringFormatConfiguration" + } + }, + "required": [ + "Column", + "FieldId" + ], + "type": "object" + }, + "CategoryDrillDownFilter": { + "additionalProperties": false, + "properties": { + "CategoryValues": { + "items": { + "maxLength": 512, + "minLength": 0, + "type": "string" + }, + "maxItems": 100000, + "minItems": 0, + "type": "array" + }, + "Column": { + "$ref": "#/definitions/ColumnIdentifier" + } + }, + "required": [ + "CategoryValues", + "Column" + ], + "type": "object" + }, + "CategoryFilter": { + "additionalProperties": false, + "properties": { + "Column": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "Configuration": { + "$ref": "#/definitions/CategoryFilterConfiguration" + }, + "DefaultFilterControlConfiguration": { + "$ref": "#/definitions/DefaultFilterControlConfiguration" + }, + "FilterId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + } + }, + "required": [ + "Column", + "Configuration", + "FilterId" + ], + "type": "object" + }, + "CategoryFilterConfiguration": { + "additionalProperties": false, + "properties": { + "CustomFilterConfiguration": { + "$ref": "#/definitions/CustomFilterConfiguration" + }, + "CustomFilterListConfiguration": { + "$ref": "#/definitions/CustomFilterListConfiguration" + }, + "FilterListConfiguration": { + "$ref": "#/definitions/FilterListConfiguration" + } + }, + "type": "object" + }, + "CategoryFilterMatchOperator": { + "enum": [ + "EQUALS", + "DOES_NOT_EQUAL", + "CONTAINS", + "DOES_NOT_CONTAIN", + "STARTS_WITH", + "ENDS_WITH" + ], + "type": "string" + }, + "CategoryFilterSelectAllOptions": { + "enum": [ + "FILTER_ALL_VALUES" + ], + "type": "string" + }, + "CategoryInnerFilter": { + "additionalProperties": false, + "properties": { + "Column": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "Configuration": { + "$ref": "#/definitions/CategoryFilterConfiguration" + }, + "DefaultFilterControlConfiguration": { + "$ref": "#/definitions/DefaultFilterControlConfiguration" + } + }, + "required": [ + "Column", + "Configuration" + ], + "type": "object" + }, + "ChartAxisLabelOptions": { + "additionalProperties": false, + "properties": { + "AxisLabelOptions": { + "items": { + "$ref": "#/definitions/AxisLabelOptions" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + }, + "SortIconVisibility": {}, + "Visibility": {} + }, + "type": "object" + }, + "ClusterMarker": { + "additionalProperties": false, + "properties": { + "SimpleClusterMarker": { + "$ref": "#/definitions/SimpleClusterMarker" + } + }, + "type": "object" + }, + "ClusterMarkerConfiguration": { + "additionalProperties": false, + "properties": { + "ClusterMarker": { + "$ref": "#/definitions/ClusterMarker" + } + }, + "type": "object" + }, + "ColorFillType": { + "enum": [ + "DISCRETE", + "GRADIENT" + ], + "type": "string" + }, + "ColorScale": { + "additionalProperties": false, + "properties": { + "ColorFillType": { + "$ref": "#/definitions/ColorFillType" + }, + "Colors": { + "items": { + "$ref": "#/definitions/DataColor" + }, + "maxItems": 3, + "minItems": 2, + "type": "array" + }, + "NullValueColor": { + "$ref": "#/definitions/DataColor" + } + }, + "required": [ + "ColorFillType", + "Colors" + ], + "type": "object" + }, + "ColorsConfiguration": { + "additionalProperties": false, + "properties": { + "CustomColors": { + "items": { + "$ref": "#/definitions/CustomColor" + }, + "maxItems": 50, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "ColumnConfiguration": { + "additionalProperties": false, + "properties": { + "ColorsConfiguration": { + "$ref": "#/definitions/ColorsConfiguration" + }, + "Column": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "FormatConfiguration": { + "$ref": "#/definitions/FormatConfiguration" + }, + "Role": { + "$ref": "#/definitions/ColumnRole" + } + }, + "required": [ + "Column" + ], + "type": "object" + }, + "ColumnGroupColumnSchema": { + "additionalProperties": false, + "description": "A structure describing the name, data type, and geographic role of the columns.
", + "properties": { + "Name": { + "description": "The name of the column group's column schema.
", + "type": "string" + } + }, + "type": "object" + }, + "ColumnGroupSchema": { + "additionalProperties": false, + "description": "The column group schema.
", + "properties": { + "ColumnGroupColumnSchemaList": { + "description": "A structure containing the list of schemas for column group columns.
", + "items": { + "$ref": "#/definitions/ColumnGroupColumnSchema" + }, + "maxItems": 500, + "minItems": 0, + "type": "array" + }, + "Name": { + "description": "The name of the column group schema.
", + "type": "string" + } + }, + "type": "object" + }, + "ColumnHierarchy": { + "additionalProperties": false, + "properties": { + "DateTimeHierarchy": { + "$ref": "#/definitions/DateTimeHierarchy" + }, + "ExplicitHierarchy": { + "$ref": "#/definitions/ExplicitHierarchy" + }, + "PredefinedHierarchy": { + "$ref": "#/definitions/PredefinedHierarchy" + } + }, + "type": "object" + }, + "ColumnIdentifier": { + "additionalProperties": false, + "properties": { + "ColumnName": { + "maxLength": 127, + "minLength": 1, + "type": "string" + }, + "DataSetIdentifier": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "ColumnName", + "DataSetIdentifier" + ], + "type": "object" + }, + "ColumnRole": { + "enum": [ + "DIMENSION", + "MEASURE" + ], + "type": "string" + }, + "ColumnSchema": { + "additionalProperties": false, + "description": "The column schema.
", + "properties": { + "DataType": { + "description": "The data type of the column schema.
", + "type": "string" + }, + "GeographicRole": { + "description": "The geographic role of the column schema.
", + "type": "string" + }, + "Name": { + "description": "The name of the column schema.
", + "type": "string" + } + }, + "type": "object" + }, + "ColumnSort": { + "additionalProperties": false, + "properties": { + "AggregationFunction": { + "$ref": "#/definitions/AggregationFunction" + }, + "Direction": { + "$ref": "#/definitions/SortDirection" + }, + "SortBy": { + "$ref": "#/definitions/ColumnIdentifier" + } + }, + "required": [ + "Direction", + "SortBy" + ], + "type": "object" + }, + "ColumnTooltipItem": { + "additionalProperties": false, + "properties": { + "Aggregation": { + "$ref": "#/definitions/AggregationFunction" + }, + "Column": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "Label": { + "type": "string" + }, + "TooltipTarget": { + "$ref": "#/definitions/TooltipTarget" + }, + "Visibility": {} + }, + "required": [ + "Column" + ], + "type": "object" + }, + "ComboChartAggregatedFieldWells": { + "additionalProperties": false, + "properties": { + "BarValues": { + "items": { + "$ref": "#/definitions/MeasureField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "Category": { + "items": { + "$ref": "#/definitions/DimensionField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "Colors": { + "items": { + "$ref": "#/definitions/DimensionField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "LineValues": { + "items": { + "$ref": "#/definitions/MeasureField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "ComboChartConfiguration": { + "additionalProperties": false, + "properties": { + "BarDataLabels": { + "$ref": "#/definitions/DataLabelOptions" + }, + "BarsArrangement": { + "$ref": "#/definitions/BarsArrangement" + }, + "CategoryAxis": { + "$ref": "#/definitions/AxisDisplayOptions" + }, + "CategoryLabelOptions": { + "$ref": "#/definitions/ChartAxisLabelOptions" + }, + "ColorLabelOptions": { + "$ref": "#/definitions/ChartAxisLabelOptions" + }, + "FieldWells": { + "$ref": "#/definitions/ComboChartFieldWells" + }, + "Interactions": { + "$ref": "#/definitions/VisualInteractionOptions" + }, + "Legend": { + "$ref": "#/definitions/LegendOptions" + }, + "LineDataLabels": { + "$ref": "#/definitions/DataLabelOptions" + }, + "PrimaryYAxisDisplayOptions": { + "$ref": "#/definitions/AxisDisplayOptions" + }, + "PrimaryYAxisLabelOptions": { + "$ref": "#/definitions/ChartAxisLabelOptions" + }, + "ReferenceLines": { + "items": { + "$ref": "#/definitions/ReferenceLine" + }, + "maxItems": 20, + "minItems": 0, + "type": "array" + }, + "SecondaryYAxisDisplayOptions": { + "$ref": "#/definitions/AxisDisplayOptions" + }, + "SecondaryYAxisLabelOptions": { + "$ref": "#/definitions/ChartAxisLabelOptions" + }, + "SingleAxisOptions": { + "$ref": "#/definitions/SingleAxisOptions" + }, + "SortConfiguration": { + "$ref": "#/definitions/ComboChartSortConfiguration" + }, + "Tooltip": { + "$ref": "#/definitions/TooltipOptions" + }, + "VisualPalette": { + "$ref": "#/definitions/VisualPalette" + } + }, + "type": "object" + }, + "ComboChartFieldWells": { + "additionalProperties": false, + "properties": { + "ComboChartAggregatedFieldWells": { + "$ref": "#/definitions/ComboChartAggregatedFieldWells" + } + }, + "type": "object" + }, + "ComboChartSortConfiguration": { + "additionalProperties": false, + "properties": { + "CategoryItemsLimit": { + "$ref": "#/definitions/ItemsLimitConfiguration" + }, + "CategorySort": { + "items": { + "$ref": "#/definitions/FieldSortOptions" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + }, + "ColorItemsLimit": { + "$ref": "#/definitions/ItemsLimitConfiguration" + }, + "ColorSort": { + "items": { + "$ref": "#/definitions/FieldSortOptions" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "ComboChartVisual": { + "additionalProperties": false, + "properties": { + "Actions": { + "items": { + "$ref": "#/definitions/VisualCustomAction" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + }, + "ChartConfiguration": { + "$ref": "#/definitions/ComboChartConfiguration" + }, + "ColumnHierarchies": { + "items": { + "$ref": "#/definitions/ColumnHierarchy" + }, + "maxItems": 2, + "minItems": 0, + "type": "array" + }, + "Subtitle": { + "$ref": "#/definitions/VisualSubtitleLabelOptions" + }, + "Title": { + "$ref": "#/definitions/VisualTitleLabelOptions" + }, + "VisualContentAltText": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "VisualId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + } + }, + "required": [ + "VisualId" + ], + "type": "object" + }, + "CommitMode": { + "enum": [ + "AUTO", + "MANUAL" + ], + "type": "string" + }, + "ComparisonConfiguration": { + "additionalProperties": false, + "properties": { + "ComparisonFormat": { + "$ref": "#/definitions/ComparisonFormatConfiguration" + }, + "ComparisonMethod": { + "$ref": "#/definitions/ComparisonMethod" + } + }, + "type": "object" + }, + "ComparisonFormatConfiguration": { + "additionalProperties": false, + "properties": { + "NumberDisplayFormatConfiguration": { + "$ref": "#/definitions/NumberDisplayFormatConfiguration" + }, + "PercentageDisplayFormatConfiguration": { + "$ref": "#/definitions/PercentageDisplayFormatConfiguration" + } + }, + "type": "object" + }, + "ComparisonMethod": { + "enum": [ + "DIFFERENCE", + "PERCENT_DIFFERENCE", + "PERCENT" + ], + "type": "string" + }, + "Computation": { + "additionalProperties": false, + "properties": { + "Forecast": { + "$ref": "#/definitions/ForecastComputation" + }, + "GrowthRate": { + "$ref": "#/definitions/GrowthRateComputation" + }, + "MaximumMinimum": { + "$ref": "#/definitions/MaximumMinimumComputation" + }, + "MetricComparison": { + "$ref": "#/definitions/MetricComparisonComputation" + }, + "PeriodOverPeriod": { + "$ref": "#/definitions/PeriodOverPeriodComputation" + }, + "PeriodToDate": { + "$ref": "#/definitions/PeriodToDateComputation" + }, + "TopBottomMovers": { + "$ref": "#/definitions/TopBottomMoversComputation" + }, + "TopBottomRanked": { + "$ref": "#/definitions/TopBottomRankedComputation" + }, + "TotalAggregation": { + "$ref": "#/definitions/TotalAggregationComputation" + }, + "UniqueValues": { + "$ref": "#/definitions/UniqueValuesComputation" + } + }, + "type": "object" + }, + "ConditionalFormattingColor": { + "additionalProperties": false, + "properties": { + "Gradient": { + "$ref": "#/definitions/ConditionalFormattingGradientColor" + }, + "Solid": { + "$ref": "#/definitions/ConditionalFormattingSolidColor" + } + }, + "type": "object" + }, + "ConditionalFormattingCustomIconCondition": { + "additionalProperties": false, + "properties": { + "Color": { + "pattern": "^#[A-F0-9]{6}$", + "type": "string" + }, + "DisplayConfiguration": { + "$ref": "#/definitions/ConditionalFormattingIconDisplayConfiguration" + }, + "Expression": { + "maxLength": 4096, + "minLength": 1, + "type": "string" + }, + "IconOptions": { + "$ref": "#/definitions/ConditionalFormattingCustomIconOptions" + } + }, + "required": [ + "Expression", + "IconOptions" + ], + "type": "object" + }, + "ConditionalFormattingCustomIconOptions": { + "additionalProperties": false, + "properties": { + "Icon": { + "$ref": "#/definitions/Icon" + }, + "UnicodeIcon": { + "pattern": "^[^\\u0000-\\u00FF]$", + "type": "string" + } + }, + "type": "object" + }, + "ConditionalFormattingGradientColor": { + "additionalProperties": false, + "properties": { + "Color": { + "$ref": "#/definitions/GradientColor" + }, + "Expression": { + "maxLength": 4096, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Color", + "Expression" + ], + "type": "object" + }, + "ConditionalFormattingIcon": { + "additionalProperties": false, + "properties": { + "CustomCondition": { + "$ref": "#/definitions/ConditionalFormattingCustomIconCondition" + }, + "IconSet": { + "$ref": "#/definitions/ConditionalFormattingIconSet" + } + }, + "type": "object" + }, + "ConditionalFormattingIconDisplayConfiguration": { + "additionalProperties": false, + "properties": { + "IconDisplayOption": { + "$ref": "#/definitions/ConditionalFormattingIconDisplayOption" + } + }, + "type": "object" + }, + "ConditionalFormattingIconDisplayOption": { + "enum": [ + "ICON_ONLY" + ], + "type": "string" + }, + "ConditionalFormattingIconSet": { + "additionalProperties": false, + "properties": { + "Expression": { + "maxLength": 4096, + "minLength": 1, + "type": "string" + }, + "IconSetType": { + "$ref": "#/definitions/ConditionalFormattingIconSetType" + } + }, + "required": [ + "Expression" + ], + "type": "object" + }, + "ConditionalFormattingIconSetType": { + "enum": [ + "PLUS_MINUS", + "CHECK_X", + "THREE_COLOR_ARROW", + "THREE_GRAY_ARROW", + "CARET_UP_MINUS_DOWN", + "THREE_SHAPE", + "THREE_CIRCLE", + "FLAGS", + "BARS", + "FOUR_COLOR_ARROW", + "FOUR_GRAY_ARROW" + ], + "type": "string" + }, + "ConditionalFormattingSolidColor": { + "additionalProperties": false, + "properties": { + "Color": { + "pattern": "^#[A-F0-9]{6}$", + "type": "string" + }, + "Expression": { + "maxLength": 4096, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Expression" + ], + "type": "object" + }, + "ContextMenuOption": { + "additionalProperties": false, + "properties": { + "AvailabilityStatus": { + "$ref": "#/definitions/DashboardBehavior" + } + }, + "type": "object" + }, + "ContributionAnalysisDefault": { + "additionalProperties": false, + "properties": { + "ContributorDimensions": { + "items": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "maxItems": 4, + "minItems": 1, + "type": "array" + }, + "MeasureFieldId": { + "maxLength": 512, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "ContributorDimensions", + "MeasureFieldId" + ], + "type": "object" + }, + "CrossDatasetTypes": { + "enum": [ + "ALL_DATASETS", + "SINGLE_DATASET" + ], + "type": "string" + }, + "CurrencyDisplayFormatConfiguration": { + "additionalProperties": false, + "properties": { + "DecimalPlacesConfiguration": { + "$ref": "#/definitions/DecimalPlacesConfiguration" + }, + "NegativeValueConfiguration": { + "$ref": "#/definitions/NegativeValueConfiguration" + }, + "NullValueFormatConfiguration": { + "$ref": "#/definitions/NullValueFormatConfiguration" + }, + "NumberScale": { + "$ref": "#/definitions/NumberScale" + }, + "Prefix": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "SeparatorConfiguration": { + "$ref": "#/definitions/NumericSeparatorConfiguration" + }, + "Suffix": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Symbol": { + "pattern": "^[A-Z]{3}$", + "type": "string" + } + }, + "type": "object" + }, + "CustomActionFilterOperation": { + "additionalProperties": false, + "properties": { + "SelectedFieldsConfiguration": { + "$ref": "#/definitions/FilterOperationSelectedFieldsConfiguration" + }, + "TargetVisualsConfiguration": { + "$ref": "#/definitions/FilterOperationTargetVisualsConfiguration" + } + }, + "required": [ + "SelectedFieldsConfiguration", + "TargetVisualsConfiguration" + ], + "type": "object" + }, + "CustomActionNavigationOperation": { + "additionalProperties": false, + "properties": { + "LocalNavigationConfiguration": { + "$ref": "#/definitions/LocalNavigationConfiguration" + } + }, + "type": "object" + }, + "CustomActionSetParametersOperation": { + "additionalProperties": false, + "properties": { + "ParameterValueConfigurations": { + "items": { + "$ref": "#/definitions/SetParameterValueConfiguration" + }, + "maxItems": 200, + "minItems": 1, + "type": "array" + } + }, + "required": [ + "ParameterValueConfigurations" + ], + "type": "object" + }, + "CustomActionURLOperation": { + "additionalProperties": false, + "properties": { + "URLTarget": { + "$ref": "#/definitions/URLTargetConfiguration" + }, + "URLTemplate": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "URLTarget", + "URLTemplate" + ], + "type": "object" + }, + "CustomColor": { + "additionalProperties": false, + "properties": { + "Color": { + "pattern": "^#[A-F0-9]{6}$", + "type": "string" + }, + "FieldValue": { + "maxLength": 2048, + "minLength": 0, + "type": "string" + }, + "SpecialValue": { + "$ref": "#/definitions/SpecialValue" + } + }, + "required": [ + "Color" + ], + "type": "object" + }, + "CustomContentConfiguration": { + "additionalProperties": false, + "properties": { + "ContentType": { + "$ref": "#/definitions/CustomContentType" + }, + "ContentUrl": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "ImageScaling": { + "$ref": "#/definitions/CustomContentImageScalingConfiguration" + }, + "Interactions": { + "$ref": "#/definitions/VisualInteractionOptions" + } + }, + "type": "object" + }, + "CustomContentImageScalingConfiguration": { + "enum": [ + "FIT_TO_HEIGHT", + "FIT_TO_WIDTH", + "DO_NOT_SCALE", + "SCALE_TO_VISUAL" + ], + "type": "string" + }, + "CustomContentType": { + "enum": [ + "IMAGE", + "OTHER_EMBEDDED_CONTENT" + ], + "type": "string" + }, + "CustomContentVisual": { + "additionalProperties": false, + "properties": { + "Actions": { + "items": { + "$ref": "#/definitions/VisualCustomAction" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + }, + "ChartConfiguration": { + "$ref": "#/definitions/CustomContentConfiguration" + }, + "DataSetIdentifier": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "Subtitle": { + "$ref": "#/definitions/VisualSubtitleLabelOptions" + }, + "Title": { + "$ref": "#/definitions/VisualTitleLabelOptions" + }, + "VisualContentAltText": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "VisualId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + } + }, + "required": [ + "DataSetIdentifier", + "VisualId" + ], + "type": "object" + }, + "CustomFilterConfiguration": { + "additionalProperties": false, + "properties": { + "CategoryValue": { + "maxLength": 512, + "minLength": 0, + "type": "string" + }, + "MatchOperator": { + "$ref": "#/definitions/CategoryFilterMatchOperator" + }, + "NullOption": { + "$ref": "#/definitions/FilterNullOption" + }, + "ParameterName": { + "maxLength": 2048, + "minLength": 1, + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + "SelectAllOptions": { + "$ref": "#/definitions/CategoryFilterSelectAllOptions" + } + }, + "required": [ + "MatchOperator", + "NullOption" + ], + "type": "object" + }, + "CustomFilterListConfiguration": { + "additionalProperties": false, + "properties": { + "CategoryValues": { + "items": { + "maxLength": 512, + "minLength": 0, + "type": "string" + }, + "maxItems": 100000, + "minItems": 0, + "type": "array" + }, + "MatchOperator": { + "$ref": "#/definitions/CategoryFilterMatchOperator" + }, + "NullOption": { + "$ref": "#/definitions/FilterNullOption" + }, + "SelectAllOptions": { + "$ref": "#/definitions/CategoryFilterSelectAllOptions" + } + }, + "required": [ + "MatchOperator", + "NullOption" + ], + "type": "object" + }, + "CustomNarrativeOptions": { + "additionalProperties": false, + "properties": { + "Narrative": { + "maxLength": 150000, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Narrative" + ], + "type": "object" + }, + "CustomParameterValues": { + "additionalProperties": false, + "properties": { + "DateTimeValues": { + "items": { + "format": "date-time", + "type": "string" + }, + "maxItems": 50000, + "minItems": 0, + "type": "array" + }, + "DecimalValues": { + "items": { + "type": "number" + }, + "maxItems": 50000, + "minItems": 0, + "type": "array" + }, + "IntegerValues": { + "items": { + "type": "number" + }, + "maxItems": 50000, + "minItems": 0, + "type": "array" + }, + "StringValues": { + "items": { + "type": "string" + }, + "maxItems": 50000, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "CustomValuesConfiguration": { + "additionalProperties": false, + "properties": { + "CustomValues": { + "$ref": "#/definitions/CustomParameterValues" + }, + "IncludeNullValue": { + "type": "boolean" + } + }, + "required": [ + "CustomValues" + ], + "type": "object" + }, + "DashboardBehavior": { + "enum": [ + "ENABLED", + "DISABLED" + ], + "type": "string" + }, + "DataBarsOptions": { + "additionalProperties": false, + "properties": { + "FieldId": { + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "NegativeColor": { + "pattern": "^#[A-F0-9]{6}$", + "type": "string" + }, + "PositiveColor": { + "pattern": "^#[A-F0-9]{6}$", + "type": "string" + } + }, + "required": [ + "FieldId" + ], + "type": "object" + }, + "DataColor": { + "additionalProperties": false, + "properties": { + "Color": { + "pattern": "^#[A-F0-9]{6}$", + "type": "string" + }, + "DataValue": { + "default": null, + "type": "number" + } + }, + "type": "object" + }, + "DataFieldSeriesItem": { + "additionalProperties": false, + "properties": { + "AxisBinding": { + "$ref": "#/definitions/AxisBinding" + }, + "FieldId": { + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "FieldValue": { + "type": "string" + }, + "Settings": { + "$ref": "#/definitions/LineChartSeriesSettings" + } + }, + "required": [ + "AxisBinding", + "FieldId" + ], + "type": "object" + }, + "DataLabelContent": { + "enum": [ + "VALUE", + "PERCENT", + "VALUE_AND_PERCENT" + ], + "type": "string" + }, + "DataLabelOptions": { + "additionalProperties": false, + "properties": { + "CategoryLabelVisibility": {}, + "DataLabelTypes": { + "items": { + "$ref": "#/definitions/DataLabelType" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + }, + "LabelColor": { + "pattern": "^#[A-F0-9]{6}$", + "type": "string" + }, + "LabelContent": { + "$ref": "#/definitions/DataLabelContent" + }, + "LabelFontConfiguration": { + "$ref": "#/definitions/FontConfiguration" + }, + "MeasureLabelVisibility": {}, + "Overlap": { + "$ref": "#/definitions/DataLabelOverlap" + }, + "Position": { + "$ref": "#/definitions/DataLabelPosition" + }, + "TotalsVisibility": {}, + "Visibility": {} + }, + "type": "object" + }, + "DataLabelOverlap": { + "enum": [ + "DISABLE_OVERLAP", + "ENABLE_OVERLAP" + ], + "type": "string" + }, + "DataLabelPosition": { + "enum": [ + "INSIDE", + "OUTSIDE", + "LEFT", + "TOP", + "BOTTOM", + "RIGHT" + ], + "type": "string" + }, + "DataLabelType": { + "additionalProperties": false, + "properties": { + "DataPathLabelType": { + "$ref": "#/definitions/DataPathLabelType" + }, + "FieldLabelType": { + "$ref": "#/definitions/FieldLabelType" + }, + "MaximumLabelType": { + "$ref": "#/definitions/MaximumLabelType" + }, + "MinimumLabelType": { + "$ref": "#/definitions/MinimumLabelType" + }, + "RangeEndsLabelType": { + "$ref": "#/definitions/RangeEndsLabelType" + } + }, + "type": "object" + }, + "DataPathColor": { + "additionalProperties": false, + "properties": { + "Color": { + "pattern": "^#[A-F0-9]{6}$", + "type": "string" + }, + "Element": { + "$ref": "#/definitions/DataPathValue" + }, + "TimeGranularity": { + "$ref": "#/definitions/TimeGranularity" + } + }, + "required": [ + "Color", + "Element" + ], + "type": "object" + }, + "DataPathLabelType": { + "additionalProperties": false, + "properties": { + "FieldId": { + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "FieldValue": { + "maxLength": 2048, + "minLength": 0, + "type": "string" + }, + "Visibility": {} + }, + "type": "object" + }, + "DataPathSort": { + "additionalProperties": false, + "properties": { + "Direction": { + "$ref": "#/definitions/SortDirection" + }, + "SortPaths": { + "items": { + "$ref": "#/definitions/DataPathValue" + }, + "maxItems": 20, + "minItems": 0, + "type": "array" + } + }, + "required": [ + "Direction", + "SortPaths" + ], + "type": "object" + }, + "DataPathType": { + "additionalProperties": false, + "properties": { + "PivotTableDataPathType": { + "$ref": "#/definitions/PivotTableDataPathType" + } + }, + "type": "object" + }, + "DataPathValue": { + "additionalProperties": false, + "properties": { + "DataPathType": { + "$ref": "#/definitions/DataPathType" + }, + "FieldId": { + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "FieldValue": { + "maxLength": 2048, + "minLength": 0, + "type": "string" + } + }, + "type": "object" + }, + "DataSetConfiguration": { + "additionalProperties": false, + "description": "Dataset configuration.
", + "properties": { + "ColumnGroupSchemaList": { + "description": "A structure containing the list of column group schemas.
", + "items": { + "$ref": "#/definitions/ColumnGroupSchema" + }, + "maxItems": 500, + "minItems": 0, + "type": "array" + }, + "DataSetSchema": { + "$ref": "#/definitions/DataSetSchema" + }, + "Placeholder": { + "description": "Placeholder.
", + "type": "string" + } + }, + "type": "object" + }, + "DataSetReference": { + "additionalProperties": false, + "description": "Dataset reference.
", + "properties": { + "DataSetArn": { + "description": "Dataset Amazon Resource Name (ARN).
", + "type": "string" + }, + "DataSetPlaceholder": { + "description": "Dataset placeholder.
", + "pattern": "\\S", + "type": "string" + } + }, + "required": [ + "DataSetArn", + "DataSetPlaceholder" + ], + "type": "object" + }, + "DataSetSchema": { + "additionalProperties": false, + "description": "Dataset schema.
", + "properties": { + "ColumnSchemaList": { + "description": "A structure containing the list of column schemas.
", + "items": { + "$ref": "#/definitions/ColumnSchema" + }, + "maxItems": 500, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "DateAggregationFunction": { + "enum": [ + "COUNT", + "DISTINCT_COUNT", + "MIN", + "MAX" + ], + "type": "string" + }, + "DateAxisOptions": { + "additionalProperties": false, + "properties": { + "MissingDateVisibility": {} + }, + "type": "object" + }, + "DateDimensionField": { + "additionalProperties": false, + "properties": { + "Column": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "DateGranularity": { + "$ref": "#/definitions/TimeGranularity" + }, + "FieldId": { + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "FormatConfiguration": { + "$ref": "#/definitions/DateTimeFormatConfiguration" + }, + "HierarchyId": { + "maxLength": 512, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Column", + "FieldId" + ], + "type": "object" + }, + "DateMeasureField": { + "additionalProperties": false, + "properties": { + "AggregationFunction": { + "$ref": "#/definitions/DateAggregationFunction" + }, + "Column": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "FieldId": { + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "FormatConfiguration": { + "$ref": "#/definitions/DateTimeFormatConfiguration" + } + }, + "required": [ + "Column", + "FieldId" + ], + "type": "object" + }, + "DateTimeDefaultValues": { + "additionalProperties": false, + "properties": { + "DynamicValue": { + "$ref": "#/definitions/DynamicDefaultValue" + }, + "RollingDate": { + "$ref": "#/definitions/RollingDateConfiguration" + }, + "StaticValues": { + "items": { + "format": "date-time", + "type": "string" + }, + "maxItems": 50000, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "DateTimeFormatConfiguration": { + "additionalProperties": false, + "properties": { + "DateTimeFormat": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "NullValueFormatConfiguration": { + "$ref": "#/definitions/NullValueFormatConfiguration" + }, + "NumericFormatConfiguration": { + "$ref": "#/definitions/NumericFormatConfiguration" + } + }, + "type": "object" + }, + "DateTimeHierarchy": { + "additionalProperties": false, + "properties": { + "DrillDownFilters": { + "items": { + "$ref": "#/definitions/DrillDownFilter" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + }, + "HierarchyId": { + "maxLength": 512, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "HierarchyId" + ], + "type": "object" + }, + "DateTimeParameterDeclaration": { + "additionalProperties": false, + "properties": { + "DefaultValues": { + "$ref": "#/definitions/DateTimeDefaultValues" + }, + "MappedDataSetParameters": { + "items": { + "$ref": "#/definitions/MappedDataSetParameter" + }, + "maxItems": 150, + "minItems": 0, + "type": "array" + }, + "Name": { + "maxLength": 2048, + "minLength": 1, + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + "TimeGranularity": { + "$ref": "#/definitions/TimeGranularity" + }, + "ValueWhenUnset": { + "$ref": "#/definitions/DateTimeValueWhenUnsetConfiguration" + } + }, + "required": [ + "Name" + ], + "type": "object" + }, + "DateTimePickerControlDisplayOptions": { + "additionalProperties": false, + "properties": { + "DateIconVisibility": {}, + "DateTimeFormat": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "HelperTextVisibility": {}, + "InfoIconLabelOptions": { + "$ref": "#/definitions/SheetControlInfoIconLabelOptions" + }, + "TitleOptions": { + "$ref": "#/definitions/LabelOptions" + } + }, + "type": "object" + }, + "DateTimeValueWhenUnsetConfiguration": { + "additionalProperties": false, + "properties": { + "CustomValue": { + "format": "date-time", + "type": "string" + }, + "ValueWhenUnsetOption": { + "$ref": "#/definitions/ValueWhenUnsetOption" + } + }, + "type": "object" + }, + "DayOfTheWeek": { + "enum": [ + "SUNDAY", + "MONDAY", + "TUESDAY", + "WEDNESDAY", + "THURSDAY", + "FRIDAY", + "SATURDAY" + ], + "type": "string" + }, + "DecimalDefaultValues": { + "additionalProperties": false, + "properties": { + "DynamicValue": { + "$ref": "#/definitions/DynamicDefaultValue" + }, + "StaticValues": { + "items": { + "type": "number" + }, + "maxItems": 50000, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "DecimalParameterDeclaration": { + "additionalProperties": false, + "properties": { + "DefaultValues": { + "$ref": "#/definitions/DecimalDefaultValues" + }, + "MappedDataSetParameters": { + "items": { + "$ref": "#/definitions/MappedDataSetParameter" + }, + "maxItems": 150, + "minItems": 0, + "type": "array" + }, + "Name": { + "maxLength": 2048, + "minLength": 1, + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + "ParameterValueType": { + "$ref": "#/definitions/ParameterValueType" + }, + "ValueWhenUnset": { + "$ref": "#/definitions/DecimalValueWhenUnsetConfiguration" + } + }, + "required": [ + "Name", + "ParameterValueType" + ], + "type": "object" + }, + "DecimalPlacesConfiguration": { + "additionalProperties": false, + "properties": { + "DecimalPlaces": { + "maximum": 20, + "minimum": 0, + "type": "number" + } + }, + "required": [ + "DecimalPlaces" + ], + "type": "object" + }, + "DecimalValueWhenUnsetConfiguration": { + "additionalProperties": false, + "properties": { + "CustomValue": { + "default": null, + "type": "number" + }, + "ValueWhenUnsetOption": { + "$ref": "#/definitions/ValueWhenUnsetOption" + } + }, + "type": "object" + }, + "DefaultDateTimePickerControlOptions": { + "additionalProperties": false, + "properties": { + "CommitMode": { + "$ref": "#/definitions/CommitMode" + }, + "DisplayOptions": { + "$ref": "#/definitions/DateTimePickerControlDisplayOptions" + }, + "Type": { + "$ref": "#/definitions/SheetControlDateTimePickerType" + } + }, + "type": "object" + }, + "DefaultFilterControlConfiguration": { + "additionalProperties": false, + "properties": { + "ControlOptions": { + "$ref": "#/definitions/DefaultFilterControlOptions" + }, + "Title": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "ControlOptions", + "Title" + ], + "type": "object" + }, + "DefaultFilterControlOptions": { + "additionalProperties": false, + "properties": { + "DefaultDateTimePickerOptions": { + "$ref": "#/definitions/DefaultDateTimePickerControlOptions" + }, + "DefaultDropdownOptions": { + "$ref": "#/definitions/DefaultFilterDropDownControlOptions" + }, + "DefaultListOptions": { + "$ref": "#/definitions/DefaultFilterListControlOptions" + }, + "DefaultRelativeDateTimeOptions": { + "$ref": "#/definitions/DefaultRelativeDateTimeControlOptions" + }, + "DefaultSliderOptions": { + "$ref": "#/definitions/DefaultSliderControlOptions" + }, + "DefaultTextAreaOptions": { + "$ref": "#/definitions/DefaultTextAreaControlOptions" + }, + "DefaultTextFieldOptions": { + "$ref": "#/definitions/DefaultTextFieldControlOptions" + } + }, + "type": "object" + }, + "DefaultFilterDropDownControlOptions": { + "additionalProperties": false, + "properties": { + "CommitMode": { + "$ref": "#/definitions/CommitMode" + }, + "DisplayOptions": { + "$ref": "#/definitions/DropDownControlDisplayOptions" + }, + "SelectableValues": { + "$ref": "#/definitions/FilterSelectableValues" + }, + "Type": { + "$ref": "#/definitions/SheetControlListType" + } + }, + "type": "object" + }, + "DefaultFilterListControlOptions": { + "additionalProperties": false, + "properties": { + "DisplayOptions": { + "$ref": "#/definitions/ListControlDisplayOptions" + }, + "SelectableValues": { + "$ref": "#/definitions/FilterSelectableValues" + }, + "Type": { + "$ref": "#/definitions/SheetControlListType" + } + }, + "type": "object" + }, + "DefaultFreeFormLayoutConfiguration": { + "additionalProperties": false, + "properties": { + "CanvasSizeOptions": { + "$ref": "#/definitions/FreeFormLayoutCanvasSizeOptions" + } + }, + "required": [ + "CanvasSizeOptions" + ], + "type": "object" + }, + "DefaultGridLayoutConfiguration": { + "additionalProperties": false, + "properties": { + "CanvasSizeOptions": { + "$ref": "#/definitions/GridLayoutCanvasSizeOptions" + } + }, + "required": [ + "CanvasSizeOptions" + ], + "type": "object" + }, + "DefaultInteractiveLayoutConfiguration": { + "additionalProperties": false, + "properties": { + "FreeForm": { + "$ref": "#/definitions/DefaultFreeFormLayoutConfiguration" + }, + "Grid": { + "$ref": "#/definitions/DefaultGridLayoutConfiguration" + } + }, + "type": "object" + }, + "DefaultNewSheetConfiguration": { + "additionalProperties": false, + "properties": { + "InteractiveLayoutConfiguration": { + "$ref": "#/definitions/DefaultInteractiveLayoutConfiguration" + }, + "PaginatedLayoutConfiguration": { + "$ref": "#/definitions/DefaultPaginatedLayoutConfiguration" + }, + "SheetContentType": { + "$ref": "#/definitions/SheetContentType" + } + }, + "type": "object" + }, + "DefaultPaginatedLayoutConfiguration": { + "additionalProperties": false, + "properties": { + "SectionBased": { + "$ref": "#/definitions/DefaultSectionBasedLayoutConfiguration" + } + }, + "type": "object" + }, + "DefaultRelativeDateTimeControlOptions": { + "additionalProperties": false, + "properties": { + "CommitMode": { + "$ref": "#/definitions/CommitMode" + }, + "DisplayOptions": { + "$ref": "#/definitions/RelativeDateTimeControlDisplayOptions" + } + }, + "type": "object" + }, + "DefaultSectionBasedLayoutConfiguration": { + "additionalProperties": false, + "properties": { + "CanvasSizeOptions": { + "$ref": "#/definitions/SectionBasedLayoutCanvasSizeOptions" + } + }, + "required": [ + "CanvasSizeOptions" + ], + "type": "object" + }, + "DefaultSliderControlOptions": { + "additionalProperties": false, + "properties": { + "DisplayOptions": { + "$ref": "#/definitions/SliderControlDisplayOptions" + }, + "MaximumValue": { + "default": 0, + "type": "number" + }, + "MinimumValue": { + "default": 0, + "type": "number" + }, + "StepSize": { + "default": 0, + "type": "number" + }, + "Type": { + "$ref": "#/definitions/SheetControlSliderType" + } + }, + "required": [ + "MaximumValue", + "MinimumValue", + "StepSize" + ], + "type": "object" + }, + "DefaultTextAreaControlOptions": { + "additionalProperties": false, + "properties": { + "Delimiter": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "DisplayOptions": { + "$ref": "#/definitions/TextAreaControlDisplayOptions" + } + }, + "type": "object" + }, + "DefaultTextFieldControlOptions": { + "additionalProperties": false, + "properties": { + "DisplayOptions": { + "$ref": "#/definitions/TextFieldControlDisplayOptions" + } + }, + "type": "object" + }, + "DestinationParameterValueConfiguration": { + "additionalProperties": false, + "properties": { + "CustomValuesConfiguration": { + "$ref": "#/definitions/CustomValuesConfiguration" + }, + "SelectAllValueOptions": { + "$ref": "#/definitions/SelectAllValueOptions" + }, + "SourceColumn": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "SourceField": { + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "SourceParameterName": { + "type": "string" + } + }, + "type": "object" + }, + "DigitGroupingStyle": { + "enum": [ + "DEFAULT", + "LAKHS" + ], + "type": "string" + }, + "DimensionField": { + "additionalProperties": false, + "properties": { + "CategoricalDimensionField": { + "$ref": "#/definitions/CategoricalDimensionField" + }, + "DateDimensionField": { + "$ref": "#/definitions/DateDimensionField" + }, + "NumericalDimensionField": { + "$ref": "#/definitions/NumericalDimensionField" + } + }, + "type": "object" + }, + "DonutCenterOptions": { + "additionalProperties": false, + "properties": { + "LabelVisibility": {} + }, + "type": "object" + }, + "DonutOptions": { + "additionalProperties": false, + "properties": { + "ArcOptions": { + "$ref": "#/definitions/ArcOptions" + }, + "DonutCenterOptions": { + "$ref": "#/definitions/DonutCenterOptions" + } + }, + "type": "object" + }, + "DrillDownFilter": { + "additionalProperties": false, + "properties": { + "CategoryFilter": { + "$ref": "#/definitions/CategoryDrillDownFilter" + }, + "NumericEqualityFilter": { + "$ref": "#/definitions/NumericEqualityDrillDownFilter" + }, + "TimeRangeFilter": { + "$ref": "#/definitions/TimeRangeDrillDownFilter" + } + }, + "type": "object" + }, + "DropDownControlDisplayOptions": { + "additionalProperties": false, + "properties": { + "InfoIconLabelOptions": { + "$ref": "#/definitions/SheetControlInfoIconLabelOptions" + }, + "SelectAllOptions": { + "$ref": "#/definitions/ListControlSelectAllOptions" + }, + "TitleOptions": { + "$ref": "#/definitions/LabelOptions" + } + }, + "type": "object" + }, + "DynamicDefaultValue": { + "additionalProperties": false, + "properties": { + "DefaultValueColumn": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "GroupNameColumn": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "UserNameColumn": { + "$ref": "#/definitions/ColumnIdentifier" + } + }, + "required": [ + "DefaultValueColumn" + ], + "type": "object" + }, + "EmptyVisual": { + "additionalProperties": false, + "properties": { + "Actions": { + "items": { + "$ref": "#/definitions/VisualCustomAction" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + }, + "DataSetIdentifier": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "VisualId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + } + }, + "required": [ + "DataSetIdentifier", + "VisualId" + ], + "type": "object" + }, + "Entity": { + "additionalProperties": false, + "properties": { + "Path": { + "pattern": "\\S", + "type": "string" + } + }, + "type": "object" + }, + "ExcludePeriodConfiguration": { + "additionalProperties": false, + "properties": { + "Amount": { + "default": null, + "type": "number" + }, + "Granularity": { + "$ref": "#/definitions/TimeGranularity" + }, + "Status": { + "$ref": "#/definitions/WidgetStatus" + } + }, + "required": [ + "Amount", + "Granularity" + ], + "type": "object" + }, + "ExplicitHierarchy": { + "additionalProperties": false, + "properties": { + "Columns": { + "items": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "maxItems": 10, + "minItems": 2, + "type": "array" + }, + "DrillDownFilters": { + "items": { + "$ref": "#/definitions/DrillDownFilter" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + }, + "HierarchyId": { + "maxLength": 512, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Columns", + "HierarchyId" + ], + "type": "object" + }, + "FieldBasedTooltip": { + "additionalProperties": false, + "properties": { + "AggregationVisibility": {}, + "TooltipFields": { + "items": { + "$ref": "#/definitions/TooltipItem" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + }, + "TooltipTitleType": { + "$ref": "#/definitions/TooltipTitleType" + } + }, + "type": "object" + }, + "FieldLabelType": { + "additionalProperties": false, + "properties": { + "FieldId": { + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "Visibility": {} + }, + "type": "object" + }, + "FieldSeriesItem": { + "additionalProperties": false, + "properties": { + "AxisBinding": { + "$ref": "#/definitions/AxisBinding" + }, + "FieldId": { + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "Settings": { + "$ref": "#/definitions/LineChartSeriesSettings" + } + }, + "required": [ + "AxisBinding", + "FieldId" + ], + "type": "object" + }, + "FieldSort": { + "additionalProperties": false, + "properties": { + "Direction": { + "$ref": "#/definitions/SortDirection" + }, + "FieldId": { + "maxLength": 512, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Direction", + "FieldId" + ], + "type": "object" + }, + "FieldSortOptions": { + "additionalProperties": false, + "properties": { + "ColumnSort": { + "$ref": "#/definitions/ColumnSort" + }, + "FieldSort": { + "$ref": "#/definitions/FieldSort" + } + }, + "type": "object" + }, + "FieldTooltipItem": { + "additionalProperties": false, + "properties": { + "FieldId": { + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "Label": { + "type": "string" + }, + "TooltipTarget": { + "$ref": "#/definitions/TooltipTarget" + }, + "Visibility": {} + }, + "required": [ + "FieldId" + ], + "type": "object" + }, + "FilledMapAggregatedFieldWells": { + "additionalProperties": false, + "properties": { + "Geospatial": { + "items": { + "$ref": "#/definitions/DimensionField" + }, + "maxItems": 1, + "minItems": 0, + "type": "array" + }, + "Values": { + "items": { + "$ref": "#/definitions/MeasureField" + }, + "maxItems": 1, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "FilledMapConditionalFormatting": { + "additionalProperties": false, + "properties": { + "ConditionalFormattingOptions": { + "items": { + "$ref": "#/definitions/FilledMapConditionalFormattingOption" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + } + }, + "required": [ + "ConditionalFormattingOptions" + ], + "type": "object" + }, + "FilledMapConditionalFormattingOption": { + "additionalProperties": false, + "properties": { + "Shape": { + "$ref": "#/definitions/FilledMapShapeConditionalFormatting" + } + }, + "required": [ + "Shape" + ], + "type": "object" + }, + "FilledMapConfiguration": { + "additionalProperties": false, + "properties": { + "FieldWells": { + "$ref": "#/definitions/FilledMapFieldWells" + }, + "Interactions": { + "$ref": "#/definitions/VisualInteractionOptions" + }, + "Legend": { + "$ref": "#/definitions/LegendOptions" + }, + "MapStyleOptions": { + "$ref": "#/definitions/GeospatialMapStyleOptions" + }, + "SortConfiguration": { + "$ref": "#/definitions/FilledMapSortConfiguration" + }, + "Tooltip": { + "$ref": "#/definitions/TooltipOptions" + }, + "WindowOptions": { + "$ref": "#/definitions/GeospatialWindowOptions" + } + }, + "type": "object" + }, + "FilledMapFieldWells": { + "additionalProperties": false, + "properties": { + "FilledMapAggregatedFieldWells": { + "$ref": "#/definitions/FilledMapAggregatedFieldWells" + } + }, + "type": "object" + }, + "FilledMapShapeConditionalFormatting": { + "additionalProperties": false, + "properties": { + "FieldId": { + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "Format": { + "$ref": "#/definitions/ShapeConditionalFormat" + } + }, + "required": [ + "FieldId" + ], + "type": "object" + }, + "FilledMapSortConfiguration": { + "additionalProperties": false, + "properties": { + "CategorySort": { + "items": { + "$ref": "#/definitions/FieldSortOptions" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "FilledMapVisual": { + "additionalProperties": false, + "properties": { + "Actions": { + "items": { + "$ref": "#/definitions/VisualCustomAction" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + }, + "ChartConfiguration": { + "$ref": "#/definitions/FilledMapConfiguration" + }, + "ColumnHierarchies": { + "items": { + "$ref": "#/definitions/ColumnHierarchy" + }, + "maxItems": 2, + "minItems": 0, + "type": "array" + }, + "ConditionalFormatting": { + "$ref": "#/definitions/FilledMapConditionalFormatting" + }, + "Subtitle": { + "$ref": "#/definitions/VisualSubtitleLabelOptions" + }, + "Title": { + "$ref": "#/definitions/VisualTitleLabelOptions" + }, + "VisualContentAltText": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "VisualId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + } + }, + "required": [ + "VisualId" + ], + "type": "object" + }, + "Filter": { + "additionalProperties": false, + "properties": { + "CategoryFilter": { + "$ref": "#/definitions/CategoryFilter" + }, + "NestedFilter": { + "$ref": "#/definitions/NestedFilter" + }, + "NumericEqualityFilter": { + "$ref": "#/definitions/NumericEqualityFilter" + }, + "NumericRangeFilter": { + "$ref": "#/definitions/NumericRangeFilter" + }, + "RelativeDatesFilter": { + "$ref": "#/definitions/RelativeDatesFilter" + }, + "TimeEqualityFilter": { + "$ref": "#/definitions/TimeEqualityFilter" + }, + "TimeRangeFilter": { + "$ref": "#/definitions/TimeRangeFilter" + }, + "TopBottomFilter": { + "$ref": "#/definitions/TopBottomFilter" + } + }, + "type": "object" + }, + "FilterControl": { + "additionalProperties": false, + "properties": { + "CrossSheet": { + "$ref": "#/definitions/FilterCrossSheetControl" + }, + "DateTimePicker": { + "$ref": "#/definitions/FilterDateTimePickerControl" + }, + "Dropdown": { + "$ref": "#/definitions/FilterDropDownControl" + }, + "List": { + "$ref": "#/definitions/FilterListControl" + }, + "RelativeDateTime": { + "$ref": "#/definitions/FilterRelativeDateTimeControl" + }, + "Slider": { + "$ref": "#/definitions/FilterSliderControl" + }, + "TextArea": { + "$ref": "#/definitions/FilterTextAreaControl" + }, + "TextField": { + "$ref": "#/definitions/FilterTextFieldControl" + } + }, + "type": "object" + }, + "FilterCrossSheetControl": { + "additionalProperties": false, + "properties": { + "CascadingControlConfiguration": { + "$ref": "#/definitions/CascadingControlConfiguration" + }, + "FilterControlId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "SourceFilterId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + } + }, + "required": [ + "FilterControlId", + "SourceFilterId" + ], + "type": "object" + }, + "FilterDateTimePickerControl": { + "additionalProperties": false, + "properties": { + "CommitMode": { + "$ref": "#/definitions/CommitMode" + }, + "DisplayOptions": { + "$ref": "#/definitions/DateTimePickerControlDisplayOptions" + }, + "FilterControlId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "SourceFilterId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "Title": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "Type": { + "$ref": "#/definitions/SheetControlDateTimePickerType" + } + }, + "required": [ + "FilterControlId", + "SourceFilterId", + "Title" + ], + "type": "object" + }, + "FilterDropDownControl": { + "additionalProperties": false, + "properties": { + "CascadingControlConfiguration": { + "$ref": "#/definitions/CascadingControlConfiguration" + }, + "CommitMode": { + "$ref": "#/definitions/CommitMode" + }, + "DisplayOptions": { + "$ref": "#/definitions/DropDownControlDisplayOptions" + }, + "FilterControlId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "SelectableValues": { + "$ref": "#/definitions/FilterSelectableValues" + }, + "SourceFilterId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "Title": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "Type": { + "$ref": "#/definitions/SheetControlListType" + } + }, + "required": [ + "FilterControlId", + "SourceFilterId", + "Title" + ], + "type": "object" + }, + "FilterGroup": { + "additionalProperties": false, + "properties": { + "CrossDataset": { + "$ref": "#/definitions/CrossDatasetTypes" + }, + "FilterGroupId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "Filters": { + "items": { + "$ref": "#/definitions/Filter" + }, + "maxItems": 20, + "minItems": 0, + "type": "array" + }, + "ScopeConfiguration": { + "$ref": "#/definitions/FilterScopeConfiguration" + }, + "Status": { + "$ref": "#/definitions/WidgetStatus" + } + }, + "required": [ + "CrossDataset", + "FilterGroupId", + "Filters", + "ScopeConfiguration" + ], + "type": "object" + }, + "FilterListConfiguration": { + "additionalProperties": false, + "properties": { + "CategoryValues": { + "items": { + "maxLength": 512, + "minLength": 0, + "type": "string" + }, + "maxItems": 100000, + "minItems": 0, + "type": "array" + }, + "MatchOperator": { + "$ref": "#/definitions/CategoryFilterMatchOperator" + }, + "NullOption": { + "$ref": "#/definitions/FilterNullOption" + }, + "SelectAllOptions": { + "$ref": "#/definitions/CategoryFilterSelectAllOptions" + } + }, + "required": [ + "MatchOperator" + ], + "type": "object" + }, + "FilterListControl": { + "additionalProperties": false, + "properties": { + "CascadingControlConfiguration": { + "$ref": "#/definitions/CascadingControlConfiguration" + }, + "DisplayOptions": { + "$ref": "#/definitions/ListControlDisplayOptions" + }, + "FilterControlId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "SelectableValues": { + "$ref": "#/definitions/FilterSelectableValues" + }, + "SourceFilterId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "Title": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "Type": { + "$ref": "#/definitions/SheetControlListType" + } + }, + "required": [ + "FilterControlId", + "SourceFilterId", + "Title" + ], + "type": "object" + }, + "FilterNullOption": { + "enum": [ + "ALL_VALUES", + "NULLS_ONLY", + "NON_NULLS_ONLY" + ], + "type": "string" + }, + "FilterOperationSelectedFieldsConfiguration": { + "additionalProperties": false, + "properties": { + "SelectedColumns": { + "description": "The selected columns of a dataset.
", + "items": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + }, + "SelectedFieldOptions": { + "$ref": "#/definitions/SelectedFieldOptions" + }, + "SelectedFields": { + "items": { + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "maxItems": 20, + "minItems": 1, + "type": "array" + } + }, + "type": "object" + }, + "FilterOperationTargetVisualsConfiguration": { + "additionalProperties": false, + "properties": { + "SameSheetTargetVisualConfiguration": { + "$ref": "#/definitions/SameSheetTargetVisualConfiguration" + } + }, + "type": "object" + }, + "FilterRelativeDateTimeControl": { + "additionalProperties": false, + "properties": { + "CommitMode": { + "$ref": "#/definitions/CommitMode" + }, + "DisplayOptions": { + "$ref": "#/definitions/RelativeDateTimeControlDisplayOptions" + }, + "FilterControlId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "SourceFilterId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "Title": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "FilterControlId", + "SourceFilterId", + "Title" + ], + "type": "object" + }, + "FilterScopeConfiguration": { + "additionalProperties": false, + "properties": { + "AllSheets": { + "$ref": "#/definitions/AllSheetsFilterScopeConfiguration" + }, + "SelectedSheets": { + "$ref": "#/definitions/SelectedSheetsFilterScopeConfiguration" + } + }, + "type": "object" + }, + "FilterSelectableValues": { + "additionalProperties": false, + "properties": { + "Values": { + "items": { + "type": "string" + }, + "maxItems": 50000, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "FilterSliderControl": { + "additionalProperties": false, + "properties": { + "DisplayOptions": { + "$ref": "#/definitions/SliderControlDisplayOptions" + }, + "FilterControlId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "MaximumValue": { + "default": 0, + "type": "number" + }, + "MinimumValue": { + "default": 0, + "type": "number" + }, + "SourceFilterId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "StepSize": { + "default": 0, + "type": "number" + }, + "Title": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "Type": { + "$ref": "#/definitions/SheetControlSliderType" + } + }, + "required": [ + "FilterControlId", + "MaximumValue", + "MinimumValue", + "SourceFilterId", + "StepSize", + "Title" + ], + "type": "object" + }, + "FilterTextAreaControl": { + "additionalProperties": false, + "properties": { + "Delimiter": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "DisplayOptions": { + "$ref": "#/definitions/TextAreaControlDisplayOptions" + }, + "FilterControlId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "SourceFilterId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "Title": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "FilterControlId", + "SourceFilterId", + "Title" + ], + "type": "object" + }, + "FilterTextFieldControl": { + "additionalProperties": false, + "properties": { + "DisplayOptions": { + "$ref": "#/definitions/TextFieldControlDisplayOptions" + }, + "FilterControlId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "SourceFilterId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "Title": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "FilterControlId", + "SourceFilterId", + "Title" + ], + "type": "object" + }, + "FilterVisualScope": { + "enum": [ + "ALL_VISUALS", + "SELECTED_VISUALS" + ], + "type": "string" + }, + "FontConfiguration": { + "additionalProperties": false, + "properties": { + "FontColor": { + "pattern": "^#[A-F0-9]{6}$", + "type": "string" + }, + "FontDecoration": { + "$ref": "#/definitions/FontDecoration" + }, + "FontFamily": { + "type": "string" + }, + "FontSize": { + "$ref": "#/definitions/FontSize" + }, + "FontStyle": { + "$ref": "#/definitions/FontStyle" + }, + "FontWeight": { + "$ref": "#/definitions/FontWeight" + } + }, + "type": "object" + }, + "FontDecoration": { + "enum": [ + "UNDERLINE", + "NONE" + ], + "type": "string" + }, + "FontSize": { + "additionalProperties": false, + "properties": { + "Absolute": { + "description": "String based length that is composed of value and unit in px", + "type": "string" + }, + "Relative": { + "$ref": "#/definitions/RelativeFontSize" + } + }, + "type": "object" + }, + "FontStyle": { + "enum": [ + "NORMAL", + "ITALIC" + ], + "type": "string" + }, + "FontWeight": { + "additionalProperties": false, + "properties": { + "Name": { + "$ref": "#/definitions/FontWeightName" + } + }, + "type": "object" + }, + "FontWeightName": { + "enum": [ + "NORMAL", + "BOLD" + ], + "type": "string" + }, + "ForecastComputation": { + "additionalProperties": false, + "properties": { + "ComputationId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "CustomSeasonalityValue": { + "default": null, + "maximum": 180, + "minimum": 1, + "type": "number" + }, + "LowerBoundary": { + "default": null, + "type": "number" + }, + "Name": { + "type": "string" + }, + "PeriodsBackward": { + "maximum": 1000, + "minimum": 0, + "type": "number" + }, + "PeriodsForward": { + "maximum": 1000, + "minimum": 1, + "type": "number" + }, + "PredictionInterval": { + "maximum": 95, + "minimum": 50, + "type": "number" + }, + "Seasonality": { + "$ref": "#/definitions/ForecastComputationSeasonality" + }, + "Time": { + "$ref": "#/definitions/DimensionField" + }, + "UpperBoundary": { + "default": null, + "type": "number" + }, + "Value": { + "$ref": "#/definitions/MeasureField" + } + }, + "required": [ + "ComputationId" + ], + "type": "object" + }, + "ForecastComputationSeasonality": { + "enum": [ + "AUTOMATIC", + "CUSTOM" + ], + "type": "string" + }, + "ForecastConfiguration": { + "additionalProperties": false, + "properties": { + "ForecastProperties": { + "$ref": "#/definitions/TimeBasedForecastProperties" + }, + "Scenario": { + "$ref": "#/definitions/ForecastScenario" + } + }, + "type": "object" + }, + "ForecastScenario": { + "additionalProperties": false, + "properties": { + "WhatIfPointScenario": { + "$ref": "#/definitions/WhatIfPointScenario" + }, + "WhatIfRangeScenario": { + "$ref": "#/definitions/WhatIfRangeScenario" + } + }, + "type": "object" + }, + "FormatConfiguration": { + "additionalProperties": false, + "properties": { + "DateTimeFormatConfiguration": { + "$ref": "#/definitions/DateTimeFormatConfiguration" + }, + "NumberFormatConfiguration": { + "$ref": "#/definitions/NumberFormatConfiguration" + }, + "StringFormatConfiguration": { + "$ref": "#/definitions/StringFormatConfiguration" + } + }, + "type": "object" + }, + "FreeFormLayoutCanvasSizeOptions": { + "additionalProperties": false, + "properties": { + "ScreenCanvasSizeOptions": { + "$ref": "#/definitions/FreeFormLayoutScreenCanvasSizeOptions" + } + }, + "type": "object" + }, + "FreeFormLayoutConfiguration": { + "additionalProperties": false, + "properties": { + "CanvasSizeOptions": { + "$ref": "#/definitions/FreeFormLayoutCanvasSizeOptions" + }, + "Elements": { + "items": { + "$ref": "#/definitions/FreeFormLayoutElement" + }, + "maxItems": 430, + "minItems": 0, + "type": "array" + } + }, + "required": [ + "Elements" + ], + "type": "object" + }, + "FreeFormLayoutElement": { + "additionalProperties": false, + "properties": { + "BackgroundStyle": { + "$ref": "#/definitions/FreeFormLayoutElementBackgroundStyle" + }, + "BorderStyle": { + "$ref": "#/definitions/FreeFormLayoutElementBorderStyle" + }, + "ElementId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "ElementType": { + "$ref": "#/definitions/LayoutElementType" + }, + "Height": { + "description": "String based length that is composed of value and unit in px", + "type": "string" + }, + "LoadingAnimation": { + "$ref": "#/definitions/LoadingAnimation" + }, + "RenderingRules": { + "items": { + "$ref": "#/definitions/SheetElementRenderingRule" + }, + "maxItems": 10000, + "minItems": 0, + "type": "array" + }, + "SelectedBorderStyle": { + "$ref": "#/definitions/FreeFormLayoutElementBorderStyle" + }, + "Visibility": {}, + "Width": { + "description": "String based length that is composed of value and unit in px", + "type": "string" + }, + "XAxisLocation": { + "description": "String based length that is composed of value and unit in px", + "type": "string" + }, + "YAxisLocation": { + "description": "String based length that is composed of value and unit in px with Integer.MAX_VALUE as maximum value", + "type": "string" + } + }, + "required": [ + "ElementId", + "ElementType", + "Height", + "Width", + "XAxisLocation", + "YAxisLocation" + ], + "type": "object" + }, + "FreeFormLayoutElementBackgroundStyle": { + "additionalProperties": false, + "properties": { + "Color": { + "pattern": "^#[A-F0-9]{6}(?:[A-F0-9]{2})?$", + "type": "string" + }, + "Visibility": {} + }, + "type": "object" + }, + "FreeFormLayoutElementBorderStyle": { + "additionalProperties": false, + "properties": { + "Color": { + "pattern": "^#[A-F0-9]{6}(?:[A-F0-9]{2})?$", + "type": "string" + }, + "Visibility": {} + }, + "type": "object" + }, + "FreeFormLayoutScreenCanvasSizeOptions": { + "additionalProperties": false, + "properties": { + "OptimizedViewPortWidth": { + "description": "String based length that is composed of value and unit in px", + "type": "string" + } + }, + "required": [ + "OptimizedViewPortWidth" + ], + "type": "object" + }, + "FreeFormSectionLayoutConfiguration": { + "additionalProperties": false, + "properties": { + "Elements": { + "items": { + "$ref": "#/definitions/FreeFormLayoutElement" + }, + "maxItems": 430, + "minItems": 0, + "type": "array" + } + }, + "required": [ + "Elements" + ], + "type": "object" + }, + "FunnelChartAggregatedFieldWells": { + "additionalProperties": false, + "properties": { + "Category": { + "items": { + "$ref": "#/definitions/DimensionField" + }, + "maxItems": 1, + "minItems": 0, + "type": "array" + }, + "Values": { + "items": { + "$ref": "#/definitions/MeasureField" + }, + "maxItems": 1, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "FunnelChartConfiguration": { + "additionalProperties": false, + "properties": { + "CategoryLabelOptions": { + "$ref": "#/definitions/ChartAxisLabelOptions" + }, + "DataLabelOptions": { + "$ref": "#/definitions/FunnelChartDataLabelOptions" + }, + "FieldWells": { + "$ref": "#/definitions/FunnelChartFieldWells" + }, + "Interactions": { + "$ref": "#/definitions/VisualInteractionOptions" + }, + "SortConfiguration": { + "$ref": "#/definitions/FunnelChartSortConfiguration" + }, + "Tooltip": { + "$ref": "#/definitions/TooltipOptions" + }, + "ValueLabelOptions": { + "$ref": "#/definitions/ChartAxisLabelOptions" + }, + "VisualPalette": { + "$ref": "#/definitions/VisualPalette" + } + }, + "type": "object" + }, + "FunnelChartDataLabelOptions": { + "additionalProperties": false, + "properties": { + "CategoryLabelVisibility": {}, + "LabelColor": { + "pattern": "^#[A-F0-9]{6}$", + "type": "string" + }, + "LabelFontConfiguration": { + "$ref": "#/definitions/FontConfiguration" + }, + "MeasureDataLabelStyle": { + "$ref": "#/definitions/FunnelChartMeasureDataLabelStyle" + }, + "MeasureLabelVisibility": {}, + "Position": { + "$ref": "#/definitions/DataLabelPosition" + }, + "Visibility": {} + }, + "type": "object" + }, + "FunnelChartFieldWells": { + "additionalProperties": false, + "properties": { + "FunnelChartAggregatedFieldWells": { + "$ref": "#/definitions/FunnelChartAggregatedFieldWells" + } + }, + "type": "object" + }, + "FunnelChartMeasureDataLabelStyle": { + "enum": [ + "VALUE_ONLY", + "PERCENTAGE_BY_FIRST_STAGE", + "PERCENTAGE_BY_PREVIOUS_STAGE", + "VALUE_AND_PERCENTAGE_BY_FIRST_STAGE", + "VALUE_AND_PERCENTAGE_BY_PREVIOUS_STAGE" + ], + "type": "string" + }, + "FunnelChartSortConfiguration": { + "additionalProperties": false, + "properties": { + "CategoryItemsLimit": { + "$ref": "#/definitions/ItemsLimitConfiguration" + }, + "CategorySort": { + "items": { + "$ref": "#/definitions/FieldSortOptions" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "FunnelChartVisual": { + "additionalProperties": false, + "properties": { + "Actions": { + "items": { + "$ref": "#/definitions/VisualCustomAction" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + }, + "ChartConfiguration": { + "$ref": "#/definitions/FunnelChartConfiguration" + }, + "ColumnHierarchies": { + "items": { + "$ref": "#/definitions/ColumnHierarchy" + }, + "maxItems": 2, + "minItems": 0, + "type": "array" + }, + "Subtitle": { + "$ref": "#/definitions/VisualSubtitleLabelOptions" + }, + "Title": { + "$ref": "#/definitions/VisualTitleLabelOptions" + }, + "VisualContentAltText": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "VisualId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + } + }, + "required": [ + "VisualId" + ], + "type": "object" + }, + "GaugeChartArcConditionalFormatting": { + "additionalProperties": false, + "properties": { + "ForegroundColor": { + "$ref": "#/definitions/ConditionalFormattingColor" + } + }, + "type": "object" + }, + "GaugeChartColorConfiguration": { + "additionalProperties": false, + "properties": { + "BackgroundColor": { + "pattern": "^#[A-F0-9]{6}$", + "type": "string" + }, + "ForegroundColor": { + "pattern": "^#[A-F0-9]{6}$", + "type": "string" + } + }, + "type": "object" + }, + "GaugeChartConditionalFormatting": { + "additionalProperties": false, + "properties": { + "ConditionalFormattingOptions": { + "items": { + "$ref": "#/definitions/GaugeChartConditionalFormattingOption" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "GaugeChartConditionalFormattingOption": { + "additionalProperties": false, + "properties": { + "Arc": { + "$ref": "#/definitions/GaugeChartArcConditionalFormatting" + }, + "PrimaryValue": { + "$ref": "#/definitions/GaugeChartPrimaryValueConditionalFormatting" + } + }, + "type": "object" + }, + "GaugeChartConfiguration": { + "additionalProperties": false, + "properties": { + "ColorConfiguration": { + "$ref": "#/definitions/GaugeChartColorConfiguration" + }, + "DataLabels": { + "$ref": "#/definitions/DataLabelOptions" + }, + "FieldWells": { + "$ref": "#/definitions/GaugeChartFieldWells" + }, + "GaugeChartOptions": { + "$ref": "#/definitions/GaugeChartOptions" + }, + "Interactions": { + "$ref": "#/definitions/VisualInteractionOptions" + }, + "TooltipOptions": { + "$ref": "#/definitions/TooltipOptions" + }, + "VisualPalette": { + "$ref": "#/definitions/VisualPalette" + } + }, + "type": "object" + }, + "GaugeChartFieldWells": { + "additionalProperties": false, + "properties": { + "TargetValues": { + "items": { + "$ref": "#/definitions/MeasureField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "Values": { + "items": { + "$ref": "#/definitions/MeasureField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "GaugeChartOptions": { + "additionalProperties": false, + "properties": { + "Arc": { + "$ref": "#/definitions/ArcConfiguration" + }, + "ArcAxis": { + "$ref": "#/definitions/ArcAxisConfiguration" + }, + "Comparison": { + "$ref": "#/definitions/ComparisonConfiguration" + }, + "PrimaryValueDisplayType": { + "$ref": "#/definitions/PrimaryValueDisplayType" + }, + "PrimaryValueFontConfiguration": { + "$ref": "#/definitions/FontConfiguration" + } + }, + "type": "object" + }, + "GaugeChartPrimaryValueConditionalFormatting": { + "additionalProperties": false, + "properties": { + "Icon": { + "$ref": "#/definitions/ConditionalFormattingIcon" + }, + "TextColor": { + "$ref": "#/definitions/ConditionalFormattingColor" + } + }, + "type": "object" + }, + "GaugeChartVisual": { + "additionalProperties": false, + "properties": { + "Actions": { + "items": { + "$ref": "#/definitions/VisualCustomAction" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + }, + "ChartConfiguration": { + "$ref": "#/definitions/GaugeChartConfiguration" + }, + "ConditionalFormatting": { + "$ref": "#/definitions/GaugeChartConditionalFormatting" + }, + "Subtitle": { + "$ref": "#/definitions/VisualSubtitleLabelOptions" + }, + "Title": { + "$ref": "#/definitions/VisualTitleLabelOptions" + }, + "VisualContentAltText": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "VisualId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + } + }, + "required": [ + "VisualId" + ], + "type": "object" + }, + "GeospatialCoordinateBounds": { + "additionalProperties": false, + "properties": { + "East": { + "maximum": 1800, + "minimum": -1800, + "type": "number" + }, + "North": { + "maximum": 90, + "minimum": -90, + "type": "number" + }, + "South": { + "maximum": 90, + "minimum": -90, + "type": "number" + }, + "West": { + "maximum": 1800, + "minimum": -1800, + "type": "number" + } + }, + "required": [ + "East", + "North", + "South", + "West" + ], + "type": "object" + }, + "GeospatialHeatmapColorScale": { + "additionalProperties": false, + "properties": { + "Colors": { + "items": { + "$ref": "#/definitions/GeospatialHeatmapDataColor" + }, + "maxItems": 2, + "minItems": 2, + "type": "array" + } + }, + "type": "object" + }, + "GeospatialHeatmapConfiguration": { + "additionalProperties": false, + "properties": { + "HeatmapColor": { + "$ref": "#/definitions/GeospatialHeatmapColorScale" + } + }, + "type": "object" + }, + "GeospatialHeatmapDataColor": { + "additionalProperties": false, + "properties": { + "Color": { + "pattern": "^#[A-F0-9]{6}$", + "type": "string" + } + }, + "required": [ + "Color" + ], + "type": "object" + }, + "GeospatialMapAggregatedFieldWells": { + "additionalProperties": false, + "properties": { + "Colors": { + "items": { + "$ref": "#/definitions/DimensionField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "Geospatial": { + "items": { + "$ref": "#/definitions/DimensionField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "Values": { + "items": { + "$ref": "#/definitions/MeasureField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "GeospatialMapConfiguration": { + "additionalProperties": false, + "properties": { + "FieldWells": { + "$ref": "#/definitions/GeospatialMapFieldWells" + }, + "Legend": { + "$ref": "#/definitions/LegendOptions" + }, + "MapStyleOptions": { + "$ref": "#/definitions/GeospatialMapStyleOptions" + }, + "PointStyleOptions": { + "$ref": "#/definitions/GeospatialPointStyleOptions" + }, + "Tooltip": { + "$ref": "#/definitions/TooltipOptions" + }, + "VisualPalette": { + "$ref": "#/definitions/VisualPalette" + }, + "WindowOptions": { + "$ref": "#/definitions/GeospatialWindowOptions" + } + }, + "type": "object" + }, + "GeospatialMapFieldWells": { + "additionalProperties": false, + "properties": { + "GeospatialMapAggregatedFieldWells": { + "$ref": "#/definitions/GeospatialMapAggregatedFieldWells" + } + }, + "type": "object" + }, + "GeospatialMapStyleOptions": { + "additionalProperties": false, + "properties": { + "BaseMapStyle": { + "$ref": "#/definitions/BaseMapStyleType" + } + }, + "type": "object" + }, + "GeospatialMapVisual": { + "additionalProperties": false, + "properties": { + "Actions": { + "items": { + "$ref": "#/definitions/VisualCustomAction" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + }, + "ChartConfiguration": { + "$ref": "#/definitions/GeospatialMapConfiguration" + }, + "ColumnHierarchies": { + "items": { + "$ref": "#/definitions/ColumnHierarchy" + }, + "maxItems": 2, + "minItems": 0, + "type": "array" + }, + "Subtitle": { + "$ref": "#/definitions/VisualSubtitleLabelOptions" + }, + "Title": { + "$ref": "#/definitions/VisualTitleLabelOptions" + }, + "VisualContentAltText": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "VisualId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + } + }, + "required": [ + "VisualId" + ], + "type": "object" + }, + "GeospatialNullDataSettings": { + "additionalProperties": false, + "properties": { + "SymbolStyle": { + "$ref": "#/definitions/GeospatialNullSymbolStyle" + } + }, + "required": [ + "SymbolStyle" + ], + "type": "object" + }, + "GeospatialNullSymbolStyle": { + "additionalProperties": false, + "properties": { + "FillColor": { + "pattern": "^#[A-F0-9]{6}(?:[A-F0-9]{2})?$", + "type": "string" + }, + "StrokeColor": { + "pattern": "^#[A-F0-9]{6}(?:[A-F0-9]{2})?$", + "type": "string" + }, + "StrokeWidth": { + "minimum": 0, + "type": "number" + } + }, + "type": "object" + }, + "GeospatialPointLayer": { + "additionalProperties": false, + "properties": { + "Style": { + "$ref": "#/definitions/GeospatialPointStyle" + } + }, + "required": [ + "Style" + ], + "type": "object" + }, + "GeospatialPointStyle": { + "additionalProperties": false, + "properties": { + "CircleSymbolStyle": {} + }, + "type": "object" + }, + "GeospatialPointStyleOptions": { + "additionalProperties": false, + "properties": { + "ClusterMarkerConfiguration": { + "$ref": "#/definitions/ClusterMarkerConfiguration" + }, + "HeatmapConfiguration": { + "$ref": "#/definitions/GeospatialHeatmapConfiguration" + }, + "SelectedPointStyle": { + "$ref": "#/definitions/GeospatialSelectedPointStyle" + } + }, + "type": "object" + }, + "GeospatialPolygonLayer": { + "additionalProperties": false, + "properties": { + "Style": { + "$ref": "#/definitions/GeospatialPolygonStyle" + } + }, + "required": [ + "Style" + ], + "type": "object" + }, + "GeospatialPolygonStyle": { + "additionalProperties": false, + "properties": { + "PolygonSymbolStyle": { + "$ref": "#/definitions/GeospatialPolygonSymbolStyle" + } + }, + "type": "object" + }, + "GeospatialPolygonSymbolStyle": { + "additionalProperties": false, + "properties": { + "FillColor": {}, + "StrokeColor": {}, + "StrokeWidth": {} + }, + "type": "object" + }, + "GeospatialSelectedPointStyle": { + "enum": [ + "POINT", + "CLUSTER", + "HEATMAP" + ], + "type": "string" + }, + "GeospatialSolidColor": { + "additionalProperties": false, + "description": "Describes the properties for a solid color", + "properties": { + "Color": { + "pattern": "^#[A-F0-9]{6}(?:[A-F0-9]{2})?$", + "type": "string" + }, + "State": {} + }, + "required": [ + "Color" + ], + "type": "object" + }, + "GeospatialStaticFileSource": { + "additionalProperties": false, + "properties": { + "StaticFileId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + } + }, + "required": [ + "StaticFileId" + ], + "type": "object" + }, + "GeospatialWindowOptions": { + "additionalProperties": false, + "properties": { + "Bounds": { + "$ref": "#/definitions/GeospatialCoordinateBounds" + }, + "MapZoomMode": { + "$ref": "#/definitions/MapZoomMode" + } + }, + "type": "object" + }, + "GlobalTableBorderOptions": { + "additionalProperties": false, + "properties": { + "SideSpecificBorder": { + "$ref": "#/definitions/TableSideBorderOptions" + }, + "UniformBorder": { + "$ref": "#/definitions/TableBorderOptions" + } + }, + "type": "object" + }, + "GradientColor": { + "additionalProperties": false, + "properties": { + "Stops": { + "items": { + "$ref": "#/definitions/GradientStop" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "GradientStop": { + "additionalProperties": false, + "properties": { + "Color": { + "pattern": "^#[A-F0-9]{6}$", + "type": "string" + }, + "DataValue": { + "default": null, + "type": "number" + }, + "GradientOffset": { + "default": 0, + "type": "number" + } + }, + "required": [ + "GradientOffset" + ], + "type": "object" + }, + "GridLayoutCanvasSizeOptions": { + "additionalProperties": false, + "properties": { + "ScreenCanvasSizeOptions": { + "$ref": "#/definitions/GridLayoutScreenCanvasSizeOptions" + } + }, + "type": "object" + }, + "GridLayoutConfiguration": { + "additionalProperties": false, + "properties": { + "CanvasSizeOptions": { + "$ref": "#/definitions/GridLayoutCanvasSizeOptions" + }, + "Elements": { + "items": { + "$ref": "#/definitions/GridLayoutElement" + }, + "maxItems": 430, + "minItems": 0, + "type": "array" + } + }, + "required": [ + "Elements" + ], + "type": "object" + }, + "GridLayoutElement": { + "additionalProperties": false, + "properties": { + "ColumnIndex": { + "maximum": 35, + "minimum": 0, + "type": "number" + }, + "ColumnSpan": { + "maximum": 36, + "minimum": 1, + "type": "number" + }, + "ElementId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "ElementType": { + "$ref": "#/definitions/LayoutElementType" + }, + "RowIndex": { + "maximum": 9009, + "minimum": 0, + "type": "number" + }, + "RowSpan": { + "maximum": 21, + "minimum": 1, + "type": "number" + } + }, + "required": [ + "ColumnSpan", + "ElementId", + "ElementType", + "RowSpan" + ], + "type": "object" + }, + "GridLayoutScreenCanvasSizeOptions": { + "additionalProperties": false, + "properties": { + "OptimizedViewPortWidth": { + "description": "String based length that is composed of value and unit in px", + "type": "string" + }, + "ResizeOption": { + "$ref": "#/definitions/ResizeOption" + } + }, + "required": [ + "ResizeOption" + ], + "type": "object" + }, + "GrowthRateComputation": { + "additionalProperties": false, + "properties": { + "ComputationId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "Name": { + "type": "string" + }, + "PeriodSize": { + "default": 0, + "maximum": 52, + "minimum": 2, + "type": "number" + }, + "Time": { + "$ref": "#/definitions/DimensionField" + }, + "Value": { + "$ref": "#/definitions/MeasureField" + } + }, + "required": [ + "ComputationId" + ], + "type": "object" + }, + "HeaderFooterSectionConfiguration": { + "additionalProperties": false, + "properties": { + "Layout": { + "$ref": "#/definitions/SectionLayoutConfiguration" + }, + "SectionId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "Style": { + "$ref": "#/definitions/SectionStyle" + } + }, + "required": [ + "Layout", + "SectionId" + ], + "type": "object" + }, + "HeatMapAggregatedFieldWells": { + "additionalProperties": false, + "properties": { + "Columns": { + "items": { + "$ref": "#/definitions/DimensionField" + }, + "maxItems": 1, + "minItems": 0, + "type": "array" + }, + "Rows": { + "items": { + "$ref": "#/definitions/DimensionField" + }, + "maxItems": 1, + "minItems": 0, + "type": "array" + }, + "Values": { + "items": { + "$ref": "#/definitions/MeasureField" + }, + "maxItems": 1, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "HeatMapConfiguration": { + "additionalProperties": false, + "properties": { + "ColorScale": { + "$ref": "#/definitions/ColorScale" + }, + "ColumnLabelOptions": { + "$ref": "#/definitions/ChartAxisLabelOptions" + }, + "DataLabels": { + "$ref": "#/definitions/DataLabelOptions" + }, + "FieldWells": { + "$ref": "#/definitions/HeatMapFieldWells" + }, + "Interactions": { + "$ref": "#/definitions/VisualInteractionOptions" + }, + "Legend": { + "$ref": "#/definitions/LegendOptions" + }, + "RowLabelOptions": { + "$ref": "#/definitions/ChartAxisLabelOptions" + }, + "SortConfiguration": { + "$ref": "#/definitions/HeatMapSortConfiguration" + }, + "Tooltip": { + "$ref": "#/definitions/TooltipOptions" + } + }, + "type": "object" + }, + "HeatMapFieldWells": { + "additionalProperties": false, + "properties": { + "HeatMapAggregatedFieldWells": { + "$ref": "#/definitions/HeatMapAggregatedFieldWells" + } + }, + "type": "object" + }, + "HeatMapSortConfiguration": { + "additionalProperties": false, + "properties": { + "HeatMapColumnItemsLimitConfiguration": { + "$ref": "#/definitions/ItemsLimitConfiguration" + }, + "HeatMapColumnSort": { + "items": { + "$ref": "#/definitions/FieldSortOptions" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + }, + "HeatMapRowItemsLimitConfiguration": { + "$ref": "#/definitions/ItemsLimitConfiguration" + }, + "HeatMapRowSort": { + "items": { + "$ref": "#/definitions/FieldSortOptions" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "HeatMapVisual": { + "additionalProperties": false, + "properties": { + "Actions": { + "items": { + "$ref": "#/definitions/VisualCustomAction" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + }, + "ChartConfiguration": { + "$ref": "#/definitions/HeatMapConfiguration" + }, + "ColumnHierarchies": { + "items": { + "$ref": "#/definitions/ColumnHierarchy" + }, + "maxItems": 2, + "minItems": 0, + "type": "array" + }, + "Subtitle": { + "$ref": "#/definitions/VisualSubtitleLabelOptions" + }, + "Title": { + "$ref": "#/definitions/VisualTitleLabelOptions" + }, + "VisualContentAltText": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "VisualId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + } + }, + "required": [ + "VisualId" + ], + "type": "object" + }, + "HistogramAggregatedFieldWells": { + "additionalProperties": false, + "properties": { + "Values": { + "items": { + "$ref": "#/definitions/MeasureField" + }, + "maxItems": 1, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "HistogramBinOptions": { + "additionalProperties": false, + "properties": { + "BinCount": { + "$ref": "#/definitions/BinCountOptions" + }, + "BinWidth": { + "$ref": "#/definitions/BinWidthOptions" + }, + "SelectedBinType": { + "$ref": "#/definitions/HistogramBinType" + }, + "StartValue": { + "default": null, + "type": "number" + } + }, + "type": "object" + }, + "HistogramBinType": { + "enum": [ + "BIN_COUNT", + "BIN_WIDTH" + ], + "type": "string" + }, + "HistogramConfiguration": { + "additionalProperties": false, + "properties": { + "BinOptions": { + "$ref": "#/definitions/HistogramBinOptions" + }, + "DataLabels": { + "$ref": "#/definitions/DataLabelOptions" + }, + "FieldWells": { + "$ref": "#/definitions/HistogramFieldWells" + }, + "Interactions": { + "$ref": "#/definitions/VisualInteractionOptions" + }, + "Tooltip": { + "$ref": "#/definitions/TooltipOptions" + }, + "VisualPalette": { + "$ref": "#/definitions/VisualPalette" + }, + "XAxisDisplayOptions": { + "$ref": "#/definitions/AxisDisplayOptions" + }, + "XAxisLabelOptions": { + "$ref": "#/definitions/ChartAxisLabelOptions" + }, + "YAxisDisplayOptions": { + "$ref": "#/definitions/AxisDisplayOptions" + } + }, + "type": "object" + }, + "HistogramFieldWells": { + "additionalProperties": false, + "properties": { + "HistogramAggregatedFieldWells": { + "$ref": "#/definitions/HistogramAggregatedFieldWells" + } + }, + "type": "object" + }, + "HistogramVisual": { + "additionalProperties": false, + "properties": { + "Actions": { + "items": { + "$ref": "#/definitions/VisualCustomAction" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + }, + "ChartConfiguration": { + "$ref": "#/definitions/HistogramConfiguration" + }, + "Subtitle": { + "$ref": "#/definitions/VisualSubtitleLabelOptions" + }, + "Title": { + "$ref": "#/definitions/VisualTitleLabelOptions" + }, + "VisualContentAltText": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "VisualId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + } + }, + "required": [ + "VisualId" + ], + "type": "object" + }, + "HorizontalTextAlignment": { + "enum": [ + "LEFT", + "CENTER", + "RIGHT", + "AUTO" + ], + "type": "string" + }, + "Icon": { + "enum": [ + "CARET_UP", + "CARET_DOWN", + "PLUS", + "MINUS", + "ARROW_UP", + "ARROW_DOWN", + "ARROW_LEFT", + "ARROW_UP_LEFT", + "ARROW_DOWN_LEFT", + "ARROW_RIGHT", + "ARROW_UP_RIGHT", + "ARROW_DOWN_RIGHT", + "FACE_UP", + "FACE_DOWN", + "FACE_FLAT", + "ONE_BAR", + "TWO_BAR", + "THREE_BAR", + "CIRCLE", + "TRIANGLE", + "SQUARE", + "FLAG", + "THUMBS_UP", + "THUMBS_DOWN", + "CHECKMARK", + "X" + ], + "type": "string" + }, + "ImageCustomAction": { + "additionalProperties": false, + "properties": { + "ActionOperations": { + "items": { + "$ref": "#/definitions/ImageCustomActionOperation" + }, + "maxItems": 2, + "minItems": 1, + "type": "array" + }, + "CustomActionId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "Name": { + "maxLength": 256, + "minLength": 1, + "type": "string" + }, + "Status": { + "$ref": "#/definitions/WidgetStatus" + }, + "Trigger": { + "$ref": "#/definitions/ImageCustomActionTrigger" + } + }, + "required": [ + "ActionOperations", + "CustomActionId", + "Name", + "Trigger" + ], + "type": "object" + }, + "ImageCustomActionOperation": { + "additionalProperties": false, + "properties": { + "NavigationOperation": { + "$ref": "#/definitions/CustomActionNavigationOperation" + }, + "SetParametersOperation": { + "$ref": "#/definitions/CustomActionSetParametersOperation" + }, + "URLOperation": { + "$ref": "#/definitions/CustomActionURLOperation" + } + }, + "type": "object" + }, + "ImageCustomActionTrigger": { + "enum": [ + "CLICK", + "MENU" + ], + "type": "string" + }, + "ImageInteractionOptions": { + "additionalProperties": false, + "properties": { + "ImageMenuOption": { + "$ref": "#/definitions/ImageMenuOption" + } + }, + "type": "object" + }, + "ImageMenuOption": { + "additionalProperties": false, + "properties": { + "AvailabilityStatus": { + "$ref": "#/definitions/DashboardBehavior" + } + }, + "type": "object" + }, + "ImageStaticFile": { + "additionalProperties": false, + "properties": { + "Source": { + "$ref": "#/definitions/StaticFileSource" + }, + "StaticFileId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + } + }, + "required": [ + "StaticFileId" + ], + "type": "object" + }, + "InnerFilter": { + "additionalProperties": false, + "properties": { + "CategoryInnerFilter": { + "$ref": "#/definitions/CategoryInnerFilter" + } + }, + "type": "object" + }, + "InsightConfiguration": { + "additionalProperties": false, + "properties": { + "Computations": { + "items": { + "$ref": "#/definitions/Computation" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + }, + "CustomNarrative": { + "$ref": "#/definitions/CustomNarrativeOptions" + }, + "Interactions": { + "$ref": "#/definitions/VisualInteractionOptions" + } + }, + "type": "object" + }, + "InsightVisual": { + "additionalProperties": false, + "properties": { + "Actions": { + "items": { + "$ref": "#/definitions/VisualCustomAction" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + }, + "DataSetIdentifier": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "InsightConfiguration": { + "$ref": "#/definitions/InsightConfiguration" + }, + "Subtitle": { + "$ref": "#/definitions/VisualSubtitleLabelOptions" + }, + "Title": { + "$ref": "#/definitions/VisualTitleLabelOptions" + }, + "VisualContentAltText": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "VisualId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + } + }, + "required": [ + "DataSetIdentifier", + "VisualId" + ], + "type": "object" + }, + "IntegerDefaultValues": { + "additionalProperties": false, + "properties": { + "DynamicValue": { + "$ref": "#/definitions/DynamicDefaultValue" + }, + "StaticValues": { + "items": { + "type": "number" + }, + "maxItems": 50000, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "IntegerParameterDeclaration": { + "additionalProperties": false, + "properties": { + "DefaultValues": { + "$ref": "#/definitions/IntegerDefaultValues" + }, + "MappedDataSetParameters": { + "items": { + "$ref": "#/definitions/MappedDataSetParameter" + }, + "maxItems": 150, + "minItems": 0, + "type": "array" + }, + "Name": { + "maxLength": 2048, + "minLength": 1, + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + "ParameterValueType": { + "$ref": "#/definitions/ParameterValueType" + }, + "ValueWhenUnset": { + "$ref": "#/definitions/IntegerValueWhenUnsetConfiguration" + } + }, + "required": [ + "Name", + "ParameterValueType" + ], + "type": "object" + }, + "IntegerValueWhenUnsetConfiguration": { + "additionalProperties": false, + "properties": { + "CustomValue": { + "default": null, + "type": "number" + }, + "ValueWhenUnsetOption": { + "$ref": "#/definitions/ValueWhenUnsetOption" + } + }, + "type": "object" + }, + "ItemsLimitConfiguration": { + "additionalProperties": false, + "properties": { + "ItemsLimit": { + "default": null, + "type": "number" + }, + "OtherCategories": { + "$ref": "#/definitions/OtherCategories" + } + }, + "type": "object" + }, + "KPIActualValueConditionalFormatting": { + "additionalProperties": false, + "properties": { + "Icon": { + "$ref": "#/definitions/ConditionalFormattingIcon" + }, + "TextColor": { + "$ref": "#/definitions/ConditionalFormattingColor" + } + }, + "type": "object" + }, + "KPIComparisonValueConditionalFormatting": { + "additionalProperties": false, + "properties": { + "Icon": { + "$ref": "#/definitions/ConditionalFormattingIcon" + }, + "TextColor": { + "$ref": "#/definitions/ConditionalFormattingColor" + } + }, + "type": "object" + }, + "KPIConditionalFormatting": { + "additionalProperties": false, + "properties": { + "ConditionalFormattingOptions": { + "items": { + "$ref": "#/definitions/KPIConditionalFormattingOption" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "KPIConditionalFormattingOption": { + "additionalProperties": false, + "properties": { + "ActualValue": { + "$ref": "#/definitions/KPIActualValueConditionalFormatting" + }, + "ComparisonValue": { + "$ref": "#/definitions/KPIComparisonValueConditionalFormatting" + }, + "PrimaryValue": { + "$ref": "#/definitions/KPIPrimaryValueConditionalFormatting" + }, + "ProgressBar": { + "$ref": "#/definitions/KPIProgressBarConditionalFormatting" + } + }, + "type": "object" + }, + "KPIConfiguration": { + "additionalProperties": false, + "properties": { + "FieldWells": { + "$ref": "#/definitions/KPIFieldWells" + }, + "Interactions": { + "$ref": "#/definitions/VisualInteractionOptions" + }, + "KPIOptions": { + "$ref": "#/definitions/KPIOptions" + }, + "SortConfiguration": { + "$ref": "#/definitions/KPISortConfiguration" + } + }, + "type": "object" + }, + "KPIFieldWells": { + "additionalProperties": false, + "properties": { + "TargetValues": { + "items": { + "$ref": "#/definitions/MeasureField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "TrendGroups": { + "items": { + "$ref": "#/definitions/DimensionField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "Values": { + "items": { + "$ref": "#/definitions/MeasureField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "KPIOptions": { + "additionalProperties": false, + "properties": { + "Comparison": { + "$ref": "#/definitions/ComparisonConfiguration" + }, + "PrimaryValueDisplayType": { + "$ref": "#/definitions/PrimaryValueDisplayType" + }, + "PrimaryValueFontConfiguration": { + "$ref": "#/definitions/FontConfiguration" + }, + "ProgressBar": { + "$ref": "#/definitions/ProgressBarOptions" + }, + "SecondaryValue": { + "$ref": "#/definitions/SecondaryValueOptions" + }, + "SecondaryValueFontConfiguration": { + "$ref": "#/definitions/FontConfiguration" + }, + "Sparkline": { + "$ref": "#/definitions/KPISparklineOptions" + }, + "TrendArrows": { + "$ref": "#/definitions/TrendArrowOptions" + }, + "VisualLayoutOptions": { + "$ref": "#/definitions/KPIVisualLayoutOptions" + } + }, + "type": "object" + }, + "KPIPrimaryValueConditionalFormatting": { + "additionalProperties": false, + "properties": { + "Icon": { + "$ref": "#/definitions/ConditionalFormattingIcon" + }, + "TextColor": { + "$ref": "#/definitions/ConditionalFormattingColor" + } + }, + "type": "object" + }, + "KPIProgressBarConditionalFormatting": { + "additionalProperties": false, + "properties": { + "ForegroundColor": { + "$ref": "#/definitions/ConditionalFormattingColor" + } + }, + "type": "object" + }, + "KPISortConfiguration": { + "additionalProperties": false, + "properties": { + "TrendGroupSort": { + "items": { + "$ref": "#/definitions/FieldSortOptions" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "KPISparklineOptions": { + "additionalProperties": false, + "properties": { + "Color": { + "pattern": "^#[A-F0-9]{6}$", + "type": "string" + }, + "TooltipVisibility": {}, + "Type": { + "$ref": "#/definitions/KPISparklineType" + }, + "Visibility": {} + }, + "required": [ + "Type" + ], + "type": "object" + }, + "KPISparklineType": { + "enum": [ + "LINE", + "AREA" + ], + "type": "string" + }, + "KPIVisual": { + "additionalProperties": false, + "properties": { + "Actions": { + "items": { + "$ref": "#/definitions/VisualCustomAction" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + }, + "ChartConfiguration": { + "$ref": "#/definitions/KPIConfiguration" + }, + "ColumnHierarchies": { + "items": { + "$ref": "#/definitions/ColumnHierarchy" + }, + "maxItems": 2, + "minItems": 0, + "type": "array" + }, + "ConditionalFormatting": { + "$ref": "#/definitions/KPIConditionalFormatting" + }, + "Subtitle": { + "$ref": "#/definitions/VisualSubtitleLabelOptions" + }, + "Title": { + "$ref": "#/definitions/VisualTitleLabelOptions" + }, + "VisualContentAltText": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "VisualId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + } + }, + "required": [ + "VisualId" + ], + "type": "object" + }, + "KPIVisualLayoutOptions": { + "additionalProperties": false, + "properties": { + "StandardLayout": { + "$ref": "#/definitions/KPIVisualStandardLayout" + } + }, + "type": "object" + }, + "KPIVisualStandardLayout": { + "additionalProperties": false, + "properties": { + "Type": { + "$ref": "#/definitions/KPIVisualStandardLayoutType" + } + }, + "required": [ + "Type" + ], + "type": "object" + }, + "KPIVisualStandardLayoutType": { + "enum": [ + "CLASSIC", + "VERTICAL" + ], + "type": "string" + }, + "LabelOptions": { + "additionalProperties": false, + "properties": { + "CustomLabel": { + "type": "string" + }, + "FontConfiguration": { + "$ref": "#/definitions/FontConfiguration" + }, + "Visibility": {} + }, + "type": "object" + }, + "LayerCustomAction": { + "additionalProperties": false, + "properties": { + "ActionOperations": { + "items": { + "$ref": "#/definitions/LayerCustomActionOperation" + }, + "maxItems": 2, + "minItems": 1, + "type": "array" + }, + "CustomActionId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "Name": { + "maxLength": 256, + "minLength": 1, + "type": "string" + }, + "Status": { + "$ref": "#/definitions/WidgetStatus" + }, + "Trigger": { + "$ref": "#/definitions/LayerCustomActionTrigger" + } + }, + "required": [ + "ActionOperations", + "CustomActionId", + "Name", + "Trigger" + ], + "type": "object" + }, + "LayerCustomActionOperation": { + "additionalProperties": false, + "properties": { + "FilterOperation": { + "$ref": "#/definitions/CustomActionFilterOperation" + }, + "NavigationOperation": { + "$ref": "#/definitions/CustomActionNavigationOperation" + }, + "SetParametersOperation": { + "$ref": "#/definitions/CustomActionSetParametersOperation" + }, + "URLOperation": { + "$ref": "#/definitions/CustomActionURLOperation" + } + }, + "type": "object" + }, + "LayerCustomActionTrigger": { + "enum": [ + "DATA_POINT_CLICK", + "DATA_POINT_MENU" + ], + "type": "string" + }, + "LayerMapVisual": { + "additionalProperties": false, + "properties": { + "ChartConfiguration": {}, + "DataSetIdentifier": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "Subtitle": { + "$ref": "#/definitions/VisualSubtitleLabelOptions" + }, + "Title": { + "$ref": "#/definitions/VisualTitleLabelOptions" + }, + "VisualContentAltText": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "VisualId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + } + }, + "required": [ + "DataSetIdentifier", + "VisualId" + ], + "type": "object" + }, + "Layout": { + "additionalProperties": false, + "properties": { + "Configuration": { + "$ref": "#/definitions/LayoutConfiguration" + } + }, + "required": [ + "Configuration" + ], + "type": "object" + }, + "LayoutConfiguration": { + "additionalProperties": false, + "properties": { + "FreeFormLayout": { + "$ref": "#/definitions/FreeFormLayoutConfiguration" + }, + "GridLayout": { + "$ref": "#/definitions/GridLayoutConfiguration" + }, + "SectionBasedLayout": { + "$ref": "#/definitions/SectionBasedLayoutConfiguration" + } + }, + "type": "object" + }, + "LayoutElementType": { + "enum": [ + "VISUAL", + "FILTER_CONTROL", + "PARAMETER_CONTROL", + "TEXT_BOX", + "IMAGE" + ], + "type": "string" + }, + "LegendOptions": { + "additionalProperties": false, + "properties": { + "Height": { + "description": "String based length that is composed of value and unit in px", + "type": "string" + }, + "Position": { + "$ref": "#/definitions/LegendPosition" + }, + "Title": { + "$ref": "#/definitions/LabelOptions" + }, + "ValueFontConfiguration": { + "$ref": "#/definitions/FontConfiguration" + }, + "Visibility": {}, + "Width": { + "description": "String based length that is composed of value and unit in px", + "type": "string" + } + }, + "type": "object" + }, + "LegendPosition": { + "enum": [ + "AUTO", + "RIGHT", + "BOTTOM", + "TOP" + ], + "type": "string" + }, + "LineChartAggregatedFieldWells": { + "additionalProperties": false, + "properties": { + "Category": { + "items": { + "$ref": "#/definitions/DimensionField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "Colors": { + "items": { + "$ref": "#/definitions/DimensionField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "SmallMultiples": { + "items": { + "$ref": "#/definitions/DimensionField" + }, + "maxItems": 1, + "minItems": 0, + "type": "array" + }, + "Values": { + "items": { + "$ref": "#/definitions/MeasureField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "LineChartConfiguration": { + "additionalProperties": false, + "properties": { + "ContributionAnalysisDefaults": { + "items": { + "$ref": "#/definitions/ContributionAnalysisDefault" + }, + "maxItems": 200, + "minItems": 1, + "type": "array" + }, + "DataLabels": { + "$ref": "#/definitions/DataLabelOptions" + }, + "DefaultSeriesSettings": { + "$ref": "#/definitions/LineChartDefaultSeriesSettings" + }, + "FieldWells": { + "$ref": "#/definitions/LineChartFieldWells" + }, + "ForecastConfigurations": { + "items": { + "$ref": "#/definitions/ForecastConfiguration" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + }, + "Interactions": { + "$ref": "#/definitions/VisualInteractionOptions" + }, + "Legend": { + "$ref": "#/definitions/LegendOptions" + }, + "PrimaryYAxisDisplayOptions": { + "$ref": "#/definitions/LineSeriesAxisDisplayOptions" + }, + "PrimaryYAxisLabelOptions": { + "$ref": "#/definitions/ChartAxisLabelOptions" + }, + "ReferenceLines": { + "items": { + "$ref": "#/definitions/ReferenceLine" + }, + "maxItems": 20, + "minItems": 0, + "type": "array" + }, + "SecondaryYAxisDisplayOptions": { + "$ref": "#/definitions/LineSeriesAxisDisplayOptions" + }, + "SecondaryYAxisLabelOptions": { + "$ref": "#/definitions/ChartAxisLabelOptions" + }, + "Series": { + "items": { + "$ref": "#/definitions/SeriesItem" + }, + "maxItems": 2000, + "minItems": 0, + "type": "array" + }, + "SingleAxisOptions": { + "$ref": "#/definitions/SingleAxisOptions" + }, + "SmallMultiplesOptions": { + "$ref": "#/definitions/SmallMultiplesOptions" + }, + "SortConfiguration": { + "$ref": "#/definitions/LineChartSortConfiguration" + }, + "Tooltip": { + "$ref": "#/definitions/TooltipOptions" + }, + "Type": { + "$ref": "#/definitions/LineChartType" + }, + "VisualPalette": { + "$ref": "#/definitions/VisualPalette" + }, + "XAxisDisplayOptions": { + "$ref": "#/definitions/AxisDisplayOptions" + }, + "XAxisLabelOptions": { + "$ref": "#/definitions/ChartAxisLabelOptions" + } + }, + "type": "object" + }, + "LineChartDefaultSeriesSettings": { + "additionalProperties": false, + "properties": { + "AxisBinding": { + "$ref": "#/definitions/AxisBinding" + }, + "LineStyleSettings": { + "$ref": "#/definitions/LineChartLineStyleSettings" + }, + "MarkerStyleSettings": { + "$ref": "#/definitions/LineChartMarkerStyleSettings" + } + }, + "type": "object" + }, + "LineChartFieldWells": { + "additionalProperties": false, + "properties": { + "LineChartAggregatedFieldWells": { + "$ref": "#/definitions/LineChartAggregatedFieldWells" + } + }, + "type": "object" + }, + "LineChartLineStyle": { + "enum": [ + "SOLID", + "DOTTED", + "DASHED" + ], + "type": "string" + }, + "LineChartLineStyleSettings": { + "additionalProperties": false, + "properties": { + "LineInterpolation": { + "$ref": "#/definitions/LineInterpolation" + }, + "LineStyle": { + "$ref": "#/definitions/LineChartLineStyle" + }, + "LineVisibility": {}, + "LineWidth": { + "description": "String based length that is composed of value and unit in px", + "type": "string" + } + }, + "type": "object" + }, + "LineChartMarkerShape": { + "enum": [ + "CIRCLE", + "TRIANGLE", + "SQUARE", + "DIAMOND", + "ROUNDED_SQUARE" + ], + "type": "string" + }, + "LineChartMarkerStyleSettings": { + "additionalProperties": false, + "properties": { + "MarkerColor": { + "pattern": "^#[A-F0-9]{6}$", + "type": "string" + }, + "MarkerShape": { + "$ref": "#/definitions/LineChartMarkerShape" + }, + "MarkerSize": { + "description": "String based length that is composed of value and unit in px", + "type": "string" + }, + "MarkerVisibility": {} + }, + "type": "object" + }, + "LineChartSeriesSettings": { + "additionalProperties": false, + "properties": { + "LineStyleSettings": { + "$ref": "#/definitions/LineChartLineStyleSettings" + }, + "MarkerStyleSettings": { + "$ref": "#/definitions/LineChartMarkerStyleSettings" + } + }, + "type": "object" + }, + "LineChartSortConfiguration": { + "additionalProperties": false, + "properties": { + "CategoryItemsLimitConfiguration": { + "$ref": "#/definitions/ItemsLimitConfiguration" + }, + "CategorySort": { + "items": { + "$ref": "#/definitions/FieldSortOptions" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + }, + "ColorItemsLimitConfiguration": { + "$ref": "#/definitions/ItemsLimitConfiguration" + }, + "SmallMultiplesLimitConfiguration": { + "$ref": "#/definitions/ItemsLimitConfiguration" + }, + "SmallMultiplesSort": { + "items": { + "$ref": "#/definitions/FieldSortOptions" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "LineChartType": { + "enum": [ + "LINE", + "AREA", + "STACKED_AREA" + ], + "type": "string" + }, + "LineChartVisual": { + "additionalProperties": false, + "properties": { + "Actions": { + "items": { + "$ref": "#/definitions/VisualCustomAction" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + }, + "ChartConfiguration": { + "$ref": "#/definitions/LineChartConfiguration" + }, + "ColumnHierarchies": { + "items": { + "$ref": "#/definitions/ColumnHierarchy" + }, + "maxItems": 2, + "minItems": 0, + "type": "array" + }, + "Subtitle": { + "$ref": "#/definitions/VisualSubtitleLabelOptions" + }, + "Title": { + "$ref": "#/definitions/VisualTitleLabelOptions" + }, + "VisualContentAltText": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "VisualId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + } + }, + "required": [ + "VisualId" + ], + "type": "object" + }, + "LineInterpolation": { + "enum": [ + "LINEAR", + "SMOOTH", + "STEPPED" + ], + "type": "string" + }, + "LineSeriesAxisDisplayOptions": { + "additionalProperties": false, + "properties": { + "AxisOptions": { + "$ref": "#/definitions/AxisDisplayOptions" + }, + "MissingDataConfigurations": { + "items": { + "$ref": "#/definitions/MissingDataConfiguration" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "ListControlDisplayOptions": { + "additionalProperties": false, + "properties": { + "InfoIconLabelOptions": { + "$ref": "#/definitions/SheetControlInfoIconLabelOptions" + }, + "SearchOptions": { + "$ref": "#/definitions/ListControlSearchOptions" + }, + "SelectAllOptions": { + "$ref": "#/definitions/ListControlSelectAllOptions" + }, + "TitleOptions": { + "$ref": "#/definitions/LabelOptions" + } + }, + "type": "object" + }, + "ListControlSearchOptions": { + "additionalProperties": false, + "properties": { + "Visibility": {} + }, + "type": "object" + }, + "ListControlSelectAllOptions": { + "additionalProperties": false, + "properties": { + "Visibility": {} + }, + "type": "object" + }, + "LoadingAnimation": { + "additionalProperties": false, + "properties": { + "Visibility": {} + }, + "type": "object" + }, + "LocalNavigationConfiguration": { + "additionalProperties": false, + "properties": { + "TargetSheetId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + } + }, + "required": [ + "TargetSheetId" + ], + "type": "object" + }, + "LongFormatText": { + "additionalProperties": false, + "properties": { + "PlainText": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "RichText": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + } + }, + "type": "object" + }, + "MapZoomMode": { + "enum": [ + "AUTO", + "MANUAL" + ], + "type": "string" + }, + "MappedDataSetParameter": { + "additionalProperties": false, + "properties": { + "DataSetIdentifier": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "DataSetParameterName": { + "maxLength": 2048, + "minLength": 1, + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + } + }, + "required": [ + "DataSetIdentifier", + "DataSetParameterName" + ], + "type": "object" + }, + "MaximumLabelType": { + "additionalProperties": false, + "properties": { + "Visibility": {} + }, + "type": "object" + }, + "MaximumMinimumComputation": { + "additionalProperties": false, + "properties": { + "ComputationId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "Name": { + "type": "string" + }, + "Time": { + "$ref": "#/definitions/DimensionField" + }, + "Type": { + "$ref": "#/definitions/MaximumMinimumComputationType" + }, + "Value": { + "$ref": "#/definitions/MeasureField" + } + }, + "required": [ + "ComputationId", + "Type" + ], + "type": "object" + }, + "MaximumMinimumComputationType": { + "enum": [ + "MAXIMUM", + "MINIMUM" + ], + "type": "string" + }, + "MeasureField": { + "additionalProperties": false, + "properties": { + "CalculatedMeasureField": { + "$ref": "#/definitions/CalculatedMeasureField" + }, + "CategoricalMeasureField": { + "$ref": "#/definitions/CategoricalMeasureField" + }, + "DateMeasureField": { + "$ref": "#/definitions/DateMeasureField" + }, + "NumericalMeasureField": { + "$ref": "#/definitions/NumericalMeasureField" + } + }, + "type": "object" + }, + "MetricComparisonComputation": { + "additionalProperties": false, + "properties": { + "ComputationId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "FromValue": { + "$ref": "#/definitions/MeasureField" + }, + "Name": { + "type": "string" + }, + "TargetValue": { + "$ref": "#/definitions/MeasureField" + }, + "Time": { + "$ref": "#/definitions/DimensionField" + } + }, + "required": [ + "ComputationId" + ], + "type": "object" + }, + "MinimumLabelType": { + "additionalProperties": false, + "properties": { + "Visibility": {} + }, + "type": "object" + }, + "MissingDataConfiguration": { + "additionalProperties": false, + "properties": { + "TreatmentOption": { + "$ref": "#/definitions/MissingDataTreatmentOption" + } + }, + "type": "object" + }, + "MissingDataTreatmentOption": { + "enum": [ + "INTERPOLATE", + "SHOW_AS_ZERO", + "SHOW_AS_BLANK" + ], + "type": "string" + }, + "NegativeValueConfiguration": { + "additionalProperties": false, + "properties": { + "DisplayMode": { + "$ref": "#/definitions/NegativeValueDisplayMode" + } + }, + "required": [ + "DisplayMode" + ], + "type": "object" + }, + "NegativeValueDisplayMode": { + "enum": [ + "POSITIVE", + "NEGATIVE" + ], + "type": "string" + }, + "NestedFilter": { + "additionalProperties": false, + "properties": { + "Column": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "FilterId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "IncludeInnerSet": { + "default": false, + "type": "boolean" + }, + "InnerFilter": { + "$ref": "#/definitions/InnerFilter" + } + }, + "required": [ + "Column", + "FilterId", + "IncludeInnerSet", + "InnerFilter" + ], + "type": "object" + }, + "NullValueFormatConfiguration": { + "additionalProperties": false, + "properties": { + "NullString": { + "maxLength": 128, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "NullString" + ], + "type": "object" + }, + "NumberDisplayFormatConfiguration": { + "additionalProperties": false, + "properties": { + "DecimalPlacesConfiguration": { + "$ref": "#/definitions/DecimalPlacesConfiguration" + }, + "NegativeValueConfiguration": { + "$ref": "#/definitions/NegativeValueConfiguration" + }, + "NullValueFormatConfiguration": { + "$ref": "#/definitions/NullValueFormatConfiguration" + }, + "NumberScale": { + "$ref": "#/definitions/NumberScale" + }, + "Prefix": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "SeparatorConfiguration": { + "$ref": "#/definitions/NumericSeparatorConfiguration" + }, + "Suffix": { + "maxLength": 128, + "minLength": 1, + "type": "string" + } + }, + "type": "object" + }, + "NumberFormatConfiguration": { + "additionalProperties": false, + "properties": { + "FormatConfiguration": { + "$ref": "#/definitions/NumericFormatConfiguration" + } + }, + "type": "object" + }, + "NumberScale": { + "enum": [ + "NONE", + "AUTO", + "THOUSANDS", + "MILLIONS", + "BILLIONS", + "TRILLIONS", + "LAKHS", + "CRORES" + ], + "type": "string" + }, + "NumericAxisOptions": { + "additionalProperties": false, + "properties": { + "Range": { + "$ref": "#/definitions/AxisDisplayRange" + }, + "Scale": { + "$ref": "#/definitions/AxisScale" + } + }, + "type": "object" + }, + "NumericEqualityDrillDownFilter": { + "additionalProperties": false, + "properties": { + "Column": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "Value": { + "default": 0, + "type": "number" + } + }, + "required": [ + "Column", + "Value" + ], + "type": "object" + }, + "NumericEqualityFilter": { + "additionalProperties": false, + "properties": { + "AggregationFunction": { + "$ref": "#/definitions/AggregationFunction" + }, + "Column": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "DefaultFilterControlConfiguration": { + "$ref": "#/definitions/DefaultFilterControlConfiguration" + }, + "FilterId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "MatchOperator": { + "$ref": "#/definitions/NumericEqualityMatchOperator" + }, + "NullOption": { + "$ref": "#/definitions/FilterNullOption" + }, + "ParameterName": { + "maxLength": 2048, + "minLength": 1, + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + "SelectAllOptions": { + "$ref": "#/definitions/NumericFilterSelectAllOptions" + }, + "Value": { + "default": null, + "type": "number" + } + }, + "required": [ + "Column", + "FilterId", + "MatchOperator", + "NullOption" + ], + "type": "object" + }, + "NumericEqualityMatchOperator": { + "enum": [ + "EQUALS", + "DOES_NOT_EQUAL" + ], + "type": "string" + }, + "NumericFilterSelectAllOptions": { + "enum": [ + "FILTER_ALL_VALUES" + ], + "type": "string" + }, + "NumericFormatConfiguration": { + "additionalProperties": false, + "properties": { + "CurrencyDisplayFormatConfiguration": { + "$ref": "#/definitions/CurrencyDisplayFormatConfiguration" + }, + "NumberDisplayFormatConfiguration": { + "$ref": "#/definitions/NumberDisplayFormatConfiguration" + }, + "PercentageDisplayFormatConfiguration": { + "$ref": "#/definitions/PercentageDisplayFormatConfiguration" + } + }, + "type": "object" + }, + "NumericRangeFilter": { + "additionalProperties": false, + "properties": { + "AggregationFunction": { + "$ref": "#/definitions/AggregationFunction" + }, + "Column": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "DefaultFilterControlConfiguration": { + "$ref": "#/definitions/DefaultFilterControlConfiguration" + }, + "FilterId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "IncludeMaximum": { + "default": null, + "type": "boolean" + }, + "IncludeMinimum": { + "default": null, + "type": "boolean" + }, + "NullOption": { + "$ref": "#/definitions/FilterNullOption" + }, + "RangeMaximum": { + "$ref": "#/definitions/NumericRangeFilterValue" + }, + "RangeMinimum": { + "$ref": "#/definitions/NumericRangeFilterValue" + }, + "SelectAllOptions": { + "$ref": "#/definitions/NumericFilterSelectAllOptions" + } + }, + "required": [ + "Column", + "FilterId", + "NullOption" + ], + "type": "object" + }, + "NumericRangeFilterValue": { + "additionalProperties": false, + "properties": { + "Parameter": { + "maxLength": 2048, + "minLength": 1, + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + "StaticValue": { + "default": null, + "type": "number" + } + }, + "type": "object" + }, + "NumericSeparatorConfiguration": { + "additionalProperties": false, + "properties": { + "DecimalSeparator": { + "$ref": "#/definitions/NumericSeparatorSymbol" + }, + "ThousandsSeparator": { + "$ref": "#/definitions/ThousandSeparatorOptions" + } + }, + "type": "object" + }, + "NumericSeparatorSymbol": { + "enum": [ + "COMMA", + "DOT", + "SPACE" + ], + "type": "string" + }, + "NumericalAggregationFunction": { + "additionalProperties": false, + "properties": { + "PercentileAggregation": { + "$ref": "#/definitions/PercentileAggregation" + }, + "SimpleNumericalAggregation": { + "$ref": "#/definitions/SimpleNumericalAggregationFunction" + } + }, + "type": "object" + }, + "NumericalDimensionField": { + "additionalProperties": false, + "properties": { + "Column": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "FieldId": { + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "FormatConfiguration": { + "$ref": "#/definitions/NumberFormatConfiguration" + }, + "HierarchyId": { + "maxLength": 512, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Column", + "FieldId" + ], + "type": "object" + }, + "NumericalMeasureField": { + "additionalProperties": false, + "properties": { + "AggregationFunction": { + "$ref": "#/definitions/NumericalAggregationFunction" + }, + "Column": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "FieldId": { + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "FormatConfiguration": { + "$ref": "#/definitions/NumberFormatConfiguration" + } + }, + "required": [ + "Column", + "FieldId" + ], + "type": "object" + }, + "OtherCategories": { + "enum": [ + "INCLUDE", + "EXCLUDE" + ], + "type": "string" + }, + "PaginationConfiguration": { + "additionalProperties": false, + "properties": { + "PageNumber": { + "minimum": 0, + "type": "number" + }, + "PageSize": { + "default": null, + "type": "number" + } + }, + "required": [ + "PageNumber", + "PageSize" + ], + "type": "object" + }, + "PanelBorderStyle": { + "enum": [ + "SOLID", + "DASHED", + "DOTTED" + ], + "type": "string" + }, + "PanelConfiguration": { + "additionalProperties": false, + "properties": { + "BackgroundColor": { + "pattern": "^#[A-F0-9]{6}(?:[A-F0-9]{2})?$", + "type": "string" + }, + "BackgroundVisibility": {}, + "BorderColor": { + "pattern": "^#[A-F0-9]{6}(?:[A-F0-9]{2})?$", + "type": "string" + }, + "BorderStyle": { + "$ref": "#/definitions/PanelBorderStyle" + }, + "BorderThickness": { + "description": "String based length that is composed of value and unit in px", + "type": "string" + }, + "BorderVisibility": {}, + "GutterSpacing": { + "description": "String based length that is composed of value and unit in px", + "type": "string" + }, + "GutterVisibility": {}, + "Title": { + "$ref": "#/definitions/PanelTitleOptions" + } + }, + "type": "object" + }, + "PanelTitleOptions": { + "additionalProperties": false, + "properties": { + "FontConfiguration": { + "$ref": "#/definitions/FontConfiguration" + }, + "HorizontalTextAlignment": { + "$ref": "#/definitions/HorizontalTextAlignment" + }, + "Visibility": {} + }, + "type": "object" + }, + "PaperOrientation": { + "enum": [ + "PORTRAIT", + "LANDSCAPE" + ], + "type": "string" + }, + "PaperSize": { + "enum": [ + "US_LETTER", + "US_LEGAL", + "US_TABLOID_LEDGER", + "A0", + "A1", + "A2", + "A3", + "A4", + "A5", + "JIS_B4", + "JIS_B5" + ], + "type": "string" + }, + "ParameterControl": { + "additionalProperties": false, + "properties": { + "DateTimePicker": { + "$ref": "#/definitions/ParameterDateTimePickerControl" + }, + "Dropdown": { + "$ref": "#/definitions/ParameterDropDownControl" + }, + "List": { + "$ref": "#/definitions/ParameterListControl" + }, + "Slider": { + "$ref": "#/definitions/ParameterSliderControl" + }, + "TextArea": { + "$ref": "#/definitions/ParameterTextAreaControl" + }, + "TextField": { + "$ref": "#/definitions/ParameterTextFieldControl" + } + }, + "type": "object" + }, + "ParameterDateTimePickerControl": { + "additionalProperties": false, + "properties": { + "DisplayOptions": { + "$ref": "#/definitions/DateTimePickerControlDisplayOptions" + }, + "ParameterControlId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "SourceParameterName": { + "maxLength": 2048, + "minLength": 1, + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + "Title": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "ParameterControlId", + "SourceParameterName", + "Title" + ], + "type": "object" + }, + "ParameterDeclaration": { + "additionalProperties": false, + "properties": { + "DateTimeParameterDeclaration": { + "$ref": "#/definitions/DateTimeParameterDeclaration" + }, + "DecimalParameterDeclaration": { + "$ref": "#/definitions/DecimalParameterDeclaration" + }, + "IntegerParameterDeclaration": { + "$ref": "#/definitions/IntegerParameterDeclaration" + }, + "StringParameterDeclaration": { + "$ref": "#/definitions/StringParameterDeclaration" + } + }, + "type": "object" + }, + "ParameterDropDownControl": { + "additionalProperties": false, + "properties": { + "CascadingControlConfiguration": { + "$ref": "#/definitions/CascadingControlConfiguration" + }, + "CommitMode": { + "$ref": "#/definitions/CommitMode" + }, + "DisplayOptions": { + "$ref": "#/definitions/DropDownControlDisplayOptions" + }, + "ParameterControlId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "SelectableValues": { + "$ref": "#/definitions/ParameterSelectableValues" + }, + "SourceParameterName": { + "maxLength": 2048, + "minLength": 1, + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + "Title": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "Type": { + "$ref": "#/definitions/SheetControlListType" + } + }, + "required": [ + "ParameterControlId", + "SourceParameterName", + "Title" + ], + "type": "object" + }, + "ParameterListControl": { + "additionalProperties": false, + "properties": { + "CascadingControlConfiguration": { + "$ref": "#/definitions/CascadingControlConfiguration" + }, + "DisplayOptions": { + "$ref": "#/definitions/ListControlDisplayOptions" + }, + "ParameterControlId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "SelectableValues": { + "$ref": "#/definitions/ParameterSelectableValues" + }, + "SourceParameterName": { + "maxLength": 2048, + "minLength": 1, + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + "Title": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "Type": { + "$ref": "#/definitions/SheetControlListType" + } + }, + "required": [ + "ParameterControlId", + "SourceParameterName", + "Title" + ], + "type": "object" + }, + "ParameterSelectableValues": { + "additionalProperties": false, + "properties": { + "LinkToDataSetColumn": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "Values": { + "items": { + "type": "string" + }, + "maxItems": 50000, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "ParameterSliderControl": { + "additionalProperties": false, + "properties": { + "DisplayOptions": { + "$ref": "#/definitions/SliderControlDisplayOptions" + }, + "MaximumValue": { + "default": 0, + "type": "number" + }, + "MinimumValue": { + "default": 0, + "type": "number" + }, + "ParameterControlId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "SourceParameterName": { + "maxLength": 2048, + "minLength": 1, + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + "StepSize": { + "default": 0, + "type": "number" + }, + "Title": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "MaximumValue", + "MinimumValue", + "ParameterControlId", + "SourceParameterName", + "StepSize", + "Title" + ], + "type": "object" + }, + "ParameterTextAreaControl": { + "additionalProperties": false, + "properties": { + "Delimiter": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "DisplayOptions": { + "$ref": "#/definitions/TextAreaControlDisplayOptions" + }, + "ParameterControlId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "SourceParameterName": { + "maxLength": 2048, + "minLength": 1, + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + "Title": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "ParameterControlId", + "SourceParameterName", + "Title" + ], + "type": "object" + }, + "ParameterTextFieldControl": { + "additionalProperties": false, + "properties": { + "DisplayOptions": { + "$ref": "#/definitions/TextFieldControlDisplayOptions" + }, + "ParameterControlId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "SourceParameterName": { + "maxLength": 2048, + "minLength": 1, + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + "Title": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "ParameterControlId", + "SourceParameterName", + "Title" + ], + "type": "object" + }, + "ParameterValueType": { + "enum": [ + "MULTI_VALUED", + "SINGLE_VALUED" + ], + "type": "string" + }, + "PercentVisibleRange": { + "additionalProperties": false, + "properties": { + "From": { + "default": null, + "maximum": 100, + "minimum": 0, + "type": "number" + }, + "To": { + "default": null, + "maximum": 100, + "minimum": 0, + "type": "number" + } + }, + "type": "object" + }, + "PercentageDisplayFormatConfiguration": { + "additionalProperties": false, + "properties": { + "DecimalPlacesConfiguration": { + "$ref": "#/definitions/DecimalPlacesConfiguration" + }, + "NegativeValueConfiguration": { + "$ref": "#/definitions/NegativeValueConfiguration" + }, + "NullValueFormatConfiguration": { + "$ref": "#/definitions/NullValueFormatConfiguration" + }, + "Prefix": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "SeparatorConfiguration": { + "$ref": "#/definitions/NumericSeparatorConfiguration" + }, + "Suffix": { + "maxLength": 128, + "minLength": 1, + "type": "string" + } + }, + "type": "object" + }, + "PercentileAggregation": { + "additionalProperties": false, + "properties": { + "PercentileValue": { + "maximum": 100, + "minimum": 0, + "type": "number" + } + }, + "type": "object" + }, + "PeriodOverPeriodComputation": { + "additionalProperties": false, + "properties": { + "ComputationId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "Name": { + "type": "string" + }, + "Time": { + "$ref": "#/definitions/DimensionField" + }, + "Value": { + "$ref": "#/definitions/MeasureField" + } + }, + "required": [ + "ComputationId" + ], + "type": "object" + }, + "PeriodToDateComputation": { + "additionalProperties": false, + "properties": { + "ComputationId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "Name": { + "type": "string" + }, + "PeriodTimeGranularity": { + "$ref": "#/definitions/TimeGranularity" + }, + "Time": { + "$ref": "#/definitions/DimensionField" + }, + "Value": { + "$ref": "#/definitions/MeasureField" + } + }, + "required": [ + "ComputationId" + ], + "type": "object" + }, + "PieChartAggregatedFieldWells": { + "additionalProperties": false, + "properties": { + "Category": { + "items": { + "$ref": "#/definitions/DimensionField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "SmallMultiples": { + "items": { + "$ref": "#/definitions/DimensionField" + }, + "maxItems": 1, + "minItems": 0, + "type": "array" + }, + "Values": { + "items": { + "$ref": "#/definitions/MeasureField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "PieChartConfiguration": { + "additionalProperties": false, + "properties": { + "CategoryLabelOptions": { + "$ref": "#/definitions/ChartAxisLabelOptions" + }, + "ContributionAnalysisDefaults": { + "items": { + "$ref": "#/definitions/ContributionAnalysisDefault" + }, + "maxItems": 200, + "minItems": 1, + "type": "array" + }, + "DataLabels": { + "$ref": "#/definitions/DataLabelOptions" + }, + "DonutOptions": { + "$ref": "#/definitions/DonutOptions" + }, + "FieldWells": { + "$ref": "#/definitions/PieChartFieldWells" + }, + "Interactions": { + "$ref": "#/definitions/VisualInteractionOptions" + }, + "Legend": { + "$ref": "#/definitions/LegendOptions" + }, + "SmallMultiplesOptions": { + "$ref": "#/definitions/SmallMultiplesOptions" + }, + "SortConfiguration": { + "$ref": "#/definitions/PieChartSortConfiguration" + }, + "Tooltip": { + "$ref": "#/definitions/TooltipOptions" + }, + "ValueLabelOptions": { + "$ref": "#/definitions/ChartAxisLabelOptions" + }, + "VisualPalette": { + "$ref": "#/definitions/VisualPalette" + } + }, + "type": "object" + }, + "PieChartFieldWells": { + "additionalProperties": false, + "properties": { + "PieChartAggregatedFieldWells": { + "$ref": "#/definitions/PieChartAggregatedFieldWells" + } + }, + "type": "object" + }, + "PieChartSortConfiguration": { + "additionalProperties": false, + "properties": { + "CategoryItemsLimit": { + "$ref": "#/definitions/ItemsLimitConfiguration" + }, + "CategorySort": { + "items": { + "$ref": "#/definitions/FieldSortOptions" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + }, + "SmallMultiplesLimitConfiguration": { + "$ref": "#/definitions/ItemsLimitConfiguration" + }, + "SmallMultiplesSort": { + "items": { + "$ref": "#/definitions/FieldSortOptions" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "PieChartVisual": { + "additionalProperties": false, + "properties": { + "Actions": { + "items": { + "$ref": "#/definitions/VisualCustomAction" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + }, + "ChartConfiguration": { + "$ref": "#/definitions/PieChartConfiguration" + }, + "ColumnHierarchies": { + "items": { + "$ref": "#/definitions/ColumnHierarchy" + }, + "maxItems": 2, + "minItems": 0, + "type": "array" + }, + "Subtitle": { + "$ref": "#/definitions/VisualSubtitleLabelOptions" + }, + "Title": { + "$ref": "#/definitions/VisualTitleLabelOptions" + }, + "VisualContentAltText": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "VisualId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + } + }, + "required": [ + "VisualId" + ], + "type": "object" + }, + "PivotFieldSortOptions": { + "additionalProperties": false, + "properties": { + "FieldId": { + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "SortBy": { + "$ref": "#/definitions/PivotTableSortBy" + } + }, + "required": [ + "FieldId", + "SortBy" + ], + "type": "object" + }, + "PivotTableAggregatedFieldWells": { + "additionalProperties": false, + "properties": { + "Columns": { + "items": { + "$ref": "#/definitions/DimensionField" + }, + "maxItems": 40, + "minItems": 0, + "type": "array" + }, + "Rows": { + "items": { + "$ref": "#/definitions/DimensionField" + }, + "maxItems": 40, + "minItems": 0, + "type": "array" + }, + "Values": { + "items": { + "$ref": "#/definitions/MeasureField" + }, + "maxItems": 40, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "PivotTableCellConditionalFormatting": { + "additionalProperties": false, + "properties": { + "FieldId": { + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "Scope": { + "$ref": "#/definitions/PivotTableConditionalFormattingScope" + }, + "Scopes": { + "items": { + "$ref": "#/definitions/PivotTableConditionalFormattingScope" + }, + "maxItems": 3, + "minItems": 0, + "type": "array" + }, + "TextFormat": { + "$ref": "#/definitions/TextConditionalFormat" + } + }, + "required": [ + "FieldId" + ], + "type": "object" + }, + "PivotTableConditionalFormatting": { + "additionalProperties": false, + "properties": { + "ConditionalFormattingOptions": { + "items": { + "$ref": "#/definitions/PivotTableConditionalFormattingOption" + }, + "maxItems": 500, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "PivotTableConditionalFormattingOption": { + "additionalProperties": false, + "properties": { + "Cell": { + "$ref": "#/definitions/PivotTableCellConditionalFormatting" + } + }, + "type": "object" + }, + "PivotTableConditionalFormattingScope": { + "additionalProperties": false, + "properties": { + "Role": { + "$ref": "#/definitions/PivotTableConditionalFormattingScopeRole" + } + }, + "type": "object" + }, + "PivotTableConditionalFormattingScopeRole": { + "enum": [ + "FIELD", + "FIELD_TOTAL", + "GRAND_TOTAL" + ], + "type": "string" + }, + "PivotTableConfiguration": { + "additionalProperties": false, + "properties": { + "FieldOptions": { + "$ref": "#/definitions/PivotTableFieldOptions" + }, + "FieldWells": { + "$ref": "#/definitions/PivotTableFieldWells" + }, + "Interactions": { + "$ref": "#/definitions/VisualInteractionOptions" + }, + "PaginatedReportOptions": { + "$ref": "#/definitions/PivotTablePaginatedReportOptions" + }, + "SortConfiguration": { + "$ref": "#/definitions/PivotTableSortConfiguration" + }, + "TableOptions": { + "$ref": "#/definitions/PivotTableOptions" + }, + "TotalOptions": { + "$ref": "#/definitions/PivotTableTotalOptions" + } + }, + "type": "object" + }, + "PivotTableDataPathOption": { + "additionalProperties": false, + "properties": { + "DataPathList": { + "items": { + "$ref": "#/definitions/DataPathValue" + }, + "maxItems": 20, + "minItems": 0, + "type": "array" + }, + "Width": { + "description": "String based length that is composed of value and unit in px", + "type": "string" + } + }, + "required": [ + "DataPathList" + ], + "type": "object" + }, + "PivotTableDataPathType": { + "enum": [ + "HIERARCHY_ROWS_LAYOUT_COLUMN", + "MULTIPLE_ROW_METRICS_COLUMN", + "EMPTY_COLUMN_HEADER", + "COUNT_METRIC_COLUMN" + ], + "type": "string" + }, + "PivotTableFieldCollapseState": { + "enum": [ + "COLLAPSED", + "EXPANDED" + ], + "type": "string" + }, + "PivotTableFieldCollapseStateOption": { + "additionalProperties": false, + "properties": { + "State": { + "$ref": "#/definitions/PivotTableFieldCollapseState" + }, + "Target": { + "$ref": "#/definitions/PivotTableFieldCollapseStateTarget" + } + }, + "required": [ + "Target" + ], + "type": "object" + }, + "PivotTableFieldCollapseStateTarget": { + "additionalProperties": false, + "properties": { + "FieldDataPathValues": { + "items": { + "$ref": "#/definitions/DataPathValue" + }, + "maxItems": 20, + "minItems": 0, + "type": "array" + }, + "FieldId": { + "type": "string" + } + }, + "type": "object" + }, + "PivotTableFieldOption": { + "additionalProperties": false, + "properties": { + "CustomLabel": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "FieldId": { + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "Visibility": {} + }, + "required": [ + "FieldId" + ], + "type": "object" + }, + "PivotTableFieldOptions": { + "additionalProperties": false, + "properties": { + "CollapseStateOptions": { + "items": { + "$ref": "#/definitions/PivotTableFieldCollapseStateOption" + }, + "type": "array" + }, + "DataPathOptions": { + "items": { + "$ref": "#/definitions/PivotTableDataPathOption" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + }, + "SelectedFieldOptions": { + "items": { + "$ref": "#/definitions/PivotTableFieldOption" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "PivotTableFieldSubtotalOptions": { + "additionalProperties": false, + "properties": { + "FieldId": { + "maxLength": 512, + "minLength": 1, + "type": "string" + } + }, + "type": "object" + }, + "PivotTableFieldWells": { + "additionalProperties": false, + "properties": { + "PivotTableAggregatedFieldWells": { + "$ref": "#/definitions/PivotTableAggregatedFieldWells" + } + }, + "type": "object" + }, + "PivotTableMetricPlacement": { + "enum": [ + "ROW", + "COLUMN" + ], + "type": "string" + }, + "PivotTableOptions": { + "additionalProperties": false, + "properties": { + "CellStyle": { + "$ref": "#/definitions/TableCellStyle" + }, + "CollapsedRowDimensionsVisibility": {}, + "ColumnHeaderStyle": { + "$ref": "#/definitions/TableCellStyle" + }, + "ColumnNamesVisibility": {}, + "DefaultCellWidth": { + "description": "String based length that is composed of value and unit in px", + "type": "string" + }, + "MetricPlacement": { + "$ref": "#/definitions/PivotTableMetricPlacement" + }, + "RowAlternateColorOptions": { + "$ref": "#/definitions/RowAlternateColorOptions" + }, + "RowFieldNamesStyle": { + "$ref": "#/definitions/TableCellStyle" + }, + "RowHeaderStyle": { + "$ref": "#/definitions/TableCellStyle" + }, + "RowsLabelOptions": { + "$ref": "#/definitions/PivotTableRowsLabelOptions" + }, + "RowsLayout": { + "$ref": "#/definitions/PivotTableRowsLayout" + }, + "SingleMetricVisibility": {}, + "ToggleButtonsVisibility": {} + }, + "type": "object" + }, + "PivotTablePaginatedReportOptions": { + "additionalProperties": false, + "properties": { + "OverflowColumnHeaderVisibility": {}, + "VerticalOverflowVisibility": {} + }, + "type": "object" + }, + "PivotTableRowsLabelOptions": { + "additionalProperties": false, + "properties": { + "CustomLabel": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "Visibility": {} + }, + "type": "object" + }, + "PivotTableRowsLayout": { + "enum": [ + "TABULAR", + "HIERARCHY" + ], + "type": "string" + }, + "PivotTableSortBy": { + "additionalProperties": false, + "properties": { + "Column": { + "$ref": "#/definitions/ColumnSort" + }, + "DataPath": { + "$ref": "#/definitions/DataPathSort" + }, + "Field": { + "$ref": "#/definitions/FieldSort" + } + }, + "type": "object" + }, + "PivotTableSortConfiguration": { + "additionalProperties": false, + "properties": { + "FieldSortOptions": { + "items": { + "$ref": "#/definitions/PivotFieldSortOptions" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "PivotTableSubtotalLevel": { + "enum": [ + "ALL", + "CUSTOM", + "LAST" + ], + "type": "string" + }, + "PivotTableTotalOptions": { + "additionalProperties": false, + "properties": { + "ColumnSubtotalOptions": { + "$ref": "#/definitions/SubtotalOptions" + }, + "ColumnTotalOptions": { + "$ref": "#/definitions/PivotTotalOptions" + }, + "RowSubtotalOptions": { + "$ref": "#/definitions/SubtotalOptions" + }, + "RowTotalOptions": { + "$ref": "#/definitions/PivotTotalOptions" + } + }, + "type": "object" + }, + "PivotTableVisual": { + "additionalProperties": false, + "properties": { + "Actions": { + "items": { + "$ref": "#/definitions/VisualCustomAction" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + }, + "ChartConfiguration": { + "$ref": "#/definitions/PivotTableConfiguration" + }, + "ConditionalFormatting": { + "$ref": "#/definitions/PivotTableConditionalFormatting" + }, + "Subtitle": { + "$ref": "#/definitions/VisualSubtitleLabelOptions" + }, + "Title": { + "$ref": "#/definitions/VisualTitleLabelOptions" + }, + "VisualContentAltText": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "VisualId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + } + }, + "required": [ + "VisualId" + ], + "type": "object" + }, + "PivotTotalOptions": { + "additionalProperties": false, + "properties": { + "CustomLabel": { + "type": "string" + }, + "MetricHeaderCellStyle": { + "$ref": "#/definitions/TableCellStyle" + }, + "Placement": { + "$ref": "#/definitions/TableTotalsPlacement" + }, + "ScrollStatus": { + "$ref": "#/definitions/TableTotalsScrollStatus" + }, + "TotalAggregationOptions": { + "items": { + "$ref": "#/definitions/TotalAggregationOption" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "TotalCellStyle": { + "$ref": "#/definitions/TableCellStyle" + }, + "TotalsVisibility": {}, + "ValueCellStyle": { + "$ref": "#/definitions/TableCellStyle" + } + }, + "type": "object" + }, + "PluginVisual": { + "additionalProperties": false, + "properties": { + "ChartConfiguration": { + "$ref": "#/definitions/PluginVisualConfiguration" + }, + "PluginArn": { + "type": "string" + }, + "Subtitle": { + "$ref": "#/definitions/VisualSubtitleLabelOptions" + }, + "Title": { + "$ref": "#/definitions/VisualTitleLabelOptions" + }, + "VisualContentAltText": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "VisualId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + } + }, + "required": [ + "PluginArn", + "VisualId" + ], + "type": "object" + }, + "PluginVisualAxisName": { + "enum": [ + "GROUP_BY", + "VALUE" + ], + "type": "string" + }, + "PluginVisualConfiguration": { + "additionalProperties": false, + "properties": { + "FieldWells": { + "items": { + "$ref": "#/definitions/PluginVisualFieldWell" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + }, + "SortConfiguration": { + "$ref": "#/definitions/PluginVisualSortConfiguration" + }, + "VisualOptions": { + "$ref": "#/definitions/PluginVisualOptions" + } + }, + "type": "object" + }, + "PluginVisualFieldWell": { + "additionalProperties": false, + "properties": { + "AxisName": { + "$ref": "#/definitions/PluginVisualAxisName" + }, + "Dimensions": { + "items": { + "$ref": "#/definitions/DimensionField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "Measures": { + "items": { + "$ref": "#/definitions/MeasureField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "Unaggregated": { + "items": { + "$ref": "#/definitions/UnaggregatedField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "PluginVisualItemsLimitConfiguration": { + "additionalProperties": false, + "properties": { + "ItemsLimit": { + "default": null, + "type": "number" + } + }, + "type": "object" + }, + "PluginVisualOptions": { + "additionalProperties": false, + "properties": { + "VisualProperties": { + "items": { + "$ref": "#/definitions/PluginVisualProperty" + }, + "type": "array" + } + }, + "type": "object" + }, + "PluginVisualProperty": { + "additionalProperties": false, + "properties": { + "Name": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "type": "object" + }, + "PluginVisualSortConfiguration": { + "additionalProperties": false, + "properties": { + "PluginVisualTableQuerySort": { + "$ref": "#/definitions/PluginVisualTableQuerySort" + } + }, + "type": "object" + }, + "PluginVisualTableQuerySort": { + "additionalProperties": false, + "properties": { + "ItemsLimitConfiguration": { + "$ref": "#/definitions/PluginVisualItemsLimitConfiguration" + }, + "RowSort": { + "items": { + "$ref": "#/definitions/FieldSortOptions" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "PredefinedHierarchy": { + "additionalProperties": false, + "properties": { + "Columns": { + "items": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "maxItems": 10, + "minItems": 1, + "type": "array" + }, + "DrillDownFilters": { + "items": { + "$ref": "#/definitions/DrillDownFilter" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + }, + "HierarchyId": { + "maxLength": 512, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Columns", + "HierarchyId" + ], + "type": "object" + }, + "PrimaryValueDisplayType": { + "enum": [ + "HIDDEN", + "COMPARISON", + "ACTUAL" + ], + "type": "string" + }, + "ProgressBarOptions": { + "additionalProperties": false, + "properties": { + "Visibility": {} + }, + "type": "object" + }, + "QueryExecutionMode": { + "enum": [ + "AUTO", + "MANUAL" + ], + "type": "string" + }, + "QueryExecutionOptions": { + "additionalProperties": false, + "properties": { + "QueryExecutionMode": { + "$ref": "#/definitions/QueryExecutionMode" + } + }, + "type": "object" + }, + "RadarChartAggregatedFieldWells": { + "additionalProperties": false, + "properties": { + "Category": { + "items": { + "$ref": "#/definitions/DimensionField" + }, + "maxItems": 1, + "minItems": 0, + "type": "array" + }, + "Color": { + "items": { + "$ref": "#/definitions/DimensionField" + }, + "maxItems": 1, + "minItems": 0, + "type": "array" + }, + "Values": { + "items": { + "$ref": "#/definitions/MeasureField" + }, + "maxItems": 20, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "RadarChartAreaStyleSettings": { + "additionalProperties": false, + "properties": { + "Visibility": {} + }, + "type": "object" + }, + "RadarChartAxesRangeScale": { + "enum": [ + "AUTO", + "INDEPENDENT", + "SHARED" + ], + "type": "string" + }, + "RadarChartConfiguration": { + "additionalProperties": false, + "properties": { + "AlternateBandColorsVisibility": {}, + "AlternateBandEvenColor": { + "pattern": "^#[A-F0-9]{6}$", + "type": "string" + }, + "AlternateBandOddColor": { + "pattern": "^#[A-F0-9]{6}$", + "type": "string" + }, + "AxesRangeScale": { + "$ref": "#/definitions/RadarChartAxesRangeScale" + }, + "BaseSeriesSettings": { + "$ref": "#/definitions/RadarChartSeriesSettings" + }, + "CategoryAxis": { + "$ref": "#/definitions/AxisDisplayOptions" + }, + "CategoryLabelOptions": { + "$ref": "#/definitions/ChartAxisLabelOptions" + }, + "ColorAxis": { + "$ref": "#/definitions/AxisDisplayOptions" + }, + "ColorLabelOptions": { + "$ref": "#/definitions/ChartAxisLabelOptions" + }, + "FieldWells": { + "$ref": "#/definitions/RadarChartFieldWells" + }, + "Interactions": { + "$ref": "#/definitions/VisualInteractionOptions" + }, + "Legend": { + "$ref": "#/definitions/LegendOptions" + }, + "Shape": { + "$ref": "#/definitions/RadarChartShape" + }, + "SortConfiguration": { + "$ref": "#/definitions/RadarChartSortConfiguration" + }, + "StartAngle": { + "maximum": 360, + "minimum": -360, + "type": "number" + }, + "VisualPalette": { + "$ref": "#/definitions/VisualPalette" + } + }, + "type": "object" + }, + "RadarChartFieldWells": { + "additionalProperties": false, + "properties": { + "RadarChartAggregatedFieldWells": { + "$ref": "#/definitions/RadarChartAggregatedFieldWells" + } + }, + "type": "object" + }, + "RadarChartSeriesSettings": { + "additionalProperties": false, + "properties": { + "AreaStyleSettings": { + "$ref": "#/definitions/RadarChartAreaStyleSettings" + } + }, + "type": "object" + }, + "RadarChartShape": { + "enum": [ + "CIRCLE", + "POLYGON" + ], + "type": "string" + }, + "RadarChartSortConfiguration": { + "additionalProperties": false, + "properties": { + "CategoryItemsLimit": { + "$ref": "#/definitions/ItemsLimitConfiguration" + }, + "CategorySort": { + "items": { + "$ref": "#/definitions/FieldSortOptions" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + }, + "ColorItemsLimit": { + "$ref": "#/definitions/ItemsLimitConfiguration" + }, + "ColorSort": { + "items": { + "$ref": "#/definitions/FieldSortOptions" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "RadarChartVisual": { + "additionalProperties": false, + "properties": { + "Actions": { + "items": { + "$ref": "#/definitions/VisualCustomAction" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + }, + "ChartConfiguration": { + "$ref": "#/definitions/RadarChartConfiguration" + }, + "ColumnHierarchies": { + "items": { + "$ref": "#/definitions/ColumnHierarchy" + }, + "maxItems": 2, + "minItems": 0, + "type": "array" + }, + "Subtitle": { + "$ref": "#/definitions/VisualSubtitleLabelOptions" + }, + "Title": { + "$ref": "#/definitions/VisualTitleLabelOptions" + }, + "VisualContentAltText": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "VisualId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + } + }, + "required": [ + "VisualId" + ], + "type": "object" + }, + "RangeEndsLabelType": { + "additionalProperties": false, + "properties": { + "Visibility": {} + }, + "type": "object" + }, + "ReferenceLine": { + "additionalProperties": false, + "properties": { + "DataConfiguration": { + "$ref": "#/definitions/ReferenceLineDataConfiguration" + }, + "LabelConfiguration": { + "$ref": "#/definitions/ReferenceLineLabelConfiguration" + }, + "Status": { + "$ref": "#/definitions/WidgetStatus" + }, + "StyleConfiguration": { + "$ref": "#/definitions/ReferenceLineStyleConfiguration" + } + }, + "required": [ + "DataConfiguration" + ], + "type": "object" + }, + "ReferenceLineCustomLabelConfiguration": { + "additionalProperties": false, + "properties": { + "CustomLabel": { + "pattern": "\\S", + "type": "string" + } + }, + "required": [ + "CustomLabel" + ], + "type": "object" + }, + "ReferenceLineDataConfiguration": { + "additionalProperties": false, + "properties": { + "AxisBinding": { + "$ref": "#/definitions/AxisBinding" + }, + "DynamicConfiguration": { + "$ref": "#/definitions/ReferenceLineDynamicDataConfiguration" + }, + "SeriesType": { + "$ref": "#/definitions/ReferenceLineSeriesType" + }, + "StaticConfiguration": { + "$ref": "#/definitions/ReferenceLineStaticDataConfiguration" + } + }, + "type": "object" + }, + "ReferenceLineDynamicDataConfiguration": { + "additionalProperties": false, + "properties": { + "Calculation": { + "$ref": "#/definitions/NumericalAggregationFunction" + }, + "Column": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "MeasureAggregationFunction": { + "$ref": "#/definitions/AggregationFunction" + } + }, + "required": [ + "Calculation", + "Column" + ], + "type": "object" + }, + "ReferenceLineLabelConfiguration": { + "additionalProperties": false, + "properties": { + "CustomLabelConfiguration": { + "$ref": "#/definitions/ReferenceLineCustomLabelConfiguration" + }, + "FontColor": { + "pattern": "^#[A-F0-9]{6}$", + "type": "string" + }, + "FontConfiguration": { + "$ref": "#/definitions/FontConfiguration" + }, + "HorizontalPosition": { + "$ref": "#/definitions/ReferenceLineLabelHorizontalPosition" + }, + "ValueLabelConfiguration": { + "$ref": "#/definitions/ReferenceLineValueLabelConfiguration" + }, + "VerticalPosition": { + "$ref": "#/definitions/ReferenceLineLabelVerticalPosition" + } + }, + "type": "object" + }, + "ReferenceLineLabelHorizontalPosition": { + "enum": [ + "LEFT", + "CENTER", + "RIGHT" + ], + "type": "string" + }, + "ReferenceLineLabelVerticalPosition": { + "enum": [ + "ABOVE", + "BELOW" + ], + "type": "string" + }, + "ReferenceLinePatternType": { + "enum": [ + "SOLID", + "DASHED", + "DOTTED" + ], + "type": "string" + }, + "ReferenceLineSeriesType": { + "enum": [ + "BAR", + "LINE" + ], + "type": "string" + }, + "ReferenceLineStaticDataConfiguration": { + "additionalProperties": false, + "properties": { + "Value": { + "default": 0, + "type": "number" + } + }, + "required": [ + "Value" + ], + "type": "object" + }, + "ReferenceLineStyleConfiguration": { + "additionalProperties": false, + "properties": { + "Color": { + "pattern": "^#[A-F0-9]{6}$", + "type": "string" + }, + "Pattern": { + "$ref": "#/definitions/ReferenceLinePatternType" + } + }, + "type": "object" + }, + "ReferenceLineValueLabelConfiguration": { + "additionalProperties": false, + "properties": { + "FormatConfiguration": { + "$ref": "#/definitions/NumericFormatConfiguration" + }, + "RelativePosition": { + "$ref": "#/definitions/ReferenceLineValueLabelRelativePosition" + } + }, + "type": "object" + }, + "ReferenceLineValueLabelRelativePosition": { + "enum": [ + "BEFORE_CUSTOM_LABEL", + "AFTER_CUSTOM_LABEL" + ], + "type": "string" + }, + "RelativeDateTimeControlDisplayOptions": { + "additionalProperties": false, + "properties": { + "DateTimeFormat": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "InfoIconLabelOptions": { + "$ref": "#/definitions/SheetControlInfoIconLabelOptions" + }, + "TitleOptions": { + "$ref": "#/definitions/LabelOptions" + } + }, + "type": "object" + }, + "RelativeDateType": { + "enum": [ + "PREVIOUS", + "THIS", + "LAST", + "NOW", + "NEXT" + ], + "type": "string" + }, + "RelativeDatesFilter": { + "additionalProperties": false, + "properties": { + "AnchorDateConfiguration": { + "$ref": "#/definitions/AnchorDateConfiguration" + }, + "Column": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "DefaultFilterControlConfiguration": { + "$ref": "#/definitions/DefaultFilterControlConfiguration" + }, + "ExcludePeriodConfiguration": { + "$ref": "#/definitions/ExcludePeriodConfiguration" + }, + "FilterId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "MinimumGranularity": { + "$ref": "#/definitions/TimeGranularity" + }, + "NullOption": { + "$ref": "#/definitions/FilterNullOption" + }, + "ParameterName": { + "maxLength": 2048, + "minLength": 1, + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + "RelativeDateType": { + "$ref": "#/definitions/RelativeDateType" + }, + "RelativeDateValue": { + "default": null, + "type": "number" + }, + "TimeGranularity": { + "$ref": "#/definitions/TimeGranularity" + } + }, + "required": [ + "AnchorDateConfiguration", + "Column", + "FilterId", + "NullOption", + "RelativeDateType", + "TimeGranularity" + ], + "type": "object" + }, + "RelativeFontSize": { + "enum": [ + "EXTRA_SMALL", + "SMALL", + "MEDIUM", + "LARGE", + "EXTRA_LARGE" + ], + "type": "string" + }, + "ResizeOption": { + "enum": [ + "FIXED", + "RESPONSIVE" + ], + "type": "string" + }, + "ResourcePermission": { + "additionalProperties": false, + "description": "Permission for the resource.
", + "properties": { + "Actions": { + "description": "The IAM action to grant or revoke permissions on.
", + "items": { + "type": "string" + }, + "maxItems": 20, + "minItems": 1, + "type": "array" + }, + "Principal": { + "description": "The Amazon Resource Name (ARN) of the principal. This can be one of the\n following:
\nThe ARN of an Amazon QuickSight user or group associated with a data source or dataset. (This is common.)
\nThe ARN of an Amazon QuickSight user, group, or namespace associated with an analysis, dashboard, template, or theme. (This is common.)
\nThe ARN of an Amazon Web Services account root: This is an IAM ARN rather than a QuickSight\n ARN. Use this option only to share resources (templates) across Amazon Web Services accounts.\n (This is less common.)
\nA sheet, which is an object that contains a set of visuals that\n are viewed together on one page in Amazon QuickSight. Every analysis and dashboard\n contains at least one sheet. Each sheet contains at least one visualization widget, for\n example a chart, pivot table, or narrative insight. Sheets can be associated with other\n components, such as controls, filters, and so on.
", + "properties": { + "Name": { + "description": "The name of a sheet. This name is displayed on the sheet's tab in the Amazon QuickSight\n console.
", + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "SheetId": { + "description": "The unique identifier associated with a sheet.
", + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + } + }, + "type": "object" + }, + "SheetContentType": { + "enum": [ + "PAGINATED", + "INTERACTIVE" + ], + "type": "string" + }, + "SheetControlDateTimePickerType": { + "enum": [ + "SINGLE_VALUED", + "DATE_RANGE" + ], + "type": "string" + }, + "SheetControlInfoIconLabelOptions": { + "additionalProperties": false, + "properties": { + "InfoIconText": { + "maxLength": 100, + "minLength": 1, + "type": "string" + }, + "Visibility": {} + }, + "type": "object" + }, + "SheetControlLayout": { + "additionalProperties": false, + "properties": { + "Configuration": { + "$ref": "#/definitions/SheetControlLayoutConfiguration" + } + }, + "required": [ + "Configuration" + ], + "type": "object" + }, + "SheetControlLayoutConfiguration": { + "additionalProperties": false, + "properties": { + "GridLayout": { + "$ref": "#/definitions/GridLayoutConfiguration" + } + }, + "type": "object" + }, + "SheetControlListType": { + "enum": [ + "MULTI_SELECT", + "SINGLE_SELECT" + ], + "type": "string" + }, + "SheetControlSliderType": { + "enum": [ + "SINGLE_POINT", + "RANGE" + ], + "type": "string" + }, + "SheetDefinition": { + "additionalProperties": false, + "properties": { + "ContentType": { + "$ref": "#/definitions/SheetContentType" + }, + "Description": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "FilterControls": { + "items": { + "$ref": "#/definitions/FilterControl" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "Images": { + "items": { + "$ref": "#/definitions/SheetImage" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + }, + "Layouts": { + "items": { + "$ref": "#/definitions/Layout" + }, + "maxItems": 1, + "minItems": 1, + "type": "array" + }, + "Name": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "ParameterControls": { + "items": { + "$ref": "#/definitions/ParameterControl" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "SheetControlLayouts": { + "items": { + "$ref": "#/definitions/SheetControlLayout" + }, + "maxItems": 1, + "minItems": 0, + "type": "array" + }, + "SheetId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "TextBoxes": { + "items": { + "$ref": "#/definitions/SheetTextBox" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + }, + "Title": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "Visuals": { + "items": { + "$ref": "#/definitions/Visual" + }, + "maxItems": 50, + "minItems": 0, + "type": "array" + } + }, + "required": [ + "SheetId" + ], + "type": "object" + }, + "SheetElementConfigurationOverrides": { + "additionalProperties": false, + "properties": { + "Visibility": {} + }, + "type": "object" + }, + "SheetElementRenderingRule": { + "additionalProperties": false, + "properties": { + "ConfigurationOverrides": { + "$ref": "#/definitions/SheetElementConfigurationOverrides" + }, + "Expression": { + "maxLength": 4096, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "ConfigurationOverrides", + "Expression" + ], + "type": "object" + }, + "SheetImage": { + "additionalProperties": false, + "properties": { + "Actions": { + "items": { + "$ref": "#/definitions/ImageCustomAction" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + }, + "ImageContentAltText": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "Interactions": { + "$ref": "#/definitions/ImageInteractionOptions" + }, + "Scaling": { + "$ref": "#/definitions/SheetImageScalingConfiguration" + }, + "SheetImageId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "Source": { + "$ref": "#/definitions/SheetImageSource" + }, + "Tooltip": { + "$ref": "#/definitions/SheetImageTooltipConfiguration" + } + }, + "required": [ + "SheetImageId", + "Source" + ], + "type": "object" + }, + "SheetImageScalingConfiguration": { + "additionalProperties": false, + "properties": { + "ScalingType": { + "$ref": "#/definitions/SheetImageScalingType" + } + }, + "type": "object" + }, + "SheetImageScalingType": { + "enum": [ + "SCALE_TO_WIDTH", + "SCALE_TO_HEIGHT", + "SCALE_TO_CONTAINER", + "SCALE_NONE" + ], + "type": "string" + }, + "SheetImageSource": { + "additionalProperties": false, + "properties": { + "SheetImageStaticFileSource": { + "$ref": "#/definitions/SheetImageStaticFileSource" + } + }, + "type": "object" + }, + "SheetImageStaticFileSource": { + "additionalProperties": false, + "properties": { + "StaticFileId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + } + }, + "required": [ + "StaticFileId" + ], + "type": "object" + }, + "SheetImageTooltipConfiguration": { + "additionalProperties": false, + "properties": { + "TooltipText": { + "$ref": "#/definitions/SheetImageTooltipText" + }, + "Visibility": {} + }, + "type": "object" + }, + "SheetImageTooltipText": { + "additionalProperties": false, + "properties": { + "PlainText": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + } + }, + "type": "object" + }, + "SheetTextBox": { + "additionalProperties": false, + "properties": { + "Content": { + "maxLength": 150000, + "minLength": 0, + "type": "string" + }, + "SheetTextBoxId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + } + }, + "required": [ + "SheetTextBoxId" + ], + "type": "object" + }, + "SheetVisualScopingConfiguration": { + "additionalProperties": false, + "properties": { + "Scope": { + "$ref": "#/definitions/FilterVisualScope" + }, + "SheetId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "VisualIds": { + "items": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "maxItems": 50, + "minItems": 0, + "type": "array" + } + }, + "required": [ + "Scope", + "SheetId" + ], + "type": "object" + }, + "ShortFormatText": { + "additionalProperties": false, + "properties": { + "PlainText": { + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "RichText": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + } + }, + "type": "object" + }, + "SimpleAttributeAggregationFunction": { + "enum": [ + "UNIQUE_VALUE" + ], + "type": "string" + }, + "SimpleClusterMarker": { + "additionalProperties": false, + "properties": { + "Color": { + "pattern": "^#[A-F0-9]{6}$", + "type": "string" + } + }, + "type": "object" + }, + "SimpleNumericalAggregationFunction": { + "enum": [ + "SUM", + "AVERAGE", + "MIN", + "MAX", + "COUNT", + "DISTINCT_COUNT", + "VAR", + "VARP", + "STDEV", + "STDEVP", + "MEDIAN" + ], + "type": "string" + }, + "SimpleTotalAggregationFunction": { + "enum": [ + "DEFAULT", + "SUM", + "AVERAGE", + "MIN", + "MAX", + "NONE" + ], + "type": "string" + }, + "SingleAxisOptions": { + "additionalProperties": false, + "properties": { + "YAxisOptions": { + "$ref": "#/definitions/YAxisOptions" + } + }, + "type": "object" + }, + "SingleYAxisOption": { + "enum": [ + "PRIMARY_Y_AXIS" + ], + "type": "string" + }, + "SliderControlDisplayOptions": { + "additionalProperties": false, + "properties": { + "InfoIconLabelOptions": { + "$ref": "#/definitions/SheetControlInfoIconLabelOptions" + }, + "TitleOptions": { + "$ref": "#/definitions/LabelOptions" + } + }, + "type": "object" + }, + "SmallMultiplesAxisPlacement": { + "enum": [ + "OUTSIDE", + "INSIDE" + ], + "type": "string" + }, + "SmallMultiplesAxisProperties": { + "additionalProperties": false, + "properties": { + "Placement": { + "$ref": "#/definitions/SmallMultiplesAxisPlacement" + }, + "Scale": { + "$ref": "#/definitions/SmallMultiplesAxisScale" + } + }, + "type": "object" + }, + "SmallMultiplesAxisScale": { + "enum": [ + "SHARED", + "INDEPENDENT" + ], + "type": "string" + }, + "SmallMultiplesOptions": { + "additionalProperties": false, + "properties": { + "MaxVisibleColumns": { + "maximum": 10, + "minimum": 1, + "type": "number" + }, + "MaxVisibleRows": { + "maximum": 10, + "minimum": 1, + "type": "number" + }, + "PanelConfiguration": { + "$ref": "#/definitions/PanelConfiguration" + }, + "XAxis": { + "$ref": "#/definitions/SmallMultiplesAxisProperties" + }, + "YAxis": { + "$ref": "#/definitions/SmallMultiplesAxisProperties" + } + }, + "type": "object" + }, + "SortDirection": { + "enum": [ + "ASC", + "DESC" + ], + "type": "string" + }, + "Spacing": { + "additionalProperties": false, + "properties": { + "Bottom": { + "description": "String based length that is composed of value and unit", + "type": "string" + }, + "Left": { + "description": "String based length that is composed of value and unit", + "type": "string" + }, + "Right": { + "description": "String based length that is composed of value and unit", + "type": "string" + }, + "Top": { + "description": "String based length that is composed of value and unit", + "type": "string" + } + }, + "type": "object" + }, + "SpatialStaticFile": { + "additionalProperties": false, + "properties": { + "Source": { + "$ref": "#/definitions/StaticFileSource" + }, + "StaticFileId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + } + }, + "required": [ + "StaticFileId" + ], + "type": "object" + }, + "SpecialValue": { + "enum": [ + "EMPTY", + "NULL", + "OTHER" + ], + "type": "string" + }, + "StaticFile": { + "additionalProperties": false, + "properties": { + "ImageStaticFile": { + "$ref": "#/definitions/ImageStaticFile" + }, + "SpatialStaticFile": { + "$ref": "#/definitions/SpatialStaticFile" + } + }, + "type": "object" + }, + "StaticFileS3SourceOptions": { + "additionalProperties": false, + "properties": { + "BucketName": { + "type": "string" + }, + "ObjectKey": { + "type": "string" + }, + "Region": { + "type": "string" + } + }, + "required": [ + "BucketName", + "ObjectKey", + "Region" + ], + "type": "object" + }, + "StaticFileSource": { + "additionalProperties": false, + "properties": { + "S3Options": { + "$ref": "#/definitions/StaticFileS3SourceOptions" + }, + "UrlOptions": { + "$ref": "#/definitions/StaticFileUrlSourceOptions" + } + }, + "type": "object" + }, + "StaticFileUrlSourceOptions": { + "additionalProperties": false, + "properties": { + "Url": { + "type": "string" + } + }, + "required": [ + "Url" + ], + "type": "object" + }, + "StringDefaultValues": { + "additionalProperties": false, + "properties": { + "DynamicValue": { + "$ref": "#/definitions/DynamicDefaultValue" + }, + "StaticValues": { + "items": { + "type": "string" + }, + "maxItems": 50000, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "StringFormatConfiguration": { + "additionalProperties": false, + "properties": { + "NullValueFormatConfiguration": { + "$ref": "#/definitions/NullValueFormatConfiguration" + }, + "NumericFormatConfiguration": { + "$ref": "#/definitions/NumericFormatConfiguration" + } + }, + "type": "object" + }, + "StringParameterDeclaration": { + "additionalProperties": false, + "properties": { + "DefaultValues": { + "$ref": "#/definitions/StringDefaultValues" + }, + "MappedDataSetParameters": { + "items": { + "$ref": "#/definitions/MappedDataSetParameter" + }, + "maxItems": 150, + "minItems": 0, + "type": "array" + }, + "Name": { + "maxLength": 2048, + "minLength": 1, + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + "ParameterValueType": { + "$ref": "#/definitions/ParameterValueType" + }, + "ValueWhenUnset": { + "$ref": "#/definitions/StringValueWhenUnsetConfiguration" + } + }, + "required": [ + "Name", + "ParameterValueType" + ], + "type": "object" + }, + "StringValueWhenUnsetConfiguration": { + "additionalProperties": false, + "properties": { + "CustomValue": { + "type": "string" + }, + "ValueWhenUnsetOption": { + "$ref": "#/definitions/ValueWhenUnsetOption" + } + }, + "type": "object" + }, + "StyledCellType": { + "enum": [ + "TOTAL", + "METRIC_HEADER", + "VALUE" + ], + "type": "string" + }, + "SubtotalOptions": { + "additionalProperties": false, + "properties": { + "CustomLabel": { + "type": "string" + }, + "FieldLevel": { + "$ref": "#/definitions/PivotTableSubtotalLevel" + }, + "FieldLevelOptions": { + "items": { + "$ref": "#/definitions/PivotTableFieldSubtotalOptions" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + }, + "MetricHeaderCellStyle": { + "$ref": "#/definitions/TableCellStyle" + }, + "StyleTargets": { + "items": { + "$ref": "#/definitions/TableStyleTarget" + }, + "maxItems": 3, + "minItems": 0, + "type": "array" + }, + "TotalCellStyle": { + "$ref": "#/definitions/TableCellStyle" + }, + "TotalsVisibility": {}, + "ValueCellStyle": { + "$ref": "#/definitions/TableCellStyle" + } + }, + "type": "object" + }, + "TableAggregatedFieldWells": { + "additionalProperties": false, + "properties": { + "GroupBy": { + "items": { + "$ref": "#/definitions/DimensionField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "Values": { + "items": { + "$ref": "#/definitions/MeasureField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "TableBorderOptions": { + "additionalProperties": false, + "properties": { + "Color": { + "pattern": "^#[A-F0-9]{6}$", + "type": "string" + }, + "Style": { + "$ref": "#/definitions/TableBorderStyle" + }, + "Thickness": { + "maximum": 4, + "minimum": 1, + "type": "number" + } + }, + "type": "object" + }, + "TableBorderStyle": { + "enum": [ + "NONE", + "SOLID" + ], + "type": "string" + }, + "TableCellConditionalFormatting": { + "additionalProperties": false, + "properties": { + "FieldId": { + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "TextFormat": { + "$ref": "#/definitions/TextConditionalFormat" + } + }, + "required": [ + "FieldId" + ], + "type": "object" + }, + "TableCellImageScalingConfiguration": { + "enum": [ + "FIT_TO_CELL_HEIGHT", + "FIT_TO_CELL_WIDTH", + "DO_NOT_SCALE" + ], + "type": "string" + }, + "TableCellImageSizingConfiguration": { + "additionalProperties": false, + "properties": { + "TableCellImageScalingConfiguration": { + "$ref": "#/definitions/TableCellImageScalingConfiguration" + } + }, + "type": "object" + }, + "TableCellStyle": { + "additionalProperties": false, + "properties": { + "BackgroundColor": { + "pattern": "^#[A-F0-9]{6}$", + "type": "string" + }, + "Border": { + "$ref": "#/definitions/GlobalTableBorderOptions" + }, + "FontConfiguration": { + "$ref": "#/definitions/FontConfiguration" + }, + "Height": { + "maximum": 500, + "minimum": 8, + "type": "number" + }, + "HorizontalTextAlignment": { + "$ref": "#/definitions/HorizontalTextAlignment" + }, + "TextWrap": { + "$ref": "#/definitions/TextWrap" + }, + "VerticalTextAlignment": { + "$ref": "#/definitions/VerticalTextAlignment" + }, + "Visibility": {} + }, + "type": "object" + }, + "TableConditionalFormatting": { + "additionalProperties": false, + "properties": { + "ConditionalFormattingOptions": { + "items": { + "$ref": "#/definitions/TableConditionalFormattingOption" + }, + "maxItems": 500, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "TableConditionalFormattingOption": { + "additionalProperties": false, + "properties": { + "Cell": { + "$ref": "#/definitions/TableCellConditionalFormatting" + }, + "Row": { + "$ref": "#/definitions/TableRowConditionalFormatting" + } + }, + "type": "object" + }, + "TableConfiguration": { + "additionalProperties": false, + "properties": { + "FieldOptions": { + "$ref": "#/definitions/TableFieldOptions" + }, + "FieldWells": { + "$ref": "#/definitions/TableFieldWells" + }, + "Interactions": { + "$ref": "#/definitions/VisualInteractionOptions" + }, + "PaginatedReportOptions": { + "$ref": "#/definitions/TablePaginatedReportOptions" + }, + "SortConfiguration": { + "$ref": "#/definitions/TableSortConfiguration" + }, + "TableInlineVisualizations": { + "items": { + "$ref": "#/definitions/TableInlineVisualization" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "TableOptions": { + "$ref": "#/definitions/TableOptions" + }, + "TotalOptions": { + "$ref": "#/definitions/TotalOptions" + } + }, + "type": "object" + }, + "TableFieldCustomIconContent": { + "additionalProperties": false, + "properties": { + "Icon": { + "$ref": "#/definitions/TableFieldIconSetType" + } + }, + "type": "object" + }, + "TableFieldCustomTextContent": { + "additionalProperties": false, + "properties": { + "FontConfiguration": { + "$ref": "#/definitions/FontConfiguration" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "FontConfiguration" + ], + "type": "object" + }, + "TableFieldIconSetType": { + "enum": [ + "LINK" + ], + "type": "string" + }, + "TableFieldImageConfiguration": { + "additionalProperties": false, + "properties": { + "SizingOptions": { + "$ref": "#/definitions/TableCellImageSizingConfiguration" + } + }, + "type": "object" + }, + "TableFieldLinkConfiguration": { + "additionalProperties": false, + "properties": { + "Content": { + "$ref": "#/definitions/TableFieldLinkContentConfiguration" + }, + "Target": { + "$ref": "#/definitions/URLTargetConfiguration" + } + }, + "required": [ + "Content", + "Target" + ], + "type": "object" + }, + "TableFieldLinkContentConfiguration": { + "additionalProperties": false, + "properties": { + "CustomIconContent": { + "$ref": "#/definitions/TableFieldCustomIconContent" + }, + "CustomTextContent": { + "$ref": "#/definitions/TableFieldCustomTextContent" + } + }, + "type": "object" + }, + "TableFieldOption": { + "additionalProperties": false, + "properties": { + "CustomLabel": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "FieldId": { + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "URLStyling": { + "$ref": "#/definitions/TableFieldURLConfiguration" + }, + "Visibility": {}, + "Width": { + "description": "String based length that is composed of value and unit in px", + "type": "string" + } + }, + "required": [ + "FieldId" + ], + "type": "object" + }, + "TableFieldOptions": { + "additionalProperties": false, + "properties": { + "Order": { + "items": { + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "PinnedFieldOptions": { + "$ref": "#/definitions/TablePinnedFieldOptions" + }, + "SelectedFieldOptions": { + "items": { + "$ref": "#/definitions/TableFieldOption" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + }, + "TransposedTableOptions": { + "items": { + "$ref": "#/definitions/TransposedTableOption" + }, + "maxItems": 10001, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "TableFieldURLConfiguration": { + "additionalProperties": false, + "properties": { + "ImageConfiguration": { + "$ref": "#/definitions/TableFieldImageConfiguration" + }, + "LinkConfiguration": { + "$ref": "#/definitions/TableFieldLinkConfiguration" + } + }, + "type": "object" + }, + "TableFieldWells": { + "additionalProperties": false, + "properties": { + "TableAggregatedFieldWells": { + "$ref": "#/definitions/TableAggregatedFieldWells" + }, + "TableUnaggregatedFieldWells": { + "$ref": "#/definitions/TableUnaggregatedFieldWells" + } + }, + "type": "object" + }, + "TableInlineVisualization": { + "additionalProperties": false, + "properties": { + "DataBars": { + "$ref": "#/definitions/DataBarsOptions" + } + }, + "type": "object" + }, + "TableOptions": { + "additionalProperties": false, + "properties": { + "CellStyle": { + "$ref": "#/definitions/TableCellStyle" + }, + "HeaderStyle": { + "$ref": "#/definitions/TableCellStyle" + }, + "Orientation": { + "$ref": "#/definitions/TableOrientation" + }, + "RowAlternateColorOptions": { + "$ref": "#/definitions/RowAlternateColorOptions" + } + }, + "type": "object" + }, + "TableOrientation": { + "enum": [ + "VERTICAL", + "HORIZONTAL" + ], + "type": "string" + }, + "TablePaginatedReportOptions": { + "additionalProperties": false, + "properties": { + "OverflowColumnHeaderVisibility": {}, + "VerticalOverflowVisibility": {} + }, + "type": "object" + }, + "TablePinnedFieldOptions": { + "additionalProperties": false, + "properties": { + "PinnedLeftFields": { + "items": { + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "maxItems": 201, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "TableRowConditionalFormatting": { + "additionalProperties": false, + "properties": { + "BackgroundColor": { + "$ref": "#/definitions/ConditionalFormattingColor" + }, + "TextColor": { + "$ref": "#/definitions/ConditionalFormattingColor" + } + }, + "type": "object" + }, + "TableSideBorderOptions": { + "additionalProperties": false, + "properties": { + "Bottom": { + "$ref": "#/definitions/TableBorderOptions" + }, + "InnerHorizontal": { + "$ref": "#/definitions/TableBorderOptions" + }, + "InnerVertical": { + "$ref": "#/definitions/TableBorderOptions" + }, + "Left": { + "$ref": "#/definitions/TableBorderOptions" + }, + "Right": { + "$ref": "#/definitions/TableBorderOptions" + }, + "Top": { + "$ref": "#/definitions/TableBorderOptions" + } + }, + "type": "object" + }, + "TableSortConfiguration": { + "additionalProperties": false, + "properties": { + "PaginationConfiguration": { + "$ref": "#/definitions/PaginationConfiguration" + }, + "RowSort": { + "items": { + "$ref": "#/definitions/FieldSortOptions" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "TableStyleTarget": { + "additionalProperties": false, + "properties": { + "CellType": { + "$ref": "#/definitions/StyledCellType" + } + }, + "required": [ + "CellType" + ], + "type": "object" + }, + "TableTotalsPlacement": { + "enum": [ + "START", + "END", + "AUTO" + ], + "type": "string" + }, + "TableTotalsScrollStatus": { + "enum": [ + "PINNED", + "SCROLLED" + ], + "type": "string" + }, + "TableUnaggregatedFieldWells": { + "additionalProperties": false, + "properties": { + "Values": { + "items": { + "$ref": "#/definitions/UnaggregatedField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "TableVisual": { + "additionalProperties": false, + "properties": { + "Actions": { + "items": { + "$ref": "#/definitions/VisualCustomAction" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + }, + "ChartConfiguration": { + "$ref": "#/definitions/TableConfiguration" + }, + "ConditionalFormatting": { + "$ref": "#/definitions/TableConditionalFormatting" + }, + "Subtitle": { + "$ref": "#/definitions/VisualSubtitleLabelOptions" + }, + "Title": { + "$ref": "#/definitions/VisualTitleLabelOptions" + }, + "VisualContentAltText": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "VisualId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + } + }, + "required": [ + "VisualId" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "description": "The key or keys of the key-value pairs for the resource tag or tags assigned to the\n resource.
", + "properties": { + "Key": { + "description": "Tag key.
", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "Tag value.
", + "maxLength": 256, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "TargetVisualOptions": { + "enum": [ + "ALL_VISUALS" + ], + "type": "string" + }, + "TemplateError": { + "additionalProperties": false, + "description": "List of errors that occurred when the template version creation failed.
", + "properties": { + "Message": { + "description": "Description of the error type.
", + "pattern": "\\S", + "type": "string" + }, + "Type": { + "$ref": "#/definitions/TemplateErrorType" + }, + "ViolatedEntities": { + "description": "An error path that shows which entities caused the template error.
", + "items": { + "$ref": "#/definitions/Entity" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "TemplateErrorType": { + "enum": [ + "SOURCE_NOT_FOUND", + "DATA_SET_NOT_FOUND", + "INTERNAL_FAILURE", + "ACCESS_DENIED" + ], + "type": "string" + }, + "TemplateSourceAnalysis": { + "additionalProperties": false, + "description": "The source analysis of the template.
", + "properties": { + "Arn": { + "description": "The Amazon Resource Name (ARN) of the resource.
", + "type": "string" + }, + "DataSetReferences": { + "description": "A structure containing information about the dataset references used as placeholders\n in the template.
", + "items": { + "$ref": "#/definitions/DataSetReference" + }, + "minItems": 1, + "type": "array" + } + }, + "required": [ + "Arn", + "DataSetReferences" + ], + "type": "object" + }, + "TemplateSourceEntity": { + "additionalProperties": false, + "description": "The source entity of the template.
", + "properties": { + "SourceAnalysis": { + "$ref": "#/definitions/TemplateSourceAnalysis" + }, + "SourceTemplate": { + "$ref": "#/definitions/TemplateSourceTemplate" + } + }, + "type": "object" + }, + "TemplateSourceTemplate": { + "additionalProperties": false, + "description": "The source template of the template.
", + "properties": { + "Arn": { + "description": "The Amazon Resource Name (ARN) of the resource.
", + "type": "string" + } + }, + "required": [ + "Arn" + ], + "type": "object" + }, + "TemplateVersion": { + "additionalProperties": false, + "description": "A version of a template.
", + "properties": { + "CreatedTime": { + "description": "The time that this template version was created.
", + "format": "date-time", + "type": "string" + }, + "DataSetConfigurations": { + "description": "Schema of the dataset identified by the placeholder. Any dashboard created from this\n template should be bound to new datasets matching the same schema described through this\n API operation.
", + "items": { + "$ref": "#/definitions/DataSetConfiguration" + }, + "maxItems": 30, + "minItems": 0, + "type": "array" + }, + "Description": { + "description": "The description of the template.
", + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "Errors": { + "description": "Errors associated with this template version.
", + "items": { + "$ref": "#/definitions/TemplateError" + }, + "minItems": 1, + "type": "array" + }, + "Sheets": { + "description": "A list of the associated sheets with the unique identifier and name of each sheet.
", + "items": { + "$ref": "#/definitions/Sheet" + }, + "maxItems": 20, + "minItems": 0, + "type": "array" + }, + "SourceEntityArn": { + "description": "The Amazon Resource Name (ARN) of an analysis or template that was used to create this\n template.
", + "type": "string" + }, + "Status": { + "$ref": "#/definitions/ResourceStatus" + }, + "ThemeArn": { + "description": "The ARN of the theme associated with this version of the template.
", + "type": "string" + }, + "VersionNumber": { + "description": "The version number of the template version.
", + "minimum": 1, + "type": "number" + } + }, + "type": "object" + }, + "TemplateVersionDefinition": { + "additionalProperties": false, + "properties": { + "AnalysisDefaults": { + "$ref": "#/definitions/AnalysisDefaults" + }, + "CalculatedFields": { + "items": { + "$ref": "#/definitions/CalculatedField" + }, + "maxItems": 500, + "minItems": 0, + "type": "array" + }, + "ColumnConfigurations": { + "items": { + "$ref": "#/definitions/ColumnConfiguration" + }, + "maxItems": 2000, + "minItems": 0, + "type": "array" + }, + "DataSetConfigurations": { + "items": { + "$ref": "#/definitions/DataSetConfiguration" + }, + "maxItems": 30, + "minItems": 0, + "type": "array" + }, + "FilterGroups": { + "items": { + "$ref": "#/definitions/FilterGroup" + }, + "maxItems": 2000, + "minItems": 0, + "type": "array" + }, + "Options": { + "$ref": "#/definitions/AssetOptions" + }, + "ParameterDeclarations": { + "items": { + "$ref": "#/definitions/ParameterDeclaration" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "QueryExecutionOptions": { + "$ref": "#/definitions/QueryExecutionOptions" + }, + "Sheets": { + "items": { + "$ref": "#/definitions/SheetDefinition" + }, + "maxItems": 20, + "minItems": 0, + "type": "array" + } + }, + "required": [ + "DataSetConfigurations" + ], + "type": "object" + }, + "TextAreaControlDisplayOptions": { + "additionalProperties": false, + "properties": { + "InfoIconLabelOptions": { + "$ref": "#/definitions/SheetControlInfoIconLabelOptions" + }, + "PlaceholderOptions": { + "$ref": "#/definitions/TextControlPlaceholderOptions" + }, + "TitleOptions": { + "$ref": "#/definitions/LabelOptions" + } + }, + "type": "object" + }, + "TextConditionalFormat": { + "additionalProperties": false, + "properties": { + "BackgroundColor": { + "$ref": "#/definitions/ConditionalFormattingColor" + }, + "Icon": { + "$ref": "#/definitions/ConditionalFormattingIcon" + }, + "TextColor": { + "$ref": "#/definitions/ConditionalFormattingColor" + } + }, + "type": "object" + }, + "TextControlPlaceholderOptions": { + "additionalProperties": false, + "properties": { + "Visibility": {} + }, + "type": "object" + }, + "TextFieldControlDisplayOptions": { + "additionalProperties": false, + "properties": { + "InfoIconLabelOptions": { + "$ref": "#/definitions/SheetControlInfoIconLabelOptions" + }, + "PlaceholderOptions": { + "$ref": "#/definitions/TextControlPlaceholderOptions" + }, + "TitleOptions": { + "$ref": "#/definitions/LabelOptions" + } + }, + "type": "object" + }, + "TextWrap": { + "enum": [ + "NONE", + "WRAP" + ], + "type": "string" + }, + "ThousandSeparatorOptions": { + "additionalProperties": false, + "properties": { + "GroupingStyle": { + "$ref": "#/definitions/DigitGroupingStyle" + }, + "Symbol": { + "$ref": "#/definitions/NumericSeparatorSymbol" + }, + "Visibility": {} + }, + "type": "object" + }, + "TimeBasedForecastProperties": { + "additionalProperties": false, + "properties": { + "LowerBoundary": { + "default": null, + "type": "number" + }, + "PeriodsBackward": { + "maximum": 1000, + "minimum": 0, + "type": "number" + }, + "PeriodsForward": { + "maximum": 1000, + "minimum": 1, + "type": "number" + }, + "PredictionInterval": { + "maximum": 95, + "minimum": 50, + "type": "number" + }, + "Seasonality": { + "maximum": 180, + "minimum": 1, + "type": "number" + }, + "UpperBoundary": { + "default": null, + "type": "number" + } + }, + "type": "object" + }, + "TimeEqualityFilter": { + "additionalProperties": false, + "properties": { + "Column": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "DefaultFilterControlConfiguration": { + "$ref": "#/definitions/DefaultFilterControlConfiguration" + }, + "FilterId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "ParameterName": { + "maxLength": 2048, + "minLength": 1, + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + "RollingDate": { + "$ref": "#/definitions/RollingDateConfiguration" + }, + "TimeGranularity": { + "$ref": "#/definitions/TimeGranularity" + }, + "Value": { + "format": "date-time", + "type": "string" + } + }, + "required": [ + "Column", + "FilterId" + ], + "type": "object" + }, + "TimeGranularity": { + "enum": [ + "YEAR", + "QUARTER", + "MONTH", + "WEEK", + "DAY", + "HOUR", + "MINUTE", + "SECOND", + "MILLISECOND" + ], + "type": "string" + }, + "TimeRangeDrillDownFilter": { + "additionalProperties": false, + "properties": { + "Column": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "RangeMaximum": { + "format": "date-time", + "type": "string" + }, + "RangeMinimum": { + "format": "date-time", + "type": "string" + }, + "TimeGranularity": { + "$ref": "#/definitions/TimeGranularity" + } + }, + "required": [ + "Column", + "RangeMaximum", + "RangeMinimum", + "TimeGranularity" + ], + "type": "object" + }, + "TimeRangeFilter": { + "additionalProperties": false, + "properties": { + "Column": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "DefaultFilterControlConfiguration": { + "$ref": "#/definitions/DefaultFilterControlConfiguration" + }, + "ExcludePeriodConfiguration": { + "$ref": "#/definitions/ExcludePeriodConfiguration" + }, + "FilterId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "IncludeMaximum": { + "default": null, + "type": "boolean" + }, + "IncludeMinimum": { + "default": null, + "type": "boolean" + }, + "NullOption": { + "$ref": "#/definitions/FilterNullOption" + }, + "RangeMaximumValue": { + "$ref": "#/definitions/TimeRangeFilterValue" + }, + "RangeMinimumValue": { + "$ref": "#/definitions/TimeRangeFilterValue" + }, + "TimeGranularity": { + "$ref": "#/definitions/TimeGranularity" + } + }, + "required": [ + "Column", + "FilterId", + "NullOption" + ], + "type": "object" + }, + "TimeRangeFilterValue": { + "additionalProperties": false, + "properties": { + "Parameter": { + "maxLength": 2048, + "minLength": 1, + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + "RollingDate": { + "$ref": "#/definitions/RollingDateConfiguration" + }, + "StaticValue": { + "format": "date-time", + "type": "string" + } + }, + "type": "object" + }, + "TooltipItem": { + "additionalProperties": false, + "properties": { + "ColumnTooltipItem": { + "$ref": "#/definitions/ColumnTooltipItem" + }, + "FieldTooltipItem": { + "$ref": "#/definitions/FieldTooltipItem" + } + }, + "type": "object" + }, + "TooltipOptions": { + "additionalProperties": false, + "properties": { + "FieldBasedTooltip": { + "$ref": "#/definitions/FieldBasedTooltip" + }, + "SelectedTooltipType": { + "$ref": "#/definitions/SelectedTooltipType" + }, + "TooltipVisibility": {} + }, + "type": "object" + }, + "TooltipTarget": { + "enum": [ + "BOTH", + "BAR", + "LINE" + ], + "type": "string" + }, + "TooltipTitleType": { + "enum": [ + "NONE", + "PRIMARY_VALUE" + ], + "type": "string" + }, + "TopBottomComputationType": { + "enum": [ + "TOP", + "BOTTOM" + ], + "type": "string" + }, + "TopBottomFilter": { + "additionalProperties": false, + "properties": { + "AggregationSortConfigurations": { + "items": { + "$ref": "#/definitions/AggregationSortConfiguration" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + }, + "Column": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "DefaultFilterControlConfiguration": { + "$ref": "#/definitions/DefaultFilterControlConfiguration" + }, + "FilterId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "Limit": { + "default": null, + "type": "number" + }, + "ParameterName": { + "maxLength": 2048, + "minLength": 1, + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + "TimeGranularity": { + "$ref": "#/definitions/TimeGranularity" + } + }, + "required": [ + "AggregationSortConfigurations", + "Column", + "FilterId" + ], + "type": "object" + }, + "TopBottomMoversComputation": { + "additionalProperties": false, + "properties": { + "Category": { + "$ref": "#/definitions/DimensionField" + }, + "ComputationId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "MoverSize": { + "default": 0, + "maximum": 20, + "minimum": 1, + "type": "number" + }, + "Name": { + "type": "string" + }, + "SortOrder": { + "$ref": "#/definitions/TopBottomSortOrder" + }, + "Time": { + "$ref": "#/definitions/DimensionField" + }, + "Type": { + "$ref": "#/definitions/TopBottomComputationType" + }, + "Value": { + "$ref": "#/definitions/MeasureField" + } + }, + "required": [ + "ComputationId", + "Type" + ], + "type": "object" + }, + "TopBottomRankedComputation": { + "additionalProperties": false, + "properties": { + "Category": { + "$ref": "#/definitions/DimensionField" + }, + "ComputationId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "Name": { + "type": "string" + }, + "ResultSize": { + "default": 0, + "maximum": 20, + "minimum": 1, + "type": "number" + }, + "Type": { + "$ref": "#/definitions/TopBottomComputationType" + }, + "Value": { + "$ref": "#/definitions/MeasureField" + } + }, + "required": [ + "ComputationId", + "Type" + ], + "type": "object" + }, + "TopBottomSortOrder": { + "enum": [ + "PERCENT_DIFFERENCE", + "ABSOLUTE_DIFFERENCE" + ], + "type": "string" + }, + "TotalAggregationComputation": { + "additionalProperties": false, + "properties": { + "ComputationId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "Name": { + "type": "string" + }, + "Value": { + "$ref": "#/definitions/MeasureField" + } + }, + "required": [ + "ComputationId" + ], + "type": "object" + }, + "TotalAggregationFunction": { + "additionalProperties": false, + "properties": { + "SimpleTotalAggregationFunction": { + "$ref": "#/definitions/SimpleTotalAggregationFunction" + } + }, + "type": "object" + }, + "TotalAggregationOption": { + "additionalProperties": false, + "properties": { + "FieldId": { + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "TotalAggregationFunction": { + "$ref": "#/definitions/TotalAggregationFunction" + } + }, + "required": [ + "FieldId", + "TotalAggregationFunction" + ], + "type": "object" + }, + "TotalOptions": { + "additionalProperties": false, + "properties": { + "CustomLabel": { + "type": "string" + }, + "Placement": { + "$ref": "#/definitions/TableTotalsPlacement" + }, + "ScrollStatus": { + "$ref": "#/definitions/TableTotalsScrollStatus" + }, + "TotalAggregationOptions": { + "items": { + "$ref": "#/definitions/TotalAggregationOption" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "TotalCellStyle": { + "$ref": "#/definitions/TableCellStyle" + }, + "TotalsVisibility": {} + }, + "type": "object" + }, + "TransposedColumnType": { + "enum": [ + "ROW_HEADER_COLUMN", + "VALUE_COLUMN" + ], + "type": "string" + }, + "TransposedTableOption": { + "additionalProperties": false, + "properties": { + "ColumnIndex": { + "maximum": 9999, + "minimum": 0, + "type": "number" + }, + "ColumnType": { + "$ref": "#/definitions/TransposedColumnType" + }, + "ColumnWidth": { + "description": "String based length that is composed of value and unit in px", + "type": "string" + } + }, + "required": [ + "ColumnType" + ], + "type": "object" + }, + "TreeMapAggregatedFieldWells": { + "additionalProperties": false, + "properties": { + "Colors": { + "items": { + "$ref": "#/definitions/MeasureField" + }, + "maxItems": 1, + "minItems": 0, + "type": "array" + }, + "Groups": { + "items": { + "$ref": "#/definitions/DimensionField" + }, + "maxItems": 1, + "minItems": 0, + "type": "array" + }, + "Sizes": { + "items": { + "$ref": "#/definitions/MeasureField" + }, + "maxItems": 1, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "TreeMapConfiguration": { + "additionalProperties": false, + "properties": { + "ColorLabelOptions": { + "$ref": "#/definitions/ChartAxisLabelOptions" + }, + "ColorScale": { + "$ref": "#/definitions/ColorScale" + }, + "DataLabels": { + "$ref": "#/definitions/DataLabelOptions" + }, + "FieldWells": { + "$ref": "#/definitions/TreeMapFieldWells" + }, + "GroupLabelOptions": { + "$ref": "#/definitions/ChartAxisLabelOptions" + }, + "Interactions": { + "$ref": "#/definitions/VisualInteractionOptions" + }, + "Legend": { + "$ref": "#/definitions/LegendOptions" + }, + "SizeLabelOptions": { + "$ref": "#/definitions/ChartAxisLabelOptions" + }, + "SortConfiguration": { + "$ref": "#/definitions/TreeMapSortConfiguration" + }, + "Tooltip": { + "$ref": "#/definitions/TooltipOptions" + } + }, + "type": "object" + }, + "TreeMapFieldWells": { + "additionalProperties": false, + "properties": { + "TreeMapAggregatedFieldWells": { + "$ref": "#/definitions/TreeMapAggregatedFieldWells" + } + }, + "type": "object" + }, + "TreeMapSortConfiguration": { + "additionalProperties": false, + "properties": { + "TreeMapGroupItemsLimitConfiguration": { + "$ref": "#/definitions/ItemsLimitConfiguration" + }, + "TreeMapSort": { + "items": { + "$ref": "#/definitions/FieldSortOptions" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "TreeMapVisual": { + "additionalProperties": false, + "properties": { + "Actions": { + "items": { + "$ref": "#/definitions/VisualCustomAction" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + }, + "ChartConfiguration": { + "$ref": "#/definitions/TreeMapConfiguration" + }, + "ColumnHierarchies": { + "items": { + "$ref": "#/definitions/ColumnHierarchy" + }, + "maxItems": 2, + "minItems": 0, + "type": "array" + }, + "Subtitle": { + "$ref": "#/definitions/VisualSubtitleLabelOptions" + }, + "Title": { + "$ref": "#/definitions/VisualTitleLabelOptions" + }, + "VisualContentAltText": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "VisualId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + } + }, + "required": [ + "VisualId" + ], + "type": "object" + }, + "TrendArrowOptions": { + "additionalProperties": false, + "properties": { + "Visibility": {} + }, + "type": "object" + }, + "URLTargetConfiguration": { + "enum": [ + "NEW_TAB", + "NEW_WINDOW", + "SAME_TAB" + ], + "type": "string" + }, + "UnaggregatedField": { + "additionalProperties": false, + "properties": { + "Column": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "FieldId": { + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "FormatConfiguration": { + "$ref": "#/definitions/FormatConfiguration" + } + }, + "required": [ + "Column", + "FieldId" + ], + "type": "object" + }, + "UniqueValuesComputation": { + "additionalProperties": false, + "properties": { + "Category": { + "$ref": "#/definitions/DimensionField" + }, + "ComputationId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "Name": { + "type": "string" + } + }, + "required": [ + "ComputationId" + ], + "type": "object" + }, + "ValidationStrategy": { + "additionalProperties": false, + "description": "The option to relax the validation that is required to create and update analyses, dashboards, and templates with definition objects. When you set this value to LENIENT, validation is skipped for specific errors.
The Amazon Resource Name (ARN) of the template.
", + "type": "string" + }, + "AwsAccountId": { + "maxLength": 12, + "minLength": 12, + "pattern": "^[0-9]{12}$", + "type": "string" + }, + "CreatedTime": { + "description": "Time when this was created.
", + "format": "date-time", + "type": "string" + }, + "Definition": { + "$ref": "#/definitions/TemplateVersionDefinition" + }, + "LastUpdatedTime": { + "description": "Time when this was last updated.
", + "format": "date-time", + "type": "string" + }, + "Name": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "Permissions": { + "items": { + "$ref": "#/definitions/ResourcePermission" + }, + "maxItems": 64, + "minItems": 1, + "type": "array" + }, + "SourceEntity": { + "$ref": "#/definitions/TemplateSourceEntity" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 200, + "minItems": 1, + "type": "array" + }, + "TemplateId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "ValidationStrategy": { + "$ref": "#/definitions/ValidationStrategy" + }, + "Version": { + "$ref": "#/definitions/TemplateVersion" + }, + "VersionDescription": { + "maxLength": 512, + "minLength": 1, + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/CreatedTime", + "/properties/LastUpdatedTime", + "/properties/Version" + ], + "required": [ + "AwsAccountId", + "TemplateId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-quicksight", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "quicksight:TagResource", + "quicksight:UntagResource", + "quicksight:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::QuickSight::Template", + "writeOnlyProperties": [ + "/properties/Definition", + "/properties/VersionDescription", + "/properties/SourceEntity", + "/properties/ValidationStrategy" + ] +} diff --git a/src/schema/aws-quicksight-theme.json b/src/schema/aws-quicksight-theme.json new file mode 100644 index 00000000..8f35348e --- /dev/null +++ b/src/schema/aws-quicksight-theme.json @@ -0,0 +1,533 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/AwsAccountId", + "/properties/ThemeId" + ], + "definitions": { + "BorderStyle": { + "additionalProperties": false, + "description": "The display options for tile borders for visuals.
", + "properties": { + "Show": { + "default": null, + "description": "The option to enable display of borders for visuals.
", + "type": "boolean" + } + }, + "type": "object" + }, + "DataColorPalette": { + "additionalProperties": false, + "description": "The theme colors that are used for data colors in charts. The colors description is a\n hexadecimal color code that consists of six alphanumerical characters, prefixed with\n #, for example #37BFF5.
The hexadecimal codes for the colors.
", + "items": { + "pattern": "^#[A-F0-9]{6}$", + "type": "string" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + }, + "EmptyFillColor": { + "description": "The hexadecimal code of a color that applies to charts where a lack of data is\n highlighted.
", + "pattern": "^#[A-F0-9]{6}$", + "type": "string" + }, + "MinMaxGradient": { + "description": "The minimum and maximum hexadecimal codes that describe a color gradient.
", + "items": { + "pattern": "^#[A-F0-9]{6}$", + "type": "string" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "Font": { + "additionalProperties": false, + "properties": { + "FontFamily": { + "type": "string" + } + }, + "type": "object" + }, + "GutterStyle": { + "additionalProperties": false, + "description": "The display options for gutter spacing between tiles on a sheet.
", + "properties": { + "Show": { + "default": null, + "description": "This Boolean value controls whether to display a gutter space between sheet tiles.\n
", + "type": "boolean" + } + }, + "type": "object" + }, + "MarginStyle": { + "additionalProperties": false, + "description": "The display options for margins around the outside edge of sheets.
", + "properties": { + "Show": { + "default": null, + "description": "This Boolean value controls whether to display sheet margins.
", + "type": "boolean" + } + }, + "type": "object" + }, + "ResourcePermission": { + "additionalProperties": false, + "description": "Permission for the resource.
", + "properties": { + "Actions": { + "description": "The IAM action to grant or revoke permissions on.
", + "items": { + "type": "string" + }, + "maxItems": 20, + "minItems": 1, + "type": "array" + }, + "Principal": { + "description": "The Amazon Resource Name (ARN) of the principal. This can be one of the\n following:
\nThe ARN of an Amazon QuickSight user or group associated with a data source or dataset. (This is common.)
\nThe ARN of an Amazon QuickSight user, group, or namespace associated with an analysis, dashboard, template, or theme. (This is common.)
\nThe ARN of an Amazon Web Services account root: This is an IAM ARN rather than a QuickSight\n ARN. Use this option only to share resources (templates) across Amazon Web Services accounts.\n (This is less common.)
\nThe theme display options for sheets.
", + "properties": { + "Tile": { + "$ref": "#/definitions/TileStyle" + }, + "TileLayout": { + "$ref": "#/definitions/TileLayoutStyle" + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "description": "The key or keys of the key-value pairs for the resource tag or tags assigned to the\n resource.
", + "properties": { + "Key": { + "description": "Tag key.
", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "Tag value.
", + "maxLength": 256, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "ThemeConfiguration": { + "additionalProperties": false, + "description": "The theme configuration. This configuration contains all of the display properties for\n a theme.
", + "properties": { + "DataColorPalette": { + "$ref": "#/definitions/DataColorPalette" + }, + "Sheet": { + "$ref": "#/definitions/SheetStyle" + }, + "Typography": { + "$ref": "#/definitions/Typography" + }, + "UIColorPalette": { + "$ref": "#/definitions/UIColorPalette" + } + }, + "type": "object" + }, + "ThemeError": { + "additionalProperties": false, + "description": "Theme error.
", + "properties": { + "Message": { + "description": "The error message.
", + "pattern": "\\S", + "type": "string" + }, + "Type": { + "$ref": "#/definitions/ThemeErrorType" + } + }, + "type": "object" + }, + "ThemeErrorType": { + "enum": [ + "INTERNAL_FAILURE" + ], + "type": "string" + }, + "ThemeType": { + "enum": [ + "QUICKSIGHT", + "CUSTOM", + "ALL" + ], + "type": "string" + }, + "ThemeVersion": { + "additionalProperties": false, + "description": "A version of a theme.
", + "properties": { + "Arn": { + "description": "The Amazon Resource Name (ARN) of the resource.
", + "type": "string" + }, + "BaseThemeId": { + "description": "The Amazon QuickSight-defined ID of the theme that a custom theme inherits from. All\n themes initially inherit from a default Amazon QuickSight theme.
", + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "Configuration": { + "$ref": "#/definitions/ThemeConfiguration" + }, + "CreatedTime": { + "description": "The date and time that this theme version was created.
", + "format": "date-time", + "type": "string" + }, + "Description": { + "description": "The description of the theme.
", + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "Errors": { + "description": "Errors associated with the theme.
", + "items": { + "$ref": "#/definitions/ThemeError" + }, + "minItems": 1, + "type": "array" + }, + "Status": { + "$ref": "#/definitions/ResourceStatus" + }, + "VersionNumber": { + "description": "The version number of the theme.
", + "minimum": 1, + "type": "number" + } + }, + "type": "object" + }, + "TileLayoutStyle": { + "additionalProperties": false, + "description": "The display options for the layout of tiles on a sheet.
", + "properties": { + "Gutter": { + "$ref": "#/definitions/GutterStyle" + }, + "Margin": { + "$ref": "#/definitions/MarginStyle" + } + }, + "type": "object" + }, + "TileStyle": { + "additionalProperties": false, + "description": "Display options related to tiles on a sheet.
", + "properties": { + "Border": { + "$ref": "#/definitions/BorderStyle" + } + }, + "type": "object" + }, + "Typography": { + "additionalProperties": false, + "properties": { + "FontFamilies": { + "items": { + "$ref": "#/definitions/Font" + }, + "maxItems": 5, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "UIColorPalette": { + "additionalProperties": false, + "description": "The theme colors that apply to UI and to charts, excluding data colors. The colors\n description is a hexadecimal color code that consists of six alphanumerical characters,\n prefixed with #, for example #37BFF5. For more information, see Using Themes in Amazon QuickSight in the Amazon QuickSight User\n Guide.\n
This color is that applies to selected states and buttons.
", + "pattern": "^#[A-F0-9]{6}$", + "type": "string" + }, + "AccentForeground": { + "description": "The foreground color that applies to any text or other elements that appear over the\n accent color.
", + "pattern": "^#[A-F0-9]{6}$", + "type": "string" + }, + "Danger": { + "description": "The color that applies to error messages.
", + "pattern": "^#[A-F0-9]{6}$", + "type": "string" + }, + "DangerForeground": { + "description": "The foreground color that applies to any text or other elements that appear over the\n error color.
", + "pattern": "^#[A-F0-9]{6}$", + "type": "string" + }, + "Dimension": { + "description": "The color that applies to the names of fields that are identified as\n dimensions.
", + "pattern": "^#[A-F0-9]{6}$", + "type": "string" + }, + "DimensionForeground": { + "description": "The foreground color that applies to any text or other elements that appear over the\n dimension color.
", + "pattern": "^#[A-F0-9]{6}$", + "type": "string" + }, + "Measure": { + "description": "The color that applies to the names of fields that are identified as measures.
", + "pattern": "^#[A-F0-9]{6}$", + "type": "string" + }, + "MeasureForeground": { + "description": "The foreground color that applies to any text or other elements that appear over the\n measure color.
", + "pattern": "^#[A-F0-9]{6}$", + "type": "string" + }, + "PrimaryBackground": { + "description": "The background color that applies to visuals and other high emphasis UI.
", + "pattern": "^#[A-F0-9]{6}$", + "type": "string" + }, + "PrimaryForeground": { + "description": "The color of text and other foreground elements that appear over the primary\n background regions, such as grid lines, borders, table banding, icons, and so on.
", + "pattern": "^#[A-F0-9]{6}$", + "type": "string" + }, + "SecondaryBackground": { + "description": "The background color that applies to the sheet background and sheet controls.
", + "pattern": "^#[A-F0-9]{6}$", + "type": "string" + }, + "SecondaryForeground": { + "description": "The foreground color that applies to any sheet title, sheet control text, or UI that\n appears over the secondary background.
", + "pattern": "^#[A-F0-9]{6}$", + "type": "string" + }, + "Success": { + "description": "The color that applies to success messages, for example the check mark for a\n successful download.
", + "pattern": "^#[A-F0-9]{6}$", + "type": "string" + }, + "SuccessForeground": { + "description": "The foreground color that applies to any text or other elements that appear over the\n success color.
", + "pattern": "^#[A-F0-9]{6}$", + "type": "string" + }, + "Warning": { + "description": "This color that applies to warning and informational messages.
", + "pattern": "^#[A-F0-9]{6}$", + "type": "string" + }, + "WarningForeground": { + "description": "The foreground color that applies to any text or other elements that appear over the\n warning color.
", + "pattern": "^#[A-F0-9]{6}$", + "type": "string" + } + }, + "type": "object" + } + }, + "description": "Definition of the AWS::QuickSight::Theme Resource Type.", + "handlers": { + "create": { + "permissions": [ + "quicksight:DescribeTheme", + "quicksight:DescribeThemePermissions", + "quicksight:CreateTheme", + "quicksight:TagResource", + "quicksight:UntagResource", + "quicksight:ListTagsForResource" + ] + }, + "delete": { + "permissions": [ + "quicksight:DescribeTheme", + "quicksight:DeleteTheme" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "AwsAccountId": { + "$ref": "resource-schema.json#/properties/AwsAccountId" + } + }, + "required": [ + "AwsAccountId" + ] + }, + "permissions": [ + "quicksight:ListThemes" + ] + }, + "read": { + "permissions": [ + "quicksight:DescribeTheme", + "quicksight:DescribeThemePermissions", + "quicksight:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "quicksight:DescribeTheme", + "quicksight:DescribeThemePermissions", + "quicksight:UpdateTheme", + "quicksight:UpdateThemePermissions", + "quicksight:TagResource", + "quicksight:UntagResource", + "quicksight:ListTagsForResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/ThemeId", + "/properties/AwsAccountId" + ], + "properties": { + "Arn": { + "description": "The Amazon Resource Name (ARN) of the theme.
", + "type": "string" + }, + "AwsAccountId": { + "maxLength": 12, + "minLength": 12, + "pattern": "^[0-9]{12}$", + "type": "string" + }, + "BaseThemeId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "Configuration": { + "$ref": "#/definitions/ThemeConfiguration" + }, + "CreatedTime": { + "description": "The date and time that the theme was created.
", + "format": "date-time", + "type": "string" + }, + "LastUpdatedTime": { + "description": "The date and time that the theme was last updated.
", + "format": "date-time", + "type": "string" + }, + "Name": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "Permissions": { + "items": { + "$ref": "#/definitions/ResourcePermission" + }, + "maxItems": 64, + "minItems": 1, + "type": "array" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 200, + "minItems": 1, + "type": "array" + }, + "ThemeId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "Type": { + "$ref": "#/definitions/ThemeType" + }, + "Version": { + "$ref": "#/definitions/ThemeVersion" + }, + "VersionDescription": { + "maxLength": 512, + "minLength": 1, + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/CreatedTime", + "/properties/Version", + "/properties/LastUpdatedTime", + "/properties/Arn", + "/properties/Type" + ], + "required": [ + "AwsAccountId", + "ThemeId", + "BaseThemeId", + "Configuration", + "Name" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-quicksight", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "quicksight:TagResource", + "quicksight:UntagResource", + "quicksight:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::QuickSight::Theme" +} diff --git a/src/schema/aws-quicksight-topic.json b/src/schema/aws-quicksight-topic.json new file mode 100644 index 00000000..3b91c330 --- /dev/null +++ b/src/schema/aws-quicksight-topic.json @@ -0,0 +1,1052 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/AwsAccountId", + "/properties/FolderArns", + "/properties/TopicId" + ], + "definitions": { + "AggregationFunctionParameters": { + "additionalProperties": false, + "patternProperties": { + ".+": { + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "type": "object" + }, + "AuthorSpecifiedAggregation": { + "enum": [ + "COUNT", + "DISTINCT_COUNT", + "MIN", + "MAX", + "MEDIAN", + "SUM", + "AVERAGE", + "STDEV", + "STDEVP", + "VAR", + "VARP", + "PERCENTILE" + ], + "type": "string" + }, + "CategoryFilterFunction": { + "enum": [ + "EXACT", + "CONTAINS" + ], + "type": "string" + }, + "CategoryFilterType": { + "enum": [ + "CUSTOM_FILTER", + "CUSTOM_FILTER_LIST", + "FILTER_LIST" + ], + "type": "string" + }, + "CellValueSynonym": { + "additionalProperties": false, + "properties": { + "CellValue": { + "maxLength": 256, + "minLength": 0, + "type": "string" + }, + "Synonyms": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "CollectiveConstant": { + "additionalProperties": false, + "properties": { + "ValueList": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "ColumnDataRole": { + "enum": [ + "DIMENSION", + "MEASURE" + ], + "type": "string" + }, + "ColumnOrderingType": { + "enum": [ + "GREATER_IS_BETTER", + "LESSER_IS_BETTER", + "SPECIFIED" + ], + "type": "string" + }, + "ComparativeOrder": { + "additionalProperties": false, + "properties": { + "SpecifedOrder": { + "items": { + "type": "string" + }, + "type": "array" + }, + "TreatUndefinedSpecifiedValues": { + "$ref": "#/definitions/UndefinedSpecifiedValueType" + }, + "UseOrdering": { + "$ref": "#/definitions/ColumnOrderingType" + } + }, + "type": "object" + }, + "ConstantType": { + "enum": [ + "SINGULAR", + "RANGE", + "COLLECTIVE" + ], + "type": "string" + }, + "DataAggregation": { + "additionalProperties": false, + "properties": { + "DatasetRowDateGranularity": { + "$ref": "#/definitions/TopicTimeGranularity" + }, + "DefaultDateColumnName": { + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "type": "object" + }, + "DatasetMetadata": { + "additionalProperties": false, + "properties": { + "CalculatedFields": { + "items": { + "$ref": "#/definitions/TopicCalculatedField" + }, + "type": "array" + }, + "Columns": { + "items": { + "$ref": "#/definitions/TopicColumn" + }, + "type": "array" + }, + "DataAggregation": { + "$ref": "#/definitions/DataAggregation" + }, + "DatasetArn": { + "type": "string" + }, + "DatasetDescription": { + "maxLength": 256, + "minLength": 0, + "type": "string" + }, + "DatasetName": { + "maxLength": 256, + "minLength": 0, + "type": "string" + }, + "Filters": { + "items": { + "$ref": "#/definitions/TopicFilter" + }, + "type": "array" + }, + "NamedEntities": { + "items": { + "$ref": "#/definitions/TopicNamedEntity" + }, + "type": "array" + } + }, + "required": [ + "DatasetArn" + ], + "type": "object" + }, + "DefaultAggregation": { + "enum": [ + "SUM", + "MAX", + "MIN", + "COUNT", + "DISTINCT_COUNT", + "AVERAGE", + "MEDIAN", + "STDEV", + "STDEVP", + "VAR", + "VARP" + ], + "type": "string" + }, + "DefaultFormatting": { + "additionalProperties": false, + "properties": { + "DisplayFormat": { + "$ref": "#/definitions/DisplayFormat" + }, + "DisplayFormatOptions": { + "$ref": "#/definitions/DisplayFormatOptions" + } + }, + "type": "object" + }, + "DisplayFormat": { + "enum": [ + "AUTO", + "PERCENT", + "CURRENCY", + "NUMBER", + "DATE", + "STRING" + ], + "type": "string" + }, + "DisplayFormatOptions": { + "additionalProperties": false, + "properties": { + "BlankCellFormat": { + "maxLength": 256, + "minLength": 0, + "type": "string" + }, + "CurrencySymbol": { + "maxLength": 256, + "minLength": 0, + "type": "string" + }, + "DateFormat": { + "maxLength": 256, + "minLength": 0, + "type": "string" + }, + "DecimalSeparator": { + "$ref": "#/definitions/TopicNumericSeparatorSymbol" + }, + "FractionDigits": { + "default": 0, + "type": "number" + }, + "GroupingSeparator": { + "maxLength": 256, + "minLength": 0, + "type": "string" + }, + "NegativeFormat": { + "$ref": "#/definitions/NegativeFormat" + }, + "Prefix": { + "maxLength": 256, + "minLength": 0, + "type": "string" + }, + "Suffix": { + "maxLength": 256, + "minLength": 0, + "type": "string" + }, + "UnitScaler": { + "$ref": "#/definitions/NumberScale" + }, + "UseBlankCellFormat": { + "default": false, + "type": "boolean" + }, + "UseGrouping": { + "default": false, + "type": "boolean" + } + }, + "type": "object" + }, + "FilterClass": { + "enum": [ + "ENFORCED_VALUE_FILTER", + "CONDITIONAL_VALUE_FILTER", + "NAMED_VALUE_FILTER" + ], + "type": "string" + }, + "NamedEntityAggType": { + "enum": [ + "SUM", + "MIN", + "MAX", + "COUNT", + "AVERAGE", + "DISTINCT_COUNT", + "STDEV", + "STDEVP", + "VAR", + "VARP", + "PERCENTILE", + "MEDIAN", + "CUSTOM" + ], + "type": "string" + }, + "NamedEntityDefinition": { + "additionalProperties": false, + "properties": { + "FieldName": { + "maxLength": 256, + "minLength": 0, + "type": "string" + }, + "Metric": { + "$ref": "#/definitions/NamedEntityDefinitionMetric" + }, + "PropertyName": { + "maxLength": 256, + "minLength": 0, + "type": "string" + }, + "PropertyRole": { + "$ref": "#/definitions/PropertyRole" + }, + "PropertyUsage": { + "$ref": "#/definitions/PropertyUsage" + } + }, + "type": "object" + }, + "NamedEntityDefinitionMetric": { + "additionalProperties": false, + "properties": { + "Aggregation": { + "$ref": "#/definitions/NamedEntityAggType" + }, + "AggregationFunctionParameters": { + "$ref": "#/definitions/AggregationFunctionParameters" + } + }, + "type": "object" + }, + "NamedFilterAggType": { + "enum": [ + "NO_AGGREGATION", + "SUM", + "AVERAGE", + "COUNT", + "DISTINCT_COUNT", + "MAX", + "MEDIAN", + "MIN", + "STDEV", + "STDEVP", + "VAR", + "VARP" + ], + "type": "string" + }, + "NamedFilterType": { + "enum": [ + "CATEGORY_FILTER", + "NUMERIC_EQUALITY_FILTER", + "NUMERIC_RANGE_FILTER", + "DATE_RANGE_FILTER", + "RELATIVE_DATE_FILTER" + ], + "type": "string" + }, + "NegativeFormat": { + "additionalProperties": false, + "properties": { + "Prefix": { + "maxLength": 256, + "minLength": 0, + "type": "string" + }, + "Suffix": { + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "type": "object" + }, + "NumberScale": { + "enum": [ + "NONE", + "AUTO", + "THOUSANDS", + "MILLIONS", + "BILLIONS", + "TRILLIONS", + "LAKHS", + "CRORES" + ], + "type": "string" + }, + "PropertyRole": { + "enum": [ + "PRIMARY", + "ID" + ], + "type": "string" + }, + "PropertyUsage": { + "enum": [ + "INHERIT", + "DIMENSION", + "MEASURE" + ], + "type": "string" + }, + "RangeConstant": { + "additionalProperties": false, + "properties": { + "Maximum": { + "maxLength": 256, + "minLength": 0, + "type": "string" + }, + "Minimum": { + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "type": "object" + }, + "SemanticEntityType": { + "additionalProperties": false, + "properties": { + "SubTypeName": { + "maxLength": 256, + "minLength": 0, + "type": "string" + }, + "TypeName": { + "maxLength": 256, + "minLength": 0, + "type": "string" + }, + "TypeParameters": { + "$ref": "#/definitions/TypeParameters" + } + }, + "type": "object" + }, + "SemanticType": { + "additionalProperties": false, + "properties": { + "FalseyCellValue": { + "type": "string" + }, + "FalseyCellValueSynonyms": { + "items": { + "type": "string" + }, + "type": "array" + }, + "SubTypeName": { + "maxLength": 256, + "minLength": 0, + "type": "string" + }, + "TruthyCellValue": { + "type": "string" + }, + "TruthyCellValueSynonyms": { + "items": { + "type": "string" + }, + "type": "array" + }, + "TypeName": { + "maxLength": 256, + "minLength": 0, + "type": "string" + }, + "TypeParameters": { + "$ref": "#/definitions/TypeParameters" + } + }, + "type": "object" + }, + "TopicCalculatedField": { + "additionalProperties": false, + "properties": { + "Aggregation": { + "$ref": "#/definitions/DefaultAggregation" + }, + "AllowedAggregations": { + "items": { + "$ref": "#/definitions/AuthorSpecifiedAggregation" + }, + "type": "array" + }, + "CalculatedFieldDescription": { + "maxLength": 256, + "minLength": 0, + "type": "string" + }, + "CalculatedFieldName": { + "maxLength": 256, + "minLength": 0, + "type": "string" + }, + "CalculatedFieldSynonyms": { + "items": { + "maxLength": 256, + "minLength": 0, + "type": "string" + }, + "type": "array" + }, + "CellValueSynonyms": { + "items": { + "$ref": "#/definitions/CellValueSynonym" + }, + "type": "array" + }, + "ColumnDataRole": { + "$ref": "#/definitions/ColumnDataRole" + }, + "ComparativeOrder": { + "$ref": "#/definitions/ComparativeOrder" + }, + "DefaultFormatting": { + "$ref": "#/definitions/DefaultFormatting" + }, + "DisableIndexing": { + "type": "boolean" + }, + "Expression": { + "maxLength": 4096, + "minLength": 1, + "type": "string" + }, + "IsIncludedInTopic": { + "default": false, + "type": "boolean" + }, + "NeverAggregateInFilter": { + "default": false, + "type": "boolean" + }, + "NonAdditive": { + "default": false, + "type": "boolean" + }, + "NotAllowedAggregations": { + "items": { + "$ref": "#/definitions/AuthorSpecifiedAggregation" + }, + "type": "array" + }, + "SemanticType": { + "$ref": "#/definitions/SemanticType" + }, + "TimeGranularity": { + "$ref": "#/definitions/TopicTimeGranularity" + } + }, + "required": [ + "CalculatedFieldName", + "Expression" + ], + "type": "object" + }, + "TopicCategoryFilter": { + "additionalProperties": false, + "properties": { + "CategoryFilterFunction": { + "$ref": "#/definitions/CategoryFilterFunction" + }, + "CategoryFilterType": { + "$ref": "#/definitions/CategoryFilterType" + }, + "Constant": { + "$ref": "#/definitions/TopicCategoryFilterConstant" + }, + "Inverse": { + "default": false, + "type": "boolean" + } + }, + "type": "object" + }, + "TopicCategoryFilterConstant": { + "additionalProperties": false, + "properties": { + "CollectiveConstant": { + "$ref": "#/definitions/CollectiveConstant" + }, + "ConstantType": { + "$ref": "#/definitions/ConstantType" + }, + "SingularConstant": { + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "type": "object" + }, + "TopicColumn": { + "additionalProperties": false, + "properties": { + "Aggregation": { + "$ref": "#/definitions/DefaultAggregation" + }, + "AllowedAggregations": { + "items": { + "$ref": "#/definitions/AuthorSpecifiedAggregation" + }, + "type": "array" + }, + "CellValueSynonyms": { + "items": { + "$ref": "#/definitions/CellValueSynonym" + }, + "type": "array" + }, + "ColumnDataRole": { + "$ref": "#/definitions/ColumnDataRole" + }, + "ColumnDescription": { + "maxLength": 256, + "minLength": 0, + "type": "string" + }, + "ColumnFriendlyName": { + "maxLength": 256, + "minLength": 0, + "type": "string" + }, + "ColumnName": { + "maxLength": 256, + "minLength": 0, + "type": "string" + }, + "ColumnSynonyms": { + "items": { + "maxLength": 256, + "minLength": 0, + "type": "string" + }, + "type": "array" + }, + "ComparativeOrder": { + "$ref": "#/definitions/ComparativeOrder" + }, + "DefaultFormatting": { + "$ref": "#/definitions/DefaultFormatting" + }, + "DisableIndexing": { + "type": "boolean" + }, + "IsIncludedInTopic": { + "default": false, + "type": "boolean" + }, + "NeverAggregateInFilter": { + "default": false, + "type": "boolean" + }, + "NonAdditive": { + "default": false, + "type": "boolean" + }, + "NotAllowedAggregations": { + "items": { + "$ref": "#/definitions/AuthorSpecifiedAggregation" + }, + "type": "array" + }, + "SemanticType": { + "$ref": "#/definitions/SemanticType" + }, + "TimeGranularity": { + "$ref": "#/definitions/TopicTimeGranularity" + } + }, + "required": [ + "ColumnName" + ], + "type": "object" + }, + "TopicConfigOptions": { + "additionalProperties": false, + "description": "Model for configuration of a Topic", + "properties": { + "QBusinessInsightsEnabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "TopicDateRangeFilter": { + "additionalProperties": false, + "properties": { + "Constant": { + "$ref": "#/definitions/TopicRangeFilterConstant" + }, + "Inclusive": { + "default": false, + "type": "boolean" + } + }, + "type": "object" + }, + "TopicDetails": { + "additionalProperties": false, + "properties": { + "ConfigOptions": { + "$ref": "#/definitions/TopicConfigOptions" + }, + "DataSets": { + "items": { + "$ref": "#/definitions/DatasetMetadata" + }, + "type": "array" + }, + "Description": { + "maxLength": 256, + "minLength": 0, + "type": "string" + }, + "Name": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "UserExperienceVersion": { + "$ref": "#/definitions/TopicUserExperienceVersion" + } + }, + "type": "object" + }, + "TopicFilter": { + "additionalProperties": false, + "properties": { + "CategoryFilter": { + "$ref": "#/definitions/TopicCategoryFilter" + }, + "DateRangeFilter": { + "$ref": "#/definitions/TopicDateRangeFilter" + }, + "FilterClass": { + "$ref": "#/definitions/FilterClass" + }, + "FilterDescription": { + "maxLength": 256, + "minLength": 0, + "type": "string" + }, + "FilterName": { + "maxLength": 256, + "minLength": 0, + "type": "string" + }, + "FilterSynonyms": { + "items": { + "maxLength": 256, + "minLength": 0, + "type": "string" + }, + "type": "array" + }, + "FilterType": { + "$ref": "#/definitions/NamedFilterType" + }, + "NumericEqualityFilter": { + "$ref": "#/definitions/TopicNumericEqualityFilter" + }, + "NumericRangeFilter": { + "$ref": "#/definitions/TopicNumericRangeFilter" + }, + "OperandFieldName": { + "maxLength": 256, + "minLength": 0, + "type": "string" + }, + "RelativeDateFilter": { + "$ref": "#/definitions/TopicRelativeDateFilter" + } + }, + "required": [ + "FilterName", + "OperandFieldName" + ], + "type": "object" + }, + "TopicNamedEntity": { + "additionalProperties": false, + "properties": { + "Definition": { + "items": { + "$ref": "#/definitions/NamedEntityDefinition" + }, + "type": "array" + }, + "EntityDescription": { + "maxLength": 256, + "minLength": 0, + "type": "string" + }, + "EntityName": { + "maxLength": 256, + "minLength": 0, + "type": "string" + }, + "EntitySynonyms": { + "items": { + "maxLength": 256, + "minLength": 0, + "type": "string" + }, + "type": "array" + }, + "SemanticEntityType": { + "$ref": "#/definitions/SemanticEntityType" + } + }, + "required": [ + "EntityName" + ], + "type": "object" + }, + "TopicNumericEqualityFilter": { + "additionalProperties": false, + "properties": { + "Aggregation": { + "$ref": "#/definitions/NamedFilterAggType" + }, + "Constant": { + "$ref": "#/definitions/TopicSingularFilterConstant" + } + }, + "type": "object" + }, + "TopicNumericRangeFilter": { + "additionalProperties": false, + "properties": { + "Aggregation": { + "$ref": "#/definitions/NamedFilterAggType" + }, + "Constant": { + "$ref": "#/definitions/TopicRangeFilterConstant" + }, + "Inclusive": { + "default": false, + "type": "boolean" + } + }, + "type": "object" + }, + "TopicNumericSeparatorSymbol": { + "enum": [ + "COMMA", + "DOT" + ], + "type": "string" + }, + "TopicRangeFilterConstant": { + "additionalProperties": false, + "properties": { + "ConstantType": { + "$ref": "#/definitions/ConstantType" + }, + "RangeConstant": { + "$ref": "#/definitions/RangeConstant" + } + }, + "type": "object" + }, + "TopicRelativeDateFilter": { + "additionalProperties": false, + "properties": { + "Constant": { + "$ref": "#/definitions/TopicSingularFilterConstant" + }, + "RelativeDateFilterFunction": { + "$ref": "#/definitions/TopicRelativeDateFilterFunction" + }, + "TimeGranularity": { + "$ref": "#/definitions/TopicTimeGranularity" + } + }, + "type": "object" + }, + "TopicRelativeDateFilterFunction": { + "enum": [ + "PREVIOUS", + "THIS", + "LAST", + "NEXT", + "NOW" + ], + "type": "string" + }, + "TopicSingularFilterConstant": { + "additionalProperties": false, + "properties": { + "ConstantType": { + "$ref": "#/definitions/ConstantType" + }, + "SingularConstant": { + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "type": "object" + }, + "TopicTimeGranularity": { + "enum": [ + "SECOND", + "MINUTE", + "HOUR", + "DAY", + "WEEK", + "MONTH", + "QUARTER", + "YEAR" + ], + "type": "string" + }, + "TopicUserExperienceVersion": { + "enum": [ + "LEGACY", + "NEW_READER_EXPERIENCE" + ], + "type": "string" + }, + "TypeParameters": { + "additionalProperties": false, + "patternProperties": { + ".+": { + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "type": "object" + }, + "UndefinedSpecifiedValueType": { + "enum": [ + "LEAST", + "MOST" + ], + "type": "string" + } + }, + "description": "Definition of the AWS::QuickSight::Topic Resource Type.", + "handlers": { + "create": { + "permissions": [ + "quicksight:CreateTopic", + "quicksight:PassDataSet", + "quicksight:DescribeTopicRefresh" + ] + }, + "delete": { + "permissions": [ + "quicksight:DeleteTopic" + ] + }, + "list": { + "permissions": [ + "quicksight:ListTopics" + ] + }, + "read": { + "permissions": [ + "quicksight:DescribeTopic" + ] + }, + "update": { + "permissions": [ + "quicksight:UpdateTopic", + "quicksight:PassDataSet", + "quicksight:DescribeTopicRefresh" + ] + } + }, + "primaryIdentifier": [ + "/properties/AwsAccountId", + "/properties/TopicId" + ], + "properties": { + "Arn": { + "type": "string" + }, + "AwsAccountId": { + "maxLength": 12, + "minLength": 12, + "pattern": "^[0-9]{12}$", + "type": "string" + }, + "ConfigOptions": { + "$ref": "#/definitions/TopicConfigOptions" + }, + "DataSets": { + "items": { + "$ref": "#/definitions/DatasetMetadata" + }, + "type": "array" + }, + "Description": { + "maxLength": 256, + "minLength": 0, + "type": "string" + }, + "FolderArns": { + "items": { + "type": "string" + }, + "maxItems": 20, + "minItems": 0, + "type": "array" + }, + "Name": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "TopicId": { + "maxLength": 256, + "minLength": 0, + "pattern": "^[A-Za-z0-9-_.\\\\+]*$", + "type": "string" + }, + "UserExperienceVersion": { + "$ref": "#/definitions/TopicUserExperienceVersion" + } + }, + "readOnlyProperties": [ + "/properties/Arn" + ], + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::QuickSight::Topic", + "writeOnlyProperties": [ + "/properties/FolderArns" + ] +} diff --git a/src/schema/aws-quicksight-vpcconnection.json b/src/schema/aws-quicksight-vpcconnection.json new file mode 100644 index 00000000..b5dc4874 --- /dev/null +++ b/src/schema/aws-quicksight-vpcconnection.json @@ -0,0 +1,266 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/AwsAccountId", + "/properties/VPCConnectionId" + ], + "definitions": { + "NetworkInterface": { + "additionalProperties": false, + "description": "The structure that contains information about a network interface.
", + "properties": { + "AvailabilityZone": { + "description": "The availability zone that the network interface resides in.
", + "type": "string" + }, + "ErrorMessage": { + "description": "An error message.
", + "type": "string" + }, + "NetworkInterfaceId": { + "description": "The network interface ID.
", + "maxLength": 255, + "minLength": 0, + "pattern": "^eni-[0-9a-z]*$", + "type": "string" + }, + "Status": { + "$ref": "#/definitions/NetworkInterfaceStatus" + }, + "SubnetId": { + "description": "The subnet ID associated with the network interface.
", + "maxLength": 255, + "minLength": 1, + "pattern": "^subnet-[0-9a-z]*$", + "type": "string" + } + }, + "type": "object" + }, + "NetworkInterfaceStatus": { + "enum": [ + "CREATING", + "AVAILABLE", + "CREATION_FAILED", + "UPDATING", + "UPDATE_FAILED", + "DELETING", + "DELETED", + "DELETION_FAILED", + "DELETION_SCHEDULED", + "ATTACHMENT_FAILED_ROLLBACK_FAILED" + ], + "type": "string" + }, + "Tag": { + "additionalProperties": false, + "description": "The key or keys of the key-value pairs for the resource tag or tags assigned to the\n resource.
", + "properties": { + "Key": { + "description": "Tag key.
", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "Tag value.
", + "maxLength": 256, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "VPCConnectionAvailabilityStatus": { + "enum": [ + "AVAILABLE", + "UNAVAILABLE", + "PARTIALLY_AVAILABLE" + ], + "type": "string" + }, + "VPCConnectionResourceStatus": { + "enum": [ + "CREATION_IN_PROGRESS", + "CREATION_SUCCESSFUL", + "CREATION_FAILED", + "UPDATE_IN_PROGRESS", + "UPDATE_SUCCESSFUL", + "UPDATE_FAILED", + "DELETION_IN_PROGRESS", + "DELETION_FAILED", + "DELETED" + ], + "type": "string" + } + }, + "description": "Definition of the AWS::QuickSight::VPCConnection Resource Type.", + "handlers": { + "create": { + "permissions": [ + "quicksight:CreateVPCConnection", + "quicksight:DescribeVPCConnection", + "quicksight:ListTagsForResource", + "quicksight:TagResource", + "iam:PassRole" + ] + }, + "delete": { + "permissions": [ + "quicksight:DescribeVPCConnection", + "quicksight:DeleteVPCConnection", + "quicksight:ListTagsForResource", + "iam:PassRole" + ] + }, + "list": { + "permissions": [ + "quicksight:ListVPCConnections" + ] + }, + "read": { + "permissions": [ + "quicksight:DescribeVPCConnection", + "quicksight:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "quicksight:DescribeVPCConnection", + "quicksight:UpdateVPCConnection", + "quicksight:TagResource", + "quicksight:UntagResource", + "quicksight:ListTagsForResource", + "iam:PassRole" + ] + } + }, + "primaryIdentifier": [ + "/properties/AwsAccountId", + "/properties/VPCConnectionId" + ], + "properties": { + "Arn": { + "description": "The Amazon Resource Name (ARN) of the VPC connection.
", + "type": "string" + }, + "AvailabilityStatus": { + "$ref": "#/definitions/VPCConnectionAvailabilityStatus" + }, + "AwsAccountId": { + "maxLength": 12, + "minLength": 12, + "pattern": "^[0-9]{12}$", + "type": "string" + }, + "CreatedTime": { + "description": "The time that the VPC connection was created.
", + "format": "date-time", + "type": "string" + }, + "DnsResolvers": { + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array" + }, + "LastUpdatedTime": { + "description": "The time that the VPC connection was last updated.
", + "format": "date-time", + "type": "string" + }, + "Name": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "NetworkInterfaces": { + "description": "A list of network interfaces.
", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/NetworkInterface" + }, + "maxItems": 15, + "minItems": 0, + "type": "array" + }, + "RoleArn": { + "type": "string" + }, + "SecurityGroupIds": { + "insertionOrder": false, + "items": { + "maxLength": 255, + "minLength": 1, + "pattern": "^sg-[0-9a-z]*$", + "type": "string" + }, + "maxItems": 16, + "minItems": 1, + "type": "array" + }, + "Status": { + "$ref": "#/definitions/VPCConnectionResourceStatus" + }, + "SubnetIds": { + "insertionOrder": false, + "items": { + "maxLength": 255, + "minLength": 1, + "pattern": "^subnet-[0-9a-z]*$", + "type": "string" + }, + "maxItems": 15, + "minItems": 2, + "type": "array" + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 200, + "minItems": 1, + "type": "array" + }, + "VPCConnectionId": { + "maxLength": 1000, + "minLength": 1, + "pattern": "[\\w\\-]+", + "type": "string" + }, + "VPCId": { + "description": "The Amazon EC2 VPC ID associated with the VPC connection.
", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/CreatedTime", + "/properties/LastUpdatedTime", + "/properties/NetworkInterfaces", + "/properties/Status", + "/properties/VPCId" + ], + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "quicksight:TagResource", + "quicksight:UntagResource", + "quicksight:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::QuickSight::VPCConnection", + "writeOnlyProperties": [ + "/properties/SubnetIds" + ] +} diff --git a/src/schema/aws-ram-permission.json b/src/schema/aws-ram-permission.json new file mode 100644 index 00000000..9c9dfa33 --- /dev/null +++ b/src/schema/aws-ram-permission.json @@ -0,0 +1,134 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name", + "/properties/ResourceType", + "/properties/PolicyTemplate" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "Resource type definition for AWS::RAM::Permission", + "handlers": { + "create": { + "permissions": [ + "ram:CreatePermission", + "ram:TagResource" + ] + }, + "delete": { + "permissions": [ + "ram:DeletePermissionVersion", + "ram:DeletePermission" + ] + }, + "list": { + "permissions": [ + "ram:ListPermissions", + "ram:ListPermissionVersions" + ] + }, + "read": { + "permissions": [ + "ram:GetPermission" + ] + }, + "update": { + "permissions": [ + "ram:CreatePermissionVersion", + "ram:DeletePermissionVersion", + "ram:SetDefaultPermissionVersion", + "ram:GetPermission", + "ram:ReplacePermissionAssociations", + "ram:ListReplacePermissionAssociationsWork", + "ram:ListPermissionVersions", + "ram:UntagResource", + "ram:TagResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "Arn": { + "type": "string" + }, + "IsResourceTypeDefault": { + "description": "Set to true to use this as the default permission.", + "type": "boolean" + }, + "Name": { + "description": "The name of the permission.", + "type": "string" + }, + "PermissionType": { + "type": "string" + }, + "PolicyTemplate": { + "description": "Policy template for the permission.", + "type": "object" + }, + "ResourceType": { + "description": "The resource type this permission can be used with.", + "type": "string" + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + }, + "Version": { + "description": "Version of the permission.", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/Version", + "/properties/IsResourceTypeDefault", + "/properties/PermissionType" + ], + "required": [ + "Name", + "ResourceType", + "PolicyTemplate" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ram", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "ram:TagResource", + "ram:UntagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::RAM::Permission" +} diff --git a/src/schema/aws-ram-resourceshare.json b/src/schema/aws-ram-resourceshare.json new file mode 100644 index 00000000..996c93e2 --- /dev/null +++ b/src/schema/aws-ram-resourceshare.json @@ -0,0 +1,145 @@ +{ + "additionalProperties": false, + "definitions": { + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "Resource type definition for AWS::RAM::ResourceShare", + "handlers": { + "create": { + "permissions": [ + "ram:CreateResourceShare", + "ram:TagResource" + ] + }, + "delete": { + "permissions": [ + "ram:DeleteResourceShare", + "ram:GetResourceShares" + ] + }, + "list": { + "permissions": [ + "ram:GetResourceShares" + ] + }, + "read": { + "permissions": [ + "ram:GetResourceShares" + ] + }, + "update": { + "permissions": [ + "ram:GetPermission", + "ram:GetResourceShares", + "ram:GetResourceShareAssociations", + "ram:ListResourceSharePermissions", + "ram:UpdateResourceShare", + "ram:AssociateResourceSharePermission", + "ram:AssociateResourceShare", + "ram:DisassociateResourceShare", + "ram:UntagResource", + "ram:TagResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "AllowExternalPrincipals": { + "description": "Specifies whether principals outside your organization in AWS Organizations can be associated with a resource share. A value of `true` lets you share with individual AWS accounts that are not in your organization. A value of `false` only has meaning if your account is a member of an AWS Organization. The default value is `true`.", + "type": "boolean" + }, + "Arn": { + "type": "string" + }, + "Name": { + "description": "Specifies the name of the resource share.", + "type": "string" + }, + "PermissionArns": { + "description": "Specifies the [Amazon Resource Names (ARNs)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) of the AWS RAM permission to associate with the resource share. If you do not specify an ARN for the permission, AWS RAM automatically attaches the default version of the permission for each resource type. You can associate only one permission with each resource type included in the resource share.", + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array" + }, + "Principals": { + "description": "Specifies the principals to associate with the resource share. The possible values are:\n\n- An AWS account ID\n\n- An Amazon Resource Name (ARN) of an organization in AWS Organizations\n\n- An ARN of an organizational unit (OU) in AWS Organizations\n\n- An ARN of an IAM role\n\n- An ARN of an IAM user", + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array" + }, + "ResourceArns": { + "description": "Specifies a list of one or more ARNs of the resources to associate with the resource share.", + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array" + }, + "Sources": { + "description": "Specifies from which source accounts the service principal has access to the resources in this resource share.", + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array" + }, + "Tags": { + "description": "Specifies one or more tags to attach to the resource share itself. It doesn't attach the tags to the resources associated with the resource share.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/Arn" + ], + "required": [ + "Name" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ram", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "ram:TagResource", + "ram:UntagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::RAM::ResourceShare", + "writeOnlyProperties": [ + "/properties/PermissionArns", + "/properties/Principals", + "/properties/ResourceArns", + "/properties/Sources" + ] +} diff --git a/src/schema/aws-rbin-rule.json b/src/schema/aws-rbin-rule.json new file mode 100644 index 00000000..d7d94ed8 --- /dev/null +++ b/src/schema/aws-rbin-rule.json @@ -0,0 +1,271 @@ +{ + "additionalIdentifiers": [ + [ + "/properties/Identifier" + ] + ], + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ResourceType" + ], + "definitions": { + "ResourceTag": { + "additionalProperties": false, + "description": "The resource tag of the rule.", + "properties": { + "ResourceTagKey": { + "description": "The tag key of the resource.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "ResourceTagValue": { + "description": "The tag value of the resource", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "ResourceTagKey", + "ResourceTagValue" + ], + "type": "object" + }, + "RetentionPeriod": { + "additionalProperties": false, + "description": "The retention period of the rule.", + "properties": { + "RetentionPeriodUnit": { + "description": "The retention period unit of the rule", + "enum": [ + "DAYS" + ], + "type": "string" + }, + "RetentionPeriodValue": { + "description": "The retention period value of the rule.", + "maximum": 3650, + "minimum": 1, + "type": "integer" + } + }, + "required": [ + "RetentionPeriodValue", + "RetentionPeriodUnit" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "description": "Metadata of a retention rule, consisting of a key-value pair.", + "properties": { + "Key": { + "description": "A unique identifier for the tag.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "String which you can use to describe or define the tag.", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "UnlockDelay": { + "additionalProperties": false, + "properties": { + "UnlockDelayUnit": { + "description": "The unit of time in which to measure the unlock delay. Currently, the unlock delay can be measure only in days.", + "enum": [ + "DAYS" + ], + "type": "string" + }, + "UnlockDelayValue": { + "description": "The unlock delay period, measured in the unit specified for UnlockDelayUnit.", + "maximum": 30, + "minimum": 7, + "type": "integer" + } + }, + "type": "object" + } + }, + "description": "Resource Type definition for AWS::Rbin::Rule", + "handlers": { + "create": { + "permissions": [ + "rbin:CreateRule", + "rbin:GetRule", + "rbin:LockRule", + "rbin:TagResource", + "iam:PassRole" + ] + }, + "delete": { + "permissions": [ + "rbin:GetRule", + "rbin:DeleteRule", + "iam:PassRole" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "ExcludeResourceTags": { + "$ref": "resource-schema.json#/properties/ExcludeResourceTags" + }, + "LockState": { + "$ref": "resource-schema.json#/properties/LockState" + }, + "ResourceTags": { + "$ref": "resource-schema.json#/properties/ResourceTags" + }, + "ResourceType": { + "$ref": "resource-schema.json#/properties/ResourceType" + } + }, + "required": [ + "ResourceType" + ] + }, + "permissions": [ + "rbin:ListRules", + "rbin:ListTagsForResource", + "iam:PassRole" + ] + }, + "read": { + "permissions": [ + "rbin:GetRule", + "rbin:ListTagsForResource", + "iam:PassRole" + ] + }, + "update": { + "permissions": [ + "rbin:GetRule", + "rbin:UpdateRule", + "rbin:LockRule", + "rbin:UnlockRule", + "rbin:TagResource", + "rbin:UntagResource", + "rbin:ListTagsForResource", + "iam:PassRole" + ] + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "Arn": { + "description": "Rule Arn is unique for each rule.", + "maxLength": 1011, + "minLength": 0, + "type": "string" + }, + "Description": { + "description": "The description of the retention rule.", + "maxLength": 255, + "type": "string" + }, + "ExcludeResourceTags": { + "description": "Information about the exclude resource tags used to identify resources that are excluded by the retention rule.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/ResourceTag" + }, + "maxItems": 5, + "type": "array", + "uniqueItems": true + }, + "Identifier": { + "description": "The unique ID of the retention rule.", + "pattern": "[0-9a-zA-Z]{11}", + "type": "string" + }, + "LockConfiguration": { + "$ref": "#/definitions/UnlockDelay", + "description": "Information about the retention rule lock configuration." + }, + "LockState": { + "description": "The lock state for the retention rule.", + "pattern": "locked|pending_unlock|unlocked", + "type": "string" + }, + "ResourceTags": { + "description": "Information about the resource tags used to identify resources that are retained by the retention rule.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/ResourceTag" + }, + "maxItems": 50, + "type": "array", + "uniqueItems": true + }, + "ResourceType": { + "description": "The resource type retained by the retention rule.", + "enum": [ + "EBS_SNAPSHOT", + "EC2_IMAGE" + ], + "type": "string" + }, + "RetentionPeriod": { + "$ref": "#/definitions/RetentionPeriod", + "description": "Information about the retention period for which the retention rule is to retain resources." + }, + "Status": { + "description": "The state of the retention rule. Only retention rules that are in the available state retain resources.", + "pattern": "pending|available", + "type": "string" + }, + "Tags": { + "description": "Information about the tags assigned to the retention rule.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 200, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/Identifier", + "/properties/LockState" + ], + "required": [ + "RetentionPeriod", + "ResourceType" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-rbin", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "rbin:TagResource", + "rbin:UntagResource", + "rbin:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::Rbin::Rule", + "writeOnlyProperties": [ + "/properties/LockConfiguration", + "/properties/LockConfiguration/UnlockDelayValue", + "/properties/LockConfiguration/UnlockDelayUnit" + ] +} diff --git a/src/schema/aws-rds-customdbengineversion.json b/src/schema/aws-rds-customdbengineversion.json new file mode 100644 index 00000000..7517460e --- /dev/null +++ b/src/schema/aws-rds-customdbengineversion.json @@ -0,0 +1,206 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Engine", + "/properties/EngineVersion", + "/properties/DatabaseInstallationFilesS3BucketName", + "/properties/DatabaseInstallationFilesS3Prefix", + "/properties/ImageId", + "/properties/KMSKeyId", + "/properties/Manifest", + "/properties/SourceCustomDbEngineVersionIdentifier", + "/properties/UseAwsProvidedLatestImage" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "description": "Metadata assigned to an Amazon RDS resource consisting of a key-value pair.\n For more information, see [Tagging Amazon RDS resources](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Tagging.html) in the *Amazon RDS User Guide* or [Tagging Amazon Aurora and Amazon RDS resources](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/USER_Tagging.html) in the *Amazon Aurora User Guide*.", + "properties": { + "Key": { + "description": "A key is the required name of the tag. The string value can be from 1 to 128 Unicode characters in length and can't be prefixed with ``aws:`` or ``rds:``. The string can only contain only the set of Unicode letters, digits, white-space, '_', '.', ':', '/', '=', '+', '-', '@' (Java regex: \"^([\\\\p{L}\\\\p{Z}\\\\p{N}_.:/=+\\\\-@]*)$\").", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "A value is the optional value of the tag. The string value can be from 1 to 256 Unicode characters in length and can't be prefixed with ``aws:`` or ``rds:``. The string can only contain only the set of Unicode letters, digits, white-space, '_', '.', ':', '/', '=', '+', '-', '@' (Java regex: \"^([\\\\p{L}\\\\p{Z}\\\\p{N}_.:/=+\\\\-@]*)$\").", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key" + ], + "type": "object" + } + }, + "description": "Creates a custom DB engine version (CEV).", + "handlers": { + "create": { + "permissions": [ + "ec2:CopySnapshot", + "ec2:DeleteSnapshot", + "ec2:DescribeSnapshots", + "kms:CreateGrant", + "kms:Decrypt", + "kms:DescribeKey", + "kms:GenerateDataKey", + "kms:ReEncrypt", + "mediaimport:CreateDatabaseBinarySnapshot", + "rds:AddTagsToResource", + "rds:CreateCustomDBEngineVersion", + "rds:DescribeDBEngineVersions", + "rds:ModifyCustomDBEngineVersion", + "s3:CreateBucket", + "s3:GetObject", + "s3:GetObjectAcl", + "s3:GetObjectTagging", + "s3:ListBucket", + "s3:PutBucketObjectLockConfiguration", + "s3:PutBucketPolicy", + "s3:PutBucketVersioning" + ], + "timeoutInMinutes": 600 + }, + "delete": { + "permissions": [ + "rds:DeleteCustomDBEngineVersion", + "rds:DescribeDBEngineVersions" + ], + "timeoutInMinutes": 600 + }, + "list": { + "permissions": [ + "rds:DescribeDBEngineVersions" + ] + }, + "read": { + "permissions": [ + "rds:DescribeDBEngineVersions" + ] + }, + "update": { + "permissions": [ + "rds:AddTagsToResource", + "rds:DescribeDBEngineVersions", + "rds:ModifyCustomDBEngineVersion", + "rds:RemoveTagsFromResource" + ], + "timeoutInMinutes": 600 + } + }, + "primaryIdentifier": [ + "/properties/Engine", + "/properties/EngineVersion" + ], + "properties": { + "DBEngineVersionArn": { + "description": "", + "type": "string" + }, + "DatabaseInstallationFilesS3BucketName": { + "description": "The name of an Amazon S3 bucket that contains database installation files for your CEV. For example, a valid bucket name is ``my-custom-installation-files``.", + "maxLength": 63, + "minLength": 3, + "type": "string" + }, + "DatabaseInstallationFilesS3Prefix": { + "description": "The Amazon S3 directory that contains the database installation files for your CEV. For example, a valid bucket name is ``123456789012/cev1``. If this setting isn't specified, no prefix is assumed.", + "maxLength": 255, + "minLength": 1, + "type": "string" + }, + "Description": { + "description": "An optional description of your CEV.", + "maxLength": 1000, + "minLength": 1, + "type": "string" + }, + "Engine": { + "description": "The database engine to use for your custom engine version (CEV).\n Valid values:\n + ``custom-oracle-ee`` \n + ``custom-oracle-ee-cdb``", + "maxLength": 35, + "minLength": 1, + "type": "string" + }, + "EngineVersion": { + "description": "The name of your CEV. The name format is ``major version.customized_string``. For example, a valid CEV name is ``19.my_cev1``. This setting is required for RDS Custom for Oracle, but optional for Amazon RDS. The combination of ``Engine`` and ``EngineVersion`` is unique per customer per Region.\n *Constraints:* Minimum length is 1. Maximum length is 60.\n *Pattern:* ``^[a-z0-9_.-]{1,60$``}", + "maxLength": 60, + "minLength": 1, + "type": "string" + }, + "ImageId": { + "description": "A value that indicates the ID of the AMI.", + "type": "string" + }, + "KMSKeyId": { + "description": "The AWS KMS key identifier for an encrypted CEV. A symmetric encryption KMS key is required for RDS Custom, but optional for Amazon RDS.\n If you have an existing symmetric encryption KMS key in your account, you can use it with RDS Custom. No further action is necessary. If you don't already have a symmetric encryption KMS key in your account, follow the instructions in [Creating a symmetric encryption KMS key](https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html#create-symmetric-cmk) in the *Key Management Service Developer Guide*.\n You can choose the same symmetric encryption key when you create a CEV and a DB instance, or choose different keys.", + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "Manifest": { + "description": "The CEV manifest, which is a JSON document that describes the installation .zip files stored in Amazon S3. Specify the name/value pairs in a file or a quoted string. RDS Custom applies the patches in the order in which they are listed.\n The following JSON fields are valid:\n + MediaImportTemplateVersion Version of the CEV manifest. The date is in the format YYYY-MM-DD. + databaseInstallationFileNames Ordered list of installation files for the CEV. + opatchFileNames Ordered list of OPatch installers used for the Oracle DB engine. + psuRuPatchFileNames The PSU and RU patches for this CEV. + OtherPatchFileNames The patches that are not in the list of PSU and RU patches. Amazon RDS applies these patches after applying the PSU and RU patches. \n For more information, see [Creating the CEV manifest](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/custom-cev.html#custom-cev.preparing.manifest) in the *Amazon RDS User Guide*.", + "maxLength": 51000, + "minLength": 1, + "type": "string" + }, + "SourceCustomDbEngineVersionIdentifier": { + "description": "The ARN of a CEV to use as a source for creating a new CEV. You can specify a different Amazon Machine Imagine (AMI) by using either ``Source`` or ``UseAwsProvidedLatestImage``. You can't specify a different JSON manifest when you specify ``SourceCustomDbEngineVersionIdentifier``.", + "type": "string" + }, + "Status": { + "default": "available", + "description": "A value that indicates the status of a custom engine version (CEV).", + "enum": [ + "available", + "inactive", + "inactive-except-restore" + ], + "type": "string" + }, + "Tags": { + "description": "A list of tags. For more information, see [Tagging Amazon RDS Resources](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Tagging.html) in the *Amazon RDS User Guide.*", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + }, + "UseAwsProvidedLatestImage": { + "description": "Specifies whether to use the latest service-provided Amazon Machine Image (AMI) for the CEV. If you specify ``UseAwsProvidedLatestImage``, you can't also specify ``ImageId``.", + "type": "boolean" + } + }, + "propertyTransform": { + "/properties/Engine": "$lowercase(Engine)", + "/properties/EngineVersion": "$lowercase(EngineVersion)", + "/properties/KMSKeyId": "$join([\"arn:.+?:kms:.+?:.+?:key\\/\", KMSKeyId])" + }, + "readOnlyProperties": [ + "/properties/DBEngineVersionArn" + ], + "required": [ + "Engine", + "EngineVersion" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "rds:AddTagsToResource", + "rds:RemoveTagsFromResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::RDS::CustomDBEngineVersion", + "writeOnlyProperties": [ + "/properties/Manifest", + "/properties/SourceCustomDbEngineVersionIdentifier", + "/properties/UseAwsProvidedLatestImage" + ] +} diff --git a/src/schema/aws-rds-dbcluster.json b/src/schema/aws-rds-dbcluster.json new file mode 100644 index 00000000..2bd3711f --- /dev/null +++ b/src/schema/aws-rds-dbcluster.json @@ -0,0 +1,567 @@ +{ + "additionalProperties": false, + "conditionalCreateOnlyProperties": [ + "/properties/Engine", + "/properties/GlobalClusterIdentifier", + "/properties/MasterUsername" + ], + "createOnlyProperties": [ + "/properties/AvailabilityZones", + "/properties/ClusterScalabilityType", + "/properties/DBClusterIdentifier", + "/properties/DBSubnetGroupName", + "/properties/DBSystemId", + "/properties/DatabaseName", + "/properties/EngineMode", + "/properties/KmsKeyId", + "/properties/PubliclyAccessible", + "/properties/RestoreToTime", + "/properties/RestoreType", + "/properties/SnapshotIdentifier", + "/properties/SourceDBClusterIdentifier", + "/properties/SourceRegion", + "/properties/StorageEncrypted", + "/properties/UseLatestRestorableTime" + ], + "definitions": { + "DBClusterRole": { + "additionalProperties": false, + "description": "Describes an AWS Identity and Access Management (IAM) role that is associated with a DB cluster.", + "properties": { + "FeatureName": { + "description": "The name of the feature associated with the AWS Identity and Access Management (IAM) role. IAM roles that are associated with a DB cluster grant permission for the DB cluster to access other AWS services on your behalf. For the list of supported feature names, see the ``SupportedFeatureNames`` description in [DBEngineVersion](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DBEngineVersion.html) in the *Amazon RDS API Reference*.", + "type": "string" + }, + "RoleArn": { + "description": "The Amazon Resource Name (ARN) of the IAM role that is associated with the DB cluster.", + "type": "string" + } + }, + "required": [ + "RoleArn" + ], + "type": "object" + }, + "Endpoint": { + "additionalProperties": false, + "description": "The ``Endpoint`` return value specifies the connection endpoint for the primary instance of the DB cluster.", + "properties": { + "Address": { + "description": "Specifies the connection endpoint for the primary instance of the DB cluster.", + "type": "string" + }, + "Port": { + "description": "Specifies the port that the database engine is listening on.", + "type": "string" + } + }, + "type": "object" + }, + "MasterUserSecret": { + "additionalProperties": false, + "description": "The ``MasterUserSecret`` return value specifies the secret managed by RDS in AWS Secrets Manager for the master user password.\n For more information, see [Password management with Secrets Manager](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/rds-secrets-manager.html) in the *Amazon RDS User Guide* and [Password management with Secrets Manager](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/rds-secrets-manager.html) in the *Amazon Aurora User Guide.*", + "properties": { + "KmsKeyId": { + "description": "The AWS KMS key identifier that is used to encrypt the secret.", + "type": "string" + }, + "SecretArn": { + "description": "The Amazon Resource Name (ARN) of the secret. This parameter is a return value that you can retrieve using the ``Fn::GetAtt`` intrinsic function. For more information, see [Return values](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbcluster.html#aws-resource-rds-dbcluster-return-values).", + "type": "string" + } + }, + "type": "object" + }, + "ReadEndpoint": { + "additionalProperties": false, + "description": "The ``ReadEndpoint`` return value specifies the reader endpoint for the DB cluster.\n The reader endpoint for a DB cluster load-balances connections across the Aurora Replicas that are available in a DB cluster. As clients request new connections to the reader endpoint, Aurora distributes the connection requests among the Aurora Replicas in the DB cluster. This functionality can help balance your read workload across multiple Aurora Replicas in your DB cluster.\n If a failover occurs, and the Aurora Replica that you are connected to is promoted to be the primary instance, your connection is dropped. To continue sending your read workload to other Aurora Replicas in the cluster, you can then reconnect to the reader endpoint.\n For more information about Aurora endpoints, see [Amazon Aurora connection management](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Aurora.Overview.Endpoints.html) in the *Amazon Aurora User Guide*.", + "properties": { + "Address": { + "description": "The host address of the reader endpoint.", + "type": "string" + } + }, + "type": "object" + }, + "ScalingConfiguration": { + "additionalProperties": false, + "description": "The ``ScalingConfiguration`` property type specifies the scaling configuration of an Aurora Serverless v1 DB cluster. \n For more information, see [Using Amazon Aurora Serverless](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/aurora-serverless.html) in the *Amazon Aurora User Guide*.\n This property is only supported for Aurora Serverless v1. For Aurora Serverless v2, Use the ``ServerlessV2ScalingConfiguration`` property.\n Valid for: Aurora Serverless v1 DB clusters only", + "properties": { + "AutoPause": { + "description": "Indicates whether to allow or disallow automatic pause for an Aurora DB cluster in ``serverless`` DB engine mode. A DB cluster can be paused only when it's idle (it has no connections).\n If a DB cluster is paused for more than seven days, the DB cluster might be backed up with a snapshot. In this case, the DB cluster is restored when there is a request to connect to it.", + "type": "boolean" + }, + "MaxCapacity": { + "description": "The maximum capacity for an Aurora DB cluster in ``serverless`` DB engine mode.\n For Aurora MySQL, valid capacity values are ``1``, ``2``, ``4``, ``8``, ``16``, ``32``, ``64``, ``128``, and ``256``.\n For Aurora PostgreSQL, valid capacity values are ``2``, ``4``, ``8``, ``16``, ``32``, ``64``, ``192``, and ``384``.\n The maximum capacity must be greater than or equal to the minimum capacity.", + "type": "integer" + }, + "MinCapacity": { + "description": "The minimum capacity for an Aurora DB cluster in ``serverless`` DB engine mode.\n For Aurora MySQL, valid capacity values are ``1``, ``2``, ``4``, ``8``, ``16``, ``32``, ``64``, ``128``, and ``256``.\n For Aurora PostgreSQL, valid capacity values are ``2``, ``4``, ``8``, ``16``, ``32``, ``64``, ``192``, and ``384``.\n The minimum capacity must be less than or equal to the maximum capacity.", + "type": "integer" + }, + "SecondsBeforeTimeout": { + "description": "The amount of time, in seconds, that Aurora Serverless v1 tries to find a scaling point to perform seamless scaling before enforcing the timeout action. The default is 300.\n Specify a value between 60 and 600 seconds.", + "type": "integer" + }, + "SecondsUntilAutoPause": { + "description": "The time, in seconds, before an Aurora DB cluster in ``serverless`` mode is paused.\n Specify a value between 300 and 86,400 seconds.", + "type": "integer" + }, + "TimeoutAction": { + "description": "The action to take when the timeout is reached, either ``ForceApplyCapacityChange`` or ``RollbackCapacityChange``.\n ``ForceApplyCapacityChange`` sets the capacity to the specified value as soon as possible.\n ``RollbackCapacityChange``, the default, ignores the capacity change if a scaling point isn't found in the timeout period.\n If you specify ``ForceApplyCapacityChange``, connections that prevent Aurora Serverless v1 from finding a scaling point might be dropped.\n For more information, see [Autoscaling for Aurora Serverless v1](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/aurora-serverless.how-it-works.html#aurora-serverless.how-it-works.auto-scaling) in the *Amazon Aurora User Guide*.", + "type": "string" + } + }, + "type": "object" + }, + "ServerlessV2ScalingConfiguration": { + "additionalProperties": false, + "description": "The ``ServerlessV2ScalingConfiguration`` property type specifies the scaling configuration of an Aurora Serverless V2 DB cluster. For more information, see [Using Amazon Aurora Serverless v2](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/aurora-serverless-v2.html) in the *Amazon Aurora User Guide*.\n If you have an Aurora cluster, you must set this attribute before you add a DB instance that uses the ``db.serverless`` DB instance class. For more information, see [Clusters that use Aurora Serverless v2 must have a capacity range specified](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/aurora-serverless-v2.requirements.html#aurora-serverless-v2.requirements.capacity-range) in the *Amazon Aurora User Guide*.\n This property is only supported for Aurora Serverless v2. For Aurora Serverless v1, use the ``ScalingConfiguration`` property.\n Valid for: Aurora Serverless v2 DB clusters", + "properties": { + "MaxCapacity": { + "description": "The maximum number of Aurora capacity units (ACUs) for a DB instance in an Aurora Serverless v2 cluster. You can specify ACU values in half-step increments, such as 40, 40.5, 41, and so on. The largest value that you can use is 128.\n The maximum capacity must be higher than 0.5 ACUs. For more information, see [Choosing the maximum Aurora Serverless v2 capacity setting for a cluster](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/aurora-serverless-v2.setting-capacity.html#aurora-serverless-v2.max_capacity_considerations) in the *Amazon Aurora User Guide*.\n Aurora automatically sets certain parameters for Aurora Serverless V2 DB instances to values that depend on the maximum ACU value in the capacity range. When you update the maximum capacity value, the ``ParameterApplyStatus`` value for the DB instance changes to ``pending-reboot``. You can update the parameter values by rebooting the DB instance after changing the capacity range.", + "type": "number" + }, + "MinCapacity": { + "description": "The minimum number of Aurora capacity units (ACUs) for a DB instance in an Aurora Serverless v2 cluster. You can specify ACU values in half-step increments, such as 8, 8.5, 9, and so on. For Aurora versions that support the Aurora Serverless v2 auto-pause feature, the smallest value that you can use is 0. For versions that don't support Aurora Serverless v2 auto-pause, the smallest value that you can use is 0.5.", + "type": "number" + }, + "SecondsUntilAutoPause": { + "description": "Specifies the number of seconds an Aurora Serverless v2 DB instance must be idle before Aurora attempts to automatically pause it. \n Specify a value between 300 seconds (five minutes) and 86,400 seconds (one day). The default is 300 seconds.", + "type": "integer" + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "description": "Metadata assigned to an Amazon RDS resource consisting of a key-value pair.\n For more information, see [Tagging Amazon RDS resources](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Tagging.html) in the *Amazon RDS User Guide* or [Tagging Amazon Aurora and Amazon RDS resources](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/USER_Tagging.html) in the *Amazon Aurora User Guide*.", + "properties": { + "Key": { + "description": "A key is the required name of the tag. The string value can be from 1 to 128 Unicode characters in length and can't be prefixed with ``aws:`` or ``rds:``. The string can only contain only the set of Unicode letters, digits, white-space, '_', '.', ':', '/', '=', '+', '-', '@' (Java regex: \"^([\\\\p{L}\\\\p{Z}\\\\p{N}_.:/=+\\\\-@]*)$\").", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "A value is the optional value of the tag. The string value can be from 1 to 256 Unicode characters in length and can't be prefixed with ``aws:`` or ``rds:``. The string can only contain only the set of Unicode letters, digits, white-space, '_', '.', ':', '/', '=', '+', '-', '@' (Java regex: \"^([\\\\p{L}\\\\p{Z}\\\\p{N}_.:/=+\\\\-@]*)$\").", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key" + ], + "type": "object" + } + }, + "description": "The ``AWS::RDS::DBCluster`` resource creates an Amazon Aurora DB cluster or Multi-AZ DB cluster.\n For more information about creating an Aurora DB cluster, see [Creating an Amazon Aurora DB cluster](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Aurora.CreateInstance.html) in the *Amazon Aurora User Guide*.\n For more information about creating a Multi-AZ DB cluster, see [Creating a Multi-AZ DB cluster](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/create-multi-az-db-cluster.html) in the *Amazon RDS User Guide*.\n You can only create this resource in AWS Regions where Amazon Aurora or Multi-AZ DB clusters are supported.\n *Updating DB clusters* \n When properties labeled \"*Update requires:* [Replacement](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-replacement)\" are updated, AWS CloudFormation first creates a replacement DB cluster, then changes references from other dependent resources to point to the replacement DB cluster, and finally deletes the old DB cluster.\n We highly recommend that you take a snapshot of the database before updating the stack. If you don't, you lose the data when AWS CloudFormation replaces your DB cluster. To preserve your data, perform the following procedure:\n 1. Deactivate any applications that are using the DB cluster so that there's no activity on the DB instance.\n 1. Create a snapshot of the DB cluster. For more information, see [Creating a DB cluster snapshot](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/USER_CreateSnapshotCluster.html).\n 1. If you want to restore your DB cluster using a DB cluster snapshot, modify the updated template with your DB cluster changes and add the ``SnapshotIdentifier`` property with the ID of the DB cluster snapshot that you want to use.\n After you restore a DB cluster with a ``SnapshotIdentifier`` property, you must specify the same ``SnapshotIdentifier`` property for any future updates to the DB cluster. When you specify this property for an update, the DB cluster is not restored from the DB cluster snapshot again, and the data in the database is not changed. However, if you don't specify the ``SnapshotIdentifier`` property, an empty DB cluster is created, and the original DB cluster is deleted. If you specify a property that is different from the previous snapshot restore property, a new DB cluster is restored from the specified ``SnapshotIdentifier`` property, and the original DB cluster is deleted.\n 1. Update the stack.\n \n Currently, when you are updating the stack for an Aurora Serverless DB cluster, you can't include changes to any other properties when you specify one of the following properties: ``PreferredBackupWindow``, ``PreferredMaintenanceWindow``, and ``Port``. This limitation doesn't apply to provisioned DB clusters.\n For more information about updating other properties of this resource, see ``ModifyDBCluster``. For more information about updating stacks, see [CloudFormation Stacks Updates](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks.html).\n *Deleting DB clusters* \n The default ``DeletionPolicy`` for ``AWS::RDS::DBCluster`` resources is ``Snapshot``. For more information about how AWS CloudFormation deletes resources, see [DeletionPolicy Attribute](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-attribute-deletionpolicy.html).", + "handlers": { + "create": { + "permissions": [ + "iam:CreateServiceLinkedRole", + "iam:PassRole", + "rds:AddRoleToDBCluster", + "rds:AddTagsToResource", + "rds:CreateDBCluster", + "rds:CreateDBInstance", + "rds:DescribeDBClusters", + "rds:DescribeDBClusterSnapshots", + "rds:DescribeDBSnapshots", + "rds:DescribeEvents", + "rds:EnableHttpEndpoint", + "rds:ModifyDBCluster", + "rds:RestoreDBClusterFromSnapshot", + "rds:RestoreDBClusterToPointInTime", + "secretsmanager:CreateSecret", + "secretsmanager:TagResource" + ], + "timeoutInMinutes": 2160 + }, + "delete": { + "permissions": [ + "rds:AddTagsToResource", + "rds:CreateDBClusterSnapshot", + "rds:DeleteDBCluster", + "rds:DeleteDBInstance", + "rds:DescribeDBClusters", + "rds:DescribeGlobalClusters", + "rds:RemoveFromGlobalCluster" + ] + }, + "list": { + "permissions": [ + "rds:DescribeDBClusters" + ] + }, + "read": { + "permissions": [ + "rds:DescribeDBClusters" + ] + }, + "update": { + "permissions": [ + "ec2:DescribeSecurityGroups", + "iam:PassRole", + "rds:AddRoleToDBCluster", + "rds:AddTagsToResource", + "rds:DescribeDBClusters", + "rds:DescribeDBSubnetGroups", + "rds:DescribeEvents", + "rds:DescribeGlobalClusters", + "rds:DisableHttpEndpoint", + "rds:EnableHttpEndpoint", + "rds:ModifyDBCluster", + "rds:ModifyDBInstance", + "rds:RemoveFromGlobalCluster", + "rds:RemoveRoleFromDBCluster", + "rds:RemoveTagsFromResource", + "secretsmanager:CreateSecret", + "secretsmanager:TagResource" + ], + "timeoutInMinutes": 2160 + } + }, + "primaryIdentifier": [ + "/properties/DBClusterIdentifier" + ], + "properties": { + "AllocatedStorage": { + "description": "The amount of storage in gibibytes (GiB) to allocate to each DB instance in the Multi-AZ DB cluster.\n Valid for Cluster Type: Multi-AZ DB clusters only\n This setting is required to create a Multi-AZ DB cluster.", + "type": "integer" + }, + "AssociatedRoles": { + "description": "Provides a list of the AWS Identity and Access Management (IAM) roles that are associated with the DB cluster. IAM roles that are associated with a DB cluster grant permission for the DB cluster to access other Amazon Web Services on your behalf.\n Valid for: Aurora DB clusters and Multi-AZ DB clusters", + "items": { + "$ref": "#/definitions/DBClusterRole" + }, + "type": "array", + "uniqueItems": true + }, + "AutoMinorVersionUpgrade": { + "description": "Specifies whether minor engine upgrades are applied automatically to the DB cluster during the maintenance window. By default, minor engine upgrades are applied automatically.\n Valid for Cluster Type: Aurora DB clusters and Multi-AZ DB cluster", + "type": "boolean" + }, + "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](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Concepts.RegionsAndAvailabilityZones.html) in the *Amazon Aurora User Guide*. \n Valid for: Aurora DB clusters only", + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "BacktrackWindow": { + "description": "The target backtrack window, in seconds. To disable backtracking, set this value to ``0``.\n Valid for Cluster Type: Aurora MySQL DB clusters only\n Default: ``0`` \n Constraints:\n + If specified, this value must be set to a number from 0 to 259,200 (72 hours).", + "minimum": 0, + "type": "integer" + }, + "BackupRetentionPeriod": { + "default": 1, + "description": "The number of days for which automated backups are retained.\n Default: 1\n Constraints:\n + Must be a value from 1 to 35\n \n Valid for: Aurora DB clusters and Multi-AZ DB clusters", + "minimum": 1, + "type": "integer" + }, + "ClusterScalabilityType": { + "description": "Specifies the scalability mode of the Aurora DB cluster. When set to ``limitless``, the cluster operates as an Aurora Limitless Database, allowing you to create a DB shard group for horizontal scaling (sharding) capabilities. When set to ``standard`` (the default), the cluster uses normal DB instance creation.", + "type": "string" + }, + "CopyTagsToSnapshot": { + "description": "A value that indicates whether to copy all tags from the DB cluster to snapshots of the DB cluster. The default is not to copy them.\n Valid for: Aurora DB clusters and Multi-AZ DB clusters", + "type": "boolean" + }, + "DBClusterArn": { + "description": "", + "type": "string" + }, + "DBClusterIdentifier": { + "description": "The DB cluster identifier. This parameter is stored as a lowercase string.\n Constraints:\n + Must contain from 1 to 63 letters, numbers, or hyphens.\n + First character must be a letter.\n + Can't end with a hyphen or contain two consecutive hyphens.\n \n Example: ``my-cluster1`` \n Valid for: Aurora DB clusters and Multi-AZ DB clusters", + "maxLength": 63, + "minLength": 1, + "pattern": "^[a-zA-Z]{1}(?:-?[a-zA-Z0-9]){0,62}$", + "type": "string" + }, + "DBClusterInstanceClass": { + "description": "The compute and memory capacity of each DB instance in the Multi-AZ DB cluster, for example ``db.m6gd.xlarge``. Not all DB instance classes are available in all AWS-Regions, or for all database engines.\n For the full list of DB instance classes and availability for your engine, see [DB instance class](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Concepts.DBInstanceClass.html) in the *Amazon RDS User Guide*.\n This setting is required to create a Multi-AZ DB cluster.\n Valid for Cluster Type: Multi-AZ DB clusters only", + "type": "string" + }, + "DBClusterParameterGroupName": { + "description": "The name of the DB cluster parameter group to associate with this DB cluster.\n If you apply a parameter group to an existing DB cluster, then its DB instances might need to reboot. This can result in an outage while the DB instances are rebooting.\n If you apply a change to parameter group associated with a stopped DB cluster, then the update stack waits until the DB cluster is started.\n To list all of the available DB cluster parameter group names, use the following command:\n ``aws rds describe-db-cluster-parameter-groups --query \"DBClusterParameterGroups[].DBClusterParameterGroupName\" --output text`` \n Valid for: Aurora DB clusters and Multi-AZ DB clusters", + "type": "string" + }, + "DBClusterResourceId": { + "description": "", + "type": "string" + }, + "DBInstanceParameterGroupName": { + "description": "The name of the DB parameter group to apply to all instances of the DB cluster.\n When you apply a parameter group using the ``DBInstanceParameterGroupName`` parameter, the DB cluster isn't rebooted automatically. Also, parameter changes are applied immediately rather than during the next maintenance window.\n Valid for Cluster Type: Aurora DB clusters only\n Default: The existing name setting\n Constraints:\n + The DB parameter group must be in the same DB parameter group family as this DB cluster.\n + The ``DBInstanceParameterGroupName`` parameter is valid in combination with the ``AllowMajorVersionUpgrade`` parameter for a major version upgrade only.", + "type": "string" + }, + "DBSubnetGroupName": { + "description": "A DB subnet group that you want to associate with this DB cluster. \n If you are restoring a DB cluster to a point in time with ``RestoreType`` set to ``copy-on-write``, and don't specify a DB subnet group name, then the DB cluster is restored with a default DB subnet group.\n Valid for: Aurora DB clusters and Multi-AZ DB clusters", + "type": "string" + }, + "DBSystemId": { + "description": "Reserved for future use.", + "type": "string" + }, + "DatabaseInsightsMode": { + "description": "The mode of Database Insights to enable for the DB cluster.\n If you set this value to ``advanced``, you must also set the ``PerformanceInsightsEnabled`` parameter to ``true`` and the ``PerformanceInsightsRetentionPeriod`` parameter to 465.\n Valid for Cluster Type: Aurora DB clusters and Multi-AZ DB clusters", + "type": "string" + }, + "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](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/CHAP_Limits.html#RDS_Limits.Constraints) in the *Amazon Aurora User Guide*. \n Valid for: Aurora DB clusters and Multi-AZ DB clusters", + "type": "string" + }, + "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.\n Valid for: Aurora DB clusters and Multi-AZ DB clusters", + "type": "boolean" + }, + "Domain": { + "description": "Indicates the directory ID of the Active Directory to create the DB cluster.\n For Amazon Aurora DB clusters, Amazon RDS can use Kerberos authentication to authenticate users that connect to the DB cluster.\n For more information, see [Kerberos authentication](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/kerberos-authentication.html) in the *Amazon Aurora User Guide*.\n Valid for: Aurora DB clusters only", + "type": "string" + }, + "DomainIAMRoleName": { + "description": "Specifies the name of the IAM role to use when making API calls to the Directory Service.\n Valid for: Aurora DB clusters only", + "type": "string" + }, + "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](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/USER_LogAccess.html#USER_LogAccess.Procedural.UploadtoCloudWatch) in the *Amazon Aurora User Guide*.\n *Aurora MySQL* \n Valid values: ``audit``, ``error``, ``general``, ``slowquery`` \n *Aurora PostgreSQL* \n Valid values: ``postgresql`` \n Valid for: Aurora DB clusters and Multi-AZ DB clusters", + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "EnableGlobalWriteForwarding": { + "description": "Specifies whether to enable this DB cluster to forward write operations to the primary cluster of a global cluster (Aurora global database). By default, write operations are not allowed on Aurora DB clusters that are secondary clusters in an Aurora global database.\n You can set this value only on Aurora DB clusters that are members of an Aurora global database. With this parameter enabled, a secondary cluster can forward writes to the current primary cluster, and the resulting changes are replicated back to this cluster. For the primary DB cluster of an Aurora global database, this value is used immediately if the primary is demoted by a global cluster API operation, but it does nothing until then.\n Valid for Cluster Type: Aurora DB clusters only", + "type": "boolean" + }, + "EnableHttpEndpoint": { + "description": "Specifies whether to enable the HTTP endpoint for the DB cluster. By default, the HTTP endpoint isn't enabled.\n When enabled, the HTTP endpoint provides a connectionless web service API (RDS Data API) for running SQL queries on the DB cluster. You can also query your database from inside the RDS console with the RDS query editor.\n For more information, see [Using RDS Data API](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/data-api.html) in the *Amazon Aurora User Guide*.\n Valid for Cluster Type: Aurora DB clusters only", + "type": "boolean" + }, + "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.\n For more information, see [IAM Database Authentication](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/UsingWithRDS.IAMDBAuth.html) in the *Amazon Aurora User Guide.* \n Valid for: Aurora DB clusters only", + "type": "boolean" + }, + "EnableLocalWriteForwarding": { + "description": "Specifies whether read replicas can forward write operations to the writer DB instance in the DB cluster. By default, write operations aren't allowed on reader DB instances.\n Valid for: Aurora DB clusters only", + "type": "boolean" + }, + "Endpoint": { + "$ref": "#/definitions/Endpoint", + "description": "" + }, + "Engine": { + "description": "The name of the database engine to be used for this DB cluster.\n Valid Values:\n + ``aurora-mysql`` \n + ``aurora-postgresql`` \n + ``mysql`` \n + ``postgres`` \n \n Valid for: Aurora DB clusters and Multi-AZ DB clusters", + "type": "string" + }, + "EngineLifecycleSupport": { + "description": "The life cycle type for this DB cluster.\n By default, this value is set to ``open-source-rds-extended-support``, which enrolls your DB cluster into Amazon RDS Extended Support. At the end of standard support, you can avoid charges for Extended Support by setting the value to ``open-source-rds-extended-support-disabled``. In this case, creating the DB cluster will fail if the DB major version is past its end of standard support date.\n You can use this setting to enroll your DB cluster into Amazon RDS Extended Support. With RDS Extended Support, you can run the selected major engine version on your DB cluster past the end of standard support for that engine version. For more information, see the following sections:\n + Amazon Aurora - [Using Amazon RDS Extended Support](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/extended-support.html) in the *Amazon Aurora User Guide* \n + Amazon RDS - [Using Amazon RDS Extended Support](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/extended-support.html) in the *Amazon RDS User Guide* \n \n Valid for Cluster Type: Aurora DB clusters and Multi-AZ DB clusters\n Valid Values: ``open-source-rds-extended-support | open-source-rds-extended-support-disabled`` \n Default: ``open-source-rds-extended-support``", + "type": "string" + }, + "EngineMode": { + "description": "The DB engine mode of the DB cluster, either ``provisioned`` or ``serverless``.\n The ``serverless`` engine mode only applies for Aurora Serverless v1 DB clusters. Aurora Serverless v2 DB clusters use the ``provisioned`` engine mode.\n For information about limitations and requirements for Serverless DB clusters, see the following sections in the *Amazon Aurora User Guide*:\n + [Limitations of Aurora Serverless v1](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/aurora-serverless.html#aurora-serverless.limitations) \n + [Requirements for Aurora Serverless v2](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/aurora-serverless-v2.requirements.html) \n \n Valid for Cluster Type: Aurora DB clusters only", + "type": "string" + }, + "EngineVersion": { + "description": "The version number of the database engine to use.\n To list all of the available engine versions for Aurora MySQL version 2 (5.7-compatible) and version 3 (8.0-compatible), use the following command:\n ``aws rds describe-db-engine-versions --engine aurora-mysql --query \"DBEngineVersions[].EngineVersion\"`` \n You can supply either ``5.7`` or ``8.0`` to use the default engine version for Aurora MySQL version 2 or version 3, respectively.\n To list all of the available engine versions for Aurora PostgreSQL, use the following command:\n ``aws rds describe-db-engine-versions --engine aurora-postgresql --query \"DBEngineVersions[].EngineVersion\"`` \n To list all of the available engine versions for RDS for MySQL, use the following command:\n ``aws rds describe-db-engine-versions --engine mysql --query \"DBEngineVersions[].EngineVersion\"`` \n To list all of the available engine versions for RDS for PostgreSQL, use the following command:\n ``aws rds describe-db-engine-versions --engine postgres --query \"DBEngineVersions[].EngineVersion\"`` \n *Aurora MySQL* \n For information, see [Database engine updates for Amazon Aurora MySQL](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/AuroraMySQL.Updates.html) in the *Amazon Aurora User Guide*.\n *Aurora PostgreSQL* \n For information, see [Amazon Aurora PostgreSQL releases and engine versions](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/AuroraPostgreSQL.Updates.20180305.html) in the *Amazon Aurora User Guide*.\n *MySQL* \n For information, see [Amazon RDS for MySQL](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_MySQL.html#MySQL.Concepts.VersionMgmt) in the *Amazon RDS User Guide*.\n *PostgreSQL* \n For information, see [Amazon RDS for PostgreSQL](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_PostgreSQL.html#PostgreSQL.Concepts) in the *Amazon RDS User Guide*.\n Valid for: Aurora DB clusters and Multi-AZ DB clusters", + "type": "string" + }, + "GlobalClusterIdentifier": { + "description": "If you are configuring an Aurora global database cluster and want your Aurora DB cluster to be a secondary member in the global database cluster, specify the global cluster ID of the global database cluster. To define the primary database cluster of the global cluster, use the [AWS::RDS::GlobalCluster](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-globalcluster.html) resource. \n If you aren't configuring a global database cluster, don't specify this property. \n To remove the DB cluster from a global database cluster, specify an empty value for the ``GlobalClusterIdentifier`` property.\n For information about Aurora global databases, see [Working with Amazon Aurora Global Databases](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/aurora-global-database.html) in the *Amazon Aurora User Guide*.\n Valid for: Aurora DB clusters only", + "maxLength": 63, + "minLength": 0, + "pattern": "^$|^[a-zA-Z]{1}(?:-?[a-zA-Z0-9]){0,62}$", + "type": "string" + }, + "Iops": { + "description": "The amount of Provisioned IOPS (input/output operations per second) to be initially allocated for each DB instance in the Multi-AZ DB cluster.\n For information about valid IOPS values, see [Provisioned IOPS storage](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Storage.html#USER_PIOPS) in the *Amazon RDS User Guide*.\n This setting is required to create a Multi-AZ DB cluster.\n Valid for Cluster Type: Multi-AZ DB clusters only\n Constraints:\n + Must be a multiple between .5 and 50 of the storage amount for the DB cluster.", + "type": "integer" + }, + "KmsKeyId": { + "description": "The Amazon Resource Name (ARN) of the AWS KMS 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 KMS key is used. If you specify this property, you must set the ``StorageEncrypted`` property to ``true``.\n If you specify the ``SnapshotIdentifier`` property, the ``StorageEncrypted`` property value is inherited from the snapshot, and if the DB cluster is encrypted, the specified ``KmsKeyId`` property is used.\n If you create a read replica of an encrypted DB cluster in another AWS Region, make sure to set ``KmsKeyId`` to a KMS key identifier that is valid in the destination AWS Region. This KMS key is used to encrypt the read replica in that AWS Region.\n Valid for: Aurora DB clusters and Multi-AZ DB clusters", + "type": "string" + }, + "ManageMasterUserPassword": { + "description": "Specifies whether to manage the master user password with AWS Secrets Manager.\n For more information, see [Password management with Secrets Manager](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/rds-secrets-manager.html) in the *Amazon RDS User Guide* and [Password management with Secrets Manager](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/rds-secrets-manager.html) in the *Amazon Aurora User Guide.* \n Valid for Cluster Type: Aurora DB clusters and Multi-AZ DB clusters\n Constraints:\n + Can't manage the master user password with AWS Secrets Manager if ``MasterUserPassword`` is specified.", + "type": "boolean" + }, + "MasterUserPassword": { + "description": "The master password for the DB instance.\n If you specify the ``SourceDBClusterIdentifier``, ``SnapshotIdentifier``, or ``GlobalClusterIdentifier`` property, don't specify this property. The value is inherited from the source DB cluster, the snapshot, or the primary DB cluster for the global database cluster, respectively.\n Valid for: Aurora DB clusters and Multi-AZ DB clusters", + "type": "string" + }, + "MasterUserSecret": { + "$ref": "#/definitions/MasterUserSecret", + "description": "The secret managed by RDS in AWS Secrets Manager for the master user password.\n When you restore a DB cluster from a snapshot, Amazon RDS generates a new secret instead of reusing the secret specified in the ``SecretArn`` property. This ensures that the restored DB cluster is securely managed with a dedicated secret. To maintain consistent integration with your application, you might need to update resource configurations to reference the newly created secret.\n For more information, see [Password management with Secrets Manager](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/rds-secrets-manager.html) in the *Amazon RDS User Guide* and [Password management with Secrets Manager](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/rds-secrets-manager.html) in the *Amazon Aurora User Guide.*" + }, + "MasterUsername": { + "description": "The name of the master user for the DB cluster.\n If you specify the ``SourceDBClusterIdentifier``, ``SnapshotIdentifier``, or ``GlobalClusterIdentifier`` property, don't specify this property. The value is inherited from the source DB cluster, the snapshot, or the primary DB cluster for the global database cluster, respectively.\n Valid for: Aurora DB clusters and Multi-AZ DB clusters", + "minLength": 1, + "pattern": "^[a-zA-Z]{1}[a-zA-Z0-9_]*$", + "type": "string" + }, + "MonitoringInterval": { + "description": "The interval, in seconds, between points when Enhanced Monitoring metrics are collected for the DB cluster. To turn off collecting Enhanced Monitoring metrics, specify ``0``.\n If ``MonitoringRoleArn`` is specified, also set ``MonitoringInterval`` to a value other than ``0``.\n Valid for Cluster Type: Aurora DB clusters and Multi-AZ DB clusters\n Valid Values: ``0 | 1 | 5 | 10 | 15 | 30 | 60`` \n Default: ``0``", + "type": "integer" + }, + "MonitoringRoleArn": { + "description": "The Amazon Resource Name (ARN) for the IAM role that permits RDS to send Enhanced Monitoring metrics to Amazon CloudWatch Logs. An example is ``arn:aws:iam:123456789012:role/emaccess``. For information on creating a monitoring role, see [Setting up and enabling Enhanced Monitoring](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Monitoring.OS.html#USER_Monitoring.OS.Enabling) in the *Amazon RDS User Guide*.\n If ``MonitoringInterval`` is set to a value other than ``0``, supply a ``MonitoringRoleArn`` value.\n Valid for Cluster Type: Aurora DB clusters and Multi-AZ DB clusters", + "type": "string" + }, + "NetworkType": { + "description": "The network type of the DB cluster.\n Valid values:\n + ``IPV4`` \n + ``DUAL`` \n \n The network type is determined by the ``DBSubnetGroup`` specified for the DB cluster. A ``DBSubnetGroup`` can support only the IPv4 protocol or the IPv4 and IPv6 protocols (``DUAL``).\n For more information, see [Working with a DB instance in a VPC](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/USER_VPC.WorkingWithRDSInstanceinaVPC.html) in the *Amazon Aurora User Guide.* \n Valid for: Aurora DB clusters only", + "type": "string" + }, + "PerformanceInsightsEnabled": { + "description": "Specifies whether to turn on Performance Insights for the DB cluster.\n For more information, see [Using Amazon Performance Insights](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_PerfInsights.html) in the *Amazon RDS User Guide*.\n Valid for Cluster Type: Aurora DB clusters and Multi-AZ DB clusters", + "type": "boolean" + }, + "PerformanceInsightsKmsKeyId": { + "description": "The AWS KMS key identifier for encryption of Performance Insights data.\n The AWS KMS key identifier is the key ARN, key ID, alias ARN, or alias name for the KMS key.\n If you don't specify a value for ``PerformanceInsightsKMSKeyId``, then Amazon RDS uses your default KMS key. There is a default KMS key for your AWS-account. Your AWS-account has a different default KMS key for each AWS-Region.\n Valid for Cluster Type: Aurora DB clusters and Multi-AZ DB clusters", + "type": "string" + }, + "PerformanceInsightsRetentionPeriod": { + "description": "The number of days to retain Performance Insights data. When creating a DB cluster without enabling Performance Insights, you can't specify the parameter ``PerformanceInsightsRetentionPeriod``.\n Valid for Cluster Type: Aurora DB clusters and Multi-AZ DB clusters\n Valid Values:\n + ``7`` \n + *month* * 31, where *month* is a number of months from 1-23. Examples: ``93`` (3 months * 31), ``341`` (11 months * 31), ``589`` (19 months * 31)\n + ``731`` \n \n Default: ``7`` days\n If you specify a retention period that isn't valid, such as ``94``, Amazon RDS issues an error.", + "type": "integer" + }, + "Port": { + "description": "The port number on which the DB instances in the DB cluster accept connections.\n Default:\n + When ``EngineMode`` is ``provisioned``, ``3306`` (for both Aurora MySQL and Aurora PostgreSQL)\n + When ``EngineMode`` is ``serverless``:\n + ``3306`` when ``Engine`` is ``aurora`` or ``aurora-mysql`` \n + ``5432`` when ``Engine`` is ``aurora-postgresql`` \n \n \n The ``No interruption`` on update behavior only applies to DB clusters. If you are updating a DB instance, see [Port](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-database-instance.html#cfn-rds-dbinstance-port) for the AWS::RDS::DBInstance resource.\n Valid for: Aurora DB clusters and Multi-AZ DB clusters", + "type": "integer" + }, + "PreferredBackupWindow": { + "description": "The daily time range during which automated backups are created. For more information, see [Backup Window](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Aurora.Managing.Backups.html#Aurora.Managing.Backups.BackupWindow) in the *Amazon Aurora User Guide.* \n Constraints:\n + Must be in the format ``hh24:mi-hh24:mi``.\n + Must be in Universal Coordinated Time (UTC).\n + Must not conflict with the preferred maintenance window.\n + Must be at least 30 minutes.\n \n Valid for: Aurora DB clusters and Multi-AZ DB clusters", + "type": "string" + }, + "PreferredMaintenanceWindow": { + "description": "The weekly time range during which system maintenance can occur, in Universal Coordinated Time (UTC).\n Format: ``ddd:hh24:mi-ddd:hh24:mi`` \n The default is a 30-minute window selected at random from an 8-hour block of time for each AWS Region, occurring on a random day of the week. To see the time blocks available, see [Maintaining an Amazon Aurora DB cluster](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/USER_UpgradeDBInstance.Maintenance.html#AdjustingTheMaintenanceWindow.Aurora) in the *Amazon Aurora User Guide.* \n Valid Days: Mon, Tue, Wed, Thu, Fri, Sat, Sun.\n Constraints: Minimum 30-minute window.\n Valid for: Aurora DB clusters and Multi-AZ DB clusters", + "type": "string" + }, + "PubliclyAccessible": { + "description": "Specifies whether the DB cluster is publicly accessible.\n When the DB cluster is publicly accessible and you connect from outside of the DB cluster's virtual private cloud (VPC), its Domain Name System (DNS) endpoint resolves to the public IP address. When you connect from within the same VPC as the DB cluster, the endpoint resolves to the private IP address. Access to the DB cluster is ultimately controlled by the security group it uses. That public access isn't permitted if the security group assigned to the DB cluster doesn't permit it.\n When the DB cluster isn't publicly accessible, it is an internal DB cluster with a DNS name that resolves to a private IP address.\n Valid for Cluster Type: Multi-AZ DB clusters only\n Default: The default behavior varies depending on whether ``DBSubnetGroupName`` is specified.\n If ``DBSubnetGroupName`` isn't specified, and ``PubliclyAccessible`` isn't specified, the following applies:\n + If the default VPC in the target Region doesn\u2019t have an internet gateway attached to it, the DB cluster is private.\n + If the default VPC in the target Region has an internet gateway attached to it, the DB cluster is public.\n \n If ``DBSubnetGroupName`` is specified, and ``PubliclyAccessible`` isn't specified, the following applies:\n + If the subnets are part of a VPC that doesn\u2019t have an internet gateway attached to it, the DB cluster is private.\n + If the subnets are part of a VPC that has an internet gateway attached to it, the DB cluster is public.", + "type": "boolean" + }, + "ReadEndpoint": { + "$ref": "#/definitions/ReadEndpoint", + "description": "" + }, + "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.\n Valid for: Aurora DB clusters only", + "type": "string" + }, + "RestoreToTime": { + "description": "The date and time to restore the DB cluster to.\n Valid Values: Value must be a time in Universal Coordinated Time (UTC) format\n Constraints:\n + Must be before the latest restorable time for the DB instance\n + Must be specified if ``UseLatestRestorableTime`` parameter isn't provided\n + Can't be specified if the ``UseLatestRestorableTime`` parameter is enabled\n + Can't be specified if the ``RestoreType`` parameter is ``copy-on-write`` \n \n This property must be used with ``SourceDBClusterIdentifier`` property. The resulting cluster will have the identifier that matches the value of the ``DBclusterIdentifier`` property.\n Example: ``2015-03-07T23:45:00Z`` \n Valid for: Aurora DB clusters and Multi-AZ DB clusters", + "type": "string" + }, + "RestoreType": { + "description": "The type of restore to be performed. You can specify one of the following values:\n + ``full-copy`` - The new DB cluster is restored as a full copy of the source DB cluster.\n + ``copy-on-write`` - The new DB cluster is restored as a clone of the source DB cluster.\n \n If you don't specify a ``RestoreType`` value, then the new DB cluster is restored as a full copy of the source DB cluster.\n Valid for: Aurora DB clusters and Multi-AZ DB clusters", + "type": "string" + }, + "ScalingConfiguration": { + "$ref": "#/definitions/ScalingConfiguration", + "description": "The scaling configuration of an Aurora Serverless v1 DB cluster.\n This property is only supported for Aurora Serverless v1. For Aurora Serverless v2, Use the ``ServerlessV2ScalingConfiguration`` property.\n Valid for: Aurora Serverless v1 DB clusters only" + }, + "ServerlessV2ScalingConfiguration": { + "$ref": "#/definitions/ServerlessV2ScalingConfiguration", + "description": "The scaling configuration of an Aurora Serverless V2 DB cluster. \n This property is only supported for Aurora Serverless v2. For Aurora Serverless v1, Use the ``ScalingConfiguration`` property.\n Valid for: Aurora Serverless v2 DB clusters only" + }, + "SnapshotIdentifier": { + "description": "The identifier for the DB snapshot or DB cluster snapshot to restore from.\n You can use either the name or the Amazon Resource Name (ARN) to specify a DB cluster snapshot. However, you can use only the ARN to specify a DB snapshot.\n After you restore a DB cluster with a ``SnapshotIdentifier`` property, you must specify the same ``SnapshotIdentifier`` property for any future updates to the DB cluster. When you specify this property for an update, the DB cluster is not restored from the snapshot again, and the data in the database is not changed. However, if you don't specify the ``SnapshotIdentifier`` property, an empty DB cluster is created, and the original DB cluster is deleted. If you specify a property that is different from the previous snapshot restore property, a new DB cluster is restored from the specified ``SnapshotIdentifier`` property, and the original DB cluster is deleted.\n If you specify the ``SnapshotIdentifier`` property to restore a DB cluster (as opposed to specifying it for DB cluster updates), then don't specify the following properties:\n + ``GlobalClusterIdentifier`` \n + ``MasterUsername`` \n + ``MasterUserPassword`` \n + ``ReplicationSourceIdentifier`` \n + ``RestoreType`` \n + ``SourceDBClusterIdentifier`` \n + ``SourceRegion`` \n + ``StorageEncrypted`` (for an encrypted snapshot)\n + ``UseLatestRestorableTime`` \n \n Constraints:\n + Must match the identifier of an existing Snapshot.\n \n Valid for: Aurora DB clusters and Multi-AZ DB clusters", + "type": "string" + }, + "SourceDBClusterIdentifier": { + "description": "When restoring a DB cluster to a point in time, the identifier of the source DB cluster from which to restore.\n Constraints:\n + Must match the identifier of an existing DBCluster.\n \n Valid for: Aurora DB clusters and Multi-AZ DB clusters", + "type": "string" + }, + "SourceRegion": { + "description": "The AWS Region which contains the source DB cluster when replicating a DB cluster. For example, ``us-east-1``. \n Valid for: Aurora DB clusters only", + "type": "string" + }, + "StorageEncrypted": { + "description": "Indicates whether the DB cluster is encrypted.\n If you specify the ``KmsKeyId`` property, then you must enable encryption.\n If you specify the ``SourceDBClusterIdentifier`` property, don't specify this property. The value is inherited from the source DB cluster, and if the DB cluster is encrypted, the specified ``KmsKeyId`` property is used.\n If you specify the ``SnapshotIdentifier`` and the specified snapshot is encrypted, don't specify this property. The value is inherited from the snapshot, and the specified ``KmsKeyId`` property is used.\n If you specify the ``SnapshotIdentifier`` and the specified snapshot isn't encrypted, you can use this property to specify that the restored DB cluster is encrypted. Specify the ``KmsKeyId`` property for the KMS key to use for encryption. If you don't want the restored DB cluster to be encrypted, then don't set this property or set it to ``false``.\n If you specify both the ``StorageEncrypted`` and ``SnapshotIdentifier`` properties without specifying the ``KmsKeyId`` property, then the restored DB cluster inherits the encryption settings from the DB snapshot that provide.\n Valid for: Aurora DB clusters and Multi-AZ DB clusters", + "type": "boolean" + }, + "StorageThroughput": { + "description": "", + "type": "integer" + }, + "StorageType": { + "description": "The storage type to associate with the DB cluster.\n For information on storage types for Aurora DB clusters, see [Storage configurations for Amazon Aurora DB clusters](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Aurora.Overview.StorageReliability.html#aurora-storage-type). For information on storage types for Multi-AZ DB clusters, see [Settings for creating Multi-AZ DB clusters](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/create-multi-az-db-cluster.html#create-multi-az-db-cluster-settings).\n This setting is required to create a Multi-AZ DB cluster.\n When specified for a Multi-AZ DB cluster, a value for the ``Iops`` parameter is required.\n Valid for Cluster Type: Aurora DB clusters and Multi-AZ DB clusters\n Valid Values:\n + Aurora DB clusters - ``aurora | aurora-iopt1`` \n + Multi-AZ DB clusters - ``io1 | io2 | gp3`` \n \n Default:\n + Aurora DB clusters - ``aurora`` \n + Multi-AZ DB clusters - ``io1`` \n \n When you create an Aurora DB cluster with the storage type set to ``aurora-iopt1``, the storage type is returned in the response. The storage type isn't returned when you set it to ``aurora``.", + "type": "string" + }, + "Tags": { + "description": "Tags to assign to the DB cluster.\n Valid for Cluster Type: Aurora DB clusters and Multi-AZ DB clusters", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "type": "array", + "uniqueItems": true + }, + "UseLatestRestorableTime": { + "description": "A value that indicates whether to restore the DB cluster to the latest restorable backup time. By default, the DB cluster is not restored to the latest restorable backup time. \n Valid for: Aurora DB clusters and Multi-AZ DB clusters", + "type": "boolean" + }, + "VpcSecurityGroupIds": { + "description": "A list of EC2 VPC security groups to associate with this DB cluster.\n If you plan to update the resource, don't specify VPC security groups in a shared VPC.\n Valid for: Aurora DB clusters and Multi-AZ DB clusters", + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + } + }, + "propertyTransform": { + "/properties/DBClusterIdentifier": "$lowercase(DBClusterIdentifier)", + "/properties/DBClusterParameterGroupName": "$lowercase(DBClusterParameterGroupName)", + "/properties/DBSubnetGroupName": "$lowercase(DBSubnetGroupName)", + "/properties/EnableHttpEndpoint": "$lowercase($string(EngineMode)) = 'serverless' ? EnableHttpEndpoint : ($lowercase($string(Engine)) in ['aurora-postgresql', 'aurora-mysql'] ? EnableHttpEndpoint : false )", + "/properties/Engine": "$lowercase(Engine)", + "/properties/EngineVersion": "$join([$string(EngineVersion), \".*\"])", + "/properties/KmsKeyId": "$join([\"arn:.+?:kms:.+?:.+?:key\\/\", KmsKeyId])", + "/properties/MasterUserSecret/KmsKeyId": "$join([\"arn:.+?:kms:.+?:.+?:key\\/\", MasterUserSecret.KmsKeyId])", + "/properties/NetworkType": "$lowercase(NetworkType)", + "/properties/PerformanceInsightsKmsKeyId": "$join([\"arn:.+?:kms:.+?:.+?:key\\/\", PerformanceInsightsKmsKeyId])", + "/properties/PreferredMaintenanceWindow": "$lowercase(PreferredMaintenanceWindow)", + "/properties/SnapshotIdentifier": "$lowercase(SnapshotIdentifier)", + "/properties/SourceDBClusterIdentifier": "$lowercase(SourceDBClusterIdentifier)", + "/properties/StorageType": "$lowercase(StorageType)" + }, + "readOnlyProperties": [ + "/properties/DBClusterArn", + "/properties/DBClusterResourceId", + "/properties/Endpoint", + "/properties/Endpoint/Address", + "/properties/Endpoint/Port", + "/properties/ReadEndpoint", + "/properties/ReadEndpoint/Address", + "/properties/MasterUserSecret/SecretArn", + "/properties/StorageThroughput" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-rds", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "rds:AddTagsToResource", + "rds:RemoveTagsFromResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::RDS::DBCluster", + "writeOnlyProperties": [ + "/properties/ClusterScalabilityType", + "/properties/DBInstanceParameterGroupName", + "/properties/MasterUserPassword", + "/properties/RestoreToTime", + "/properties/RestoreType", + "/properties/SnapshotIdentifier", + "/properties/SourceDBClusterIdentifier", + "/properties/SourceRegion", + "/properties/UseLatestRestorableTime" + ] +} diff --git a/src/schema/aws-rds-dbclusterparametergroup.json b/src/schema/aws-rds-dbclusterparametergroup.json new file mode 100644 index 00000000..75cefe8f --- /dev/null +++ b/src/schema/aws-rds-dbclusterparametergroup.json @@ -0,0 +1,134 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/DBClusterParameterGroupName", + "/properties/Description", + "/properties/Family" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "description": "Metadata assigned to an Amazon RDS resource consisting of a key-value pair.\n For more information, see [Tagging Amazon RDS resources](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Tagging.html) in the *Amazon RDS User Guide* or [Tagging Amazon Aurora and Amazon RDS resources](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/USER_Tagging.html) in the *Amazon Aurora User Guide*.", + "properties": { + "Key": { + "description": "A key is the required name of the tag. The string value can be from 1 to 128 Unicode characters in length and can't be prefixed with ``aws:`` or ``rds:``. The string can only contain only the set of Unicode letters, digits, white-space, '_', '.', ':', '/', '=', '+', '-', '@' (Java regex: \"^([\\\\p{L}\\\\p{Z}\\\\p{N}_.:/=+\\\\-@]*)$\").", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "A value is the optional value of the tag. The string value can be from 1 to 256 Unicode characters in length and can't be prefixed with ``aws:`` or ``rds:``. The string can only contain only the set of Unicode letters, digits, white-space, '_', '.', ':', '/', '=', '+', '-', '@' (Java regex: \"^([\\\\p{L}\\\\p{Z}\\\\p{N}_.:/=+\\\\-@]*)$\").", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key" + ], + "type": "object" + } + }, + "description": "The ``AWS::RDS::DBClusterParameterGroup`` resource creates a new Amazon RDS DB cluster parameter group.\n For information about configuring parameters for Amazon Aurora DB clusters, see [Working with parameter groups](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/USER_WorkingWithParamGroups.html) in the *Amazon Aurora User Guide*.\n If you apply a parameter group to a DB cluster, then its DB instances might need to reboot. This can result in an outage while the DB instances are rebooting.\n If you apply a change to parameter group associated with a stopped DB cluster, then the updated stack waits until the DB cluster is started.", + "handlers": { + "create": { + "permissions": [ + "iam:CreateServiceLinkedRole", + "rds:AddTagsToResource", + "rds:CreateDBClusterParameterGroup", + "rds:DescribeDBClusterParameterGroups", + "rds:DescribeDBClusterParameters", + "rds:DescribeDBClusters", + "rds:DescribeEngineDefaultClusterParameters", + "rds:ListTagsForResource", + "rds:ModifyDBClusterParameterGroup", + "rds:RemoveTagsFromResource" + ], + "timeoutInMinutes": 180 + }, + "delete": { + "permissions": [ + "rds:DeleteDBClusterParameterGroup" + ] + }, + "list": { + "permissions": [ + "rds:DescribeDBClusterParameterGroups" + ] + }, + "read": { + "permissions": [ + "rds:DescribeDBClusterParameterGroups", + "rds:DescribeDBClusterParameters", + "rds:DescribeEngineDefaultClusterParameters", + "rds:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "rds:AddTagsToResource", + "rds:DescribeDBClusterParameterGroups", + "rds:DescribeDBClusterParameters", + "rds:DescribeDBClusters", + "rds:DescribeEngineDefaultClusterParameters", + "rds:ListTagsForResource", + "rds:ModifyDBClusterParameterGroup", + "rds:RemoveTagsFromResource", + "rds:ResetDBClusterParameterGroup" + ], + "timeoutInMinutes": 180 + } + }, + "primaryIdentifier": [ + "/properties/DBClusterParameterGroupName" + ], + "properties": { + "DBClusterParameterGroupName": { + "description": "The name of the DB cluster parameter group.\n Constraints:\n + Must not match the name of an existing DB cluster parameter group.\n \n This value is stored as a lowercase string.", + "pattern": "^[a-zA-Z]{1}(?:-?[a-zA-Z0-9])*$", + "type": "string" + }, + "Description": { + "description": "The description for the DB cluster parameter group.", + "type": "string" + }, + "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 database engine and engine version compatible with that DB cluster parameter group family.\n *Aurora MySQL* \n Example: ``aurora-mysql5.7``, ``aurora-mysql8.0`` \n *Aurora PostgreSQL* \n Example: ``aurora-postgresql14`` \n *RDS for MySQL* \n Example: ``mysql8.0`` \n *RDS for PostgreSQL* \n Example: ``postgres13`` \n To list all of the available parameter group families for a DB engine, use the following command:\n ``aws rds describe-db-engine-versions --query \"DBEngineVersions[].DBParameterGroupFamily\" --engine