// Code generated by smithy-go-codegen DO NOT EDIT.

package types

import (
	smithydocument "github.com/aws/smithy-go/document"
	"time"
)

// Contains details of a table archival operation.
type ArchivalSummary struct {

	// The Amazon Resource Name (ARN) of the backup the table was archived to, when
	// applicable in the archival reason. If you wish to restore this backup to the
	// same table name, you will need to delete the original table.
	ArchivalBackupArn *string

	// The date and time when table archival was initiated by DynamoDB, in UNIX epoch
	// time format.
	ArchivalDateTime *time.Time

	// The reason DynamoDB archived the table. Currently, the only possible value is:
	//
	//   - INACCESSIBLE_ENCRYPTION_CREDENTIALS - The table was archived due to the
	//   table's KMS key being inaccessible for more than seven days. An On-Demand backup
	//   was created at the archival time.
	ArchivalReason *string

	noSmithyDocumentSerde
}

// Represents an attribute for describing the schema for the table and indexes.
type AttributeDefinition struct {

	// A name for the attribute.
	//
	// This member is required.
	AttributeName *string

	// The data type for the attribute, where:
	//
	//   - S - the attribute is of type String
	//
	//   - N - the attribute is of type Number
	//
	//   - B - the attribute is of type Binary
	//
	// This member is required.
	AttributeType ScalarAttributeType

	noSmithyDocumentSerde
}

// Represents the data for an attribute.
//
// Each attribute value is described as a name-value pair. The name is the data
// type, and the value is the data itself.
//
// For more information, see [Data Types] in the Amazon DynamoDB Developer Guide.
//
// The following types satisfy this interface:
//
//	AttributeValueMemberB
//	AttributeValueMemberBOOL
//	AttributeValueMemberBS
//	AttributeValueMemberL
//	AttributeValueMemberM
//	AttributeValueMemberN
//	AttributeValueMemberNS
//	AttributeValueMemberNULL
//	AttributeValueMemberS
//	AttributeValueMemberSS
//
// [Data Types]: https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/HowItWorks.NamingRulesDataTypes.html#HowItWorks.DataTypes
type AttributeValue interface {
	isAttributeValue()
}

// An attribute of type Binary. For example:
//
//	"B": "dGhpcyB0ZXh0IGlzIGJhc2U2NC1lbmNvZGVk"
type AttributeValueMemberB struct {
	Value []byte

	noSmithyDocumentSerde
}

func (*AttributeValueMemberB) isAttributeValue() {}

// An attribute of type Boolean. For example:
//
//	"BOOL": true
type AttributeValueMemberBOOL struct {
	Value bool

	noSmithyDocumentSerde
}

func (*AttributeValueMemberBOOL) isAttributeValue() {}

// An attribute of type Binary Set. For example:
//
//	"BS": ["U3Vubnk=", "UmFpbnk=", "U25vd3k="]
type AttributeValueMemberBS struct {
	Value [][]byte

	noSmithyDocumentSerde
}

func (*AttributeValueMemberBS) isAttributeValue() {}

// An attribute of type List. For example:
//
//	"L": [ {"S": "Cookies"} , {"S": "Coffee"}, {"N": "3.14159"}]
type AttributeValueMemberL struct {
	Value []AttributeValue

	noSmithyDocumentSerde
}

func (*AttributeValueMemberL) isAttributeValue() {}

// An attribute of type Map. For example:
//
//	"M": {"Name": {"S": "Joe"}, "Age": {"N": "35"}}
type AttributeValueMemberM struct {
	Value map[string]AttributeValue

	noSmithyDocumentSerde
}

func (*AttributeValueMemberM) isAttributeValue() {}

// An attribute of type Number. For example:
//
//	"N": "123.45"
//
// Numbers are sent across the network to DynamoDB as strings, to maximize
// compatibility across languages and libraries. However, DynamoDB treats them as
// number type attributes for mathematical operations.
type AttributeValueMemberN struct {
	Value string

	noSmithyDocumentSerde
}

func (*AttributeValueMemberN) isAttributeValue() {}

// An attribute of type Number Set. For example:
//
//	"NS": ["42.2", "-19", "7.5", "3.14"]
//
// Numbers are sent across the network to DynamoDB as strings, to maximize
// compatibility across languages and libraries. However, DynamoDB treats them as
// number type attributes for mathematical operations.
type AttributeValueMemberNS struct {
	Value []string

	noSmithyDocumentSerde
}

func (*AttributeValueMemberNS) isAttributeValue() {}

// An attribute of type Null. For example:
//
//	"NULL": true
type AttributeValueMemberNULL struct {
	Value bool

	noSmithyDocumentSerde
}

func (*AttributeValueMemberNULL) isAttributeValue() {}

// An attribute of type String. For example:
//
//	"S": "Hello"
type AttributeValueMemberS struct {
	Value string

	noSmithyDocumentSerde
}

func (*AttributeValueMemberS) isAttributeValue() {}

// An attribute of type String Set. For example:
//
//	"SS": ["Giraffe", "Hippo" ,"Zebra"]
type AttributeValueMemberSS struct {
	Value []string

	noSmithyDocumentSerde
}

func (*AttributeValueMemberSS) isAttributeValue() {}

// For the UpdateItem operation, represents the attributes to be modified, the
// action to perform on each, and the new value for each.
//
// You cannot use UpdateItem to update any primary key attributes. Instead, you
// will need to delete the item, and then use PutItem to create a new item with
// new attributes.
//
// Attribute values cannot be null; string and binary type attributes must have
// lengths greater than zero; and set type attributes must not be empty. Requests
// with empty values will be rejected with a ValidationException exception.
type AttributeValueUpdate struct {

	// Specifies how to perform the update. Valid values are PUT (default), DELETE ,
	// and ADD . The behavior depends on whether the specified primary key already
	// exists in the table.
	//
	// If an item with the specified Key is found in the table:
	//
	//   - PUT - Adds the specified attribute to the item. If the attribute already
	//   exists, it is replaced by the new value.
	//
	//   - DELETE - If no value is specified, the attribute and its value are removed
	//   from the item. The data type of the specified value must match the existing
	//   value's data type.
	//
	// If a set of values is specified, then those values are subtracted from the old
	//   set. For example, if the attribute value was the set [a,b,c] and the DELETE
	//   action specified [a,c] , then the final attribute value would be [b] .
	//   Specifying an empty set is an error.
	//
	//   - ADD - If the attribute does not already exist, then the attribute and its
	//   values are added to the item. If the attribute does exist, then the behavior of
	//   ADD depends on the data type of the attribute:
	//
	//   - If the existing attribute is a number, and if Value is also a number, then
	//   the Value is mathematically added to the existing attribute. If Value is a
	//   negative number, then it is subtracted from the existing attribute.
	//
	// If you use ADD to increment or decrement a number value for an item that doesn't
	//   exist before the update, DynamoDB uses 0 as the initial value.
	//
	// In addition, if you use ADD to update an existing item, and intend to increment
	//   or decrement an attribute value which does not yet exist, DynamoDB uses 0 as
	//   the initial value. For example, suppose that the item you want to update does
	//   not yet have an attribute named itemcount, but you decide to ADD the number 3
	//   to this attribute anyway, even though it currently does not exist. DynamoDB will
	//   create the itemcount attribute, set its initial value to 0 , and finally add 3
	//   to it. The result will be a new itemcount attribute in the item, with a value of
	//   3 .
	//
	//   - If the existing data type is a set, and if the Value is also a set, then the
	//   Value is added to the existing set. (This is a set operation, not mathematical
	//   addition.) For example, if the attribute value was the set [1,2] , and the ADD
	//   action specified [3] , then the final attribute value would be [1,2,3] . An
	//   error occurs if an Add action is specified for a set attribute and the attribute
	//   type specified does not match the existing set type.
	//
	// Both sets must have the same primitive data type. For example, if the existing
	//   data type is a set of strings, the Value must also be a set of strings. The
	//   same holds true for number sets and binary sets.
	//
	// This action is only valid for an existing attribute whose data type is number
	//   or is a set. Do not use ADD for any other data types.
	//
	// If no item with the specified Key is found:
	//
	//   - PUT - DynamoDB creates a new item with the specified primary key, and then
	//   adds the attribute.
	//
	//   - DELETE - Nothing happens; there is no attribute to delete.
	//
	//   - ADD - DynamoDB creates a new item with the supplied primary key and number
	//   (or set) for the attribute value. The only data types allowed are number, number
	//   set, string set or binary set.
	Action AttributeAction

	// Represents the data for an attribute.
	//
	// Each attribute value is described as a name-value pair. The name is the data
	// type, and the value is the data itself.
	//
	// For more information, see [Data Types] in the Amazon DynamoDB Developer Guide.
	//
	// [Data Types]: https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/HowItWorks.NamingRulesDataTypes.html#HowItWorks.DataTypes
	Value AttributeValue

	noSmithyDocumentSerde
}

// Represents the properties of the scaling policy.
type AutoScalingPolicyDescription struct {

	// The name of the scaling policy.
	PolicyName *string

	// Represents a target tracking scaling policy configuration.
	TargetTrackingScalingPolicyConfiguration *AutoScalingTargetTrackingScalingPolicyConfigurationDescription

	noSmithyDocumentSerde
}

// Represents the auto scaling policy to be modified.
type AutoScalingPolicyUpdate struct {

	// Represents a target tracking scaling policy configuration.
	//
	// This member is required.
	TargetTrackingScalingPolicyConfiguration *AutoScalingTargetTrackingScalingPolicyConfigurationUpdate

	// The name of the scaling policy.
	PolicyName *string

	noSmithyDocumentSerde
}

// Represents the auto scaling settings for a global table or global secondary
// index.
type AutoScalingSettingsDescription struct {

	// Disabled auto scaling for this global table or global secondary index.
	AutoScalingDisabled *bool

	// Role ARN used for configuring the auto scaling policy.
	AutoScalingRoleArn *string

	// The maximum capacity units that a global table or global secondary index should
	// be scaled up to.
	MaximumUnits *int64

	// The minimum capacity units that a global table or global secondary index should
	// be scaled down to.
	MinimumUnits *int64

	// Information about the scaling policies.
	ScalingPolicies []AutoScalingPolicyDescription

	noSmithyDocumentSerde
}

// Represents the auto scaling settings to be modified for a global table or
// global secondary index.
type AutoScalingSettingsUpdate struct {

	// Disabled auto scaling for this global table or global secondary index.
	AutoScalingDisabled *bool

	// Role ARN used for configuring auto scaling policy.
	AutoScalingRoleArn *string

	// The maximum capacity units that a global table or global secondary index should
	// be scaled up to.
	MaximumUnits *int64

	// The minimum capacity units that a global table or global secondary index should
	// be scaled down to.
	MinimumUnits *int64

	// The scaling policy to apply for scaling target global table or global secondary
	// index capacity units.
	ScalingPolicyUpdate *AutoScalingPolicyUpdate

	noSmithyDocumentSerde
}

// Represents the properties of a target tracking scaling policy.
type AutoScalingTargetTrackingScalingPolicyConfigurationDescription struct {

	// The target value for the metric. The range is 8.515920e-109 to 1.174271e+108
	// (Base 10) or 2e-360 to 2e360 (Base 2).
	//
	// This member is required.
	TargetValue *float64

	// Indicates whether scale in by the target tracking policy is disabled. If the
	// value is true, scale in is disabled and the target tracking policy won't remove
	// capacity from the scalable resource. Otherwise, scale in is enabled and the
	// target tracking policy can remove capacity from the scalable resource. The
	// default value is false.
	DisableScaleIn *bool

	// The amount of time, in seconds, after a scale in activity completes before
	// another scale in activity can start. The cooldown period is used to block
	// subsequent scale in requests until it has expired. You should scale in
	// conservatively to protect your application's availability. However, if another
	// alarm triggers a scale out policy during the cooldown period after a scale-in,
	// application auto scaling scales out your scalable target immediately.
	ScaleInCooldown *int32

	// The amount of time, in seconds, after a scale out activity completes before
	// another scale out activity can start. While the cooldown period is in effect,
	// the capacity that has been added by the previous scale out event that initiated
	// the cooldown is calculated as part of the desired capacity for the next scale
	// out. You should continuously (but not excessively) scale out.
	ScaleOutCooldown *int32

	noSmithyDocumentSerde
}

// Represents the settings of a target tracking scaling policy that will be
// modified.
type AutoScalingTargetTrackingScalingPolicyConfigurationUpdate struct {

	// The target value for the metric. The range is 8.515920e-109 to 1.174271e+108
	// (Base 10) or 2e-360 to 2e360 (Base 2).
	//
	// This member is required.
	TargetValue *float64

	// Indicates whether scale in by the target tracking policy is disabled. If the
	// value is true, scale in is disabled and the target tracking policy won't remove
	// capacity from the scalable resource. Otherwise, scale in is enabled and the
	// target tracking policy can remove capacity from the scalable resource. The
	// default value is false.
	DisableScaleIn *bool

	// The amount of time, in seconds, after a scale in activity completes before
	// another scale in activity can start. The cooldown period is used to block
	// subsequent scale in requests until it has expired. You should scale in
	// conservatively to protect your application's availability. However, if another
	// alarm triggers a scale out policy during the cooldown period after a scale-in,
	// application auto scaling scales out your scalable target immediately.
	ScaleInCooldown *int32

	// The amount of time, in seconds, after a scale out activity completes before
	// another scale out activity can start. While the cooldown period is in effect,
	// the capacity that has been added by the previous scale out event that initiated
	// the cooldown is calculated as part of the desired capacity for the next scale
	// out. You should continuously (but not excessively) scale out.
	ScaleOutCooldown *int32

	noSmithyDocumentSerde
}

// Contains the description of the backup created for the table.
type BackupDescription struct {

	// Contains the details of the backup created for the table.
	BackupDetails *BackupDetails

	// Contains the details of the table when the backup was created.
	SourceTableDetails *SourceTableDetails

	// Contains the details of the features enabled on the table when the backup was
	// created. For example, LSIs, GSIs, streams, TTL.
	SourceTableFeatureDetails *SourceTableFeatureDetails

	noSmithyDocumentSerde
}

// Contains the details of the backup created for the table.
type BackupDetails struct {

	// ARN associated with the backup.
	//
	// This member is required.
	BackupArn *string

	// Time at which the backup was created. This is the request time of the backup.
	//
	// This member is required.
	BackupCreationDateTime *time.Time

	// Name of the requested backup.
	//
	// This member is required.
	BackupName *string

	// Backup can be in one of the following states: CREATING, ACTIVE, DELETED.
	//
	// This member is required.
	BackupStatus BackupStatus

	// BackupType:
	//
	//   - USER - You create and manage these using the on-demand backup feature.
	//
	//   - SYSTEM - If you delete a table with point-in-time recovery enabled, a SYSTEM
	//   backup is automatically created and is retained for 35 days (at no additional
	//   cost). System backups allow you to restore the deleted table to the state it was
	//   in just before the point of deletion.
	//
	//   - AWS_BACKUP - On-demand backup created by you from Backup service.
	//
	// This member is required.
	BackupType BackupType

	// Time at which the automatic on-demand backup created by DynamoDB will expire.
	// This SYSTEM on-demand backup expires automatically 35 days after its creation.
	BackupExpiryDateTime *time.Time

	// Size of the backup in bytes. DynamoDB updates this value approximately every
	// six hours. Recent changes might not be reflected in this value.
	BackupSizeBytes *int64

	noSmithyDocumentSerde
}

// Contains details for the backup.
type BackupSummary struct {

	// ARN associated with the backup.
	BackupArn *string

	// Time at which the backup was created.
	BackupCreationDateTime *time.Time

	// Time at which the automatic on-demand backup created by DynamoDB will expire.
	// This SYSTEM on-demand backup expires automatically 35 days after its creation.
	BackupExpiryDateTime *time.Time

	// Name of the specified backup.
	BackupName *string

	// Size of the backup in bytes.
	BackupSizeBytes *int64

	// Backup can be in one of the following states: CREATING, ACTIVE, DELETED.
	BackupStatus BackupStatus

	// BackupType:
	//
	//   - USER - You create and manage these using the on-demand backup feature.
	//
	//   - SYSTEM - If you delete a table with point-in-time recovery enabled, a SYSTEM
	//   backup is automatically created and is retained for 35 days (at no additional
	//   cost). System backups allow you to restore the deleted table to the state it was
	//   in just before the point of deletion.
	//
	//   - AWS_BACKUP - On-demand backup created by you from Backup service.
	BackupType BackupType

	// ARN associated with the table.
	TableArn *string

	// Unique identifier for the table.
	TableId *string

	// Name of the table.
	TableName *string

	noSmithyDocumentSerde
}

// An error associated with a statement in a PartiQL batch that was run.
type BatchStatementError struct {

	//  The error code associated with the failed PartiQL batch statement.
	Code BatchStatementErrorCodeEnum

	// The item which caused the condition check to fail. This will be set if
	// ReturnValuesOnConditionCheckFailure is specified as ALL_OLD .
	Item map[string]AttributeValue

	//  The error message associated with the PartiQL batch response.
	Message *string

	noSmithyDocumentSerde
}

// A PartiQL batch statement request.
type BatchStatementRequest struct {

	//  A valid PartiQL statement.
	//
	// This member is required.
	Statement *string

	//  The read consistency of the PartiQL batch request.
	ConsistentRead *bool

	//  The parameters associated with a PartiQL statement in the batch request.
	Parameters []AttributeValue

	// An optional parameter that returns the item attributes for a PartiQL batch
	// request operation that failed a condition check.
	//
	// There is no additional cost associated with requesting a return value aside
	// from the small network and processing overhead of receiving a larger response.
	// No read capacity units are consumed.
	ReturnValuesOnConditionCheckFailure ReturnValuesOnConditionCheckFailure

	noSmithyDocumentSerde
}

// A PartiQL batch statement response..
type BatchStatementResponse struct {

	//  The error associated with a failed PartiQL batch statement.
	Error *BatchStatementError

	//  A DynamoDB item associated with a BatchStatementResponse
	Item map[string]AttributeValue

	//  The table name associated with a failed PartiQL batch statement.
	TableName *string

	noSmithyDocumentSerde
}

// Contains the details for the read/write capacity mode. This page talks about
// PROVISIONED and PAY_PER_REQUEST billing modes. For more information about these
// modes, see [Read/write capacity mode].
//
// You may need to switch to on-demand mode at least once in order to return a
// BillingModeSummary response.
//
// [Read/write capacity mode]: https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/HowItWorks.ReadWriteCapacityMode.html
type BillingModeSummary struct {

	// Controls how you are charged for read and write throughput and how you manage
	// capacity. This setting can be changed later.
	//
	//   - PROVISIONED - Sets the read/write capacity mode to PROVISIONED . We
	//   recommend using PROVISIONED for predictable workloads.
	//
	//   - PAY_PER_REQUEST - Sets the read/write capacity mode to PAY_PER_REQUEST . We
	//   recommend using PAY_PER_REQUEST for unpredictable workloads.
	BillingMode BillingMode

	// Represents the time when PAY_PER_REQUEST was last set as the read/write
	// capacity mode.
	LastUpdateToPayPerRequestDateTime *time.Time

	noSmithyDocumentSerde
}

// An ordered list of errors for each item in the request which caused the
// transaction to get cancelled. The values of the list are ordered according to
// the ordering of the TransactWriteItems request parameter. If no error occurred
// for the associated item an error with a Null code and Null message will be
// present.
type CancellationReason struct {

	// Status code for the result of the cancelled transaction.
	Code *string

	// Item in the request which caused the transaction to get cancelled.
	Item map[string]AttributeValue

	// Cancellation reason message description.
	Message *string

	noSmithyDocumentSerde
}

// Represents the amount of provisioned throughput capacity consumed on a table or
// an index.
type Capacity struct {

	// The total number of capacity units consumed on a table or an index.
	CapacityUnits *float64

	// The total number of read capacity units consumed on a table or an index.
	ReadCapacityUnits *float64

	// The total number of write capacity units consumed on a table or an index.
	WriteCapacityUnits *float64

	noSmithyDocumentSerde
}

// Represents the selection criteria for a Query or Scan operation:
//
//   - For a Query operation, Condition is used for specifying the KeyConditions to
//     use when querying a table or an index. For KeyConditions , only the following
//     comparison operators are supported:
//
// EQ | LE | LT | GE | GT | BEGINS_WITH | BETWEEN
//
// Condition is also used in a QueryFilter , which evaluates the query results and
//
//	returns only the desired values.
//
//	- For a Scan operation, Condition is used in a ScanFilter , which evaluates
//	the scan results and returns only the desired values.
type Condition struct {

	// A comparator for evaluating attributes. For example, equals, greater than, less
	// than, etc.
	//
	// The following comparison operators are available:
	//
	//     EQ | NE | LE | LT | GE | GT | NOT_NULL | NULL | CONTAINS | NOT_CONTAINS |
	//     BEGINS_WITH | IN | BETWEEN
	//
	// The following are descriptions of each comparison operator.
	//
	//   - EQ : Equal. EQ is supported for all data types, including lists and maps.
	//
	// AttributeValueList can contain only one AttributeValue element of type String,
	//   Number, Binary, String Set, Number Set, or Binary Set. If an item contains an
	//   AttributeValue element of a different type than the one provided in the
	//   request, the value does not match. For example, {"S":"6"} does not equal
	//   {"N":"6"} . Also, {"N":"6"} does not equal {"NS":["6", "2", "1"]} .
	//
	//   - NE : Not equal. NE is supported for all data types, including lists and maps.
	//
	// AttributeValueList can contain only one AttributeValue of type String, Number,
	//   Binary, String Set, Number Set, or Binary Set. If an item contains an
	//   AttributeValue of a different type than the one provided in the request, the
	//   value does not match. For example, {"S":"6"} does not equal {"N":"6"} . Also,
	//   {"N":"6"} does not equal {"NS":["6", "2", "1"]} .
	//
	//   - LE : Less than or equal.
	//
	// AttributeValueList can contain only one AttributeValue element of type String,
	//   Number, or Binary (not a set type). If an item contains an AttributeValue
	//   element of a different type than the one provided in the request, the value does
	//   not match. For example, {"S":"6"} does not equal {"N":"6"} . Also, {"N":"6"}
	//   does not compare to {"NS":["6", "2", "1"]} .
	//
	//   - LT : Less than.
	//
	// AttributeValueList can contain only one AttributeValue of type String, Number,
	//   or Binary (not a set type). If an item contains an AttributeValue element of a
	//   different type than the one provided in the request, the value does not match.
	//   For example, {"S":"6"} does not equal {"N":"6"} . Also, {"N":"6"} does not
	//   compare to {"NS":["6", "2", "1"]} .
	//
	//   - GE : Greater than or equal.
	//
	// AttributeValueList can contain only one AttributeValue element of type String,
	//   Number, or Binary (not a set type). If an item contains an AttributeValue
	//   element of a different type than the one provided in the request, the value does
	//   not match. For example, {"S":"6"} does not equal {"N":"6"} . Also, {"N":"6"}
	//   does not compare to {"NS":["6", "2", "1"]} .
	//
	//   - GT : Greater than.
	//
	// AttributeValueList can contain only one AttributeValue element of type String,
	//   Number, or Binary (not a set type). If an item contains an AttributeValue
	//   element of a different type than the one provided in the request, the value does
	//   not match. For example, {"S":"6"} does not equal {"N":"6"} . Also, {"N":"6"}
	//   does not compare to {"NS":["6", "2", "1"]} .
	//
	//   - NOT_NULL : The attribute exists. NOT_NULL is supported for all data types,
	//   including lists and maps.
	//
	// This operator tests for the existence of an attribute, not its data type. If
	//   the data type of attribute " a " is null, and you evaluate it using NOT_NULL ,
	//   the result is a Boolean true . This result is because the attribute " a "
	//   exists; its data type is not relevant to the NOT_NULL comparison operator.
	//
	//   - NULL : The attribute does not exist. NULL is supported for all data types,
	//   including lists and maps.
	//
	// This operator tests for the nonexistence of an attribute, not its data type. If
	//   the data type of attribute " a " is null, and you evaluate it using NULL , the
	//   result is a Boolean false . This is because the attribute " a " exists; its
	//   data type is not relevant to the NULL comparison operator.
	//
	//   - CONTAINS : Checks for a subsequence, or value in a set.
	//
	// AttributeValueList can contain only one AttributeValue element of type String,
	//   Number, or Binary (not a set type). If the target attribute of the comparison is
	//   of type String, then the operator checks for a substring match. If the target
	//   attribute of the comparison is of type Binary, then the operator looks for a
	//   subsequence of the target that matches the input. If the target attribute of the
	//   comparison is a set (" SS ", " NS ", or " BS "), then the operator evaluates
	//   to true if it finds an exact match with any member of the set.
	//
	// CONTAINS is supported for lists: When evaluating " a CONTAINS b ", " a " can be
	//   a list; however, " b " cannot be a set, a map, or a list.
	//
	//   - NOT_CONTAINS : Checks for absence of a subsequence, or absence of a value in
	//   a set.
	//
	// AttributeValueList can contain only one AttributeValue element of type String,
	//   Number, or Binary (not a set type). If the target attribute of the comparison is
	//   a String, then the operator checks for the absence of a substring match. If the
	//   target attribute of the comparison is Binary, then the operator checks for the
	//   absence of a subsequence of the target that matches the input. If the target
	//   attribute of the comparison is a set (" SS ", " NS ", or " BS "), then the
	//   operator evaluates to true if it does not find an exact match with any member of
	//   the set.
	//
	// NOT_CONTAINS is supported for lists: When evaluating " a NOT CONTAINS b ", " a "
	//   can be a list; however, " b " cannot be a set, a map, or a list.
	//
	//   - BEGINS_WITH : Checks for a prefix.
	//
	// AttributeValueList can contain only one AttributeValue of type String or Binary
	//   (not a Number or a set type). The target attribute of the comparison must be of
	//   type String or Binary (not a Number or a set type).
	//
	//   - IN : Checks for matching elements in a list.
	//
	// AttributeValueList can contain one or more AttributeValue elements of type
	//   String, Number, or Binary. These attributes are compared against an existing
	//   attribute of an item. If any elements of the input are equal to the item
	//   attribute, the expression evaluates to true.
	//
	//   - BETWEEN : Greater than or equal to the first value, and less than or equal
	//   to the second value.
	//
	// AttributeValueList must contain two AttributeValue elements of the same type,
	//   either String, Number, or Binary (not a set type). A target attribute matches if
	//   the target value is greater than, or equal to, the first element and less than,
	//   or equal to, the second element. If an item contains an AttributeValue element
	//   of a different type than the one provided in the request, the value does not
	//   match. For example, {"S":"6"} does not compare to {"N":"6"} . Also, {"N":"6"}
	//   does not compare to {"NS":["6", "2", "1"]}
	//
	// For usage examples of AttributeValueList and ComparisonOperator , see [Legacy Conditional Parameters] in the
	// Amazon DynamoDB Developer Guide.
	//
	// [Legacy Conditional Parameters]: https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/LegacyConditionalParameters.html
	//
	// This member is required.
	ComparisonOperator ComparisonOperator

	// One or more values to evaluate against the supplied attribute. The number of
	// values in the list depends on the ComparisonOperator being used.
	//
	// For type Number, value comparisons are numeric.
	//
	// String value comparisons for greater than, equals, or less than are based on
	// ASCII character code values. For example, a is greater than A , and a is
	// greater than B . For a list of code values, see [http://en.wikipedia.org/wiki/ASCII#ASCII_printable_characters].
	//
	// For Binary, DynamoDB treats each byte of the binary data as unsigned when it
	// compares binary values.
	//
	// [http://en.wikipedia.org/wiki/ASCII#ASCII_printable_characters]: http://en.wikipedia.org/wiki/ASCII#ASCII_printable_characters
	AttributeValueList []AttributeValue

	noSmithyDocumentSerde
}

// Represents a request to perform a check that an item exists or to check the
// condition of specific attributes of the item.
type ConditionCheck struct {

	// A condition that must be satisfied in order for a conditional update to
	// succeed. For more information, see [Condition expressions]in the Amazon DynamoDB Developer Guide.
	//
	// [Condition expressions]: https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.ConditionExpressions.html
	//
	// This member is required.
	ConditionExpression *string

	// The primary key of the item to be checked. Each element consists of an
	// attribute name and a value for that attribute.
	//
	// This member is required.
	Key map[string]AttributeValue

	// Name of the table for the check item request. You can also provide the Amazon
	// Resource Name (ARN) of the table in this parameter.
	//
	// This member is required.
	TableName *string

	// One or more substitution tokens for attribute names in an expression. For more
	// information, see [Expression attribute names]in the Amazon DynamoDB Developer Guide.
	//
	// [Expression attribute names]: https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.ExpressionAttributeNames.html
	ExpressionAttributeNames map[string]string

	// One or more values that can be substituted in an expression. For more
	// information, see [Condition expressions]in the Amazon DynamoDB Developer Guide.
	//
	// [Condition expressions]: https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.ConditionExpressions.html
	ExpressionAttributeValues map[string]AttributeValue

	// Use ReturnValuesOnConditionCheckFailure to get the item attributes if the
	// ConditionCheck condition fails. For ReturnValuesOnConditionCheckFailure , the
	// valid values are: NONE and ALL_OLD.
	ReturnValuesOnConditionCheckFailure ReturnValuesOnConditionCheckFailure

	noSmithyDocumentSerde
}

// The capacity units consumed by an operation. The data returned includes the
// total provisioned throughput consumed, along with statistics for the table and
// any indexes involved in the operation. ConsumedCapacity is only returned if the
// request asked for it. For more information, see [Provisioned capacity mode]in the Amazon DynamoDB
// Developer Guide.
//
// [Provisioned capacity mode]: https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/provisioned-capacity-mode.html
type ConsumedCapacity struct {

	// The total number of capacity units consumed by the operation.
	CapacityUnits *float64

	// The amount of throughput consumed on each global index affected by the
	// operation.
	GlobalSecondaryIndexes map[string]Capacity

	// The amount of throughput consumed on each local index affected by the operation.
	LocalSecondaryIndexes map[string]Capacity

	// The total number of read capacity units consumed by the operation.
	ReadCapacityUnits *float64

	// The amount of throughput consumed on the table affected by the operation.
	Table *Capacity

	// The name of the table that was affected by the operation. If you had specified
	// the Amazon Resource Name (ARN) of a table in the input, you'll see the table ARN
	// in the response.
	TableName *string

	// The total number of write capacity units consumed by the operation.
	WriteCapacityUnits *float64

	noSmithyDocumentSerde
}

// Represents the continuous backups and point in time recovery settings on the
// table.
type ContinuousBackupsDescription struct {

	// ContinuousBackupsStatus can be one of the following states: ENABLED, DISABLED
	//
	// This member is required.
	ContinuousBackupsStatus ContinuousBackupsStatus

	// The description of the point in time recovery settings applied to the table.
	PointInTimeRecoveryDescription *PointInTimeRecoveryDescription

	noSmithyDocumentSerde
}

// Represents a Contributor Insights summary entry.
type ContributorInsightsSummary struct {

	// Indicates the current mode of CloudWatch Contributor Insights, specifying
	// whether it tracks all access and throttled events or throttled events only for
	// the DynamoDB table or index.
	ContributorInsightsMode ContributorInsightsMode

	// Describes the current status for contributor insights for the given table and
	// index, if applicable.
	ContributorInsightsStatus ContributorInsightsStatus

	// Name of the index associated with the summary, if any.
	IndexName *string

	// Name of the table associated with the summary.
	TableName *string

	noSmithyDocumentSerde
}

// Represents a new global secondary index to be added to an existing table.
type CreateGlobalSecondaryIndexAction struct {

	// The name of the global secondary index to be created.
	//
	// This member is required.
	IndexName *string

	// The key schema for the global secondary index. Global secondary index supports
	// up to 4 partition and up to 4 sort keys.
	//
	// This member is required.
	KeySchema []KeySchemaElement

	// 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.
	//
	// This member is required.
	Projection *Projection

	// The maximum number of read and write units for the global secondary index being
	// created. If you use this parameter, you must specify MaxReadRequestUnits ,
	// MaxWriteRequestUnits , or both. You must use either OnDemand Throughput or
	// ProvisionedThroughput based on your table's capacity mode.
	OnDemandThroughput *OnDemandThroughput

	// Represents the provisioned throughput settings for the specified global
	// secondary index.
	//
	// For current minimum and maximum provisioned throughput values, see [Service, Account, and Table Quotas] in the
	// Amazon DynamoDB Developer Guide.
	//
	// [Service, Account, and Table Quotas]: https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Limits.html
	ProvisionedThroughput *ProvisionedThroughput

	// Represents the warm throughput value (in read units per second and write units
	// per second) when creating a secondary index.
	WarmThroughput *WarmThroughput

	noSmithyDocumentSerde
}

// Specifies the action to add a new witness Region to a MRSC global table. A MRSC
// global table can be configured with either three replicas, or with two replicas
// and one witness.
type CreateGlobalTableWitnessGroupMemberAction struct {

	// The Amazon Web Services Region name to be added as a witness Region for the
	// MRSC global table. The witness must be in a different Region than the replicas
	// and within the same Region set:
	//
	//   - US Region set: US East (N. Virginia), US East (Ohio), US West (Oregon)
	//
	//   - EU Region set: Europe (Ireland), Europe (London), Europe (Paris), Europe
	//   (Frankfurt)
	//
	//   - AP Region set: Asia Pacific (Tokyo), Asia Pacific (Seoul), Asia Pacific
	//   (Osaka)
	//
	// This member is required.
	RegionName *string

	noSmithyDocumentSerde
}

// Represents a replica to be added.
type CreateReplicaAction struct {

	// The Region of the replica to be added.
	//
	// This member is required.
	RegionName *string

	noSmithyDocumentSerde
}

// Represents a replica to be created.
type CreateReplicationGroupMemberAction struct {

	// The Region where the new replica will be created.
	//
	// This member is required.
	RegionName *string

	// Replica-specific global secondary index settings.
	GlobalSecondaryIndexes []ReplicaGlobalSecondaryIndex

	// The KMS key that should be used for KMS encryption in the new replica. 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 KMS key alias/aws/dynamodb .
	KMSMasterKeyId *string

	// The maximum on-demand throughput settings for the specified replica table being
	// created. You can only modify MaxReadRequestUnits , because you can't modify
	// MaxWriteRequestUnits for individual replica tables.
	OnDemandThroughputOverride *OnDemandThroughputOverride

	// Replica-specific provisioned throughput. If not specified, uses the source
	// table's provisioned throughput settings.
	ProvisionedThroughputOverride *ProvisionedThroughputOverride

	// Replica-specific table class. If not specified, uses the source table's table
	// class.
	TableClassOverride TableClass

	noSmithyDocumentSerde
}

// Processing options for the CSV file being imported.
type CsvOptions struct {

	//  The delimiter used for separating items in the CSV file being imported.
	Delimiter *string

	//  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.
	HeaderList []string

	noSmithyDocumentSerde
}

// Represents a request to perform a DeleteItem operation.
type Delete struct {

	// The primary key of the item to be deleted. Each element consists of an
	// attribute name and a value for that attribute.
	//
	// This member is required.
	Key map[string]AttributeValue

	// Name of the table in which the item to be deleted resides. You can also provide
	// the Amazon Resource Name (ARN) of the table in this parameter.
	//
	// This member is required.
	TableName *string

	// A condition that must be satisfied in order for a conditional delete to succeed.
	ConditionExpression *string

	// One or more substitution tokens for attribute names in an expression.
	ExpressionAttributeNames map[string]string

	// One or more values that can be substituted in an expression.
	ExpressionAttributeValues map[string]AttributeValue

	// Use ReturnValuesOnConditionCheckFailure to get the item attributes if the Delete
	// condition fails. For ReturnValuesOnConditionCheckFailure , the valid values are:
	// NONE and ALL_OLD.
	ReturnValuesOnConditionCheckFailure ReturnValuesOnConditionCheckFailure

	noSmithyDocumentSerde
}

// Represents a global secondary index to be deleted from an existing table.
type DeleteGlobalSecondaryIndexAction struct {

	// The name of the global secondary index to be deleted.
	//
	// This member is required.
	IndexName *string

	noSmithyDocumentSerde
}

// Specifies the action to remove a witness Region from a MRSC global table. You
// cannot delete a single witness from a MRSC global table - you must delete both a
// replica and the witness together. The deletion of both a witness and replica
// converts the remaining replica to a single-Region DynamoDB table.
type DeleteGlobalTableWitnessGroupMemberAction struct {

	// The witness Region name to be removed from the MRSC global table.
	//
	// This member is required.
	RegionName *string

	noSmithyDocumentSerde
}

// Represents a replica to be removed.
type DeleteReplicaAction struct {

	// The Region of the replica to be removed.
	//
	// This member is required.
	RegionName *string

	noSmithyDocumentSerde
}

// Represents a replica to be deleted.
type DeleteReplicationGroupMemberAction struct {

	// The Region where the replica exists.
	//
	// This member is required.
	RegionName *string

	noSmithyDocumentSerde
}

// Represents a request to perform a DeleteItem operation on an item.
type DeleteRequest struct {

	// A map of attribute name to attribute values, representing the primary key of
	// the item to delete. All of the table's primary key attributes must be specified,
	// and their data types must match those of the table's key schema.
	//
	// This member is required.
	Key map[string]AttributeValue

	noSmithyDocumentSerde
}

// Enables setting the configuration for Kinesis Streaming.
type EnableKinesisStreamingConfiguration struct {

	// Toggle for the precision of Kinesis data stream timestamp. The values are
	// either MILLISECOND or MICROSECOND .
	ApproximateCreationDateTimePrecision ApproximateCreationDateTimePrecision

	noSmithyDocumentSerde
}

// An endpoint information details.
type Endpoint struct {

	// IP address of the endpoint.
	//
	// This member is required.
	Address *string

	// Endpoint cache time to live (TTL) value.
	//
	// This member is required.
	CachePeriodInMinutes int64

	noSmithyDocumentSerde
}

// Represents a condition to be compared with an attribute value. This condition
// can be used with DeleteItem , PutItem , or UpdateItem operations; if the
// comparison evaluates to true, the operation succeeds; if not, the operation
// fails. You can use ExpectedAttributeValue in one of two different ways:
//
//   - Use AttributeValueList to specify one or more values to compare against an
//     attribute. Use ComparisonOperator to specify how you want to perform the
//     comparison. If the comparison evaluates to true, then the conditional operation
//     succeeds.
//
//   - Use Value to specify a value that DynamoDB will compare against an
//     attribute. If the values match, then ExpectedAttributeValue evaluates to true
//     and the conditional operation succeeds. Optionally, you can also set Exists to
//     false, indicating that you do not expect to find the attribute value in the
//     table. In this case, the conditional operation succeeds only if the comparison
//     evaluates to false.
//
// Value and Exists are incompatible with AttributeValueList and ComparisonOperator
// . Note that if you use both sets of parameters at once, DynamoDB will return a
// ValidationException exception.
type ExpectedAttributeValue struct {

	// One or more values to evaluate against the supplied attribute. The number of
	// values in the list depends on the ComparisonOperator being used.
	//
	// For type Number, value comparisons are numeric.
	//
	// String value comparisons for greater than, equals, or less than are based on
	// ASCII character code values. For example, a is greater than A , and a is
	// greater than B . For a list of code values, see [http://en.wikipedia.org/wiki/ASCII#ASCII_printable_characters].
	//
	// For Binary, DynamoDB treats each byte of the binary data as unsigned when it
	// compares binary values.
	//
	// For information on specifying data types in JSON, see [JSON Data Format] in the Amazon DynamoDB
	// Developer Guide.
	//
	// [http://en.wikipedia.org/wiki/ASCII#ASCII_printable_characters]: http://en.wikipedia.org/wiki/ASCII#ASCII_printable_characters
	// [JSON Data Format]: https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/DataFormat.html
	AttributeValueList []AttributeValue

	// A comparator for evaluating attributes in the AttributeValueList . For example,
	// equals, greater than, less than, etc.
	//
	// The following comparison operators are available:
	//
	//     EQ | NE | LE | LT | GE | GT | NOT_NULL | NULL | CONTAINS | NOT_CONTAINS |
	//     BEGINS_WITH | IN | BETWEEN
	//
	// The following are descriptions of each comparison operator.
	//
	//   - EQ : Equal. EQ is supported for all data types, including lists and maps.
	//
	// AttributeValueList can contain only one AttributeValue element of type String,
	//   Number, Binary, String Set, Number Set, or Binary Set. If an item contains an
	//   AttributeValue element of a different type than the one provided in the
	//   request, the value does not match. For example, {"S":"6"} does not equal
	//   {"N":"6"} . Also, {"N":"6"} does not equal {"NS":["6", "2", "1"]} .
	//
	//   - NE : Not equal. NE is supported for all data types, including lists and maps.
	//
	// AttributeValueList can contain only one AttributeValue of type String, Number,
	//   Binary, String Set, Number Set, or Binary Set. If an item contains an
	//   AttributeValue of a different type than the one provided in the request, the
	//   value does not match. For example, {"S":"6"} does not equal {"N":"6"} . Also,
	//   {"N":"6"} does not equal {"NS":["6", "2", "1"]} .
	//
	//   - LE : Less than or equal.
	//
	// AttributeValueList can contain only one AttributeValue element of type String,
	//   Number, or Binary (not a set type). If an item contains an AttributeValue
	//   element of a different type than the one provided in the request, the value does
	//   not match. For example, {"S":"6"} does not equal {"N":"6"} . Also, {"N":"6"}
	//   does not compare to {"NS":["6", "2", "1"]} .
	//
	//   - LT : Less than.
	//
	// AttributeValueList can contain only one AttributeValue of type String, Number,
	//   or Binary (not a set type). If an item contains an AttributeValue element of a
	//   different type than the one provided in the request, the value does not match.
	//   For example, {"S":"6"} does not equal {"N":"6"} . Also, {"N":"6"} does not
	//   compare to {"NS":["6", "2", "1"]} .
	//
	//   - GE : Greater than or equal.
	//
	// AttributeValueList can contain only one AttributeValue element of type String,
	//   Number, or Binary (not a set type). If an item contains an AttributeValue
	//   element of a different type than the one provided in the request, the value does
	//   not match. For example, {"S":"6"} does not equal {"N":"6"} . Also, {"N":"6"}
	//   does not compare to {"NS":["6", "2", "1"]} .
	//
	//   - GT : Greater than.
	//
	// AttributeValueList can contain only one AttributeValue element of type String,
	//   Number, or Binary (not a set type). If an item contains an AttributeValue
	//   element of a different type than the one provided in the request, the value does
	//   not match. For example, {"S":"6"} does not equal {"N":"6"} . Also, {"N":"6"}
	//   does not compare to {"NS":["6", "2", "1"]} .
	//
	//   - NOT_NULL : The attribute exists. NOT_NULL is supported for all data types,
	//   including lists and maps.
	//
	// This operator tests for the existence of an attribute, not its data type. If
	//   the data type of attribute " a " is null, and you evaluate it using NOT_NULL ,
	//   the result is a Boolean true . This result is because the attribute " a "
	//   exists; its data type is not relevant to the NOT_NULL comparison operator.
	//
	//   - NULL : The attribute does not exist. NULL is supported for all data types,
	//   including lists and maps.
	//
	// This operator tests for the nonexistence of an attribute, not its data type. If
	//   the data type of attribute " a " is null, and you evaluate it using NULL , the
	//   result is a Boolean false . This is because the attribute " a " exists; its
	//   data type is not relevant to the NULL comparison operator.
	//
	//   - CONTAINS : Checks for a subsequence, or value in a set.
	//
	// AttributeValueList can contain only one AttributeValue element of type String,
	//   Number, or Binary (not a set type). If the target attribute of the comparison is
	//   of type String, then the operator checks for a substring match. If the target
	//   attribute of the comparison is of type Binary, then the operator looks for a
	//   subsequence of the target that matches the input. If the target attribute of the
	//   comparison is a set (" SS ", " NS ", or " BS "), then the operator evaluates
	//   to true if it finds an exact match with any member of the set.
	//
	// CONTAINS is supported for lists: When evaluating " a CONTAINS b ", " a " can be
	//   a list; however, " b " cannot be a set, a map, or a list.
	//
	//   - NOT_CONTAINS : Checks for absence of a subsequence, or absence of a value in
	//   a set.
	//
	// AttributeValueList can contain only one AttributeValue element of type String,
	//   Number, or Binary (not a set type). If the target attribute of the comparison is
	//   a String, then the operator checks for the absence of a substring match. If the
	//   target attribute of the comparison is Binary, then the operator checks for the
	//   absence of a subsequence of the target that matches the input. If the target
	//   attribute of the comparison is a set (" SS ", " NS ", or " BS "), then the
	//   operator evaluates to true if it does not find an exact match with any member of
	//   the set.
	//
	// NOT_CONTAINS is supported for lists: When evaluating " a NOT CONTAINS b ", " a "
	//   can be a list; however, " b " cannot be a set, a map, or a list.
	//
	//   - BEGINS_WITH : Checks for a prefix.
	//
	// AttributeValueList can contain only one AttributeValue of type String or Binary
	//   (not a Number or a set type). The target attribute of the comparison must be of
	//   type String or Binary (not a Number or a set type).
	//
	//   - IN : Checks for matching elements in a list.
	//
	// AttributeValueList can contain one or more AttributeValue elements of type
	//   String, Number, or Binary. These attributes are compared against an existing
	//   attribute of an item. If any elements of the input are equal to the item
	//   attribute, the expression evaluates to true.
	//
	//   - BETWEEN : Greater than or equal to the first value, and less than or equal
	//   to the second value.
	//
	// AttributeValueList must contain two AttributeValue elements of the same type,
	//   either String, Number, or Binary (not a set type). A target attribute matches if
	//   the target value is greater than, or equal to, the first element and less than,
	//   or equal to, the second element. If an item contains an AttributeValue element
	//   of a different type than the one provided in the request, the value does not
	//   match. For example, {"S":"6"} does not compare to {"N":"6"} . Also, {"N":"6"}
	//   does not compare to {"NS":["6", "2", "1"]}
	ComparisonOperator ComparisonOperator

	// Causes DynamoDB to evaluate the value before attempting a conditional operation:
	//
	//   - If Exists is true , DynamoDB will check to see if that attribute value
	//   already exists in the table. If it is found, then the operation succeeds. If it
	//   is not found, the operation fails with a ConditionCheckFailedException .
	//
	//   - If Exists is false , DynamoDB assumes that the attribute value does not
	//   exist in the table. If in fact the value does not exist, then the assumption is
	//   valid and the operation succeeds. If the value is found, despite the assumption
	//   that it does not exist, the operation fails with a
	//   ConditionCheckFailedException .
	//
	// The default setting for Exists is true . If you supply a Value all by itself,
	// DynamoDB assumes the attribute exists: You don't have to set Exists to true ,
	// because it is implied.
	//
	// DynamoDB returns a ValidationException if:
	//
	//   - Exists is true but there is no Value to check. (You expect a value to exist,
	//   but don't specify what that value is.)
	//
	//   - Exists is false but you also provide a Value . (You cannot expect an
	//   attribute to have a value, while also expecting it not to exist.)
	Exists *bool

	// Represents the data for the expected attribute.
	//
	// Each attribute value is described as a name-value pair. The name is the data
	// type, and the value is the data itself.
	//
	// For more information, see [Data Types] in the Amazon DynamoDB Developer Guide.
	//
	// [Data Types]: https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/HowItWorks.NamingRulesDataTypes.html#HowItWorks.DataTypes
	Value AttributeValue

	noSmithyDocumentSerde
}

// Represents the properties of the exported table.
type ExportDescription struct {

	// The billable size of the table export.
	BilledSizeBytes *int64

	// The client token that was provided for the export task. A client token makes
	// calls to ExportTableToPointInTimeInput idempotent, meaning that multiple
	// identical calls have the same effect as one single call.
	ClientToken *string

	// The time at which the export task completed.
	EndTime *time.Time

	// The Amazon Resource Name (ARN) of the table export.
	ExportArn *string

	// The format of the exported data. Valid values for ExportFormat are DYNAMODB_JSON
	// or ION .
	ExportFormat ExportFormat

	// The name of the manifest file for the export task.
	ExportManifest *string

	// Export can be in one of the following states: IN_PROGRESS, COMPLETED, or FAILED.
	ExportStatus ExportStatus

	// Point in time from which table data was exported.
	ExportTime *time.Time

	// The type of export that was performed. Valid values are FULL_EXPORT or
	// INCREMENTAL_EXPORT .
	ExportType ExportType

	// Status code for the result of the failed export.
	FailureCode *string

	// Export failure reason description.
	FailureMessage *string

	// Optional object containing the parameters specific to an incremental export.
	IncrementalExportSpecification *IncrementalExportSpecification

	// The number of items exported.
	ItemCount *int64

	// The name of the Amazon S3 bucket containing the export.
	S3Bucket *string

	// The ID of the Amazon Web Services account that owns the bucket containing the
	// export.
	S3BucketOwner *string

	// The Amazon S3 bucket prefix used as the file name and path of the exported
	// snapshot.
	S3Prefix *string

	// Type of encryption used on the bucket where export data is stored. Valid values
	// for S3SseAlgorithm are:
	//
	//   - AES256 - server-side encryption with Amazon S3 managed keys
	//
	//   - KMS - server-side encryption with KMS managed keys
	S3SseAlgorithm S3SseAlgorithm

	// The ID of the KMS managed key used to encrypt the S3 bucket where export data
	// is stored (if applicable).
	S3SseKmsKeyId *string

	// The time at which the export task began.
	StartTime *time.Time

	// The Amazon Resource Name (ARN) of the table that was exported.
	TableArn *string

	// Unique ID of the table that was exported.
	TableId *string

	noSmithyDocumentSerde
}

// Summary information about an export task.
type ExportSummary struct {

	// The Amazon Resource Name (ARN) of the export.
	ExportArn *string

	// Export can be in one of the following states: IN_PROGRESS, COMPLETED, or FAILED.
	ExportStatus ExportStatus

	// The type of export that was performed. Valid values are FULL_EXPORT or
	// INCREMENTAL_EXPORT .
	ExportType ExportType

	noSmithyDocumentSerde
}

// Represents a failure a contributor insights operation.
type FailureException struct {

	// Description of the failure.
	ExceptionDescription *string

	// Exception name.
	ExceptionName *string

	noSmithyDocumentSerde
}

// Specifies an item and related attribute values to retrieve in a TransactGetItem
// object.
type Get struct {

	// A map of attribute names to AttributeValue objects that specifies the primary
	// key of the item to retrieve.
	//
	// This member is required.
	Key map[string]AttributeValue

	// The name of the table from which to retrieve the specified item. You can also
	// provide the Amazon Resource Name (ARN) of the table in this parameter.
	//
	// This member is required.
	TableName *string

	// One or more substitution tokens for attribute names in the ProjectionExpression
	// parameter.
	ExpressionAttributeNames map[string]string

	// A string that identifies one or more attributes of the specified item to
	// retrieve from the table. The attributes in the expression must be separated by
	// commas. If no attribute names are specified, then all attributes of the
	// specified item are returned. If any of the requested attributes are not found,
	// they do not appear in the result.
	ProjectionExpression *string

	noSmithyDocumentSerde
}

// Represents the properties of a global secondary index.
type GlobalSecondaryIndex struct {

	// The name of the global secondary index. The name must be unique among all other
	// indexes on this table.
	//
	// This member is required.
	IndexName *string

	// The complete key schema for a global secondary index, which consists of one or
	// more pairs of attribute names and key types:
	//
	//   - 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.
	//
	// This member is required.
	KeySchema []KeySchemaElement

	// 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.
	//
	// This member is required.
	Projection *Projection

	// 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. You must use either OnDemandThroughput or
	// ProvisionedThroughput based on your table's capacity mode.
	OnDemandThroughput *OnDemandThroughput

	// Represents the provisioned throughput settings for the specified global
	// secondary index. You must use either OnDemandThroughput or ProvisionedThroughput
	// based on your table's capacity mode.
	//
	// For current minimum and maximum provisioned throughput values, see [Service, Account, and Table Quotas] in the
	// Amazon DynamoDB Developer Guide.
	//
	// [Service, Account, and Table Quotas]: https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Limits.html
	ProvisionedThroughput *ProvisionedThroughput

	// 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.
	WarmThroughput *WarmThroughput

	noSmithyDocumentSerde
}

// Represents the auto scaling settings of a global secondary index for a global
// table that will be modified.
type GlobalSecondaryIndexAutoScalingUpdate struct {

	// The name of the global secondary index.
	IndexName *string

	// Represents the auto scaling settings to be modified for a global table or
	// global secondary index.
	ProvisionedWriteCapacityAutoScalingUpdate *AutoScalingSettingsUpdate

	noSmithyDocumentSerde
}

// Represents the properties of a global secondary index.
type GlobalSecondaryIndexDescription struct {

	// Indicates whether the index is currently backfilling. Backfilling is the
	// process of reading items from the table and determining whether they can be
	// added to the index. (Not all items will qualify: For example, a partition key
	// cannot have any duplicate values.) If an item can be added to the index,
	// DynamoDB will do so. After all items have been processed, the backfilling
	// operation is complete and Backfilling is false.
	//
	// 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.
	//
	// For indexes that were created during a CreateTable operation, the Backfilling
	// attribute does not appear in the DescribeTable output.
	Backfilling *bool

	// The Amazon Resource Name (ARN) that uniquely identifies the index.
	IndexArn *string

	// The name of the global secondary index.
	IndexName *string

	// The total size of the specified index, in bytes. DynamoDB updates this value
	// approximately every six hours. Recent changes might not be reflected in this
	// value.
	IndexSizeBytes *int64

	// The current state 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.
	IndexStatus IndexStatus

	// The number of items in the specified index. DynamoDB updates this value
	// approximately every six hours. Recent changes might not be reflected in this
	// value.
	ItemCount *int64

	// The complete key schema for a global secondary index, which consists of one or
	// more pairs of attribute names and key types:
	//
	//   - 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.
	KeySchema []KeySchemaElement

	// 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.
	OnDemandThroughput *OnDemandThroughput

	// 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.
	Projection *Projection

	// Represents the provisioned throughput settings for the specified global
	// secondary index.
	//
	// For current minimum and maximum provisioned throughput values, see [Service, Account, and Table Quotas] in the
	// Amazon DynamoDB Developer Guide.
	//
	// [Service, Account, and Table Quotas]: https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Limits.html
	ProvisionedThroughput *ProvisionedThroughputDescription

	// Represents the warm throughput value (in read units per second and write units
	// per second) for the specified secondary index.
	WarmThroughput *GlobalSecondaryIndexWarmThroughputDescription

	noSmithyDocumentSerde
}

// Represents the properties of a global secondary index for the table when the
// backup was created.
type GlobalSecondaryIndexInfo struct {

	// The name of the global secondary index.
	IndexName *string

	// The complete key schema for a global secondary index, which consists of one or
	// more pairs of attribute names and key types:
	//
	//   - 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.
	KeySchema []KeySchemaElement

	// Sets the maximum number of read and write units for the specified on-demand
	// table. If you use this parameter, you must specify MaxReadRequestUnits ,
	// MaxWriteRequestUnits , or both.
	OnDemandThroughput *OnDemandThroughput

	// 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.
	Projection *Projection

	// Represents the provisioned throughput settings for the specified global
	// secondary index.
	ProvisionedThroughput *ProvisionedThroughput

	noSmithyDocumentSerde
}

// Represents one of the following:
//
//   - A new global secondary index to be added to an existing table.
//
//   - New provisioned throughput parameters for an existing global secondary
//     index.
//
//   - An existing global secondary index to be removed from an existing table.
type GlobalSecondaryIndexUpdate struct {

	// The parameters required for creating a global secondary index on an existing
	// table:
	//
	//   - IndexName
	//
	//   - KeySchema
	//
	//   - AttributeDefinitions
	//
	//   - Projection
	//
	//   - ProvisionedThroughput
	Create *CreateGlobalSecondaryIndexAction

	// The name of an existing global secondary index to be removed.
	Delete *DeleteGlobalSecondaryIndexAction

	// The name of an existing global secondary index, along with new provisioned
	// throughput settings to be applied to that index.
	Update *UpdateGlobalSecondaryIndexAction

	noSmithyDocumentSerde
}

// The description of the warm throughput value on a global secondary index.
type GlobalSecondaryIndexWarmThroughputDescription struct {

	// Represents warm throughput read units per second value for a global secondary
	// index.
	ReadUnitsPerSecond *int64

	// Represents the warm throughput status being created or updated on a global
	// secondary index. The status can only be UPDATING or ACTIVE .
	Status IndexStatus

	// Represents warm throughput write units per second value for a global secondary
	// index.
	WriteUnitsPerSecond *int64

	noSmithyDocumentSerde
}

// Represents the properties of a global table.
type GlobalTable struct {

	// The global table name.
	GlobalTableName *string

	// The Regions where the global table has replicas.
	ReplicationGroup []Replica

	noSmithyDocumentSerde
}

// Contains details about the global table.
type GlobalTableDescription struct {

	// The creation time of the global table.
	CreationDateTime *time.Time

	// The unique identifier of the global table.
	GlobalTableArn *string

	// The global table name.
	GlobalTableName *string

	// The current state of the global table:
	//
	//   - CREATING - The global table is being created.
	//
	//   - UPDATING - The global table is being updated.
	//
	//   - DELETING - The global table is being deleted.
	//
	//   - ACTIVE - The global table is ready for use.
	GlobalTableStatus GlobalTableStatus

	// The Regions where the global table has replicas.
	ReplicationGroup []ReplicaDescription

	noSmithyDocumentSerde
}

// Represents the settings of a global secondary index for a global table that
// will be modified.
type GlobalTableGlobalSecondaryIndexSettingsUpdate struct {

	// The name of the global secondary index. The name must be unique among all other
	// indexes on this table.
	//
	// This member is required.
	IndexName *string

	// Auto scaling settings for managing a global secondary index's write capacity
	// units.
	ProvisionedWriteCapacityAutoScalingSettingsUpdate *AutoScalingSettingsUpdate

	// The maximum number of writes consumed per second before DynamoDB returns a
	// ThrottlingException.
	ProvisionedWriteCapacityUnits *int64

	noSmithyDocumentSerde
}

// Represents the properties of a witness Region in a MRSC global table.
type GlobalTableWitnessDescription struct {

	// The name of the Amazon Web Services Region that serves as a witness for the
	// MRSC global table.
	RegionName *string

	// The current status of the witness Region in the MRSC global table.
	WitnessStatus WitnessStatus

	noSmithyDocumentSerde
}

// Represents one of the following:
//
//   - A new witness to be added to a new global table.
//
//   - An existing witness to be removed from an existing global table.
//
// You can configure one witness per MRSC global table.
type GlobalTableWitnessGroupUpdate struct {

	// Specifies a witness Region to be added to a new MRSC global table. The witness
	// must be added when creating the MRSC global table.
	Create *CreateGlobalTableWitnessGroupMemberAction

	// Specifies a witness Region to be removed from an existing global table. Must be
	// done in conjunction with removing a replica. The deletion of both a witness and
	// replica converts the remaining replica to a single-Region DynamoDB table.
	Delete *DeleteGlobalTableWitnessGroupMemberAction

	noSmithyDocumentSerde
}

// Summary information about the source file for the import.
type ImportSummary struct {

	//  The Amazon Resource Number (ARN) of the Cloudwatch Log Group associated with
	// this import task.
	CloudWatchLogGroupArn *string

	//  The time at which this import task ended. (Does this include the successful
	// complete creation of the table it was imported to?)
	EndTime *time.Time

	//  The Amazon Resource Number (ARN) corresponding to the import request.
	ImportArn *string

	//  The status of the import operation.
	ImportStatus ImportStatus

	//  The format of the source data. Valid values are CSV , DYNAMODB_JSON or ION .
	InputFormat InputFormat

	//  The path and S3 bucket of the source file that is being imported. This
	// includes the S3Bucket (required), S3KeyPrefix (optional) and S3BucketOwner
	// (optional if the bucket is owned by the requester).
	S3BucketSource *S3BucketSource

	//  The time at which this import task began.
	StartTime *time.Time

	//  The Amazon Resource Number (ARN) of the table being imported into.
	TableArn *string

	noSmithyDocumentSerde
}

// Represents the properties of the table being imported into.
type ImportTableDescription struct {

	//  The client token that was provided for the import task. Reusing the client
	// token on retry makes a call to ImportTable idempotent.
	ClientToken *string

	//  The Amazon Resource Number (ARN) of the Cloudwatch Log Group associated with
	// the target table.
	CloudWatchLogGroupArn *string

	//  The time at which the creation of the table associated with this import task
	// completed.
	EndTime *time.Time

	//  The number of errors occurred on importing the source file into the target
	// table.
	ErrorCount int64

	//  The error code corresponding to the failure that the import job ran into
	// during execution.
	FailureCode *string

	//  The error message corresponding to the failure that the import job ran into
	// during execution.
	FailureMessage *string

	//  The Amazon Resource Number (ARN) corresponding to the import request.
	ImportArn *string

	//  The status of the import.
	ImportStatus ImportStatus

	//  The number of items successfully imported into the new table.
	ImportedItemCount int64

	//  The compression options for the data that has been imported into the target
	// table. The values are NONE, GZIP, or ZSTD.
	InputCompressionType InputCompressionType

	//  The format of the source data going into the target table.
	InputFormat InputFormat

	//  The format options for the data that was imported into the target table. There
	// is one value, CsvOption.
	InputFormatOptions *InputFormatOptions

	//  The total number of items processed from the source file.
	ProcessedItemCount int64

	//  The total size of data processed from the source file, in Bytes.
	ProcessedSizeBytes *int64

	//  Values for the S3 bucket the source file is imported from. Includes bucket
	// name (required), key prefix (optional) and bucket account owner ID (optional).
	S3BucketSource *S3BucketSource

	//  The time when this import task started.
	StartTime *time.Time

	//  The Amazon Resource Number (ARN) of the table being imported into.
	TableArn *string

	//  The parameters for the new table that is being imported into.
	TableCreationParameters *TableCreationParameters

	//  The table id corresponding to the table created by import table process.
	TableId *string

	noSmithyDocumentSerde
}

// Optional object containing the parameters specific to an incremental export.
type IncrementalExportSpecification struct {

	// Time in the past which provides the inclusive start range for the export
	// table's data, counted in seconds from the start of the Unix epoch. The
	// incremental export will reflect the table's state including and after this point
	// in time.
	ExportFromTime *time.Time

	// Time in the past which provides the exclusive end range for the export table's
	// data, counted in seconds from the start of the Unix epoch. The incremental
	// export will reflect the table's state just prior to this point in time. If this
	// is not provided, the latest time with data available will be used.
	ExportToTime *time.Time

	// The view type that was chosen for the export. Valid values are
	// NEW_AND_OLD_IMAGES and NEW_IMAGES . The default value is NEW_AND_OLD_IMAGES .
	ExportViewType ExportViewType

	noSmithyDocumentSerde
}

//	The format options for the data that was imported into the target table. There
//
// is one value, CsvOption.
type InputFormatOptions struct {

	//  The options for imported source files in CSV format. The values are Delimiter
	// and HeaderList.
	Csv *CsvOptions

	noSmithyDocumentSerde
}

// Information about item collections, if any, that were affected by the
// operation. ItemCollectionMetrics is only returned if the request asked for it.
// If the table does not have any local secondary indexes, this information is not
// returned in the response.
type ItemCollectionMetrics struct {

	// The partition key value of the item collection. This value is the same as the
	// partition key value of the item.
	ItemCollectionKey map[string]AttributeValue

	// An estimate of item collection size, in gigabytes. This value is a two-element
	// array containing a lower bound and an upper bound for the estimate. The estimate
	// includes the size of all the items in the table, plus the size of all attributes
	// projected into all of the local secondary indexes on that table. Use this
	// estimate to measure whether a local secondary index is approaching its size
	// limit.
	//
	// The estimate is subject to change over time; therefore, do not rely on the
	// precision or accuracy of the estimate.
	SizeEstimateRangeGB []float64

	noSmithyDocumentSerde
}

// Details for the requested item.
type ItemResponse struct {

	// Map of attribute data consisting of the data type and attribute value.
	Item map[string]AttributeValue

	noSmithyDocumentSerde
}

// Represents a set of primary keys and, for each key, the attributes to retrieve
// from the table.
//
// For each primary key, you must provide all of the key attributes. For example,
// with a simple primary key, you only need to provide the partition key. For a
// composite primary key, you must provide both the partition key and the sort key.
type KeysAndAttributes struct {

	// The primary key attribute values that define the items and the attributes
	// associated with the items.
	//
	// This member is required.
	Keys []map[string]AttributeValue

	// This is a legacy parameter. Use ProjectionExpression instead. For more
	// information, see [Legacy Conditional Parameters]in the Amazon DynamoDB Developer Guide.
	//
	// [Legacy Conditional Parameters]: https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/LegacyConditionalParameters.html
	AttributesToGet []string

	// The consistency of a read operation. If set to true , then a strongly consistent
	// read is used; otherwise, an eventually consistent read is used.
	ConsistentRead *bool

	// One or more substitution tokens for attribute names in an expression. The
	// following are some use cases for using ExpressionAttributeNames :
	//
	//   - To access an attribute whose name conflicts with a DynamoDB reserved word.
	//
	//   - To create a placeholder for repeating occurrences of an attribute name in
	//   an expression.
	//
	//   - To prevent special characters in an attribute name from being
	//   misinterpreted in an expression.
	//
	// Use the # character in an expression to dereference an attribute name. For
	// example, consider the following attribute name:
	//
	//   - Percentile
	//
	// The name of this attribute conflicts with a reserved word, so it cannot be used
	// directly in an expression. (For the complete list of reserved words, see [Reserved Words]in the
	// Amazon DynamoDB Developer Guide). To work around this, you could specify the
	// following for ExpressionAttributeNames :
	//
	//   - {"#P":"Percentile"}
	//
	// You could then use this substitution in an expression, as in this example:
	//
	//   - #P = :val
	//
	// Tokens that begin with the : character are expression attribute values, which
	// are placeholders for the actual value at runtime.
	//
	// For more information on expression attribute names, see [Accessing Item Attributes] in the Amazon DynamoDB
	// Developer Guide.
	//
	// [Reserved Words]: https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ReservedWords.html
	// [Accessing Item Attributes]: https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.AccessingItemAttributes.html
	ExpressionAttributeNames map[string]string

	// A string that identifies one or more attributes to retrieve from the table.
	// These attributes can include scalars, sets, or elements of a JSON document. The
	// attributes in the ProjectionExpression must be separated by commas.
	//
	// If no attribute names are specified, then all attributes will be returned. If
	// any of the requested attributes are not found, they will not appear in the
	// result.
	//
	// For more information, see [Accessing Item Attributes] in the Amazon DynamoDB Developer Guide.
	//
	// [Accessing Item Attributes]: https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.AccessingItemAttributes.html
	ProjectionExpression *string

	noSmithyDocumentSerde
}

// 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.
//
// 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.
//
// 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.
type KeySchemaElement struct {

	// The name of a key attribute.
	//
	// This member is required.
	AttributeName *string

	// The role that this key attribute will assume:
	//
	//   - 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.
	//
	// This member is required.
	KeyType KeyType

	noSmithyDocumentSerde
}

// Describes a Kinesis data stream destination.
type KinesisDataStreamDestination struct {

	// The precision of the Kinesis data stream timestamp. The values are either
	// MILLISECOND or MICROSECOND .
	ApproximateCreationDateTimePrecision ApproximateCreationDateTimePrecision

	// The current status of replication.
	DestinationStatus DestinationStatus

	// The human-readable string that corresponds to the replica status.
	DestinationStatusDescription *string

	// The ARN for a specific Kinesis data stream.
	StreamArn *string

	noSmithyDocumentSerde
}

// Represents the properties of a local secondary index.
type LocalSecondaryIndex struct {

	// The name of the local secondary index. The name must be unique among all other
	// indexes on this table.
	//
	// This member is required.
	IndexName *string

	// The complete key schema for the local secondary index, consisting of one or
	// more pairs of attribute names and key types:
	//
	//   - 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.
	//
	// This member is required.
	KeySchema []KeySchemaElement

	// 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.
	//
	// This member is required.
	Projection *Projection

	noSmithyDocumentSerde
}

// Represents the properties of a local secondary index.
type LocalSecondaryIndexDescription struct {

	// The Amazon Resource Name (ARN) that uniquely identifies the index.
	IndexArn *string

	// Represents the name of the local secondary index.
	IndexName *string

	// The total size of the specified index, in bytes. DynamoDB updates this value
	// approximately every six hours. Recent changes might not be reflected in this
	// value.
	IndexSizeBytes *int64

	// The number of items in the specified index. DynamoDB updates this value
	// approximately every six hours. Recent changes might not be reflected in this
	// value.
	ItemCount *int64

	// The complete key schema for the local secondary index, consisting of one or
	// more pairs of attribute names and key types:
	//
	//   - 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.
	KeySchema []KeySchemaElement

	// 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.
	Projection *Projection

	noSmithyDocumentSerde
}

// Represents the properties of a local secondary index for the table when the
// backup was created.
type LocalSecondaryIndexInfo struct {

	// Represents the name of the local secondary index.
	IndexName *string

	// The complete key schema for a local secondary index, which consists of one or
	// more pairs of attribute names and key types:
	//
	//   - 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.
	KeySchema []KeySchemaElement

	// 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.
	Projection *Projection

	noSmithyDocumentSerde
}

// Sets the maximum number of read and write units for the specified on-demand
// table. If you use this parameter, you must specify MaxReadRequestUnits ,
// MaxWriteRequestUnits , or both.
type OnDemandThroughput struct {

	// Maximum number of read request units for the specified table.
	//
	// 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.
	MaxReadRequestUnits *int64

	// Maximum number of write request units for the specified table.
	//
	// 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.
	MaxWriteRequestUnits *int64

	noSmithyDocumentSerde
}

// Overrides the on-demand throughput settings for this replica table. If you
// don't specify a value for this parameter, it uses the source table's on-demand
// throughput settings.
type OnDemandThroughputOverride struct {

	// Maximum number of read request units for the specified replica table.
	MaxReadRequestUnits *int64

	noSmithyDocumentSerde
}

// Represents a PartiQL statement that uses parameters.
type ParameterizedStatement struct {

	//  A PartiQL statement that uses parameters.
	//
	// This member is required.
	Statement *string

	//  The parameter values.
	Parameters []AttributeValue

	// An optional parameter that returns the item attributes for a PartiQL
	// ParameterizedStatement operation that failed a condition check.
	//
	// There is no additional cost associated with requesting a return value aside
	// from the small network and processing overhead of receiving a larger response.
	// No read capacity units are consumed.
	ReturnValuesOnConditionCheckFailure ReturnValuesOnConditionCheckFailure

	noSmithyDocumentSerde
}

// The description of the point in time settings applied to the table.
type PointInTimeRecoveryDescription struct {

	// Specifies the earliest point in time you can restore your table to. You can
	// restore your table to any point in time during the last 35 days.
	EarliestRestorableDateTime *time.Time

	// LatestRestorableDateTime is typically 5 minutes before the current time.
	LatestRestorableDateTime *time.Time

	// The current state of point in time recovery:
	//
	//   - ENABLED - Point in time recovery is enabled.
	//
	//   - DISABLED - Point in time recovery is disabled.
	PointInTimeRecoveryStatus PointInTimeRecoveryStatus

	// 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.
	RecoveryPeriodInDays *int32

	noSmithyDocumentSerde
}

// Represents the settings used to enable point in time recovery.
type PointInTimeRecoverySpecification struct {

	// Indicates whether point in time recovery is enabled (true) or disabled (false)
	// on the table.
	//
	// This member is required.
	PointInTimeRecoveryEnabled *bool

	// 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.
	RecoveryPeriodInDays *int32

	noSmithyDocumentSerde
}

// 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.
type Projection struct {

	// Represents the non-key attribute names which will be projected into the index.
	//
	// 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.
	NonKeyAttributes []string

	// The set of attributes that are projected into the index:
	//
	//   - 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.
	//
	// When using the DynamoDB console, ALL is selected by default.
	ProjectionType ProjectionType

	noSmithyDocumentSerde
}

// Represents the provisioned throughput settings for the specified global
// secondary index. You must use ProvisionedThroughput or OnDemandThroughput based
// on your table’s capacity mode.
//
// For current minimum and maximum provisioned throughput values, see [Service, Account, and Table Quotas] in the
// Amazon DynamoDB Developer Guide.
//
// [Service, Account, and Table Quotas]: https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Limits.html
type ProvisionedThroughput struct {

	// The maximum number of strongly consistent reads consumed per second before
	// DynamoDB returns a ThrottlingException . For more information, see [Specifying Read and Write Requirements] in the
	// Amazon DynamoDB Developer Guide.
	//
	// If read/write capacity mode is PAY_PER_REQUEST the value is set to 0.
	//
	// [Specifying Read and Write Requirements]: https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ProvisionedThroughput.html
	//
	// This member is required.
	ReadCapacityUnits *int64

	// The maximum number of writes consumed per second before DynamoDB returns a
	// ThrottlingException . For more information, see [Specifying Read and Write Requirements] in the Amazon DynamoDB
	// Developer Guide.
	//
	// If read/write capacity mode is PAY_PER_REQUEST the value is set to 0.
	//
	// [Specifying Read and Write Requirements]: https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ProvisionedThroughput.html
	//
	// This member is required.
	WriteCapacityUnits *int64

	noSmithyDocumentSerde
}

// Represents the provisioned throughput settings for the table, consisting of
// read and write capacity units, along with data about increases and decreases.
type ProvisionedThroughputDescription struct {

	// The date and time of the last provisioned throughput decrease for this table.
	LastDecreaseDateTime *time.Time

	// The date and time of the last provisioned throughput increase for this table.
	LastIncreaseDateTime *time.Time

	// The number of provisioned throughput decreases for this table during this UTC
	// calendar day. For current maximums on provisioned throughput decreases, see [Service, Account, and Table Quotas]in
	// the Amazon DynamoDB Developer Guide.
	//
	// [Service, Account, and Table Quotas]: https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Limits.html
	NumberOfDecreasesToday *int64

	// The maximum number of strongly consistent reads consumed per second before
	// DynamoDB returns a ThrottlingException . Eventually consistent reads require
	// less effort than strongly consistent reads, so a setting of 50 ReadCapacityUnits
	// per second provides 100 eventually consistent ReadCapacityUnits per second.
	ReadCapacityUnits *int64

	// The maximum number of writes consumed per second before DynamoDB returns a
	// ThrottlingException .
	WriteCapacityUnits *int64

	noSmithyDocumentSerde
}

// Replica-specific provisioned throughput settings. If not specified, uses the
// source table's provisioned throughput settings.
type ProvisionedThroughputOverride struct {

	// Replica-specific read capacity units. If not specified, uses the source table's
	// read capacity settings.
	ReadCapacityUnits *int64

	noSmithyDocumentSerde
}

// Represents a request to perform a PutItem operation.
type Put struct {

	// A map of attribute name to attribute values, representing the primary key of
	// the item to be written by PutItem . All of the table's primary key attributes
	// must be specified, and their data types must match those of the table's key
	// schema. If any attributes are present in the item that are part of an index key
	// schema for the table, their types must match the index key schema.
	//
	// This member is required.
	Item map[string]AttributeValue

	// Name of the table in which to write the item. You can also provide the Amazon
	// Resource Name (ARN) of the table in this parameter.
	//
	// This member is required.
	TableName *string

	// A condition that must be satisfied in order for a conditional update to succeed.
	ConditionExpression *string

	// One or more substitution tokens for attribute names in an expression.
	ExpressionAttributeNames map[string]string

	// One or more values that can be substituted in an expression.
	ExpressionAttributeValues map[string]AttributeValue

	// Use ReturnValuesOnConditionCheckFailure to get the item attributes if the Put
	// condition fails. For ReturnValuesOnConditionCheckFailure , the valid values are:
	// NONE and ALL_OLD.
	ReturnValuesOnConditionCheckFailure ReturnValuesOnConditionCheckFailure

	noSmithyDocumentSerde
}

// Represents a request to perform a PutItem operation on an item.
type PutRequest struct {

	// A map of attribute name to attribute values, representing the primary key of an
	// item to be processed by PutItem . All of the table's primary key attributes must
	// be specified, and their data types must match those of the table's key schema.
	// If any attributes are present in the item that are part of an index key schema
	// for the table, their types must match the index key schema.
	//
	// This member is required.
	Item map[string]AttributeValue

	noSmithyDocumentSerde
}

// Represents the properties of a replica.
type Replica struct {

	// The Region where the replica needs to be created.
	RegionName *string

	noSmithyDocumentSerde
}

// Represents the auto scaling settings of the replica.
type ReplicaAutoScalingDescription struct {

	// Replica-specific global secondary index auto scaling settings.
	GlobalSecondaryIndexes []ReplicaGlobalSecondaryIndexAutoScalingDescription

	// The Region where the replica exists.
	RegionName *string

	// Represents the auto scaling settings for a global table or global secondary
	// index.
	ReplicaProvisionedReadCapacityAutoScalingSettings *AutoScalingSettingsDescription

	// Represents the auto scaling settings for a global table or global secondary
	// index.
	ReplicaProvisionedWriteCapacityAutoScalingSettings *AutoScalingSettingsDescription

	// The current state of the replica:
	//
	//   - CREATING - The replica is being created.
	//
	//   - UPDATING - The replica is being updated.
	//
	//   - DELETING - The replica is being deleted.
	//
	//   - ACTIVE - The replica is ready for use.
	ReplicaStatus ReplicaStatus

	noSmithyDocumentSerde
}

// Represents the auto scaling settings of a replica that will be modified.
type ReplicaAutoScalingUpdate struct {

	// The Region where the replica exists.
	//
	// This member is required.
	RegionName *string

	// Represents the auto scaling settings of global secondary indexes that will be
	// modified.
	ReplicaGlobalSecondaryIndexUpdates []ReplicaGlobalSecondaryIndexAutoScalingUpdate

	// Represents the auto scaling settings to be modified for a global table or
	// global secondary index.
	ReplicaProvisionedReadCapacityAutoScalingUpdate *AutoScalingSettingsUpdate

	noSmithyDocumentSerde
}

// Contains the details of the replica.
type ReplicaDescription struct {

	// Replica-specific global secondary index settings.
	GlobalSecondaryIndexes []ReplicaGlobalSecondaryIndexDescription

	// Indicates one of the settings synchronization modes for the global table
	// replica:
	//
	//   - ENABLED : Indicates that the settings synchronization mode for the global
	//   table replica is enabled.
	//
	//   - DISABLED : Indicates that the settings synchronization mode for the global
	//   table replica is disabled.
	//
	//   - ENABLED_WITH_OVERRIDES : This mode is set by default for a same account
	//   global table. Indicates that certain global table settings can be overridden.
	GlobalTableSettingsReplicationMode GlobalTableSettingsReplicationMode

	// The KMS key of the replica that will be used for KMS encryption.
	KMSMasterKeyId *string

	// Overrides the maximum on-demand throughput settings for the specified replica
	// table.
	OnDemandThroughputOverride *OnDemandThroughputOverride

	// Replica-specific provisioned throughput. If not described, uses the source
	// table's provisioned throughput settings.
	ProvisionedThroughputOverride *ProvisionedThroughputOverride

	// The name of the Region.
	RegionName *string

	// The Amazon Resource Name (ARN) of the global table replica.
	ReplicaArn *string

	// The time at which the replica was first detected as inaccessible. To determine
	// cause of inaccessibility check the ReplicaStatus property.
	ReplicaInaccessibleDateTime *time.Time

	// The current state of the replica:
	//
	//   - CREATING - The replica is being created.
	//
	//   - UPDATING - The replica is being updated.
	//
	//   - DELETING - The replica is being deleted.
	//
	//   - ACTIVE - The replica is ready for use.
	//
	//   - REGION_DISABLED - The replica is inaccessible because the Amazon Web
	//   Services Region has been disabled.
	//
	// If the Amazon Web Services Region remains inaccessible for more than 20 hours,
	//   DynamoDB will remove this replica from the replication group. The replica will
	//   not be deleted and replication will stop from and to this region.
	//
	//   - INACCESSIBLE_ENCRYPTION_CREDENTIALS - The KMS key used to encrypt the table
	//   is inaccessible.
	//
	// If the KMS key remains inaccessible for more than 20 hours, DynamoDB will
	//   remove this replica from the replication group. The replica will not be deleted
	//   and replication will stop from and to this region.
	ReplicaStatus ReplicaStatus

	// Detailed information about the replica status.
	ReplicaStatusDescription *string

	// Specifies the progress of a Create, Update, or Delete action on the replica as
	// a percentage.
	ReplicaStatusPercentProgress *string

	// Contains details of the table class.
	ReplicaTableClassSummary *TableClassSummary

	// Represents the warm throughput value for this replica.
	WarmThroughput *TableWarmThroughputDescription

	noSmithyDocumentSerde
}

// Represents the properties of a replica global secondary index.
type ReplicaGlobalSecondaryIndex struct {

	// The name of the global secondary index.
	//
	// This member is required.
	IndexName *string

	// Overrides the maximum on-demand throughput settings for the specified global
	// secondary index in the specified replica table.
	OnDemandThroughputOverride *OnDemandThroughputOverride

	// Replica table GSI-specific provisioned throughput. If not specified, uses the
	// source table GSI's read capacity settings.
	ProvisionedThroughputOverride *ProvisionedThroughputOverride

	noSmithyDocumentSerde
}

// Represents the auto scaling configuration for a replica global secondary index.
type ReplicaGlobalSecondaryIndexAutoScalingDescription struct {

	// The name of the global secondary index.
	IndexName *string

	// The current state of the replica global secondary index:
	//
	//   - CREATING - The index is being created.
	//
	//   - UPDATING - The table/index configuration is being updated. The table/index
	//   remains available for data operations when UPDATING
	//
	//   - DELETING - The index is being deleted.
	//
	//   - ACTIVE - The index is ready for use.
	IndexStatus IndexStatus

	// Represents the auto scaling settings for a global table or global secondary
	// index.
	ProvisionedReadCapacityAutoScalingSettings *AutoScalingSettingsDescription

	// Represents the auto scaling settings for a global table or global secondary
	// index.
	ProvisionedWriteCapacityAutoScalingSettings *AutoScalingSettingsDescription

	noSmithyDocumentSerde
}

// Represents the auto scaling settings of a global secondary index for a replica
// that will be modified.
type ReplicaGlobalSecondaryIndexAutoScalingUpdate struct {

	// The name of the global secondary index.
	IndexName *string

	// Represents the auto scaling settings to be modified for a global table or
	// global secondary index.
	ProvisionedReadCapacityAutoScalingUpdate *AutoScalingSettingsUpdate

	noSmithyDocumentSerde
}

// Represents the properties of a replica global secondary index.
type ReplicaGlobalSecondaryIndexDescription struct {

	// The name of the global secondary index.
	IndexName *string

	// Overrides the maximum on-demand throughput for the specified global secondary
	// index in the specified replica table.
	OnDemandThroughputOverride *OnDemandThroughputOverride

	// If not described, uses the source table GSI's read capacity settings.
	ProvisionedThroughputOverride *ProvisionedThroughputOverride

	// Represents the warm throughput of the global secondary index for this replica.
	WarmThroughput *GlobalSecondaryIndexWarmThroughputDescription

	noSmithyDocumentSerde
}

// Represents the properties of a global secondary index.
type ReplicaGlobalSecondaryIndexSettingsDescription struct {

	// The name of the global secondary index. The name must be unique among all other
	// indexes on this table.
	//
	// This member is required.
	IndexName *string

	//  The current status of the global secondary index:
	//
	//   - CREATING - The global secondary index is being created.
	//
	//   - UPDATING - The global secondary index is being updated.
	//
	//   - DELETING - The global secondary index is being deleted.
	//
	//   - ACTIVE - The global secondary index is ready for use.
	IndexStatus IndexStatus

	// Auto scaling settings for a global secondary index replica's read capacity
	// units.
	ProvisionedReadCapacityAutoScalingSettings *AutoScalingSettingsDescription

	// The maximum number of strongly consistent reads consumed per second before
	// DynamoDB returns a ThrottlingException .
	ProvisionedReadCapacityUnits *int64

	// Auto scaling settings for a global secondary index replica's write capacity
	// units.
	ProvisionedWriteCapacityAutoScalingSettings *AutoScalingSettingsDescription

	// The maximum number of writes consumed per second before DynamoDB returns a
	// ThrottlingException .
	ProvisionedWriteCapacityUnits *int64

	noSmithyDocumentSerde
}

// Represents the settings of a global secondary index for a global table that
// will be modified.
type ReplicaGlobalSecondaryIndexSettingsUpdate struct {

	// The name of the global secondary index. The name must be unique among all other
	// indexes on this table.
	//
	// This member is required.
	IndexName *string

	// Auto scaling settings for managing a global secondary index replica's read
	// capacity units.
	ProvisionedReadCapacityAutoScalingSettingsUpdate *AutoScalingSettingsUpdate

	// The maximum number of strongly consistent reads consumed per second before
	// DynamoDB returns a ThrottlingException .
	ProvisionedReadCapacityUnits *int64

	noSmithyDocumentSerde
}

// Represents the properties of a replica.
type ReplicaSettingsDescription struct {

	// The Region name of the replica.
	//
	// This member is required.
	RegionName *string

	// The read/write capacity mode of the replica.
	ReplicaBillingModeSummary *BillingModeSummary

	// Replica global secondary index settings for the global table.
	ReplicaGlobalSecondaryIndexSettings []ReplicaGlobalSecondaryIndexSettingsDescription

	// Auto scaling settings for a global table replica's read capacity units.
	ReplicaProvisionedReadCapacityAutoScalingSettings *AutoScalingSettingsDescription

	// The maximum number of strongly consistent reads consumed per second before
	// DynamoDB returns a ThrottlingException . For more information, see [Specifying Read and Write Requirements] in the
	// Amazon DynamoDB Developer Guide.
	//
	// [Specifying Read and Write Requirements]: https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/WorkingWithTables.html#ProvisionedThroughput
	ReplicaProvisionedReadCapacityUnits *int64

	// Auto scaling settings for a global table replica's write capacity units.
	ReplicaProvisionedWriteCapacityAutoScalingSettings *AutoScalingSettingsDescription

	// The maximum number of writes consumed per second before DynamoDB returns a
	// ThrottlingException . For more information, see [Specifying Read and Write Requirements] in the Amazon DynamoDB
	// Developer Guide.
	//
	// [Specifying Read and Write Requirements]: https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/WorkingWithTables.html#ProvisionedThroughput
	ReplicaProvisionedWriteCapacityUnits *int64

	// The current state of the Region:
	//
	//   - CREATING - The Region is being created.
	//
	//   - UPDATING - The Region is being updated.
	//
	//   - DELETING - The Region is being deleted.
	//
	//   - ACTIVE - The Region is ready for use.
	ReplicaStatus ReplicaStatus

	// Contains details of the table class.
	ReplicaTableClassSummary *TableClassSummary

	noSmithyDocumentSerde
}

// Represents the settings for a global table in a Region that will be modified.
type ReplicaSettingsUpdate struct {

	// The Region of the replica to be added.
	//
	// This member is required.
	RegionName *string

	// Represents the settings of a global secondary index for a global table that
	// will be modified.
	ReplicaGlobalSecondaryIndexSettingsUpdate []ReplicaGlobalSecondaryIndexSettingsUpdate

	// Auto scaling settings for managing a global table replica's read capacity units.
	ReplicaProvisionedReadCapacityAutoScalingSettingsUpdate *AutoScalingSettingsUpdate

	// The maximum number of strongly consistent reads consumed per second before
	// DynamoDB returns a ThrottlingException . For more information, see [Specifying Read and Write Requirements] in the
	// Amazon DynamoDB Developer Guide.
	//
	// [Specifying Read and Write Requirements]: https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/WorkingWithTables.html#ProvisionedThroughput
	ReplicaProvisionedReadCapacityUnits *int64

	// Replica-specific table class. If not specified, uses the source table's table
	// class.
	ReplicaTableClass TableClass

	noSmithyDocumentSerde
}

// Represents one of the following:
//
//   - A new replica to be added to an existing regional table or global table.
//     This request invokes the CreateTableReplica action in the destination Region.
//
//   - New parameters for an existing replica. This request invokes the UpdateTable
//     action in the destination Region.
//
//   - An existing replica to be deleted. The request invokes the
//     DeleteTableReplica action in the destination Region, deleting the replica and
//     all if its items in the destination Region.
//
// When you manually remove a table or global table replica, you do not
// automatically remove any associated scalable targets, scaling policies, or
// CloudWatch alarms.
type ReplicationGroupUpdate struct {

	// The parameters required for creating a replica for the table.
	Create *CreateReplicationGroupMemberAction

	// The parameters required for deleting a replica for the table.
	Delete *DeleteReplicationGroupMemberAction

	// The parameters required for updating a replica for the table.
	Update *UpdateReplicationGroupMemberAction

	noSmithyDocumentSerde
}

// Represents one of the following:
//
//   - A new replica to be added to an existing global table.
//
//   - New parameters for an existing replica.
//
//   - An existing replica to be removed from an existing global table.
type ReplicaUpdate struct {

	// The parameters required for creating a replica on an existing global table.
	Create *CreateReplicaAction

	// The name of the existing replica to be removed.
	Delete *DeleteReplicaAction

	noSmithyDocumentSerde
}

// Contains details for the restore.
type RestoreSummary struct {

	// Point in time or source backup time.
	//
	// This member is required.
	RestoreDateTime *time.Time

	// Indicates if a restore is in progress or not.
	//
	// This member is required.
	RestoreInProgress *bool

	// The Amazon Resource Name (ARN) of the backup from which the table was restored.
	SourceBackupArn *string

	// The ARN of the source table of the backup that is being restored.
	SourceTableArn *string

	noSmithyDocumentSerde
}

// The S3 bucket that is being imported from.
type S3BucketSource struct {

	//  The S3 bucket that is being imported from.
	//
	// This member is required.
	S3Bucket *string

	//  The account number of the S3 bucket that is being imported from. If the bucket
	// is owned by the requester this is optional.
	S3BucketOwner *string

	//  The key prefix shared by all S3 Objects that are being imported.
	S3KeyPrefix *string

	noSmithyDocumentSerde
}

// Contains the details of the table when the backup was created.
type SourceTableDetails struct {

	// Schema of the table.
	//
	// This member is required.
	KeySchema []KeySchemaElement

	// Read IOPs and Write IOPS on the table when the backup was created.
	//
	// This member is required.
	ProvisionedThroughput *ProvisionedThroughput

	// Time when the source table was created.
	//
	// This member is required.
	TableCreationDateTime *time.Time

	// Unique identifier for the table for which the backup was created.
	//
	// This member is required.
	TableId *string

	// The name of the table for which the backup was created.
	//
	// This member is required.
	TableName *string

	// Controls how you are charged for read and write throughput and how you manage
	// capacity. This setting can be changed later.
	//
	//   - PROVISIONED - Sets the read/write capacity mode to PROVISIONED . We
	//   recommend using PROVISIONED for predictable workloads.
	//
	//   - PAY_PER_REQUEST - Sets the read/write capacity mode to PAY_PER_REQUEST . We
	//   recommend using PAY_PER_REQUEST for unpredictable workloads.
	BillingMode BillingMode

	// Number of items in the table. Note that this is an approximate value.
	ItemCount *int64

	// Sets the maximum number of read and write units for the specified on-demand
	// table. If you use this parameter, you must specify MaxReadRequestUnits ,
	// MaxWriteRequestUnits , or both.
	OnDemandThroughput *OnDemandThroughput

	// ARN of the table for which backup was created.
	TableArn *string

	// Size of the table in bytes. Note that this is an approximate value.
	TableSizeBytes *int64

	noSmithyDocumentSerde
}

// Contains the details of the features enabled on the table when the backup was
// created. For example, LSIs, GSIs, streams, TTL.
type SourceTableFeatureDetails struct {

	// Represents the GSI properties for the table when the backup was created. It
	// includes the IndexName, KeySchema, Projection, and ProvisionedThroughput for the
	// GSIs on the table at the time of backup.
	GlobalSecondaryIndexes []GlobalSecondaryIndexInfo

	// Represents the LSI properties for the table when the backup was created. It
	// includes the IndexName, KeySchema and Projection for the LSIs on the table at
	// the time of backup.
	LocalSecondaryIndexes []LocalSecondaryIndexInfo

	// The description of the server-side encryption status on the table when the
	// backup was created.
	SSEDescription *SSEDescription

	// Stream settings on the table when the backup was created.
	StreamDescription *StreamSpecification

	// Time to Live settings on the table when the backup was created.
	TimeToLiveDescription *TimeToLiveDescription

	noSmithyDocumentSerde
}

// The description of the server-side encryption status on the specified table.
type SSEDescription struct {

	// Indicates the time, in UNIX epoch date format, when DynamoDB detected that the
	// table's KMS key was inaccessible. This attribute will automatically be cleared
	// when DynamoDB detects that the table's KMS key is accessible again. DynamoDB
	// will initiate the table archival process when table's KMS key remains
	// inaccessible for more than seven days from this date.
	InaccessibleEncryptionDateTime *time.Time

	// The KMS key ARN used for the KMS encryption.
	KMSMasterKeyArn *string

	// Server-side encryption type. The only supported value is:
	//
	//   - KMS - Server-side encryption that uses Key Management Service. The key is
	//   stored in your account and is managed by KMS (KMS charges apply).
	SSEType SSEType

	// Represents the current state of server-side encryption. The only supported
	// values are:
	//
	//   - ENABLED - Server-side encryption is enabled.
	//
	//   - UPDATING - Server-side encryption is being updated.
	Status SSEStatus

	noSmithyDocumentSerde
}

// Represents the settings used to enable server-side encryption.
type SSESpecification struct {

	// Indicates whether server-side encryption is done using an Amazon Web Services
	// managed key or an Amazon Web Services owned key. If enabled (true), server-side
	// encryption type is set to KMS and an Amazon Web Services managed key is used
	// (KMS charges apply). If disabled (false) or not specified, server-side
	// encryption is set to Amazon Web Services owned key.
	Enabled *bool

	// 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 .
	KMSMasterKeyId *string

	// Server-side encryption type. The only supported value is:
	//
	//   - KMS - Server-side encryption that uses Key Management Service. The key is
	//   stored in your account and is managed by KMS (KMS charges apply).
	SSEType SSEType

	noSmithyDocumentSerde
}

// Represents the DynamoDB Streams configuration for a table in DynamoDB.
type StreamSpecification struct {

	// Indicates whether DynamoDB Streams is enabled (true) or disabled (false) on the
	// table.
	//
	// This member is required.
	StreamEnabled *bool

	//  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:
	//
	//   - KEYS_ONLY - Only the key attributes of the modified item are written to the
	//   stream.
	//
	//   - NEW_IMAGE - The entire item, as it appears after it was modified, is written
	//   to the stream.
	//
	//   - OLD_IMAGE - The entire item, as it appeared before it was modified, is
	//   written to the stream.
	//
	//   - NEW_AND_OLD_IMAGES - Both the new and the old item images of the item are
	//   written to the stream.
	StreamViewType StreamViewType

	noSmithyDocumentSerde
}

// Represents the auto scaling configuration for a global table.
type TableAutoScalingDescription struct {

	// Represents replicas of the global table.
	Replicas []ReplicaAutoScalingDescription

	// The name of the table.
	TableName *string

	// The current state of the table:
	//
	//   - CREATING - The table is being created.
	//
	//   - UPDATING - The table is being updated.
	//
	//   - DELETING - The table is being deleted.
	//
	//   - ACTIVE - The table is ready for use.
	TableStatus TableStatus

	noSmithyDocumentSerde
}

// Contains details of the table class.
type TableClassSummary struct {

	// The date and time at which the table class was last updated.
	LastUpdateDateTime *time.Time

	// The table class of the specified table. Valid values are STANDARD and
	// STANDARD_INFREQUENT_ACCESS .
	TableClass TableClass

	noSmithyDocumentSerde
}

// The parameters for the table created as part of the import operation.
type TableCreationParameters struct {

	//  The attributes of the table created as part of the import operation.
	//
	// This member is required.
	AttributeDefinitions []AttributeDefinition

	//  The primary key and option sort key of the table created as part of the import
	// operation.
	//
	// This member is required.
	KeySchema []KeySchemaElement

	//  The name of the table created as part of the import operation.
	//
	// This member is required.
	TableName *string

	//  The billing mode for provisioning the table created as part of the import
	// operation.
	BillingMode BillingMode

	//  The Global Secondary Indexes (GSI) of the table to be created as part of the
	// import operation.
	GlobalSecondaryIndexes []GlobalSecondaryIndex

	// Sets the maximum number of read and write units for the specified on-demand
	// table. If you use this parameter, you must specify MaxReadRequestUnits ,
	// MaxWriteRequestUnits , or both.
	OnDemandThroughput *OnDemandThroughput

	// Represents the provisioned throughput settings for the specified global
	// secondary index. You must use ProvisionedThroughput or OnDemandThroughput based
	// on your table’s capacity mode.
	//
	// For current minimum and maximum provisioned throughput values, see [Service, Account, and Table Quotas] in the
	// Amazon DynamoDB Developer Guide.
	//
	// [Service, Account, and Table Quotas]: https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Limits.html
	ProvisionedThroughput *ProvisionedThroughput

	// Represents the settings used to enable server-side encryption.
	SSESpecification *SSESpecification

	noSmithyDocumentSerde
}

// Represents the properties of a table.
type TableDescription struct {

	// Contains information about the table archive.
	ArchivalSummary *ArchivalSummary

	// 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.
	AttributeDefinitions []AttributeDefinition

	// Contains the details for the read/write capacity mode.
	BillingModeSummary *BillingModeSummary

	// The date and time when the table was created, in [UNIX epoch time] format.
	//
	// [UNIX epoch time]: http://www.epochconverter.com/
	CreationDateTime *time.Time

	// Indicates whether deletion protection is enabled (true) or disabled (false) on
	// the table.
	DeletionProtectionEnabled *bool

	// 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. 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.
	//
	//   - 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.
	GlobalSecondaryIndexes []GlobalSecondaryIndexDescription

	// Indicates one of the settings synchronization modes for the global table:
	//
	//   - ENABLED : Indicates that the settings synchronization mode for the global
	//   table is enabled.
	//
	//   - DISABLED : Indicates that the settings synchronization mode for the global
	//   table is disabled.
	//
	//   - ENABLED_WITH_OVERRIDES : This mode is set by default for a same account
	//   global table. Indicates that certain global table settings can be overridden.
	GlobalTableSettingsReplicationMode GlobalTableSettingsReplicationMode

	// Represents the version of [global tables] in use, if the table is replicated across Amazon Web
	// Services Regions.
	//
	// [global tables]: https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/GlobalTables.html
	GlobalTableVersion *string

	// The witness Region and its current status in the MRSC global table. Only one
	// witness Region can be configured per MRSC global table.
	GlobalTableWitnesses []GlobalTableWitnessDescription

	// 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.
	ItemCount *int64

	// 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.
	//
	// [Primary Key]: https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/DataModel.html#DataModelPrimaryKey
	KeySchema []KeySchemaElement

	// The Amazon Resource Name (ARN) that uniquely identifies the latest stream for
	// this table.
	LatestStreamArn *string

	// 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
	LatestStreamLabel *string

	// 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. 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.
	//
	//   - 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.
	LocalSecondaryIndexes []LocalSecondaryIndexDescription

	// Indicates one of the following consistency modes for a global table:
	//
	//   - EVENTUAL : Indicates that the global table is configured for multi-Region
	//   eventual consistency (MREC).
	//
	//   - STRONG : Indicates that the global table is configured for multi-Region
	//   strong consistency (MRSC).
	//
	// If you don't specify this field, the global table consistency mode defaults to
	// EVENTUAL . For more information about global tables consistency modes, see [Consistency modes] in
	// DynamoDB developer guide.
	//
	// [Consistency modes]: https://docs.aws.amazon.com/V2globaltables_HowItWorks.html#V2globaltables_HowItWorks.consistency-modes
	MultiRegionConsistency MultiRegionConsistency

	// The maximum number of read and write units for the specified on-demand table.
	// If you use this parameter, you must specify MaxReadRequestUnits ,
	// MaxWriteRequestUnits , or both.
	OnDemandThroughput *OnDemandThroughput

	// The provisioned throughput settings for the table, consisting of read and write
	// capacity units, along with data about increases and decreases.
	ProvisionedThroughput *ProvisionedThroughputDescription

	// Represents replicas of the table.
	Replicas []ReplicaDescription

	// Contains details for the restore.
	RestoreSummary *RestoreSummary

	// The description of the server-side encryption status on the specified table.
	SSEDescription *SSEDescription

	// The current DynamoDB Streams configuration for the table.
	StreamSpecification *StreamSpecification

	// The Amazon Resource Name (ARN) that uniquely identifies the table.
	TableArn *string

	// Contains details of the table class.
	TableClassSummary *TableClassSummary

	// Unique identifier for the table for which the backup was created.
	TableId *string

	// The name of the table.
	TableName *string

	// 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.
	TableSizeBytes *int64

	// 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.
	TableStatus TableStatus

	// Describes the warm throughput value of the base table.
	WarmThroughput *TableWarmThroughputDescription

	noSmithyDocumentSerde
}

// Represents the warm throughput value (in read units per second and write units
// per second) of the table. Warm throughput is applicable for DynamoDB Standard-IA
// tables and specifies the minimum provisioned capacity maintained for immediate
// data access.
type TableWarmThroughputDescription struct {

	// Represents the base table's warm throughput value in read units per second.
	ReadUnitsPerSecond *int64

	// Represents warm throughput value of the base table.
	Status TableStatus

	// Represents the base table's warm throughput value in write units per second.
	WriteUnitsPerSecond *int64

	noSmithyDocumentSerde
}

// Describes a tag. A tag is a key-value pair. You can add up to 50 tags to a
// single DynamoDB table.
//
// Amazon Web Services-assigned tag names and values are automatically assigned
// the aws: prefix, which the user cannot assign. Amazon Web Services-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.
//
// For an overview on tagging DynamoDB resources, see [Tagging for DynamoDB] in the Amazon DynamoDB
// Developer Guide.
//
// [Tagging for DynamoDB]: https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Tagging.html
type Tag struct {

	// 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.
	//
	// This member is required.
	Key *string

	// The value of the tag. Tag values are case-sensitive and can be null.
	//
	// This member is required.
	Value *string

	noSmithyDocumentSerde
}

// Represents the specific reason why a DynamoDB request was throttled and the ARN
// of the impacted resource. This helps identify exactly what resource is being
// throttled, what type of operation caused it, and why the throttling occurred.
type ThrottlingReason struct {

	// The reason for throttling. The throttling reason follows a specific format:
	// ResourceType+OperationType+LimitType :
	//
	//   - Resource Type (What is being throttled): Table or Index
	//
	//   - Operation Type (What kind of operation): Read or Write
	//
	//   - Limit Type (Why the throttling occurred):
	//
	//   - ProvisionedThroughputExceeded : The request rate is exceeding the [provisioned throughput capacity](read or
	//   write capacity units) configured for a table or a global secondary index (GSI)
	//   in provisioned capacity mode.
	//
	//   - AccountLimitExceeded : The request rate has caused a table or global
	//   secondary index (GSI) in on-demand mode to exceed the [per-table account-level service quotas]for read/write
	//   throughput in the current Amazon Web Services Region.
	//
	//   - KeyRangeThroughputExceeded : The request rate directed at a specific
	//   partition key value has exceeded the [internal partition-level throughput limits], indicating uneven access patterns
	//   across the table's or GSI's key space.
	//
	//   - MaxOnDemandThroughputExceeded : The request rate has exceeded the [configured maximum throughput limits]set for a
	//   table or index in on-demand capacity mode.
	//
	// Examples of complete throttling reasons:
	//
	//   - TableReadProvisionedThroughputExceeded
	//
	//   - IndexWriteAccountLimitExceeded
	//
	// This helps identify exactly what resource is being throttled, what type of
	// operation caused it, and why the throttling occurred.
	//
	// [provisioned throughput capacity]: https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/provisioned-capacity-mode.html
	// [per-table account-level service quotas]: https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ServiceQuotas.html#default-limits-throughput
	// [configured maximum throughput limits]: https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/on-demand-capacity-mode-max-throughput.html
	// [internal partition-level throughput limits]: https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/bp-partition-key-design.html
	Reason *string

	// The Amazon Resource Name (ARN) of the DynamoDB table or index that experienced
	// the throttling event.
	Resource *string

	noSmithyDocumentSerde
}

// The description of the Time to Live (TTL) status on the specified table.
type TimeToLiveDescription struct {

	//  The name of the TTL attribute for items in the table.
	AttributeName *string

	//  The TTL status for the table.
	TimeToLiveStatus TimeToLiveStatus

	noSmithyDocumentSerde
}

// Represents the settings used to enable or disable Time to Live (TTL) for the
// specified table.
type TimeToLiveSpecification struct {

	// The name of the TTL attribute used to store the expiration time for items in
	// the table.
	//
	// This member is required.
	AttributeName *string

	// Indicates whether TTL is to be enabled (true) or disabled (false) on the table.
	//
	// This member is required.
	Enabled *bool

	noSmithyDocumentSerde
}

// Specifies an item to be retrieved as part of the transaction.
type TransactGetItem struct {

	// Contains the primary key that identifies the item to get, together with the
	// name of the table that contains the item, and optionally the specific attributes
	// of the item to retrieve.
	//
	// This member is required.
	Get *Get

	noSmithyDocumentSerde
}

// A list of requests that can perform update, put, delete, or check operations on
// multiple items in one or more tables atomically.
type TransactWriteItem struct {

	// A request to perform a check item operation.
	ConditionCheck *ConditionCheck

	// A request to perform a DeleteItem operation.
	Delete *Delete

	// A request to perform a PutItem operation.
	Put *Put

	// A request to perform an UpdateItem operation.
	Update *Update

	noSmithyDocumentSerde
}

// Represents a request to perform an UpdateItem operation.
type Update struct {

	// The primary key of the item to be updated. Each element consists of an
	// attribute name and a value for that attribute.
	//
	// This member is required.
	Key map[string]AttributeValue

	// Name of the table for the UpdateItem request. You can also provide the Amazon
	// Resource Name (ARN) of the table in this parameter.
	//
	// This member is required.
	TableName *string

	// An expression that defines one or more attributes to be updated, the action to
	// be performed on them, and new value(s) for them.
	//
	// This member is required.
	UpdateExpression *string

	// A condition that must be satisfied in order for a conditional update to succeed.
	ConditionExpression *string

	// One or more substitution tokens for attribute names in an expression.
	ExpressionAttributeNames map[string]string

	// One or more values that can be substituted in an expression.
	ExpressionAttributeValues map[string]AttributeValue

	// Use ReturnValuesOnConditionCheckFailure to get the item attributes if the Update
	// condition fails. For ReturnValuesOnConditionCheckFailure , the valid values are:
	// NONE and ALL_OLD.
	ReturnValuesOnConditionCheckFailure ReturnValuesOnConditionCheckFailure

	noSmithyDocumentSerde
}

// Represents the new provisioned throughput settings to be applied to a global
// secondary index.
type UpdateGlobalSecondaryIndexAction struct {

	// The name of the global secondary index to be updated.
	//
	// This member is required.
	IndexName *string

	// Updates 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.
	OnDemandThroughput *OnDemandThroughput

	// Represents the provisioned throughput settings for the specified global
	// secondary index.
	//
	// For current minimum and maximum provisioned throughput values, see [Service, Account, and Table Quotas] in the
	// Amazon DynamoDB Developer Guide.
	//
	// [Service, Account, and Table Quotas]: https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Limits.html
	ProvisionedThroughput *ProvisionedThroughput

	// Represents the warm throughput value of the new provisioned throughput settings
	// to be applied to a global secondary index.
	WarmThroughput *WarmThroughput

	noSmithyDocumentSerde
}

// Enables updating the configuration for Kinesis Streaming.
type UpdateKinesisStreamingConfiguration struct {

	// Enables updating the precision of Kinesis data stream timestamp.
	ApproximateCreationDateTimePrecision ApproximateCreationDateTimePrecision

	noSmithyDocumentSerde
}

// Represents a replica to be modified.
type UpdateReplicationGroupMemberAction struct {

	// The Region where the replica exists.
	//
	// This member is required.
	RegionName *string

	// Replica-specific global secondary index settings.
	GlobalSecondaryIndexes []ReplicaGlobalSecondaryIndex

	// The KMS key of the replica that should be used for 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 KMS key alias/aws/dynamodb .
	KMSMasterKeyId *string

	// Overrides the maximum on-demand throughput for the replica table.
	OnDemandThroughputOverride *OnDemandThroughputOverride

	// Replica-specific provisioned throughput. If not specified, uses the source
	// table's provisioned throughput settings.
	ProvisionedThroughputOverride *ProvisionedThroughputOverride

	// Replica-specific table class. If not specified, uses the source table's table
	// class.
	TableClassOverride TableClass

	noSmithyDocumentSerde
}

// 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.
type WarmThroughput struct {

	// Represents the number of read operations your base table can instantaneously
	// support.
	ReadUnitsPerSecond *int64

	// Represents the number of write operations your base table can instantaneously
	// support.
	WriteUnitsPerSecond *int64

	noSmithyDocumentSerde
}

// Represents an operation to perform - either DeleteItem or PutItem . You can only
// request one of these operations, not both, in a single WriteRequest . If you do
// need to perform both of these operations, you need to provide two separate
// WriteRequest objects.
type WriteRequest struct {

	// A request to perform a DeleteItem operation.
	DeleteRequest *DeleteRequest

	// A request to perform a PutItem operation.
	PutRequest *PutRequest

	noSmithyDocumentSerde
}

type noSmithyDocumentSerde = smithydocument.NoSerde

// UnknownUnionMember is returned when a union member is returned over the wire,
// but has an unknown tag.
type UnknownUnionMember struct {
	Tag   string
	Value []byte

	noSmithyDocumentSerde
}

func (*UnknownUnionMember) isAttributeValue() {}
