{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://catalog.lintel.tools/schemas/schemastore/serverless-framework-configuration/_shared/latest--aws-cassandra-table.json",
  "title": "AWSCassandraTableProperties",
  "description": "Resource schema for AWS::Cassandra::Table. Source:- No source definition found, add manually please",
  "x-lintel": {
    "source": "https://raw.githubusercontent.com/lalcebo/json-schema/master/serverless/resources/cloudformation-modified/aws-cassandra-table.json",
    "sourceSha256": "0e34e6f17185a4af56b92881eadf85b4ab4142f0ada0da3c5b7e82ef86071d3a"
  },
  "type": "object",
  "properties": {
    "KeyspaceName": {
      "oneOf": [
        {
          "type": "string",
          "pattern": "^[a-zA-Z0-9][a-zA-Z0-9_]{1,47}$"
        },
        {
          "$ref": "https://catalog.lintel.tools/schemas/schemastore/serverless-framework-configuration/_shared/latest--cf.functions.json#/Aws_CF_FunctionString"
        }
      ],
      "description": "Name for Cassandra keyspace"
    },
    "TableName": {
      "oneOf": [
        {
          "type": "string",
          "pattern": "^[a-zA-Z0-9][a-zA-Z0-9_]{1,47}$"
        },
        {
          "$ref": "https://catalog.lintel.tools/schemas/schemastore/serverless-framework-configuration/_shared/latest--cf.functions.json#/Aws_CF_FunctionString"
        }
      ],
      "description": "Name for Cassandra table"
    },
    "RegularColumns": {
      "description": "Non-key columns of the table",
      "type": "array",
      "uniqueItems": true,
      "insertionOrder": false,
      "items": {
        "$ref": "#/$defs/Column"
      }
    },
    "PartitionKeyColumns": {
      "description": "Partition key columns of the table",
      "type": "array",
      "minItems": 1,
      "uniqueItems": true,
      "insertionOrder": true,
      "items": {
        "$ref": "#/$defs/Column"
      }
    },
    "ClusteringKeyColumns": {
      "description": "Clustering key columns of the table",
      "type": "array",
      "uniqueItems": true,
      "insertionOrder": true,
      "items": {
        "$ref": "#/$defs/ClusteringKeyColumn"
      }
    },
    "BillingMode": {
      "$ref": "#/$defs/BillingMode"
    },
    "PointInTimeRecoveryEnabled": {
      "description": "Indicates whether point in time recovery is enabled (true) or disabled (false) on the table",
      "type": "boolean"
    },
    "ClientSideTimestampsEnabled": {
      "description": "Indicates whether client side timestamps are enabled (true) or disabled (false) on the table. False by default, once it is enabled it cannot be disabled again.",
      "type": "boolean"
    },
    "Tags": {
      "description": "An array of key-value pairs to apply to this resource",
      "type": "array",
      "uniqueItems": true,
      "items": {
        "$ref": "#/$defs/Tag"
      },
      "minItems": 0,
      "maxItems": 50
    },
    "DefaultTimeToLive": {
      "description": "Default TTL (Time To Live) in seconds, where zero is disabled. If the value is greater than zero, TTL is enabled for the entire table and an expiration timestamp is added to each column.",
      "type": "integer",
      "minimum": 0
    },
    "EncryptionSpecification": {
      "$ref": "#/$defs/EncryptionSpecification"
    }
  },
  "typeName": "AWS::Cassandra::Table",
  "primaryIdentifier": [
    "/properties/KeyspaceName",
    "/properties/TableName"
  ],
  "additionalProperties": false,
  "createOnlyProperties": [
    "/properties/KeyspaceName",
    "/properties/TableName",
    "/properties/PartitionKeyColumns",
    "/properties/ClusteringKeyColumns",
    "/properties/ClientSideTimestampsEnabled"
  ],
  "$defs": {
    "Column": {
      "type": "object",
      "properties": {
        "ColumnName": {
          "oneOf": [
            {
              "type": "string",
              "pattern": "^[a-zA-Z0-9][a-zA-Z0-9_]{1,47}$"
            },
            {
              "$ref": "https://catalog.lintel.tools/schemas/schemastore/serverless-framework-configuration/_shared/latest--cf.functions.json#/Aws_CF_FunctionString"
            }
          ]
        },
        "ColumnType": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "$ref": "https://catalog.lintel.tools/schemas/schemastore/serverless-framework-configuration/_shared/latest--cf.functions.json#/Aws_CF_FunctionString"
            }
          ]
        }
      },
      "required": [
        "ColumnName",
        "ColumnType"
      ],
      "title": "AWSCassandraTableColumnDefinition",
      "additionalProperties": false
    },
    "ClusteringKeyColumn": {
      "type": "object",
      "properties": {
        "Column": {
          "$ref": "#/$defs/Column"
        },
        "OrderBy": {
          "oneOf": [
            {
              "type": "string",
              "enum": [
                "ASC",
                "DESC"
              ],
              "default": "ASC"
            },
            {
              "$ref": "https://catalog.lintel.tools/schemas/schemastore/serverless-framework-configuration/_shared/latest--cf.functions.json#/Aws_CF_FunctionString"
            }
          ]
        }
      },
      "title": "AWSCassandraTableClusteringKeyColumnDefinition",
      "required": [
        "Column"
      ],
      "additionalProperties": false
    },
    "ProvisionedThroughput": {
      "description": "Throughput for the specified table, which consists of values for ReadCapacityUnits and WriteCapacityUnits",
      "type": "object",
      "properties": {
        "ReadCapacityUnits": {
          "type": "integer",
          "minimum": 1
        },
        "WriteCapacityUnits": {
          "type": "integer",
          "minimum": 1
        }
      },
      "title": "AWSCassandraTableProvisionedThroughputDefinition",
      "required": [
        "ReadCapacityUnits",
        "WriteCapacityUnits"
      ],
      "additionalProperties": false
    },
    "Mode": {
      "oneOf": [
        {
          "type": "string",
          "enum": [
            "PROVISIONED",
            "ON_DEMAND"
          ],
          "default": "ON_DEMAND"
        },
        {
          "$ref": "https://catalog.lintel.tools/schemas/schemastore/serverless-framework-configuration/_shared/latest--cf.functions.json#/Aws_CF_FunctionString"
        }
      ],
      "description": "Capacity mode for the specified table",
      "title": "AWSCassandraTableModeDefinition"
    },
    "BillingMode": {
      "type": "object",
      "properties": {
        "Mode": {
          "$ref": "#/$defs/Mode"
        },
        "ProvisionedThroughput": {
          "$ref": "#/$defs/ProvisionedThroughput"
        }
      },
      "required": [
        "Mode"
      ],
      "title": "AWSCassandraTableBillingModeDefinition",
      "additionalProperties": false
    },
    "Tag": {
      "description": "A key-value pair to apply to the resource",
      "type": "object",
      "title": "AWSCassandraTableTagDefinition",
      "properties": {
        "Key": {
          "oneOf": [
            {
              "type": "string",
              "minLength": 1,
              "maxLength": 128
            },
            {
              "$ref": "https://catalog.lintel.tools/schemas/schemastore/serverless-framework-configuration/_shared/latest--cf.functions.json#/Aws_CF_FunctionString"
            }
          ]
        },
        "Value": {
          "oneOf": [
            {
              "type": "string",
              "minLength": 1,
              "maxLength": 256
            },
            {
              "$ref": "https://catalog.lintel.tools/schemas/schemastore/serverless-framework-configuration/_shared/latest--cf.functions.json#/Aws_CF_FunctionString"
            }
          ]
        }
      },
      "required": [
        "Value",
        "Key"
      ],
      "additionalProperties": false
    },
    "EncryptionSpecification": {
      "description": "Represents the settings used to enable server-side encryption",
      "type": "object",
      "properties": {
        "EncryptionType": {
          "$ref": "#/$defs/EncryptionType"
        },
        "KmsKeyIdentifier": {
          "$ref": "#/$defs/KmsKeyIdentifier"
        }
      },
      "required": [
        "EncryptionType"
      ],
      "title": "AWSCassandraTableEncryptionSpecificationDefinition",
      "additionalProperties": false
    },
    "EncryptionType": {
      "oneOf": [
        {
          "type": "string",
          "enum": [
            "AWS_OWNED_KMS_KEY",
            "CUSTOMER_MANAGED_KMS_KEY"
          ],
          "default": "AWS_OWNED_KMS_KEY"
        },
        {
          "$ref": "https://catalog.lintel.tools/schemas/schemastore/serverless-framework-configuration/_shared/latest--cf.functions.json#/Aws_CF_FunctionString"
        }
      ],
      "description": "Server-side encryption type",
      "title": "AWSCassandraTableEncryptionTypeDefinition"
    },
    "KmsKeyIdentifier": {
      "oneOf": [
        {
          "type": "string"
        },
        {
          "$ref": "https://catalog.lintel.tools/schemas/schemastore/serverless-framework-configuration/_shared/latest--cf.functions.json#/Aws_CF_FunctionString"
        }
      ],
      "description": "The AWS KMS customer master key (CMK) that should be used for the AWS KMS encryption. To specify a CMK, use its key ID, Amazon Resource Name (ARN), alias name, or alias ARN. ",
      "title": "AWSCassandraTableKmsKeyIdentifierDefinition"
    }
  },
  "required": [
    "KeyspaceName",
    "PartitionKeyColumns"
  ]
}
