1// Code generated by private/model/cli/gen-api/main.go. DO NOT EDIT.
2
3package dynamodb
4
5import (
6	"fmt"
7	"net/url"
8	"time"
9
10	"github.com/aws/aws-sdk-go/aws"
11	"github.com/aws/aws-sdk-go/aws/awsutil"
12	"github.com/aws/aws-sdk-go/aws/crr"
13	"github.com/aws/aws-sdk-go/aws/request"
14	"github.com/aws/aws-sdk-go/private/protocol"
15	"github.com/aws/aws-sdk-go/private/protocol/jsonrpc"
16)
17
18const opBatchGetItem = "BatchGetItem"
19
20// BatchGetItemRequest generates a "aws/request.Request" representing the
21// client's request for the BatchGetItem operation. The "output" return
22// value will be populated with the request's response once the request completes
23// successfully.
24//
25// Use "Send" method on the returned Request to send the API call to the service.
26// the "output" return value is not valid until after Send returns without error.
27//
28// See BatchGetItem for more information on using the BatchGetItem
29// API call, and error handling.
30//
31// This method is useful when you want to inject custom logic or configuration
32// into the SDK's request lifecycle. Such as custom headers, or retry logic.
33//
34//
35//    // Example sending a request using the BatchGetItemRequest method.
36//    req, resp := client.BatchGetItemRequest(params)
37//
38//    err := req.Send()
39//    if err == nil { // resp is now filled
40//        fmt.Println(resp)
41//    }
42//
43// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/BatchGetItem
44func (c *DynamoDB) BatchGetItemRequest(input *BatchGetItemInput) (req *request.Request, output *BatchGetItemOutput) {
45	op := &request.Operation{
46		Name:       opBatchGetItem,
47		HTTPMethod: "POST",
48		HTTPPath:   "/",
49		Paginator: &request.Paginator{
50			InputTokens:     []string{"RequestItems"},
51			OutputTokens:    []string{"UnprocessedKeys"},
52			LimitToken:      "",
53			TruncationToken: "",
54		},
55	}
56
57	if input == nil {
58		input = &BatchGetItemInput{}
59	}
60
61	output = &BatchGetItemOutput{}
62	req = c.newRequest(op, input, output)
63	if aws.BoolValue(req.Config.EnableEndpointDiscovery) {
64		de := discovererDescribeEndpoints{
65			Required:      false,
66			EndpointCache: c.endpointCache,
67			Params: map[string]*string{
68				"op": aws.String(req.Operation.Name),
69			},
70			Client: c,
71		}
72
73		for k, v := range de.Params {
74			if v == nil {
75				delete(de.Params, k)
76			}
77		}
78
79		req.Handlers.Build.PushFrontNamed(request.NamedHandler{
80			Name: "crr.endpointdiscovery",
81			Fn:   de.Handler,
82		})
83	}
84	return
85}
86
87// BatchGetItem API operation for Amazon DynamoDB.
88//
89// The BatchGetItem operation returns the attributes of one or more items from
90// one or more tables. You identify requested items by primary key.
91//
92// A single operation can retrieve up to 16 MB of data, which can contain as
93// many as 100 items. BatchGetItem returns a partial result if the response
94// size limit is exceeded, the table's provisioned throughput is exceeded, or
95// an internal processing failure occurs. If a partial result is returned, the
96// operation returns a value for UnprocessedKeys. You can use this value to
97// retry the operation starting with the next item to get.
98//
99// If you request more than 100 items, BatchGetItem returns a ValidationException
100// with the message "Too many items requested for the BatchGetItem call."
101//
102// For example, if you ask to retrieve 100 items, but each individual item is
103// 300 KB in size, the system returns 52 items (so as not to exceed the 16 MB
104// limit). It also returns an appropriate UnprocessedKeys value so you can get
105// the next page of results. If desired, your application can include its own
106// logic to assemble the pages of results into one dataset.
107//
108// If none of the items can be processed due to insufficient provisioned throughput
109// on all of the tables in the request, then BatchGetItem returns a ProvisionedThroughputExceededException.
110// If at least one of the items is successfully processed, then BatchGetItem
111// completes successfully, while returning the keys of the unread items in UnprocessedKeys.
112//
113// If DynamoDB returns any unprocessed items, you should retry the batch operation
114// on those items. However, we strongly recommend that you use an exponential
115// backoff algorithm. If you retry the batch operation immediately, the underlying
116// read or write requests can still fail due to throttling on the individual
117// tables. If you delay the batch operation using exponential backoff, the individual
118// requests in the batch are much more likely to succeed.
119//
120// For more information, see Batch Operations and Error Handling (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ErrorHandling.html#BatchOperations)
121// in the Amazon DynamoDB Developer Guide.
122//
123// By default, BatchGetItem performs eventually consistent reads on every table
124// in the request. If you want strongly consistent reads instead, you can set
125// ConsistentRead to true for any or all tables.
126//
127// In order to minimize response latency, BatchGetItem retrieves items in parallel.
128//
129// When designing your application, keep in mind that DynamoDB does not return
130// items in any particular order. To help parse the response by item, include
131// the primary key values for the items in your request in the ProjectionExpression
132// parameter.
133//
134// If a requested item does not exist, it is not returned in the result. Requests
135// for nonexistent items consume the minimum read capacity units according to
136// the type of read. For more information, see Working with Tables (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/WorkingWithTables.html#CapacityUnitCalculations)
137// in the Amazon DynamoDB Developer Guide.
138//
139// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
140// with awserr.Error's Code and Message methods to get detailed information about
141// the error.
142//
143// See the AWS API reference guide for Amazon DynamoDB's
144// API operation BatchGetItem for usage and error information.
145//
146// Returned Error Codes:
147//   * ErrCodeProvisionedThroughputExceededException "ProvisionedThroughputExceededException"
148//   Your request rate is too high. The AWS SDKs for DynamoDB automatically retry
149//   requests that receive this exception. Your request is eventually successful,
150//   unless your retry queue is too large to finish. Reduce the frequency of requests
151//   and use exponential backoff. For more information, go to Error Retries and
152//   Exponential Backoff (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Programming.Errors.html#Programming.Errors.RetryAndBackoff)
153//   in the Amazon DynamoDB Developer Guide.
154//
155//   * ErrCodeResourceNotFoundException "ResourceNotFoundException"
156//   The operation tried to access a nonexistent table or index. The resource
157//   might not be specified correctly, or its status might not be ACTIVE.
158//
159//   * ErrCodeRequestLimitExceeded "RequestLimitExceeded"
160//   Throughput exceeds the current throughput limit for your account. Please
161//   contact AWS Support at AWS Support (https://aws.amazon.com/support) to request
162//   a limit increase.
163//
164//   * ErrCodeInternalServerError "InternalServerError"
165//   An error occurred on the server side.
166//
167// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/BatchGetItem
168func (c *DynamoDB) BatchGetItem(input *BatchGetItemInput) (*BatchGetItemOutput, error) {
169	req, out := c.BatchGetItemRequest(input)
170	return out, req.Send()
171}
172
173// BatchGetItemWithContext is the same as BatchGetItem with the addition of
174// the ability to pass a context and additional request options.
175//
176// See BatchGetItem for details on how to use this API operation.
177//
178// The context must be non-nil and will be used for request cancellation. If
179// the context is nil a panic will occur. In the future the SDK may create
180// sub-contexts for http.Requests. See https://golang.org/pkg/context/
181// for more information on using Contexts.
182func (c *DynamoDB) BatchGetItemWithContext(ctx aws.Context, input *BatchGetItemInput, opts ...request.Option) (*BatchGetItemOutput, error) {
183	req, out := c.BatchGetItemRequest(input)
184	req.SetContext(ctx)
185	req.ApplyOptions(opts...)
186	return out, req.Send()
187}
188
189// BatchGetItemPages iterates over the pages of a BatchGetItem operation,
190// calling the "fn" function with the response data for each page. To stop
191// iterating, return false from the fn function.
192//
193// See BatchGetItem method for more information on how to use this operation.
194//
195// Note: This operation can generate multiple requests to a service.
196//
197//    // Example iterating over at most 3 pages of a BatchGetItem operation.
198//    pageNum := 0
199//    err := client.BatchGetItemPages(params,
200//        func(page *dynamodb.BatchGetItemOutput, lastPage bool) bool {
201//            pageNum++
202//            fmt.Println(page)
203//            return pageNum <= 3
204//        })
205//
206func (c *DynamoDB) BatchGetItemPages(input *BatchGetItemInput, fn func(*BatchGetItemOutput, bool) bool) error {
207	return c.BatchGetItemPagesWithContext(aws.BackgroundContext(), input, fn)
208}
209
210// BatchGetItemPagesWithContext same as BatchGetItemPages except
211// it takes a Context and allows setting request options on the pages.
212//
213// The context must be non-nil and will be used for request cancellation. If
214// the context is nil a panic will occur. In the future the SDK may create
215// sub-contexts for http.Requests. See https://golang.org/pkg/context/
216// for more information on using Contexts.
217func (c *DynamoDB) BatchGetItemPagesWithContext(ctx aws.Context, input *BatchGetItemInput, fn func(*BatchGetItemOutput, bool) bool, opts ...request.Option) error {
218	p := request.Pagination{
219		NewRequest: func() (*request.Request, error) {
220			var inCpy *BatchGetItemInput
221			if input != nil {
222				tmp := *input
223				inCpy = &tmp
224			}
225			req, _ := c.BatchGetItemRequest(inCpy)
226			req.SetContext(ctx)
227			req.ApplyOptions(opts...)
228			return req, nil
229		},
230	}
231
232	cont := true
233	for p.Next() && cont {
234		cont = fn(p.Page().(*BatchGetItemOutput), !p.HasNextPage())
235	}
236	return p.Err()
237}
238
239const opBatchWriteItem = "BatchWriteItem"
240
241// BatchWriteItemRequest generates a "aws/request.Request" representing the
242// client's request for the BatchWriteItem operation. The "output" return
243// value will be populated with the request's response once the request completes
244// successfully.
245//
246// Use "Send" method on the returned Request to send the API call to the service.
247// the "output" return value is not valid until after Send returns without error.
248//
249// See BatchWriteItem for more information on using the BatchWriteItem
250// API call, and error handling.
251//
252// This method is useful when you want to inject custom logic or configuration
253// into the SDK's request lifecycle. Such as custom headers, or retry logic.
254//
255//
256//    // Example sending a request using the BatchWriteItemRequest method.
257//    req, resp := client.BatchWriteItemRequest(params)
258//
259//    err := req.Send()
260//    if err == nil { // resp is now filled
261//        fmt.Println(resp)
262//    }
263//
264// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/BatchWriteItem
265func (c *DynamoDB) BatchWriteItemRequest(input *BatchWriteItemInput) (req *request.Request, output *BatchWriteItemOutput) {
266	op := &request.Operation{
267		Name:       opBatchWriteItem,
268		HTTPMethod: "POST",
269		HTTPPath:   "/",
270	}
271
272	if input == nil {
273		input = &BatchWriteItemInput{}
274	}
275
276	output = &BatchWriteItemOutput{}
277	req = c.newRequest(op, input, output)
278	if aws.BoolValue(req.Config.EnableEndpointDiscovery) {
279		de := discovererDescribeEndpoints{
280			Required:      false,
281			EndpointCache: c.endpointCache,
282			Params: map[string]*string{
283				"op": aws.String(req.Operation.Name),
284			},
285			Client: c,
286		}
287
288		for k, v := range de.Params {
289			if v == nil {
290				delete(de.Params, k)
291			}
292		}
293
294		req.Handlers.Build.PushFrontNamed(request.NamedHandler{
295			Name: "crr.endpointdiscovery",
296			Fn:   de.Handler,
297		})
298	}
299	return
300}
301
302// BatchWriteItem API operation for Amazon DynamoDB.
303//
304// The BatchWriteItem operation puts or deletes multiple items in one or more
305// tables. A single call to BatchWriteItem can write up to 16 MB of data, which
306// can comprise as many as 25 put or delete requests. Individual items to be
307// written can be as large as 400 KB.
308//
309// BatchWriteItem cannot update items. To update items, use the UpdateItem action.
310//
311// The individual PutItem and DeleteItem operations specified in BatchWriteItem
312// are atomic; however BatchWriteItem as a whole is not. If any requested operations
313// fail because the table's provisioned throughput is exceeded or an internal
314// processing failure occurs, the failed operations are returned in the UnprocessedItems
315// response parameter. You can investigate and optionally resend the requests.
316// Typically, you would call BatchWriteItem in a loop. Each iteration would
317// check for unprocessed items and submit a new BatchWriteItem request with
318// those unprocessed items until all items have been processed.
319//
320// If none of the items can be processed due to insufficient provisioned throughput
321// on all of the tables in the request, then BatchWriteItem returns a ProvisionedThroughputExceededException.
322//
323// If DynamoDB returns any unprocessed items, you should retry the batch operation
324// on those items. However, we strongly recommend that you use an exponential
325// backoff algorithm. If you retry the batch operation immediately, the underlying
326// read or write requests can still fail due to throttling on the individual
327// tables. If you delay the batch operation using exponential backoff, the individual
328// requests in the batch are much more likely to succeed.
329//
330// For more information, see Batch Operations and Error Handling (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ErrorHandling.html#Programming.Errors.BatchOperations)
331// in the Amazon DynamoDB Developer Guide.
332//
333// With BatchWriteItem, you can efficiently write or delete large amounts of
334// data, such as from Amazon EMR, or copy data from another database into DynamoDB.
335// In order to improve performance with these large-scale operations, BatchWriteItem
336// does not behave in the same way as individual PutItem and DeleteItem calls
337// would. For example, you cannot specify conditions on individual put and delete
338// requests, and BatchWriteItem does not return deleted items in the response.
339//
340// If you use a programming language that supports concurrency, you can use
341// threads to write items in parallel. Your application must include the necessary
342// logic to manage the threads. With languages that don't support threading,
343// you must update or delete the specified items one at a time. In both situations,
344// BatchWriteItem performs the specified put and delete operations in parallel,
345// giving you the power of the thread pool approach without having to introduce
346// complexity into your application.
347//
348// Parallel processing reduces latency, but each specified put and delete request
349// consumes the same number of write capacity units whether it is processed
350// in parallel or not. Delete operations on nonexistent items consume one write
351// capacity unit.
352//
353// If one or more of the following is true, DynamoDB rejects the entire batch
354// write operation:
355//
356//    * One or more tables specified in the BatchWriteItem request does not
357//    exist.
358//
359//    * Primary key attributes specified on an item in the request do not match
360//    those in the corresponding table's primary key schema.
361//
362//    * You try to perform multiple operations on the same item in the same
363//    BatchWriteItem request. For example, you cannot put and delete the same
364//    item in the same BatchWriteItem request.
365//
366//    * Your request contains at least two items with identical hash and range
367//    keys (which essentially is two put operations).
368//
369//    * There are more than 25 requests in the batch.
370//
371//    * Any individual item in a batch exceeds 400 KB.
372//
373//    * The total request size exceeds 16 MB.
374//
375// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
376// with awserr.Error's Code and Message methods to get detailed information about
377// the error.
378//
379// See the AWS API reference guide for Amazon DynamoDB's
380// API operation BatchWriteItem for usage and error information.
381//
382// Returned Error Codes:
383//   * ErrCodeProvisionedThroughputExceededException "ProvisionedThroughputExceededException"
384//   Your request rate is too high. The AWS SDKs for DynamoDB automatically retry
385//   requests that receive this exception. Your request is eventually successful,
386//   unless your retry queue is too large to finish. Reduce the frequency of requests
387//   and use exponential backoff. For more information, go to Error Retries and
388//   Exponential Backoff (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Programming.Errors.html#Programming.Errors.RetryAndBackoff)
389//   in the Amazon DynamoDB Developer Guide.
390//
391//   * ErrCodeResourceNotFoundException "ResourceNotFoundException"
392//   The operation tried to access a nonexistent table or index. The resource
393//   might not be specified correctly, or its status might not be ACTIVE.
394//
395//   * ErrCodeItemCollectionSizeLimitExceededException "ItemCollectionSizeLimitExceededException"
396//   An item collection is too large. This exception is only returned for tables
397//   that have one or more local secondary indexes.
398//
399//   * ErrCodeRequestLimitExceeded "RequestLimitExceeded"
400//   Throughput exceeds the current throughput limit for your account. Please
401//   contact AWS Support at AWS Support (https://aws.amazon.com/support) to request
402//   a limit increase.
403//
404//   * ErrCodeInternalServerError "InternalServerError"
405//   An error occurred on the server side.
406//
407// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/BatchWriteItem
408func (c *DynamoDB) BatchWriteItem(input *BatchWriteItemInput) (*BatchWriteItemOutput, error) {
409	req, out := c.BatchWriteItemRequest(input)
410	return out, req.Send()
411}
412
413// BatchWriteItemWithContext is the same as BatchWriteItem with the addition of
414// the ability to pass a context and additional request options.
415//
416// See BatchWriteItem for details on how to use this API operation.
417//
418// The context must be non-nil and will be used for request cancellation. If
419// the context is nil a panic will occur. In the future the SDK may create
420// sub-contexts for http.Requests. See https://golang.org/pkg/context/
421// for more information on using Contexts.
422func (c *DynamoDB) BatchWriteItemWithContext(ctx aws.Context, input *BatchWriteItemInput, opts ...request.Option) (*BatchWriteItemOutput, error) {
423	req, out := c.BatchWriteItemRequest(input)
424	req.SetContext(ctx)
425	req.ApplyOptions(opts...)
426	return out, req.Send()
427}
428
429const opCreateBackup = "CreateBackup"
430
431// CreateBackupRequest generates a "aws/request.Request" representing the
432// client's request for the CreateBackup operation. The "output" return
433// value will be populated with the request's response once the request completes
434// successfully.
435//
436// Use "Send" method on the returned Request to send the API call to the service.
437// the "output" return value is not valid until after Send returns without error.
438//
439// See CreateBackup for more information on using the CreateBackup
440// API call, and error handling.
441//
442// This method is useful when you want to inject custom logic or configuration
443// into the SDK's request lifecycle. Such as custom headers, or retry logic.
444//
445//
446//    // Example sending a request using the CreateBackupRequest method.
447//    req, resp := client.CreateBackupRequest(params)
448//
449//    err := req.Send()
450//    if err == nil { // resp is now filled
451//        fmt.Println(resp)
452//    }
453//
454// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/CreateBackup
455func (c *DynamoDB) CreateBackupRequest(input *CreateBackupInput) (req *request.Request, output *CreateBackupOutput) {
456	op := &request.Operation{
457		Name:       opCreateBackup,
458		HTTPMethod: "POST",
459		HTTPPath:   "/",
460	}
461
462	if input == nil {
463		input = &CreateBackupInput{}
464	}
465
466	output = &CreateBackupOutput{}
467	req = c.newRequest(op, input, output)
468	if aws.BoolValue(req.Config.EnableEndpointDiscovery) {
469		de := discovererDescribeEndpoints{
470			Required:      false,
471			EndpointCache: c.endpointCache,
472			Params: map[string]*string{
473				"op": aws.String(req.Operation.Name),
474			},
475			Client: c,
476		}
477
478		for k, v := range de.Params {
479			if v == nil {
480				delete(de.Params, k)
481			}
482		}
483
484		req.Handlers.Build.PushFrontNamed(request.NamedHandler{
485			Name: "crr.endpointdiscovery",
486			Fn:   de.Handler,
487		})
488	}
489	return
490}
491
492// CreateBackup API operation for Amazon DynamoDB.
493//
494// Creates a backup for an existing table.
495//
496// Each time you create an on-demand backup, the entire table data is backed
497// up. There is no limit to the number of on-demand backups that can be taken.
498//
499// When you create an on-demand backup, a time marker of the request is cataloged,
500// and the backup is created asynchronously, by applying all changes until the
501// time of the request to the last full table snapshot. Backup requests are
502// processed instantaneously and become available for restore within minutes.
503//
504// You can call CreateBackup at a maximum rate of 50 times per second.
505//
506// All backups in DynamoDB work without consuming any provisioned throughput
507// on the table.
508//
509// If you submit a backup request on 2018-12-14 at 14:25:00, the backup is guaranteed
510// to contain all data committed to the table up to 14:24:00, and data committed
511// after 14:26:00 will not be. The backup might contain data modifications made
512// between 14:24:00 and 14:26:00. On-demand backup does not support causal consistency.
513//
514// Along with data, the following are also included on the backups:
515//
516//    * Global secondary indexes (GSIs)
517//
518//    * Local secondary indexes (LSIs)
519//
520//    * Streams
521//
522//    * Provisioned read and write capacity
523//
524// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
525// with awserr.Error's Code and Message methods to get detailed information about
526// the error.
527//
528// See the AWS API reference guide for Amazon DynamoDB's
529// API operation CreateBackup for usage and error information.
530//
531// Returned Error Codes:
532//   * ErrCodeTableNotFoundException "TableNotFoundException"
533//   A source table with the name TableName does not currently exist within the
534//   subscriber's account.
535//
536//   * ErrCodeTableInUseException "TableInUseException"
537//   A target table with the specified name is either being created or deleted.
538//
539//   * ErrCodeContinuousBackupsUnavailableException "ContinuousBackupsUnavailableException"
540//   Backups have not yet been enabled for this table.
541//
542//   * ErrCodeBackupInUseException "BackupInUseException"
543//   There is another ongoing conflicting backup control plane operation on the
544//   table. The backup is either being created, deleted or restored to a table.
545//
546//   * ErrCodeLimitExceededException "LimitExceededException"
547//   There is no limit to the number of daily on-demand backups that can be taken.
548//
549//   Up to 50 simultaneous table operations are allowed per account. These operations
550//   include CreateTable, UpdateTable, DeleteTable,UpdateTimeToLive, RestoreTableFromBackup,
551//   and RestoreTableToPointInTime.
552//
553//   The only exception is when you are creating a table with one or more secondary
554//   indexes. You can have up to 25 such requests running at a time; however,
555//   if the table or index specifications are complex, DynamoDB might temporarily
556//   reduce the number of concurrent operations.
557//
558//   There is a soft account limit of 256 tables.
559//
560//   * ErrCodeInternalServerError "InternalServerError"
561//   An error occurred on the server side.
562//
563// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/CreateBackup
564func (c *DynamoDB) CreateBackup(input *CreateBackupInput) (*CreateBackupOutput, error) {
565	req, out := c.CreateBackupRequest(input)
566	return out, req.Send()
567}
568
569// CreateBackupWithContext is the same as CreateBackup with the addition of
570// the ability to pass a context and additional request options.
571//
572// See CreateBackup for details on how to use this API operation.
573//
574// The context must be non-nil and will be used for request cancellation. If
575// the context is nil a panic will occur. In the future the SDK may create
576// sub-contexts for http.Requests. See https://golang.org/pkg/context/
577// for more information on using Contexts.
578func (c *DynamoDB) CreateBackupWithContext(ctx aws.Context, input *CreateBackupInput, opts ...request.Option) (*CreateBackupOutput, error) {
579	req, out := c.CreateBackupRequest(input)
580	req.SetContext(ctx)
581	req.ApplyOptions(opts...)
582	return out, req.Send()
583}
584
585const opCreateGlobalTable = "CreateGlobalTable"
586
587// CreateGlobalTableRequest generates a "aws/request.Request" representing the
588// client's request for the CreateGlobalTable operation. The "output" return
589// value will be populated with the request's response once the request completes
590// successfully.
591//
592// Use "Send" method on the returned Request to send the API call to the service.
593// the "output" return value is not valid until after Send returns without error.
594//
595// See CreateGlobalTable for more information on using the CreateGlobalTable
596// API call, and error handling.
597//
598// This method is useful when you want to inject custom logic or configuration
599// into the SDK's request lifecycle. Such as custom headers, or retry logic.
600//
601//
602//    // Example sending a request using the CreateGlobalTableRequest method.
603//    req, resp := client.CreateGlobalTableRequest(params)
604//
605//    err := req.Send()
606//    if err == nil { // resp is now filled
607//        fmt.Println(resp)
608//    }
609//
610// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/CreateGlobalTable
611func (c *DynamoDB) CreateGlobalTableRequest(input *CreateGlobalTableInput) (req *request.Request, output *CreateGlobalTableOutput) {
612	op := &request.Operation{
613		Name:       opCreateGlobalTable,
614		HTTPMethod: "POST",
615		HTTPPath:   "/",
616	}
617
618	if input == nil {
619		input = &CreateGlobalTableInput{}
620	}
621
622	output = &CreateGlobalTableOutput{}
623	req = c.newRequest(op, input, output)
624	if aws.BoolValue(req.Config.EnableEndpointDiscovery) {
625		de := discovererDescribeEndpoints{
626			Required:      false,
627			EndpointCache: c.endpointCache,
628			Params: map[string]*string{
629				"op": aws.String(req.Operation.Name),
630			},
631			Client: c,
632		}
633
634		for k, v := range de.Params {
635			if v == nil {
636				delete(de.Params, k)
637			}
638		}
639
640		req.Handlers.Build.PushFrontNamed(request.NamedHandler{
641			Name: "crr.endpointdiscovery",
642			Fn:   de.Handler,
643		})
644	}
645	return
646}
647
648// CreateGlobalTable API operation for Amazon DynamoDB.
649//
650// Creates a global table from an existing table. A global table creates a replication
651// relationship between two or more DynamoDB tables with the same table name
652// in the provided Regions.
653//
654// If you want to add a new replica table to a global table, each of the following
655// conditions must be true:
656//
657//    * The table must have the same primary key as all of the other replicas.
658//
659//    * The table must have the same name as all of the other replicas.
660//
661//    * The table must have DynamoDB Streams enabled, with the stream containing
662//    both the new and the old images of the item.
663//
664//    * None of the replica tables in the global table can contain any data.
665//
666// If global secondary indexes are specified, then the following conditions
667// must also be met:
668//
669//    * The global secondary indexes must have the same name.
670//
671//    * The global secondary indexes must have the same hash key and sort key
672//    (if present).
673//
674// Write capacity settings should be set consistently across your replica tables
675// and secondary indexes. DynamoDB strongly recommends enabling auto scaling
676// to manage the write capacity settings for all of your global tables replicas
677// and indexes.
678//
679// If you prefer to manage write capacity settings manually, you should provision
680// equal replicated write capacity units to your replica tables. You should
681// also provision equal replicated write capacity units to matching secondary
682// indexes across your global table.
683//
684// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
685// with awserr.Error's Code and Message methods to get detailed information about
686// the error.
687//
688// See the AWS API reference guide for Amazon DynamoDB's
689// API operation CreateGlobalTable for usage and error information.
690//
691// Returned Error Codes:
692//   * ErrCodeLimitExceededException "LimitExceededException"
693//   There is no limit to the number of daily on-demand backups that can be taken.
694//
695//   Up to 50 simultaneous table operations are allowed per account. These operations
696//   include CreateTable, UpdateTable, DeleteTable,UpdateTimeToLive, RestoreTableFromBackup,
697//   and RestoreTableToPointInTime.
698//
699//   The only exception is when you are creating a table with one or more secondary
700//   indexes. You can have up to 25 such requests running at a time; however,
701//   if the table or index specifications are complex, DynamoDB might temporarily
702//   reduce the number of concurrent operations.
703//
704//   There is a soft account limit of 256 tables.
705//
706//   * ErrCodeInternalServerError "InternalServerError"
707//   An error occurred on the server side.
708//
709//   * ErrCodeGlobalTableAlreadyExistsException "GlobalTableAlreadyExistsException"
710//   The specified global table already exists.
711//
712//   * ErrCodeTableNotFoundException "TableNotFoundException"
713//   A source table with the name TableName does not currently exist within the
714//   subscriber's account.
715//
716// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/CreateGlobalTable
717func (c *DynamoDB) CreateGlobalTable(input *CreateGlobalTableInput) (*CreateGlobalTableOutput, error) {
718	req, out := c.CreateGlobalTableRequest(input)
719	return out, req.Send()
720}
721
722// CreateGlobalTableWithContext is the same as CreateGlobalTable with the addition of
723// the ability to pass a context and additional request options.
724//
725// See CreateGlobalTable for details on how to use this API operation.
726//
727// The context must be non-nil and will be used for request cancellation. If
728// the context is nil a panic will occur. In the future the SDK may create
729// sub-contexts for http.Requests. See https://golang.org/pkg/context/
730// for more information on using Contexts.
731func (c *DynamoDB) CreateGlobalTableWithContext(ctx aws.Context, input *CreateGlobalTableInput, opts ...request.Option) (*CreateGlobalTableOutput, error) {
732	req, out := c.CreateGlobalTableRequest(input)
733	req.SetContext(ctx)
734	req.ApplyOptions(opts...)
735	return out, req.Send()
736}
737
738const opCreateTable = "CreateTable"
739
740// CreateTableRequest generates a "aws/request.Request" representing the
741// client's request for the CreateTable operation. The "output" return
742// value will be populated with the request's response once the request completes
743// successfully.
744//
745// Use "Send" method on the returned Request to send the API call to the service.
746// the "output" return value is not valid until after Send returns without error.
747//
748// See CreateTable for more information on using the CreateTable
749// API call, and error handling.
750//
751// This method is useful when you want to inject custom logic or configuration
752// into the SDK's request lifecycle. Such as custom headers, or retry logic.
753//
754//
755//    // Example sending a request using the CreateTableRequest method.
756//    req, resp := client.CreateTableRequest(params)
757//
758//    err := req.Send()
759//    if err == nil { // resp is now filled
760//        fmt.Println(resp)
761//    }
762//
763// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/CreateTable
764func (c *DynamoDB) CreateTableRequest(input *CreateTableInput) (req *request.Request, output *CreateTableOutput) {
765	op := &request.Operation{
766		Name:       opCreateTable,
767		HTTPMethod: "POST",
768		HTTPPath:   "/",
769	}
770
771	if input == nil {
772		input = &CreateTableInput{}
773	}
774
775	output = &CreateTableOutput{}
776	req = c.newRequest(op, input, output)
777	if aws.BoolValue(req.Config.EnableEndpointDiscovery) {
778		de := discovererDescribeEndpoints{
779			Required:      false,
780			EndpointCache: c.endpointCache,
781			Params: map[string]*string{
782				"op": aws.String(req.Operation.Name),
783			},
784			Client: c,
785		}
786
787		for k, v := range de.Params {
788			if v == nil {
789				delete(de.Params, k)
790			}
791		}
792
793		req.Handlers.Build.PushFrontNamed(request.NamedHandler{
794			Name: "crr.endpointdiscovery",
795			Fn:   de.Handler,
796		})
797	}
798	return
799}
800
801// CreateTable API operation for Amazon DynamoDB.
802//
803// The CreateTable operation adds a new table to your account. In an AWS account,
804// table names must be unique within each Region. That is, you can have two
805// tables with same name if you create the tables in different Regions.
806//
807// CreateTable is an asynchronous operation. Upon receiving a CreateTable request,
808// DynamoDB immediately returns a response with a TableStatus of CREATING. After
809// the table is created, DynamoDB sets the TableStatus to ACTIVE. You can perform
810// read and write operations only on an ACTIVE table.
811//
812// You can optionally define secondary indexes on the new table, as part of
813// the CreateTable operation. If you want to create multiple tables with secondary
814// indexes on them, you must create the tables sequentially. Only one table
815// with secondary indexes can be in the CREATING state at any given time.
816//
817// You can use the DescribeTable action to check the table status.
818//
819// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
820// with awserr.Error's Code and Message methods to get detailed information about
821// the error.
822//
823// See the AWS API reference guide for Amazon DynamoDB's
824// API operation CreateTable for usage and error information.
825//
826// Returned Error Codes:
827//   * ErrCodeResourceInUseException "ResourceInUseException"
828//   The operation conflicts with the resource's availability. For example, you
829//   attempted to recreate an existing table, or tried to delete a table currently
830//   in the CREATING state.
831//
832//   * ErrCodeLimitExceededException "LimitExceededException"
833//   There is no limit to the number of daily on-demand backups that can be taken.
834//
835//   Up to 50 simultaneous table operations are allowed per account. These operations
836//   include CreateTable, UpdateTable, DeleteTable,UpdateTimeToLive, RestoreTableFromBackup,
837//   and RestoreTableToPointInTime.
838//
839//   The only exception is when you are creating a table with one or more secondary
840//   indexes. You can have up to 25 such requests running at a time; however,
841//   if the table or index specifications are complex, DynamoDB might temporarily
842//   reduce the number of concurrent operations.
843//
844//   There is a soft account limit of 256 tables.
845//
846//   * ErrCodeInternalServerError "InternalServerError"
847//   An error occurred on the server side.
848//
849// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/CreateTable
850func (c *DynamoDB) CreateTable(input *CreateTableInput) (*CreateTableOutput, error) {
851	req, out := c.CreateTableRequest(input)
852	return out, req.Send()
853}
854
855// CreateTableWithContext is the same as CreateTable with the addition of
856// the ability to pass a context and additional request options.
857//
858// See CreateTable for details on how to use this API operation.
859//
860// The context must be non-nil and will be used for request cancellation. If
861// the context is nil a panic will occur. In the future the SDK may create
862// sub-contexts for http.Requests. See https://golang.org/pkg/context/
863// for more information on using Contexts.
864func (c *DynamoDB) CreateTableWithContext(ctx aws.Context, input *CreateTableInput, opts ...request.Option) (*CreateTableOutput, error) {
865	req, out := c.CreateTableRequest(input)
866	req.SetContext(ctx)
867	req.ApplyOptions(opts...)
868	return out, req.Send()
869}
870
871const opDeleteBackup = "DeleteBackup"
872
873// DeleteBackupRequest generates a "aws/request.Request" representing the
874// client's request for the DeleteBackup operation. The "output" return
875// value will be populated with the request's response once the request completes
876// successfully.
877//
878// Use "Send" method on the returned Request to send the API call to the service.
879// the "output" return value is not valid until after Send returns without error.
880//
881// See DeleteBackup for more information on using the DeleteBackup
882// API call, and error handling.
883//
884// This method is useful when you want to inject custom logic or configuration
885// into the SDK's request lifecycle. Such as custom headers, or retry logic.
886//
887//
888//    // Example sending a request using the DeleteBackupRequest method.
889//    req, resp := client.DeleteBackupRequest(params)
890//
891//    err := req.Send()
892//    if err == nil { // resp is now filled
893//        fmt.Println(resp)
894//    }
895//
896// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/DeleteBackup
897func (c *DynamoDB) DeleteBackupRequest(input *DeleteBackupInput) (req *request.Request, output *DeleteBackupOutput) {
898	op := &request.Operation{
899		Name:       opDeleteBackup,
900		HTTPMethod: "POST",
901		HTTPPath:   "/",
902	}
903
904	if input == nil {
905		input = &DeleteBackupInput{}
906	}
907
908	output = &DeleteBackupOutput{}
909	req = c.newRequest(op, input, output)
910	if aws.BoolValue(req.Config.EnableEndpointDiscovery) {
911		de := discovererDescribeEndpoints{
912			Required:      false,
913			EndpointCache: c.endpointCache,
914			Params: map[string]*string{
915				"op": aws.String(req.Operation.Name),
916			},
917			Client: c,
918		}
919
920		for k, v := range de.Params {
921			if v == nil {
922				delete(de.Params, k)
923			}
924		}
925
926		req.Handlers.Build.PushFrontNamed(request.NamedHandler{
927			Name: "crr.endpointdiscovery",
928			Fn:   de.Handler,
929		})
930	}
931	return
932}
933
934// DeleteBackup API operation for Amazon DynamoDB.
935//
936// Deletes an existing backup of a table.
937//
938// You can call DeleteBackup at a maximum rate of 10 times per second.
939//
940// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
941// with awserr.Error's Code and Message methods to get detailed information about
942// the error.
943//
944// See the AWS API reference guide for Amazon DynamoDB's
945// API operation DeleteBackup for usage and error information.
946//
947// Returned Error Codes:
948//   * ErrCodeBackupNotFoundException "BackupNotFoundException"
949//   Backup not found for the given BackupARN.
950//
951//   * ErrCodeBackupInUseException "BackupInUseException"
952//   There is another ongoing conflicting backup control plane operation on the
953//   table. The backup is either being created, deleted or restored to a table.
954//
955//   * ErrCodeLimitExceededException "LimitExceededException"
956//   There is no limit to the number of daily on-demand backups that can be taken.
957//
958//   Up to 50 simultaneous table operations are allowed per account. These operations
959//   include CreateTable, UpdateTable, DeleteTable,UpdateTimeToLive, RestoreTableFromBackup,
960//   and RestoreTableToPointInTime.
961//
962//   The only exception is when you are creating a table with one or more secondary
963//   indexes. You can have up to 25 such requests running at a time; however,
964//   if the table or index specifications are complex, DynamoDB might temporarily
965//   reduce the number of concurrent operations.
966//
967//   There is a soft account limit of 256 tables.
968//
969//   * ErrCodeInternalServerError "InternalServerError"
970//   An error occurred on the server side.
971//
972// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/DeleteBackup
973func (c *DynamoDB) DeleteBackup(input *DeleteBackupInput) (*DeleteBackupOutput, error) {
974	req, out := c.DeleteBackupRequest(input)
975	return out, req.Send()
976}
977
978// DeleteBackupWithContext is the same as DeleteBackup with the addition of
979// the ability to pass a context and additional request options.
980//
981// See DeleteBackup for details on how to use this API operation.
982//
983// The context must be non-nil and will be used for request cancellation. If
984// the context is nil a panic will occur. In the future the SDK may create
985// sub-contexts for http.Requests. See https://golang.org/pkg/context/
986// for more information on using Contexts.
987func (c *DynamoDB) DeleteBackupWithContext(ctx aws.Context, input *DeleteBackupInput, opts ...request.Option) (*DeleteBackupOutput, error) {
988	req, out := c.DeleteBackupRequest(input)
989	req.SetContext(ctx)
990	req.ApplyOptions(opts...)
991	return out, req.Send()
992}
993
994const opDeleteItem = "DeleteItem"
995
996// DeleteItemRequest generates a "aws/request.Request" representing the
997// client's request for the DeleteItem operation. The "output" return
998// value will be populated with the request's response once the request completes
999// successfully.
1000//
1001// Use "Send" method on the returned Request to send the API call to the service.
1002// the "output" return value is not valid until after Send returns without error.
1003//
1004// See DeleteItem for more information on using the DeleteItem
1005// API call, and error handling.
1006//
1007// This method is useful when you want to inject custom logic or configuration
1008// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1009//
1010//
1011//    // Example sending a request using the DeleteItemRequest method.
1012//    req, resp := client.DeleteItemRequest(params)
1013//
1014//    err := req.Send()
1015//    if err == nil { // resp is now filled
1016//        fmt.Println(resp)
1017//    }
1018//
1019// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/DeleteItem
1020func (c *DynamoDB) DeleteItemRequest(input *DeleteItemInput) (req *request.Request, output *DeleteItemOutput) {
1021	op := &request.Operation{
1022		Name:       opDeleteItem,
1023		HTTPMethod: "POST",
1024		HTTPPath:   "/",
1025	}
1026
1027	if input == nil {
1028		input = &DeleteItemInput{}
1029	}
1030
1031	output = &DeleteItemOutput{}
1032	req = c.newRequest(op, input, output)
1033	if aws.BoolValue(req.Config.EnableEndpointDiscovery) {
1034		de := discovererDescribeEndpoints{
1035			Required:      false,
1036			EndpointCache: c.endpointCache,
1037			Params: map[string]*string{
1038				"op": aws.String(req.Operation.Name),
1039			},
1040			Client: c,
1041		}
1042
1043		for k, v := range de.Params {
1044			if v == nil {
1045				delete(de.Params, k)
1046			}
1047		}
1048
1049		req.Handlers.Build.PushFrontNamed(request.NamedHandler{
1050			Name: "crr.endpointdiscovery",
1051			Fn:   de.Handler,
1052		})
1053	}
1054	return
1055}
1056
1057// DeleteItem API operation for Amazon DynamoDB.
1058//
1059// Deletes a single item in a table by primary key. You can perform a conditional
1060// delete operation that deletes the item if it exists, or if it has an expected
1061// attribute value.
1062//
1063// In addition to deleting an item, you can also return the item's attribute
1064// values in the same operation, using the ReturnValues parameter.
1065//
1066// Unless you specify conditions, the DeleteItem is an idempotent operation;
1067// running it multiple times on the same item or attribute does not result in
1068// an error response.
1069//
1070// Conditional deletes are useful for deleting items only if specific conditions
1071// are met. If those conditions are met, DynamoDB performs the delete. Otherwise,
1072// the item is not deleted.
1073//
1074// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1075// with awserr.Error's Code and Message methods to get detailed information about
1076// the error.
1077//
1078// See the AWS API reference guide for Amazon DynamoDB's
1079// API operation DeleteItem for usage and error information.
1080//
1081// Returned Error Codes:
1082//   * ErrCodeConditionalCheckFailedException "ConditionalCheckFailedException"
1083//   A condition specified in the operation could not be evaluated.
1084//
1085//   * ErrCodeProvisionedThroughputExceededException "ProvisionedThroughputExceededException"
1086//   Your request rate is too high. The AWS SDKs for DynamoDB automatically retry
1087//   requests that receive this exception. Your request is eventually successful,
1088//   unless your retry queue is too large to finish. Reduce the frequency of requests
1089//   and use exponential backoff. For more information, go to Error Retries and
1090//   Exponential Backoff (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Programming.Errors.html#Programming.Errors.RetryAndBackoff)
1091//   in the Amazon DynamoDB Developer Guide.
1092//
1093//   * ErrCodeResourceNotFoundException "ResourceNotFoundException"
1094//   The operation tried to access a nonexistent table or index. The resource
1095//   might not be specified correctly, or its status might not be ACTIVE.
1096//
1097//   * ErrCodeItemCollectionSizeLimitExceededException "ItemCollectionSizeLimitExceededException"
1098//   An item collection is too large. This exception is only returned for tables
1099//   that have one or more local secondary indexes.
1100//
1101//   * ErrCodeTransactionConflictException "TransactionConflictException"
1102//   Operation was rejected because there is an ongoing transaction for the item.
1103//
1104//   * ErrCodeRequestLimitExceeded "RequestLimitExceeded"
1105//   Throughput exceeds the current throughput limit for your account. Please
1106//   contact AWS Support at AWS Support (https://aws.amazon.com/support) to request
1107//   a limit increase.
1108//
1109//   * ErrCodeInternalServerError "InternalServerError"
1110//   An error occurred on the server side.
1111//
1112// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/DeleteItem
1113func (c *DynamoDB) DeleteItem(input *DeleteItemInput) (*DeleteItemOutput, error) {
1114	req, out := c.DeleteItemRequest(input)
1115	return out, req.Send()
1116}
1117
1118// DeleteItemWithContext is the same as DeleteItem with the addition of
1119// the ability to pass a context and additional request options.
1120//
1121// See DeleteItem for details on how to use this API operation.
1122//
1123// The context must be non-nil and will be used for request cancellation. If
1124// the context is nil a panic will occur. In the future the SDK may create
1125// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1126// for more information on using Contexts.
1127func (c *DynamoDB) DeleteItemWithContext(ctx aws.Context, input *DeleteItemInput, opts ...request.Option) (*DeleteItemOutput, error) {
1128	req, out := c.DeleteItemRequest(input)
1129	req.SetContext(ctx)
1130	req.ApplyOptions(opts...)
1131	return out, req.Send()
1132}
1133
1134const opDeleteTable = "DeleteTable"
1135
1136// DeleteTableRequest generates a "aws/request.Request" representing the
1137// client's request for the DeleteTable operation. The "output" return
1138// value will be populated with the request's response once the request completes
1139// successfully.
1140//
1141// Use "Send" method on the returned Request to send the API call to the service.
1142// the "output" return value is not valid until after Send returns without error.
1143//
1144// See DeleteTable for more information on using the DeleteTable
1145// API call, and error handling.
1146//
1147// This method is useful when you want to inject custom logic or configuration
1148// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1149//
1150//
1151//    // Example sending a request using the DeleteTableRequest method.
1152//    req, resp := client.DeleteTableRequest(params)
1153//
1154//    err := req.Send()
1155//    if err == nil { // resp is now filled
1156//        fmt.Println(resp)
1157//    }
1158//
1159// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/DeleteTable
1160func (c *DynamoDB) DeleteTableRequest(input *DeleteTableInput) (req *request.Request, output *DeleteTableOutput) {
1161	op := &request.Operation{
1162		Name:       opDeleteTable,
1163		HTTPMethod: "POST",
1164		HTTPPath:   "/",
1165	}
1166
1167	if input == nil {
1168		input = &DeleteTableInput{}
1169	}
1170
1171	output = &DeleteTableOutput{}
1172	req = c.newRequest(op, input, output)
1173	if aws.BoolValue(req.Config.EnableEndpointDiscovery) {
1174		de := discovererDescribeEndpoints{
1175			Required:      false,
1176			EndpointCache: c.endpointCache,
1177			Params: map[string]*string{
1178				"op": aws.String(req.Operation.Name),
1179			},
1180			Client: c,
1181		}
1182
1183		for k, v := range de.Params {
1184			if v == nil {
1185				delete(de.Params, k)
1186			}
1187		}
1188
1189		req.Handlers.Build.PushFrontNamed(request.NamedHandler{
1190			Name: "crr.endpointdiscovery",
1191			Fn:   de.Handler,
1192		})
1193	}
1194	return
1195}
1196
1197// DeleteTable API operation for Amazon DynamoDB.
1198//
1199// The DeleteTable operation deletes a table and all of its items. After a DeleteTable
1200// request, the specified table is in the DELETING state until DynamoDB completes
1201// the deletion. If the table is in the ACTIVE state, you can delete it. If
1202// a table is in CREATING or UPDATING states, then DynamoDB returns a ResourceInUseException.
1203// If the specified table does not exist, DynamoDB returns a ResourceNotFoundException.
1204// If table is already in the DELETING state, no error is returned.
1205//
1206// DynamoDB might continue to accept data read and write operations, such as
1207// GetItem and PutItem, on a table in the DELETING state until the table deletion
1208// is complete.
1209//
1210// When you delete a table, any indexes on that table are also deleted.
1211//
1212// If you have DynamoDB Streams enabled on the table, then the corresponding
1213// stream on that table goes into the DISABLED state, and the stream is automatically
1214// deleted after 24 hours.
1215//
1216// Use the DescribeTable action to check the status of the table.
1217//
1218// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1219// with awserr.Error's Code and Message methods to get detailed information about
1220// the error.
1221//
1222// See the AWS API reference guide for Amazon DynamoDB's
1223// API operation DeleteTable for usage and error information.
1224//
1225// Returned Error Codes:
1226//   * ErrCodeResourceInUseException "ResourceInUseException"
1227//   The operation conflicts with the resource's availability. For example, you
1228//   attempted to recreate an existing table, or tried to delete a table currently
1229//   in the CREATING state.
1230//
1231//   * ErrCodeResourceNotFoundException "ResourceNotFoundException"
1232//   The operation tried to access a nonexistent table or index. The resource
1233//   might not be specified correctly, or its status might not be ACTIVE.
1234//
1235//   * ErrCodeLimitExceededException "LimitExceededException"
1236//   There is no limit to the number of daily on-demand backups that can be taken.
1237//
1238//   Up to 50 simultaneous table operations are allowed per account. These operations
1239//   include CreateTable, UpdateTable, DeleteTable,UpdateTimeToLive, RestoreTableFromBackup,
1240//   and RestoreTableToPointInTime.
1241//
1242//   The only exception is when you are creating a table with one or more secondary
1243//   indexes. You can have up to 25 such requests running at a time; however,
1244//   if the table or index specifications are complex, DynamoDB might temporarily
1245//   reduce the number of concurrent operations.
1246//
1247//   There is a soft account limit of 256 tables.
1248//
1249//   * ErrCodeInternalServerError "InternalServerError"
1250//   An error occurred on the server side.
1251//
1252// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/DeleteTable
1253func (c *DynamoDB) DeleteTable(input *DeleteTableInput) (*DeleteTableOutput, error) {
1254	req, out := c.DeleteTableRequest(input)
1255	return out, req.Send()
1256}
1257
1258// DeleteTableWithContext is the same as DeleteTable with the addition of
1259// the ability to pass a context and additional request options.
1260//
1261// See DeleteTable for details on how to use this API operation.
1262//
1263// The context must be non-nil and will be used for request cancellation. If
1264// the context is nil a panic will occur. In the future the SDK may create
1265// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1266// for more information on using Contexts.
1267func (c *DynamoDB) DeleteTableWithContext(ctx aws.Context, input *DeleteTableInput, opts ...request.Option) (*DeleteTableOutput, error) {
1268	req, out := c.DeleteTableRequest(input)
1269	req.SetContext(ctx)
1270	req.ApplyOptions(opts...)
1271	return out, req.Send()
1272}
1273
1274const opDescribeBackup = "DescribeBackup"
1275
1276// DescribeBackupRequest generates a "aws/request.Request" representing the
1277// client's request for the DescribeBackup operation. The "output" return
1278// value will be populated with the request's response once the request completes
1279// successfully.
1280//
1281// Use "Send" method on the returned Request to send the API call to the service.
1282// the "output" return value is not valid until after Send returns without error.
1283//
1284// See DescribeBackup for more information on using the DescribeBackup
1285// API call, and error handling.
1286//
1287// This method is useful when you want to inject custom logic or configuration
1288// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1289//
1290//
1291//    // Example sending a request using the DescribeBackupRequest method.
1292//    req, resp := client.DescribeBackupRequest(params)
1293//
1294//    err := req.Send()
1295//    if err == nil { // resp is now filled
1296//        fmt.Println(resp)
1297//    }
1298//
1299// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/DescribeBackup
1300func (c *DynamoDB) DescribeBackupRequest(input *DescribeBackupInput) (req *request.Request, output *DescribeBackupOutput) {
1301	op := &request.Operation{
1302		Name:       opDescribeBackup,
1303		HTTPMethod: "POST",
1304		HTTPPath:   "/",
1305	}
1306
1307	if input == nil {
1308		input = &DescribeBackupInput{}
1309	}
1310
1311	output = &DescribeBackupOutput{}
1312	req = c.newRequest(op, input, output)
1313	if aws.BoolValue(req.Config.EnableEndpointDiscovery) {
1314		de := discovererDescribeEndpoints{
1315			Required:      false,
1316			EndpointCache: c.endpointCache,
1317			Params: map[string]*string{
1318				"op": aws.String(req.Operation.Name),
1319			},
1320			Client: c,
1321		}
1322
1323		for k, v := range de.Params {
1324			if v == nil {
1325				delete(de.Params, k)
1326			}
1327		}
1328
1329		req.Handlers.Build.PushFrontNamed(request.NamedHandler{
1330			Name: "crr.endpointdiscovery",
1331			Fn:   de.Handler,
1332		})
1333	}
1334	return
1335}
1336
1337// DescribeBackup API operation for Amazon DynamoDB.
1338//
1339// Describes an existing backup of a table.
1340//
1341// You can call DescribeBackup at a maximum rate of 10 times per second.
1342//
1343// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1344// with awserr.Error's Code and Message methods to get detailed information about
1345// the error.
1346//
1347// See the AWS API reference guide for Amazon DynamoDB's
1348// API operation DescribeBackup for usage and error information.
1349//
1350// Returned Error Codes:
1351//   * ErrCodeBackupNotFoundException "BackupNotFoundException"
1352//   Backup not found for the given BackupARN.
1353//
1354//   * ErrCodeInternalServerError "InternalServerError"
1355//   An error occurred on the server side.
1356//
1357// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/DescribeBackup
1358func (c *DynamoDB) DescribeBackup(input *DescribeBackupInput) (*DescribeBackupOutput, error) {
1359	req, out := c.DescribeBackupRequest(input)
1360	return out, req.Send()
1361}
1362
1363// DescribeBackupWithContext is the same as DescribeBackup with the addition of
1364// the ability to pass a context and additional request options.
1365//
1366// See DescribeBackup for details on how to use this API operation.
1367//
1368// The context must be non-nil and will be used for request cancellation. If
1369// the context is nil a panic will occur. In the future the SDK may create
1370// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1371// for more information on using Contexts.
1372func (c *DynamoDB) DescribeBackupWithContext(ctx aws.Context, input *DescribeBackupInput, opts ...request.Option) (*DescribeBackupOutput, error) {
1373	req, out := c.DescribeBackupRequest(input)
1374	req.SetContext(ctx)
1375	req.ApplyOptions(opts...)
1376	return out, req.Send()
1377}
1378
1379const opDescribeContinuousBackups = "DescribeContinuousBackups"
1380
1381// DescribeContinuousBackupsRequest generates a "aws/request.Request" representing the
1382// client's request for the DescribeContinuousBackups operation. The "output" return
1383// value will be populated with the request's response once the request completes
1384// successfully.
1385//
1386// Use "Send" method on the returned Request to send the API call to the service.
1387// the "output" return value is not valid until after Send returns without error.
1388//
1389// See DescribeContinuousBackups for more information on using the DescribeContinuousBackups
1390// API call, and error handling.
1391//
1392// This method is useful when you want to inject custom logic or configuration
1393// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1394//
1395//
1396//    // Example sending a request using the DescribeContinuousBackupsRequest method.
1397//    req, resp := client.DescribeContinuousBackupsRequest(params)
1398//
1399//    err := req.Send()
1400//    if err == nil { // resp is now filled
1401//        fmt.Println(resp)
1402//    }
1403//
1404// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/DescribeContinuousBackups
1405func (c *DynamoDB) DescribeContinuousBackupsRequest(input *DescribeContinuousBackupsInput) (req *request.Request, output *DescribeContinuousBackupsOutput) {
1406	op := &request.Operation{
1407		Name:       opDescribeContinuousBackups,
1408		HTTPMethod: "POST",
1409		HTTPPath:   "/",
1410	}
1411
1412	if input == nil {
1413		input = &DescribeContinuousBackupsInput{}
1414	}
1415
1416	output = &DescribeContinuousBackupsOutput{}
1417	req = c.newRequest(op, input, output)
1418	if aws.BoolValue(req.Config.EnableEndpointDiscovery) {
1419		de := discovererDescribeEndpoints{
1420			Required:      false,
1421			EndpointCache: c.endpointCache,
1422			Params: map[string]*string{
1423				"op": aws.String(req.Operation.Name),
1424			},
1425			Client: c,
1426		}
1427
1428		for k, v := range de.Params {
1429			if v == nil {
1430				delete(de.Params, k)
1431			}
1432		}
1433
1434		req.Handlers.Build.PushFrontNamed(request.NamedHandler{
1435			Name: "crr.endpointdiscovery",
1436			Fn:   de.Handler,
1437		})
1438	}
1439	return
1440}
1441
1442// DescribeContinuousBackups API operation for Amazon DynamoDB.
1443//
1444// Checks the status of continuous backups and point in time recovery on the
1445// specified table. Continuous backups are ENABLED on all tables at table creation.
1446// If point in time recovery is enabled, PointInTimeRecoveryStatus will be set
1447// to ENABLED.
1448//
1449// After continuous backups and point in time recovery are enabled, you can
1450// restore to any point in time within EarliestRestorableDateTime and LatestRestorableDateTime.
1451//
1452// LatestRestorableDateTime is typically 5 minutes before the current time.
1453// You can restore your table to any point in time during the last 35 days.
1454//
1455// You can call DescribeContinuousBackups at a maximum rate of 10 times per
1456// second.
1457//
1458// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1459// with awserr.Error's Code and Message methods to get detailed information about
1460// the error.
1461//
1462// See the AWS API reference guide for Amazon DynamoDB's
1463// API operation DescribeContinuousBackups for usage and error information.
1464//
1465// Returned Error Codes:
1466//   * ErrCodeTableNotFoundException "TableNotFoundException"
1467//   A source table with the name TableName does not currently exist within the
1468//   subscriber's account.
1469//
1470//   * ErrCodeInternalServerError "InternalServerError"
1471//   An error occurred on the server side.
1472//
1473// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/DescribeContinuousBackups
1474func (c *DynamoDB) DescribeContinuousBackups(input *DescribeContinuousBackupsInput) (*DescribeContinuousBackupsOutput, error) {
1475	req, out := c.DescribeContinuousBackupsRequest(input)
1476	return out, req.Send()
1477}
1478
1479// DescribeContinuousBackupsWithContext is the same as DescribeContinuousBackups with the addition of
1480// the ability to pass a context and additional request options.
1481//
1482// See DescribeContinuousBackups for details on how to use this API operation.
1483//
1484// The context must be non-nil and will be used for request cancellation. If
1485// the context is nil a panic will occur. In the future the SDK may create
1486// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1487// for more information on using Contexts.
1488func (c *DynamoDB) DescribeContinuousBackupsWithContext(ctx aws.Context, input *DescribeContinuousBackupsInput, opts ...request.Option) (*DescribeContinuousBackupsOutput, error) {
1489	req, out := c.DescribeContinuousBackupsRequest(input)
1490	req.SetContext(ctx)
1491	req.ApplyOptions(opts...)
1492	return out, req.Send()
1493}
1494
1495const opDescribeEndpoints = "DescribeEndpoints"
1496
1497// DescribeEndpointsRequest generates a "aws/request.Request" representing the
1498// client's request for the DescribeEndpoints operation. The "output" return
1499// value will be populated with the request's response once the request completes
1500// successfully.
1501//
1502// Use "Send" method on the returned Request to send the API call to the service.
1503// the "output" return value is not valid until after Send returns without error.
1504//
1505// See DescribeEndpoints for more information on using the DescribeEndpoints
1506// API call, and error handling.
1507//
1508// This method is useful when you want to inject custom logic or configuration
1509// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1510//
1511//
1512//    // Example sending a request using the DescribeEndpointsRequest method.
1513//    req, resp := client.DescribeEndpointsRequest(params)
1514//
1515//    err := req.Send()
1516//    if err == nil { // resp is now filled
1517//        fmt.Println(resp)
1518//    }
1519//
1520// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/DescribeEndpoints
1521func (c *DynamoDB) DescribeEndpointsRequest(input *DescribeEndpointsInput) (req *request.Request, output *DescribeEndpointsOutput) {
1522	op := &request.Operation{
1523		Name:       opDescribeEndpoints,
1524		HTTPMethod: "POST",
1525		HTTPPath:   "/",
1526	}
1527
1528	if input == nil {
1529		input = &DescribeEndpointsInput{}
1530	}
1531
1532	output = &DescribeEndpointsOutput{}
1533	req = c.newRequest(op, input, output)
1534	return
1535}
1536
1537// DescribeEndpoints API operation for Amazon DynamoDB.
1538//
1539// Returns the regional endpoint information.
1540//
1541// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1542// with awserr.Error's Code and Message methods to get detailed information about
1543// the error.
1544//
1545// See the AWS API reference guide for Amazon DynamoDB's
1546// API operation DescribeEndpoints for usage and error information.
1547// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/DescribeEndpoints
1548func (c *DynamoDB) DescribeEndpoints(input *DescribeEndpointsInput) (*DescribeEndpointsOutput, error) {
1549	req, out := c.DescribeEndpointsRequest(input)
1550	return out, req.Send()
1551}
1552
1553// DescribeEndpointsWithContext is the same as DescribeEndpoints with the addition of
1554// the ability to pass a context and additional request options.
1555//
1556// See DescribeEndpoints for details on how to use this API operation.
1557//
1558// The context must be non-nil and will be used for request cancellation. If
1559// the context is nil a panic will occur. In the future the SDK may create
1560// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1561// for more information on using Contexts.
1562func (c *DynamoDB) DescribeEndpointsWithContext(ctx aws.Context, input *DescribeEndpointsInput, opts ...request.Option) (*DescribeEndpointsOutput, error) {
1563	req, out := c.DescribeEndpointsRequest(input)
1564	req.SetContext(ctx)
1565	req.ApplyOptions(opts...)
1566	return out, req.Send()
1567}
1568
1569type discovererDescribeEndpoints struct {
1570	Client        *DynamoDB
1571	Required      bool
1572	EndpointCache *crr.EndpointCache
1573	Params        map[string]*string
1574	Key           string
1575}
1576
1577func (d *discovererDescribeEndpoints) Discover() (crr.Endpoint, error) {
1578	input := &DescribeEndpointsInput{}
1579
1580	resp, err := d.Client.DescribeEndpoints(input)
1581	if err != nil {
1582		return crr.Endpoint{}, err
1583	}
1584
1585	endpoint := crr.Endpoint{
1586		Key: d.Key,
1587	}
1588
1589	for _, e := range resp.Endpoints {
1590		if e.Address == nil {
1591			continue
1592		}
1593
1594		cachedInMinutes := aws.Int64Value(e.CachePeriodInMinutes)
1595		u, err := url.Parse(*e.Address)
1596		if err != nil {
1597			continue
1598		}
1599
1600		addr := crr.WeightedAddress{
1601			URL:     u,
1602			Expired: time.Now().Add(time.Duration(cachedInMinutes) * time.Minute),
1603		}
1604
1605		endpoint.Add(addr)
1606	}
1607
1608	d.EndpointCache.Add(endpoint)
1609
1610	return endpoint, nil
1611}
1612
1613func (d *discovererDescribeEndpoints) Handler(r *request.Request) {
1614	endpointKey := crr.BuildEndpointKey(d.Params)
1615	d.Key = endpointKey
1616
1617	endpoint, err := d.EndpointCache.Get(d, endpointKey, d.Required)
1618	if err != nil {
1619		r.Error = err
1620		return
1621	}
1622
1623	if endpoint.URL != nil && len(endpoint.URL.String()) > 0 {
1624		r.HTTPRequest.URL = endpoint.URL
1625	}
1626}
1627
1628const opDescribeGlobalTable = "DescribeGlobalTable"
1629
1630// DescribeGlobalTableRequest generates a "aws/request.Request" representing the
1631// client's request for the DescribeGlobalTable operation. The "output" return
1632// value will be populated with the request's response once the request completes
1633// successfully.
1634//
1635// Use "Send" method on the returned Request to send the API call to the service.
1636// the "output" return value is not valid until after Send returns without error.
1637//
1638// See DescribeGlobalTable for more information on using the DescribeGlobalTable
1639// API call, and error handling.
1640//
1641// This method is useful when you want to inject custom logic or configuration
1642// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1643//
1644//
1645//    // Example sending a request using the DescribeGlobalTableRequest method.
1646//    req, resp := client.DescribeGlobalTableRequest(params)
1647//
1648//    err := req.Send()
1649//    if err == nil { // resp is now filled
1650//        fmt.Println(resp)
1651//    }
1652//
1653// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/DescribeGlobalTable
1654func (c *DynamoDB) DescribeGlobalTableRequest(input *DescribeGlobalTableInput) (req *request.Request, output *DescribeGlobalTableOutput) {
1655	op := &request.Operation{
1656		Name:       opDescribeGlobalTable,
1657		HTTPMethod: "POST",
1658		HTTPPath:   "/",
1659	}
1660
1661	if input == nil {
1662		input = &DescribeGlobalTableInput{}
1663	}
1664
1665	output = &DescribeGlobalTableOutput{}
1666	req = c.newRequest(op, input, output)
1667	if aws.BoolValue(req.Config.EnableEndpointDiscovery) {
1668		de := discovererDescribeEndpoints{
1669			Required:      false,
1670			EndpointCache: c.endpointCache,
1671			Params: map[string]*string{
1672				"op": aws.String(req.Operation.Name),
1673			},
1674			Client: c,
1675		}
1676
1677		for k, v := range de.Params {
1678			if v == nil {
1679				delete(de.Params, k)
1680			}
1681		}
1682
1683		req.Handlers.Build.PushFrontNamed(request.NamedHandler{
1684			Name: "crr.endpointdiscovery",
1685			Fn:   de.Handler,
1686		})
1687	}
1688	return
1689}
1690
1691// DescribeGlobalTable API operation for Amazon DynamoDB.
1692//
1693// Returns information about the specified global table.
1694//
1695// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1696// with awserr.Error's Code and Message methods to get detailed information about
1697// the error.
1698//
1699// See the AWS API reference guide for Amazon DynamoDB's
1700// API operation DescribeGlobalTable for usage and error information.
1701//
1702// Returned Error Codes:
1703//   * ErrCodeInternalServerError "InternalServerError"
1704//   An error occurred on the server side.
1705//
1706//   * ErrCodeGlobalTableNotFoundException "GlobalTableNotFoundException"
1707//   The specified global table does not exist.
1708//
1709// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/DescribeGlobalTable
1710func (c *DynamoDB) DescribeGlobalTable(input *DescribeGlobalTableInput) (*DescribeGlobalTableOutput, error) {
1711	req, out := c.DescribeGlobalTableRequest(input)
1712	return out, req.Send()
1713}
1714
1715// DescribeGlobalTableWithContext is the same as DescribeGlobalTable with the addition of
1716// the ability to pass a context and additional request options.
1717//
1718// See DescribeGlobalTable for details on how to use this API operation.
1719//
1720// The context must be non-nil and will be used for request cancellation. If
1721// the context is nil a panic will occur. In the future the SDK may create
1722// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1723// for more information on using Contexts.
1724func (c *DynamoDB) DescribeGlobalTableWithContext(ctx aws.Context, input *DescribeGlobalTableInput, opts ...request.Option) (*DescribeGlobalTableOutput, error) {
1725	req, out := c.DescribeGlobalTableRequest(input)
1726	req.SetContext(ctx)
1727	req.ApplyOptions(opts...)
1728	return out, req.Send()
1729}
1730
1731const opDescribeGlobalTableSettings = "DescribeGlobalTableSettings"
1732
1733// DescribeGlobalTableSettingsRequest generates a "aws/request.Request" representing the
1734// client's request for the DescribeGlobalTableSettings operation. The "output" return
1735// value will be populated with the request's response once the request completes
1736// successfully.
1737//
1738// Use "Send" method on the returned Request to send the API call to the service.
1739// the "output" return value is not valid until after Send returns without error.
1740//
1741// See DescribeGlobalTableSettings for more information on using the DescribeGlobalTableSettings
1742// API call, and error handling.
1743//
1744// This method is useful when you want to inject custom logic or configuration
1745// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1746//
1747//
1748//    // Example sending a request using the DescribeGlobalTableSettingsRequest method.
1749//    req, resp := client.DescribeGlobalTableSettingsRequest(params)
1750//
1751//    err := req.Send()
1752//    if err == nil { // resp is now filled
1753//        fmt.Println(resp)
1754//    }
1755//
1756// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/DescribeGlobalTableSettings
1757func (c *DynamoDB) DescribeGlobalTableSettingsRequest(input *DescribeGlobalTableSettingsInput) (req *request.Request, output *DescribeGlobalTableSettingsOutput) {
1758	op := &request.Operation{
1759		Name:       opDescribeGlobalTableSettings,
1760		HTTPMethod: "POST",
1761		HTTPPath:   "/",
1762	}
1763
1764	if input == nil {
1765		input = &DescribeGlobalTableSettingsInput{}
1766	}
1767
1768	output = &DescribeGlobalTableSettingsOutput{}
1769	req = c.newRequest(op, input, output)
1770	if aws.BoolValue(req.Config.EnableEndpointDiscovery) {
1771		de := discovererDescribeEndpoints{
1772			Required:      false,
1773			EndpointCache: c.endpointCache,
1774			Params: map[string]*string{
1775				"op": aws.String(req.Operation.Name),
1776			},
1777			Client: c,
1778		}
1779
1780		for k, v := range de.Params {
1781			if v == nil {
1782				delete(de.Params, k)
1783			}
1784		}
1785
1786		req.Handlers.Build.PushFrontNamed(request.NamedHandler{
1787			Name: "crr.endpointdiscovery",
1788			Fn:   de.Handler,
1789		})
1790	}
1791	return
1792}
1793
1794// DescribeGlobalTableSettings API operation for Amazon DynamoDB.
1795//
1796// Describes Region-specific settings for a global table.
1797//
1798// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1799// with awserr.Error's Code and Message methods to get detailed information about
1800// the error.
1801//
1802// See the AWS API reference guide for Amazon DynamoDB's
1803// API operation DescribeGlobalTableSettings for usage and error information.
1804//
1805// Returned Error Codes:
1806//   * ErrCodeGlobalTableNotFoundException "GlobalTableNotFoundException"
1807//   The specified global table does not exist.
1808//
1809//   * ErrCodeInternalServerError "InternalServerError"
1810//   An error occurred on the server side.
1811//
1812// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/DescribeGlobalTableSettings
1813func (c *DynamoDB) DescribeGlobalTableSettings(input *DescribeGlobalTableSettingsInput) (*DescribeGlobalTableSettingsOutput, error) {
1814	req, out := c.DescribeGlobalTableSettingsRequest(input)
1815	return out, req.Send()
1816}
1817
1818// DescribeGlobalTableSettingsWithContext is the same as DescribeGlobalTableSettings with the addition of
1819// the ability to pass a context and additional request options.
1820//
1821// See DescribeGlobalTableSettings for details on how to use this API operation.
1822//
1823// The context must be non-nil and will be used for request cancellation. If
1824// the context is nil a panic will occur. In the future the SDK may create
1825// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1826// for more information on using Contexts.
1827func (c *DynamoDB) DescribeGlobalTableSettingsWithContext(ctx aws.Context, input *DescribeGlobalTableSettingsInput, opts ...request.Option) (*DescribeGlobalTableSettingsOutput, error) {
1828	req, out := c.DescribeGlobalTableSettingsRequest(input)
1829	req.SetContext(ctx)
1830	req.ApplyOptions(opts...)
1831	return out, req.Send()
1832}
1833
1834const opDescribeLimits = "DescribeLimits"
1835
1836// DescribeLimitsRequest generates a "aws/request.Request" representing the
1837// client's request for the DescribeLimits operation. The "output" return
1838// value will be populated with the request's response once the request completes
1839// successfully.
1840//
1841// Use "Send" method on the returned Request to send the API call to the service.
1842// the "output" return value is not valid until after Send returns without error.
1843//
1844// See DescribeLimits for more information on using the DescribeLimits
1845// API call, and error handling.
1846//
1847// This method is useful when you want to inject custom logic or configuration
1848// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1849//
1850//
1851//    // Example sending a request using the DescribeLimitsRequest method.
1852//    req, resp := client.DescribeLimitsRequest(params)
1853//
1854//    err := req.Send()
1855//    if err == nil { // resp is now filled
1856//        fmt.Println(resp)
1857//    }
1858//
1859// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/DescribeLimits
1860func (c *DynamoDB) DescribeLimitsRequest(input *DescribeLimitsInput) (req *request.Request, output *DescribeLimitsOutput) {
1861	op := &request.Operation{
1862		Name:       opDescribeLimits,
1863		HTTPMethod: "POST",
1864		HTTPPath:   "/",
1865	}
1866
1867	if input == nil {
1868		input = &DescribeLimitsInput{}
1869	}
1870
1871	output = &DescribeLimitsOutput{}
1872	req = c.newRequest(op, input, output)
1873	if aws.BoolValue(req.Config.EnableEndpointDiscovery) {
1874		de := discovererDescribeEndpoints{
1875			Required:      false,
1876			EndpointCache: c.endpointCache,
1877			Params: map[string]*string{
1878				"op": aws.String(req.Operation.Name),
1879			},
1880			Client: c,
1881		}
1882
1883		for k, v := range de.Params {
1884			if v == nil {
1885				delete(de.Params, k)
1886			}
1887		}
1888
1889		req.Handlers.Build.PushFrontNamed(request.NamedHandler{
1890			Name: "crr.endpointdiscovery",
1891			Fn:   de.Handler,
1892		})
1893	}
1894	return
1895}
1896
1897// DescribeLimits API operation for Amazon DynamoDB.
1898//
1899// Returns the current provisioned-capacity limits for your AWS account in a
1900// Region, both for the Region as a whole and for any one DynamoDB table that
1901// you create there.
1902//
1903// When you establish an AWS account, the account has initial limits on the
1904// maximum read capacity units and write capacity units that you can provision
1905// across all of your DynamoDB tables in a given Region. Also, there are per-table
1906// limits that apply when you create a table there. For more information, see
1907// Limits (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Limits.html)
1908// page in the Amazon DynamoDB Developer Guide.
1909//
1910// Although you can increase these limits by filing a case at AWS Support Center
1911// (https://console.aws.amazon.com/support/home#/), obtaining the increase is
1912// not instantaneous. The DescribeLimits action lets you write code to compare
1913// the capacity you are currently using to those limits imposed by your account
1914// so that you have enough time to apply for an increase before you hit a limit.
1915//
1916// For example, you could use one of the AWS SDKs to do the following:
1917//
1918// Call DescribeLimits for a particular Region to obtain your current account
1919// limits on provisioned capacity there.
1920//
1921// Create a variable to hold the aggregate read capacity units provisioned for
1922// all your tables in that Region, and one to hold the aggregate write capacity
1923// units. Zero them both.
1924//
1925// Call ListTables to obtain a list of all your DynamoDB tables.
1926//
1927// For each table name listed by ListTables, do the following:
1928//
1929//    * Call DescribeTable with the table name.
1930//
1931//    * Use the data returned by DescribeTable to add the read capacity units
1932//    and write capacity units provisioned for the table itself to your variables.
1933//
1934//    * If the table has one or more global secondary indexes (GSIs), loop over
1935//    these GSIs and add their provisioned capacity values to your variables
1936//    as well.
1937//
1938// Report the account limits for that Region returned by DescribeLimits, along
1939// with the total current provisioned capacity levels you have calculated.
1940//
1941// This will let you see whether you are getting close to your account-level
1942// limits.
1943//
1944// The per-table limits apply only when you are creating a new table. They restrict
1945// the sum of the provisioned capacity of the new table itself and all its global
1946// secondary indexes.
1947//
1948// For existing tables and their GSIs, DynamoDB doesn't let you increase provisioned
1949// capacity extremely rapidly. But the only upper limit that applies is that
1950// the aggregate provisioned capacity over all your tables and GSIs cannot exceed
1951// either of the per-account limits.
1952//
1953// DescribeLimits should only be called periodically. You can expect throttling
1954// errors if you call it more than once in a minute.
1955//
1956// The DescribeLimits Request element has no content.
1957//
1958// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1959// with awserr.Error's Code and Message methods to get detailed information about
1960// the error.
1961//
1962// See the AWS API reference guide for Amazon DynamoDB's
1963// API operation DescribeLimits for usage and error information.
1964//
1965// Returned Error Codes:
1966//   * ErrCodeInternalServerError "InternalServerError"
1967//   An error occurred on the server side.
1968//
1969// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/DescribeLimits
1970func (c *DynamoDB) DescribeLimits(input *DescribeLimitsInput) (*DescribeLimitsOutput, error) {
1971	req, out := c.DescribeLimitsRequest(input)
1972	return out, req.Send()
1973}
1974
1975// DescribeLimitsWithContext is the same as DescribeLimits with the addition of
1976// the ability to pass a context and additional request options.
1977//
1978// See DescribeLimits for details on how to use this API operation.
1979//
1980// The context must be non-nil and will be used for request cancellation. If
1981// the context is nil a panic will occur. In the future the SDK may create
1982// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1983// for more information on using Contexts.
1984func (c *DynamoDB) DescribeLimitsWithContext(ctx aws.Context, input *DescribeLimitsInput, opts ...request.Option) (*DescribeLimitsOutput, error) {
1985	req, out := c.DescribeLimitsRequest(input)
1986	req.SetContext(ctx)
1987	req.ApplyOptions(opts...)
1988	return out, req.Send()
1989}
1990
1991const opDescribeTable = "DescribeTable"
1992
1993// DescribeTableRequest generates a "aws/request.Request" representing the
1994// client's request for the DescribeTable operation. The "output" return
1995// value will be populated with the request's response once the request completes
1996// successfully.
1997//
1998// Use "Send" method on the returned Request to send the API call to the service.
1999// the "output" return value is not valid until after Send returns without error.
2000//
2001// See DescribeTable for more information on using the DescribeTable
2002// API call, and error handling.
2003//
2004// This method is useful when you want to inject custom logic or configuration
2005// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2006//
2007//
2008//    // Example sending a request using the DescribeTableRequest method.
2009//    req, resp := client.DescribeTableRequest(params)
2010//
2011//    err := req.Send()
2012//    if err == nil { // resp is now filled
2013//        fmt.Println(resp)
2014//    }
2015//
2016// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/DescribeTable
2017func (c *DynamoDB) DescribeTableRequest(input *DescribeTableInput) (req *request.Request, output *DescribeTableOutput) {
2018	op := &request.Operation{
2019		Name:       opDescribeTable,
2020		HTTPMethod: "POST",
2021		HTTPPath:   "/",
2022	}
2023
2024	if input == nil {
2025		input = &DescribeTableInput{}
2026	}
2027
2028	output = &DescribeTableOutput{}
2029	req = c.newRequest(op, input, output)
2030	if aws.BoolValue(req.Config.EnableEndpointDiscovery) {
2031		de := discovererDescribeEndpoints{
2032			Required:      false,
2033			EndpointCache: c.endpointCache,
2034			Params: map[string]*string{
2035				"op": aws.String(req.Operation.Name),
2036			},
2037			Client: c,
2038		}
2039
2040		for k, v := range de.Params {
2041			if v == nil {
2042				delete(de.Params, k)
2043			}
2044		}
2045
2046		req.Handlers.Build.PushFrontNamed(request.NamedHandler{
2047			Name: "crr.endpointdiscovery",
2048			Fn:   de.Handler,
2049		})
2050	}
2051	return
2052}
2053
2054// DescribeTable API operation for Amazon DynamoDB.
2055//
2056// Returns information about the table, including the current status of the
2057// table, when it was created, the primary key schema, and any indexes on the
2058// table.
2059//
2060// If you issue a DescribeTable request immediately after a CreateTable request,
2061// DynamoDB might return a ResourceNotFoundException. This is because DescribeTable
2062// uses an eventually consistent query, and the metadata for your table might
2063// not be available at that moment. Wait for a few seconds, and then try the
2064// DescribeTable request again.
2065//
2066// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2067// with awserr.Error's Code and Message methods to get detailed information about
2068// the error.
2069//
2070// See the AWS API reference guide for Amazon DynamoDB's
2071// API operation DescribeTable for usage and error information.
2072//
2073// Returned Error Codes:
2074//   * ErrCodeResourceNotFoundException "ResourceNotFoundException"
2075//   The operation tried to access a nonexistent table or index. The resource
2076//   might not be specified correctly, or its status might not be ACTIVE.
2077//
2078//   * ErrCodeInternalServerError "InternalServerError"
2079//   An error occurred on the server side.
2080//
2081// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/DescribeTable
2082func (c *DynamoDB) DescribeTable(input *DescribeTableInput) (*DescribeTableOutput, error) {
2083	req, out := c.DescribeTableRequest(input)
2084	return out, req.Send()
2085}
2086
2087// DescribeTableWithContext is the same as DescribeTable with the addition of
2088// the ability to pass a context and additional request options.
2089//
2090// See DescribeTable for details on how to use this API operation.
2091//
2092// The context must be non-nil and will be used for request cancellation. If
2093// the context is nil a panic will occur. In the future the SDK may create
2094// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2095// for more information on using Contexts.
2096func (c *DynamoDB) DescribeTableWithContext(ctx aws.Context, input *DescribeTableInput, opts ...request.Option) (*DescribeTableOutput, error) {
2097	req, out := c.DescribeTableRequest(input)
2098	req.SetContext(ctx)
2099	req.ApplyOptions(opts...)
2100	return out, req.Send()
2101}
2102
2103const opDescribeTimeToLive = "DescribeTimeToLive"
2104
2105// DescribeTimeToLiveRequest generates a "aws/request.Request" representing the
2106// client's request for the DescribeTimeToLive operation. The "output" return
2107// value will be populated with the request's response once the request completes
2108// successfully.
2109//
2110// Use "Send" method on the returned Request to send the API call to the service.
2111// the "output" return value is not valid until after Send returns without error.
2112//
2113// See DescribeTimeToLive for more information on using the DescribeTimeToLive
2114// API call, and error handling.
2115//
2116// This method is useful when you want to inject custom logic or configuration
2117// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2118//
2119//
2120//    // Example sending a request using the DescribeTimeToLiveRequest method.
2121//    req, resp := client.DescribeTimeToLiveRequest(params)
2122//
2123//    err := req.Send()
2124//    if err == nil { // resp is now filled
2125//        fmt.Println(resp)
2126//    }
2127//
2128// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/DescribeTimeToLive
2129func (c *DynamoDB) DescribeTimeToLiveRequest(input *DescribeTimeToLiveInput) (req *request.Request, output *DescribeTimeToLiveOutput) {
2130	op := &request.Operation{
2131		Name:       opDescribeTimeToLive,
2132		HTTPMethod: "POST",
2133		HTTPPath:   "/",
2134	}
2135
2136	if input == nil {
2137		input = &DescribeTimeToLiveInput{}
2138	}
2139
2140	output = &DescribeTimeToLiveOutput{}
2141	req = c.newRequest(op, input, output)
2142	if aws.BoolValue(req.Config.EnableEndpointDiscovery) {
2143		de := discovererDescribeEndpoints{
2144			Required:      false,
2145			EndpointCache: c.endpointCache,
2146			Params: map[string]*string{
2147				"op": aws.String(req.Operation.Name),
2148			},
2149			Client: c,
2150		}
2151
2152		for k, v := range de.Params {
2153			if v == nil {
2154				delete(de.Params, k)
2155			}
2156		}
2157
2158		req.Handlers.Build.PushFrontNamed(request.NamedHandler{
2159			Name: "crr.endpointdiscovery",
2160			Fn:   de.Handler,
2161		})
2162	}
2163	return
2164}
2165
2166// DescribeTimeToLive API operation for Amazon DynamoDB.
2167//
2168// Gives a description of the Time to Live (TTL) status on the specified table.
2169//
2170// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2171// with awserr.Error's Code and Message methods to get detailed information about
2172// the error.
2173//
2174// See the AWS API reference guide for Amazon DynamoDB's
2175// API operation DescribeTimeToLive for usage and error information.
2176//
2177// Returned Error Codes:
2178//   * ErrCodeResourceNotFoundException "ResourceNotFoundException"
2179//   The operation tried to access a nonexistent table or index. The resource
2180//   might not be specified correctly, or its status might not be ACTIVE.
2181//
2182//   * ErrCodeInternalServerError "InternalServerError"
2183//   An error occurred on the server side.
2184//
2185// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/DescribeTimeToLive
2186func (c *DynamoDB) DescribeTimeToLive(input *DescribeTimeToLiveInput) (*DescribeTimeToLiveOutput, error) {
2187	req, out := c.DescribeTimeToLiveRequest(input)
2188	return out, req.Send()
2189}
2190
2191// DescribeTimeToLiveWithContext is the same as DescribeTimeToLive with the addition of
2192// the ability to pass a context and additional request options.
2193//
2194// See DescribeTimeToLive for details on how to use this API operation.
2195//
2196// The context must be non-nil and will be used for request cancellation. If
2197// the context is nil a panic will occur. In the future the SDK may create
2198// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2199// for more information on using Contexts.
2200func (c *DynamoDB) DescribeTimeToLiveWithContext(ctx aws.Context, input *DescribeTimeToLiveInput, opts ...request.Option) (*DescribeTimeToLiveOutput, error) {
2201	req, out := c.DescribeTimeToLiveRequest(input)
2202	req.SetContext(ctx)
2203	req.ApplyOptions(opts...)
2204	return out, req.Send()
2205}
2206
2207const opGetItem = "GetItem"
2208
2209// GetItemRequest generates a "aws/request.Request" representing the
2210// client's request for the GetItem operation. The "output" return
2211// value will be populated with the request's response once the request completes
2212// successfully.
2213//
2214// Use "Send" method on the returned Request to send the API call to the service.
2215// the "output" return value is not valid until after Send returns without error.
2216//
2217// See GetItem for more information on using the GetItem
2218// API call, and error handling.
2219//
2220// This method is useful when you want to inject custom logic or configuration
2221// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2222//
2223//
2224//    // Example sending a request using the GetItemRequest method.
2225//    req, resp := client.GetItemRequest(params)
2226//
2227//    err := req.Send()
2228//    if err == nil { // resp is now filled
2229//        fmt.Println(resp)
2230//    }
2231//
2232// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/GetItem
2233func (c *DynamoDB) GetItemRequest(input *GetItemInput) (req *request.Request, output *GetItemOutput) {
2234	op := &request.Operation{
2235		Name:       opGetItem,
2236		HTTPMethod: "POST",
2237		HTTPPath:   "/",
2238	}
2239
2240	if input == nil {
2241		input = &GetItemInput{}
2242	}
2243
2244	output = &GetItemOutput{}
2245	req = c.newRequest(op, input, output)
2246	if aws.BoolValue(req.Config.EnableEndpointDiscovery) {
2247		de := discovererDescribeEndpoints{
2248			Required:      false,
2249			EndpointCache: c.endpointCache,
2250			Params: map[string]*string{
2251				"op": aws.String(req.Operation.Name),
2252			},
2253			Client: c,
2254		}
2255
2256		for k, v := range de.Params {
2257			if v == nil {
2258				delete(de.Params, k)
2259			}
2260		}
2261
2262		req.Handlers.Build.PushFrontNamed(request.NamedHandler{
2263			Name: "crr.endpointdiscovery",
2264			Fn:   de.Handler,
2265		})
2266	}
2267	return
2268}
2269
2270// GetItem API operation for Amazon DynamoDB.
2271//
2272// The GetItem operation returns a set of attributes for the item with the given
2273// primary key. If there is no matching item, GetItem does not return any data
2274// and there will be no Item element in the response.
2275//
2276// GetItem provides an eventually consistent read by default. If your application
2277// requires a strongly consistent read, set ConsistentRead to true. Although
2278// a strongly consistent read might take more time than an eventually consistent
2279// read, it always returns the last updated value.
2280//
2281// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2282// with awserr.Error's Code and Message methods to get detailed information about
2283// the error.
2284//
2285// See the AWS API reference guide for Amazon DynamoDB's
2286// API operation GetItem for usage and error information.
2287//
2288// Returned Error Codes:
2289//   * ErrCodeProvisionedThroughputExceededException "ProvisionedThroughputExceededException"
2290//   Your request rate is too high. The AWS SDKs for DynamoDB automatically retry
2291//   requests that receive this exception. Your request is eventually successful,
2292//   unless your retry queue is too large to finish. Reduce the frequency of requests
2293//   and use exponential backoff. For more information, go to Error Retries and
2294//   Exponential Backoff (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Programming.Errors.html#Programming.Errors.RetryAndBackoff)
2295//   in the Amazon DynamoDB Developer Guide.
2296//
2297//   * ErrCodeResourceNotFoundException "ResourceNotFoundException"
2298//   The operation tried to access a nonexistent table or index. The resource
2299//   might not be specified correctly, or its status might not be ACTIVE.
2300//
2301//   * ErrCodeRequestLimitExceeded "RequestLimitExceeded"
2302//   Throughput exceeds the current throughput limit for your account. Please
2303//   contact AWS Support at AWS Support (https://aws.amazon.com/support) to request
2304//   a limit increase.
2305//
2306//   * ErrCodeInternalServerError "InternalServerError"
2307//   An error occurred on the server side.
2308//
2309// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/GetItem
2310func (c *DynamoDB) GetItem(input *GetItemInput) (*GetItemOutput, error) {
2311	req, out := c.GetItemRequest(input)
2312	return out, req.Send()
2313}
2314
2315// GetItemWithContext is the same as GetItem with the addition of
2316// the ability to pass a context and additional request options.
2317//
2318// See GetItem for details on how to use this API operation.
2319//
2320// The context must be non-nil and will be used for request cancellation. If
2321// the context is nil a panic will occur. In the future the SDK may create
2322// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2323// for more information on using Contexts.
2324func (c *DynamoDB) GetItemWithContext(ctx aws.Context, input *GetItemInput, opts ...request.Option) (*GetItemOutput, error) {
2325	req, out := c.GetItemRequest(input)
2326	req.SetContext(ctx)
2327	req.ApplyOptions(opts...)
2328	return out, req.Send()
2329}
2330
2331const opListBackups = "ListBackups"
2332
2333// ListBackupsRequest generates a "aws/request.Request" representing the
2334// client's request for the ListBackups operation. The "output" return
2335// value will be populated with the request's response once the request completes
2336// successfully.
2337//
2338// Use "Send" method on the returned Request to send the API call to the service.
2339// the "output" return value is not valid until after Send returns without error.
2340//
2341// See ListBackups for more information on using the ListBackups
2342// API call, and error handling.
2343//
2344// This method is useful when you want to inject custom logic or configuration
2345// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2346//
2347//
2348//    // Example sending a request using the ListBackupsRequest method.
2349//    req, resp := client.ListBackupsRequest(params)
2350//
2351//    err := req.Send()
2352//    if err == nil { // resp is now filled
2353//        fmt.Println(resp)
2354//    }
2355//
2356// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/ListBackups
2357func (c *DynamoDB) ListBackupsRequest(input *ListBackupsInput) (req *request.Request, output *ListBackupsOutput) {
2358	op := &request.Operation{
2359		Name:       opListBackups,
2360		HTTPMethod: "POST",
2361		HTTPPath:   "/",
2362	}
2363
2364	if input == nil {
2365		input = &ListBackupsInput{}
2366	}
2367
2368	output = &ListBackupsOutput{}
2369	req = c.newRequest(op, input, output)
2370	if aws.BoolValue(req.Config.EnableEndpointDiscovery) {
2371		de := discovererDescribeEndpoints{
2372			Required:      false,
2373			EndpointCache: c.endpointCache,
2374			Params: map[string]*string{
2375				"op": aws.String(req.Operation.Name),
2376			},
2377			Client: c,
2378		}
2379
2380		for k, v := range de.Params {
2381			if v == nil {
2382				delete(de.Params, k)
2383			}
2384		}
2385
2386		req.Handlers.Build.PushFrontNamed(request.NamedHandler{
2387			Name: "crr.endpointdiscovery",
2388			Fn:   de.Handler,
2389		})
2390	}
2391	return
2392}
2393
2394// ListBackups API operation for Amazon DynamoDB.
2395//
2396// List backups associated with an AWS account. To list backups for a given
2397// table, specify TableName. ListBackups returns a paginated list of results
2398// with at most 1 MB worth of items in a page. You can also specify a limit
2399// for the maximum number of entries to be returned in a page.
2400//
2401// In the request, start time is inclusive, but end time is exclusive. Note
2402// that these limits are for the time at which the original backup was requested.
2403//
2404// You can call ListBackups a maximum of five times per second.
2405//
2406// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2407// with awserr.Error's Code and Message methods to get detailed information about
2408// the error.
2409//
2410// See the AWS API reference guide for Amazon DynamoDB's
2411// API operation ListBackups for usage and error information.
2412//
2413// Returned Error Codes:
2414//   * ErrCodeInternalServerError "InternalServerError"
2415//   An error occurred on the server side.
2416//
2417// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/ListBackups
2418func (c *DynamoDB) ListBackups(input *ListBackupsInput) (*ListBackupsOutput, error) {
2419	req, out := c.ListBackupsRequest(input)
2420	return out, req.Send()
2421}
2422
2423// ListBackupsWithContext is the same as ListBackups with the addition of
2424// the ability to pass a context and additional request options.
2425//
2426// See ListBackups for details on how to use this API operation.
2427//
2428// The context must be non-nil and will be used for request cancellation. If
2429// the context is nil a panic will occur. In the future the SDK may create
2430// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2431// for more information on using Contexts.
2432func (c *DynamoDB) ListBackupsWithContext(ctx aws.Context, input *ListBackupsInput, opts ...request.Option) (*ListBackupsOutput, error) {
2433	req, out := c.ListBackupsRequest(input)
2434	req.SetContext(ctx)
2435	req.ApplyOptions(opts...)
2436	return out, req.Send()
2437}
2438
2439const opListGlobalTables = "ListGlobalTables"
2440
2441// ListGlobalTablesRequest generates a "aws/request.Request" representing the
2442// client's request for the ListGlobalTables operation. The "output" return
2443// value will be populated with the request's response once the request completes
2444// successfully.
2445//
2446// Use "Send" method on the returned Request to send the API call to the service.
2447// the "output" return value is not valid until after Send returns without error.
2448//
2449// See ListGlobalTables for more information on using the ListGlobalTables
2450// API call, and error handling.
2451//
2452// This method is useful when you want to inject custom logic or configuration
2453// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2454//
2455//
2456//    // Example sending a request using the ListGlobalTablesRequest method.
2457//    req, resp := client.ListGlobalTablesRequest(params)
2458//
2459//    err := req.Send()
2460//    if err == nil { // resp is now filled
2461//        fmt.Println(resp)
2462//    }
2463//
2464// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/ListGlobalTables
2465func (c *DynamoDB) ListGlobalTablesRequest(input *ListGlobalTablesInput) (req *request.Request, output *ListGlobalTablesOutput) {
2466	op := &request.Operation{
2467		Name:       opListGlobalTables,
2468		HTTPMethod: "POST",
2469		HTTPPath:   "/",
2470	}
2471
2472	if input == nil {
2473		input = &ListGlobalTablesInput{}
2474	}
2475
2476	output = &ListGlobalTablesOutput{}
2477	req = c.newRequest(op, input, output)
2478	if aws.BoolValue(req.Config.EnableEndpointDiscovery) {
2479		de := discovererDescribeEndpoints{
2480			Required:      false,
2481			EndpointCache: c.endpointCache,
2482			Params: map[string]*string{
2483				"op": aws.String(req.Operation.Name),
2484			},
2485			Client: c,
2486		}
2487
2488		for k, v := range de.Params {
2489			if v == nil {
2490				delete(de.Params, k)
2491			}
2492		}
2493
2494		req.Handlers.Build.PushFrontNamed(request.NamedHandler{
2495			Name: "crr.endpointdiscovery",
2496			Fn:   de.Handler,
2497		})
2498	}
2499	return
2500}
2501
2502// ListGlobalTables API operation for Amazon DynamoDB.
2503//
2504// Lists all global tables that have a replica in the specified Region.
2505//
2506// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2507// with awserr.Error's Code and Message methods to get detailed information about
2508// the error.
2509//
2510// See the AWS API reference guide for Amazon DynamoDB's
2511// API operation ListGlobalTables for usage and error information.
2512//
2513// Returned Error Codes:
2514//   * ErrCodeInternalServerError "InternalServerError"
2515//   An error occurred on the server side.
2516//
2517// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/ListGlobalTables
2518func (c *DynamoDB) ListGlobalTables(input *ListGlobalTablesInput) (*ListGlobalTablesOutput, error) {
2519	req, out := c.ListGlobalTablesRequest(input)
2520	return out, req.Send()
2521}
2522
2523// ListGlobalTablesWithContext is the same as ListGlobalTables with the addition of
2524// the ability to pass a context and additional request options.
2525//
2526// See ListGlobalTables for details on how to use this API operation.
2527//
2528// The context must be non-nil and will be used for request cancellation. If
2529// the context is nil a panic will occur. In the future the SDK may create
2530// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2531// for more information on using Contexts.
2532func (c *DynamoDB) ListGlobalTablesWithContext(ctx aws.Context, input *ListGlobalTablesInput, opts ...request.Option) (*ListGlobalTablesOutput, error) {
2533	req, out := c.ListGlobalTablesRequest(input)
2534	req.SetContext(ctx)
2535	req.ApplyOptions(opts...)
2536	return out, req.Send()
2537}
2538
2539const opListTables = "ListTables"
2540
2541// ListTablesRequest generates a "aws/request.Request" representing the
2542// client's request for the ListTables operation. The "output" return
2543// value will be populated with the request's response once the request completes
2544// successfully.
2545//
2546// Use "Send" method on the returned Request to send the API call to the service.
2547// the "output" return value is not valid until after Send returns without error.
2548//
2549// See ListTables for more information on using the ListTables
2550// API call, and error handling.
2551//
2552// This method is useful when you want to inject custom logic or configuration
2553// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2554//
2555//
2556//    // Example sending a request using the ListTablesRequest method.
2557//    req, resp := client.ListTablesRequest(params)
2558//
2559//    err := req.Send()
2560//    if err == nil { // resp is now filled
2561//        fmt.Println(resp)
2562//    }
2563//
2564// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/ListTables
2565func (c *DynamoDB) ListTablesRequest(input *ListTablesInput) (req *request.Request, output *ListTablesOutput) {
2566	op := &request.Operation{
2567		Name:       opListTables,
2568		HTTPMethod: "POST",
2569		HTTPPath:   "/",
2570		Paginator: &request.Paginator{
2571			InputTokens:     []string{"ExclusiveStartTableName"},
2572			OutputTokens:    []string{"LastEvaluatedTableName"},
2573			LimitToken:      "Limit",
2574			TruncationToken: "",
2575		},
2576	}
2577
2578	if input == nil {
2579		input = &ListTablesInput{}
2580	}
2581
2582	output = &ListTablesOutput{}
2583	req = c.newRequest(op, input, output)
2584	if aws.BoolValue(req.Config.EnableEndpointDiscovery) {
2585		de := discovererDescribeEndpoints{
2586			Required:      false,
2587			EndpointCache: c.endpointCache,
2588			Params: map[string]*string{
2589				"op": aws.String(req.Operation.Name),
2590			},
2591			Client: c,
2592		}
2593
2594		for k, v := range de.Params {
2595			if v == nil {
2596				delete(de.Params, k)
2597			}
2598		}
2599
2600		req.Handlers.Build.PushFrontNamed(request.NamedHandler{
2601			Name: "crr.endpointdiscovery",
2602			Fn:   de.Handler,
2603		})
2604	}
2605	return
2606}
2607
2608// ListTables API operation for Amazon DynamoDB.
2609//
2610// Returns an array of table names associated with the current account and endpoint.
2611// The output from ListTables is paginated, with each page returning a maximum
2612// of 100 table names.
2613//
2614// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2615// with awserr.Error's Code and Message methods to get detailed information about
2616// the error.
2617//
2618// See the AWS API reference guide for Amazon DynamoDB's
2619// API operation ListTables for usage and error information.
2620//
2621// Returned Error Codes:
2622//   * ErrCodeInternalServerError "InternalServerError"
2623//   An error occurred on the server side.
2624//
2625// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/ListTables
2626func (c *DynamoDB) ListTables(input *ListTablesInput) (*ListTablesOutput, error) {
2627	req, out := c.ListTablesRequest(input)
2628	return out, req.Send()
2629}
2630
2631// ListTablesWithContext is the same as ListTables with the addition of
2632// the ability to pass a context and additional request options.
2633//
2634// See ListTables for details on how to use this API operation.
2635//
2636// The context must be non-nil and will be used for request cancellation. If
2637// the context is nil a panic will occur. In the future the SDK may create
2638// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2639// for more information on using Contexts.
2640func (c *DynamoDB) ListTablesWithContext(ctx aws.Context, input *ListTablesInput, opts ...request.Option) (*ListTablesOutput, error) {
2641	req, out := c.ListTablesRequest(input)
2642	req.SetContext(ctx)
2643	req.ApplyOptions(opts...)
2644	return out, req.Send()
2645}
2646
2647// ListTablesPages iterates over the pages of a ListTables operation,
2648// calling the "fn" function with the response data for each page. To stop
2649// iterating, return false from the fn function.
2650//
2651// See ListTables method for more information on how to use this operation.
2652//
2653// Note: This operation can generate multiple requests to a service.
2654//
2655//    // Example iterating over at most 3 pages of a ListTables operation.
2656//    pageNum := 0
2657//    err := client.ListTablesPages(params,
2658//        func(page *dynamodb.ListTablesOutput, lastPage bool) bool {
2659//            pageNum++
2660//            fmt.Println(page)
2661//            return pageNum <= 3
2662//        })
2663//
2664func (c *DynamoDB) ListTablesPages(input *ListTablesInput, fn func(*ListTablesOutput, bool) bool) error {
2665	return c.ListTablesPagesWithContext(aws.BackgroundContext(), input, fn)
2666}
2667
2668// ListTablesPagesWithContext same as ListTablesPages except
2669// it takes a Context and allows setting request options on the pages.
2670//
2671// The context must be non-nil and will be used for request cancellation. If
2672// the context is nil a panic will occur. In the future the SDK may create
2673// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2674// for more information on using Contexts.
2675func (c *DynamoDB) ListTablesPagesWithContext(ctx aws.Context, input *ListTablesInput, fn func(*ListTablesOutput, bool) bool, opts ...request.Option) error {
2676	p := request.Pagination{
2677		NewRequest: func() (*request.Request, error) {
2678			var inCpy *ListTablesInput
2679			if input != nil {
2680				tmp := *input
2681				inCpy = &tmp
2682			}
2683			req, _ := c.ListTablesRequest(inCpy)
2684			req.SetContext(ctx)
2685			req.ApplyOptions(opts...)
2686			return req, nil
2687		},
2688	}
2689
2690	cont := true
2691	for p.Next() && cont {
2692		cont = fn(p.Page().(*ListTablesOutput), !p.HasNextPage())
2693	}
2694	return p.Err()
2695}
2696
2697const opListTagsOfResource = "ListTagsOfResource"
2698
2699// ListTagsOfResourceRequest generates a "aws/request.Request" representing the
2700// client's request for the ListTagsOfResource operation. The "output" return
2701// value will be populated with the request's response once the request completes
2702// successfully.
2703//
2704// Use "Send" method on the returned Request to send the API call to the service.
2705// the "output" return value is not valid until after Send returns without error.
2706//
2707// See ListTagsOfResource for more information on using the ListTagsOfResource
2708// API call, and error handling.
2709//
2710// This method is useful when you want to inject custom logic or configuration
2711// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2712//
2713//
2714//    // Example sending a request using the ListTagsOfResourceRequest method.
2715//    req, resp := client.ListTagsOfResourceRequest(params)
2716//
2717//    err := req.Send()
2718//    if err == nil { // resp is now filled
2719//        fmt.Println(resp)
2720//    }
2721//
2722// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/ListTagsOfResource
2723func (c *DynamoDB) ListTagsOfResourceRequest(input *ListTagsOfResourceInput) (req *request.Request, output *ListTagsOfResourceOutput) {
2724	op := &request.Operation{
2725		Name:       opListTagsOfResource,
2726		HTTPMethod: "POST",
2727		HTTPPath:   "/",
2728	}
2729
2730	if input == nil {
2731		input = &ListTagsOfResourceInput{}
2732	}
2733
2734	output = &ListTagsOfResourceOutput{}
2735	req = c.newRequest(op, input, output)
2736	if aws.BoolValue(req.Config.EnableEndpointDiscovery) {
2737		de := discovererDescribeEndpoints{
2738			Required:      false,
2739			EndpointCache: c.endpointCache,
2740			Params: map[string]*string{
2741				"op": aws.String(req.Operation.Name),
2742			},
2743			Client: c,
2744		}
2745
2746		for k, v := range de.Params {
2747			if v == nil {
2748				delete(de.Params, k)
2749			}
2750		}
2751
2752		req.Handlers.Build.PushFrontNamed(request.NamedHandler{
2753			Name: "crr.endpointdiscovery",
2754			Fn:   de.Handler,
2755		})
2756	}
2757	return
2758}
2759
2760// ListTagsOfResource API operation for Amazon DynamoDB.
2761//
2762// List all tags on an Amazon DynamoDB resource. You can call ListTagsOfResource
2763// up to 10 times per second, per account.
2764//
2765// For an overview on tagging DynamoDB resources, see Tagging for DynamoDB (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Tagging.html)
2766// in the Amazon DynamoDB Developer Guide.
2767//
2768// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2769// with awserr.Error's Code and Message methods to get detailed information about
2770// the error.
2771//
2772// See the AWS API reference guide for Amazon DynamoDB's
2773// API operation ListTagsOfResource for usage and error information.
2774//
2775// Returned Error Codes:
2776//   * ErrCodeResourceNotFoundException "ResourceNotFoundException"
2777//   The operation tried to access a nonexistent table or index. The resource
2778//   might not be specified correctly, or its status might not be ACTIVE.
2779//
2780//   * ErrCodeInternalServerError "InternalServerError"
2781//   An error occurred on the server side.
2782//
2783// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/ListTagsOfResource
2784func (c *DynamoDB) ListTagsOfResource(input *ListTagsOfResourceInput) (*ListTagsOfResourceOutput, error) {
2785	req, out := c.ListTagsOfResourceRequest(input)
2786	return out, req.Send()
2787}
2788
2789// ListTagsOfResourceWithContext is the same as ListTagsOfResource with the addition of
2790// the ability to pass a context and additional request options.
2791//
2792// See ListTagsOfResource for details on how to use this API operation.
2793//
2794// The context must be non-nil and will be used for request cancellation. If
2795// the context is nil a panic will occur. In the future the SDK may create
2796// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2797// for more information on using Contexts.
2798func (c *DynamoDB) ListTagsOfResourceWithContext(ctx aws.Context, input *ListTagsOfResourceInput, opts ...request.Option) (*ListTagsOfResourceOutput, error) {
2799	req, out := c.ListTagsOfResourceRequest(input)
2800	req.SetContext(ctx)
2801	req.ApplyOptions(opts...)
2802	return out, req.Send()
2803}
2804
2805const opPutItem = "PutItem"
2806
2807// PutItemRequest generates a "aws/request.Request" representing the
2808// client's request for the PutItem operation. The "output" return
2809// value will be populated with the request's response once the request completes
2810// successfully.
2811//
2812// Use "Send" method on the returned Request to send the API call to the service.
2813// the "output" return value is not valid until after Send returns without error.
2814//
2815// See PutItem for more information on using the PutItem
2816// API call, and error handling.
2817//
2818// This method is useful when you want to inject custom logic or configuration
2819// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2820//
2821//
2822//    // Example sending a request using the PutItemRequest method.
2823//    req, resp := client.PutItemRequest(params)
2824//
2825//    err := req.Send()
2826//    if err == nil { // resp is now filled
2827//        fmt.Println(resp)
2828//    }
2829//
2830// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/PutItem
2831func (c *DynamoDB) PutItemRequest(input *PutItemInput) (req *request.Request, output *PutItemOutput) {
2832	op := &request.Operation{
2833		Name:       opPutItem,
2834		HTTPMethod: "POST",
2835		HTTPPath:   "/",
2836	}
2837
2838	if input == nil {
2839		input = &PutItemInput{}
2840	}
2841
2842	output = &PutItemOutput{}
2843	req = c.newRequest(op, input, output)
2844	if aws.BoolValue(req.Config.EnableEndpointDiscovery) {
2845		de := discovererDescribeEndpoints{
2846			Required:      false,
2847			EndpointCache: c.endpointCache,
2848			Params: map[string]*string{
2849				"op": aws.String(req.Operation.Name),
2850			},
2851			Client: c,
2852		}
2853
2854		for k, v := range de.Params {
2855			if v == nil {
2856				delete(de.Params, k)
2857			}
2858		}
2859
2860		req.Handlers.Build.PushFrontNamed(request.NamedHandler{
2861			Name: "crr.endpointdiscovery",
2862			Fn:   de.Handler,
2863		})
2864	}
2865	return
2866}
2867
2868// PutItem API operation for Amazon DynamoDB.
2869//
2870// Creates a new item, or replaces an old item with a new item. If an item that
2871// has the same primary key as the new item already exists in the specified
2872// table, the new item completely replaces the existing item. You can perform
2873// a conditional put operation (add a new item if one with the specified primary
2874// key doesn't exist), or replace an existing item if it has certain attribute
2875// values. You can return the item's attribute values in the same operation,
2876// using the ReturnValues parameter.
2877//
2878// This topic provides general information about the PutItem API.
2879//
2880// For information on how to call the PutItem API using the AWS SDK in specific
2881// languages, see the following:
2882//
2883//    * PutItem in the AWS Command Line Interface (http://docs.aws.amazon.com/goto/aws-cli/dynamodb-2012-08-10/PutItem)
2884//
2885//    * PutItem in the AWS SDK for .NET (http://docs.aws.amazon.com/goto/DotNetSDKV3/dynamodb-2012-08-10/PutItem)
2886//
2887//    * PutItem in the AWS SDK for C++ (http://docs.aws.amazon.com/goto/SdkForCpp/dynamodb-2012-08-10/PutItem)
2888//
2889//    * PutItem in the AWS SDK for Go (http://docs.aws.amazon.com/goto/SdkForGoV1/dynamodb-2012-08-10/PutItem)
2890//
2891//    * PutItem in the AWS SDK for Java (http://docs.aws.amazon.com/goto/SdkForJava/dynamodb-2012-08-10/PutItem)
2892//
2893//    * PutItem in the AWS SDK for JavaScript (http://docs.aws.amazon.com/goto/AWSJavaScriptSDK/dynamodb-2012-08-10/PutItem)
2894//
2895//    * PutItem in the AWS SDK for PHP V3 (http://docs.aws.amazon.com/goto/SdkForPHPV3/dynamodb-2012-08-10/PutItem)
2896//
2897//    * PutItem in the AWS SDK for Python (http://docs.aws.amazon.com/goto/boto3/dynamodb-2012-08-10/PutItem)
2898//
2899//    * PutItem in the AWS SDK for Ruby V2 (http://docs.aws.amazon.com/goto/SdkForRubyV2/dynamodb-2012-08-10/PutItem)
2900//
2901// When you add an item, the primary key attributes are the only required attributes.
2902// Attribute values cannot be null. String and Binary type attributes must have
2903// lengths greater than zero. Set type attributes cannot be empty. Requests
2904// with empty values will be rejected with a ValidationException exception.
2905//
2906// To prevent a new item from replacing an existing item, use a conditional
2907// expression that contains the attribute_not_exists function with the name
2908// of the attribute being used as the partition key for the table. Since every
2909// record must contain that attribute, the attribute_not_exists function will
2910// only succeed if no matching item exists.
2911//
2912// For more information about PutItem, see Working with Items (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/WorkingWithItems.html)
2913// in the Amazon DynamoDB Developer Guide.
2914//
2915// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2916// with awserr.Error's Code and Message methods to get detailed information about
2917// the error.
2918//
2919// See the AWS API reference guide for Amazon DynamoDB's
2920// API operation PutItem for usage and error information.
2921//
2922// Returned Error Codes:
2923//   * ErrCodeConditionalCheckFailedException "ConditionalCheckFailedException"
2924//   A condition specified in the operation could not be evaluated.
2925//
2926//   * ErrCodeProvisionedThroughputExceededException "ProvisionedThroughputExceededException"
2927//   Your request rate is too high. The AWS SDKs for DynamoDB automatically retry
2928//   requests that receive this exception. Your request is eventually successful,
2929//   unless your retry queue is too large to finish. Reduce the frequency of requests
2930//   and use exponential backoff. For more information, go to Error Retries and
2931//   Exponential Backoff (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Programming.Errors.html#Programming.Errors.RetryAndBackoff)
2932//   in the Amazon DynamoDB Developer Guide.
2933//
2934//   * ErrCodeResourceNotFoundException "ResourceNotFoundException"
2935//   The operation tried to access a nonexistent table or index. The resource
2936//   might not be specified correctly, or its status might not be ACTIVE.
2937//
2938//   * ErrCodeItemCollectionSizeLimitExceededException "ItemCollectionSizeLimitExceededException"
2939//   An item collection is too large. This exception is only returned for tables
2940//   that have one or more local secondary indexes.
2941//
2942//   * ErrCodeTransactionConflictException "TransactionConflictException"
2943//   Operation was rejected because there is an ongoing transaction for the item.
2944//
2945//   * ErrCodeRequestLimitExceeded "RequestLimitExceeded"
2946//   Throughput exceeds the current throughput limit for your account. Please
2947//   contact AWS Support at AWS Support (https://aws.amazon.com/support) to request
2948//   a limit increase.
2949//
2950//   * ErrCodeInternalServerError "InternalServerError"
2951//   An error occurred on the server side.
2952//
2953// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/PutItem
2954func (c *DynamoDB) PutItem(input *PutItemInput) (*PutItemOutput, error) {
2955	req, out := c.PutItemRequest(input)
2956	return out, req.Send()
2957}
2958
2959// PutItemWithContext is the same as PutItem with the addition of
2960// the ability to pass a context and additional request options.
2961//
2962// See PutItem for details on how to use this API operation.
2963//
2964// The context must be non-nil and will be used for request cancellation. If
2965// the context is nil a panic will occur. In the future the SDK may create
2966// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2967// for more information on using Contexts.
2968func (c *DynamoDB) PutItemWithContext(ctx aws.Context, input *PutItemInput, opts ...request.Option) (*PutItemOutput, error) {
2969	req, out := c.PutItemRequest(input)
2970	req.SetContext(ctx)
2971	req.ApplyOptions(opts...)
2972	return out, req.Send()
2973}
2974
2975const opQuery = "Query"
2976
2977// QueryRequest generates a "aws/request.Request" representing the
2978// client's request for the Query operation. The "output" return
2979// value will be populated with the request's response once the request completes
2980// successfully.
2981//
2982// Use "Send" method on the returned Request to send the API call to the service.
2983// the "output" return value is not valid until after Send returns without error.
2984//
2985// See Query for more information on using the Query
2986// API call, and error handling.
2987//
2988// This method is useful when you want to inject custom logic or configuration
2989// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2990//
2991//
2992//    // Example sending a request using the QueryRequest method.
2993//    req, resp := client.QueryRequest(params)
2994//
2995//    err := req.Send()
2996//    if err == nil { // resp is now filled
2997//        fmt.Println(resp)
2998//    }
2999//
3000// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/Query
3001func (c *DynamoDB) QueryRequest(input *QueryInput) (req *request.Request, output *QueryOutput) {
3002	op := &request.Operation{
3003		Name:       opQuery,
3004		HTTPMethod: "POST",
3005		HTTPPath:   "/",
3006		Paginator: &request.Paginator{
3007			InputTokens:     []string{"ExclusiveStartKey"},
3008			OutputTokens:    []string{"LastEvaluatedKey"},
3009			LimitToken:      "Limit",
3010			TruncationToken: "",
3011		},
3012	}
3013
3014	if input == nil {
3015		input = &QueryInput{}
3016	}
3017
3018	output = &QueryOutput{}
3019	req = c.newRequest(op, input, output)
3020	if aws.BoolValue(req.Config.EnableEndpointDiscovery) {
3021		de := discovererDescribeEndpoints{
3022			Required:      false,
3023			EndpointCache: c.endpointCache,
3024			Params: map[string]*string{
3025				"op": aws.String(req.Operation.Name),
3026			},
3027			Client: c,
3028		}
3029
3030		for k, v := range de.Params {
3031			if v == nil {
3032				delete(de.Params, k)
3033			}
3034		}
3035
3036		req.Handlers.Build.PushFrontNamed(request.NamedHandler{
3037			Name: "crr.endpointdiscovery",
3038			Fn:   de.Handler,
3039		})
3040	}
3041	return
3042}
3043
3044// Query API operation for Amazon DynamoDB.
3045//
3046// The Query operation finds items based on primary key values. You can query
3047// any table or secondary index that has a composite primary key (a partition
3048// key and a sort key).
3049//
3050// Use the KeyConditionExpression parameter to provide a specific value for
3051// the partition key. The Query operation will return all of the items from
3052// the table or index with that partition key value. You can optionally narrow
3053// the scope of the Query operation by specifying a sort key value and a comparison
3054// operator in KeyConditionExpression. To further refine the Query results,
3055// you can optionally provide a FilterExpression. A FilterExpression determines
3056// which items within the results should be returned to you. All of the other
3057// results are discarded.
3058//
3059// A Query operation always returns a result set. If no matching items are found,
3060// the result set will be empty. Queries that do not return results consume
3061// the minimum number of read capacity units for that type of read operation.
3062//
3063// DynamoDB calculates the number of read capacity units consumed based on item
3064// size, not on the amount of data that is returned to an application. The number
3065// of capacity units consumed will be the same whether you request all of the
3066// attributes (the default behavior) or just some of them (using a projection
3067// expression). The number will also be the same whether or not you use a FilterExpression.
3068//
3069// Query results are always sorted by the sort key value. If the data type of
3070// the sort key is Number, the results are returned in numeric order; otherwise,
3071// the results are returned in order of UTF-8 bytes. By default, the sort order
3072// is ascending. To reverse the order, set the ScanIndexForward parameter to
3073// false.
3074//
3075// A single Query operation will read up to the maximum number of items set
3076// (if using the Limit parameter) or a maximum of 1 MB of data and then apply
3077// any filtering to the results using FilterExpression. If LastEvaluatedKey
3078// is present in the response, you will need to paginate the result set. For
3079// more information, see Paginating the Results (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Query.html#Query.Pagination)
3080// in the Amazon DynamoDB Developer Guide.
3081//
3082// FilterExpression is applied after a Query finishes, but before the results
3083// are returned. A FilterExpression cannot contain partition key or sort key
3084// attributes. You need to specify those attributes in the KeyConditionExpression.
3085//
3086// A Query operation can return an empty result set and a LastEvaluatedKey if
3087// all the items read for the page of results are filtered out.
3088//
3089// You can query a table, a local secondary index, or a global secondary index.
3090// For a query on a table or on a local secondary index, you can set the ConsistentRead
3091// parameter to true and obtain a strongly consistent result. Global secondary
3092// indexes support eventually consistent reads only, so do not specify ConsistentRead
3093// when querying a global secondary index.
3094//
3095// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
3096// with awserr.Error's Code and Message methods to get detailed information about
3097// the error.
3098//
3099// See the AWS API reference guide for Amazon DynamoDB's
3100// API operation Query for usage and error information.
3101//
3102// Returned Error Codes:
3103//   * ErrCodeProvisionedThroughputExceededException "ProvisionedThroughputExceededException"
3104//   Your request rate is too high. The AWS SDKs for DynamoDB automatically retry
3105//   requests that receive this exception. Your request is eventually successful,
3106//   unless your retry queue is too large to finish. Reduce the frequency of requests
3107//   and use exponential backoff. For more information, go to Error Retries and
3108//   Exponential Backoff (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Programming.Errors.html#Programming.Errors.RetryAndBackoff)
3109//   in the Amazon DynamoDB Developer Guide.
3110//
3111//   * ErrCodeResourceNotFoundException "ResourceNotFoundException"
3112//   The operation tried to access a nonexistent table or index. The resource
3113//   might not be specified correctly, or its status might not be ACTIVE.
3114//
3115//   * ErrCodeRequestLimitExceeded "RequestLimitExceeded"
3116//   Throughput exceeds the current throughput limit for your account. Please
3117//   contact AWS Support at AWS Support (https://aws.amazon.com/support) to request
3118//   a limit increase.
3119//
3120//   * ErrCodeInternalServerError "InternalServerError"
3121//   An error occurred on the server side.
3122//
3123// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/Query
3124func (c *DynamoDB) Query(input *QueryInput) (*QueryOutput, error) {
3125	req, out := c.QueryRequest(input)
3126	return out, req.Send()
3127}
3128
3129// QueryWithContext is the same as Query with the addition of
3130// the ability to pass a context and additional request options.
3131//
3132// See Query for details on how to use this API operation.
3133//
3134// The context must be non-nil and will be used for request cancellation. If
3135// the context is nil a panic will occur. In the future the SDK may create
3136// sub-contexts for http.Requests. See https://golang.org/pkg/context/
3137// for more information on using Contexts.
3138func (c *DynamoDB) QueryWithContext(ctx aws.Context, input *QueryInput, opts ...request.Option) (*QueryOutput, error) {
3139	req, out := c.QueryRequest(input)
3140	req.SetContext(ctx)
3141	req.ApplyOptions(opts...)
3142	return out, req.Send()
3143}
3144
3145// QueryPages iterates over the pages of a Query operation,
3146// calling the "fn" function with the response data for each page. To stop
3147// iterating, return false from the fn function.
3148//
3149// See Query method for more information on how to use this operation.
3150//
3151// Note: This operation can generate multiple requests to a service.
3152//
3153//    // Example iterating over at most 3 pages of a Query operation.
3154//    pageNum := 0
3155//    err := client.QueryPages(params,
3156//        func(page *dynamodb.QueryOutput, lastPage bool) bool {
3157//            pageNum++
3158//            fmt.Println(page)
3159//            return pageNum <= 3
3160//        })
3161//
3162func (c *DynamoDB) QueryPages(input *QueryInput, fn func(*QueryOutput, bool) bool) error {
3163	return c.QueryPagesWithContext(aws.BackgroundContext(), input, fn)
3164}
3165
3166// QueryPagesWithContext same as QueryPages except
3167// it takes a Context and allows setting request options on the pages.
3168//
3169// The context must be non-nil and will be used for request cancellation. If
3170// the context is nil a panic will occur. In the future the SDK may create
3171// sub-contexts for http.Requests. See https://golang.org/pkg/context/
3172// for more information on using Contexts.
3173func (c *DynamoDB) QueryPagesWithContext(ctx aws.Context, input *QueryInput, fn func(*QueryOutput, bool) bool, opts ...request.Option) error {
3174	p := request.Pagination{
3175		NewRequest: func() (*request.Request, error) {
3176			var inCpy *QueryInput
3177			if input != nil {
3178				tmp := *input
3179				inCpy = &tmp
3180			}
3181			req, _ := c.QueryRequest(inCpy)
3182			req.SetContext(ctx)
3183			req.ApplyOptions(opts...)
3184			return req, nil
3185		},
3186	}
3187
3188	cont := true
3189	for p.Next() && cont {
3190		cont = fn(p.Page().(*QueryOutput), !p.HasNextPage())
3191	}
3192	return p.Err()
3193}
3194
3195const opRestoreTableFromBackup = "RestoreTableFromBackup"
3196
3197// RestoreTableFromBackupRequest generates a "aws/request.Request" representing the
3198// client's request for the RestoreTableFromBackup operation. The "output" return
3199// value will be populated with the request's response once the request completes
3200// successfully.
3201//
3202// Use "Send" method on the returned Request to send the API call to the service.
3203// the "output" return value is not valid until after Send returns without error.
3204//
3205// See RestoreTableFromBackup for more information on using the RestoreTableFromBackup
3206// API call, and error handling.
3207//
3208// This method is useful when you want to inject custom logic or configuration
3209// into the SDK's request lifecycle. Such as custom headers, or retry logic.
3210//
3211//
3212//    // Example sending a request using the RestoreTableFromBackupRequest method.
3213//    req, resp := client.RestoreTableFromBackupRequest(params)
3214//
3215//    err := req.Send()
3216//    if err == nil { // resp is now filled
3217//        fmt.Println(resp)
3218//    }
3219//
3220// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/RestoreTableFromBackup
3221func (c *DynamoDB) RestoreTableFromBackupRequest(input *RestoreTableFromBackupInput) (req *request.Request, output *RestoreTableFromBackupOutput) {
3222	op := &request.Operation{
3223		Name:       opRestoreTableFromBackup,
3224		HTTPMethod: "POST",
3225		HTTPPath:   "/",
3226	}
3227
3228	if input == nil {
3229		input = &RestoreTableFromBackupInput{}
3230	}
3231
3232	output = &RestoreTableFromBackupOutput{}
3233	req = c.newRequest(op, input, output)
3234	if aws.BoolValue(req.Config.EnableEndpointDiscovery) {
3235		de := discovererDescribeEndpoints{
3236			Required:      false,
3237			EndpointCache: c.endpointCache,
3238			Params: map[string]*string{
3239				"op": aws.String(req.Operation.Name),
3240			},
3241			Client: c,
3242		}
3243
3244		for k, v := range de.Params {
3245			if v == nil {
3246				delete(de.Params, k)
3247			}
3248		}
3249
3250		req.Handlers.Build.PushFrontNamed(request.NamedHandler{
3251			Name: "crr.endpointdiscovery",
3252			Fn:   de.Handler,
3253		})
3254	}
3255	return
3256}
3257
3258// RestoreTableFromBackup API operation for Amazon DynamoDB.
3259//
3260// Creates a new table from an existing backup. Any number of users can execute
3261// up to 4 concurrent restores (any type of restore) in a given account.
3262//
3263// You can call RestoreTableFromBackup at a maximum rate of 10 times per second.
3264//
3265// You must manually set up the following on the restored table:
3266//
3267//    * Auto scaling policies
3268//
3269//    * IAM policies
3270//
3271//    * Amazon CloudWatch metrics and alarms
3272//
3273//    * Tags
3274//
3275//    * Stream settings
3276//
3277//    * Time to Live (TTL) settings
3278//
3279// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
3280// with awserr.Error's Code and Message methods to get detailed information about
3281// the error.
3282//
3283// See the AWS API reference guide for Amazon DynamoDB's
3284// API operation RestoreTableFromBackup for usage and error information.
3285//
3286// Returned Error Codes:
3287//   * ErrCodeTableAlreadyExistsException "TableAlreadyExistsException"
3288//   A target table with the specified name already exists.
3289//
3290//   * ErrCodeTableInUseException "TableInUseException"
3291//   A target table with the specified name is either being created or deleted.
3292//
3293//   * ErrCodeBackupNotFoundException "BackupNotFoundException"
3294//   Backup not found for the given BackupARN.
3295//
3296//   * ErrCodeBackupInUseException "BackupInUseException"
3297//   There is another ongoing conflicting backup control plane operation on the
3298//   table. The backup is either being created, deleted or restored to a table.
3299//
3300//   * ErrCodeLimitExceededException "LimitExceededException"
3301//   There is no limit to the number of daily on-demand backups that can be taken.
3302//
3303//   Up to 50 simultaneous table operations are allowed per account. These operations
3304//   include CreateTable, UpdateTable, DeleteTable,UpdateTimeToLive, RestoreTableFromBackup,
3305//   and RestoreTableToPointInTime.
3306//
3307//   The only exception is when you are creating a table with one or more secondary
3308//   indexes. You can have up to 25 such requests running at a time; however,
3309//   if the table or index specifications are complex, DynamoDB might temporarily
3310//   reduce the number of concurrent operations.
3311//
3312//   There is a soft account limit of 256 tables.
3313//
3314//   * ErrCodeInternalServerError "InternalServerError"
3315//   An error occurred on the server side.
3316//
3317// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/RestoreTableFromBackup
3318func (c *DynamoDB) RestoreTableFromBackup(input *RestoreTableFromBackupInput) (*RestoreTableFromBackupOutput, error) {
3319	req, out := c.RestoreTableFromBackupRequest(input)
3320	return out, req.Send()
3321}
3322
3323// RestoreTableFromBackupWithContext is the same as RestoreTableFromBackup with the addition of
3324// the ability to pass a context and additional request options.
3325//
3326// See RestoreTableFromBackup for details on how to use this API operation.
3327//
3328// The context must be non-nil and will be used for request cancellation. If
3329// the context is nil a panic will occur. In the future the SDK may create
3330// sub-contexts for http.Requests. See https://golang.org/pkg/context/
3331// for more information on using Contexts.
3332func (c *DynamoDB) RestoreTableFromBackupWithContext(ctx aws.Context, input *RestoreTableFromBackupInput, opts ...request.Option) (*RestoreTableFromBackupOutput, error) {
3333	req, out := c.RestoreTableFromBackupRequest(input)
3334	req.SetContext(ctx)
3335	req.ApplyOptions(opts...)
3336	return out, req.Send()
3337}
3338
3339const opRestoreTableToPointInTime = "RestoreTableToPointInTime"
3340
3341// RestoreTableToPointInTimeRequest generates a "aws/request.Request" representing the
3342// client's request for the RestoreTableToPointInTime operation. The "output" return
3343// value will be populated with the request's response once the request completes
3344// successfully.
3345//
3346// Use "Send" method on the returned Request to send the API call to the service.
3347// the "output" return value is not valid until after Send returns without error.
3348//
3349// See RestoreTableToPointInTime for more information on using the RestoreTableToPointInTime
3350// API call, and error handling.
3351//
3352// This method is useful when you want to inject custom logic or configuration
3353// into the SDK's request lifecycle. Such as custom headers, or retry logic.
3354//
3355//
3356//    // Example sending a request using the RestoreTableToPointInTimeRequest method.
3357//    req, resp := client.RestoreTableToPointInTimeRequest(params)
3358//
3359//    err := req.Send()
3360//    if err == nil { // resp is now filled
3361//        fmt.Println(resp)
3362//    }
3363//
3364// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/RestoreTableToPointInTime
3365func (c *DynamoDB) RestoreTableToPointInTimeRequest(input *RestoreTableToPointInTimeInput) (req *request.Request, output *RestoreTableToPointInTimeOutput) {
3366	op := &request.Operation{
3367		Name:       opRestoreTableToPointInTime,
3368		HTTPMethod: "POST",
3369		HTTPPath:   "/",
3370	}
3371
3372	if input == nil {
3373		input = &RestoreTableToPointInTimeInput{}
3374	}
3375
3376	output = &RestoreTableToPointInTimeOutput{}
3377	req = c.newRequest(op, input, output)
3378	if aws.BoolValue(req.Config.EnableEndpointDiscovery) {
3379		de := discovererDescribeEndpoints{
3380			Required:      false,
3381			EndpointCache: c.endpointCache,
3382			Params: map[string]*string{
3383				"op": aws.String(req.Operation.Name),
3384			},
3385			Client: c,
3386		}
3387
3388		for k, v := range de.Params {
3389			if v == nil {
3390				delete(de.Params, k)
3391			}
3392		}
3393
3394		req.Handlers.Build.PushFrontNamed(request.NamedHandler{
3395			Name: "crr.endpointdiscovery",
3396			Fn:   de.Handler,
3397		})
3398	}
3399	return
3400}
3401
3402// RestoreTableToPointInTime API operation for Amazon DynamoDB.
3403//
3404// Restores the specified table to the specified point in time within EarliestRestorableDateTime
3405// and LatestRestorableDateTime. You can restore your table to any point in
3406// time during the last 35 days. Any number of users can execute up to 4 concurrent
3407// restores (any type of restore) in a given account.
3408//
3409// When you restore using point in time recovery, DynamoDB restores your table
3410// data to the state based on the selected date and time (day:hour:minute:second)
3411// to a new table.
3412//
3413// Along with data, the following are also included on the new restored table
3414// using point in time recovery:
3415//
3416//    * Global secondary indexes (GSIs)
3417//
3418//    * Local secondary indexes (LSIs)
3419//
3420//    * Provisioned read and write capacity
3421//
3422//    * Encryption settings All these settings come from the current settings
3423//    of the source table at the time of restore.
3424//
3425// You must manually set up the following on the restored table:
3426//
3427//    * Auto scaling policies
3428//
3429//    * IAM policies
3430//
3431//    * Amazon CloudWatch metrics and alarms
3432//
3433//    * Tags
3434//
3435//    * Stream settings
3436//
3437//    * Time to Live (TTL) settings
3438//
3439//    * Point in time recovery settings
3440//
3441// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
3442// with awserr.Error's Code and Message methods to get detailed information about
3443// the error.
3444//
3445// See the AWS API reference guide for Amazon DynamoDB's
3446// API operation RestoreTableToPointInTime for usage and error information.
3447//
3448// Returned Error Codes:
3449//   * ErrCodeTableAlreadyExistsException "TableAlreadyExistsException"
3450//   A target table with the specified name already exists.
3451//
3452//   * ErrCodeTableNotFoundException "TableNotFoundException"
3453//   A source table with the name TableName does not currently exist within the
3454//   subscriber's account.
3455//
3456//   * ErrCodeTableInUseException "TableInUseException"
3457//   A target table with the specified name is either being created or deleted.
3458//
3459//   * ErrCodeLimitExceededException "LimitExceededException"
3460//   There is no limit to the number of daily on-demand backups that can be taken.
3461//
3462//   Up to 50 simultaneous table operations are allowed per account. These operations
3463//   include CreateTable, UpdateTable, DeleteTable,UpdateTimeToLive, RestoreTableFromBackup,
3464//   and RestoreTableToPointInTime.
3465//
3466//   The only exception is when you are creating a table with one or more secondary
3467//   indexes. You can have up to 25 such requests running at a time; however,
3468//   if the table or index specifications are complex, DynamoDB might temporarily
3469//   reduce the number of concurrent operations.
3470//
3471//   There is a soft account limit of 256 tables.
3472//
3473//   * ErrCodeInvalidRestoreTimeException "InvalidRestoreTimeException"
3474//   An invalid restore time was specified. RestoreDateTime must be between EarliestRestorableDateTime
3475//   and LatestRestorableDateTime.
3476//
3477//   * ErrCodePointInTimeRecoveryUnavailableException "PointInTimeRecoveryUnavailableException"
3478//   Point in time recovery has not yet been enabled for this source table.
3479//
3480//   * ErrCodeInternalServerError "InternalServerError"
3481//   An error occurred on the server side.
3482//
3483// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/RestoreTableToPointInTime
3484func (c *DynamoDB) RestoreTableToPointInTime(input *RestoreTableToPointInTimeInput) (*RestoreTableToPointInTimeOutput, error) {
3485	req, out := c.RestoreTableToPointInTimeRequest(input)
3486	return out, req.Send()
3487}
3488
3489// RestoreTableToPointInTimeWithContext is the same as RestoreTableToPointInTime with the addition of
3490// the ability to pass a context and additional request options.
3491//
3492// See RestoreTableToPointInTime for details on how to use this API operation.
3493//
3494// The context must be non-nil and will be used for request cancellation. If
3495// the context is nil a panic will occur. In the future the SDK may create
3496// sub-contexts for http.Requests. See https://golang.org/pkg/context/
3497// for more information on using Contexts.
3498func (c *DynamoDB) RestoreTableToPointInTimeWithContext(ctx aws.Context, input *RestoreTableToPointInTimeInput, opts ...request.Option) (*RestoreTableToPointInTimeOutput, error) {
3499	req, out := c.RestoreTableToPointInTimeRequest(input)
3500	req.SetContext(ctx)
3501	req.ApplyOptions(opts...)
3502	return out, req.Send()
3503}
3504
3505const opScan = "Scan"
3506
3507// ScanRequest generates a "aws/request.Request" representing the
3508// client's request for the Scan operation. The "output" return
3509// value will be populated with the request's response once the request completes
3510// successfully.
3511//
3512// Use "Send" method on the returned Request to send the API call to the service.
3513// the "output" return value is not valid until after Send returns without error.
3514//
3515// See Scan for more information on using the Scan
3516// API call, and error handling.
3517//
3518// This method is useful when you want to inject custom logic or configuration
3519// into the SDK's request lifecycle. Such as custom headers, or retry logic.
3520//
3521//
3522//    // Example sending a request using the ScanRequest method.
3523//    req, resp := client.ScanRequest(params)
3524//
3525//    err := req.Send()
3526//    if err == nil { // resp is now filled
3527//        fmt.Println(resp)
3528//    }
3529//
3530// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/Scan
3531func (c *DynamoDB) ScanRequest(input *ScanInput) (req *request.Request, output *ScanOutput) {
3532	op := &request.Operation{
3533		Name:       opScan,
3534		HTTPMethod: "POST",
3535		HTTPPath:   "/",
3536		Paginator: &request.Paginator{
3537			InputTokens:     []string{"ExclusiveStartKey"},
3538			OutputTokens:    []string{"LastEvaluatedKey"},
3539			LimitToken:      "Limit",
3540			TruncationToken: "",
3541		},
3542	}
3543
3544	if input == nil {
3545		input = &ScanInput{}
3546	}
3547
3548	output = &ScanOutput{}
3549	req = c.newRequest(op, input, output)
3550	if aws.BoolValue(req.Config.EnableEndpointDiscovery) {
3551		de := discovererDescribeEndpoints{
3552			Required:      false,
3553			EndpointCache: c.endpointCache,
3554			Params: map[string]*string{
3555				"op": aws.String(req.Operation.Name),
3556			},
3557			Client: c,
3558		}
3559
3560		for k, v := range de.Params {
3561			if v == nil {
3562				delete(de.Params, k)
3563			}
3564		}
3565
3566		req.Handlers.Build.PushFrontNamed(request.NamedHandler{
3567			Name: "crr.endpointdiscovery",
3568			Fn:   de.Handler,
3569		})
3570	}
3571	return
3572}
3573
3574// Scan API operation for Amazon DynamoDB.
3575//
3576// The Scan operation returns one or more items and item attributes by accessing
3577// every item in a table or a secondary index. To have DynamoDB return fewer
3578// items, you can provide a FilterExpression operation.
3579//
3580// If the total number of scanned items exceeds the maximum dataset size limit
3581// of 1 MB, the scan stops and results are returned to the user as a LastEvaluatedKey
3582// value to continue the scan in a subsequent operation. The results also include
3583// the number of items exceeding the limit. A scan can result in no table data
3584// meeting the filter criteria.
3585//
3586// A single Scan operation reads up to the maximum number of items set (if using
3587// the Limit parameter) or a maximum of 1 MB of data and then apply any filtering
3588// to the results using FilterExpression. If LastEvaluatedKey is present in
3589// the response, you need to paginate the result set. For more information,
3590// see Paginating the Results (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Scan.html#Scan.Pagination)
3591// in the Amazon DynamoDB Developer Guide.
3592//
3593// Scan operations proceed sequentially; however, for faster performance on
3594// a large table or secondary index, applications can request a parallel Scan
3595// operation by providing the Segment and TotalSegments parameters. For more
3596// information, see Parallel Scan (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Scan.html#Scan.ParallelScan)
3597// in the Amazon DynamoDB Developer Guide.
3598//
3599// Scan uses eventually consistent reads when accessing the data in a table;
3600// therefore, the result set might not include the changes to data in the table
3601// immediately before the operation began. If you need a consistent copy of
3602// the data, as of the time that the Scan begins, you can set the ConsistentRead
3603// parameter to true.
3604//
3605// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
3606// with awserr.Error's Code and Message methods to get detailed information about
3607// the error.
3608//
3609// See the AWS API reference guide for Amazon DynamoDB's
3610// API operation Scan for usage and error information.
3611//
3612// Returned Error Codes:
3613//   * ErrCodeProvisionedThroughputExceededException "ProvisionedThroughputExceededException"
3614//   Your request rate is too high. The AWS SDKs for DynamoDB automatically retry
3615//   requests that receive this exception. Your request is eventually successful,
3616//   unless your retry queue is too large to finish. Reduce the frequency of requests
3617//   and use exponential backoff. For more information, go to Error Retries and
3618//   Exponential Backoff (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Programming.Errors.html#Programming.Errors.RetryAndBackoff)
3619//   in the Amazon DynamoDB Developer Guide.
3620//
3621//   * ErrCodeResourceNotFoundException "ResourceNotFoundException"
3622//   The operation tried to access a nonexistent table or index. The resource
3623//   might not be specified correctly, or its status might not be ACTIVE.
3624//
3625//   * ErrCodeRequestLimitExceeded "RequestLimitExceeded"
3626//   Throughput exceeds the current throughput limit for your account. Please
3627//   contact AWS Support at AWS Support (https://aws.amazon.com/support) to request
3628//   a limit increase.
3629//
3630//   * ErrCodeInternalServerError "InternalServerError"
3631//   An error occurred on the server side.
3632//
3633// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/Scan
3634func (c *DynamoDB) Scan(input *ScanInput) (*ScanOutput, error) {
3635	req, out := c.ScanRequest(input)
3636	return out, req.Send()
3637}
3638
3639// ScanWithContext is the same as Scan with the addition of
3640// the ability to pass a context and additional request options.
3641//
3642// See Scan for details on how to use this API operation.
3643//
3644// The context must be non-nil and will be used for request cancellation. If
3645// the context is nil a panic will occur. In the future the SDK may create
3646// sub-contexts for http.Requests. See https://golang.org/pkg/context/
3647// for more information on using Contexts.
3648func (c *DynamoDB) ScanWithContext(ctx aws.Context, input *ScanInput, opts ...request.Option) (*ScanOutput, error) {
3649	req, out := c.ScanRequest(input)
3650	req.SetContext(ctx)
3651	req.ApplyOptions(opts...)
3652	return out, req.Send()
3653}
3654
3655// ScanPages iterates over the pages of a Scan operation,
3656// calling the "fn" function with the response data for each page. To stop
3657// iterating, return false from the fn function.
3658//
3659// See Scan method for more information on how to use this operation.
3660//
3661// Note: This operation can generate multiple requests to a service.
3662//
3663//    // Example iterating over at most 3 pages of a Scan operation.
3664//    pageNum := 0
3665//    err := client.ScanPages(params,
3666//        func(page *dynamodb.ScanOutput, lastPage bool) bool {
3667//            pageNum++
3668//            fmt.Println(page)
3669//            return pageNum <= 3
3670//        })
3671//
3672func (c *DynamoDB) ScanPages(input *ScanInput, fn func(*ScanOutput, bool) bool) error {
3673	return c.ScanPagesWithContext(aws.BackgroundContext(), input, fn)
3674}
3675
3676// ScanPagesWithContext same as ScanPages except
3677// it takes a Context and allows setting request options on the pages.
3678//
3679// The context must be non-nil and will be used for request cancellation. If
3680// the context is nil a panic will occur. In the future the SDK may create
3681// sub-contexts for http.Requests. See https://golang.org/pkg/context/
3682// for more information on using Contexts.
3683func (c *DynamoDB) ScanPagesWithContext(ctx aws.Context, input *ScanInput, fn func(*ScanOutput, bool) bool, opts ...request.Option) error {
3684	p := request.Pagination{
3685		NewRequest: func() (*request.Request, error) {
3686			var inCpy *ScanInput
3687			if input != nil {
3688				tmp := *input
3689				inCpy = &tmp
3690			}
3691			req, _ := c.ScanRequest(inCpy)
3692			req.SetContext(ctx)
3693			req.ApplyOptions(opts...)
3694			return req, nil
3695		},
3696	}
3697
3698	cont := true
3699	for p.Next() && cont {
3700		cont = fn(p.Page().(*ScanOutput), !p.HasNextPage())
3701	}
3702	return p.Err()
3703}
3704
3705const opTagResource = "TagResource"
3706
3707// TagResourceRequest generates a "aws/request.Request" representing the
3708// client's request for the TagResource operation. The "output" return
3709// value will be populated with the request's response once the request completes
3710// successfully.
3711//
3712// Use "Send" method on the returned Request to send the API call to the service.
3713// the "output" return value is not valid until after Send returns without error.
3714//
3715// See TagResource for more information on using the TagResource
3716// API call, and error handling.
3717//
3718// This method is useful when you want to inject custom logic or configuration
3719// into the SDK's request lifecycle. Such as custom headers, or retry logic.
3720//
3721//
3722//    // Example sending a request using the TagResourceRequest method.
3723//    req, resp := client.TagResourceRequest(params)
3724//
3725//    err := req.Send()
3726//    if err == nil { // resp is now filled
3727//        fmt.Println(resp)
3728//    }
3729//
3730// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/TagResource
3731func (c *DynamoDB) TagResourceRequest(input *TagResourceInput) (req *request.Request, output *TagResourceOutput) {
3732	op := &request.Operation{
3733		Name:       opTagResource,
3734		HTTPMethod: "POST",
3735		HTTPPath:   "/",
3736	}
3737
3738	if input == nil {
3739		input = &TagResourceInput{}
3740	}
3741
3742	output = &TagResourceOutput{}
3743	req = c.newRequest(op, input, output)
3744	req.Handlers.Unmarshal.Swap(jsonrpc.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
3745	if aws.BoolValue(req.Config.EnableEndpointDiscovery) {
3746		de := discovererDescribeEndpoints{
3747			Required:      false,
3748			EndpointCache: c.endpointCache,
3749			Params: map[string]*string{
3750				"op": aws.String(req.Operation.Name),
3751			},
3752			Client: c,
3753		}
3754
3755		for k, v := range de.Params {
3756			if v == nil {
3757				delete(de.Params, k)
3758			}
3759		}
3760
3761		req.Handlers.Build.PushFrontNamed(request.NamedHandler{
3762			Name: "crr.endpointdiscovery",
3763			Fn:   de.Handler,
3764		})
3765	}
3766	return
3767}
3768
3769// TagResource API operation for Amazon DynamoDB.
3770//
3771// Associate a set of tags with an Amazon DynamoDB resource. You can then activate
3772// these user-defined tags so that they appear on the Billing and Cost Management
3773// console for cost allocation tracking. You can call TagResource up to five
3774// times per second, per account.
3775//
3776// For an overview on tagging DynamoDB resources, see Tagging for DynamoDB (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Tagging.html)
3777// in the Amazon DynamoDB Developer Guide.
3778//
3779// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
3780// with awserr.Error's Code and Message methods to get detailed information about
3781// the error.
3782//
3783// See the AWS API reference guide for Amazon DynamoDB's
3784// API operation TagResource for usage and error information.
3785//
3786// Returned Error Codes:
3787//   * ErrCodeLimitExceededException "LimitExceededException"
3788//   There is no limit to the number of daily on-demand backups that can be taken.
3789//
3790//   Up to 50 simultaneous table operations are allowed per account. These operations
3791//   include CreateTable, UpdateTable, DeleteTable,UpdateTimeToLive, RestoreTableFromBackup,
3792//   and RestoreTableToPointInTime.
3793//
3794//   The only exception is when you are creating a table with one or more secondary
3795//   indexes. You can have up to 25 such requests running at a time; however,
3796//   if the table or index specifications are complex, DynamoDB might temporarily
3797//   reduce the number of concurrent operations.
3798//
3799//   There is a soft account limit of 256 tables.
3800//
3801//   * ErrCodeResourceNotFoundException "ResourceNotFoundException"
3802//   The operation tried to access a nonexistent table or index. The resource
3803//   might not be specified correctly, or its status might not be ACTIVE.
3804//
3805//   * ErrCodeInternalServerError "InternalServerError"
3806//   An error occurred on the server side.
3807//
3808//   * ErrCodeResourceInUseException "ResourceInUseException"
3809//   The operation conflicts with the resource's availability. For example, you
3810//   attempted to recreate an existing table, or tried to delete a table currently
3811//   in the CREATING state.
3812//
3813// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/TagResource
3814func (c *DynamoDB) TagResource(input *TagResourceInput) (*TagResourceOutput, error) {
3815	req, out := c.TagResourceRequest(input)
3816	return out, req.Send()
3817}
3818
3819// TagResourceWithContext is the same as TagResource with the addition of
3820// the ability to pass a context and additional request options.
3821//
3822// See TagResource for details on how to use this API operation.
3823//
3824// The context must be non-nil and will be used for request cancellation. If
3825// the context is nil a panic will occur. In the future the SDK may create
3826// sub-contexts for http.Requests. See https://golang.org/pkg/context/
3827// for more information on using Contexts.
3828func (c *DynamoDB) TagResourceWithContext(ctx aws.Context, input *TagResourceInput, opts ...request.Option) (*TagResourceOutput, error) {
3829	req, out := c.TagResourceRequest(input)
3830	req.SetContext(ctx)
3831	req.ApplyOptions(opts...)
3832	return out, req.Send()
3833}
3834
3835const opTransactGetItems = "TransactGetItems"
3836
3837// TransactGetItemsRequest generates a "aws/request.Request" representing the
3838// client's request for the TransactGetItems operation. The "output" return
3839// value will be populated with the request's response once the request completes
3840// successfully.
3841//
3842// Use "Send" method on the returned Request to send the API call to the service.
3843// the "output" return value is not valid until after Send returns without error.
3844//
3845// See TransactGetItems for more information on using the TransactGetItems
3846// API call, and error handling.
3847//
3848// This method is useful when you want to inject custom logic or configuration
3849// into the SDK's request lifecycle. Such as custom headers, or retry logic.
3850//
3851//
3852//    // Example sending a request using the TransactGetItemsRequest method.
3853//    req, resp := client.TransactGetItemsRequest(params)
3854//
3855//    err := req.Send()
3856//    if err == nil { // resp is now filled
3857//        fmt.Println(resp)
3858//    }
3859//
3860// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/TransactGetItems
3861func (c *DynamoDB) TransactGetItemsRequest(input *TransactGetItemsInput) (req *request.Request, output *TransactGetItemsOutput) {
3862	op := &request.Operation{
3863		Name:       opTransactGetItems,
3864		HTTPMethod: "POST",
3865		HTTPPath:   "/",
3866	}
3867
3868	if input == nil {
3869		input = &TransactGetItemsInput{}
3870	}
3871
3872	output = &TransactGetItemsOutput{}
3873	req = c.newRequest(op, input, output)
3874	if aws.BoolValue(req.Config.EnableEndpointDiscovery) {
3875		de := discovererDescribeEndpoints{
3876			Required:      false,
3877			EndpointCache: c.endpointCache,
3878			Params: map[string]*string{
3879				"op": aws.String(req.Operation.Name),
3880			},
3881			Client: c,
3882		}
3883
3884		for k, v := range de.Params {
3885			if v == nil {
3886				delete(de.Params, k)
3887			}
3888		}
3889
3890		req.Handlers.Build.PushFrontNamed(request.NamedHandler{
3891			Name: "crr.endpointdiscovery",
3892			Fn:   de.Handler,
3893		})
3894	}
3895	return
3896}
3897
3898// TransactGetItems API operation for Amazon DynamoDB.
3899//
3900// TransactGetItems is a synchronous operation that atomically retrieves multiple
3901// items from one or more tables (but not from indexes) in a single account
3902// and Region. A TransactGetItems call can contain up to 25 TransactGetItem
3903// objects, each of which contains a Get structure that specifies an item to
3904// retrieve from a table in the account and Region. A call to TransactGetItems
3905// cannot retrieve items from tables in more than one AWS account or Region.
3906// The aggregate size of the items in the transaction cannot exceed 4 MB.
3907//
3908// All AWS Regions and AWS GovCloud (US) support up to 25 items per transaction
3909// with up to 4 MB of data, except the following AWS Regions:
3910//
3911//    * China (Beijing)
3912//
3913//    * China (Ningxia)
3914//
3915// The China (Beijing) and China (Ningxia) Regions support up to 10 items per
3916// transaction with up to 4 MB of data.
3917//
3918// DynamoDB rejects the entire TransactGetItems request if any of the following
3919// is true:
3920//
3921//    * A conflicting operation is in the process of updating an item to be
3922//    read.
3923//
3924//    * There is insufficient provisioned capacity for the transaction to be
3925//    completed.
3926//
3927//    * There is a user error, such as an invalid data format.
3928//
3929//    * The aggregate size of the items in the transaction cannot exceed 4 MB.
3930//
3931// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
3932// with awserr.Error's Code and Message methods to get detailed information about
3933// the error.
3934//
3935// See the AWS API reference guide for Amazon DynamoDB's
3936// API operation TransactGetItems for usage and error information.
3937//
3938// Returned Error Codes:
3939//   * ErrCodeResourceNotFoundException "ResourceNotFoundException"
3940//   The operation tried to access a nonexistent table or index. The resource
3941//   might not be specified correctly, or its status might not be ACTIVE.
3942//
3943//   * ErrCodeTransactionCanceledException "TransactionCanceledException"
3944//   The entire transaction request was canceled.
3945//
3946//   DynamoDB cancels a TransactWriteItems request under the following circumstances:
3947//
3948//      * A condition in one of the condition expressions is not met.
3949//
3950//      * A table in the TransactWriteItems request is in a different account
3951//      or region.
3952//
3953//      * More than one action in the TransactWriteItems operation targets the
3954//      same item.
3955//
3956//      * There is insufficient provisioned capacity for the transaction to be
3957//      completed.
3958//
3959//      * An item size becomes too large (larger than 400 KB), or a local secondary
3960//      index (LSI) becomes too large, or a similar validation error occurs because
3961//      of changes made by the transaction.
3962//
3963//      * The aggregate size of the items in the transaction exceeds 4 MBs.
3964//
3965//      * There is a user error, such as an invalid data format.
3966//
3967//   DynamoDB cancels a TransactGetItems request under the following circumstances:
3968//
3969//      * There is an ongoing TransactGetItems operation that conflicts with a
3970//      concurrent PutItem, UpdateItem, DeleteItem or TransactWriteItems request.
3971//      In this case the TransactGetItems operation fails with a TransactionCanceledException.
3972//
3973//      * A table in the TransactGetItems request is in a different account or
3974//      region.
3975//
3976//      * There is insufficient provisioned capacity for the transaction to be
3977//      completed.
3978//
3979//      * The aggregate size of the items in the transaction exceeds 4 MBs.
3980//
3981//      * There is a user error, such as an invalid data format.
3982//
3983//   If using Java, DynamoDB lists the cancellation reasons on the CancellationReasons
3984//   property. This property is not set for other languages. Transaction cancellation
3985//   reasons are ordered in the order of requested items, if an item has no error
3986//   it will have NONE code and Null message.
3987//
3988//   Cancellation reason codes and possible error messages:
3989//
3990//      * No Errors: Code: NONE Message: null
3991//
3992//      * Conditional Check Failed: Code: ConditionalCheckFailed Message: The
3993//      conditional request failed.
3994//
3995//      * Item Collection Size Limit Exceeded: Code: ItemCollectionSizeLimitExceeded
3996//      Message: Collection size exceeded.
3997//
3998//      * Transaction Conflict: Code: TransactionConflict Message: Transaction
3999//      is ongoing for the item.
4000//
4001//      * Provisioned Throughput Exceeded: Code: ProvisionedThroughputExceeded
4002//      Messages: The level of configured provisioned throughput for the table
4003//      was exceeded. Consider increasing your provisioning level with the UpdateTable
4004//      API. This Message is received when provisioned throughput is exceeded
4005//      is on a provisioned DynamoDB table. The level of configured provisioned
4006//      throughput for one or more global secondary indexes of the table was exceeded.
4007//      Consider increasing your provisioning level for the under-provisioned
4008//      global secondary indexes with the UpdateTable API. This message is returned
4009//      when provisioned throughput is exceeded is on a provisioned GSI.
4010//
4011//      * Throttling Error: Code: ThrottlingError Messages: Throughput exceeds
4012//      the current capacity of your table or index. DynamoDB is automatically
4013//      scaling your table or index so please try again shortly. If exceptions
4014//      persist, check if you have a hot key: https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/bp-partition-key-design.html.
4015//      This message is returned when writes get throttled on an On-Demand table
4016//      as DynamoDB is automatically scaling the table. Throughput exceeds the
4017//      current capacity for one or more global secondary indexes. DynamoDB is
4018//      automatically scaling your index so please try again shortly. This message
4019//      is returned when when writes get throttled on an On-Demand GSI as DynamoDB
4020//      is automatically scaling the GSI.
4021//
4022//      * Validation Error: Code: ValidationError Messages: One or more parameter
4023//      values were invalid. The update expression attempted to update the secondary
4024//      index key beyond allowed size limits. The update expression attempted
4025//      to update the secondary index key to unsupported type. An operand in the
4026//      update expression has an incorrect data type. Item size to update has
4027//      exceeded the maximum allowed size. Number overflow. Attempting to store
4028//      a number with magnitude larger than supported range. Type mismatch for
4029//      attribute to update. Nesting Levels have exceeded supported limits. The
4030//      document path provided in the update expression is invalid for update.
4031//      The provided expression refers to an attribute that does not exist in
4032//      the item.
4033//
4034//   * ErrCodeProvisionedThroughputExceededException "ProvisionedThroughputExceededException"
4035//   Your request rate is too high. The AWS SDKs for DynamoDB automatically retry
4036//   requests that receive this exception. Your request is eventually successful,
4037//   unless your retry queue is too large to finish. Reduce the frequency of requests
4038//   and use exponential backoff. For more information, go to Error Retries and
4039//   Exponential Backoff (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Programming.Errors.html#Programming.Errors.RetryAndBackoff)
4040//   in the Amazon DynamoDB Developer Guide.
4041//
4042//   * ErrCodeInternalServerError "InternalServerError"
4043//   An error occurred on the server side.
4044//
4045// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/TransactGetItems
4046func (c *DynamoDB) TransactGetItems(input *TransactGetItemsInput) (*TransactGetItemsOutput, error) {
4047	req, out := c.TransactGetItemsRequest(input)
4048	return out, req.Send()
4049}
4050
4051// TransactGetItemsWithContext is the same as TransactGetItems with the addition of
4052// the ability to pass a context and additional request options.
4053//
4054// See TransactGetItems for details on how to use this API operation.
4055//
4056// The context must be non-nil and will be used for request cancellation. If
4057// the context is nil a panic will occur. In the future the SDK may create
4058// sub-contexts for http.Requests. See https://golang.org/pkg/context/
4059// for more information on using Contexts.
4060func (c *DynamoDB) TransactGetItemsWithContext(ctx aws.Context, input *TransactGetItemsInput, opts ...request.Option) (*TransactGetItemsOutput, error) {
4061	req, out := c.TransactGetItemsRequest(input)
4062	req.SetContext(ctx)
4063	req.ApplyOptions(opts...)
4064	return out, req.Send()
4065}
4066
4067const opTransactWriteItems = "TransactWriteItems"
4068
4069// TransactWriteItemsRequest generates a "aws/request.Request" representing the
4070// client's request for the TransactWriteItems operation. The "output" return
4071// value will be populated with the request's response once the request completes
4072// successfully.
4073//
4074// Use "Send" method on the returned Request to send the API call to the service.
4075// the "output" return value is not valid until after Send returns without error.
4076//
4077// See TransactWriteItems for more information on using the TransactWriteItems
4078// API call, and error handling.
4079//
4080// This method is useful when you want to inject custom logic or configuration
4081// into the SDK's request lifecycle. Such as custom headers, or retry logic.
4082//
4083//
4084//    // Example sending a request using the TransactWriteItemsRequest method.
4085//    req, resp := client.TransactWriteItemsRequest(params)
4086//
4087//    err := req.Send()
4088//    if err == nil { // resp is now filled
4089//        fmt.Println(resp)
4090//    }
4091//
4092// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/TransactWriteItems
4093func (c *DynamoDB) TransactWriteItemsRequest(input *TransactWriteItemsInput) (req *request.Request, output *TransactWriteItemsOutput) {
4094	op := &request.Operation{
4095		Name:       opTransactWriteItems,
4096		HTTPMethod: "POST",
4097		HTTPPath:   "/",
4098	}
4099
4100	if input == nil {
4101		input = &TransactWriteItemsInput{}
4102	}
4103
4104	output = &TransactWriteItemsOutput{}
4105	req = c.newRequest(op, input, output)
4106	if aws.BoolValue(req.Config.EnableEndpointDiscovery) {
4107		de := discovererDescribeEndpoints{
4108			Required:      false,
4109			EndpointCache: c.endpointCache,
4110			Params: map[string]*string{
4111				"op": aws.String(req.Operation.Name),
4112			},
4113			Client: c,
4114		}
4115
4116		for k, v := range de.Params {
4117			if v == nil {
4118				delete(de.Params, k)
4119			}
4120		}
4121
4122		req.Handlers.Build.PushFrontNamed(request.NamedHandler{
4123			Name: "crr.endpointdiscovery",
4124			Fn:   de.Handler,
4125		})
4126	}
4127	return
4128}
4129
4130// TransactWriteItems API operation for Amazon DynamoDB.
4131//
4132// TransactWriteItems is a synchronous write operation that groups up to 25
4133// action requests. These actions can target items in different tables, but
4134// not in different AWS accounts or Regions, and no two actions can target the
4135// same item. For example, you cannot both ConditionCheck and Update the same
4136// item. The aggregate size of the items in the transaction cannot exceed 4
4137// MB.
4138//
4139// All AWS Regions and AWS GovCloud (US) support up to 25 items per transaction
4140// with up to 4 MB of data, except the following AWS Regions:
4141//
4142//    * China (Beijing)
4143//
4144//    * China (Ningxia)
4145//
4146// The China (Beijing) and China (Ningxia) Regions support up to 10 items per
4147// transaction with up to 4 MB of data.
4148//
4149// The actions are completed atomically so that either all of them succeed,
4150// or all of them fail. They are defined by the following objects:
4151//
4152//    * Put — Initiates a PutItem operation to write a new item. This structure
4153//    specifies the primary key of the item to be written, the name of the table
4154//    to write it in, an optional condition expression that must be satisfied
4155//    for the write to succeed, a list of the item's attributes, and a field
4156//    indicating whether to retrieve the item's attributes if the condition
4157//    is not met.
4158//
4159//    * Update — Initiates an UpdateItem operation to update an existing item.
4160//    This structure specifies the primary key of the item to be updated, the
4161//    name of the table where it resides, an optional condition expression that
4162//    must be satisfied for the update to succeed, an expression that defines
4163//    one or more attributes to be updated, and a field indicating whether to
4164//    retrieve the item's attributes if the condition is not met.
4165//
4166//    * Delete — Initiates a DeleteItem operation to delete an existing item.
4167//    This structure specifies the primary key of the item to be deleted, the
4168//    name of the table where it resides, an optional condition expression that
4169//    must be satisfied for the deletion to succeed, and a field indicating
4170//    whether to retrieve the item's attributes if the condition is not met.
4171//
4172//    * ConditionCheck — Applies a condition to an item that is not being
4173//    modified by the transaction. This structure specifies the primary key
4174//    of the item to be checked, the name of the table where it resides, a condition
4175//    expression that must be satisfied for the transaction to succeed, and
4176//    a field indicating whether to retrieve the item's attributes if the condition
4177//    is not met.
4178//
4179// DynamoDB rejects the entire TransactWriteItems request if any of the following
4180// is true:
4181//
4182//    * A condition in one of the condition expressions is not met.
4183//
4184//    * An ongoing operation is in the process of updating the same item.
4185//
4186//    * There is insufficient provisioned capacity for the transaction to be
4187//    completed.
4188//
4189//    * An item size becomes too large (bigger than 400 KB), a local secondary
4190//    index (LSI) becomes too large, or a similar validation error occurs because
4191//    of changes made by the transaction.
4192//
4193//    * The aggregate size of the items in the transaction exceeds 4 MB.
4194//
4195//    * There is a user error, such as an invalid data format.
4196//
4197// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
4198// with awserr.Error's Code and Message methods to get detailed information about
4199// the error.
4200//
4201// See the AWS API reference guide for Amazon DynamoDB's
4202// API operation TransactWriteItems for usage and error information.
4203//
4204// Returned Error Codes:
4205//   * ErrCodeResourceNotFoundException "ResourceNotFoundException"
4206//   The operation tried to access a nonexistent table or index. The resource
4207//   might not be specified correctly, or its status might not be ACTIVE.
4208//
4209//   * ErrCodeTransactionCanceledException "TransactionCanceledException"
4210//   The entire transaction request was canceled.
4211//
4212//   DynamoDB cancels a TransactWriteItems request under the following circumstances:
4213//
4214//      * A condition in one of the condition expressions is not met.
4215//
4216//      * A table in the TransactWriteItems request is in a different account
4217//      or region.
4218//
4219//      * More than one action in the TransactWriteItems operation targets the
4220//      same item.
4221//
4222//      * There is insufficient provisioned capacity for the transaction to be
4223//      completed.
4224//
4225//      * An item size becomes too large (larger than 400 KB), or a local secondary
4226//      index (LSI) becomes too large, or a similar validation error occurs because
4227//      of changes made by the transaction.
4228//
4229//      * The aggregate size of the items in the transaction exceeds 4 MBs.
4230//
4231//      * There is a user error, such as an invalid data format.
4232//
4233//   DynamoDB cancels a TransactGetItems request under the following circumstances:
4234//
4235//      * There is an ongoing TransactGetItems operation that conflicts with a
4236//      concurrent PutItem, UpdateItem, DeleteItem or TransactWriteItems request.
4237//      In this case the TransactGetItems operation fails with a TransactionCanceledException.
4238//
4239//      * A table in the TransactGetItems request is in a different account or
4240//      region.
4241//
4242//      * There is insufficient provisioned capacity for the transaction to be
4243//      completed.
4244//
4245//      * The aggregate size of the items in the transaction exceeds 4 MBs.
4246//
4247//      * There is a user error, such as an invalid data format.
4248//
4249//   If using Java, DynamoDB lists the cancellation reasons on the CancellationReasons
4250//   property. This property is not set for other languages. Transaction cancellation
4251//   reasons are ordered in the order of requested items, if an item has no error
4252//   it will have NONE code and Null message.
4253//
4254//   Cancellation reason codes and possible error messages:
4255//
4256//      * No Errors: Code: NONE Message: null
4257//
4258//      * Conditional Check Failed: Code: ConditionalCheckFailed Message: The
4259//      conditional request failed.
4260//
4261//      * Item Collection Size Limit Exceeded: Code: ItemCollectionSizeLimitExceeded
4262//      Message: Collection size exceeded.
4263//
4264//      * Transaction Conflict: Code: TransactionConflict Message: Transaction
4265//      is ongoing for the item.
4266//
4267//      * Provisioned Throughput Exceeded: Code: ProvisionedThroughputExceeded
4268//      Messages: The level of configured provisioned throughput for the table
4269//      was exceeded. Consider increasing your provisioning level with the UpdateTable
4270//      API. This Message is received when provisioned throughput is exceeded
4271//      is on a provisioned DynamoDB table. The level of configured provisioned
4272//      throughput for one or more global secondary indexes of the table was exceeded.
4273//      Consider increasing your provisioning level for the under-provisioned
4274//      global secondary indexes with the UpdateTable API. This message is returned
4275//      when provisioned throughput is exceeded is on a provisioned GSI.
4276//
4277//      * Throttling Error: Code: ThrottlingError Messages: Throughput exceeds
4278//      the current capacity of your table or index. DynamoDB is automatically
4279//      scaling your table or index so please try again shortly. If exceptions
4280//      persist, check if you have a hot key: https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/bp-partition-key-design.html.
4281//      This message is returned when writes get throttled on an On-Demand table
4282//      as DynamoDB is automatically scaling the table. Throughput exceeds the
4283//      current capacity for one or more global secondary indexes. DynamoDB is
4284//      automatically scaling your index so please try again shortly. This message
4285//      is returned when when writes get throttled on an On-Demand GSI as DynamoDB
4286//      is automatically scaling the GSI.
4287//
4288//      * Validation Error: Code: ValidationError Messages: One or more parameter
4289//      values were invalid. The update expression attempted to update the secondary
4290//      index key beyond allowed size limits. The update expression attempted
4291//      to update the secondary index key to unsupported type. An operand in the
4292//      update expression has an incorrect data type. Item size to update has
4293//      exceeded the maximum allowed size. Number overflow. Attempting to store
4294//      a number with magnitude larger than supported range. Type mismatch for
4295//      attribute to update. Nesting Levels have exceeded supported limits. The
4296//      document path provided in the update expression is invalid for update.
4297//      The provided expression refers to an attribute that does not exist in
4298//      the item.
4299//
4300//   * ErrCodeTransactionInProgressException "TransactionInProgressException"
4301//   The transaction with the given request token is already in progress.
4302//
4303//   * ErrCodeIdempotentParameterMismatchException "IdempotentParameterMismatchException"
4304//   DynamoDB rejected the request because you retried a request with a different
4305//   payload but with an idempotent token that was already used.
4306//
4307//   * ErrCodeProvisionedThroughputExceededException "ProvisionedThroughputExceededException"
4308//   Your request rate is too high. The AWS SDKs for DynamoDB automatically retry
4309//   requests that receive this exception. Your request is eventually successful,
4310//   unless your retry queue is too large to finish. Reduce the frequency of requests
4311//   and use exponential backoff. For more information, go to Error Retries and
4312//   Exponential Backoff (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Programming.Errors.html#Programming.Errors.RetryAndBackoff)
4313//   in the Amazon DynamoDB Developer Guide.
4314//
4315//   * ErrCodeInternalServerError "InternalServerError"
4316//   An error occurred on the server side.
4317//
4318// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/TransactWriteItems
4319func (c *DynamoDB) TransactWriteItems(input *TransactWriteItemsInput) (*TransactWriteItemsOutput, error) {
4320	req, out := c.TransactWriteItemsRequest(input)
4321	return out, req.Send()
4322}
4323
4324// TransactWriteItemsWithContext is the same as TransactWriteItems with the addition of
4325// the ability to pass a context and additional request options.
4326//
4327// See TransactWriteItems for details on how to use this API operation.
4328//
4329// The context must be non-nil and will be used for request cancellation. If
4330// the context is nil a panic will occur. In the future the SDK may create
4331// sub-contexts for http.Requests. See https://golang.org/pkg/context/
4332// for more information on using Contexts.
4333func (c *DynamoDB) TransactWriteItemsWithContext(ctx aws.Context, input *TransactWriteItemsInput, opts ...request.Option) (*TransactWriteItemsOutput, error) {
4334	req, out := c.TransactWriteItemsRequest(input)
4335	req.SetContext(ctx)
4336	req.ApplyOptions(opts...)
4337	return out, req.Send()
4338}
4339
4340const opUntagResource = "UntagResource"
4341
4342// UntagResourceRequest generates a "aws/request.Request" representing the
4343// client's request for the UntagResource operation. The "output" return
4344// value will be populated with the request's response once the request completes
4345// successfully.
4346//
4347// Use "Send" method on the returned Request to send the API call to the service.
4348// the "output" return value is not valid until after Send returns without error.
4349//
4350// See UntagResource for more information on using the UntagResource
4351// API call, and error handling.
4352//
4353// This method is useful when you want to inject custom logic or configuration
4354// into the SDK's request lifecycle. Such as custom headers, or retry logic.
4355//
4356//
4357//    // Example sending a request using the UntagResourceRequest method.
4358//    req, resp := client.UntagResourceRequest(params)
4359//
4360//    err := req.Send()
4361//    if err == nil { // resp is now filled
4362//        fmt.Println(resp)
4363//    }
4364//
4365// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/UntagResource
4366func (c *DynamoDB) UntagResourceRequest(input *UntagResourceInput) (req *request.Request, output *UntagResourceOutput) {
4367	op := &request.Operation{
4368		Name:       opUntagResource,
4369		HTTPMethod: "POST",
4370		HTTPPath:   "/",
4371	}
4372
4373	if input == nil {
4374		input = &UntagResourceInput{}
4375	}
4376
4377	output = &UntagResourceOutput{}
4378	req = c.newRequest(op, input, output)
4379	req.Handlers.Unmarshal.Swap(jsonrpc.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
4380	if aws.BoolValue(req.Config.EnableEndpointDiscovery) {
4381		de := discovererDescribeEndpoints{
4382			Required:      false,
4383			EndpointCache: c.endpointCache,
4384			Params: map[string]*string{
4385				"op": aws.String(req.Operation.Name),
4386			},
4387			Client: c,
4388		}
4389
4390		for k, v := range de.Params {
4391			if v == nil {
4392				delete(de.Params, k)
4393			}
4394		}
4395
4396		req.Handlers.Build.PushFrontNamed(request.NamedHandler{
4397			Name: "crr.endpointdiscovery",
4398			Fn:   de.Handler,
4399		})
4400	}
4401	return
4402}
4403
4404// UntagResource API operation for Amazon DynamoDB.
4405//
4406// Removes the association of tags from an Amazon DynamoDB resource. You can
4407// call UntagResource up to five times per second, per account.
4408//
4409// For an overview on tagging DynamoDB resources, see Tagging for DynamoDB (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Tagging.html)
4410// in the Amazon DynamoDB Developer Guide.
4411//
4412// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
4413// with awserr.Error's Code and Message methods to get detailed information about
4414// the error.
4415//
4416// See the AWS API reference guide for Amazon DynamoDB's
4417// API operation UntagResource for usage and error information.
4418//
4419// Returned Error Codes:
4420//   * ErrCodeLimitExceededException "LimitExceededException"
4421//   There is no limit to the number of daily on-demand backups that can be taken.
4422//
4423//   Up to 50 simultaneous table operations are allowed per account. These operations
4424//   include CreateTable, UpdateTable, DeleteTable,UpdateTimeToLive, RestoreTableFromBackup,
4425//   and RestoreTableToPointInTime.
4426//
4427//   The only exception is when you are creating a table with one or more secondary
4428//   indexes. You can have up to 25 such requests running at a time; however,
4429//   if the table or index specifications are complex, DynamoDB might temporarily
4430//   reduce the number of concurrent operations.
4431//
4432//   There is a soft account limit of 256 tables.
4433//
4434//   * ErrCodeResourceNotFoundException "ResourceNotFoundException"
4435//   The operation tried to access a nonexistent table or index. The resource
4436//   might not be specified correctly, or its status might not be ACTIVE.
4437//
4438//   * ErrCodeInternalServerError "InternalServerError"
4439//   An error occurred on the server side.
4440//
4441//   * ErrCodeResourceInUseException "ResourceInUseException"
4442//   The operation conflicts with the resource's availability. For example, you
4443//   attempted to recreate an existing table, or tried to delete a table currently
4444//   in the CREATING state.
4445//
4446// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/UntagResource
4447func (c *DynamoDB) UntagResource(input *UntagResourceInput) (*UntagResourceOutput, error) {
4448	req, out := c.UntagResourceRequest(input)
4449	return out, req.Send()
4450}
4451
4452// UntagResourceWithContext is the same as UntagResource with the addition of
4453// the ability to pass a context and additional request options.
4454//
4455// See UntagResource for details on how to use this API operation.
4456//
4457// The context must be non-nil and will be used for request cancellation. If
4458// the context is nil a panic will occur. In the future the SDK may create
4459// sub-contexts for http.Requests. See https://golang.org/pkg/context/
4460// for more information on using Contexts.
4461func (c *DynamoDB) UntagResourceWithContext(ctx aws.Context, input *UntagResourceInput, opts ...request.Option) (*UntagResourceOutput, error) {
4462	req, out := c.UntagResourceRequest(input)
4463	req.SetContext(ctx)
4464	req.ApplyOptions(opts...)
4465	return out, req.Send()
4466}
4467
4468const opUpdateContinuousBackups = "UpdateContinuousBackups"
4469
4470// UpdateContinuousBackupsRequest generates a "aws/request.Request" representing the
4471// client's request for the UpdateContinuousBackups operation. The "output" return
4472// value will be populated with the request's response once the request completes
4473// successfully.
4474//
4475// Use "Send" method on the returned Request to send the API call to the service.
4476// the "output" return value is not valid until after Send returns without error.
4477//
4478// See UpdateContinuousBackups for more information on using the UpdateContinuousBackups
4479// API call, and error handling.
4480//
4481// This method is useful when you want to inject custom logic or configuration
4482// into the SDK's request lifecycle. Such as custom headers, or retry logic.
4483//
4484//
4485//    // Example sending a request using the UpdateContinuousBackupsRequest method.
4486//    req, resp := client.UpdateContinuousBackupsRequest(params)
4487//
4488//    err := req.Send()
4489//    if err == nil { // resp is now filled
4490//        fmt.Println(resp)
4491//    }
4492//
4493// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/UpdateContinuousBackups
4494func (c *DynamoDB) UpdateContinuousBackupsRequest(input *UpdateContinuousBackupsInput) (req *request.Request, output *UpdateContinuousBackupsOutput) {
4495	op := &request.Operation{
4496		Name:       opUpdateContinuousBackups,
4497		HTTPMethod: "POST",
4498		HTTPPath:   "/",
4499	}
4500
4501	if input == nil {
4502		input = &UpdateContinuousBackupsInput{}
4503	}
4504
4505	output = &UpdateContinuousBackupsOutput{}
4506	req = c.newRequest(op, input, output)
4507	if aws.BoolValue(req.Config.EnableEndpointDiscovery) {
4508		de := discovererDescribeEndpoints{
4509			Required:      false,
4510			EndpointCache: c.endpointCache,
4511			Params: map[string]*string{
4512				"op": aws.String(req.Operation.Name),
4513			},
4514			Client: c,
4515		}
4516
4517		for k, v := range de.Params {
4518			if v == nil {
4519				delete(de.Params, k)
4520			}
4521		}
4522
4523		req.Handlers.Build.PushFrontNamed(request.NamedHandler{
4524			Name: "crr.endpointdiscovery",
4525			Fn:   de.Handler,
4526		})
4527	}
4528	return
4529}
4530
4531// UpdateContinuousBackups API operation for Amazon DynamoDB.
4532//
4533// UpdateContinuousBackups enables or disables point in time recovery for the
4534// specified table. A successful UpdateContinuousBackups call returns the current
4535// ContinuousBackupsDescription. Continuous backups are ENABLED on all tables
4536// at table creation. If point in time recovery is enabled, PointInTimeRecoveryStatus
4537// will be set to ENABLED.
4538//
4539// Once continuous backups and point in time recovery are enabled, you can restore
4540// to any point in time within EarliestRestorableDateTime and LatestRestorableDateTime.
4541//
4542// LatestRestorableDateTime is typically 5 minutes before the current time.
4543// You can restore your table to any point in time during the last 35 days.
4544//
4545// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
4546// with awserr.Error's Code and Message methods to get detailed information about
4547// the error.
4548//
4549// See the AWS API reference guide for Amazon DynamoDB's
4550// API operation UpdateContinuousBackups for usage and error information.
4551//
4552// Returned Error Codes:
4553//   * ErrCodeTableNotFoundException "TableNotFoundException"
4554//   A source table with the name TableName does not currently exist within the
4555//   subscriber's account.
4556//
4557//   * ErrCodeContinuousBackupsUnavailableException "ContinuousBackupsUnavailableException"
4558//   Backups have not yet been enabled for this table.
4559//
4560//   * ErrCodeInternalServerError "InternalServerError"
4561//   An error occurred on the server side.
4562//
4563// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/UpdateContinuousBackups
4564func (c *DynamoDB) UpdateContinuousBackups(input *UpdateContinuousBackupsInput) (*UpdateContinuousBackupsOutput, error) {
4565	req, out := c.UpdateContinuousBackupsRequest(input)
4566	return out, req.Send()
4567}
4568
4569// UpdateContinuousBackupsWithContext is the same as UpdateContinuousBackups with the addition of
4570// the ability to pass a context and additional request options.
4571//
4572// See UpdateContinuousBackups for details on how to use this API operation.
4573//
4574// The context must be non-nil and will be used for request cancellation. If
4575// the context is nil a panic will occur. In the future the SDK may create
4576// sub-contexts for http.Requests. See https://golang.org/pkg/context/
4577// for more information on using Contexts.
4578func (c *DynamoDB) UpdateContinuousBackupsWithContext(ctx aws.Context, input *UpdateContinuousBackupsInput, opts ...request.Option) (*UpdateContinuousBackupsOutput, error) {
4579	req, out := c.UpdateContinuousBackupsRequest(input)
4580	req.SetContext(ctx)
4581	req.ApplyOptions(opts...)
4582	return out, req.Send()
4583}
4584
4585const opUpdateGlobalTable = "UpdateGlobalTable"
4586
4587// UpdateGlobalTableRequest generates a "aws/request.Request" representing the
4588// client's request for the UpdateGlobalTable operation. The "output" return
4589// value will be populated with the request's response once the request completes
4590// successfully.
4591//
4592// Use "Send" method on the returned Request to send the API call to the service.
4593// the "output" return value is not valid until after Send returns without error.
4594//
4595// See UpdateGlobalTable for more information on using the UpdateGlobalTable
4596// API call, and error handling.
4597//
4598// This method is useful when you want to inject custom logic or configuration
4599// into the SDK's request lifecycle. Such as custom headers, or retry logic.
4600//
4601//
4602//    // Example sending a request using the UpdateGlobalTableRequest method.
4603//    req, resp := client.UpdateGlobalTableRequest(params)
4604//
4605//    err := req.Send()
4606//    if err == nil { // resp is now filled
4607//        fmt.Println(resp)
4608//    }
4609//
4610// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/UpdateGlobalTable
4611func (c *DynamoDB) UpdateGlobalTableRequest(input *UpdateGlobalTableInput) (req *request.Request, output *UpdateGlobalTableOutput) {
4612	op := &request.Operation{
4613		Name:       opUpdateGlobalTable,
4614		HTTPMethod: "POST",
4615		HTTPPath:   "/",
4616	}
4617
4618	if input == nil {
4619		input = &UpdateGlobalTableInput{}
4620	}
4621
4622	output = &UpdateGlobalTableOutput{}
4623	req = c.newRequest(op, input, output)
4624	if aws.BoolValue(req.Config.EnableEndpointDiscovery) {
4625		de := discovererDescribeEndpoints{
4626			Required:      false,
4627			EndpointCache: c.endpointCache,
4628			Params: map[string]*string{
4629				"op": aws.String(req.Operation.Name),
4630			},
4631			Client: c,
4632		}
4633
4634		for k, v := range de.Params {
4635			if v == nil {
4636				delete(de.Params, k)
4637			}
4638		}
4639
4640		req.Handlers.Build.PushFrontNamed(request.NamedHandler{
4641			Name: "crr.endpointdiscovery",
4642			Fn:   de.Handler,
4643		})
4644	}
4645	return
4646}
4647
4648// UpdateGlobalTable API operation for Amazon DynamoDB.
4649//
4650// Adds or removes replicas in the specified global table. The global table
4651// must already exist to be able to use this operation. Any replica to be added
4652// must be empty, have the same name as the global table, have the same key
4653// schema, have DynamoDB Streams enabled, and have the same provisioned and
4654// maximum write capacity units.
4655//
4656// Although you can use UpdateGlobalTable to add replicas and remove replicas
4657// in a single request, for simplicity we recommend that you issue separate
4658// requests for adding or removing replicas.
4659//
4660// If global secondary indexes are specified, then the following conditions
4661// must also be met:
4662//
4663//    * The global secondary indexes must have the same name.
4664//
4665//    * The global secondary indexes must have the same hash key and sort key
4666//    (if present).
4667//
4668//    * The global secondary indexes must have the same provisioned and maximum
4669//    write capacity units.
4670//
4671// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
4672// with awserr.Error's Code and Message methods to get detailed information about
4673// the error.
4674//
4675// See the AWS API reference guide for Amazon DynamoDB's
4676// API operation UpdateGlobalTable for usage and error information.
4677//
4678// Returned Error Codes:
4679//   * ErrCodeInternalServerError "InternalServerError"
4680//   An error occurred on the server side.
4681//
4682//   * ErrCodeGlobalTableNotFoundException "GlobalTableNotFoundException"
4683//   The specified global table does not exist.
4684//
4685//   * ErrCodeReplicaAlreadyExistsException "ReplicaAlreadyExistsException"
4686//   The specified replica is already part of the global table.
4687//
4688//   * ErrCodeReplicaNotFoundException "ReplicaNotFoundException"
4689//   The specified replica is no longer part of the global table.
4690//
4691//   * ErrCodeTableNotFoundException "TableNotFoundException"
4692//   A source table with the name TableName does not currently exist within the
4693//   subscriber's account.
4694//
4695// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/UpdateGlobalTable
4696func (c *DynamoDB) UpdateGlobalTable(input *UpdateGlobalTableInput) (*UpdateGlobalTableOutput, error) {
4697	req, out := c.UpdateGlobalTableRequest(input)
4698	return out, req.Send()
4699}
4700
4701// UpdateGlobalTableWithContext is the same as UpdateGlobalTable with the addition of
4702// the ability to pass a context and additional request options.
4703//
4704// See UpdateGlobalTable for details on how to use this API operation.
4705//
4706// The context must be non-nil and will be used for request cancellation. If
4707// the context is nil a panic will occur. In the future the SDK may create
4708// sub-contexts for http.Requests. See https://golang.org/pkg/context/
4709// for more information on using Contexts.
4710func (c *DynamoDB) UpdateGlobalTableWithContext(ctx aws.Context, input *UpdateGlobalTableInput, opts ...request.Option) (*UpdateGlobalTableOutput, error) {
4711	req, out := c.UpdateGlobalTableRequest(input)
4712	req.SetContext(ctx)
4713	req.ApplyOptions(opts...)
4714	return out, req.Send()
4715}
4716
4717const opUpdateGlobalTableSettings = "UpdateGlobalTableSettings"
4718
4719// UpdateGlobalTableSettingsRequest generates a "aws/request.Request" representing the
4720// client's request for the UpdateGlobalTableSettings operation. The "output" return
4721// value will be populated with the request's response once the request completes
4722// successfully.
4723//
4724// Use "Send" method on the returned Request to send the API call to the service.
4725// the "output" return value is not valid until after Send returns without error.
4726//
4727// See UpdateGlobalTableSettings for more information on using the UpdateGlobalTableSettings
4728// API call, and error handling.
4729//
4730// This method is useful when you want to inject custom logic or configuration
4731// into the SDK's request lifecycle. Such as custom headers, or retry logic.
4732//
4733//
4734//    // Example sending a request using the UpdateGlobalTableSettingsRequest method.
4735//    req, resp := client.UpdateGlobalTableSettingsRequest(params)
4736//
4737//    err := req.Send()
4738//    if err == nil { // resp is now filled
4739//        fmt.Println(resp)
4740//    }
4741//
4742// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/UpdateGlobalTableSettings
4743func (c *DynamoDB) UpdateGlobalTableSettingsRequest(input *UpdateGlobalTableSettingsInput) (req *request.Request, output *UpdateGlobalTableSettingsOutput) {
4744	op := &request.Operation{
4745		Name:       opUpdateGlobalTableSettings,
4746		HTTPMethod: "POST",
4747		HTTPPath:   "/",
4748	}
4749
4750	if input == nil {
4751		input = &UpdateGlobalTableSettingsInput{}
4752	}
4753
4754	output = &UpdateGlobalTableSettingsOutput{}
4755	req = c.newRequest(op, input, output)
4756	if aws.BoolValue(req.Config.EnableEndpointDiscovery) {
4757		de := discovererDescribeEndpoints{
4758			Required:      false,
4759			EndpointCache: c.endpointCache,
4760			Params: map[string]*string{
4761				"op": aws.String(req.Operation.Name),
4762			},
4763			Client: c,
4764		}
4765
4766		for k, v := range de.Params {
4767			if v == nil {
4768				delete(de.Params, k)
4769			}
4770		}
4771
4772		req.Handlers.Build.PushFrontNamed(request.NamedHandler{
4773			Name: "crr.endpointdiscovery",
4774			Fn:   de.Handler,
4775		})
4776	}
4777	return
4778}
4779
4780// UpdateGlobalTableSettings API operation for Amazon DynamoDB.
4781//
4782// Updates settings for a global table.
4783//
4784// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
4785// with awserr.Error's Code and Message methods to get detailed information about
4786// the error.
4787//
4788// See the AWS API reference guide for Amazon DynamoDB's
4789// API operation UpdateGlobalTableSettings for usage and error information.
4790//
4791// Returned Error Codes:
4792//   * ErrCodeGlobalTableNotFoundException "GlobalTableNotFoundException"
4793//   The specified global table does not exist.
4794//
4795//   * ErrCodeReplicaNotFoundException "ReplicaNotFoundException"
4796//   The specified replica is no longer part of the global table.
4797//
4798//   * ErrCodeIndexNotFoundException "IndexNotFoundException"
4799//   The operation tried to access a nonexistent index.
4800//
4801//   * ErrCodeLimitExceededException "LimitExceededException"
4802//   There is no limit to the number of daily on-demand backups that can be taken.
4803//
4804//   Up to 50 simultaneous table operations are allowed per account. These operations
4805//   include CreateTable, UpdateTable, DeleteTable,UpdateTimeToLive, RestoreTableFromBackup,
4806//   and RestoreTableToPointInTime.
4807//
4808//   The only exception is when you are creating a table with one or more secondary
4809//   indexes. You can have up to 25 such requests running at a time; however,
4810//   if the table or index specifications are complex, DynamoDB might temporarily
4811//   reduce the number of concurrent operations.
4812//
4813//   There is a soft account limit of 256 tables.
4814//
4815//   * ErrCodeResourceInUseException "ResourceInUseException"
4816//   The operation conflicts with the resource's availability. For example, you
4817//   attempted to recreate an existing table, or tried to delete a table currently
4818//   in the CREATING state.
4819//
4820//   * ErrCodeInternalServerError "InternalServerError"
4821//   An error occurred on the server side.
4822//
4823// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/UpdateGlobalTableSettings
4824func (c *DynamoDB) UpdateGlobalTableSettings(input *UpdateGlobalTableSettingsInput) (*UpdateGlobalTableSettingsOutput, error) {
4825	req, out := c.UpdateGlobalTableSettingsRequest(input)
4826	return out, req.Send()
4827}
4828
4829// UpdateGlobalTableSettingsWithContext is the same as UpdateGlobalTableSettings with the addition of
4830// the ability to pass a context and additional request options.
4831//
4832// See UpdateGlobalTableSettings for details on how to use this API operation.
4833//
4834// The context must be non-nil and will be used for request cancellation. If
4835// the context is nil a panic will occur. In the future the SDK may create
4836// sub-contexts for http.Requests. See https://golang.org/pkg/context/
4837// for more information on using Contexts.
4838func (c *DynamoDB) UpdateGlobalTableSettingsWithContext(ctx aws.Context, input *UpdateGlobalTableSettingsInput, opts ...request.Option) (*UpdateGlobalTableSettingsOutput, error) {
4839	req, out := c.UpdateGlobalTableSettingsRequest(input)
4840	req.SetContext(ctx)
4841	req.ApplyOptions(opts...)
4842	return out, req.Send()
4843}
4844
4845const opUpdateItem = "UpdateItem"
4846
4847// UpdateItemRequest generates a "aws/request.Request" representing the
4848// client's request for the UpdateItem operation. The "output" return
4849// value will be populated with the request's response once the request completes
4850// successfully.
4851//
4852// Use "Send" method on the returned Request to send the API call to the service.
4853// the "output" return value is not valid until after Send returns without error.
4854//
4855// See UpdateItem for more information on using the UpdateItem
4856// API call, and error handling.
4857//
4858// This method is useful when you want to inject custom logic or configuration
4859// into the SDK's request lifecycle. Such as custom headers, or retry logic.
4860//
4861//
4862//    // Example sending a request using the UpdateItemRequest method.
4863//    req, resp := client.UpdateItemRequest(params)
4864//
4865//    err := req.Send()
4866//    if err == nil { // resp is now filled
4867//        fmt.Println(resp)
4868//    }
4869//
4870// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/UpdateItem
4871func (c *DynamoDB) UpdateItemRequest(input *UpdateItemInput) (req *request.Request, output *UpdateItemOutput) {
4872	op := &request.Operation{
4873		Name:       opUpdateItem,
4874		HTTPMethod: "POST",
4875		HTTPPath:   "/",
4876	}
4877
4878	if input == nil {
4879		input = &UpdateItemInput{}
4880	}
4881
4882	output = &UpdateItemOutput{}
4883	req = c.newRequest(op, input, output)
4884	if aws.BoolValue(req.Config.EnableEndpointDiscovery) {
4885		de := discovererDescribeEndpoints{
4886			Required:      false,
4887			EndpointCache: c.endpointCache,
4888			Params: map[string]*string{
4889				"op": aws.String(req.Operation.Name),
4890			},
4891			Client: c,
4892		}
4893
4894		for k, v := range de.Params {
4895			if v == nil {
4896				delete(de.Params, k)
4897			}
4898		}
4899
4900		req.Handlers.Build.PushFrontNamed(request.NamedHandler{
4901			Name: "crr.endpointdiscovery",
4902			Fn:   de.Handler,
4903		})
4904	}
4905	return
4906}
4907
4908// UpdateItem API operation for Amazon DynamoDB.
4909//
4910// Edits an existing item's attributes, or adds a new item to the table if it
4911// does not already exist. You can put, delete, or add attribute values. You
4912// can also perform a conditional update on an existing item (insert a new attribute
4913// name-value pair if it doesn't exist, or replace an existing name-value pair
4914// if it has certain expected attribute values).
4915//
4916// You can also return the item's attribute values in the same UpdateItem operation
4917// using the ReturnValues parameter.
4918//
4919// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
4920// with awserr.Error's Code and Message methods to get detailed information about
4921// the error.
4922//
4923// See the AWS API reference guide for Amazon DynamoDB's
4924// API operation UpdateItem for usage and error information.
4925//
4926// Returned Error Codes:
4927//   * ErrCodeConditionalCheckFailedException "ConditionalCheckFailedException"
4928//   A condition specified in the operation could not be evaluated.
4929//
4930//   * ErrCodeProvisionedThroughputExceededException "ProvisionedThroughputExceededException"
4931//   Your request rate is too high. The AWS SDKs for DynamoDB automatically retry
4932//   requests that receive this exception. Your request is eventually successful,
4933//   unless your retry queue is too large to finish. Reduce the frequency of requests
4934//   and use exponential backoff. For more information, go to Error Retries and
4935//   Exponential Backoff (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Programming.Errors.html#Programming.Errors.RetryAndBackoff)
4936//   in the Amazon DynamoDB Developer Guide.
4937//
4938//   * ErrCodeResourceNotFoundException "ResourceNotFoundException"
4939//   The operation tried to access a nonexistent table or index. The resource
4940//   might not be specified correctly, or its status might not be ACTIVE.
4941//
4942//   * ErrCodeItemCollectionSizeLimitExceededException "ItemCollectionSizeLimitExceededException"
4943//   An item collection is too large. This exception is only returned for tables
4944//   that have one or more local secondary indexes.
4945//
4946//   * ErrCodeTransactionConflictException "TransactionConflictException"
4947//   Operation was rejected because there is an ongoing transaction for the item.
4948//
4949//   * ErrCodeRequestLimitExceeded "RequestLimitExceeded"
4950//   Throughput exceeds the current throughput limit for your account. Please
4951//   contact AWS Support at AWS Support (https://aws.amazon.com/support) to request
4952//   a limit increase.
4953//
4954//   * ErrCodeInternalServerError "InternalServerError"
4955//   An error occurred on the server side.
4956//
4957// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/UpdateItem
4958func (c *DynamoDB) UpdateItem(input *UpdateItemInput) (*UpdateItemOutput, error) {
4959	req, out := c.UpdateItemRequest(input)
4960	return out, req.Send()
4961}
4962
4963// UpdateItemWithContext is the same as UpdateItem with the addition of
4964// the ability to pass a context and additional request options.
4965//
4966// See UpdateItem for details on how to use this API operation.
4967//
4968// The context must be non-nil and will be used for request cancellation. If
4969// the context is nil a panic will occur. In the future the SDK may create
4970// sub-contexts for http.Requests. See https://golang.org/pkg/context/
4971// for more information on using Contexts.
4972func (c *DynamoDB) UpdateItemWithContext(ctx aws.Context, input *UpdateItemInput, opts ...request.Option) (*UpdateItemOutput, error) {
4973	req, out := c.UpdateItemRequest(input)
4974	req.SetContext(ctx)
4975	req.ApplyOptions(opts...)
4976	return out, req.Send()
4977}
4978
4979const opUpdateTable = "UpdateTable"
4980
4981// UpdateTableRequest generates a "aws/request.Request" representing the
4982// client's request for the UpdateTable operation. The "output" return
4983// value will be populated with the request's response once the request completes
4984// successfully.
4985//
4986// Use "Send" method on the returned Request to send the API call to the service.
4987// the "output" return value is not valid until after Send returns without error.
4988//
4989// See UpdateTable for more information on using the UpdateTable
4990// API call, and error handling.
4991//
4992// This method is useful when you want to inject custom logic or configuration
4993// into the SDK's request lifecycle. Such as custom headers, or retry logic.
4994//
4995//
4996//    // Example sending a request using the UpdateTableRequest method.
4997//    req, resp := client.UpdateTableRequest(params)
4998//
4999//    err := req.Send()
5000//    if err == nil { // resp is now filled
5001//        fmt.Println(resp)
5002//    }
5003//
5004// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/UpdateTable
5005func (c *DynamoDB) UpdateTableRequest(input *UpdateTableInput) (req *request.Request, output *UpdateTableOutput) {
5006	op := &request.Operation{
5007		Name:       opUpdateTable,
5008		HTTPMethod: "POST",
5009		HTTPPath:   "/",
5010	}
5011
5012	if input == nil {
5013		input = &UpdateTableInput{}
5014	}
5015
5016	output = &UpdateTableOutput{}
5017	req = c.newRequest(op, input, output)
5018	if aws.BoolValue(req.Config.EnableEndpointDiscovery) {
5019		de := discovererDescribeEndpoints{
5020			Required:      false,
5021			EndpointCache: c.endpointCache,
5022			Params: map[string]*string{
5023				"op": aws.String(req.Operation.Name),
5024			},
5025			Client: c,
5026		}
5027
5028		for k, v := range de.Params {
5029			if v == nil {
5030				delete(de.Params, k)
5031			}
5032		}
5033
5034		req.Handlers.Build.PushFrontNamed(request.NamedHandler{
5035			Name: "crr.endpointdiscovery",
5036			Fn:   de.Handler,
5037		})
5038	}
5039	return
5040}
5041
5042// UpdateTable API operation for Amazon DynamoDB.
5043//
5044// Modifies the provisioned throughput settings, global secondary indexes, or
5045// DynamoDB Streams settings for a given table.
5046//
5047// You can only perform one of the following operations at once:
5048//
5049//    * Modify the provisioned throughput settings of the table.
5050//
5051//    * Enable or disable DynamoDB Streams on the table.
5052//
5053//    * Remove a global secondary index from the table.
5054//
5055//    * Create a new global secondary index on the table. After the index begins
5056//    backfilling, you can use UpdateTable to perform other operations.
5057//
5058// UpdateTable is an asynchronous operation; while it is executing, the table
5059// status changes from ACTIVE to UPDATING. While it is UPDATING, you cannot
5060// issue another UpdateTable request. When the table returns to the ACTIVE state,
5061// the UpdateTable operation is complete.
5062//
5063// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
5064// with awserr.Error's Code and Message methods to get detailed information about
5065// the error.
5066//
5067// See the AWS API reference guide for Amazon DynamoDB's
5068// API operation UpdateTable for usage and error information.
5069//
5070// Returned Error Codes:
5071//   * ErrCodeResourceInUseException "ResourceInUseException"
5072//   The operation conflicts with the resource's availability. For example, you
5073//   attempted to recreate an existing table, or tried to delete a table currently
5074//   in the CREATING state.
5075//
5076//   * ErrCodeResourceNotFoundException "ResourceNotFoundException"
5077//   The operation tried to access a nonexistent table or index. The resource
5078//   might not be specified correctly, or its status might not be ACTIVE.
5079//
5080//   * ErrCodeLimitExceededException "LimitExceededException"
5081//   There is no limit to the number of daily on-demand backups that can be taken.
5082//
5083//   Up to 50 simultaneous table operations are allowed per account. These operations
5084//   include CreateTable, UpdateTable, DeleteTable,UpdateTimeToLive, RestoreTableFromBackup,
5085//   and RestoreTableToPointInTime.
5086//
5087//   The only exception is when you are creating a table with one or more secondary
5088//   indexes. You can have up to 25 such requests running at a time; however,
5089//   if the table or index specifications are complex, DynamoDB might temporarily
5090//   reduce the number of concurrent operations.
5091//
5092//   There is a soft account limit of 256 tables.
5093//
5094//   * ErrCodeInternalServerError "InternalServerError"
5095//   An error occurred on the server side.
5096//
5097// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/UpdateTable
5098func (c *DynamoDB) UpdateTable(input *UpdateTableInput) (*UpdateTableOutput, error) {
5099	req, out := c.UpdateTableRequest(input)
5100	return out, req.Send()
5101}
5102
5103// UpdateTableWithContext is the same as UpdateTable with the addition of
5104// the ability to pass a context and additional request options.
5105//
5106// See UpdateTable for details on how to use this API operation.
5107//
5108// The context must be non-nil and will be used for request cancellation. If
5109// the context is nil a panic will occur. In the future the SDK may create
5110// sub-contexts for http.Requests. See https://golang.org/pkg/context/
5111// for more information on using Contexts.
5112func (c *DynamoDB) UpdateTableWithContext(ctx aws.Context, input *UpdateTableInput, opts ...request.Option) (*UpdateTableOutput, error) {
5113	req, out := c.UpdateTableRequest(input)
5114	req.SetContext(ctx)
5115	req.ApplyOptions(opts...)
5116	return out, req.Send()
5117}
5118
5119const opUpdateTimeToLive = "UpdateTimeToLive"
5120
5121// UpdateTimeToLiveRequest generates a "aws/request.Request" representing the
5122// client's request for the UpdateTimeToLive operation. The "output" return
5123// value will be populated with the request's response once the request completes
5124// successfully.
5125//
5126// Use "Send" method on the returned Request to send the API call to the service.
5127// the "output" return value is not valid until after Send returns without error.
5128//
5129// See UpdateTimeToLive for more information on using the UpdateTimeToLive
5130// API call, and error handling.
5131//
5132// This method is useful when you want to inject custom logic or configuration
5133// into the SDK's request lifecycle. Such as custom headers, or retry logic.
5134//
5135//
5136//    // Example sending a request using the UpdateTimeToLiveRequest method.
5137//    req, resp := client.UpdateTimeToLiveRequest(params)
5138//
5139//    err := req.Send()
5140//    if err == nil { // resp is now filled
5141//        fmt.Println(resp)
5142//    }
5143//
5144// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/UpdateTimeToLive
5145func (c *DynamoDB) UpdateTimeToLiveRequest(input *UpdateTimeToLiveInput) (req *request.Request, output *UpdateTimeToLiveOutput) {
5146	op := &request.Operation{
5147		Name:       opUpdateTimeToLive,
5148		HTTPMethod: "POST",
5149		HTTPPath:   "/",
5150	}
5151
5152	if input == nil {
5153		input = &UpdateTimeToLiveInput{}
5154	}
5155
5156	output = &UpdateTimeToLiveOutput{}
5157	req = c.newRequest(op, input, output)
5158	if aws.BoolValue(req.Config.EnableEndpointDiscovery) {
5159		de := discovererDescribeEndpoints{
5160			Required:      false,
5161			EndpointCache: c.endpointCache,
5162			Params: map[string]*string{
5163				"op": aws.String(req.Operation.Name),
5164			},
5165			Client: c,
5166		}
5167
5168		for k, v := range de.Params {
5169			if v == nil {
5170				delete(de.Params, k)
5171			}
5172		}
5173
5174		req.Handlers.Build.PushFrontNamed(request.NamedHandler{
5175			Name: "crr.endpointdiscovery",
5176			Fn:   de.Handler,
5177		})
5178	}
5179	return
5180}
5181
5182// UpdateTimeToLive API operation for Amazon DynamoDB.
5183//
5184// The UpdateTimeToLive method enables or disables Time to Live (TTL) for the
5185// specified table. A successful UpdateTimeToLive call returns the current TimeToLiveSpecification.
5186// It can take up to one hour for the change to fully process. Any additional
5187// UpdateTimeToLive calls for the same table during this one hour duration result
5188// in a ValidationException.
5189//
5190// TTL compares the current time in epoch time format to the time stored in
5191// the TTL attribute of an item. If the epoch time value stored in the attribute
5192// is less than the current time, the item is marked as expired and subsequently
5193// deleted.
5194//
5195// The epoch time format is the number of seconds elapsed since 12:00:00 AM
5196// January 1, 1970 UTC.
5197//
5198// DynamoDB deletes expired items on a best-effort basis to ensure availability
5199// of throughput for other data operations.
5200//
5201// DynamoDB typically deletes expired items within two days of expiration. The
5202// exact duration within which an item gets deleted after expiration is specific
5203// to the nature of the workload. Items that have expired and not been deleted
5204// will still show up in reads, queries, and scans.
5205//
5206// As items are deleted, they are removed from any local secondary index and
5207// global secondary index immediately in the same eventually consistent way
5208// as a standard delete operation.
5209//
5210// For more information, see Time To Live (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/TTL.html)
5211// in the Amazon DynamoDB Developer Guide.
5212//
5213// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
5214// with awserr.Error's Code and Message methods to get detailed information about
5215// the error.
5216//
5217// See the AWS API reference guide for Amazon DynamoDB's
5218// API operation UpdateTimeToLive for usage and error information.
5219//
5220// Returned Error Codes:
5221//   * ErrCodeResourceInUseException "ResourceInUseException"
5222//   The operation conflicts with the resource's availability. For example, you
5223//   attempted to recreate an existing table, or tried to delete a table currently
5224//   in the CREATING state.
5225//
5226//   * ErrCodeResourceNotFoundException "ResourceNotFoundException"
5227//   The operation tried to access a nonexistent table or index. The resource
5228//   might not be specified correctly, or its status might not be ACTIVE.
5229//
5230//   * ErrCodeLimitExceededException "LimitExceededException"
5231//   There is no limit to the number of daily on-demand backups that can be taken.
5232//
5233//   Up to 50 simultaneous table operations are allowed per account. These operations
5234//   include CreateTable, UpdateTable, DeleteTable,UpdateTimeToLive, RestoreTableFromBackup,
5235//   and RestoreTableToPointInTime.
5236//
5237//   The only exception is when you are creating a table with one or more secondary
5238//   indexes. You can have up to 25 such requests running at a time; however,
5239//   if the table or index specifications are complex, DynamoDB might temporarily
5240//   reduce the number of concurrent operations.
5241//
5242//   There is a soft account limit of 256 tables.
5243//
5244//   * ErrCodeInternalServerError "InternalServerError"
5245//   An error occurred on the server side.
5246//
5247// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/UpdateTimeToLive
5248func (c *DynamoDB) UpdateTimeToLive(input *UpdateTimeToLiveInput) (*UpdateTimeToLiveOutput, error) {
5249	req, out := c.UpdateTimeToLiveRequest(input)
5250	return out, req.Send()
5251}
5252
5253// UpdateTimeToLiveWithContext is the same as UpdateTimeToLive with the addition of
5254// the ability to pass a context and additional request options.
5255//
5256// See UpdateTimeToLive for details on how to use this API operation.
5257//
5258// The context must be non-nil and will be used for request cancellation. If
5259// the context is nil a panic will occur. In the future the SDK may create
5260// sub-contexts for http.Requests. See https://golang.org/pkg/context/
5261// for more information on using Contexts.
5262func (c *DynamoDB) UpdateTimeToLiveWithContext(ctx aws.Context, input *UpdateTimeToLiveInput, opts ...request.Option) (*UpdateTimeToLiveOutput, error) {
5263	req, out := c.UpdateTimeToLiveRequest(input)
5264	req.SetContext(ctx)
5265	req.ApplyOptions(opts...)
5266	return out, req.Send()
5267}
5268
5269// Represents an attribute for describing the key schema for the table and indexes.
5270type AttributeDefinition struct {
5271	_ struct{} `type:"structure"`
5272
5273	// A name for the attribute.
5274	//
5275	// AttributeName is a required field
5276	AttributeName *string `min:"1" type:"string" required:"true"`
5277
5278	// The data type for the attribute, where:
5279	//
5280	//    * S - the attribute is of type String
5281	//
5282	//    * N - the attribute is of type Number
5283	//
5284	//    * B - the attribute is of type Binary
5285	//
5286	// AttributeType is a required field
5287	AttributeType *string `type:"string" required:"true" enum:"ScalarAttributeType"`
5288}
5289
5290// String returns the string representation
5291func (s AttributeDefinition) String() string {
5292	return awsutil.Prettify(s)
5293}
5294
5295// GoString returns the string representation
5296func (s AttributeDefinition) GoString() string {
5297	return s.String()
5298}
5299
5300// Validate inspects the fields of the type to determine if they are valid.
5301func (s *AttributeDefinition) Validate() error {
5302	invalidParams := request.ErrInvalidParams{Context: "AttributeDefinition"}
5303	if s.AttributeName == nil {
5304		invalidParams.Add(request.NewErrParamRequired("AttributeName"))
5305	}
5306	if s.AttributeName != nil && len(*s.AttributeName) < 1 {
5307		invalidParams.Add(request.NewErrParamMinLen("AttributeName", 1))
5308	}
5309	if s.AttributeType == nil {
5310		invalidParams.Add(request.NewErrParamRequired("AttributeType"))
5311	}
5312
5313	if invalidParams.Len() > 0 {
5314		return invalidParams
5315	}
5316	return nil
5317}
5318
5319// SetAttributeName sets the AttributeName field's value.
5320func (s *AttributeDefinition) SetAttributeName(v string) *AttributeDefinition {
5321	s.AttributeName = &v
5322	return s
5323}
5324
5325// SetAttributeType sets the AttributeType field's value.
5326func (s *AttributeDefinition) SetAttributeType(v string) *AttributeDefinition {
5327	s.AttributeType = &v
5328	return s
5329}
5330
5331// Represents the data for an attribute.
5332//
5333// Each attribute value is described as a name-value pair. The name is the data
5334// type, and the value is the data itself.
5335//
5336// For more information, see Data Types (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/HowItWorks.NamingRulesDataTypes.html#HowItWorks.DataTypes)
5337// in the Amazon DynamoDB Developer Guide.
5338type AttributeValue struct {
5339	_ struct{} `type:"structure"`
5340
5341	// An attribute of type Binary. For example:
5342	//
5343	// "B": "dGhpcyB0ZXh0IGlzIGJhc2U2NC1lbmNvZGVk"
5344	//
5345	// B is automatically base64 encoded/decoded by the SDK.
5346	B []byte `type:"blob"`
5347
5348	// An attribute of type Boolean. For example:
5349	//
5350	// "BOOL": true
5351	BOOL *bool `type:"boolean"`
5352
5353	// An attribute of type Binary Set. For example:
5354	//
5355	// "BS": ["U3Vubnk=", "UmFpbnk=", "U25vd3k="]
5356	BS [][]byte `type:"list"`
5357
5358	// An attribute of type List. For example:
5359	//
5360	// "L": [ {"S": "Cookies"} , {"S": "Coffee"}, {"N", "3.14159"}]
5361	L []*AttributeValue `type:"list"`
5362
5363	// An attribute of type Map. For example:
5364	//
5365	// "M": {"Name": {"S": "Joe"}, "Age": {"N": "35"}}
5366	M map[string]*AttributeValue `type:"map"`
5367
5368	// An attribute of type Number. For example:
5369	//
5370	// "N": "123.45"
5371	//
5372	// Numbers are sent across the network to DynamoDB as strings, to maximize compatibility
5373	// across languages and libraries. However, DynamoDB treats them as number type
5374	// attributes for mathematical operations.
5375	N *string `type:"string"`
5376
5377	// An attribute of type Number Set. For example:
5378	//
5379	// "NS": ["42.2", "-19", "7.5", "3.14"]
5380	//
5381	// Numbers are sent across the network to DynamoDB as strings, to maximize compatibility
5382	// across languages and libraries. However, DynamoDB treats them as number type
5383	// attributes for mathematical operations.
5384	NS []*string `type:"list"`
5385
5386	// An attribute of type Null. For example:
5387	//
5388	// "NULL": true
5389	NULL *bool `type:"boolean"`
5390
5391	// An attribute of type String. For example:
5392	//
5393	// "S": "Hello"
5394	S *string `type:"string"`
5395
5396	// An attribute of type String Set. For example:
5397	//
5398	// "SS": ["Giraffe", "Hippo" ,"Zebra"]
5399	SS []*string `type:"list"`
5400}
5401
5402// String returns the string representation
5403func (s AttributeValue) String() string {
5404	return awsutil.Prettify(s)
5405}
5406
5407// GoString returns the string representation
5408func (s AttributeValue) GoString() string {
5409	return s.String()
5410}
5411
5412// SetB sets the B field's value.
5413func (s *AttributeValue) SetB(v []byte) *AttributeValue {
5414	s.B = v
5415	return s
5416}
5417
5418// SetBOOL sets the BOOL field's value.
5419func (s *AttributeValue) SetBOOL(v bool) *AttributeValue {
5420	s.BOOL = &v
5421	return s
5422}
5423
5424// SetBS sets the BS field's value.
5425func (s *AttributeValue) SetBS(v [][]byte) *AttributeValue {
5426	s.BS = v
5427	return s
5428}
5429
5430// SetL sets the L field's value.
5431func (s *AttributeValue) SetL(v []*AttributeValue) *AttributeValue {
5432	s.L = v
5433	return s
5434}
5435
5436// SetM sets the M field's value.
5437func (s *AttributeValue) SetM(v map[string]*AttributeValue) *AttributeValue {
5438	s.M = v
5439	return s
5440}
5441
5442// SetN sets the N field's value.
5443func (s *AttributeValue) SetN(v string) *AttributeValue {
5444	s.N = &v
5445	return s
5446}
5447
5448// SetNS sets the NS field's value.
5449func (s *AttributeValue) SetNS(v []*string) *AttributeValue {
5450	s.NS = v
5451	return s
5452}
5453
5454// SetNULL sets the NULL field's value.
5455func (s *AttributeValue) SetNULL(v bool) *AttributeValue {
5456	s.NULL = &v
5457	return s
5458}
5459
5460// SetS sets the S field's value.
5461func (s *AttributeValue) SetS(v string) *AttributeValue {
5462	s.S = &v
5463	return s
5464}
5465
5466// SetSS sets the SS field's value.
5467func (s *AttributeValue) SetSS(v []*string) *AttributeValue {
5468	s.SS = v
5469	return s
5470}
5471
5472// For the UpdateItem operation, represents the attributes to be modified, the
5473// action to perform on each, and the new value for each.
5474//
5475// You cannot use UpdateItem to update any primary key attributes. Instead,
5476// you will need to delete the item, and then use PutItem to create a new item
5477// with new attributes.
5478//
5479// Attribute values cannot be null; string and binary type attributes must have
5480// lengths greater than zero; and set type attributes must not be empty. Requests
5481// with empty values will be rejected with a ValidationException exception.
5482type AttributeValueUpdate struct {
5483	_ struct{} `type:"structure"`
5484
5485	// Specifies how to perform the update. Valid values are PUT (default), DELETE,
5486	// and ADD. The behavior depends on whether the specified primary key already
5487	// exists in the table.
5488	//
5489	// If an item with the specified Key is found in the table:
5490	//
5491	//    * PUT - Adds the specified attribute to the item. If the attribute already
5492	//    exists, it is replaced by the new value.
5493	//
5494	//    * DELETE - If no value is specified, the attribute and its value are removed
5495	//    from the item. The data type of the specified value must match the existing
5496	//    value's data type. If a set of values is specified, then those values
5497	//    are subtracted from the old set. For example, if the attribute value was
5498	//    the set [a,b,c] and the DELETE action specified [a,c], then the final
5499	//    attribute value would be [b]. Specifying an empty set is an error.
5500	//
5501	//    * ADD - If the attribute does not already exist, then the attribute and
5502	//    its values are added to the item. If the attribute does exist, then the
5503	//    behavior of ADD depends on the data type of the attribute: If the existing
5504	//    attribute is a number, and if Value is also a number, then the Value is
5505	//    mathematically added to the existing attribute. If Value is a negative
5506	//    number, then it is subtracted from the existing attribute. If you use
5507	//    ADD to increment or decrement a number value for an item that doesn't
5508	//    exist before the update, DynamoDB uses 0 as the initial value. In addition,
5509	//    if you use ADD to update an existing item, and intend to increment or
5510	//    decrement an attribute value which does not yet exist, DynamoDB uses 0
5511	//    as the initial value. For example, suppose that the item you want to update
5512	//    does not yet have an attribute named itemcount, but you decide to ADD
5513	//    the number 3 to this attribute anyway, even though it currently does not
5514	//    exist. DynamoDB will create the itemcount attribute, set its initial value
5515	//    to 0, and finally add 3 to it. The result will be a new itemcount attribute
5516	//    in the item, with a value of 3. If the existing data type is a set, and
5517	//    if the Value is also a set, then the Value is added to the existing set.
5518	//    (This is a set operation, not mathematical addition.) For example, if
5519	//    the attribute value was the set [1,2], and the ADD action specified [3],
5520	//    then the final attribute value would be [1,2,3]. An error occurs if an
5521	//    Add action is specified for a set attribute and the attribute type specified
5522	//    does not match the existing set type. Both sets must have the same primitive
5523	//    data type. For example, if the existing data type is a set of strings,
5524	//    the Value must also be a set of strings. The same holds true for number
5525	//    sets and binary sets. This action is only valid for an existing attribute
5526	//    whose data type is number or is a set. Do not use ADD for any other data
5527	//    types.
5528	//
5529	// If no item with the specified Key is found:
5530	//
5531	//    * PUT - DynamoDB creates a new item with the specified primary key, and
5532	//    then adds the attribute.
5533	//
5534	//    * DELETE - Nothing happens; there is no attribute to delete.
5535	//
5536	//    * ADD - DynamoDB creates an item with the supplied primary key and number
5537	//    (or set of numbers) for the attribute value. The only data types allowed
5538	//    are number and number set; no other data types can be specified.
5539	Action *string `type:"string" enum:"AttributeAction"`
5540
5541	// Represents the data for an attribute.
5542	//
5543	// Each attribute value is described as a name-value pair. The name is the data
5544	// type, and the value is the data itself.
5545	//
5546	// For more information, see Data Types (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/HowItWorks.NamingRulesDataTypes.html#HowItWorks.DataTypes)
5547	// in the Amazon DynamoDB Developer Guide.
5548	Value *AttributeValue `type:"structure"`
5549}
5550
5551// String returns the string representation
5552func (s AttributeValueUpdate) String() string {
5553	return awsutil.Prettify(s)
5554}
5555
5556// GoString returns the string representation
5557func (s AttributeValueUpdate) GoString() string {
5558	return s.String()
5559}
5560
5561// SetAction sets the Action field's value.
5562func (s *AttributeValueUpdate) SetAction(v string) *AttributeValueUpdate {
5563	s.Action = &v
5564	return s
5565}
5566
5567// SetValue sets the Value field's value.
5568func (s *AttributeValueUpdate) SetValue(v *AttributeValue) *AttributeValueUpdate {
5569	s.Value = v
5570	return s
5571}
5572
5573// Represents the properties of the scaling policy.
5574type AutoScalingPolicyDescription struct {
5575	_ struct{} `type:"structure"`
5576
5577	// The name of the scaling policy.
5578	PolicyName *string `min:"1" type:"string"`
5579
5580	// Represents a target tracking scaling policy configuration.
5581	TargetTrackingScalingPolicyConfiguration *AutoScalingTargetTrackingScalingPolicyConfigurationDescription `type:"structure"`
5582}
5583
5584// String returns the string representation
5585func (s AutoScalingPolicyDescription) String() string {
5586	return awsutil.Prettify(s)
5587}
5588
5589// GoString returns the string representation
5590func (s AutoScalingPolicyDescription) GoString() string {
5591	return s.String()
5592}
5593
5594// SetPolicyName sets the PolicyName field's value.
5595func (s *AutoScalingPolicyDescription) SetPolicyName(v string) *AutoScalingPolicyDescription {
5596	s.PolicyName = &v
5597	return s
5598}
5599
5600// SetTargetTrackingScalingPolicyConfiguration sets the TargetTrackingScalingPolicyConfiguration field's value.
5601func (s *AutoScalingPolicyDescription) SetTargetTrackingScalingPolicyConfiguration(v *AutoScalingTargetTrackingScalingPolicyConfigurationDescription) *AutoScalingPolicyDescription {
5602	s.TargetTrackingScalingPolicyConfiguration = v
5603	return s
5604}
5605
5606// Represents the autoscaling policy to be modified.
5607type AutoScalingPolicyUpdate struct {
5608	_ struct{} `type:"structure"`
5609
5610	// The name of the scaling policy.
5611	PolicyName *string `min:"1" type:"string"`
5612
5613	// Represents a target tracking scaling policy configuration.
5614	//
5615	// TargetTrackingScalingPolicyConfiguration is a required field
5616	TargetTrackingScalingPolicyConfiguration *AutoScalingTargetTrackingScalingPolicyConfigurationUpdate `type:"structure" required:"true"`
5617}
5618
5619// String returns the string representation
5620func (s AutoScalingPolicyUpdate) String() string {
5621	return awsutil.Prettify(s)
5622}
5623
5624// GoString returns the string representation
5625func (s AutoScalingPolicyUpdate) GoString() string {
5626	return s.String()
5627}
5628
5629// Validate inspects the fields of the type to determine if they are valid.
5630func (s *AutoScalingPolicyUpdate) Validate() error {
5631	invalidParams := request.ErrInvalidParams{Context: "AutoScalingPolicyUpdate"}
5632	if s.PolicyName != nil && len(*s.PolicyName) < 1 {
5633		invalidParams.Add(request.NewErrParamMinLen("PolicyName", 1))
5634	}
5635	if s.TargetTrackingScalingPolicyConfiguration == nil {
5636		invalidParams.Add(request.NewErrParamRequired("TargetTrackingScalingPolicyConfiguration"))
5637	}
5638	if s.TargetTrackingScalingPolicyConfiguration != nil {
5639		if err := s.TargetTrackingScalingPolicyConfiguration.Validate(); err != nil {
5640			invalidParams.AddNested("TargetTrackingScalingPolicyConfiguration", err.(request.ErrInvalidParams))
5641		}
5642	}
5643
5644	if invalidParams.Len() > 0 {
5645		return invalidParams
5646	}
5647	return nil
5648}
5649
5650// SetPolicyName sets the PolicyName field's value.
5651func (s *AutoScalingPolicyUpdate) SetPolicyName(v string) *AutoScalingPolicyUpdate {
5652	s.PolicyName = &v
5653	return s
5654}
5655
5656// SetTargetTrackingScalingPolicyConfiguration sets the TargetTrackingScalingPolicyConfiguration field's value.
5657func (s *AutoScalingPolicyUpdate) SetTargetTrackingScalingPolicyConfiguration(v *AutoScalingTargetTrackingScalingPolicyConfigurationUpdate) *AutoScalingPolicyUpdate {
5658	s.TargetTrackingScalingPolicyConfiguration = v
5659	return s
5660}
5661
5662// Represents the autoscaling settings for a global table or global secondary
5663// index.
5664type AutoScalingSettingsDescription struct {
5665	_ struct{} `type:"structure"`
5666
5667	// Disabled autoscaling for this global table or global secondary index.
5668	AutoScalingDisabled *bool `type:"boolean"`
5669
5670	// Role ARN used for configuring autoScaling policy.
5671	AutoScalingRoleArn *string `type:"string"`
5672
5673	// The maximum capacity units that a global table or global secondary index
5674	// should be scaled up to.
5675	MaximumUnits *int64 `min:"1" type:"long"`
5676
5677	// The minimum capacity units that a global table or global secondary index
5678	// should be scaled down to.
5679	MinimumUnits *int64 `min:"1" type:"long"`
5680
5681	// Information about the scaling policies.
5682	ScalingPolicies []*AutoScalingPolicyDescription `type:"list"`
5683}
5684
5685// String returns the string representation
5686func (s AutoScalingSettingsDescription) String() string {
5687	return awsutil.Prettify(s)
5688}
5689
5690// GoString returns the string representation
5691func (s AutoScalingSettingsDescription) GoString() string {
5692	return s.String()
5693}
5694
5695// SetAutoScalingDisabled sets the AutoScalingDisabled field's value.
5696func (s *AutoScalingSettingsDescription) SetAutoScalingDisabled(v bool) *AutoScalingSettingsDescription {
5697	s.AutoScalingDisabled = &v
5698	return s
5699}
5700
5701// SetAutoScalingRoleArn sets the AutoScalingRoleArn field's value.
5702func (s *AutoScalingSettingsDescription) SetAutoScalingRoleArn(v string) *AutoScalingSettingsDescription {
5703	s.AutoScalingRoleArn = &v
5704	return s
5705}
5706
5707// SetMaximumUnits sets the MaximumUnits field's value.
5708func (s *AutoScalingSettingsDescription) SetMaximumUnits(v int64) *AutoScalingSettingsDescription {
5709	s.MaximumUnits = &v
5710	return s
5711}
5712
5713// SetMinimumUnits sets the MinimumUnits field's value.
5714func (s *AutoScalingSettingsDescription) SetMinimumUnits(v int64) *AutoScalingSettingsDescription {
5715	s.MinimumUnits = &v
5716	return s
5717}
5718
5719// SetScalingPolicies sets the ScalingPolicies field's value.
5720func (s *AutoScalingSettingsDescription) SetScalingPolicies(v []*AutoScalingPolicyDescription) *AutoScalingSettingsDescription {
5721	s.ScalingPolicies = v
5722	return s
5723}
5724
5725// Represents the autoscaling settings to be modified for a global table or
5726// global secondary index.
5727type AutoScalingSettingsUpdate struct {
5728	_ struct{} `type:"structure"`
5729
5730	// Disabled autoscaling for this global table or global secondary index.
5731	AutoScalingDisabled *bool `type:"boolean"`
5732
5733	// Role ARN used for configuring autoscaling policy.
5734	AutoScalingRoleArn *string `min:"1" type:"string"`
5735
5736	// The maximum capacity units that a global table or global secondary index
5737	// should be scaled up to.
5738	MaximumUnits *int64 `min:"1" type:"long"`
5739
5740	// The minimum capacity units that a global table or global secondary index
5741	// should be scaled down to.
5742	MinimumUnits *int64 `min:"1" type:"long"`
5743
5744	// The scaling policy to apply for scaling target global table or global secondary
5745	// index capacity units.
5746	ScalingPolicyUpdate *AutoScalingPolicyUpdate `type:"structure"`
5747}
5748
5749// String returns the string representation
5750func (s AutoScalingSettingsUpdate) String() string {
5751	return awsutil.Prettify(s)
5752}
5753
5754// GoString returns the string representation
5755func (s AutoScalingSettingsUpdate) GoString() string {
5756	return s.String()
5757}
5758
5759// Validate inspects the fields of the type to determine if they are valid.
5760func (s *AutoScalingSettingsUpdate) Validate() error {
5761	invalidParams := request.ErrInvalidParams{Context: "AutoScalingSettingsUpdate"}
5762	if s.AutoScalingRoleArn != nil && len(*s.AutoScalingRoleArn) < 1 {
5763		invalidParams.Add(request.NewErrParamMinLen("AutoScalingRoleArn", 1))
5764	}
5765	if s.MaximumUnits != nil && *s.MaximumUnits < 1 {
5766		invalidParams.Add(request.NewErrParamMinValue("MaximumUnits", 1))
5767	}
5768	if s.MinimumUnits != nil && *s.MinimumUnits < 1 {
5769		invalidParams.Add(request.NewErrParamMinValue("MinimumUnits", 1))
5770	}
5771	if s.ScalingPolicyUpdate != nil {
5772		if err := s.ScalingPolicyUpdate.Validate(); err != nil {
5773			invalidParams.AddNested("ScalingPolicyUpdate", err.(request.ErrInvalidParams))
5774		}
5775	}
5776
5777	if invalidParams.Len() > 0 {
5778		return invalidParams
5779	}
5780	return nil
5781}
5782
5783// SetAutoScalingDisabled sets the AutoScalingDisabled field's value.
5784func (s *AutoScalingSettingsUpdate) SetAutoScalingDisabled(v bool) *AutoScalingSettingsUpdate {
5785	s.AutoScalingDisabled = &v
5786	return s
5787}
5788
5789// SetAutoScalingRoleArn sets the AutoScalingRoleArn field's value.
5790func (s *AutoScalingSettingsUpdate) SetAutoScalingRoleArn(v string) *AutoScalingSettingsUpdate {
5791	s.AutoScalingRoleArn = &v
5792	return s
5793}
5794
5795// SetMaximumUnits sets the MaximumUnits field's value.
5796func (s *AutoScalingSettingsUpdate) SetMaximumUnits(v int64) *AutoScalingSettingsUpdate {
5797	s.MaximumUnits = &v
5798	return s
5799}
5800
5801// SetMinimumUnits sets the MinimumUnits field's value.
5802func (s *AutoScalingSettingsUpdate) SetMinimumUnits(v int64) *AutoScalingSettingsUpdate {
5803	s.MinimumUnits = &v
5804	return s
5805}
5806
5807// SetScalingPolicyUpdate sets the ScalingPolicyUpdate field's value.
5808func (s *AutoScalingSettingsUpdate) SetScalingPolicyUpdate(v *AutoScalingPolicyUpdate) *AutoScalingSettingsUpdate {
5809	s.ScalingPolicyUpdate = v
5810	return s
5811}
5812
5813// Represents the properties of a target tracking scaling policy.
5814type AutoScalingTargetTrackingScalingPolicyConfigurationDescription struct {
5815	_ struct{} `type:"structure"`
5816
5817	// Indicates whether scale in by the target tracking policy is disabled. If
5818	// the value is true, scale in is disabled and the target tracking policy won't
5819	// remove capacity from the scalable resource. Otherwise, scale in is enabled
5820	// and the target tracking policy can remove capacity from the scalable resource.
5821	// The default value is false.
5822	DisableScaleIn *bool `type:"boolean"`
5823
5824	// The amount of time, in seconds, after a scale in activity completes before
5825	// another scale in activity can start. The cooldown period is used to block
5826	// subsequent scale in requests until it has expired. You should scale in conservatively
5827	// to protect your application's availability. However, if another alarm triggers
5828	// a scale out policy during the cooldown period after a scale-in, application
5829	// autoscaling scales out your scalable target immediately.
5830	ScaleInCooldown *int64 `type:"integer"`
5831
5832	// The amount of time, in seconds, after a scale out activity completes before
5833	// another scale out activity can start. While the cooldown period is in effect,
5834	// the capacity that has been added by the previous scale out event that initiated
5835	// the cooldown is calculated as part of the desired capacity for the next scale
5836	// out. You should continuously (but not excessively) scale out.
5837	ScaleOutCooldown *int64 `type:"integer"`
5838
5839	// The target value for the metric. The range is 8.515920e-109 to 1.174271e+108
5840	// (Base 10) or 2e-360 to 2e360 (Base 2).
5841	//
5842	// TargetValue is a required field
5843	TargetValue *float64 `type:"double" required:"true"`
5844}
5845
5846// String returns the string representation
5847func (s AutoScalingTargetTrackingScalingPolicyConfigurationDescription) String() string {
5848	return awsutil.Prettify(s)
5849}
5850
5851// GoString returns the string representation
5852func (s AutoScalingTargetTrackingScalingPolicyConfigurationDescription) GoString() string {
5853	return s.String()
5854}
5855
5856// SetDisableScaleIn sets the DisableScaleIn field's value.
5857func (s *AutoScalingTargetTrackingScalingPolicyConfigurationDescription) SetDisableScaleIn(v bool) *AutoScalingTargetTrackingScalingPolicyConfigurationDescription {
5858	s.DisableScaleIn = &v
5859	return s
5860}
5861
5862// SetScaleInCooldown sets the ScaleInCooldown field's value.
5863func (s *AutoScalingTargetTrackingScalingPolicyConfigurationDescription) SetScaleInCooldown(v int64) *AutoScalingTargetTrackingScalingPolicyConfigurationDescription {
5864	s.ScaleInCooldown = &v
5865	return s
5866}
5867
5868// SetScaleOutCooldown sets the ScaleOutCooldown field's value.
5869func (s *AutoScalingTargetTrackingScalingPolicyConfigurationDescription) SetScaleOutCooldown(v int64) *AutoScalingTargetTrackingScalingPolicyConfigurationDescription {
5870	s.ScaleOutCooldown = &v
5871	return s
5872}
5873
5874// SetTargetValue sets the TargetValue field's value.
5875func (s *AutoScalingTargetTrackingScalingPolicyConfigurationDescription) SetTargetValue(v float64) *AutoScalingTargetTrackingScalingPolicyConfigurationDescription {
5876	s.TargetValue = &v
5877	return s
5878}
5879
5880// Represents the settings of a target tracking scaling policy that will be
5881// modified.
5882type AutoScalingTargetTrackingScalingPolicyConfigurationUpdate struct {
5883	_ struct{} `type:"structure"`
5884
5885	// Indicates whether scale in by the target tracking policy is disabled. If
5886	// the value is true, scale in is disabled and the target tracking policy won't
5887	// remove capacity from the scalable resource. Otherwise, scale in is enabled
5888	// and the target tracking policy can remove capacity from the scalable resource.
5889	// The default value is false.
5890	DisableScaleIn *bool `type:"boolean"`
5891
5892	// The amount of time, in seconds, after a scale in activity completes before
5893	// another scale in activity can start. The cooldown period is used to block
5894	// subsequent scale in requests until it has expired. You should scale in conservatively
5895	// to protect your application's availability. However, if another alarm triggers
5896	// a scale out policy during the cooldown period after a scale-in, application
5897	// autoscaling scales out your scalable target immediately.
5898	ScaleInCooldown *int64 `type:"integer"`
5899
5900	// The amount of time, in seconds, after a scale out activity completes before
5901	// another scale out activity can start. While the cooldown period is in effect,
5902	// the capacity that has been added by the previous scale out event that initiated
5903	// the cooldown is calculated as part of the desired capacity for the next scale
5904	// out. You should continuously (but not excessively) scale out.
5905	ScaleOutCooldown *int64 `type:"integer"`
5906
5907	// The target value for the metric. The range is 8.515920e-109 to 1.174271e+108
5908	// (Base 10) or 2e-360 to 2e360 (Base 2).
5909	//
5910	// TargetValue is a required field
5911	TargetValue *float64 `type:"double" required:"true"`
5912}
5913
5914// String returns the string representation
5915func (s AutoScalingTargetTrackingScalingPolicyConfigurationUpdate) String() string {
5916	return awsutil.Prettify(s)
5917}
5918
5919// GoString returns the string representation
5920func (s AutoScalingTargetTrackingScalingPolicyConfigurationUpdate) GoString() string {
5921	return s.String()
5922}
5923
5924// Validate inspects the fields of the type to determine if they are valid.
5925func (s *AutoScalingTargetTrackingScalingPolicyConfigurationUpdate) Validate() error {
5926	invalidParams := request.ErrInvalidParams{Context: "AutoScalingTargetTrackingScalingPolicyConfigurationUpdate"}
5927	if s.TargetValue == nil {
5928		invalidParams.Add(request.NewErrParamRequired("TargetValue"))
5929	}
5930
5931	if invalidParams.Len() > 0 {
5932		return invalidParams
5933	}
5934	return nil
5935}
5936
5937// SetDisableScaleIn sets the DisableScaleIn field's value.
5938func (s *AutoScalingTargetTrackingScalingPolicyConfigurationUpdate) SetDisableScaleIn(v bool) *AutoScalingTargetTrackingScalingPolicyConfigurationUpdate {
5939	s.DisableScaleIn = &v
5940	return s
5941}
5942
5943// SetScaleInCooldown sets the ScaleInCooldown field's value.
5944func (s *AutoScalingTargetTrackingScalingPolicyConfigurationUpdate) SetScaleInCooldown(v int64) *AutoScalingTargetTrackingScalingPolicyConfigurationUpdate {
5945	s.ScaleInCooldown = &v
5946	return s
5947}
5948
5949// SetScaleOutCooldown sets the ScaleOutCooldown field's value.
5950func (s *AutoScalingTargetTrackingScalingPolicyConfigurationUpdate) SetScaleOutCooldown(v int64) *AutoScalingTargetTrackingScalingPolicyConfigurationUpdate {
5951	s.ScaleOutCooldown = &v
5952	return s
5953}
5954
5955// SetTargetValue sets the TargetValue field's value.
5956func (s *AutoScalingTargetTrackingScalingPolicyConfigurationUpdate) SetTargetValue(v float64) *AutoScalingTargetTrackingScalingPolicyConfigurationUpdate {
5957	s.TargetValue = &v
5958	return s
5959}
5960
5961// Contains the description of the backup created for the table.
5962type BackupDescription struct {
5963	_ struct{} `type:"structure"`
5964
5965	// Contains the details of the backup created for the table.
5966	BackupDetails *BackupDetails `type:"structure"`
5967
5968	// Contains the details of the table when the backup was created.
5969	SourceTableDetails *SourceTableDetails `type:"structure"`
5970
5971	// Contains the details of the features enabled on the table when the backup
5972	// was created. For example, LSIs, GSIs, streams, TTL.
5973	SourceTableFeatureDetails *SourceTableFeatureDetails `type:"structure"`
5974}
5975
5976// String returns the string representation
5977func (s BackupDescription) String() string {
5978	return awsutil.Prettify(s)
5979}
5980
5981// GoString returns the string representation
5982func (s BackupDescription) GoString() string {
5983	return s.String()
5984}
5985
5986// SetBackupDetails sets the BackupDetails field's value.
5987func (s *BackupDescription) SetBackupDetails(v *BackupDetails) *BackupDescription {
5988	s.BackupDetails = v
5989	return s
5990}
5991
5992// SetSourceTableDetails sets the SourceTableDetails field's value.
5993func (s *BackupDescription) SetSourceTableDetails(v *SourceTableDetails) *BackupDescription {
5994	s.SourceTableDetails = v
5995	return s
5996}
5997
5998// SetSourceTableFeatureDetails sets the SourceTableFeatureDetails field's value.
5999func (s *BackupDescription) SetSourceTableFeatureDetails(v *SourceTableFeatureDetails) *BackupDescription {
6000	s.SourceTableFeatureDetails = v
6001	return s
6002}
6003
6004// Contains the details of the backup created for the table.
6005type BackupDetails struct {
6006	_ struct{} `type:"structure"`
6007
6008	// ARN associated with the backup.
6009	//
6010	// BackupArn is a required field
6011	BackupArn *string `min:"37" type:"string" required:"true"`
6012
6013	// Time at which the backup was created. This is the request time of the backup.
6014	//
6015	// BackupCreationDateTime is a required field
6016	BackupCreationDateTime *time.Time `type:"timestamp" required:"true"`
6017
6018	// Time at which the automatic on-demand backup created by DynamoDB will expire.
6019	// This SYSTEM on-demand backup expires automatically 35 days after its creation.
6020	BackupExpiryDateTime *time.Time `type:"timestamp"`
6021
6022	// Name of the requested backup.
6023	//
6024	// BackupName is a required field
6025	BackupName *string `min:"3" type:"string" required:"true"`
6026
6027	// Size of the backup in bytes.
6028	BackupSizeBytes *int64 `type:"long"`
6029
6030	// Backup can be in one of the following states: CREATING, ACTIVE, DELETED.
6031	//
6032	// BackupStatus is a required field
6033	BackupStatus *string `type:"string" required:"true" enum:"BackupStatus"`
6034
6035	// BackupType:
6036	//
6037	//    * USER - You create and manage these using the on-demand backup feature.
6038	//
6039	//    * SYSTEM - If you delete a table with point-in-time recovery enabled,
6040	//    a SYSTEM backup is automatically created and is retained for 35 days (at
6041	//    no additional cost). System backups allow you to restore the deleted table
6042	//    to the state it was in just before the point of deletion.
6043	//
6044	//    * AWS_BACKUP - On-demand backup created by you from AWS Backup service.
6045	//
6046	// BackupType is a required field
6047	BackupType *string `type:"string" required:"true" enum:"BackupType"`
6048}
6049
6050// String returns the string representation
6051func (s BackupDetails) String() string {
6052	return awsutil.Prettify(s)
6053}
6054
6055// GoString returns the string representation
6056func (s BackupDetails) GoString() string {
6057	return s.String()
6058}
6059
6060// SetBackupArn sets the BackupArn field's value.
6061func (s *BackupDetails) SetBackupArn(v string) *BackupDetails {
6062	s.BackupArn = &v
6063	return s
6064}
6065
6066// SetBackupCreationDateTime sets the BackupCreationDateTime field's value.
6067func (s *BackupDetails) SetBackupCreationDateTime(v time.Time) *BackupDetails {
6068	s.BackupCreationDateTime = &v
6069	return s
6070}
6071
6072// SetBackupExpiryDateTime sets the BackupExpiryDateTime field's value.
6073func (s *BackupDetails) SetBackupExpiryDateTime(v time.Time) *BackupDetails {
6074	s.BackupExpiryDateTime = &v
6075	return s
6076}
6077
6078// SetBackupName sets the BackupName field's value.
6079func (s *BackupDetails) SetBackupName(v string) *BackupDetails {
6080	s.BackupName = &v
6081	return s
6082}
6083
6084// SetBackupSizeBytes sets the BackupSizeBytes field's value.
6085func (s *BackupDetails) SetBackupSizeBytes(v int64) *BackupDetails {
6086	s.BackupSizeBytes = &v
6087	return s
6088}
6089
6090// SetBackupStatus sets the BackupStatus field's value.
6091func (s *BackupDetails) SetBackupStatus(v string) *BackupDetails {
6092	s.BackupStatus = &v
6093	return s
6094}
6095
6096// SetBackupType sets the BackupType field's value.
6097func (s *BackupDetails) SetBackupType(v string) *BackupDetails {
6098	s.BackupType = &v
6099	return s
6100}
6101
6102// Contains details for the backup.
6103type BackupSummary struct {
6104	_ struct{} `type:"structure"`
6105
6106	// ARN associated with the backup.
6107	BackupArn *string `min:"37" type:"string"`
6108
6109	// Time at which the backup was created.
6110	BackupCreationDateTime *time.Time `type:"timestamp"`
6111
6112	// Time at which the automatic on-demand backup created by DynamoDB will expire.
6113	// This SYSTEM on-demand backup expires automatically 35 days after its creation.
6114	BackupExpiryDateTime *time.Time `type:"timestamp"`
6115
6116	// Name of the specified backup.
6117	BackupName *string `min:"3" type:"string"`
6118
6119	// Size of the backup in bytes.
6120	BackupSizeBytes *int64 `type:"long"`
6121
6122	// Backup can be in one of the following states: CREATING, ACTIVE, DELETED.
6123	BackupStatus *string `type:"string" enum:"BackupStatus"`
6124
6125	// BackupType:
6126	//
6127	//    * USER - You create and manage these using the on-demand backup feature.
6128	//
6129	//    * SYSTEM - If you delete a table with point-in-time recovery enabled,
6130	//    a SYSTEM backup is automatically created and is retained for 35 days (at
6131	//    no additional cost). System backups allow you to restore the deleted table
6132	//    to the state it was in just before the point of deletion.
6133	//
6134	//    * AWS_BACKUP - On-demand backup created by you from AWS Backup service.
6135	BackupType *string `type:"string" enum:"BackupType"`
6136
6137	// ARN associated with the table.
6138	TableArn *string `type:"string"`
6139
6140	// Unique identifier for the table.
6141	TableId *string `type:"string"`
6142
6143	// Name of the table.
6144	TableName *string `min:"3" type:"string"`
6145}
6146
6147// String returns the string representation
6148func (s BackupSummary) String() string {
6149	return awsutil.Prettify(s)
6150}
6151
6152// GoString returns the string representation
6153func (s BackupSummary) GoString() string {
6154	return s.String()
6155}
6156
6157// SetBackupArn sets the BackupArn field's value.
6158func (s *BackupSummary) SetBackupArn(v string) *BackupSummary {
6159	s.BackupArn = &v
6160	return s
6161}
6162
6163// SetBackupCreationDateTime sets the BackupCreationDateTime field's value.
6164func (s *BackupSummary) SetBackupCreationDateTime(v time.Time) *BackupSummary {
6165	s.BackupCreationDateTime = &v
6166	return s
6167}
6168
6169// SetBackupExpiryDateTime sets the BackupExpiryDateTime field's value.
6170func (s *BackupSummary) SetBackupExpiryDateTime(v time.Time) *BackupSummary {
6171	s.BackupExpiryDateTime = &v
6172	return s
6173}
6174
6175// SetBackupName sets the BackupName field's value.
6176func (s *BackupSummary) SetBackupName(v string) *BackupSummary {
6177	s.BackupName = &v
6178	return s
6179}
6180
6181// SetBackupSizeBytes sets the BackupSizeBytes field's value.
6182func (s *BackupSummary) SetBackupSizeBytes(v int64) *BackupSummary {
6183	s.BackupSizeBytes = &v
6184	return s
6185}
6186
6187// SetBackupStatus sets the BackupStatus field's value.
6188func (s *BackupSummary) SetBackupStatus(v string) *BackupSummary {
6189	s.BackupStatus = &v
6190	return s
6191}
6192
6193// SetBackupType sets the BackupType field's value.
6194func (s *BackupSummary) SetBackupType(v string) *BackupSummary {
6195	s.BackupType = &v
6196	return s
6197}
6198
6199// SetTableArn sets the TableArn field's value.
6200func (s *BackupSummary) SetTableArn(v string) *BackupSummary {
6201	s.TableArn = &v
6202	return s
6203}
6204
6205// SetTableId sets the TableId field's value.
6206func (s *BackupSummary) SetTableId(v string) *BackupSummary {
6207	s.TableId = &v
6208	return s
6209}
6210
6211// SetTableName sets the TableName field's value.
6212func (s *BackupSummary) SetTableName(v string) *BackupSummary {
6213	s.TableName = &v
6214	return s
6215}
6216
6217// Represents the input of a BatchGetItem operation.
6218type BatchGetItemInput struct {
6219	_ struct{} `type:"structure"`
6220
6221	// A map of one or more table names and, for each table, a map that describes
6222	// one or more items to retrieve from that table. Each table name can be used
6223	// only once per BatchGetItem request.
6224	//
6225	// Each element in the map of items to retrieve consists of the following:
6226	//
6227	//    * ConsistentRead - If true, a strongly consistent read is used; if false
6228	//    (the default), an eventually consistent read is used.
6229	//
6230	//    * ExpressionAttributeNames - One or more substitution tokens for attribute
6231	//    names in the ProjectionExpression parameter. The following are some use
6232	//    cases for using ExpressionAttributeNames: To access an attribute whose
6233	//    name conflicts with a DynamoDB reserved word. To create a placeholder
6234	//    for repeating occurrences of an attribute name in an expression. To prevent
6235	//    special characters in an attribute name from being misinterpreted in an
6236	//    expression. Use the # character in an expression to dereference an attribute
6237	//    name. For example, consider the following attribute name: Percentile The
6238	//    name of this attribute conflicts with a reserved word, so it cannot be
6239	//    used directly in an expression. (For the complete list of reserved words,
6240	//    see Reserved Words (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ReservedWords.html)
6241	//    in the Amazon DynamoDB Developer Guide). To work around this, you could
6242	//    specify the following for ExpressionAttributeNames: {"#P":"Percentile"}
6243	//    You could then use this substitution in an expression, as in this example:
6244	//    #P = :val Tokens that begin with the : character are expression attribute
6245	//    values, which are placeholders for the actual value at runtime. For more
6246	//    information about expression attribute names, see Accessing Item Attributes
6247	//    (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.AccessingItemAttributes.html)
6248	//    in the Amazon DynamoDB Developer Guide.
6249	//
6250	//    * Keys - An array of primary key attribute values that define specific
6251	//    items in the table. For each primary key, you must provide all of the
6252	//    key attributes. For example, with a simple primary key, you only need
6253	//    to provide the partition key value. For a composite key, you must provide
6254	//    both the partition key value and the sort key value.
6255	//
6256	//    * ProjectionExpression - A string that identifies one or more attributes
6257	//    to retrieve from the table. These attributes can include scalars, sets,
6258	//    or elements of a JSON document. The attributes in the expression must
6259	//    be separated by commas. If no attribute names are specified, then all
6260	//    attributes are returned. If any of the requested attributes are not found,
6261	//    they do not appear in the result. For more information, see Accessing
6262	//    Item Attributes (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.AccessingItemAttributes.html)
6263	//    in the Amazon DynamoDB Developer Guide.
6264	//
6265	//    * AttributesToGet - This is a legacy parameter. Use ProjectionExpression
6266	//    instead. For more information, see AttributesToGet (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/LegacyConditionalParameters.AttributesToGet.html)
6267	//    in the Amazon DynamoDB Developer Guide.
6268	//
6269	// RequestItems is a required field
6270	RequestItems map[string]*KeysAndAttributes `min:"1" type:"map" required:"true"`
6271
6272	// Determines the level of detail about provisioned throughput consumption that
6273	// is returned in the response:
6274	//
6275	//    * INDEXES - The response includes the aggregate ConsumedCapacity for the
6276	//    operation, together with ConsumedCapacity for each table and secondary
6277	//    index that was accessed. Note that some operations, such as GetItem and
6278	//    BatchGetItem, do not access any indexes at all. In these cases, specifying
6279	//    INDEXES will only return ConsumedCapacity information for table(s).
6280	//
6281	//    * TOTAL - The response includes only the aggregate ConsumedCapacity for
6282	//    the operation.
6283	//
6284	//    * NONE - No ConsumedCapacity details are included in the response.
6285	ReturnConsumedCapacity *string `type:"string" enum:"ReturnConsumedCapacity"`
6286}
6287
6288// String returns the string representation
6289func (s BatchGetItemInput) String() string {
6290	return awsutil.Prettify(s)
6291}
6292
6293// GoString returns the string representation
6294func (s BatchGetItemInput) GoString() string {
6295	return s.String()
6296}
6297
6298// Validate inspects the fields of the type to determine if they are valid.
6299func (s *BatchGetItemInput) Validate() error {
6300	invalidParams := request.ErrInvalidParams{Context: "BatchGetItemInput"}
6301	if s.RequestItems == nil {
6302		invalidParams.Add(request.NewErrParamRequired("RequestItems"))
6303	}
6304	if s.RequestItems != nil && len(s.RequestItems) < 1 {
6305		invalidParams.Add(request.NewErrParamMinLen("RequestItems", 1))
6306	}
6307	if s.RequestItems != nil {
6308		for i, v := range s.RequestItems {
6309			if v == nil {
6310				continue
6311			}
6312			if err := v.Validate(); err != nil {
6313				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "RequestItems", i), err.(request.ErrInvalidParams))
6314			}
6315		}
6316	}
6317
6318	if invalidParams.Len() > 0 {
6319		return invalidParams
6320	}
6321	return nil
6322}
6323
6324// SetRequestItems sets the RequestItems field's value.
6325func (s *BatchGetItemInput) SetRequestItems(v map[string]*KeysAndAttributes) *BatchGetItemInput {
6326	s.RequestItems = v
6327	return s
6328}
6329
6330// SetReturnConsumedCapacity sets the ReturnConsumedCapacity field's value.
6331func (s *BatchGetItemInput) SetReturnConsumedCapacity(v string) *BatchGetItemInput {
6332	s.ReturnConsumedCapacity = &v
6333	return s
6334}
6335
6336// Represents the output of a BatchGetItem operation.
6337type BatchGetItemOutput struct {
6338	_ struct{} `type:"structure"`
6339
6340	// The read capacity units consumed by the entire BatchGetItem operation.
6341	//
6342	// Each element consists of:
6343	//
6344	//    * TableName - The table that consumed the provisioned throughput.
6345	//
6346	//    * CapacityUnits - The total number of capacity units consumed.
6347	ConsumedCapacity []*ConsumedCapacity `type:"list"`
6348
6349	// A map of table name to a list of items. Each object in Responses consists
6350	// of a table name, along with a map of attribute data consisting of the data
6351	// type and attribute value.
6352	Responses map[string][]map[string]*AttributeValue `type:"map"`
6353
6354	// A map of tables and their respective keys that were not processed with the
6355	// current response. The UnprocessedKeys value is in the same form as RequestItems,
6356	// so the value can be provided directly to a subsequent BatchGetItem operation.
6357	// For more information, see RequestItems in the Request Parameters section.
6358	//
6359	// Each element consists of:
6360	//
6361	//    * Keys - An array of primary key attribute values that define specific
6362	//    items in the table.
6363	//
6364	//    * ProjectionExpression - One or more attributes to be retrieved from the
6365	//    table or index. By default, all attributes are returned. If a requested
6366	//    attribute is not found, it does not appear in the result.
6367	//
6368	//    * ConsistentRead - The consistency of a read operation. If set to true,
6369	//    then a strongly consistent read is used; otherwise, an eventually consistent
6370	//    read is used.
6371	//
6372	// If there are no unprocessed keys remaining, the response contains an empty
6373	// UnprocessedKeys map.
6374	UnprocessedKeys map[string]*KeysAndAttributes `min:"1" type:"map"`
6375}
6376
6377// String returns the string representation
6378func (s BatchGetItemOutput) String() string {
6379	return awsutil.Prettify(s)
6380}
6381
6382// GoString returns the string representation
6383func (s BatchGetItemOutput) GoString() string {
6384	return s.String()
6385}
6386
6387// SetConsumedCapacity sets the ConsumedCapacity field's value.
6388func (s *BatchGetItemOutput) SetConsumedCapacity(v []*ConsumedCapacity) *BatchGetItemOutput {
6389	s.ConsumedCapacity = v
6390	return s
6391}
6392
6393// SetResponses sets the Responses field's value.
6394func (s *BatchGetItemOutput) SetResponses(v map[string][]map[string]*AttributeValue) *BatchGetItemOutput {
6395	s.Responses = v
6396	return s
6397}
6398
6399// SetUnprocessedKeys sets the UnprocessedKeys field's value.
6400func (s *BatchGetItemOutput) SetUnprocessedKeys(v map[string]*KeysAndAttributes) *BatchGetItemOutput {
6401	s.UnprocessedKeys = v
6402	return s
6403}
6404
6405// Represents the input of a BatchWriteItem operation.
6406type BatchWriteItemInput struct {
6407	_ struct{} `type:"structure"`
6408
6409	// A map of one or more table names and, for each table, a list of operations
6410	// to be performed (DeleteRequest or PutRequest). Each element in the map consists
6411	// of the following:
6412	//
6413	//    * DeleteRequest - Perform a DeleteItem operation on the specified item.
6414	//    The item to be deleted is identified by a Key subelement: Key - A map
6415	//    of primary key attribute values that uniquely identify the item. Each
6416	//    entry in this map consists of an attribute name and an attribute value.
6417	//    For each primary key, you must provide all of the key attributes. For
6418	//    example, with a simple primary key, you only need to provide a value for
6419	//    the partition key. For a composite primary key, you must provide values
6420	//    for both the partition key and the sort key.
6421	//
6422	//    * PutRequest - Perform a PutItem operation on the specified item. The
6423	//    item to be put is identified by an Item subelement: Item - A map of attributes
6424	//    and their values. Each entry in this map consists of an attribute name
6425	//    and an attribute value. Attribute values must not be null; string and
6426	//    binary type attributes must have lengths greater than zero; and set type
6427	//    attributes must not be empty. Requests that contain empty values are rejected
6428	//    with a ValidationException exception. If you specify any attributes that
6429	//    are part of an index key, then the data types for those attributes must
6430	//    match those of the schema in the table's attribute definition.
6431	//
6432	// RequestItems is a required field
6433	RequestItems map[string][]*WriteRequest `min:"1" type:"map" required:"true"`
6434
6435	// Determines the level of detail about provisioned throughput consumption that
6436	// is returned in the response:
6437	//
6438	//    * INDEXES - The response includes the aggregate ConsumedCapacity for the
6439	//    operation, together with ConsumedCapacity for each table and secondary
6440	//    index that was accessed. Note that some operations, such as GetItem and
6441	//    BatchGetItem, do not access any indexes at all. In these cases, specifying
6442	//    INDEXES will only return ConsumedCapacity information for table(s).
6443	//
6444	//    * TOTAL - The response includes only the aggregate ConsumedCapacity for
6445	//    the operation.
6446	//
6447	//    * NONE - No ConsumedCapacity details are included in the response.
6448	ReturnConsumedCapacity *string `type:"string" enum:"ReturnConsumedCapacity"`
6449
6450	// Determines whether item collection metrics are returned. If set to SIZE,
6451	// the response includes statistics about item collections, if any, that were
6452	// modified during the operation are returned in the response. If set to NONE
6453	// (the default), no statistics are returned.
6454	ReturnItemCollectionMetrics *string `type:"string" enum:"ReturnItemCollectionMetrics"`
6455}
6456
6457// String returns the string representation
6458func (s BatchWriteItemInput) String() string {
6459	return awsutil.Prettify(s)
6460}
6461
6462// GoString returns the string representation
6463func (s BatchWriteItemInput) GoString() string {
6464	return s.String()
6465}
6466
6467// Validate inspects the fields of the type to determine if they are valid.
6468func (s *BatchWriteItemInput) Validate() error {
6469	invalidParams := request.ErrInvalidParams{Context: "BatchWriteItemInput"}
6470	if s.RequestItems == nil {
6471		invalidParams.Add(request.NewErrParamRequired("RequestItems"))
6472	}
6473	if s.RequestItems != nil && len(s.RequestItems) < 1 {
6474		invalidParams.Add(request.NewErrParamMinLen("RequestItems", 1))
6475	}
6476
6477	if invalidParams.Len() > 0 {
6478		return invalidParams
6479	}
6480	return nil
6481}
6482
6483// SetRequestItems sets the RequestItems field's value.
6484func (s *BatchWriteItemInput) SetRequestItems(v map[string][]*WriteRequest) *BatchWriteItemInput {
6485	s.RequestItems = v
6486	return s
6487}
6488
6489// SetReturnConsumedCapacity sets the ReturnConsumedCapacity field's value.
6490func (s *BatchWriteItemInput) SetReturnConsumedCapacity(v string) *BatchWriteItemInput {
6491	s.ReturnConsumedCapacity = &v
6492	return s
6493}
6494
6495// SetReturnItemCollectionMetrics sets the ReturnItemCollectionMetrics field's value.
6496func (s *BatchWriteItemInput) SetReturnItemCollectionMetrics(v string) *BatchWriteItemInput {
6497	s.ReturnItemCollectionMetrics = &v
6498	return s
6499}
6500
6501// Represents the output of a BatchWriteItem operation.
6502type BatchWriteItemOutput struct {
6503	_ struct{} `type:"structure"`
6504
6505	// The capacity units consumed by the entire BatchWriteItem operation.
6506	//
6507	// Each element consists of:
6508	//
6509	//    * TableName - The table that consumed the provisioned throughput.
6510	//
6511	//    * CapacityUnits - The total number of capacity units consumed.
6512	ConsumedCapacity []*ConsumedCapacity `type:"list"`
6513
6514	// A list of tables that were processed by BatchWriteItem and, for each table,
6515	// information about any item collections that were affected by individual DeleteItem
6516	// or PutItem operations.
6517	//
6518	// Each entry consists of the following subelements:
6519	//
6520	//    * ItemCollectionKey - The partition key value of the item collection.
6521	//    This is the same as the partition key value of the item.
6522	//
6523	//    * SizeEstimateRangeGB - An estimate of item collection size, expressed
6524	//    in GB. This is a two-element array containing a lower bound and an upper
6525	//    bound for the estimate. The estimate includes the size of all the items
6526	//    in the table, plus the size of all attributes projected into all of the
6527	//    local secondary indexes on the table. Use this estimate to measure whether
6528	//    a local secondary index is approaching its size limit. The estimate is
6529	//    subject to change over time; therefore, do not rely on the precision or
6530	//    accuracy of the estimate.
6531	ItemCollectionMetrics map[string][]*ItemCollectionMetrics `type:"map"`
6532
6533	// A map of tables and requests against those tables that were not processed.
6534	// The UnprocessedItems value is in the same form as RequestItems, so you can
6535	// provide this value directly to a subsequent BatchGetItem operation. For more
6536	// information, see RequestItems in the Request Parameters section.
6537	//
6538	// Each UnprocessedItems entry consists of a table name and, for that table,
6539	// a list of operations to perform (DeleteRequest or PutRequest).
6540	//
6541	//    * DeleteRequest - Perform a DeleteItem operation on the specified item.
6542	//    The item to be deleted is identified by a Key subelement: Key - A map
6543	//    of primary key attribute values that uniquely identify the item. Each
6544	//    entry in this map consists of an attribute name and an attribute value.
6545	//
6546	//    * PutRequest - Perform a PutItem operation on the specified item. The
6547	//    item to be put is identified by an Item subelement: Item - A map of attributes
6548	//    and their values. Each entry in this map consists of an attribute name
6549	//    and an attribute value. Attribute values must not be null; string and
6550	//    binary type attributes must have lengths greater than zero; and set type
6551	//    attributes must not be empty. Requests that contain empty values will
6552	//    be rejected with a ValidationException exception. If you specify any attributes
6553	//    that are part of an index key, then the data types for those attributes
6554	//    must match those of the schema in the table's attribute definition.
6555	//
6556	// If there are no unprocessed items remaining, the response contains an empty
6557	// UnprocessedItems map.
6558	UnprocessedItems map[string][]*WriteRequest `min:"1" type:"map"`
6559}
6560
6561// String returns the string representation
6562func (s BatchWriteItemOutput) String() string {
6563	return awsutil.Prettify(s)
6564}
6565
6566// GoString returns the string representation
6567func (s BatchWriteItemOutput) GoString() string {
6568	return s.String()
6569}
6570
6571// SetConsumedCapacity sets the ConsumedCapacity field's value.
6572func (s *BatchWriteItemOutput) SetConsumedCapacity(v []*ConsumedCapacity) *BatchWriteItemOutput {
6573	s.ConsumedCapacity = v
6574	return s
6575}
6576
6577// SetItemCollectionMetrics sets the ItemCollectionMetrics field's value.
6578func (s *BatchWriteItemOutput) SetItemCollectionMetrics(v map[string][]*ItemCollectionMetrics) *BatchWriteItemOutput {
6579	s.ItemCollectionMetrics = v
6580	return s
6581}
6582
6583// SetUnprocessedItems sets the UnprocessedItems field's value.
6584func (s *BatchWriteItemOutput) SetUnprocessedItems(v map[string][]*WriteRequest) *BatchWriteItemOutput {
6585	s.UnprocessedItems = v
6586	return s
6587}
6588
6589// Contains the details for the read/write capacity mode.
6590type BillingModeSummary struct {
6591	_ struct{} `type:"structure"`
6592
6593	// Controls how you are charged for read and write throughput and how you manage
6594	// capacity. This setting can be changed later.
6595	//
6596	//    * PROVISIONED - Sets the read/write capacity mode to PROVISIONED. We recommend
6597	//    using PROVISIONED for predictable workloads.
6598	//
6599	//    * PAY_PER_REQUEST - Sets the read/write capacity mode to PAY_PER_REQUEST.
6600	//    We recommend using PAY_PER_REQUEST for unpredictable workloads.
6601	BillingMode *string `type:"string" enum:"BillingMode"`
6602
6603	// Represents the time when PAY_PER_REQUEST was last set as the read/write capacity
6604	// mode.
6605	LastUpdateToPayPerRequestDateTime *time.Time `type:"timestamp"`
6606}
6607
6608// String returns the string representation
6609func (s BillingModeSummary) String() string {
6610	return awsutil.Prettify(s)
6611}
6612
6613// GoString returns the string representation
6614func (s BillingModeSummary) GoString() string {
6615	return s.String()
6616}
6617
6618// SetBillingMode sets the BillingMode field's value.
6619func (s *BillingModeSummary) SetBillingMode(v string) *BillingModeSummary {
6620	s.BillingMode = &v
6621	return s
6622}
6623
6624// SetLastUpdateToPayPerRequestDateTime sets the LastUpdateToPayPerRequestDateTime field's value.
6625func (s *BillingModeSummary) SetLastUpdateToPayPerRequestDateTime(v time.Time) *BillingModeSummary {
6626	s.LastUpdateToPayPerRequestDateTime = &v
6627	return s
6628}
6629
6630// An ordered list of errors for each item in the request which caused the transaction
6631// to get cancelled. The values of the list are ordered according to the ordering
6632// of the TransactWriteItems request parameter. If no error occurred for the
6633// associated item an error with a Null code and Null message will be present.
6634type CancellationReason struct {
6635	_ struct{} `type:"structure"`
6636
6637	// Status code for the result of the cancelled transaction.
6638	Code *string `type:"string"`
6639
6640	// Item in the request which caused the transaction to get cancelled.
6641	Item map[string]*AttributeValue `type:"map"`
6642
6643	// Cancellation reason message description.
6644	Message *string `type:"string"`
6645}
6646
6647// String returns the string representation
6648func (s CancellationReason) String() string {
6649	return awsutil.Prettify(s)
6650}
6651
6652// GoString returns the string representation
6653func (s CancellationReason) GoString() string {
6654	return s.String()
6655}
6656
6657// SetCode sets the Code field's value.
6658func (s *CancellationReason) SetCode(v string) *CancellationReason {
6659	s.Code = &v
6660	return s
6661}
6662
6663// SetItem sets the Item field's value.
6664func (s *CancellationReason) SetItem(v map[string]*AttributeValue) *CancellationReason {
6665	s.Item = v
6666	return s
6667}
6668
6669// SetMessage sets the Message field's value.
6670func (s *CancellationReason) SetMessage(v string) *CancellationReason {
6671	s.Message = &v
6672	return s
6673}
6674
6675// Represents the amount of provisioned throughput capacity consumed on a table
6676// or an index.
6677type Capacity struct {
6678	_ struct{} `type:"structure"`
6679
6680	// The total number of capacity units consumed on a table or an index.
6681	CapacityUnits *float64 `type:"double"`
6682
6683	// The total number of read capacity units consumed on a table or an index.
6684	ReadCapacityUnits *float64 `type:"double"`
6685
6686	// The total number of write capacity units consumed on a table or an index.
6687	WriteCapacityUnits *float64 `type:"double"`
6688}
6689
6690// String returns the string representation
6691func (s Capacity) String() string {
6692	return awsutil.Prettify(s)
6693}
6694
6695// GoString returns the string representation
6696func (s Capacity) GoString() string {
6697	return s.String()
6698}
6699
6700// SetCapacityUnits sets the CapacityUnits field's value.
6701func (s *Capacity) SetCapacityUnits(v float64) *Capacity {
6702	s.CapacityUnits = &v
6703	return s
6704}
6705
6706// SetReadCapacityUnits sets the ReadCapacityUnits field's value.
6707func (s *Capacity) SetReadCapacityUnits(v float64) *Capacity {
6708	s.ReadCapacityUnits = &v
6709	return s
6710}
6711
6712// SetWriteCapacityUnits sets the WriteCapacityUnits field's value.
6713func (s *Capacity) SetWriteCapacityUnits(v float64) *Capacity {
6714	s.WriteCapacityUnits = &v
6715	return s
6716}
6717
6718// Represents the selection criteria for a Query or Scan operation:
6719//
6720//    * For a Query operation, Condition is used for specifying the KeyConditions
6721//    to use when querying a table or an index. For KeyConditions, only the
6722//    following comparison operators are supported: EQ | LE | LT | GE | GT |
6723//    BEGINS_WITH | BETWEEN Condition is also used in a QueryFilter, which evaluates
6724//    the query results and returns only the desired values.
6725//
6726//    * For a Scan operation, Condition is used in a ScanFilter, which evaluates
6727//    the scan results and returns only the desired values.
6728type Condition struct {
6729	_ struct{} `type:"structure"`
6730
6731	// One or more values to evaluate against the supplied attribute. The number
6732	// of values in the list depends on the ComparisonOperator being used.
6733	//
6734	// For type Number, value comparisons are numeric.
6735	//
6736	// String value comparisons for greater than, equals, or less than are based
6737	// on ASCII character code values. For example, a is greater than A, and a is
6738	// greater than B. For a list of code values, see http://en.wikipedia.org/wiki/ASCII#ASCII_printable_characters
6739	// (http://en.wikipedia.org/wiki/ASCII#ASCII_printable_characters).
6740	//
6741	// For Binary, DynamoDB treats each byte of the binary data as unsigned when
6742	// it compares binary values.
6743	AttributeValueList []*AttributeValue `type:"list"`
6744
6745	// A comparator for evaluating attributes. For example, equals, greater than,
6746	// less than, etc.
6747	//
6748	// The following comparison operators are available:
6749	//
6750	// EQ | NE | LE | LT | GE | GT | NOT_NULL | NULL | CONTAINS | NOT_CONTAINS |
6751	// BEGINS_WITH | IN | BETWEEN
6752	//
6753	// The following are descriptions of each comparison operator.
6754	//
6755	//    * EQ : Equal. EQ is supported for all data types, including lists and
6756	//    maps. AttributeValueList can contain only one AttributeValue element of
6757	//    type String, Number, Binary, String Set, Number Set, or Binary Set. If
6758	//    an item contains an AttributeValue element of a different type than the
6759	//    one provided in the request, the value does not match. For example, {"S":"6"}
6760	//    does not equal {"N":"6"}. Also, {"N":"6"} does not equal {"NS":["6", "2",
6761	//    "1"]}.
6762	//
6763	//    * NE : Not equal. NE is supported for all data types, including lists
6764	//    and maps. AttributeValueList can contain only one AttributeValue of type
6765	//    String, Number, Binary, String Set, Number Set, or Binary Set. If an item
6766	//    contains an AttributeValue of a different type than the one provided in
6767	//    the request, the value does not match. For example, {"S":"6"} does not
6768	//    equal {"N":"6"}. Also, {"N":"6"} does not equal {"NS":["6", "2", "1"]}.
6769	//
6770	//    * LE : Less than or equal. AttributeValueList can contain only one AttributeValue
6771	//    element of type String, Number, or Binary (not a set type). If an item
6772	//    contains an AttributeValue element of a different type than the one provided
6773	//    in the request, the value does not match. For example, {"S":"6"} does
6774	//    not equal {"N":"6"}. Also, {"N":"6"} does not compare to {"NS":["6", "2",
6775	//    "1"]}.
6776	//
6777	//    * LT : Less than. AttributeValueList can contain only one AttributeValue
6778	//    of type String, Number, or Binary (not a set type). If an item contains
6779	//    an AttributeValue element of a different type than the one provided in
6780	//    the request, the value does not match. For example, {"S":"6"} does not
6781	//    equal {"N":"6"}. Also, {"N":"6"} does not compare to {"NS":["6", "2",
6782	//    "1"]}.
6783	//
6784	//    * GE : Greater than or equal. AttributeValueList can contain only one
6785	//    AttributeValue element of type String, Number, or Binary (not a set type).
6786	//    If an item contains an AttributeValue element of a different type than
6787	//    the one provided in the request, the value does not match. For example,
6788	//    {"S":"6"} does not equal {"N":"6"}. Also, {"N":"6"} does not compare to
6789	//    {"NS":["6", "2", "1"]}.
6790	//
6791	//    * GT : Greater than. AttributeValueList can contain only one AttributeValue
6792	//    element of type String, Number, or Binary (not a set type). If an item
6793	//    contains an AttributeValue element of a different type than the one provided
6794	//    in the request, the value does not match. For example, {"S":"6"} does
6795	//    not equal {"N":"6"}. Also, {"N":"6"} does not compare to {"NS":["6", "2",
6796	//    "1"]}.
6797	//
6798	//    * NOT_NULL : The attribute exists. NOT_NULL is supported for all data
6799	//    types, including lists and maps. This operator tests for the existence
6800	//    of an attribute, not its data type. If the data type of attribute "a"
6801	//    is null, and you evaluate it using NOT_NULL, the result is a Boolean true.
6802	//    This result is because the attribute "a" exists; its data type is not
6803	//    relevant to the NOT_NULL comparison operator.
6804	//
6805	//    * NULL : The attribute does not exist. NULL is supported for all data
6806	//    types, including lists and maps. This operator tests for the nonexistence
6807	//    of an attribute, not its data type. If the data type of attribute "a"
6808	//    is null, and you evaluate it using NULL, the result is a Boolean false.
6809	//    This is because the attribute "a" exists; its data type is not relevant
6810	//    to the NULL comparison operator.
6811	//
6812	//    * CONTAINS : Checks for a subsequence, or value in a set. AttributeValueList
6813	//    can contain only one AttributeValue element of type String, Number, or
6814	//    Binary (not a set type). If the target attribute of the comparison is
6815	//    of type String, then the operator checks for a substring match. If the
6816	//    target attribute of the comparison is of type Binary, then the operator
6817	//    looks for a subsequence of the target that matches the input. If the target
6818	//    attribute of the comparison is a set ("SS", "NS", or "BS"), then the operator
6819	//    evaluates to true if it finds an exact match with any member of the set.
6820	//    CONTAINS is supported for lists: When evaluating "a CONTAINS b", "a" can
6821	//    be a list; however, "b" cannot be a set, a map, or a list.
6822	//
6823	//    * NOT_CONTAINS : Checks for absence of a subsequence, or absence of a
6824	//    value in a set. AttributeValueList can contain only one AttributeValue
6825	//    element of type String, Number, or Binary (not a set type). If the target
6826	//    attribute of the comparison is a String, then the operator checks for
6827	//    the absence of a substring match. If the target attribute of the comparison
6828	//    is Binary, then the operator checks for the absence of a subsequence of
6829	//    the target that matches the input. If the target attribute of the comparison
6830	//    is a set ("SS", "NS", or "BS"), then the operator evaluates to true if
6831	//    it does not find an exact match with any member of the set. NOT_CONTAINS
6832	//    is supported for lists: When evaluating "a NOT CONTAINS b", "a" can be
6833	//    a list; however, "b" cannot be a set, a map, or a list.
6834	//
6835	//    * BEGINS_WITH : Checks for a prefix. AttributeValueList can contain only
6836	//    one AttributeValue of type String or Binary (not a Number or a set type).
6837	//    The target attribute of the comparison must be of type String or Binary
6838	//    (not a Number or a set type).
6839	//
6840	//    * IN : Checks for matching elements in a list. AttributeValueList can
6841	//    contain one or more AttributeValue elements of type String, Number, or
6842	//    Binary. These attributes are compared against an existing attribute of
6843	//    an item. If any elements of the input are equal to the item attribute,
6844	//    the expression evaluates to true.
6845	//
6846	//    * BETWEEN : Greater than or equal to the first value, and less than or
6847	//    equal to the second value. AttributeValueList must contain two AttributeValue
6848	//    elements of the same type, either String, Number, or Binary (not a set
6849	//    type). A target attribute matches if the target value is greater than,
6850	//    or equal to, the first element and less than, or equal to, the second
6851	//    element. If an item contains an AttributeValue element of a different
6852	//    type than the one provided in the request, the value does not match. For
6853	//    example, {"S":"6"} does not compare to {"N":"6"}. Also, {"N":"6"} does
6854	//    not compare to {"NS":["6", "2", "1"]}
6855	//
6856	// For usage examples of AttributeValueList and ComparisonOperator, see Legacy
6857	// Conditional Parameters (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/LegacyConditionalParameters.html)
6858	// in the Amazon DynamoDB Developer Guide.
6859	//
6860	// ComparisonOperator is a required field
6861	ComparisonOperator *string `type:"string" required:"true" enum:"ComparisonOperator"`
6862}
6863
6864// String returns the string representation
6865func (s Condition) String() string {
6866	return awsutil.Prettify(s)
6867}
6868
6869// GoString returns the string representation
6870func (s Condition) GoString() string {
6871	return s.String()
6872}
6873
6874// Validate inspects the fields of the type to determine if they are valid.
6875func (s *Condition) Validate() error {
6876	invalidParams := request.ErrInvalidParams{Context: "Condition"}
6877	if s.ComparisonOperator == nil {
6878		invalidParams.Add(request.NewErrParamRequired("ComparisonOperator"))
6879	}
6880
6881	if invalidParams.Len() > 0 {
6882		return invalidParams
6883	}
6884	return nil
6885}
6886
6887// SetAttributeValueList sets the AttributeValueList field's value.
6888func (s *Condition) SetAttributeValueList(v []*AttributeValue) *Condition {
6889	s.AttributeValueList = v
6890	return s
6891}
6892
6893// SetComparisonOperator sets the ComparisonOperator field's value.
6894func (s *Condition) SetComparisonOperator(v string) *Condition {
6895	s.ComparisonOperator = &v
6896	return s
6897}
6898
6899// Represents a request to perform a check that an item exists or to check the
6900// condition of specific attributes of the item..
6901type ConditionCheck struct {
6902	_ struct{} `type:"structure"`
6903
6904	// A condition that must be satisfied in order for a conditional update to succeed.
6905	//
6906	// ConditionExpression is a required field
6907	ConditionExpression *string `type:"string" required:"true"`
6908
6909	// One or more substitution tokens for attribute names in an expression.
6910	ExpressionAttributeNames map[string]*string `type:"map"`
6911
6912	// One or more values that can be substituted in an expression.
6913	ExpressionAttributeValues map[string]*AttributeValue `type:"map"`
6914
6915	// The primary key of the item to be checked. Each element consists of an attribute
6916	// name and a value for that attribute.
6917	//
6918	// Key is a required field
6919	Key map[string]*AttributeValue `type:"map" required:"true"`
6920
6921	// Use ReturnValuesOnConditionCheckFailure to get the item attributes if the
6922	// ConditionCheck condition fails. For ReturnValuesOnConditionCheckFailure,
6923	// the valid values are: NONE and ALL_OLD.
6924	ReturnValuesOnConditionCheckFailure *string `type:"string" enum:"ReturnValuesOnConditionCheckFailure"`
6925
6926	// Name of the table for the check item request.
6927	//
6928	// TableName is a required field
6929	TableName *string `min:"3" type:"string" required:"true"`
6930}
6931
6932// String returns the string representation
6933func (s ConditionCheck) String() string {
6934	return awsutil.Prettify(s)
6935}
6936
6937// GoString returns the string representation
6938func (s ConditionCheck) GoString() string {
6939	return s.String()
6940}
6941
6942// Validate inspects the fields of the type to determine if they are valid.
6943func (s *ConditionCheck) Validate() error {
6944	invalidParams := request.ErrInvalidParams{Context: "ConditionCheck"}
6945	if s.ConditionExpression == nil {
6946		invalidParams.Add(request.NewErrParamRequired("ConditionExpression"))
6947	}
6948	if s.Key == nil {
6949		invalidParams.Add(request.NewErrParamRequired("Key"))
6950	}
6951	if s.TableName == nil {
6952		invalidParams.Add(request.NewErrParamRequired("TableName"))
6953	}
6954	if s.TableName != nil && len(*s.TableName) < 3 {
6955		invalidParams.Add(request.NewErrParamMinLen("TableName", 3))
6956	}
6957
6958	if invalidParams.Len() > 0 {
6959		return invalidParams
6960	}
6961	return nil
6962}
6963
6964// SetConditionExpression sets the ConditionExpression field's value.
6965func (s *ConditionCheck) SetConditionExpression(v string) *ConditionCheck {
6966	s.ConditionExpression = &v
6967	return s
6968}
6969
6970// SetExpressionAttributeNames sets the ExpressionAttributeNames field's value.
6971func (s *ConditionCheck) SetExpressionAttributeNames(v map[string]*string) *ConditionCheck {
6972	s.ExpressionAttributeNames = v
6973	return s
6974}
6975
6976// SetExpressionAttributeValues sets the ExpressionAttributeValues field's value.
6977func (s *ConditionCheck) SetExpressionAttributeValues(v map[string]*AttributeValue) *ConditionCheck {
6978	s.ExpressionAttributeValues = v
6979	return s
6980}
6981
6982// SetKey sets the Key field's value.
6983func (s *ConditionCheck) SetKey(v map[string]*AttributeValue) *ConditionCheck {
6984	s.Key = v
6985	return s
6986}
6987
6988// SetReturnValuesOnConditionCheckFailure sets the ReturnValuesOnConditionCheckFailure field's value.
6989func (s *ConditionCheck) SetReturnValuesOnConditionCheckFailure(v string) *ConditionCheck {
6990	s.ReturnValuesOnConditionCheckFailure = &v
6991	return s
6992}
6993
6994// SetTableName sets the TableName field's value.
6995func (s *ConditionCheck) SetTableName(v string) *ConditionCheck {
6996	s.TableName = &v
6997	return s
6998}
6999
7000// The capacity units consumed by an operation. The data returned includes the
7001// total provisioned throughput consumed, along with statistics for the table
7002// and any indexes involved in the operation. ConsumedCapacity is only returned
7003// if the request asked for it. For more information, see Provisioned Throughput
7004// (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ProvisionedThroughputIntro.html)
7005// in the Amazon DynamoDB Developer Guide.
7006type ConsumedCapacity struct {
7007	_ struct{} `type:"structure"`
7008
7009	// The total number of capacity units consumed by the operation.
7010	CapacityUnits *float64 `type:"double"`
7011
7012	// The amount of throughput consumed on each global index affected by the operation.
7013	GlobalSecondaryIndexes map[string]*Capacity `type:"map"`
7014
7015	// The amount of throughput consumed on each local index affected by the operation.
7016	LocalSecondaryIndexes map[string]*Capacity `type:"map"`
7017
7018	// The total number of read capacity units consumed by the operation.
7019	ReadCapacityUnits *float64 `type:"double"`
7020
7021	// The amount of throughput consumed on the table affected by the operation.
7022	Table *Capacity `type:"structure"`
7023
7024	// The name of the table that was affected by the operation.
7025	TableName *string `min:"3" type:"string"`
7026
7027	// The total number of write capacity units consumed by the operation.
7028	WriteCapacityUnits *float64 `type:"double"`
7029}
7030
7031// String returns the string representation
7032func (s ConsumedCapacity) String() string {
7033	return awsutil.Prettify(s)
7034}
7035
7036// GoString returns the string representation
7037func (s ConsumedCapacity) GoString() string {
7038	return s.String()
7039}
7040
7041// SetCapacityUnits sets the CapacityUnits field's value.
7042func (s *ConsumedCapacity) SetCapacityUnits(v float64) *ConsumedCapacity {
7043	s.CapacityUnits = &v
7044	return s
7045}
7046
7047// SetGlobalSecondaryIndexes sets the GlobalSecondaryIndexes field's value.
7048func (s *ConsumedCapacity) SetGlobalSecondaryIndexes(v map[string]*Capacity) *ConsumedCapacity {
7049	s.GlobalSecondaryIndexes = v
7050	return s
7051}
7052
7053// SetLocalSecondaryIndexes sets the LocalSecondaryIndexes field's value.
7054func (s *ConsumedCapacity) SetLocalSecondaryIndexes(v map[string]*Capacity) *ConsumedCapacity {
7055	s.LocalSecondaryIndexes = v
7056	return s
7057}
7058
7059// SetReadCapacityUnits sets the ReadCapacityUnits field's value.
7060func (s *ConsumedCapacity) SetReadCapacityUnits(v float64) *ConsumedCapacity {
7061	s.ReadCapacityUnits = &v
7062	return s
7063}
7064
7065// SetTable sets the Table field's value.
7066func (s *ConsumedCapacity) SetTable(v *Capacity) *ConsumedCapacity {
7067	s.Table = v
7068	return s
7069}
7070
7071// SetTableName sets the TableName field's value.
7072func (s *ConsumedCapacity) SetTableName(v string) *ConsumedCapacity {
7073	s.TableName = &v
7074	return s
7075}
7076
7077// SetWriteCapacityUnits sets the WriteCapacityUnits field's value.
7078func (s *ConsumedCapacity) SetWriteCapacityUnits(v float64) *ConsumedCapacity {
7079	s.WriteCapacityUnits = &v
7080	return s
7081}
7082
7083// Represents the continuous backups and point in time recovery settings on
7084// the table.
7085type ContinuousBackupsDescription struct {
7086	_ struct{} `type:"structure"`
7087
7088	// ContinuousBackupsStatus can be one of the following states: ENABLED, DISABLED
7089	//
7090	// ContinuousBackupsStatus is a required field
7091	ContinuousBackupsStatus *string `type:"string" required:"true" enum:"ContinuousBackupsStatus"`
7092
7093	// The description of the point in time recovery settings applied to the table.
7094	PointInTimeRecoveryDescription *PointInTimeRecoveryDescription `type:"structure"`
7095}
7096
7097// String returns the string representation
7098func (s ContinuousBackupsDescription) String() string {
7099	return awsutil.Prettify(s)
7100}
7101
7102// GoString returns the string representation
7103func (s ContinuousBackupsDescription) GoString() string {
7104	return s.String()
7105}
7106
7107// SetContinuousBackupsStatus sets the ContinuousBackupsStatus field's value.
7108func (s *ContinuousBackupsDescription) SetContinuousBackupsStatus(v string) *ContinuousBackupsDescription {
7109	s.ContinuousBackupsStatus = &v
7110	return s
7111}
7112
7113// SetPointInTimeRecoveryDescription sets the PointInTimeRecoveryDescription field's value.
7114func (s *ContinuousBackupsDescription) SetPointInTimeRecoveryDescription(v *PointInTimeRecoveryDescription) *ContinuousBackupsDescription {
7115	s.PointInTimeRecoveryDescription = v
7116	return s
7117}
7118
7119type CreateBackupInput struct {
7120	_ struct{} `type:"structure"`
7121
7122	// Specified name for the backup.
7123	//
7124	// BackupName is a required field
7125	BackupName *string `min:"3" type:"string" required:"true"`
7126
7127	// The name of the table.
7128	//
7129	// TableName is a required field
7130	TableName *string `min:"3" type:"string" required:"true"`
7131}
7132
7133// String returns the string representation
7134func (s CreateBackupInput) String() string {
7135	return awsutil.Prettify(s)
7136}
7137
7138// GoString returns the string representation
7139func (s CreateBackupInput) GoString() string {
7140	return s.String()
7141}
7142
7143// Validate inspects the fields of the type to determine if they are valid.
7144func (s *CreateBackupInput) Validate() error {
7145	invalidParams := request.ErrInvalidParams{Context: "CreateBackupInput"}
7146	if s.BackupName == nil {
7147		invalidParams.Add(request.NewErrParamRequired("BackupName"))
7148	}
7149	if s.BackupName != nil && len(*s.BackupName) < 3 {
7150		invalidParams.Add(request.NewErrParamMinLen("BackupName", 3))
7151	}
7152	if s.TableName == nil {
7153		invalidParams.Add(request.NewErrParamRequired("TableName"))
7154	}
7155	if s.TableName != nil && len(*s.TableName) < 3 {
7156		invalidParams.Add(request.NewErrParamMinLen("TableName", 3))
7157	}
7158
7159	if invalidParams.Len() > 0 {
7160		return invalidParams
7161	}
7162	return nil
7163}
7164
7165// SetBackupName sets the BackupName field's value.
7166func (s *CreateBackupInput) SetBackupName(v string) *CreateBackupInput {
7167	s.BackupName = &v
7168	return s
7169}
7170
7171// SetTableName sets the TableName field's value.
7172func (s *CreateBackupInput) SetTableName(v string) *CreateBackupInput {
7173	s.TableName = &v
7174	return s
7175}
7176
7177type CreateBackupOutput struct {
7178	_ struct{} `type:"structure"`
7179
7180	// Contains the details of the backup created for the table.
7181	BackupDetails *BackupDetails `type:"structure"`
7182}
7183
7184// String returns the string representation
7185func (s CreateBackupOutput) String() string {
7186	return awsutil.Prettify(s)
7187}
7188
7189// GoString returns the string representation
7190func (s CreateBackupOutput) GoString() string {
7191	return s.String()
7192}
7193
7194// SetBackupDetails sets the BackupDetails field's value.
7195func (s *CreateBackupOutput) SetBackupDetails(v *BackupDetails) *CreateBackupOutput {
7196	s.BackupDetails = v
7197	return s
7198}
7199
7200// Represents a new global secondary index to be added to an existing table.
7201type CreateGlobalSecondaryIndexAction struct {
7202	_ struct{} `type:"structure"`
7203
7204	// The name of the global secondary index to be created.
7205	//
7206	// IndexName is a required field
7207	IndexName *string `min:"3" type:"string" required:"true"`
7208
7209	// The key schema for the global secondary index.
7210	//
7211	// KeySchema is a required field
7212	KeySchema []*KeySchemaElement `min:"1" type:"list" required:"true"`
7213
7214	// Represents attributes that are copied (projected) from the table into an
7215	// index. These are in addition to the primary key attributes and index key
7216	// attributes, which are automatically projected.
7217	//
7218	// Projection is a required field
7219	Projection *Projection `type:"structure" required:"true"`
7220
7221	// Represents the provisioned throughput settings for the specified global secondary
7222	// index.
7223	//
7224	// For current minimum and maximum provisioned throughput values, see Limits
7225	// (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Limits.html)
7226	// in the Amazon DynamoDB Developer Guide.
7227	ProvisionedThroughput *ProvisionedThroughput `type:"structure"`
7228}
7229
7230// String returns the string representation
7231func (s CreateGlobalSecondaryIndexAction) String() string {
7232	return awsutil.Prettify(s)
7233}
7234
7235// GoString returns the string representation
7236func (s CreateGlobalSecondaryIndexAction) GoString() string {
7237	return s.String()
7238}
7239
7240// Validate inspects the fields of the type to determine if they are valid.
7241func (s *CreateGlobalSecondaryIndexAction) Validate() error {
7242	invalidParams := request.ErrInvalidParams{Context: "CreateGlobalSecondaryIndexAction"}
7243	if s.IndexName == nil {
7244		invalidParams.Add(request.NewErrParamRequired("IndexName"))
7245	}
7246	if s.IndexName != nil && len(*s.IndexName) < 3 {
7247		invalidParams.Add(request.NewErrParamMinLen("IndexName", 3))
7248	}
7249	if s.KeySchema == nil {
7250		invalidParams.Add(request.NewErrParamRequired("KeySchema"))
7251	}
7252	if s.KeySchema != nil && len(s.KeySchema) < 1 {
7253		invalidParams.Add(request.NewErrParamMinLen("KeySchema", 1))
7254	}
7255	if s.Projection == nil {
7256		invalidParams.Add(request.NewErrParamRequired("Projection"))
7257	}
7258	if s.KeySchema != nil {
7259		for i, v := range s.KeySchema {
7260			if v == nil {
7261				continue
7262			}
7263			if err := v.Validate(); err != nil {
7264				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "KeySchema", i), err.(request.ErrInvalidParams))
7265			}
7266		}
7267	}
7268	if s.Projection != nil {
7269		if err := s.Projection.Validate(); err != nil {
7270			invalidParams.AddNested("Projection", err.(request.ErrInvalidParams))
7271		}
7272	}
7273	if s.ProvisionedThroughput != nil {
7274		if err := s.ProvisionedThroughput.Validate(); err != nil {
7275			invalidParams.AddNested("ProvisionedThroughput", err.(request.ErrInvalidParams))
7276		}
7277	}
7278
7279	if invalidParams.Len() > 0 {
7280		return invalidParams
7281	}
7282	return nil
7283}
7284
7285// SetIndexName sets the IndexName field's value.
7286func (s *CreateGlobalSecondaryIndexAction) SetIndexName(v string) *CreateGlobalSecondaryIndexAction {
7287	s.IndexName = &v
7288	return s
7289}
7290
7291// SetKeySchema sets the KeySchema field's value.
7292func (s *CreateGlobalSecondaryIndexAction) SetKeySchema(v []*KeySchemaElement) *CreateGlobalSecondaryIndexAction {
7293	s.KeySchema = v
7294	return s
7295}
7296
7297// SetProjection sets the Projection field's value.
7298func (s *CreateGlobalSecondaryIndexAction) SetProjection(v *Projection) *CreateGlobalSecondaryIndexAction {
7299	s.Projection = v
7300	return s
7301}
7302
7303// SetProvisionedThroughput sets the ProvisionedThroughput field's value.
7304func (s *CreateGlobalSecondaryIndexAction) SetProvisionedThroughput(v *ProvisionedThroughput) *CreateGlobalSecondaryIndexAction {
7305	s.ProvisionedThroughput = v
7306	return s
7307}
7308
7309type CreateGlobalTableInput struct {
7310	_ struct{} `type:"structure"`
7311
7312	// The global table name.
7313	//
7314	// GlobalTableName is a required field
7315	GlobalTableName *string `min:"3" type:"string" required:"true"`
7316
7317	// The Regions where the global table needs to be created.
7318	//
7319	// ReplicationGroup is a required field
7320	ReplicationGroup []*Replica `type:"list" required:"true"`
7321}
7322
7323// String returns the string representation
7324func (s CreateGlobalTableInput) String() string {
7325	return awsutil.Prettify(s)
7326}
7327
7328// GoString returns the string representation
7329func (s CreateGlobalTableInput) GoString() string {
7330	return s.String()
7331}
7332
7333// Validate inspects the fields of the type to determine if they are valid.
7334func (s *CreateGlobalTableInput) Validate() error {
7335	invalidParams := request.ErrInvalidParams{Context: "CreateGlobalTableInput"}
7336	if s.GlobalTableName == nil {
7337		invalidParams.Add(request.NewErrParamRequired("GlobalTableName"))
7338	}
7339	if s.GlobalTableName != nil && len(*s.GlobalTableName) < 3 {
7340		invalidParams.Add(request.NewErrParamMinLen("GlobalTableName", 3))
7341	}
7342	if s.ReplicationGroup == nil {
7343		invalidParams.Add(request.NewErrParamRequired("ReplicationGroup"))
7344	}
7345
7346	if invalidParams.Len() > 0 {
7347		return invalidParams
7348	}
7349	return nil
7350}
7351
7352// SetGlobalTableName sets the GlobalTableName field's value.
7353func (s *CreateGlobalTableInput) SetGlobalTableName(v string) *CreateGlobalTableInput {
7354	s.GlobalTableName = &v
7355	return s
7356}
7357
7358// SetReplicationGroup sets the ReplicationGroup field's value.
7359func (s *CreateGlobalTableInput) SetReplicationGroup(v []*Replica) *CreateGlobalTableInput {
7360	s.ReplicationGroup = v
7361	return s
7362}
7363
7364type CreateGlobalTableOutput struct {
7365	_ struct{} `type:"structure"`
7366
7367	// Contains the details of the global table.
7368	GlobalTableDescription *GlobalTableDescription `type:"structure"`
7369}
7370
7371// String returns the string representation
7372func (s CreateGlobalTableOutput) String() string {
7373	return awsutil.Prettify(s)
7374}
7375
7376// GoString returns the string representation
7377func (s CreateGlobalTableOutput) GoString() string {
7378	return s.String()
7379}
7380
7381// SetGlobalTableDescription sets the GlobalTableDescription field's value.
7382func (s *CreateGlobalTableOutput) SetGlobalTableDescription(v *GlobalTableDescription) *CreateGlobalTableOutput {
7383	s.GlobalTableDescription = v
7384	return s
7385}
7386
7387// Represents a replica to be added.
7388type CreateReplicaAction struct {
7389	_ struct{} `type:"structure"`
7390
7391	// The region of the replica to be added.
7392	//
7393	// RegionName is a required field
7394	RegionName *string `type:"string" required:"true"`
7395}
7396
7397// String returns the string representation
7398func (s CreateReplicaAction) String() string {
7399	return awsutil.Prettify(s)
7400}
7401
7402// GoString returns the string representation
7403func (s CreateReplicaAction) GoString() string {
7404	return s.String()
7405}
7406
7407// Validate inspects the fields of the type to determine if they are valid.
7408func (s *CreateReplicaAction) Validate() error {
7409	invalidParams := request.ErrInvalidParams{Context: "CreateReplicaAction"}
7410	if s.RegionName == nil {
7411		invalidParams.Add(request.NewErrParamRequired("RegionName"))
7412	}
7413
7414	if invalidParams.Len() > 0 {
7415		return invalidParams
7416	}
7417	return nil
7418}
7419
7420// SetRegionName sets the RegionName field's value.
7421func (s *CreateReplicaAction) SetRegionName(v string) *CreateReplicaAction {
7422	s.RegionName = &v
7423	return s
7424}
7425
7426// Represents the input of a CreateTable operation.
7427type CreateTableInput struct {
7428	_ struct{} `type:"structure"`
7429
7430	// An array of attributes that describe the key schema for the table and indexes.
7431	//
7432	// AttributeDefinitions is a required field
7433	AttributeDefinitions []*AttributeDefinition `type:"list" required:"true"`
7434
7435	// Controls how you are charged for read and write throughput and how you manage
7436	// capacity. This setting can be changed later.
7437	//
7438	//    * PROVISIONED - Sets the billing mode to PROVISIONED. We recommend using
7439	//    PROVISIONED for predictable workloads.
7440	//
7441	//    * PAY_PER_REQUEST - Sets the billing mode to PAY_PER_REQUEST. We recommend
7442	//    using PAY_PER_REQUEST for unpredictable workloads.
7443	BillingMode *string `type:"string" enum:"BillingMode"`
7444
7445	// One or more global secondary indexes (the maximum is 20) to be created on
7446	// the table. Each global secondary index in the array includes the following:
7447	//
7448	//    * IndexName - The name of the global secondary index. Must be unique only
7449	//    for this table.
7450	//
7451	//    * KeySchema - Specifies the key schema for the global secondary index.
7452	//
7453	//    * Projection - Specifies attributes that are copied (projected) from the
7454	//    table into the index. These are in addition to the primary key attributes
7455	//    and index key attributes, which are automatically projected. Each attribute
7456	//    specification is composed of: ProjectionType - One of the following: KEYS_ONLY
7457	//    - Only the index and primary keys are projected into the index. INCLUDE
7458	//    - Only the specified table attributes are projected into the index. The
7459	//    list of projected attributes is in NonKeyAttributes. ALL - All of the
7460	//    table attributes are projected into the index. NonKeyAttributes - A list
7461	//    of one or more non-key attribute names that are projected into the secondary
7462	//    index. The total count of attributes provided in NonKeyAttributes, summed
7463	//    across all of the secondary indexes, must not exceed 100. If you project
7464	//    the same attribute into two different indexes, this counts as two distinct
7465	//    attributes when determining the total.
7466	//
7467	//    * ProvisionedThroughput - The provisioned throughput settings for the
7468	//    global secondary index, consisting of read and write capacity units.
7469	GlobalSecondaryIndexes []*GlobalSecondaryIndex `type:"list"`
7470
7471	// Specifies the attributes that make up the primary key for a table or an index.
7472	// The attributes in KeySchema must also be defined in the AttributeDefinitions
7473	// array. For more information, see Data Model (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/DataModel.html)
7474	// in the Amazon DynamoDB Developer Guide.
7475	//
7476	// Each KeySchemaElement in the array is composed of:
7477	//
7478	//    * AttributeName - The name of this key attribute.
7479	//
7480	//    * KeyType - The role that the key attribute will assume: HASH - partition
7481	//    key RANGE - sort key
7482	//
7483	// The partition key of an item is also known as its hash attribute. The term
7484	// "hash attribute" derives from the DynamoDB usage of an internal hash function
7485	// to evenly distribute data items across partitions, based on their partition
7486	// key values.
7487	//
7488	// The sort key of an item is also known as its range attribute. The term "range
7489	// attribute" derives from the way DynamoDB stores items with the same partition
7490	// key physically close together, in sorted order by the sort key value.
7491	//
7492	// For a simple primary key (partition key), you must provide exactly one element
7493	// with a KeyType of HASH.
7494	//
7495	// For a composite primary key (partition key and sort key), you must provide
7496	// exactly two elements, in this order: The first element must have a KeyType
7497	// of HASH, and the second element must have a KeyType of RANGE.
7498	//
7499	// For more information, see Working with Tables (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/WorkingWithTables.html#WorkingWithTables.primary.key)
7500	// in the Amazon DynamoDB Developer Guide.
7501	//
7502	// KeySchema is a required field
7503	KeySchema []*KeySchemaElement `min:"1" type:"list" required:"true"`
7504
7505	// One or more local secondary indexes (the maximum is 5) to be created on the
7506	// table. Each index is scoped to a given partition key value. There is a 10
7507	// GB size limit per partition key value; otherwise, the size of a local secondary
7508	// index is unconstrained.
7509	//
7510	// Each local secondary index in the array includes the following:
7511	//
7512	//    * IndexName - The name of the local secondary index. Must be unique only
7513	//    for this table.
7514	//
7515	//    * KeySchema - Specifies the key schema for the local secondary index.
7516	//    The key schema must begin with the same partition key as the table.
7517	//
7518	//    * Projection - Specifies attributes that are copied (projected) from the
7519	//    table into the index. These are in addition to the primary key attributes
7520	//    and index key attributes, which are automatically projected. Each attribute
7521	//    specification is composed of: ProjectionType - One of the following: KEYS_ONLY
7522	//    - Only the index and primary keys are projected into the index. INCLUDE
7523	//    - Only the specified table attributes are projected into the index. The
7524	//    list of projected attributes is in NonKeyAttributes. ALL - All of the
7525	//    table attributes are projected into the index. NonKeyAttributes - A list
7526	//    of one or more non-key attribute names that are projected into the secondary
7527	//    index. The total count of attributes provided in NonKeyAttributes, summed
7528	//    across all of the secondary indexes, must not exceed 100. If you project
7529	//    the same attribute into two different indexes, this counts as two distinct
7530	//    attributes when determining the total.
7531	LocalSecondaryIndexes []*LocalSecondaryIndex `type:"list"`
7532
7533	// Represents the provisioned throughput settings for a specified table or index.
7534	// The settings can be modified using the UpdateTable operation.
7535	//
7536	// If you set BillingMode as PROVISIONED, you must specify this property. If
7537	// you set BillingMode as PAY_PER_REQUEST, you cannot specify this property.
7538	//
7539	// For current minimum and maximum provisioned throughput values, see Limits
7540	// (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Limits.html)
7541	// in the Amazon DynamoDB Developer Guide.
7542	ProvisionedThroughput *ProvisionedThroughput `type:"structure"`
7543
7544	// Represents the settings used to enable server-side encryption.
7545	SSESpecification *SSESpecification `type:"structure"`
7546
7547	// The settings for DynamoDB Streams on the table. These settings consist of:
7548	//
7549	//    * StreamEnabled - Indicates whether DynamoDB Streams is to be enabled
7550	//    (true) or disabled (false).
7551	//
7552	//    * StreamViewType - When an item in the table is modified, StreamViewType
7553	//    determines what information is written to the table's stream. Valid values
7554	//    for StreamViewType are: KEYS_ONLY - Only the key attributes of the modified
7555	//    item are written to the stream. NEW_IMAGE - The entire item, as it appears
7556	//    after it was modified, is written to the stream. OLD_IMAGE - The entire
7557	//    item, as it appeared before it was modified, is written to the stream.
7558	//    NEW_AND_OLD_IMAGES - Both the new and the old item images of the item
7559	//    are written to the stream.
7560	StreamSpecification *StreamSpecification `type:"structure"`
7561
7562	// The name of the table to create.
7563	//
7564	// TableName is a required field
7565	TableName *string `min:"3" type:"string" required:"true"`
7566
7567	// A list of key-value pairs to label the table. For more information, see Tagging
7568	// for DynamoDB (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Tagging.html).
7569	Tags []*Tag `type:"list"`
7570}
7571
7572// String returns the string representation
7573func (s CreateTableInput) String() string {
7574	return awsutil.Prettify(s)
7575}
7576
7577// GoString returns the string representation
7578func (s CreateTableInput) GoString() string {
7579	return s.String()
7580}
7581
7582// Validate inspects the fields of the type to determine if they are valid.
7583func (s *CreateTableInput) Validate() error {
7584	invalidParams := request.ErrInvalidParams{Context: "CreateTableInput"}
7585	if s.AttributeDefinitions == nil {
7586		invalidParams.Add(request.NewErrParamRequired("AttributeDefinitions"))
7587	}
7588	if s.KeySchema == nil {
7589		invalidParams.Add(request.NewErrParamRequired("KeySchema"))
7590	}
7591	if s.KeySchema != nil && len(s.KeySchema) < 1 {
7592		invalidParams.Add(request.NewErrParamMinLen("KeySchema", 1))
7593	}
7594	if s.TableName == nil {
7595		invalidParams.Add(request.NewErrParamRequired("TableName"))
7596	}
7597	if s.TableName != nil && len(*s.TableName) < 3 {
7598		invalidParams.Add(request.NewErrParamMinLen("TableName", 3))
7599	}
7600	if s.AttributeDefinitions != nil {
7601		for i, v := range s.AttributeDefinitions {
7602			if v == nil {
7603				continue
7604			}
7605			if err := v.Validate(); err != nil {
7606				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "AttributeDefinitions", i), err.(request.ErrInvalidParams))
7607			}
7608		}
7609	}
7610	if s.GlobalSecondaryIndexes != nil {
7611		for i, v := range s.GlobalSecondaryIndexes {
7612			if v == nil {
7613				continue
7614			}
7615			if err := v.Validate(); err != nil {
7616				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "GlobalSecondaryIndexes", i), err.(request.ErrInvalidParams))
7617			}
7618		}
7619	}
7620	if s.KeySchema != nil {
7621		for i, v := range s.KeySchema {
7622			if v == nil {
7623				continue
7624			}
7625			if err := v.Validate(); err != nil {
7626				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "KeySchema", i), err.(request.ErrInvalidParams))
7627			}
7628		}
7629	}
7630	if s.LocalSecondaryIndexes != nil {
7631		for i, v := range s.LocalSecondaryIndexes {
7632			if v == nil {
7633				continue
7634			}
7635			if err := v.Validate(); err != nil {
7636				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "LocalSecondaryIndexes", i), err.(request.ErrInvalidParams))
7637			}
7638		}
7639	}
7640	if s.ProvisionedThroughput != nil {
7641		if err := s.ProvisionedThroughput.Validate(); err != nil {
7642			invalidParams.AddNested("ProvisionedThroughput", err.(request.ErrInvalidParams))
7643		}
7644	}
7645	if s.Tags != nil {
7646		for i, v := range s.Tags {
7647			if v == nil {
7648				continue
7649			}
7650			if err := v.Validate(); err != nil {
7651				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Tags", i), err.(request.ErrInvalidParams))
7652			}
7653		}
7654	}
7655
7656	if invalidParams.Len() > 0 {
7657		return invalidParams
7658	}
7659	return nil
7660}
7661
7662// SetAttributeDefinitions sets the AttributeDefinitions field's value.
7663func (s *CreateTableInput) SetAttributeDefinitions(v []*AttributeDefinition) *CreateTableInput {
7664	s.AttributeDefinitions = v
7665	return s
7666}
7667
7668// SetBillingMode sets the BillingMode field's value.
7669func (s *CreateTableInput) SetBillingMode(v string) *CreateTableInput {
7670	s.BillingMode = &v
7671	return s
7672}
7673
7674// SetGlobalSecondaryIndexes sets the GlobalSecondaryIndexes field's value.
7675func (s *CreateTableInput) SetGlobalSecondaryIndexes(v []*GlobalSecondaryIndex) *CreateTableInput {
7676	s.GlobalSecondaryIndexes = v
7677	return s
7678}
7679
7680// SetKeySchema sets the KeySchema field's value.
7681func (s *CreateTableInput) SetKeySchema(v []*KeySchemaElement) *CreateTableInput {
7682	s.KeySchema = v
7683	return s
7684}
7685
7686// SetLocalSecondaryIndexes sets the LocalSecondaryIndexes field's value.
7687func (s *CreateTableInput) SetLocalSecondaryIndexes(v []*LocalSecondaryIndex) *CreateTableInput {
7688	s.LocalSecondaryIndexes = v
7689	return s
7690}
7691
7692// SetProvisionedThroughput sets the ProvisionedThroughput field's value.
7693func (s *CreateTableInput) SetProvisionedThroughput(v *ProvisionedThroughput) *CreateTableInput {
7694	s.ProvisionedThroughput = v
7695	return s
7696}
7697
7698// SetSSESpecification sets the SSESpecification field's value.
7699func (s *CreateTableInput) SetSSESpecification(v *SSESpecification) *CreateTableInput {
7700	s.SSESpecification = v
7701	return s
7702}
7703
7704// SetStreamSpecification sets the StreamSpecification field's value.
7705func (s *CreateTableInput) SetStreamSpecification(v *StreamSpecification) *CreateTableInput {
7706	s.StreamSpecification = v
7707	return s
7708}
7709
7710// SetTableName sets the TableName field's value.
7711func (s *CreateTableInput) SetTableName(v string) *CreateTableInput {
7712	s.TableName = &v
7713	return s
7714}
7715
7716// SetTags sets the Tags field's value.
7717func (s *CreateTableInput) SetTags(v []*Tag) *CreateTableInput {
7718	s.Tags = v
7719	return s
7720}
7721
7722// Represents the output of a CreateTable operation.
7723type CreateTableOutput struct {
7724	_ struct{} `type:"structure"`
7725
7726	// Represents the properties of the table.
7727	TableDescription *TableDescription `type:"structure"`
7728}
7729
7730// String returns the string representation
7731func (s CreateTableOutput) String() string {
7732	return awsutil.Prettify(s)
7733}
7734
7735// GoString returns the string representation
7736func (s CreateTableOutput) GoString() string {
7737	return s.String()
7738}
7739
7740// SetTableDescription sets the TableDescription field's value.
7741func (s *CreateTableOutput) SetTableDescription(v *TableDescription) *CreateTableOutput {
7742	s.TableDescription = v
7743	return s
7744}
7745
7746// Represents a request to perform a DeleteItem operation.
7747type Delete struct {
7748	_ struct{} `type:"structure"`
7749
7750	// A condition that must be satisfied in order for a conditional delete to succeed.
7751	ConditionExpression *string `type:"string"`
7752
7753	// One or more substitution tokens for attribute names in an expression.
7754	ExpressionAttributeNames map[string]*string `type:"map"`
7755
7756	// One or more values that can be substituted in an expression.
7757	ExpressionAttributeValues map[string]*AttributeValue `type:"map"`
7758
7759	// The primary key of the item to be deleted. Each element consists of an attribute
7760	// name and a value for that attribute.
7761	//
7762	// Key is a required field
7763	Key map[string]*AttributeValue `type:"map" required:"true"`
7764
7765	// Use ReturnValuesOnConditionCheckFailure to get the item attributes if the
7766	// Delete condition fails. For ReturnValuesOnConditionCheckFailure, the valid
7767	// values are: NONE and ALL_OLD.
7768	ReturnValuesOnConditionCheckFailure *string `type:"string" enum:"ReturnValuesOnConditionCheckFailure"`
7769
7770	// Name of the table in which the item to be deleted resides.
7771	//
7772	// TableName is a required field
7773	TableName *string `min:"3" type:"string" required:"true"`
7774}
7775
7776// String returns the string representation
7777func (s Delete) String() string {
7778	return awsutil.Prettify(s)
7779}
7780
7781// GoString returns the string representation
7782func (s Delete) GoString() string {
7783	return s.String()
7784}
7785
7786// Validate inspects the fields of the type to determine if they are valid.
7787func (s *Delete) Validate() error {
7788	invalidParams := request.ErrInvalidParams{Context: "Delete"}
7789	if s.Key == nil {
7790		invalidParams.Add(request.NewErrParamRequired("Key"))
7791	}
7792	if s.TableName == nil {
7793		invalidParams.Add(request.NewErrParamRequired("TableName"))
7794	}
7795	if s.TableName != nil && len(*s.TableName) < 3 {
7796		invalidParams.Add(request.NewErrParamMinLen("TableName", 3))
7797	}
7798
7799	if invalidParams.Len() > 0 {
7800		return invalidParams
7801	}
7802	return nil
7803}
7804
7805// SetConditionExpression sets the ConditionExpression field's value.
7806func (s *Delete) SetConditionExpression(v string) *Delete {
7807	s.ConditionExpression = &v
7808	return s
7809}
7810
7811// SetExpressionAttributeNames sets the ExpressionAttributeNames field's value.
7812func (s *Delete) SetExpressionAttributeNames(v map[string]*string) *Delete {
7813	s.ExpressionAttributeNames = v
7814	return s
7815}
7816
7817// SetExpressionAttributeValues sets the ExpressionAttributeValues field's value.
7818func (s *Delete) SetExpressionAttributeValues(v map[string]*AttributeValue) *Delete {
7819	s.ExpressionAttributeValues = v
7820	return s
7821}
7822
7823// SetKey sets the Key field's value.
7824func (s *Delete) SetKey(v map[string]*AttributeValue) *Delete {
7825	s.Key = v
7826	return s
7827}
7828
7829// SetReturnValuesOnConditionCheckFailure sets the ReturnValuesOnConditionCheckFailure field's value.
7830func (s *Delete) SetReturnValuesOnConditionCheckFailure(v string) *Delete {
7831	s.ReturnValuesOnConditionCheckFailure = &v
7832	return s
7833}
7834
7835// SetTableName sets the TableName field's value.
7836func (s *Delete) SetTableName(v string) *Delete {
7837	s.TableName = &v
7838	return s
7839}
7840
7841type DeleteBackupInput struct {
7842	_ struct{} `type:"structure"`
7843
7844	// The ARN associated with the backup.
7845	//
7846	// BackupArn is a required field
7847	BackupArn *string `min:"37" type:"string" required:"true"`
7848}
7849
7850// String returns the string representation
7851func (s DeleteBackupInput) String() string {
7852	return awsutil.Prettify(s)
7853}
7854
7855// GoString returns the string representation
7856func (s DeleteBackupInput) GoString() string {
7857	return s.String()
7858}
7859
7860// Validate inspects the fields of the type to determine if they are valid.
7861func (s *DeleteBackupInput) Validate() error {
7862	invalidParams := request.ErrInvalidParams{Context: "DeleteBackupInput"}
7863	if s.BackupArn == nil {
7864		invalidParams.Add(request.NewErrParamRequired("BackupArn"))
7865	}
7866	if s.BackupArn != nil && len(*s.BackupArn) < 37 {
7867		invalidParams.Add(request.NewErrParamMinLen("BackupArn", 37))
7868	}
7869
7870	if invalidParams.Len() > 0 {
7871		return invalidParams
7872	}
7873	return nil
7874}
7875
7876// SetBackupArn sets the BackupArn field's value.
7877func (s *DeleteBackupInput) SetBackupArn(v string) *DeleteBackupInput {
7878	s.BackupArn = &v
7879	return s
7880}
7881
7882type DeleteBackupOutput struct {
7883	_ struct{} `type:"structure"`
7884
7885	// Contains the description of the backup created for the table.
7886	BackupDescription *BackupDescription `type:"structure"`
7887}
7888
7889// String returns the string representation
7890func (s DeleteBackupOutput) String() string {
7891	return awsutil.Prettify(s)
7892}
7893
7894// GoString returns the string representation
7895func (s DeleteBackupOutput) GoString() string {
7896	return s.String()
7897}
7898
7899// SetBackupDescription sets the BackupDescription field's value.
7900func (s *DeleteBackupOutput) SetBackupDescription(v *BackupDescription) *DeleteBackupOutput {
7901	s.BackupDescription = v
7902	return s
7903}
7904
7905// Represents a global secondary index to be deleted from an existing table.
7906type DeleteGlobalSecondaryIndexAction struct {
7907	_ struct{} `type:"structure"`
7908
7909	// The name of the global secondary index to be deleted.
7910	//
7911	// IndexName is a required field
7912	IndexName *string `min:"3" type:"string" required:"true"`
7913}
7914
7915// String returns the string representation
7916func (s DeleteGlobalSecondaryIndexAction) String() string {
7917	return awsutil.Prettify(s)
7918}
7919
7920// GoString returns the string representation
7921func (s DeleteGlobalSecondaryIndexAction) GoString() string {
7922	return s.String()
7923}
7924
7925// Validate inspects the fields of the type to determine if they are valid.
7926func (s *DeleteGlobalSecondaryIndexAction) Validate() error {
7927	invalidParams := request.ErrInvalidParams{Context: "DeleteGlobalSecondaryIndexAction"}
7928	if s.IndexName == nil {
7929		invalidParams.Add(request.NewErrParamRequired("IndexName"))
7930	}
7931	if s.IndexName != nil && len(*s.IndexName) < 3 {
7932		invalidParams.Add(request.NewErrParamMinLen("IndexName", 3))
7933	}
7934
7935	if invalidParams.Len() > 0 {
7936		return invalidParams
7937	}
7938	return nil
7939}
7940
7941// SetIndexName sets the IndexName field's value.
7942func (s *DeleteGlobalSecondaryIndexAction) SetIndexName(v string) *DeleteGlobalSecondaryIndexAction {
7943	s.IndexName = &v
7944	return s
7945}
7946
7947// Represents the input of a DeleteItem operation.
7948type DeleteItemInput struct {
7949	_ struct{} `type:"structure"`
7950
7951	// A condition that must be satisfied in order for a conditional DeleteItem
7952	// to succeed.
7953	//
7954	// An expression can contain any of the following:
7955	//
7956	//    * Functions: attribute_exists | attribute_not_exists | attribute_type
7957	//    | contains | begins_with | size These function names are case-sensitive.
7958	//
7959	//    * Comparison operators: = | <> | < | > | <= | >= | BETWEEN | IN
7960	//
7961	//    * Logical operators: AND | OR | NOT
7962	//
7963	// For more information about condition expressions, see Condition Expressions
7964	// (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.SpecifyingConditions.html)
7965	// in the Amazon DynamoDB Developer Guide.
7966	ConditionExpression *string `type:"string"`
7967
7968	// This is a legacy parameter. Use ConditionExpression instead. For more information,
7969	// see ConditionalOperator (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/LegacyConditionalParameters.ConditionalOperator.html)
7970	// in the Amazon DynamoDB Developer Guide.
7971	ConditionalOperator *string `type:"string" enum:"ConditionalOperator"`
7972
7973	// This is a legacy parameter. Use ConditionExpression instead. For more information,
7974	// see Expected (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/LegacyConditionalParameters.Expected.html)
7975	// in the Amazon DynamoDB Developer Guide.
7976	Expected map[string]*ExpectedAttributeValue `type:"map"`
7977
7978	// One or more substitution tokens for attribute names in an expression. The
7979	// following are some use cases for using ExpressionAttributeNames:
7980	//
7981	//    * To access an attribute whose name conflicts with a DynamoDB reserved
7982	//    word.
7983	//
7984	//    * To create a placeholder for repeating occurrences of an attribute name
7985	//    in an expression.
7986	//
7987	//    * To prevent special characters in an attribute name from being misinterpreted
7988	//    in an expression.
7989	//
7990	// Use the # character in an expression to dereference an attribute name. For
7991	// example, consider the following attribute name:
7992	//
7993	//    * Percentile
7994	//
7995	// The name of this attribute conflicts with a reserved word, so it cannot be
7996	// used directly in an expression. (For the complete list of reserved words,
7997	// see Reserved Words (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ReservedWords.html)
7998	// in the Amazon DynamoDB Developer Guide). To work around this, you could specify
7999	// the following for ExpressionAttributeNames:
8000	//
8001	//    * {"#P":"Percentile"}
8002	//
8003	// You could then use this substitution in an expression, as in this example:
8004	//
8005	//    * #P = :val
8006	//
8007	// Tokens that begin with the : character are expression attribute values, which
8008	// are placeholders for the actual value at runtime.
8009	//
8010	// For more information on expression attribute names, see Specifying Item Attributes
8011	// (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.AccessingItemAttributes.html)
8012	// in the Amazon DynamoDB Developer Guide.
8013	ExpressionAttributeNames map[string]*string `type:"map"`
8014
8015	// One or more values that can be substituted in an expression.
8016	//
8017	// Use the : (colon) character in an expression to dereference an attribute
8018	// value. For example, suppose that you wanted to check whether the value of
8019	// the ProductStatus attribute was one of the following:
8020	//
8021	// Available | Backordered | Discontinued
8022	//
8023	// You would first need to specify ExpressionAttributeValues as follows:
8024	//
8025	// { ":avail":{"S":"Available"}, ":back":{"S":"Backordered"}, ":disc":{"S":"Discontinued"}
8026	// }
8027	//
8028	// You could then use these values in an expression, such as this:
8029	//
8030	// ProductStatus IN (:avail, :back, :disc)
8031	//
8032	// For more information on expression attribute values, see Condition Expressions
8033	// (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.SpecifyingConditions.html)
8034	// in the Amazon DynamoDB Developer Guide.
8035	ExpressionAttributeValues map[string]*AttributeValue `type:"map"`
8036
8037	// A map of attribute names to AttributeValue objects, representing the primary
8038	// key of the item to delete.
8039	//
8040	// For the primary key, you must provide all of the attributes. For example,
8041	// with a simple primary key, you only need to provide a value for the partition
8042	// key. For a composite primary key, you must provide values for both the partition
8043	// key and the sort key.
8044	//
8045	// Key is a required field
8046	Key map[string]*AttributeValue `type:"map" required:"true"`
8047
8048	// Determines the level of detail about provisioned throughput consumption that
8049	// is returned in the response:
8050	//
8051	//    * INDEXES - The response includes the aggregate ConsumedCapacity for the
8052	//    operation, together with ConsumedCapacity for each table and secondary
8053	//    index that was accessed. Note that some operations, such as GetItem and
8054	//    BatchGetItem, do not access any indexes at all. In these cases, specifying
8055	//    INDEXES will only return ConsumedCapacity information for table(s).
8056	//
8057	//    * TOTAL - The response includes only the aggregate ConsumedCapacity for
8058	//    the operation.
8059	//
8060	//    * NONE - No ConsumedCapacity details are included in the response.
8061	ReturnConsumedCapacity *string `type:"string" enum:"ReturnConsumedCapacity"`
8062
8063	// Determines whether item collection metrics are returned. If set to SIZE,
8064	// the response includes statistics about item collections, if any, that were
8065	// modified during the operation are returned in the response. If set to NONE
8066	// (the default), no statistics are returned.
8067	ReturnItemCollectionMetrics *string `type:"string" enum:"ReturnItemCollectionMetrics"`
8068
8069	// Use ReturnValues if you want to get the item attributes as they appeared
8070	// before they were deleted. For DeleteItem, the valid values are:
8071	//
8072	//    * NONE - If ReturnValues is not specified, or if its value is NONE, then
8073	//    nothing is returned. (This setting is the default for ReturnValues.)
8074	//
8075	//    * ALL_OLD - The content of the old item is returned.
8076	//
8077	// The ReturnValues parameter is used by several DynamoDB operations; however,
8078	// DeleteItem does not recognize any values other than NONE or ALL_OLD.
8079	ReturnValues *string `type:"string" enum:"ReturnValue"`
8080
8081	// The name of the table from which to delete the item.
8082	//
8083	// TableName is a required field
8084	TableName *string `min:"3" type:"string" required:"true"`
8085}
8086
8087// String returns the string representation
8088func (s DeleteItemInput) String() string {
8089	return awsutil.Prettify(s)
8090}
8091
8092// GoString returns the string representation
8093func (s DeleteItemInput) GoString() string {
8094	return s.String()
8095}
8096
8097// Validate inspects the fields of the type to determine if they are valid.
8098func (s *DeleteItemInput) Validate() error {
8099	invalidParams := request.ErrInvalidParams{Context: "DeleteItemInput"}
8100	if s.Key == nil {
8101		invalidParams.Add(request.NewErrParamRequired("Key"))
8102	}
8103	if s.TableName == nil {
8104		invalidParams.Add(request.NewErrParamRequired("TableName"))
8105	}
8106	if s.TableName != nil && len(*s.TableName) < 3 {
8107		invalidParams.Add(request.NewErrParamMinLen("TableName", 3))
8108	}
8109
8110	if invalidParams.Len() > 0 {
8111		return invalidParams
8112	}
8113	return nil
8114}
8115
8116// SetConditionExpression sets the ConditionExpression field's value.
8117func (s *DeleteItemInput) SetConditionExpression(v string) *DeleteItemInput {
8118	s.ConditionExpression = &v
8119	return s
8120}
8121
8122// SetConditionalOperator sets the ConditionalOperator field's value.
8123func (s *DeleteItemInput) SetConditionalOperator(v string) *DeleteItemInput {
8124	s.ConditionalOperator = &v
8125	return s
8126}
8127
8128// SetExpected sets the Expected field's value.
8129func (s *DeleteItemInput) SetExpected(v map[string]*ExpectedAttributeValue) *DeleteItemInput {
8130	s.Expected = v
8131	return s
8132}
8133
8134// SetExpressionAttributeNames sets the ExpressionAttributeNames field's value.
8135func (s *DeleteItemInput) SetExpressionAttributeNames(v map[string]*string) *DeleteItemInput {
8136	s.ExpressionAttributeNames = v
8137	return s
8138}
8139
8140// SetExpressionAttributeValues sets the ExpressionAttributeValues field's value.
8141func (s *DeleteItemInput) SetExpressionAttributeValues(v map[string]*AttributeValue) *DeleteItemInput {
8142	s.ExpressionAttributeValues = v
8143	return s
8144}
8145
8146// SetKey sets the Key field's value.
8147func (s *DeleteItemInput) SetKey(v map[string]*AttributeValue) *DeleteItemInput {
8148	s.Key = v
8149	return s
8150}
8151
8152// SetReturnConsumedCapacity sets the ReturnConsumedCapacity field's value.
8153func (s *DeleteItemInput) SetReturnConsumedCapacity(v string) *DeleteItemInput {
8154	s.ReturnConsumedCapacity = &v
8155	return s
8156}
8157
8158// SetReturnItemCollectionMetrics sets the ReturnItemCollectionMetrics field's value.
8159func (s *DeleteItemInput) SetReturnItemCollectionMetrics(v string) *DeleteItemInput {
8160	s.ReturnItemCollectionMetrics = &v
8161	return s
8162}
8163
8164// SetReturnValues sets the ReturnValues field's value.
8165func (s *DeleteItemInput) SetReturnValues(v string) *DeleteItemInput {
8166	s.ReturnValues = &v
8167	return s
8168}
8169
8170// SetTableName sets the TableName field's value.
8171func (s *DeleteItemInput) SetTableName(v string) *DeleteItemInput {
8172	s.TableName = &v
8173	return s
8174}
8175
8176// Represents the output of a DeleteItem operation.
8177type DeleteItemOutput struct {
8178	_ struct{} `type:"structure"`
8179
8180	// A map of attribute names to AttributeValue objects, representing the item
8181	// as it appeared before the DeleteItem operation. This map appears in the response
8182	// only if ReturnValues was specified as ALL_OLD in the request.
8183	Attributes map[string]*AttributeValue `type:"map"`
8184
8185	// The capacity units consumed by the DeleteItem operation. The data returned
8186	// includes the total provisioned throughput consumed, along with statistics
8187	// for the table and any indexes involved in the operation. ConsumedCapacity
8188	// is only returned if the ReturnConsumedCapacity parameter was specified. For
8189	// more information, see Provisioned Mode (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ProvisionedThroughputIntro.html)
8190	// in the Amazon DynamoDB Developer Guide.
8191	ConsumedCapacity *ConsumedCapacity `type:"structure"`
8192
8193	// Information about item collections, if any, that were affected by the DeleteItem
8194	// operation. ItemCollectionMetrics is only returned if the ReturnItemCollectionMetrics
8195	// parameter was specified. If the table does not have any local secondary indexes,
8196	// this information is not returned in the response.
8197	//
8198	// Each ItemCollectionMetrics element consists of:
8199	//
8200	//    * ItemCollectionKey - The partition key value of the item collection.
8201	//    This is the same as the partition key value of the item itself.
8202	//
8203	//    * SizeEstimateRangeGB - An estimate of item collection size, in gigabytes.
8204	//    This value is a two-element array containing a lower bound and an upper
8205	//    bound for the estimate. The estimate includes the size of all the items
8206	//    in the table, plus the size of all attributes projected into all of the
8207	//    local secondary indexes on that table. Use this estimate to measure whether
8208	//    a local secondary index is approaching its size limit. The estimate is
8209	//    subject to change over time; therefore, do not rely on the precision or
8210	//    accuracy of the estimate.
8211	ItemCollectionMetrics *ItemCollectionMetrics `type:"structure"`
8212}
8213
8214// String returns the string representation
8215func (s DeleteItemOutput) String() string {
8216	return awsutil.Prettify(s)
8217}
8218
8219// GoString returns the string representation
8220func (s DeleteItemOutput) GoString() string {
8221	return s.String()
8222}
8223
8224// SetAttributes sets the Attributes field's value.
8225func (s *DeleteItemOutput) SetAttributes(v map[string]*AttributeValue) *DeleteItemOutput {
8226	s.Attributes = v
8227	return s
8228}
8229
8230// SetConsumedCapacity sets the ConsumedCapacity field's value.
8231func (s *DeleteItemOutput) SetConsumedCapacity(v *ConsumedCapacity) *DeleteItemOutput {
8232	s.ConsumedCapacity = v
8233	return s
8234}
8235
8236// SetItemCollectionMetrics sets the ItemCollectionMetrics field's value.
8237func (s *DeleteItemOutput) SetItemCollectionMetrics(v *ItemCollectionMetrics) *DeleteItemOutput {
8238	s.ItemCollectionMetrics = v
8239	return s
8240}
8241
8242// Represents a replica to be removed.
8243type DeleteReplicaAction struct {
8244	_ struct{} `type:"structure"`
8245
8246	// The region of the replica to be removed.
8247	//
8248	// RegionName is a required field
8249	RegionName *string `type:"string" required:"true"`
8250}
8251
8252// String returns the string representation
8253func (s DeleteReplicaAction) String() string {
8254	return awsutil.Prettify(s)
8255}
8256
8257// GoString returns the string representation
8258func (s DeleteReplicaAction) GoString() string {
8259	return s.String()
8260}
8261
8262// Validate inspects the fields of the type to determine if they are valid.
8263func (s *DeleteReplicaAction) Validate() error {
8264	invalidParams := request.ErrInvalidParams{Context: "DeleteReplicaAction"}
8265	if s.RegionName == nil {
8266		invalidParams.Add(request.NewErrParamRequired("RegionName"))
8267	}
8268
8269	if invalidParams.Len() > 0 {
8270		return invalidParams
8271	}
8272	return nil
8273}
8274
8275// SetRegionName sets the RegionName field's value.
8276func (s *DeleteReplicaAction) SetRegionName(v string) *DeleteReplicaAction {
8277	s.RegionName = &v
8278	return s
8279}
8280
8281// Represents a request to perform a DeleteItem operation on an item.
8282type DeleteRequest struct {
8283	_ struct{} `type:"structure"`
8284
8285	// A map of attribute name to attribute values, representing the primary key
8286	// of the item to delete. All of the table's primary key attributes must be
8287	// specified, and their data types must match those of the table's key schema.
8288	//
8289	// Key is a required field
8290	Key map[string]*AttributeValue `type:"map" required:"true"`
8291}
8292
8293// String returns the string representation
8294func (s DeleteRequest) String() string {
8295	return awsutil.Prettify(s)
8296}
8297
8298// GoString returns the string representation
8299func (s DeleteRequest) GoString() string {
8300	return s.String()
8301}
8302
8303// SetKey sets the Key field's value.
8304func (s *DeleteRequest) SetKey(v map[string]*AttributeValue) *DeleteRequest {
8305	s.Key = v
8306	return s
8307}
8308
8309// Represents the input of a DeleteTable operation.
8310type DeleteTableInput struct {
8311	_ struct{} `type:"structure"`
8312
8313	// The name of the table to delete.
8314	//
8315	// TableName is a required field
8316	TableName *string `min:"3" type:"string" required:"true"`
8317}
8318
8319// String returns the string representation
8320func (s DeleteTableInput) String() string {
8321	return awsutil.Prettify(s)
8322}
8323
8324// GoString returns the string representation
8325func (s DeleteTableInput) GoString() string {
8326	return s.String()
8327}
8328
8329// Validate inspects the fields of the type to determine if they are valid.
8330func (s *DeleteTableInput) Validate() error {
8331	invalidParams := request.ErrInvalidParams{Context: "DeleteTableInput"}
8332	if s.TableName == nil {
8333		invalidParams.Add(request.NewErrParamRequired("TableName"))
8334	}
8335	if s.TableName != nil && len(*s.TableName) < 3 {
8336		invalidParams.Add(request.NewErrParamMinLen("TableName", 3))
8337	}
8338
8339	if invalidParams.Len() > 0 {
8340		return invalidParams
8341	}
8342	return nil
8343}
8344
8345// SetTableName sets the TableName field's value.
8346func (s *DeleteTableInput) SetTableName(v string) *DeleteTableInput {
8347	s.TableName = &v
8348	return s
8349}
8350
8351// Represents the output of a DeleteTable operation.
8352type DeleteTableOutput struct {
8353	_ struct{} `type:"structure"`
8354
8355	// Represents the properties of a table.
8356	TableDescription *TableDescription `type:"structure"`
8357}
8358
8359// String returns the string representation
8360func (s DeleteTableOutput) String() string {
8361	return awsutil.Prettify(s)
8362}
8363
8364// GoString returns the string representation
8365func (s DeleteTableOutput) GoString() string {
8366	return s.String()
8367}
8368
8369// SetTableDescription sets the TableDescription field's value.
8370func (s *DeleteTableOutput) SetTableDescription(v *TableDescription) *DeleteTableOutput {
8371	s.TableDescription = v
8372	return s
8373}
8374
8375type DescribeBackupInput struct {
8376	_ struct{} `type:"structure"`
8377
8378	// The Amazon Resource Name (ARN) associated with the backup.
8379	//
8380	// BackupArn is a required field
8381	BackupArn *string `min:"37" type:"string" required:"true"`
8382}
8383
8384// String returns the string representation
8385func (s DescribeBackupInput) String() string {
8386	return awsutil.Prettify(s)
8387}
8388
8389// GoString returns the string representation
8390func (s DescribeBackupInput) GoString() string {
8391	return s.String()
8392}
8393
8394// Validate inspects the fields of the type to determine if they are valid.
8395func (s *DescribeBackupInput) Validate() error {
8396	invalidParams := request.ErrInvalidParams{Context: "DescribeBackupInput"}
8397	if s.BackupArn == nil {
8398		invalidParams.Add(request.NewErrParamRequired("BackupArn"))
8399	}
8400	if s.BackupArn != nil && len(*s.BackupArn) < 37 {
8401		invalidParams.Add(request.NewErrParamMinLen("BackupArn", 37))
8402	}
8403
8404	if invalidParams.Len() > 0 {
8405		return invalidParams
8406	}
8407	return nil
8408}
8409
8410// SetBackupArn sets the BackupArn field's value.
8411func (s *DescribeBackupInput) SetBackupArn(v string) *DescribeBackupInput {
8412	s.BackupArn = &v
8413	return s
8414}
8415
8416type DescribeBackupOutput struct {
8417	_ struct{} `type:"structure"`
8418
8419	// Contains the description of the backup created for the table.
8420	BackupDescription *BackupDescription `type:"structure"`
8421}
8422
8423// String returns the string representation
8424func (s DescribeBackupOutput) String() string {
8425	return awsutil.Prettify(s)
8426}
8427
8428// GoString returns the string representation
8429func (s DescribeBackupOutput) GoString() string {
8430	return s.String()
8431}
8432
8433// SetBackupDescription sets the BackupDescription field's value.
8434func (s *DescribeBackupOutput) SetBackupDescription(v *BackupDescription) *DescribeBackupOutput {
8435	s.BackupDescription = v
8436	return s
8437}
8438
8439type DescribeContinuousBackupsInput struct {
8440	_ struct{} `type:"structure"`
8441
8442	// Name of the table for which the customer wants to check the continuous backups
8443	// and point in time recovery settings.
8444	//
8445	// TableName is a required field
8446	TableName *string `min:"3" type:"string" required:"true"`
8447}
8448
8449// String returns the string representation
8450func (s DescribeContinuousBackupsInput) String() string {
8451	return awsutil.Prettify(s)
8452}
8453
8454// GoString returns the string representation
8455func (s DescribeContinuousBackupsInput) GoString() string {
8456	return s.String()
8457}
8458
8459// Validate inspects the fields of the type to determine if they are valid.
8460func (s *DescribeContinuousBackupsInput) Validate() error {
8461	invalidParams := request.ErrInvalidParams{Context: "DescribeContinuousBackupsInput"}
8462	if s.TableName == nil {
8463		invalidParams.Add(request.NewErrParamRequired("TableName"))
8464	}
8465	if s.TableName != nil && len(*s.TableName) < 3 {
8466		invalidParams.Add(request.NewErrParamMinLen("TableName", 3))
8467	}
8468
8469	if invalidParams.Len() > 0 {
8470		return invalidParams
8471	}
8472	return nil
8473}
8474
8475// SetTableName sets the TableName field's value.
8476func (s *DescribeContinuousBackupsInput) SetTableName(v string) *DescribeContinuousBackupsInput {
8477	s.TableName = &v
8478	return s
8479}
8480
8481type DescribeContinuousBackupsOutput struct {
8482	_ struct{} `type:"structure"`
8483
8484	// Represents the continuous backups and point in time recovery settings on
8485	// the table.
8486	ContinuousBackupsDescription *ContinuousBackupsDescription `type:"structure"`
8487}
8488
8489// String returns the string representation
8490func (s DescribeContinuousBackupsOutput) String() string {
8491	return awsutil.Prettify(s)
8492}
8493
8494// GoString returns the string representation
8495func (s DescribeContinuousBackupsOutput) GoString() string {
8496	return s.String()
8497}
8498
8499// SetContinuousBackupsDescription sets the ContinuousBackupsDescription field's value.
8500func (s *DescribeContinuousBackupsOutput) SetContinuousBackupsDescription(v *ContinuousBackupsDescription) *DescribeContinuousBackupsOutput {
8501	s.ContinuousBackupsDescription = v
8502	return s
8503}
8504
8505type DescribeEndpointsInput struct {
8506	_ struct{} `type:"structure"`
8507}
8508
8509// String returns the string representation
8510func (s DescribeEndpointsInput) String() string {
8511	return awsutil.Prettify(s)
8512}
8513
8514// GoString returns the string representation
8515func (s DescribeEndpointsInput) GoString() string {
8516	return s.String()
8517}
8518
8519type DescribeEndpointsOutput struct {
8520	_ struct{} `type:"structure"`
8521
8522	// List of endpoints.
8523	//
8524	// Endpoints is a required field
8525	Endpoints []*Endpoint `type:"list" required:"true"`
8526}
8527
8528// String returns the string representation
8529func (s DescribeEndpointsOutput) String() string {
8530	return awsutil.Prettify(s)
8531}
8532
8533// GoString returns the string representation
8534func (s DescribeEndpointsOutput) GoString() string {
8535	return s.String()
8536}
8537
8538// SetEndpoints sets the Endpoints field's value.
8539func (s *DescribeEndpointsOutput) SetEndpoints(v []*Endpoint) *DescribeEndpointsOutput {
8540	s.Endpoints = v
8541	return s
8542}
8543
8544type DescribeGlobalTableInput struct {
8545	_ struct{} `type:"structure"`
8546
8547	// The name of the global table.
8548	//
8549	// GlobalTableName is a required field
8550	GlobalTableName *string `min:"3" type:"string" required:"true"`
8551}
8552
8553// String returns the string representation
8554func (s DescribeGlobalTableInput) String() string {
8555	return awsutil.Prettify(s)
8556}
8557
8558// GoString returns the string representation
8559func (s DescribeGlobalTableInput) GoString() string {
8560	return s.String()
8561}
8562
8563// Validate inspects the fields of the type to determine if they are valid.
8564func (s *DescribeGlobalTableInput) Validate() error {
8565	invalidParams := request.ErrInvalidParams{Context: "DescribeGlobalTableInput"}
8566	if s.GlobalTableName == nil {
8567		invalidParams.Add(request.NewErrParamRequired("GlobalTableName"))
8568	}
8569	if s.GlobalTableName != nil && len(*s.GlobalTableName) < 3 {
8570		invalidParams.Add(request.NewErrParamMinLen("GlobalTableName", 3))
8571	}
8572
8573	if invalidParams.Len() > 0 {
8574		return invalidParams
8575	}
8576	return nil
8577}
8578
8579// SetGlobalTableName sets the GlobalTableName field's value.
8580func (s *DescribeGlobalTableInput) SetGlobalTableName(v string) *DescribeGlobalTableInput {
8581	s.GlobalTableName = &v
8582	return s
8583}
8584
8585type DescribeGlobalTableOutput struct {
8586	_ struct{} `type:"structure"`
8587
8588	// Contains the details of the global table.
8589	GlobalTableDescription *GlobalTableDescription `type:"structure"`
8590}
8591
8592// String returns the string representation
8593func (s DescribeGlobalTableOutput) String() string {
8594	return awsutil.Prettify(s)
8595}
8596
8597// GoString returns the string representation
8598func (s DescribeGlobalTableOutput) GoString() string {
8599	return s.String()
8600}
8601
8602// SetGlobalTableDescription sets the GlobalTableDescription field's value.
8603func (s *DescribeGlobalTableOutput) SetGlobalTableDescription(v *GlobalTableDescription) *DescribeGlobalTableOutput {
8604	s.GlobalTableDescription = v
8605	return s
8606}
8607
8608type DescribeGlobalTableSettingsInput struct {
8609	_ struct{} `type:"structure"`
8610
8611	// The name of the global table to describe.
8612	//
8613	// GlobalTableName is a required field
8614	GlobalTableName *string `min:"3" type:"string" required:"true"`
8615}
8616
8617// String returns the string representation
8618func (s DescribeGlobalTableSettingsInput) String() string {
8619	return awsutil.Prettify(s)
8620}
8621
8622// GoString returns the string representation
8623func (s DescribeGlobalTableSettingsInput) GoString() string {
8624	return s.String()
8625}
8626
8627// Validate inspects the fields of the type to determine if they are valid.
8628func (s *DescribeGlobalTableSettingsInput) Validate() error {
8629	invalidParams := request.ErrInvalidParams{Context: "DescribeGlobalTableSettingsInput"}
8630	if s.GlobalTableName == nil {
8631		invalidParams.Add(request.NewErrParamRequired("GlobalTableName"))
8632	}
8633	if s.GlobalTableName != nil && len(*s.GlobalTableName) < 3 {
8634		invalidParams.Add(request.NewErrParamMinLen("GlobalTableName", 3))
8635	}
8636
8637	if invalidParams.Len() > 0 {
8638		return invalidParams
8639	}
8640	return nil
8641}
8642
8643// SetGlobalTableName sets the GlobalTableName field's value.
8644func (s *DescribeGlobalTableSettingsInput) SetGlobalTableName(v string) *DescribeGlobalTableSettingsInput {
8645	s.GlobalTableName = &v
8646	return s
8647}
8648
8649type DescribeGlobalTableSettingsOutput struct {
8650	_ struct{} `type:"structure"`
8651
8652	// The name of the global table.
8653	GlobalTableName *string `min:"3" type:"string"`
8654
8655	// The Region-specific settings for the global table.
8656	ReplicaSettings []*ReplicaSettingsDescription `type:"list"`
8657}
8658
8659// String returns the string representation
8660func (s DescribeGlobalTableSettingsOutput) String() string {
8661	return awsutil.Prettify(s)
8662}
8663
8664// GoString returns the string representation
8665func (s DescribeGlobalTableSettingsOutput) GoString() string {
8666	return s.String()
8667}
8668
8669// SetGlobalTableName sets the GlobalTableName field's value.
8670func (s *DescribeGlobalTableSettingsOutput) SetGlobalTableName(v string) *DescribeGlobalTableSettingsOutput {
8671	s.GlobalTableName = &v
8672	return s
8673}
8674
8675// SetReplicaSettings sets the ReplicaSettings field's value.
8676func (s *DescribeGlobalTableSettingsOutput) SetReplicaSettings(v []*ReplicaSettingsDescription) *DescribeGlobalTableSettingsOutput {
8677	s.ReplicaSettings = v
8678	return s
8679}
8680
8681// Represents the input of a DescribeLimits operation. Has no content.
8682type DescribeLimitsInput struct {
8683	_ struct{} `type:"structure"`
8684}
8685
8686// String returns the string representation
8687func (s DescribeLimitsInput) String() string {
8688	return awsutil.Prettify(s)
8689}
8690
8691// GoString returns the string representation
8692func (s DescribeLimitsInput) GoString() string {
8693	return s.String()
8694}
8695
8696// Represents the output of a DescribeLimits operation.
8697type DescribeLimitsOutput struct {
8698	_ struct{} `type:"structure"`
8699
8700	// The maximum total read capacity units that your account allows you to provision
8701	// across all of your tables in this Region.
8702	AccountMaxReadCapacityUnits *int64 `min:"1" type:"long"`
8703
8704	// The maximum total write capacity units that your account allows you to provision
8705	// across all of your tables in this Region.
8706	AccountMaxWriteCapacityUnits *int64 `min:"1" type:"long"`
8707
8708	// The maximum read capacity units that your account allows you to provision
8709	// for a new table that you are creating in this Region, including the read
8710	// capacity units provisioned for its global secondary indexes (GSIs).
8711	TableMaxReadCapacityUnits *int64 `min:"1" type:"long"`
8712
8713	// The maximum write capacity units that your account allows you to provision
8714	// for a new table that you are creating in this Region, including the write
8715	// capacity units provisioned for its global secondary indexes (GSIs).
8716	TableMaxWriteCapacityUnits *int64 `min:"1" type:"long"`
8717}
8718
8719// String returns the string representation
8720func (s DescribeLimitsOutput) String() string {
8721	return awsutil.Prettify(s)
8722}
8723
8724// GoString returns the string representation
8725func (s DescribeLimitsOutput) GoString() string {
8726	return s.String()
8727}
8728
8729// SetAccountMaxReadCapacityUnits sets the AccountMaxReadCapacityUnits field's value.
8730func (s *DescribeLimitsOutput) SetAccountMaxReadCapacityUnits(v int64) *DescribeLimitsOutput {
8731	s.AccountMaxReadCapacityUnits = &v
8732	return s
8733}
8734
8735// SetAccountMaxWriteCapacityUnits sets the AccountMaxWriteCapacityUnits field's value.
8736func (s *DescribeLimitsOutput) SetAccountMaxWriteCapacityUnits(v int64) *DescribeLimitsOutput {
8737	s.AccountMaxWriteCapacityUnits = &v
8738	return s
8739}
8740
8741// SetTableMaxReadCapacityUnits sets the TableMaxReadCapacityUnits field's value.
8742func (s *DescribeLimitsOutput) SetTableMaxReadCapacityUnits(v int64) *DescribeLimitsOutput {
8743	s.TableMaxReadCapacityUnits = &v
8744	return s
8745}
8746
8747// SetTableMaxWriteCapacityUnits sets the TableMaxWriteCapacityUnits field's value.
8748func (s *DescribeLimitsOutput) SetTableMaxWriteCapacityUnits(v int64) *DescribeLimitsOutput {
8749	s.TableMaxWriteCapacityUnits = &v
8750	return s
8751}
8752
8753// Represents the input of a DescribeTable operation.
8754type DescribeTableInput struct {
8755	_ struct{} `type:"structure"`
8756
8757	// The name of the table to describe.
8758	//
8759	// TableName is a required field
8760	TableName *string `min:"3" type:"string" required:"true"`
8761}
8762
8763// String returns the string representation
8764func (s DescribeTableInput) String() string {
8765	return awsutil.Prettify(s)
8766}
8767
8768// GoString returns the string representation
8769func (s DescribeTableInput) GoString() string {
8770	return s.String()
8771}
8772
8773// Validate inspects the fields of the type to determine if they are valid.
8774func (s *DescribeTableInput) Validate() error {
8775	invalidParams := request.ErrInvalidParams{Context: "DescribeTableInput"}
8776	if s.TableName == nil {
8777		invalidParams.Add(request.NewErrParamRequired("TableName"))
8778	}
8779	if s.TableName != nil && len(*s.TableName) < 3 {
8780		invalidParams.Add(request.NewErrParamMinLen("TableName", 3))
8781	}
8782
8783	if invalidParams.Len() > 0 {
8784		return invalidParams
8785	}
8786	return nil
8787}
8788
8789// SetTableName sets the TableName field's value.
8790func (s *DescribeTableInput) SetTableName(v string) *DescribeTableInput {
8791	s.TableName = &v
8792	return s
8793}
8794
8795// Represents the output of a DescribeTable operation.
8796type DescribeTableOutput struct {
8797	_ struct{} `type:"structure"`
8798
8799	// The properties of the table.
8800	Table *TableDescription `type:"structure"`
8801}
8802
8803// String returns the string representation
8804func (s DescribeTableOutput) String() string {
8805	return awsutil.Prettify(s)
8806}
8807
8808// GoString returns the string representation
8809func (s DescribeTableOutput) GoString() string {
8810	return s.String()
8811}
8812
8813// SetTable sets the Table field's value.
8814func (s *DescribeTableOutput) SetTable(v *TableDescription) *DescribeTableOutput {
8815	s.Table = v
8816	return s
8817}
8818
8819type DescribeTimeToLiveInput struct {
8820	_ struct{} `type:"structure"`
8821
8822	// The name of the table to be described.
8823	//
8824	// TableName is a required field
8825	TableName *string `min:"3" type:"string" required:"true"`
8826}
8827
8828// String returns the string representation
8829func (s DescribeTimeToLiveInput) String() string {
8830	return awsutil.Prettify(s)
8831}
8832
8833// GoString returns the string representation
8834func (s DescribeTimeToLiveInput) GoString() string {
8835	return s.String()
8836}
8837
8838// Validate inspects the fields of the type to determine if they are valid.
8839func (s *DescribeTimeToLiveInput) Validate() error {
8840	invalidParams := request.ErrInvalidParams{Context: "DescribeTimeToLiveInput"}
8841	if s.TableName == nil {
8842		invalidParams.Add(request.NewErrParamRequired("TableName"))
8843	}
8844	if s.TableName != nil && len(*s.TableName) < 3 {
8845		invalidParams.Add(request.NewErrParamMinLen("TableName", 3))
8846	}
8847
8848	if invalidParams.Len() > 0 {
8849		return invalidParams
8850	}
8851	return nil
8852}
8853
8854// SetTableName sets the TableName field's value.
8855func (s *DescribeTimeToLiveInput) SetTableName(v string) *DescribeTimeToLiveInput {
8856	s.TableName = &v
8857	return s
8858}
8859
8860type DescribeTimeToLiveOutput struct {
8861	_ struct{} `type:"structure"`
8862
8863	// The description of the Time to Live (TTL) status on the specified table.
8864	TimeToLiveDescription *TimeToLiveDescription `type:"structure"`
8865}
8866
8867// String returns the string representation
8868func (s DescribeTimeToLiveOutput) String() string {
8869	return awsutil.Prettify(s)
8870}
8871
8872// GoString returns the string representation
8873func (s DescribeTimeToLiveOutput) GoString() string {
8874	return s.String()
8875}
8876
8877// SetTimeToLiveDescription sets the TimeToLiveDescription field's value.
8878func (s *DescribeTimeToLiveOutput) SetTimeToLiveDescription(v *TimeToLiveDescription) *DescribeTimeToLiveOutput {
8879	s.TimeToLiveDescription = v
8880	return s
8881}
8882
8883// An endpoint information details.
8884type Endpoint struct {
8885	_ struct{} `type:"structure"`
8886
8887	// IP address of the endpoint.
8888	//
8889	// Address is a required field
8890	Address *string `type:"string" required:"true"`
8891
8892	// Endpoint cache time to live (TTL) value.
8893	//
8894	// CachePeriodInMinutes is a required field
8895	CachePeriodInMinutes *int64 `type:"long" required:"true"`
8896}
8897
8898// String returns the string representation
8899func (s Endpoint) String() string {
8900	return awsutil.Prettify(s)
8901}
8902
8903// GoString returns the string representation
8904func (s Endpoint) GoString() string {
8905	return s.String()
8906}
8907
8908// SetAddress sets the Address field's value.
8909func (s *Endpoint) SetAddress(v string) *Endpoint {
8910	s.Address = &v
8911	return s
8912}
8913
8914// SetCachePeriodInMinutes sets the CachePeriodInMinutes field's value.
8915func (s *Endpoint) SetCachePeriodInMinutes(v int64) *Endpoint {
8916	s.CachePeriodInMinutes = &v
8917	return s
8918}
8919
8920// Represents a condition to be compared with an attribute value. This condition
8921// can be used with DeleteItem, PutItem or UpdateItem operations; if the comparison
8922// evaluates to true, the operation succeeds; if not, the operation fails. You
8923// can use ExpectedAttributeValue in one of two different ways:
8924//
8925//    * Use AttributeValueList to specify one or more values to compare against
8926//    an attribute. Use ComparisonOperator to specify how you want to perform
8927//    the comparison. If the comparison evaluates to true, then the conditional
8928//    operation succeeds.
8929//
8930//    * Use Value to specify a value that DynamoDB will compare against an attribute.
8931//    If the values match, then ExpectedAttributeValue evaluates to true and
8932//    the conditional operation succeeds. Optionally, you can also set Exists
8933//    to false, indicating that you do not expect to find the attribute value
8934//    in the table. In this case, the conditional operation succeeds only if
8935//    the comparison evaluates to false.
8936//
8937// Value and Exists are incompatible with AttributeValueList and ComparisonOperator.
8938// Note that if you use both sets of parameters at once, DynamoDB will return
8939// a ValidationException exception.
8940type ExpectedAttributeValue struct {
8941	_ struct{} `type:"structure"`
8942
8943	// One or more values to evaluate against the supplied attribute. The number
8944	// of values in the list depends on the ComparisonOperator being used.
8945	//
8946	// For type Number, value comparisons are numeric.
8947	//
8948	// String value comparisons for greater than, equals, or less than are based
8949	// on ASCII character code values. For example, a is greater than A, and a is
8950	// greater than B. For a list of code values, see http://en.wikipedia.org/wiki/ASCII#ASCII_printable_characters
8951	// (http://en.wikipedia.org/wiki/ASCII#ASCII_printable_characters).
8952	//
8953	// For Binary, DynamoDB treats each byte of the binary data as unsigned when
8954	// it compares binary values.
8955	//
8956	// For information on specifying data types in JSON, see JSON Data Format (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/DataFormat.html)
8957	// in the Amazon DynamoDB Developer Guide.
8958	AttributeValueList []*AttributeValue `type:"list"`
8959
8960	// A comparator for evaluating attributes in the AttributeValueList. For example,
8961	// equals, greater than, less than, etc.
8962	//
8963	// The following comparison operators are available:
8964	//
8965	// EQ | NE | LE | LT | GE | GT | NOT_NULL | NULL | CONTAINS | NOT_CONTAINS |
8966	// BEGINS_WITH | IN | BETWEEN
8967	//
8968	// The following are descriptions of each comparison operator.
8969	//
8970	//    * EQ : Equal. EQ is supported for all data types, including lists and
8971	//    maps. AttributeValueList can contain only one AttributeValue element of
8972	//    type String, Number, Binary, String Set, Number Set, or Binary Set. If
8973	//    an item contains an AttributeValue element of a different type than the
8974	//    one provided in the request, the value does not match. For example, {"S":"6"}
8975	//    does not equal {"N":"6"}. Also, {"N":"6"} does not equal {"NS":["6", "2",
8976	//    "1"]}.
8977	//
8978	//    * NE : Not equal. NE is supported for all data types, including lists
8979	//    and maps. AttributeValueList can contain only one AttributeValue of type
8980	//    String, Number, Binary, String Set, Number Set, or Binary Set. If an item
8981	//    contains an AttributeValue of a different type than the one provided in
8982	//    the request, the value does not match. For example, {"S":"6"} does not
8983	//    equal {"N":"6"}. Also, {"N":"6"} does not equal {"NS":["6", "2", "1"]}.
8984	//
8985	//    * LE : Less than or equal. AttributeValueList can contain only one AttributeValue
8986	//    element of type String, Number, or Binary (not a set type). If an item
8987	//    contains an AttributeValue element of a different type than the one provided
8988	//    in the request, the value does not match. For example, {"S":"6"} does
8989	//    not equal {"N":"6"}. Also, {"N":"6"} does not compare to {"NS":["6", "2",
8990	//    "1"]}.
8991	//
8992	//    * LT : Less than. AttributeValueList can contain only one AttributeValue
8993	//    of type String, Number, or Binary (not a set type). If an item contains
8994	//    an AttributeValue element of a different type than the one provided in
8995	//    the request, the value does not match. For example, {"S":"6"} does not
8996	//    equal {"N":"6"}. Also, {"N":"6"} does not compare to {"NS":["6", "2",
8997	//    "1"]}.
8998	//
8999	//    * GE : Greater than or equal. AttributeValueList can contain only one
9000	//    AttributeValue element of type String, Number, or Binary (not a set type).
9001	//    If an item contains an AttributeValue element of a different type than
9002	//    the one provided in the request, the value does not match. For example,
9003	//    {"S":"6"} does not equal {"N":"6"}. Also, {"N":"6"} does not compare to
9004	//    {"NS":["6", "2", "1"]}.
9005	//
9006	//    * GT : Greater than. AttributeValueList can contain only one AttributeValue
9007	//    element of type String, Number, or Binary (not a set type). If an item
9008	//    contains an AttributeValue element of a different type than the one provided
9009	//    in the request, the value does not match. For example, {"S":"6"} does
9010	//    not equal {"N":"6"}. Also, {"N":"6"} does not compare to {"NS":["6", "2",
9011	//    "1"]}.
9012	//
9013	//    * NOT_NULL : The attribute exists. NOT_NULL is supported for all data
9014	//    types, including lists and maps. This operator tests for the existence
9015	//    of an attribute, not its data type. If the data type of attribute "a"
9016	//    is null, and you evaluate it using NOT_NULL, the result is a Boolean true.
9017	//    This result is because the attribute "a" exists; its data type is not
9018	//    relevant to the NOT_NULL comparison operator.
9019	//
9020	//    * NULL : The attribute does not exist. NULL is supported for all data
9021	//    types, including lists and maps. This operator tests for the nonexistence
9022	//    of an attribute, not its data type. If the data type of attribute "a"
9023	//    is null, and you evaluate it using NULL, the result is a Boolean false.
9024	//    This is because the attribute "a" exists; its data type is not relevant
9025	//    to the NULL comparison operator.
9026	//
9027	//    * CONTAINS : Checks for a subsequence, or value in a set. AttributeValueList
9028	//    can contain only one AttributeValue element of type String, Number, or
9029	//    Binary (not a set type). If the target attribute of the comparison is
9030	//    of type String, then the operator checks for a substring match. If the
9031	//    target attribute of the comparison is of type Binary, then the operator
9032	//    looks for a subsequence of the target that matches the input. If the target
9033	//    attribute of the comparison is a set ("SS", "NS", or "BS"), then the operator
9034	//    evaluates to true if it finds an exact match with any member of the set.
9035	//    CONTAINS is supported for lists: When evaluating "a CONTAINS b", "a" can
9036	//    be a list; however, "b" cannot be a set, a map, or a list.
9037	//
9038	//    * NOT_CONTAINS : Checks for absence of a subsequence, or absence of a
9039	//    value in a set. AttributeValueList can contain only one AttributeValue
9040	//    element of type String, Number, or Binary (not a set type). If the target
9041	//    attribute of the comparison is a String, then the operator checks for
9042	//    the absence of a substring match. If the target attribute of the comparison
9043	//    is Binary, then the operator checks for the absence of a subsequence of
9044	//    the target that matches the input. If the target attribute of the comparison
9045	//    is a set ("SS", "NS", or "BS"), then the operator evaluates to true if
9046	//    it does not find an exact match with any member of the set. NOT_CONTAINS
9047	//    is supported for lists: When evaluating "a NOT CONTAINS b", "a" can be
9048	//    a list; however, "b" cannot be a set, a map, or a list.
9049	//
9050	//    * BEGINS_WITH : Checks for a prefix. AttributeValueList can contain only
9051	//    one AttributeValue of type String or Binary (not a Number or a set type).
9052	//    The target attribute of the comparison must be of type String or Binary
9053	//    (not a Number or a set type).
9054	//
9055	//    * IN : Checks for matching elements in a list. AttributeValueList can
9056	//    contain one or more AttributeValue elements of type String, Number, or
9057	//    Binary. These attributes are compared against an existing attribute of
9058	//    an item. If any elements of the input are equal to the item attribute,
9059	//    the expression evaluates to true.
9060	//
9061	//    * BETWEEN : Greater than or equal to the first value, and less than or
9062	//    equal to the second value. AttributeValueList must contain two AttributeValue
9063	//    elements of the same type, either String, Number, or Binary (not a set
9064	//    type). A target attribute matches if the target value is greater than,
9065	//    or equal to, the first element and less than, or equal to, the second
9066	//    element. If an item contains an AttributeValue element of a different
9067	//    type than the one provided in the request, the value does not match. For
9068	//    example, {"S":"6"} does not compare to {"N":"6"}. Also, {"N":"6"} does
9069	//    not compare to {"NS":["6", "2", "1"]}
9070	ComparisonOperator *string `type:"string" enum:"ComparisonOperator"`
9071
9072	// Causes DynamoDB to evaluate the value before attempting a conditional operation:
9073	//
9074	//    * If Exists is true, DynamoDB will check to see if that attribute value
9075	//    already exists in the table. If it is found, then the operation succeeds.
9076	//    If it is not found, the operation fails with a ConditionCheckFailedException.
9077	//
9078	//    * If Exists is false, DynamoDB assumes that the attribute value does not
9079	//    exist in the table. If in fact the value does not exist, then the assumption
9080	//    is valid and the operation succeeds. If the value is found, despite the
9081	//    assumption that it does not exist, the operation fails with a ConditionCheckFailedException.
9082	//
9083	// The default setting for Exists is true. If you supply a Value all by itself,
9084	// DynamoDB assumes the attribute exists: You don't have to set Exists to true,
9085	// because it is implied.
9086	//
9087	// DynamoDB returns a ValidationException if:
9088	//
9089	//    * Exists is true but there is no Value to check. (You expect a value to
9090	//    exist, but don't specify what that value is.)
9091	//
9092	//    * Exists is false but you also provide a Value. (You cannot expect an
9093	//    attribute to have a value, while also expecting it not to exist.)
9094	Exists *bool `type:"boolean"`
9095
9096	// Represents the data for the expected attribute.
9097	//
9098	// Each attribute value is described as a name-value pair. The name is the data
9099	// type, and the value is the data itself.
9100	//
9101	// For more information, see Data Types (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/HowItWorks.NamingRulesDataTypes.html#HowItWorks.DataTypes)
9102	// in the Amazon DynamoDB Developer Guide.
9103	Value *AttributeValue `type:"structure"`
9104}
9105
9106// String returns the string representation
9107func (s ExpectedAttributeValue) String() string {
9108	return awsutil.Prettify(s)
9109}
9110
9111// GoString returns the string representation
9112func (s ExpectedAttributeValue) GoString() string {
9113	return s.String()
9114}
9115
9116// SetAttributeValueList sets the AttributeValueList field's value.
9117func (s *ExpectedAttributeValue) SetAttributeValueList(v []*AttributeValue) *ExpectedAttributeValue {
9118	s.AttributeValueList = v
9119	return s
9120}
9121
9122// SetComparisonOperator sets the ComparisonOperator field's value.
9123func (s *ExpectedAttributeValue) SetComparisonOperator(v string) *ExpectedAttributeValue {
9124	s.ComparisonOperator = &v
9125	return s
9126}
9127
9128// SetExists sets the Exists field's value.
9129func (s *ExpectedAttributeValue) SetExists(v bool) *ExpectedAttributeValue {
9130	s.Exists = &v
9131	return s
9132}
9133
9134// SetValue sets the Value field's value.
9135func (s *ExpectedAttributeValue) SetValue(v *AttributeValue) *ExpectedAttributeValue {
9136	s.Value = v
9137	return s
9138}
9139
9140// Specifies an item and related attribute values to retrieve in a TransactGetItem
9141// object.
9142type Get struct {
9143	_ struct{} `type:"structure"`
9144
9145	// One or more substitution tokens for attribute names in the ProjectionExpression
9146	// parameter.
9147	ExpressionAttributeNames map[string]*string `type:"map"`
9148
9149	// A map of attribute names to AttributeValue objects that specifies the primary
9150	// key of the item to retrieve.
9151	//
9152	// Key is a required field
9153	Key map[string]*AttributeValue `type:"map" required:"true"`
9154
9155	// A string that identifies one or more attributes of the specified item to
9156	// retrieve from the table. The attributes in the expression must be separated
9157	// by commas. If no attribute names are specified, then all attributes of the
9158	// specified item are returned. If any of the requested attributes are not found,
9159	// they do not appear in the result.
9160	ProjectionExpression *string `type:"string"`
9161
9162	// The name of the table from which to retrieve the specified item.
9163	//
9164	// TableName is a required field
9165	TableName *string `min:"3" type:"string" required:"true"`
9166}
9167
9168// String returns the string representation
9169func (s Get) String() string {
9170	return awsutil.Prettify(s)
9171}
9172
9173// GoString returns the string representation
9174func (s Get) GoString() string {
9175	return s.String()
9176}
9177
9178// Validate inspects the fields of the type to determine if they are valid.
9179func (s *Get) Validate() error {
9180	invalidParams := request.ErrInvalidParams{Context: "Get"}
9181	if s.Key == nil {
9182		invalidParams.Add(request.NewErrParamRequired("Key"))
9183	}
9184	if s.TableName == nil {
9185		invalidParams.Add(request.NewErrParamRequired("TableName"))
9186	}
9187	if s.TableName != nil && len(*s.TableName) < 3 {
9188		invalidParams.Add(request.NewErrParamMinLen("TableName", 3))
9189	}
9190
9191	if invalidParams.Len() > 0 {
9192		return invalidParams
9193	}
9194	return nil
9195}
9196
9197// SetExpressionAttributeNames sets the ExpressionAttributeNames field's value.
9198func (s *Get) SetExpressionAttributeNames(v map[string]*string) *Get {
9199	s.ExpressionAttributeNames = v
9200	return s
9201}
9202
9203// SetKey sets the Key field's value.
9204func (s *Get) SetKey(v map[string]*AttributeValue) *Get {
9205	s.Key = v
9206	return s
9207}
9208
9209// SetProjectionExpression sets the ProjectionExpression field's value.
9210func (s *Get) SetProjectionExpression(v string) *Get {
9211	s.ProjectionExpression = &v
9212	return s
9213}
9214
9215// SetTableName sets the TableName field's value.
9216func (s *Get) SetTableName(v string) *Get {
9217	s.TableName = &v
9218	return s
9219}
9220
9221// Represents the input of a GetItem operation.
9222type GetItemInput struct {
9223	_ struct{} `type:"structure"`
9224
9225	// This is a legacy parameter. Use ProjectionExpression instead. For more information,
9226	// see AttributesToGet (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/LegacyConditionalParameters.AttributesToGet.html)
9227	// in the Amazon DynamoDB Developer Guide.
9228	AttributesToGet []*string `min:"1" type:"list"`
9229
9230	// Determines the read consistency model: If set to true, then the operation
9231	// uses strongly consistent reads; otherwise, the operation uses eventually
9232	// consistent reads.
9233	ConsistentRead *bool `type:"boolean"`
9234
9235	// One or more substitution tokens for attribute names in an expression. The
9236	// following are some use cases for using ExpressionAttributeNames:
9237	//
9238	//    * To access an attribute whose name conflicts with a DynamoDB reserved
9239	//    word.
9240	//
9241	//    * To create a placeholder for repeating occurrences of an attribute name
9242	//    in an expression.
9243	//
9244	//    * To prevent special characters in an attribute name from being misinterpreted
9245	//    in an expression.
9246	//
9247	// Use the # character in an expression to dereference an attribute name. For
9248	// example, consider the following attribute name:
9249	//
9250	//    * Percentile
9251	//
9252	// The name of this attribute conflicts with a reserved word, so it cannot be
9253	// used directly in an expression. (For the complete list of reserved words,
9254	// see Reserved Words (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ReservedWords.html)
9255	// in the Amazon DynamoDB Developer Guide). To work around this, you could specify
9256	// the following for ExpressionAttributeNames:
9257	//
9258	//    * {"#P":"Percentile"}
9259	//
9260	// You could then use this substitution in an expression, as in this example:
9261	//
9262	//    * #P = :val
9263	//
9264	// Tokens that begin with the : character are expression attribute values, which
9265	// are placeholders for the actual value at runtime.
9266	//
9267	// For more information on expression attribute names, see Specifying Item Attributes
9268	// (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.AccessingItemAttributes.html)
9269	// in the Amazon DynamoDB Developer Guide.
9270	ExpressionAttributeNames map[string]*string `type:"map"`
9271
9272	// A map of attribute names to AttributeValue objects, representing the primary
9273	// key of the item to retrieve.
9274	//
9275	// For the primary key, you must provide all of the attributes. For example,
9276	// with a simple primary key, you only need to provide a value for the partition
9277	// key. For a composite primary key, you must provide values for both the partition
9278	// key and the sort key.
9279	//
9280	// Key is a required field
9281	Key map[string]*AttributeValue `type:"map" required:"true"`
9282
9283	// A string that identifies one or more attributes to retrieve from the table.
9284	// These attributes can include scalars, sets, or elements of a JSON document.
9285	// The attributes in the expression must be separated by commas.
9286	//
9287	// If no attribute names are specified, then all attributes are returned. If
9288	// any of the requested attributes are not found, they do not appear in the
9289	// result.
9290	//
9291	// For more information, see Specifying Item Attributes (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.AccessingItemAttributes.html)
9292	// in the Amazon DynamoDB Developer Guide.
9293	ProjectionExpression *string `type:"string"`
9294
9295	// Determines the level of detail about provisioned throughput consumption that
9296	// is returned in the response:
9297	//
9298	//    * INDEXES - The response includes the aggregate ConsumedCapacity for the
9299	//    operation, together with ConsumedCapacity for each table and secondary
9300	//    index that was accessed. Note that some operations, such as GetItem and
9301	//    BatchGetItem, do not access any indexes at all. In these cases, specifying
9302	//    INDEXES will only return ConsumedCapacity information for table(s).
9303	//
9304	//    * TOTAL - The response includes only the aggregate ConsumedCapacity for
9305	//    the operation.
9306	//
9307	//    * NONE - No ConsumedCapacity details are included in the response.
9308	ReturnConsumedCapacity *string `type:"string" enum:"ReturnConsumedCapacity"`
9309
9310	// The name of the table containing the requested item.
9311	//
9312	// TableName is a required field
9313	TableName *string `min:"3" type:"string" required:"true"`
9314}
9315
9316// String returns the string representation
9317func (s GetItemInput) String() string {
9318	return awsutil.Prettify(s)
9319}
9320
9321// GoString returns the string representation
9322func (s GetItemInput) GoString() string {
9323	return s.String()
9324}
9325
9326// Validate inspects the fields of the type to determine if they are valid.
9327func (s *GetItemInput) Validate() error {
9328	invalidParams := request.ErrInvalidParams{Context: "GetItemInput"}
9329	if s.AttributesToGet != nil && len(s.AttributesToGet) < 1 {
9330		invalidParams.Add(request.NewErrParamMinLen("AttributesToGet", 1))
9331	}
9332	if s.Key == nil {
9333		invalidParams.Add(request.NewErrParamRequired("Key"))
9334	}
9335	if s.TableName == nil {
9336		invalidParams.Add(request.NewErrParamRequired("TableName"))
9337	}
9338	if s.TableName != nil && len(*s.TableName) < 3 {
9339		invalidParams.Add(request.NewErrParamMinLen("TableName", 3))
9340	}
9341
9342	if invalidParams.Len() > 0 {
9343		return invalidParams
9344	}
9345	return nil
9346}
9347
9348// SetAttributesToGet sets the AttributesToGet field's value.
9349func (s *GetItemInput) SetAttributesToGet(v []*string) *GetItemInput {
9350	s.AttributesToGet = v
9351	return s
9352}
9353
9354// SetConsistentRead sets the ConsistentRead field's value.
9355func (s *GetItemInput) SetConsistentRead(v bool) *GetItemInput {
9356	s.ConsistentRead = &v
9357	return s
9358}
9359
9360// SetExpressionAttributeNames sets the ExpressionAttributeNames field's value.
9361func (s *GetItemInput) SetExpressionAttributeNames(v map[string]*string) *GetItemInput {
9362	s.ExpressionAttributeNames = v
9363	return s
9364}
9365
9366// SetKey sets the Key field's value.
9367func (s *GetItemInput) SetKey(v map[string]*AttributeValue) *GetItemInput {
9368	s.Key = v
9369	return s
9370}
9371
9372// SetProjectionExpression sets the ProjectionExpression field's value.
9373func (s *GetItemInput) SetProjectionExpression(v string) *GetItemInput {
9374	s.ProjectionExpression = &v
9375	return s
9376}
9377
9378// SetReturnConsumedCapacity sets the ReturnConsumedCapacity field's value.
9379func (s *GetItemInput) SetReturnConsumedCapacity(v string) *GetItemInput {
9380	s.ReturnConsumedCapacity = &v
9381	return s
9382}
9383
9384// SetTableName sets the TableName field's value.
9385func (s *GetItemInput) SetTableName(v string) *GetItemInput {
9386	s.TableName = &v
9387	return s
9388}
9389
9390// Represents the output of a GetItem operation.
9391type GetItemOutput struct {
9392	_ struct{} `type:"structure"`
9393
9394	// The capacity units consumed by the GetItem operation. The data returned includes
9395	// the total provisioned throughput consumed, along with statistics for the
9396	// table and any indexes involved in the operation. ConsumedCapacity is only
9397	// returned if the ReturnConsumedCapacity parameter was specified. For more
9398	// information, see Read/Write Capacity Mode (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ProvisionedThroughputIntro.html)
9399	// in the Amazon DynamoDB Developer Guide.
9400	ConsumedCapacity *ConsumedCapacity `type:"structure"`
9401
9402	// A map of attribute names to AttributeValue objects, as specified by ProjectionExpression.
9403	Item map[string]*AttributeValue `type:"map"`
9404}
9405
9406// String returns the string representation
9407func (s GetItemOutput) String() string {
9408	return awsutil.Prettify(s)
9409}
9410
9411// GoString returns the string representation
9412func (s GetItemOutput) GoString() string {
9413	return s.String()
9414}
9415
9416// SetConsumedCapacity sets the ConsumedCapacity field's value.
9417func (s *GetItemOutput) SetConsumedCapacity(v *ConsumedCapacity) *GetItemOutput {
9418	s.ConsumedCapacity = v
9419	return s
9420}
9421
9422// SetItem sets the Item field's value.
9423func (s *GetItemOutput) SetItem(v map[string]*AttributeValue) *GetItemOutput {
9424	s.Item = v
9425	return s
9426}
9427
9428// Represents the properties of a global secondary index.
9429type GlobalSecondaryIndex struct {
9430	_ struct{} `type:"structure"`
9431
9432	// The name of the global secondary index. The name must be unique among all
9433	// other indexes on this table.
9434	//
9435	// IndexName is a required field
9436	IndexName *string `min:"3" type:"string" required:"true"`
9437
9438	// The complete key schema for a global secondary index, which consists of one
9439	// or more pairs of attribute names and key types:
9440	//
9441	//    * HASH - partition key
9442	//
9443	//    * RANGE - sort key
9444	//
9445	// The partition key of an item is also known as its hash attribute. The term
9446	// "hash attribute" derives from DynamoDB' usage of an internal hash function
9447	// to evenly distribute data items across partitions, based on their partition
9448	// key values.
9449	//
9450	// The sort key of an item is also known as its range attribute. The term "range
9451	// attribute" derives from the way DynamoDB stores items with the same partition
9452	// key physically close together, in sorted order by the sort key value.
9453	//
9454	// KeySchema is a required field
9455	KeySchema []*KeySchemaElement `min:"1" type:"list" required:"true"`
9456
9457	// Represents attributes that are copied (projected) from the table into the
9458	// global secondary index. These are in addition to the primary key attributes
9459	// and index key attributes, which are automatically projected.
9460	//
9461	// Projection is a required field
9462	Projection *Projection `type:"structure" required:"true"`
9463
9464	// Represents the provisioned throughput settings for the specified global secondary
9465	// index.
9466	//
9467	// For current minimum and maximum provisioned throughput values, see Limits
9468	// (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Limits.html)
9469	// in the Amazon DynamoDB Developer Guide.
9470	ProvisionedThroughput *ProvisionedThroughput `type:"structure"`
9471}
9472
9473// String returns the string representation
9474func (s GlobalSecondaryIndex) String() string {
9475	return awsutil.Prettify(s)
9476}
9477
9478// GoString returns the string representation
9479func (s GlobalSecondaryIndex) GoString() string {
9480	return s.String()
9481}
9482
9483// Validate inspects the fields of the type to determine if they are valid.
9484func (s *GlobalSecondaryIndex) Validate() error {
9485	invalidParams := request.ErrInvalidParams{Context: "GlobalSecondaryIndex"}
9486	if s.IndexName == nil {
9487		invalidParams.Add(request.NewErrParamRequired("IndexName"))
9488	}
9489	if s.IndexName != nil && len(*s.IndexName) < 3 {
9490		invalidParams.Add(request.NewErrParamMinLen("IndexName", 3))
9491	}
9492	if s.KeySchema == nil {
9493		invalidParams.Add(request.NewErrParamRequired("KeySchema"))
9494	}
9495	if s.KeySchema != nil && len(s.KeySchema) < 1 {
9496		invalidParams.Add(request.NewErrParamMinLen("KeySchema", 1))
9497	}
9498	if s.Projection == nil {
9499		invalidParams.Add(request.NewErrParamRequired("Projection"))
9500	}
9501	if s.KeySchema != nil {
9502		for i, v := range s.KeySchema {
9503			if v == nil {
9504				continue
9505			}
9506			if err := v.Validate(); err != nil {
9507				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "KeySchema", i), err.(request.ErrInvalidParams))
9508			}
9509		}
9510	}
9511	if s.Projection != nil {
9512		if err := s.Projection.Validate(); err != nil {
9513			invalidParams.AddNested("Projection", err.(request.ErrInvalidParams))
9514		}
9515	}
9516	if s.ProvisionedThroughput != nil {
9517		if err := s.ProvisionedThroughput.Validate(); err != nil {
9518			invalidParams.AddNested("ProvisionedThroughput", err.(request.ErrInvalidParams))
9519		}
9520	}
9521
9522	if invalidParams.Len() > 0 {
9523		return invalidParams
9524	}
9525	return nil
9526}
9527
9528// SetIndexName sets the IndexName field's value.
9529func (s *GlobalSecondaryIndex) SetIndexName(v string) *GlobalSecondaryIndex {
9530	s.IndexName = &v
9531	return s
9532}
9533
9534// SetKeySchema sets the KeySchema field's value.
9535func (s *GlobalSecondaryIndex) SetKeySchema(v []*KeySchemaElement) *GlobalSecondaryIndex {
9536	s.KeySchema = v
9537	return s
9538}
9539
9540// SetProjection sets the Projection field's value.
9541func (s *GlobalSecondaryIndex) SetProjection(v *Projection) *GlobalSecondaryIndex {
9542	s.Projection = v
9543	return s
9544}
9545
9546// SetProvisionedThroughput sets the ProvisionedThroughput field's value.
9547func (s *GlobalSecondaryIndex) SetProvisionedThroughput(v *ProvisionedThroughput) *GlobalSecondaryIndex {
9548	s.ProvisionedThroughput = v
9549	return s
9550}
9551
9552// Represents the properties of a global secondary index.
9553type GlobalSecondaryIndexDescription struct {
9554	_ struct{} `type:"structure"`
9555
9556	// Indicates whether the index is currently backfilling. Backfilling is the
9557	// process of reading items from the table and determining whether they can
9558	// be added to the index. (Not all items will qualify: For example, a partition
9559	// key cannot have any duplicate values.) If an item can be added to the index,
9560	// DynamoDB will do so. After all items have been processed, the backfilling
9561	// operation is complete and Backfilling is false.
9562	//
9563	// For indexes that were created during a CreateTable operation, the Backfilling
9564	// attribute does not appear in the DescribeTable output.
9565	Backfilling *bool `type:"boolean"`
9566
9567	// The Amazon Resource Name (ARN) that uniquely identifies the index.
9568	IndexArn *string `type:"string"`
9569
9570	// The name of the global secondary index.
9571	IndexName *string `min:"3" type:"string"`
9572
9573	// The total size of the specified index, in bytes. DynamoDB updates this value
9574	// approximately every six hours. Recent changes might not be reflected in this
9575	// value.
9576	IndexSizeBytes *int64 `type:"long"`
9577
9578	// The current state of the global secondary index:
9579	//
9580	//    * CREATING - The index is being created.
9581	//
9582	//    * UPDATING - The index is being updated.
9583	//
9584	//    * DELETING - The index is being deleted.
9585	//
9586	//    * ACTIVE - The index is ready for use.
9587	IndexStatus *string `type:"string" enum:"IndexStatus"`
9588
9589	// The number of items in the specified index. DynamoDB updates this value approximately
9590	// every six hours. Recent changes might not be reflected in this value.
9591	ItemCount *int64 `type:"long"`
9592
9593	// The complete key schema for a global secondary index, which consists of one
9594	// or more pairs of attribute names and key types:
9595	//
9596	//    * HASH - partition key
9597	//
9598	//    * RANGE - sort key
9599	//
9600	// The partition key of an item is also known as its hash attribute. The term
9601	// "hash attribute" derives from DynamoDB' usage of an internal hash function
9602	// to evenly distribute data items across partitions, based on their partition
9603	// key values.
9604	//
9605	// The sort key of an item is also known as its range attribute. The term "range
9606	// attribute" derives from the way DynamoDB stores items with the same partition
9607	// key physically close together, in sorted order by the sort key value.
9608	KeySchema []*KeySchemaElement `min:"1" type:"list"`
9609
9610	// Represents attributes that are copied (projected) from the table into the
9611	// global secondary index. These are in addition to the primary key attributes
9612	// and index key attributes, which are automatically projected.
9613	Projection *Projection `type:"structure"`
9614
9615	// Represents the provisioned throughput settings for the specified global secondary
9616	// index.
9617	//
9618	// For current minimum and maximum provisioned throughput values, see Limits
9619	// (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Limits.html)
9620	// in the Amazon DynamoDB Developer Guide.
9621	ProvisionedThroughput *ProvisionedThroughputDescription `type:"structure"`
9622}
9623
9624// String returns the string representation
9625func (s GlobalSecondaryIndexDescription) String() string {
9626	return awsutil.Prettify(s)
9627}
9628
9629// GoString returns the string representation
9630func (s GlobalSecondaryIndexDescription) GoString() string {
9631	return s.String()
9632}
9633
9634// SetBackfilling sets the Backfilling field's value.
9635func (s *GlobalSecondaryIndexDescription) SetBackfilling(v bool) *GlobalSecondaryIndexDescription {
9636	s.Backfilling = &v
9637	return s
9638}
9639
9640// SetIndexArn sets the IndexArn field's value.
9641func (s *GlobalSecondaryIndexDescription) SetIndexArn(v string) *GlobalSecondaryIndexDescription {
9642	s.IndexArn = &v
9643	return s
9644}
9645
9646// SetIndexName sets the IndexName field's value.
9647func (s *GlobalSecondaryIndexDescription) SetIndexName(v string) *GlobalSecondaryIndexDescription {
9648	s.IndexName = &v
9649	return s
9650}
9651
9652// SetIndexSizeBytes sets the IndexSizeBytes field's value.
9653func (s *GlobalSecondaryIndexDescription) SetIndexSizeBytes(v int64) *GlobalSecondaryIndexDescription {
9654	s.IndexSizeBytes = &v
9655	return s
9656}
9657
9658// SetIndexStatus sets the IndexStatus field's value.
9659func (s *GlobalSecondaryIndexDescription) SetIndexStatus(v string) *GlobalSecondaryIndexDescription {
9660	s.IndexStatus = &v
9661	return s
9662}
9663
9664// SetItemCount sets the ItemCount field's value.
9665func (s *GlobalSecondaryIndexDescription) SetItemCount(v int64) *GlobalSecondaryIndexDescription {
9666	s.ItemCount = &v
9667	return s
9668}
9669
9670// SetKeySchema sets the KeySchema field's value.
9671func (s *GlobalSecondaryIndexDescription) SetKeySchema(v []*KeySchemaElement) *GlobalSecondaryIndexDescription {
9672	s.KeySchema = v
9673	return s
9674}
9675
9676// SetProjection sets the Projection field's value.
9677func (s *GlobalSecondaryIndexDescription) SetProjection(v *Projection) *GlobalSecondaryIndexDescription {
9678	s.Projection = v
9679	return s
9680}
9681
9682// SetProvisionedThroughput sets the ProvisionedThroughput field's value.
9683func (s *GlobalSecondaryIndexDescription) SetProvisionedThroughput(v *ProvisionedThroughputDescription) *GlobalSecondaryIndexDescription {
9684	s.ProvisionedThroughput = v
9685	return s
9686}
9687
9688// Represents the properties of a global secondary index for the table when
9689// the backup was created.
9690type GlobalSecondaryIndexInfo struct {
9691	_ struct{} `type:"structure"`
9692
9693	// The name of the global secondary index.
9694	IndexName *string `min:"3" type:"string"`
9695
9696	// The complete key schema for a global secondary index, which consists of one
9697	// or more pairs of attribute names and key types:
9698	//
9699	//    * HASH - partition key
9700	//
9701	//    * RANGE - sort key
9702	//
9703	// The partition key of an item is also known as its hash attribute. The term
9704	// "hash attribute" derives from DynamoDB' usage of an internal hash function
9705	// to evenly distribute data items across partitions, based on their partition
9706	// key values.
9707	//
9708	// The sort key of an item is also known as its range attribute. The term "range
9709	// attribute" derives from the way DynamoDB stores items with the same partition
9710	// key physically close together, in sorted order by the sort key value.
9711	KeySchema []*KeySchemaElement `min:"1" type:"list"`
9712
9713	// Represents attributes that are copied (projected) from the table into the
9714	// global secondary index. These are in addition to the primary key attributes
9715	// and index key attributes, which are automatically projected.
9716	Projection *Projection `type:"structure"`
9717
9718	// Represents the provisioned throughput settings for the specified global secondary
9719	// index.
9720	ProvisionedThroughput *ProvisionedThroughput `type:"structure"`
9721}
9722
9723// String returns the string representation
9724func (s GlobalSecondaryIndexInfo) String() string {
9725	return awsutil.Prettify(s)
9726}
9727
9728// GoString returns the string representation
9729func (s GlobalSecondaryIndexInfo) GoString() string {
9730	return s.String()
9731}
9732
9733// SetIndexName sets the IndexName field's value.
9734func (s *GlobalSecondaryIndexInfo) SetIndexName(v string) *GlobalSecondaryIndexInfo {
9735	s.IndexName = &v
9736	return s
9737}
9738
9739// SetKeySchema sets the KeySchema field's value.
9740func (s *GlobalSecondaryIndexInfo) SetKeySchema(v []*KeySchemaElement) *GlobalSecondaryIndexInfo {
9741	s.KeySchema = v
9742	return s
9743}
9744
9745// SetProjection sets the Projection field's value.
9746func (s *GlobalSecondaryIndexInfo) SetProjection(v *Projection) *GlobalSecondaryIndexInfo {
9747	s.Projection = v
9748	return s
9749}
9750
9751// SetProvisionedThroughput sets the ProvisionedThroughput field's value.
9752func (s *GlobalSecondaryIndexInfo) SetProvisionedThroughput(v *ProvisionedThroughput) *GlobalSecondaryIndexInfo {
9753	s.ProvisionedThroughput = v
9754	return s
9755}
9756
9757// Represents one of the following:
9758//
9759//    * A new global secondary index to be added to an existing table.
9760//
9761//    * New provisioned throughput parameters for an existing global secondary
9762//    index.
9763//
9764//    * An existing global secondary index to be removed from an existing table.
9765type GlobalSecondaryIndexUpdate struct {
9766	_ struct{} `type:"structure"`
9767
9768	// The parameters required for creating a global secondary index on an existing
9769	// table:
9770	//
9771	//    * IndexName
9772	//
9773	//    * KeySchema
9774	//
9775	//    * AttributeDefinitions
9776	//
9777	//    * Projection
9778	//
9779	//    * ProvisionedThroughput
9780	Create *CreateGlobalSecondaryIndexAction `type:"structure"`
9781
9782	// The name of an existing global secondary index to be removed.
9783	Delete *DeleteGlobalSecondaryIndexAction `type:"structure"`
9784
9785	// The name of an existing global secondary index, along with new provisioned
9786	// throughput settings to be applied to that index.
9787	Update *UpdateGlobalSecondaryIndexAction `type:"structure"`
9788}
9789
9790// String returns the string representation
9791func (s GlobalSecondaryIndexUpdate) String() string {
9792	return awsutil.Prettify(s)
9793}
9794
9795// GoString returns the string representation
9796func (s GlobalSecondaryIndexUpdate) GoString() string {
9797	return s.String()
9798}
9799
9800// Validate inspects the fields of the type to determine if they are valid.
9801func (s *GlobalSecondaryIndexUpdate) Validate() error {
9802	invalidParams := request.ErrInvalidParams{Context: "GlobalSecondaryIndexUpdate"}
9803	if s.Create != nil {
9804		if err := s.Create.Validate(); err != nil {
9805			invalidParams.AddNested("Create", err.(request.ErrInvalidParams))
9806		}
9807	}
9808	if s.Delete != nil {
9809		if err := s.Delete.Validate(); err != nil {
9810			invalidParams.AddNested("Delete", err.(request.ErrInvalidParams))
9811		}
9812	}
9813	if s.Update != nil {
9814		if err := s.Update.Validate(); err != nil {
9815			invalidParams.AddNested("Update", err.(request.ErrInvalidParams))
9816		}
9817	}
9818
9819	if invalidParams.Len() > 0 {
9820		return invalidParams
9821	}
9822	return nil
9823}
9824
9825// SetCreate sets the Create field's value.
9826func (s *GlobalSecondaryIndexUpdate) SetCreate(v *CreateGlobalSecondaryIndexAction) *GlobalSecondaryIndexUpdate {
9827	s.Create = v
9828	return s
9829}
9830
9831// SetDelete sets the Delete field's value.
9832func (s *GlobalSecondaryIndexUpdate) SetDelete(v *DeleteGlobalSecondaryIndexAction) *GlobalSecondaryIndexUpdate {
9833	s.Delete = v
9834	return s
9835}
9836
9837// SetUpdate sets the Update field's value.
9838func (s *GlobalSecondaryIndexUpdate) SetUpdate(v *UpdateGlobalSecondaryIndexAction) *GlobalSecondaryIndexUpdate {
9839	s.Update = v
9840	return s
9841}
9842
9843// Represents the properties of a global table.
9844type GlobalTable struct {
9845	_ struct{} `type:"structure"`
9846
9847	// The global table name.
9848	GlobalTableName *string `min:"3" type:"string"`
9849
9850	// The regions where the global table has replicas.
9851	ReplicationGroup []*Replica `type:"list"`
9852}
9853
9854// String returns the string representation
9855func (s GlobalTable) String() string {
9856	return awsutil.Prettify(s)
9857}
9858
9859// GoString returns the string representation
9860func (s GlobalTable) GoString() string {
9861	return s.String()
9862}
9863
9864// SetGlobalTableName sets the GlobalTableName field's value.
9865func (s *GlobalTable) SetGlobalTableName(v string) *GlobalTable {
9866	s.GlobalTableName = &v
9867	return s
9868}
9869
9870// SetReplicationGroup sets the ReplicationGroup field's value.
9871func (s *GlobalTable) SetReplicationGroup(v []*Replica) *GlobalTable {
9872	s.ReplicationGroup = v
9873	return s
9874}
9875
9876// Contains details about the global table.
9877type GlobalTableDescription struct {
9878	_ struct{} `type:"structure"`
9879
9880	// The creation time of the global table.
9881	CreationDateTime *time.Time `type:"timestamp"`
9882
9883	// The unique identifier of the global table.
9884	GlobalTableArn *string `type:"string"`
9885
9886	// The global table name.
9887	GlobalTableName *string `min:"3" type:"string"`
9888
9889	// The current state of the global table:
9890	//
9891	//    * CREATING - The global table is being created.
9892	//
9893	//    * UPDATING - The global table is being updated.
9894	//
9895	//    * DELETING - The global table is being deleted.
9896	//
9897	//    * ACTIVE - The global table is ready for use.
9898	GlobalTableStatus *string `type:"string" enum:"GlobalTableStatus"`
9899
9900	// The regions where the global table has replicas.
9901	ReplicationGroup []*ReplicaDescription `type:"list"`
9902}
9903
9904// String returns the string representation
9905func (s GlobalTableDescription) String() string {
9906	return awsutil.Prettify(s)
9907}
9908
9909// GoString returns the string representation
9910func (s GlobalTableDescription) GoString() string {
9911	return s.String()
9912}
9913
9914// SetCreationDateTime sets the CreationDateTime field's value.
9915func (s *GlobalTableDescription) SetCreationDateTime(v time.Time) *GlobalTableDescription {
9916	s.CreationDateTime = &v
9917	return s
9918}
9919
9920// SetGlobalTableArn sets the GlobalTableArn field's value.
9921func (s *GlobalTableDescription) SetGlobalTableArn(v string) *GlobalTableDescription {
9922	s.GlobalTableArn = &v
9923	return s
9924}
9925
9926// SetGlobalTableName sets the GlobalTableName field's value.
9927func (s *GlobalTableDescription) SetGlobalTableName(v string) *GlobalTableDescription {
9928	s.GlobalTableName = &v
9929	return s
9930}
9931
9932// SetGlobalTableStatus sets the GlobalTableStatus field's value.
9933func (s *GlobalTableDescription) SetGlobalTableStatus(v string) *GlobalTableDescription {
9934	s.GlobalTableStatus = &v
9935	return s
9936}
9937
9938// SetReplicationGroup sets the ReplicationGroup field's value.
9939func (s *GlobalTableDescription) SetReplicationGroup(v []*ReplicaDescription) *GlobalTableDescription {
9940	s.ReplicationGroup = v
9941	return s
9942}
9943
9944// Represents the settings of a global secondary index for a global table that
9945// will be modified.
9946type GlobalTableGlobalSecondaryIndexSettingsUpdate struct {
9947	_ struct{} `type:"structure"`
9948
9949	// The name of the global secondary index. The name must be unique among all
9950	// other indexes on this table.
9951	//
9952	// IndexName is a required field
9953	IndexName *string `min:"3" type:"string" required:"true"`
9954
9955	// AutoScaling settings for managing a global secondary index's write capacity
9956	// units.
9957	ProvisionedWriteCapacityAutoScalingSettingsUpdate *AutoScalingSettingsUpdate `type:"structure"`
9958
9959	// The maximum number of writes consumed per second before DynamoDB returns
9960	// a ThrottlingException.
9961	ProvisionedWriteCapacityUnits *int64 `min:"1" type:"long"`
9962}
9963
9964// String returns the string representation
9965func (s GlobalTableGlobalSecondaryIndexSettingsUpdate) String() string {
9966	return awsutil.Prettify(s)
9967}
9968
9969// GoString returns the string representation
9970func (s GlobalTableGlobalSecondaryIndexSettingsUpdate) GoString() string {
9971	return s.String()
9972}
9973
9974// Validate inspects the fields of the type to determine if they are valid.
9975func (s *GlobalTableGlobalSecondaryIndexSettingsUpdate) Validate() error {
9976	invalidParams := request.ErrInvalidParams{Context: "GlobalTableGlobalSecondaryIndexSettingsUpdate"}
9977	if s.IndexName == nil {
9978		invalidParams.Add(request.NewErrParamRequired("IndexName"))
9979	}
9980	if s.IndexName != nil && len(*s.IndexName) < 3 {
9981		invalidParams.Add(request.NewErrParamMinLen("IndexName", 3))
9982	}
9983	if s.ProvisionedWriteCapacityUnits != nil && *s.ProvisionedWriteCapacityUnits < 1 {
9984		invalidParams.Add(request.NewErrParamMinValue("ProvisionedWriteCapacityUnits", 1))
9985	}
9986	if s.ProvisionedWriteCapacityAutoScalingSettingsUpdate != nil {
9987		if err := s.ProvisionedWriteCapacityAutoScalingSettingsUpdate.Validate(); err != nil {
9988			invalidParams.AddNested("ProvisionedWriteCapacityAutoScalingSettingsUpdate", err.(request.ErrInvalidParams))
9989		}
9990	}
9991
9992	if invalidParams.Len() > 0 {
9993		return invalidParams
9994	}
9995	return nil
9996}
9997
9998// SetIndexName sets the IndexName field's value.
9999func (s *GlobalTableGlobalSecondaryIndexSettingsUpdate) SetIndexName(v string) *GlobalTableGlobalSecondaryIndexSettingsUpdate {
10000	s.IndexName = &v
10001	return s
10002}
10003
10004// SetProvisionedWriteCapacityAutoScalingSettingsUpdate sets the ProvisionedWriteCapacityAutoScalingSettingsUpdate field's value.
10005func (s *GlobalTableGlobalSecondaryIndexSettingsUpdate) SetProvisionedWriteCapacityAutoScalingSettingsUpdate(v *AutoScalingSettingsUpdate) *GlobalTableGlobalSecondaryIndexSettingsUpdate {
10006	s.ProvisionedWriteCapacityAutoScalingSettingsUpdate = v
10007	return s
10008}
10009
10010// SetProvisionedWriteCapacityUnits sets the ProvisionedWriteCapacityUnits field's value.
10011func (s *GlobalTableGlobalSecondaryIndexSettingsUpdate) SetProvisionedWriteCapacityUnits(v int64) *GlobalTableGlobalSecondaryIndexSettingsUpdate {
10012	s.ProvisionedWriteCapacityUnits = &v
10013	return s
10014}
10015
10016// Information about item collections, if any, that were affected by the operation.
10017// ItemCollectionMetrics is only returned if the request asked for it. If the
10018// table does not have any local secondary indexes, this information is not
10019// returned in the response.
10020type ItemCollectionMetrics struct {
10021	_ struct{} `type:"structure"`
10022
10023	// The partition key value of the item collection. This value is the same as
10024	// the partition key value of the item.
10025	ItemCollectionKey map[string]*AttributeValue `type:"map"`
10026
10027	// An estimate of item collection size, in gigabytes. This value is a two-element
10028	// array containing a lower bound and an upper bound for the estimate. The estimate
10029	// includes the size of all the items in the table, plus the size of all attributes
10030	// projected into all of the local secondary indexes on that table. Use this
10031	// estimate to measure whether a local secondary index is approaching its size
10032	// limit.
10033	//
10034	// The estimate is subject to change over time; therefore, do not rely on the
10035	// precision or accuracy of the estimate.
10036	SizeEstimateRangeGB []*float64 `type:"list"`
10037}
10038
10039// String returns the string representation
10040func (s ItemCollectionMetrics) String() string {
10041	return awsutil.Prettify(s)
10042}
10043
10044// GoString returns the string representation
10045func (s ItemCollectionMetrics) GoString() string {
10046	return s.String()
10047}
10048
10049// SetItemCollectionKey sets the ItemCollectionKey field's value.
10050func (s *ItemCollectionMetrics) SetItemCollectionKey(v map[string]*AttributeValue) *ItemCollectionMetrics {
10051	s.ItemCollectionKey = v
10052	return s
10053}
10054
10055// SetSizeEstimateRangeGB sets the SizeEstimateRangeGB field's value.
10056func (s *ItemCollectionMetrics) SetSizeEstimateRangeGB(v []*float64) *ItemCollectionMetrics {
10057	s.SizeEstimateRangeGB = v
10058	return s
10059}
10060
10061// Details for the requested item.
10062type ItemResponse struct {
10063	_ struct{} `type:"structure"`
10064
10065	// Map of attribute data consisting of the data type and attribute value.
10066	Item map[string]*AttributeValue `type:"map"`
10067}
10068
10069// String returns the string representation
10070func (s ItemResponse) String() string {
10071	return awsutil.Prettify(s)
10072}
10073
10074// GoString returns the string representation
10075func (s ItemResponse) GoString() string {
10076	return s.String()
10077}
10078
10079// SetItem sets the Item field's value.
10080func (s *ItemResponse) SetItem(v map[string]*AttributeValue) *ItemResponse {
10081	s.Item = v
10082	return s
10083}
10084
10085// Represents a single element of a key schema. A key schema specifies the attributes
10086// that make up the primary key of a table, or the key attributes of an index.
10087//
10088// A KeySchemaElement represents exactly one attribute of the primary key. For
10089// example, a simple primary key would be represented by one KeySchemaElement
10090// (for the partition key). A composite primary key would require one KeySchemaElement
10091// for the partition key, and another KeySchemaElement for the sort key.
10092//
10093// A KeySchemaElement must be a scalar, top-level attribute (not a nested attribute).
10094// The data type must be one of String, Number, or Binary. The attribute cannot
10095// be nested within a List or a Map.
10096type KeySchemaElement struct {
10097	_ struct{} `type:"structure"`
10098
10099	// The name of a key attribute.
10100	//
10101	// AttributeName is a required field
10102	AttributeName *string `min:"1" type:"string" required:"true"`
10103
10104	// The role that this key attribute will assume:
10105	//
10106	//    * HASH - partition key
10107	//
10108	//    * RANGE - sort key
10109	//
10110	// The partition key of an item is also known as its hash attribute. The term
10111	// "hash attribute" derives from DynamoDB' usage of an internal hash function
10112	// to evenly distribute data items across partitions, based on their partition
10113	// key values.
10114	//
10115	// The sort key of an item is also known as its range attribute. The term "range
10116	// attribute" derives from the way DynamoDB stores items with the same partition
10117	// key physically close together, in sorted order by the sort key value.
10118	//
10119	// KeyType is a required field
10120	KeyType *string `type:"string" required:"true" enum:"KeyType"`
10121}
10122
10123// String returns the string representation
10124func (s KeySchemaElement) String() string {
10125	return awsutil.Prettify(s)
10126}
10127
10128// GoString returns the string representation
10129func (s KeySchemaElement) GoString() string {
10130	return s.String()
10131}
10132
10133// Validate inspects the fields of the type to determine if they are valid.
10134func (s *KeySchemaElement) Validate() error {
10135	invalidParams := request.ErrInvalidParams{Context: "KeySchemaElement"}
10136	if s.AttributeName == nil {
10137		invalidParams.Add(request.NewErrParamRequired("AttributeName"))
10138	}
10139	if s.AttributeName != nil && len(*s.AttributeName) < 1 {
10140		invalidParams.Add(request.NewErrParamMinLen("AttributeName", 1))
10141	}
10142	if s.KeyType == nil {
10143		invalidParams.Add(request.NewErrParamRequired("KeyType"))
10144	}
10145
10146	if invalidParams.Len() > 0 {
10147		return invalidParams
10148	}
10149	return nil
10150}
10151
10152// SetAttributeName sets the AttributeName field's value.
10153func (s *KeySchemaElement) SetAttributeName(v string) *KeySchemaElement {
10154	s.AttributeName = &v
10155	return s
10156}
10157
10158// SetKeyType sets the KeyType field's value.
10159func (s *KeySchemaElement) SetKeyType(v string) *KeySchemaElement {
10160	s.KeyType = &v
10161	return s
10162}
10163
10164// Represents a set of primary keys and, for each key, the attributes to retrieve
10165// from the table.
10166//
10167// For each primary key, you must provide all of the key attributes. For example,
10168// with a simple primary key, you only need to provide the partition key. For
10169// a composite primary key, you must provide both the partition key and the
10170// sort key.
10171type KeysAndAttributes struct {
10172	_ struct{} `type:"structure"`
10173
10174	// This is a legacy parameter. Use ProjectionExpression instead. For more information,
10175	// see Legacy Conditional Parameters (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/LegacyConditionalParameters.html)
10176	// in the Amazon DynamoDB Developer Guide.
10177	AttributesToGet []*string `min:"1" type:"list"`
10178
10179	// The consistency of a read operation. If set to true, then a strongly consistent
10180	// read is used; otherwise, an eventually consistent read is used.
10181	ConsistentRead *bool `type:"boolean"`
10182
10183	// One or more substitution tokens for attribute names in an expression. The
10184	// following are some use cases for using ExpressionAttributeNames:
10185	//
10186	//    * To access an attribute whose name conflicts with a DynamoDB reserved
10187	//    word.
10188	//
10189	//    * To create a placeholder for repeating occurrences of an attribute name
10190	//    in an expression.
10191	//
10192	//    * To prevent special characters in an attribute name from being misinterpreted
10193	//    in an expression.
10194	//
10195	// Use the # character in an expression to dereference an attribute name. For
10196	// example, consider the following attribute name:
10197	//
10198	//    * Percentile
10199	//
10200	// The name of this attribute conflicts with a reserved word, so it cannot be
10201	// used directly in an expression. (For the complete list of reserved words,
10202	// see Reserved Words (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ReservedWords.html)
10203	// in the Amazon DynamoDB Developer Guide). To work around this, you could specify
10204	// the following for ExpressionAttributeNames:
10205	//
10206	//    * {"#P":"Percentile"}
10207	//
10208	// You could then use this substitution in an expression, as in this example:
10209	//
10210	//    * #P = :val
10211	//
10212	// Tokens that begin with the : character are expression attribute values, which
10213	// are placeholders for the actual value at runtime.
10214	//
10215	// For more information on expression attribute names, see Accessing Item Attributes
10216	// (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.AccessingItemAttributes.html)
10217	// in the Amazon DynamoDB Developer Guide.
10218	ExpressionAttributeNames map[string]*string `type:"map"`
10219
10220	// The primary key attribute values that define the items and the attributes
10221	// associated with the items.
10222	//
10223	// Keys is a required field
10224	Keys []map[string]*AttributeValue `min:"1" type:"list" required:"true"`
10225
10226	// A string that identifies one or more attributes to retrieve from the table.
10227	// These attributes can include scalars, sets, or elements of a JSON document.
10228	// The attributes in the ProjectionExpression must be separated by commas.
10229	//
10230	// If no attribute names are specified, then all attributes will be returned.
10231	// If any of the requested attributes are not found, they will not appear in
10232	// the result.
10233	//
10234	// For more information, see Accessing Item Attributes (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.AccessingItemAttributes.html)
10235	// in the Amazon DynamoDB Developer Guide.
10236	ProjectionExpression *string `type:"string"`
10237}
10238
10239// String returns the string representation
10240func (s KeysAndAttributes) String() string {
10241	return awsutil.Prettify(s)
10242}
10243
10244// GoString returns the string representation
10245func (s KeysAndAttributes) GoString() string {
10246	return s.String()
10247}
10248
10249// Validate inspects the fields of the type to determine if they are valid.
10250func (s *KeysAndAttributes) Validate() error {
10251	invalidParams := request.ErrInvalidParams{Context: "KeysAndAttributes"}
10252	if s.AttributesToGet != nil && len(s.AttributesToGet) < 1 {
10253		invalidParams.Add(request.NewErrParamMinLen("AttributesToGet", 1))
10254	}
10255	if s.Keys == nil {
10256		invalidParams.Add(request.NewErrParamRequired("Keys"))
10257	}
10258	if s.Keys != nil && len(s.Keys) < 1 {
10259		invalidParams.Add(request.NewErrParamMinLen("Keys", 1))
10260	}
10261
10262	if invalidParams.Len() > 0 {
10263		return invalidParams
10264	}
10265	return nil
10266}
10267
10268// SetAttributesToGet sets the AttributesToGet field's value.
10269func (s *KeysAndAttributes) SetAttributesToGet(v []*string) *KeysAndAttributes {
10270	s.AttributesToGet = v
10271	return s
10272}
10273
10274// SetConsistentRead sets the ConsistentRead field's value.
10275func (s *KeysAndAttributes) SetConsistentRead(v bool) *KeysAndAttributes {
10276	s.ConsistentRead = &v
10277	return s
10278}
10279
10280// SetExpressionAttributeNames sets the ExpressionAttributeNames field's value.
10281func (s *KeysAndAttributes) SetExpressionAttributeNames(v map[string]*string) *KeysAndAttributes {
10282	s.ExpressionAttributeNames = v
10283	return s
10284}
10285
10286// SetKeys sets the Keys field's value.
10287func (s *KeysAndAttributes) SetKeys(v []map[string]*AttributeValue) *KeysAndAttributes {
10288	s.Keys = v
10289	return s
10290}
10291
10292// SetProjectionExpression sets the ProjectionExpression field's value.
10293func (s *KeysAndAttributes) SetProjectionExpression(v string) *KeysAndAttributes {
10294	s.ProjectionExpression = &v
10295	return s
10296}
10297
10298type ListBackupsInput struct {
10299	_ struct{} `type:"structure"`
10300
10301	// The backups from the table specified by BackupType are listed.
10302	//
10303	// Where BackupType can be:
10304	//
10305	//    * USER - On-demand backup created by you.
10306	//
10307	//    * SYSTEM - On-demand backup automatically created by DynamoDB.
10308	//
10309	//    * ALL - All types of on-demand backups (USER and SYSTEM).
10310	BackupType *string `type:"string" enum:"BackupTypeFilter"`
10311
10312	// LastEvaluatedBackupArn is the Amazon Resource Name (ARN) of the backup last
10313	// evaluated when the current page of results was returned, inclusive of the
10314	// current page of results. This value may be specified as the ExclusiveStartBackupArn
10315	// of a new ListBackups operation in order to fetch the next page of results.
10316	ExclusiveStartBackupArn *string `min:"37" type:"string"`
10317
10318	// Maximum number of backups to return at once.
10319	Limit *int64 `min:"1" type:"integer"`
10320
10321	// The backups from the table specified by TableName are listed.
10322	TableName *string `min:"3" type:"string"`
10323
10324	// Only backups created after this time are listed. TimeRangeLowerBound is inclusive.
10325	TimeRangeLowerBound *time.Time `type:"timestamp"`
10326
10327	// Only backups created before this time are listed. TimeRangeUpperBound is
10328	// exclusive.
10329	TimeRangeUpperBound *time.Time `type:"timestamp"`
10330}
10331
10332// String returns the string representation
10333func (s ListBackupsInput) String() string {
10334	return awsutil.Prettify(s)
10335}
10336
10337// GoString returns the string representation
10338func (s ListBackupsInput) GoString() string {
10339	return s.String()
10340}
10341
10342// Validate inspects the fields of the type to determine if they are valid.
10343func (s *ListBackupsInput) Validate() error {
10344	invalidParams := request.ErrInvalidParams{Context: "ListBackupsInput"}
10345	if s.ExclusiveStartBackupArn != nil && len(*s.ExclusiveStartBackupArn) < 37 {
10346		invalidParams.Add(request.NewErrParamMinLen("ExclusiveStartBackupArn", 37))
10347	}
10348	if s.Limit != nil && *s.Limit < 1 {
10349		invalidParams.Add(request.NewErrParamMinValue("Limit", 1))
10350	}
10351	if s.TableName != nil && len(*s.TableName) < 3 {
10352		invalidParams.Add(request.NewErrParamMinLen("TableName", 3))
10353	}
10354
10355	if invalidParams.Len() > 0 {
10356		return invalidParams
10357	}
10358	return nil
10359}
10360
10361// SetBackupType sets the BackupType field's value.
10362func (s *ListBackupsInput) SetBackupType(v string) *ListBackupsInput {
10363	s.BackupType = &v
10364	return s
10365}
10366
10367// SetExclusiveStartBackupArn sets the ExclusiveStartBackupArn field's value.
10368func (s *ListBackupsInput) SetExclusiveStartBackupArn(v string) *ListBackupsInput {
10369	s.ExclusiveStartBackupArn = &v
10370	return s
10371}
10372
10373// SetLimit sets the Limit field's value.
10374func (s *ListBackupsInput) SetLimit(v int64) *ListBackupsInput {
10375	s.Limit = &v
10376	return s
10377}
10378
10379// SetTableName sets the TableName field's value.
10380func (s *ListBackupsInput) SetTableName(v string) *ListBackupsInput {
10381	s.TableName = &v
10382	return s
10383}
10384
10385// SetTimeRangeLowerBound sets the TimeRangeLowerBound field's value.
10386func (s *ListBackupsInput) SetTimeRangeLowerBound(v time.Time) *ListBackupsInput {
10387	s.TimeRangeLowerBound = &v
10388	return s
10389}
10390
10391// SetTimeRangeUpperBound sets the TimeRangeUpperBound field's value.
10392func (s *ListBackupsInput) SetTimeRangeUpperBound(v time.Time) *ListBackupsInput {
10393	s.TimeRangeUpperBound = &v
10394	return s
10395}
10396
10397type ListBackupsOutput struct {
10398	_ struct{} `type:"structure"`
10399
10400	// List of BackupSummary objects.
10401	BackupSummaries []*BackupSummary `type:"list"`
10402
10403	// The ARN of the backup last evaluated when the current page of results was
10404	// returned, inclusive of the current page of results. This value may be specified
10405	// as the ExclusiveStartBackupArn of a new ListBackups operation in order to
10406	// fetch the next page of results.
10407	//
10408	// If LastEvaluatedBackupArn is empty, then the last page of results has been
10409	// processed and there are no more results to be retrieved.
10410	//
10411	// If LastEvaluatedBackupArn is not empty, this may or may not indicate that
10412	// there is more data to be returned. All results are guaranteed to have been
10413	// returned if and only if no value for LastEvaluatedBackupArn is returned.
10414	LastEvaluatedBackupArn *string `min:"37" type:"string"`
10415}
10416
10417// String returns the string representation
10418func (s ListBackupsOutput) String() string {
10419	return awsutil.Prettify(s)
10420}
10421
10422// GoString returns the string representation
10423func (s ListBackupsOutput) GoString() string {
10424	return s.String()
10425}
10426
10427// SetBackupSummaries sets the BackupSummaries field's value.
10428func (s *ListBackupsOutput) SetBackupSummaries(v []*BackupSummary) *ListBackupsOutput {
10429	s.BackupSummaries = v
10430	return s
10431}
10432
10433// SetLastEvaluatedBackupArn sets the LastEvaluatedBackupArn field's value.
10434func (s *ListBackupsOutput) SetLastEvaluatedBackupArn(v string) *ListBackupsOutput {
10435	s.LastEvaluatedBackupArn = &v
10436	return s
10437}
10438
10439type ListGlobalTablesInput struct {
10440	_ struct{} `type:"structure"`
10441
10442	// The first global table name that this operation will evaluate.
10443	ExclusiveStartGlobalTableName *string `min:"3" type:"string"`
10444
10445	// The maximum number of table names to return.
10446	Limit *int64 `min:"1" type:"integer"`
10447
10448	// Lists the global tables in a specific Region.
10449	RegionName *string `type:"string"`
10450}
10451
10452// String returns the string representation
10453func (s ListGlobalTablesInput) String() string {
10454	return awsutil.Prettify(s)
10455}
10456
10457// GoString returns the string representation
10458func (s ListGlobalTablesInput) GoString() string {
10459	return s.String()
10460}
10461
10462// Validate inspects the fields of the type to determine if they are valid.
10463func (s *ListGlobalTablesInput) Validate() error {
10464	invalidParams := request.ErrInvalidParams{Context: "ListGlobalTablesInput"}
10465	if s.ExclusiveStartGlobalTableName != nil && len(*s.ExclusiveStartGlobalTableName) < 3 {
10466		invalidParams.Add(request.NewErrParamMinLen("ExclusiveStartGlobalTableName", 3))
10467	}
10468	if s.Limit != nil && *s.Limit < 1 {
10469		invalidParams.Add(request.NewErrParamMinValue("Limit", 1))
10470	}
10471
10472	if invalidParams.Len() > 0 {
10473		return invalidParams
10474	}
10475	return nil
10476}
10477
10478// SetExclusiveStartGlobalTableName sets the ExclusiveStartGlobalTableName field's value.
10479func (s *ListGlobalTablesInput) SetExclusiveStartGlobalTableName(v string) *ListGlobalTablesInput {
10480	s.ExclusiveStartGlobalTableName = &v
10481	return s
10482}
10483
10484// SetLimit sets the Limit field's value.
10485func (s *ListGlobalTablesInput) SetLimit(v int64) *ListGlobalTablesInput {
10486	s.Limit = &v
10487	return s
10488}
10489
10490// SetRegionName sets the RegionName field's value.
10491func (s *ListGlobalTablesInput) SetRegionName(v string) *ListGlobalTablesInput {
10492	s.RegionName = &v
10493	return s
10494}
10495
10496type ListGlobalTablesOutput struct {
10497	_ struct{} `type:"structure"`
10498
10499	// List of global table names.
10500	GlobalTables []*GlobalTable `type:"list"`
10501
10502	// Last evaluated global table name.
10503	LastEvaluatedGlobalTableName *string `min:"3" type:"string"`
10504}
10505
10506// String returns the string representation
10507func (s ListGlobalTablesOutput) String() string {
10508	return awsutil.Prettify(s)
10509}
10510
10511// GoString returns the string representation
10512func (s ListGlobalTablesOutput) GoString() string {
10513	return s.String()
10514}
10515
10516// SetGlobalTables sets the GlobalTables field's value.
10517func (s *ListGlobalTablesOutput) SetGlobalTables(v []*GlobalTable) *ListGlobalTablesOutput {
10518	s.GlobalTables = v
10519	return s
10520}
10521
10522// SetLastEvaluatedGlobalTableName sets the LastEvaluatedGlobalTableName field's value.
10523func (s *ListGlobalTablesOutput) SetLastEvaluatedGlobalTableName(v string) *ListGlobalTablesOutput {
10524	s.LastEvaluatedGlobalTableName = &v
10525	return s
10526}
10527
10528// Represents the input of a ListTables operation.
10529type ListTablesInput struct {
10530	_ struct{} `type:"structure"`
10531
10532	// The first table name that this operation will evaluate. Use the value that
10533	// was returned for LastEvaluatedTableName in a previous operation, so that
10534	// you can obtain the next page of results.
10535	ExclusiveStartTableName *string `min:"3" type:"string"`
10536
10537	// A maximum number of table names to return. If this parameter is not specified,
10538	// the limit is 100.
10539	Limit *int64 `min:"1" type:"integer"`
10540}
10541
10542// String returns the string representation
10543func (s ListTablesInput) String() string {
10544	return awsutil.Prettify(s)
10545}
10546
10547// GoString returns the string representation
10548func (s ListTablesInput) GoString() string {
10549	return s.String()
10550}
10551
10552// Validate inspects the fields of the type to determine if they are valid.
10553func (s *ListTablesInput) Validate() error {
10554	invalidParams := request.ErrInvalidParams{Context: "ListTablesInput"}
10555	if s.ExclusiveStartTableName != nil && len(*s.ExclusiveStartTableName) < 3 {
10556		invalidParams.Add(request.NewErrParamMinLen("ExclusiveStartTableName", 3))
10557	}
10558	if s.Limit != nil && *s.Limit < 1 {
10559		invalidParams.Add(request.NewErrParamMinValue("Limit", 1))
10560	}
10561
10562	if invalidParams.Len() > 0 {
10563		return invalidParams
10564	}
10565	return nil
10566}
10567
10568// SetExclusiveStartTableName sets the ExclusiveStartTableName field's value.
10569func (s *ListTablesInput) SetExclusiveStartTableName(v string) *ListTablesInput {
10570	s.ExclusiveStartTableName = &v
10571	return s
10572}
10573
10574// SetLimit sets the Limit field's value.
10575func (s *ListTablesInput) SetLimit(v int64) *ListTablesInput {
10576	s.Limit = &v
10577	return s
10578}
10579
10580// Represents the output of a ListTables operation.
10581type ListTablesOutput struct {
10582	_ struct{} `type:"structure"`
10583
10584	// The name of the last table in the current page of results. Use this value
10585	// as the ExclusiveStartTableName in a new request to obtain the next page of
10586	// results, until all the table names are returned.
10587	//
10588	// If you do not receive a LastEvaluatedTableName value in the response, this
10589	// means that there are no more table names to be retrieved.
10590	LastEvaluatedTableName *string `min:"3" type:"string"`
10591
10592	// The names of the tables associated with the current account at the current
10593	// endpoint. The maximum size of this array is 100.
10594	//
10595	// If LastEvaluatedTableName also appears in the output, you can use this value
10596	// as the ExclusiveStartTableName parameter in a subsequent ListTables request
10597	// and obtain the next page of results.
10598	TableNames []*string `type:"list"`
10599}
10600
10601// String returns the string representation
10602func (s ListTablesOutput) String() string {
10603	return awsutil.Prettify(s)
10604}
10605
10606// GoString returns the string representation
10607func (s ListTablesOutput) GoString() string {
10608	return s.String()
10609}
10610
10611// SetLastEvaluatedTableName sets the LastEvaluatedTableName field's value.
10612func (s *ListTablesOutput) SetLastEvaluatedTableName(v string) *ListTablesOutput {
10613	s.LastEvaluatedTableName = &v
10614	return s
10615}
10616
10617// SetTableNames sets the TableNames field's value.
10618func (s *ListTablesOutput) SetTableNames(v []*string) *ListTablesOutput {
10619	s.TableNames = v
10620	return s
10621}
10622
10623type ListTagsOfResourceInput struct {
10624	_ struct{} `type:"structure"`
10625
10626	// An optional string that, if supplied, must be copied from the output of a
10627	// previous call to ListTagOfResource. When provided in this manner, this API
10628	// fetches the next page of results.
10629	NextToken *string `type:"string"`
10630
10631	// The Amazon DynamoDB resource with tags to be listed. This value is an Amazon
10632	// Resource Name (ARN).
10633	//
10634	// ResourceArn is a required field
10635	ResourceArn *string `min:"1" type:"string" required:"true"`
10636}
10637
10638// String returns the string representation
10639func (s ListTagsOfResourceInput) String() string {
10640	return awsutil.Prettify(s)
10641}
10642
10643// GoString returns the string representation
10644func (s ListTagsOfResourceInput) GoString() string {
10645	return s.String()
10646}
10647
10648// Validate inspects the fields of the type to determine if they are valid.
10649func (s *ListTagsOfResourceInput) Validate() error {
10650	invalidParams := request.ErrInvalidParams{Context: "ListTagsOfResourceInput"}
10651	if s.ResourceArn == nil {
10652		invalidParams.Add(request.NewErrParamRequired("ResourceArn"))
10653	}
10654	if s.ResourceArn != nil && len(*s.ResourceArn) < 1 {
10655		invalidParams.Add(request.NewErrParamMinLen("ResourceArn", 1))
10656	}
10657
10658	if invalidParams.Len() > 0 {
10659		return invalidParams
10660	}
10661	return nil
10662}
10663
10664// SetNextToken sets the NextToken field's value.
10665func (s *ListTagsOfResourceInput) SetNextToken(v string) *ListTagsOfResourceInput {
10666	s.NextToken = &v
10667	return s
10668}
10669
10670// SetResourceArn sets the ResourceArn field's value.
10671func (s *ListTagsOfResourceInput) SetResourceArn(v string) *ListTagsOfResourceInput {
10672	s.ResourceArn = &v
10673	return s
10674}
10675
10676type ListTagsOfResourceOutput struct {
10677	_ struct{} `type:"structure"`
10678
10679	// If this value is returned, there are additional results to be displayed.
10680	// To retrieve them, call ListTagsOfResource again, with NextToken set to this
10681	// value.
10682	NextToken *string `type:"string"`
10683
10684	// The tags currently associated with the Amazon DynamoDB resource.
10685	Tags []*Tag `type:"list"`
10686}
10687
10688// String returns the string representation
10689func (s ListTagsOfResourceOutput) String() string {
10690	return awsutil.Prettify(s)
10691}
10692
10693// GoString returns the string representation
10694func (s ListTagsOfResourceOutput) GoString() string {
10695	return s.String()
10696}
10697
10698// SetNextToken sets the NextToken field's value.
10699func (s *ListTagsOfResourceOutput) SetNextToken(v string) *ListTagsOfResourceOutput {
10700	s.NextToken = &v
10701	return s
10702}
10703
10704// SetTags sets the Tags field's value.
10705func (s *ListTagsOfResourceOutput) SetTags(v []*Tag) *ListTagsOfResourceOutput {
10706	s.Tags = v
10707	return s
10708}
10709
10710// Represents the properties of a local secondary index.
10711type LocalSecondaryIndex struct {
10712	_ struct{} `type:"structure"`
10713
10714	// The name of the local secondary index. The name must be unique among all
10715	// other indexes on this table.
10716	//
10717	// IndexName is a required field
10718	IndexName *string `min:"3" type:"string" required:"true"`
10719
10720	// The complete key schema for the local secondary index, consisting of one
10721	// or more pairs of attribute names and key types:
10722	//
10723	//    * HASH - partition key
10724	//
10725	//    * RANGE - sort key
10726	//
10727	// The partition key of an item is also known as its hash attribute. The term
10728	// "hash attribute" derives from DynamoDB' usage of an internal hash function
10729	// to evenly distribute data items across partitions, based on their partition
10730	// key values.
10731	//
10732	// The sort key of an item is also known as its range attribute. The term "range
10733	// attribute" derives from the way DynamoDB stores items with the same partition
10734	// key physically close together, in sorted order by the sort key value.
10735	//
10736	// KeySchema is a required field
10737	KeySchema []*KeySchemaElement `min:"1" type:"list" required:"true"`
10738
10739	// Represents attributes that are copied (projected) from the table into the
10740	// local secondary index. These are in addition to the primary key attributes
10741	// and index key attributes, which are automatically projected.
10742	//
10743	// Projection is a required field
10744	Projection *Projection `type:"structure" required:"true"`
10745}
10746
10747// String returns the string representation
10748func (s LocalSecondaryIndex) String() string {
10749	return awsutil.Prettify(s)
10750}
10751
10752// GoString returns the string representation
10753func (s LocalSecondaryIndex) GoString() string {
10754	return s.String()
10755}
10756
10757// Validate inspects the fields of the type to determine if they are valid.
10758func (s *LocalSecondaryIndex) Validate() error {
10759	invalidParams := request.ErrInvalidParams{Context: "LocalSecondaryIndex"}
10760	if s.IndexName == nil {
10761		invalidParams.Add(request.NewErrParamRequired("IndexName"))
10762	}
10763	if s.IndexName != nil && len(*s.IndexName) < 3 {
10764		invalidParams.Add(request.NewErrParamMinLen("IndexName", 3))
10765	}
10766	if s.KeySchema == nil {
10767		invalidParams.Add(request.NewErrParamRequired("KeySchema"))
10768	}
10769	if s.KeySchema != nil && len(s.KeySchema) < 1 {
10770		invalidParams.Add(request.NewErrParamMinLen("KeySchema", 1))
10771	}
10772	if s.Projection == nil {
10773		invalidParams.Add(request.NewErrParamRequired("Projection"))
10774	}
10775	if s.KeySchema != nil {
10776		for i, v := range s.KeySchema {
10777			if v == nil {
10778				continue
10779			}
10780			if err := v.Validate(); err != nil {
10781				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "KeySchema", i), err.(request.ErrInvalidParams))
10782			}
10783		}
10784	}
10785	if s.Projection != nil {
10786		if err := s.Projection.Validate(); err != nil {
10787			invalidParams.AddNested("Projection", err.(request.ErrInvalidParams))
10788		}
10789	}
10790
10791	if invalidParams.Len() > 0 {
10792		return invalidParams
10793	}
10794	return nil
10795}
10796
10797// SetIndexName sets the IndexName field's value.
10798func (s *LocalSecondaryIndex) SetIndexName(v string) *LocalSecondaryIndex {
10799	s.IndexName = &v
10800	return s
10801}
10802
10803// SetKeySchema sets the KeySchema field's value.
10804func (s *LocalSecondaryIndex) SetKeySchema(v []*KeySchemaElement) *LocalSecondaryIndex {
10805	s.KeySchema = v
10806	return s
10807}
10808
10809// SetProjection sets the Projection field's value.
10810func (s *LocalSecondaryIndex) SetProjection(v *Projection) *LocalSecondaryIndex {
10811	s.Projection = v
10812	return s
10813}
10814
10815// Represents the properties of a local secondary index.
10816type LocalSecondaryIndexDescription struct {
10817	_ struct{} `type:"structure"`
10818
10819	// The Amazon Resource Name (ARN) that uniquely identifies the index.
10820	IndexArn *string `type:"string"`
10821
10822	// Represents the name of the local secondary index.
10823	IndexName *string `min:"3" type:"string"`
10824
10825	// The total size of the specified index, in bytes. DynamoDB updates this value
10826	// approximately every six hours. Recent changes might not be reflected in this
10827	// value.
10828	IndexSizeBytes *int64 `type:"long"`
10829
10830	// The number of items in the specified index. DynamoDB updates this value approximately
10831	// every six hours. Recent changes might not be reflected in this value.
10832	ItemCount *int64 `type:"long"`
10833
10834	// The complete key schema for the local secondary index, consisting of one
10835	// or more pairs of attribute names and key types:
10836	//
10837	//    * HASH - partition key
10838	//
10839	//    * RANGE - sort key
10840	//
10841	// The partition key of an item is also known as its hash attribute. The term
10842	// "hash attribute" derives from DynamoDB' usage of an internal hash function
10843	// to evenly distribute data items across partitions, based on their partition
10844	// key values.
10845	//
10846	// The sort key of an item is also known as its range attribute. The term "range
10847	// attribute" derives from the way DynamoDB stores items with the same partition
10848	// key physically close together, in sorted order by the sort key value.
10849	KeySchema []*KeySchemaElement `min:"1" type:"list"`
10850
10851	// Represents attributes that are copied (projected) from the table into the
10852	// global secondary index. These are in addition to the primary key attributes
10853	// and index key attributes, which are automatically projected.
10854	Projection *Projection `type:"structure"`
10855}
10856
10857// String returns the string representation
10858func (s LocalSecondaryIndexDescription) String() string {
10859	return awsutil.Prettify(s)
10860}
10861
10862// GoString returns the string representation
10863func (s LocalSecondaryIndexDescription) GoString() string {
10864	return s.String()
10865}
10866
10867// SetIndexArn sets the IndexArn field's value.
10868func (s *LocalSecondaryIndexDescription) SetIndexArn(v string) *LocalSecondaryIndexDescription {
10869	s.IndexArn = &v
10870	return s
10871}
10872
10873// SetIndexName sets the IndexName field's value.
10874func (s *LocalSecondaryIndexDescription) SetIndexName(v string) *LocalSecondaryIndexDescription {
10875	s.IndexName = &v
10876	return s
10877}
10878
10879// SetIndexSizeBytes sets the IndexSizeBytes field's value.
10880func (s *LocalSecondaryIndexDescription) SetIndexSizeBytes(v int64) *LocalSecondaryIndexDescription {
10881	s.IndexSizeBytes = &v
10882	return s
10883}
10884
10885// SetItemCount sets the ItemCount field's value.
10886func (s *LocalSecondaryIndexDescription) SetItemCount(v int64) *LocalSecondaryIndexDescription {
10887	s.ItemCount = &v
10888	return s
10889}
10890
10891// SetKeySchema sets the KeySchema field's value.
10892func (s *LocalSecondaryIndexDescription) SetKeySchema(v []*KeySchemaElement) *LocalSecondaryIndexDescription {
10893	s.KeySchema = v
10894	return s
10895}
10896
10897// SetProjection sets the Projection field's value.
10898func (s *LocalSecondaryIndexDescription) SetProjection(v *Projection) *LocalSecondaryIndexDescription {
10899	s.Projection = v
10900	return s
10901}
10902
10903// Represents the properties of a local secondary index for the table when the
10904// backup was created.
10905type LocalSecondaryIndexInfo struct {
10906	_ struct{} `type:"structure"`
10907
10908	// Represents the name of the local secondary index.
10909	IndexName *string `min:"3" type:"string"`
10910
10911	// The complete key schema for a local secondary index, which consists of one
10912	// or more pairs of attribute names and key types:
10913	//
10914	//    * HASH - partition key
10915	//
10916	//    * RANGE - sort key
10917	//
10918	// The partition key of an item is also known as its hash attribute. The term
10919	// "hash attribute" derives from DynamoDB' usage of an internal hash function
10920	// to evenly distribute data items across partitions, based on their partition
10921	// key values.
10922	//
10923	// The sort key of an item is also known as its range attribute. The term "range
10924	// attribute" derives from the way DynamoDB stores items with the same partition
10925	// key physically close together, in sorted order by the sort key value.
10926	KeySchema []*KeySchemaElement `min:"1" type:"list"`
10927
10928	// Represents attributes that are copied (projected) from the table into the
10929	// global secondary index. These are in addition to the primary key attributes
10930	// and index key attributes, which are automatically projected.
10931	Projection *Projection `type:"structure"`
10932}
10933
10934// String returns the string representation
10935func (s LocalSecondaryIndexInfo) String() string {
10936	return awsutil.Prettify(s)
10937}
10938
10939// GoString returns the string representation
10940func (s LocalSecondaryIndexInfo) GoString() string {
10941	return s.String()
10942}
10943
10944// SetIndexName sets the IndexName field's value.
10945func (s *LocalSecondaryIndexInfo) SetIndexName(v string) *LocalSecondaryIndexInfo {
10946	s.IndexName = &v
10947	return s
10948}
10949
10950// SetKeySchema sets the KeySchema field's value.
10951func (s *LocalSecondaryIndexInfo) SetKeySchema(v []*KeySchemaElement) *LocalSecondaryIndexInfo {
10952	s.KeySchema = v
10953	return s
10954}
10955
10956// SetProjection sets the Projection field's value.
10957func (s *LocalSecondaryIndexInfo) SetProjection(v *Projection) *LocalSecondaryIndexInfo {
10958	s.Projection = v
10959	return s
10960}
10961
10962// The description of the point in time settings applied to the table.
10963type PointInTimeRecoveryDescription struct {
10964	_ struct{} `type:"structure"`
10965
10966	// Specifies the earliest point in time you can restore your table to. It You
10967	// can restore your table to any point in time during the last 35 days.
10968	EarliestRestorableDateTime *time.Time `type:"timestamp"`
10969
10970	// LatestRestorableDateTime is typically 5 minutes before the current time.
10971	LatestRestorableDateTime *time.Time `type:"timestamp"`
10972
10973	// The current state of point in time recovery:
10974	//
10975	//    * ENABLING - Point in time recovery is being enabled.
10976	//
10977	//    * ENABLED - Point in time recovery is enabled.
10978	//
10979	//    * DISABLED - Point in time recovery is disabled.
10980	PointInTimeRecoveryStatus *string `type:"string" enum:"PointInTimeRecoveryStatus"`
10981}
10982
10983// String returns the string representation
10984func (s PointInTimeRecoveryDescription) String() string {
10985	return awsutil.Prettify(s)
10986}
10987
10988// GoString returns the string representation
10989func (s PointInTimeRecoveryDescription) GoString() string {
10990	return s.String()
10991}
10992
10993// SetEarliestRestorableDateTime sets the EarliestRestorableDateTime field's value.
10994func (s *PointInTimeRecoveryDescription) SetEarliestRestorableDateTime(v time.Time) *PointInTimeRecoveryDescription {
10995	s.EarliestRestorableDateTime = &v
10996	return s
10997}
10998
10999// SetLatestRestorableDateTime sets the LatestRestorableDateTime field's value.
11000func (s *PointInTimeRecoveryDescription) SetLatestRestorableDateTime(v time.Time) *PointInTimeRecoveryDescription {
11001	s.LatestRestorableDateTime = &v
11002	return s
11003}
11004
11005// SetPointInTimeRecoveryStatus sets the PointInTimeRecoveryStatus field's value.
11006func (s *PointInTimeRecoveryDescription) SetPointInTimeRecoveryStatus(v string) *PointInTimeRecoveryDescription {
11007	s.PointInTimeRecoveryStatus = &v
11008	return s
11009}
11010
11011// Represents the settings used to enable point in time recovery.
11012type PointInTimeRecoverySpecification struct {
11013	_ struct{} `type:"structure"`
11014
11015	// Indicates whether point in time recovery is enabled (true) or disabled (false)
11016	// on the table.
11017	//
11018	// PointInTimeRecoveryEnabled is a required field
11019	PointInTimeRecoveryEnabled *bool `type:"boolean" required:"true"`
11020}
11021
11022// String returns the string representation
11023func (s PointInTimeRecoverySpecification) String() string {
11024	return awsutil.Prettify(s)
11025}
11026
11027// GoString returns the string representation
11028func (s PointInTimeRecoverySpecification) GoString() string {
11029	return s.String()
11030}
11031
11032// Validate inspects the fields of the type to determine if they are valid.
11033func (s *PointInTimeRecoverySpecification) Validate() error {
11034	invalidParams := request.ErrInvalidParams{Context: "PointInTimeRecoverySpecification"}
11035	if s.PointInTimeRecoveryEnabled == nil {
11036		invalidParams.Add(request.NewErrParamRequired("PointInTimeRecoveryEnabled"))
11037	}
11038
11039	if invalidParams.Len() > 0 {
11040		return invalidParams
11041	}
11042	return nil
11043}
11044
11045// SetPointInTimeRecoveryEnabled sets the PointInTimeRecoveryEnabled field's value.
11046func (s *PointInTimeRecoverySpecification) SetPointInTimeRecoveryEnabled(v bool) *PointInTimeRecoverySpecification {
11047	s.PointInTimeRecoveryEnabled = &v
11048	return s
11049}
11050
11051// Represents attributes that are copied (projected) from the table into an
11052// index. These are in addition to the primary key attributes and index key
11053// attributes, which are automatically projected.
11054type Projection struct {
11055	_ struct{} `type:"structure"`
11056
11057	// Represents the non-key attribute names which will be projected into the index.
11058	//
11059	// For local secondary indexes, the total count of NonKeyAttributes summed across
11060	// all of the local secondary indexes, must not exceed 20. If you project the
11061	// same attribute into two different indexes, this counts as two distinct attributes
11062	// when determining the total.
11063	NonKeyAttributes []*string `min:"1" type:"list"`
11064
11065	// The set of attributes that are projected into the index:
11066	//
11067	//    * KEYS_ONLY - Only the index and primary keys are projected into the index.
11068	//
11069	//    * INCLUDE - Only the specified table attributes are projected into the
11070	//    index. The list of projected attributes are in NonKeyAttributes.
11071	//
11072	//    * ALL - All of the table attributes are projected into the index.
11073	ProjectionType *string `type:"string" enum:"ProjectionType"`
11074}
11075
11076// String returns the string representation
11077func (s Projection) String() string {
11078	return awsutil.Prettify(s)
11079}
11080
11081// GoString returns the string representation
11082func (s Projection) GoString() string {
11083	return s.String()
11084}
11085
11086// Validate inspects the fields of the type to determine if they are valid.
11087func (s *Projection) Validate() error {
11088	invalidParams := request.ErrInvalidParams{Context: "Projection"}
11089	if s.NonKeyAttributes != nil && len(s.NonKeyAttributes) < 1 {
11090		invalidParams.Add(request.NewErrParamMinLen("NonKeyAttributes", 1))
11091	}
11092
11093	if invalidParams.Len() > 0 {
11094		return invalidParams
11095	}
11096	return nil
11097}
11098
11099// SetNonKeyAttributes sets the NonKeyAttributes field's value.
11100func (s *Projection) SetNonKeyAttributes(v []*string) *Projection {
11101	s.NonKeyAttributes = v
11102	return s
11103}
11104
11105// SetProjectionType sets the ProjectionType field's value.
11106func (s *Projection) SetProjectionType(v string) *Projection {
11107	s.ProjectionType = &v
11108	return s
11109}
11110
11111// Represents the provisioned throughput settings for a specified table or index.
11112// The settings can be modified using the UpdateTable operation.
11113//
11114// For current minimum and maximum provisioned throughput values, see Limits
11115// (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Limits.html)
11116// in the Amazon DynamoDB Developer Guide.
11117type ProvisionedThroughput struct {
11118	_ struct{} `type:"structure"`
11119
11120	// The maximum number of strongly consistent reads consumed per second before
11121	// DynamoDB returns a ThrottlingException. For more information, see Specifying
11122	// Read and Write Requirements (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/WorkingWithTables.html#ProvisionedThroughput)
11123	// in the Amazon DynamoDB Developer Guide.
11124	//
11125	// If read/write capacity mode is PAY_PER_REQUEST the value is set to 0.
11126	//
11127	// ReadCapacityUnits is a required field
11128	ReadCapacityUnits *int64 `min:"1" type:"long" required:"true"`
11129
11130	// The maximum number of writes consumed per second before DynamoDB returns
11131	// a ThrottlingException. For more information, see Specifying Read and Write
11132	// Requirements (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/WorkingWithTables.html#ProvisionedThroughput)
11133	// in the Amazon DynamoDB Developer Guide.
11134	//
11135	// If read/write capacity mode is PAY_PER_REQUEST the value is set to 0.
11136	//
11137	// WriteCapacityUnits is a required field
11138	WriteCapacityUnits *int64 `min:"1" type:"long" required:"true"`
11139}
11140
11141// String returns the string representation
11142func (s ProvisionedThroughput) String() string {
11143	return awsutil.Prettify(s)
11144}
11145
11146// GoString returns the string representation
11147func (s ProvisionedThroughput) GoString() string {
11148	return s.String()
11149}
11150
11151// Validate inspects the fields of the type to determine if they are valid.
11152func (s *ProvisionedThroughput) Validate() error {
11153	invalidParams := request.ErrInvalidParams{Context: "ProvisionedThroughput"}
11154	if s.ReadCapacityUnits == nil {
11155		invalidParams.Add(request.NewErrParamRequired("ReadCapacityUnits"))
11156	}
11157	if s.ReadCapacityUnits != nil && *s.ReadCapacityUnits < 1 {
11158		invalidParams.Add(request.NewErrParamMinValue("ReadCapacityUnits", 1))
11159	}
11160	if s.WriteCapacityUnits == nil {
11161		invalidParams.Add(request.NewErrParamRequired("WriteCapacityUnits"))
11162	}
11163	if s.WriteCapacityUnits != nil && *s.WriteCapacityUnits < 1 {
11164		invalidParams.Add(request.NewErrParamMinValue("WriteCapacityUnits", 1))
11165	}
11166
11167	if invalidParams.Len() > 0 {
11168		return invalidParams
11169	}
11170	return nil
11171}
11172
11173// SetReadCapacityUnits sets the ReadCapacityUnits field's value.
11174func (s *ProvisionedThroughput) SetReadCapacityUnits(v int64) *ProvisionedThroughput {
11175	s.ReadCapacityUnits = &v
11176	return s
11177}
11178
11179// SetWriteCapacityUnits sets the WriteCapacityUnits field's value.
11180func (s *ProvisionedThroughput) SetWriteCapacityUnits(v int64) *ProvisionedThroughput {
11181	s.WriteCapacityUnits = &v
11182	return s
11183}
11184
11185// Represents the provisioned throughput settings for the table, consisting
11186// of read and write capacity units, along with data about increases and decreases.
11187type ProvisionedThroughputDescription struct {
11188	_ struct{} `type:"structure"`
11189
11190	// The date and time of the last provisioned throughput decrease for this table.
11191	LastDecreaseDateTime *time.Time `type:"timestamp"`
11192
11193	// The date and time of the last provisioned throughput increase for this table.
11194	LastIncreaseDateTime *time.Time `type:"timestamp"`
11195
11196	// The number of provisioned throughput decreases for this table during this
11197	// UTC calendar day. For current maximums on provisioned throughput decreases,
11198	// see Limits (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Limits.html)
11199	// in the Amazon DynamoDB Developer Guide.
11200	NumberOfDecreasesToday *int64 `min:"1" type:"long"`
11201
11202	// The maximum number of strongly consistent reads consumed per second before
11203	// DynamoDB returns a ThrottlingException. Eventually consistent reads require
11204	// less effort than strongly consistent reads, so a setting of 50 ReadCapacityUnits
11205	// per second provides 100 eventually consistent ReadCapacityUnits per second.
11206	ReadCapacityUnits *int64 `type:"long"`
11207
11208	// The maximum number of writes consumed per second before DynamoDB returns
11209	// a ThrottlingException.
11210	WriteCapacityUnits *int64 `type:"long"`
11211}
11212
11213// String returns the string representation
11214func (s ProvisionedThroughputDescription) String() string {
11215	return awsutil.Prettify(s)
11216}
11217
11218// GoString returns the string representation
11219func (s ProvisionedThroughputDescription) GoString() string {
11220	return s.String()
11221}
11222
11223// SetLastDecreaseDateTime sets the LastDecreaseDateTime field's value.
11224func (s *ProvisionedThroughputDescription) SetLastDecreaseDateTime(v time.Time) *ProvisionedThroughputDescription {
11225	s.LastDecreaseDateTime = &v
11226	return s
11227}
11228
11229// SetLastIncreaseDateTime sets the LastIncreaseDateTime field's value.
11230func (s *ProvisionedThroughputDescription) SetLastIncreaseDateTime(v time.Time) *ProvisionedThroughputDescription {
11231	s.LastIncreaseDateTime = &v
11232	return s
11233}
11234
11235// SetNumberOfDecreasesToday sets the NumberOfDecreasesToday field's value.
11236func (s *ProvisionedThroughputDescription) SetNumberOfDecreasesToday(v int64) *ProvisionedThroughputDescription {
11237	s.NumberOfDecreasesToday = &v
11238	return s
11239}
11240
11241// SetReadCapacityUnits sets the ReadCapacityUnits field's value.
11242func (s *ProvisionedThroughputDescription) SetReadCapacityUnits(v int64) *ProvisionedThroughputDescription {
11243	s.ReadCapacityUnits = &v
11244	return s
11245}
11246
11247// SetWriteCapacityUnits sets the WriteCapacityUnits field's value.
11248func (s *ProvisionedThroughputDescription) SetWriteCapacityUnits(v int64) *ProvisionedThroughputDescription {
11249	s.WriteCapacityUnits = &v
11250	return s
11251}
11252
11253// Represents a request to perform a PutItem operation.
11254type Put struct {
11255	_ struct{} `type:"structure"`
11256
11257	// A condition that must be satisfied in order for a conditional update to succeed.
11258	ConditionExpression *string `type:"string"`
11259
11260	// One or more substitution tokens for attribute names in an expression.
11261	ExpressionAttributeNames map[string]*string `type:"map"`
11262
11263	// One or more values that can be substituted in an expression.
11264	ExpressionAttributeValues map[string]*AttributeValue `type:"map"`
11265
11266	// A map of attribute name to attribute values, representing the primary key
11267	// of the item to be written by PutItem. All of the table's primary key attributes
11268	// must be specified, and their data types must match those of the table's key
11269	// schema. If any attributes are present in the item that are part of an index
11270	// key schema for the table, their types must match the index key schema.
11271	//
11272	// Item is a required field
11273	Item map[string]*AttributeValue `type:"map" required:"true"`
11274
11275	// Use ReturnValuesOnConditionCheckFailure to get the item attributes if the
11276	// Put condition fails. For ReturnValuesOnConditionCheckFailure, the valid values
11277	// are: NONE and ALL_OLD.
11278	ReturnValuesOnConditionCheckFailure *string `type:"string" enum:"ReturnValuesOnConditionCheckFailure"`
11279
11280	// Name of the table in which to write the item.
11281	//
11282	// TableName is a required field
11283	TableName *string `min:"3" type:"string" required:"true"`
11284}
11285
11286// String returns the string representation
11287func (s Put) String() string {
11288	return awsutil.Prettify(s)
11289}
11290
11291// GoString returns the string representation
11292func (s Put) GoString() string {
11293	return s.String()
11294}
11295
11296// Validate inspects the fields of the type to determine if they are valid.
11297func (s *Put) Validate() error {
11298	invalidParams := request.ErrInvalidParams{Context: "Put"}
11299	if s.Item == nil {
11300		invalidParams.Add(request.NewErrParamRequired("Item"))
11301	}
11302	if s.TableName == nil {
11303		invalidParams.Add(request.NewErrParamRequired("TableName"))
11304	}
11305	if s.TableName != nil && len(*s.TableName) < 3 {
11306		invalidParams.Add(request.NewErrParamMinLen("TableName", 3))
11307	}
11308
11309	if invalidParams.Len() > 0 {
11310		return invalidParams
11311	}
11312	return nil
11313}
11314
11315// SetConditionExpression sets the ConditionExpression field's value.
11316func (s *Put) SetConditionExpression(v string) *Put {
11317	s.ConditionExpression = &v
11318	return s
11319}
11320
11321// SetExpressionAttributeNames sets the ExpressionAttributeNames field's value.
11322func (s *Put) SetExpressionAttributeNames(v map[string]*string) *Put {
11323	s.ExpressionAttributeNames = v
11324	return s
11325}
11326
11327// SetExpressionAttributeValues sets the ExpressionAttributeValues field's value.
11328func (s *Put) SetExpressionAttributeValues(v map[string]*AttributeValue) *Put {
11329	s.ExpressionAttributeValues = v
11330	return s
11331}
11332
11333// SetItem sets the Item field's value.
11334func (s *Put) SetItem(v map[string]*AttributeValue) *Put {
11335	s.Item = v
11336	return s
11337}
11338
11339// SetReturnValuesOnConditionCheckFailure sets the ReturnValuesOnConditionCheckFailure field's value.
11340func (s *Put) SetReturnValuesOnConditionCheckFailure(v string) *Put {
11341	s.ReturnValuesOnConditionCheckFailure = &v
11342	return s
11343}
11344
11345// SetTableName sets the TableName field's value.
11346func (s *Put) SetTableName(v string) *Put {
11347	s.TableName = &v
11348	return s
11349}
11350
11351// Represents the input of a PutItem operation.
11352type PutItemInput struct {
11353	_ struct{} `type:"structure"`
11354
11355	// A condition that must be satisfied in order for a conditional PutItem operation
11356	// to succeed.
11357	//
11358	// An expression can contain any of the following:
11359	//
11360	//    * Functions: attribute_exists | attribute_not_exists | attribute_type
11361	//    | contains | begins_with | size These function names are case-sensitive.
11362	//
11363	//    * Comparison operators: = | <> | < | > | <= | >= | BETWEEN | IN
11364	//
11365	//    * Logical operators: AND | OR | NOT
11366	//
11367	// For more information on condition expressions, see Condition Expressions
11368	// (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.SpecifyingConditions.html)
11369	// in the Amazon DynamoDB Developer Guide.
11370	ConditionExpression *string `type:"string"`
11371
11372	// This is a legacy parameter. Use ConditionExpression instead. For more information,
11373	// see ConditionalOperator (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/LegacyConditionalParameters.ConditionalOperator.html)
11374	// in the Amazon DynamoDB Developer Guide.
11375	ConditionalOperator *string `type:"string" enum:"ConditionalOperator"`
11376
11377	// This is a legacy parameter. Use ConditionExpression instead. For more information,
11378	// see Expected (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/LegacyConditionalParameters.Expected.html)
11379	// in the Amazon DynamoDB Developer Guide.
11380	Expected map[string]*ExpectedAttributeValue `type:"map"`
11381
11382	// One or more substitution tokens for attribute names in an expression. The
11383	// following are some use cases for using ExpressionAttributeNames:
11384	//
11385	//    * To access an attribute whose name conflicts with a DynamoDB reserved
11386	//    word.
11387	//
11388	//    * To create a placeholder for repeating occurrences of an attribute name
11389	//    in an expression.
11390	//
11391	//    * To prevent special characters in an attribute name from being misinterpreted
11392	//    in an expression.
11393	//
11394	// Use the # character in an expression to dereference an attribute name. For
11395	// example, consider the following attribute name:
11396	//
11397	//    * Percentile
11398	//
11399	// The name of this attribute conflicts with a reserved word, so it cannot be
11400	// used directly in an expression. (For the complete list of reserved words,
11401	// see Reserved Words (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ReservedWords.html)
11402	// in the Amazon DynamoDB Developer Guide). To work around this, you could specify
11403	// the following for ExpressionAttributeNames:
11404	//
11405	//    * {"#P":"Percentile"}
11406	//
11407	// You could then use this substitution in an expression, as in this example:
11408	//
11409	//    * #P = :val
11410	//
11411	// Tokens that begin with the : character are expression attribute values, which
11412	// are placeholders for the actual value at runtime.
11413	//
11414	// For more information on expression attribute names, see Specifying Item Attributes
11415	// (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.AccessingItemAttributes.html)
11416	// in the Amazon DynamoDB Developer Guide.
11417	ExpressionAttributeNames map[string]*string `type:"map"`
11418
11419	// One or more values that can be substituted in an expression.
11420	//
11421	// Use the : (colon) character in an expression to dereference an attribute
11422	// value. For example, suppose that you wanted to check whether the value of
11423	// the ProductStatus attribute was one of the following:
11424	//
11425	// Available | Backordered | Discontinued
11426	//
11427	// You would first need to specify ExpressionAttributeValues as follows:
11428	//
11429	// { ":avail":{"S":"Available"}, ":back":{"S":"Backordered"}, ":disc":{"S":"Discontinued"}
11430	// }
11431	//
11432	// You could then use these values in an expression, such as this:
11433	//
11434	// ProductStatus IN (:avail, :back, :disc)
11435	//
11436	// For more information on expression attribute values, see Condition Expressions
11437	// (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.SpecifyingConditions.html)
11438	// in the Amazon DynamoDB Developer Guide.
11439	ExpressionAttributeValues map[string]*AttributeValue `type:"map"`
11440
11441	// A map of attribute name/value pairs, one for each attribute. Only the primary
11442	// key attributes are required; you can optionally provide other attribute name-value
11443	// pairs for the item.
11444	//
11445	// You must provide all of the attributes for the primary key. For example,
11446	// with a simple primary key, you only need to provide a value for the partition
11447	// key. For a composite primary key, you must provide both values for both the
11448	// partition key and the sort key.
11449	//
11450	// If you specify any attributes that are part of an index key, then the data
11451	// types for those attributes must match those of the schema in the table's
11452	// attribute definition.
11453	//
11454	// For more information about primary keys, see Primary Key (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/HowItWorks.CoreComponents.html#HowItWorks.CoreComponents.PrimaryKey)
11455	// in the Amazon DynamoDB Developer Guide.
11456	//
11457	// Each element in the Item map is an AttributeValue object.
11458	//
11459	// Item is a required field
11460	Item map[string]*AttributeValue `type:"map" required:"true"`
11461
11462	// Determines the level of detail about provisioned throughput consumption that
11463	// is returned in the response:
11464	//
11465	//    * INDEXES - The response includes the aggregate ConsumedCapacity for the
11466	//    operation, together with ConsumedCapacity for each table and secondary
11467	//    index that was accessed. Note that some operations, such as GetItem and
11468	//    BatchGetItem, do not access any indexes at all. In these cases, specifying
11469	//    INDEXES will only return ConsumedCapacity information for table(s).
11470	//
11471	//    * TOTAL - The response includes only the aggregate ConsumedCapacity for
11472	//    the operation.
11473	//
11474	//    * NONE - No ConsumedCapacity details are included in the response.
11475	ReturnConsumedCapacity *string `type:"string" enum:"ReturnConsumedCapacity"`
11476
11477	// Determines whether item collection metrics are returned. If set to SIZE,
11478	// the response includes statistics about item collections, if any, that were
11479	// modified during the operation are returned in the response. If set to NONE
11480	// (the default), no statistics are returned.
11481	ReturnItemCollectionMetrics *string `type:"string" enum:"ReturnItemCollectionMetrics"`
11482
11483	// Use ReturnValues if you want to get the item attributes as they appeared
11484	// before they were updated with the PutItem request. For PutItem, the valid
11485	// values are:
11486	//
11487	//    * NONE - If ReturnValues is not specified, or if its value is NONE, then
11488	//    nothing is returned. (This setting is the default for ReturnValues.)
11489	//
11490	//    * ALL_OLD - If PutItem overwrote an attribute name-value pair, then the
11491	//    content of the old item is returned.
11492	//
11493	// The ReturnValues parameter is used by several DynamoDB operations; however,
11494	// PutItem does not recognize any values other than NONE or ALL_OLD.
11495	ReturnValues *string `type:"string" enum:"ReturnValue"`
11496
11497	// The name of the table to contain the item.
11498	//
11499	// TableName is a required field
11500	TableName *string `min:"3" type:"string" required:"true"`
11501}
11502
11503// String returns the string representation
11504func (s PutItemInput) String() string {
11505	return awsutil.Prettify(s)
11506}
11507
11508// GoString returns the string representation
11509func (s PutItemInput) GoString() string {
11510	return s.String()
11511}
11512
11513// Validate inspects the fields of the type to determine if they are valid.
11514func (s *PutItemInput) Validate() error {
11515	invalidParams := request.ErrInvalidParams{Context: "PutItemInput"}
11516	if s.Item == nil {
11517		invalidParams.Add(request.NewErrParamRequired("Item"))
11518	}
11519	if s.TableName == nil {
11520		invalidParams.Add(request.NewErrParamRequired("TableName"))
11521	}
11522	if s.TableName != nil && len(*s.TableName) < 3 {
11523		invalidParams.Add(request.NewErrParamMinLen("TableName", 3))
11524	}
11525
11526	if invalidParams.Len() > 0 {
11527		return invalidParams
11528	}
11529	return nil
11530}
11531
11532// SetConditionExpression sets the ConditionExpression field's value.
11533func (s *PutItemInput) SetConditionExpression(v string) *PutItemInput {
11534	s.ConditionExpression = &v
11535	return s
11536}
11537
11538// SetConditionalOperator sets the ConditionalOperator field's value.
11539func (s *PutItemInput) SetConditionalOperator(v string) *PutItemInput {
11540	s.ConditionalOperator = &v
11541	return s
11542}
11543
11544// SetExpected sets the Expected field's value.
11545func (s *PutItemInput) SetExpected(v map[string]*ExpectedAttributeValue) *PutItemInput {
11546	s.Expected = v
11547	return s
11548}
11549
11550// SetExpressionAttributeNames sets the ExpressionAttributeNames field's value.
11551func (s *PutItemInput) SetExpressionAttributeNames(v map[string]*string) *PutItemInput {
11552	s.ExpressionAttributeNames = v
11553	return s
11554}
11555
11556// SetExpressionAttributeValues sets the ExpressionAttributeValues field's value.
11557func (s *PutItemInput) SetExpressionAttributeValues(v map[string]*AttributeValue) *PutItemInput {
11558	s.ExpressionAttributeValues = v
11559	return s
11560}
11561
11562// SetItem sets the Item field's value.
11563func (s *PutItemInput) SetItem(v map[string]*AttributeValue) *PutItemInput {
11564	s.Item = v
11565	return s
11566}
11567
11568// SetReturnConsumedCapacity sets the ReturnConsumedCapacity field's value.
11569func (s *PutItemInput) SetReturnConsumedCapacity(v string) *PutItemInput {
11570	s.ReturnConsumedCapacity = &v
11571	return s
11572}
11573
11574// SetReturnItemCollectionMetrics sets the ReturnItemCollectionMetrics field's value.
11575func (s *PutItemInput) SetReturnItemCollectionMetrics(v string) *PutItemInput {
11576	s.ReturnItemCollectionMetrics = &v
11577	return s
11578}
11579
11580// SetReturnValues sets the ReturnValues field's value.
11581func (s *PutItemInput) SetReturnValues(v string) *PutItemInput {
11582	s.ReturnValues = &v
11583	return s
11584}
11585
11586// SetTableName sets the TableName field's value.
11587func (s *PutItemInput) SetTableName(v string) *PutItemInput {
11588	s.TableName = &v
11589	return s
11590}
11591
11592// Represents the output of a PutItem operation.
11593type PutItemOutput struct {
11594	_ struct{} `type:"structure"`
11595
11596	// The attribute values as they appeared before the PutItem operation, but only
11597	// if ReturnValues is specified as ALL_OLD in the request. Each element consists
11598	// of an attribute name and an attribute value.
11599	Attributes map[string]*AttributeValue `type:"map"`
11600
11601	// The capacity units consumed by the PutItem operation. The data returned includes
11602	// the total provisioned throughput consumed, along with statistics for the
11603	// table and any indexes involved in the operation. ConsumedCapacity is only
11604	// returned if the ReturnConsumedCapacity parameter was specified. For more
11605	// information, see Read/Write Capacity Mode (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ProvisionedThroughputIntro.html)
11606	// in the Amazon DynamoDB Developer Guide.
11607	ConsumedCapacity *ConsumedCapacity `type:"structure"`
11608
11609	// Information about item collections, if any, that were affected by the PutItem
11610	// operation. ItemCollectionMetrics is only returned if the ReturnItemCollectionMetrics
11611	// parameter was specified. If the table does not have any local secondary indexes,
11612	// this information is not returned in the response.
11613	//
11614	// Each ItemCollectionMetrics element consists of:
11615	//
11616	//    * ItemCollectionKey - The partition key value of the item collection.
11617	//    This is the same as the partition key value of the item itself.
11618	//
11619	//    * SizeEstimateRangeGB - An estimate of item collection size, in gigabytes.
11620	//    This value is a two-element array containing a lower bound and an upper
11621	//    bound for the estimate. The estimate includes the size of all the items
11622	//    in the table, plus the size of all attributes projected into all of the
11623	//    local secondary indexes on that table. Use this estimate to measure whether
11624	//    a local secondary index is approaching its size limit. The estimate is
11625	//    subject to change over time; therefore, do not rely on the precision or
11626	//    accuracy of the estimate.
11627	ItemCollectionMetrics *ItemCollectionMetrics `type:"structure"`
11628}
11629
11630// String returns the string representation
11631func (s PutItemOutput) String() string {
11632	return awsutil.Prettify(s)
11633}
11634
11635// GoString returns the string representation
11636func (s PutItemOutput) GoString() string {
11637	return s.String()
11638}
11639
11640// SetAttributes sets the Attributes field's value.
11641func (s *PutItemOutput) SetAttributes(v map[string]*AttributeValue) *PutItemOutput {
11642	s.Attributes = v
11643	return s
11644}
11645
11646// SetConsumedCapacity sets the ConsumedCapacity field's value.
11647func (s *PutItemOutput) SetConsumedCapacity(v *ConsumedCapacity) *PutItemOutput {
11648	s.ConsumedCapacity = v
11649	return s
11650}
11651
11652// SetItemCollectionMetrics sets the ItemCollectionMetrics field's value.
11653func (s *PutItemOutput) SetItemCollectionMetrics(v *ItemCollectionMetrics) *PutItemOutput {
11654	s.ItemCollectionMetrics = v
11655	return s
11656}
11657
11658// Represents a request to perform a PutItem operation on an item.
11659type PutRequest struct {
11660	_ struct{} `type:"structure"`
11661
11662	// A map of attribute name to attribute values, representing the primary key
11663	// of an item to be processed by PutItem. All of the table's primary key attributes
11664	// must be specified, and their data types must match those of the table's key
11665	// schema. If any attributes are present in the item which are part of an index
11666	// key schema for the table, their types must match the index key schema.
11667	//
11668	// Item is a required field
11669	Item map[string]*AttributeValue `type:"map" required:"true"`
11670}
11671
11672// String returns the string representation
11673func (s PutRequest) String() string {
11674	return awsutil.Prettify(s)
11675}
11676
11677// GoString returns the string representation
11678func (s PutRequest) GoString() string {
11679	return s.String()
11680}
11681
11682// SetItem sets the Item field's value.
11683func (s *PutRequest) SetItem(v map[string]*AttributeValue) *PutRequest {
11684	s.Item = v
11685	return s
11686}
11687
11688// Represents the input of a Query operation.
11689type QueryInput struct {
11690	_ struct{} `type:"structure"`
11691
11692	// This is a legacy parameter. Use ProjectionExpression instead. For more information,
11693	// see AttributesToGet (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/LegacyConditionalParameters.AttributesToGet.html)
11694	// in the Amazon DynamoDB Developer Guide.
11695	AttributesToGet []*string `min:"1" type:"list"`
11696
11697	// This is a legacy parameter. Use FilterExpression instead. For more information,
11698	// see ConditionalOperator (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/LegacyConditionalParameters.ConditionalOperator.html)
11699	// in the Amazon DynamoDB Developer Guide.
11700	ConditionalOperator *string `type:"string" enum:"ConditionalOperator"`
11701
11702	// Determines the read consistency model: If set to true, then the operation
11703	// uses strongly consistent reads; otherwise, the operation uses eventually
11704	// consistent reads.
11705	//
11706	// Strongly consistent reads are not supported on global secondary indexes.
11707	// If you query a global secondary index with ConsistentRead set to true, you
11708	// will receive a ValidationException.
11709	ConsistentRead *bool `type:"boolean"`
11710
11711	// The primary key of the first item that this operation will evaluate. Use
11712	// the value that was returned for LastEvaluatedKey in the previous operation.
11713	//
11714	// The data type for ExclusiveStartKey must be String, Number, or Binary. No
11715	// set data types are allowed.
11716	ExclusiveStartKey map[string]*AttributeValue `type:"map"`
11717
11718	// One or more substitution tokens for attribute names in an expression. The
11719	// following are some use cases for using ExpressionAttributeNames:
11720	//
11721	//    * To access an attribute whose name conflicts with a DynamoDB reserved
11722	//    word.
11723	//
11724	//    * To create a placeholder for repeating occurrences of an attribute name
11725	//    in an expression.
11726	//
11727	//    * To prevent special characters in an attribute name from being misinterpreted
11728	//    in an expression.
11729	//
11730	// Use the # character in an expression to dereference an attribute name. For
11731	// example, consider the following attribute name:
11732	//
11733	//    * Percentile
11734	//
11735	// The name of this attribute conflicts with a reserved word, so it cannot be
11736	// used directly in an expression. (For the complete list of reserved words,
11737	// see Reserved Words (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ReservedWords.html)
11738	// in the Amazon DynamoDB Developer Guide). To work around this, you could specify
11739	// the following for ExpressionAttributeNames:
11740	//
11741	//    * {"#P":"Percentile"}
11742	//
11743	// You could then use this substitution in an expression, as in this example:
11744	//
11745	//    * #P = :val
11746	//
11747	// Tokens that begin with the : character are expression attribute values, which
11748	// are placeholders for the actual value at runtime.
11749	//
11750	// For more information on expression attribute names, see Specifying Item Attributes
11751	// (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.AccessingItemAttributes.html)
11752	// in the Amazon DynamoDB Developer Guide.
11753	ExpressionAttributeNames map[string]*string `type:"map"`
11754
11755	// One or more values that can be substituted in an expression.
11756	//
11757	// Use the : (colon) character in an expression to dereference an attribute
11758	// value. For example, suppose that you wanted to check whether the value of
11759	// the ProductStatus attribute was one of the following:
11760	//
11761	// Available | Backordered | Discontinued
11762	//
11763	// You would first need to specify ExpressionAttributeValues as follows:
11764	//
11765	// { ":avail":{"S":"Available"}, ":back":{"S":"Backordered"}, ":disc":{"S":"Discontinued"}
11766	// }
11767	//
11768	// You could then use these values in an expression, such as this:
11769	//
11770	// ProductStatus IN (:avail, :back, :disc)
11771	//
11772	// For more information on expression attribute values, see Specifying Conditions
11773	// (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.SpecifyingConditions.html)
11774	// in the Amazon DynamoDB Developer Guide.
11775	ExpressionAttributeValues map[string]*AttributeValue `type:"map"`
11776
11777	// A string that contains conditions that DynamoDB applies after the Query operation,
11778	// but before the data is returned to you. Items that do not satisfy the FilterExpression
11779	// criteria are not returned.
11780	//
11781	// A FilterExpression does not allow key attributes. You cannot define a filter
11782	// expression based on a partition key or a sort key.
11783	//
11784	// A FilterExpression is applied after the items have already been read; the
11785	// process of filtering does not consume any additional read capacity units.
11786	//
11787	// For more information, see Filter Expressions (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/QueryAndScan.html#FilteringResults)
11788	// in the Amazon DynamoDB Developer Guide.
11789	FilterExpression *string `type:"string"`
11790
11791	// The name of an index to query. This index can be any local secondary index
11792	// or global secondary index on the table. Note that if you use the IndexName
11793	// parameter, you must also provide TableName.
11794	IndexName *string `min:"3" type:"string"`
11795
11796	// The condition that specifies the key values for items to be retrieved by
11797	// the Query action.
11798	//
11799	// The condition must perform an equality test on a single partition key value.
11800	//
11801	// The condition can optionally perform one of several comparison tests on a
11802	// single sort key value. This allows Query to retrieve one item with a given
11803	// partition key value and sort key value, or several items that have the same
11804	// partition key value but different sort key values.
11805	//
11806	// The partition key equality test is required, and must be specified in the
11807	// following format:
11808	//
11809	// partitionKeyName = :partitionkeyval
11810	//
11811	// If you also want to provide a condition for the sort key, it must be combined
11812	// using AND with the condition for the sort key. Following is an example, using
11813	// the = comparison operator for the sort key:
11814	//
11815	// partitionKeyName = :partitionkeyval AND sortKeyName = :sortkeyval
11816	//
11817	// Valid comparisons for the sort key condition are as follows:
11818	//
11819	//    * sortKeyName = :sortkeyval - true if the sort key value is equal to :sortkeyval.
11820	//
11821	//    * sortKeyName < :sortkeyval - true if the sort key value is less than
11822	//    :sortkeyval.
11823	//
11824	//    * sortKeyName <= :sortkeyval - true if the sort key value is less than
11825	//    or equal to :sortkeyval.
11826	//
11827	//    * sortKeyName > :sortkeyval - true if the sort key value is greater than
11828	//    :sortkeyval.
11829	//
11830	//    * sortKeyName >= :sortkeyval - true if the sort key value is greater than
11831	//    or equal to :sortkeyval.
11832	//
11833	//    * sortKeyName BETWEEN :sortkeyval1 AND :sortkeyval2 - true if the sort
11834	//    key value is greater than or equal to :sortkeyval1, and less than or equal
11835	//    to :sortkeyval2.
11836	//
11837	//    * begins_with ( sortKeyName, :sortkeyval ) - true if the sort key value
11838	//    begins with a particular operand. (You cannot use this function with a
11839	//    sort key that is of type Number.) Note that the function name begins_with
11840	//    is case-sensitive.
11841	//
11842	// Use the ExpressionAttributeValues parameter to replace tokens such as :partitionval
11843	// and :sortval with actual values at runtime.
11844	//
11845	// You can optionally use the ExpressionAttributeNames parameter to replace
11846	// the names of the partition key and sort key with placeholder tokens. This
11847	// option might be necessary if an attribute name conflicts with a DynamoDB
11848	// reserved word. For example, the following KeyConditionExpression parameter
11849	// causes an error because Size is a reserved word:
11850	//
11851	//    * Size = :myval
11852	//
11853	// To work around this, define a placeholder (such a #S) to represent the attribute
11854	// name Size. KeyConditionExpression then is as follows:
11855	//
11856	//    * #S = :myval
11857	//
11858	// For a list of reserved words, see Reserved Words (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ReservedWords.html)
11859	// in the Amazon DynamoDB Developer Guide.
11860	//
11861	// For more information on ExpressionAttributeNames and ExpressionAttributeValues,
11862	// see Using Placeholders for Attribute Names and Values (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ExpressionPlaceholders.html)
11863	// in the Amazon DynamoDB Developer Guide.
11864	KeyConditionExpression *string `type:"string"`
11865
11866	// This is a legacy parameter. Use KeyConditionExpression instead. For more
11867	// information, see KeyConditions (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/LegacyConditionalParameters.KeyConditions.html)
11868	// in the Amazon DynamoDB Developer Guide.
11869	KeyConditions map[string]*Condition `type:"map"`
11870
11871	// The maximum number of items to evaluate (not necessarily the number of matching
11872	// items). If DynamoDB processes the number of items up to the limit while processing
11873	// the results, it stops the operation and returns the matching values up to
11874	// that point, and a key in LastEvaluatedKey to apply in a subsequent operation,
11875	// so that you can pick up where you left off. Also, if the processed dataset
11876	// size exceeds 1 MB before DynamoDB reaches this limit, it stops the operation
11877	// and returns the matching values up to the limit, and a key in LastEvaluatedKey
11878	// to apply in a subsequent operation to continue the operation. For more information,
11879	// see Query and Scan (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/QueryAndScan.html)
11880	// in the Amazon DynamoDB Developer Guide.
11881	Limit *int64 `min:"1" type:"integer"`
11882
11883	// A string that identifies one or more attributes to retrieve from the table.
11884	// These attributes can include scalars, sets, or elements of a JSON document.
11885	// The attributes in the expression must be separated by commas.
11886	//
11887	// If no attribute names are specified, then all attributes will be returned.
11888	// If any of the requested attributes are not found, they will not appear in
11889	// the result.
11890	//
11891	// For more information, see Accessing Item Attributes (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.AccessingItemAttributes.html)
11892	// in the Amazon DynamoDB Developer Guide.
11893	ProjectionExpression *string `type:"string"`
11894
11895	// This is a legacy parameter. Use FilterExpression instead. For more information,
11896	// see QueryFilter (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/LegacyConditionalParameters.QueryFilter.html)
11897	// in the Amazon DynamoDB Developer Guide.
11898	QueryFilter map[string]*Condition `type:"map"`
11899
11900	// Determines the level of detail about provisioned throughput consumption that
11901	// is returned in the response:
11902	//
11903	//    * INDEXES - The response includes the aggregate ConsumedCapacity for the
11904	//    operation, together with ConsumedCapacity for each table and secondary
11905	//    index that was accessed. Note that some operations, such as GetItem and
11906	//    BatchGetItem, do not access any indexes at all. In these cases, specifying
11907	//    INDEXES will only return ConsumedCapacity information for table(s).
11908	//
11909	//    * TOTAL - The response includes only the aggregate ConsumedCapacity for
11910	//    the operation.
11911	//
11912	//    * NONE - No ConsumedCapacity details are included in the response.
11913	ReturnConsumedCapacity *string `type:"string" enum:"ReturnConsumedCapacity"`
11914
11915	// Specifies the order for index traversal: If true (default), the traversal
11916	// is performed in ascending order; if false, the traversal is performed in
11917	// descending order.
11918	//
11919	// Items with the same partition key value are stored in sorted order by sort
11920	// key. If the sort key data type is Number, the results are stored in numeric
11921	// order. For type String, the results are stored in order of UTF-8 bytes. For
11922	// type Binary, DynamoDB treats each byte of the binary data as unsigned.
11923	//
11924	// If ScanIndexForward is true, DynamoDB returns the results in the order in
11925	// which they are stored (by sort key value). This is the default behavior.
11926	// If ScanIndexForward is false, DynamoDB reads the results in reverse order
11927	// by sort key value, and then returns the results to the client.
11928	ScanIndexForward *bool `type:"boolean"`
11929
11930	// The attributes to be returned in the result. You can retrieve all item attributes,
11931	// specific item attributes, the count of matching items, or in the case of
11932	// an index, some or all of the attributes projected into the index.
11933	//
11934	//    * ALL_ATTRIBUTES - Returns all of the item attributes from the specified
11935	//    table or index. If you query a local secondary index, then for each matching
11936	//    item in the index, DynamoDB fetches the entire item from the parent table.
11937	//    If the index is configured to project all item attributes, then all of
11938	//    the data can be obtained from the local secondary index, and no fetching
11939	//    is required.
11940	//
11941	//    * ALL_PROJECTED_ATTRIBUTES - Allowed only when querying an index. Retrieves
11942	//    all attributes that have been projected into the index. If the index is
11943	//    configured to project all attributes, this return value is equivalent
11944	//    to specifying ALL_ATTRIBUTES.
11945	//
11946	//    * COUNT - Returns the number of matching items, rather than the matching
11947	//    items themselves.
11948	//
11949	//    * SPECIFIC_ATTRIBUTES - Returns only the attributes listed in AttributesToGet.
11950	//    This return value is equivalent to specifying AttributesToGet without
11951	//    specifying any value for Select. If you query or scan a local secondary
11952	//    index and request only attributes that are projected into that index,
11953	//    the operation will read only the index and not the table. If any of the
11954	//    requested attributes are not projected into the local secondary index,
11955	//    DynamoDB fetches each of these attributes from the parent table. This
11956	//    extra fetching incurs additional throughput cost and latency. If you query
11957	//    or scan a global secondary index, you can only request attributes that
11958	//    are projected into the index. Global secondary index queries cannot fetch
11959	//    attributes from the parent table.
11960	//
11961	// If neither Select nor AttributesToGet are specified, DynamoDB defaults to
11962	// ALL_ATTRIBUTES when accessing a table, and ALL_PROJECTED_ATTRIBUTES when
11963	// accessing an index. You cannot use both Select and AttributesToGet together
11964	// in a single request, unless the value for Select is SPECIFIC_ATTRIBUTES.
11965	// (This usage is equivalent to specifying AttributesToGet without any value
11966	// for Select.)
11967	//
11968	// If you use the ProjectionExpression parameter, then the value for Select
11969	// can only be SPECIFIC_ATTRIBUTES. Any other value for Select will return an
11970	// error.
11971	Select *string `type:"string" enum:"Select"`
11972
11973	// The name of the table containing the requested items.
11974	//
11975	// TableName is a required field
11976	TableName *string `min:"3" type:"string" required:"true"`
11977}
11978
11979// String returns the string representation
11980func (s QueryInput) String() string {
11981	return awsutil.Prettify(s)
11982}
11983
11984// GoString returns the string representation
11985func (s QueryInput) GoString() string {
11986	return s.String()
11987}
11988
11989// Validate inspects the fields of the type to determine if they are valid.
11990func (s *QueryInput) Validate() error {
11991	invalidParams := request.ErrInvalidParams{Context: "QueryInput"}
11992	if s.AttributesToGet != nil && len(s.AttributesToGet) < 1 {
11993		invalidParams.Add(request.NewErrParamMinLen("AttributesToGet", 1))
11994	}
11995	if s.IndexName != nil && len(*s.IndexName) < 3 {
11996		invalidParams.Add(request.NewErrParamMinLen("IndexName", 3))
11997	}
11998	if s.Limit != nil && *s.Limit < 1 {
11999		invalidParams.Add(request.NewErrParamMinValue("Limit", 1))
12000	}
12001	if s.TableName == nil {
12002		invalidParams.Add(request.NewErrParamRequired("TableName"))
12003	}
12004	if s.TableName != nil && len(*s.TableName) < 3 {
12005		invalidParams.Add(request.NewErrParamMinLen("TableName", 3))
12006	}
12007	if s.KeyConditions != nil {
12008		for i, v := range s.KeyConditions {
12009			if v == nil {
12010				continue
12011			}
12012			if err := v.Validate(); err != nil {
12013				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "KeyConditions", i), err.(request.ErrInvalidParams))
12014			}
12015		}
12016	}
12017	if s.QueryFilter != nil {
12018		for i, v := range s.QueryFilter {
12019			if v == nil {
12020				continue
12021			}
12022			if err := v.Validate(); err != nil {
12023				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "QueryFilter", i), err.(request.ErrInvalidParams))
12024			}
12025		}
12026	}
12027
12028	if invalidParams.Len() > 0 {
12029		return invalidParams
12030	}
12031	return nil
12032}
12033
12034// SetAttributesToGet sets the AttributesToGet field's value.
12035func (s *QueryInput) SetAttributesToGet(v []*string) *QueryInput {
12036	s.AttributesToGet = v
12037	return s
12038}
12039
12040// SetConditionalOperator sets the ConditionalOperator field's value.
12041func (s *QueryInput) SetConditionalOperator(v string) *QueryInput {
12042	s.ConditionalOperator = &v
12043	return s
12044}
12045
12046// SetConsistentRead sets the ConsistentRead field's value.
12047func (s *QueryInput) SetConsistentRead(v bool) *QueryInput {
12048	s.ConsistentRead = &v
12049	return s
12050}
12051
12052// SetExclusiveStartKey sets the ExclusiveStartKey field's value.
12053func (s *QueryInput) SetExclusiveStartKey(v map[string]*AttributeValue) *QueryInput {
12054	s.ExclusiveStartKey = v
12055	return s
12056}
12057
12058// SetExpressionAttributeNames sets the ExpressionAttributeNames field's value.
12059func (s *QueryInput) SetExpressionAttributeNames(v map[string]*string) *QueryInput {
12060	s.ExpressionAttributeNames = v
12061	return s
12062}
12063
12064// SetExpressionAttributeValues sets the ExpressionAttributeValues field's value.
12065func (s *QueryInput) SetExpressionAttributeValues(v map[string]*AttributeValue) *QueryInput {
12066	s.ExpressionAttributeValues = v
12067	return s
12068}
12069
12070// SetFilterExpression sets the FilterExpression field's value.
12071func (s *QueryInput) SetFilterExpression(v string) *QueryInput {
12072	s.FilterExpression = &v
12073	return s
12074}
12075
12076// SetIndexName sets the IndexName field's value.
12077func (s *QueryInput) SetIndexName(v string) *QueryInput {
12078	s.IndexName = &v
12079	return s
12080}
12081
12082// SetKeyConditionExpression sets the KeyConditionExpression field's value.
12083func (s *QueryInput) SetKeyConditionExpression(v string) *QueryInput {
12084	s.KeyConditionExpression = &v
12085	return s
12086}
12087
12088// SetKeyConditions sets the KeyConditions field's value.
12089func (s *QueryInput) SetKeyConditions(v map[string]*Condition) *QueryInput {
12090	s.KeyConditions = v
12091	return s
12092}
12093
12094// SetLimit sets the Limit field's value.
12095func (s *QueryInput) SetLimit(v int64) *QueryInput {
12096	s.Limit = &v
12097	return s
12098}
12099
12100// SetProjectionExpression sets the ProjectionExpression field's value.
12101func (s *QueryInput) SetProjectionExpression(v string) *QueryInput {
12102	s.ProjectionExpression = &v
12103	return s
12104}
12105
12106// SetQueryFilter sets the QueryFilter field's value.
12107func (s *QueryInput) SetQueryFilter(v map[string]*Condition) *QueryInput {
12108	s.QueryFilter = v
12109	return s
12110}
12111
12112// SetReturnConsumedCapacity sets the ReturnConsumedCapacity field's value.
12113func (s *QueryInput) SetReturnConsumedCapacity(v string) *QueryInput {
12114	s.ReturnConsumedCapacity = &v
12115	return s
12116}
12117
12118// SetScanIndexForward sets the ScanIndexForward field's value.
12119func (s *QueryInput) SetScanIndexForward(v bool) *QueryInput {
12120	s.ScanIndexForward = &v
12121	return s
12122}
12123
12124// SetSelect sets the Select field's value.
12125func (s *QueryInput) SetSelect(v string) *QueryInput {
12126	s.Select = &v
12127	return s
12128}
12129
12130// SetTableName sets the TableName field's value.
12131func (s *QueryInput) SetTableName(v string) *QueryInput {
12132	s.TableName = &v
12133	return s
12134}
12135
12136// Represents the output of a Query operation.
12137type QueryOutput struct {
12138	_ struct{} `type:"structure"`
12139
12140	// The capacity units consumed by the Query operation. The data returned includes
12141	// the total provisioned throughput consumed, along with statistics for the
12142	// table and any indexes involved in the operation. ConsumedCapacity is only
12143	// returned if the ReturnConsumedCapacity parameter was specified. For more
12144	// information, see Provisioned Throughput (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ProvisionedThroughputIntro.html)
12145	// in the Amazon DynamoDB Developer Guide.
12146	ConsumedCapacity *ConsumedCapacity `type:"structure"`
12147
12148	// The number of items in the response.
12149	//
12150	// If you used a QueryFilter in the request, then Count is the number of items
12151	// returned after the filter was applied, and ScannedCount is the number of
12152	// matching items before the filter was applied.
12153	//
12154	// If you did not use a filter in the request, then Count and ScannedCount are
12155	// the same.
12156	Count *int64 `type:"integer"`
12157
12158	// An array of item attributes that match the query criteria. Each element in
12159	// this array consists of an attribute name and the value for that attribute.
12160	Items []map[string]*AttributeValue `type:"list"`
12161
12162	// The primary key of the item where the operation stopped, inclusive of the
12163	// previous result set. Use this value to start a new operation, excluding this
12164	// value in the new request.
12165	//
12166	// If LastEvaluatedKey is empty, then the "last page" of results has been processed
12167	// and there is no more data to be retrieved.
12168	//
12169	// If LastEvaluatedKey is not empty, it does not necessarily mean that there
12170	// is more data in the result set. The only way to know when you have reached
12171	// the end of the result set is when LastEvaluatedKey is empty.
12172	LastEvaluatedKey map[string]*AttributeValue `type:"map"`
12173
12174	// The number of items evaluated, before any QueryFilter is applied. A high
12175	// ScannedCount value with few, or no, Count results indicates an inefficient
12176	// Query operation. For more information, see Count and ScannedCount (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/QueryAndScan.html#Count)
12177	// in the Amazon DynamoDB Developer Guide.
12178	//
12179	// If you did not use a filter in the request, then ScannedCount is the same
12180	// as Count.
12181	ScannedCount *int64 `type:"integer"`
12182}
12183
12184// String returns the string representation
12185func (s QueryOutput) String() string {
12186	return awsutil.Prettify(s)
12187}
12188
12189// GoString returns the string representation
12190func (s QueryOutput) GoString() string {
12191	return s.String()
12192}
12193
12194// SetConsumedCapacity sets the ConsumedCapacity field's value.
12195func (s *QueryOutput) SetConsumedCapacity(v *ConsumedCapacity) *QueryOutput {
12196	s.ConsumedCapacity = v
12197	return s
12198}
12199
12200// SetCount sets the Count field's value.
12201func (s *QueryOutput) SetCount(v int64) *QueryOutput {
12202	s.Count = &v
12203	return s
12204}
12205
12206// SetItems sets the Items field's value.
12207func (s *QueryOutput) SetItems(v []map[string]*AttributeValue) *QueryOutput {
12208	s.Items = v
12209	return s
12210}
12211
12212// SetLastEvaluatedKey sets the LastEvaluatedKey field's value.
12213func (s *QueryOutput) SetLastEvaluatedKey(v map[string]*AttributeValue) *QueryOutput {
12214	s.LastEvaluatedKey = v
12215	return s
12216}
12217
12218// SetScannedCount sets the ScannedCount field's value.
12219func (s *QueryOutput) SetScannedCount(v int64) *QueryOutput {
12220	s.ScannedCount = &v
12221	return s
12222}
12223
12224// Represents the properties of a replica.
12225type Replica struct {
12226	_ struct{} `type:"structure"`
12227
12228	// The region where the replica needs to be created.
12229	RegionName *string `type:"string"`
12230}
12231
12232// String returns the string representation
12233func (s Replica) String() string {
12234	return awsutil.Prettify(s)
12235}
12236
12237// GoString returns the string representation
12238func (s Replica) GoString() string {
12239	return s.String()
12240}
12241
12242// SetRegionName sets the RegionName field's value.
12243func (s *Replica) SetRegionName(v string) *Replica {
12244	s.RegionName = &v
12245	return s
12246}
12247
12248// Contains the details of the replica.
12249type ReplicaDescription struct {
12250	_ struct{} `type:"structure"`
12251
12252	// The name of the region.
12253	RegionName *string `type:"string"`
12254}
12255
12256// String returns the string representation
12257func (s ReplicaDescription) String() string {
12258	return awsutil.Prettify(s)
12259}
12260
12261// GoString returns the string representation
12262func (s ReplicaDescription) GoString() string {
12263	return s.String()
12264}
12265
12266// SetRegionName sets the RegionName field's value.
12267func (s *ReplicaDescription) SetRegionName(v string) *ReplicaDescription {
12268	s.RegionName = &v
12269	return s
12270}
12271
12272// Represents the properties of a global secondary index.
12273type ReplicaGlobalSecondaryIndexSettingsDescription struct {
12274	_ struct{} `type:"structure"`
12275
12276	// The name of the global secondary index. The name must be unique among all
12277	// other indexes on this table.
12278	//
12279	// IndexName is a required field
12280	IndexName *string `min:"3" type:"string" required:"true"`
12281
12282	// The current status of the global secondary index:
12283	//
12284	//    * CREATING - The global secondary index is being created.
12285	//
12286	//    * UPDATING - The global secondary index is being updated.
12287	//
12288	//    * DELETING - The global secondary index is being deleted.
12289	//
12290	//    * ACTIVE - The global secondary index is ready for use.
12291	IndexStatus *string `type:"string" enum:"IndexStatus"`
12292
12293	// Autoscaling settings for a global secondary index replica's read capacity
12294	// units.
12295	ProvisionedReadCapacityAutoScalingSettings *AutoScalingSettingsDescription `type:"structure"`
12296
12297	// The maximum number of strongly consistent reads consumed per second before
12298	// DynamoDB returns a ThrottlingException.
12299	ProvisionedReadCapacityUnits *int64 `min:"1" type:"long"`
12300
12301	// AutoScaling settings for a global secondary index replica's write capacity
12302	// units.
12303	ProvisionedWriteCapacityAutoScalingSettings *AutoScalingSettingsDescription `type:"structure"`
12304
12305	// The maximum number of writes consumed per second before DynamoDB returns
12306	// a ThrottlingException.
12307	ProvisionedWriteCapacityUnits *int64 `min:"1" type:"long"`
12308}
12309
12310// String returns the string representation
12311func (s ReplicaGlobalSecondaryIndexSettingsDescription) String() string {
12312	return awsutil.Prettify(s)
12313}
12314
12315// GoString returns the string representation
12316func (s ReplicaGlobalSecondaryIndexSettingsDescription) GoString() string {
12317	return s.String()
12318}
12319
12320// SetIndexName sets the IndexName field's value.
12321func (s *ReplicaGlobalSecondaryIndexSettingsDescription) SetIndexName(v string) *ReplicaGlobalSecondaryIndexSettingsDescription {
12322	s.IndexName = &v
12323	return s
12324}
12325
12326// SetIndexStatus sets the IndexStatus field's value.
12327func (s *ReplicaGlobalSecondaryIndexSettingsDescription) SetIndexStatus(v string) *ReplicaGlobalSecondaryIndexSettingsDescription {
12328	s.IndexStatus = &v
12329	return s
12330}
12331
12332// SetProvisionedReadCapacityAutoScalingSettings sets the ProvisionedReadCapacityAutoScalingSettings field's value.
12333func (s *ReplicaGlobalSecondaryIndexSettingsDescription) SetProvisionedReadCapacityAutoScalingSettings(v *AutoScalingSettingsDescription) *ReplicaGlobalSecondaryIndexSettingsDescription {
12334	s.ProvisionedReadCapacityAutoScalingSettings = v
12335	return s
12336}
12337
12338// SetProvisionedReadCapacityUnits sets the ProvisionedReadCapacityUnits field's value.
12339func (s *ReplicaGlobalSecondaryIndexSettingsDescription) SetProvisionedReadCapacityUnits(v int64) *ReplicaGlobalSecondaryIndexSettingsDescription {
12340	s.ProvisionedReadCapacityUnits = &v
12341	return s
12342}
12343
12344// SetProvisionedWriteCapacityAutoScalingSettings sets the ProvisionedWriteCapacityAutoScalingSettings field's value.
12345func (s *ReplicaGlobalSecondaryIndexSettingsDescription) SetProvisionedWriteCapacityAutoScalingSettings(v *AutoScalingSettingsDescription) *ReplicaGlobalSecondaryIndexSettingsDescription {
12346	s.ProvisionedWriteCapacityAutoScalingSettings = v
12347	return s
12348}
12349
12350// SetProvisionedWriteCapacityUnits sets the ProvisionedWriteCapacityUnits field's value.
12351func (s *ReplicaGlobalSecondaryIndexSettingsDescription) SetProvisionedWriteCapacityUnits(v int64) *ReplicaGlobalSecondaryIndexSettingsDescription {
12352	s.ProvisionedWriteCapacityUnits = &v
12353	return s
12354}
12355
12356// Represents the settings of a global secondary index for a global table that
12357// will be modified.
12358type ReplicaGlobalSecondaryIndexSettingsUpdate struct {
12359	_ struct{} `type:"structure"`
12360
12361	// The name of the global secondary index. The name must be unique among all
12362	// other indexes on this table.
12363	//
12364	// IndexName is a required field
12365	IndexName *string `min:"3" type:"string" required:"true"`
12366
12367	// Autoscaling settings for managing a global secondary index replica's read
12368	// capacity units.
12369	ProvisionedReadCapacityAutoScalingSettingsUpdate *AutoScalingSettingsUpdate `type:"structure"`
12370
12371	// The maximum number of strongly consistent reads consumed per second before
12372	// DynamoDB returns a ThrottlingException.
12373	ProvisionedReadCapacityUnits *int64 `min:"1" type:"long"`
12374}
12375
12376// String returns the string representation
12377func (s ReplicaGlobalSecondaryIndexSettingsUpdate) String() string {
12378	return awsutil.Prettify(s)
12379}
12380
12381// GoString returns the string representation
12382func (s ReplicaGlobalSecondaryIndexSettingsUpdate) GoString() string {
12383	return s.String()
12384}
12385
12386// Validate inspects the fields of the type to determine if they are valid.
12387func (s *ReplicaGlobalSecondaryIndexSettingsUpdate) Validate() error {
12388	invalidParams := request.ErrInvalidParams{Context: "ReplicaGlobalSecondaryIndexSettingsUpdate"}
12389	if s.IndexName == nil {
12390		invalidParams.Add(request.NewErrParamRequired("IndexName"))
12391	}
12392	if s.IndexName != nil && len(*s.IndexName) < 3 {
12393		invalidParams.Add(request.NewErrParamMinLen("IndexName", 3))
12394	}
12395	if s.ProvisionedReadCapacityUnits != nil && *s.ProvisionedReadCapacityUnits < 1 {
12396		invalidParams.Add(request.NewErrParamMinValue("ProvisionedReadCapacityUnits", 1))
12397	}
12398	if s.ProvisionedReadCapacityAutoScalingSettingsUpdate != nil {
12399		if err := s.ProvisionedReadCapacityAutoScalingSettingsUpdate.Validate(); err != nil {
12400			invalidParams.AddNested("ProvisionedReadCapacityAutoScalingSettingsUpdate", err.(request.ErrInvalidParams))
12401		}
12402	}
12403
12404	if invalidParams.Len() > 0 {
12405		return invalidParams
12406	}
12407	return nil
12408}
12409
12410// SetIndexName sets the IndexName field's value.
12411func (s *ReplicaGlobalSecondaryIndexSettingsUpdate) SetIndexName(v string) *ReplicaGlobalSecondaryIndexSettingsUpdate {
12412	s.IndexName = &v
12413	return s
12414}
12415
12416// SetProvisionedReadCapacityAutoScalingSettingsUpdate sets the ProvisionedReadCapacityAutoScalingSettingsUpdate field's value.
12417func (s *ReplicaGlobalSecondaryIndexSettingsUpdate) SetProvisionedReadCapacityAutoScalingSettingsUpdate(v *AutoScalingSettingsUpdate) *ReplicaGlobalSecondaryIndexSettingsUpdate {
12418	s.ProvisionedReadCapacityAutoScalingSettingsUpdate = v
12419	return s
12420}
12421
12422// SetProvisionedReadCapacityUnits sets the ProvisionedReadCapacityUnits field's value.
12423func (s *ReplicaGlobalSecondaryIndexSettingsUpdate) SetProvisionedReadCapacityUnits(v int64) *ReplicaGlobalSecondaryIndexSettingsUpdate {
12424	s.ProvisionedReadCapacityUnits = &v
12425	return s
12426}
12427
12428// Represents the properties of a replica.
12429type ReplicaSettingsDescription struct {
12430	_ struct{} `type:"structure"`
12431
12432	// The region name of the replica.
12433	//
12434	// RegionName is a required field
12435	RegionName *string `type:"string" required:"true"`
12436
12437	// The read/write capacity mode of the replica.
12438	ReplicaBillingModeSummary *BillingModeSummary `type:"structure"`
12439
12440	// Replica global secondary index settings for the global table.
12441	ReplicaGlobalSecondaryIndexSettings []*ReplicaGlobalSecondaryIndexSettingsDescription `type:"list"`
12442
12443	// Autoscaling settings for a global table replica's read capacity units.
12444	ReplicaProvisionedReadCapacityAutoScalingSettings *AutoScalingSettingsDescription `type:"structure"`
12445
12446	// The maximum number of strongly consistent reads consumed per second before
12447	// DynamoDB returns a ThrottlingException. For more information, see Specifying
12448	// Read and Write Requirements (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/WorkingWithTables.html#ProvisionedThroughput)
12449	// in the Amazon DynamoDB Developer Guide.
12450	ReplicaProvisionedReadCapacityUnits *int64 `type:"long"`
12451
12452	// AutoScaling settings for a global table replica's write capacity units.
12453	ReplicaProvisionedWriteCapacityAutoScalingSettings *AutoScalingSettingsDescription `type:"structure"`
12454
12455	// The maximum number of writes consumed per second before DynamoDB returns
12456	// a ThrottlingException. For more information, see Specifying Read and Write
12457	// Requirements (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/WorkingWithTables.html#ProvisionedThroughput)
12458	// in the Amazon DynamoDB Developer Guide.
12459	ReplicaProvisionedWriteCapacityUnits *int64 `type:"long"`
12460
12461	// The current state of the region:
12462	//
12463	//    * CREATING - The region is being created.
12464	//
12465	//    * UPDATING - The region is being updated.
12466	//
12467	//    * DELETING - The region is being deleted.
12468	//
12469	//    * ACTIVE - The region is ready for use.
12470	ReplicaStatus *string `type:"string" enum:"ReplicaStatus"`
12471}
12472
12473// String returns the string representation
12474func (s ReplicaSettingsDescription) String() string {
12475	return awsutil.Prettify(s)
12476}
12477
12478// GoString returns the string representation
12479func (s ReplicaSettingsDescription) GoString() string {
12480	return s.String()
12481}
12482
12483// SetRegionName sets the RegionName field's value.
12484func (s *ReplicaSettingsDescription) SetRegionName(v string) *ReplicaSettingsDescription {
12485	s.RegionName = &v
12486	return s
12487}
12488
12489// SetReplicaBillingModeSummary sets the ReplicaBillingModeSummary field's value.
12490func (s *ReplicaSettingsDescription) SetReplicaBillingModeSummary(v *BillingModeSummary) *ReplicaSettingsDescription {
12491	s.ReplicaBillingModeSummary = v
12492	return s
12493}
12494
12495// SetReplicaGlobalSecondaryIndexSettings sets the ReplicaGlobalSecondaryIndexSettings field's value.
12496func (s *ReplicaSettingsDescription) SetReplicaGlobalSecondaryIndexSettings(v []*ReplicaGlobalSecondaryIndexSettingsDescription) *ReplicaSettingsDescription {
12497	s.ReplicaGlobalSecondaryIndexSettings = v
12498	return s
12499}
12500
12501// SetReplicaProvisionedReadCapacityAutoScalingSettings sets the ReplicaProvisionedReadCapacityAutoScalingSettings field's value.
12502func (s *ReplicaSettingsDescription) SetReplicaProvisionedReadCapacityAutoScalingSettings(v *AutoScalingSettingsDescription) *ReplicaSettingsDescription {
12503	s.ReplicaProvisionedReadCapacityAutoScalingSettings = v
12504	return s
12505}
12506
12507// SetReplicaProvisionedReadCapacityUnits sets the ReplicaProvisionedReadCapacityUnits field's value.
12508func (s *ReplicaSettingsDescription) SetReplicaProvisionedReadCapacityUnits(v int64) *ReplicaSettingsDescription {
12509	s.ReplicaProvisionedReadCapacityUnits = &v
12510	return s
12511}
12512
12513// SetReplicaProvisionedWriteCapacityAutoScalingSettings sets the ReplicaProvisionedWriteCapacityAutoScalingSettings field's value.
12514func (s *ReplicaSettingsDescription) SetReplicaProvisionedWriteCapacityAutoScalingSettings(v *AutoScalingSettingsDescription) *ReplicaSettingsDescription {
12515	s.ReplicaProvisionedWriteCapacityAutoScalingSettings = v
12516	return s
12517}
12518
12519// SetReplicaProvisionedWriteCapacityUnits sets the ReplicaProvisionedWriteCapacityUnits field's value.
12520func (s *ReplicaSettingsDescription) SetReplicaProvisionedWriteCapacityUnits(v int64) *ReplicaSettingsDescription {
12521	s.ReplicaProvisionedWriteCapacityUnits = &v
12522	return s
12523}
12524
12525// SetReplicaStatus sets the ReplicaStatus field's value.
12526func (s *ReplicaSettingsDescription) SetReplicaStatus(v string) *ReplicaSettingsDescription {
12527	s.ReplicaStatus = &v
12528	return s
12529}
12530
12531// Represents the settings for a global table in a region that will be modified.
12532type ReplicaSettingsUpdate struct {
12533	_ struct{} `type:"structure"`
12534
12535	// The region of the replica to be added.
12536	//
12537	// RegionName is a required field
12538	RegionName *string `type:"string" required:"true"`
12539
12540	// Represents the settings of a global secondary index for a global table that
12541	// will be modified.
12542	ReplicaGlobalSecondaryIndexSettingsUpdate []*ReplicaGlobalSecondaryIndexSettingsUpdate `min:"1" type:"list"`
12543
12544	// Autoscaling settings for managing a global table replica's read capacity
12545	// units.
12546	ReplicaProvisionedReadCapacityAutoScalingSettingsUpdate *AutoScalingSettingsUpdate `type:"structure"`
12547
12548	// The maximum number of strongly consistent reads consumed per second before
12549	// DynamoDB returns a ThrottlingException. For more information, see Specifying
12550	// Read and Write Requirements (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/WorkingWithTables.html#ProvisionedThroughput)
12551	// in the Amazon DynamoDB Developer Guide.
12552	ReplicaProvisionedReadCapacityUnits *int64 `min:"1" type:"long"`
12553}
12554
12555// String returns the string representation
12556func (s ReplicaSettingsUpdate) String() string {
12557	return awsutil.Prettify(s)
12558}
12559
12560// GoString returns the string representation
12561func (s ReplicaSettingsUpdate) GoString() string {
12562	return s.String()
12563}
12564
12565// Validate inspects the fields of the type to determine if they are valid.
12566func (s *ReplicaSettingsUpdate) Validate() error {
12567	invalidParams := request.ErrInvalidParams{Context: "ReplicaSettingsUpdate"}
12568	if s.RegionName == nil {
12569		invalidParams.Add(request.NewErrParamRequired("RegionName"))
12570	}
12571	if s.ReplicaGlobalSecondaryIndexSettingsUpdate != nil && len(s.ReplicaGlobalSecondaryIndexSettingsUpdate) < 1 {
12572		invalidParams.Add(request.NewErrParamMinLen("ReplicaGlobalSecondaryIndexSettingsUpdate", 1))
12573	}
12574	if s.ReplicaProvisionedReadCapacityUnits != nil && *s.ReplicaProvisionedReadCapacityUnits < 1 {
12575		invalidParams.Add(request.NewErrParamMinValue("ReplicaProvisionedReadCapacityUnits", 1))
12576	}
12577	if s.ReplicaGlobalSecondaryIndexSettingsUpdate != nil {
12578		for i, v := range s.ReplicaGlobalSecondaryIndexSettingsUpdate {
12579			if v == nil {
12580				continue
12581			}
12582			if err := v.Validate(); err != nil {
12583				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "ReplicaGlobalSecondaryIndexSettingsUpdate", i), err.(request.ErrInvalidParams))
12584			}
12585		}
12586	}
12587	if s.ReplicaProvisionedReadCapacityAutoScalingSettingsUpdate != nil {
12588		if err := s.ReplicaProvisionedReadCapacityAutoScalingSettingsUpdate.Validate(); err != nil {
12589			invalidParams.AddNested("ReplicaProvisionedReadCapacityAutoScalingSettingsUpdate", err.(request.ErrInvalidParams))
12590		}
12591	}
12592
12593	if invalidParams.Len() > 0 {
12594		return invalidParams
12595	}
12596	return nil
12597}
12598
12599// SetRegionName sets the RegionName field's value.
12600func (s *ReplicaSettingsUpdate) SetRegionName(v string) *ReplicaSettingsUpdate {
12601	s.RegionName = &v
12602	return s
12603}
12604
12605// SetReplicaGlobalSecondaryIndexSettingsUpdate sets the ReplicaGlobalSecondaryIndexSettingsUpdate field's value.
12606func (s *ReplicaSettingsUpdate) SetReplicaGlobalSecondaryIndexSettingsUpdate(v []*ReplicaGlobalSecondaryIndexSettingsUpdate) *ReplicaSettingsUpdate {
12607	s.ReplicaGlobalSecondaryIndexSettingsUpdate = v
12608	return s
12609}
12610
12611// SetReplicaProvisionedReadCapacityAutoScalingSettingsUpdate sets the ReplicaProvisionedReadCapacityAutoScalingSettingsUpdate field's value.
12612func (s *ReplicaSettingsUpdate) SetReplicaProvisionedReadCapacityAutoScalingSettingsUpdate(v *AutoScalingSettingsUpdate) *ReplicaSettingsUpdate {
12613	s.ReplicaProvisionedReadCapacityAutoScalingSettingsUpdate = v
12614	return s
12615}
12616
12617// SetReplicaProvisionedReadCapacityUnits sets the ReplicaProvisionedReadCapacityUnits field's value.
12618func (s *ReplicaSettingsUpdate) SetReplicaProvisionedReadCapacityUnits(v int64) *ReplicaSettingsUpdate {
12619	s.ReplicaProvisionedReadCapacityUnits = &v
12620	return s
12621}
12622
12623// Represents one of the following:
12624//
12625//    * A new replica to be added to an existing global table.
12626//
12627//    * New parameters for an existing replica.
12628//
12629//    * An existing replica to be removed from an existing global table.
12630type ReplicaUpdate struct {
12631	_ struct{} `type:"structure"`
12632
12633	// The parameters required for creating a replica on an existing global table.
12634	Create *CreateReplicaAction `type:"structure"`
12635
12636	// The name of the existing replica to be removed.
12637	Delete *DeleteReplicaAction `type:"structure"`
12638}
12639
12640// String returns the string representation
12641func (s ReplicaUpdate) String() string {
12642	return awsutil.Prettify(s)
12643}
12644
12645// GoString returns the string representation
12646func (s ReplicaUpdate) GoString() string {
12647	return s.String()
12648}
12649
12650// Validate inspects the fields of the type to determine if they are valid.
12651func (s *ReplicaUpdate) Validate() error {
12652	invalidParams := request.ErrInvalidParams{Context: "ReplicaUpdate"}
12653	if s.Create != nil {
12654		if err := s.Create.Validate(); err != nil {
12655			invalidParams.AddNested("Create", err.(request.ErrInvalidParams))
12656		}
12657	}
12658	if s.Delete != nil {
12659		if err := s.Delete.Validate(); err != nil {
12660			invalidParams.AddNested("Delete", err.(request.ErrInvalidParams))
12661		}
12662	}
12663
12664	if invalidParams.Len() > 0 {
12665		return invalidParams
12666	}
12667	return nil
12668}
12669
12670// SetCreate sets the Create field's value.
12671func (s *ReplicaUpdate) SetCreate(v *CreateReplicaAction) *ReplicaUpdate {
12672	s.Create = v
12673	return s
12674}
12675
12676// SetDelete sets the Delete field's value.
12677func (s *ReplicaUpdate) SetDelete(v *DeleteReplicaAction) *ReplicaUpdate {
12678	s.Delete = v
12679	return s
12680}
12681
12682// Contains details for the restore.
12683type RestoreSummary struct {
12684	_ struct{} `type:"structure"`
12685
12686	// Point in time or source backup time.
12687	//
12688	// RestoreDateTime is a required field
12689	RestoreDateTime *time.Time `type:"timestamp" required:"true"`
12690
12691	// Indicates if a restore is in progress or not.
12692	//
12693	// RestoreInProgress is a required field
12694	RestoreInProgress *bool `type:"boolean" required:"true"`
12695
12696	// ARN of the backup from which the table was restored.
12697	SourceBackupArn *string `min:"37" type:"string"`
12698
12699	// ARN of the source table of the backup that is being restored.
12700	SourceTableArn *string `type:"string"`
12701}
12702
12703// String returns the string representation
12704func (s RestoreSummary) String() string {
12705	return awsutil.Prettify(s)
12706}
12707
12708// GoString returns the string representation
12709func (s RestoreSummary) GoString() string {
12710	return s.String()
12711}
12712
12713// SetRestoreDateTime sets the RestoreDateTime field's value.
12714func (s *RestoreSummary) SetRestoreDateTime(v time.Time) *RestoreSummary {
12715	s.RestoreDateTime = &v
12716	return s
12717}
12718
12719// SetRestoreInProgress sets the RestoreInProgress field's value.
12720func (s *RestoreSummary) SetRestoreInProgress(v bool) *RestoreSummary {
12721	s.RestoreInProgress = &v
12722	return s
12723}
12724
12725// SetSourceBackupArn sets the SourceBackupArn field's value.
12726func (s *RestoreSummary) SetSourceBackupArn(v string) *RestoreSummary {
12727	s.SourceBackupArn = &v
12728	return s
12729}
12730
12731// SetSourceTableArn sets the SourceTableArn field's value.
12732func (s *RestoreSummary) SetSourceTableArn(v string) *RestoreSummary {
12733	s.SourceTableArn = &v
12734	return s
12735}
12736
12737type RestoreTableFromBackupInput struct {
12738	_ struct{} `type:"structure"`
12739
12740	// The Amazon Resource Name (ARN) associated with the backup.
12741	//
12742	// BackupArn is a required field
12743	BackupArn *string `min:"37" type:"string" required:"true"`
12744
12745	// The name of the new table to which the backup must be restored.
12746	//
12747	// TargetTableName is a required field
12748	TargetTableName *string `min:"3" type:"string" required:"true"`
12749}
12750
12751// String returns the string representation
12752func (s RestoreTableFromBackupInput) String() string {
12753	return awsutil.Prettify(s)
12754}
12755
12756// GoString returns the string representation
12757func (s RestoreTableFromBackupInput) GoString() string {
12758	return s.String()
12759}
12760
12761// Validate inspects the fields of the type to determine if they are valid.
12762func (s *RestoreTableFromBackupInput) Validate() error {
12763	invalidParams := request.ErrInvalidParams{Context: "RestoreTableFromBackupInput"}
12764	if s.BackupArn == nil {
12765		invalidParams.Add(request.NewErrParamRequired("BackupArn"))
12766	}
12767	if s.BackupArn != nil && len(*s.BackupArn) < 37 {
12768		invalidParams.Add(request.NewErrParamMinLen("BackupArn", 37))
12769	}
12770	if s.TargetTableName == nil {
12771		invalidParams.Add(request.NewErrParamRequired("TargetTableName"))
12772	}
12773	if s.TargetTableName != nil && len(*s.TargetTableName) < 3 {
12774		invalidParams.Add(request.NewErrParamMinLen("TargetTableName", 3))
12775	}
12776
12777	if invalidParams.Len() > 0 {
12778		return invalidParams
12779	}
12780	return nil
12781}
12782
12783// SetBackupArn sets the BackupArn field's value.
12784func (s *RestoreTableFromBackupInput) SetBackupArn(v string) *RestoreTableFromBackupInput {
12785	s.BackupArn = &v
12786	return s
12787}
12788
12789// SetTargetTableName sets the TargetTableName field's value.
12790func (s *RestoreTableFromBackupInput) SetTargetTableName(v string) *RestoreTableFromBackupInput {
12791	s.TargetTableName = &v
12792	return s
12793}
12794
12795type RestoreTableFromBackupOutput struct {
12796	_ struct{} `type:"structure"`
12797
12798	// The description of the table created from an existing backup.
12799	TableDescription *TableDescription `type:"structure"`
12800}
12801
12802// String returns the string representation
12803func (s RestoreTableFromBackupOutput) String() string {
12804	return awsutil.Prettify(s)
12805}
12806
12807// GoString returns the string representation
12808func (s RestoreTableFromBackupOutput) GoString() string {
12809	return s.String()
12810}
12811
12812// SetTableDescription sets the TableDescription field's value.
12813func (s *RestoreTableFromBackupOutput) SetTableDescription(v *TableDescription) *RestoreTableFromBackupOutput {
12814	s.TableDescription = v
12815	return s
12816}
12817
12818type RestoreTableToPointInTimeInput struct {
12819	_ struct{} `type:"structure"`
12820
12821	// Time in the past to restore the table to.
12822	RestoreDateTime *time.Time `type:"timestamp"`
12823
12824	// Name of the source table that is being restored.
12825	//
12826	// SourceTableName is a required field
12827	SourceTableName *string `min:"3" type:"string" required:"true"`
12828
12829	// The name of the new table to which it must be restored to.
12830	//
12831	// TargetTableName is a required field
12832	TargetTableName *string `min:"3" type:"string" required:"true"`
12833
12834	// Restore the table to the latest possible time. LatestRestorableDateTime is
12835	// typically 5 minutes before the current time.
12836	UseLatestRestorableTime *bool `type:"boolean"`
12837}
12838
12839// String returns the string representation
12840func (s RestoreTableToPointInTimeInput) String() string {
12841	return awsutil.Prettify(s)
12842}
12843
12844// GoString returns the string representation
12845func (s RestoreTableToPointInTimeInput) GoString() string {
12846	return s.String()
12847}
12848
12849// Validate inspects the fields of the type to determine if they are valid.
12850func (s *RestoreTableToPointInTimeInput) Validate() error {
12851	invalidParams := request.ErrInvalidParams{Context: "RestoreTableToPointInTimeInput"}
12852	if s.SourceTableName == nil {
12853		invalidParams.Add(request.NewErrParamRequired("SourceTableName"))
12854	}
12855	if s.SourceTableName != nil && len(*s.SourceTableName) < 3 {
12856		invalidParams.Add(request.NewErrParamMinLen("SourceTableName", 3))
12857	}
12858	if s.TargetTableName == nil {
12859		invalidParams.Add(request.NewErrParamRequired("TargetTableName"))
12860	}
12861	if s.TargetTableName != nil && len(*s.TargetTableName) < 3 {
12862		invalidParams.Add(request.NewErrParamMinLen("TargetTableName", 3))
12863	}
12864
12865	if invalidParams.Len() > 0 {
12866		return invalidParams
12867	}
12868	return nil
12869}
12870
12871// SetRestoreDateTime sets the RestoreDateTime field's value.
12872func (s *RestoreTableToPointInTimeInput) SetRestoreDateTime(v time.Time) *RestoreTableToPointInTimeInput {
12873	s.RestoreDateTime = &v
12874	return s
12875}
12876
12877// SetSourceTableName sets the SourceTableName field's value.
12878func (s *RestoreTableToPointInTimeInput) SetSourceTableName(v string) *RestoreTableToPointInTimeInput {
12879	s.SourceTableName = &v
12880	return s
12881}
12882
12883// SetTargetTableName sets the TargetTableName field's value.
12884func (s *RestoreTableToPointInTimeInput) SetTargetTableName(v string) *RestoreTableToPointInTimeInput {
12885	s.TargetTableName = &v
12886	return s
12887}
12888
12889// SetUseLatestRestorableTime sets the UseLatestRestorableTime field's value.
12890func (s *RestoreTableToPointInTimeInput) SetUseLatestRestorableTime(v bool) *RestoreTableToPointInTimeInput {
12891	s.UseLatestRestorableTime = &v
12892	return s
12893}
12894
12895type RestoreTableToPointInTimeOutput struct {
12896	_ struct{} `type:"structure"`
12897
12898	// Represents the properties of a table.
12899	TableDescription *TableDescription `type:"structure"`
12900}
12901
12902// String returns the string representation
12903func (s RestoreTableToPointInTimeOutput) String() string {
12904	return awsutil.Prettify(s)
12905}
12906
12907// GoString returns the string representation
12908func (s RestoreTableToPointInTimeOutput) GoString() string {
12909	return s.String()
12910}
12911
12912// SetTableDescription sets the TableDescription field's value.
12913func (s *RestoreTableToPointInTimeOutput) SetTableDescription(v *TableDescription) *RestoreTableToPointInTimeOutput {
12914	s.TableDescription = v
12915	return s
12916}
12917
12918// The description of the server-side encryption status on the specified table.
12919type SSEDescription struct {
12920	_ struct{} `type:"structure"`
12921
12922	// The KMS customer master key (CMK) ARN used for the KMS encryption.
12923	KMSMasterKeyArn *string `type:"string"`
12924
12925	// Server-side encryption type. The only supported value is:
12926	//
12927	//    * KMS - Server-side encryption which uses AWS Key Management Service.
12928	//    Key is stored in your account and is managed by AWS KMS (KMS charges apply).
12929	SSEType *string `type:"string" enum:"SSEType"`
12930
12931	// Represents the current state of server-side encryption. The only supported
12932	// values are:
12933	//
12934	//    * ENABLED - Server-side encryption is enabled.
12935	//
12936	//    * UPDATING - Server-side encryption is being updated.
12937	Status *string `type:"string" enum:"SSEStatus"`
12938}
12939
12940// String returns the string representation
12941func (s SSEDescription) String() string {
12942	return awsutil.Prettify(s)
12943}
12944
12945// GoString returns the string representation
12946func (s SSEDescription) GoString() string {
12947	return s.String()
12948}
12949
12950// SetKMSMasterKeyArn sets the KMSMasterKeyArn field's value.
12951func (s *SSEDescription) SetKMSMasterKeyArn(v string) *SSEDescription {
12952	s.KMSMasterKeyArn = &v
12953	return s
12954}
12955
12956// SetSSEType sets the SSEType field's value.
12957func (s *SSEDescription) SetSSEType(v string) *SSEDescription {
12958	s.SSEType = &v
12959	return s
12960}
12961
12962// SetStatus sets the Status field's value.
12963func (s *SSEDescription) SetStatus(v string) *SSEDescription {
12964	s.Status = &v
12965	return s
12966}
12967
12968// Represents the settings used to enable server-side encryption.
12969type SSESpecification struct {
12970	_ struct{} `type:"structure"`
12971
12972	// Indicates whether server-side encryption is done using an AWS managed CMK
12973	// or an AWS owned CMK. If enabled (true), server-side encryption type is set
12974	// to KMS and an AWS managed CMK is used (AWS KMS charges apply). If disabled
12975	// (false) or not specified, server-side encryption is set to AWS owned CMK.
12976	Enabled *bool `type:"boolean"`
12977
12978	// The KMS Customer Master Key (CMK) which should be used for the KMS encryption.
12979	// To specify a CMK, use its key ID, Amazon Resource Name (ARN), alias name,
12980	// or alias ARN. Note that you should only provide this parameter if the key
12981	// is different from the default DynamoDB Customer Master Key alias/aws/dynamodb.
12982	KMSMasterKeyId *string `type:"string"`
12983
12984	// Server-side encryption type. The only supported value is:
12985	//
12986	//    * KMS - Server-side encryption which uses AWS Key Management Service.
12987	//    Key is stored in your account and is managed by AWS KMS (KMS charges apply).
12988	SSEType *string `type:"string" enum:"SSEType"`
12989}
12990
12991// String returns the string representation
12992func (s SSESpecification) String() string {
12993	return awsutil.Prettify(s)
12994}
12995
12996// GoString returns the string representation
12997func (s SSESpecification) GoString() string {
12998	return s.String()
12999}
13000
13001// SetEnabled sets the Enabled field's value.
13002func (s *SSESpecification) SetEnabled(v bool) *SSESpecification {
13003	s.Enabled = &v
13004	return s
13005}
13006
13007// SetKMSMasterKeyId sets the KMSMasterKeyId field's value.
13008func (s *SSESpecification) SetKMSMasterKeyId(v string) *SSESpecification {
13009	s.KMSMasterKeyId = &v
13010	return s
13011}
13012
13013// SetSSEType sets the SSEType field's value.
13014func (s *SSESpecification) SetSSEType(v string) *SSESpecification {
13015	s.SSEType = &v
13016	return s
13017}
13018
13019// Represents the input of a Scan operation.
13020type ScanInput struct {
13021	_ struct{} `type:"structure"`
13022
13023	// This is a legacy parameter. Use ProjectionExpression instead. For more information,
13024	// see AttributesToGet (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/LegacyConditionalParameters.AttributesToGet.html)
13025	// in the Amazon DynamoDB Developer Guide.
13026	AttributesToGet []*string `min:"1" type:"list"`
13027
13028	// This is a legacy parameter. Use FilterExpression instead. For more information,
13029	// see ConditionalOperator (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/LegacyConditionalParameters.ConditionalOperator.html)
13030	// in the Amazon DynamoDB Developer Guide.
13031	ConditionalOperator *string `type:"string" enum:"ConditionalOperator"`
13032
13033	// A Boolean value that determines the read consistency model during the scan:
13034	//
13035	//    * If ConsistentRead is false, then the data returned from Scan might not
13036	//    contain the results from other recently completed write operations (PutItem,
13037	//    UpdateItem, or DeleteItem).
13038	//
13039	//    * If ConsistentRead is true, then all of the write operations that completed
13040	//    before the Scan began are guaranteed to be contained in the Scan response.
13041	//
13042	// The default setting for ConsistentRead is false.
13043	//
13044	// The ConsistentRead parameter is not supported on global secondary indexes.
13045	// If you scan a global secondary index with ConsistentRead set to true, you
13046	// will receive a ValidationException.
13047	ConsistentRead *bool `type:"boolean"`
13048
13049	// The primary key of the first item that this operation will evaluate. Use
13050	// the value that was returned for LastEvaluatedKey in the previous operation.
13051	//
13052	// The data type for ExclusiveStartKey must be String, Number or Binary. No
13053	// set data types are allowed.
13054	//
13055	// In a parallel scan, a Scan request that includes ExclusiveStartKey must specify
13056	// the same segment whose previous Scan returned the corresponding value of
13057	// LastEvaluatedKey.
13058	ExclusiveStartKey map[string]*AttributeValue `type:"map"`
13059
13060	// One or more substitution tokens for attribute names in an expression. The
13061	// following are some use cases for using ExpressionAttributeNames:
13062	//
13063	//    * To access an attribute whose name conflicts with a DynamoDB reserved
13064	//    word.
13065	//
13066	//    * To create a placeholder for repeating occurrences of an attribute name
13067	//    in an expression.
13068	//
13069	//    * To prevent special characters in an attribute name from being misinterpreted
13070	//    in an expression.
13071	//
13072	// Use the # character in an expression to dereference an attribute name. For
13073	// example, consider the following attribute name:
13074	//
13075	//    * Percentile
13076	//
13077	// The name of this attribute conflicts with a reserved word, so it cannot be
13078	// used directly in an expression. (For the complete list of reserved words,
13079	// see Reserved Words (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ReservedWords.html)
13080	// in the Amazon DynamoDB Developer Guide). To work around this, you could specify
13081	// the following for ExpressionAttributeNames:
13082	//
13083	//    * {"#P":"Percentile"}
13084	//
13085	// You could then use this substitution in an expression, as in this example:
13086	//
13087	//    * #P = :val
13088	//
13089	// Tokens that begin with the : character are expression attribute values, which
13090	// are placeholders for the actual value at runtime.
13091	//
13092	// For more information on expression attribute names, see Specifying Item Attributes
13093	// (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.AccessingItemAttributes.html)
13094	// in the Amazon DynamoDB Developer Guide.
13095	ExpressionAttributeNames map[string]*string `type:"map"`
13096
13097	// One or more values that can be substituted in an expression.
13098	//
13099	// Use the : (colon) character in an expression to dereference an attribute
13100	// value. For example, suppose that you wanted to check whether the value of
13101	// the ProductStatus attribute was one of the following:
13102	//
13103	// Available | Backordered | Discontinued
13104	//
13105	// You would first need to specify ExpressionAttributeValues as follows:
13106	//
13107	// { ":avail":{"S":"Available"}, ":back":{"S":"Backordered"}, ":disc":{"S":"Discontinued"}
13108	// }
13109	//
13110	// You could then use these values in an expression, such as this:
13111	//
13112	// ProductStatus IN (:avail, :back, :disc)
13113	//
13114	// For more information on expression attribute values, see Condition Expressions
13115	// (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.SpecifyingConditions.html)
13116	// in the Amazon DynamoDB Developer Guide.
13117	ExpressionAttributeValues map[string]*AttributeValue `type:"map"`
13118
13119	// A string that contains conditions that DynamoDB applies after the Scan operation,
13120	// but before the data is returned to you. Items that do not satisfy the FilterExpression
13121	// criteria are not returned.
13122	//
13123	// A FilterExpression is applied after the items have already been read; the
13124	// process of filtering does not consume any additional read capacity units.
13125	//
13126	// For more information, see Filter Expressions (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/QueryAndScan.html#FilteringResults)
13127	// in the Amazon DynamoDB Developer Guide.
13128	FilterExpression *string `type:"string"`
13129
13130	// The name of a secondary index to scan. This index can be any local secondary
13131	// index or global secondary index. Note that if you use the IndexName parameter,
13132	// you must also provide TableName.
13133	IndexName *string `min:"3" type:"string"`
13134
13135	// The maximum number of items to evaluate (not necessarily the number of matching
13136	// items). If DynamoDB processes the number of items up to the limit while processing
13137	// the results, it stops the operation and returns the matching values up to
13138	// that point, and a key in LastEvaluatedKey to apply in a subsequent operation,
13139	// so that you can pick up where you left off. Also, if the processed dataset
13140	// size exceeds 1 MB before DynamoDB reaches this limit, it stops the operation
13141	// and returns the matching values up to the limit, and a key in LastEvaluatedKey
13142	// to apply in a subsequent operation to continue the operation. For more information,
13143	// see Working with Queries (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/QueryAndScan.html)
13144	// in the Amazon DynamoDB Developer Guide.
13145	Limit *int64 `min:"1" type:"integer"`
13146
13147	// A string that identifies one or more attributes to retrieve from the specified
13148	// table or index. These attributes can include scalars, sets, or elements of
13149	// a JSON document. The attributes in the expression must be separated by commas.
13150	//
13151	// If no attribute names are specified, then all attributes will be returned.
13152	// If any of the requested attributes are not found, they will not appear in
13153	// the result.
13154	//
13155	// For more information, see Specifying Item Attributes (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.AccessingItemAttributes.html)
13156	// in the Amazon DynamoDB Developer Guide.
13157	ProjectionExpression *string `type:"string"`
13158
13159	// Determines the level of detail about provisioned throughput consumption that
13160	// is returned in the response:
13161	//
13162	//    * INDEXES - The response includes the aggregate ConsumedCapacity for the
13163	//    operation, together with ConsumedCapacity for each table and secondary
13164	//    index that was accessed. Note that some operations, such as GetItem and
13165	//    BatchGetItem, do not access any indexes at all. In these cases, specifying
13166	//    INDEXES will only return ConsumedCapacity information for table(s).
13167	//
13168	//    * TOTAL - The response includes only the aggregate ConsumedCapacity for
13169	//    the operation.
13170	//
13171	//    * NONE - No ConsumedCapacity details are included in the response.
13172	ReturnConsumedCapacity *string `type:"string" enum:"ReturnConsumedCapacity"`
13173
13174	// This is a legacy parameter. Use FilterExpression instead. For more information,
13175	// see ScanFilter (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/LegacyConditionalParameters.ScanFilter.html)
13176	// in the Amazon DynamoDB Developer Guide.
13177	ScanFilter map[string]*Condition `type:"map"`
13178
13179	// For a parallel Scan request, Segment identifies an individual segment to
13180	// be scanned by an application worker.
13181	//
13182	// Segment IDs are zero-based, so the first segment is always 0. For example,
13183	// if you want to use four application threads to scan a table or an index,
13184	// then the first thread specifies a Segment value of 0, the second thread specifies
13185	// 1, and so on.
13186	//
13187	// The value of LastEvaluatedKey returned from a parallel Scan request must
13188	// be used as ExclusiveStartKey with the same segment ID in a subsequent Scan
13189	// operation.
13190	//
13191	// The value for Segment must be greater than or equal to 0, and less than the
13192	// value provided for TotalSegments.
13193	//
13194	// If you provide Segment, you must also provide TotalSegments.
13195	Segment *int64 `type:"integer"`
13196
13197	// The attributes to be returned in the result. You can retrieve all item attributes,
13198	// specific item attributes, the count of matching items, or in the case of
13199	// an index, some or all of the attributes projected into the index.
13200	//
13201	//    * ALL_ATTRIBUTES - Returns all of the item attributes from the specified
13202	//    table or index. If you query a local secondary index, then for each matching
13203	//    item in the index, DynamoDB fetches the entire item from the parent table.
13204	//    If the index is configured to project all item attributes, then all of
13205	//    the data can be obtained from the local secondary index, and no fetching
13206	//    is required.
13207	//
13208	//    * ALL_PROJECTED_ATTRIBUTES - Allowed only when querying an index. Retrieves
13209	//    all attributes that have been projected into the index. If the index is
13210	//    configured to project all attributes, this return value is equivalent
13211	//    to specifying ALL_ATTRIBUTES.
13212	//
13213	//    * COUNT - Returns the number of matching items, rather than the matching
13214	//    items themselves.
13215	//
13216	//    * SPECIFIC_ATTRIBUTES - Returns only the attributes listed in AttributesToGet.
13217	//    This return value is equivalent to specifying AttributesToGet without
13218	//    specifying any value for Select. If you query or scan a local secondary
13219	//    index and request only attributes that are projected into that index,
13220	//    the operation reads only the index and not the table. If any of the requested
13221	//    attributes are not projected into the local secondary index, DynamoDB
13222	//    fetches each of these attributes from the parent table. This extra fetching
13223	//    incurs additional throughput cost and latency. If you query or scan a
13224	//    global secondary index, you can only request attributes that are projected
13225	//    into the index. Global secondary index queries cannot fetch attributes
13226	//    from the parent table.
13227	//
13228	// If neither Select nor AttributesToGet are specified, DynamoDB defaults to
13229	// ALL_ATTRIBUTES when accessing a table, and ALL_PROJECTED_ATTRIBUTES when
13230	// accessing an index. You cannot use both Select and AttributesToGet together
13231	// in a single request, unless the value for Select is SPECIFIC_ATTRIBUTES.
13232	// (This usage is equivalent to specifying AttributesToGet without any value
13233	// for Select.)
13234	//
13235	// If you use the ProjectionExpression parameter, then the value for Select
13236	// can only be SPECIFIC_ATTRIBUTES. Any other value for Select will return an
13237	// error.
13238	Select *string `type:"string" enum:"Select"`
13239
13240	// The name of the table containing the requested items; or, if you provide
13241	// IndexName, the name of the table to which that index belongs.
13242	//
13243	// TableName is a required field
13244	TableName *string `min:"3" type:"string" required:"true"`
13245
13246	// For a parallel Scan request, TotalSegments represents the total number of
13247	// segments into which the Scan operation will be divided. The value of TotalSegments
13248	// corresponds to the number of application workers that will perform the parallel
13249	// scan. For example, if you want to use four application threads to scan a
13250	// table or an index, specify a TotalSegments value of 4.
13251	//
13252	// The value for TotalSegments must be greater than or equal to 1, and less
13253	// than or equal to 1000000. If you specify a TotalSegments value of 1, the
13254	// Scan operation will be sequential rather than parallel.
13255	//
13256	// If you specify TotalSegments, you must also specify Segment.
13257	TotalSegments *int64 `min:"1" type:"integer"`
13258}
13259
13260// String returns the string representation
13261func (s ScanInput) String() string {
13262	return awsutil.Prettify(s)
13263}
13264
13265// GoString returns the string representation
13266func (s ScanInput) GoString() string {
13267	return s.String()
13268}
13269
13270// Validate inspects the fields of the type to determine if they are valid.
13271func (s *ScanInput) Validate() error {
13272	invalidParams := request.ErrInvalidParams{Context: "ScanInput"}
13273	if s.AttributesToGet != nil && len(s.AttributesToGet) < 1 {
13274		invalidParams.Add(request.NewErrParamMinLen("AttributesToGet", 1))
13275	}
13276	if s.IndexName != nil && len(*s.IndexName) < 3 {
13277		invalidParams.Add(request.NewErrParamMinLen("IndexName", 3))
13278	}
13279	if s.Limit != nil && *s.Limit < 1 {
13280		invalidParams.Add(request.NewErrParamMinValue("Limit", 1))
13281	}
13282	if s.TableName == nil {
13283		invalidParams.Add(request.NewErrParamRequired("TableName"))
13284	}
13285	if s.TableName != nil && len(*s.TableName) < 3 {
13286		invalidParams.Add(request.NewErrParamMinLen("TableName", 3))
13287	}
13288	if s.TotalSegments != nil && *s.TotalSegments < 1 {
13289		invalidParams.Add(request.NewErrParamMinValue("TotalSegments", 1))
13290	}
13291	if s.ScanFilter != nil {
13292		for i, v := range s.ScanFilter {
13293			if v == nil {
13294				continue
13295			}
13296			if err := v.Validate(); err != nil {
13297				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "ScanFilter", i), err.(request.ErrInvalidParams))
13298			}
13299		}
13300	}
13301
13302	if invalidParams.Len() > 0 {
13303		return invalidParams
13304	}
13305	return nil
13306}
13307
13308// SetAttributesToGet sets the AttributesToGet field's value.
13309func (s *ScanInput) SetAttributesToGet(v []*string) *ScanInput {
13310	s.AttributesToGet = v
13311	return s
13312}
13313
13314// SetConditionalOperator sets the ConditionalOperator field's value.
13315func (s *ScanInput) SetConditionalOperator(v string) *ScanInput {
13316	s.ConditionalOperator = &v
13317	return s
13318}
13319
13320// SetConsistentRead sets the ConsistentRead field's value.
13321func (s *ScanInput) SetConsistentRead(v bool) *ScanInput {
13322	s.ConsistentRead = &v
13323	return s
13324}
13325
13326// SetExclusiveStartKey sets the ExclusiveStartKey field's value.
13327func (s *ScanInput) SetExclusiveStartKey(v map[string]*AttributeValue) *ScanInput {
13328	s.ExclusiveStartKey = v
13329	return s
13330}
13331
13332// SetExpressionAttributeNames sets the ExpressionAttributeNames field's value.
13333func (s *ScanInput) SetExpressionAttributeNames(v map[string]*string) *ScanInput {
13334	s.ExpressionAttributeNames = v
13335	return s
13336}
13337
13338// SetExpressionAttributeValues sets the ExpressionAttributeValues field's value.
13339func (s *ScanInput) SetExpressionAttributeValues(v map[string]*AttributeValue) *ScanInput {
13340	s.ExpressionAttributeValues = v
13341	return s
13342}
13343
13344// SetFilterExpression sets the FilterExpression field's value.
13345func (s *ScanInput) SetFilterExpression(v string) *ScanInput {
13346	s.FilterExpression = &v
13347	return s
13348}
13349
13350// SetIndexName sets the IndexName field's value.
13351func (s *ScanInput) SetIndexName(v string) *ScanInput {
13352	s.IndexName = &v
13353	return s
13354}
13355
13356// SetLimit sets the Limit field's value.
13357func (s *ScanInput) SetLimit(v int64) *ScanInput {
13358	s.Limit = &v
13359	return s
13360}
13361
13362// SetProjectionExpression sets the ProjectionExpression field's value.
13363func (s *ScanInput) SetProjectionExpression(v string) *ScanInput {
13364	s.ProjectionExpression = &v
13365	return s
13366}
13367
13368// SetReturnConsumedCapacity sets the ReturnConsumedCapacity field's value.
13369func (s *ScanInput) SetReturnConsumedCapacity(v string) *ScanInput {
13370	s.ReturnConsumedCapacity = &v
13371	return s
13372}
13373
13374// SetScanFilter sets the ScanFilter field's value.
13375func (s *ScanInput) SetScanFilter(v map[string]*Condition) *ScanInput {
13376	s.ScanFilter = v
13377	return s
13378}
13379
13380// SetSegment sets the Segment field's value.
13381func (s *ScanInput) SetSegment(v int64) *ScanInput {
13382	s.Segment = &v
13383	return s
13384}
13385
13386// SetSelect sets the Select field's value.
13387func (s *ScanInput) SetSelect(v string) *ScanInput {
13388	s.Select = &v
13389	return s
13390}
13391
13392// SetTableName sets the TableName field's value.
13393func (s *ScanInput) SetTableName(v string) *ScanInput {
13394	s.TableName = &v
13395	return s
13396}
13397
13398// SetTotalSegments sets the TotalSegments field's value.
13399func (s *ScanInput) SetTotalSegments(v int64) *ScanInput {
13400	s.TotalSegments = &v
13401	return s
13402}
13403
13404// Represents the output of a Scan operation.
13405type ScanOutput struct {
13406	_ struct{} `type:"structure"`
13407
13408	// The capacity units consumed by the Scan operation. The data returned includes
13409	// the total provisioned throughput consumed, along with statistics for the
13410	// table and any indexes involved in the operation. ConsumedCapacity is only
13411	// returned if the ReturnConsumedCapacity parameter was specified. For more
13412	// information, see Provisioned Throughput (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ProvisionedThroughputIntro.html)
13413	// in the Amazon DynamoDB Developer Guide.
13414	ConsumedCapacity *ConsumedCapacity `type:"structure"`
13415
13416	// The number of items in the response.
13417	//
13418	// If you set ScanFilter in the request, then Count is the number of items returned
13419	// after the filter was applied, and ScannedCount is the number of matching
13420	// items before the filter was applied.
13421	//
13422	// If you did not use a filter in the request, then Count is the same as ScannedCount.
13423	Count *int64 `type:"integer"`
13424
13425	// An array of item attributes that match the scan criteria. Each element in
13426	// this array consists of an attribute name and the value for that attribute.
13427	Items []map[string]*AttributeValue `type:"list"`
13428
13429	// The primary key of the item where the operation stopped, inclusive of the
13430	// previous result set. Use this value to start a new operation, excluding this
13431	// value in the new request.
13432	//
13433	// If LastEvaluatedKey is empty, then the "last page" of results has been processed
13434	// and there is no more data to be retrieved.
13435	//
13436	// If LastEvaluatedKey is not empty, it does not necessarily mean that there
13437	// is more data in the result set. The only way to know when you have reached
13438	// the end of the result set is when LastEvaluatedKey is empty.
13439	LastEvaluatedKey map[string]*AttributeValue `type:"map"`
13440
13441	// The number of items evaluated, before any ScanFilter is applied. A high ScannedCount
13442	// value with few, or no, Count results indicates an inefficient Scan operation.
13443	// For more information, see Count and ScannedCount (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/QueryAndScan.html#Count)
13444	// in the Amazon DynamoDB Developer Guide.
13445	//
13446	// If you did not use a filter in the request, then ScannedCount is the same
13447	// as Count.
13448	ScannedCount *int64 `type:"integer"`
13449}
13450
13451// String returns the string representation
13452func (s ScanOutput) String() string {
13453	return awsutil.Prettify(s)
13454}
13455
13456// GoString returns the string representation
13457func (s ScanOutput) GoString() string {
13458	return s.String()
13459}
13460
13461// SetConsumedCapacity sets the ConsumedCapacity field's value.
13462func (s *ScanOutput) SetConsumedCapacity(v *ConsumedCapacity) *ScanOutput {
13463	s.ConsumedCapacity = v
13464	return s
13465}
13466
13467// SetCount sets the Count field's value.
13468func (s *ScanOutput) SetCount(v int64) *ScanOutput {
13469	s.Count = &v
13470	return s
13471}
13472
13473// SetItems sets the Items field's value.
13474func (s *ScanOutput) SetItems(v []map[string]*AttributeValue) *ScanOutput {
13475	s.Items = v
13476	return s
13477}
13478
13479// SetLastEvaluatedKey sets the LastEvaluatedKey field's value.
13480func (s *ScanOutput) SetLastEvaluatedKey(v map[string]*AttributeValue) *ScanOutput {
13481	s.LastEvaluatedKey = v
13482	return s
13483}
13484
13485// SetScannedCount sets the ScannedCount field's value.
13486func (s *ScanOutput) SetScannedCount(v int64) *ScanOutput {
13487	s.ScannedCount = &v
13488	return s
13489}
13490
13491// Contains the details of the table when the backup was created.
13492type SourceTableDetails struct {
13493	_ struct{} `type:"structure"`
13494
13495	// Controls how you are charged for read and write throughput and how you manage
13496	// capacity. This setting can be changed later.
13497	//
13498	//    * PROVISIONED - Sets the read/write capacity mode to PROVISIONED. We recommend
13499	//    using PROVISIONED for predictable workloads.
13500	//
13501	//    * PAY_PER_REQUEST - Sets the read/write capacity mode to PAY_PER_REQUEST.
13502	//    We recommend using PAY_PER_REQUEST for unpredictable workloads.
13503	BillingMode *string `type:"string" enum:"BillingMode"`
13504
13505	// Number of items in the table. Please note this is an approximate value.
13506	ItemCount *int64 `type:"long"`
13507
13508	// Schema of the table.
13509	//
13510	// KeySchema is a required field
13511	KeySchema []*KeySchemaElement `min:"1" type:"list" required:"true"`
13512
13513	// Read IOPs and Write IOPS on the table when the backup was created.
13514	//
13515	// ProvisionedThroughput is a required field
13516	ProvisionedThroughput *ProvisionedThroughput `type:"structure" required:"true"`
13517
13518	// ARN of the table for which backup was created.
13519	TableArn *string `type:"string"`
13520
13521	// Time when the source table was created.
13522	//
13523	// TableCreationDateTime is a required field
13524	TableCreationDateTime *time.Time `type:"timestamp" required:"true"`
13525
13526	// Unique identifier for the table for which the backup was created.
13527	//
13528	// TableId is a required field
13529	TableId *string `type:"string" required:"true"`
13530
13531	// The name of the table for which the backup was created.
13532	//
13533	// TableName is a required field
13534	TableName *string `min:"3" type:"string" required:"true"`
13535
13536	// Size of the table in bytes. Please note this is an approximate value.
13537	TableSizeBytes *int64 `type:"long"`
13538}
13539
13540// String returns the string representation
13541func (s SourceTableDetails) String() string {
13542	return awsutil.Prettify(s)
13543}
13544
13545// GoString returns the string representation
13546func (s SourceTableDetails) GoString() string {
13547	return s.String()
13548}
13549
13550// SetBillingMode sets the BillingMode field's value.
13551func (s *SourceTableDetails) SetBillingMode(v string) *SourceTableDetails {
13552	s.BillingMode = &v
13553	return s
13554}
13555
13556// SetItemCount sets the ItemCount field's value.
13557func (s *SourceTableDetails) SetItemCount(v int64) *SourceTableDetails {
13558	s.ItemCount = &v
13559	return s
13560}
13561
13562// SetKeySchema sets the KeySchema field's value.
13563func (s *SourceTableDetails) SetKeySchema(v []*KeySchemaElement) *SourceTableDetails {
13564	s.KeySchema = v
13565	return s
13566}
13567
13568// SetProvisionedThroughput sets the ProvisionedThroughput field's value.
13569func (s *SourceTableDetails) SetProvisionedThroughput(v *ProvisionedThroughput) *SourceTableDetails {
13570	s.ProvisionedThroughput = v
13571	return s
13572}
13573
13574// SetTableArn sets the TableArn field's value.
13575func (s *SourceTableDetails) SetTableArn(v string) *SourceTableDetails {
13576	s.TableArn = &v
13577	return s
13578}
13579
13580// SetTableCreationDateTime sets the TableCreationDateTime field's value.
13581func (s *SourceTableDetails) SetTableCreationDateTime(v time.Time) *SourceTableDetails {
13582	s.TableCreationDateTime = &v
13583	return s
13584}
13585
13586// SetTableId sets the TableId field's value.
13587func (s *SourceTableDetails) SetTableId(v string) *SourceTableDetails {
13588	s.TableId = &v
13589	return s
13590}
13591
13592// SetTableName sets the TableName field's value.
13593func (s *SourceTableDetails) SetTableName(v string) *SourceTableDetails {
13594	s.TableName = &v
13595	return s
13596}
13597
13598// SetTableSizeBytes sets the TableSizeBytes field's value.
13599func (s *SourceTableDetails) SetTableSizeBytes(v int64) *SourceTableDetails {
13600	s.TableSizeBytes = &v
13601	return s
13602}
13603
13604// Contains the details of the features enabled on the table when the backup
13605// was created. For example, LSIs, GSIs, streams, TTL.
13606type SourceTableFeatureDetails struct {
13607	_ struct{} `type:"structure"`
13608
13609	// Represents the GSI properties for the table when the backup was created.
13610	// It includes the IndexName, KeySchema, Projection and ProvisionedThroughput
13611	// for the GSIs on the table at the time of backup.
13612	GlobalSecondaryIndexes []*GlobalSecondaryIndexInfo `type:"list"`
13613
13614	// Represents the LSI properties for the table when the backup was created.
13615	// It includes the IndexName, KeySchema and Projection for the LSIs on the table
13616	// at the time of backup.
13617	LocalSecondaryIndexes []*LocalSecondaryIndexInfo `type:"list"`
13618
13619	// The description of the server-side encryption status on the table when the
13620	// backup was created.
13621	SSEDescription *SSEDescription `type:"structure"`
13622
13623	// Stream settings on the table when the backup was created.
13624	StreamDescription *StreamSpecification `type:"structure"`
13625
13626	// Time to Live settings on the table when the backup was created.
13627	TimeToLiveDescription *TimeToLiveDescription `type:"structure"`
13628}
13629
13630// String returns the string representation
13631func (s SourceTableFeatureDetails) String() string {
13632	return awsutil.Prettify(s)
13633}
13634
13635// GoString returns the string representation
13636func (s SourceTableFeatureDetails) GoString() string {
13637	return s.String()
13638}
13639
13640// SetGlobalSecondaryIndexes sets the GlobalSecondaryIndexes field's value.
13641func (s *SourceTableFeatureDetails) SetGlobalSecondaryIndexes(v []*GlobalSecondaryIndexInfo) *SourceTableFeatureDetails {
13642	s.GlobalSecondaryIndexes = v
13643	return s
13644}
13645
13646// SetLocalSecondaryIndexes sets the LocalSecondaryIndexes field's value.
13647func (s *SourceTableFeatureDetails) SetLocalSecondaryIndexes(v []*LocalSecondaryIndexInfo) *SourceTableFeatureDetails {
13648	s.LocalSecondaryIndexes = v
13649	return s
13650}
13651
13652// SetSSEDescription sets the SSEDescription field's value.
13653func (s *SourceTableFeatureDetails) SetSSEDescription(v *SSEDescription) *SourceTableFeatureDetails {
13654	s.SSEDescription = v
13655	return s
13656}
13657
13658// SetStreamDescription sets the StreamDescription field's value.
13659func (s *SourceTableFeatureDetails) SetStreamDescription(v *StreamSpecification) *SourceTableFeatureDetails {
13660	s.StreamDescription = v
13661	return s
13662}
13663
13664// SetTimeToLiveDescription sets the TimeToLiveDescription field's value.
13665func (s *SourceTableFeatureDetails) SetTimeToLiveDescription(v *TimeToLiveDescription) *SourceTableFeatureDetails {
13666	s.TimeToLiveDescription = v
13667	return s
13668}
13669
13670// Represents the DynamoDB Streams configuration for a table in DynamoDB.
13671type StreamSpecification struct {
13672	_ struct{} `type:"structure"`
13673
13674	// Indicates whether DynamoDB Streams is enabled (true) or disabled (false)
13675	// on the table.
13676	StreamEnabled *bool `type:"boolean"`
13677
13678	// When an item in the table is modified, StreamViewType determines what information
13679	// is written to the stream for this table. Valid values for StreamViewType
13680	// are:
13681	//
13682	//    * KEYS_ONLY - Only the key attributes of the modified item are written
13683	//    to the stream.
13684	//
13685	//    * NEW_IMAGE - The entire item, as it appears after it was modified, is
13686	//    written to the stream.
13687	//
13688	//    * OLD_IMAGE - The entire item, as it appeared before it was modified,
13689	//    is written to the stream.
13690	//
13691	//    * NEW_AND_OLD_IMAGES - Both the new and the old item images of the item
13692	//    are written to the stream.
13693	StreamViewType *string `type:"string" enum:"StreamViewType"`
13694}
13695
13696// String returns the string representation
13697func (s StreamSpecification) String() string {
13698	return awsutil.Prettify(s)
13699}
13700
13701// GoString returns the string representation
13702func (s StreamSpecification) GoString() string {
13703	return s.String()
13704}
13705
13706// SetStreamEnabled sets the StreamEnabled field's value.
13707func (s *StreamSpecification) SetStreamEnabled(v bool) *StreamSpecification {
13708	s.StreamEnabled = &v
13709	return s
13710}
13711
13712// SetStreamViewType sets the StreamViewType field's value.
13713func (s *StreamSpecification) SetStreamViewType(v string) *StreamSpecification {
13714	s.StreamViewType = &v
13715	return s
13716}
13717
13718// Represents the properties of a table.
13719type TableDescription struct {
13720	_ struct{} `type:"structure"`
13721
13722	// An array of AttributeDefinition objects. Each of these objects describes
13723	// one attribute in the table and index key schema.
13724	//
13725	// Each AttributeDefinition object in this array is composed of:
13726	//
13727	//    * AttributeName - The name of the attribute.
13728	//
13729	//    * AttributeType - The data type for the attribute.
13730	AttributeDefinitions []*AttributeDefinition `type:"list"`
13731
13732	// Contains the details for the read/write capacity mode.
13733	BillingModeSummary *BillingModeSummary `type:"structure"`
13734
13735	// The date and time when the table was created, in UNIX epoch time (http://www.epochconverter.com/)
13736	// format.
13737	CreationDateTime *time.Time `type:"timestamp"`
13738
13739	// The global secondary indexes, if any, on the table. Each index is scoped
13740	// to a given partition key value. Each element is composed of:
13741	//
13742	//    * Backfilling - If true, then the index is currently in the backfilling
13743	//    phase. Backfilling occurs only when a new global secondary index is added
13744	//    to the table; it is the process by which DynamoDB populates the new index
13745	//    with data from the table. (This attribute does not appear for indexes
13746	//    that were created during a CreateTable operation.)
13747	//
13748	//    * IndexName - The name of the global secondary index.
13749	//
13750	//    * IndexSizeBytes - The total size of the global secondary index, in bytes.
13751	//    DynamoDB updates this value approximately every six hours. Recent changes
13752	//    might not be reflected in this value.
13753	//
13754	//    * IndexStatus - The current status of the global secondary index: CREATING
13755	//    - The index is being created. UPDATING - The index is being updated. DELETING
13756	//    - The index is being deleted. ACTIVE - The index is ready for use.
13757	//
13758	//    * ItemCount - The number of items in the global secondary index. DynamoDB
13759	//    updates this value approximately every six hours. Recent changes might
13760	//    not be reflected in this value.
13761	//
13762	//    * KeySchema - Specifies the complete index key schema. The attribute names
13763	//    in the key schema must be between 1 and 255 characters (inclusive). The
13764	//    key schema must begin with the same partition key as the table.
13765	//
13766	//    * Projection - Specifies attributes that are copied (projected) from the
13767	//    table into the index. These are in addition to the primary key attributes
13768	//    and index key attributes, which are automatically projected. Each attribute
13769	//    specification is composed of: ProjectionType - One of the following: KEYS_ONLY
13770	//    - Only the index and primary keys are projected into the index. INCLUDE
13771	//    - Only the specified table attributes are projected into the index. The
13772	//    list of projected attributes are in NonKeyAttributes. ALL - All of the
13773	//    table attributes are projected into the index. NonKeyAttributes - A list
13774	//    of one or more non-key attribute names that are projected into the secondary
13775	//    index. The total count of attributes provided in NonKeyAttributes, summed
13776	//    across all of the secondary indexes, must not exceed 20. If you project
13777	//    the same attribute into two different indexes, this counts as two distinct
13778	//    attributes when determining the total.
13779	//
13780	//    * ProvisionedThroughput - The provisioned throughput settings for the
13781	//    global secondary index, consisting of read and write capacity units, along
13782	//    with data about increases and decreases.
13783	//
13784	// If the table is in the DELETING state, no information about indexes will
13785	// be returned.
13786	GlobalSecondaryIndexes []*GlobalSecondaryIndexDescription `type:"list"`
13787
13788	// The number of items in the specified table. DynamoDB updates this value approximately
13789	// every six hours. Recent changes might not be reflected in this value.
13790	ItemCount *int64 `type:"long"`
13791
13792	// The primary key structure for the table. Each KeySchemaElement consists of:
13793	//
13794	//    * AttributeName - The name of the attribute.
13795	//
13796	//    * KeyType - The role of the attribute: HASH - partition key RANGE - sort
13797	//    key The partition key of an item is also known as its hash attribute.
13798	//    The term "hash attribute" derives from DynamoDB's usage of an internal
13799	//    hash function to evenly distribute data items across partitions, based
13800	//    on their partition key values. The sort key of an item is also known as
13801	//    its range attribute. The term "range attribute" derives from the way DynamoDB
13802	//    stores items with the same partition key physically close together, in
13803	//    sorted order by the sort key value.
13804	//
13805	// For more information about primary keys, see Primary Key (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/DataModel.html#DataModelPrimaryKey)
13806	// in the Amazon DynamoDB Developer Guide.
13807	KeySchema []*KeySchemaElement `min:"1" type:"list"`
13808
13809	// The Amazon Resource Name (ARN) that uniquely identifies the latest stream
13810	// for this table.
13811	LatestStreamArn *string `min:"37" type:"string"`
13812
13813	// A timestamp, in ISO 8601 format, for this stream.
13814	//
13815	// Note that LatestStreamLabel is not a unique identifier for the stream, because
13816	// it is possible that a stream from another table might have the same timestamp.
13817	// However, the combination of the following three elements is guaranteed to
13818	// be unique:
13819	//
13820	//    * the AWS customer ID.
13821	//
13822	//    * the table name.
13823	//
13824	//    * the StreamLabel.
13825	LatestStreamLabel *string `type:"string"`
13826
13827	// Represents one or more local secondary indexes on the table. Each index is
13828	// scoped to a given partition key value. Tables with one or more local secondary
13829	// indexes are subject to an item collection size limit, where the amount of
13830	// data within a given item collection cannot exceed 10 GB. Each element is
13831	// composed of:
13832	//
13833	//    * IndexName - The name of the local secondary index.
13834	//
13835	//    * KeySchema - Specifies the complete index key schema. The attribute names
13836	//    in the key schema must be between 1 and 255 characters (inclusive). The
13837	//    key schema must begin with the same partition key as the table.
13838	//
13839	//    * Projection - Specifies attributes that are copied (projected) from the
13840	//    table into the index. These are in addition to the primary key attributes
13841	//    and index key attributes, which are automatically projected. Each attribute
13842	//    specification is composed of: ProjectionType - One of the following: KEYS_ONLY
13843	//    - Only the index and primary keys are projected into the index. INCLUDE
13844	//    - Only the specified table attributes are projected into the index. The
13845	//    list of projected attributes are in NonKeyAttributes. ALL - All of the
13846	//    table attributes are projected into the index. NonKeyAttributes - A list
13847	//    of one or more non-key attribute names that are projected into the secondary
13848	//    index. The total count of attributes provided in NonKeyAttributes, summed
13849	//    across all of the secondary indexes, must not exceed 20. If you project
13850	//    the same attribute into two different indexes, this counts as two distinct
13851	//    attributes when determining the total.
13852	//
13853	//    * IndexSizeBytes - Represents the total size of the index, in bytes. DynamoDB
13854	//    updates this value approximately every six hours. Recent changes might
13855	//    not be reflected in this value.
13856	//
13857	//    * ItemCount - Represents the number of items in the index. DynamoDB updates
13858	//    this value approximately every six hours. Recent changes might not be
13859	//    reflected in this value.
13860	//
13861	// If the table is in the DELETING state, no information about indexes will
13862	// be returned.
13863	LocalSecondaryIndexes []*LocalSecondaryIndexDescription `type:"list"`
13864
13865	// The provisioned throughput settings for the table, consisting of read and
13866	// write capacity units, along with data about increases and decreases.
13867	ProvisionedThroughput *ProvisionedThroughputDescription `type:"structure"`
13868
13869	// Contains details for the restore.
13870	RestoreSummary *RestoreSummary `type:"structure"`
13871
13872	// The description of the server-side encryption status on the specified table.
13873	SSEDescription *SSEDescription `type:"structure"`
13874
13875	// The current DynamoDB Streams configuration for the table.
13876	StreamSpecification *StreamSpecification `type:"structure"`
13877
13878	// The Amazon Resource Name (ARN) that uniquely identifies the table.
13879	TableArn *string `type:"string"`
13880
13881	// Unique identifier for the table for which the backup was created.
13882	TableId *string `type:"string"`
13883
13884	// The name of the table.
13885	TableName *string `min:"3" type:"string"`
13886
13887	// The total size of the specified table, in bytes. DynamoDB updates this value
13888	// approximately every six hours. Recent changes might not be reflected in this
13889	// value.
13890	TableSizeBytes *int64 `type:"long"`
13891
13892	// The current state of the table:
13893	//
13894	//    * CREATING - The table is being created.
13895	//
13896	//    * UPDATING - The table is being updated.
13897	//
13898	//    * DELETING - The table is being deleted.
13899	//
13900	//    * ACTIVE - The table is ready for use.
13901	TableStatus *string `type:"string" enum:"TableStatus"`
13902}
13903
13904// String returns the string representation
13905func (s TableDescription) String() string {
13906	return awsutil.Prettify(s)
13907}
13908
13909// GoString returns the string representation
13910func (s TableDescription) GoString() string {
13911	return s.String()
13912}
13913
13914// SetAttributeDefinitions sets the AttributeDefinitions field's value.
13915func (s *TableDescription) SetAttributeDefinitions(v []*AttributeDefinition) *TableDescription {
13916	s.AttributeDefinitions = v
13917	return s
13918}
13919
13920// SetBillingModeSummary sets the BillingModeSummary field's value.
13921func (s *TableDescription) SetBillingModeSummary(v *BillingModeSummary) *TableDescription {
13922	s.BillingModeSummary = v
13923	return s
13924}
13925
13926// SetCreationDateTime sets the CreationDateTime field's value.
13927func (s *TableDescription) SetCreationDateTime(v time.Time) *TableDescription {
13928	s.CreationDateTime = &v
13929	return s
13930}
13931
13932// SetGlobalSecondaryIndexes sets the GlobalSecondaryIndexes field's value.
13933func (s *TableDescription) SetGlobalSecondaryIndexes(v []*GlobalSecondaryIndexDescription) *TableDescription {
13934	s.GlobalSecondaryIndexes = v
13935	return s
13936}
13937
13938// SetItemCount sets the ItemCount field's value.
13939func (s *TableDescription) SetItemCount(v int64) *TableDescription {
13940	s.ItemCount = &v
13941	return s
13942}
13943
13944// SetKeySchema sets the KeySchema field's value.
13945func (s *TableDescription) SetKeySchema(v []*KeySchemaElement) *TableDescription {
13946	s.KeySchema = v
13947	return s
13948}
13949
13950// SetLatestStreamArn sets the LatestStreamArn field's value.
13951func (s *TableDescription) SetLatestStreamArn(v string) *TableDescription {
13952	s.LatestStreamArn = &v
13953	return s
13954}
13955
13956// SetLatestStreamLabel sets the LatestStreamLabel field's value.
13957func (s *TableDescription) SetLatestStreamLabel(v string) *TableDescription {
13958	s.LatestStreamLabel = &v
13959	return s
13960}
13961
13962// SetLocalSecondaryIndexes sets the LocalSecondaryIndexes field's value.
13963func (s *TableDescription) SetLocalSecondaryIndexes(v []*LocalSecondaryIndexDescription) *TableDescription {
13964	s.LocalSecondaryIndexes = v
13965	return s
13966}
13967
13968// SetProvisionedThroughput sets the ProvisionedThroughput field's value.
13969func (s *TableDescription) SetProvisionedThroughput(v *ProvisionedThroughputDescription) *TableDescription {
13970	s.ProvisionedThroughput = v
13971	return s
13972}
13973
13974// SetRestoreSummary sets the RestoreSummary field's value.
13975func (s *TableDescription) SetRestoreSummary(v *RestoreSummary) *TableDescription {
13976	s.RestoreSummary = v
13977	return s
13978}
13979
13980// SetSSEDescription sets the SSEDescription field's value.
13981func (s *TableDescription) SetSSEDescription(v *SSEDescription) *TableDescription {
13982	s.SSEDescription = v
13983	return s
13984}
13985
13986// SetStreamSpecification sets the StreamSpecification field's value.
13987func (s *TableDescription) SetStreamSpecification(v *StreamSpecification) *TableDescription {
13988	s.StreamSpecification = v
13989	return s
13990}
13991
13992// SetTableArn sets the TableArn field's value.
13993func (s *TableDescription) SetTableArn(v string) *TableDescription {
13994	s.TableArn = &v
13995	return s
13996}
13997
13998// SetTableId sets the TableId field's value.
13999func (s *TableDescription) SetTableId(v string) *TableDescription {
14000	s.TableId = &v
14001	return s
14002}
14003
14004// SetTableName sets the TableName field's value.
14005func (s *TableDescription) SetTableName(v string) *TableDescription {
14006	s.TableName = &v
14007	return s
14008}
14009
14010// SetTableSizeBytes sets the TableSizeBytes field's value.
14011func (s *TableDescription) SetTableSizeBytes(v int64) *TableDescription {
14012	s.TableSizeBytes = &v
14013	return s
14014}
14015
14016// SetTableStatus sets the TableStatus field's value.
14017func (s *TableDescription) SetTableStatus(v string) *TableDescription {
14018	s.TableStatus = &v
14019	return s
14020}
14021
14022// Describes a tag. A tag is a key-value pair. You can add up to 50 tags to
14023// a single DynamoDB table.
14024//
14025// AWS-assigned tag names and values are automatically assigned the aws: prefix,
14026// which the user cannot assign. AWS-assigned tag names do not count towards
14027// the tag limit of 50. User-assigned tag names have the prefix user: in the
14028// Cost Allocation Report. You cannot backdate the application of a tag.
14029//
14030// For an overview on tagging DynamoDB resources, see Tagging for DynamoDB (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Tagging.html)
14031// in the Amazon DynamoDB Developer Guide.
14032type Tag struct {
14033	_ struct{} `type:"structure"`
14034
14035	// The key of the tag. Tag keys are case sensitive. Each DynamoDB table can
14036	// only have up to one tag with the same key. If you try to add an existing
14037	// tag (same key), the existing tag value will be updated to the new value.
14038	//
14039	// Key is a required field
14040	Key *string `min:"1" type:"string" required:"true"`
14041
14042	// The value of the tag. Tag values are case-sensitive and can be null.
14043	//
14044	// Value is a required field
14045	Value *string `type:"string" required:"true"`
14046}
14047
14048// String returns the string representation
14049func (s Tag) String() string {
14050	return awsutil.Prettify(s)
14051}
14052
14053// GoString returns the string representation
14054func (s Tag) GoString() string {
14055	return s.String()
14056}
14057
14058// Validate inspects the fields of the type to determine if they are valid.
14059func (s *Tag) Validate() error {
14060	invalidParams := request.ErrInvalidParams{Context: "Tag"}
14061	if s.Key == nil {
14062		invalidParams.Add(request.NewErrParamRequired("Key"))
14063	}
14064	if s.Key != nil && len(*s.Key) < 1 {
14065		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
14066	}
14067	if s.Value == nil {
14068		invalidParams.Add(request.NewErrParamRequired("Value"))
14069	}
14070
14071	if invalidParams.Len() > 0 {
14072		return invalidParams
14073	}
14074	return nil
14075}
14076
14077// SetKey sets the Key field's value.
14078func (s *Tag) SetKey(v string) *Tag {
14079	s.Key = &v
14080	return s
14081}
14082
14083// SetValue sets the Value field's value.
14084func (s *Tag) SetValue(v string) *Tag {
14085	s.Value = &v
14086	return s
14087}
14088
14089type TagResourceInput struct {
14090	_ struct{} `type:"structure"`
14091
14092	// Identifies the Amazon DynamoDB resource to which tags should be added. This
14093	// value is an Amazon Resource Name (ARN).
14094	//
14095	// ResourceArn is a required field
14096	ResourceArn *string `min:"1" type:"string" required:"true"`
14097
14098	// The tags to be assigned to the Amazon DynamoDB resource.
14099	//
14100	// Tags is a required field
14101	Tags []*Tag `type:"list" required:"true"`
14102}
14103
14104// String returns the string representation
14105func (s TagResourceInput) String() string {
14106	return awsutil.Prettify(s)
14107}
14108
14109// GoString returns the string representation
14110func (s TagResourceInput) GoString() string {
14111	return s.String()
14112}
14113
14114// Validate inspects the fields of the type to determine if they are valid.
14115func (s *TagResourceInput) Validate() error {
14116	invalidParams := request.ErrInvalidParams{Context: "TagResourceInput"}
14117	if s.ResourceArn == nil {
14118		invalidParams.Add(request.NewErrParamRequired("ResourceArn"))
14119	}
14120	if s.ResourceArn != nil && len(*s.ResourceArn) < 1 {
14121		invalidParams.Add(request.NewErrParamMinLen("ResourceArn", 1))
14122	}
14123	if s.Tags == nil {
14124		invalidParams.Add(request.NewErrParamRequired("Tags"))
14125	}
14126	if s.Tags != nil {
14127		for i, v := range s.Tags {
14128			if v == nil {
14129				continue
14130			}
14131			if err := v.Validate(); err != nil {
14132				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Tags", i), err.(request.ErrInvalidParams))
14133			}
14134		}
14135	}
14136
14137	if invalidParams.Len() > 0 {
14138		return invalidParams
14139	}
14140	return nil
14141}
14142
14143// SetResourceArn sets the ResourceArn field's value.
14144func (s *TagResourceInput) SetResourceArn(v string) *TagResourceInput {
14145	s.ResourceArn = &v
14146	return s
14147}
14148
14149// SetTags sets the Tags field's value.
14150func (s *TagResourceInput) SetTags(v []*Tag) *TagResourceInput {
14151	s.Tags = v
14152	return s
14153}
14154
14155type TagResourceOutput struct {
14156	_ struct{} `type:"structure"`
14157}
14158
14159// String returns the string representation
14160func (s TagResourceOutput) String() string {
14161	return awsutil.Prettify(s)
14162}
14163
14164// GoString returns the string representation
14165func (s TagResourceOutput) GoString() string {
14166	return s.String()
14167}
14168
14169// The description of the Time to Live (TTL) status on the specified table.
14170type TimeToLiveDescription struct {
14171	_ struct{} `type:"structure"`
14172
14173	// The name of the TTL attribute for items in the table.
14174	AttributeName *string `min:"1" type:"string"`
14175
14176	// The TTL status for the table.
14177	TimeToLiveStatus *string `type:"string" enum:"TimeToLiveStatus"`
14178}
14179
14180// String returns the string representation
14181func (s TimeToLiveDescription) String() string {
14182	return awsutil.Prettify(s)
14183}
14184
14185// GoString returns the string representation
14186func (s TimeToLiveDescription) GoString() string {
14187	return s.String()
14188}
14189
14190// SetAttributeName sets the AttributeName field's value.
14191func (s *TimeToLiveDescription) SetAttributeName(v string) *TimeToLiveDescription {
14192	s.AttributeName = &v
14193	return s
14194}
14195
14196// SetTimeToLiveStatus sets the TimeToLiveStatus field's value.
14197func (s *TimeToLiveDescription) SetTimeToLiveStatus(v string) *TimeToLiveDescription {
14198	s.TimeToLiveStatus = &v
14199	return s
14200}
14201
14202// Represents the settings used to enable or disable Time to Live (TTL) for
14203// the specified table.
14204type TimeToLiveSpecification struct {
14205	_ struct{} `type:"structure"`
14206
14207	// The name of the TTL attribute used to store the expiration time for items
14208	// in the table.
14209	//
14210	// AttributeName is a required field
14211	AttributeName *string `min:"1" type:"string" required:"true"`
14212
14213	// Indicates whether TTL is to be enabled (true) or disabled (false) on the
14214	// table.
14215	//
14216	// Enabled is a required field
14217	Enabled *bool `type:"boolean" required:"true"`
14218}
14219
14220// String returns the string representation
14221func (s TimeToLiveSpecification) String() string {
14222	return awsutil.Prettify(s)
14223}
14224
14225// GoString returns the string representation
14226func (s TimeToLiveSpecification) GoString() string {
14227	return s.String()
14228}
14229
14230// Validate inspects the fields of the type to determine if they are valid.
14231func (s *TimeToLiveSpecification) Validate() error {
14232	invalidParams := request.ErrInvalidParams{Context: "TimeToLiveSpecification"}
14233	if s.AttributeName == nil {
14234		invalidParams.Add(request.NewErrParamRequired("AttributeName"))
14235	}
14236	if s.AttributeName != nil && len(*s.AttributeName) < 1 {
14237		invalidParams.Add(request.NewErrParamMinLen("AttributeName", 1))
14238	}
14239	if s.Enabled == nil {
14240		invalidParams.Add(request.NewErrParamRequired("Enabled"))
14241	}
14242
14243	if invalidParams.Len() > 0 {
14244		return invalidParams
14245	}
14246	return nil
14247}
14248
14249// SetAttributeName sets the AttributeName field's value.
14250func (s *TimeToLiveSpecification) SetAttributeName(v string) *TimeToLiveSpecification {
14251	s.AttributeName = &v
14252	return s
14253}
14254
14255// SetEnabled sets the Enabled field's value.
14256func (s *TimeToLiveSpecification) SetEnabled(v bool) *TimeToLiveSpecification {
14257	s.Enabled = &v
14258	return s
14259}
14260
14261// Specifies an item to be retrieved as part of the transaction.
14262type TransactGetItem struct {
14263	_ struct{} `type:"structure"`
14264
14265	// Contains the primary key that identifies the item to get, together with the
14266	// name of the table that contains the item, and optionally the specific attributes
14267	// of the item to retrieve.
14268	//
14269	// Get is a required field
14270	Get *Get `type:"structure" required:"true"`
14271}
14272
14273// String returns the string representation
14274func (s TransactGetItem) String() string {
14275	return awsutil.Prettify(s)
14276}
14277
14278// GoString returns the string representation
14279func (s TransactGetItem) GoString() string {
14280	return s.String()
14281}
14282
14283// Validate inspects the fields of the type to determine if they are valid.
14284func (s *TransactGetItem) Validate() error {
14285	invalidParams := request.ErrInvalidParams{Context: "TransactGetItem"}
14286	if s.Get == nil {
14287		invalidParams.Add(request.NewErrParamRequired("Get"))
14288	}
14289	if s.Get != nil {
14290		if err := s.Get.Validate(); err != nil {
14291			invalidParams.AddNested("Get", err.(request.ErrInvalidParams))
14292		}
14293	}
14294
14295	if invalidParams.Len() > 0 {
14296		return invalidParams
14297	}
14298	return nil
14299}
14300
14301// SetGet sets the Get field's value.
14302func (s *TransactGetItem) SetGet(v *Get) *TransactGetItem {
14303	s.Get = v
14304	return s
14305}
14306
14307type TransactGetItemsInput struct {
14308	_ struct{} `type:"structure"`
14309
14310	// A value of TOTAL causes consumed capacity information to be returned, and
14311	// a value of NONE prevents that information from being returned. No other value
14312	// is valid.
14313	ReturnConsumedCapacity *string `type:"string" enum:"ReturnConsumedCapacity"`
14314
14315	// An ordered array of up to 25 TransactGetItem objects, each of which contains
14316	// a Get structure.
14317	//
14318	// TransactItems is a required field
14319	TransactItems []*TransactGetItem `min:"1" type:"list" required:"true"`
14320}
14321
14322// String returns the string representation
14323func (s TransactGetItemsInput) String() string {
14324	return awsutil.Prettify(s)
14325}
14326
14327// GoString returns the string representation
14328func (s TransactGetItemsInput) GoString() string {
14329	return s.String()
14330}
14331
14332// Validate inspects the fields of the type to determine if they are valid.
14333func (s *TransactGetItemsInput) Validate() error {
14334	invalidParams := request.ErrInvalidParams{Context: "TransactGetItemsInput"}
14335	if s.TransactItems == nil {
14336		invalidParams.Add(request.NewErrParamRequired("TransactItems"))
14337	}
14338	if s.TransactItems != nil && len(s.TransactItems) < 1 {
14339		invalidParams.Add(request.NewErrParamMinLen("TransactItems", 1))
14340	}
14341	if s.TransactItems != nil {
14342		for i, v := range s.TransactItems {
14343			if v == nil {
14344				continue
14345			}
14346			if err := v.Validate(); err != nil {
14347				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "TransactItems", i), err.(request.ErrInvalidParams))
14348			}
14349		}
14350	}
14351
14352	if invalidParams.Len() > 0 {
14353		return invalidParams
14354	}
14355	return nil
14356}
14357
14358// SetReturnConsumedCapacity sets the ReturnConsumedCapacity field's value.
14359func (s *TransactGetItemsInput) SetReturnConsumedCapacity(v string) *TransactGetItemsInput {
14360	s.ReturnConsumedCapacity = &v
14361	return s
14362}
14363
14364// SetTransactItems sets the TransactItems field's value.
14365func (s *TransactGetItemsInput) SetTransactItems(v []*TransactGetItem) *TransactGetItemsInput {
14366	s.TransactItems = v
14367	return s
14368}
14369
14370type TransactGetItemsOutput struct {
14371	_ struct{} `type:"structure"`
14372
14373	// If the ReturnConsumedCapacity value was TOTAL, this is an array of ConsumedCapacity
14374	// objects, one for each table addressed by TransactGetItem objects in the TransactItems
14375	// parameter. These ConsumedCapacity objects report the read-capacity units
14376	// consumed by the TransactGetItems call in that table.
14377	ConsumedCapacity []*ConsumedCapacity `type:"list"`
14378
14379	// An ordered array of up to 25 ItemResponse objects, each of which corresponds
14380	// to the TransactGetItem object in the same position in the TransactItems array.
14381	// Each ItemResponse object contains a Map of the name-value pairs that are
14382	// the projected attributes of the requested item.
14383	//
14384	// If a requested item could not be retrieved, the corresponding ItemResponse
14385	// object is Null, or if the requested item has no projected attributes, the
14386	// corresponding ItemResponse object is an empty Map.
14387	Responses []*ItemResponse `min:"1" type:"list"`
14388}
14389
14390// String returns the string representation
14391func (s TransactGetItemsOutput) String() string {
14392	return awsutil.Prettify(s)
14393}
14394
14395// GoString returns the string representation
14396func (s TransactGetItemsOutput) GoString() string {
14397	return s.String()
14398}
14399
14400// SetConsumedCapacity sets the ConsumedCapacity field's value.
14401func (s *TransactGetItemsOutput) SetConsumedCapacity(v []*ConsumedCapacity) *TransactGetItemsOutput {
14402	s.ConsumedCapacity = v
14403	return s
14404}
14405
14406// SetResponses sets the Responses field's value.
14407func (s *TransactGetItemsOutput) SetResponses(v []*ItemResponse) *TransactGetItemsOutput {
14408	s.Responses = v
14409	return s
14410}
14411
14412// A list of requests that can perform update, put, delete, or check operations
14413// on multiple items in one or more tables atomically.
14414type TransactWriteItem struct {
14415	_ struct{} `type:"structure"`
14416
14417	// A request to perform a check item operation.
14418	ConditionCheck *ConditionCheck `type:"structure"`
14419
14420	// A request to perform a DeleteItem operation.
14421	Delete *Delete `type:"structure"`
14422
14423	// A request to perform a PutItem operation.
14424	Put *Put `type:"structure"`
14425
14426	// A request to perform an UpdateItem operation.
14427	Update *Update `type:"structure"`
14428}
14429
14430// String returns the string representation
14431func (s TransactWriteItem) String() string {
14432	return awsutil.Prettify(s)
14433}
14434
14435// GoString returns the string representation
14436func (s TransactWriteItem) GoString() string {
14437	return s.String()
14438}
14439
14440// Validate inspects the fields of the type to determine if they are valid.
14441func (s *TransactWriteItem) Validate() error {
14442	invalidParams := request.ErrInvalidParams{Context: "TransactWriteItem"}
14443	if s.ConditionCheck != nil {
14444		if err := s.ConditionCheck.Validate(); err != nil {
14445			invalidParams.AddNested("ConditionCheck", err.(request.ErrInvalidParams))
14446		}
14447	}
14448	if s.Delete != nil {
14449		if err := s.Delete.Validate(); err != nil {
14450			invalidParams.AddNested("Delete", err.(request.ErrInvalidParams))
14451		}
14452	}
14453	if s.Put != nil {
14454		if err := s.Put.Validate(); err != nil {
14455			invalidParams.AddNested("Put", err.(request.ErrInvalidParams))
14456		}
14457	}
14458	if s.Update != nil {
14459		if err := s.Update.Validate(); err != nil {
14460			invalidParams.AddNested("Update", err.(request.ErrInvalidParams))
14461		}
14462	}
14463
14464	if invalidParams.Len() > 0 {
14465		return invalidParams
14466	}
14467	return nil
14468}
14469
14470// SetConditionCheck sets the ConditionCheck field's value.
14471func (s *TransactWriteItem) SetConditionCheck(v *ConditionCheck) *TransactWriteItem {
14472	s.ConditionCheck = v
14473	return s
14474}
14475
14476// SetDelete sets the Delete field's value.
14477func (s *TransactWriteItem) SetDelete(v *Delete) *TransactWriteItem {
14478	s.Delete = v
14479	return s
14480}
14481
14482// SetPut sets the Put field's value.
14483func (s *TransactWriteItem) SetPut(v *Put) *TransactWriteItem {
14484	s.Put = v
14485	return s
14486}
14487
14488// SetUpdate sets the Update field's value.
14489func (s *TransactWriteItem) SetUpdate(v *Update) *TransactWriteItem {
14490	s.Update = v
14491	return s
14492}
14493
14494type TransactWriteItemsInput struct {
14495	_ struct{} `type:"structure"`
14496
14497	// Providing a ClientRequestToken makes the call to TransactWriteItems idempotent,
14498	// meaning that multiple identical calls have the same effect as one single
14499	// call.
14500	//
14501	// Although multiple identical calls using the same client request token produce
14502	// the same result on the server (no side effects), the responses to the calls
14503	// might not be the same. If the ReturnConsumedCapacity> parameter is set, then
14504	// the initial TransactWriteItems call returns the amount of write capacity
14505	// units consumed in making the changes. Subsequent TransactWriteItems calls
14506	// with the same client token return the number of read capacity units consumed
14507	// in reading the item.
14508	//
14509	// A client request token is valid for 10 minutes after the first request that
14510	// uses it is completed. After 10 minutes, any request with the same client
14511	// token is treated as a new request. Do not resubmit the same request with
14512	// the same client token for more than 10 minutes, or the result might not be
14513	// idempotent.
14514	//
14515	// If you submit a request with the same client token but a change in other
14516	// parameters within the 10-minute idempotency window, DynamoDB returns an IdempotentParameterMismatch
14517	// exception.
14518	ClientRequestToken *string `min:"1" type:"string" idempotencyToken:"true"`
14519
14520	// Determines the level of detail about provisioned throughput consumption that
14521	// is returned in the response:
14522	//
14523	//    * INDEXES - The response includes the aggregate ConsumedCapacity for the
14524	//    operation, together with ConsumedCapacity for each table and secondary
14525	//    index that was accessed. Note that some operations, such as GetItem and
14526	//    BatchGetItem, do not access any indexes at all. In these cases, specifying
14527	//    INDEXES will only return ConsumedCapacity information for table(s).
14528	//
14529	//    * TOTAL - The response includes only the aggregate ConsumedCapacity for
14530	//    the operation.
14531	//
14532	//    * NONE - No ConsumedCapacity details are included in the response.
14533	ReturnConsumedCapacity *string `type:"string" enum:"ReturnConsumedCapacity"`
14534
14535	// Determines whether item collection metrics are returned. If set to SIZE,
14536	// the response includes statistics about item collections (if any), that were
14537	// modified during the operation and are returned in the response. If set to
14538	// NONE (the default), no statistics are returned.
14539	ReturnItemCollectionMetrics *string `type:"string" enum:"ReturnItemCollectionMetrics"`
14540
14541	// An ordered array of up to 25 TransactWriteItem objects, each of which contains
14542	// a ConditionCheck, Put, Update, or Delete object. These can operate on items
14543	// in different tables, but the tables must reside in the same AWS account and
14544	// Region, and no two of them can operate on the same item.
14545	//
14546	// TransactItems is a required field
14547	TransactItems []*TransactWriteItem `min:"1" type:"list" required:"true"`
14548}
14549
14550// String returns the string representation
14551func (s TransactWriteItemsInput) String() string {
14552	return awsutil.Prettify(s)
14553}
14554
14555// GoString returns the string representation
14556func (s TransactWriteItemsInput) GoString() string {
14557	return s.String()
14558}
14559
14560// Validate inspects the fields of the type to determine if they are valid.
14561func (s *TransactWriteItemsInput) Validate() error {
14562	invalidParams := request.ErrInvalidParams{Context: "TransactWriteItemsInput"}
14563	if s.ClientRequestToken != nil && len(*s.ClientRequestToken) < 1 {
14564		invalidParams.Add(request.NewErrParamMinLen("ClientRequestToken", 1))
14565	}
14566	if s.TransactItems == nil {
14567		invalidParams.Add(request.NewErrParamRequired("TransactItems"))
14568	}
14569	if s.TransactItems != nil && len(s.TransactItems) < 1 {
14570		invalidParams.Add(request.NewErrParamMinLen("TransactItems", 1))
14571	}
14572	if s.TransactItems != nil {
14573		for i, v := range s.TransactItems {
14574			if v == nil {
14575				continue
14576			}
14577			if err := v.Validate(); err != nil {
14578				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "TransactItems", i), err.(request.ErrInvalidParams))
14579			}
14580		}
14581	}
14582
14583	if invalidParams.Len() > 0 {
14584		return invalidParams
14585	}
14586	return nil
14587}
14588
14589// SetClientRequestToken sets the ClientRequestToken field's value.
14590func (s *TransactWriteItemsInput) SetClientRequestToken(v string) *TransactWriteItemsInput {
14591	s.ClientRequestToken = &v
14592	return s
14593}
14594
14595// SetReturnConsumedCapacity sets the ReturnConsumedCapacity field's value.
14596func (s *TransactWriteItemsInput) SetReturnConsumedCapacity(v string) *TransactWriteItemsInput {
14597	s.ReturnConsumedCapacity = &v
14598	return s
14599}
14600
14601// SetReturnItemCollectionMetrics sets the ReturnItemCollectionMetrics field's value.
14602func (s *TransactWriteItemsInput) SetReturnItemCollectionMetrics(v string) *TransactWriteItemsInput {
14603	s.ReturnItemCollectionMetrics = &v
14604	return s
14605}
14606
14607// SetTransactItems sets the TransactItems field's value.
14608func (s *TransactWriteItemsInput) SetTransactItems(v []*TransactWriteItem) *TransactWriteItemsInput {
14609	s.TransactItems = v
14610	return s
14611}
14612
14613type TransactWriteItemsOutput struct {
14614	_ struct{} `type:"structure"`
14615
14616	// The capacity units consumed by the entire TransactWriteItems operation. The
14617	// values of the list are ordered according to the ordering of the TransactItems
14618	// request parameter.
14619	ConsumedCapacity []*ConsumedCapacity `type:"list"`
14620
14621	// A list of tables that were processed by TransactWriteItems and, for each
14622	// table, information about any item collections that were affected by individual
14623	// UpdateItem, PutItem, or DeleteItem operations.
14624	ItemCollectionMetrics map[string][]*ItemCollectionMetrics `type:"map"`
14625}
14626
14627// String returns the string representation
14628func (s TransactWriteItemsOutput) String() string {
14629	return awsutil.Prettify(s)
14630}
14631
14632// GoString returns the string representation
14633func (s TransactWriteItemsOutput) GoString() string {
14634	return s.String()
14635}
14636
14637// SetConsumedCapacity sets the ConsumedCapacity field's value.
14638func (s *TransactWriteItemsOutput) SetConsumedCapacity(v []*ConsumedCapacity) *TransactWriteItemsOutput {
14639	s.ConsumedCapacity = v
14640	return s
14641}
14642
14643// SetItemCollectionMetrics sets the ItemCollectionMetrics field's value.
14644func (s *TransactWriteItemsOutput) SetItemCollectionMetrics(v map[string][]*ItemCollectionMetrics) *TransactWriteItemsOutput {
14645	s.ItemCollectionMetrics = v
14646	return s
14647}
14648
14649type UntagResourceInput struct {
14650	_ struct{} `type:"structure"`
14651
14652	// The DynamoDB resource that the tags will be removed from. This value is an
14653	// Amazon Resource Name (ARN).
14654	//
14655	// ResourceArn is a required field
14656	ResourceArn *string `min:"1" type:"string" required:"true"`
14657
14658	// A list of tag keys. Existing tags of the resource whose keys are members
14659	// of this list will be removed from the DynamoDB resource.
14660	//
14661	// TagKeys is a required field
14662	TagKeys []*string `type:"list" required:"true"`
14663}
14664
14665// String returns the string representation
14666func (s UntagResourceInput) String() string {
14667	return awsutil.Prettify(s)
14668}
14669
14670// GoString returns the string representation
14671func (s UntagResourceInput) GoString() string {
14672	return s.String()
14673}
14674
14675// Validate inspects the fields of the type to determine if they are valid.
14676func (s *UntagResourceInput) Validate() error {
14677	invalidParams := request.ErrInvalidParams{Context: "UntagResourceInput"}
14678	if s.ResourceArn == nil {
14679		invalidParams.Add(request.NewErrParamRequired("ResourceArn"))
14680	}
14681	if s.ResourceArn != nil && len(*s.ResourceArn) < 1 {
14682		invalidParams.Add(request.NewErrParamMinLen("ResourceArn", 1))
14683	}
14684	if s.TagKeys == nil {
14685		invalidParams.Add(request.NewErrParamRequired("TagKeys"))
14686	}
14687
14688	if invalidParams.Len() > 0 {
14689		return invalidParams
14690	}
14691	return nil
14692}
14693
14694// SetResourceArn sets the ResourceArn field's value.
14695func (s *UntagResourceInput) SetResourceArn(v string) *UntagResourceInput {
14696	s.ResourceArn = &v
14697	return s
14698}
14699
14700// SetTagKeys sets the TagKeys field's value.
14701func (s *UntagResourceInput) SetTagKeys(v []*string) *UntagResourceInput {
14702	s.TagKeys = v
14703	return s
14704}
14705
14706type UntagResourceOutput struct {
14707	_ struct{} `type:"structure"`
14708}
14709
14710// String returns the string representation
14711func (s UntagResourceOutput) String() string {
14712	return awsutil.Prettify(s)
14713}
14714
14715// GoString returns the string representation
14716func (s UntagResourceOutput) GoString() string {
14717	return s.String()
14718}
14719
14720// Represents a request to perform an UpdateItem operation.
14721type Update struct {
14722	_ struct{} `type:"structure"`
14723
14724	// A condition that must be satisfied in order for a conditional update to succeed.
14725	ConditionExpression *string `type:"string"`
14726
14727	// One or more substitution tokens for attribute names in an expression.
14728	ExpressionAttributeNames map[string]*string `type:"map"`
14729
14730	// One or more values that can be substituted in an expression.
14731	ExpressionAttributeValues map[string]*AttributeValue `type:"map"`
14732
14733	// The primary key of the item to be updated. Each element consists of an attribute
14734	// name and a value for that attribute.
14735	//
14736	// Key is a required field
14737	Key map[string]*AttributeValue `type:"map" required:"true"`
14738
14739	// Use ReturnValuesOnConditionCheckFailure to get the item attributes if the
14740	// Update condition fails. For ReturnValuesOnConditionCheckFailure, the valid
14741	// values are: NONE, ALL_OLD, UPDATED_OLD, ALL_NEW, UPDATED_NEW.
14742	ReturnValuesOnConditionCheckFailure *string `type:"string" enum:"ReturnValuesOnConditionCheckFailure"`
14743
14744	// Name of the table for the UpdateItem request.
14745	//
14746	// TableName is a required field
14747	TableName *string `min:"3" type:"string" required:"true"`
14748
14749	// An expression that defines one or more attributes to be updated, the action
14750	// to be performed on them, and new value(s) for them.
14751	//
14752	// UpdateExpression is a required field
14753	UpdateExpression *string `type:"string" required:"true"`
14754}
14755
14756// String returns the string representation
14757func (s Update) String() string {
14758	return awsutil.Prettify(s)
14759}
14760
14761// GoString returns the string representation
14762func (s Update) GoString() string {
14763	return s.String()
14764}
14765
14766// Validate inspects the fields of the type to determine if they are valid.
14767func (s *Update) Validate() error {
14768	invalidParams := request.ErrInvalidParams{Context: "Update"}
14769	if s.Key == nil {
14770		invalidParams.Add(request.NewErrParamRequired("Key"))
14771	}
14772	if s.TableName == nil {
14773		invalidParams.Add(request.NewErrParamRequired("TableName"))
14774	}
14775	if s.TableName != nil && len(*s.TableName) < 3 {
14776		invalidParams.Add(request.NewErrParamMinLen("TableName", 3))
14777	}
14778	if s.UpdateExpression == nil {
14779		invalidParams.Add(request.NewErrParamRequired("UpdateExpression"))
14780	}
14781
14782	if invalidParams.Len() > 0 {
14783		return invalidParams
14784	}
14785	return nil
14786}
14787
14788// SetConditionExpression sets the ConditionExpression field's value.
14789func (s *Update) SetConditionExpression(v string) *Update {
14790	s.ConditionExpression = &v
14791	return s
14792}
14793
14794// SetExpressionAttributeNames sets the ExpressionAttributeNames field's value.
14795func (s *Update) SetExpressionAttributeNames(v map[string]*string) *Update {
14796	s.ExpressionAttributeNames = v
14797	return s
14798}
14799
14800// SetExpressionAttributeValues sets the ExpressionAttributeValues field's value.
14801func (s *Update) SetExpressionAttributeValues(v map[string]*AttributeValue) *Update {
14802	s.ExpressionAttributeValues = v
14803	return s
14804}
14805
14806// SetKey sets the Key field's value.
14807func (s *Update) SetKey(v map[string]*AttributeValue) *Update {
14808	s.Key = v
14809	return s
14810}
14811
14812// SetReturnValuesOnConditionCheckFailure sets the ReturnValuesOnConditionCheckFailure field's value.
14813func (s *Update) SetReturnValuesOnConditionCheckFailure(v string) *Update {
14814	s.ReturnValuesOnConditionCheckFailure = &v
14815	return s
14816}
14817
14818// SetTableName sets the TableName field's value.
14819func (s *Update) SetTableName(v string) *Update {
14820	s.TableName = &v
14821	return s
14822}
14823
14824// SetUpdateExpression sets the UpdateExpression field's value.
14825func (s *Update) SetUpdateExpression(v string) *Update {
14826	s.UpdateExpression = &v
14827	return s
14828}
14829
14830type UpdateContinuousBackupsInput struct {
14831	_ struct{} `type:"structure"`
14832
14833	// Represents the settings used to enable point in time recovery.
14834	//
14835	// PointInTimeRecoverySpecification is a required field
14836	PointInTimeRecoverySpecification *PointInTimeRecoverySpecification `type:"structure" required:"true"`
14837
14838	// The name of the table.
14839	//
14840	// TableName is a required field
14841	TableName *string `min:"3" type:"string" required:"true"`
14842}
14843
14844// String returns the string representation
14845func (s UpdateContinuousBackupsInput) String() string {
14846	return awsutil.Prettify(s)
14847}
14848
14849// GoString returns the string representation
14850func (s UpdateContinuousBackupsInput) GoString() string {
14851	return s.String()
14852}
14853
14854// Validate inspects the fields of the type to determine if they are valid.
14855func (s *UpdateContinuousBackupsInput) Validate() error {
14856	invalidParams := request.ErrInvalidParams{Context: "UpdateContinuousBackupsInput"}
14857	if s.PointInTimeRecoverySpecification == nil {
14858		invalidParams.Add(request.NewErrParamRequired("PointInTimeRecoverySpecification"))
14859	}
14860	if s.TableName == nil {
14861		invalidParams.Add(request.NewErrParamRequired("TableName"))
14862	}
14863	if s.TableName != nil && len(*s.TableName) < 3 {
14864		invalidParams.Add(request.NewErrParamMinLen("TableName", 3))
14865	}
14866	if s.PointInTimeRecoverySpecification != nil {
14867		if err := s.PointInTimeRecoverySpecification.Validate(); err != nil {
14868			invalidParams.AddNested("PointInTimeRecoverySpecification", err.(request.ErrInvalidParams))
14869		}
14870	}
14871
14872	if invalidParams.Len() > 0 {
14873		return invalidParams
14874	}
14875	return nil
14876}
14877
14878// SetPointInTimeRecoverySpecification sets the PointInTimeRecoverySpecification field's value.
14879func (s *UpdateContinuousBackupsInput) SetPointInTimeRecoverySpecification(v *PointInTimeRecoverySpecification) *UpdateContinuousBackupsInput {
14880	s.PointInTimeRecoverySpecification = v
14881	return s
14882}
14883
14884// SetTableName sets the TableName field's value.
14885func (s *UpdateContinuousBackupsInput) SetTableName(v string) *UpdateContinuousBackupsInput {
14886	s.TableName = &v
14887	return s
14888}
14889
14890type UpdateContinuousBackupsOutput struct {
14891	_ struct{} `type:"structure"`
14892
14893	// Represents the continuous backups and point in time recovery settings on
14894	// the table.
14895	ContinuousBackupsDescription *ContinuousBackupsDescription `type:"structure"`
14896}
14897
14898// String returns the string representation
14899func (s UpdateContinuousBackupsOutput) String() string {
14900	return awsutil.Prettify(s)
14901}
14902
14903// GoString returns the string representation
14904func (s UpdateContinuousBackupsOutput) GoString() string {
14905	return s.String()
14906}
14907
14908// SetContinuousBackupsDescription sets the ContinuousBackupsDescription field's value.
14909func (s *UpdateContinuousBackupsOutput) SetContinuousBackupsDescription(v *ContinuousBackupsDescription) *UpdateContinuousBackupsOutput {
14910	s.ContinuousBackupsDescription = v
14911	return s
14912}
14913
14914// Represents the new provisioned throughput settings to be applied to a global
14915// secondary index.
14916type UpdateGlobalSecondaryIndexAction struct {
14917	_ struct{} `type:"structure"`
14918
14919	// The name of the global secondary index to be updated.
14920	//
14921	// IndexName is a required field
14922	IndexName *string `min:"3" type:"string" required:"true"`
14923
14924	// Represents the provisioned throughput settings for the specified global secondary
14925	// index.
14926	//
14927	// For current minimum and maximum provisioned throughput values, see Limits
14928	// (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Limits.html)
14929	// in the Amazon DynamoDB Developer Guide.
14930	//
14931	// ProvisionedThroughput is a required field
14932	ProvisionedThroughput *ProvisionedThroughput `type:"structure" required:"true"`
14933}
14934
14935// String returns the string representation
14936func (s UpdateGlobalSecondaryIndexAction) String() string {
14937	return awsutil.Prettify(s)
14938}
14939
14940// GoString returns the string representation
14941func (s UpdateGlobalSecondaryIndexAction) GoString() string {
14942	return s.String()
14943}
14944
14945// Validate inspects the fields of the type to determine if they are valid.
14946func (s *UpdateGlobalSecondaryIndexAction) Validate() error {
14947	invalidParams := request.ErrInvalidParams{Context: "UpdateGlobalSecondaryIndexAction"}
14948	if s.IndexName == nil {
14949		invalidParams.Add(request.NewErrParamRequired("IndexName"))
14950	}
14951	if s.IndexName != nil && len(*s.IndexName) < 3 {
14952		invalidParams.Add(request.NewErrParamMinLen("IndexName", 3))
14953	}
14954	if s.ProvisionedThroughput == nil {
14955		invalidParams.Add(request.NewErrParamRequired("ProvisionedThroughput"))
14956	}
14957	if s.ProvisionedThroughput != nil {
14958		if err := s.ProvisionedThroughput.Validate(); err != nil {
14959			invalidParams.AddNested("ProvisionedThroughput", err.(request.ErrInvalidParams))
14960		}
14961	}
14962
14963	if invalidParams.Len() > 0 {
14964		return invalidParams
14965	}
14966	return nil
14967}
14968
14969// SetIndexName sets the IndexName field's value.
14970func (s *UpdateGlobalSecondaryIndexAction) SetIndexName(v string) *UpdateGlobalSecondaryIndexAction {
14971	s.IndexName = &v
14972	return s
14973}
14974
14975// SetProvisionedThroughput sets the ProvisionedThroughput field's value.
14976func (s *UpdateGlobalSecondaryIndexAction) SetProvisionedThroughput(v *ProvisionedThroughput) *UpdateGlobalSecondaryIndexAction {
14977	s.ProvisionedThroughput = v
14978	return s
14979}
14980
14981type UpdateGlobalTableInput struct {
14982	_ struct{} `type:"structure"`
14983
14984	// The global table name.
14985	//
14986	// GlobalTableName is a required field
14987	GlobalTableName *string `min:"3" type:"string" required:"true"`
14988
14989	// A list of Regions that should be added or removed from the global table.
14990	//
14991	// ReplicaUpdates is a required field
14992	ReplicaUpdates []*ReplicaUpdate `type:"list" required:"true"`
14993}
14994
14995// String returns the string representation
14996func (s UpdateGlobalTableInput) String() string {
14997	return awsutil.Prettify(s)
14998}
14999
15000// GoString returns the string representation
15001func (s UpdateGlobalTableInput) GoString() string {
15002	return s.String()
15003}
15004
15005// Validate inspects the fields of the type to determine if they are valid.
15006func (s *UpdateGlobalTableInput) Validate() error {
15007	invalidParams := request.ErrInvalidParams{Context: "UpdateGlobalTableInput"}
15008	if s.GlobalTableName == nil {
15009		invalidParams.Add(request.NewErrParamRequired("GlobalTableName"))
15010	}
15011	if s.GlobalTableName != nil && len(*s.GlobalTableName) < 3 {
15012		invalidParams.Add(request.NewErrParamMinLen("GlobalTableName", 3))
15013	}
15014	if s.ReplicaUpdates == nil {
15015		invalidParams.Add(request.NewErrParamRequired("ReplicaUpdates"))
15016	}
15017	if s.ReplicaUpdates != nil {
15018		for i, v := range s.ReplicaUpdates {
15019			if v == nil {
15020				continue
15021			}
15022			if err := v.Validate(); err != nil {
15023				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "ReplicaUpdates", i), err.(request.ErrInvalidParams))
15024			}
15025		}
15026	}
15027
15028	if invalidParams.Len() > 0 {
15029		return invalidParams
15030	}
15031	return nil
15032}
15033
15034// SetGlobalTableName sets the GlobalTableName field's value.
15035func (s *UpdateGlobalTableInput) SetGlobalTableName(v string) *UpdateGlobalTableInput {
15036	s.GlobalTableName = &v
15037	return s
15038}
15039
15040// SetReplicaUpdates sets the ReplicaUpdates field's value.
15041func (s *UpdateGlobalTableInput) SetReplicaUpdates(v []*ReplicaUpdate) *UpdateGlobalTableInput {
15042	s.ReplicaUpdates = v
15043	return s
15044}
15045
15046type UpdateGlobalTableOutput struct {
15047	_ struct{} `type:"structure"`
15048
15049	// Contains the details of the global table.
15050	GlobalTableDescription *GlobalTableDescription `type:"structure"`
15051}
15052
15053// String returns the string representation
15054func (s UpdateGlobalTableOutput) String() string {
15055	return awsutil.Prettify(s)
15056}
15057
15058// GoString returns the string representation
15059func (s UpdateGlobalTableOutput) GoString() string {
15060	return s.String()
15061}
15062
15063// SetGlobalTableDescription sets the GlobalTableDescription field's value.
15064func (s *UpdateGlobalTableOutput) SetGlobalTableDescription(v *GlobalTableDescription) *UpdateGlobalTableOutput {
15065	s.GlobalTableDescription = v
15066	return s
15067}
15068
15069type UpdateGlobalTableSettingsInput struct {
15070	_ struct{} `type:"structure"`
15071
15072	// The billing mode of the global table. If GlobalTableBillingMode is not specified,
15073	// the global table defaults to PROVISIONED capacity billing mode.
15074	GlobalTableBillingMode *string `type:"string" enum:"BillingMode"`
15075
15076	// Represents the settings of a global secondary index for a global table that
15077	// will be modified.
15078	GlobalTableGlobalSecondaryIndexSettingsUpdate []*GlobalTableGlobalSecondaryIndexSettingsUpdate `min:"1" type:"list"`
15079
15080	// The name of the global table
15081	//
15082	// GlobalTableName is a required field
15083	GlobalTableName *string `min:"3" type:"string" required:"true"`
15084
15085	// Auto scaling settings for managing provisioned write capacity for the global
15086	// table.
15087	GlobalTableProvisionedWriteCapacityAutoScalingSettingsUpdate *AutoScalingSettingsUpdate `type:"structure"`
15088
15089	// The maximum number of writes consumed per second before DynamoDB returns
15090	// a ThrottlingException.
15091	GlobalTableProvisionedWriteCapacityUnits *int64 `min:"1" type:"long"`
15092
15093	// Represents the settings for a global table in a Region that will be modified.
15094	ReplicaSettingsUpdate []*ReplicaSettingsUpdate `min:"1" type:"list"`
15095}
15096
15097// String returns the string representation
15098func (s UpdateGlobalTableSettingsInput) String() string {
15099	return awsutil.Prettify(s)
15100}
15101
15102// GoString returns the string representation
15103func (s UpdateGlobalTableSettingsInput) GoString() string {
15104	return s.String()
15105}
15106
15107// Validate inspects the fields of the type to determine if they are valid.
15108func (s *UpdateGlobalTableSettingsInput) Validate() error {
15109	invalidParams := request.ErrInvalidParams{Context: "UpdateGlobalTableSettingsInput"}
15110	if s.GlobalTableGlobalSecondaryIndexSettingsUpdate != nil && len(s.GlobalTableGlobalSecondaryIndexSettingsUpdate) < 1 {
15111		invalidParams.Add(request.NewErrParamMinLen("GlobalTableGlobalSecondaryIndexSettingsUpdate", 1))
15112	}
15113	if s.GlobalTableName == nil {
15114		invalidParams.Add(request.NewErrParamRequired("GlobalTableName"))
15115	}
15116	if s.GlobalTableName != nil && len(*s.GlobalTableName) < 3 {
15117		invalidParams.Add(request.NewErrParamMinLen("GlobalTableName", 3))
15118	}
15119	if s.GlobalTableProvisionedWriteCapacityUnits != nil && *s.GlobalTableProvisionedWriteCapacityUnits < 1 {
15120		invalidParams.Add(request.NewErrParamMinValue("GlobalTableProvisionedWriteCapacityUnits", 1))
15121	}
15122	if s.ReplicaSettingsUpdate != nil && len(s.ReplicaSettingsUpdate) < 1 {
15123		invalidParams.Add(request.NewErrParamMinLen("ReplicaSettingsUpdate", 1))
15124	}
15125	if s.GlobalTableGlobalSecondaryIndexSettingsUpdate != nil {
15126		for i, v := range s.GlobalTableGlobalSecondaryIndexSettingsUpdate {
15127			if v == nil {
15128				continue
15129			}
15130			if err := v.Validate(); err != nil {
15131				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "GlobalTableGlobalSecondaryIndexSettingsUpdate", i), err.(request.ErrInvalidParams))
15132			}
15133		}
15134	}
15135	if s.GlobalTableProvisionedWriteCapacityAutoScalingSettingsUpdate != nil {
15136		if err := s.GlobalTableProvisionedWriteCapacityAutoScalingSettingsUpdate.Validate(); err != nil {
15137			invalidParams.AddNested("GlobalTableProvisionedWriteCapacityAutoScalingSettingsUpdate", err.(request.ErrInvalidParams))
15138		}
15139	}
15140	if s.ReplicaSettingsUpdate != nil {
15141		for i, v := range s.ReplicaSettingsUpdate {
15142			if v == nil {
15143				continue
15144			}
15145			if err := v.Validate(); err != nil {
15146				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "ReplicaSettingsUpdate", i), err.(request.ErrInvalidParams))
15147			}
15148		}
15149	}
15150
15151	if invalidParams.Len() > 0 {
15152		return invalidParams
15153	}
15154	return nil
15155}
15156
15157// SetGlobalTableBillingMode sets the GlobalTableBillingMode field's value.
15158func (s *UpdateGlobalTableSettingsInput) SetGlobalTableBillingMode(v string) *UpdateGlobalTableSettingsInput {
15159	s.GlobalTableBillingMode = &v
15160	return s
15161}
15162
15163// SetGlobalTableGlobalSecondaryIndexSettingsUpdate sets the GlobalTableGlobalSecondaryIndexSettingsUpdate field's value.
15164func (s *UpdateGlobalTableSettingsInput) SetGlobalTableGlobalSecondaryIndexSettingsUpdate(v []*GlobalTableGlobalSecondaryIndexSettingsUpdate) *UpdateGlobalTableSettingsInput {
15165	s.GlobalTableGlobalSecondaryIndexSettingsUpdate = v
15166	return s
15167}
15168
15169// SetGlobalTableName sets the GlobalTableName field's value.
15170func (s *UpdateGlobalTableSettingsInput) SetGlobalTableName(v string) *UpdateGlobalTableSettingsInput {
15171	s.GlobalTableName = &v
15172	return s
15173}
15174
15175// SetGlobalTableProvisionedWriteCapacityAutoScalingSettingsUpdate sets the GlobalTableProvisionedWriteCapacityAutoScalingSettingsUpdate field's value.
15176func (s *UpdateGlobalTableSettingsInput) SetGlobalTableProvisionedWriteCapacityAutoScalingSettingsUpdate(v *AutoScalingSettingsUpdate) *UpdateGlobalTableSettingsInput {
15177	s.GlobalTableProvisionedWriteCapacityAutoScalingSettingsUpdate = v
15178	return s
15179}
15180
15181// SetGlobalTableProvisionedWriteCapacityUnits sets the GlobalTableProvisionedWriteCapacityUnits field's value.
15182func (s *UpdateGlobalTableSettingsInput) SetGlobalTableProvisionedWriteCapacityUnits(v int64) *UpdateGlobalTableSettingsInput {
15183	s.GlobalTableProvisionedWriteCapacityUnits = &v
15184	return s
15185}
15186
15187// SetReplicaSettingsUpdate sets the ReplicaSettingsUpdate field's value.
15188func (s *UpdateGlobalTableSettingsInput) SetReplicaSettingsUpdate(v []*ReplicaSettingsUpdate) *UpdateGlobalTableSettingsInput {
15189	s.ReplicaSettingsUpdate = v
15190	return s
15191}
15192
15193type UpdateGlobalTableSettingsOutput struct {
15194	_ struct{} `type:"structure"`
15195
15196	// The name of the global table.
15197	GlobalTableName *string `min:"3" type:"string"`
15198
15199	// The Region-specific settings for the global table.
15200	ReplicaSettings []*ReplicaSettingsDescription `type:"list"`
15201}
15202
15203// String returns the string representation
15204func (s UpdateGlobalTableSettingsOutput) String() string {
15205	return awsutil.Prettify(s)
15206}
15207
15208// GoString returns the string representation
15209func (s UpdateGlobalTableSettingsOutput) GoString() string {
15210	return s.String()
15211}
15212
15213// SetGlobalTableName sets the GlobalTableName field's value.
15214func (s *UpdateGlobalTableSettingsOutput) SetGlobalTableName(v string) *UpdateGlobalTableSettingsOutput {
15215	s.GlobalTableName = &v
15216	return s
15217}
15218
15219// SetReplicaSettings sets the ReplicaSettings field's value.
15220func (s *UpdateGlobalTableSettingsOutput) SetReplicaSettings(v []*ReplicaSettingsDescription) *UpdateGlobalTableSettingsOutput {
15221	s.ReplicaSettings = v
15222	return s
15223}
15224
15225// Represents the input of an UpdateItem operation.
15226type UpdateItemInput struct {
15227	_ struct{} `type:"structure"`
15228
15229	// This is a legacy parameter. Use UpdateExpression instead. For more information,
15230	// see AttributeUpdates (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/LegacyConditionalParameters.AttributeUpdates.html)
15231	// in the Amazon DynamoDB Developer Guide.
15232	AttributeUpdates map[string]*AttributeValueUpdate `type:"map"`
15233
15234	// A condition that must be satisfied in order for a conditional update to succeed.
15235	//
15236	// An expression can contain any of the following:
15237	//
15238	//    * Functions: attribute_exists | attribute_not_exists | attribute_type
15239	//    | contains | begins_with | size These function names are case-sensitive.
15240	//
15241	//    * Comparison operators: = | <> | < | > | <= | >= | BETWEEN | IN
15242	//
15243	//    * Logical operators: AND | OR | NOT
15244	//
15245	// For more information about condition expressions, see Specifying Conditions
15246	// (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.SpecifyingConditions.html)
15247	// in the Amazon DynamoDB Developer Guide.
15248	ConditionExpression *string `type:"string"`
15249
15250	// This is a legacy parameter. Use ConditionExpression instead. For more information,
15251	// see ConditionalOperator (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/LegacyConditionalParameters.ConditionalOperator.html)
15252	// in the Amazon DynamoDB Developer Guide.
15253	ConditionalOperator *string `type:"string" enum:"ConditionalOperator"`
15254
15255	// This is a legacy parameter. Use ConditionExpression instead. For more information,
15256	// see Expected (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/LegacyConditionalParameters.Expected.html)
15257	// in the Amazon DynamoDB Developer Guide.
15258	Expected map[string]*ExpectedAttributeValue `type:"map"`
15259
15260	// One or more substitution tokens for attribute names in an expression. The
15261	// following are some use cases for using ExpressionAttributeNames:
15262	//
15263	//    * To access an attribute whose name conflicts with a DynamoDB reserved
15264	//    word.
15265	//
15266	//    * To create a placeholder for repeating occurrences of an attribute name
15267	//    in an expression.
15268	//
15269	//    * To prevent special characters in an attribute name from being misinterpreted
15270	//    in an expression.
15271	//
15272	// Use the # character in an expression to dereference an attribute name. For
15273	// example, consider the following attribute name:
15274	//
15275	//    * Percentile
15276	//
15277	// The name of this attribute conflicts with a reserved word, so it cannot be
15278	// used directly in an expression. (For the complete list of reserved words,
15279	// see Reserved Words (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ReservedWords.html)
15280	// in the Amazon DynamoDB Developer Guide.) To work around this, you could specify
15281	// the following for ExpressionAttributeNames:
15282	//
15283	//    * {"#P":"Percentile"}
15284	//
15285	// You could then use this substitution in an expression, as in this example:
15286	//
15287	//    * #P = :val
15288	//
15289	// Tokens that begin with the : character are expression attribute values, which
15290	// are placeholders for the actual value at runtime.
15291	//
15292	// For more information about expression attribute names, see Specifying Item
15293	// Attributes (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.AccessingItemAttributes.html)
15294	// in the Amazon DynamoDB Developer Guide.
15295	ExpressionAttributeNames map[string]*string `type:"map"`
15296
15297	// One or more values that can be substituted in an expression.
15298	//
15299	// Use the : (colon) character in an expression to dereference an attribute
15300	// value. For example, suppose that you wanted to check whether the value of
15301	// the ProductStatus attribute was one of the following:
15302	//
15303	// Available | Backordered | Discontinued
15304	//
15305	// You would first need to specify ExpressionAttributeValues as follows:
15306	//
15307	// { ":avail":{"S":"Available"}, ":back":{"S":"Backordered"}, ":disc":{"S":"Discontinued"}
15308	// }
15309	//
15310	// You could then use these values in an expression, such as this:
15311	//
15312	// ProductStatus IN (:avail, :back, :disc)
15313	//
15314	// For more information on expression attribute values, see Condition Expressions
15315	// (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.SpecifyingConditions.html)
15316	// in the Amazon DynamoDB Developer Guide.
15317	ExpressionAttributeValues map[string]*AttributeValue `type:"map"`
15318
15319	// The primary key of the item to be updated. Each element consists of an attribute
15320	// name and a value for that attribute.
15321	//
15322	// For the primary key, you must provide all of the attributes. For example,
15323	// with a simple primary key, you only need to provide a value for the partition
15324	// key. For a composite primary key, you must provide values for both the partition
15325	// key and the sort key.
15326	//
15327	// Key is a required field
15328	Key map[string]*AttributeValue `type:"map" required:"true"`
15329
15330	// Determines the level of detail about provisioned throughput consumption that
15331	// is returned in the response:
15332	//
15333	//    * INDEXES - The response includes the aggregate ConsumedCapacity for the
15334	//    operation, together with ConsumedCapacity for each table and secondary
15335	//    index that was accessed. Note that some operations, such as GetItem and
15336	//    BatchGetItem, do not access any indexes at all. In these cases, specifying
15337	//    INDEXES will only return ConsumedCapacity information for table(s).
15338	//
15339	//    * TOTAL - The response includes only the aggregate ConsumedCapacity for
15340	//    the operation.
15341	//
15342	//    * NONE - No ConsumedCapacity details are included in the response.
15343	ReturnConsumedCapacity *string `type:"string" enum:"ReturnConsumedCapacity"`
15344
15345	// Determines whether item collection metrics are returned. If set to SIZE,
15346	// the response includes statistics about item collections, if any, that were
15347	// modified during the operation are returned in the response. If set to NONE
15348	// (the default), no statistics are returned.
15349	ReturnItemCollectionMetrics *string `type:"string" enum:"ReturnItemCollectionMetrics"`
15350
15351	// Use ReturnValues if you want to get the item attributes as they appear before
15352	// or after they are updated. For UpdateItem, the valid values are:
15353	//
15354	//    * NONE - If ReturnValues is not specified, or if its value is NONE, then
15355	//    nothing is returned. (This setting is the default for ReturnValues.)
15356	//
15357	//    * ALL_OLD - Returns all of the attributes of the item, as they appeared
15358	//    before the UpdateItem operation.
15359	//
15360	//    * UPDATED_OLD - Returns only the updated attributes, as they appeared
15361	//    before the UpdateItem operation.
15362	//
15363	//    * ALL_NEW - Returns all of the attributes of the item, as they appear
15364	//    after the UpdateItem operation.
15365	//
15366	//    * UPDATED_NEW - Returns only the updated attributes, as they appear after
15367	//    the UpdateItem operation.
15368	//
15369	// There is no additional cost associated with requesting a return value aside
15370	// from the small network and processing overhead of receiving a larger response.
15371	// No read capacity units are consumed.
15372	//
15373	// The values returned are strongly consistent.
15374	ReturnValues *string `type:"string" enum:"ReturnValue"`
15375
15376	// The name of the table containing the item to update.
15377	//
15378	// TableName is a required field
15379	TableName *string `min:"3" type:"string" required:"true"`
15380
15381	// An expression that defines one or more attributes to be updated, the action
15382	// to be performed on them, and new values for them.
15383	//
15384	// The following action values are available for UpdateExpression.
15385	//
15386	//    * SET - Adds one or more attributes and values to an item. If any of these
15387	//    attributes already exist, they are replaced by the new values. You can
15388	//    also use SET to add or subtract from an attribute that is of type Number.
15389	//    For example: SET myNum = myNum + :val SET supports the following functions:
15390	//    if_not_exists (path, operand) - if the item does not contain an attribute
15391	//    at the specified path, then if_not_exists evaluates to operand; otherwise,
15392	//    it evaluates to path. You can use this function to avoid overwriting an
15393	//    attribute that may already be present in the item. list_append (operand,
15394	//    operand) - evaluates to a list with a new element added to it. You can
15395	//    append the new element to the start or the end of the list by reversing
15396	//    the order of the operands. These function names are case-sensitive.
15397	//
15398	//    * REMOVE - Removes one or more attributes from an item.
15399	//
15400	//    * ADD - Adds the specified value to the item, if the attribute does not
15401	//    already exist. If the attribute does exist, then the behavior of ADD depends
15402	//    on the data type of the attribute: If the existing attribute is a number,
15403	//    and if Value is also a number, then Value is mathematically added to the
15404	//    existing attribute. If Value is a negative number, then it is subtracted
15405	//    from the existing attribute. If you use ADD to increment or decrement
15406	//    a number value for an item that doesn't exist before the update, DynamoDB
15407	//    uses 0 as the initial value. Similarly, if you use ADD for an existing
15408	//    item to increment or decrement an attribute value that doesn't exist before
15409	//    the update, DynamoDB uses 0 as the initial value. For example, suppose
15410	//    that the item you want to update doesn't have an attribute named itemcount,
15411	//    but you decide to ADD the number 3 to this attribute anyway. DynamoDB
15412	//    will create the itemcount attribute, set its initial value to 0, and finally
15413	//    add 3 to it. The result will be a new itemcount attribute in the item,
15414	//    with a value of 3. If the existing data type is a set and if Value is
15415	//    also a set, then Value is added to the existing set. For example, if the
15416	//    attribute value is the set [1,2], and the ADD action specified [3], then
15417	//    the final attribute value is [1,2,3]. An error occurs if an ADD action
15418	//    is specified for a set attribute and the attribute type specified does
15419	//    not match the existing set type. Both sets must have the same primitive
15420	//    data type. For example, if the existing data type is a set of strings,
15421	//    the Value must also be a set of strings. The ADD action only supports
15422	//    Number and set data types. In addition, ADD can only be used on top-level
15423	//    attributes, not nested attributes.
15424	//
15425	//    * DELETE - Deletes an element from a set. If a set of values is specified,
15426	//    then those values are subtracted from the old set. For example, if the
15427	//    attribute value was the set [a,b,c] and the DELETE action specifies [a,c],
15428	//    then the final attribute value is [b]. Specifying an empty set is an error.
15429	//    The DELETE action only supports set data types. In addition, DELETE can
15430	//    only be used on top-level attributes, not nested attributes.
15431	//
15432	// You can have many actions in a single expression, such as the following:
15433	// SET a=:value1, b=:value2 DELETE :value3, :value4, :value5
15434	//
15435	// For more information on update expressions, see Modifying Items and Attributes
15436	// (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.Modifying.html)
15437	// in the Amazon DynamoDB Developer Guide.
15438	UpdateExpression *string `type:"string"`
15439}
15440
15441// String returns the string representation
15442func (s UpdateItemInput) String() string {
15443	return awsutil.Prettify(s)
15444}
15445
15446// GoString returns the string representation
15447func (s UpdateItemInput) GoString() string {
15448	return s.String()
15449}
15450
15451// Validate inspects the fields of the type to determine if they are valid.
15452func (s *UpdateItemInput) Validate() error {
15453	invalidParams := request.ErrInvalidParams{Context: "UpdateItemInput"}
15454	if s.Key == nil {
15455		invalidParams.Add(request.NewErrParamRequired("Key"))
15456	}
15457	if s.TableName == nil {
15458		invalidParams.Add(request.NewErrParamRequired("TableName"))
15459	}
15460	if s.TableName != nil && len(*s.TableName) < 3 {
15461		invalidParams.Add(request.NewErrParamMinLen("TableName", 3))
15462	}
15463
15464	if invalidParams.Len() > 0 {
15465		return invalidParams
15466	}
15467	return nil
15468}
15469
15470// SetAttributeUpdates sets the AttributeUpdates field's value.
15471func (s *UpdateItemInput) SetAttributeUpdates(v map[string]*AttributeValueUpdate) *UpdateItemInput {
15472	s.AttributeUpdates = v
15473	return s
15474}
15475
15476// SetConditionExpression sets the ConditionExpression field's value.
15477func (s *UpdateItemInput) SetConditionExpression(v string) *UpdateItemInput {
15478	s.ConditionExpression = &v
15479	return s
15480}
15481
15482// SetConditionalOperator sets the ConditionalOperator field's value.
15483func (s *UpdateItemInput) SetConditionalOperator(v string) *UpdateItemInput {
15484	s.ConditionalOperator = &v
15485	return s
15486}
15487
15488// SetExpected sets the Expected field's value.
15489func (s *UpdateItemInput) SetExpected(v map[string]*ExpectedAttributeValue) *UpdateItemInput {
15490	s.Expected = v
15491	return s
15492}
15493
15494// SetExpressionAttributeNames sets the ExpressionAttributeNames field's value.
15495func (s *UpdateItemInput) SetExpressionAttributeNames(v map[string]*string) *UpdateItemInput {
15496	s.ExpressionAttributeNames = v
15497	return s
15498}
15499
15500// SetExpressionAttributeValues sets the ExpressionAttributeValues field's value.
15501func (s *UpdateItemInput) SetExpressionAttributeValues(v map[string]*AttributeValue) *UpdateItemInput {
15502	s.ExpressionAttributeValues = v
15503	return s
15504}
15505
15506// SetKey sets the Key field's value.
15507func (s *UpdateItemInput) SetKey(v map[string]*AttributeValue) *UpdateItemInput {
15508	s.Key = v
15509	return s
15510}
15511
15512// SetReturnConsumedCapacity sets the ReturnConsumedCapacity field's value.
15513func (s *UpdateItemInput) SetReturnConsumedCapacity(v string) *UpdateItemInput {
15514	s.ReturnConsumedCapacity = &v
15515	return s
15516}
15517
15518// SetReturnItemCollectionMetrics sets the ReturnItemCollectionMetrics field's value.
15519func (s *UpdateItemInput) SetReturnItemCollectionMetrics(v string) *UpdateItemInput {
15520	s.ReturnItemCollectionMetrics = &v
15521	return s
15522}
15523
15524// SetReturnValues sets the ReturnValues field's value.
15525func (s *UpdateItemInput) SetReturnValues(v string) *UpdateItemInput {
15526	s.ReturnValues = &v
15527	return s
15528}
15529
15530// SetTableName sets the TableName field's value.
15531func (s *UpdateItemInput) SetTableName(v string) *UpdateItemInput {
15532	s.TableName = &v
15533	return s
15534}
15535
15536// SetUpdateExpression sets the UpdateExpression field's value.
15537func (s *UpdateItemInput) SetUpdateExpression(v string) *UpdateItemInput {
15538	s.UpdateExpression = &v
15539	return s
15540}
15541
15542// Represents the output of an UpdateItem operation.
15543type UpdateItemOutput struct {
15544	_ struct{} `type:"structure"`
15545
15546	// A map of attribute values as they appear before or after the UpdateItem operation,
15547	// as determined by the ReturnValues parameter.
15548	//
15549	// The Attributes map is only present if ReturnValues was specified as something
15550	// other than NONE in the request. Each element represents one attribute.
15551	Attributes map[string]*AttributeValue `type:"map"`
15552
15553	// The capacity units consumed by the UpdateItem operation. The data returned
15554	// includes the total provisioned throughput consumed, along with statistics
15555	// for the table and any indexes involved in the operation. ConsumedCapacity
15556	// is only returned if the ReturnConsumedCapacity parameter was specified. For
15557	// more information, see Provisioned Throughput (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ProvisionedThroughputIntro.html)
15558	// in the Amazon DynamoDB Developer Guide.
15559	ConsumedCapacity *ConsumedCapacity `type:"structure"`
15560
15561	// Information about item collections, if any, that were affected by the UpdateItem
15562	// operation. ItemCollectionMetrics is only returned if the ReturnItemCollectionMetrics
15563	// parameter was specified. If the table does not have any local secondary indexes,
15564	// this information is not returned in the response.
15565	//
15566	// Each ItemCollectionMetrics element consists of:
15567	//
15568	//    * ItemCollectionKey - The partition key value of the item collection.
15569	//    This is the same as the partition key value of the item itself.
15570	//
15571	//    * SizeEstimateRangeGB - An estimate of item collection size, in gigabytes.
15572	//    This value is a two-element array containing a lower bound and an upper
15573	//    bound for the estimate. The estimate includes the size of all the items
15574	//    in the table, plus the size of all attributes projected into all of the
15575	//    local secondary indexes on that table. Use this estimate to measure whether
15576	//    a local secondary index is approaching its size limit. The estimate is
15577	//    subject to change over time; therefore, do not rely on the precision or
15578	//    accuracy of the estimate.
15579	ItemCollectionMetrics *ItemCollectionMetrics `type:"structure"`
15580}
15581
15582// String returns the string representation
15583func (s UpdateItemOutput) String() string {
15584	return awsutil.Prettify(s)
15585}
15586
15587// GoString returns the string representation
15588func (s UpdateItemOutput) GoString() string {
15589	return s.String()
15590}
15591
15592// SetAttributes sets the Attributes field's value.
15593func (s *UpdateItemOutput) SetAttributes(v map[string]*AttributeValue) *UpdateItemOutput {
15594	s.Attributes = v
15595	return s
15596}
15597
15598// SetConsumedCapacity sets the ConsumedCapacity field's value.
15599func (s *UpdateItemOutput) SetConsumedCapacity(v *ConsumedCapacity) *UpdateItemOutput {
15600	s.ConsumedCapacity = v
15601	return s
15602}
15603
15604// SetItemCollectionMetrics sets the ItemCollectionMetrics field's value.
15605func (s *UpdateItemOutput) SetItemCollectionMetrics(v *ItemCollectionMetrics) *UpdateItemOutput {
15606	s.ItemCollectionMetrics = v
15607	return s
15608}
15609
15610// Represents the input of an UpdateTable operation.
15611type UpdateTableInput struct {
15612	_ struct{} `type:"structure"`
15613
15614	// An array of attributes that describe the key schema for the table and indexes.
15615	// If you are adding a new global secondary index to the table, AttributeDefinitions
15616	// must include the key element(s) of the new index.
15617	AttributeDefinitions []*AttributeDefinition `type:"list"`
15618
15619	// Controls how you are charged for read and write throughput and how you manage
15620	// capacity. When switching from pay-per-request to provisioned capacity, initial
15621	// provisioned capacity values must be set. The initial provisioned capacity
15622	// values are estimated based on the consumed read and write capacity of your
15623	// table and global secondary indexes over the past 30 minutes.
15624	//
15625	//    * PROVISIONED - Sets the billing mode to PROVISIONED. We recommend using
15626	//    PROVISIONED for predictable workloads.
15627	//
15628	//    * PAY_PER_REQUEST - Sets the billing mode to PAY_PER_REQUEST. We recommend
15629	//    using PAY_PER_REQUEST for unpredictable workloads.
15630	BillingMode *string `type:"string" enum:"BillingMode"`
15631
15632	// An array of one or more global secondary indexes for the table. For each
15633	// index in the array, you can request one action:
15634	//
15635	//    * Create - add a new global secondary index to the table.
15636	//
15637	//    * Update - modify the provisioned throughput settings of an existing global
15638	//    secondary index.
15639	//
15640	//    * Delete - remove a global secondary index from the table.
15641	//
15642	// For more information, see Managing Global Secondary Indexes (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/GSI.OnlineOps.html)
15643	// in the Amazon DynamoDB Developer Guide.
15644	GlobalSecondaryIndexUpdates []*GlobalSecondaryIndexUpdate `type:"list"`
15645
15646	// The new provisioned throughput settings for the specified table or index.
15647	ProvisionedThroughput *ProvisionedThroughput `type:"structure"`
15648
15649	// The new server-side encryption settings for the specified table.
15650	SSESpecification *SSESpecification `type:"structure"`
15651
15652	// Represents the DynamoDB Streams configuration for the table.
15653	//
15654	// You receive a ResourceInUseException if you try to enable a stream on a table
15655	// that already has a stream, or if you try to disable a stream on a table that
15656	// doesn't have a stream.
15657	StreamSpecification *StreamSpecification `type:"structure"`
15658
15659	// The name of the table to be updated.
15660	//
15661	// TableName is a required field
15662	TableName *string `min:"3" type:"string" required:"true"`
15663}
15664
15665// String returns the string representation
15666func (s UpdateTableInput) String() string {
15667	return awsutil.Prettify(s)
15668}
15669
15670// GoString returns the string representation
15671func (s UpdateTableInput) GoString() string {
15672	return s.String()
15673}
15674
15675// Validate inspects the fields of the type to determine if they are valid.
15676func (s *UpdateTableInput) Validate() error {
15677	invalidParams := request.ErrInvalidParams{Context: "UpdateTableInput"}
15678	if s.TableName == nil {
15679		invalidParams.Add(request.NewErrParamRequired("TableName"))
15680	}
15681	if s.TableName != nil && len(*s.TableName) < 3 {
15682		invalidParams.Add(request.NewErrParamMinLen("TableName", 3))
15683	}
15684	if s.AttributeDefinitions != nil {
15685		for i, v := range s.AttributeDefinitions {
15686			if v == nil {
15687				continue
15688			}
15689			if err := v.Validate(); err != nil {
15690				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "AttributeDefinitions", i), err.(request.ErrInvalidParams))
15691			}
15692		}
15693	}
15694	if s.GlobalSecondaryIndexUpdates != nil {
15695		for i, v := range s.GlobalSecondaryIndexUpdates {
15696			if v == nil {
15697				continue
15698			}
15699			if err := v.Validate(); err != nil {
15700				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "GlobalSecondaryIndexUpdates", i), err.(request.ErrInvalidParams))
15701			}
15702		}
15703	}
15704	if s.ProvisionedThroughput != nil {
15705		if err := s.ProvisionedThroughput.Validate(); err != nil {
15706			invalidParams.AddNested("ProvisionedThroughput", err.(request.ErrInvalidParams))
15707		}
15708	}
15709
15710	if invalidParams.Len() > 0 {
15711		return invalidParams
15712	}
15713	return nil
15714}
15715
15716// SetAttributeDefinitions sets the AttributeDefinitions field's value.
15717func (s *UpdateTableInput) SetAttributeDefinitions(v []*AttributeDefinition) *UpdateTableInput {
15718	s.AttributeDefinitions = v
15719	return s
15720}
15721
15722// SetBillingMode sets the BillingMode field's value.
15723func (s *UpdateTableInput) SetBillingMode(v string) *UpdateTableInput {
15724	s.BillingMode = &v
15725	return s
15726}
15727
15728// SetGlobalSecondaryIndexUpdates sets the GlobalSecondaryIndexUpdates field's value.
15729func (s *UpdateTableInput) SetGlobalSecondaryIndexUpdates(v []*GlobalSecondaryIndexUpdate) *UpdateTableInput {
15730	s.GlobalSecondaryIndexUpdates = v
15731	return s
15732}
15733
15734// SetProvisionedThroughput sets the ProvisionedThroughput field's value.
15735func (s *UpdateTableInput) SetProvisionedThroughput(v *ProvisionedThroughput) *UpdateTableInput {
15736	s.ProvisionedThroughput = v
15737	return s
15738}
15739
15740// SetSSESpecification sets the SSESpecification field's value.
15741func (s *UpdateTableInput) SetSSESpecification(v *SSESpecification) *UpdateTableInput {
15742	s.SSESpecification = v
15743	return s
15744}
15745
15746// SetStreamSpecification sets the StreamSpecification field's value.
15747func (s *UpdateTableInput) SetStreamSpecification(v *StreamSpecification) *UpdateTableInput {
15748	s.StreamSpecification = v
15749	return s
15750}
15751
15752// SetTableName sets the TableName field's value.
15753func (s *UpdateTableInput) SetTableName(v string) *UpdateTableInput {
15754	s.TableName = &v
15755	return s
15756}
15757
15758// Represents the output of an UpdateTable operation.
15759type UpdateTableOutput struct {
15760	_ struct{} `type:"structure"`
15761
15762	// Represents the properties of the table.
15763	TableDescription *TableDescription `type:"structure"`
15764}
15765
15766// String returns the string representation
15767func (s UpdateTableOutput) String() string {
15768	return awsutil.Prettify(s)
15769}
15770
15771// GoString returns the string representation
15772func (s UpdateTableOutput) GoString() string {
15773	return s.String()
15774}
15775
15776// SetTableDescription sets the TableDescription field's value.
15777func (s *UpdateTableOutput) SetTableDescription(v *TableDescription) *UpdateTableOutput {
15778	s.TableDescription = v
15779	return s
15780}
15781
15782// Represents the input of an UpdateTimeToLive operation.
15783type UpdateTimeToLiveInput struct {
15784	_ struct{} `type:"structure"`
15785
15786	// The name of the table to be configured.
15787	//
15788	// TableName is a required field
15789	TableName *string `min:"3" type:"string" required:"true"`
15790
15791	// Represents the settings used to enable or disable Time to Live for the specified
15792	// table.
15793	//
15794	// TimeToLiveSpecification is a required field
15795	TimeToLiveSpecification *TimeToLiveSpecification `type:"structure" required:"true"`
15796}
15797
15798// String returns the string representation
15799func (s UpdateTimeToLiveInput) String() string {
15800	return awsutil.Prettify(s)
15801}
15802
15803// GoString returns the string representation
15804func (s UpdateTimeToLiveInput) GoString() string {
15805	return s.String()
15806}
15807
15808// Validate inspects the fields of the type to determine if they are valid.
15809func (s *UpdateTimeToLiveInput) Validate() error {
15810	invalidParams := request.ErrInvalidParams{Context: "UpdateTimeToLiveInput"}
15811	if s.TableName == nil {
15812		invalidParams.Add(request.NewErrParamRequired("TableName"))
15813	}
15814	if s.TableName != nil && len(*s.TableName) < 3 {
15815		invalidParams.Add(request.NewErrParamMinLen("TableName", 3))
15816	}
15817	if s.TimeToLiveSpecification == nil {
15818		invalidParams.Add(request.NewErrParamRequired("TimeToLiveSpecification"))
15819	}
15820	if s.TimeToLiveSpecification != nil {
15821		if err := s.TimeToLiveSpecification.Validate(); err != nil {
15822			invalidParams.AddNested("TimeToLiveSpecification", err.(request.ErrInvalidParams))
15823		}
15824	}
15825
15826	if invalidParams.Len() > 0 {
15827		return invalidParams
15828	}
15829	return nil
15830}
15831
15832// SetTableName sets the TableName field's value.
15833func (s *UpdateTimeToLiveInput) SetTableName(v string) *UpdateTimeToLiveInput {
15834	s.TableName = &v
15835	return s
15836}
15837
15838// SetTimeToLiveSpecification sets the TimeToLiveSpecification field's value.
15839func (s *UpdateTimeToLiveInput) SetTimeToLiveSpecification(v *TimeToLiveSpecification) *UpdateTimeToLiveInput {
15840	s.TimeToLiveSpecification = v
15841	return s
15842}
15843
15844type UpdateTimeToLiveOutput struct {
15845	_ struct{} `type:"structure"`
15846
15847	// Represents the output of an UpdateTimeToLive operation.
15848	TimeToLiveSpecification *TimeToLiveSpecification `type:"structure"`
15849}
15850
15851// String returns the string representation
15852func (s UpdateTimeToLiveOutput) String() string {
15853	return awsutil.Prettify(s)
15854}
15855
15856// GoString returns the string representation
15857func (s UpdateTimeToLiveOutput) GoString() string {
15858	return s.String()
15859}
15860
15861// SetTimeToLiveSpecification sets the TimeToLiveSpecification field's value.
15862func (s *UpdateTimeToLiveOutput) SetTimeToLiveSpecification(v *TimeToLiveSpecification) *UpdateTimeToLiveOutput {
15863	s.TimeToLiveSpecification = v
15864	return s
15865}
15866
15867// Represents an operation to perform - either DeleteItem or PutItem. You can
15868// only request one of these operations, not both, in a single WriteRequest.
15869// If you do need to perform both of these operations, you will need to provide
15870// two separate WriteRequest objects.
15871type WriteRequest struct {
15872	_ struct{} `type:"structure"`
15873
15874	// A request to perform a DeleteItem operation.
15875	DeleteRequest *DeleteRequest `type:"structure"`
15876
15877	// A request to perform a PutItem operation.
15878	PutRequest *PutRequest `type:"structure"`
15879}
15880
15881// String returns the string representation
15882func (s WriteRequest) String() string {
15883	return awsutil.Prettify(s)
15884}
15885
15886// GoString returns the string representation
15887func (s WriteRequest) GoString() string {
15888	return s.String()
15889}
15890
15891// SetDeleteRequest sets the DeleteRequest field's value.
15892func (s *WriteRequest) SetDeleteRequest(v *DeleteRequest) *WriteRequest {
15893	s.DeleteRequest = v
15894	return s
15895}
15896
15897// SetPutRequest sets the PutRequest field's value.
15898func (s *WriteRequest) SetPutRequest(v *PutRequest) *WriteRequest {
15899	s.PutRequest = v
15900	return s
15901}
15902
15903const (
15904	// AttributeActionAdd is a AttributeAction enum value
15905	AttributeActionAdd = "ADD"
15906
15907	// AttributeActionPut is a AttributeAction enum value
15908	AttributeActionPut = "PUT"
15909
15910	// AttributeActionDelete is a AttributeAction enum value
15911	AttributeActionDelete = "DELETE"
15912)
15913
15914const (
15915	// BackupStatusCreating is a BackupStatus enum value
15916	BackupStatusCreating = "CREATING"
15917
15918	// BackupStatusDeleted is a BackupStatus enum value
15919	BackupStatusDeleted = "DELETED"
15920
15921	// BackupStatusAvailable is a BackupStatus enum value
15922	BackupStatusAvailable = "AVAILABLE"
15923)
15924
15925const (
15926	// BackupTypeUser is a BackupType enum value
15927	BackupTypeUser = "USER"
15928
15929	// BackupTypeSystem is a BackupType enum value
15930	BackupTypeSystem = "SYSTEM"
15931
15932	// BackupTypeAwsBackup is a BackupType enum value
15933	BackupTypeAwsBackup = "AWS_BACKUP"
15934)
15935
15936const (
15937	// BackupTypeFilterUser is a BackupTypeFilter enum value
15938	BackupTypeFilterUser = "USER"
15939
15940	// BackupTypeFilterSystem is a BackupTypeFilter enum value
15941	BackupTypeFilterSystem = "SYSTEM"
15942
15943	// BackupTypeFilterAwsBackup is a BackupTypeFilter enum value
15944	BackupTypeFilterAwsBackup = "AWS_BACKUP"
15945
15946	// BackupTypeFilterAll is a BackupTypeFilter enum value
15947	BackupTypeFilterAll = "ALL"
15948)
15949
15950const (
15951	// BillingModeProvisioned is a BillingMode enum value
15952	BillingModeProvisioned = "PROVISIONED"
15953
15954	// BillingModePayPerRequest is a BillingMode enum value
15955	BillingModePayPerRequest = "PAY_PER_REQUEST"
15956)
15957
15958const (
15959	// ComparisonOperatorEq is a ComparisonOperator enum value
15960	ComparisonOperatorEq = "EQ"
15961
15962	// ComparisonOperatorNe is a ComparisonOperator enum value
15963	ComparisonOperatorNe = "NE"
15964
15965	// ComparisonOperatorIn is a ComparisonOperator enum value
15966	ComparisonOperatorIn = "IN"
15967
15968	// ComparisonOperatorLe is a ComparisonOperator enum value
15969	ComparisonOperatorLe = "LE"
15970
15971	// ComparisonOperatorLt is a ComparisonOperator enum value
15972	ComparisonOperatorLt = "LT"
15973
15974	// ComparisonOperatorGe is a ComparisonOperator enum value
15975	ComparisonOperatorGe = "GE"
15976
15977	// ComparisonOperatorGt is a ComparisonOperator enum value
15978	ComparisonOperatorGt = "GT"
15979
15980	// ComparisonOperatorBetween is a ComparisonOperator enum value
15981	ComparisonOperatorBetween = "BETWEEN"
15982
15983	// ComparisonOperatorNotNull is a ComparisonOperator enum value
15984	ComparisonOperatorNotNull = "NOT_NULL"
15985
15986	// ComparisonOperatorNull is a ComparisonOperator enum value
15987	ComparisonOperatorNull = "NULL"
15988
15989	// ComparisonOperatorContains is a ComparisonOperator enum value
15990	ComparisonOperatorContains = "CONTAINS"
15991
15992	// ComparisonOperatorNotContains is a ComparisonOperator enum value
15993	ComparisonOperatorNotContains = "NOT_CONTAINS"
15994
15995	// ComparisonOperatorBeginsWith is a ComparisonOperator enum value
15996	ComparisonOperatorBeginsWith = "BEGINS_WITH"
15997)
15998
15999const (
16000	// ConditionalOperatorAnd is a ConditionalOperator enum value
16001	ConditionalOperatorAnd = "AND"
16002
16003	// ConditionalOperatorOr is a ConditionalOperator enum value
16004	ConditionalOperatorOr = "OR"
16005)
16006
16007const (
16008	// ContinuousBackupsStatusEnabled is a ContinuousBackupsStatus enum value
16009	ContinuousBackupsStatusEnabled = "ENABLED"
16010
16011	// ContinuousBackupsStatusDisabled is a ContinuousBackupsStatus enum value
16012	ContinuousBackupsStatusDisabled = "DISABLED"
16013)
16014
16015const (
16016	// GlobalTableStatusCreating is a GlobalTableStatus enum value
16017	GlobalTableStatusCreating = "CREATING"
16018
16019	// GlobalTableStatusActive is a GlobalTableStatus enum value
16020	GlobalTableStatusActive = "ACTIVE"
16021
16022	// GlobalTableStatusDeleting is a GlobalTableStatus enum value
16023	GlobalTableStatusDeleting = "DELETING"
16024
16025	// GlobalTableStatusUpdating is a GlobalTableStatus enum value
16026	GlobalTableStatusUpdating = "UPDATING"
16027)
16028
16029const (
16030	// IndexStatusCreating is a IndexStatus enum value
16031	IndexStatusCreating = "CREATING"
16032
16033	// IndexStatusUpdating is a IndexStatus enum value
16034	IndexStatusUpdating = "UPDATING"
16035
16036	// IndexStatusDeleting is a IndexStatus enum value
16037	IndexStatusDeleting = "DELETING"
16038
16039	// IndexStatusActive is a IndexStatus enum value
16040	IndexStatusActive = "ACTIVE"
16041)
16042
16043const (
16044	// KeyTypeHash is a KeyType enum value
16045	KeyTypeHash = "HASH"
16046
16047	// KeyTypeRange is a KeyType enum value
16048	KeyTypeRange = "RANGE"
16049)
16050
16051const (
16052	// PointInTimeRecoveryStatusEnabled is a PointInTimeRecoveryStatus enum value
16053	PointInTimeRecoveryStatusEnabled = "ENABLED"
16054
16055	// PointInTimeRecoveryStatusDisabled is a PointInTimeRecoveryStatus enum value
16056	PointInTimeRecoveryStatusDisabled = "DISABLED"
16057)
16058
16059const (
16060	// ProjectionTypeAll is a ProjectionType enum value
16061	ProjectionTypeAll = "ALL"
16062
16063	// ProjectionTypeKeysOnly is a ProjectionType enum value
16064	ProjectionTypeKeysOnly = "KEYS_ONLY"
16065
16066	// ProjectionTypeInclude is a ProjectionType enum value
16067	ProjectionTypeInclude = "INCLUDE"
16068)
16069
16070const (
16071	// ReplicaStatusCreating is a ReplicaStatus enum value
16072	ReplicaStatusCreating = "CREATING"
16073
16074	// ReplicaStatusUpdating is a ReplicaStatus enum value
16075	ReplicaStatusUpdating = "UPDATING"
16076
16077	// ReplicaStatusDeleting is a ReplicaStatus enum value
16078	ReplicaStatusDeleting = "DELETING"
16079
16080	// ReplicaStatusActive is a ReplicaStatus enum value
16081	ReplicaStatusActive = "ACTIVE"
16082)
16083
16084// Determines the level of detail about provisioned throughput consumption that
16085// is returned in the response:
16086//
16087//    * INDEXES - The response includes the aggregate ConsumedCapacity for the
16088//    operation, together with ConsumedCapacity for each table and secondary
16089//    index that was accessed. Note that some operations, such as GetItem and
16090//    BatchGetItem, do not access any indexes at all. In these cases, specifying
16091//    INDEXES will only return ConsumedCapacity information for table(s).
16092//
16093//    * TOTAL - The response includes only the aggregate ConsumedCapacity for
16094//    the operation.
16095//
16096//    * NONE - No ConsumedCapacity details are included in the response.
16097const (
16098	// ReturnConsumedCapacityIndexes is a ReturnConsumedCapacity enum value
16099	ReturnConsumedCapacityIndexes = "INDEXES"
16100
16101	// ReturnConsumedCapacityTotal is a ReturnConsumedCapacity enum value
16102	ReturnConsumedCapacityTotal = "TOTAL"
16103
16104	// ReturnConsumedCapacityNone is a ReturnConsumedCapacity enum value
16105	ReturnConsumedCapacityNone = "NONE"
16106)
16107
16108const (
16109	// ReturnItemCollectionMetricsSize is a ReturnItemCollectionMetrics enum value
16110	ReturnItemCollectionMetricsSize = "SIZE"
16111
16112	// ReturnItemCollectionMetricsNone is a ReturnItemCollectionMetrics enum value
16113	ReturnItemCollectionMetricsNone = "NONE"
16114)
16115
16116const (
16117	// ReturnValueNone is a ReturnValue enum value
16118	ReturnValueNone = "NONE"
16119
16120	// ReturnValueAllOld is a ReturnValue enum value
16121	ReturnValueAllOld = "ALL_OLD"
16122
16123	// ReturnValueUpdatedOld is a ReturnValue enum value
16124	ReturnValueUpdatedOld = "UPDATED_OLD"
16125
16126	// ReturnValueAllNew is a ReturnValue enum value
16127	ReturnValueAllNew = "ALL_NEW"
16128
16129	// ReturnValueUpdatedNew is a ReturnValue enum value
16130	ReturnValueUpdatedNew = "UPDATED_NEW"
16131)
16132
16133const (
16134	// ReturnValuesOnConditionCheckFailureAllOld is a ReturnValuesOnConditionCheckFailure enum value
16135	ReturnValuesOnConditionCheckFailureAllOld = "ALL_OLD"
16136
16137	// ReturnValuesOnConditionCheckFailureNone is a ReturnValuesOnConditionCheckFailure enum value
16138	ReturnValuesOnConditionCheckFailureNone = "NONE"
16139)
16140
16141const (
16142	// SSEStatusEnabling is a SSEStatus enum value
16143	SSEStatusEnabling = "ENABLING"
16144
16145	// SSEStatusEnabled is a SSEStatus enum value
16146	SSEStatusEnabled = "ENABLED"
16147
16148	// SSEStatusDisabling is a SSEStatus enum value
16149	SSEStatusDisabling = "DISABLING"
16150
16151	// SSEStatusDisabled is a SSEStatus enum value
16152	SSEStatusDisabled = "DISABLED"
16153
16154	// SSEStatusUpdating is a SSEStatus enum value
16155	SSEStatusUpdating = "UPDATING"
16156)
16157
16158const (
16159	// SSETypeAes256 is a SSEType enum value
16160	SSETypeAes256 = "AES256"
16161
16162	// SSETypeKms is a SSEType enum value
16163	SSETypeKms = "KMS"
16164)
16165
16166const (
16167	// ScalarAttributeTypeS is a ScalarAttributeType enum value
16168	ScalarAttributeTypeS = "S"
16169
16170	// ScalarAttributeTypeN is a ScalarAttributeType enum value
16171	ScalarAttributeTypeN = "N"
16172
16173	// ScalarAttributeTypeB is a ScalarAttributeType enum value
16174	ScalarAttributeTypeB = "B"
16175)
16176
16177const (
16178	// SelectAllAttributes is a Select enum value
16179	SelectAllAttributes = "ALL_ATTRIBUTES"
16180
16181	// SelectAllProjectedAttributes is a Select enum value
16182	SelectAllProjectedAttributes = "ALL_PROJECTED_ATTRIBUTES"
16183
16184	// SelectSpecificAttributes is a Select enum value
16185	SelectSpecificAttributes = "SPECIFIC_ATTRIBUTES"
16186
16187	// SelectCount is a Select enum value
16188	SelectCount = "COUNT"
16189)
16190
16191const (
16192	// StreamViewTypeNewImage is a StreamViewType enum value
16193	StreamViewTypeNewImage = "NEW_IMAGE"
16194
16195	// StreamViewTypeOldImage is a StreamViewType enum value
16196	StreamViewTypeOldImage = "OLD_IMAGE"
16197
16198	// StreamViewTypeNewAndOldImages is a StreamViewType enum value
16199	StreamViewTypeNewAndOldImages = "NEW_AND_OLD_IMAGES"
16200
16201	// StreamViewTypeKeysOnly is a StreamViewType enum value
16202	StreamViewTypeKeysOnly = "KEYS_ONLY"
16203)
16204
16205const (
16206	// TableStatusCreating is a TableStatus enum value
16207	TableStatusCreating = "CREATING"
16208
16209	// TableStatusUpdating is a TableStatus enum value
16210	TableStatusUpdating = "UPDATING"
16211
16212	// TableStatusDeleting is a TableStatus enum value
16213	TableStatusDeleting = "DELETING"
16214
16215	// TableStatusActive is a TableStatus enum value
16216	TableStatusActive = "ACTIVE"
16217)
16218
16219const (
16220	// TimeToLiveStatusEnabling is a TimeToLiveStatus enum value
16221	TimeToLiveStatusEnabling = "ENABLING"
16222
16223	// TimeToLiveStatusDisabling is a TimeToLiveStatus enum value
16224	TimeToLiveStatusDisabling = "DISABLING"
16225
16226	// TimeToLiveStatusEnabled is a TimeToLiveStatus enum value
16227	TimeToLiveStatusEnabled = "ENABLED"
16228
16229	// TimeToLiveStatusDisabled is a TimeToLiveStatus enum value
16230	TimeToLiveStatusDisabled = "DISABLED"
16231)
16232