/**
 * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
 * SPDX-License-Identifier: Apache-2.0.
 */
#pragma once
#include  Represents the properties of a table.See Also:
   AWS
   * API Reference
An array of AttributeDefinition objects. Each of these objects
     * describes one attribute in the table and index key schema.
Each
     * AttributeDefinition object in this array is composed of:
 AttributeName - The name of the attribute.
 AttributeType - The data type for the attribute.
An array of AttributeDefinition objects. Each of these objects
     * describes one attribute in the table and index key schema.
Each
     * AttributeDefinition object in this array is composed of:
 AttributeName - The name of the attribute.
 AttributeType - The data type for the attribute.
An array of AttributeDefinition objects. Each of these objects
     * describes one attribute in the table and index key schema.
Each
     * AttributeDefinition object in this array is composed of:
 AttributeName - The name of the attribute.
 AttributeType - The data type for the attribute.
An array of AttributeDefinition objects. Each of these objects
     * describes one attribute in the table and index key schema.
Each
     * AttributeDefinition object in this array is composed of:
 AttributeName - The name of the attribute.
 AttributeType - The data type for the attribute.
An array of AttributeDefinition objects. Each of these objects
     * describes one attribute in the table and index key schema.
Each
     * AttributeDefinition object in this array is composed of:
 AttributeName - The name of the attribute.
 AttributeType - The data type for the attribute.
An array of AttributeDefinition objects. Each of these objects
     * describes one attribute in the table and index key schema.
Each
     * AttributeDefinition object in this array is composed of:
 AttributeName - The name of the attribute.
 AttributeType - The data type for the attribute.
An array of AttributeDefinition objects. Each of these objects
     * describes one attribute in the table and index key schema.
Each
     * AttributeDefinition object in this array is composed of:
 AttributeName - The name of the attribute.
 AttributeType - The data type for the attribute.
An array of AttributeDefinition objects. Each of these objects
     * describes one attribute in the table and index key schema.
Each
     * AttributeDefinition object in this array is composed of:
 AttributeName - The name of the attribute.
 AttributeType - The data type for the attribute.
The name of the table.
*/ inline const Aws::String& GetTableName() const{ return m_tableName; } /** *The name of the table.
*/ inline bool TableNameHasBeenSet() const { return m_tableNameHasBeenSet; } /** *The name of the table.
*/ inline void SetTableName(const Aws::String& value) { m_tableNameHasBeenSet = true; m_tableName = value; } /** *The name of the table.
*/ inline void SetTableName(Aws::String&& value) { m_tableNameHasBeenSet = true; m_tableName = std::move(value); } /** *The name of the table.
*/ inline void SetTableName(const char* value) { m_tableNameHasBeenSet = true; m_tableName.assign(value); } /** *The name of the table.
*/ inline TableDescription& WithTableName(const Aws::String& value) { SetTableName(value); return *this;} /** *The name of the table.
*/ inline TableDescription& WithTableName(Aws::String&& value) { SetTableName(std::move(value)); return *this;} /** *The name of the table.
*/ inline TableDescription& WithTableName(const char* value) { SetTableName(value); return *this;} /** *The primary key structure for the table. Each KeySchemaElement
     * consists of:
 AttributeName - The name of the
     * attribute.
 KeyType - The role of the
     * attribute:
 HASH - partition key
 RANGE - sort key
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.
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.
*For more information about primary keys, see Primary * Key in the Amazon DynamoDB Developer Guide.
*/ inline const Aws::VectorThe primary key structure for the table. Each KeySchemaElement
     * consists of:
 AttributeName - The name of the
     * attribute.
 KeyType - The role of the
     * attribute:
 HASH - partition key
 RANGE - sort key
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.
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.
*For more information about primary keys, see Primary * Key in the Amazon DynamoDB Developer Guide.
*/ inline bool KeySchemaHasBeenSet() const { return m_keySchemaHasBeenSet; } /** *The primary key structure for the table. Each KeySchemaElement
     * consists of:
 AttributeName - The name of the
     * attribute.
 KeyType - The role of the
     * attribute:
 HASH - partition key
 RANGE - sort key
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.
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.
*For more information about primary keys, see Primary * Key in the Amazon DynamoDB Developer Guide.
*/ inline void SetKeySchema(const Aws::VectorThe primary key structure for the table. Each KeySchemaElement
     * consists of:
 AttributeName - The name of the
     * attribute.
 KeyType - The role of the
     * attribute:
 HASH - partition key
 RANGE - sort key
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.
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.
*For more information about primary keys, see Primary * Key in the Amazon DynamoDB Developer Guide.
*/ inline void SetKeySchema(Aws::VectorThe primary key structure for the table. Each KeySchemaElement
     * consists of:
 AttributeName - The name of the
     * attribute.
 KeyType - The role of the
     * attribute:
 HASH - partition key
 RANGE - sort key
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.
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.
*For more information about primary keys, see Primary * Key in the Amazon DynamoDB Developer Guide.
*/ inline TableDescription& WithKeySchema(const Aws::VectorThe primary key structure for the table. Each KeySchemaElement
     * consists of:
 AttributeName - The name of the
     * attribute.
 KeyType - The role of the
     * attribute:
 HASH - partition key
 RANGE - sort key
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.
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.
*For more information about primary keys, see Primary * Key in the Amazon DynamoDB Developer Guide.
*/ inline TableDescription& WithKeySchema(Aws::VectorThe primary key structure for the table. Each KeySchemaElement
     * consists of:
 AttributeName - The name of the
     * attribute.
 KeyType - The role of the
     * attribute:
 HASH - partition key
 RANGE - sort key
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.
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.
*For more information about primary keys, see Primary * Key in the Amazon DynamoDB Developer Guide.
*/ inline TableDescription& AddKeySchema(const KeySchemaElement& value) { m_keySchemaHasBeenSet = true; m_keySchema.push_back(value); return *this; } /** *The primary key structure for the table. Each KeySchemaElement
     * consists of:
 AttributeName - The name of the
     * attribute.
 KeyType - The role of the
     * attribute:
 HASH - partition key
 RANGE - sort key
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.
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.
*For more information about primary keys, see Primary * Key in the Amazon DynamoDB Developer Guide.
*/ inline TableDescription& AddKeySchema(KeySchemaElement&& value) { m_keySchemaHasBeenSet = true; m_keySchema.push_back(std::move(value)); return *this; } /** *The current state of the table:
 CREATING - The
     * table is being created.
 UPDATING - The
     * table/index configuration is being updated. The table/index remains available
     * for data operations when UPDATING.
     * DELETING - The table is being deleted.
     * ACTIVE - The table is ready for use.
     * INACCESSIBLE_ENCRYPTION_CREDENTIALS - The KMS key used to encrypt
     * the table in inaccessible. Table operations may fail due to failure to use the
     * KMS key. DynamoDB will initiate the table archival process when a table's KMS
     * key remains inaccessible for more than seven days. 
     * ARCHIVING - The table is being archived. Operations are not allowed
     * until archival is complete. 
 ARCHIVED - The
     * table has been archived. See the ArchivalReason for more information. 
The current state of the table:
 CREATING - The
     * table is being created.
 UPDATING - The
     * table/index configuration is being updated. The table/index remains available
     * for data operations when UPDATING.
     * DELETING - The table is being deleted.
     * ACTIVE - The table is ready for use.
     * INACCESSIBLE_ENCRYPTION_CREDENTIALS - The KMS key used to encrypt
     * the table in inaccessible. Table operations may fail due to failure to use the
     * KMS key. DynamoDB will initiate the table archival process when a table's KMS
     * key remains inaccessible for more than seven days. 
     * ARCHIVING - The table is being archived. Operations are not allowed
     * until archival is complete. 
 ARCHIVED - The
     * table has been archived. See the ArchivalReason for more information. 
The current state of the table:
 CREATING - The
     * table is being created.
 UPDATING - The
     * table/index configuration is being updated. The table/index remains available
     * for data operations when UPDATING.
     * DELETING - The table is being deleted.
     * ACTIVE - The table is ready for use.
     * INACCESSIBLE_ENCRYPTION_CREDENTIALS - The KMS key used to encrypt
     * the table in inaccessible. Table operations may fail due to failure to use the
     * KMS key. DynamoDB will initiate the table archival process when a table's KMS
     * key remains inaccessible for more than seven days. 
     * ARCHIVING - The table is being archived. Operations are not allowed
     * until archival is complete. 
 ARCHIVED - The
     * table has been archived. See the ArchivalReason for more information. 
The current state of the table:
 CREATING - The
     * table is being created.
 UPDATING - The
     * table/index configuration is being updated. The table/index remains available
     * for data operations when UPDATING.
     * DELETING - The table is being deleted.
     * ACTIVE - The table is ready for use.
     * INACCESSIBLE_ENCRYPTION_CREDENTIALS - The KMS key used to encrypt
     * the table in inaccessible. Table operations may fail due to failure to use the
     * KMS key. DynamoDB will initiate the table archival process when a table's KMS
     * key remains inaccessible for more than seven days. 
     * ARCHIVING - The table is being archived. Operations are not allowed
     * until archival is complete. 
 ARCHIVED - The
     * table has been archived. See the ArchivalReason for more information. 
The current state of the table:
 CREATING - The
     * table is being created.
 UPDATING - The
     * table/index configuration is being updated. The table/index remains available
     * for data operations when UPDATING.
     * DELETING - The table is being deleted.
     * ACTIVE - The table is ready for use.
     * INACCESSIBLE_ENCRYPTION_CREDENTIALS - The KMS key used to encrypt
     * the table in inaccessible. Table operations may fail due to failure to use the
     * KMS key. DynamoDB will initiate the table archival process when a table's KMS
     * key remains inaccessible for more than seven days. 
     * ARCHIVING - The table is being archived. Operations are not allowed
     * until archival is complete. 
 ARCHIVED - The
     * table has been archived. See the ArchivalReason for more information. 
The current state of the table:
 CREATING - The
     * table is being created.
 UPDATING - The
     * table/index configuration is being updated. The table/index remains available
     * for data operations when UPDATING.
     * DELETING - The table is being deleted.
     * ACTIVE - The table is ready for use.
     * INACCESSIBLE_ENCRYPTION_CREDENTIALS - The KMS key used to encrypt
     * the table in inaccessible. Table operations may fail due to failure to use the
     * KMS key. DynamoDB will initiate the table archival process when a table's KMS
     * key remains inaccessible for more than seven days. 
     * ARCHIVING - The table is being archived. Operations are not allowed
     * until archival is complete. 
 ARCHIVED - The
     * table has been archived. See the ArchivalReason for more information. 
The date and time when the table was created, in UNIX epoch time format.
*/ inline const Aws::Utils::DateTime& GetCreationDateTime() const{ return m_creationDateTime; } /** *The date and time when the table was created, in UNIX epoch time format.
*/ inline bool CreationDateTimeHasBeenSet() const { return m_creationDateTimeHasBeenSet; } /** *The date and time when the table was created, in UNIX epoch time format.
*/ inline void SetCreationDateTime(const Aws::Utils::DateTime& value) { m_creationDateTimeHasBeenSet = true; m_creationDateTime = value; } /** *The date and time when the table was created, in UNIX epoch time format.
*/ inline void SetCreationDateTime(Aws::Utils::DateTime&& value) { m_creationDateTimeHasBeenSet = true; m_creationDateTime = std::move(value); } /** *The date and time when the table was created, in UNIX epoch time format.
*/ inline TableDescription& WithCreationDateTime(const Aws::Utils::DateTime& value) { SetCreationDateTime(value); return *this;} /** *The date and time when the table was created, in UNIX epoch time format.
*/ inline TableDescription& WithCreationDateTime(Aws::Utils::DateTime&& value) { SetCreationDateTime(std::move(value)); return *this;} /** *The provisioned throughput settings for the table, consisting of read and * write capacity units, along with data about increases and decreases.
*/ inline const ProvisionedThroughputDescription& GetProvisionedThroughput() const{ return m_provisionedThroughput; } /** *The provisioned throughput settings for the table, consisting of read and * write capacity units, along with data about increases and decreases.
*/ inline bool ProvisionedThroughputHasBeenSet() const { return m_provisionedThroughputHasBeenSet; } /** *The provisioned throughput settings for the table, consisting of read and * write capacity units, along with data about increases and decreases.
*/ inline void SetProvisionedThroughput(const ProvisionedThroughputDescription& value) { m_provisionedThroughputHasBeenSet = true; m_provisionedThroughput = value; } /** *The provisioned throughput settings for the table, consisting of read and * write capacity units, along with data about increases and decreases.
*/ inline void SetProvisionedThroughput(ProvisionedThroughputDescription&& value) { m_provisionedThroughputHasBeenSet = true; m_provisionedThroughput = std::move(value); } /** *The provisioned throughput settings for the table, consisting of read and * write capacity units, along with data about increases and decreases.
*/ inline TableDescription& WithProvisionedThroughput(const ProvisionedThroughputDescription& value) { SetProvisionedThroughput(value); return *this;} /** *The provisioned throughput settings for the table, consisting of read and * write capacity units, along with data about increases and decreases.
*/ inline TableDescription& WithProvisionedThroughput(ProvisionedThroughputDescription&& value) { SetProvisionedThroughput(std::move(value)); return *this;} /** *The total size of the specified table, in bytes. DynamoDB updates this value * approximately every six hours. Recent changes might not be reflected in this * value.
*/ inline long long GetTableSizeBytes() const{ return m_tableSizeBytes; } /** *The total size of the specified table, in bytes. DynamoDB updates this value * approximately every six hours. Recent changes might not be reflected in this * value.
*/ inline bool TableSizeBytesHasBeenSet() const { return m_tableSizeBytesHasBeenSet; } /** *The total size of the specified table, in bytes. DynamoDB updates this value * approximately every six hours. Recent changes might not be reflected in this * value.
*/ inline void SetTableSizeBytes(long long value) { m_tableSizeBytesHasBeenSet = true; m_tableSizeBytes = value; } /** *The total size of the specified table, in bytes. DynamoDB updates this value * approximately every six hours. Recent changes might not be reflected in this * value.
*/ inline TableDescription& WithTableSizeBytes(long long value) { SetTableSizeBytes(value); return *this;} /** *The number of items in the specified table. DynamoDB updates this value * approximately every six hours. Recent changes might not be reflected in this * value.
*/ inline long long GetItemCount() const{ return m_itemCount; } /** *The number of items in the specified table. DynamoDB updates this value * approximately every six hours. Recent changes might not be reflected in this * value.
*/ inline bool ItemCountHasBeenSet() const { return m_itemCountHasBeenSet; } /** *The number of items in the specified table. DynamoDB updates this value * approximately every six hours. Recent changes might not be reflected in this * value.
*/ inline void SetItemCount(long long value) { m_itemCountHasBeenSet = true; m_itemCount = value; } /** *The number of items in the specified table. DynamoDB updates this value * approximately every six hours. Recent changes might not be reflected in this * value.
*/ inline TableDescription& WithItemCount(long long value) { SetItemCount(value); return *this;} /** *The Amazon Resource Name (ARN) that uniquely identifies the table.
*/ inline const Aws::String& GetTableArn() const{ return m_tableArn; } /** *The Amazon Resource Name (ARN) that uniquely identifies the table.
*/ inline bool TableArnHasBeenSet() const { return m_tableArnHasBeenSet; } /** *The Amazon Resource Name (ARN) that uniquely identifies the table.
*/ inline void SetTableArn(const Aws::String& value) { m_tableArnHasBeenSet = true; m_tableArn = value; } /** *The Amazon Resource Name (ARN) that uniquely identifies the table.
*/ inline void SetTableArn(Aws::String&& value) { m_tableArnHasBeenSet = true; m_tableArn = std::move(value); } /** *The Amazon Resource Name (ARN) that uniquely identifies the table.
*/ inline void SetTableArn(const char* value) { m_tableArnHasBeenSet = true; m_tableArn.assign(value); } /** *The Amazon Resource Name (ARN) that uniquely identifies the table.
*/ inline TableDescription& WithTableArn(const Aws::String& value) { SetTableArn(value); return *this;} /** *The Amazon Resource Name (ARN) that uniquely identifies the table.
*/ inline TableDescription& WithTableArn(Aws::String&& value) { SetTableArn(std::move(value)); return *this;} /** *The Amazon Resource Name (ARN) that uniquely identifies the table.
*/ inline TableDescription& WithTableArn(const char* value) { SetTableArn(value); return *this;} /** *Unique identifier for the table for which the backup was created.
*/ inline const Aws::String& GetTableId() const{ return m_tableId; } /** *Unique identifier for the table for which the backup was created.
*/ inline bool TableIdHasBeenSet() const { return m_tableIdHasBeenSet; } /** *Unique identifier for the table for which the backup was created.
*/ inline void SetTableId(const Aws::String& value) { m_tableIdHasBeenSet = true; m_tableId = value; } /** *Unique identifier for the table for which the backup was created.
*/ inline void SetTableId(Aws::String&& value) { m_tableIdHasBeenSet = true; m_tableId = std::move(value); } /** *Unique identifier for the table for which the backup was created.
*/ inline void SetTableId(const char* value) { m_tableIdHasBeenSet = true; m_tableId.assign(value); } /** *Unique identifier for the table for which the backup was created.
*/ inline TableDescription& WithTableId(const Aws::String& value) { SetTableId(value); return *this;} /** *Unique identifier for the table for which the backup was created.
*/ inline TableDescription& WithTableId(Aws::String&& value) { SetTableId(std::move(value)); return *this;} /** *Unique identifier for the table for which the backup was created.
*/ inline TableDescription& WithTableId(const char* value) { SetTableId(value); return *this;} /** *Contains the details for the read/write capacity mode.
*/ inline const BillingModeSummary& GetBillingModeSummary() const{ return m_billingModeSummary; } /** *Contains the details for the read/write capacity mode.
*/ inline bool BillingModeSummaryHasBeenSet() const { return m_billingModeSummaryHasBeenSet; } /** *Contains the details for the read/write capacity mode.
*/ inline void SetBillingModeSummary(const BillingModeSummary& value) { m_billingModeSummaryHasBeenSet = true; m_billingModeSummary = value; } /** *Contains the details for the read/write capacity mode.
*/ inline void SetBillingModeSummary(BillingModeSummary&& value) { m_billingModeSummaryHasBeenSet = true; m_billingModeSummary = std::move(value); } /** *Contains the details for the read/write capacity mode.
*/ inline TableDescription& WithBillingModeSummary(const BillingModeSummary& value) { SetBillingModeSummary(value); return *this;} /** *Contains the details for the read/write capacity mode.
*/ inline TableDescription& WithBillingModeSummary(BillingModeSummary&& value) { SetBillingModeSummary(std::move(value)); return *this;} /** *Represents one or more local secondary indexes on the table. Each index is * scoped to a given partition key value. Tables with one or more local secondary * indexes are subject to an item collection size limit, where the amount of data * within a given item collection cannot exceed 10 GB. Each element is composed * of:
 IndexName - The name of the local secondary
     * index.
 KeySchema - Specifies the complete index
     * key schema. The attribute names in the key schema must be between 1 and 255
     * characters (inclusive). The key schema must begin with the same partition key as
     * the table.
 Projection - Specifies attributes
     * that are copied (projected) from the table into the index. These are in addition
     * to the primary key attributes and index key attributes, which are automatically
     * projected. Each attribute specification is composed of:
     * ProjectionType - One of the following:
     * KEYS_ONLY - Only the index and primary keys are projected into the
     * index.
 INCLUDE - Only the specified table
     * attributes are projected into the index. The list of projected attributes is in
     * NonKeyAttributes.
 ALL - All of the
     * table attributes are projected into the index.
     * NonKeyAttributes - A list of one or more non-key attribute names
     * that are projected into the secondary index. The total count of attributes
     * provided in 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.
 IndexSizeBytes - Represents
     * the total size of the index, in bytes. DynamoDB updates this value approximately
     * every six hours. Recent changes might not be reflected in this value.
 ItemCount - Represents the number of items in the index.
     * DynamoDB updates this value approximately every six hours. Recent changes might
     * not be reflected in this value.
If the table is in the
     * DELETING state, no information about indexes will be returned.
Represents one or more local secondary indexes on the table. Each index is * scoped to a given partition key value. Tables with one or more local secondary * indexes are subject to an item collection size limit, where the amount of data * within a given item collection cannot exceed 10 GB. Each element is composed * of:
 IndexName - The name of the local secondary
     * index.
 KeySchema - Specifies the complete index
     * key schema. The attribute names in the key schema must be between 1 and 255
     * characters (inclusive). The key schema must begin with the same partition key as
     * the table.
 Projection - Specifies attributes
     * that are copied (projected) from the table into the index. These are in addition
     * to the primary key attributes and index key attributes, which are automatically
     * projected. Each attribute specification is composed of:
     * ProjectionType - One of the following:
     * KEYS_ONLY - Only the index and primary keys are projected into the
     * index.
 INCLUDE - Only the specified table
     * attributes are projected into the index. The list of projected attributes is in
     * NonKeyAttributes.
 ALL - All of the
     * table attributes are projected into the index.
     * NonKeyAttributes - A list of one or more non-key attribute names
     * that are projected into the secondary index. The total count of attributes
     * provided in 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.
 IndexSizeBytes - Represents
     * the total size of the index, in bytes. DynamoDB updates this value approximately
     * every six hours. Recent changes might not be reflected in this value.
 ItemCount - Represents the number of items in the index.
     * DynamoDB updates this value approximately every six hours. Recent changes might
     * not be reflected in this value.
If the table is in the
     * DELETING state, no information about indexes will be returned.
Represents one or more local secondary indexes on the table. Each index is * scoped to a given partition key value. Tables with one or more local secondary * indexes are subject to an item collection size limit, where the amount of data * within a given item collection cannot exceed 10 GB. Each element is composed * of:
 IndexName - The name of the local secondary
     * index.
 KeySchema - Specifies the complete index
     * key schema. The attribute names in the key schema must be between 1 and 255
     * characters (inclusive). The key schema must begin with the same partition key as
     * the table.
 Projection - Specifies attributes
     * that are copied (projected) from the table into the index. These are in addition
     * to the primary key attributes and index key attributes, which are automatically
     * projected. Each attribute specification is composed of:
     * ProjectionType - One of the following:
     * KEYS_ONLY - Only the index and primary keys are projected into the
     * index.
 INCLUDE - Only the specified table
     * attributes are projected into the index. The list of projected attributes is in
     * NonKeyAttributes.
 ALL - All of the
     * table attributes are projected into the index.
     * NonKeyAttributes - A list of one or more non-key attribute names
     * that are projected into the secondary index. The total count of attributes
     * provided in 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.
 IndexSizeBytes - Represents
     * the total size of the index, in bytes. DynamoDB updates this value approximately
     * every six hours. Recent changes might not be reflected in this value.
 ItemCount - Represents the number of items in the index.
     * DynamoDB updates this value approximately every six hours. Recent changes might
     * not be reflected in this value.
If the table is in the
     * DELETING state, no information about indexes will be returned.
Represents one or more local secondary indexes on the table. Each index is * scoped to a given partition key value. Tables with one or more local secondary * indexes are subject to an item collection size limit, where the amount of data * within a given item collection cannot exceed 10 GB. Each element is composed * of:
 IndexName - The name of the local secondary
     * index.
 KeySchema - Specifies the complete index
     * key schema. The attribute names in the key schema must be between 1 and 255
     * characters (inclusive). The key schema must begin with the same partition key as
     * the table.
 Projection - Specifies attributes
     * that are copied (projected) from the table into the index. These are in addition
     * to the primary key attributes and index key attributes, which are automatically
     * projected. Each attribute specification is composed of:
     * ProjectionType - One of the following:
     * KEYS_ONLY - Only the index and primary keys are projected into the
     * index.
 INCLUDE - Only the specified table
     * attributes are projected into the index. The list of projected attributes is in
     * NonKeyAttributes.
 ALL - All of the
     * table attributes are projected into the index.
     * NonKeyAttributes - A list of one or more non-key attribute names
     * that are projected into the secondary index. The total count of attributes
     * provided in 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.
 IndexSizeBytes - Represents
     * the total size of the index, in bytes. DynamoDB updates this value approximately
     * every six hours. Recent changes might not be reflected in this value.
 ItemCount - Represents the number of items in the index.
     * DynamoDB updates this value approximately every six hours. Recent changes might
     * not be reflected in this value.
If the table is in the
     * DELETING state, no information about indexes will be returned.
Represents one or more local secondary indexes on the table. Each index is * scoped to a given partition key value. Tables with one or more local secondary * indexes are subject to an item collection size limit, where the amount of data * within a given item collection cannot exceed 10 GB. Each element is composed * of:
 IndexName - The name of the local secondary
     * index.
 KeySchema - Specifies the complete index
     * key schema. The attribute names in the key schema must be between 1 and 255
     * characters (inclusive). The key schema must begin with the same partition key as
     * the table.
 Projection - Specifies attributes
     * that are copied (projected) from the table into the index. These are in addition
     * to the primary key attributes and index key attributes, which are automatically
     * projected. Each attribute specification is composed of:
     * ProjectionType - One of the following:
     * KEYS_ONLY - Only the index and primary keys are projected into the
     * index.
 INCLUDE - Only the specified table
     * attributes are projected into the index. The list of projected attributes is in
     * NonKeyAttributes.
 ALL - All of the
     * table attributes are projected into the index.
     * NonKeyAttributes - A list of one or more non-key attribute names
     * that are projected into the secondary index. The total count of attributes
     * provided in 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.
 IndexSizeBytes - Represents
     * the total size of the index, in bytes. DynamoDB updates this value approximately
     * every six hours. Recent changes might not be reflected in this value.
 ItemCount - Represents the number of items in the index.
     * DynamoDB updates this value approximately every six hours. Recent changes might
     * not be reflected in this value.
If the table is in the
     * DELETING state, no information about indexes will be returned.
Represents one or more local secondary indexes on the table. Each index is * scoped to a given partition key value. Tables with one or more local secondary * indexes are subject to an item collection size limit, where the amount of data * within a given item collection cannot exceed 10 GB. Each element is composed * of:
 IndexName - The name of the local secondary
     * index.
 KeySchema - Specifies the complete index
     * key schema. The attribute names in the key schema must be between 1 and 255
     * characters (inclusive). The key schema must begin with the same partition key as
     * the table.
 Projection - Specifies attributes
     * that are copied (projected) from the table into the index. These are in addition
     * to the primary key attributes and index key attributes, which are automatically
     * projected. Each attribute specification is composed of:
     * ProjectionType - One of the following:
     * KEYS_ONLY - Only the index and primary keys are projected into the
     * index.
 INCLUDE - Only the specified table
     * attributes are projected into the index. The list of projected attributes is in
     * NonKeyAttributes.
 ALL - All of the
     * table attributes are projected into the index.
     * NonKeyAttributes - A list of one or more non-key attribute names
     * that are projected into the secondary index. The total count of attributes
     * provided in 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.
 IndexSizeBytes - Represents
     * the total size of the index, in bytes. DynamoDB updates this value approximately
     * every six hours. Recent changes might not be reflected in this value.
 ItemCount - Represents the number of items in the index.
     * DynamoDB updates this value approximately every six hours. Recent changes might
     * not be reflected in this value.
If the table is in the
     * DELETING state, no information about indexes will be returned.
Represents one or more local secondary indexes on the table. Each index is * scoped to a given partition key value. Tables with one or more local secondary * indexes are subject to an item collection size limit, where the amount of data * within a given item collection cannot exceed 10 GB. Each element is composed * of:
 IndexName - The name of the local secondary
     * index.
 KeySchema - Specifies the complete index
     * key schema. The attribute names in the key schema must be between 1 and 255
     * characters (inclusive). The key schema must begin with the same partition key as
     * the table.
 Projection - Specifies attributes
     * that are copied (projected) from the table into the index. These are in addition
     * to the primary key attributes and index key attributes, which are automatically
     * projected. Each attribute specification is composed of:
     * ProjectionType - One of the following:
     * KEYS_ONLY - Only the index and primary keys are projected into the
     * index.
 INCLUDE - Only the specified table
     * attributes are projected into the index. The list of projected attributes is in
     * NonKeyAttributes.
 ALL - All of the
     * table attributes are projected into the index.
     * NonKeyAttributes - A list of one or more non-key attribute names
     * that are projected into the secondary index. The total count of attributes
     * provided in 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.
 IndexSizeBytes - Represents
     * the total size of the index, in bytes. DynamoDB updates this value approximately
     * every six hours. Recent changes might not be reflected in this value.
 ItemCount - Represents the number of items in the index.
     * DynamoDB updates this value approximately every six hours. Recent changes might
     * not be reflected in this value.
If the table is in the
     * DELETING state, no information about indexes will be returned.
Represents one or more local secondary indexes on the table. Each index is * scoped to a given partition key value. Tables with one or more local secondary * indexes are subject to an item collection size limit, where the amount of data * within a given item collection cannot exceed 10 GB. Each element is composed * of:
 IndexName - The name of the local secondary
     * index.
 KeySchema - Specifies the complete index
     * key schema. The attribute names in the key schema must be between 1 and 255
     * characters (inclusive). The key schema must begin with the same partition key as
     * the table.
 Projection - Specifies attributes
     * that are copied (projected) from the table into the index. These are in addition
     * to the primary key attributes and index key attributes, which are automatically
     * projected. Each attribute specification is composed of:
     * ProjectionType - One of the following:
     * KEYS_ONLY - Only the index and primary keys are projected into the
     * index.
 INCLUDE - Only the specified table
     * attributes are projected into the index. The list of projected attributes is in
     * NonKeyAttributes.
 ALL - All of the
     * table attributes are projected into the index.
     * NonKeyAttributes - A list of one or more non-key attribute names
     * that are projected into the secondary index. The total count of attributes
     * provided in 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.
 IndexSizeBytes - Represents
     * the total size of the index, in bytes. DynamoDB updates this value approximately
     * every six hours. Recent changes might not be reflected in this value.
 ItemCount - Represents the number of items in the index.
     * DynamoDB updates this value approximately every six hours. Recent changes might
     * not be reflected in this value.
If the table is in the
     * DELETING state, no information about indexes will be returned.
The global secondary indexes, if any, on the table. Each index is scoped to a * given partition key value. Each element is composed of:
     * Backfilling - If true, then the index is currently in the
     * backfilling phase. Backfilling occurs only when a new global secondary index is
     * added to the table. It is the process by which DynamoDB populates the new index
     * with data from the table. (This attribute does not appear for indexes that were
     * created during a CreateTable operation.) 
 You can delete an
     * index that is being created during the Backfilling phase when
     * IndexStatus is set to CREATING and Backfilling is
     * true. You can't delete the index that is being created when
     * IndexStatus is set to CREATING and Backfilling is
     * false. (This attribute does not appear for indexes that were created during a
     * CreateTable operation.)
 IndexName -
     * The name of the global secondary index.
     * IndexSizeBytes - The total size of the global secondary index, in
     * bytes. DynamoDB updates this value approximately every six hours. Recent changes
     * might not be reflected in this value. 
     * IndexStatus - The current status of the global secondary index:
 CREATING - The index is being created.
 UPDATING - The index is being updated.
     * DELETING - The index is being deleted.
     * ACTIVE - The index is ready for use.
     * ItemCount - The number of items in the global secondary index.
     * DynamoDB updates this value approximately every six hours. Recent changes might
     * not be reflected in this value. 
 KeySchema -
     * Specifies the complete index key schema. The attribute names in the key schema
     * must be between 1 and 255 characters (inclusive). The key schema must begin with
     * the same partition key as the table.
 Projection
     * - Specifies attributes that are copied (projected) from the table into the
     * index. These are in addition to the primary key attributes and index key
     * attributes, which are automatically projected. Each attribute specification is
     * composed of:
 ProjectionType - One of the
     * following:
 KEYS_ONLY - Only the index and primary
     * keys are projected into the index.
 INCLUDE - In
     * addition to the attributes described in KEYS_ONLY, the secondary
     * index will include other non-key attributes that you specify.
     * ALL - All of the table attributes are projected into the index.
 NonKeyAttributes - A list of one or more
     * non-key attribute names that are projected into the secondary index. The total
     * count of attributes provided in 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.
     * ProvisionedThroughput - The provisioned throughput settings for the
     * global secondary index, consisting of read and write capacity units, along with
     * data about increases and decreases. 
If the table is in the
     * DELETING state, no information about indexes will be returned.
The global secondary indexes, if any, on the table. Each index is scoped to a * given partition key value. Each element is composed of:
     * Backfilling - If true, then the index is currently in the
     * backfilling phase. Backfilling occurs only when a new global secondary index is
     * added to the table. It is the process by which DynamoDB populates the new index
     * with data from the table. (This attribute does not appear for indexes that were
     * created during a CreateTable operation.) 
 You can delete an
     * index that is being created during the Backfilling phase when
     * IndexStatus is set to CREATING and Backfilling is
     * true. You can't delete the index that is being created when
     * IndexStatus is set to CREATING and Backfilling is
     * false. (This attribute does not appear for indexes that were created during a
     * CreateTable operation.)
 IndexName -
     * The name of the global secondary index.
     * IndexSizeBytes - The total size of the global secondary index, in
     * bytes. DynamoDB updates this value approximately every six hours. Recent changes
     * might not be reflected in this value. 
     * IndexStatus - The current status of the global secondary index:
 CREATING - The index is being created.
 UPDATING - The index is being updated.
     * DELETING - The index is being deleted.
     * ACTIVE - The index is ready for use.
     * ItemCount - The number of items in the global secondary index.
     * DynamoDB updates this value approximately every six hours. Recent changes might
     * not be reflected in this value. 
 KeySchema -
     * Specifies the complete index key schema. The attribute names in the key schema
     * must be between 1 and 255 characters (inclusive). The key schema must begin with
     * the same partition key as the table.
 Projection
     * - Specifies attributes that are copied (projected) from the table into the
     * index. These are in addition to the primary key attributes and index key
     * attributes, which are automatically projected. Each attribute specification is
     * composed of:
 ProjectionType - One of the
     * following:
 KEYS_ONLY - Only the index and primary
     * keys are projected into the index.
 INCLUDE - In
     * addition to the attributes described in KEYS_ONLY, the secondary
     * index will include other non-key attributes that you specify.
     * ALL - All of the table attributes are projected into the index.
 NonKeyAttributes - A list of one or more
     * non-key attribute names that are projected into the secondary index. The total
     * count of attributes provided in 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.
     * ProvisionedThroughput - The provisioned throughput settings for the
     * global secondary index, consisting of read and write capacity units, along with
     * data about increases and decreases. 
If the table is in the
     * DELETING state, no information about indexes will be returned.
The global secondary indexes, if any, on the table. Each index is scoped to a * given partition key value. Each element is composed of:
     * Backfilling - If true, then the index is currently in the
     * backfilling phase. Backfilling occurs only when a new global secondary index is
     * added to the table. It is the process by which DynamoDB populates the new index
     * with data from the table. (This attribute does not appear for indexes that were
     * created during a CreateTable operation.) 
 You can delete an
     * index that is being created during the Backfilling phase when
     * IndexStatus is set to CREATING and Backfilling is
     * true. You can't delete the index that is being created when
     * IndexStatus is set to CREATING and Backfilling is
     * false. (This attribute does not appear for indexes that were created during a
     * CreateTable operation.)
 IndexName -
     * The name of the global secondary index.
     * IndexSizeBytes - The total size of the global secondary index, in
     * bytes. DynamoDB updates this value approximately every six hours. Recent changes
     * might not be reflected in this value. 
     * IndexStatus - The current status of the global secondary index:
 CREATING - The index is being created.
 UPDATING - The index is being updated.
     * DELETING - The index is being deleted.
     * ACTIVE - The index is ready for use.
     * ItemCount - The number of items in the global secondary index.
     * DynamoDB updates this value approximately every six hours. Recent changes might
     * not be reflected in this value. 
 KeySchema -
     * Specifies the complete index key schema. The attribute names in the key schema
     * must be between 1 and 255 characters (inclusive). The key schema must begin with
     * the same partition key as the table.
 Projection
     * - Specifies attributes that are copied (projected) from the table into the
     * index. These are in addition to the primary key attributes and index key
     * attributes, which are automatically projected. Each attribute specification is
     * composed of:
 ProjectionType - One of the
     * following:
 KEYS_ONLY - Only the index and primary
     * keys are projected into the index.
 INCLUDE - In
     * addition to the attributes described in KEYS_ONLY, the secondary
     * index will include other non-key attributes that you specify.
     * ALL - All of the table attributes are projected into the index.
 NonKeyAttributes - A list of one or more
     * non-key attribute names that are projected into the secondary index. The total
     * count of attributes provided in 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.
     * ProvisionedThroughput - The provisioned throughput settings for the
     * global secondary index, consisting of read and write capacity units, along with
     * data about increases and decreases. 
If the table is in the
     * DELETING state, no information about indexes will be returned.
The global secondary indexes, if any, on the table. Each index is scoped to a * given partition key value. Each element is composed of:
     * Backfilling - If true, then the index is currently in the
     * backfilling phase. Backfilling occurs only when a new global secondary index is
     * added to the table. It is the process by which DynamoDB populates the new index
     * with data from the table. (This attribute does not appear for indexes that were
     * created during a CreateTable operation.) 
 You can delete an
     * index that is being created during the Backfilling phase when
     * IndexStatus is set to CREATING and Backfilling is
     * true. You can't delete the index that is being created when
     * IndexStatus is set to CREATING and Backfilling is
     * false. (This attribute does not appear for indexes that were created during a
     * CreateTable operation.)
 IndexName -
     * The name of the global secondary index.
     * IndexSizeBytes - The total size of the global secondary index, in
     * bytes. DynamoDB updates this value approximately every six hours. Recent changes
     * might not be reflected in this value. 
     * IndexStatus - The current status of the global secondary index:
 CREATING - The index is being created.
 UPDATING - The index is being updated.
     * DELETING - The index is being deleted.
     * ACTIVE - The index is ready for use.
     * ItemCount - The number of items in the global secondary index.
     * DynamoDB updates this value approximately every six hours. Recent changes might
     * not be reflected in this value. 
 KeySchema -
     * Specifies the complete index key schema. The attribute names in the key schema
     * must be between 1 and 255 characters (inclusive). The key schema must begin with
     * the same partition key as the table.
 Projection
     * - Specifies attributes that are copied (projected) from the table into the
     * index. These are in addition to the primary key attributes and index key
     * attributes, which are automatically projected. Each attribute specification is
     * composed of:
 ProjectionType - One of the
     * following:
 KEYS_ONLY - Only the index and primary
     * keys are projected into the index.
 INCLUDE - In
     * addition to the attributes described in KEYS_ONLY, the secondary
     * index will include other non-key attributes that you specify.
     * ALL - All of the table attributes are projected into the index.
 NonKeyAttributes - A list of one or more
     * non-key attribute names that are projected into the secondary index. The total
     * count of attributes provided in 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.
     * ProvisionedThroughput - The provisioned throughput settings for the
     * global secondary index, consisting of read and write capacity units, along with
     * data about increases and decreases. 
If the table is in the
     * DELETING state, no information about indexes will be returned.
The global secondary indexes, if any, on the table. Each index is scoped to a * given partition key value. Each element is composed of:
     * Backfilling - If true, then the index is currently in the
     * backfilling phase. Backfilling occurs only when a new global secondary index is
     * added to the table. It is the process by which DynamoDB populates the new index
     * with data from the table. (This attribute does not appear for indexes that were
     * created during a CreateTable operation.) 
 You can delete an
     * index that is being created during the Backfilling phase when
     * IndexStatus is set to CREATING and Backfilling is
     * true. You can't delete the index that is being created when
     * IndexStatus is set to CREATING and Backfilling is
     * false. (This attribute does not appear for indexes that were created during a
     * CreateTable operation.)
 IndexName -
     * The name of the global secondary index.
     * IndexSizeBytes - The total size of the global secondary index, in
     * bytes. DynamoDB updates this value approximately every six hours. Recent changes
     * might not be reflected in this value. 
     * IndexStatus - The current status of the global secondary index:
 CREATING - The index is being created.
 UPDATING - The index is being updated.
     * DELETING - The index is being deleted.
     * ACTIVE - The index is ready for use.
     * ItemCount - The number of items in the global secondary index.
     * DynamoDB updates this value approximately every six hours. Recent changes might
     * not be reflected in this value. 
 KeySchema -
     * Specifies the complete index key schema. The attribute names in the key schema
     * must be between 1 and 255 characters (inclusive). The key schema must begin with
     * the same partition key as the table.
 Projection
     * - Specifies attributes that are copied (projected) from the table into the
     * index. These are in addition to the primary key attributes and index key
     * attributes, which are automatically projected. Each attribute specification is
     * composed of:
 ProjectionType - One of the
     * following:
 KEYS_ONLY - Only the index and primary
     * keys are projected into the index.
 INCLUDE - In
     * addition to the attributes described in KEYS_ONLY, the secondary
     * index will include other non-key attributes that you specify.
     * ALL - All of the table attributes are projected into the index.
 NonKeyAttributes - A list of one or more
     * non-key attribute names that are projected into the secondary index. The total
     * count of attributes provided in 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.
     * ProvisionedThroughput - The provisioned throughput settings for the
     * global secondary index, consisting of read and write capacity units, along with
     * data about increases and decreases. 
If the table is in the
     * DELETING state, no information about indexes will be returned.
The global secondary indexes, if any, on the table. Each index is scoped to a * given partition key value. Each element is composed of:
     * Backfilling - If true, then the index is currently in the
     * backfilling phase. Backfilling occurs only when a new global secondary index is
     * added to the table. It is the process by which DynamoDB populates the new index
     * with data from the table. (This attribute does not appear for indexes that were
     * created during a CreateTable operation.) 
 You can delete an
     * index that is being created during the Backfilling phase when
     * IndexStatus is set to CREATING and Backfilling is
     * true. You can't delete the index that is being created when
     * IndexStatus is set to CREATING and Backfilling is
     * false. (This attribute does not appear for indexes that were created during a
     * CreateTable operation.)
 IndexName -
     * The name of the global secondary index.
     * IndexSizeBytes - The total size of the global secondary index, in
     * bytes. DynamoDB updates this value approximately every six hours. Recent changes
     * might not be reflected in this value. 
     * IndexStatus - The current status of the global secondary index:
 CREATING - The index is being created.
 UPDATING - The index is being updated.
     * DELETING - The index is being deleted.
     * ACTIVE - The index is ready for use.
     * ItemCount - The number of items in the global secondary index.
     * DynamoDB updates this value approximately every six hours. Recent changes might
     * not be reflected in this value. 
 KeySchema -
     * Specifies the complete index key schema. The attribute names in the key schema
     * must be between 1 and 255 characters (inclusive). The key schema must begin with
     * the same partition key as the table.
 Projection
     * - Specifies attributes that are copied (projected) from the table into the
     * index. These are in addition to the primary key attributes and index key
     * attributes, which are automatically projected. Each attribute specification is
     * composed of:
 ProjectionType - One of the
     * following:
 KEYS_ONLY - Only the index and primary
     * keys are projected into the index.
 INCLUDE - In
     * addition to the attributes described in KEYS_ONLY, the secondary
     * index will include other non-key attributes that you specify.
     * ALL - All of the table attributes are projected into the index.
 NonKeyAttributes - A list of one or more
     * non-key attribute names that are projected into the secondary index. The total
     * count of attributes provided in 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.
     * ProvisionedThroughput - The provisioned throughput settings for the
     * global secondary index, consisting of read and write capacity units, along with
     * data about increases and decreases. 
If the table is in the
     * DELETING state, no information about indexes will be returned.
The global secondary indexes, if any, on the table. Each index is scoped to a * given partition key value. Each element is composed of:
     * Backfilling - If true, then the index is currently in the
     * backfilling phase. Backfilling occurs only when a new global secondary index is
     * added to the table. It is the process by which DynamoDB populates the new index
     * with data from the table. (This attribute does not appear for indexes that were
     * created during a CreateTable operation.) 
 You can delete an
     * index that is being created during the Backfilling phase when
     * IndexStatus is set to CREATING and Backfilling is
     * true. You can't delete the index that is being created when
     * IndexStatus is set to CREATING and Backfilling is
     * false. (This attribute does not appear for indexes that were created during a
     * CreateTable operation.)
 IndexName -
     * The name of the global secondary index.
     * IndexSizeBytes - The total size of the global secondary index, in
     * bytes. DynamoDB updates this value approximately every six hours. Recent changes
     * might not be reflected in this value. 
     * IndexStatus - The current status of the global secondary index:
 CREATING - The index is being created.
 UPDATING - The index is being updated.
     * DELETING - The index is being deleted.
     * ACTIVE - The index is ready for use.
     * ItemCount - The number of items in the global secondary index.
     * DynamoDB updates this value approximately every six hours. Recent changes might
     * not be reflected in this value. 
 KeySchema -
     * Specifies the complete index key schema. The attribute names in the key schema
     * must be between 1 and 255 characters (inclusive). The key schema must begin with
     * the same partition key as the table.
 Projection
     * - Specifies attributes that are copied (projected) from the table into the
     * index. These are in addition to the primary key attributes and index key
     * attributes, which are automatically projected. Each attribute specification is
     * composed of:
 ProjectionType - One of the
     * following:
 KEYS_ONLY - Only the index and primary
     * keys are projected into the index.
 INCLUDE - In
     * addition to the attributes described in KEYS_ONLY, the secondary
     * index will include other non-key attributes that you specify.
     * ALL - All of the table attributes are projected into the index.
 NonKeyAttributes - A list of one or more
     * non-key attribute names that are projected into the secondary index. The total
     * count of attributes provided in 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.
     * ProvisionedThroughput - The provisioned throughput settings for the
     * global secondary index, consisting of read and write capacity units, along with
     * data about increases and decreases. 
If the table is in the
     * DELETING state, no information about indexes will be returned.
The global secondary indexes, if any, on the table. Each index is scoped to a * given partition key value. Each element is composed of:
     * Backfilling - If true, then the index is currently in the
     * backfilling phase. Backfilling occurs only when a new global secondary index is
     * added to the table. It is the process by which DynamoDB populates the new index
     * with data from the table. (This attribute does not appear for indexes that were
     * created during a CreateTable operation.) 
 You can delete an
     * index that is being created during the Backfilling phase when
     * IndexStatus is set to CREATING and Backfilling is
     * true. You can't delete the index that is being created when
     * IndexStatus is set to CREATING and Backfilling is
     * false. (This attribute does not appear for indexes that were created during a
     * CreateTable operation.)
 IndexName -
     * The name of the global secondary index.
     * IndexSizeBytes - The total size of the global secondary index, in
     * bytes. DynamoDB updates this value approximately every six hours. Recent changes
     * might not be reflected in this value. 
     * IndexStatus - The current status of the global secondary index:
 CREATING - The index is being created.
 UPDATING - The index is being updated.
     * DELETING - The index is being deleted.
     * ACTIVE - The index is ready for use.
     * ItemCount - The number of items in the global secondary index.
     * DynamoDB updates this value approximately every six hours. Recent changes might
     * not be reflected in this value. 
 KeySchema -
     * Specifies the complete index key schema. The attribute names in the key schema
     * must be between 1 and 255 characters (inclusive). The key schema must begin with
     * the same partition key as the table.
 Projection
     * - Specifies attributes that are copied (projected) from the table into the
     * index. These are in addition to the primary key attributes and index key
     * attributes, which are automatically projected. Each attribute specification is
     * composed of:
 ProjectionType - One of the
     * following:
 KEYS_ONLY - Only the index and primary
     * keys are projected into the index.
 INCLUDE - In
     * addition to the attributes described in KEYS_ONLY, the secondary
     * index will include other non-key attributes that you specify.
     * ALL - All of the table attributes are projected into the index.
 NonKeyAttributes - A list of one or more
     * non-key attribute names that are projected into the secondary index. The total
     * count of attributes provided in 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.
     * ProvisionedThroughput - The provisioned throughput settings for the
     * global secondary index, consisting of read and write capacity units, along with
     * data about increases and decreases. 
If the table is in the
     * DELETING state, no information about indexes will be returned.
The current DynamoDB Streams configuration for the table.
*/ inline const StreamSpecification& GetStreamSpecification() const{ return m_streamSpecification; } /** *The current DynamoDB Streams configuration for the table.
*/ inline bool StreamSpecificationHasBeenSet() const { return m_streamSpecificationHasBeenSet; } /** *The current DynamoDB Streams configuration for the table.
*/ inline void SetStreamSpecification(const StreamSpecification& value) { m_streamSpecificationHasBeenSet = true; m_streamSpecification = value; } /** *The current DynamoDB Streams configuration for the table.
*/ inline void SetStreamSpecification(StreamSpecification&& value) { m_streamSpecificationHasBeenSet = true; m_streamSpecification = std::move(value); } /** *The current DynamoDB Streams configuration for the table.
*/ inline TableDescription& WithStreamSpecification(const StreamSpecification& value) { SetStreamSpecification(value); return *this;} /** *The current DynamoDB Streams configuration for the table.
*/ inline TableDescription& WithStreamSpecification(StreamSpecification&& value) { SetStreamSpecification(std::move(value)); return *this;} /** *A timestamp, in ISO 8601 format, for this stream.
Note that
     * LatestStreamLabel is not a unique identifier for the stream,
     * because it is possible that a stream from another table might have the same
     * timestamp. However, the combination of the following three elements is
     * guaranteed to be unique:
Amazon Web Services customer ID
*Table name
 StreamLabel 
A timestamp, in ISO 8601 format, for this stream.
Note that
     * LatestStreamLabel is not a unique identifier for the stream,
     * because it is possible that a stream from another table might have the same
     * timestamp. However, the combination of the following three elements is
     * guaranteed to be unique:
Amazon Web Services customer ID
*Table name
 StreamLabel 
A timestamp, in ISO 8601 format, for this stream.
Note that
     * LatestStreamLabel is not a unique identifier for the stream,
     * because it is possible that a stream from another table might have the same
     * timestamp. However, the combination of the following three elements is
     * guaranteed to be unique:
Amazon Web Services customer ID
*Table name
 StreamLabel 
A timestamp, in ISO 8601 format, for this stream.
Note that
     * LatestStreamLabel is not a unique identifier for the stream,
     * because it is possible that a stream from another table might have the same
     * timestamp. However, the combination of the following three elements is
     * guaranteed to be unique:
Amazon Web Services customer ID
*Table name
 StreamLabel 
A timestamp, in ISO 8601 format, for this stream.
Note that
     * LatestStreamLabel is not a unique identifier for the stream,
     * because it is possible that a stream from another table might have the same
     * timestamp. However, the combination of the following three elements is
     * guaranteed to be unique:
Amazon Web Services customer ID
*Table name
 StreamLabel 
A timestamp, in ISO 8601 format, for this stream.
Note that
     * LatestStreamLabel is not a unique identifier for the stream,
     * because it is possible that a stream from another table might have the same
     * timestamp. However, the combination of the following three elements is
     * guaranteed to be unique:
Amazon Web Services customer ID
*Table name
 StreamLabel 
A timestamp, in ISO 8601 format, for this stream.
Note that
     * LatestStreamLabel is not a unique identifier for the stream,
     * because it is possible that a stream from another table might have the same
     * timestamp. However, the combination of the following three elements is
     * guaranteed to be unique:
Amazon Web Services customer ID
*Table name
 StreamLabel 
A timestamp, in ISO 8601 format, for this stream.
Note that
     * LatestStreamLabel is not a unique identifier for the stream,
     * because it is possible that a stream from another table might have the same
     * timestamp. However, the combination of the following three elements is
     * guaranteed to be unique:
Amazon Web Services customer ID
*Table name
 StreamLabel 
The Amazon Resource Name (ARN) that uniquely identifies the latest stream for * this table.
*/ inline const Aws::String& GetLatestStreamArn() const{ return m_latestStreamArn; } /** *The Amazon Resource Name (ARN) that uniquely identifies the latest stream for * this table.
*/ inline bool LatestStreamArnHasBeenSet() const { return m_latestStreamArnHasBeenSet; } /** *The Amazon Resource Name (ARN) that uniquely identifies the latest stream for * this table.
*/ inline void SetLatestStreamArn(const Aws::String& value) { m_latestStreamArnHasBeenSet = true; m_latestStreamArn = value; } /** *The Amazon Resource Name (ARN) that uniquely identifies the latest stream for * this table.
*/ inline void SetLatestStreamArn(Aws::String&& value) { m_latestStreamArnHasBeenSet = true; m_latestStreamArn = std::move(value); } /** *The Amazon Resource Name (ARN) that uniquely identifies the latest stream for * this table.
*/ inline void SetLatestStreamArn(const char* value) { m_latestStreamArnHasBeenSet = true; m_latestStreamArn.assign(value); } /** *The Amazon Resource Name (ARN) that uniquely identifies the latest stream for * this table.
*/ inline TableDescription& WithLatestStreamArn(const Aws::String& value) { SetLatestStreamArn(value); return *this;} /** *The Amazon Resource Name (ARN) that uniquely identifies the latest stream for * this table.
*/ inline TableDescription& WithLatestStreamArn(Aws::String&& value) { SetLatestStreamArn(std::move(value)); return *this;} /** *The Amazon Resource Name (ARN) that uniquely identifies the latest stream for * this table.
*/ inline TableDescription& WithLatestStreamArn(const char* value) { SetLatestStreamArn(value); return *this;} /** *Represents the version of global * tables in use, if the table is replicated across Amazon Web Services * Regions.
*/ inline const Aws::String& GetGlobalTableVersion() const{ return m_globalTableVersion; } /** *Represents the version of global * tables in use, if the table is replicated across Amazon Web Services * Regions.
*/ inline bool GlobalTableVersionHasBeenSet() const { return m_globalTableVersionHasBeenSet; } /** *Represents the version of global * tables in use, if the table is replicated across Amazon Web Services * Regions.
*/ inline void SetGlobalTableVersion(const Aws::String& value) { m_globalTableVersionHasBeenSet = true; m_globalTableVersion = value; } /** *Represents the version of global * tables in use, if the table is replicated across Amazon Web Services * Regions.
*/ inline void SetGlobalTableVersion(Aws::String&& value) { m_globalTableVersionHasBeenSet = true; m_globalTableVersion = std::move(value); } /** *Represents the version of global * tables in use, if the table is replicated across Amazon Web Services * Regions.
*/ inline void SetGlobalTableVersion(const char* value) { m_globalTableVersionHasBeenSet = true; m_globalTableVersion.assign(value); } /** *Represents the version of global * tables in use, if the table is replicated across Amazon Web Services * Regions.
*/ inline TableDescription& WithGlobalTableVersion(const Aws::String& value) { SetGlobalTableVersion(value); return *this;} /** *Represents the version of global * tables in use, if the table is replicated across Amazon Web Services * Regions.
*/ inline TableDescription& WithGlobalTableVersion(Aws::String&& value) { SetGlobalTableVersion(std::move(value)); return *this;} /** *Represents the version of global * tables in use, if the table is replicated across Amazon Web Services * Regions.
*/ inline TableDescription& WithGlobalTableVersion(const char* value) { SetGlobalTableVersion(value); return *this;} /** *Represents replicas of the table.
*/ inline const Aws::VectorRepresents replicas of the table.
*/ inline bool ReplicasHasBeenSet() const { return m_replicasHasBeenSet; } /** *Represents replicas of the table.
*/ inline void SetReplicas(const Aws::VectorRepresents replicas of the table.
*/ inline void SetReplicas(Aws::VectorRepresents replicas of the table.
*/ inline TableDescription& WithReplicas(const Aws::VectorRepresents replicas of the table.
*/ inline TableDescription& WithReplicas(Aws::VectorRepresents replicas of the table.
*/ inline TableDescription& AddReplicas(const ReplicaDescription& value) { m_replicasHasBeenSet = true; m_replicas.push_back(value); return *this; } /** *Represents replicas of the table.
*/ inline TableDescription& AddReplicas(ReplicaDescription&& value) { m_replicasHasBeenSet = true; m_replicas.push_back(std::move(value)); return *this; } /** *Contains details for the restore.
*/ inline const RestoreSummary& GetRestoreSummary() const{ return m_restoreSummary; } /** *Contains details for the restore.
*/ inline bool RestoreSummaryHasBeenSet() const { return m_restoreSummaryHasBeenSet; } /** *Contains details for the restore.
*/ inline void SetRestoreSummary(const RestoreSummary& value) { m_restoreSummaryHasBeenSet = true; m_restoreSummary = value; } /** *Contains details for the restore.
*/ inline void SetRestoreSummary(RestoreSummary&& value) { m_restoreSummaryHasBeenSet = true; m_restoreSummary = std::move(value); } /** *Contains details for the restore.
*/ inline TableDescription& WithRestoreSummary(const RestoreSummary& value) { SetRestoreSummary(value); return *this;} /** *Contains details for the restore.
*/ inline TableDescription& WithRestoreSummary(RestoreSummary&& value) { SetRestoreSummary(std::move(value)); return *this;} /** *The description of the server-side encryption status on the specified * table.
*/ inline const SSEDescription& GetSSEDescription() const{ return m_sSEDescription; } /** *The description of the server-side encryption status on the specified * table.
*/ inline bool SSEDescriptionHasBeenSet() const { return m_sSEDescriptionHasBeenSet; } /** *The description of the server-side encryption status on the specified * table.
*/ inline void SetSSEDescription(const SSEDescription& value) { m_sSEDescriptionHasBeenSet = true; m_sSEDescription = value; } /** *The description of the server-side encryption status on the specified * table.
*/ inline void SetSSEDescription(SSEDescription&& value) { m_sSEDescriptionHasBeenSet = true; m_sSEDescription = std::move(value); } /** *The description of the server-side encryption status on the specified * table.
*/ inline TableDescription& WithSSEDescription(const SSEDescription& value) { SetSSEDescription(value); return *this;} /** *The description of the server-side encryption status on the specified * table.
*/ inline TableDescription& WithSSEDescription(SSEDescription&& value) { SetSSEDescription(std::move(value)); return *this;} /** *Contains information about the table archive.
*/ inline const ArchivalSummary& GetArchivalSummary() const{ return m_archivalSummary; } /** *Contains information about the table archive.
*/ inline bool ArchivalSummaryHasBeenSet() const { return m_archivalSummaryHasBeenSet; } /** *Contains information about the table archive.
*/ inline void SetArchivalSummary(const ArchivalSummary& value) { m_archivalSummaryHasBeenSet = true; m_archivalSummary = value; } /** *Contains information about the table archive.
*/ inline void SetArchivalSummary(ArchivalSummary&& value) { m_archivalSummaryHasBeenSet = true; m_archivalSummary = std::move(value); } /** *Contains information about the table archive.
*/ inline TableDescription& WithArchivalSummary(const ArchivalSummary& value) { SetArchivalSummary(value); return *this;} /** *Contains information about the table archive.
*/ inline TableDescription& WithArchivalSummary(ArchivalSummary&& value) { SetArchivalSummary(std::move(value)); return *this;} /** *Contains details of the table class.
*/ inline const TableClassSummary& GetTableClassSummary() const{ return m_tableClassSummary; } /** *Contains details of the table class.
*/ inline bool TableClassSummaryHasBeenSet() const { return m_tableClassSummaryHasBeenSet; } /** *Contains details of the table class.
*/ inline void SetTableClassSummary(const TableClassSummary& value) { m_tableClassSummaryHasBeenSet = true; m_tableClassSummary = value; } /** *Contains details of the table class.
*/ inline void SetTableClassSummary(TableClassSummary&& value) { m_tableClassSummaryHasBeenSet = true; m_tableClassSummary = std::move(value); } /** *Contains details of the table class.
*/ inline TableDescription& WithTableClassSummary(const TableClassSummary& value) { SetTableClassSummary(value); return *this;} /** *Contains details of the table class.
*/ inline TableDescription& WithTableClassSummary(TableClassSummary&& value) { SetTableClassSummary(std::move(value)); return *this;} /** *Indicates whether deletion protection is enabled (true) or disabled (false) * on the table.
*/ inline bool GetDeletionProtectionEnabled() const{ return m_deletionProtectionEnabled; } /** *Indicates whether deletion protection is enabled (true) or disabled (false) * on the table.
*/ inline bool DeletionProtectionEnabledHasBeenSet() const { return m_deletionProtectionEnabledHasBeenSet; } /** *Indicates whether deletion protection is enabled (true) or disabled (false) * on the table.
*/ inline void SetDeletionProtectionEnabled(bool value) { m_deletionProtectionEnabledHasBeenSet = true; m_deletionProtectionEnabled = value; } /** *Indicates whether deletion protection is enabled (true) or disabled (false) * on the table.
*/ inline TableDescription& WithDeletionProtectionEnabled(bool value) { SetDeletionProtectionEnabled(value); return *this;} private: Aws::Vector