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	"strings"
9	"time"
10
11	"github.com/aws/aws-sdk-go/aws"
12	"github.com/aws/aws-sdk-go/aws/awsutil"
13	"github.com/aws/aws-sdk-go/aws/crr"
14	"github.com/aws/aws-sdk-go/aws/request"
15	"github.com/aws/aws-sdk-go/private/protocol"
16	"github.com/aws/aws-sdk-go/private/protocol/jsonrpc"
17)
18
19const opBatchGetItem = "BatchGetItem"
20
21// BatchGetItemRequest generates a "aws/request.Request" representing the
22// client's request for the BatchGetItem operation. The "output" return
23// value will be populated with the request's response once the request completes
24// successfully.
25//
26// Use "Send" method on the returned Request to send the API call to the service.
27// the "output" return value is not valid until after Send returns without error.
28//
29// See BatchGetItem for more information on using the BatchGetItem
30// API call, and error handling.
31//
32// This method is useful when you want to inject custom logic or configuration
33// into the SDK's request lifecycle. Such as custom headers, or retry logic.
34//
35//
36//    // Example sending a request using the BatchGetItemRequest method.
37//    req, resp := client.BatchGetItemRequest(params)
38//
39//    err := req.Send()
40//    if err == nil { // resp is now filled
41//        fmt.Println(resp)
42//    }
43//
44// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/BatchGetItem
45func (c *DynamoDB) BatchGetItemRequest(input *BatchGetItemInput) (req *request.Request, output *BatchGetItemOutput) {
46	op := &request.Operation{
47		Name:       opBatchGetItem,
48		HTTPMethod: "POST",
49		HTTPPath:   "/",
50		Paginator: &request.Paginator{
51			InputTokens:     []string{"RequestItems"},
52			OutputTokens:    []string{"UnprocessedKeys"},
53			LimitToken:      "",
54			TruncationToken: "",
55		},
56	}
57
58	if input == nil {
59		input = &BatchGetItemInput{}
60	}
61
62	output = &BatchGetItemOutput{}
63	req = c.newRequest(op, input, output)
64	// if custom endpoint for the request is set to a non empty string,
65	// we skip the endpoint discovery workflow.
66	if req.Config.Endpoint == nil || *req.Config.Endpoint == "" {
67		if aws.BoolValue(req.Config.EnableEndpointDiscovery) {
68			de := discovererDescribeEndpoints{
69				Required:      false,
70				EndpointCache: c.endpointCache,
71				Params: map[string]*string{
72					"op": aws.String(req.Operation.Name),
73				},
74				Client: c,
75			}
76
77			for k, v := range de.Params {
78				if v == nil {
79					delete(de.Params, k)
80				}
81			}
82
83			req.Handlers.Build.PushFrontNamed(request.NamedHandler{
84				Name: "crr.endpointdiscovery",
85				Fn:   de.Handler,
86			})
87		}
88	}
89	return
90}
91
92// BatchGetItem API operation for Amazon DynamoDB.
93//
94// The BatchGetItem operation returns the attributes of one or more items from
95// one or more tables. You identify requested items by primary key.
96//
97// A single operation can retrieve up to 16 MB of data, which can contain as
98// many as 100 items. BatchGetItem returns a partial result if the response
99// size limit is exceeded, the table's provisioned throughput is exceeded, or
100// an internal processing failure occurs. If a partial result is returned, the
101// operation returns a value for UnprocessedKeys. You can use this value to
102// retry the operation starting with the next item to get.
103//
104// If you request more than 100 items, BatchGetItem returns a ValidationException
105// with the message "Too many items requested for the BatchGetItem call."
106//
107// For example, if you ask to retrieve 100 items, but each individual item is
108// 300 KB in size, the system returns 52 items (so as not to exceed the 16 MB
109// limit). It also returns an appropriate UnprocessedKeys value so you can get
110// the next page of results. If desired, your application can include its own
111// logic to assemble the pages of results into one dataset.
112//
113// If none of the items can be processed due to insufficient provisioned throughput
114// on all of the tables in the request, then BatchGetItem returns a ProvisionedThroughputExceededException.
115// If at least one of the items is successfully processed, then BatchGetItem
116// completes successfully, while returning the keys of the unread items in UnprocessedKeys.
117//
118// If DynamoDB returns any unprocessed items, you should retry the batch operation
119// on those items. However, we strongly recommend that you use an exponential
120// backoff algorithm. If you retry the batch operation immediately, the underlying
121// read or write requests can still fail due to throttling on the individual
122// tables. If you delay the batch operation using exponential backoff, the individual
123// requests in the batch are much more likely to succeed.
124//
125// For more information, see Batch Operations and Error Handling (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ErrorHandling.html#BatchOperations)
126// in the Amazon DynamoDB Developer Guide.
127//
128// By default, BatchGetItem performs eventually consistent reads on every table
129// in the request. If you want strongly consistent reads instead, you can set
130// ConsistentRead to true for any or all tables.
131//
132// In order to minimize response latency, BatchGetItem retrieves items in parallel.
133//
134// When designing your application, keep in mind that DynamoDB does not return
135// items in any particular order. To help parse the response by item, include
136// the primary key values for the items in your request in the ProjectionExpression
137// parameter.
138//
139// If a requested item does not exist, it is not returned in the result. Requests
140// for nonexistent items consume the minimum read capacity units according to
141// the type of read. For more information, see Working with Tables (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/WorkingWithTables.html#CapacityUnitCalculations)
142// in the Amazon DynamoDB Developer Guide.
143//
144// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
145// with awserr.Error's Code and Message methods to get detailed information about
146// the error.
147//
148// See the AWS API reference guide for Amazon DynamoDB's
149// API operation BatchGetItem for usage and error information.
150//
151// Returned Error Types:
152//   * ProvisionedThroughputExceededException
153//   Your request rate is too high. The AWS SDKs for DynamoDB automatically retry
154//   requests that receive this exception. Your request is eventually successful,
155//   unless your retry queue is too large to finish. Reduce the frequency of requests
156//   and use exponential backoff. For more information, go to Error Retries and
157//   Exponential Backoff (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Programming.Errors.html#Programming.Errors.RetryAndBackoff)
158//   in the Amazon DynamoDB Developer Guide.
159//
160//   * ResourceNotFoundException
161//   The operation tried to access a nonexistent table or index. The resource
162//   might not be specified correctly, or its status might not be ACTIVE.
163//
164//   * RequestLimitExceeded
165//   Throughput exceeds the current throughput limit for your account. Please
166//   contact AWS Support at AWS Support (https://aws.amazon.com/support) to request
167//   a limit increase.
168//
169//   * InternalServerError
170//   An error occurred on the server side.
171//
172// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/BatchGetItem
173func (c *DynamoDB) BatchGetItem(input *BatchGetItemInput) (*BatchGetItemOutput, error) {
174	req, out := c.BatchGetItemRequest(input)
175	return out, req.Send()
176}
177
178// BatchGetItemWithContext is the same as BatchGetItem with the addition of
179// the ability to pass a context and additional request options.
180//
181// See BatchGetItem for details on how to use this API operation.
182//
183// The context must be non-nil and will be used for request cancellation. If
184// the context is nil a panic will occur. In the future the SDK may create
185// sub-contexts for http.Requests. See https://golang.org/pkg/context/
186// for more information on using Contexts.
187func (c *DynamoDB) BatchGetItemWithContext(ctx aws.Context, input *BatchGetItemInput, opts ...request.Option) (*BatchGetItemOutput, error) {
188	req, out := c.BatchGetItemRequest(input)
189	req.SetContext(ctx)
190	req.ApplyOptions(opts...)
191	return out, req.Send()
192}
193
194// BatchGetItemPages iterates over the pages of a BatchGetItem operation,
195// calling the "fn" function with the response data for each page. To stop
196// iterating, return false from the fn function.
197//
198// See BatchGetItem method for more information on how to use this operation.
199//
200// Note: This operation can generate multiple requests to a service.
201//
202//    // Example iterating over at most 3 pages of a BatchGetItem operation.
203//    pageNum := 0
204//    err := client.BatchGetItemPages(params,
205//        func(page *dynamodb.BatchGetItemOutput, lastPage bool) bool {
206//            pageNum++
207//            fmt.Println(page)
208//            return pageNum <= 3
209//        })
210//
211func (c *DynamoDB) BatchGetItemPages(input *BatchGetItemInput, fn func(*BatchGetItemOutput, bool) bool) error {
212	return c.BatchGetItemPagesWithContext(aws.BackgroundContext(), input, fn)
213}
214
215// BatchGetItemPagesWithContext same as BatchGetItemPages except
216// it takes a Context and allows setting request options on the pages.
217//
218// The context must be non-nil and will be used for request cancellation. If
219// the context is nil a panic will occur. In the future the SDK may create
220// sub-contexts for http.Requests. See https://golang.org/pkg/context/
221// for more information on using Contexts.
222func (c *DynamoDB) BatchGetItemPagesWithContext(ctx aws.Context, input *BatchGetItemInput, fn func(*BatchGetItemOutput, bool) bool, opts ...request.Option) error {
223	p := request.Pagination{
224		NewRequest: func() (*request.Request, error) {
225			var inCpy *BatchGetItemInput
226			if input != nil {
227				tmp := *input
228				inCpy = &tmp
229			}
230			req, _ := c.BatchGetItemRequest(inCpy)
231			req.SetContext(ctx)
232			req.ApplyOptions(opts...)
233			return req, nil
234		},
235	}
236
237	for p.Next() {
238		if !fn(p.Page().(*BatchGetItemOutput), !p.HasNextPage()) {
239			break
240		}
241	}
242
243	return p.Err()
244}
245
246const opBatchWriteItem = "BatchWriteItem"
247
248// BatchWriteItemRequest generates a "aws/request.Request" representing the
249// client's request for the BatchWriteItem operation. The "output" return
250// value will be populated with the request's response once the request completes
251// successfully.
252//
253// Use "Send" method on the returned Request to send the API call to the service.
254// the "output" return value is not valid until after Send returns without error.
255//
256// See BatchWriteItem for more information on using the BatchWriteItem
257// API call, and error handling.
258//
259// This method is useful when you want to inject custom logic or configuration
260// into the SDK's request lifecycle. Such as custom headers, or retry logic.
261//
262//
263//    // Example sending a request using the BatchWriteItemRequest method.
264//    req, resp := client.BatchWriteItemRequest(params)
265//
266//    err := req.Send()
267//    if err == nil { // resp is now filled
268//        fmt.Println(resp)
269//    }
270//
271// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/BatchWriteItem
272func (c *DynamoDB) BatchWriteItemRequest(input *BatchWriteItemInput) (req *request.Request, output *BatchWriteItemOutput) {
273	op := &request.Operation{
274		Name:       opBatchWriteItem,
275		HTTPMethod: "POST",
276		HTTPPath:   "/",
277	}
278
279	if input == nil {
280		input = &BatchWriteItemInput{}
281	}
282
283	output = &BatchWriteItemOutput{}
284	req = c.newRequest(op, input, output)
285	// if custom endpoint for the request is set to a non empty string,
286	// we skip the endpoint discovery workflow.
287	if req.Config.Endpoint == nil || *req.Config.Endpoint == "" {
288		if aws.BoolValue(req.Config.EnableEndpointDiscovery) {
289			de := discovererDescribeEndpoints{
290				Required:      false,
291				EndpointCache: c.endpointCache,
292				Params: map[string]*string{
293					"op": aws.String(req.Operation.Name),
294				},
295				Client: c,
296			}
297
298			for k, v := range de.Params {
299				if v == nil {
300					delete(de.Params, k)
301				}
302			}
303
304			req.Handlers.Build.PushFrontNamed(request.NamedHandler{
305				Name: "crr.endpointdiscovery",
306				Fn:   de.Handler,
307			})
308		}
309	}
310	return
311}
312
313// BatchWriteItem API operation for Amazon DynamoDB.
314//
315// The BatchWriteItem operation puts or deletes multiple items in one or more
316// tables. A single call to BatchWriteItem can write up to 16 MB of data, which
317// can comprise as many as 25 put or delete requests. Individual items to be
318// written can be as large as 400 KB.
319//
320// BatchWriteItem cannot update items. To update items, use the UpdateItem action.
321//
322// The individual PutItem and DeleteItem operations specified in BatchWriteItem
323// are atomic; however BatchWriteItem as a whole is not. If any requested operations
324// fail because the table's provisioned throughput is exceeded or an internal
325// processing failure occurs, the failed operations are returned in the UnprocessedItems
326// response parameter. You can investigate and optionally resend the requests.
327// Typically, you would call BatchWriteItem in a loop. Each iteration would
328// check for unprocessed items and submit a new BatchWriteItem request with
329// those unprocessed items until all items have been processed.
330//
331// If none of the items can be processed due to insufficient provisioned throughput
332// on all of the tables in the request, then BatchWriteItem returns a ProvisionedThroughputExceededException.
333//
334// If DynamoDB returns any unprocessed items, you should retry the batch operation
335// on those items. However, we strongly recommend that you use an exponential
336// backoff algorithm. If you retry the batch operation immediately, the underlying
337// read or write requests can still fail due to throttling on the individual
338// tables. If you delay the batch operation using exponential backoff, the individual
339// requests in the batch are much more likely to succeed.
340//
341// For more information, see Batch Operations and Error Handling (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ErrorHandling.html#Programming.Errors.BatchOperations)
342// in the Amazon DynamoDB Developer Guide.
343//
344// With BatchWriteItem, you can efficiently write or delete large amounts of
345// data, such as from Amazon EMR, or copy data from another database into DynamoDB.
346// In order to improve performance with these large-scale operations, BatchWriteItem
347// does not behave in the same way as individual PutItem and DeleteItem calls
348// would. For example, you cannot specify conditions on individual put and delete
349// requests, and BatchWriteItem does not return deleted items in the response.
350//
351// If you use a programming language that supports concurrency, you can use
352// threads to write items in parallel. Your application must include the necessary
353// logic to manage the threads. With languages that don't support threading,
354// you must update or delete the specified items one at a time. In both situations,
355// BatchWriteItem performs the specified put and delete operations in parallel,
356// giving you the power of the thread pool approach without having to introduce
357// complexity into your application.
358//
359// Parallel processing reduces latency, but each specified put and delete request
360// consumes the same number of write capacity units whether it is processed
361// in parallel or not. Delete operations on nonexistent items consume one write
362// capacity unit.
363//
364// If one or more of the following is true, DynamoDB rejects the entire batch
365// write operation:
366//
367//    * One or more tables specified in the BatchWriteItem request does not
368//    exist.
369//
370//    * Primary key attributes specified on an item in the request do not match
371//    those in the corresponding table's primary key schema.
372//
373//    * You try to perform multiple operations on the same item in the same
374//    BatchWriteItem request. For example, you cannot put and delete the same
375//    item in the same BatchWriteItem request.
376//
377//    * Your request contains at least two items with identical hash and range
378//    keys (which essentially is two put operations).
379//
380//    * There are more than 25 requests in the batch.
381//
382//    * Any individual item in a batch exceeds 400 KB.
383//
384//    * The total request size exceeds 16 MB.
385//
386// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
387// with awserr.Error's Code and Message methods to get detailed information about
388// the error.
389//
390// See the AWS API reference guide for Amazon DynamoDB's
391// API operation BatchWriteItem for usage and error information.
392//
393// Returned Error Types:
394//   * ProvisionedThroughputExceededException
395//   Your request rate is too high. The AWS SDKs for DynamoDB automatically retry
396//   requests that receive this exception. Your request is eventually successful,
397//   unless your retry queue is too large to finish. Reduce the frequency of requests
398//   and use exponential backoff. For more information, go to Error Retries and
399//   Exponential Backoff (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Programming.Errors.html#Programming.Errors.RetryAndBackoff)
400//   in the Amazon DynamoDB Developer Guide.
401//
402//   * ResourceNotFoundException
403//   The operation tried to access a nonexistent table or index. The resource
404//   might not be specified correctly, or its status might not be ACTIVE.
405//
406//   * ItemCollectionSizeLimitExceededException
407//   An item collection is too large. This exception is only returned for tables
408//   that have one or more local secondary indexes.
409//
410//   * RequestLimitExceeded
411//   Throughput exceeds the current throughput limit for your account. Please
412//   contact AWS Support at AWS Support (https://aws.amazon.com/support) to request
413//   a limit increase.
414//
415//   * InternalServerError
416//   An error occurred on the server side.
417//
418// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/BatchWriteItem
419func (c *DynamoDB) BatchWriteItem(input *BatchWriteItemInput) (*BatchWriteItemOutput, error) {
420	req, out := c.BatchWriteItemRequest(input)
421	return out, req.Send()
422}
423
424// BatchWriteItemWithContext is the same as BatchWriteItem with the addition of
425// the ability to pass a context and additional request options.
426//
427// See BatchWriteItem for details on how to use this API operation.
428//
429// The context must be non-nil and will be used for request cancellation. If
430// the context is nil a panic will occur. In the future the SDK may create
431// sub-contexts for http.Requests. See https://golang.org/pkg/context/
432// for more information on using Contexts.
433func (c *DynamoDB) BatchWriteItemWithContext(ctx aws.Context, input *BatchWriteItemInput, opts ...request.Option) (*BatchWriteItemOutput, error) {
434	req, out := c.BatchWriteItemRequest(input)
435	req.SetContext(ctx)
436	req.ApplyOptions(opts...)
437	return out, req.Send()
438}
439
440const opCreateBackup = "CreateBackup"
441
442// CreateBackupRequest generates a "aws/request.Request" representing the
443// client's request for the CreateBackup operation. The "output" return
444// value will be populated with the request's response once the request completes
445// successfully.
446//
447// Use "Send" method on the returned Request to send the API call to the service.
448// the "output" return value is not valid until after Send returns without error.
449//
450// See CreateBackup for more information on using the CreateBackup
451// API call, and error handling.
452//
453// This method is useful when you want to inject custom logic or configuration
454// into the SDK's request lifecycle. Such as custom headers, or retry logic.
455//
456//
457//    // Example sending a request using the CreateBackupRequest method.
458//    req, resp := client.CreateBackupRequest(params)
459//
460//    err := req.Send()
461//    if err == nil { // resp is now filled
462//        fmt.Println(resp)
463//    }
464//
465// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/CreateBackup
466func (c *DynamoDB) CreateBackupRequest(input *CreateBackupInput) (req *request.Request, output *CreateBackupOutput) {
467	op := &request.Operation{
468		Name:       opCreateBackup,
469		HTTPMethod: "POST",
470		HTTPPath:   "/",
471	}
472
473	if input == nil {
474		input = &CreateBackupInput{}
475	}
476
477	output = &CreateBackupOutput{}
478	req = c.newRequest(op, input, output)
479	// if custom endpoint for the request is set to a non empty string,
480	// we skip the endpoint discovery workflow.
481	if req.Config.Endpoint == nil || *req.Config.Endpoint == "" {
482		if aws.BoolValue(req.Config.EnableEndpointDiscovery) {
483			de := discovererDescribeEndpoints{
484				Required:      false,
485				EndpointCache: c.endpointCache,
486				Params: map[string]*string{
487					"op": aws.String(req.Operation.Name),
488				},
489				Client: c,
490			}
491
492			for k, v := range de.Params {
493				if v == nil {
494					delete(de.Params, k)
495				}
496			}
497
498			req.Handlers.Build.PushFrontNamed(request.NamedHandler{
499				Name: "crr.endpointdiscovery",
500				Fn:   de.Handler,
501			})
502		}
503	}
504	return
505}
506
507// CreateBackup API operation for Amazon DynamoDB.
508//
509// Creates a backup for an existing table.
510//
511// Each time you create an on-demand backup, the entire table data is backed
512// up. There is no limit to the number of on-demand backups that can be taken.
513//
514// When you create an on-demand backup, a time marker of the request is cataloged,
515// and the backup is created asynchronously, by applying all changes until the
516// time of the request to the last full table snapshot. Backup requests are
517// processed instantaneously and become available for restore within minutes.
518//
519// You can call CreateBackup at a maximum rate of 50 times per second.
520//
521// All backups in DynamoDB work without consuming any provisioned throughput
522// on the table.
523//
524// If you submit a backup request on 2018-12-14 at 14:25:00, the backup is guaranteed
525// to contain all data committed to the table up to 14:24:00, and data committed
526// after 14:26:00 will not be. The backup might contain data modifications made
527// between 14:24:00 and 14:26:00. On-demand backup does not support causal consistency.
528//
529// Along with data, the following are also included on the backups:
530//
531//    * Global secondary indexes (GSIs)
532//
533//    * Local secondary indexes (LSIs)
534//
535//    * Streams
536//
537//    * Provisioned read and write capacity
538//
539// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
540// with awserr.Error's Code and Message methods to get detailed information about
541// the error.
542//
543// See the AWS API reference guide for Amazon DynamoDB's
544// API operation CreateBackup for usage and error information.
545//
546// Returned Error Types:
547//   * TableNotFoundException
548//   A source table with the name TableName does not currently exist within the
549//   subscriber's account.
550//
551//   * TableInUseException
552//   A target table with the specified name is either being created or deleted.
553//
554//   * ContinuousBackupsUnavailableException
555//   Backups have not yet been enabled for this table.
556//
557//   * BackupInUseException
558//   There is another ongoing conflicting backup control plane operation on the
559//   table. The backup is either being created, deleted or restored to a table.
560//
561//   * LimitExceededException
562//   There is no limit to the number of daily on-demand backups that can be taken.
563//
564//   Up to 50 simultaneous table operations are allowed per account. These operations
565//   include CreateTable, UpdateTable, DeleteTable,UpdateTimeToLive, RestoreTableFromBackup,
566//   and RestoreTableToPointInTime.
567//
568//   The only exception is when you are creating a table with one or more secondary
569//   indexes. You can have up to 25 such requests running at a time; however,
570//   if the table or index specifications are complex, DynamoDB might temporarily
571//   reduce the number of concurrent operations.
572//
573//   There is a soft account limit of 256 tables.
574//
575//   * InternalServerError
576//   An error occurred on the server side.
577//
578// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/CreateBackup
579func (c *DynamoDB) CreateBackup(input *CreateBackupInput) (*CreateBackupOutput, error) {
580	req, out := c.CreateBackupRequest(input)
581	return out, req.Send()
582}
583
584// CreateBackupWithContext is the same as CreateBackup with the addition of
585// the ability to pass a context and additional request options.
586//
587// See CreateBackup for details on how to use this API operation.
588//
589// The context must be non-nil and will be used for request cancellation. If
590// the context is nil a panic will occur. In the future the SDK may create
591// sub-contexts for http.Requests. See https://golang.org/pkg/context/
592// for more information on using Contexts.
593func (c *DynamoDB) CreateBackupWithContext(ctx aws.Context, input *CreateBackupInput, opts ...request.Option) (*CreateBackupOutput, error) {
594	req, out := c.CreateBackupRequest(input)
595	req.SetContext(ctx)
596	req.ApplyOptions(opts...)
597	return out, req.Send()
598}
599
600const opCreateGlobalTable = "CreateGlobalTable"
601
602// CreateGlobalTableRequest generates a "aws/request.Request" representing the
603// client's request for the CreateGlobalTable operation. The "output" return
604// value will be populated with the request's response once the request completes
605// successfully.
606//
607// Use "Send" method on the returned Request to send the API call to the service.
608// the "output" return value is not valid until after Send returns without error.
609//
610// See CreateGlobalTable for more information on using the CreateGlobalTable
611// API call, and error handling.
612//
613// This method is useful when you want to inject custom logic or configuration
614// into the SDK's request lifecycle. Such as custom headers, or retry logic.
615//
616//
617//    // Example sending a request using the CreateGlobalTableRequest method.
618//    req, resp := client.CreateGlobalTableRequest(params)
619//
620//    err := req.Send()
621//    if err == nil { // resp is now filled
622//        fmt.Println(resp)
623//    }
624//
625// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/CreateGlobalTable
626func (c *DynamoDB) CreateGlobalTableRequest(input *CreateGlobalTableInput) (req *request.Request, output *CreateGlobalTableOutput) {
627	op := &request.Operation{
628		Name:       opCreateGlobalTable,
629		HTTPMethod: "POST",
630		HTTPPath:   "/",
631	}
632
633	if input == nil {
634		input = &CreateGlobalTableInput{}
635	}
636
637	output = &CreateGlobalTableOutput{}
638	req = c.newRequest(op, input, output)
639	// if custom endpoint for the request is set to a non empty string,
640	// we skip the endpoint discovery workflow.
641	if req.Config.Endpoint == nil || *req.Config.Endpoint == "" {
642		if aws.BoolValue(req.Config.EnableEndpointDiscovery) {
643			de := discovererDescribeEndpoints{
644				Required:      false,
645				EndpointCache: c.endpointCache,
646				Params: map[string]*string{
647					"op": aws.String(req.Operation.Name),
648				},
649				Client: c,
650			}
651
652			for k, v := range de.Params {
653				if v == nil {
654					delete(de.Params, k)
655				}
656			}
657
658			req.Handlers.Build.PushFrontNamed(request.NamedHandler{
659				Name: "crr.endpointdiscovery",
660				Fn:   de.Handler,
661			})
662		}
663	}
664	return
665}
666
667// CreateGlobalTable API operation for Amazon DynamoDB.
668//
669// Creates a global table from an existing table. A global table creates a replication
670// relationship between two or more DynamoDB tables with the same table name
671// in the provided Regions.
672//
673// This operation only applies to Version 2017.11.29 (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/globaltables.V1.html)
674// of global tables.
675//
676// If you want to add a new replica table to a global table, each of the following
677// conditions must be true:
678//
679//    * The table must have the same primary key as all of the other replicas.
680//
681//    * The table must have the same name as all of the other replicas.
682//
683//    * The table must have DynamoDB Streams enabled, with the stream containing
684//    both the new and the old images of the item.
685//
686//    * None of the replica tables in the global table can contain any data.
687//
688// If global secondary indexes are specified, then the following conditions
689// must also be met:
690//
691//    * The global secondary indexes must have the same name.
692//
693//    * The global secondary indexes must have the same hash key and sort key
694//    (if present).
695//
696// If local secondary indexes are specified, then the following conditions must
697// also be met:
698//
699//    * The local secondary indexes must have the same name.
700//
701//    * The local secondary indexes must have the same hash key and sort key
702//    (if present).
703//
704// Write capacity settings should be set consistently across your replica tables
705// and secondary indexes. DynamoDB strongly recommends enabling auto scaling
706// to manage the write capacity settings for all of your global tables replicas
707// and indexes.
708//
709// If you prefer to manage write capacity settings manually, you should provision
710// equal replicated write capacity units to your replica tables. You should
711// also provision equal replicated write capacity units to matching secondary
712// indexes across your global table.
713//
714// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
715// with awserr.Error's Code and Message methods to get detailed information about
716// the error.
717//
718// See the AWS API reference guide for Amazon DynamoDB's
719// API operation CreateGlobalTable for usage and error information.
720//
721// Returned Error Types:
722//   * LimitExceededException
723//   There is no limit to the number of daily on-demand backups that can be taken.
724//
725//   Up to 50 simultaneous table operations are allowed per account. These operations
726//   include CreateTable, UpdateTable, DeleteTable,UpdateTimeToLive, RestoreTableFromBackup,
727//   and RestoreTableToPointInTime.
728//
729//   The only exception is when you are creating a table with one or more secondary
730//   indexes. You can have up to 25 such requests running at a time; however,
731//   if the table or index specifications are complex, DynamoDB might temporarily
732//   reduce the number of concurrent operations.
733//
734//   There is a soft account limit of 256 tables.
735//
736//   * InternalServerError
737//   An error occurred on the server side.
738//
739//   * GlobalTableAlreadyExistsException
740//   The specified global table already exists.
741//
742//   * TableNotFoundException
743//   A source table with the name TableName does not currently exist within the
744//   subscriber's account.
745//
746// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/CreateGlobalTable
747func (c *DynamoDB) CreateGlobalTable(input *CreateGlobalTableInput) (*CreateGlobalTableOutput, error) {
748	req, out := c.CreateGlobalTableRequest(input)
749	return out, req.Send()
750}
751
752// CreateGlobalTableWithContext is the same as CreateGlobalTable with the addition of
753// the ability to pass a context and additional request options.
754//
755// See CreateGlobalTable for details on how to use this API operation.
756//
757// The context must be non-nil and will be used for request cancellation. If
758// the context is nil a panic will occur. In the future the SDK may create
759// sub-contexts for http.Requests. See https://golang.org/pkg/context/
760// for more information on using Contexts.
761func (c *DynamoDB) CreateGlobalTableWithContext(ctx aws.Context, input *CreateGlobalTableInput, opts ...request.Option) (*CreateGlobalTableOutput, error) {
762	req, out := c.CreateGlobalTableRequest(input)
763	req.SetContext(ctx)
764	req.ApplyOptions(opts...)
765	return out, req.Send()
766}
767
768const opCreateTable = "CreateTable"
769
770// CreateTableRequest generates a "aws/request.Request" representing the
771// client's request for the CreateTable operation. The "output" return
772// value will be populated with the request's response once the request completes
773// successfully.
774//
775// Use "Send" method on the returned Request to send the API call to the service.
776// the "output" return value is not valid until after Send returns without error.
777//
778// See CreateTable for more information on using the CreateTable
779// API call, and error handling.
780//
781// This method is useful when you want to inject custom logic or configuration
782// into the SDK's request lifecycle. Such as custom headers, or retry logic.
783//
784//
785//    // Example sending a request using the CreateTableRequest method.
786//    req, resp := client.CreateTableRequest(params)
787//
788//    err := req.Send()
789//    if err == nil { // resp is now filled
790//        fmt.Println(resp)
791//    }
792//
793// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/CreateTable
794func (c *DynamoDB) CreateTableRequest(input *CreateTableInput) (req *request.Request, output *CreateTableOutput) {
795	op := &request.Operation{
796		Name:       opCreateTable,
797		HTTPMethod: "POST",
798		HTTPPath:   "/",
799	}
800
801	if input == nil {
802		input = &CreateTableInput{}
803	}
804
805	output = &CreateTableOutput{}
806	req = c.newRequest(op, input, output)
807	// if custom endpoint for the request is set to a non empty string,
808	// we skip the endpoint discovery workflow.
809	if req.Config.Endpoint == nil || *req.Config.Endpoint == "" {
810		if aws.BoolValue(req.Config.EnableEndpointDiscovery) {
811			de := discovererDescribeEndpoints{
812				Required:      false,
813				EndpointCache: c.endpointCache,
814				Params: map[string]*string{
815					"op": aws.String(req.Operation.Name),
816				},
817				Client: c,
818			}
819
820			for k, v := range de.Params {
821				if v == nil {
822					delete(de.Params, k)
823				}
824			}
825
826			req.Handlers.Build.PushFrontNamed(request.NamedHandler{
827				Name: "crr.endpointdiscovery",
828				Fn:   de.Handler,
829			})
830		}
831	}
832	return
833}
834
835// CreateTable API operation for Amazon DynamoDB.
836//
837// The CreateTable operation adds a new table to your account. In an AWS account,
838// table names must be unique within each Region. That is, you can have two
839// tables with same name if you create the tables in different Regions.
840//
841// CreateTable is an asynchronous operation. Upon receiving a CreateTable request,
842// DynamoDB immediately returns a response with a TableStatus of CREATING. After
843// the table is created, DynamoDB sets the TableStatus to ACTIVE. You can perform
844// read and write operations only on an ACTIVE table.
845//
846// You can optionally define secondary indexes on the new table, as part of
847// the CreateTable operation. If you want to create multiple tables with secondary
848// indexes on them, you must create the tables sequentially. Only one table
849// with secondary indexes can be in the CREATING state at any given time.
850//
851// You can use the DescribeTable action to check the table status.
852//
853// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
854// with awserr.Error's Code and Message methods to get detailed information about
855// the error.
856//
857// See the AWS API reference guide for Amazon DynamoDB's
858// API operation CreateTable for usage and error information.
859//
860// Returned Error Types:
861//   * ResourceInUseException
862//   The operation conflicts with the resource's availability. For example, you
863//   attempted to recreate an existing table, or tried to delete a table currently
864//   in the CREATING state.
865//
866//   * LimitExceededException
867//   There is no limit to the number of daily on-demand backups that can be taken.
868//
869//   Up to 50 simultaneous table operations are allowed per account. These operations
870//   include CreateTable, UpdateTable, DeleteTable,UpdateTimeToLive, RestoreTableFromBackup,
871//   and RestoreTableToPointInTime.
872//
873//   The only exception is when you are creating a table with one or more secondary
874//   indexes. You can have up to 25 such requests running at a time; however,
875//   if the table or index specifications are complex, DynamoDB might temporarily
876//   reduce the number of concurrent operations.
877//
878//   There is a soft account limit of 256 tables.
879//
880//   * InternalServerError
881//   An error occurred on the server side.
882//
883// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/CreateTable
884func (c *DynamoDB) CreateTable(input *CreateTableInput) (*CreateTableOutput, error) {
885	req, out := c.CreateTableRequest(input)
886	return out, req.Send()
887}
888
889// CreateTableWithContext is the same as CreateTable with the addition of
890// the ability to pass a context and additional request options.
891//
892// See CreateTable for details on how to use this API operation.
893//
894// The context must be non-nil and will be used for request cancellation. If
895// the context is nil a panic will occur. In the future the SDK may create
896// sub-contexts for http.Requests. See https://golang.org/pkg/context/
897// for more information on using Contexts.
898func (c *DynamoDB) CreateTableWithContext(ctx aws.Context, input *CreateTableInput, opts ...request.Option) (*CreateTableOutput, error) {
899	req, out := c.CreateTableRequest(input)
900	req.SetContext(ctx)
901	req.ApplyOptions(opts...)
902	return out, req.Send()
903}
904
905const opDeleteBackup = "DeleteBackup"
906
907// DeleteBackupRequest generates a "aws/request.Request" representing the
908// client's request for the DeleteBackup operation. The "output" return
909// value will be populated with the request's response once the request completes
910// successfully.
911//
912// Use "Send" method on the returned Request to send the API call to the service.
913// the "output" return value is not valid until after Send returns without error.
914//
915// See DeleteBackup for more information on using the DeleteBackup
916// API call, and error handling.
917//
918// This method is useful when you want to inject custom logic or configuration
919// into the SDK's request lifecycle. Such as custom headers, or retry logic.
920//
921//
922//    // Example sending a request using the DeleteBackupRequest method.
923//    req, resp := client.DeleteBackupRequest(params)
924//
925//    err := req.Send()
926//    if err == nil { // resp is now filled
927//        fmt.Println(resp)
928//    }
929//
930// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/DeleteBackup
931func (c *DynamoDB) DeleteBackupRequest(input *DeleteBackupInput) (req *request.Request, output *DeleteBackupOutput) {
932	op := &request.Operation{
933		Name:       opDeleteBackup,
934		HTTPMethod: "POST",
935		HTTPPath:   "/",
936	}
937
938	if input == nil {
939		input = &DeleteBackupInput{}
940	}
941
942	output = &DeleteBackupOutput{}
943	req = c.newRequest(op, input, output)
944	// if custom endpoint for the request is set to a non empty string,
945	// we skip the endpoint discovery workflow.
946	if req.Config.Endpoint == nil || *req.Config.Endpoint == "" {
947		if aws.BoolValue(req.Config.EnableEndpointDiscovery) {
948			de := discovererDescribeEndpoints{
949				Required:      false,
950				EndpointCache: c.endpointCache,
951				Params: map[string]*string{
952					"op": aws.String(req.Operation.Name),
953				},
954				Client: c,
955			}
956
957			for k, v := range de.Params {
958				if v == nil {
959					delete(de.Params, k)
960				}
961			}
962
963			req.Handlers.Build.PushFrontNamed(request.NamedHandler{
964				Name: "crr.endpointdiscovery",
965				Fn:   de.Handler,
966			})
967		}
968	}
969	return
970}
971
972// DeleteBackup API operation for Amazon DynamoDB.
973//
974// Deletes an existing backup of a table.
975//
976// You can call DeleteBackup at a maximum rate of 10 times per second.
977//
978// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
979// with awserr.Error's Code and Message methods to get detailed information about
980// the error.
981//
982// See the AWS API reference guide for Amazon DynamoDB's
983// API operation DeleteBackup for usage and error information.
984//
985// Returned Error Types:
986//   * BackupNotFoundException
987//   Backup not found for the given BackupARN.
988//
989//   * BackupInUseException
990//   There is another ongoing conflicting backup control plane operation on the
991//   table. The backup is either being created, deleted or restored to a table.
992//
993//   * LimitExceededException
994//   There is no limit to the number of daily on-demand backups that can be taken.
995//
996//   Up to 50 simultaneous table operations are allowed per account. These operations
997//   include CreateTable, UpdateTable, DeleteTable,UpdateTimeToLive, RestoreTableFromBackup,
998//   and RestoreTableToPointInTime.
999//
1000//   The only exception is when you are creating a table with one or more secondary
1001//   indexes. You can have up to 25 such requests running at a time; however,
1002//   if the table or index specifications are complex, DynamoDB might temporarily
1003//   reduce the number of concurrent operations.
1004//
1005//   There is a soft account limit of 256 tables.
1006//
1007//   * InternalServerError
1008//   An error occurred on the server side.
1009//
1010// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/DeleteBackup
1011func (c *DynamoDB) DeleteBackup(input *DeleteBackupInput) (*DeleteBackupOutput, error) {
1012	req, out := c.DeleteBackupRequest(input)
1013	return out, req.Send()
1014}
1015
1016// DeleteBackupWithContext is the same as DeleteBackup with the addition of
1017// the ability to pass a context and additional request options.
1018//
1019// See DeleteBackup for details on how to use this API operation.
1020//
1021// The context must be non-nil and will be used for request cancellation. If
1022// the context is nil a panic will occur. In the future the SDK may create
1023// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1024// for more information on using Contexts.
1025func (c *DynamoDB) DeleteBackupWithContext(ctx aws.Context, input *DeleteBackupInput, opts ...request.Option) (*DeleteBackupOutput, error) {
1026	req, out := c.DeleteBackupRequest(input)
1027	req.SetContext(ctx)
1028	req.ApplyOptions(opts...)
1029	return out, req.Send()
1030}
1031
1032const opDeleteItem = "DeleteItem"
1033
1034// DeleteItemRequest generates a "aws/request.Request" representing the
1035// client's request for the DeleteItem operation. The "output" return
1036// value will be populated with the request's response once the request completes
1037// successfully.
1038//
1039// Use "Send" method on the returned Request to send the API call to the service.
1040// the "output" return value is not valid until after Send returns without error.
1041//
1042// See DeleteItem for more information on using the DeleteItem
1043// API call, and error handling.
1044//
1045// This method is useful when you want to inject custom logic or configuration
1046// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1047//
1048//
1049//    // Example sending a request using the DeleteItemRequest method.
1050//    req, resp := client.DeleteItemRequest(params)
1051//
1052//    err := req.Send()
1053//    if err == nil { // resp is now filled
1054//        fmt.Println(resp)
1055//    }
1056//
1057// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/DeleteItem
1058func (c *DynamoDB) DeleteItemRequest(input *DeleteItemInput) (req *request.Request, output *DeleteItemOutput) {
1059	op := &request.Operation{
1060		Name:       opDeleteItem,
1061		HTTPMethod: "POST",
1062		HTTPPath:   "/",
1063	}
1064
1065	if input == nil {
1066		input = &DeleteItemInput{}
1067	}
1068
1069	output = &DeleteItemOutput{}
1070	req = c.newRequest(op, input, output)
1071	// if custom endpoint for the request is set to a non empty string,
1072	// we skip the endpoint discovery workflow.
1073	if req.Config.Endpoint == nil || *req.Config.Endpoint == "" {
1074		if aws.BoolValue(req.Config.EnableEndpointDiscovery) {
1075			de := discovererDescribeEndpoints{
1076				Required:      false,
1077				EndpointCache: c.endpointCache,
1078				Params: map[string]*string{
1079					"op": aws.String(req.Operation.Name),
1080				},
1081				Client: c,
1082			}
1083
1084			for k, v := range de.Params {
1085				if v == nil {
1086					delete(de.Params, k)
1087				}
1088			}
1089
1090			req.Handlers.Build.PushFrontNamed(request.NamedHandler{
1091				Name: "crr.endpointdiscovery",
1092				Fn:   de.Handler,
1093			})
1094		}
1095	}
1096	return
1097}
1098
1099// DeleteItem API operation for Amazon DynamoDB.
1100//
1101// Deletes a single item in a table by primary key. You can perform a conditional
1102// delete operation that deletes the item if it exists, or if it has an expected
1103// attribute value.
1104//
1105// In addition to deleting an item, you can also return the item's attribute
1106// values in the same operation, using the ReturnValues parameter.
1107//
1108// Unless you specify conditions, the DeleteItem is an idempotent operation;
1109// running it multiple times on the same item or attribute does not result in
1110// an error response.
1111//
1112// Conditional deletes are useful for deleting items only if specific conditions
1113// are met. If those conditions are met, DynamoDB performs the delete. Otherwise,
1114// the item is not deleted.
1115//
1116// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1117// with awserr.Error's Code and Message methods to get detailed information about
1118// the error.
1119//
1120// See the AWS API reference guide for Amazon DynamoDB's
1121// API operation DeleteItem for usage and error information.
1122//
1123// Returned Error Types:
1124//   * ConditionalCheckFailedException
1125//   A condition specified in the operation could not be evaluated.
1126//
1127//   * ProvisionedThroughputExceededException
1128//   Your request rate is too high. The AWS SDKs for DynamoDB automatically retry
1129//   requests that receive this exception. Your request is eventually successful,
1130//   unless your retry queue is too large to finish. Reduce the frequency of requests
1131//   and use exponential backoff. For more information, go to Error Retries and
1132//   Exponential Backoff (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Programming.Errors.html#Programming.Errors.RetryAndBackoff)
1133//   in the Amazon DynamoDB Developer Guide.
1134//
1135//   * ResourceNotFoundException
1136//   The operation tried to access a nonexistent table or index. The resource
1137//   might not be specified correctly, or its status might not be ACTIVE.
1138//
1139//   * ItemCollectionSizeLimitExceededException
1140//   An item collection is too large. This exception is only returned for tables
1141//   that have one or more local secondary indexes.
1142//
1143//   * TransactionConflictException
1144//   Operation was rejected because there is an ongoing transaction for the item.
1145//
1146//   * RequestLimitExceeded
1147//   Throughput exceeds the current throughput limit for your account. Please
1148//   contact AWS Support at AWS Support (https://aws.amazon.com/support) to request
1149//   a limit increase.
1150//
1151//   * InternalServerError
1152//   An error occurred on the server side.
1153//
1154// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/DeleteItem
1155func (c *DynamoDB) DeleteItem(input *DeleteItemInput) (*DeleteItemOutput, error) {
1156	req, out := c.DeleteItemRequest(input)
1157	return out, req.Send()
1158}
1159
1160// DeleteItemWithContext is the same as DeleteItem with the addition of
1161// the ability to pass a context and additional request options.
1162//
1163// See DeleteItem for details on how to use this API operation.
1164//
1165// The context must be non-nil and will be used for request cancellation. If
1166// the context is nil a panic will occur. In the future the SDK may create
1167// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1168// for more information on using Contexts.
1169func (c *DynamoDB) DeleteItemWithContext(ctx aws.Context, input *DeleteItemInput, opts ...request.Option) (*DeleteItemOutput, error) {
1170	req, out := c.DeleteItemRequest(input)
1171	req.SetContext(ctx)
1172	req.ApplyOptions(opts...)
1173	return out, req.Send()
1174}
1175
1176const opDeleteTable = "DeleteTable"
1177
1178// DeleteTableRequest generates a "aws/request.Request" representing the
1179// client's request for the DeleteTable operation. The "output" return
1180// value will be populated with the request's response once the request completes
1181// successfully.
1182//
1183// Use "Send" method on the returned Request to send the API call to the service.
1184// the "output" return value is not valid until after Send returns without error.
1185//
1186// See DeleteTable for more information on using the DeleteTable
1187// API call, and error handling.
1188//
1189// This method is useful when you want to inject custom logic or configuration
1190// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1191//
1192//
1193//    // Example sending a request using the DeleteTableRequest method.
1194//    req, resp := client.DeleteTableRequest(params)
1195//
1196//    err := req.Send()
1197//    if err == nil { // resp is now filled
1198//        fmt.Println(resp)
1199//    }
1200//
1201// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/DeleteTable
1202func (c *DynamoDB) DeleteTableRequest(input *DeleteTableInput) (req *request.Request, output *DeleteTableOutput) {
1203	op := &request.Operation{
1204		Name:       opDeleteTable,
1205		HTTPMethod: "POST",
1206		HTTPPath:   "/",
1207	}
1208
1209	if input == nil {
1210		input = &DeleteTableInput{}
1211	}
1212
1213	output = &DeleteTableOutput{}
1214	req = c.newRequest(op, input, output)
1215	// if custom endpoint for the request is set to a non empty string,
1216	// we skip the endpoint discovery workflow.
1217	if req.Config.Endpoint == nil || *req.Config.Endpoint == "" {
1218		if aws.BoolValue(req.Config.EnableEndpointDiscovery) {
1219			de := discovererDescribeEndpoints{
1220				Required:      false,
1221				EndpointCache: c.endpointCache,
1222				Params: map[string]*string{
1223					"op": aws.String(req.Operation.Name),
1224				},
1225				Client: c,
1226			}
1227
1228			for k, v := range de.Params {
1229				if v == nil {
1230					delete(de.Params, k)
1231				}
1232			}
1233
1234			req.Handlers.Build.PushFrontNamed(request.NamedHandler{
1235				Name: "crr.endpointdiscovery",
1236				Fn:   de.Handler,
1237			})
1238		}
1239	}
1240	return
1241}
1242
1243// DeleteTable API operation for Amazon DynamoDB.
1244//
1245// The DeleteTable operation deletes a table and all of its items. After a DeleteTable
1246// request, the specified table is in the DELETING state until DynamoDB completes
1247// the deletion. If the table is in the ACTIVE state, you can delete it. If
1248// a table is in CREATING or UPDATING states, then DynamoDB returns a ResourceInUseException.
1249// If the specified table does not exist, DynamoDB returns a ResourceNotFoundException.
1250// If table is already in the DELETING state, no error is returned.
1251//
1252// DynamoDB might continue to accept data read and write operations, such as
1253// GetItem and PutItem, on a table in the DELETING state until the table deletion
1254// is complete.
1255//
1256// When you delete a table, any indexes on that table are also deleted.
1257//
1258// If you have DynamoDB Streams enabled on the table, then the corresponding
1259// stream on that table goes into the DISABLED state, and the stream is automatically
1260// deleted after 24 hours.
1261//
1262// Use the DescribeTable action to check the status of the table.
1263//
1264// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1265// with awserr.Error's Code and Message methods to get detailed information about
1266// the error.
1267//
1268// See the AWS API reference guide for Amazon DynamoDB's
1269// API operation DeleteTable for usage and error information.
1270//
1271// Returned Error Types:
1272//   * ResourceInUseException
1273//   The operation conflicts with the resource's availability. For example, you
1274//   attempted to recreate an existing table, or tried to delete a table currently
1275//   in the CREATING state.
1276//
1277//   * ResourceNotFoundException
1278//   The operation tried to access a nonexistent table or index. The resource
1279//   might not be specified correctly, or its status might not be ACTIVE.
1280//
1281//   * LimitExceededException
1282//   There is no limit to the number of daily on-demand backups that can be taken.
1283//
1284//   Up to 50 simultaneous table operations are allowed per account. These operations
1285//   include CreateTable, UpdateTable, DeleteTable,UpdateTimeToLive, RestoreTableFromBackup,
1286//   and RestoreTableToPointInTime.
1287//
1288//   The only exception is when you are creating a table with one or more secondary
1289//   indexes. You can have up to 25 such requests running at a time; however,
1290//   if the table or index specifications are complex, DynamoDB might temporarily
1291//   reduce the number of concurrent operations.
1292//
1293//   There is a soft account limit of 256 tables.
1294//
1295//   * InternalServerError
1296//   An error occurred on the server side.
1297//
1298// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/DeleteTable
1299func (c *DynamoDB) DeleteTable(input *DeleteTableInput) (*DeleteTableOutput, error) {
1300	req, out := c.DeleteTableRequest(input)
1301	return out, req.Send()
1302}
1303
1304// DeleteTableWithContext is the same as DeleteTable with the addition of
1305// the ability to pass a context and additional request options.
1306//
1307// See DeleteTable for details on how to use this API operation.
1308//
1309// The context must be non-nil and will be used for request cancellation. If
1310// the context is nil a panic will occur. In the future the SDK may create
1311// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1312// for more information on using Contexts.
1313func (c *DynamoDB) DeleteTableWithContext(ctx aws.Context, input *DeleteTableInput, opts ...request.Option) (*DeleteTableOutput, error) {
1314	req, out := c.DeleteTableRequest(input)
1315	req.SetContext(ctx)
1316	req.ApplyOptions(opts...)
1317	return out, req.Send()
1318}
1319
1320const opDescribeBackup = "DescribeBackup"
1321
1322// DescribeBackupRequest generates a "aws/request.Request" representing the
1323// client's request for the DescribeBackup operation. The "output" return
1324// value will be populated with the request's response once the request completes
1325// successfully.
1326//
1327// Use "Send" method on the returned Request to send the API call to the service.
1328// the "output" return value is not valid until after Send returns without error.
1329//
1330// See DescribeBackup for more information on using the DescribeBackup
1331// API call, and error handling.
1332//
1333// This method is useful when you want to inject custom logic or configuration
1334// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1335//
1336//
1337//    // Example sending a request using the DescribeBackupRequest method.
1338//    req, resp := client.DescribeBackupRequest(params)
1339//
1340//    err := req.Send()
1341//    if err == nil { // resp is now filled
1342//        fmt.Println(resp)
1343//    }
1344//
1345// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/DescribeBackup
1346func (c *DynamoDB) DescribeBackupRequest(input *DescribeBackupInput) (req *request.Request, output *DescribeBackupOutput) {
1347	op := &request.Operation{
1348		Name:       opDescribeBackup,
1349		HTTPMethod: "POST",
1350		HTTPPath:   "/",
1351	}
1352
1353	if input == nil {
1354		input = &DescribeBackupInput{}
1355	}
1356
1357	output = &DescribeBackupOutput{}
1358	req = c.newRequest(op, input, output)
1359	// if custom endpoint for the request is set to a non empty string,
1360	// we skip the endpoint discovery workflow.
1361	if req.Config.Endpoint == nil || *req.Config.Endpoint == "" {
1362		if aws.BoolValue(req.Config.EnableEndpointDiscovery) {
1363			de := discovererDescribeEndpoints{
1364				Required:      false,
1365				EndpointCache: c.endpointCache,
1366				Params: map[string]*string{
1367					"op": aws.String(req.Operation.Name),
1368				},
1369				Client: c,
1370			}
1371
1372			for k, v := range de.Params {
1373				if v == nil {
1374					delete(de.Params, k)
1375				}
1376			}
1377
1378			req.Handlers.Build.PushFrontNamed(request.NamedHandler{
1379				Name: "crr.endpointdiscovery",
1380				Fn:   de.Handler,
1381			})
1382		}
1383	}
1384	return
1385}
1386
1387// DescribeBackup API operation for Amazon DynamoDB.
1388//
1389// Describes an existing backup of a table.
1390//
1391// You can call DescribeBackup at a maximum rate of 10 times per second.
1392//
1393// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1394// with awserr.Error's Code and Message methods to get detailed information about
1395// the error.
1396//
1397// See the AWS API reference guide for Amazon DynamoDB's
1398// API operation DescribeBackup for usage and error information.
1399//
1400// Returned Error Types:
1401//   * BackupNotFoundException
1402//   Backup not found for the given BackupARN.
1403//
1404//   * InternalServerError
1405//   An error occurred on the server side.
1406//
1407// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/DescribeBackup
1408func (c *DynamoDB) DescribeBackup(input *DescribeBackupInput) (*DescribeBackupOutput, error) {
1409	req, out := c.DescribeBackupRequest(input)
1410	return out, req.Send()
1411}
1412
1413// DescribeBackupWithContext is the same as DescribeBackup with the addition of
1414// the ability to pass a context and additional request options.
1415//
1416// See DescribeBackup for details on how to use this API operation.
1417//
1418// The context must be non-nil and will be used for request cancellation. If
1419// the context is nil a panic will occur. In the future the SDK may create
1420// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1421// for more information on using Contexts.
1422func (c *DynamoDB) DescribeBackupWithContext(ctx aws.Context, input *DescribeBackupInput, opts ...request.Option) (*DescribeBackupOutput, error) {
1423	req, out := c.DescribeBackupRequest(input)
1424	req.SetContext(ctx)
1425	req.ApplyOptions(opts...)
1426	return out, req.Send()
1427}
1428
1429const opDescribeContinuousBackups = "DescribeContinuousBackups"
1430
1431// DescribeContinuousBackupsRequest generates a "aws/request.Request" representing the
1432// client's request for the DescribeContinuousBackups operation. The "output" return
1433// value will be populated with the request's response once the request completes
1434// successfully.
1435//
1436// Use "Send" method on the returned Request to send the API call to the service.
1437// the "output" return value is not valid until after Send returns without error.
1438//
1439// See DescribeContinuousBackups for more information on using the DescribeContinuousBackups
1440// API call, and error handling.
1441//
1442// This method is useful when you want to inject custom logic or configuration
1443// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1444//
1445//
1446//    // Example sending a request using the DescribeContinuousBackupsRequest method.
1447//    req, resp := client.DescribeContinuousBackupsRequest(params)
1448//
1449//    err := req.Send()
1450//    if err == nil { // resp is now filled
1451//        fmt.Println(resp)
1452//    }
1453//
1454// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/DescribeContinuousBackups
1455func (c *DynamoDB) DescribeContinuousBackupsRequest(input *DescribeContinuousBackupsInput) (req *request.Request, output *DescribeContinuousBackupsOutput) {
1456	op := &request.Operation{
1457		Name:       opDescribeContinuousBackups,
1458		HTTPMethod: "POST",
1459		HTTPPath:   "/",
1460	}
1461
1462	if input == nil {
1463		input = &DescribeContinuousBackupsInput{}
1464	}
1465
1466	output = &DescribeContinuousBackupsOutput{}
1467	req = c.newRequest(op, input, output)
1468	// if custom endpoint for the request is set to a non empty string,
1469	// we skip the endpoint discovery workflow.
1470	if req.Config.Endpoint == nil || *req.Config.Endpoint == "" {
1471		if aws.BoolValue(req.Config.EnableEndpointDiscovery) {
1472			de := discovererDescribeEndpoints{
1473				Required:      false,
1474				EndpointCache: c.endpointCache,
1475				Params: map[string]*string{
1476					"op": aws.String(req.Operation.Name),
1477				},
1478				Client: c,
1479			}
1480
1481			for k, v := range de.Params {
1482				if v == nil {
1483					delete(de.Params, k)
1484				}
1485			}
1486
1487			req.Handlers.Build.PushFrontNamed(request.NamedHandler{
1488				Name: "crr.endpointdiscovery",
1489				Fn:   de.Handler,
1490			})
1491		}
1492	}
1493	return
1494}
1495
1496// DescribeContinuousBackups API operation for Amazon DynamoDB.
1497//
1498// Checks the status of continuous backups and point in time recovery on the
1499// specified table. Continuous backups are ENABLED on all tables at table creation.
1500// If point in time recovery is enabled, PointInTimeRecoveryStatus will be set
1501// to ENABLED.
1502//
1503// After continuous backups and point in time recovery are enabled, you can
1504// restore to any point in time within EarliestRestorableDateTime and LatestRestorableDateTime.
1505//
1506// LatestRestorableDateTime is typically 5 minutes before the current time.
1507// You can restore your table to any point in time during the last 35 days.
1508//
1509// You can call DescribeContinuousBackups at a maximum rate of 10 times per
1510// second.
1511//
1512// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1513// with awserr.Error's Code and Message methods to get detailed information about
1514// the error.
1515//
1516// See the AWS API reference guide for Amazon DynamoDB's
1517// API operation DescribeContinuousBackups for usage and error information.
1518//
1519// Returned Error Types:
1520//   * TableNotFoundException
1521//   A source table with the name TableName does not currently exist within the
1522//   subscriber's account.
1523//
1524//   * InternalServerError
1525//   An error occurred on the server side.
1526//
1527// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/DescribeContinuousBackups
1528func (c *DynamoDB) DescribeContinuousBackups(input *DescribeContinuousBackupsInput) (*DescribeContinuousBackupsOutput, error) {
1529	req, out := c.DescribeContinuousBackupsRequest(input)
1530	return out, req.Send()
1531}
1532
1533// DescribeContinuousBackupsWithContext is the same as DescribeContinuousBackups with the addition of
1534// the ability to pass a context and additional request options.
1535//
1536// See DescribeContinuousBackups for details on how to use this API operation.
1537//
1538// The context must be non-nil and will be used for request cancellation. If
1539// the context is nil a panic will occur. In the future the SDK may create
1540// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1541// for more information on using Contexts.
1542func (c *DynamoDB) DescribeContinuousBackupsWithContext(ctx aws.Context, input *DescribeContinuousBackupsInput, opts ...request.Option) (*DescribeContinuousBackupsOutput, error) {
1543	req, out := c.DescribeContinuousBackupsRequest(input)
1544	req.SetContext(ctx)
1545	req.ApplyOptions(opts...)
1546	return out, req.Send()
1547}
1548
1549const opDescribeContributorInsights = "DescribeContributorInsights"
1550
1551// DescribeContributorInsightsRequest generates a "aws/request.Request" representing the
1552// client's request for the DescribeContributorInsights operation. The "output" return
1553// value will be populated with the request's response once the request completes
1554// successfully.
1555//
1556// Use "Send" method on the returned Request to send the API call to the service.
1557// the "output" return value is not valid until after Send returns without error.
1558//
1559// See DescribeContributorInsights for more information on using the DescribeContributorInsights
1560// API call, and error handling.
1561//
1562// This method is useful when you want to inject custom logic or configuration
1563// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1564//
1565//
1566//    // Example sending a request using the DescribeContributorInsightsRequest method.
1567//    req, resp := client.DescribeContributorInsightsRequest(params)
1568//
1569//    err := req.Send()
1570//    if err == nil { // resp is now filled
1571//        fmt.Println(resp)
1572//    }
1573//
1574// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/DescribeContributorInsights
1575func (c *DynamoDB) DescribeContributorInsightsRequest(input *DescribeContributorInsightsInput) (req *request.Request, output *DescribeContributorInsightsOutput) {
1576	op := &request.Operation{
1577		Name:       opDescribeContributorInsights,
1578		HTTPMethod: "POST",
1579		HTTPPath:   "/",
1580	}
1581
1582	if input == nil {
1583		input = &DescribeContributorInsightsInput{}
1584	}
1585
1586	output = &DescribeContributorInsightsOutput{}
1587	req = c.newRequest(op, input, output)
1588	return
1589}
1590
1591// DescribeContributorInsights API operation for Amazon DynamoDB.
1592//
1593// Returns information about contributor insights, for a given table or global
1594// secondary index.
1595//
1596// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1597// with awserr.Error's Code and Message methods to get detailed information about
1598// the error.
1599//
1600// See the AWS API reference guide for Amazon DynamoDB's
1601// API operation DescribeContributorInsights for usage and error information.
1602//
1603// Returned Error Types:
1604//   * ResourceNotFoundException
1605//   The operation tried to access a nonexistent table or index. The resource
1606//   might not be specified correctly, or its status might not be ACTIVE.
1607//
1608//   * InternalServerError
1609//   An error occurred on the server side.
1610//
1611// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/DescribeContributorInsights
1612func (c *DynamoDB) DescribeContributorInsights(input *DescribeContributorInsightsInput) (*DescribeContributorInsightsOutput, error) {
1613	req, out := c.DescribeContributorInsightsRequest(input)
1614	return out, req.Send()
1615}
1616
1617// DescribeContributorInsightsWithContext is the same as DescribeContributorInsights with the addition of
1618// the ability to pass a context and additional request options.
1619//
1620// See DescribeContributorInsights for details on how to use this API operation.
1621//
1622// The context must be non-nil and will be used for request cancellation. If
1623// the context is nil a panic will occur. In the future the SDK may create
1624// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1625// for more information on using Contexts.
1626func (c *DynamoDB) DescribeContributorInsightsWithContext(ctx aws.Context, input *DescribeContributorInsightsInput, opts ...request.Option) (*DescribeContributorInsightsOutput, error) {
1627	req, out := c.DescribeContributorInsightsRequest(input)
1628	req.SetContext(ctx)
1629	req.ApplyOptions(opts...)
1630	return out, req.Send()
1631}
1632
1633const opDescribeEndpoints = "DescribeEndpoints"
1634
1635// DescribeEndpointsRequest generates a "aws/request.Request" representing the
1636// client's request for the DescribeEndpoints operation. The "output" return
1637// value will be populated with the request's response once the request completes
1638// successfully.
1639//
1640// Use "Send" method on the returned Request to send the API call to the service.
1641// the "output" return value is not valid until after Send returns without error.
1642//
1643// See DescribeEndpoints for more information on using the DescribeEndpoints
1644// API call, and error handling.
1645//
1646// This method is useful when you want to inject custom logic or configuration
1647// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1648//
1649//
1650//    // Example sending a request using the DescribeEndpointsRequest method.
1651//    req, resp := client.DescribeEndpointsRequest(params)
1652//
1653//    err := req.Send()
1654//    if err == nil { // resp is now filled
1655//        fmt.Println(resp)
1656//    }
1657//
1658// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/DescribeEndpoints
1659func (c *DynamoDB) DescribeEndpointsRequest(input *DescribeEndpointsInput) (req *request.Request, output *DescribeEndpointsOutput) {
1660	op := &request.Operation{
1661		Name:       opDescribeEndpoints,
1662		HTTPMethod: "POST",
1663		HTTPPath:   "/",
1664	}
1665
1666	if input == nil {
1667		input = &DescribeEndpointsInput{}
1668	}
1669
1670	output = &DescribeEndpointsOutput{}
1671	req = c.newRequest(op, input, output)
1672	return
1673}
1674
1675// DescribeEndpoints API operation for Amazon DynamoDB.
1676//
1677// Returns the regional endpoint information.
1678//
1679// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1680// with awserr.Error's Code and Message methods to get detailed information about
1681// the error.
1682//
1683// See the AWS API reference guide for Amazon DynamoDB's
1684// API operation DescribeEndpoints for usage and error information.
1685// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/DescribeEndpoints
1686func (c *DynamoDB) DescribeEndpoints(input *DescribeEndpointsInput) (*DescribeEndpointsOutput, error) {
1687	req, out := c.DescribeEndpointsRequest(input)
1688	return out, req.Send()
1689}
1690
1691// DescribeEndpointsWithContext is the same as DescribeEndpoints with the addition of
1692// the ability to pass a context and additional request options.
1693//
1694// See DescribeEndpoints for details on how to use this API operation.
1695//
1696// The context must be non-nil and will be used for request cancellation. If
1697// the context is nil a panic will occur. In the future the SDK may create
1698// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1699// for more information on using Contexts.
1700func (c *DynamoDB) DescribeEndpointsWithContext(ctx aws.Context, input *DescribeEndpointsInput, opts ...request.Option) (*DescribeEndpointsOutput, error) {
1701	req, out := c.DescribeEndpointsRequest(input)
1702	req.SetContext(ctx)
1703	req.ApplyOptions(opts...)
1704	return out, req.Send()
1705}
1706
1707type discovererDescribeEndpoints struct {
1708	Client        *DynamoDB
1709	Required      bool
1710	EndpointCache *crr.EndpointCache
1711	Params        map[string]*string
1712	Key           string
1713	req           *request.Request
1714}
1715
1716func (d *discovererDescribeEndpoints) Discover() (crr.Endpoint, error) {
1717	input := &DescribeEndpointsInput{}
1718
1719	resp, err := d.Client.DescribeEndpoints(input)
1720	if err != nil {
1721		return crr.Endpoint{}, err
1722	}
1723
1724	endpoint := crr.Endpoint{
1725		Key: d.Key,
1726	}
1727
1728	for _, e := range resp.Endpoints {
1729		if e.Address == nil {
1730			continue
1731		}
1732
1733		address := *e.Address
1734
1735		var scheme string
1736		if idx := strings.Index(address, "://"); idx != -1 {
1737			scheme = address[:idx]
1738		}
1739
1740		if len(scheme) == 0 {
1741			address = fmt.Sprintf("%s://%s", d.req.HTTPRequest.URL.Scheme, address)
1742		}
1743
1744		cachedInMinutes := aws.Int64Value(e.CachePeriodInMinutes)
1745		u, err := url.Parse(address)
1746		if err != nil {
1747			continue
1748		}
1749
1750		addr := crr.WeightedAddress{
1751			URL:     u,
1752			Expired: time.Now().Add(time.Duration(cachedInMinutes) * time.Minute),
1753		}
1754
1755		endpoint.Add(addr)
1756	}
1757
1758	d.EndpointCache.Add(endpoint)
1759
1760	return endpoint, nil
1761}
1762
1763func (d *discovererDescribeEndpoints) Handler(r *request.Request) {
1764	endpointKey := crr.BuildEndpointKey(d.Params)
1765	d.Key = endpointKey
1766	d.req = r
1767
1768	endpoint, err := d.EndpointCache.Get(d, endpointKey, d.Required)
1769	if err != nil {
1770		r.Error = err
1771		return
1772	}
1773
1774	if endpoint.URL != nil && len(endpoint.URL.String()) > 0 {
1775		r.HTTPRequest.URL = endpoint.URL
1776	}
1777}
1778
1779const opDescribeGlobalTable = "DescribeGlobalTable"
1780
1781// DescribeGlobalTableRequest generates a "aws/request.Request" representing the
1782// client's request for the DescribeGlobalTable operation. The "output" return
1783// value will be populated with the request's response once the request completes
1784// successfully.
1785//
1786// Use "Send" method on the returned Request to send the API call to the service.
1787// the "output" return value is not valid until after Send returns without error.
1788//
1789// See DescribeGlobalTable for more information on using the DescribeGlobalTable
1790// API call, and error handling.
1791//
1792// This method is useful when you want to inject custom logic or configuration
1793// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1794//
1795//
1796//    // Example sending a request using the DescribeGlobalTableRequest method.
1797//    req, resp := client.DescribeGlobalTableRequest(params)
1798//
1799//    err := req.Send()
1800//    if err == nil { // resp is now filled
1801//        fmt.Println(resp)
1802//    }
1803//
1804// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/DescribeGlobalTable
1805func (c *DynamoDB) DescribeGlobalTableRequest(input *DescribeGlobalTableInput) (req *request.Request, output *DescribeGlobalTableOutput) {
1806	op := &request.Operation{
1807		Name:       opDescribeGlobalTable,
1808		HTTPMethod: "POST",
1809		HTTPPath:   "/",
1810	}
1811
1812	if input == nil {
1813		input = &DescribeGlobalTableInput{}
1814	}
1815
1816	output = &DescribeGlobalTableOutput{}
1817	req = c.newRequest(op, input, output)
1818	// if custom endpoint for the request is set to a non empty string,
1819	// we skip the endpoint discovery workflow.
1820	if req.Config.Endpoint == nil || *req.Config.Endpoint == "" {
1821		if aws.BoolValue(req.Config.EnableEndpointDiscovery) {
1822			de := discovererDescribeEndpoints{
1823				Required:      false,
1824				EndpointCache: c.endpointCache,
1825				Params: map[string]*string{
1826					"op": aws.String(req.Operation.Name),
1827				},
1828				Client: c,
1829			}
1830
1831			for k, v := range de.Params {
1832				if v == nil {
1833					delete(de.Params, k)
1834				}
1835			}
1836
1837			req.Handlers.Build.PushFrontNamed(request.NamedHandler{
1838				Name: "crr.endpointdiscovery",
1839				Fn:   de.Handler,
1840			})
1841		}
1842	}
1843	return
1844}
1845
1846// DescribeGlobalTable API operation for Amazon DynamoDB.
1847//
1848// Returns information about the specified global table.
1849//
1850// This operation only applies to Version 2017.11.29 (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/globaltables.V1.html)
1851// of global tables. If you are using global tables Version 2019.11.21 (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/globaltables.V2.html)
1852// you can use DescribeTable (https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_DescribeTable.html)
1853// instead.
1854//
1855// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1856// with awserr.Error's Code and Message methods to get detailed information about
1857// the error.
1858//
1859// See the AWS API reference guide for Amazon DynamoDB's
1860// API operation DescribeGlobalTable for usage and error information.
1861//
1862// Returned Error Types:
1863//   * InternalServerError
1864//   An error occurred on the server side.
1865//
1866//   * GlobalTableNotFoundException
1867//   The specified global table does not exist.
1868//
1869// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/DescribeGlobalTable
1870func (c *DynamoDB) DescribeGlobalTable(input *DescribeGlobalTableInput) (*DescribeGlobalTableOutput, error) {
1871	req, out := c.DescribeGlobalTableRequest(input)
1872	return out, req.Send()
1873}
1874
1875// DescribeGlobalTableWithContext is the same as DescribeGlobalTable with the addition of
1876// the ability to pass a context and additional request options.
1877//
1878// See DescribeGlobalTable for details on how to use this API operation.
1879//
1880// The context must be non-nil and will be used for request cancellation. If
1881// the context is nil a panic will occur. In the future the SDK may create
1882// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1883// for more information on using Contexts.
1884func (c *DynamoDB) DescribeGlobalTableWithContext(ctx aws.Context, input *DescribeGlobalTableInput, opts ...request.Option) (*DescribeGlobalTableOutput, error) {
1885	req, out := c.DescribeGlobalTableRequest(input)
1886	req.SetContext(ctx)
1887	req.ApplyOptions(opts...)
1888	return out, req.Send()
1889}
1890
1891const opDescribeGlobalTableSettings = "DescribeGlobalTableSettings"
1892
1893// DescribeGlobalTableSettingsRequest generates a "aws/request.Request" representing the
1894// client's request for the DescribeGlobalTableSettings operation. The "output" return
1895// value will be populated with the request's response once the request completes
1896// successfully.
1897//
1898// Use "Send" method on the returned Request to send the API call to the service.
1899// the "output" return value is not valid until after Send returns without error.
1900//
1901// See DescribeGlobalTableSettings for more information on using the DescribeGlobalTableSettings
1902// API call, and error handling.
1903//
1904// This method is useful when you want to inject custom logic or configuration
1905// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1906//
1907//
1908//    // Example sending a request using the DescribeGlobalTableSettingsRequest method.
1909//    req, resp := client.DescribeGlobalTableSettingsRequest(params)
1910//
1911//    err := req.Send()
1912//    if err == nil { // resp is now filled
1913//        fmt.Println(resp)
1914//    }
1915//
1916// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/DescribeGlobalTableSettings
1917func (c *DynamoDB) DescribeGlobalTableSettingsRequest(input *DescribeGlobalTableSettingsInput) (req *request.Request, output *DescribeGlobalTableSettingsOutput) {
1918	op := &request.Operation{
1919		Name:       opDescribeGlobalTableSettings,
1920		HTTPMethod: "POST",
1921		HTTPPath:   "/",
1922	}
1923
1924	if input == nil {
1925		input = &DescribeGlobalTableSettingsInput{}
1926	}
1927
1928	output = &DescribeGlobalTableSettingsOutput{}
1929	req = c.newRequest(op, input, output)
1930	// if custom endpoint for the request is set to a non empty string,
1931	// we skip the endpoint discovery workflow.
1932	if req.Config.Endpoint == nil || *req.Config.Endpoint == "" {
1933		if aws.BoolValue(req.Config.EnableEndpointDiscovery) {
1934			de := discovererDescribeEndpoints{
1935				Required:      false,
1936				EndpointCache: c.endpointCache,
1937				Params: map[string]*string{
1938					"op": aws.String(req.Operation.Name),
1939				},
1940				Client: c,
1941			}
1942
1943			for k, v := range de.Params {
1944				if v == nil {
1945					delete(de.Params, k)
1946				}
1947			}
1948
1949			req.Handlers.Build.PushFrontNamed(request.NamedHandler{
1950				Name: "crr.endpointdiscovery",
1951				Fn:   de.Handler,
1952			})
1953		}
1954	}
1955	return
1956}
1957
1958// DescribeGlobalTableSettings API operation for Amazon DynamoDB.
1959//
1960// Describes Region-specific settings for a global table.
1961//
1962// This operation only applies to Version 2017.11.29 (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/globaltables.V1.html)
1963// of global tables.
1964//
1965// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1966// with awserr.Error's Code and Message methods to get detailed information about
1967// the error.
1968//
1969// See the AWS API reference guide for Amazon DynamoDB's
1970// API operation DescribeGlobalTableSettings for usage and error information.
1971//
1972// Returned Error Types:
1973//   * GlobalTableNotFoundException
1974//   The specified global table does not exist.
1975//
1976//   * InternalServerError
1977//   An error occurred on the server side.
1978//
1979// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/DescribeGlobalTableSettings
1980func (c *DynamoDB) DescribeGlobalTableSettings(input *DescribeGlobalTableSettingsInput) (*DescribeGlobalTableSettingsOutput, error) {
1981	req, out := c.DescribeGlobalTableSettingsRequest(input)
1982	return out, req.Send()
1983}
1984
1985// DescribeGlobalTableSettingsWithContext is the same as DescribeGlobalTableSettings with the addition of
1986// the ability to pass a context and additional request options.
1987//
1988// See DescribeGlobalTableSettings for details on how to use this API operation.
1989//
1990// The context must be non-nil and will be used for request cancellation. If
1991// the context is nil a panic will occur. In the future the SDK may create
1992// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1993// for more information on using Contexts.
1994func (c *DynamoDB) DescribeGlobalTableSettingsWithContext(ctx aws.Context, input *DescribeGlobalTableSettingsInput, opts ...request.Option) (*DescribeGlobalTableSettingsOutput, error) {
1995	req, out := c.DescribeGlobalTableSettingsRequest(input)
1996	req.SetContext(ctx)
1997	req.ApplyOptions(opts...)
1998	return out, req.Send()
1999}
2000
2001const opDescribeLimits = "DescribeLimits"
2002
2003// DescribeLimitsRequest generates a "aws/request.Request" representing the
2004// client's request for the DescribeLimits operation. The "output" return
2005// value will be populated with the request's response once the request completes
2006// successfully.
2007//
2008// Use "Send" method on the returned Request to send the API call to the service.
2009// the "output" return value is not valid until after Send returns without error.
2010//
2011// See DescribeLimits for more information on using the DescribeLimits
2012// API call, and error handling.
2013//
2014// This method is useful when you want to inject custom logic or configuration
2015// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2016//
2017//
2018//    // Example sending a request using the DescribeLimitsRequest method.
2019//    req, resp := client.DescribeLimitsRequest(params)
2020//
2021//    err := req.Send()
2022//    if err == nil { // resp is now filled
2023//        fmt.Println(resp)
2024//    }
2025//
2026// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/DescribeLimits
2027func (c *DynamoDB) DescribeLimitsRequest(input *DescribeLimitsInput) (req *request.Request, output *DescribeLimitsOutput) {
2028	op := &request.Operation{
2029		Name:       opDescribeLimits,
2030		HTTPMethod: "POST",
2031		HTTPPath:   "/",
2032	}
2033
2034	if input == nil {
2035		input = &DescribeLimitsInput{}
2036	}
2037
2038	output = &DescribeLimitsOutput{}
2039	req = c.newRequest(op, input, output)
2040	// if custom endpoint for the request is set to a non empty string,
2041	// we skip the endpoint discovery workflow.
2042	if req.Config.Endpoint == nil || *req.Config.Endpoint == "" {
2043		if aws.BoolValue(req.Config.EnableEndpointDiscovery) {
2044			de := discovererDescribeEndpoints{
2045				Required:      false,
2046				EndpointCache: c.endpointCache,
2047				Params: map[string]*string{
2048					"op": aws.String(req.Operation.Name),
2049				},
2050				Client: c,
2051			}
2052
2053			for k, v := range de.Params {
2054				if v == nil {
2055					delete(de.Params, k)
2056				}
2057			}
2058
2059			req.Handlers.Build.PushFrontNamed(request.NamedHandler{
2060				Name: "crr.endpointdiscovery",
2061				Fn:   de.Handler,
2062			})
2063		}
2064	}
2065	return
2066}
2067
2068// DescribeLimits API operation for Amazon DynamoDB.
2069//
2070// Returns the current provisioned-capacity limits for your AWS account in a
2071// Region, both for the Region as a whole and for any one DynamoDB table that
2072// you create there.
2073//
2074// When you establish an AWS account, the account has initial limits on the
2075// maximum read capacity units and write capacity units that you can provision
2076// across all of your DynamoDB tables in a given Region. Also, there are per-table
2077// limits that apply when you create a table there. For more information, see
2078// Limits (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Limits.html)
2079// page in the Amazon DynamoDB Developer Guide.
2080//
2081// Although you can increase these limits by filing a case at AWS Support Center
2082// (https://console.aws.amazon.com/support/home#/), obtaining the increase is
2083// not instantaneous. The DescribeLimits action lets you write code to compare
2084// the capacity you are currently using to those limits imposed by your account
2085// so that you have enough time to apply for an increase before you hit a limit.
2086//
2087// For example, you could use one of the AWS SDKs to do the following:
2088//
2089// Call DescribeLimits for a particular Region to obtain your current account
2090// limits on provisioned capacity there.
2091//
2092// Create a variable to hold the aggregate read capacity units provisioned for
2093// all your tables in that Region, and one to hold the aggregate write capacity
2094// units. Zero them both.
2095//
2096// Call ListTables to obtain a list of all your DynamoDB tables.
2097//
2098// For each table name listed by ListTables, do the following:
2099//
2100//    * Call DescribeTable with the table name.
2101//
2102//    * Use the data returned by DescribeTable to add the read capacity units
2103//    and write capacity units provisioned for the table itself to your variables.
2104//
2105//    * If the table has one or more global secondary indexes (GSIs), loop over
2106//    these GSIs and add their provisioned capacity values to your variables
2107//    as well.
2108//
2109// Report the account limits for that Region returned by DescribeLimits, along
2110// with the total current provisioned capacity levels you have calculated.
2111//
2112// This will let you see whether you are getting close to your account-level
2113// limits.
2114//
2115// The per-table limits apply only when you are creating a new table. They restrict
2116// the sum of the provisioned capacity of the new table itself and all its global
2117// secondary indexes.
2118//
2119// For existing tables and their GSIs, DynamoDB doesn't let you increase provisioned
2120// capacity extremely rapidly. But the only upper limit that applies is that
2121// the aggregate provisioned capacity over all your tables and GSIs cannot exceed
2122// either of the per-account limits.
2123//
2124// DescribeLimits should only be called periodically. You can expect throttling
2125// errors if you call it more than once in a minute.
2126//
2127// The DescribeLimits Request element has no content.
2128//
2129// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2130// with awserr.Error's Code and Message methods to get detailed information about
2131// the error.
2132//
2133// See the AWS API reference guide for Amazon DynamoDB's
2134// API operation DescribeLimits for usage and error information.
2135//
2136// Returned Error Types:
2137//   * InternalServerError
2138//   An error occurred on the server side.
2139//
2140// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/DescribeLimits
2141func (c *DynamoDB) DescribeLimits(input *DescribeLimitsInput) (*DescribeLimitsOutput, error) {
2142	req, out := c.DescribeLimitsRequest(input)
2143	return out, req.Send()
2144}
2145
2146// DescribeLimitsWithContext is the same as DescribeLimits with the addition of
2147// the ability to pass a context and additional request options.
2148//
2149// See DescribeLimits for details on how to use this API operation.
2150//
2151// The context must be non-nil and will be used for request cancellation. If
2152// the context is nil a panic will occur. In the future the SDK may create
2153// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2154// for more information on using Contexts.
2155func (c *DynamoDB) DescribeLimitsWithContext(ctx aws.Context, input *DescribeLimitsInput, opts ...request.Option) (*DescribeLimitsOutput, error) {
2156	req, out := c.DescribeLimitsRequest(input)
2157	req.SetContext(ctx)
2158	req.ApplyOptions(opts...)
2159	return out, req.Send()
2160}
2161
2162const opDescribeTable = "DescribeTable"
2163
2164// DescribeTableRequest generates a "aws/request.Request" representing the
2165// client's request for the DescribeTable operation. The "output" return
2166// value will be populated with the request's response once the request completes
2167// successfully.
2168//
2169// Use "Send" method on the returned Request to send the API call to the service.
2170// the "output" return value is not valid until after Send returns without error.
2171//
2172// See DescribeTable for more information on using the DescribeTable
2173// API call, and error handling.
2174//
2175// This method is useful when you want to inject custom logic or configuration
2176// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2177//
2178//
2179//    // Example sending a request using the DescribeTableRequest method.
2180//    req, resp := client.DescribeTableRequest(params)
2181//
2182//    err := req.Send()
2183//    if err == nil { // resp is now filled
2184//        fmt.Println(resp)
2185//    }
2186//
2187// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/DescribeTable
2188func (c *DynamoDB) DescribeTableRequest(input *DescribeTableInput) (req *request.Request, output *DescribeTableOutput) {
2189	op := &request.Operation{
2190		Name:       opDescribeTable,
2191		HTTPMethod: "POST",
2192		HTTPPath:   "/",
2193	}
2194
2195	if input == nil {
2196		input = &DescribeTableInput{}
2197	}
2198
2199	output = &DescribeTableOutput{}
2200	req = c.newRequest(op, input, output)
2201	// if custom endpoint for the request is set to a non empty string,
2202	// we skip the endpoint discovery workflow.
2203	if req.Config.Endpoint == nil || *req.Config.Endpoint == "" {
2204		if aws.BoolValue(req.Config.EnableEndpointDiscovery) {
2205			de := discovererDescribeEndpoints{
2206				Required:      false,
2207				EndpointCache: c.endpointCache,
2208				Params: map[string]*string{
2209					"op": aws.String(req.Operation.Name),
2210				},
2211				Client: c,
2212			}
2213
2214			for k, v := range de.Params {
2215				if v == nil {
2216					delete(de.Params, k)
2217				}
2218			}
2219
2220			req.Handlers.Build.PushFrontNamed(request.NamedHandler{
2221				Name: "crr.endpointdiscovery",
2222				Fn:   de.Handler,
2223			})
2224		}
2225	}
2226	return
2227}
2228
2229// DescribeTable API operation for Amazon DynamoDB.
2230//
2231// Returns information about the table, including the current status of the
2232// table, when it was created, the primary key schema, and any indexes on the
2233// table.
2234//
2235// If you issue a DescribeTable request immediately after a CreateTable request,
2236// DynamoDB might return a ResourceNotFoundException. This is because DescribeTable
2237// uses an eventually consistent query, and the metadata for your table might
2238// not be available at that moment. Wait for a few seconds, and then try the
2239// DescribeTable request again.
2240//
2241// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2242// with awserr.Error's Code and Message methods to get detailed information about
2243// the error.
2244//
2245// See the AWS API reference guide for Amazon DynamoDB's
2246// API operation DescribeTable for usage and error information.
2247//
2248// Returned Error Types:
2249//   * ResourceNotFoundException
2250//   The operation tried to access a nonexistent table or index. The resource
2251//   might not be specified correctly, or its status might not be ACTIVE.
2252//
2253//   * InternalServerError
2254//   An error occurred on the server side.
2255//
2256// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/DescribeTable
2257func (c *DynamoDB) DescribeTable(input *DescribeTableInput) (*DescribeTableOutput, error) {
2258	req, out := c.DescribeTableRequest(input)
2259	return out, req.Send()
2260}
2261
2262// DescribeTableWithContext is the same as DescribeTable with the addition of
2263// the ability to pass a context and additional request options.
2264//
2265// See DescribeTable for details on how to use this API operation.
2266//
2267// The context must be non-nil and will be used for request cancellation. If
2268// the context is nil a panic will occur. In the future the SDK may create
2269// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2270// for more information on using Contexts.
2271func (c *DynamoDB) DescribeTableWithContext(ctx aws.Context, input *DescribeTableInput, opts ...request.Option) (*DescribeTableOutput, error) {
2272	req, out := c.DescribeTableRequest(input)
2273	req.SetContext(ctx)
2274	req.ApplyOptions(opts...)
2275	return out, req.Send()
2276}
2277
2278const opDescribeTableReplicaAutoScaling = "DescribeTableReplicaAutoScaling"
2279
2280// DescribeTableReplicaAutoScalingRequest generates a "aws/request.Request" representing the
2281// client's request for the DescribeTableReplicaAutoScaling operation. The "output" return
2282// value will be populated with the request's response once the request completes
2283// successfully.
2284//
2285// Use "Send" method on the returned Request to send the API call to the service.
2286// the "output" return value is not valid until after Send returns without error.
2287//
2288// See DescribeTableReplicaAutoScaling for more information on using the DescribeTableReplicaAutoScaling
2289// API call, and error handling.
2290//
2291// This method is useful when you want to inject custom logic or configuration
2292// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2293//
2294//
2295//    // Example sending a request using the DescribeTableReplicaAutoScalingRequest method.
2296//    req, resp := client.DescribeTableReplicaAutoScalingRequest(params)
2297//
2298//    err := req.Send()
2299//    if err == nil { // resp is now filled
2300//        fmt.Println(resp)
2301//    }
2302//
2303// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/DescribeTableReplicaAutoScaling
2304func (c *DynamoDB) DescribeTableReplicaAutoScalingRequest(input *DescribeTableReplicaAutoScalingInput) (req *request.Request, output *DescribeTableReplicaAutoScalingOutput) {
2305	op := &request.Operation{
2306		Name:       opDescribeTableReplicaAutoScaling,
2307		HTTPMethod: "POST",
2308		HTTPPath:   "/",
2309	}
2310
2311	if input == nil {
2312		input = &DescribeTableReplicaAutoScalingInput{}
2313	}
2314
2315	output = &DescribeTableReplicaAutoScalingOutput{}
2316	req = c.newRequest(op, input, output)
2317	return
2318}
2319
2320// DescribeTableReplicaAutoScaling API operation for Amazon DynamoDB.
2321//
2322// Describes auto scaling settings across replicas of the global table at once.
2323//
2324// This operation only applies to Version 2019.11.21 (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/globaltables.V2.html)
2325// of global tables.
2326//
2327// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2328// with awserr.Error's Code and Message methods to get detailed information about
2329// the error.
2330//
2331// See the AWS API reference guide for Amazon DynamoDB's
2332// API operation DescribeTableReplicaAutoScaling for usage and error information.
2333//
2334// Returned Error Types:
2335//   * ResourceNotFoundException
2336//   The operation tried to access a nonexistent table or index. The resource
2337//   might not be specified correctly, or its status might not be ACTIVE.
2338//
2339//   * InternalServerError
2340//   An error occurred on the server side.
2341//
2342// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/DescribeTableReplicaAutoScaling
2343func (c *DynamoDB) DescribeTableReplicaAutoScaling(input *DescribeTableReplicaAutoScalingInput) (*DescribeTableReplicaAutoScalingOutput, error) {
2344	req, out := c.DescribeTableReplicaAutoScalingRequest(input)
2345	return out, req.Send()
2346}
2347
2348// DescribeTableReplicaAutoScalingWithContext is the same as DescribeTableReplicaAutoScaling with the addition of
2349// the ability to pass a context and additional request options.
2350//
2351// See DescribeTableReplicaAutoScaling for details on how to use this API operation.
2352//
2353// The context must be non-nil and will be used for request cancellation. If
2354// the context is nil a panic will occur. In the future the SDK may create
2355// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2356// for more information on using Contexts.
2357func (c *DynamoDB) DescribeTableReplicaAutoScalingWithContext(ctx aws.Context, input *DescribeTableReplicaAutoScalingInput, opts ...request.Option) (*DescribeTableReplicaAutoScalingOutput, error) {
2358	req, out := c.DescribeTableReplicaAutoScalingRequest(input)
2359	req.SetContext(ctx)
2360	req.ApplyOptions(opts...)
2361	return out, req.Send()
2362}
2363
2364const opDescribeTimeToLive = "DescribeTimeToLive"
2365
2366// DescribeTimeToLiveRequest generates a "aws/request.Request" representing the
2367// client's request for the DescribeTimeToLive operation. The "output" return
2368// value will be populated with the request's response once the request completes
2369// successfully.
2370//
2371// Use "Send" method on the returned Request to send the API call to the service.
2372// the "output" return value is not valid until after Send returns without error.
2373//
2374// See DescribeTimeToLive for more information on using the DescribeTimeToLive
2375// API call, and error handling.
2376//
2377// This method is useful when you want to inject custom logic or configuration
2378// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2379//
2380//
2381//    // Example sending a request using the DescribeTimeToLiveRequest method.
2382//    req, resp := client.DescribeTimeToLiveRequest(params)
2383//
2384//    err := req.Send()
2385//    if err == nil { // resp is now filled
2386//        fmt.Println(resp)
2387//    }
2388//
2389// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/DescribeTimeToLive
2390func (c *DynamoDB) DescribeTimeToLiveRequest(input *DescribeTimeToLiveInput) (req *request.Request, output *DescribeTimeToLiveOutput) {
2391	op := &request.Operation{
2392		Name:       opDescribeTimeToLive,
2393		HTTPMethod: "POST",
2394		HTTPPath:   "/",
2395	}
2396
2397	if input == nil {
2398		input = &DescribeTimeToLiveInput{}
2399	}
2400
2401	output = &DescribeTimeToLiveOutput{}
2402	req = c.newRequest(op, input, output)
2403	// if custom endpoint for the request is set to a non empty string,
2404	// we skip the endpoint discovery workflow.
2405	if req.Config.Endpoint == nil || *req.Config.Endpoint == "" {
2406		if aws.BoolValue(req.Config.EnableEndpointDiscovery) {
2407			de := discovererDescribeEndpoints{
2408				Required:      false,
2409				EndpointCache: c.endpointCache,
2410				Params: map[string]*string{
2411					"op": aws.String(req.Operation.Name),
2412				},
2413				Client: c,
2414			}
2415
2416			for k, v := range de.Params {
2417				if v == nil {
2418					delete(de.Params, k)
2419				}
2420			}
2421
2422			req.Handlers.Build.PushFrontNamed(request.NamedHandler{
2423				Name: "crr.endpointdiscovery",
2424				Fn:   de.Handler,
2425			})
2426		}
2427	}
2428	return
2429}
2430
2431// DescribeTimeToLive API operation for Amazon DynamoDB.
2432//
2433// Gives a description of the Time to Live (TTL) status on the specified table.
2434//
2435// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2436// with awserr.Error's Code and Message methods to get detailed information about
2437// the error.
2438//
2439// See the AWS API reference guide for Amazon DynamoDB's
2440// API operation DescribeTimeToLive for usage and error information.
2441//
2442// Returned Error Types:
2443//   * ResourceNotFoundException
2444//   The operation tried to access a nonexistent table or index. The resource
2445//   might not be specified correctly, or its status might not be ACTIVE.
2446//
2447//   * InternalServerError
2448//   An error occurred on the server side.
2449//
2450// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/DescribeTimeToLive
2451func (c *DynamoDB) DescribeTimeToLive(input *DescribeTimeToLiveInput) (*DescribeTimeToLiveOutput, error) {
2452	req, out := c.DescribeTimeToLiveRequest(input)
2453	return out, req.Send()
2454}
2455
2456// DescribeTimeToLiveWithContext is the same as DescribeTimeToLive with the addition of
2457// the ability to pass a context and additional request options.
2458//
2459// See DescribeTimeToLive for details on how to use this API operation.
2460//
2461// The context must be non-nil and will be used for request cancellation. If
2462// the context is nil a panic will occur. In the future the SDK may create
2463// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2464// for more information on using Contexts.
2465func (c *DynamoDB) DescribeTimeToLiveWithContext(ctx aws.Context, input *DescribeTimeToLiveInput, opts ...request.Option) (*DescribeTimeToLiveOutput, error) {
2466	req, out := c.DescribeTimeToLiveRequest(input)
2467	req.SetContext(ctx)
2468	req.ApplyOptions(opts...)
2469	return out, req.Send()
2470}
2471
2472const opGetItem = "GetItem"
2473
2474// GetItemRequest generates a "aws/request.Request" representing the
2475// client's request for the GetItem operation. The "output" return
2476// value will be populated with the request's response once the request completes
2477// successfully.
2478//
2479// Use "Send" method on the returned Request to send the API call to the service.
2480// the "output" return value is not valid until after Send returns without error.
2481//
2482// See GetItem for more information on using the GetItem
2483// API call, and error handling.
2484//
2485// This method is useful when you want to inject custom logic or configuration
2486// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2487//
2488//
2489//    // Example sending a request using the GetItemRequest method.
2490//    req, resp := client.GetItemRequest(params)
2491//
2492//    err := req.Send()
2493//    if err == nil { // resp is now filled
2494//        fmt.Println(resp)
2495//    }
2496//
2497// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/GetItem
2498func (c *DynamoDB) GetItemRequest(input *GetItemInput) (req *request.Request, output *GetItemOutput) {
2499	op := &request.Operation{
2500		Name:       opGetItem,
2501		HTTPMethod: "POST",
2502		HTTPPath:   "/",
2503	}
2504
2505	if input == nil {
2506		input = &GetItemInput{}
2507	}
2508
2509	output = &GetItemOutput{}
2510	req = c.newRequest(op, input, output)
2511	// if custom endpoint for the request is set to a non empty string,
2512	// we skip the endpoint discovery workflow.
2513	if req.Config.Endpoint == nil || *req.Config.Endpoint == "" {
2514		if aws.BoolValue(req.Config.EnableEndpointDiscovery) {
2515			de := discovererDescribeEndpoints{
2516				Required:      false,
2517				EndpointCache: c.endpointCache,
2518				Params: map[string]*string{
2519					"op": aws.String(req.Operation.Name),
2520				},
2521				Client: c,
2522			}
2523
2524			for k, v := range de.Params {
2525				if v == nil {
2526					delete(de.Params, k)
2527				}
2528			}
2529
2530			req.Handlers.Build.PushFrontNamed(request.NamedHandler{
2531				Name: "crr.endpointdiscovery",
2532				Fn:   de.Handler,
2533			})
2534		}
2535	}
2536	return
2537}
2538
2539// GetItem API operation for Amazon DynamoDB.
2540//
2541// The GetItem operation returns a set of attributes for the item with the given
2542// primary key. If there is no matching item, GetItem does not return any data
2543// and there will be no Item element in the response.
2544//
2545// GetItem provides an eventually consistent read by default. If your application
2546// requires a strongly consistent read, set ConsistentRead to true. Although
2547// a strongly consistent read might take more time than an eventually consistent
2548// read, it always returns the last updated value.
2549//
2550// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2551// with awserr.Error's Code and Message methods to get detailed information about
2552// the error.
2553//
2554// See the AWS API reference guide for Amazon DynamoDB's
2555// API operation GetItem for usage and error information.
2556//
2557// Returned Error Types:
2558//   * ProvisionedThroughputExceededException
2559//   Your request rate is too high. The AWS SDKs for DynamoDB automatically retry
2560//   requests that receive this exception. Your request is eventually successful,
2561//   unless your retry queue is too large to finish. Reduce the frequency of requests
2562//   and use exponential backoff. For more information, go to Error Retries and
2563//   Exponential Backoff (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Programming.Errors.html#Programming.Errors.RetryAndBackoff)
2564//   in the Amazon DynamoDB Developer Guide.
2565//
2566//   * ResourceNotFoundException
2567//   The operation tried to access a nonexistent table or index. The resource
2568//   might not be specified correctly, or its status might not be ACTIVE.
2569//
2570//   * RequestLimitExceeded
2571//   Throughput exceeds the current throughput limit for your account. Please
2572//   contact AWS Support at AWS Support (https://aws.amazon.com/support) to request
2573//   a limit increase.
2574//
2575//   * InternalServerError
2576//   An error occurred on the server side.
2577//
2578// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/GetItem
2579func (c *DynamoDB) GetItem(input *GetItemInput) (*GetItemOutput, error) {
2580	req, out := c.GetItemRequest(input)
2581	return out, req.Send()
2582}
2583
2584// GetItemWithContext is the same as GetItem with the addition of
2585// the ability to pass a context and additional request options.
2586//
2587// See GetItem for details on how to use this API operation.
2588//
2589// The context must be non-nil and will be used for request cancellation. If
2590// the context is nil a panic will occur. In the future the SDK may create
2591// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2592// for more information on using Contexts.
2593func (c *DynamoDB) GetItemWithContext(ctx aws.Context, input *GetItemInput, opts ...request.Option) (*GetItemOutput, error) {
2594	req, out := c.GetItemRequest(input)
2595	req.SetContext(ctx)
2596	req.ApplyOptions(opts...)
2597	return out, req.Send()
2598}
2599
2600const opListBackups = "ListBackups"
2601
2602// ListBackupsRequest generates a "aws/request.Request" representing the
2603// client's request for the ListBackups operation. The "output" return
2604// value will be populated with the request's response once the request completes
2605// successfully.
2606//
2607// Use "Send" method on the returned Request to send the API call to the service.
2608// the "output" return value is not valid until after Send returns without error.
2609//
2610// See ListBackups for more information on using the ListBackups
2611// API call, and error handling.
2612//
2613// This method is useful when you want to inject custom logic or configuration
2614// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2615//
2616//
2617//    // Example sending a request using the ListBackupsRequest method.
2618//    req, resp := client.ListBackupsRequest(params)
2619//
2620//    err := req.Send()
2621//    if err == nil { // resp is now filled
2622//        fmt.Println(resp)
2623//    }
2624//
2625// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/ListBackups
2626func (c *DynamoDB) ListBackupsRequest(input *ListBackupsInput) (req *request.Request, output *ListBackupsOutput) {
2627	op := &request.Operation{
2628		Name:       opListBackups,
2629		HTTPMethod: "POST",
2630		HTTPPath:   "/",
2631	}
2632
2633	if input == nil {
2634		input = &ListBackupsInput{}
2635	}
2636
2637	output = &ListBackupsOutput{}
2638	req = c.newRequest(op, input, output)
2639	// if custom endpoint for the request is set to a non empty string,
2640	// we skip the endpoint discovery workflow.
2641	if req.Config.Endpoint == nil || *req.Config.Endpoint == "" {
2642		if aws.BoolValue(req.Config.EnableEndpointDiscovery) {
2643			de := discovererDescribeEndpoints{
2644				Required:      false,
2645				EndpointCache: c.endpointCache,
2646				Params: map[string]*string{
2647					"op": aws.String(req.Operation.Name),
2648				},
2649				Client: c,
2650			}
2651
2652			for k, v := range de.Params {
2653				if v == nil {
2654					delete(de.Params, k)
2655				}
2656			}
2657
2658			req.Handlers.Build.PushFrontNamed(request.NamedHandler{
2659				Name: "crr.endpointdiscovery",
2660				Fn:   de.Handler,
2661			})
2662		}
2663	}
2664	return
2665}
2666
2667// ListBackups API operation for Amazon DynamoDB.
2668//
2669// List backups associated with an AWS account. To list backups for a given
2670// table, specify TableName. ListBackups returns a paginated list of results
2671// with at most 1 MB worth of items in a page. You can also specify a limit
2672// for the maximum number of entries to be returned in a page.
2673//
2674// In the request, start time is inclusive, but end time is exclusive. Note
2675// that these limits are for the time at which the original backup was requested.
2676//
2677// You can call ListBackups a maximum of five times per second.
2678//
2679// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2680// with awserr.Error's Code and Message methods to get detailed information about
2681// the error.
2682//
2683// See the AWS API reference guide for Amazon DynamoDB's
2684// API operation ListBackups for usage and error information.
2685//
2686// Returned Error Types:
2687//   * InternalServerError
2688//   An error occurred on the server side.
2689//
2690// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/ListBackups
2691func (c *DynamoDB) ListBackups(input *ListBackupsInput) (*ListBackupsOutput, error) {
2692	req, out := c.ListBackupsRequest(input)
2693	return out, req.Send()
2694}
2695
2696// ListBackupsWithContext is the same as ListBackups with the addition of
2697// the ability to pass a context and additional request options.
2698//
2699// See ListBackups for details on how to use this API operation.
2700//
2701// The context must be non-nil and will be used for request cancellation. If
2702// the context is nil a panic will occur. In the future the SDK may create
2703// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2704// for more information on using Contexts.
2705func (c *DynamoDB) ListBackupsWithContext(ctx aws.Context, input *ListBackupsInput, opts ...request.Option) (*ListBackupsOutput, error) {
2706	req, out := c.ListBackupsRequest(input)
2707	req.SetContext(ctx)
2708	req.ApplyOptions(opts...)
2709	return out, req.Send()
2710}
2711
2712const opListContributorInsights = "ListContributorInsights"
2713
2714// ListContributorInsightsRequest generates a "aws/request.Request" representing the
2715// client's request for the ListContributorInsights operation. The "output" return
2716// value will be populated with the request's response once the request completes
2717// successfully.
2718//
2719// Use "Send" method on the returned Request to send the API call to the service.
2720// the "output" return value is not valid until after Send returns without error.
2721//
2722// See ListContributorInsights for more information on using the ListContributorInsights
2723// API call, and error handling.
2724//
2725// This method is useful when you want to inject custom logic or configuration
2726// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2727//
2728//
2729//    // Example sending a request using the ListContributorInsightsRequest method.
2730//    req, resp := client.ListContributorInsightsRequest(params)
2731//
2732//    err := req.Send()
2733//    if err == nil { // resp is now filled
2734//        fmt.Println(resp)
2735//    }
2736//
2737// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/ListContributorInsights
2738func (c *DynamoDB) ListContributorInsightsRequest(input *ListContributorInsightsInput) (req *request.Request, output *ListContributorInsightsOutput) {
2739	op := &request.Operation{
2740		Name:       opListContributorInsights,
2741		HTTPMethod: "POST",
2742		HTTPPath:   "/",
2743		Paginator: &request.Paginator{
2744			InputTokens:     []string{"NextToken"},
2745			OutputTokens:    []string{"NextToken"},
2746			LimitToken:      "MaxResults",
2747			TruncationToken: "",
2748		},
2749	}
2750
2751	if input == nil {
2752		input = &ListContributorInsightsInput{}
2753	}
2754
2755	output = &ListContributorInsightsOutput{}
2756	req = c.newRequest(op, input, output)
2757	return
2758}
2759
2760// ListContributorInsights API operation for Amazon DynamoDB.
2761//
2762// Returns a list of ContributorInsightsSummary for a table and all its global
2763// secondary indexes.
2764//
2765// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2766// with awserr.Error's Code and Message methods to get detailed information about
2767// the error.
2768//
2769// See the AWS API reference guide for Amazon DynamoDB's
2770// API operation ListContributorInsights for usage and error information.
2771//
2772// Returned Error Types:
2773//   * ResourceNotFoundException
2774//   The operation tried to access a nonexistent table or index. The resource
2775//   might not be specified correctly, or its status might not be ACTIVE.
2776//
2777//   * InternalServerError
2778//   An error occurred on the server side.
2779//
2780// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/ListContributorInsights
2781func (c *DynamoDB) ListContributorInsights(input *ListContributorInsightsInput) (*ListContributorInsightsOutput, error) {
2782	req, out := c.ListContributorInsightsRequest(input)
2783	return out, req.Send()
2784}
2785
2786// ListContributorInsightsWithContext is the same as ListContributorInsights with the addition of
2787// the ability to pass a context and additional request options.
2788//
2789// See ListContributorInsights for details on how to use this API operation.
2790//
2791// The context must be non-nil and will be used for request cancellation. If
2792// the context is nil a panic will occur. In the future the SDK may create
2793// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2794// for more information on using Contexts.
2795func (c *DynamoDB) ListContributorInsightsWithContext(ctx aws.Context, input *ListContributorInsightsInput, opts ...request.Option) (*ListContributorInsightsOutput, error) {
2796	req, out := c.ListContributorInsightsRequest(input)
2797	req.SetContext(ctx)
2798	req.ApplyOptions(opts...)
2799	return out, req.Send()
2800}
2801
2802// ListContributorInsightsPages iterates over the pages of a ListContributorInsights operation,
2803// calling the "fn" function with the response data for each page. To stop
2804// iterating, return false from the fn function.
2805//
2806// See ListContributorInsights method for more information on how to use this operation.
2807//
2808// Note: This operation can generate multiple requests to a service.
2809//
2810//    // Example iterating over at most 3 pages of a ListContributorInsights operation.
2811//    pageNum := 0
2812//    err := client.ListContributorInsightsPages(params,
2813//        func(page *dynamodb.ListContributorInsightsOutput, lastPage bool) bool {
2814//            pageNum++
2815//            fmt.Println(page)
2816//            return pageNum <= 3
2817//        })
2818//
2819func (c *DynamoDB) ListContributorInsightsPages(input *ListContributorInsightsInput, fn func(*ListContributorInsightsOutput, bool) bool) error {
2820	return c.ListContributorInsightsPagesWithContext(aws.BackgroundContext(), input, fn)
2821}
2822
2823// ListContributorInsightsPagesWithContext same as ListContributorInsightsPages except
2824// it takes a Context and allows setting request options on the pages.
2825//
2826// The context must be non-nil and will be used for request cancellation. If
2827// the context is nil a panic will occur. In the future the SDK may create
2828// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2829// for more information on using Contexts.
2830func (c *DynamoDB) ListContributorInsightsPagesWithContext(ctx aws.Context, input *ListContributorInsightsInput, fn func(*ListContributorInsightsOutput, bool) bool, opts ...request.Option) error {
2831	p := request.Pagination{
2832		NewRequest: func() (*request.Request, error) {
2833			var inCpy *ListContributorInsightsInput
2834			if input != nil {
2835				tmp := *input
2836				inCpy = &tmp
2837			}
2838			req, _ := c.ListContributorInsightsRequest(inCpy)
2839			req.SetContext(ctx)
2840			req.ApplyOptions(opts...)
2841			return req, nil
2842		},
2843	}
2844
2845	for p.Next() {
2846		if !fn(p.Page().(*ListContributorInsightsOutput), !p.HasNextPage()) {
2847			break
2848		}
2849	}
2850
2851	return p.Err()
2852}
2853
2854const opListGlobalTables = "ListGlobalTables"
2855
2856// ListGlobalTablesRequest generates a "aws/request.Request" representing the
2857// client's request for the ListGlobalTables operation. The "output" return
2858// value will be populated with the request's response once the request completes
2859// successfully.
2860//
2861// Use "Send" method on the returned Request to send the API call to the service.
2862// the "output" return value is not valid until after Send returns without error.
2863//
2864// See ListGlobalTables for more information on using the ListGlobalTables
2865// API call, and error handling.
2866//
2867// This method is useful when you want to inject custom logic or configuration
2868// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2869//
2870//
2871//    // Example sending a request using the ListGlobalTablesRequest method.
2872//    req, resp := client.ListGlobalTablesRequest(params)
2873//
2874//    err := req.Send()
2875//    if err == nil { // resp is now filled
2876//        fmt.Println(resp)
2877//    }
2878//
2879// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/ListGlobalTables
2880func (c *DynamoDB) ListGlobalTablesRequest(input *ListGlobalTablesInput) (req *request.Request, output *ListGlobalTablesOutput) {
2881	op := &request.Operation{
2882		Name:       opListGlobalTables,
2883		HTTPMethod: "POST",
2884		HTTPPath:   "/",
2885	}
2886
2887	if input == nil {
2888		input = &ListGlobalTablesInput{}
2889	}
2890
2891	output = &ListGlobalTablesOutput{}
2892	req = c.newRequest(op, input, output)
2893	// if custom endpoint for the request is set to a non empty string,
2894	// we skip the endpoint discovery workflow.
2895	if req.Config.Endpoint == nil || *req.Config.Endpoint == "" {
2896		if aws.BoolValue(req.Config.EnableEndpointDiscovery) {
2897			de := discovererDescribeEndpoints{
2898				Required:      false,
2899				EndpointCache: c.endpointCache,
2900				Params: map[string]*string{
2901					"op": aws.String(req.Operation.Name),
2902				},
2903				Client: c,
2904			}
2905
2906			for k, v := range de.Params {
2907				if v == nil {
2908					delete(de.Params, k)
2909				}
2910			}
2911
2912			req.Handlers.Build.PushFrontNamed(request.NamedHandler{
2913				Name: "crr.endpointdiscovery",
2914				Fn:   de.Handler,
2915			})
2916		}
2917	}
2918	return
2919}
2920
2921// ListGlobalTables API operation for Amazon DynamoDB.
2922//
2923// Lists all global tables that have a replica in the specified Region.
2924//
2925// This operation only applies to Version 2017.11.29 (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/globaltables.V1.html)
2926// of global tables.
2927//
2928// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2929// with awserr.Error's Code and Message methods to get detailed information about
2930// the error.
2931//
2932// See the AWS API reference guide for Amazon DynamoDB's
2933// API operation ListGlobalTables for usage and error information.
2934//
2935// Returned Error Types:
2936//   * InternalServerError
2937//   An error occurred on the server side.
2938//
2939// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/ListGlobalTables
2940func (c *DynamoDB) ListGlobalTables(input *ListGlobalTablesInput) (*ListGlobalTablesOutput, error) {
2941	req, out := c.ListGlobalTablesRequest(input)
2942	return out, req.Send()
2943}
2944
2945// ListGlobalTablesWithContext is the same as ListGlobalTables with the addition of
2946// the ability to pass a context and additional request options.
2947//
2948// See ListGlobalTables for details on how to use this API operation.
2949//
2950// The context must be non-nil and will be used for request cancellation. If
2951// the context is nil a panic will occur. In the future the SDK may create
2952// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2953// for more information on using Contexts.
2954func (c *DynamoDB) ListGlobalTablesWithContext(ctx aws.Context, input *ListGlobalTablesInput, opts ...request.Option) (*ListGlobalTablesOutput, error) {
2955	req, out := c.ListGlobalTablesRequest(input)
2956	req.SetContext(ctx)
2957	req.ApplyOptions(opts...)
2958	return out, req.Send()
2959}
2960
2961const opListTables = "ListTables"
2962
2963// ListTablesRequest generates a "aws/request.Request" representing the
2964// client's request for the ListTables operation. The "output" return
2965// value will be populated with the request's response once the request completes
2966// successfully.
2967//
2968// Use "Send" method on the returned Request to send the API call to the service.
2969// the "output" return value is not valid until after Send returns without error.
2970//
2971// See ListTables for more information on using the ListTables
2972// API call, and error handling.
2973//
2974// This method is useful when you want to inject custom logic or configuration
2975// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2976//
2977//
2978//    // Example sending a request using the ListTablesRequest method.
2979//    req, resp := client.ListTablesRequest(params)
2980//
2981//    err := req.Send()
2982//    if err == nil { // resp is now filled
2983//        fmt.Println(resp)
2984//    }
2985//
2986// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/ListTables
2987func (c *DynamoDB) ListTablesRequest(input *ListTablesInput) (req *request.Request, output *ListTablesOutput) {
2988	op := &request.Operation{
2989		Name:       opListTables,
2990		HTTPMethod: "POST",
2991		HTTPPath:   "/",
2992		Paginator: &request.Paginator{
2993			InputTokens:     []string{"ExclusiveStartTableName"},
2994			OutputTokens:    []string{"LastEvaluatedTableName"},
2995			LimitToken:      "Limit",
2996			TruncationToken: "",
2997		},
2998	}
2999
3000	if input == nil {
3001		input = &ListTablesInput{}
3002	}
3003
3004	output = &ListTablesOutput{}
3005	req = c.newRequest(op, input, output)
3006	// if custom endpoint for the request is set to a non empty string,
3007	// we skip the endpoint discovery workflow.
3008	if req.Config.Endpoint == nil || *req.Config.Endpoint == "" {
3009		if aws.BoolValue(req.Config.EnableEndpointDiscovery) {
3010			de := discovererDescribeEndpoints{
3011				Required:      false,
3012				EndpointCache: c.endpointCache,
3013				Params: map[string]*string{
3014					"op": aws.String(req.Operation.Name),
3015				},
3016				Client: c,
3017			}
3018
3019			for k, v := range de.Params {
3020				if v == nil {
3021					delete(de.Params, k)
3022				}
3023			}
3024
3025			req.Handlers.Build.PushFrontNamed(request.NamedHandler{
3026				Name: "crr.endpointdiscovery",
3027				Fn:   de.Handler,
3028			})
3029		}
3030	}
3031	return
3032}
3033
3034// ListTables API operation for Amazon DynamoDB.
3035//
3036// Returns an array of table names associated with the current account and endpoint.
3037// The output from ListTables is paginated, with each page returning a maximum
3038// of 100 table names.
3039//
3040// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
3041// with awserr.Error's Code and Message methods to get detailed information about
3042// the error.
3043//
3044// See the AWS API reference guide for Amazon DynamoDB's
3045// API operation ListTables for usage and error information.
3046//
3047// Returned Error Types:
3048//   * InternalServerError
3049//   An error occurred on the server side.
3050//
3051// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/ListTables
3052func (c *DynamoDB) ListTables(input *ListTablesInput) (*ListTablesOutput, error) {
3053	req, out := c.ListTablesRequest(input)
3054	return out, req.Send()
3055}
3056
3057// ListTablesWithContext is the same as ListTables with the addition of
3058// the ability to pass a context and additional request options.
3059//
3060// See ListTables for details on how to use this API operation.
3061//
3062// The context must be non-nil and will be used for request cancellation. If
3063// the context is nil a panic will occur. In the future the SDK may create
3064// sub-contexts for http.Requests. See https://golang.org/pkg/context/
3065// for more information on using Contexts.
3066func (c *DynamoDB) ListTablesWithContext(ctx aws.Context, input *ListTablesInput, opts ...request.Option) (*ListTablesOutput, error) {
3067	req, out := c.ListTablesRequest(input)
3068	req.SetContext(ctx)
3069	req.ApplyOptions(opts...)
3070	return out, req.Send()
3071}
3072
3073// ListTablesPages iterates over the pages of a ListTables operation,
3074// calling the "fn" function with the response data for each page. To stop
3075// iterating, return false from the fn function.
3076//
3077// See ListTables method for more information on how to use this operation.
3078//
3079// Note: This operation can generate multiple requests to a service.
3080//
3081//    // Example iterating over at most 3 pages of a ListTables operation.
3082//    pageNum := 0
3083//    err := client.ListTablesPages(params,
3084//        func(page *dynamodb.ListTablesOutput, lastPage bool) bool {
3085//            pageNum++
3086//            fmt.Println(page)
3087//            return pageNum <= 3
3088//        })
3089//
3090func (c *DynamoDB) ListTablesPages(input *ListTablesInput, fn func(*ListTablesOutput, bool) bool) error {
3091	return c.ListTablesPagesWithContext(aws.BackgroundContext(), input, fn)
3092}
3093
3094// ListTablesPagesWithContext same as ListTablesPages except
3095// it takes a Context and allows setting request options on the pages.
3096//
3097// The context must be non-nil and will be used for request cancellation. If
3098// the context is nil a panic will occur. In the future the SDK may create
3099// sub-contexts for http.Requests. See https://golang.org/pkg/context/
3100// for more information on using Contexts.
3101func (c *DynamoDB) ListTablesPagesWithContext(ctx aws.Context, input *ListTablesInput, fn func(*ListTablesOutput, bool) bool, opts ...request.Option) error {
3102	p := request.Pagination{
3103		NewRequest: func() (*request.Request, error) {
3104			var inCpy *ListTablesInput
3105			if input != nil {
3106				tmp := *input
3107				inCpy = &tmp
3108			}
3109			req, _ := c.ListTablesRequest(inCpy)
3110			req.SetContext(ctx)
3111			req.ApplyOptions(opts...)
3112			return req, nil
3113		},
3114	}
3115
3116	for p.Next() {
3117		if !fn(p.Page().(*ListTablesOutput), !p.HasNextPage()) {
3118			break
3119		}
3120	}
3121
3122	return p.Err()
3123}
3124
3125const opListTagsOfResource = "ListTagsOfResource"
3126
3127// ListTagsOfResourceRequest generates a "aws/request.Request" representing the
3128// client's request for the ListTagsOfResource operation. The "output" return
3129// value will be populated with the request's response once the request completes
3130// successfully.
3131//
3132// Use "Send" method on the returned Request to send the API call to the service.
3133// the "output" return value is not valid until after Send returns without error.
3134//
3135// See ListTagsOfResource for more information on using the ListTagsOfResource
3136// API call, and error handling.
3137//
3138// This method is useful when you want to inject custom logic or configuration
3139// into the SDK's request lifecycle. Such as custom headers, or retry logic.
3140//
3141//
3142//    // Example sending a request using the ListTagsOfResourceRequest method.
3143//    req, resp := client.ListTagsOfResourceRequest(params)
3144//
3145//    err := req.Send()
3146//    if err == nil { // resp is now filled
3147//        fmt.Println(resp)
3148//    }
3149//
3150// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/ListTagsOfResource
3151func (c *DynamoDB) ListTagsOfResourceRequest(input *ListTagsOfResourceInput) (req *request.Request, output *ListTagsOfResourceOutput) {
3152	op := &request.Operation{
3153		Name:       opListTagsOfResource,
3154		HTTPMethod: "POST",
3155		HTTPPath:   "/",
3156	}
3157
3158	if input == nil {
3159		input = &ListTagsOfResourceInput{}
3160	}
3161
3162	output = &ListTagsOfResourceOutput{}
3163	req = c.newRequest(op, input, output)
3164	// if custom endpoint for the request is set to a non empty string,
3165	// we skip the endpoint discovery workflow.
3166	if req.Config.Endpoint == nil || *req.Config.Endpoint == "" {
3167		if aws.BoolValue(req.Config.EnableEndpointDiscovery) {
3168			de := discovererDescribeEndpoints{
3169				Required:      false,
3170				EndpointCache: c.endpointCache,
3171				Params: map[string]*string{
3172					"op": aws.String(req.Operation.Name),
3173				},
3174				Client: c,
3175			}
3176
3177			for k, v := range de.Params {
3178				if v == nil {
3179					delete(de.Params, k)
3180				}
3181			}
3182
3183			req.Handlers.Build.PushFrontNamed(request.NamedHandler{
3184				Name: "crr.endpointdiscovery",
3185				Fn:   de.Handler,
3186			})
3187		}
3188	}
3189	return
3190}
3191
3192// ListTagsOfResource API operation for Amazon DynamoDB.
3193//
3194// List all tags on an Amazon DynamoDB resource. You can call ListTagsOfResource
3195// up to 10 times per second, per account.
3196//
3197// For an overview on tagging DynamoDB resources, see Tagging for DynamoDB (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Tagging.html)
3198// in the Amazon DynamoDB Developer Guide.
3199//
3200// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
3201// with awserr.Error's Code and Message methods to get detailed information about
3202// the error.
3203//
3204// See the AWS API reference guide for Amazon DynamoDB's
3205// API operation ListTagsOfResource for usage and error information.
3206//
3207// Returned Error Types:
3208//   * ResourceNotFoundException
3209//   The operation tried to access a nonexistent table or index. The resource
3210//   might not be specified correctly, or its status might not be ACTIVE.
3211//
3212//   * InternalServerError
3213//   An error occurred on the server side.
3214//
3215// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/ListTagsOfResource
3216func (c *DynamoDB) ListTagsOfResource(input *ListTagsOfResourceInput) (*ListTagsOfResourceOutput, error) {
3217	req, out := c.ListTagsOfResourceRequest(input)
3218	return out, req.Send()
3219}
3220
3221// ListTagsOfResourceWithContext is the same as ListTagsOfResource with the addition of
3222// the ability to pass a context and additional request options.
3223//
3224// See ListTagsOfResource for details on how to use this API operation.
3225//
3226// The context must be non-nil and will be used for request cancellation. If
3227// the context is nil a panic will occur. In the future the SDK may create
3228// sub-contexts for http.Requests. See https://golang.org/pkg/context/
3229// for more information on using Contexts.
3230func (c *DynamoDB) ListTagsOfResourceWithContext(ctx aws.Context, input *ListTagsOfResourceInput, opts ...request.Option) (*ListTagsOfResourceOutput, error) {
3231	req, out := c.ListTagsOfResourceRequest(input)
3232	req.SetContext(ctx)
3233	req.ApplyOptions(opts...)
3234	return out, req.Send()
3235}
3236
3237const opPutItem = "PutItem"
3238
3239// PutItemRequest generates a "aws/request.Request" representing the
3240// client's request for the PutItem operation. The "output" return
3241// value will be populated with the request's response once the request completes
3242// successfully.
3243//
3244// Use "Send" method on the returned Request to send the API call to the service.
3245// the "output" return value is not valid until after Send returns without error.
3246//
3247// See PutItem for more information on using the PutItem
3248// API call, and error handling.
3249//
3250// This method is useful when you want to inject custom logic or configuration
3251// into the SDK's request lifecycle. Such as custom headers, or retry logic.
3252//
3253//
3254//    // Example sending a request using the PutItemRequest method.
3255//    req, resp := client.PutItemRequest(params)
3256//
3257//    err := req.Send()
3258//    if err == nil { // resp is now filled
3259//        fmt.Println(resp)
3260//    }
3261//
3262// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/PutItem
3263func (c *DynamoDB) PutItemRequest(input *PutItemInput) (req *request.Request, output *PutItemOutput) {
3264	op := &request.Operation{
3265		Name:       opPutItem,
3266		HTTPMethod: "POST",
3267		HTTPPath:   "/",
3268	}
3269
3270	if input == nil {
3271		input = &PutItemInput{}
3272	}
3273
3274	output = &PutItemOutput{}
3275	req = c.newRequest(op, input, output)
3276	// if custom endpoint for the request is set to a non empty string,
3277	// we skip the endpoint discovery workflow.
3278	if req.Config.Endpoint == nil || *req.Config.Endpoint == "" {
3279		if aws.BoolValue(req.Config.EnableEndpointDiscovery) {
3280			de := discovererDescribeEndpoints{
3281				Required:      false,
3282				EndpointCache: c.endpointCache,
3283				Params: map[string]*string{
3284					"op": aws.String(req.Operation.Name),
3285				},
3286				Client: c,
3287			}
3288
3289			for k, v := range de.Params {
3290				if v == nil {
3291					delete(de.Params, k)
3292				}
3293			}
3294
3295			req.Handlers.Build.PushFrontNamed(request.NamedHandler{
3296				Name: "crr.endpointdiscovery",
3297				Fn:   de.Handler,
3298			})
3299		}
3300	}
3301	return
3302}
3303
3304// PutItem API operation for Amazon DynamoDB.
3305//
3306// Creates a new item, or replaces an old item with a new item. If an item that
3307// has the same primary key as the new item already exists in the specified
3308// table, the new item completely replaces the existing item. You can perform
3309// a conditional put operation (add a new item if one with the specified primary
3310// key doesn't exist), or replace an existing item if it has certain attribute
3311// values. You can return the item's attribute values in the same operation,
3312// using the ReturnValues parameter.
3313//
3314// This topic provides general information about the PutItem API.
3315//
3316// For information on how to call the PutItem API using the AWS SDK in specific
3317// languages, see the following:
3318//
3319//    * PutItem in the AWS Command Line Interface (http://docs.aws.amazon.com/goto/aws-cli/dynamodb-2012-08-10/PutItem)
3320//
3321//    * PutItem in the AWS SDK for .NET (http://docs.aws.amazon.com/goto/DotNetSDKV3/dynamodb-2012-08-10/PutItem)
3322//
3323//    * PutItem in the AWS SDK for C++ (http://docs.aws.amazon.com/goto/SdkForCpp/dynamodb-2012-08-10/PutItem)
3324//
3325//    * PutItem in the AWS SDK for Go (http://docs.aws.amazon.com/goto/SdkForGoV1/dynamodb-2012-08-10/PutItem)
3326//
3327//    * PutItem in the AWS SDK for Java (http://docs.aws.amazon.com/goto/SdkForJava/dynamodb-2012-08-10/PutItem)
3328//
3329//    * PutItem in the AWS SDK for JavaScript (http://docs.aws.amazon.com/goto/AWSJavaScriptSDK/dynamodb-2012-08-10/PutItem)
3330//
3331//    * PutItem in the AWS SDK for PHP V3 (http://docs.aws.amazon.com/goto/SdkForPHPV3/dynamodb-2012-08-10/PutItem)
3332//
3333//    * PutItem in the AWS SDK for Python (http://docs.aws.amazon.com/goto/boto3/dynamodb-2012-08-10/PutItem)
3334//
3335//    * PutItem in the AWS SDK for Ruby V2 (http://docs.aws.amazon.com/goto/SdkForRubyV2/dynamodb-2012-08-10/PutItem)
3336//
3337// When you add an item, the primary key attributes are the only required attributes.
3338// Attribute values cannot be null.
3339//
3340// Empty String and Binary attribute values are allowed. Attribute values of
3341// type String and Binary must have a length greater than zero if the attribute
3342// is used as a key attribute for a table or index. Set type attributes cannot
3343// be empty.
3344//
3345// Invalid Requests with empty values will be rejected with a ValidationException
3346// exception.
3347//
3348// To prevent a new item from replacing an existing item, use a conditional
3349// expression that contains the attribute_not_exists function with the name
3350// of the attribute being used as the partition key for the table. Since every
3351// record must contain that attribute, the attribute_not_exists function will
3352// only succeed if no matching item exists.
3353//
3354// For more information about PutItem, see Working with Items (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/WorkingWithItems.html)
3355// in the Amazon DynamoDB Developer Guide.
3356//
3357// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
3358// with awserr.Error's Code and Message methods to get detailed information about
3359// the error.
3360//
3361// See the AWS API reference guide for Amazon DynamoDB's
3362// API operation PutItem for usage and error information.
3363//
3364// Returned Error Types:
3365//   * ConditionalCheckFailedException
3366//   A condition specified in the operation could not be evaluated.
3367//
3368//   * ProvisionedThroughputExceededException
3369//   Your request rate is too high. The AWS SDKs for DynamoDB automatically retry
3370//   requests that receive this exception. Your request is eventually successful,
3371//   unless your retry queue is too large to finish. Reduce the frequency of requests
3372//   and use exponential backoff. For more information, go to Error Retries and
3373//   Exponential Backoff (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Programming.Errors.html#Programming.Errors.RetryAndBackoff)
3374//   in the Amazon DynamoDB Developer Guide.
3375//
3376//   * ResourceNotFoundException
3377//   The operation tried to access a nonexistent table or index. The resource
3378//   might not be specified correctly, or its status might not be ACTIVE.
3379//
3380//   * ItemCollectionSizeLimitExceededException
3381//   An item collection is too large. This exception is only returned for tables
3382//   that have one or more local secondary indexes.
3383//
3384//   * TransactionConflictException
3385//   Operation was rejected because there is an ongoing transaction for the item.
3386//
3387//   * RequestLimitExceeded
3388//   Throughput exceeds the current throughput limit for your account. Please
3389//   contact AWS Support at AWS Support (https://aws.amazon.com/support) to request
3390//   a limit increase.
3391//
3392//   * InternalServerError
3393//   An error occurred on the server side.
3394//
3395// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/PutItem
3396func (c *DynamoDB) PutItem(input *PutItemInput) (*PutItemOutput, error) {
3397	req, out := c.PutItemRequest(input)
3398	return out, req.Send()
3399}
3400
3401// PutItemWithContext is the same as PutItem with the addition of
3402// the ability to pass a context and additional request options.
3403//
3404// See PutItem for details on how to use this API operation.
3405//
3406// The context must be non-nil and will be used for request cancellation. If
3407// the context is nil a panic will occur. In the future the SDK may create
3408// sub-contexts for http.Requests. See https://golang.org/pkg/context/
3409// for more information on using Contexts.
3410func (c *DynamoDB) PutItemWithContext(ctx aws.Context, input *PutItemInput, opts ...request.Option) (*PutItemOutput, error) {
3411	req, out := c.PutItemRequest(input)
3412	req.SetContext(ctx)
3413	req.ApplyOptions(opts...)
3414	return out, req.Send()
3415}
3416
3417const opQuery = "Query"
3418
3419// QueryRequest generates a "aws/request.Request" representing the
3420// client's request for the Query operation. The "output" return
3421// value will be populated with the request's response once the request completes
3422// successfully.
3423//
3424// Use "Send" method on the returned Request to send the API call to the service.
3425// the "output" return value is not valid until after Send returns without error.
3426//
3427// See Query for more information on using the Query
3428// API call, and error handling.
3429//
3430// This method is useful when you want to inject custom logic or configuration
3431// into the SDK's request lifecycle. Such as custom headers, or retry logic.
3432//
3433//
3434//    // Example sending a request using the QueryRequest method.
3435//    req, resp := client.QueryRequest(params)
3436//
3437//    err := req.Send()
3438//    if err == nil { // resp is now filled
3439//        fmt.Println(resp)
3440//    }
3441//
3442// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/Query
3443func (c *DynamoDB) QueryRequest(input *QueryInput) (req *request.Request, output *QueryOutput) {
3444	op := &request.Operation{
3445		Name:       opQuery,
3446		HTTPMethod: "POST",
3447		HTTPPath:   "/",
3448		Paginator: &request.Paginator{
3449			InputTokens:     []string{"ExclusiveStartKey"},
3450			OutputTokens:    []string{"LastEvaluatedKey"},
3451			LimitToken:      "Limit",
3452			TruncationToken: "",
3453		},
3454	}
3455
3456	if input == nil {
3457		input = &QueryInput{}
3458	}
3459
3460	output = &QueryOutput{}
3461	req = c.newRequest(op, input, output)
3462	// if custom endpoint for the request is set to a non empty string,
3463	// we skip the endpoint discovery workflow.
3464	if req.Config.Endpoint == nil || *req.Config.Endpoint == "" {
3465		if aws.BoolValue(req.Config.EnableEndpointDiscovery) {
3466			de := discovererDescribeEndpoints{
3467				Required:      false,
3468				EndpointCache: c.endpointCache,
3469				Params: map[string]*string{
3470					"op": aws.String(req.Operation.Name),
3471				},
3472				Client: c,
3473			}
3474
3475			for k, v := range de.Params {
3476				if v == nil {
3477					delete(de.Params, k)
3478				}
3479			}
3480
3481			req.Handlers.Build.PushFrontNamed(request.NamedHandler{
3482				Name: "crr.endpointdiscovery",
3483				Fn:   de.Handler,
3484			})
3485		}
3486	}
3487	return
3488}
3489
3490// Query API operation for Amazon DynamoDB.
3491//
3492// The Query operation finds items based on primary key values. You can query
3493// any table or secondary index that has a composite primary key (a partition
3494// key and a sort key).
3495//
3496// Use the KeyConditionExpression parameter to provide a specific value for
3497// the partition key. The Query operation will return all of the items from
3498// the table or index with that partition key value. You can optionally narrow
3499// the scope of the Query operation by specifying a sort key value and a comparison
3500// operator in KeyConditionExpression. To further refine the Query results,
3501// you can optionally provide a FilterExpression. A FilterExpression determines
3502// which items within the results should be returned to you. All of the other
3503// results are discarded.
3504//
3505// A Query operation always returns a result set. If no matching items are found,
3506// the result set will be empty. Queries that do not return results consume
3507// the minimum number of read capacity units for that type of read operation.
3508//
3509// DynamoDB calculates the number of read capacity units consumed based on item
3510// size, not on the amount of data that is returned to an application. The number
3511// of capacity units consumed will be the same whether you request all of the
3512// attributes (the default behavior) or just some of them (using a projection
3513// expression). The number will also be the same whether or not you use a FilterExpression.
3514//
3515// Query results are always sorted by the sort key value. If the data type of
3516// the sort key is Number, the results are returned in numeric order; otherwise,
3517// the results are returned in order of UTF-8 bytes. By default, the sort order
3518// is ascending. To reverse the order, set the ScanIndexForward parameter to
3519// false.
3520//
3521// A single Query operation will read up to the maximum number of items set
3522// (if using the Limit parameter) or a maximum of 1 MB of data and then apply
3523// any filtering to the results using FilterExpression. If LastEvaluatedKey
3524// is present in the response, you will need to paginate the result set. For
3525// more information, see Paginating the Results (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Query.html#Query.Pagination)
3526// in the Amazon DynamoDB Developer Guide.
3527//
3528// FilterExpression is applied after a Query finishes, but before the results
3529// are returned. A FilterExpression cannot contain partition key or sort key
3530// attributes. You need to specify those attributes in the KeyConditionExpression.
3531//
3532// A Query operation can return an empty result set and a LastEvaluatedKey if
3533// all the items read for the page of results are filtered out.
3534//
3535// You can query a table, a local secondary index, or a global secondary index.
3536// For a query on a table or on a local secondary index, you can set the ConsistentRead
3537// parameter to true and obtain a strongly consistent result. Global secondary
3538// indexes support eventually consistent reads only, so do not specify ConsistentRead
3539// when querying a global secondary index.
3540//
3541// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
3542// with awserr.Error's Code and Message methods to get detailed information about
3543// the error.
3544//
3545// See the AWS API reference guide for Amazon DynamoDB's
3546// API operation Query for usage and error information.
3547//
3548// Returned Error Types:
3549//   * ProvisionedThroughputExceededException
3550//   Your request rate is too high. The AWS SDKs for DynamoDB automatically retry
3551//   requests that receive this exception. Your request is eventually successful,
3552//   unless your retry queue is too large to finish. Reduce the frequency of requests
3553//   and use exponential backoff. For more information, go to Error Retries and
3554//   Exponential Backoff (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Programming.Errors.html#Programming.Errors.RetryAndBackoff)
3555//   in the Amazon DynamoDB Developer Guide.
3556//
3557//   * ResourceNotFoundException
3558//   The operation tried to access a nonexistent table or index. The resource
3559//   might not be specified correctly, or its status might not be ACTIVE.
3560//
3561//   * RequestLimitExceeded
3562//   Throughput exceeds the current throughput limit for your account. Please
3563//   contact AWS Support at AWS Support (https://aws.amazon.com/support) to request
3564//   a limit increase.
3565//
3566//   * InternalServerError
3567//   An error occurred on the server side.
3568//
3569// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/Query
3570func (c *DynamoDB) Query(input *QueryInput) (*QueryOutput, error) {
3571	req, out := c.QueryRequest(input)
3572	return out, req.Send()
3573}
3574
3575// QueryWithContext is the same as Query with the addition of
3576// the ability to pass a context and additional request options.
3577//
3578// See Query for details on how to use this API operation.
3579//
3580// The context must be non-nil and will be used for request cancellation. If
3581// the context is nil a panic will occur. In the future the SDK may create
3582// sub-contexts for http.Requests. See https://golang.org/pkg/context/
3583// for more information on using Contexts.
3584func (c *DynamoDB) QueryWithContext(ctx aws.Context, input *QueryInput, opts ...request.Option) (*QueryOutput, error) {
3585	req, out := c.QueryRequest(input)
3586	req.SetContext(ctx)
3587	req.ApplyOptions(opts...)
3588	return out, req.Send()
3589}
3590
3591// QueryPages iterates over the pages of a Query operation,
3592// calling the "fn" function with the response data for each page. To stop
3593// iterating, return false from the fn function.
3594//
3595// See Query method for more information on how to use this operation.
3596//
3597// Note: This operation can generate multiple requests to a service.
3598//
3599//    // Example iterating over at most 3 pages of a Query operation.
3600//    pageNum := 0
3601//    err := client.QueryPages(params,
3602//        func(page *dynamodb.QueryOutput, lastPage bool) bool {
3603//            pageNum++
3604//            fmt.Println(page)
3605//            return pageNum <= 3
3606//        })
3607//
3608func (c *DynamoDB) QueryPages(input *QueryInput, fn func(*QueryOutput, bool) bool) error {
3609	return c.QueryPagesWithContext(aws.BackgroundContext(), input, fn)
3610}
3611
3612// QueryPagesWithContext same as QueryPages except
3613// it takes a Context and allows setting request options on the pages.
3614//
3615// The context must be non-nil and will be used for request cancellation. If
3616// the context is nil a panic will occur. In the future the SDK may create
3617// sub-contexts for http.Requests. See https://golang.org/pkg/context/
3618// for more information on using Contexts.
3619func (c *DynamoDB) QueryPagesWithContext(ctx aws.Context, input *QueryInput, fn func(*QueryOutput, bool) bool, opts ...request.Option) error {
3620	p := request.Pagination{
3621		NewRequest: func() (*request.Request, error) {
3622			var inCpy *QueryInput
3623			if input != nil {
3624				tmp := *input
3625				inCpy = &tmp
3626			}
3627			req, _ := c.QueryRequest(inCpy)
3628			req.SetContext(ctx)
3629			req.ApplyOptions(opts...)
3630			return req, nil
3631		},
3632	}
3633
3634	for p.Next() {
3635		if !fn(p.Page().(*QueryOutput), !p.HasNextPage()) {
3636			break
3637		}
3638	}
3639
3640	return p.Err()
3641}
3642
3643const opRestoreTableFromBackup = "RestoreTableFromBackup"
3644
3645// RestoreTableFromBackupRequest generates a "aws/request.Request" representing the
3646// client's request for the RestoreTableFromBackup operation. The "output" return
3647// value will be populated with the request's response once the request completes
3648// successfully.
3649//
3650// Use "Send" method on the returned Request to send the API call to the service.
3651// the "output" return value is not valid until after Send returns without error.
3652//
3653// See RestoreTableFromBackup for more information on using the RestoreTableFromBackup
3654// API call, and error handling.
3655//
3656// This method is useful when you want to inject custom logic or configuration
3657// into the SDK's request lifecycle. Such as custom headers, or retry logic.
3658//
3659//
3660//    // Example sending a request using the RestoreTableFromBackupRequest method.
3661//    req, resp := client.RestoreTableFromBackupRequest(params)
3662//
3663//    err := req.Send()
3664//    if err == nil { // resp is now filled
3665//        fmt.Println(resp)
3666//    }
3667//
3668// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/RestoreTableFromBackup
3669func (c *DynamoDB) RestoreTableFromBackupRequest(input *RestoreTableFromBackupInput) (req *request.Request, output *RestoreTableFromBackupOutput) {
3670	op := &request.Operation{
3671		Name:       opRestoreTableFromBackup,
3672		HTTPMethod: "POST",
3673		HTTPPath:   "/",
3674	}
3675
3676	if input == nil {
3677		input = &RestoreTableFromBackupInput{}
3678	}
3679
3680	output = &RestoreTableFromBackupOutput{}
3681	req = c.newRequest(op, input, output)
3682	// if custom endpoint for the request is set to a non empty string,
3683	// we skip the endpoint discovery workflow.
3684	if req.Config.Endpoint == nil || *req.Config.Endpoint == "" {
3685		if aws.BoolValue(req.Config.EnableEndpointDiscovery) {
3686			de := discovererDescribeEndpoints{
3687				Required:      false,
3688				EndpointCache: c.endpointCache,
3689				Params: map[string]*string{
3690					"op": aws.String(req.Operation.Name),
3691				},
3692				Client: c,
3693			}
3694
3695			for k, v := range de.Params {
3696				if v == nil {
3697					delete(de.Params, k)
3698				}
3699			}
3700
3701			req.Handlers.Build.PushFrontNamed(request.NamedHandler{
3702				Name: "crr.endpointdiscovery",
3703				Fn:   de.Handler,
3704			})
3705		}
3706	}
3707	return
3708}
3709
3710// RestoreTableFromBackup API operation for Amazon DynamoDB.
3711//
3712// Creates a new table from an existing backup. Any number of users can execute
3713// up to 4 concurrent restores (any type of restore) in a given account.
3714//
3715// You can call RestoreTableFromBackup at a maximum rate of 10 times per second.
3716//
3717// You must manually set up the following on the restored table:
3718//
3719//    * Auto scaling policies
3720//
3721//    * IAM policies
3722//
3723//    * Amazon CloudWatch metrics and alarms
3724//
3725//    * Tags
3726//
3727//    * Stream settings
3728//
3729//    * Time to Live (TTL) settings
3730//
3731// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
3732// with awserr.Error's Code and Message methods to get detailed information about
3733// the error.
3734//
3735// See the AWS API reference guide for Amazon DynamoDB's
3736// API operation RestoreTableFromBackup for usage and error information.
3737//
3738// Returned Error Types:
3739//   * TableAlreadyExistsException
3740//   A target table with the specified name already exists.
3741//
3742//   * TableInUseException
3743//   A target table with the specified name is either being created or deleted.
3744//
3745//   * BackupNotFoundException
3746//   Backup not found for the given BackupARN.
3747//
3748//   * BackupInUseException
3749//   There is another ongoing conflicting backup control plane operation on the
3750//   table. The backup is either being created, deleted or restored to a table.
3751//
3752//   * LimitExceededException
3753//   There is no limit to the number of daily on-demand backups that can be taken.
3754//
3755//   Up to 50 simultaneous table operations are allowed per account. These operations
3756//   include CreateTable, UpdateTable, DeleteTable,UpdateTimeToLive, RestoreTableFromBackup,
3757//   and RestoreTableToPointInTime.
3758//
3759//   The only exception is when you are creating a table with one or more secondary
3760//   indexes. You can have up to 25 such requests running at a time; however,
3761//   if the table or index specifications are complex, DynamoDB might temporarily
3762//   reduce the number of concurrent operations.
3763//
3764//   There is a soft account limit of 256 tables.
3765//
3766//   * InternalServerError
3767//   An error occurred on the server side.
3768//
3769// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/RestoreTableFromBackup
3770func (c *DynamoDB) RestoreTableFromBackup(input *RestoreTableFromBackupInput) (*RestoreTableFromBackupOutput, error) {
3771	req, out := c.RestoreTableFromBackupRequest(input)
3772	return out, req.Send()
3773}
3774
3775// RestoreTableFromBackupWithContext is the same as RestoreTableFromBackup with the addition of
3776// the ability to pass a context and additional request options.
3777//
3778// See RestoreTableFromBackup for details on how to use this API operation.
3779//
3780// The context must be non-nil and will be used for request cancellation. If
3781// the context is nil a panic will occur. In the future the SDK may create
3782// sub-contexts for http.Requests. See https://golang.org/pkg/context/
3783// for more information on using Contexts.
3784func (c *DynamoDB) RestoreTableFromBackupWithContext(ctx aws.Context, input *RestoreTableFromBackupInput, opts ...request.Option) (*RestoreTableFromBackupOutput, error) {
3785	req, out := c.RestoreTableFromBackupRequest(input)
3786	req.SetContext(ctx)
3787	req.ApplyOptions(opts...)
3788	return out, req.Send()
3789}
3790
3791const opRestoreTableToPointInTime = "RestoreTableToPointInTime"
3792
3793// RestoreTableToPointInTimeRequest generates a "aws/request.Request" representing the
3794// client's request for the RestoreTableToPointInTime operation. The "output" return
3795// value will be populated with the request's response once the request completes
3796// successfully.
3797//
3798// Use "Send" method on the returned Request to send the API call to the service.
3799// the "output" return value is not valid until after Send returns without error.
3800//
3801// See RestoreTableToPointInTime for more information on using the RestoreTableToPointInTime
3802// API call, and error handling.
3803//
3804// This method is useful when you want to inject custom logic or configuration
3805// into the SDK's request lifecycle. Such as custom headers, or retry logic.
3806//
3807//
3808//    // Example sending a request using the RestoreTableToPointInTimeRequest method.
3809//    req, resp := client.RestoreTableToPointInTimeRequest(params)
3810//
3811//    err := req.Send()
3812//    if err == nil { // resp is now filled
3813//        fmt.Println(resp)
3814//    }
3815//
3816// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/RestoreTableToPointInTime
3817func (c *DynamoDB) RestoreTableToPointInTimeRequest(input *RestoreTableToPointInTimeInput) (req *request.Request, output *RestoreTableToPointInTimeOutput) {
3818	op := &request.Operation{
3819		Name:       opRestoreTableToPointInTime,
3820		HTTPMethod: "POST",
3821		HTTPPath:   "/",
3822	}
3823
3824	if input == nil {
3825		input = &RestoreTableToPointInTimeInput{}
3826	}
3827
3828	output = &RestoreTableToPointInTimeOutput{}
3829	req = c.newRequest(op, input, output)
3830	// if custom endpoint for the request is set to a non empty string,
3831	// we skip the endpoint discovery workflow.
3832	if req.Config.Endpoint == nil || *req.Config.Endpoint == "" {
3833		if aws.BoolValue(req.Config.EnableEndpointDiscovery) {
3834			de := discovererDescribeEndpoints{
3835				Required:      false,
3836				EndpointCache: c.endpointCache,
3837				Params: map[string]*string{
3838					"op": aws.String(req.Operation.Name),
3839				},
3840				Client: c,
3841			}
3842
3843			for k, v := range de.Params {
3844				if v == nil {
3845					delete(de.Params, k)
3846				}
3847			}
3848
3849			req.Handlers.Build.PushFrontNamed(request.NamedHandler{
3850				Name: "crr.endpointdiscovery",
3851				Fn:   de.Handler,
3852			})
3853		}
3854	}
3855	return
3856}
3857
3858// RestoreTableToPointInTime API operation for Amazon DynamoDB.
3859//
3860// Restores the specified table to the specified point in time within EarliestRestorableDateTime
3861// and LatestRestorableDateTime. You can restore your table to any point in
3862// time during the last 35 days. Any number of users can execute up to 4 concurrent
3863// restores (any type of restore) in a given account.
3864//
3865// When you restore using point in time recovery, DynamoDB restores your table
3866// data to the state based on the selected date and time (day:hour:minute:second)
3867// to a new table.
3868//
3869// Along with data, the following are also included on the new restored table
3870// using point in time recovery:
3871//
3872//    * Global secondary indexes (GSIs)
3873//
3874//    * Local secondary indexes (LSIs)
3875//
3876//    * Provisioned read and write capacity
3877//
3878//    * Encryption settings All these settings come from the current settings
3879//    of the source table at the time of restore.
3880//
3881// You must manually set up the following on the restored table:
3882//
3883//    * Auto scaling policies
3884//
3885//    * IAM policies
3886//
3887//    * Amazon CloudWatch metrics and alarms
3888//
3889//    * Tags
3890//
3891//    * Stream settings
3892//
3893//    * Time to Live (TTL) settings
3894//
3895//    * Point in time recovery settings
3896//
3897// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
3898// with awserr.Error's Code and Message methods to get detailed information about
3899// the error.
3900//
3901// See the AWS API reference guide for Amazon DynamoDB's
3902// API operation RestoreTableToPointInTime for usage and error information.
3903//
3904// Returned Error Types:
3905//   * TableAlreadyExistsException
3906//   A target table with the specified name already exists.
3907//
3908//   * TableNotFoundException
3909//   A source table with the name TableName does not currently exist within the
3910//   subscriber's account.
3911//
3912//   * TableInUseException
3913//   A target table with the specified name is either being created or deleted.
3914//
3915//   * LimitExceededException
3916//   There is no limit to the number of daily on-demand backups that can be taken.
3917//
3918//   Up to 50 simultaneous table operations are allowed per account. These operations
3919//   include CreateTable, UpdateTable, DeleteTable,UpdateTimeToLive, RestoreTableFromBackup,
3920//   and RestoreTableToPointInTime.
3921//
3922//   The only exception is when you are creating a table with one or more secondary
3923//   indexes. You can have up to 25 such requests running at a time; however,
3924//   if the table or index specifications are complex, DynamoDB might temporarily
3925//   reduce the number of concurrent operations.
3926//
3927//   There is a soft account limit of 256 tables.
3928//
3929//   * InvalidRestoreTimeException
3930//   An invalid restore time was specified. RestoreDateTime must be between EarliestRestorableDateTime
3931//   and LatestRestorableDateTime.
3932//
3933//   * PointInTimeRecoveryUnavailableException
3934//   Point in time recovery has not yet been enabled for this source table.
3935//
3936//   * InternalServerError
3937//   An error occurred on the server side.
3938//
3939// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/RestoreTableToPointInTime
3940func (c *DynamoDB) RestoreTableToPointInTime(input *RestoreTableToPointInTimeInput) (*RestoreTableToPointInTimeOutput, error) {
3941	req, out := c.RestoreTableToPointInTimeRequest(input)
3942	return out, req.Send()
3943}
3944
3945// RestoreTableToPointInTimeWithContext is the same as RestoreTableToPointInTime with the addition of
3946// the ability to pass a context and additional request options.
3947//
3948// See RestoreTableToPointInTime for details on how to use this API operation.
3949//
3950// The context must be non-nil and will be used for request cancellation. If
3951// the context is nil a panic will occur. In the future the SDK may create
3952// sub-contexts for http.Requests. See https://golang.org/pkg/context/
3953// for more information on using Contexts.
3954func (c *DynamoDB) RestoreTableToPointInTimeWithContext(ctx aws.Context, input *RestoreTableToPointInTimeInput, opts ...request.Option) (*RestoreTableToPointInTimeOutput, error) {
3955	req, out := c.RestoreTableToPointInTimeRequest(input)
3956	req.SetContext(ctx)
3957	req.ApplyOptions(opts...)
3958	return out, req.Send()
3959}
3960
3961const opScan = "Scan"
3962
3963// ScanRequest generates a "aws/request.Request" representing the
3964// client's request for the Scan operation. The "output" return
3965// value will be populated with the request's response once the request completes
3966// successfully.
3967//
3968// Use "Send" method on the returned Request to send the API call to the service.
3969// the "output" return value is not valid until after Send returns without error.
3970//
3971// See Scan for more information on using the Scan
3972// API call, and error handling.
3973//
3974// This method is useful when you want to inject custom logic or configuration
3975// into the SDK's request lifecycle. Such as custom headers, or retry logic.
3976//
3977//
3978//    // Example sending a request using the ScanRequest method.
3979//    req, resp := client.ScanRequest(params)
3980//
3981//    err := req.Send()
3982//    if err == nil { // resp is now filled
3983//        fmt.Println(resp)
3984//    }
3985//
3986// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/Scan
3987func (c *DynamoDB) ScanRequest(input *ScanInput) (req *request.Request, output *ScanOutput) {
3988	op := &request.Operation{
3989		Name:       opScan,
3990		HTTPMethod: "POST",
3991		HTTPPath:   "/",
3992		Paginator: &request.Paginator{
3993			InputTokens:     []string{"ExclusiveStartKey"},
3994			OutputTokens:    []string{"LastEvaluatedKey"},
3995			LimitToken:      "Limit",
3996			TruncationToken: "",
3997		},
3998	}
3999
4000	if input == nil {
4001		input = &ScanInput{}
4002	}
4003
4004	output = &ScanOutput{}
4005	req = c.newRequest(op, input, output)
4006	// if custom endpoint for the request is set to a non empty string,
4007	// we skip the endpoint discovery workflow.
4008	if req.Config.Endpoint == nil || *req.Config.Endpoint == "" {
4009		if aws.BoolValue(req.Config.EnableEndpointDiscovery) {
4010			de := discovererDescribeEndpoints{
4011				Required:      false,
4012				EndpointCache: c.endpointCache,
4013				Params: map[string]*string{
4014					"op": aws.String(req.Operation.Name),
4015				},
4016				Client: c,
4017			}
4018
4019			for k, v := range de.Params {
4020				if v == nil {
4021					delete(de.Params, k)
4022				}
4023			}
4024
4025			req.Handlers.Build.PushFrontNamed(request.NamedHandler{
4026				Name: "crr.endpointdiscovery",
4027				Fn:   de.Handler,
4028			})
4029		}
4030	}
4031	return
4032}
4033
4034// Scan API operation for Amazon DynamoDB.
4035//
4036// The Scan operation returns one or more items and item attributes by accessing
4037// every item in a table or a secondary index. To have DynamoDB return fewer
4038// items, you can provide a FilterExpression operation.
4039//
4040// If the total number of scanned items exceeds the maximum dataset size limit
4041// of 1 MB, the scan stops and results are returned to the user as a LastEvaluatedKey
4042// value to continue the scan in a subsequent operation. The results also include
4043// the number of items exceeding the limit. A scan can result in no table data
4044// meeting the filter criteria.
4045//
4046// A single Scan operation reads up to the maximum number of items set (if using
4047// the Limit parameter) or a maximum of 1 MB of data and then apply any filtering
4048// to the results using FilterExpression. If LastEvaluatedKey is present in
4049// the response, you need to paginate the result set. For more information,
4050// see Paginating the Results (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Scan.html#Scan.Pagination)
4051// in the Amazon DynamoDB Developer Guide.
4052//
4053// Scan operations proceed sequentially; however, for faster performance on
4054// a large table or secondary index, applications can request a parallel Scan
4055// operation by providing the Segment and TotalSegments parameters. For more
4056// information, see Parallel Scan (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Scan.html#Scan.ParallelScan)
4057// in the Amazon DynamoDB Developer Guide.
4058//
4059// Scan uses eventually consistent reads when accessing the data in a table;
4060// therefore, the result set might not include the changes to data in the table
4061// immediately before the operation began. If you need a consistent copy of
4062// the data, as of the time that the Scan begins, you can set the ConsistentRead
4063// parameter to true.
4064//
4065// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
4066// with awserr.Error's Code and Message methods to get detailed information about
4067// the error.
4068//
4069// See the AWS API reference guide for Amazon DynamoDB's
4070// API operation Scan for usage and error information.
4071//
4072// Returned Error Types:
4073//   * ProvisionedThroughputExceededException
4074//   Your request rate is too high. The AWS SDKs for DynamoDB automatically retry
4075//   requests that receive this exception. Your request is eventually successful,
4076//   unless your retry queue is too large to finish. Reduce the frequency of requests
4077//   and use exponential backoff. For more information, go to Error Retries and
4078//   Exponential Backoff (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Programming.Errors.html#Programming.Errors.RetryAndBackoff)
4079//   in the Amazon DynamoDB Developer Guide.
4080//
4081//   * ResourceNotFoundException
4082//   The operation tried to access a nonexistent table or index. The resource
4083//   might not be specified correctly, or its status might not be ACTIVE.
4084//
4085//   * RequestLimitExceeded
4086//   Throughput exceeds the current throughput limit for your account. Please
4087//   contact AWS Support at AWS Support (https://aws.amazon.com/support) to request
4088//   a limit increase.
4089//
4090//   * InternalServerError
4091//   An error occurred on the server side.
4092//
4093// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/Scan
4094func (c *DynamoDB) Scan(input *ScanInput) (*ScanOutput, error) {
4095	req, out := c.ScanRequest(input)
4096	return out, req.Send()
4097}
4098
4099// ScanWithContext is the same as Scan with the addition of
4100// the ability to pass a context and additional request options.
4101//
4102// See Scan for details on how to use this API operation.
4103//
4104// The context must be non-nil and will be used for request cancellation. If
4105// the context is nil a panic will occur. In the future the SDK may create
4106// sub-contexts for http.Requests. See https://golang.org/pkg/context/
4107// for more information on using Contexts.
4108func (c *DynamoDB) ScanWithContext(ctx aws.Context, input *ScanInput, opts ...request.Option) (*ScanOutput, error) {
4109	req, out := c.ScanRequest(input)
4110	req.SetContext(ctx)
4111	req.ApplyOptions(opts...)
4112	return out, req.Send()
4113}
4114
4115// ScanPages iterates over the pages of a Scan operation,
4116// calling the "fn" function with the response data for each page. To stop
4117// iterating, return false from the fn function.
4118//
4119// See Scan method for more information on how to use this operation.
4120//
4121// Note: This operation can generate multiple requests to a service.
4122//
4123//    // Example iterating over at most 3 pages of a Scan operation.
4124//    pageNum := 0
4125//    err := client.ScanPages(params,
4126//        func(page *dynamodb.ScanOutput, lastPage bool) bool {
4127//            pageNum++
4128//            fmt.Println(page)
4129//            return pageNum <= 3
4130//        })
4131//
4132func (c *DynamoDB) ScanPages(input *ScanInput, fn func(*ScanOutput, bool) bool) error {
4133	return c.ScanPagesWithContext(aws.BackgroundContext(), input, fn)
4134}
4135
4136// ScanPagesWithContext same as ScanPages except
4137// it takes a Context and allows setting request options on the pages.
4138//
4139// The context must be non-nil and will be used for request cancellation. If
4140// the context is nil a panic will occur. In the future the SDK may create
4141// sub-contexts for http.Requests. See https://golang.org/pkg/context/
4142// for more information on using Contexts.
4143func (c *DynamoDB) ScanPagesWithContext(ctx aws.Context, input *ScanInput, fn func(*ScanOutput, bool) bool, opts ...request.Option) error {
4144	p := request.Pagination{
4145		NewRequest: func() (*request.Request, error) {
4146			var inCpy *ScanInput
4147			if input != nil {
4148				tmp := *input
4149				inCpy = &tmp
4150			}
4151			req, _ := c.ScanRequest(inCpy)
4152			req.SetContext(ctx)
4153			req.ApplyOptions(opts...)
4154			return req, nil
4155		},
4156	}
4157
4158	for p.Next() {
4159		if !fn(p.Page().(*ScanOutput), !p.HasNextPage()) {
4160			break
4161		}
4162	}
4163
4164	return p.Err()
4165}
4166
4167const opTagResource = "TagResource"
4168
4169// TagResourceRequest generates a "aws/request.Request" representing the
4170// client's request for the TagResource operation. The "output" return
4171// value will be populated with the request's response once the request completes
4172// successfully.
4173//
4174// Use "Send" method on the returned Request to send the API call to the service.
4175// the "output" return value is not valid until after Send returns without error.
4176//
4177// See TagResource for more information on using the TagResource
4178// API call, and error handling.
4179//
4180// This method is useful when you want to inject custom logic or configuration
4181// into the SDK's request lifecycle. Such as custom headers, or retry logic.
4182//
4183//
4184//    // Example sending a request using the TagResourceRequest method.
4185//    req, resp := client.TagResourceRequest(params)
4186//
4187//    err := req.Send()
4188//    if err == nil { // resp is now filled
4189//        fmt.Println(resp)
4190//    }
4191//
4192// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/TagResource
4193func (c *DynamoDB) TagResourceRequest(input *TagResourceInput) (req *request.Request, output *TagResourceOutput) {
4194	op := &request.Operation{
4195		Name:       opTagResource,
4196		HTTPMethod: "POST",
4197		HTTPPath:   "/",
4198	}
4199
4200	if input == nil {
4201		input = &TagResourceInput{}
4202	}
4203
4204	output = &TagResourceOutput{}
4205	req = c.newRequest(op, input, output)
4206	req.Handlers.Unmarshal.Swap(jsonrpc.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
4207	// if custom endpoint for the request is set to a non empty string,
4208	// we skip the endpoint discovery workflow.
4209	if req.Config.Endpoint == nil || *req.Config.Endpoint == "" {
4210		if aws.BoolValue(req.Config.EnableEndpointDiscovery) {
4211			de := discovererDescribeEndpoints{
4212				Required:      false,
4213				EndpointCache: c.endpointCache,
4214				Params: map[string]*string{
4215					"op": aws.String(req.Operation.Name),
4216				},
4217				Client: c,
4218			}
4219
4220			for k, v := range de.Params {
4221				if v == nil {
4222					delete(de.Params, k)
4223				}
4224			}
4225
4226			req.Handlers.Build.PushFrontNamed(request.NamedHandler{
4227				Name: "crr.endpointdiscovery",
4228				Fn:   de.Handler,
4229			})
4230		}
4231	}
4232	return
4233}
4234
4235// TagResource API operation for Amazon DynamoDB.
4236//
4237// Associate a set of tags with an Amazon DynamoDB resource. You can then activate
4238// these user-defined tags so that they appear on the Billing and Cost Management
4239// console for cost allocation tracking. You can call TagResource up to five
4240// times per second, per account.
4241//
4242// For an overview on tagging DynamoDB resources, see Tagging for DynamoDB (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Tagging.html)
4243// in the Amazon DynamoDB Developer Guide.
4244//
4245// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
4246// with awserr.Error's Code and Message methods to get detailed information about
4247// the error.
4248//
4249// See the AWS API reference guide for Amazon DynamoDB's
4250// API operation TagResource for usage and error information.
4251//
4252// Returned Error Types:
4253//   * LimitExceededException
4254//   There is no limit to the number of daily on-demand backups that can be taken.
4255//
4256//   Up to 50 simultaneous table operations are allowed per account. These operations
4257//   include CreateTable, UpdateTable, DeleteTable,UpdateTimeToLive, RestoreTableFromBackup,
4258//   and RestoreTableToPointInTime.
4259//
4260//   The only exception is when you are creating a table with one or more secondary
4261//   indexes. You can have up to 25 such requests running at a time; however,
4262//   if the table or index specifications are complex, DynamoDB might temporarily
4263//   reduce the number of concurrent operations.
4264//
4265//   There is a soft account limit of 256 tables.
4266//
4267//   * ResourceNotFoundException
4268//   The operation tried to access a nonexistent table or index. The resource
4269//   might not be specified correctly, or its status might not be ACTIVE.
4270//
4271//   * InternalServerError
4272//   An error occurred on the server side.
4273//
4274//   * ResourceInUseException
4275//   The operation conflicts with the resource's availability. For example, you
4276//   attempted to recreate an existing table, or tried to delete a table currently
4277//   in the CREATING state.
4278//
4279// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/TagResource
4280func (c *DynamoDB) TagResource(input *TagResourceInput) (*TagResourceOutput, error) {
4281	req, out := c.TagResourceRequest(input)
4282	return out, req.Send()
4283}
4284
4285// TagResourceWithContext is the same as TagResource with the addition of
4286// the ability to pass a context and additional request options.
4287//
4288// See TagResource for details on how to use this API operation.
4289//
4290// The context must be non-nil and will be used for request cancellation. If
4291// the context is nil a panic will occur. In the future the SDK may create
4292// sub-contexts for http.Requests. See https://golang.org/pkg/context/
4293// for more information on using Contexts.
4294func (c *DynamoDB) TagResourceWithContext(ctx aws.Context, input *TagResourceInput, opts ...request.Option) (*TagResourceOutput, error) {
4295	req, out := c.TagResourceRequest(input)
4296	req.SetContext(ctx)
4297	req.ApplyOptions(opts...)
4298	return out, req.Send()
4299}
4300
4301const opTransactGetItems = "TransactGetItems"
4302
4303// TransactGetItemsRequest generates a "aws/request.Request" representing the
4304// client's request for the TransactGetItems operation. The "output" return
4305// value will be populated with the request's response once the request completes
4306// successfully.
4307//
4308// Use "Send" method on the returned Request to send the API call to the service.
4309// the "output" return value is not valid until after Send returns without error.
4310//
4311// See TransactGetItems for more information on using the TransactGetItems
4312// API call, and error handling.
4313//
4314// This method is useful when you want to inject custom logic or configuration
4315// into the SDK's request lifecycle. Such as custom headers, or retry logic.
4316//
4317//
4318//    // Example sending a request using the TransactGetItemsRequest method.
4319//    req, resp := client.TransactGetItemsRequest(params)
4320//
4321//    err := req.Send()
4322//    if err == nil { // resp is now filled
4323//        fmt.Println(resp)
4324//    }
4325//
4326// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/TransactGetItems
4327func (c *DynamoDB) TransactGetItemsRequest(input *TransactGetItemsInput) (req *request.Request, output *TransactGetItemsOutput) {
4328	op := &request.Operation{
4329		Name:       opTransactGetItems,
4330		HTTPMethod: "POST",
4331		HTTPPath:   "/",
4332	}
4333
4334	if input == nil {
4335		input = &TransactGetItemsInput{}
4336	}
4337
4338	output = &TransactGetItemsOutput{}
4339	req = c.newRequest(op, input, output)
4340	// if custom endpoint for the request is set to a non empty string,
4341	// we skip the endpoint discovery workflow.
4342	if req.Config.Endpoint == nil || *req.Config.Endpoint == "" {
4343		if aws.BoolValue(req.Config.EnableEndpointDiscovery) {
4344			de := discovererDescribeEndpoints{
4345				Required:      false,
4346				EndpointCache: c.endpointCache,
4347				Params: map[string]*string{
4348					"op": aws.String(req.Operation.Name),
4349				},
4350				Client: c,
4351			}
4352
4353			for k, v := range de.Params {
4354				if v == nil {
4355					delete(de.Params, k)
4356				}
4357			}
4358
4359			req.Handlers.Build.PushFrontNamed(request.NamedHandler{
4360				Name: "crr.endpointdiscovery",
4361				Fn:   de.Handler,
4362			})
4363		}
4364	}
4365	return
4366}
4367
4368// TransactGetItems API operation for Amazon DynamoDB.
4369//
4370// TransactGetItems is a synchronous operation that atomically retrieves multiple
4371// items from one or more tables (but not from indexes) in a single account
4372// and Region. A TransactGetItems call can contain up to 25 TransactGetItem
4373// objects, each of which contains a Get structure that specifies an item to
4374// retrieve from a table in the account and Region. A call to TransactGetItems
4375// cannot retrieve items from tables in more than one AWS account or Region.
4376// The aggregate size of the items in the transaction cannot exceed 4 MB.
4377//
4378// DynamoDB rejects the entire TransactGetItems request if any of the following
4379// is true:
4380//
4381//    * A conflicting operation is in the process of updating an item to be
4382//    read.
4383//
4384//    * There is insufficient provisioned capacity for the transaction to be
4385//    completed.
4386//
4387//    * There is a user error, such as an invalid data format.
4388//
4389//    * The aggregate size of the items in the transaction cannot exceed 4 MB.
4390//
4391// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
4392// with awserr.Error's Code and Message methods to get detailed information about
4393// the error.
4394//
4395// See the AWS API reference guide for Amazon DynamoDB's
4396// API operation TransactGetItems for usage and error information.
4397//
4398// Returned Error Types:
4399//   * ResourceNotFoundException
4400//   The operation tried to access a nonexistent table or index. The resource
4401//   might not be specified correctly, or its status might not be ACTIVE.
4402//
4403//   * TransactionCanceledException
4404//   The entire transaction request was canceled.
4405//
4406//   DynamoDB cancels a TransactWriteItems request under the following circumstances:
4407//
4408//      * A condition in one of the condition expressions is not met.
4409//
4410//      * A table in the TransactWriteItems request is in a different account
4411//      or region.
4412//
4413//      * More than one action in the TransactWriteItems operation targets the
4414//      same item.
4415//
4416//      * There is insufficient provisioned capacity for the transaction to be
4417//      completed.
4418//
4419//      * An item size becomes too large (larger than 400 KB), or a local secondary
4420//      index (LSI) becomes too large, or a similar validation error occurs because
4421//      of changes made by the transaction.
4422//
4423//      * There is a user error, such as an invalid data format.
4424//
4425//   DynamoDB cancels a TransactGetItems request under the following circumstances:
4426//
4427//      * There is an ongoing TransactGetItems operation that conflicts with a
4428//      concurrent PutItem, UpdateItem, DeleteItem or TransactWriteItems request.
4429//      In this case the TransactGetItems operation fails with a TransactionCanceledException.
4430//
4431//      * A table in the TransactGetItems request is in a different account or
4432//      region.
4433//
4434//      * There is insufficient provisioned capacity for the transaction to be
4435//      completed.
4436//
4437//      * There is a user error, such as an invalid data format.
4438//
4439//   If using Java, DynamoDB lists the cancellation reasons on the CancellationReasons
4440//   property. This property is not set for other languages. Transaction cancellation
4441//   reasons are ordered in the order of requested items, if an item has no error
4442//   it will have NONE code and Null message.
4443//
4444//   Cancellation reason codes and possible error messages:
4445//
4446//      * No Errors: Code: NONE Message: null
4447//
4448//      * Conditional Check Failed: Code: ConditionalCheckFailed Message: The
4449//      conditional request failed.
4450//
4451//      * Item Collection Size Limit Exceeded: Code: ItemCollectionSizeLimitExceeded
4452//      Message: Collection size exceeded.
4453//
4454//      * Transaction Conflict: Code: TransactionConflict Message: Transaction
4455//      is ongoing for the item.
4456//
4457//      * Provisioned Throughput Exceeded: Code: ProvisionedThroughputExceeded
4458//      Messages: The level of configured provisioned throughput for the table
4459//      was exceeded. Consider increasing your provisioning level with the UpdateTable
4460//      API. This Message is received when provisioned throughput is exceeded
4461//      is on a provisioned DynamoDB table. The level of configured provisioned
4462//      throughput for one or more global secondary indexes of the table was exceeded.
4463//      Consider increasing your provisioning level for the under-provisioned
4464//      global secondary indexes with the UpdateTable API. This message is returned
4465//      when provisioned throughput is exceeded is on a provisioned GSI.
4466//
4467//      * Throttling Error: Code: ThrottlingError Messages: Throughput exceeds
4468//      the current capacity of your table or index. DynamoDB is automatically
4469//      scaling your table or index so please try again shortly. If exceptions
4470//      persist, check if you have a hot key: https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/bp-partition-key-design.html.
4471//      This message is returned when writes get throttled on an On-Demand table
4472//      as DynamoDB is automatically scaling the table. Throughput exceeds the
4473//      current capacity for one or more global secondary indexes. DynamoDB is
4474//      automatically scaling your index so please try again shortly. This message
4475//      is returned when when writes get throttled on an On-Demand GSI as DynamoDB
4476//      is automatically scaling the GSI.
4477//
4478//      * Validation Error: Code: ValidationError Messages: One or more parameter
4479//      values were invalid. The update expression attempted to update the secondary
4480//      index key beyond allowed size limits. The update expression attempted
4481//      to update the secondary index key to unsupported type. An operand in the
4482//      update expression has an incorrect data type. Item size to update has
4483//      exceeded the maximum allowed size. Number overflow. Attempting to store
4484//      a number with magnitude larger than supported range. Type mismatch for
4485//      attribute to update. Nesting Levels have exceeded supported limits. The
4486//      document path provided in the update expression is invalid for update.
4487//      The provided expression refers to an attribute that does not exist in
4488//      the item.
4489//
4490//   * ProvisionedThroughputExceededException
4491//   Your request rate is too high. The AWS SDKs for DynamoDB automatically retry
4492//   requests that receive this exception. Your request is eventually successful,
4493//   unless your retry queue is too large to finish. Reduce the frequency of requests
4494//   and use exponential backoff. For more information, go to Error Retries and
4495//   Exponential Backoff (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Programming.Errors.html#Programming.Errors.RetryAndBackoff)
4496//   in the Amazon DynamoDB Developer Guide.
4497//
4498//   * RequestLimitExceeded
4499//   Throughput exceeds the current throughput limit for your account. Please
4500//   contact AWS Support at AWS Support (https://aws.amazon.com/support) to request
4501//   a limit increase.
4502//
4503//   * InternalServerError
4504//   An error occurred on the server side.
4505//
4506// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/TransactGetItems
4507func (c *DynamoDB) TransactGetItems(input *TransactGetItemsInput) (*TransactGetItemsOutput, error) {
4508	req, out := c.TransactGetItemsRequest(input)
4509	return out, req.Send()
4510}
4511
4512// TransactGetItemsWithContext is the same as TransactGetItems with the addition of
4513// the ability to pass a context and additional request options.
4514//
4515// See TransactGetItems for details on how to use this API operation.
4516//
4517// The context must be non-nil and will be used for request cancellation. If
4518// the context is nil a panic will occur. In the future the SDK may create
4519// sub-contexts for http.Requests. See https://golang.org/pkg/context/
4520// for more information on using Contexts.
4521func (c *DynamoDB) TransactGetItemsWithContext(ctx aws.Context, input *TransactGetItemsInput, opts ...request.Option) (*TransactGetItemsOutput, error) {
4522	req, out := c.TransactGetItemsRequest(input)
4523	req.SetContext(ctx)
4524	req.ApplyOptions(opts...)
4525	return out, req.Send()
4526}
4527
4528const opTransactWriteItems = "TransactWriteItems"
4529
4530// TransactWriteItemsRequest generates a "aws/request.Request" representing the
4531// client's request for the TransactWriteItems operation. The "output" return
4532// value will be populated with the request's response once the request completes
4533// successfully.
4534//
4535// Use "Send" method on the returned Request to send the API call to the service.
4536// the "output" return value is not valid until after Send returns without error.
4537//
4538// See TransactWriteItems for more information on using the TransactWriteItems
4539// API call, and error handling.
4540//
4541// This method is useful when you want to inject custom logic or configuration
4542// into the SDK's request lifecycle. Such as custom headers, or retry logic.
4543//
4544//
4545//    // Example sending a request using the TransactWriteItemsRequest method.
4546//    req, resp := client.TransactWriteItemsRequest(params)
4547//
4548//    err := req.Send()
4549//    if err == nil { // resp is now filled
4550//        fmt.Println(resp)
4551//    }
4552//
4553// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/TransactWriteItems
4554func (c *DynamoDB) TransactWriteItemsRequest(input *TransactWriteItemsInput) (req *request.Request, output *TransactWriteItemsOutput) {
4555	op := &request.Operation{
4556		Name:       opTransactWriteItems,
4557		HTTPMethod: "POST",
4558		HTTPPath:   "/",
4559	}
4560
4561	if input == nil {
4562		input = &TransactWriteItemsInput{}
4563	}
4564
4565	output = &TransactWriteItemsOutput{}
4566	req = c.newRequest(op, input, output)
4567	// if custom endpoint for the request is set to a non empty string,
4568	// we skip the endpoint discovery workflow.
4569	if req.Config.Endpoint == nil || *req.Config.Endpoint == "" {
4570		if aws.BoolValue(req.Config.EnableEndpointDiscovery) {
4571			de := discovererDescribeEndpoints{
4572				Required:      false,
4573				EndpointCache: c.endpointCache,
4574				Params: map[string]*string{
4575					"op": aws.String(req.Operation.Name),
4576				},
4577				Client: c,
4578			}
4579
4580			for k, v := range de.Params {
4581				if v == nil {
4582					delete(de.Params, k)
4583				}
4584			}
4585
4586			req.Handlers.Build.PushFrontNamed(request.NamedHandler{
4587				Name: "crr.endpointdiscovery",
4588				Fn:   de.Handler,
4589			})
4590		}
4591	}
4592	return
4593}
4594
4595// TransactWriteItems API operation for Amazon DynamoDB.
4596//
4597// TransactWriteItems is a synchronous write operation that groups up to 25
4598// action requests. These actions can target items in different tables, but
4599// not in different AWS accounts or Regions, and no two actions can target the
4600// same item. For example, you cannot both ConditionCheck and Update the same
4601// item. The aggregate size of the items in the transaction cannot exceed 4
4602// MB.
4603//
4604// The actions are completed atomically so that either all of them succeed,
4605// or all of them fail. They are defined by the following objects:
4606//
4607//    * Put — Initiates a PutItem operation to write a new item. This structure
4608//    specifies the primary key of the item to be written, the name of the table
4609//    to write it in, an optional condition expression that must be satisfied
4610//    for the write to succeed, a list of the item's attributes, and a field
4611//    indicating whether to retrieve the item's attributes if the condition
4612//    is not met.
4613//
4614//    * Update — Initiates an UpdateItem operation to update an existing item.
4615//    This structure specifies the primary key of the item to be updated, the
4616//    name of the table where it resides, an optional condition expression that
4617//    must be satisfied for the update to succeed, an expression that defines
4618//    one or more attributes to be updated, and a field indicating whether to
4619//    retrieve the item's attributes if the condition is not met.
4620//
4621//    * Delete — Initiates a DeleteItem operation to delete an existing item.
4622//    This structure specifies the primary key of the item to be deleted, the
4623//    name of the table where it resides, an optional condition expression that
4624//    must be satisfied for the deletion to succeed, and a field indicating
4625//    whether to retrieve the item's attributes if the condition is not met.
4626//
4627//    * ConditionCheck — Applies a condition to an item that is not being
4628//    modified by the transaction. This structure specifies the primary key
4629//    of the item to be checked, the name of the table where it resides, a condition
4630//    expression that must be satisfied for the transaction to succeed, and
4631//    a field indicating whether to retrieve the item's attributes if the condition
4632//    is not met.
4633//
4634// DynamoDB rejects the entire TransactWriteItems request if any of the following
4635// is true:
4636//
4637//    * A condition in one of the condition expressions is not met.
4638//
4639//    * An ongoing operation is in the process of updating the same item.
4640//
4641//    * There is insufficient provisioned capacity for the transaction to be
4642//    completed.
4643//
4644//    * An item size becomes too large (bigger than 400 KB), a local secondary
4645//    index (LSI) becomes too large, or a similar validation error occurs because
4646//    of changes made by the transaction.
4647//
4648//    * The aggregate size of the items in the transaction exceeds 4 MB.
4649//
4650//    * There is a user error, such as an invalid data format.
4651//
4652// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
4653// with awserr.Error's Code and Message methods to get detailed information about
4654// the error.
4655//
4656// See the AWS API reference guide for Amazon DynamoDB's
4657// API operation TransactWriteItems for usage and error information.
4658//
4659// Returned Error Types:
4660//   * ResourceNotFoundException
4661//   The operation tried to access a nonexistent table or index. The resource
4662//   might not be specified correctly, or its status might not be ACTIVE.
4663//
4664//   * TransactionCanceledException
4665//   The entire transaction request was canceled.
4666//
4667//   DynamoDB cancels a TransactWriteItems request under the following circumstances:
4668//
4669//      * A condition in one of the condition expressions is not met.
4670//
4671//      * A table in the TransactWriteItems request is in a different account
4672//      or region.
4673//
4674//      * More than one action in the TransactWriteItems operation targets the
4675//      same item.
4676//
4677//      * There is insufficient provisioned capacity for the transaction to be
4678//      completed.
4679//
4680//      * An item size becomes too large (larger than 400 KB), or a local secondary
4681//      index (LSI) becomes too large, or a similar validation error occurs because
4682//      of changes made by the transaction.
4683//
4684//      * There is a user error, such as an invalid data format.
4685//
4686//   DynamoDB cancels a TransactGetItems request under the following circumstances:
4687//
4688//      * There is an ongoing TransactGetItems operation that conflicts with a
4689//      concurrent PutItem, UpdateItem, DeleteItem or TransactWriteItems request.
4690//      In this case the TransactGetItems operation fails with a TransactionCanceledException.
4691//
4692//      * A table in the TransactGetItems request is in a different account or
4693//      region.
4694//
4695//      * There is insufficient provisioned capacity for the transaction to be
4696//      completed.
4697//
4698//      * There is a user error, such as an invalid data format.
4699//
4700//   If using Java, DynamoDB lists the cancellation reasons on the CancellationReasons
4701//   property. This property is not set for other languages. Transaction cancellation
4702//   reasons are ordered in the order of requested items, if an item has no error
4703//   it will have NONE code and Null message.
4704//
4705//   Cancellation reason codes and possible error messages:
4706//
4707//      * No Errors: Code: NONE Message: null
4708//
4709//      * Conditional Check Failed: Code: ConditionalCheckFailed Message: The
4710//      conditional request failed.
4711//
4712//      * Item Collection Size Limit Exceeded: Code: ItemCollectionSizeLimitExceeded
4713//      Message: Collection size exceeded.
4714//
4715//      * Transaction Conflict: Code: TransactionConflict Message: Transaction
4716//      is ongoing for the item.
4717//
4718//      * Provisioned Throughput Exceeded: Code: ProvisionedThroughputExceeded
4719//      Messages: The level of configured provisioned throughput for the table
4720//      was exceeded. Consider increasing your provisioning level with the UpdateTable
4721//      API. This Message is received when provisioned throughput is exceeded
4722//      is on a provisioned DynamoDB table. The level of configured provisioned
4723//      throughput for one or more global secondary indexes of the table was exceeded.
4724//      Consider increasing your provisioning level for the under-provisioned
4725//      global secondary indexes with the UpdateTable API. This message is returned
4726//      when provisioned throughput is exceeded is on a provisioned GSI.
4727//
4728//      * Throttling Error: Code: ThrottlingError Messages: Throughput exceeds
4729//      the current capacity of your table or index. DynamoDB is automatically
4730//      scaling your table or index so please try again shortly. If exceptions
4731//      persist, check if you have a hot key: https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/bp-partition-key-design.html.
4732//      This message is returned when writes get throttled on an On-Demand table
4733//      as DynamoDB is automatically scaling the table. Throughput exceeds the
4734//      current capacity for one or more global secondary indexes. DynamoDB is
4735//      automatically scaling your index so please try again shortly. This message
4736//      is returned when when writes get throttled on an On-Demand GSI as DynamoDB
4737//      is automatically scaling the GSI.
4738//
4739//      * Validation Error: Code: ValidationError Messages: One or more parameter
4740//      values were invalid. The update expression attempted to update the secondary
4741//      index key beyond allowed size limits. The update expression attempted
4742//      to update the secondary index key to unsupported type. An operand in the
4743//      update expression has an incorrect data type. Item size to update has
4744//      exceeded the maximum allowed size. Number overflow. Attempting to store
4745//      a number with magnitude larger than supported range. Type mismatch for
4746//      attribute to update. Nesting Levels have exceeded supported limits. The
4747//      document path provided in the update expression is invalid for update.
4748//      The provided expression refers to an attribute that does not exist in
4749//      the item.
4750//
4751//   * TransactionInProgressException
4752//   The transaction with the given request token is already in progress.
4753//
4754//   * IdempotentParameterMismatchException
4755//   DynamoDB rejected the request because you retried a request with a different
4756//   payload but with an idempotent token that was already used.
4757//
4758//   * ProvisionedThroughputExceededException
4759//   Your request rate is too high. The AWS SDKs for DynamoDB automatically retry
4760//   requests that receive this exception. Your request is eventually successful,
4761//   unless your retry queue is too large to finish. Reduce the frequency of requests
4762//   and use exponential backoff. For more information, go to Error Retries and
4763//   Exponential Backoff (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Programming.Errors.html#Programming.Errors.RetryAndBackoff)
4764//   in the Amazon DynamoDB Developer Guide.
4765//
4766//   * RequestLimitExceeded
4767//   Throughput exceeds the current throughput limit for your account. Please
4768//   contact AWS Support at AWS Support (https://aws.amazon.com/support) to request
4769//   a limit increase.
4770//
4771//   * InternalServerError
4772//   An error occurred on the server side.
4773//
4774// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/TransactWriteItems
4775func (c *DynamoDB) TransactWriteItems(input *TransactWriteItemsInput) (*TransactWriteItemsOutput, error) {
4776	req, out := c.TransactWriteItemsRequest(input)
4777	return out, req.Send()
4778}
4779
4780// TransactWriteItemsWithContext is the same as TransactWriteItems with the addition of
4781// the ability to pass a context and additional request options.
4782//
4783// See TransactWriteItems for details on how to use this API operation.
4784//
4785// The context must be non-nil and will be used for request cancellation. If
4786// the context is nil a panic will occur. In the future the SDK may create
4787// sub-contexts for http.Requests. See https://golang.org/pkg/context/
4788// for more information on using Contexts.
4789func (c *DynamoDB) TransactWriteItemsWithContext(ctx aws.Context, input *TransactWriteItemsInput, opts ...request.Option) (*TransactWriteItemsOutput, error) {
4790	req, out := c.TransactWriteItemsRequest(input)
4791	req.SetContext(ctx)
4792	req.ApplyOptions(opts...)
4793	return out, req.Send()
4794}
4795
4796const opUntagResource = "UntagResource"
4797
4798// UntagResourceRequest generates a "aws/request.Request" representing the
4799// client's request for the UntagResource operation. The "output" return
4800// value will be populated with the request's response once the request completes
4801// successfully.
4802//
4803// Use "Send" method on the returned Request to send the API call to the service.
4804// the "output" return value is not valid until after Send returns without error.
4805//
4806// See UntagResource for more information on using the UntagResource
4807// API call, and error handling.
4808//
4809// This method is useful when you want to inject custom logic or configuration
4810// into the SDK's request lifecycle. Such as custom headers, or retry logic.
4811//
4812//
4813//    // Example sending a request using the UntagResourceRequest method.
4814//    req, resp := client.UntagResourceRequest(params)
4815//
4816//    err := req.Send()
4817//    if err == nil { // resp is now filled
4818//        fmt.Println(resp)
4819//    }
4820//
4821// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/UntagResource
4822func (c *DynamoDB) UntagResourceRequest(input *UntagResourceInput) (req *request.Request, output *UntagResourceOutput) {
4823	op := &request.Operation{
4824		Name:       opUntagResource,
4825		HTTPMethod: "POST",
4826		HTTPPath:   "/",
4827	}
4828
4829	if input == nil {
4830		input = &UntagResourceInput{}
4831	}
4832
4833	output = &UntagResourceOutput{}
4834	req = c.newRequest(op, input, output)
4835	req.Handlers.Unmarshal.Swap(jsonrpc.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
4836	// if custom endpoint for the request is set to a non empty string,
4837	// we skip the endpoint discovery workflow.
4838	if req.Config.Endpoint == nil || *req.Config.Endpoint == "" {
4839		if aws.BoolValue(req.Config.EnableEndpointDiscovery) {
4840			de := discovererDescribeEndpoints{
4841				Required:      false,
4842				EndpointCache: c.endpointCache,
4843				Params: map[string]*string{
4844					"op": aws.String(req.Operation.Name),
4845				},
4846				Client: c,
4847			}
4848
4849			for k, v := range de.Params {
4850				if v == nil {
4851					delete(de.Params, k)
4852				}
4853			}
4854
4855			req.Handlers.Build.PushFrontNamed(request.NamedHandler{
4856				Name: "crr.endpointdiscovery",
4857				Fn:   de.Handler,
4858			})
4859		}
4860	}
4861	return
4862}
4863
4864// UntagResource API operation for Amazon DynamoDB.
4865//
4866// Removes the association of tags from an Amazon DynamoDB resource. You can
4867// call UntagResource up to five times per second, per account.
4868//
4869// For an overview on tagging DynamoDB resources, see Tagging for DynamoDB (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Tagging.html)
4870// in the Amazon DynamoDB Developer Guide.
4871//
4872// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
4873// with awserr.Error's Code and Message methods to get detailed information about
4874// the error.
4875//
4876// See the AWS API reference guide for Amazon DynamoDB's
4877// API operation UntagResource for usage and error information.
4878//
4879// Returned Error Types:
4880//   * LimitExceededException
4881//   There is no limit to the number of daily on-demand backups that can be taken.
4882//
4883//   Up to 50 simultaneous table operations are allowed per account. These operations
4884//   include CreateTable, UpdateTable, DeleteTable,UpdateTimeToLive, RestoreTableFromBackup,
4885//   and RestoreTableToPointInTime.
4886//
4887//   The only exception is when you are creating a table with one or more secondary
4888//   indexes. You can have up to 25 such requests running at a time; however,
4889//   if the table or index specifications are complex, DynamoDB might temporarily
4890//   reduce the number of concurrent operations.
4891//
4892//   There is a soft account limit of 256 tables.
4893//
4894//   * ResourceNotFoundException
4895//   The operation tried to access a nonexistent table or index. The resource
4896//   might not be specified correctly, or its status might not be ACTIVE.
4897//
4898//   * InternalServerError
4899//   An error occurred on the server side.
4900//
4901//   * ResourceInUseException
4902//   The operation conflicts with the resource's availability. For example, you
4903//   attempted to recreate an existing table, or tried to delete a table currently
4904//   in the CREATING state.
4905//
4906// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/UntagResource
4907func (c *DynamoDB) UntagResource(input *UntagResourceInput) (*UntagResourceOutput, error) {
4908	req, out := c.UntagResourceRequest(input)
4909	return out, req.Send()
4910}
4911
4912// UntagResourceWithContext is the same as UntagResource with the addition of
4913// the ability to pass a context and additional request options.
4914//
4915// See UntagResource for details on how to use this API operation.
4916//
4917// The context must be non-nil and will be used for request cancellation. If
4918// the context is nil a panic will occur. In the future the SDK may create
4919// sub-contexts for http.Requests. See https://golang.org/pkg/context/
4920// for more information on using Contexts.
4921func (c *DynamoDB) UntagResourceWithContext(ctx aws.Context, input *UntagResourceInput, opts ...request.Option) (*UntagResourceOutput, error) {
4922	req, out := c.UntagResourceRequest(input)
4923	req.SetContext(ctx)
4924	req.ApplyOptions(opts...)
4925	return out, req.Send()
4926}
4927
4928const opUpdateContinuousBackups = "UpdateContinuousBackups"
4929
4930// UpdateContinuousBackupsRequest generates a "aws/request.Request" representing the
4931// client's request for the UpdateContinuousBackups operation. The "output" return
4932// value will be populated with the request's response once the request completes
4933// successfully.
4934//
4935// Use "Send" method on the returned Request to send the API call to the service.
4936// the "output" return value is not valid until after Send returns without error.
4937//
4938// See UpdateContinuousBackups for more information on using the UpdateContinuousBackups
4939// API call, and error handling.
4940//
4941// This method is useful when you want to inject custom logic or configuration
4942// into the SDK's request lifecycle. Such as custom headers, or retry logic.
4943//
4944//
4945//    // Example sending a request using the UpdateContinuousBackupsRequest method.
4946//    req, resp := client.UpdateContinuousBackupsRequest(params)
4947//
4948//    err := req.Send()
4949//    if err == nil { // resp is now filled
4950//        fmt.Println(resp)
4951//    }
4952//
4953// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/UpdateContinuousBackups
4954func (c *DynamoDB) UpdateContinuousBackupsRequest(input *UpdateContinuousBackupsInput) (req *request.Request, output *UpdateContinuousBackupsOutput) {
4955	op := &request.Operation{
4956		Name:       opUpdateContinuousBackups,
4957		HTTPMethod: "POST",
4958		HTTPPath:   "/",
4959	}
4960
4961	if input == nil {
4962		input = &UpdateContinuousBackupsInput{}
4963	}
4964
4965	output = &UpdateContinuousBackupsOutput{}
4966	req = c.newRequest(op, input, output)
4967	// if custom endpoint for the request is set to a non empty string,
4968	// we skip the endpoint discovery workflow.
4969	if req.Config.Endpoint == nil || *req.Config.Endpoint == "" {
4970		if aws.BoolValue(req.Config.EnableEndpointDiscovery) {
4971			de := discovererDescribeEndpoints{
4972				Required:      false,
4973				EndpointCache: c.endpointCache,
4974				Params: map[string]*string{
4975					"op": aws.String(req.Operation.Name),
4976				},
4977				Client: c,
4978			}
4979
4980			for k, v := range de.Params {
4981				if v == nil {
4982					delete(de.Params, k)
4983				}
4984			}
4985
4986			req.Handlers.Build.PushFrontNamed(request.NamedHandler{
4987				Name: "crr.endpointdiscovery",
4988				Fn:   de.Handler,
4989			})
4990		}
4991	}
4992	return
4993}
4994
4995// UpdateContinuousBackups API operation for Amazon DynamoDB.
4996//
4997// UpdateContinuousBackups enables or disables point in time recovery for the
4998// specified table. A successful UpdateContinuousBackups call returns the current
4999// ContinuousBackupsDescription. Continuous backups are ENABLED on all tables
5000// at table creation. If point in time recovery is enabled, PointInTimeRecoveryStatus
5001// will be set to ENABLED.
5002//
5003// Once continuous backups and point in time recovery are enabled, you can restore
5004// to any point in time within EarliestRestorableDateTime and LatestRestorableDateTime.
5005//
5006// LatestRestorableDateTime is typically 5 minutes before the current time.
5007// You can restore your table to any point in time during the last 35 days.
5008//
5009// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
5010// with awserr.Error's Code and Message methods to get detailed information about
5011// the error.
5012//
5013// See the AWS API reference guide for Amazon DynamoDB's
5014// API operation UpdateContinuousBackups for usage and error information.
5015//
5016// Returned Error Types:
5017//   * TableNotFoundException
5018//   A source table with the name TableName does not currently exist within the
5019//   subscriber's account.
5020//
5021//   * ContinuousBackupsUnavailableException
5022//   Backups have not yet been enabled for this table.
5023//
5024//   * InternalServerError
5025//   An error occurred on the server side.
5026//
5027// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/UpdateContinuousBackups
5028func (c *DynamoDB) UpdateContinuousBackups(input *UpdateContinuousBackupsInput) (*UpdateContinuousBackupsOutput, error) {
5029	req, out := c.UpdateContinuousBackupsRequest(input)
5030	return out, req.Send()
5031}
5032
5033// UpdateContinuousBackupsWithContext is the same as UpdateContinuousBackups with the addition of
5034// the ability to pass a context and additional request options.
5035//
5036// See UpdateContinuousBackups for details on how to use this API operation.
5037//
5038// The context must be non-nil and will be used for request cancellation. If
5039// the context is nil a panic will occur. In the future the SDK may create
5040// sub-contexts for http.Requests. See https://golang.org/pkg/context/
5041// for more information on using Contexts.
5042func (c *DynamoDB) UpdateContinuousBackupsWithContext(ctx aws.Context, input *UpdateContinuousBackupsInput, opts ...request.Option) (*UpdateContinuousBackupsOutput, error) {
5043	req, out := c.UpdateContinuousBackupsRequest(input)
5044	req.SetContext(ctx)
5045	req.ApplyOptions(opts...)
5046	return out, req.Send()
5047}
5048
5049const opUpdateContributorInsights = "UpdateContributorInsights"
5050
5051// UpdateContributorInsightsRequest generates a "aws/request.Request" representing the
5052// client's request for the UpdateContributorInsights operation. The "output" return
5053// value will be populated with the request's response once the request completes
5054// successfully.
5055//
5056// Use "Send" method on the returned Request to send the API call to the service.
5057// the "output" return value is not valid until after Send returns without error.
5058//
5059// See UpdateContributorInsights for more information on using the UpdateContributorInsights
5060// API call, and error handling.
5061//
5062// This method is useful when you want to inject custom logic or configuration
5063// into the SDK's request lifecycle. Such as custom headers, or retry logic.
5064//
5065//
5066//    // Example sending a request using the UpdateContributorInsightsRequest method.
5067//    req, resp := client.UpdateContributorInsightsRequest(params)
5068//
5069//    err := req.Send()
5070//    if err == nil { // resp is now filled
5071//        fmt.Println(resp)
5072//    }
5073//
5074// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/UpdateContributorInsights
5075func (c *DynamoDB) UpdateContributorInsightsRequest(input *UpdateContributorInsightsInput) (req *request.Request, output *UpdateContributorInsightsOutput) {
5076	op := &request.Operation{
5077		Name:       opUpdateContributorInsights,
5078		HTTPMethod: "POST",
5079		HTTPPath:   "/",
5080	}
5081
5082	if input == nil {
5083		input = &UpdateContributorInsightsInput{}
5084	}
5085
5086	output = &UpdateContributorInsightsOutput{}
5087	req = c.newRequest(op, input, output)
5088	return
5089}
5090
5091// UpdateContributorInsights API operation for Amazon DynamoDB.
5092//
5093// Updates the status for contributor insights for a specific table or index.
5094//
5095// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
5096// with awserr.Error's Code and Message methods to get detailed information about
5097// the error.
5098//
5099// See the AWS API reference guide for Amazon DynamoDB's
5100// API operation UpdateContributorInsights for usage and error information.
5101//
5102// Returned Error Types:
5103//   * ResourceNotFoundException
5104//   The operation tried to access a nonexistent table or index. The resource
5105//   might not be specified correctly, or its status might not be ACTIVE.
5106//
5107//   * InternalServerError
5108//   An error occurred on the server side.
5109//
5110// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/UpdateContributorInsights
5111func (c *DynamoDB) UpdateContributorInsights(input *UpdateContributorInsightsInput) (*UpdateContributorInsightsOutput, error) {
5112	req, out := c.UpdateContributorInsightsRequest(input)
5113	return out, req.Send()
5114}
5115
5116// UpdateContributorInsightsWithContext is the same as UpdateContributorInsights with the addition of
5117// the ability to pass a context and additional request options.
5118//
5119// See UpdateContributorInsights for details on how to use this API operation.
5120//
5121// The context must be non-nil and will be used for request cancellation. If
5122// the context is nil a panic will occur. In the future the SDK may create
5123// sub-contexts for http.Requests. See https://golang.org/pkg/context/
5124// for more information on using Contexts.
5125func (c *DynamoDB) UpdateContributorInsightsWithContext(ctx aws.Context, input *UpdateContributorInsightsInput, opts ...request.Option) (*UpdateContributorInsightsOutput, error) {
5126	req, out := c.UpdateContributorInsightsRequest(input)
5127	req.SetContext(ctx)
5128	req.ApplyOptions(opts...)
5129	return out, req.Send()
5130}
5131
5132const opUpdateGlobalTable = "UpdateGlobalTable"
5133
5134// UpdateGlobalTableRequest generates a "aws/request.Request" representing the
5135// client's request for the UpdateGlobalTable operation. The "output" return
5136// value will be populated with the request's response once the request completes
5137// successfully.
5138//
5139// Use "Send" method on the returned Request to send the API call to the service.
5140// the "output" return value is not valid until after Send returns without error.
5141//
5142// See UpdateGlobalTable for more information on using the UpdateGlobalTable
5143// API call, and error handling.
5144//
5145// This method is useful when you want to inject custom logic or configuration
5146// into the SDK's request lifecycle. Such as custom headers, or retry logic.
5147//
5148//
5149//    // Example sending a request using the UpdateGlobalTableRequest method.
5150//    req, resp := client.UpdateGlobalTableRequest(params)
5151//
5152//    err := req.Send()
5153//    if err == nil { // resp is now filled
5154//        fmt.Println(resp)
5155//    }
5156//
5157// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/UpdateGlobalTable
5158func (c *DynamoDB) UpdateGlobalTableRequest(input *UpdateGlobalTableInput) (req *request.Request, output *UpdateGlobalTableOutput) {
5159	op := &request.Operation{
5160		Name:       opUpdateGlobalTable,
5161		HTTPMethod: "POST",
5162		HTTPPath:   "/",
5163	}
5164
5165	if input == nil {
5166		input = &UpdateGlobalTableInput{}
5167	}
5168
5169	output = &UpdateGlobalTableOutput{}
5170	req = c.newRequest(op, input, output)
5171	// if custom endpoint for the request is set to a non empty string,
5172	// we skip the endpoint discovery workflow.
5173	if req.Config.Endpoint == nil || *req.Config.Endpoint == "" {
5174		if aws.BoolValue(req.Config.EnableEndpointDiscovery) {
5175			de := discovererDescribeEndpoints{
5176				Required:      false,
5177				EndpointCache: c.endpointCache,
5178				Params: map[string]*string{
5179					"op": aws.String(req.Operation.Name),
5180				},
5181				Client: c,
5182			}
5183
5184			for k, v := range de.Params {
5185				if v == nil {
5186					delete(de.Params, k)
5187				}
5188			}
5189
5190			req.Handlers.Build.PushFrontNamed(request.NamedHandler{
5191				Name: "crr.endpointdiscovery",
5192				Fn:   de.Handler,
5193			})
5194		}
5195	}
5196	return
5197}
5198
5199// UpdateGlobalTable API operation for Amazon DynamoDB.
5200//
5201// Adds or removes replicas in the specified global table. The global table
5202// must already exist to be able to use this operation. Any replica to be added
5203// must be empty, have the same name as the global table, have the same key
5204// schema, have DynamoDB Streams enabled, and have the same provisioned and
5205// maximum write capacity units.
5206//
5207// Although you can use UpdateGlobalTable to add replicas and remove replicas
5208// in a single request, for simplicity we recommend that you issue separate
5209// requests for adding or removing replicas.
5210//
5211// If global secondary indexes are specified, then the following conditions
5212// must also be met:
5213//
5214//    * The global secondary indexes must have the same name.
5215//
5216//    * The global secondary indexes must have the same hash key and sort key
5217//    (if present).
5218//
5219//    * The global secondary indexes must have the same provisioned and maximum
5220//    write capacity units.
5221//
5222// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
5223// with awserr.Error's Code and Message methods to get detailed information about
5224// the error.
5225//
5226// See the AWS API reference guide for Amazon DynamoDB's
5227// API operation UpdateGlobalTable for usage and error information.
5228//
5229// Returned Error Types:
5230//   * InternalServerError
5231//   An error occurred on the server side.
5232//
5233//   * GlobalTableNotFoundException
5234//   The specified global table does not exist.
5235//
5236//   * ReplicaAlreadyExistsException
5237//   The specified replica is already part of the global table.
5238//
5239//   * ReplicaNotFoundException
5240//   The specified replica is no longer part of the global table.
5241//
5242//   * TableNotFoundException
5243//   A source table with the name TableName does not currently exist within the
5244//   subscriber's account.
5245//
5246// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/UpdateGlobalTable
5247func (c *DynamoDB) UpdateGlobalTable(input *UpdateGlobalTableInput) (*UpdateGlobalTableOutput, error) {
5248	req, out := c.UpdateGlobalTableRequest(input)
5249	return out, req.Send()
5250}
5251
5252// UpdateGlobalTableWithContext is the same as UpdateGlobalTable with the addition of
5253// the ability to pass a context and additional request options.
5254//
5255// See UpdateGlobalTable for details on how to use this API operation.
5256//
5257// The context must be non-nil and will be used for request cancellation. If
5258// the context is nil a panic will occur. In the future the SDK may create
5259// sub-contexts for http.Requests. See https://golang.org/pkg/context/
5260// for more information on using Contexts.
5261func (c *DynamoDB) UpdateGlobalTableWithContext(ctx aws.Context, input *UpdateGlobalTableInput, opts ...request.Option) (*UpdateGlobalTableOutput, error) {
5262	req, out := c.UpdateGlobalTableRequest(input)
5263	req.SetContext(ctx)
5264	req.ApplyOptions(opts...)
5265	return out, req.Send()
5266}
5267
5268const opUpdateGlobalTableSettings = "UpdateGlobalTableSettings"
5269
5270// UpdateGlobalTableSettingsRequest generates a "aws/request.Request" representing the
5271// client's request for the UpdateGlobalTableSettings operation. The "output" return
5272// value will be populated with the request's response once the request completes
5273// successfully.
5274//
5275// Use "Send" method on the returned Request to send the API call to the service.
5276// the "output" return value is not valid until after Send returns without error.
5277//
5278// See UpdateGlobalTableSettings for more information on using the UpdateGlobalTableSettings
5279// API call, and error handling.
5280//
5281// This method is useful when you want to inject custom logic or configuration
5282// into the SDK's request lifecycle. Such as custom headers, or retry logic.
5283//
5284//
5285//    // Example sending a request using the UpdateGlobalTableSettingsRequest method.
5286//    req, resp := client.UpdateGlobalTableSettingsRequest(params)
5287//
5288//    err := req.Send()
5289//    if err == nil { // resp is now filled
5290//        fmt.Println(resp)
5291//    }
5292//
5293// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/UpdateGlobalTableSettings
5294func (c *DynamoDB) UpdateGlobalTableSettingsRequest(input *UpdateGlobalTableSettingsInput) (req *request.Request, output *UpdateGlobalTableSettingsOutput) {
5295	op := &request.Operation{
5296		Name:       opUpdateGlobalTableSettings,
5297		HTTPMethod: "POST",
5298		HTTPPath:   "/",
5299	}
5300
5301	if input == nil {
5302		input = &UpdateGlobalTableSettingsInput{}
5303	}
5304
5305	output = &UpdateGlobalTableSettingsOutput{}
5306	req = c.newRequest(op, input, output)
5307	// if custom endpoint for the request is set to a non empty string,
5308	// we skip the endpoint discovery workflow.
5309	if req.Config.Endpoint == nil || *req.Config.Endpoint == "" {
5310		if aws.BoolValue(req.Config.EnableEndpointDiscovery) {
5311			de := discovererDescribeEndpoints{
5312				Required:      false,
5313				EndpointCache: c.endpointCache,
5314				Params: map[string]*string{
5315					"op": aws.String(req.Operation.Name),
5316				},
5317				Client: c,
5318			}
5319
5320			for k, v := range de.Params {
5321				if v == nil {
5322					delete(de.Params, k)
5323				}
5324			}
5325
5326			req.Handlers.Build.PushFrontNamed(request.NamedHandler{
5327				Name: "crr.endpointdiscovery",
5328				Fn:   de.Handler,
5329			})
5330		}
5331	}
5332	return
5333}
5334
5335// UpdateGlobalTableSettings API operation for Amazon DynamoDB.
5336//
5337// Updates settings for a global table.
5338//
5339// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
5340// with awserr.Error's Code and Message methods to get detailed information about
5341// the error.
5342//
5343// See the AWS API reference guide for Amazon DynamoDB's
5344// API operation UpdateGlobalTableSettings for usage and error information.
5345//
5346// Returned Error Types:
5347//   * GlobalTableNotFoundException
5348//   The specified global table does not exist.
5349//
5350//   * ReplicaNotFoundException
5351//   The specified replica is no longer part of the global table.
5352//
5353//   * IndexNotFoundException
5354//   The operation tried to access a nonexistent index.
5355//
5356//   * LimitExceededException
5357//   There is no limit to the number of daily on-demand backups that can be taken.
5358//
5359//   Up to 50 simultaneous table operations are allowed per account. These operations
5360//   include CreateTable, UpdateTable, DeleteTable,UpdateTimeToLive, RestoreTableFromBackup,
5361//   and RestoreTableToPointInTime.
5362//
5363//   The only exception is when you are creating a table with one or more secondary
5364//   indexes. You can have up to 25 such requests running at a time; however,
5365//   if the table or index specifications are complex, DynamoDB might temporarily
5366//   reduce the number of concurrent operations.
5367//
5368//   There is a soft account limit of 256 tables.
5369//
5370//   * ResourceInUseException
5371//   The operation conflicts with the resource's availability. For example, you
5372//   attempted to recreate an existing table, or tried to delete a table currently
5373//   in the CREATING state.
5374//
5375//   * InternalServerError
5376//   An error occurred on the server side.
5377//
5378// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/UpdateGlobalTableSettings
5379func (c *DynamoDB) UpdateGlobalTableSettings(input *UpdateGlobalTableSettingsInput) (*UpdateGlobalTableSettingsOutput, error) {
5380	req, out := c.UpdateGlobalTableSettingsRequest(input)
5381	return out, req.Send()
5382}
5383
5384// UpdateGlobalTableSettingsWithContext is the same as UpdateGlobalTableSettings with the addition of
5385// the ability to pass a context and additional request options.
5386//
5387// See UpdateGlobalTableSettings for details on how to use this API operation.
5388//
5389// The context must be non-nil and will be used for request cancellation. If
5390// the context is nil a panic will occur. In the future the SDK may create
5391// sub-contexts for http.Requests. See https://golang.org/pkg/context/
5392// for more information on using Contexts.
5393func (c *DynamoDB) UpdateGlobalTableSettingsWithContext(ctx aws.Context, input *UpdateGlobalTableSettingsInput, opts ...request.Option) (*UpdateGlobalTableSettingsOutput, error) {
5394	req, out := c.UpdateGlobalTableSettingsRequest(input)
5395	req.SetContext(ctx)
5396	req.ApplyOptions(opts...)
5397	return out, req.Send()
5398}
5399
5400const opUpdateItem = "UpdateItem"
5401
5402// UpdateItemRequest generates a "aws/request.Request" representing the
5403// client's request for the UpdateItem operation. The "output" return
5404// value will be populated with the request's response once the request completes
5405// successfully.
5406//
5407// Use "Send" method on the returned Request to send the API call to the service.
5408// the "output" return value is not valid until after Send returns without error.
5409//
5410// See UpdateItem for more information on using the UpdateItem
5411// API call, and error handling.
5412//
5413// This method is useful when you want to inject custom logic or configuration
5414// into the SDK's request lifecycle. Such as custom headers, or retry logic.
5415//
5416//
5417//    // Example sending a request using the UpdateItemRequest method.
5418//    req, resp := client.UpdateItemRequest(params)
5419//
5420//    err := req.Send()
5421//    if err == nil { // resp is now filled
5422//        fmt.Println(resp)
5423//    }
5424//
5425// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/UpdateItem
5426func (c *DynamoDB) UpdateItemRequest(input *UpdateItemInput) (req *request.Request, output *UpdateItemOutput) {
5427	op := &request.Operation{
5428		Name:       opUpdateItem,
5429		HTTPMethod: "POST",
5430		HTTPPath:   "/",
5431	}
5432
5433	if input == nil {
5434		input = &UpdateItemInput{}
5435	}
5436
5437	output = &UpdateItemOutput{}
5438	req = c.newRequest(op, input, output)
5439	// if custom endpoint for the request is set to a non empty string,
5440	// we skip the endpoint discovery workflow.
5441	if req.Config.Endpoint == nil || *req.Config.Endpoint == "" {
5442		if aws.BoolValue(req.Config.EnableEndpointDiscovery) {
5443			de := discovererDescribeEndpoints{
5444				Required:      false,
5445				EndpointCache: c.endpointCache,
5446				Params: map[string]*string{
5447					"op": aws.String(req.Operation.Name),
5448				},
5449				Client: c,
5450			}
5451
5452			for k, v := range de.Params {
5453				if v == nil {
5454					delete(de.Params, k)
5455				}
5456			}
5457
5458			req.Handlers.Build.PushFrontNamed(request.NamedHandler{
5459				Name: "crr.endpointdiscovery",
5460				Fn:   de.Handler,
5461			})
5462		}
5463	}
5464	return
5465}
5466
5467// UpdateItem API operation for Amazon DynamoDB.
5468//
5469// Edits an existing item's attributes, or adds a new item to the table if it
5470// does not already exist. You can put, delete, or add attribute values. You
5471// can also perform a conditional update on an existing item (insert a new attribute
5472// name-value pair if it doesn't exist, or replace an existing name-value pair
5473// if it has certain expected attribute values).
5474//
5475// You can also return the item's attribute values in the same UpdateItem operation
5476// using the ReturnValues parameter.
5477//
5478// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
5479// with awserr.Error's Code and Message methods to get detailed information about
5480// the error.
5481//
5482// See the AWS API reference guide for Amazon DynamoDB's
5483// API operation UpdateItem for usage and error information.
5484//
5485// Returned Error Types:
5486//   * ConditionalCheckFailedException
5487//   A condition specified in the operation could not be evaluated.
5488//
5489//   * ProvisionedThroughputExceededException
5490//   Your request rate is too high. The AWS SDKs for DynamoDB automatically retry
5491//   requests that receive this exception. Your request is eventually successful,
5492//   unless your retry queue is too large to finish. Reduce the frequency of requests
5493//   and use exponential backoff. For more information, go to Error Retries and
5494//   Exponential Backoff (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Programming.Errors.html#Programming.Errors.RetryAndBackoff)
5495//   in the Amazon DynamoDB Developer Guide.
5496//
5497//   * ResourceNotFoundException
5498//   The operation tried to access a nonexistent table or index. The resource
5499//   might not be specified correctly, or its status might not be ACTIVE.
5500//
5501//   * ItemCollectionSizeLimitExceededException
5502//   An item collection is too large. This exception is only returned for tables
5503//   that have one or more local secondary indexes.
5504//
5505//   * TransactionConflictException
5506//   Operation was rejected because there is an ongoing transaction for the item.
5507//
5508//   * RequestLimitExceeded
5509//   Throughput exceeds the current throughput limit for your account. Please
5510//   contact AWS Support at AWS Support (https://aws.amazon.com/support) to request
5511//   a limit increase.
5512//
5513//   * InternalServerError
5514//   An error occurred on the server side.
5515//
5516// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/UpdateItem
5517func (c *DynamoDB) UpdateItem(input *UpdateItemInput) (*UpdateItemOutput, error) {
5518	req, out := c.UpdateItemRequest(input)
5519	return out, req.Send()
5520}
5521
5522// UpdateItemWithContext is the same as UpdateItem with the addition of
5523// the ability to pass a context and additional request options.
5524//
5525// See UpdateItem for details on how to use this API operation.
5526//
5527// The context must be non-nil and will be used for request cancellation. If
5528// the context is nil a panic will occur. In the future the SDK may create
5529// sub-contexts for http.Requests. See https://golang.org/pkg/context/
5530// for more information on using Contexts.
5531func (c *DynamoDB) UpdateItemWithContext(ctx aws.Context, input *UpdateItemInput, opts ...request.Option) (*UpdateItemOutput, error) {
5532	req, out := c.UpdateItemRequest(input)
5533	req.SetContext(ctx)
5534	req.ApplyOptions(opts...)
5535	return out, req.Send()
5536}
5537
5538const opUpdateTable = "UpdateTable"
5539
5540// UpdateTableRequest generates a "aws/request.Request" representing the
5541// client's request for the UpdateTable operation. The "output" return
5542// value will be populated with the request's response once the request completes
5543// successfully.
5544//
5545// Use "Send" method on the returned Request to send the API call to the service.
5546// the "output" return value is not valid until after Send returns without error.
5547//
5548// See UpdateTable for more information on using the UpdateTable
5549// API call, and error handling.
5550//
5551// This method is useful when you want to inject custom logic or configuration
5552// into the SDK's request lifecycle. Such as custom headers, or retry logic.
5553//
5554//
5555//    // Example sending a request using the UpdateTableRequest method.
5556//    req, resp := client.UpdateTableRequest(params)
5557//
5558//    err := req.Send()
5559//    if err == nil { // resp is now filled
5560//        fmt.Println(resp)
5561//    }
5562//
5563// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/UpdateTable
5564func (c *DynamoDB) UpdateTableRequest(input *UpdateTableInput) (req *request.Request, output *UpdateTableOutput) {
5565	op := &request.Operation{
5566		Name:       opUpdateTable,
5567		HTTPMethod: "POST",
5568		HTTPPath:   "/",
5569	}
5570
5571	if input == nil {
5572		input = &UpdateTableInput{}
5573	}
5574
5575	output = &UpdateTableOutput{}
5576	req = c.newRequest(op, input, output)
5577	// if custom endpoint for the request is set to a non empty string,
5578	// we skip the endpoint discovery workflow.
5579	if req.Config.Endpoint == nil || *req.Config.Endpoint == "" {
5580		if aws.BoolValue(req.Config.EnableEndpointDiscovery) {
5581			de := discovererDescribeEndpoints{
5582				Required:      false,
5583				EndpointCache: c.endpointCache,
5584				Params: map[string]*string{
5585					"op": aws.String(req.Operation.Name),
5586				},
5587				Client: c,
5588			}
5589
5590			for k, v := range de.Params {
5591				if v == nil {
5592					delete(de.Params, k)
5593				}
5594			}
5595
5596			req.Handlers.Build.PushFrontNamed(request.NamedHandler{
5597				Name: "crr.endpointdiscovery",
5598				Fn:   de.Handler,
5599			})
5600		}
5601	}
5602	return
5603}
5604
5605// UpdateTable API operation for Amazon DynamoDB.
5606//
5607// Modifies the provisioned throughput settings, global secondary indexes, or
5608// DynamoDB Streams settings for a given table.
5609//
5610// You can only perform one of the following operations at once:
5611//
5612//    * Modify the provisioned throughput settings of the table.
5613//
5614//    * Enable or disable DynamoDB Streams on the table.
5615//
5616//    * Remove a global secondary index from the table.
5617//
5618//    * Create a new global secondary index on the table. After the index begins
5619//    backfilling, you can use UpdateTable to perform other operations.
5620//
5621// UpdateTable is an asynchronous operation; while it is executing, the table
5622// status changes from ACTIVE to UPDATING. While it is UPDATING, you cannot
5623// issue another UpdateTable request. When the table returns to the ACTIVE state,
5624// the UpdateTable operation is complete.
5625//
5626// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
5627// with awserr.Error's Code and Message methods to get detailed information about
5628// the error.
5629//
5630// See the AWS API reference guide for Amazon DynamoDB's
5631// API operation UpdateTable for usage and error information.
5632//
5633// Returned Error Types:
5634//   * ResourceInUseException
5635//   The operation conflicts with the resource's availability. For example, you
5636//   attempted to recreate an existing table, or tried to delete a table currently
5637//   in the CREATING state.
5638//
5639//   * ResourceNotFoundException
5640//   The operation tried to access a nonexistent table or index. The resource
5641//   might not be specified correctly, or its status might not be ACTIVE.
5642//
5643//   * LimitExceededException
5644//   There is no limit to the number of daily on-demand backups that can be taken.
5645//
5646//   Up to 50 simultaneous table operations are allowed per account. These operations
5647//   include CreateTable, UpdateTable, DeleteTable,UpdateTimeToLive, RestoreTableFromBackup,
5648//   and RestoreTableToPointInTime.
5649//
5650//   The only exception is when you are creating a table with one or more secondary
5651//   indexes. You can have up to 25 such requests running at a time; however,
5652//   if the table or index specifications are complex, DynamoDB might temporarily
5653//   reduce the number of concurrent operations.
5654//
5655//   There is a soft account limit of 256 tables.
5656//
5657//   * InternalServerError
5658//   An error occurred on the server side.
5659//
5660// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/UpdateTable
5661func (c *DynamoDB) UpdateTable(input *UpdateTableInput) (*UpdateTableOutput, error) {
5662	req, out := c.UpdateTableRequest(input)
5663	return out, req.Send()
5664}
5665
5666// UpdateTableWithContext is the same as UpdateTable with the addition of
5667// the ability to pass a context and additional request options.
5668//
5669// See UpdateTable for details on how to use this API operation.
5670//
5671// The context must be non-nil and will be used for request cancellation. If
5672// the context is nil a panic will occur. In the future the SDK may create
5673// sub-contexts for http.Requests. See https://golang.org/pkg/context/
5674// for more information on using Contexts.
5675func (c *DynamoDB) UpdateTableWithContext(ctx aws.Context, input *UpdateTableInput, opts ...request.Option) (*UpdateTableOutput, error) {
5676	req, out := c.UpdateTableRequest(input)
5677	req.SetContext(ctx)
5678	req.ApplyOptions(opts...)
5679	return out, req.Send()
5680}
5681
5682const opUpdateTableReplicaAutoScaling = "UpdateTableReplicaAutoScaling"
5683
5684// UpdateTableReplicaAutoScalingRequest generates a "aws/request.Request" representing the
5685// client's request for the UpdateTableReplicaAutoScaling operation. The "output" return
5686// value will be populated with the request's response once the request completes
5687// successfully.
5688//
5689// Use "Send" method on the returned Request to send the API call to the service.
5690// the "output" return value is not valid until after Send returns without error.
5691//
5692// See UpdateTableReplicaAutoScaling for more information on using the UpdateTableReplicaAutoScaling
5693// API call, and error handling.
5694//
5695// This method is useful when you want to inject custom logic or configuration
5696// into the SDK's request lifecycle. Such as custom headers, or retry logic.
5697//
5698//
5699//    // Example sending a request using the UpdateTableReplicaAutoScalingRequest method.
5700//    req, resp := client.UpdateTableReplicaAutoScalingRequest(params)
5701//
5702//    err := req.Send()
5703//    if err == nil { // resp is now filled
5704//        fmt.Println(resp)
5705//    }
5706//
5707// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/UpdateTableReplicaAutoScaling
5708func (c *DynamoDB) UpdateTableReplicaAutoScalingRequest(input *UpdateTableReplicaAutoScalingInput) (req *request.Request, output *UpdateTableReplicaAutoScalingOutput) {
5709	op := &request.Operation{
5710		Name:       opUpdateTableReplicaAutoScaling,
5711		HTTPMethod: "POST",
5712		HTTPPath:   "/",
5713	}
5714
5715	if input == nil {
5716		input = &UpdateTableReplicaAutoScalingInput{}
5717	}
5718
5719	output = &UpdateTableReplicaAutoScalingOutput{}
5720	req = c.newRequest(op, input, output)
5721	return
5722}
5723
5724// UpdateTableReplicaAutoScaling API operation for Amazon DynamoDB.
5725//
5726// Updates auto scaling settings on your global tables at once.
5727//
5728// This operation only applies to Version 2019.11.21 (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/globaltables.V2.html)
5729// of global tables.
5730//
5731// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
5732// with awserr.Error's Code and Message methods to get detailed information about
5733// the error.
5734//
5735// See the AWS API reference guide for Amazon DynamoDB's
5736// API operation UpdateTableReplicaAutoScaling for usage and error information.
5737//
5738// Returned Error Types:
5739//   * ResourceNotFoundException
5740//   The operation tried to access a nonexistent table or index. The resource
5741//   might not be specified correctly, or its status might not be ACTIVE.
5742//
5743//   * ResourceInUseException
5744//   The operation conflicts with the resource's availability. For example, you
5745//   attempted to recreate an existing table, or tried to delete a table currently
5746//   in the CREATING state.
5747//
5748//   * LimitExceededException
5749//   There is no limit to the number of daily on-demand backups that can be taken.
5750//
5751//   Up to 50 simultaneous table operations are allowed per account. These operations
5752//   include CreateTable, UpdateTable, DeleteTable,UpdateTimeToLive, RestoreTableFromBackup,
5753//   and RestoreTableToPointInTime.
5754//
5755//   The only exception is when you are creating a table with one or more secondary
5756//   indexes. You can have up to 25 such requests running at a time; however,
5757//   if the table or index specifications are complex, DynamoDB might temporarily
5758//   reduce the number of concurrent operations.
5759//
5760//   There is a soft account limit of 256 tables.
5761//
5762//   * InternalServerError
5763//   An error occurred on the server side.
5764//
5765// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/UpdateTableReplicaAutoScaling
5766func (c *DynamoDB) UpdateTableReplicaAutoScaling(input *UpdateTableReplicaAutoScalingInput) (*UpdateTableReplicaAutoScalingOutput, error) {
5767	req, out := c.UpdateTableReplicaAutoScalingRequest(input)
5768	return out, req.Send()
5769}
5770
5771// UpdateTableReplicaAutoScalingWithContext is the same as UpdateTableReplicaAutoScaling with the addition of
5772// the ability to pass a context and additional request options.
5773//
5774// See UpdateTableReplicaAutoScaling for details on how to use this API operation.
5775//
5776// The context must be non-nil and will be used for request cancellation. If
5777// the context is nil a panic will occur. In the future the SDK may create
5778// sub-contexts for http.Requests. See https://golang.org/pkg/context/
5779// for more information on using Contexts.
5780func (c *DynamoDB) UpdateTableReplicaAutoScalingWithContext(ctx aws.Context, input *UpdateTableReplicaAutoScalingInput, opts ...request.Option) (*UpdateTableReplicaAutoScalingOutput, error) {
5781	req, out := c.UpdateTableReplicaAutoScalingRequest(input)
5782	req.SetContext(ctx)
5783	req.ApplyOptions(opts...)
5784	return out, req.Send()
5785}
5786
5787const opUpdateTimeToLive = "UpdateTimeToLive"
5788
5789// UpdateTimeToLiveRequest generates a "aws/request.Request" representing the
5790// client's request for the UpdateTimeToLive operation. The "output" return
5791// value will be populated with the request's response once the request completes
5792// successfully.
5793//
5794// Use "Send" method on the returned Request to send the API call to the service.
5795// the "output" return value is not valid until after Send returns without error.
5796//
5797// See UpdateTimeToLive for more information on using the UpdateTimeToLive
5798// API call, and error handling.
5799//
5800// This method is useful when you want to inject custom logic or configuration
5801// into the SDK's request lifecycle. Such as custom headers, or retry logic.
5802//
5803//
5804//    // Example sending a request using the UpdateTimeToLiveRequest method.
5805//    req, resp := client.UpdateTimeToLiveRequest(params)
5806//
5807//    err := req.Send()
5808//    if err == nil { // resp is now filled
5809//        fmt.Println(resp)
5810//    }
5811//
5812// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/UpdateTimeToLive
5813func (c *DynamoDB) UpdateTimeToLiveRequest(input *UpdateTimeToLiveInput) (req *request.Request, output *UpdateTimeToLiveOutput) {
5814	op := &request.Operation{
5815		Name:       opUpdateTimeToLive,
5816		HTTPMethod: "POST",
5817		HTTPPath:   "/",
5818	}
5819
5820	if input == nil {
5821		input = &UpdateTimeToLiveInput{}
5822	}
5823
5824	output = &UpdateTimeToLiveOutput{}
5825	req = c.newRequest(op, input, output)
5826	// if custom endpoint for the request is set to a non empty string,
5827	// we skip the endpoint discovery workflow.
5828	if req.Config.Endpoint == nil || *req.Config.Endpoint == "" {
5829		if aws.BoolValue(req.Config.EnableEndpointDiscovery) {
5830			de := discovererDescribeEndpoints{
5831				Required:      false,
5832				EndpointCache: c.endpointCache,
5833				Params: map[string]*string{
5834					"op": aws.String(req.Operation.Name),
5835				},
5836				Client: c,
5837			}
5838
5839			for k, v := range de.Params {
5840				if v == nil {
5841					delete(de.Params, k)
5842				}
5843			}
5844
5845			req.Handlers.Build.PushFrontNamed(request.NamedHandler{
5846				Name: "crr.endpointdiscovery",
5847				Fn:   de.Handler,
5848			})
5849		}
5850	}
5851	return
5852}
5853
5854// UpdateTimeToLive API operation for Amazon DynamoDB.
5855//
5856// The UpdateTimeToLive method enables or disables Time to Live (TTL) for the
5857// specified table. A successful UpdateTimeToLive call returns the current TimeToLiveSpecification.
5858// It can take up to one hour for the change to fully process. Any additional
5859// UpdateTimeToLive calls for the same table during this one hour duration result
5860// in a ValidationException.
5861//
5862// TTL compares the current time in epoch time format to the time stored in
5863// the TTL attribute of an item. If the epoch time value stored in the attribute
5864// is less than the current time, the item is marked as expired and subsequently
5865// deleted.
5866//
5867// The epoch time format is the number of seconds elapsed since 12:00:00 AM
5868// January 1, 1970 UTC.
5869//
5870// DynamoDB deletes expired items on a best-effort basis to ensure availability
5871// of throughput for other data operations.
5872//
5873// DynamoDB typically deletes expired items within two days of expiration. The
5874// exact duration within which an item gets deleted after expiration is specific
5875// to the nature of the workload. Items that have expired and not been deleted
5876// will still show up in reads, queries, and scans.
5877//
5878// As items are deleted, they are removed from any local secondary index and
5879// global secondary index immediately in the same eventually consistent way
5880// as a standard delete operation.
5881//
5882// For more information, see Time To Live (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/TTL.html)
5883// in the Amazon DynamoDB Developer Guide.
5884//
5885// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
5886// with awserr.Error's Code and Message methods to get detailed information about
5887// the error.
5888//
5889// See the AWS API reference guide for Amazon DynamoDB's
5890// API operation UpdateTimeToLive for usage and error information.
5891//
5892// Returned Error Types:
5893//   * ResourceInUseException
5894//   The operation conflicts with the resource's availability. For example, you
5895//   attempted to recreate an existing table, or tried to delete a table currently
5896//   in the CREATING state.
5897//
5898//   * ResourceNotFoundException
5899//   The operation tried to access a nonexistent table or index. The resource
5900//   might not be specified correctly, or its status might not be ACTIVE.
5901//
5902//   * LimitExceededException
5903//   There is no limit to the number of daily on-demand backups that can be taken.
5904//
5905//   Up to 50 simultaneous table operations are allowed per account. These operations
5906//   include CreateTable, UpdateTable, DeleteTable,UpdateTimeToLive, RestoreTableFromBackup,
5907//   and RestoreTableToPointInTime.
5908//
5909//   The only exception is when you are creating a table with one or more secondary
5910//   indexes. You can have up to 25 such requests running at a time; however,
5911//   if the table or index specifications are complex, DynamoDB might temporarily
5912//   reduce the number of concurrent operations.
5913//
5914//   There is a soft account limit of 256 tables.
5915//
5916//   * InternalServerError
5917//   An error occurred on the server side.
5918//
5919// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/UpdateTimeToLive
5920func (c *DynamoDB) UpdateTimeToLive(input *UpdateTimeToLiveInput) (*UpdateTimeToLiveOutput, error) {
5921	req, out := c.UpdateTimeToLiveRequest(input)
5922	return out, req.Send()
5923}
5924
5925// UpdateTimeToLiveWithContext is the same as UpdateTimeToLive with the addition of
5926// the ability to pass a context and additional request options.
5927//
5928// See UpdateTimeToLive for details on how to use this API operation.
5929//
5930// The context must be non-nil and will be used for request cancellation. If
5931// the context is nil a panic will occur. In the future the SDK may create
5932// sub-contexts for http.Requests. See https://golang.org/pkg/context/
5933// for more information on using Contexts.
5934func (c *DynamoDB) UpdateTimeToLiveWithContext(ctx aws.Context, input *UpdateTimeToLiveInput, opts ...request.Option) (*UpdateTimeToLiveOutput, error) {
5935	req, out := c.UpdateTimeToLiveRequest(input)
5936	req.SetContext(ctx)
5937	req.ApplyOptions(opts...)
5938	return out, req.Send()
5939}
5940
5941// Contains details of a table archival operation.
5942type ArchivalSummary struct {
5943	_ struct{} `type:"structure"`
5944
5945	// The Amazon Resource Name (ARN) of the backup the table was archived to, when
5946	// applicable in the archival reason. If you wish to restore this backup to
5947	// the same table name, you will need to delete the original table.
5948	ArchivalBackupArn *string `min:"37" type:"string"`
5949
5950	// The date and time when table archival was initiated by DynamoDB, in UNIX
5951	// epoch time format.
5952	ArchivalDateTime *time.Time `type:"timestamp"`
5953
5954	// The reason DynamoDB archived the table. Currently, the only possible value
5955	// is:
5956	//
5957	//    * INACCESSIBLE_ENCRYPTION_CREDENTIALS - The table was archived due to
5958	//    the table's AWS KMS key being inaccessible for more than seven days. An
5959	//    On-Demand backup was created at the archival time.
5960	ArchivalReason *string `type:"string"`
5961}
5962
5963// String returns the string representation
5964func (s ArchivalSummary) String() string {
5965	return awsutil.Prettify(s)
5966}
5967
5968// GoString returns the string representation
5969func (s ArchivalSummary) GoString() string {
5970	return s.String()
5971}
5972
5973// SetArchivalBackupArn sets the ArchivalBackupArn field's value.
5974func (s *ArchivalSummary) SetArchivalBackupArn(v string) *ArchivalSummary {
5975	s.ArchivalBackupArn = &v
5976	return s
5977}
5978
5979// SetArchivalDateTime sets the ArchivalDateTime field's value.
5980func (s *ArchivalSummary) SetArchivalDateTime(v time.Time) *ArchivalSummary {
5981	s.ArchivalDateTime = &v
5982	return s
5983}
5984
5985// SetArchivalReason sets the ArchivalReason field's value.
5986func (s *ArchivalSummary) SetArchivalReason(v string) *ArchivalSummary {
5987	s.ArchivalReason = &v
5988	return s
5989}
5990
5991// Represents an attribute for describing the key schema for the table and indexes.
5992type AttributeDefinition struct {
5993	_ struct{} `type:"structure"`
5994
5995	// A name for the attribute.
5996	//
5997	// AttributeName is a required field
5998	AttributeName *string `min:"1" type:"string" required:"true"`
5999
6000	// The data type for the attribute, where:
6001	//
6002	//    * S - the attribute is of type String
6003	//
6004	//    * N - the attribute is of type Number
6005	//
6006	//    * B - the attribute is of type Binary
6007	//
6008	// AttributeType is a required field
6009	AttributeType *string `type:"string" required:"true" enum:"ScalarAttributeType"`
6010}
6011
6012// String returns the string representation
6013func (s AttributeDefinition) String() string {
6014	return awsutil.Prettify(s)
6015}
6016
6017// GoString returns the string representation
6018func (s AttributeDefinition) GoString() string {
6019	return s.String()
6020}
6021
6022// Validate inspects the fields of the type to determine if they are valid.
6023func (s *AttributeDefinition) Validate() error {
6024	invalidParams := request.ErrInvalidParams{Context: "AttributeDefinition"}
6025	if s.AttributeName == nil {
6026		invalidParams.Add(request.NewErrParamRequired("AttributeName"))
6027	}
6028	if s.AttributeName != nil && len(*s.AttributeName) < 1 {
6029		invalidParams.Add(request.NewErrParamMinLen("AttributeName", 1))
6030	}
6031	if s.AttributeType == nil {
6032		invalidParams.Add(request.NewErrParamRequired("AttributeType"))
6033	}
6034
6035	if invalidParams.Len() > 0 {
6036		return invalidParams
6037	}
6038	return nil
6039}
6040
6041// SetAttributeName sets the AttributeName field's value.
6042func (s *AttributeDefinition) SetAttributeName(v string) *AttributeDefinition {
6043	s.AttributeName = &v
6044	return s
6045}
6046
6047// SetAttributeType sets the AttributeType field's value.
6048func (s *AttributeDefinition) SetAttributeType(v string) *AttributeDefinition {
6049	s.AttributeType = &v
6050	return s
6051}
6052
6053// Represents the data for an attribute.
6054//
6055// Each attribute value is described as a name-value pair. The name is the data
6056// type, and the value is the data itself.
6057//
6058// For more information, see Data Types (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/HowItWorks.NamingRulesDataTypes.html#HowItWorks.DataTypes)
6059// in the Amazon DynamoDB Developer Guide.
6060type AttributeValue struct {
6061	_ struct{} `type:"structure"`
6062
6063	// An attribute of type Binary. For example:
6064	//
6065	// "B": "dGhpcyB0ZXh0IGlzIGJhc2U2NC1lbmNvZGVk"
6066	//
6067	// B is automatically base64 encoded/decoded by the SDK.
6068	B []byte `type:"blob"`
6069
6070	// An attribute of type Boolean. For example:
6071	//
6072	// "BOOL": true
6073	BOOL *bool `type:"boolean"`
6074
6075	// An attribute of type Binary Set. For example:
6076	//
6077	// "BS": ["U3Vubnk=", "UmFpbnk=", "U25vd3k="]
6078	BS [][]byte `type:"list"`
6079
6080	// An attribute of type List. For example:
6081	//
6082	// "L": [ {"S": "Cookies"} , {"S": "Coffee"}, {"N", "3.14159"}]
6083	L []*AttributeValue `type:"list"`
6084
6085	// An attribute of type Map. For example:
6086	//
6087	// "M": {"Name": {"S": "Joe"}, "Age": {"N": "35"}}
6088	M map[string]*AttributeValue `type:"map"`
6089
6090	// An attribute of type Number. For example:
6091	//
6092	// "N": "123.45"
6093	//
6094	// Numbers are sent across the network to DynamoDB as strings, to maximize compatibility
6095	// across languages and libraries. However, DynamoDB treats them as number type
6096	// attributes for mathematical operations.
6097	N *string `type:"string"`
6098
6099	// An attribute of type Number Set. For example:
6100	//
6101	// "NS": ["42.2", "-19", "7.5", "3.14"]
6102	//
6103	// Numbers are sent across the network to DynamoDB as strings, to maximize compatibility
6104	// across languages and libraries. However, DynamoDB treats them as number type
6105	// attributes for mathematical operations.
6106	NS []*string `type:"list"`
6107
6108	// An attribute of type Null. For example:
6109	//
6110	// "NULL": true
6111	NULL *bool `type:"boolean"`
6112
6113	// An attribute of type String. For example:
6114	//
6115	// "S": "Hello"
6116	S *string `type:"string"`
6117
6118	// An attribute of type String Set. For example:
6119	//
6120	// "SS": ["Giraffe", "Hippo" ,"Zebra"]
6121	SS []*string `type:"list"`
6122}
6123
6124// String returns the string representation
6125func (s AttributeValue) String() string {
6126	return awsutil.Prettify(s)
6127}
6128
6129// GoString returns the string representation
6130func (s AttributeValue) GoString() string {
6131	return s.String()
6132}
6133
6134// SetB sets the B field's value.
6135func (s *AttributeValue) SetB(v []byte) *AttributeValue {
6136	s.B = v
6137	return s
6138}
6139
6140// SetBOOL sets the BOOL field's value.
6141func (s *AttributeValue) SetBOOL(v bool) *AttributeValue {
6142	s.BOOL = &v
6143	return s
6144}
6145
6146// SetBS sets the BS field's value.
6147func (s *AttributeValue) SetBS(v [][]byte) *AttributeValue {
6148	s.BS = v
6149	return s
6150}
6151
6152// SetL sets the L field's value.
6153func (s *AttributeValue) SetL(v []*AttributeValue) *AttributeValue {
6154	s.L = v
6155	return s
6156}
6157
6158// SetM sets the M field's value.
6159func (s *AttributeValue) SetM(v map[string]*AttributeValue) *AttributeValue {
6160	s.M = v
6161	return s
6162}
6163
6164// SetN sets the N field's value.
6165func (s *AttributeValue) SetN(v string) *AttributeValue {
6166	s.N = &v
6167	return s
6168}
6169
6170// SetNS sets the NS field's value.
6171func (s *AttributeValue) SetNS(v []*string) *AttributeValue {
6172	s.NS = v
6173	return s
6174}
6175
6176// SetNULL sets the NULL field's value.
6177func (s *AttributeValue) SetNULL(v bool) *AttributeValue {
6178	s.NULL = &v
6179	return s
6180}
6181
6182// SetS sets the S field's value.
6183func (s *AttributeValue) SetS(v string) *AttributeValue {
6184	s.S = &v
6185	return s
6186}
6187
6188// SetSS sets the SS field's value.
6189func (s *AttributeValue) SetSS(v []*string) *AttributeValue {
6190	s.SS = v
6191	return s
6192}
6193
6194// For the UpdateItem operation, represents the attributes to be modified, the
6195// action to perform on each, and the new value for each.
6196//
6197// You cannot use UpdateItem to update any primary key attributes. Instead,
6198// you will need to delete the item, and then use PutItem to create a new item
6199// with new attributes.
6200//
6201// Attribute values cannot be null; string and binary type attributes must have
6202// lengths greater than zero; and set type attributes must not be empty. Requests
6203// with empty values will be rejected with a ValidationException exception.
6204type AttributeValueUpdate struct {
6205	_ struct{} `type:"structure"`
6206
6207	// Specifies how to perform the update. Valid values are PUT (default), DELETE,
6208	// and ADD. The behavior depends on whether the specified primary key already
6209	// exists in the table.
6210	//
6211	// If an item with the specified Key is found in the table:
6212	//
6213	//    * PUT - Adds the specified attribute to the item. If the attribute already
6214	//    exists, it is replaced by the new value.
6215	//
6216	//    * DELETE - If no value is specified, the attribute and its value are removed
6217	//    from the item. The data type of the specified value must match the existing
6218	//    value's data type. If a set of values is specified, then those values
6219	//    are subtracted from the old set. For example, if the attribute value was
6220	//    the set [a,b,c] and the DELETE action specified [a,c], then the final
6221	//    attribute value would be [b]. Specifying an empty set is an error.
6222	//
6223	//    * ADD - If the attribute does not already exist, then the attribute and
6224	//    its values are added to the item. If the attribute does exist, then the
6225	//    behavior of ADD depends on the data type of the attribute: If the existing
6226	//    attribute is a number, and if Value is also a number, then the Value is
6227	//    mathematically added to the existing attribute. If Value is a negative
6228	//    number, then it is subtracted from the existing attribute. If you use
6229	//    ADD to increment or decrement a number value for an item that doesn't
6230	//    exist before the update, DynamoDB uses 0 as the initial value. In addition,
6231	//    if you use ADD to update an existing item, and intend to increment or
6232	//    decrement an attribute value which does not yet exist, DynamoDB uses 0
6233	//    as the initial value. For example, suppose that the item you want to update
6234	//    does not yet have an attribute named itemcount, but you decide to ADD
6235	//    the number 3 to this attribute anyway, even though it currently does not
6236	//    exist. DynamoDB will create the itemcount attribute, set its initial value
6237	//    to 0, and finally add 3 to it. The result will be a new itemcount attribute
6238	//    in the item, with a value of 3. If the existing data type is a set, and
6239	//    if the Value is also a set, then the Value is added to the existing set.
6240	//    (This is a set operation, not mathematical addition.) For example, if
6241	//    the attribute value was the set [1,2], and the ADD action specified [3],
6242	//    then the final attribute value would be [1,2,3]. An error occurs if an
6243	//    Add action is specified for a set attribute and the attribute type specified
6244	//    does not match the existing set type. Both sets must have the same primitive
6245	//    data type. For example, if the existing data type is a set of strings,
6246	//    the Value must also be a set of strings. The same holds true for number
6247	//    sets and binary sets. This action is only valid for an existing attribute
6248	//    whose data type is number or is a set. Do not use ADD for any other data
6249	//    types.
6250	//
6251	// If no item with the specified Key is found:
6252	//
6253	//    * PUT - DynamoDB creates a new item with the specified primary key, and
6254	//    then adds the attribute.
6255	//
6256	//    * DELETE - Nothing happens; there is no attribute to delete.
6257	//
6258	//    * ADD - DynamoDB creates an item with the supplied primary key and number
6259	//    (or set of numbers) for the attribute value. The only data types allowed
6260	//    are number and number set; no other data types can be specified.
6261	Action *string `type:"string" enum:"AttributeAction"`
6262
6263	// Represents the data for an attribute.
6264	//
6265	// Each attribute value is described as a name-value pair. The name is the data
6266	// type, and the value is the data itself.
6267	//
6268	// For more information, see Data Types (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/HowItWorks.NamingRulesDataTypes.html#HowItWorks.DataTypes)
6269	// in the Amazon DynamoDB Developer Guide.
6270	Value *AttributeValue `type:"structure"`
6271}
6272
6273// String returns the string representation
6274func (s AttributeValueUpdate) String() string {
6275	return awsutil.Prettify(s)
6276}
6277
6278// GoString returns the string representation
6279func (s AttributeValueUpdate) GoString() string {
6280	return s.String()
6281}
6282
6283// SetAction sets the Action field's value.
6284func (s *AttributeValueUpdate) SetAction(v string) *AttributeValueUpdate {
6285	s.Action = &v
6286	return s
6287}
6288
6289// SetValue sets the Value field's value.
6290func (s *AttributeValueUpdate) SetValue(v *AttributeValue) *AttributeValueUpdate {
6291	s.Value = v
6292	return s
6293}
6294
6295// Represents the properties of the scaling policy.
6296type AutoScalingPolicyDescription struct {
6297	_ struct{} `type:"structure"`
6298
6299	// The name of the scaling policy.
6300	PolicyName *string `min:"1" type:"string"`
6301
6302	// Represents a target tracking scaling policy configuration.
6303	TargetTrackingScalingPolicyConfiguration *AutoScalingTargetTrackingScalingPolicyConfigurationDescription `type:"structure"`
6304}
6305
6306// String returns the string representation
6307func (s AutoScalingPolicyDescription) String() string {
6308	return awsutil.Prettify(s)
6309}
6310
6311// GoString returns the string representation
6312func (s AutoScalingPolicyDescription) GoString() string {
6313	return s.String()
6314}
6315
6316// SetPolicyName sets the PolicyName field's value.
6317func (s *AutoScalingPolicyDescription) SetPolicyName(v string) *AutoScalingPolicyDescription {
6318	s.PolicyName = &v
6319	return s
6320}
6321
6322// SetTargetTrackingScalingPolicyConfiguration sets the TargetTrackingScalingPolicyConfiguration field's value.
6323func (s *AutoScalingPolicyDescription) SetTargetTrackingScalingPolicyConfiguration(v *AutoScalingTargetTrackingScalingPolicyConfigurationDescription) *AutoScalingPolicyDescription {
6324	s.TargetTrackingScalingPolicyConfiguration = v
6325	return s
6326}
6327
6328// Represents the auto scaling policy to be modified.
6329type AutoScalingPolicyUpdate struct {
6330	_ struct{} `type:"structure"`
6331
6332	// The name of the scaling policy.
6333	PolicyName *string `min:"1" type:"string"`
6334
6335	// Represents a target tracking scaling policy configuration.
6336	//
6337	// TargetTrackingScalingPolicyConfiguration is a required field
6338	TargetTrackingScalingPolicyConfiguration *AutoScalingTargetTrackingScalingPolicyConfigurationUpdate `type:"structure" required:"true"`
6339}
6340
6341// String returns the string representation
6342func (s AutoScalingPolicyUpdate) String() string {
6343	return awsutil.Prettify(s)
6344}
6345
6346// GoString returns the string representation
6347func (s AutoScalingPolicyUpdate) GoString() string {
6348	return s.String()
6349}
6350
6351// Validate inspects the fields of the type to determine if they are valid.
6352func (s *AutoScalingPolicyUpdate) Validate() error {
6353	invalidParams := request.ErrInvalidParams{Context: "AutoScalingPolicyUpdate"}
6354	if s.PolicyName != nil && len(*s.PolicyName) < 1 {
6355		invalidParams.Add(request.NewErrParamMinLen("PolicyName", 1))
6356	}
6357	if s.TargetTrackingScalingPolicyConfiguration == nil {
6358		invalidParams.Add(request.NewErrParamRequired("TargetTrackingScalingPolicyConfiguration"))
6359	}
6360	if s.TargetTrackingScalingPolicyConfiguration != nil {
6361		if err := s.TargetTrackingScalingPolicyConfiguration.Validate(); err != nil {
6362			invalidParams.AddNested("TargetTrackingScalingPolicyConfiguration", err.(request.ErrInvalidParams))
6363		}
6364	}
6365
6366	if invalidParams.Len() > 0 {
6367		return invalidParams
6368	}
6369	return nil
6370}
6371
6372// SetPolicyName sets the PolicyName field's value.
6373func (s *AutoScalingPolicyUpdate) SetPolicyName(v string) *AutoScalingPolicyUpdate {
6374	s.PolicyName = &v
6375	return s
6376}
6377
6378// SetTargetTrackingScalingPolicyConfiguration sets the TargetTrackingScalingPolicyConfiguration field's value.
6379func (s *AutoScalingPolicyUpdate) SetTargetTrackingScalingPolicyConfiguration(v *AutoScalingTargetTrackingScalingPolicyConfigurationUpdate) *AutoScalingPolicyUpdate {
6380	s.TargetTrackingScalingPolicyConfiguration = v
6381	return s
6382}
6383
6384// Represents the auto scaling settings for a global table or global secondary
6385// index.
6386type AutoScalingSettingsDescription struct {
6387	_ struct{} `type:"structure"`
6388
6389	// Disabled auto scaling for this global table or global secondary index.
6390	AutoScalingDisabled *bool `type:"boolean"`
6391
6392	// Role ARN used for configuring the auto scaling policy.
6393	AutoScalingRoleArn *string `type:"string"`
6394
6395	// The maximum capacity units that a global table or global secondary index
6396	// should be scaled up to.
6397	MaximumUnits *int64 `min:"1" type:"long"`
6398
6399	// The minimum capacity units that a global table or global secondary index
6400	// should be scaled down to.
6401	MinimumUnits *int64 `min:"1" type:"long"`
6402
6403	// Information about the scaling policies.
6404	ScalingPolicies []*AutoScalingPolicyDescription `type:"list"`
6405}
6406
6407// String returns the string representation
6408func (s AutoScalingSettingsDescription) String() string {
6409	return awsutil.Prettify(s)
6410}
6411
6412// GoString returns the string representation
6413func (s AutoScalingSettingsDescription) GoString() string {
6414	return s.String()
6415}
6416
6417// SetAutoScalingDisabled sets the AutoScalingDisabled field's value.
6418func (s *AutoScalingSettingsDescription) SetAutoScalingDisabled(v bool) *AutoScalingSettingsDescription {
6419	s.AutoScalingDisabled = &v
6420	return s
6421}
6422
6423// SetAutoScalingRoleArn sets the AutoScalingRoleArn field's value.
6424func (s *AutoScalingSettingsDescription) SetAutoScalingRoleArn(v string) *AutoScalingSettingsDescription {
6425	s.AutoScalingRoleArn = &v
6426	return s
6427}
6428
6429// SetMaximumUnits sets the MaximumUnits field's value.
6430func (s *AutoScalingSettingsDescription) SetMaximumUnits(v int64) *AutoScalingSettingsDescription {
6431	s.MaximumUnits = &v
6432	return s
6433}
6434
6435// SetMinimumUnits sets the MinimumUnits field's value.
6436func (s *AutoScalingSettingsDescription) SetMinimumUnits(v int64) *AutoScalingSettingsDescription {
6437	s.MinimumUnits = &v
6438	return s
6439}
6440
6441// SetScalingPolicies sets the ScalingPolicies field's value.
6442func (s *AutoScalingSettingsDescription) SetScalingPolicies(v []*AutoScalingPolicyDescription) *AutoScalingSettingsDescription {
6443	s.ScalingPolicies = v
6444	return s
6445}
6446
6447// Represents the auto scaling settings to be modified for a global table or
6448// global secondary index.
6449type AutoScalingSettingsUpdate struct {
6450	_ struct{} `type:"structure"`
6451
6452	// Disabled auto scaling for this global table or global secondary index.
6453	AutoScalingDisabled *bool `type:"boolean"`
6454
6455	// Role ARN used for configuring auto scaling policy.
6456	AutoScalingRoleArn *string `min:"1" type:"string"`
6457
6458	// The maximum capacity units that a global table or global secondary index
6459	// should be scaled up to.
6460	MaximumUnits *int64 `min:"1" type:"long"`
6461
6462	// The minimum capacity units that a global table or global secondary index
6463	// should be scaled down to.
6464	MinimumUnits *int64 `min:"1" type:"long"`
6465
6466	// The scaling policy to apply for scaling target global table or global secondary
6467	// index capacity units.
6468	ScalingPolicyUpdate *AutoScalingPolicyUpdate `type:"structure"`
6469}
6470
6471// String returns the string representation
6472func (s AutoScalingSettingsUpdate) String() string {
6473	return awsutil.Prettify(s)
6474}
6475
6476// GoString returns the string representation
6477func (s AutoScalingSettingsUpdate) GoString() string {
6478	return s.String()
6479}
6480
6481// Validate inspects the fields of the type to determine if they are valid.
6482func (s *AutoScalingSettingsUpdate) Validate() error {
6483	invalidParams := request.ErrInvalidParams{Context: "AutoScalingSettingsUpdate"}
6484	if s.AutoScalingRoleArn != nil && len(*s.AutoScalingRoleArn) < 1 {
6485		invalidParams.Add(request.NewErrParamMinLen("AutoScalingRoleArn", 1))
6486	}
6487	if s.MaximumUnits != nil && *s.MaximumUnits < 1 {
6488		invalidParams.Add(request.NewErrParamMinValue("MaximumUnits", 1))
6489	}
6490	if s.MinimumUnits != nil && *s.MinimumUnits < 1 {
6491		invalidParams.Add(request.NewErrParamMinValue("MinimumUnits", 1))
6492	}
6493	if s.ScalingPolicyUpdate != nil {
6494		if err := s.ScalingPolicyUpdate.Validate(); err != nil {
6495			invalidParams.AddNested("ScalingPolicyUpdate", err.(request.ErrInvalidParams))
6496		}
6497	}
6498
6499	if invalidParams.Len() > 0 {
6500		return invalidParams
6501	}
6502	return nil
6503}
6504
6505// SetAutoScalingDisabled sets the AutoScalingDisabled field's value.
6506func (s *AutoScalingSettingsUpdate) SetAutoScalingDisabled(v bool) *AutoScalingSettingsUpdate {
6507	s.AutoScalingDisabled = &v
6508	return s
6509}
6510
6511// SetAutoScalingRoleArn sets the AutoScalingRoleArn field's value.
6512func (s *AutoScalingSettingsUpdate) SetAutoScalingRoleArn(v string) *AutoScalingSettingsUpdate {
6513	s.AutoScalingRoleArn = &v
6514	return s
6515}
6516
6517// SetMaximumUnits sets the MaximumUnits field's value.
6518func (s *AutoScalingSettingsUpdate) SetMaximumUnits(v int64) *AutoScalingSettingsUpdate {
6519	s.MaximumUnits = &v
6520	return s
6521}
6522
6523// SetMinimumUnits sets the MinimumUnits field's value.
6524func (s *AutoScalingSettingsUpdate) SetMinimumUnits(v int64) *AutoScalingSettingsUpdate {
6525	s.MinimumUnits = &v
6526	return s
6527}
6528
6529// SetScalingPolicyUpdate sets the ScalingPolicyUpdate field's value.
6530func (s *AutoScalingSettingsUpdate) SetScalingPolicyUpdate(v *AutoScalingPolicyUpdate) *AutoScalingSettingsUpdate {
6531	s.ScalingPolicyUpdate = v
6532	return s
6533}
6534
6535// Represents the properties of a target tracking scaling policy.
6536type AutoScalingTargetTrackingScalingPolicyConfigurationDescription struct {
6537	_ struct{} `type:"structure"`
6538
6539	// Indicates whether scale in by the target tracking policy is disabled. If
6540	// the value is true, scale in is disabled and the target tracking policy won't
6541	// remove capacity from the scalable resource. Otherwise, scale in is enabled
6542	// and the target tracking policy can remove capacity from the scalable resource.
6543	// The default value is false.
6544	DisableScaleIn *bool `type:"boolean"`
6545
6546	// The amount of time, in seconds, after a scale in activity completes before
6547	// another scale in activity can start. The cooldown period is used to block
6548	// subsequent scale in requests until it has expired. You should scale in conservatively
6549	// to protect your application's availability. However, if another alarm triggers
6550	// a scale out policy during the cooldown period after a scale-in, application
6551	// auto scaling scales out your scalable target immediately.
6552	ScaleInCooldown *int64 `type:"integer"`
6553
6554	// The amount of time, in seconds, after a scale out activity completes before
6555	// another scale out activity can start. While the cooldown period is in effect,
6556	// the capacity that has been added by the previous scale out event that initiated
6557	// the cooldown is calculated as part of the desired capacity for the next scale
6558	// out. You should continuously (but not excessively) scale out.
6559	ScaleOutCooldown *int64 `type:"integer"`
6560
6561	// The target value for the metric. The range is 8.515920e-109 to 1.174271e+108
6562	// (Base 10) or 2e-360 to 2e360 (Base 2).
6563	//
6564	// TargetValue is a required field
6565	TargetValue *float64 `type:"double" required:"true"`
6566}
6567
6568// String returns the string representation
6569func (s AutoScalingTargetTrackingScalingPolicyConfigurationDescription) String() string {
6570	return awsutil.Prettify(s)
6571}
6572
6573// GoString returns the string representation
6574func (s AutoScalingTargetTrackingScalingPolicyConfigurationDescription) GoString() string {
6575	return s.String()
6576}
6577
6578// SetDisableScaleIn sets the DisableScaleIn field's value.
6579func (s *AutoScalingTargetTrackingScalingPolicyConfigurationDescription) SetDisableScaleIn(v bool) *AutoScalingTargetTrackingScalingPolicyConfigurationDescription {
6580	s.DisableScaleIn = &v
6581	return s
6582}
6583
6584// SetScaleInCooldown sets the ScaleInCooldown field's value.
6585func (s *AutoScalingTargetTrackingScalingPolicyConfigurationDescription) SetScaleInCooldown(v int64) *AutoScalingTargetTrackingScalingPolicyConfigurationDescription {
6586	s.ScaleInCooldown = &v
6587	return s
6588}
6589
6590// SetScaleOutCooldown sets the ScaleOutCooldown field's value.
6591func (s *AutoScalingTargetTrackingScalingPolicyConfigurationDescription) SetScaleOutCooldown(v int64) *AutoScalingTargetTrackingScalingPolicyConfigurationDescription {
6592	s.ScaleOutCooldown = &v
6593	return s
6594}
6595
6596// SetTargetValue sets the TargetValue field's value.
6597func (s *AutoScalingTargetTrackingScalingPolicyConfigurationDescription) SetTargetValue(v float64) *AutoScalingTargetTrackingScalingPolicyConfigurationDescription {
6598	s.TargetValue = &v
6599	return s
6600}
6601
6602// Represents the settings of a target tracking scaling policy that will be
6603// modified.
6604type AutoScalingTargetTrackingScalingPolicyConfigurationUpdate struct {
6605	_ struct{} `type:"structure"`
6606
6607	// Indicates whether scale in by the target tracking policy is disabled. If
6608	// the value is true, scale in is disabled and the target tracking policy won't
6609	// remove capacity from the scalable resource. Otherwise, scale in is enabled
6610	// and the target tracking policy can remove capacity from the scalable resource.
6611	// The default value is false.
6612	DisableScaleIn *bool `type:"boolean"`
6613
6614	// The amount of time, in seconds, after a scale in activity completes before
6615	// another scale in activity can start. The cooldown period is used to block
6616	// subsequent scale in requests until it has expired. You should scale in conservatively
6617	// to protect your application's availability. However, if another alarm triggers
6618	// a scale out policy during the cooldown period after a scale-in, application
6619	// auto scaling scales out your scalable target immediately.
6620	ScaleInCooldown *int64 `type:"integer"`
6621
6622	// The amount of time, in seconds, after a scale out activity completes before
6623	// another scale out activity can start. While the cooldown period is in effect,
6624	// the capacity that has been added by the previous scale out event that initiated
6625	// the cooldown is calculated as part of the desired capacity for the next scale
6626	// out. You should continuously (but not excessively) scale out.
6627	ScaleOutCooldown *int64 `type:"integer"`
6628
6629	// The target value for the metric. The range is 8.515920e-109 to 1.174271e+108
6630	// (Base 10) or 2e-360 to 2e360 (Base 2).
6631	//
6632	// TargetValue is a required field
6633	TargetValue *float64 `type:"double" required:"true"`
6634}
6635
6636// String returns the string representation
6637func (s AutoScalingTargetTrackingScalingPolicyConfigurationUpdate) String() string {
6638	return awsutil.Prettify(s)
6639}
6640
6641// GoString returns the string representation
6642func (s AutoScalingTargetTrackingScalingPolicyConfigurationUpdate) GoString() string {
6643	return s.String()
6644}
6645
6646// Validate inspects the fields of the type to determine if they are valid.
6647func (s *AutoScalingTargetTrackingScalingPolicyConfigurationUpdate) Validate() error {
6648	invalidParams := request.ErrInvalidParams{Context: "AutoScalingTargetTrackingScalingPolicyConfigurationUpdate"}
6649	if s.TargetValue == nil {
6650		invalidParams.Add(request.NewErrParamRequired("TargetValue"))
6651	}
6652
6653	if invalidParams.Len() > 0 {
6654		return invalidParams
6655	}
6656	return nil
6657}
6658
6659// SetDisableScaleIn sets the DisableScaleIn field's value.
6660func (s *AutoScalingTargetTrackingScalingPolicyConfigurationUpdate) SetDisableScaleIn(v bool) *AutoScalingTargetTrackingScalingPolicyConfigurationUpdate {
6661	s.DisableScaleIn = &v
6662	return s
6663}
6664
6665// SetScaleInCooldown sets the ScaleInCooldown field's value.
6666func (s *AutoScalingTargetTrackingScalingPolicyConfigurationUpdate) SetScaleInCooldown(v int64) *AutoScalingTargetTrackingScalingPolicyConfigurationUpdate {
6667	s.ScaleInCooldown = &v
6668	return s
6669}
6670
6671// SetScaleOutCooldown sets the ScaleOutCooldown field's value.
6672func (s *AutoScalingTargetTrackingScalingPolicyConfigurationUpdate) SetScaleOutCooldown(v int64) *AutoScalingTargetTrackingScalingPolicyConfigurationUpdate {
6673	s.ScaleOutCooldown = &v
6674	return s
6675}
6676
6677// SetTargetValue sets the TargetValue field's value.
6678func (s *AutoScalingTargetTrackingScalingPolicyConfigurationUpdate) SetTargetValue(v float64) *AutoScalingTargetTrackingScalingPolicyConfigurationUpdate {
6679	s.TargetValue = &v
6680	return s
6681}
6682
6683// Contains the description of the backup created for the table.
6684type BackupDescription struct {
6685	_ struct{} `type:"structure"`
6686
6687	// Contains the details of the backup created for the table.
6688	BackupDetails *BackupDetails `type:"structure"`
6689
6690	// Contains the details of the table when the backup was created.
6691	SourceTableDetails *SourceTableDetails `type:"structure"`
6692
6693	// Contains the details of the features enabled on the table when the backup
6694	// was created. For example, LSIs, GSIs, streams, TTL.
6695	SourceTableFeatureDetails *SourceTableFeatureDetails `type:"structure"`
6696}
6697
6698// String returns the string representation
6699func (s BackupDescription) String() string {
6700	return awsutil.Prettify(s)
6701}
6702
6703// GoString returns the string representation
6704func (s BackupDescription) GoString() string {
6705	return s.String()
6706}
6707
6708// SetBackupDetails sets the BackupDetails field's value.
6709func (s *BackupDescription) SetBackupDetails(v *BackupDetails) *BackupDescription {
6710	s.BackupDetails = v
6711	return s
6712}
6713
6714// SetSourceTableDetails sets the SourceTableDetails field's value.
6715func (s *BackupDescription) SetSourceTableDetails(v *SourceTableDetails) *BackupDescription {
6716	s.SourceTableDetails = v
6717	return s
6718}
6719
6720// SetSourceTableFeatureDetails sets the SourceTableFeatureDetails field's value.
6721func (s *BackupDescription) SetSourceTableFeatureDetails(v *SourceTableFeatureDetails) *BackupDescription {
6722	s.SourceTableFeatureDetails = v
6723	return s
6724}
6725
6726// Contains the details of the backup created for the table.
6727type BackupDetails struct {
6728	_ struct{} `type:"structure"`
6729
6730	// ARN associated with the backup.
6731	//
6732	// BackupArn is a required field
6733	BackupArn *string `min:"37" type:"string" required:"true"`
6734
6735	// Time at which the backup was created. This is the request time of the backup.
6736	//
6737	// BackupCreationDateTime is a required field
6738	BackupCreationDateTime *time.Time `type:"timestamp" required:"true"`
6739
6740	// Time at which the automatic on-demand backup created by DynamoDB will expire.
6741	// This SYSTEM on-demand backup expires automatically 35 days after its creation.
6742	BackupExpiryDateTime *time.Time `type:"timestamp"`
6743
6744	// Name of the requested backup.
6745	//
6746	// BackupName is a required field
6747	BackupName *string `min:"3" type:"string" required:"true"`
6748
6749	// Size of the backup in bytes.
6750	BackupSizeBytes *int64 `type:"long"`
6751
6752	// Backup can be in one of the following states: CREATING, ACTIVE, DELETED.
6753	//
6754	// BackupStatus is a required field
6755	BackupStatus *string `type:"string" required:"true" enum:"BackupStatus"`
6756
6757	// BackupType:
6758	//
6759	//    * USER - You create and manage these using the on-demand backup feature.
6760	//
6761	//    * SYSTEM - If you delete a table with point-in-time recovery enabled,
6762	//    a SYSTEM backup is automatically created and is retained for 35 days (at
6763	//    no additional cost). System backups allow you to restore the deleted table
6764	//    to the state it was in just before the point of deletion.
6765	//
6766	//    * AWS_BACKUP - On-demand backup created by you from AWS Backup service.
6767	//
6768	// BackupType is a required field
6769	BackupType *string `type:"string" required:"true" enum:"BackupType"`
6770}
6771
6772// String returns the string representation
6773func (s BackupDetails) String() string {
6774	return awsutil.Prettify(s)
6775}
6776
6777// GoString returns the string representation
6778func (s BackupDetails) GoString() string {
6779	return s.String()
6780}
6781
6782// SetBackupArn sets the BackupArn field's value.
6783func (s *BackupDetails) SetBackupArn(v string) *BackupDetails {
6784	s.BackupArn = &v
6785	return s
6786}
6787
6788// SetBackupCreationDateTime sets the BackupCreationDateTime field's value.
6789func (s *BackupDetails) SetBackupCreationDateTime(v time.Time) *BackupDetails {
6790	s.BackupCreationDateTime = &v
6791	return s
6792}
6793
6794// SetBackupExpiryDateTime sets the BackupExpiryDateTime field's value.
6795func (s *BackupDetails) SetBackupExpiryDateTime(v time.Time) *BackupDetails {
6796	s.BackupExpiryDateTime = &v
6797	return s
6798}
6799
6800// SetBackupName sets the BackupName field's value.
6801func (s *BackupDetails) SetBackupName(v string) *BackupDetails {
6802	s.BackupName = &v
6803	return s
6804}
6805
6806// SetBackupSizeBytes sets the BackupSizeBytes field's value.
6807func (s *BackupDetails) SetBackupSizeBytes(v int64) *BackupDetails {
6808	s.BackupSizeBytes = &v
6809	return s
6810}
6811
6812// SetBackupStatus sets the BackupStatus field's value.
6813func (s *BackupDetails) SetBackupStatus(v string) *BackupDetails {
6814	s.BackupStatus = &v
6815	return s
6816}
6817
6818// SetBackupType sets the BackupType field's value.
6819func (s *BackupDetails) SetBackupType(v string) *BackupDetails {
6820	s.BackupType = &v
6821	return s
6822}
6823
6824// There is another ongoing conflicting backup control plane operation on the
6825// table. The backup is either being created, deleted or restored to a table.
6826type BackupInUseException struct {
6827	_            struct{}                  `type:"structure"`
6828	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`
6829
6830	Message_ *string `locationName:"message" type:"string"`
6831}
6832
6833// String returns the string representation
6834func (s BackupInUseException) String() string {
6835	return awsutil.Prettify(s)
6836}
6837
6838// GoString returns the string representation
6839func (s BackupInUseException) GoString() string {
6840	return s.String()
6841}
6842
6843func newErrorBackupInUseException(v protocol.ResponseMetadata) error {
6844	return &BackupInUseException{
6845		RespMetadata: v,
6846	}
6847}
6848
6849// Code returns the exception type name.
6850func (s *BackupInUseException) Code() string {
6851	return "BackupInUseException"
6852}
6853
6854// Message returns the exception's message.
6855func (s *BackupInUseException) Message() string {
6856	if s.Message_ != nil {
6857		return *s.Message_
6858	}
6859	return ""
6860}
6861
6862// OrigErr always returns nil, satisfies awserr.Error interface.
6863func (s *BackupInUseException) OrigErr() error {
6864	return nil
6865}
6866
6867func (s *BackupInUseException) Error() string {
6868	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
6869}
6870
6871// Status code returns the HTTP status code for the request's response error.
6872func (s *BackupInUseException) StatusCode() int {
6873	return s.RespMetadata.StatusCode
6874}
6875
6876// RequestID returns the service's response RequestID for request.
6877func (s *BackupInUseException) RequestID() string {
6878	return s.RespMetadata.RequestID
6879}
6880
6881// Backup not found for the given BackupARN.
6882type BackupNotFoundException struct {
6883	_            struct{}                  `type:"structure"`
6884	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`
6885
6886	Message_ *string `locationName:"message" type:"string"`
6887}
6888
6889// String returns the string representation
6890func (s BackupNotFoundException) String() string {
6891	return awsutil.Prettify(s)
6892}
6893
6894// GoString returns the string representation
6895func (s BackupNotFoundException) GoString() string {
6896	return s.String()
6897}
6898
6899func newErrorBackupNotFoundException(v protocol.ResponseMetadata) error {
6900	return &BackupNotFoundException{
6901		RespMetadata: v,
6902	}
6903}
6904
6905// Code returns the exception type name.
6906func (s *BackupNotFoundException) Code() string {
6907	return "BackupNotFoundException"
6908}
6909
6910// Message returns the exception's message.
6911func (s *BackupNotFoundException) Message() string {
6912	if s.Message_ != nil {
6913		return *s.Message_
6914	}
6915	return ""
6916}
6917
6918// OrigErr always returns nil, satisfies awserr.Error interface.
6919func (s *BackupNotFoundException) OrigErr() error {
6920	return nil
6921}
6922
6923func (s *BackupNotFoundException) Error() string {
6924	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
6925}
6926
6927// Status code returns the HTTP status code for the request's response error.
6928func (s *BackupNotFoundException) StatusCode() int {
6929	return s.RespMetadata.StatusCode
6930}
6931
6932// RequestID returns the service's response RequestID for request.
6933func (s *BackupNotFoundException) RequestID() string {
6934	return s.RespMetadata.RequestID
6935}
6936
6937// Contains details for the backup.
6938type BackupSummary struct {
6939	_ struct{} `type:"structure"`
6940
6941	// ARN associated with the backup.
6942	BackupArn *string `min:"37" type:"string"`
6943
6944	// Time at which the backup was created.
6945	BackupCreationDateTime *time.Time `type:"timestamp"`
6946
6947	// Time at which the automatic on-demand backup created by DynamoDB will expire.
6948	// This SYSTEM on-demand backup expires automatically 35 days after its creation.
6949	BackupExpiryDateTime *time.Time `type:"timestamp"`
6950
6951	// Name of the specified backup.
6952	BackupName *string `min:"3" type:"string"`
6953
6954	// Size of the backup in bytes.
6955	BackupSizeBytes *int64 `type:"long"`
6956
6957	// Backup can be in one of the following states: CREATING, ACTIVE, DELETED.
6958	BackupStatus *string `type:"string" enum:"BackupStatus"`
6959
6960	// BackupType:
6961	//
6962	//    * USER - You create and manage these using the on-demand backup feature.
6963	//
6964	//    * SYSTEM - If you delete a table with point-in-time recovery enabled,
6965	//    a SYSTEM backup is automatically created and is retained for 35 days (at
6966	//    no additional cost). System backups allow you to restore the deleted table
6967	//    to the state it was in just before the point of deletion.
6968	//
6969	//    * AWS_BACKUP - On-demand backup created by you from AWS Backup service.
6970	BackupType *string `type:"string" enum:"BackupType"`
6971
6972	// ARN associated with the table.
6973	TableArn *string `type:"string"`
6974
6975	// Unique identifier for the table.
6976	TableId *string `type:"string"`
6977
6978	// Name of the table.
6979	TableName *string `min:"3" type:"string"`
6980}
6981
6982// String returns the string representation
6983func (s BackupSummary) String() string {
6984	return awsutil.Prettify(s)
6985}
6986
6987// GoString returns the string representation
6988func (s BackupSummary) GoString() string {
6989	return s.String()
6990}
6991
6992// SetBackupArn sets the BackupArn field's value.
6993func (s *BackupSummary) SetBackupArn(v string) *BackupSummary {
6994	s.BackupArn = &v
6995	return s
6996}
6997
6998// SetBackupCreationDateTime sets the BackupCreationDateTime field's value.
6999func (s *BackupSummary) SetBackupCreationDateTime(v time.Time) *BackupSummary {
7000	s.BackupCreationDateTime = &v
7001	return s
7002}
7003
7004// SetBackupExpiryDateTime sets the BackupExpiryDateTime field's value.
7005func (s *BackupSummary) SetBackupExpiryDateTime(v time.Time) *BackupSummary {
7006	s.BackupExpiryDateTime = &v
7007	return s
7008}
7009
7010// SetBackupName sets the BackupName field's value.
7011func (s *BackupSummary) SetBackupName(v string) *BackupSummary {
7012	s.BackupName = &v
7013	return s
7014}
7015
7016// SetBackupSizeBytes sets the BackupSizeBytes field's value.
7017func (s *BackupSummary) SetBackupSizeBytes(v int64) *BackupSummary {
7018	s.BackupSizeBytes = &v
7019	return s
7020}
7021
7022// SetBackupStatus sets the BackupStatus field's value.
7023func (s *BackupSummary) SetBackupStatus(v string) *BackupSummary {
7024	s.BackupStatus = &v
7025	return s
7026}
7027
7028// SetBackupType sets the BackupType field's value.
7029func (s *BackupSummary) SetBackupType(v string) *BackupSummary {
7030	s.BackupType = &v
7031	return s
7032}
7033
7034// SetTableArn sets the TableArn field's value.
7035func (s *BackupSummary) SetTableArn(v string) *BackupSummary {
7036	s.TableArn = &v
7037	return s
7038}
7039
7040// SetTableId sets the TableId field's value.
7041func (s *BackupSummary) SetTableId(v string) *BackupSummary {
7042	s.TableId = &v
7043	return s
7044}
7045
7046// SetTableName sets the TableName field's value.
7047func (s *BackupSummary) SetTableName(v string) *BackupSummary {
7048	s.TableName = &v
7049	return s
7050}
7051
7052// Represents the input of a BatchGetItem operation.
7053type BatchGetItemInput struct {
7054	_ struct{} `type:"structure"`
7055
7056	// A map of one or more table names and, for each table, a map that describes
7057	// one or more items to retrieve from that table. Each table name can be used
7058	// only once per BatchGetItem request.
7059	//
7060	// Each element in the map of items to retrieve consists of the following:
7061	//
7062	//    * ConsistentRead - If true, a strongly consistent read is used; if false
7063	//    (the default), an eventually consistent read is used.
7064	//
7065	//    * ExpressionAttributeNames - One or more substitution tokens for attribute
7066	//    names in the ProjectionExpression parameter. The following are some use
7067	//    cases for using ExpressionAttributeNames: To access an attribute whose
7068	//    name conflicts with a DynamoDB reserved word. To create a placeholder
7069	//    for repeating occurrences of an attribute name in an expression. To prevent
7070	//    special characters in an attribute name from being misinterpreted in an
7071	//    expression. Use the # character in an expression to dereference an attribute
7072	//    name. For example, consider the following attribute name: Percentile The
7073	//    name of this attribute conflicts with a reserved word, so it cannot be
7074	//    used directly in an expression. (For the complete list of reserved words,
7075	//    see Reserved Words (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ReservedWords.html)
7076	//    in the Amazon DynamoDB Developer Guide). To work around this, you could
7077	//    specify the following for ExpressionAttributeNames: {"#P":"Percentile"}
7078	//    You could then use this substitution in an expression, as in this example:
7079	//    #P = :val Tokens that begin with the : character are expression attribute
7080	//    values, which are placeholders for the actual value at runtime. For more
7081	//    information about expression attribute names, see Accessing Item Attributes
7082	//    (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.AccessingItemAttributes.html)
7083	//    in the Amazon DynamoDB Developer Guide.
7084	//
7085	//    * Keys - An array of primary key attribute values that define specific
7086	//    items in the table. For each primary key, you must provide all of the
7087	//    key attributes. For example, with a simple primary key, you only need
7088	//    to provide the partition key value. For a composite key, you must provide
7089	//    both the partition key value and the sort key value.
7090	//
7091	//    * ProjectionExpression - A string that identifies one or more attributes
7092	//    to retrieve from the table. These attributes can include scalars, sets,
7093	//    or elements of a JSON document. The attributes in the expression must
7094	//    be separated by commas. If no attribute names are specified, then all
7095	//    attributes are returned. If any of the requested attributes are not found,
7096	//    they do not appear in the result. For more information, see Accessing
7097	//    Item Attributes (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.AccessingItemAttributes.html)
7098	//    in the Amazon DynamoDB Developer Guide.
7099	//
7100	//    * AttributesToGet - This is a legacy parameter. Use ProjectionExpression
7101	//    instead. For more information, see AttributesToGet (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/LegacyConditionalParameters.AttributesToGet.html)
7102	//    in the Amazon DynamoDB Developer Guide.
7103	//
7104	// RequestItems is a required field
7105	RequestItems map[string]*KeysAndAttributes `min:"1" type:"map" required:"true"`
7106
7107	// Determines the level of detail about provisioned throughput consumption that
7108	// is returned in the response:
7109	//
7110	//    * INDEXES - The response includes the aggregate ConsumedCapacity for the
7111	//    operation, together with ConsumedCapacity for each table and secondary
7112	//    index that was accessed. Note that some operations, such as GetItem and
7113	//    BatchGetItem, do not access any indexes at all. In these cases, specifying
7114	//    INDEXES will only return ConsumedCapacity information for table(s).
7115	//
7116	//    * TOTAL - The response includes only the aggregate ConsumedCapacity for
7117	//    the operation.
7118	//
7119	//    * NONE - No ConsumedCapacity details are included in the response.
7120	ReturnConsumedCapacity *string `type:"string" enum:"ReturnConsumedCapacity"`
7121}
7122
7123// String returns the string representation
7124func (s BatchGetItemInput) String() string {
7125	return awsutil.Prettify(s)
7126}
7127
7128// GoString returns the string representation
7129func (s BatchGetItemInput) GoString() string {
7130	return s.String()
7131}
7132
7133// Validate inspects the fields of the type to determine if they are valid.
7134func (s *BatchGetItemInput) Validate() error {
7135	invalidParams := request.ErrInvalidParams{Context: "BatchGetItemInput"}
7136	if s.RequestItems == nil {
7137		invalidParams.Add(request.NewErrParamRequired("RequestItems"))
7138	}
7139	if s.RequestItems != nil && len(s.RequestItems) < 1 {
7140		invalidParams.Add(request.NewErrParamMinLen("RequestItems", 1))
7141	}
7142	if s.RequestItems != nil {
7143		for i, v := range s.RequestItems {
7144			if v == nil {
7145				continue
7146			}
7147			if err := v.Validate(); err != nil {
7148				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "RequestItems", i), err.(request.ErrInvalidParams))
7149			}
7150		}
7151	}
7152
7153	if invalidParams.Len() > 0 {
7154		return invalidParams
7155	}
7156	return nil
7157}
7158
7159// SetRequestItems sets the RequestItems field's value.
7160func (s *BatchGetItemInput) SetRequestItems(v map[string]*KeysAndAttributes) *BatchGetItemInput {
7161	s.RequestItems = v
7162	return s
7163}
7164
7165// SetReturnConsumedCapacity sets the ReturnConsumedCapacity field's value.
7166func (s *BatchGetItemInput) SetReturnConsumedCapacity(v string) *BatchGetItemInput {
7167	s.ReturnConsumedCapacity = &v
7168	return s
7169}
7170
7171// Represents the output of a BatchGetItem operation.
7172type BatchGetItemOutput struct {
7173	_ struct{} `type:"structure"`
7174
7175	// The read capacity units consumed by the entire BatchGetItem operation.
7176	//
7177	// Each element consists of:
7178	//
7179	//    * TableName - The table that consumed the provisioned throughput.
7180	//
7181	//    * CapacityUnits - The total number of capacity units consumed.
7182	ConsumedCapacity []*ConsumedCapacity `type:"list"`
7183
7184	// A map of table name to a list of items. Each object in Responses consists
7185	// of a table name, along with a map of attribute data consisting of the data
7186	// type and attribute value.
7187	Responses map[string][]map[string]*AttributeValue `type:"map"`
7188
7189	// A map of tables and their respective keys that were not processed with the
7190	// current response. The UnprocessedKeys value is in the same form as RequestItems,
7191	// so the value can be provided directly to a subsequent BatchGetItem operation.
7192	// For more information, see RequestItems in the Request Parameters section.
7193	//
7194	// Each element consists of:
7195	//
7196	//    * Keys - An array of primary key attribute values that define specific
7197	//    items in the table.
7198	//
7199	//    * ProjectionExpression - One or more attributes to be retrieved from the
7200	//    table or index. By default, all attributes are returned. If a requested
7201	//    attribute is not found, it does not appear in the result.
7202	//
7203	//    * ConsistentRead - The consistency of a read operation. If set to true,
7204	//    then a strongly consistent read is used; otherwise, an eventually consistent
7205	//    read is used.
7206	//
7207	// If there are no unprocessed keys remaining, the response contains an empty
7208	// UnprocessedKeys map.
7209	UnprocessedKeys map[string]*KeysAndAttributes `min:"1" type:"map"`
7210}
7211
7212// String returns the string representation
7213func (s BatchGetItemOutput) String() string {
7214	return awsutil.Prettify(s)
7215}
7216
7217// GoString returns the string representation
7218func (s BatchGetItemOutput) GoString() string {
7219	return s.String()
7220}
7221
7222// SetConsumedCapacity sets the ConsumedCapacity field's value.
7223func (s *BatchGetItemOutput) SetConsumedCapacity(v []*ConsumedCapacity) *BatchGetItemOutput {
7224	s.ConsumedCapacity = v
7225	return s
7226}
7227
7228// SetResponses sets the Responses field's value.
7229func (s *BatchGetItemOutput) SetResponses(v map[string][]map[string]*AttributeValue) *BatchGetItemOutput {
7230	s.Responses = v
7231	return s
7232}
7233
7234// SetUnprocessedKeys sets the UnprocessedKeys field's value.
7235func (s *BatchGetItemOutput) SetUnprocessedKeys(v map[string]*KeysAndAttributes) *BatchGetItemOutput {
7236	s.UnprocessedKeys = v
7237	return s
7238}
7239
7240// Represents the input of a BatchWriteItem operation.
7241type BatchWriteItemInput struct {
7242	_ struct{} `type:"structure"`
7243
7244	// A map of one or more table names and, for each table, a list of operations
7245	// to be performed (DeleteRequest or PutRequest). Each element in the map consists
7246	// of the following:
7247	//
7248	//    * DeleteRequest - Perform a DeleteItem operation on the specified item.
7249	//    The item to be deleted is identified by a Key subelement: Key - A map
7250	//    of primary key attribute values that uniquely identify the item. Each
7251	//    entry in this map consists of an attribute name and an attribute value.
7252	//    For each primary key, you must provide all of the key attributes. For
7253	//    example, with a simple primary key, you only need to provide a value for
7254	//    the partition key. For a composite primary key, you must provide values
7255	//    for both the partition key and the sort key.
7256	//
7257	//    * PutRequest - Perform a PutItem operation on the specified item. The
7258	//    item to be put is identified by an Item subelement: Item - A map of attributes
7259	//    and their values. Each entry in this map consists of an attribute name
7260	//    and an attribute value. Attribute values must not be null; string and
7261	//    binary type attributes must have lengths greater than zero; and set type
7262	//    attributes must not be empty. Requests that contain empty values are rejected
7263	//    with a ValidationException exception. If you specify any attributes that
7264	//    are part of an index key, then the data types for those attributes must
7265	//    match those of the schema in the table's attribute definition.
7266	//
7267	// RequestItems is a required field
7268	RequestItems map[string][]*WriteRequest `min:"1" type:"map" required:"true"`
7269
7270	// Determines the level of detail about provisioned throughput consumption that
7271	// is returned in the response:
7272	//
7273	//    * INDEXES - The response includes the aggregate ConsumedCapacity for the
7274	//    operation, together with ConsumedCapacity for each table and secondary
7275	//    index that was accessed. Note that some operations, such as GetItem and
7276	//    BatchGetItem, do not access any indexes at all. In these cases, specifying
7277	//    INDEXES will only return ConsumedCapacity information for table(s).
7278	//
7279	//    * TOTAL - The response includes only the aggregate ConsumedCapacity for
7280	//    the operation.
7281	//
7282	//    * NONE - No ConsumedCapacity details are included in the response.
7283	ReturnConsumedCapacity *string `type:"string" enum:"ReturnConsumedCapacity"`
7284
7285	// Determines whether item collection metrics are returned. If set to SIZE,
7286	// the response includes statistics about item collections, if any, that were
7287	// modified during the operation are returned in the response. If set to NONE
7288	// (the default), no statistics are returned.
7289	ReturnItemCollectionMetrics *string `type:"string" enum:"ReturnItemCollectionMetrics"`
7290}
7291
7292// String returns the string representation
7293func (s BatchWriteItemInput) String() string {
7294	return awsutil.Prettify(s)
7295}
7296
7297// GoString returns the string representation
7298func (s BatchWriteItemInput) GoString() string {
7299	return s.String()
7300}
7301
7302// Validate inspects the fields of the type to determine if they are valid.
7303func (s *BatchWriteItemInput) Validate() error {
7304	invalidParams := request.ErrInvalidParams{Context: "BatchWriteItemInput"}
7305	if s.RequestItems == nil {
7306		invalidParams.Add(request.NewErrParamRequired("RequestItems"))
7307	}
7308	if s.RequestItems != nil && len(s.RequestItems) < 1 {
7309		invalidParams.Add(request.NewErrParamMinLen("RequestItems", 1))
7310	}
7311
7312	if invalidParams.Len() > 0 {
7313		return invalidParams
7314	}
7315	return nil
7316}
7317
7318// SetRequestItems sets the RequestItems field's value.
7319func (s *BatchWriteItemInput) SetRequestItems(v map[string][]*WriteRequest) *BatchWriteItemInput {
7320	s.RequestItems = v
7321	return s
7322}
7323
7324// SetReturnConsumedCapacity sets the ReturnConsumedCapacity field's value.
7325func (s *BatchWriteItemInput) SetReturnConsumedCapacity(v string) *BatchWriteItemInput {
7326	s.ReturnConsumedCapacity = &v
7327	return s
7328}
7329
7330// SetReturnItemCollectionMetrics sets the ReturnItemCollectionMetrics field's value.
7331func (s *BatchWriteItemInput) SetReturnItemCollectionMetrics(v string) *BatchWriteItemInput {
7332	s.ReturnItemCollectionMetrics = &v
7333	return s
7334}
7335
7336// Represents the output of a BatchWriteItem operation.
7337type BatchWriteItemOutput struct {
7338	_ struct{} `type:"structure"`
7339
7340	// The capacity units consumed by the entire BatchWriteItem operation.
7341	//
7342	// Each element consists of:
7343	//
7344	//    * TableName - The table that consumed the provisioned throughput.
7345	//
7346	//    * CapacityUnits - The total number of capacity units consumed.
7347	ConsumedCapacity []*ConsumedCapacity `type:"list"`
7348
7349	// A list of tables that were processed by BatchWriteItem and, for each table,
7350	// information about any item collections that were affected by individual DeleteItem
7351	// or PutItem operations.
7352	//
7353	// Each entry consists of the following subelements:
7354	//
7355	//    * ItemCollectionKey - The partition key value of the item collection.
7356	//    This is the same as the partition key value of the item.
7357	//
7358	//    * SizeEstimateRangeGB - An estimate of item collection size, expressed
7359	//    in GB. This is a two-element array containing a lower bound and an upper
7360	//    bound for the estimate. The estimate includes the size of all the items
7361	//    in the table, plus the size of all attributes projected into all of the
7362	//    local secondary indexes on the table. Use this estimate to measure whether
7363	//    a local secondary index is approaching its size limit. The estimate is
7364	//    subject to change over time; therefore, do not rely on the precision or
7365	//    accuracy of the estimate.
7366	ItemCollectionMetrics map[string][]*ItemCollectionMetrics `type:"map"`
7367
7368	// A map of tables and requests against those tables that were not processed.
7369	// The UnprocessedItems value is in the same form as RequestItems, so you can
7370	// provide this value directly to a subsequent BatchGetItem operation. For more
7371	// information, see RequestItems in the Request Parameters section.
7372	//
7373	// Each UnprocessedItems entry consists of a table name and, for that table,
7374	// a list of operations to perform (DeleteRequest or PutRequest).
7375	//
7376	//    * DeleteRequest - Perform a DeleteItem operation on the specified item.
7377	//    The item to be deleted is identified by a Key subelement: Key - A map
7378	//    of primary key attribute values that uniquely identify the item. Each
7379	//    entry in this map consists of an attribute name and an attribute value.
7380	//
7381	//    * PutRequest - Perform a PutItem operation on the specified item. The
7382	//    item to be put is identified by an Item subelement: Item - A map of attributes
7383	//    and their values. Each entry in this map consists of an attribute name
7384	//    and an attribute value. Attribute values must not be null; string and
7385	//    binary type attributes must have lengths greater than zero; and set type
7386	//    attributes must not be empty. Requests that contain empty values will
7387	//    be rejected with a ValidationException exception. If you specify any attributes
7388	//    that are part of an index key, then the data types for those attributes
7389	//    must match those of the schema in the table's attribute definition.
7390	//
7391	// If there are no unprocessed items remaining, the response contains an empty
7392	// UnprocessedItems map.
7393	UnprocessedItems map[string][]*WriteRequest `min:"1" type:"map"`
7394}
7395
7396// String returns the string representation
7397func (s BatchWriteItemOutput) String() string {
7398	return awsutil.Prettify(s)
7399}
7400
7401// GoString returns the string representation
7402func (s BatchWriteItemOutput) GoString() string {
7403	return s.String()
7404}
7405
7406// SetConsumedCapacity sets the ConsumedCapacity field's value.
7407func (s *BatchWriteItemOutput) SetConsumedCapacity(v []*ConsumedCapacity) *BatchWriteItemOutput {
7408	s.ConsumedCapacity = v
7409	return s
7410}
7411
7412// SetItemCollectionMetrics sets the ItemCollectionMetrics field's value.
7413func (s *BatchWriteItemOutput) SetItemCollectionMetrics(v map[string][]*ItemCollectionMetrics) *BatchWriteItemOutput {
7414	s.ItemCollectionMetrics = v
7415	return s
7416}
7417
7418// SetUnprocessedItems sets the UnprocessedItems field's value.
7419func (s *BatchWriteItemOutput) SetUnprocessedItems(v map[string][]*WriteRequest) *BatchWriteItemOutput {
7420	s.UnprocessedItems = v
7421	return s
7422}
7423
7424// Contains the details for the read/write capacity mode.
7425type BillingModeSummary struct {
7426	_ struct{} `type:"structure"`
7427
7428	// Controls how you are charged for read and write throughput and how you manage
7429	// capacity. This setting can be changed later.
7430	//
7431	//    * PROVISIONED - Sets the read/write capacity mode to PROVISIONED. We recommend
7432	//    using PROVISIONED for predictable workloads.
7433	//
7434	//    * PAY_PER_REQUEST - Sets the read/write capacity mode to PAY_PER_REQUEST.
7435	//    We recommend using PAY_PER_REQUEST for unpredictable workloads.
7436	BillingMode *string `type:"string" enum:"BillingMode"`
7437
7438	// Represents the time when PAY_PER_REQUEST was last set as the read/write capacity
7439	// mode.
7440	LastUpdateToPayPerRequestDateTime *time.Time `type:"timestamp"`
7441}
7442
7443// String returns the string representation
7444func (s BillingModeSummary) String() string {
7445	return awsutil.Prettify(s)
7446}
7447
7448// GoString returns the string representation
7449func (s BillingModeSummary) GoString() string {
7450	return s.String()
7451}
7452
7453// SetBillingMode sets the BillingMode field's value.
7454func (s *BillingModeSummary) SetBillingMode(v string) *BillingModeSummary {
7455	s.BillingMode = &v
7456	return s
7457}
7458
7459// SetLastUpdateToPayPerRequestDateTime sets the LastUpdateToPayPerRequestDateTime field's value.
7460func (s *BillingModeSummary) SetLastUpdateToPayPerRequestDateTime(v time.Time) *BillingModeSummary {
7461	s.LastUpdateToPayPerRequestDateTime = &v
7462	return s
7463}
7464
7465// An ordered list of errors for each item in the request which caused the transaction
7466// to get cancelled. The values of the list are ordered according to the ordering
7467// of the TransactWriteItems request parameter. If no error occurred for the
7468// associated item an error with a Null code and Null message will be present.
7469type CancellationReason struct {
7470	_ struct{} `type:"structure"`
7471
7472	// Status code for the result of the cancelled transaction.
7473	Code *string `type:"string"`
7474
7475	// Item in the request which caused the transaction to get cancelled.
7476	Item map[string]*AttributeValue `type:"map"`
7477
7478	// Cancellation reason message description.
7479	Message *string `type:"string"`
7480}
7481
7482// String returns the string representation
7483func (s CancellationReason) String() string {
7484	return awsutil.Prettify(s)
7485}
7486
7487// GoString returns the string representation
7488func (s CancellationReason) GoString() string {
7489	return s.String()
7490}
7491
7492// SetCode sets the Code field's value.
7493func (s *CancellationReason) SetCode(v string) *CancellationReason {
7494	s.Code = &v
7495	return s
7496}
7497
7498// SetItem sets the Item field's value.
7499func (s *CancellationReason) SetItem(v map[string]*AttributeValue) *CancellationReason {
7500	s.Item = v
7501	return s
7502}
7503
7504// SetMessage sets the Message field's value.
7505func (s *CancellationReason) SetMessage(v string) *CancellationReason {
7506	s.Message = &v
7507	return s
7508}
7509
7510// Represents the amount of provisioned throughput capacity consumed on a table
7511// or an index.
7512type Capacity struct {
7513	_ struct{} `type:"structure"`
7514
7515	// The total number of capacity units consumed on a table or an index.
7516	CapacityUnits *float64 `type:"double"`
7517
7518	// The total number of read capacity units consumed on a table or an index.
7519	ReadCapacityUnits *float64 `type:"double"`
7520
7521	// The total number of write capacity units consumed on a table or an index.
7522	WriteCapacityUnits *float64 `type:"double"`
7523}
7524
7525// String returns the string representation
7526func (s Capacity) String() string {
7527	return awsutil.Prettify(s)
7528}
7529
7530// GoString returns the string representation
7531func (s Capacity) GoString() string {
7532	return s.String()
7533}
7534
7535// SetCapacityUnits sets the CapacityUnits field's value.
7536func (s *Capacity) SetCapacityUnits(v float64) *Capacity {
7537	s.CapacityUnits = &v
7538	return s
7539}
7540
7541// SetReadCapacityUnits sets the ReadCapacityUnits field's value.
7542func (s *Capacity) SetReadCapacityUnits(v float64) *Capacity {
7543	s.ReadCapacityUnits = &v
7544	return s
7545}
7546
7547// SetWriteCapacityUnits sets the WriteCapacityUnits field's value.
7548func (s *Capacity) SetWriteCapacityUnits(v float64) *Capacity {
7549	s.WriteCapacityUnits = &v
7550	return s
7551}
7552
7553// Represents the selection criteria for a Query or Scan operation:
7554//
7555//    * For a Query operation, Condition is used for specifying the KeyConditions
7556//    to use when querying a table or an index. For KeyConditions, only the
7557//    following comparison operators are supported: EQ | LE | LT | GE | GT |
7558//    BEGINS_WITH | BETWEEN Condition is also used in a QueryFilter, which evaluates
7559//    the query results and returns only the desired values.
7560//
7561//    * For a Scan operation, Condition is used in a ScanFilter, which evaluates
7562//    the scan results and returns only the desired values.
7563type Condition struct {
7564	_ struct{} `type:"structure"`
7565
7566	// One or more values to evaluate against the supplied attribute. The number
7567	// of values in the list depends on the ComparisonOperator being used.
7568	//
7569	// For type Number, value comparisons are numeric.
7570	//
7571	// String value comparisons for greater than, equals, or less than are based
7572	// on ASCII character code values. For example, a is greater than A, and a is
7573	// greater than B. For a list of code values, see http://en.wikipedia.org/wiki/ASCII#ASCII_printable_characters
7574	// (http://en.wikipedia.org/wiki/ASCII#ASCII_printable_characters).
7575	//
7576	// For Binary, DynamoDB treats each byte of the binary data as unsigned when
7577	// it compares binary values.
7578	AttributeValueList []*AttributeValue `type:"list"`
7579
7580	// A comparator for evaluating attributes. For example, equals, greater than,
7581	// less than, etc.
7582	//
7583	// The following comparison operators are available:
7584	//
7585	// EQ | NE | LE | LT | GE | GT | NOT_NULL | NULL | CONTAINS | NOT_CONTAINS |
7586	// BEGINS_WITH | IN | BETWEEN
7587	//
7588	// The following are descriptions of each comparison operator.
7589	//
7590	//    * EQ : Equal. EQ is supported for all data types, including lists and
7591	//    maps. AttributeValueList can contain only one AttributeValue element of
7592	//    type String, Number, Binary, String Set, Number Set, or Binary Set. If
7593	//    an item contains an AttributeValue element of a different type than the
7594	//    one provided in the request, the value does not match. For example, {"S":"6"}
7595	//    does not equal {"N":"6"}. Also, {"N":"6"} does not equal {"NS":["6", "2",
7596	//    "1"]}.
7597	//
7598	//    * NE : Not equal. NE is supported for all data types, including lists
7599	//    and maps. AttributeValueList can contain only one AttributeValue of type
7600	//    String, Number, Binary, String Set, Number Set, or Binary Set. If an item
7601	//    contains an AttributeValue of a different type than the one provided in
7602	//    the request, the value does not match. For example, {"S":"6"} does not
7603	//    equal {"N":"6"}. Also, {"N":"6"} does not equal {"NS":["6", "2", "1"]}.
7604	//
7605	//    * LE : Less than or equal. AttributeValueList can contain only one AttributeValue
7606	//    element of type String, Number, or Binary (not a set type). If an item
7607	//    contains an AttributeValue element of a different type than the one provided
7608	//    in the request, the value does not match. For example, {"S":"6"} does
7609	//    not equal {"N":"6"}. Also, {"N":"6"} does not compare to {"NS":["6", "2",
7610	//    "1"]}.
7611	//
7612	//    * LT : Less than. AttributeValueList can contain only one AttributeValue
7613	//    of type String, Number, or Binary (not a set type). If an item contains
7614	//    an AttributeValue element of a different type than the one provided in
7615	//    the request, the value does not match. For example, {"S":"6"} does not
7616	//    equal {"N":"6"}. Also, {"N":"6"} does not compare to {"NS":["6", "2",
7617	//    "1"]}.
7618	//
7619	//    * GE : Greater than or equal. AttributeValueList can contain only one
7620	//    AttributeValue element of type String, Number, or Binary (not a set type).
7621	//    If an item contains an AttributeValue element of a different type than
7622	//    the one provided in the request, the value does not match. For example,
7623	//    {"S":"6"} does not equal {"N":"6"}. Also, {"N":"6"} does not compare to
7624	//    {"NS":["6", "2", "1"]}.
7625	//
7626	//    * GT : Greater than. AttributeValueList can contain only one AttributeValue
7627	//    element of type String, Number, or Binary (not a set type). If an item
7628	//    contains an AttributeValue element of a different type than the one provided
7629	//    in the request, the value does not match. For example, {"S":"6"} does
7630	//    not equal {"N":"6"}. Also, {"N":"6"} does not compare to {"NS":["6", "2",
7631	//    "1"]}.
7632	//
7633	//    * NOT_NULL : The attribute exists. NOT_NULL is supported for all data
7634	//    types, including lists and maps. This operator tests for the existence
7635	//    of an attribute, not its data type. If the data type of attribute "a"
7636	//    is null, and you evaluate it using NOT_NULL, the result is a Boolean true.
7637	//    This result is because the attribute "a" exists; its data type is not
7638	//    relevant to the NOT_NULL comparison operator.
7639	//
7640	//    * NULL : The attribute does not exist. NULL is supported for all data
7641	//    types, including lists and maps. This operator tests for the nonexistence
7642	//    of an attribute, not its data type. If the data type of attribute "a"
7643	//    is null, and you evaluate it using NULL, the result is a Boolean false.
7644	//    This is because the attribute "a" exists; its data type is not relevant
7645	//    to the NULL comparison operator.
7646	//
7647	//    * CONTAINS : Checks for a subsequence, or value in a set. AttributeValueList
7648	//    can contain only one AttributeValue element of type String, Number, or
7649	//    Binary (not a set type). If the target attribute of the comparison is
7650	//    of type String, then the operator checks for a substring match. If the
7651	//    target attribute of the comparison is of type Binary, then the operator
7652	//    looks for a subsequence of the target that matches the input. If the target
7653	//    attribute of the comparison is a set ("SS", "NS", or "BS"), then the operator
7654	//    evaluates to true if it finds an exact match with any member of the set.
7655	//    CONTAINS is supported for lists: When evaluating "a CONTAINS b", "a" can
7656	//    be a list; however, "b" cannot be a set, a map, or a list.
7657	//
7658	//    * NOT_CONTAINS : Checks for absence of a subsequence, or absence of a
7659	//    value in a set. AttributeValueList can contain only one AttributeValue
7660	//    element of type String, Number, or Binary (not a set type). If the target
7661	//    attribute of the comparison is a String, then the operator checks for
7662	//    the absence of a substring match. If the target attribute of the comparison
7663	//    is Binary, then the operator checks for the absence of a subsequence of
7664	//    the target that matches the input. If the target attribute of the comparison
7665	//    is a set ("SS", "NS", or "BS"), then the operator evaluates to true if
7666	//    it does not find an exact match with any member of the set. NOT_CONTAINS
7667	//    is supported for lists: When evaluating "a NOT CONTAINS b", "a" can be
7668	//    a list; however, "b" cannot be a set, a map, or a list.
7669	//
7670	//    * BEGINS_WITH : Checks for a prefix. AttributeValueList can contain only
7671	//    one AttributeValue of type String or Binary (not a Number or a set type).
7672	//    The target attribute of the comparison must be of type String or Binary
7673	//    (not a Number or a set type).
7674	//
7675	//    * IN : Checks for matching elements in a list. AttributeValueList can
7676	//    contain one or more AttributeValue elements of type String, Number, or
7677	//    Binary. These attributes are compared against an existing attribute of
7678	//    an item. If any elements of the input are equal to the item attribute,
7679	//    the expression evaluates to true.
7680	//
7681	//    * BETWEEN : Greater than or equal to the first value, and less than or
7682	//    equal to the second value. AttributeValueList must contain two AttributeValue
7683	//    elements of the same type, either String, Number, or Binary (not a set
7684	//    type). A target attribute matches if the target value is greater than,
7685	//    or equal to, the first element and less than, or equal to, the second
7686	//    element. If an item contains an AttributeValue element of a different
7687	//    type than the one provided in the request, the value does not match. For
7688	//    example, {"S":"6"} does not compare to {"N":"6"}. Also, {"N":"6"} does
7689	//    not compare to {"NS":["6", "2", "1"]}
7690	//
7691	// For usage examples of AttributeValueList and ComparisonOperator, see Legacy
7692	// Conditional Parameters (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/LegacyConditionalParameters.html)
7693	// in the Amazon DynamoDB Developer Guide.
7694	//
7695	// ComparisonOperator is a required field
7696	ComparisonOperator *string `type:"string" required:"true" enum:"ComparisonOperator"`
7697}
7698
7699// String returns the string representation
7700func (s Condition) String() string {
7701	return awsutil.Prettify(s)
7702}
7703
7704// GoString returns the string representation
7705func (s Condition) GoString() string {
7706	return s.String()
7707}
7708
7709// Validate inspects the fields of the type to determine if they are valid.
7710func (s *Condition) Validate() error {
7711	invalidParams := request.ErrInvalidParams{Context: "Condition"}
7712	if s.ComparisonOperator == nil {
7713		invalidParams.Add(request.NewErrParamRequired("ComparisonOperator"))
7714	}
7715
7716	if invalidParams.Len() > 0 {
7717		return invalidParams
7718	}
7719	return nil
7720}
7721
7722// SetAttributeValueList sets the AttributeValueList field's value.
7723func (s *Condition) SetAttributeValueList(v []*AttributeValue) *Condition {
7724	s.AttributeValueList = v
7725	return s
7726}
7727
7728// SetComparisonOperator sets the ComparisonOperator field's value.
7729func (s *Condition) SetComparisonOperator(v string) *Condition {
7730	s.ComparisonOperator = &v
7731	return s
7732}
7733
7734// Represents a request to perform a check that an item exists or to check the
7735// condition of specific attributes of the item.
7736type ConditionCheck struct {
7737	_ struct{} `type:"structure"`
7738
7739	// A condition that must be satisfied in order for a conditional update to succeed.
7740	//
7741	// ConditionExpression is a required field
7742	ConditionExpression *string `type:"string" required:"true"`
7743
7744	// One or more substitution tokens for attribute names in an expression.
7745	ExpressionAttributeNames map[string]*string `type:"map"`
7746
7747	// One or more values that can be substituted in an expression.
7748	ExpressionAttributeValues map[string]*AttributeValue `type:"map"`
7749
7750	// The primary key of the item to be checked. Each element consists of an attribute
7751	// name and a value for that attribute.
7752	//
7753	// Key is a required field
7754	Key map[string]*AttributeValue `type:"map" required:"true"`
7755
7756	// Use ReturnValuesOnConditionCheckFailure to get the item attributes if the
7757	// ConditionCheck condition fails. For ReturnValuesOnConditionCheckFailure,
7758	// the valid values are: NONE and ALL_OLD.
7759	ReturnValuesOnConditionCheckFailure *string `type:"string" enum:"ReturnValuesOnConditionCheckFailure"`
7760
7761	// Name of the table for the check item request.
7762	//
7763	// TableName is a required field
7764	TableName *string `min:"3" type:"string" required:"true"`
7765}
7766
7767// String returns the string representation
7768func (s ConditionCheck) String() string {
7769	return awsutil.Prettify(s)
7770}
7771
7772// GoString returns the string representation
7773func (s ConditionCheck) GoString() string {
7774	return s.String()
7775}
7776
7777// Validate inspects the fields of the type to determine if they are valid.
7778func (s *ConditionCheck) Validate() error {
7779	invalidParams := request.ErrInvalidParams{Context: "ConditionCheck"}
7780	if s.ConditionExpression == nil {
7781		invalidParams.Add(request.NewErrParamRequired("ConditionExpression"))
7782	}
7783	if s.Key == nil {
7784		invalidParams.Add(request.NewErrParamRequired("Key"))
7785	}
7786	if s.TableName == nil {
7787		invalidParams.Add(request.NewErrParamRequired("TableName"))
7788	}
7789	if s.TableName != nil && len(*s.TableName) < 3 {
7790		invalidParams.Add(request.NewErrParamMinLen("TableName", 3))
7791	}
7792
7793	if invalidParams.Len() > 0 {
7794		return invalidParams
7795	}
7796	return nil
7797}
7798
7799// SetConditionExpression sets the ConditionExpression field's value.
7800func (s *ConditionCheck) SetConditionExpression(v string) *ConditionCheck {
7801	s.ConditionExpression = &v
7802	return s
7803}
7804
7805// SetExpressionAttributeNames sets the ExpressionAttributeNames field's value.
7806func (s *ConditionCheck) SetExpressionAttributeNames(v map[string]*string) *ConditionCheck {
7807	s.ExpressionAttributeNames = v
7808	return s
7809}
7810
7811// SetExpressionAttributeValues sets the ExpressionAttributeValues field's value.
7812func (s *ConditionCheck) SetExpressionAttributeValues(v map[string]*AttributeValue) *ConditionCheck {
7813	s.ExpressionAttributeValues = v
7814	return s
7815}
7816
7817// SetKey sets the Key field's value.
7818func (s *ConditionCheck) SetKey(v map[string]*AttributeValue) *ConditionCheck {
7819	s.Key = v
7820	return s
7821}
7822
7823// SetReturnValuesOnConditionCheckFailure sets the ReturnValuesOnConditionCheckFailure field's value.
7824func (s *ConditionCheck) SetReturnValuesOnConditionCheckFailure(v string) *ConditionCheck {
7825	s.ReturnValuesOnConditionCheckFailure = &v
7826	return s
7827}
7828
7829// SetTableName sets the TableName field's value.
7830func (s *ConditionCheck) SetTableName(v string) *ConditionCheck {
7831	s.TableName = &v
7832	return s
7833}
7834
7835// A condition specified in the operation could not be evaluated.
7836type ConditionalCheckFailedException struct {
7837	_            struct{}                  `type:"structure"`
7838	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`
7839
7840	// The conditional request failed.
7841	Message_ *string `locationName:"message" type:"string"`
7842}
7843
7844// String returns the string representation
7845func (s ConditionalCheckFailedException) String() string {
7846	return awsutil.Prettify(s)
7847}
7848
7849// GoString returns the string representation
7850func (s ConditionalCheckFailedException) GoString() string {
7851	return s.String()
7852}
7853
7854func newErrorConditionalCheckFailedException(v protocol.ResponseMetadata) error {
7855	return &ConditionalCheckFailedException{
7856		RespMetadata: v,
7857	}
7858}
7859
7860// Code returns the exception type name.
7861func (s *ConditionalCheckFailedException) Code() string {
7862	return "ConditionalCheckFailedException"
7863}
7864
7865// Message returns the exception's message.
7866func (s *ConditionalCheckFailedException) Message() string {
7867	if s.Message_ != nil {
7868		return *s.Message_
7869	}
7870	return ""
7871}
7872
7873// OrigErr always returns nil, satisfies awserr.Error interface.
7874func (s *ConditionalCheckFailedException) OrigErr() error {
7875	return nil
7876}
7877
7878func (s *ConditionalCheckFailedException) Error() string {
7879	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
7880}
7881
7882// Status code returns the HTTP status code for the request's response error.
7883func (s *ConditionalCheckFailedException) StatusCode() int {
7884	return s.RespMetadata.StatusCode
7885}
7886
7887// RequestID returns the service's response RequestID for request.
7888func (s *ConditionalCheckFailedException) RequestID() string {
7889	return s.RespMetadata.RequestID
7890}
7891
7892// The capacity units consumed by an operation. The data returned includes the
7893// total provisioned throughput consumed, along with statistics for the table
7894// and any indexes involved in the operation. ConsumedCapacity is only returned
7895// if the request asked for it. For more information, see Provisioned Throughput
7896// (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ProvisionedThroughputIntro.html)
7897// in the Amazon DynamoDB Developer Guide.
7898type ConsumedCapacity struct {
7899	_ struct{} `type:"structure"`
7900
7901	// The total number of capacity units consumed by the operation.
7902	CapacityUnits *float64 `type:"double"`
7903
7904	// The amount of throughput consumed on each global index affected by the operation.
7905	GlobalSecondaryIndexes map[string]*Capacity `type:"map"`
7906
7907	// The amount of throughput consumed on each local index affected by the operation.
7908	LocalSecondaryIndexes map[string]*Capacity `type:"map"`
7909
7910	// The total number of read capacity units consumed by the operation.
7911	ReadCapacityUnits *float64 `type:"double"`
7912
7913	// The amount of throughput consumed on the table affected by the operation.
7914	Table *Capacity `type:"structure"`
7915
7916	// The name of the table that was affected by the operation.
7917	TableName *string `min:"3" type:"string"`
7918
7919	// The total number of write capacity units consumed by the operation.
7920	WriteCapacityUnits *float64 `type:"double"`
7921}
7922
7923// String returns the string representation
7924func (s ConsumedCapacity) String() string {
7925	return awsutil.Prettify(s)
7926}
7927
7928// GoString returns the string representation
7929func (s ConsumedCapacity) GoString() string {
7930	return s.String()
7931}
7932
7933// SetCapacityUnits sets the CapacityUnits field's value.
7934func (s *ConsumedCapacity) SetCapacityUnits(v float64) *ConsumedCapacity {
7935	s.CapacityUnits = &v
7936	return s
7937}
7938
7939// SetGlobalSecondaryIndexes sets the GlobalSecondaryIndexes field's value.
7940func (s *ConsumedCapacity) SetGlobalSecondaryIndexes(v map[string]*Capacity) *ConsumedCapacity {
7941	s.GlobalSecondaryIndexes = v
7942	return s
7943}
7944
7945// SetLocalSecondaryIndexes sets the LocalSecondaryIndexes field's value.
7946func (s *ConsumedCapacity) SetLocalSecondaryIndexes(v map[string]*Capacity) *ConsumedCapacity {
7947	s.LocalSecondaryIndexes = v
7948	return s
7949}
7950
7951// SetReadCapacityUnits sets the ReadCapacityUnits field's value.
7952func (s *ConsumedCapacity) SetReadCapacityUnits(v float64) *ConsumedCapacity {
7953	s.ReadCapacityUnits = &v
7954	return s
7955}
7956
7957// SetTable sets the Table field's value.
7958func (s *ConsumedCapacity) SetTable(v *Capacity) *ConsumedCapacity {
7959	s.Table = v
7960	return s
7961}
7962
7963// SetTableName sets the TableName field's value.
7964func (s *ConsumedCapacity) SetTableName(v string) *ConsumedCapacity {
7965	s.TableName = &v
7966	return s
7967}
7968
7969// SetWriteCapacityUnits sets the WriteCapacityUnits field's value.
7970func (s *ConsumedCapacity) SetWriteCapacityUnits(v float64) *ConsumedCapacity {
7971	s.WriteCapacityUnits = &v
7972	return s
7973}
7974
7975// Represents the continuous backups and point in time recovery settings on
7976// the table.
7977type ContinuousBackupsDescription struct {
7978	_ struct{} `type:"structure"`
7979
7980	// ContinuousBackupsStatus can be one of the following states: ENABLED, DISABLED
7981	//
7982	// ContinuousBackupsStatus is a required field
7983	ContinuousBackupsStatus *string `type:"string" required:"true" enum:"ContinuousBackupsStatus"`
7984
7985	// The description of the point in time recovery settings applied to the table.
7986	PointInTimeRecoveryDescription *PointInTimeRecoveryDescription `type:"structure"`
7987}
7988
7989// String returns the string representation
7990func (s ContinuousBackupsDescription) String() string {
7991	return awsutil.Prettify(s)
7992}
7993
7994// GoString returns the string representation
7995func (s ContinuousBackupsDescription) GoString() string {
7996	return s.String()
7997}
7998
7999// SetContinuousBackupsStatus sets the ContinuousBackupsStatus field's value.
8000func (s *ContinuousBackupsDescription) SetContinuousBackupsStatus(v string) *ContinuousBackupsDescription {
8001	s.ContinuousBackupsStatus = &v
8002	return s
8003}
8004
8005// SetPointInTimeRecoveryDescription sets the PointInTimeRecoveryDescription field's value.
8006func (s *ContinuousBackupsDescription) SetPointInTimeRecoveryDescription(v *PointInTimeRecoveryDescription) *ContinuousBackupsDescription {
8007	s.PointInTimeRecoveryDescription = v
8008	return s
8009}
8010
8011// Backups have not yet been enabled for this table.
8012type ContinuousBackupsUnavailableException struct {
8013	_            struct{}                  `type:"structure"`
8014	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`
8015
8016	Message_ *string `locationName:"message" type:"string"`
8017}
8018
8019// String returns the string representation
8020func (s ContinuousBackupsUnavailableException) String() string {
8021	return awsutil.Prettify(s)
8022}
8023
8024// GoString returns the string representation
8025func (s ContinuousBackupsUnavailableException) GoString() string {
8026	return s.String()
8027}
8028
8029func newErrorContinuousBackupsUnavailableException(v protocol.ResponseMetadata) error {
8030	return &ContinuousBackupsUnavailableException{
8031		RespMetadata: v,
8032	}
8033}
8034
8035// Code returns the exception type name.
8036func (s *ContinuousBackupsUnavailableException) Code() string {
8037	return "ContinuousBackupsUnavailableException"
8038}
8039
8040// Message returns the exception's message.
8041func (s *ContinuousBackupsUnavailableException) Message() string {
8042	if s.Message_ != nil {
8043		return *s.Message_
8044	}
8045	return ""
8046}
8047
8048// OrigErr always returns nil, satisfies awserr.Error interface.
8049func (s *ContinuousBackupsUnavailableException) OrigErr() error {
8050	return nil
8051}
8052
8053func (s *ContinuousBackupsUnavailableException) Error() string {
8054	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
8055}
8056
8057// Status code returns the HTTP status code for the request's response error.
8058func (s *ContinuousBackupsUnavailableException) StatusCode() int {
8059	return s.RespMetadata.StatusCode
8060}
8061
8062// RequestID returns the service's response RequestID for request.
8063func (s *ContinuousBackupsUnavailableException) RequestID() string {
8064	return s.RespMetadata.RequestID
8065}
8066
8067// Represents a Contributor Insights summary entry..
8068type ContributorInsightsSummary struct {
8069	_ struct{} `type:"structure"`
8070
8071	// Describes the current status for contributor insights for the given table
8072	// and index, if applicable.
8073	ContributorInsightsStatus *string `type:"string" enum:"ContributorInsightsStatus"`
8074
8075	// Name of the index associated with the summary, if any.
8076	IndexName *string `min:"3" type:"string"`
8077
8078	// Name of the table associated with the summary.
8079	TableName *string `min:"3" type:"string"`
8080}
8081
8082// String returns the string representation
8083func (s ContributorInsightsSummary) String() string {
8084	return awsutil.Prettify(s)
8085}
8086
8087// GoString returns the string representation
8088func (s ContributorInsightsSummary) GoString() string {
8089	return s.String()
8090}
8091
8092// SetContributorInsightsStatus sets the ContributorInsightsStatus field's value.
8093func (s *ContributorInsightsSummary) SetContributorInsightsStatus(v string) *ContributorInsightsSummary {
8094	s.ContributorInsightsStatus = &v
8095	return s
8096}
8097
8098// SetIndexName sets the IndexName field's value.
8099func (s *ContributorInsightsSummary) SetIndexName(v string) *ContributorInsightsSummary {
8100	s.IndexName = &v
8101	return s
8102}
8103
8104// SetTableName sets the TableName field's value.
8105func (s *ContributorInsightsSummary) SetTableName(v string) *ContributorInsightsSummary {
8106	s.TableName = &v
8107	return s
8108}
8109
8110type CreateBackupInput struct {
8111	_ struct{} `type:"structure"`
8112
8113	// Specified name for the backup.
8114	//
8115	// BackupName is a required field
8116	BackupName *string `min:"3" type:"string" required:"true"`
8117
8118	// The name of the table.
8119	//
8120	// TableName is a required field
8121	TableName *string `min:"3" type:"string" required:"true"`
8122}
8123
8124// String returns the string representation
8125func (s CreateBackupInput) String() string {
8126	return awsutil.Prettify(s)
8127}
8128
8129// GoString returns the string representation
8130func (s CreateBackupInput) GoString() string {
8131	return s.String()
8132}
8133
8134// Validate inspects the fields of the type to determine if they are valid.
8135func (s *CreateBackupInput) Validate() error {
8136	invalidParams := request.ErrInvalidParams{Context: "CreateBackupInput"}
8137	if s.BackupName == nil {
8138		invalidParams.Add(request.NewErrParamRequired("BackupName"))
8139	}
8140	if s.BackupName != nil && len(*s.BackupName) < 3 {
8141		invalidParams.Add(request.NewErrParamMinLen("BackupName", 3))
8142	}
8143	if s.TableName == nil {
8144		invalidParams.Add(request.NewErrParamRequired("TableName"))
8145	}
8146	if s.TableName != nil && len(*s.TableName) < 3 {
8147		invalidParams.Add(request.NewErrParamMinLen("TableName", 3))
8148	}
8149
8150	if invalidParams.Len() > 0 {
8151		return invalidParams
8152	}
8153	return nil
8154}
8155
8156// SetBackupName sets the BackupName field's value.
8157func (s *CreateBackupInput) SetBackupName(v string) *CreateBackupInput {
8158	s.BackupName = &v
8159	return s
8160}
8161
8162// SetTableName sets the TableName field's value.
8163func (s *CreateBackupInput) SetTableName(v string) *CreateBackupInput {
8164	s.TableName = &v
8165	return s
8166}
8167
8168type CreateBackupOutput struct {
8169	_ struct{} `type:"structure"`
8170
8171	// Contains the details of the backup created for the table.
8172	BackupDetails *BackupDetails `type:"structure"`
8173}
8174
8175// String returns the string representation
8176func (s CreateBackupOutput) String() string {
8177	return awsutil.Prettify(s)
8178}
8179
8180// GoString returns the string representation
8181func (s CreateBackupOutput) GoString() string {
8182	return s.String()
8183}
8184
8185// SetBackupDetails sets the BackupDetails field's value.
8186func (s *CreateBackupOutput) SetBackupDetails(v *BackupDetails) *CreateBackupOutput {
8187	s.BackupDetails = v
8188	return s
8189}
8190
8191// Represents a new global secondary index to be added to an existing table.
8192type CreateGlobalSecondaryIndexAction struct {
8193	_ struct{} `type:"structure"`
8194
8195	// The name of the global secondary index to be created.
8196	//
8197	// IndexName is a required field
8198	IndexName *string `min:"3" type:"string" required:"true"`
8199
8200	// The key schema for the global secondary index.
8201	//
8202	// KeySchema is a required field
8203	KeySchema []*KeySchemaElement `min:"1" type:"list" required:"true"`
8204
8205	// Represents attributes that are copied (projected) from the table into an
8206	// index. These are in addition to the primary key attributes and index key
8207	// attributes, which are automatically projected.
8208	//
8209	// Projection is a required field
8210	Projection *Projection `type:"structure" required:"true"`
8211
8212	// Represents the provisioned throughput settings for the specified global secondary
8213	// index.
8214	//
8215	// For current minimum and maximum provisioned throughput values, see Limits
8216	// (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Limits.html)
8217	// in the Amazon DynamoDB Developer Guide.
8218	ProvisionedThroughput *ProvisionedThroughput `type:"structure"`
8219}
8220
8221// String returns the string representation
8222func (s CreateGlobalSecondaryIndexAction) String() string {
8223	return awsutil.Prettify(s)
8224}
8225
8226// GoString returns the string representation
8227func (s CreateGlobalSecondaryIndexAction) GoString() string {
8228	return s.String()
8229}
8230
8231// Validate inspects the fields of the type to determine if they are valid.
8232func (s *CreateGlobalSecondaryIndexAction) Validate() error {
8233	invalidParams := request.ErrInvalidParams{Context: "CreateGlobalSecondaryIndexAction"}
8234	if s.IndexName == nil {
8235		invalidParams.Add(request.NewErrParamRequired("IndexName"))
8236	}
8237	if s.IndexName != nil && len(*s.IndexName) < 3 {
8238		invalidParams.Add(request.NewErrParamMinLen("IndexName", 3))
8239	}
8240	if s.KeySchema == nil {
8241		invalidParams.Add(request.NewErrParamRequired("KeySchema"))
8242	}
8243	if s.KeySchema != nil && len(s.KeySchema) < 1 {
8244		invalidParams.Add(request.NewErrParamMinLen("KeySchema", 1))
8245	}
8246	if s.Projection == nil {
8247		invalidParams.Add(request.NewErrParamRequired("Projection"))
8248	}
8249	if s.KeySchema != nil {
8250		for i, v := range s.KeySchema {
8251			if v == nil {
8252				continue
8253			}
8254			if err := v.Validate(); err != nil {
8255				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "KeySchema", i), err.(request.ErrInvalidParams))
8256			}
8257		}
8258	}
8259	if s.Projection != nil {
8260		if err := s.Projection.Validate(); err != nil {
8261			invalidParams.AddNested("Projection", err.(request.ErrInvalidParams))
8262		}
8263	}
8264	if s.ProvisionedThroughput != nil {
8265		if err := s.ProvisionedThroughput.Validate(); err != nil {
8266			invalidParams.AddNested("ProvisionedThroughput", err.(request.ErrInvalidParams))
8267		}
8268	}
8269
8270	if invalidParams.Len() > 0 {
8271		return invalidParams
8272	}
8273	return nil
8274}
8275
8276// SetIndexName sets the IndexName field's value.
8277func (s *CreateGlobalSecondaryIndexAction) SetIndexName(v string) *CreateGlobalSecondaryIndexAction {
8278	s.IndexName = &v
8279	return s
8280}
8281
8282// SetKeySchema sets the KeySchema field's value.
8283func (s *CreateGlobalSecondaryIndexAction) SetKeySchema(v []*KeySchemaElement) *CreateGlobalSecondaryIndexAction {
8284	s.KeySchema = v
8285	return s
8286}
8287
8288// SetProjection sets the Projection field's value.
8289func (s *CreateGlobalSecondaryIndexAction) SetProjection(v *Projection) *CreateGlobalSecondaryIndexAction {
8290	s.Projection = v
8291	return s
8292}
8293
8294// SetProvisionedThroughput sets the ProvisionedThroughput field's value.
8295func (s *CreateGlobalSecondaryIndexAction) SetProvisionedThroughput(v *ProvisionedThroughput) *CreateGlobalSecondaryIndexAction {
8296	s.ProvisionedThroughput = v
8297	return s
8298}
8299
8300type CreateGlobalTableInput struct {
8301	_ struct{} `type:"structure"`
8302
8303	// The global table name.
8304	//
8305	// GlobalTableName is a required field
8306	GlobalTableName *string `min:"3" type:"string" required:"true"`
8307
8308	// The Regions where the global table needs to be created.
8309	//
8310	// ReplicationGroup is a required field
8311	ReplicationGroup []*Replica `type:"list" required:"true"`
8312}
8313
8314// String returns the string representation
8315func (s CreateGlobalTableInput) String() string {
8316	return awsutil.Prettify(s)
8317}
8318
8319// GoString returns the string representation
8320func (s CreateGlobalTableInput) GoString() string {
8321	return s.String()
8322}
8323
8324// Validate inspects the fields of the type to determine if they are valid.
8325func (s *CreateGlobalTableInput) Validate() error {
8326	invalidParams := request.ErrInvalidParams{Context: "CreateGlobalTableInput"}
8327	if s.GlobalTableName == nil {
8328		invalidParams.Add(request.NewErrParamRequired("GlobalTableName"))
8329	}
8330	if s.GlobalTableName != nil && len(*s.GlobalTableName) < 3 {
8331		invalidParams.Add(request.NewErrParamMinLen("GlobalTableName", 3))
8332	}
8333	if s.ReplicationGroup == nil {
8334		invalidParams.Add(request.NewErrParamRequired("ReplicationGroup"))
8335	}
8336
8337	if invalidParams.Len() > 0 {
8338		return invalidParams
8339	}
8340	return nil
8341}
8342
8343// SetGlobalTableName sets the GlobalTableName field's value.
8344func (s *CreateGlobalTableInput) SetGlobalTableName(v string) *CreateGlobalTableInput {
8345	s.GlobalTableName = &v
8346	return s
8347}
8348
8349// SetReplicationGroup sets the ReplicationGroup field's value.
8350func (s *CreateGlobalTableInput) SetReplicationGroup(v []*Replica) *CreateGlobalTableInput {
8351	s.ReplicationGroup = v
8352	return s
8353}
8354
8355type CreateGlobalTableOutput struct {
8356	_ struct{} `type:"structure"`
8357
8358	// Contains the details of the global table.
8359	GlobalTableDescription *GlobalTableDescription `type:"structure"`
8360}
8361
8362// String returns the string representation
8363func (s CreateGlobalTableOutput) String() string {
8364	return awsutil.Prettify(s)
8365}
8366
8367// GoString returns the string representation
8368func (s CreateGlobalTableOutput) GoString() string {
8369	return s.String()
8370}
8371
8372// SetGlobalTableDescription sets the GlobalTableDescription field's value.
8373func (s *CreateGlobalTableOutput) SetGlobalTableDescription(v *GlobalTableDescription) *CreateGlobalTableOutput {
8374	s.GlobalTableDescription = v
8375	return s
8376}
8377
8378// Represents a replica to be added.
8379type CreateReplicaAction struct {
8380	_ struct{} `type:"structure"`
8381
8382	// The Region of the replica to be added.
8383	//
8384	// RegionName is a required field
8385	RegionName *string `type:"string" required:"true"`
8386}
8387
8388// String returns the string representation
8389func (s CreateReplicaAction) String() string {
8390	return awsutil.Prettify(s)
8391}
8392
8393// GoString returns the string representation
8394func (s CreateReplicaAction) GoString() string {
8395	return s.String()
8396}
8397
8398// Validate inspects the fields of the type to determine if they are valid.
8399func (s *CreateReplicaAction) Validate() error {
8400	invalidParams := request.ErrInvalidParams{Context: "CreateReplicaAction"}
8401	if s.RegionName == nil {
8402		invalidParams.Add(request.NewErrParamRequired("RegionName"))
8403	}
8404
8405	if invalidParams.Len() > 0 {
8406		return invalidParams
8407	}
8408	return nil
8409}
8410
8411// SetRegionName sets the RegionName field's value.
8412func (s *CreateReplicaAction) SetRegionName(v string) *CreateReplicaAction {
8413	s.RegionName = &v
8414	return s
8415}
8416
8417// Represents a replica to be created.
8418type CreateReplicationGroupMemberAction struct {
8419	_ struct{} `type:"structure"`
8420
8421	// Replica-specific global secondary index settings.
8422	GlobalSecondaryIndexes []*ReplicaGlobalSecondaryIndex `min:"1" type:"list"`
8423
8424	// The AWS KMS customer master key (CMK) that should be used for AWS KMS encryption
8425	// in the new replica. To specify a CMK, use its key ID, Amazon Resource Name
8426	// (ARN), alias name, or alias ARN. Note that you should only provide this parameter
8427	// if the key is different from the default DynamoDB KMS master key alias/aws/dynamodb.
8428	KMSMasterKeyId *string `type:"string"`
8429
8430	// Replica-specific provisioned throughput. If not specified, uses the source
8431	// table's provisioned throughput settings.
8432	ProvisionedThroughputOverride *ProvisionedThroughputOverride `type:"structure"`
8433
8434	// The Region where the new replica will be created.
8435	//
8436	// RegionName is a required field
8437	RegionName *string `type:"string" required:"true"`
8438}
8439
8440// String returns the string representation
8441func (s CreateReplicationGroupMemberAction) String() string {
8442	return awsutil.Prettify(s)
8443}
8444
8445// GoString returns the string representation
8446func (s CreateReplicationGroupMemberAction) GoString() string {
8447	return s.String()
8448}
8449
8450// Validate inspects the fields of the type to determine if they are valid.
8451func (s *CreateReplicationGroupMemberAction) Validate() error {
8452	invalidParams := request.ErrInvalidParams{Context: "CreateReplicationGroupMemberAction"}
8453	if s.GlobalSecondaryIndexes != nil && len(s.GlobalSecondaryIndexes) < 1 {
8454		invalidParams.Add(request.NewErrParamMinLen("GlobalSecondaryIndexes", 1))
8455	}
8456	if s.RegionName == nil {
8457		invalidParams.Add(request.NewErrParamRequired("RegionName"))
8458	}
8459	if s.GlobalSecondaryIndexes != nil {
8460		for i, v := range s.GlobalSecondaryIndexes {
8461			if v == nil {
8462				continue
8463			}
8464			if err := v.Validate(); err != nil {
8465				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "GlobalSecondaryIndexes", i), err.(request.ErrInvalidParams))
8466			}
8467		}
8468	}
8469	if s.ProvisionedThroughputOverride != nil {
8470		if err := s.ProvisionedThroughputOverride.Validate(); err != nil {
8471			invalidParams.AddNested("ProvisionedThroughputOverride", err.(request.ErrInvalidParams))
8472		}
8473	}
8474
8475	if invalidParams.Len() > 0 {
8476		return invalidParams
8477	}
8478	return nil
8479}
8480
8481// SetGlobalSecondaryIndexes sets the GlobalSecondaryIndexes field's value.
8482func (s *CreateReplicationGroupMemberAction) SetGlobalSecondaryIndexes(v []*ReplicaGlobalSecondaryIndex) *CreateReplicationGroupMemberAction {
8483	s.GlobalSecondaryIndexes = v
8484	return s
8485}
8486
8487// SetKMSMasterKeyId sets the KMSMasterKeyId field's value.
8488func (s *CreateReplicationGroupMemberAction) SetKMSMasterKeyId(v string) *CreateReplicationGroupMemberAction {
8489	s.KMSMasterKeyId = &v
8490	return s
8491}
8492
8493// SetProvisionedThroughputOverride sets the ProvisionedThroughputOverride field's value.
8494func (s *CreateReplicationGroupMemberAction) SetProvisionedThroughputOverride(v *ProvisionedThroughputOverride) *CreateReplicationGroupMemberAction {
8495	s.ProvisionedThroughputOverride = v
8496	return s
8497}
8498
8499// SetRegionName sets the RegionName field's value.
8500func (s *CreateReplicationGroupMemberAction) SetRegionName(v string) *CreateReplicationGroupMemberAction {
8501	s.RegionName = &v
8502	return s
8503}
8504
8505// Represents the input of a CreateTable operation.
8506type CreateTableInput struct {
8507	_ struct{} `type:"structure"`
8508
8509	// An array of attributes that describe the key schema for the table and indexes.
8510	//
8511	// AttributeDefinitions is a required field
8512	AttributeDefinitions []*AttributeDefinition `type:"list" required:"true"`
8513
8514	// Controls how you are charged for read and write throughput and how you manage
8515	// capacity. This setting can be changed later.
8516	//
8517	//    * PROVISIONED - We recommend using PROVISIONED for predictable workloads.
8518	//    PROVISIONED sets the billing mode to Provisioned Mode (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/HowItWorks.ReadWriteCapacityMode.html#HowItWorks.ProvisionedThroughput.Manual).
8519	//
8520	//    * PAY_PER_REQUEST - We recommend using PAY_PER_REQUEST for unpredictable
8521	//    workloads. PAY_PER_REQUEST sets the billing mode to On-Demand Mode (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/HowItWorks.ReadWriteCapacityMode.html#HowItWorks.OnDemand).
8522	BillingMode *string `type:"string" enum:"BillingMode"`
8523
8524	// One or more global secondary indexes (the maximum is 20) to be created on
8525	// the table. Each global secondary index in the array includes the following:
8526	//
8527	//    * IndexName - The name of the global secondary index. Must be unique only
8528	//    for this table.
8529	//
8530	//    * KeySchema - Specifies the key schema for the global secondary index.
8531	//
8532	//    * Projection - Specifies attributes that are copied (projected) from the
8533	//    table into the index. These are in addition to the primary key attributes
8534	//    and index key attributes, which are automatically projected. Each attribute
8535	//    specification is composed of: ProjectionType - One of the following: KEYS_ONLY
8536	//    - Only the index and primary keys are projected into the index. INCLUDE
8537	//    - Only the specified table attributes are projected into the index. The
8538	//    list of projected attributes is in NonKeyAttributes. ALL - All of the
8539	//    table attributes are projected into the index. NonKeyAttributes - A list
8540	//    of one or more non-key attribute names that are projected into the secondary
8541	//    index. The total count of attributes provided in NonKeyAttributes, summed
8542	//    across all of the secondary indexes, must not exceed 100. If you project
8543	//    the same attribute into two different indexes, this counts as two distinct
8544	//    attributes when determining the total.
8545	//
8546	//    * ProvisionedThroughput - The provisioned throughput settings for the
8547	//    global secondary index, consisting of read and write capacity units.
8548	GlobalSecondaryIndexes []*GlobalSecondaryIndex `type:"list"`
8549
8550	// Specifies the attributes that make up the primary key for a table or an index.
8551	// The attributes in KeySchema must also be defined in the AttributeDefinitions
8552	// array. For more information, see Data Model (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/DataModel.html)
8553	// in the Amazon DynamoDB Developer Guide.
8554	//
8555	// Each KeySchemaElement in the array is composed of:
8556	//
8557	//    * AttributeName - The name of this key attribute.
8558	//
8559	//    * KeyType - The role that the key attribute will assume: HASH - partition
8560	//    key RANGE - sort key
8561	//
8562	// The partition key of an item is also known as its hash attribute. The term
8563	// "hash attribute" derives from the DynamoDB usage of an internal hash function
8564	// to evenly distribute data items across partitions, based on their partition
8565	// key values.
8566	//
8567	// The sort key of an item is also known as its range attribute. The term "range
8568	// attribute" derives from the way DynamoDB stores items with the same partition
8569	// key physically close together, in sorted order by the sort key value.
8570	//
8571	// For a simple primary key (partition key), you must provide exactly one element
8572	// with a KeyType of HASH.
8573	//
8574	// For a composite primary key (partition key and sort key), you must provide
8575	// exactly two elements, in this order: The first element must have a KeyType
8576	// of HASH, and the second element must have a KeyType of RANGE.
8577	//
8578	// For more information, see Working with Tables (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/WorkingWithTables.html#WorkingWithTables.primary.key)
8579	// in the Amazon DynamoDB Developer Guide.
8580	//
8581	// KeySchema is a required field
8582	KeySchema []*KeySchemaElement `min:"1" type:"list" required:"true"`
8583
8584	// One or more local secondary indexes (the maximum is 5) to be created on the
8585	// table. Each index is scoped to a given partition key value. There is a 10
8586	// GB size limit per partition key value; otherwise, the size of a local secondary
8587	// index is unconstrained.
8588	//
8589	// Each local secondary index in the array includes the following:
8590	//
8591	//    * IndexName - The name of the local secondary index. Must be unique only
8592	//    for this table.
8593	//
8594	//    * KeySchema - Specifies the key schema for the local secondary index.
8595	//    The key schema must begin with the same partition key as the table.
8596	//
8597	//    * Projection - Specifies attributes that are copied (projected) from the
8598	//    table into the index. These are in addition to the primary key attributes
8599	//    and index key attributes, which are automatically projected. Each attribute
8600	//    specification is composed of: ProjectionType - One of the following: KEYS_ONLY
8601	//    - Only the index and primary keys are projected into the index. INCLUDE
8602	//    - Only the specified table attributes are projected into the index. The
8603	//    list of projected attributes is in NonKeyAttributes. ALL - All of the
8604	//    table attributes are projected into the index. NonKeyAttributes - A list
8605	//    of one or more non-key attribute names that are projected into the secondary
8606	//    index. The total count of attributes provided in NonKeyAttributes, summed
8607	//    across all of the secondary indexes, must not exceed 100. If you project
8608	//    the same attribute into two different indexes, this counts as two distinct
8609	//    attributes when determining the total.
8610	LocalSecondaryIndexes []*LocalSecondaryIndex `type:"list"`
8611
8612	// Represents the provisioned throughput settings for a specified table or index.
8613	// The settings can be modified using the UpdateTable operation.
8614	//
8615	// If you set BillingMode as PROVISIONED, you must specify this property. If
8616	// you set BillingMode as PAY_PER_REQUEST, you cannot specify this property.
8617	//
8618	// For current minimum and maximum provisioned throughput values, see Limits
8619	// (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Limits.html)
8620	// in the Amazon DynamoDB Developer Guide.
8621	ProvisionedThroughput *ProvisionedThroughput `type:"structure"`
8622
8623	// Represents the settings used to enable server-side encryption.
8624	SSESpecification *SSESpecification `type:"structure"`
8625
8626	// The settings for DynamoDB Streams on the table. These settings consist of:
8627	//
8628	//    * StreamEnabled - Indicates whether DynamoDB Streams is to be enabled
8629	//    (true) or disabled (false).
8630	//
8631	//    * StreamViewType - When an item in the table is modified, StreamViewType
8632	//    determines what information is written to the table's stream. Valid values
8633	//    for StreamViewType are: KEYS_ONLY - Only the key attributes of the modified
8634	//    item are written to the stream. NEW_IMAGE - The entire item, as it appears
8635	//    after it was modified, is written to the stream. OLD_IMAGE - The entire
8636	//    item, as it appeared before it was modified, is written to the stream.
8637	//    NEW_AND_OLD_IMAGES - Both the new and the old item images of the item
8638	//    are written to the stream.
8639	StreamSpecification *StreamSpecification `type:"structure"`
8640
8641	// The name of the table to create.
8642	//
8643	// TableName is a required field
8644	TableName *string `min:"3" type:"string" required:"true"`
8645
8646	// A list of key-value pairs to label the table. For more information, see Tagging
8647	// for DynamoDB (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Tagging.html).
8648	Tags []*Tag `type:"list"`
8649}
8650
8651// String returns the string representation
8652func (s CreateTableInput) String() string {
8653	return awsutil.Prettify(s)
8654}
8655
8656// GoString returns the string representation
8657func (s CreateTableInput) GoString() string {
8658	return s.String()
8659}
8660
8661// Validate inspects the fields of the type to determine if they are valid.
8662func (s *CreateTableInput) Validate() error {
8663	invalidParams := request.ErrInvalidParams{Context: "CreateTableInput"}
8664	if s.AttributeDefinitions == nil {
8665		invalidParams.Add(request.NewErrParamRequired("AttributeDefinitions"))
8666	}
8667	if s.KeySchema == nil {
8668		invalidParams.Add(request.NewErrParamRequired("KeySchema"))
8669	}
8670	if s.KeySchema != nil && len(s.KeySchema) < 1 {
8671		invalidParams.Add(request.NewErrParamMinLen("KeySchema", 1))
8672	}
8673	if s.TableName == nil {
8674		invalidParams.Add(request.NewErrParamRequired("TableName"))
8675	}
8676	if s.TableName != nil && len(*s.TableName) < 3 {
8677		invalidParams.Add(request.NewErrParamMinLen("TableName", 3))
8678	}
8679	if s.AttributeDefinitions != nil {
8680		for i, v := range s.AttributeDefinitions {
8681			if v == nil {
8682				continue
8683			}
8684			if err := v.Validate(); err != nil {
8685				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "AttributeDefinitions", i), err.(request.ErrInvalidParams))
8686			}
8687		}
8688	}
8689	if s.GlobalSecondaryIndexes != nil {
8690		for i, v := range s.GlobalSecondaryIndexes {
8691			if v == nil {
8692				continue
8693			}
8694			if err := v.Validate(); err != nil {
8695				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "GlobalSecondaryIndexes", i), err.(request.ErrInvalidParams))
8696			}
8697		}
8698	}
8699	if s.KeySchema != nil {
8700		for i, v := range s.KeySchema {
8701			if v == nil {
8702				continue
8703			}
8704			if err := v.Validate(); err != nil {
8705				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "KeySchema", i), err.(request.ErrInvalidParams))
8706			}
8707		}
8708	}
8709	if s.LocalSecondaryIndexes != nil {
8710		for i, v := range s.LocalSecondaryIndexes {
8711			if v == nil {
8712				continue
8713			}
8714			if err := v.Validate(); err != nil {
8715				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "LocalSecondaryIndexes", i), err.(request.ErrInvalidParams))
8716			}
8717		}
8718	}
8719	if s.ProvisionedThroughput != nil {
8720		if err := s.ProvisionedThroughput.Validate(); err != nil {
8721			invalidParams.AddNested("ProvisionedThroughput", err.(request.ErrInvalidParams))
8722		}
8723	}
8724	if s.StreamSpecification != nil {
8725		if err := s.StreamSpecification.Validate(); err != nil {
8726			invalidParams.AddNested("StreamSpecification", err.(request.ErrInvalidParams))
8727		}
8728	}
8729	if s.Tags != nil {
8730		for i, v := range s.Tags {
8731			if v == nil {
8732				continue
8733			}
8734			if err := v.Validate(); err != nil {
8735				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Tags", i), err.(request.ErrInvalidParams))
8736			}
8737		}
8738	}
8739
8740	if invalidParams.Len() > 0 {
8741		return invalidParams
8742	}
8743	return nil
8744}
8745
8746// SetAttributeDefinitions sets the AttributeDefinitions field's value.
8747func (s *CreateTableInput) SetAttributeDefinitions(v []*AttributeDefinition) *CreateTableInput {
8748	s.AttributeDefinitions = v
8749	return s
8750}
8751
8752// SetBillingMode sets the BillingMode field's value.
8753func (s *CreateTableInput) SetBillingMode(v string) *CreateTableInput {
8754	s.BillingMode = &v
8755	return s
8756}
8757
8758// SetGlobalSecondaryIndexes sets the GlobalSecondaryIndexes field's value.
8759func (s *CreateTableInput) SetGlobalSecondaryIndexes(v []*GlobalSecondaryIndex) *CreateTableInput {
8760	s.GlobalSecondaryIndexes = v
8761	return s
8762}
8763
8764// SetKeySchema sets the KeySchema field's value.
8765func (s *CreateTableInput) SetKeySchema(v []*KeySchemaElement) *CreateTableInput {
8766	s.KeySchema = v
8767	return s
8768}
8769
8770// SetLocalSecondaryIndexes sets the LocalSecondaryIndexes field's value.
8771func (s *CreateTableInput) SetLocalSecondaryIndexes(v []*LocalSecondaryIndex) *CreateTableInput {
8772	s.LocalSecondaryIndexes = v
8773	return s
8774}
8775
8776// SetProvisionedThroughput sets the ProvisionedThroughput field's value.
8777func (s *CreateTableInput) SetProvisionedThroughput(v *ProvisionedThroughput) *CreateTableInput {
8778	s.ProvisionedThroughput = v
8779	return s
8780}
8781
8782// SetSSESpecification sets the SSESpecification field's value.
8783func (s *CreateTableInput) SetSSESpecification(v *SSESpecification) *CreateTableInput {
8784	s.SSESpecification = v
8785	return s
8786}
8787
8788// SetStreamSpecification sets the StreamSpecification field's value.
8789func (s *CreateTableInput) SetStreamSpecification(v *StreamSpecification) *CreateTableInput {
8790	s.StreamSpecification = v
8791	return s
8792}
8793
8794// SetTableName sets the TableName field's value.
8795func (s *CreateTableInput) SetTableName(v string) *CreateTableInput {
8796	s.TableName = &v
8797	return s
8798}
8799
8800// SetTags sets the Tags field's value.
8801func (s *CreateTableInput) SetTags(v []*Tag) *CreateTableInput {
8802	s.Tags = v
8803	return s
8804}
8805
8806// Represents the output of a CreateTable operation.
8807type CreateTableOutput struct {
8808	_ struct{} `type:"structure"`
8809
8810	// Represents the properties of the table.
8811	TableDescription *TableDescription `type:"structure"`
8812}
8813
8814// String returns the string representation
8815func (s CreateTableOutput) String() string {
8816	return awsutil.Prettify(s)
8817}
8818
8819// GoString returns the string representation
8820func (s CreateTableOutput) GoString() string {
8821	return s.String()
8822}
8823
8824// SetTableDescription sets the TableDescription field's value.
8825func (s *CreateTableOutput) SetTableDescription(v *TableDescription) *CreateTableOutput {
8826	s.TableDescription = v
8827	return s
8828}
8829
8830// Represents a request to perform a DeleteItem operation.
8831type Delete struct {
8832	_ struct{} `type:"structure"`
8833
8834	// A condition that must be satisfied in order for a conditional delete to succeed.
8835	ConditionExpression *string `type:"string"`
8836
8837	// One or more substitution tokens for attribute names in an expression.
8838	ExpressionAttributeNames map[string]*string `type:"map"`
8839
8840	// One or more values that can be substituted in an expression.
8841	ExpressionAttributeValues map[string]*AttributeValue `type:"map"`
8842
8843	// The primary key of the item to be deleted. Each element consists of an attribute
8844	// name and a value for that attribute.
8845	//
8846	// Key is a required field
8847	Key map[string]*AttributeValue `type:"map" required:"true"`
8848
8849	// Use ReturnValuesOnConditionCheckFailure to get the item attributes if the
8850	// Delete condition fails. For ReturnValuesOnConditionCheckFailure, the valid
8851	// values are: NONE and ALL_OLD.
8852	ReturnValuesOnConditionCheckFailure *string `type:"string" enum:"ReturnValuesOnConditionCheckFailure"`
8853
8854	// Name of the table in which the item to be deleted resides.
8855	//
8856	// TableName is a required field
8857	TableName *string `min:"3" type:"string" required:"true"`
8858}
8859
8860// String returns the string representation
8861func (s Delete) String() string {
8862	return awsutil.Prettify(s)
8863}
8864
8865// GoString returns the string representation
8866func (s Delete) GoString() string {
8867	return s.String()
8868}
8869
8870// Validate inspects the fields of the type to determine if they are valid.
8871func (s *Delete) Validate() error {
8872	invalidParams := request.ErrInvalidParams{Context: "Delete"}
8873	if s.Key == nil {
8874		invalidParams.Add(request.NewErrParamRequired("Key"))
8875	}
8876	if s.TableName == nil {
8877		invalidParams.Add(request.NewErrParamRequired("TableName"))
8878	}
8879	if s.TableName != nil && len(*s.TableName) < 3 {
8880		invalidParams.Add(request.NewErrParamMinLen("TableName", 3))
8881	}
8882
8883	if invalidParams.Len() > 0 {
8884		return invalidParams
8885	}
8886	return nil
8887}
8888
8889// SetConditionExpression sets the ConditionExpression field's value.
8890func (s *Delete) SetConditionExpression(v string) *Delete {
8891	s.ConditionExpression = &v
8892	return s
8893}
8894
8895// SetExpressionAttributeNames sets the ExpressionAttributeNames field's value.
8896func (s *Delete) SetExpressionAttributeNames(v map[string]*string) *Delete {
8897	s.ExpressionAttributeNames = v
8898	return s
8899}
8900
8901// SetExpressionAttributeValues sets the ExpressionAttributeValues field's value.
8902func (s *Delete) SetExpressionAttributeValues(v map[string]*AttributeValue) *Delete {
8903	s.ExpressionAttributeValues = v
8904	return s
8905}
8906
8907// SetKey sets the Key field's value.
8908func (s *Delete) SetKey(v map[string]*AttributeValue) *Delete {
8909	s.Key = v
8910	return s
8911}
8912
8913// SetReturnValuesOnConditionCheckFailure sets the ReturnValuesOnConditionCheckFailure field's value.
8914func (s *Delete) SetReturnValuesOnConditionCheckFailure(v string) *Delete {
8915	s.ReturnValuesOnConditionCheckFailure = &v
8916	return s
8917}
8918
8919// SetTableName sets the TableName field's value.
8920func (s *Delete) SetTableName(v string) *Delete {
8921	s.TableName = &v
8922	return s
8923}
8924
8925type DeleteBackupInput struct {
8926	_ struct{} `type:"structure"`
8927
8928	// The ARN associated with the backup.
8929	//
8930	// BackupArn is a required field
8931	BackupArn *string `min:"37" type:"string" required:"true"`
8932}
8933
8934// String returns the string representation
8935func (s DeleteBackupInput) String() string {
8936	return awsutil.Prettify(s)
8937}
8938
8939// GoString returns the string representation
8940func (s DeleteBackupInput) GoString() string {
8941	return s.String()
8942}
8943
8944// Validate inspects the fields of the type to determine if they are valid.
8945func (s *DeleteBackupInput) Validate() error {
8946	invalidParams := request.ErrInvalidParams{Context: "DeleteBackupInput"}
8947	if s.BackupArn == nil {
8948		invalidParams.Add(request.NewErrParamRequired("BackupArn"))
8949	}
8950	if s.BackupArn != nil && len(*s.BackupArn) < 37 {
8951		invalidParams.Add(request.NewErrParamMinLen("BackupArn", 37))
8952	}
8953
8954	if invalidParams.Len() > 0 {
8955		return invalidParams
8956	}
8957	return nil
8958}
8959
8960// SetBackupArn sets the BackupArn field's value.
8961func (s *DeleteBackupInput) SetBackupArn(v string) *DeleteBackupInput {
8962	s.BackupArn = &v
8963	return s
8964}
8965
8966type DeleteBackupOutput struct {
8967	_ struct{} `type:"structure"`
8968
8969	// Contains the description of the backup created for the table.
8970	BackupDescription *BackupDescription `type:"structure"`
8971}
8972
8973// String returns the string representation
8974func (s DeleteBackupOutput) String() string {
8975	return awsutil.Prettify(s)
8976}
8977
8978// GoString returns the string representation
8979func (s DeleteBackupOutput) GoString() string {
8980	return s.String()
8981}
8982
8983// SetBackupDescription sets the BackupDescription field's value.
8984func (s *DeleteBackupOutput) SetBackupDescription(v *BackupDescription) *DeleteBackupOutput {
8985	s.BackupDescription = v
8986	return s
8987}
8988
8989// Represents a global secondary index to be deleted from an existing table.
8990type DeleteGlobalSecondaryIndexAction struct {
8991	_ struct{} `type:"structure"`
8992
8993	// The name of the global secondary index to be deleted.
8994	//
8995	// IndexName is a required field
8996	IndexName *string `min:"3" type:"string" required:"true"`
8997}
8998
8999// String returns the string representation
9000func (s DeleteGlobalSecondaryIndexAction) String() string {
9001	return awsutil.Prettify(s)
9002}
9003
9004// GoString returns the string representation
9005func (s DeleteGlobalSecondaryIndexAction) GoString() string {
9006	return s.String()
9007}
9008
9009// Validate inspects the fields of the type to determine if they are valid.
9010func (s *DeleteGlobalSecondaryIndexAction) Validate() error {
9011	invalidParams := request.ErrInvalidParams{Context: "DeleteGlobalSecondaryIndexAction"}
9012	if s.IndexName == nil {
9013		invalidParams.Add(request.NewErrParamRequired("IndexName"))
9014	}
9015	if s.IndexName != nil && len(*s.IndexName) < 3 {
9016		invalidParams.Add(request.NewErrParamMinLen("IndexName", 3))
9017	}
9018
9019	if invalidParams.Len() > 0 {
9020		return invalidParams
9021	}
9022	return nil
9023}
9024
9025// SetIndexName sets the IndexName field's value.
9026func (s *DeleteGlobalSecondaryIndexAction) SetIndexName(v string) *DeleteGlobalSecondaryIndexAction {
9027	s.IndexName = &v
9028	return s
9029}
9030
9031// Represents the input of a DeleteItem operation.
9032type DeleteItemInput struct {
9033	_ struct{} `type:"structure"`
9034
9035	// A condition that must be satisfied in order for a conditional DeleteItem
9036	// to succeed.
9037	//
9038	// An expression can contain any of the following:
9039	//
9040	//    * Functions: attribute_exists | attribute_not_exists | attribute_type
9041	//    | contains | begins_with | size These function names are case-sensitive.
9042	//
9043	//    * Comparison operators: = | <> | < | > | <= | >= | BETWEEN | IN
9044	//
9045	//    * Logical operators: AND | OR | NOT
9046	//
9047	// For more information about condition expressions, see Condition Expressions
9048	// (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.SpecifyingConditions.html)
9049	// in the Amazon DynamoDB Developer Guide.
9050	ConditionExpression *string `type:"string"`
9051
9052	// This is a legacy parameter. Use ConditionExpression instead. For more information,
9053	// see ConditionalOperator (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/LegacyConditionalParameters.ConditionalOperator.html)
9054	// in the Amazon DynamoDB Developer Guide.
9055	ConditionalOperator *string `type:"string" enum:"ConditionalOperator"`
9056
9057	// This is a legacy parameter. Use ConditionExpression instead. For more information,
9058	// see Expected (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/LegacyConditionalParameters.Expected.html)
9059	// in the Amazon DynamoDB Developer Guide.
9060	Expected map[string]*ExpectedAttributeValue `type:"map"`
9061
9062	// One or more substitution tokens for attribute names in an expression. The
9063	// following are some use cases for using ExpressionAttributeNames:
9064	//
9065	//    * To access an attribute whose name conflicts with a DynamoDB reserved
9066	//    word.
9067	//
9068	//    * To create a placeholder for repeating occurrences of an attribute name
9069	//    in an expression.
9070	//
9071	//    * To prevent special characters in an attribute name from being misinterpreted
9072	//    in an expression.
9073	//
9074	// Use the # character in an expression to dereference an attribute name. For
9075	// example, consider the following attribute name:
9076	//
9077	//    * Percentile
9078	//
9079	// The name of this attribute conflicts with a reserved word, so it cannot be
9080	// used directly in an expression. (For the complete list of reserved words,
9081	// see Reserved Words (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ReservedWords.html)
9082	// in the Amazon DynamoDB Developer Guide). To work around this, you could specify
9083	// the following for ExpressionAttributeNames:
9084	//
9085	//    * {"#P":"Percentile"}
9086	//
9087	// You could then use this substitution in an expression, as in this example:
9088	//
9089	//    * #P = :val
9090	//
9091	// Tokens that begin with the : character are expression attribute values, which
9092	// are placeholders for the actual value at runtime.
9093	//
9094	// For more information on expression attribute names, see Specifying Item Attributes
9095	// (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.AccessingItemAttributes.html)
9096	// in the Amazon DynamoDB Developer Guide.
9097	ExpressionAttributeNames map[string]*string `type:"map"`
9098
9099	// One or more values that can be substituted in an expression.
9100	//
9101	// Use the : (colon) character in an expression to dereference an attribute
9102	// value. For example, suppose that you wanted to check whether the value of
9103	// the ProductStatus attribute was one of the following:
9104	//
9105	// Available | Backordered | Discontinued
9106	//
9107	// You would first need to specify ExpressionAttributeValues as follows:
9108	//
9109	// { ":avail":{"S":"Available"}, ":back":{"S":"Backordered"}, ":disc":{"S":"Discontinued"}
9110	// }
9111	//
9112	// You could then use these values in an expression, such as this:
9113	//
9114	// ProductStatus IN (:avail, :back, :disc)
9115	//
9116	// For more information on expression attribute values, see Condition Expressions
9117	// (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.SpecifyingConditions.html)
9118	// in the Amazon DynamoDB Developer Guide.
9119	ExpressionAttributeValues map[string]*AttributeValue `type:"map"`
9120
9121	// A map of attribute names to AttributeValue objects, representing the primary
9122	// key of the item to delete.
9123	//
9124	// For the primary key, you must provide all of the attributes. For example,
9125	// with a simple primary key, you only need to provide a value for the partition
9126	// key. For a composite primary key, you must provide values for both the partition
9127	// key and the sort key.
9128	//
9129	// Key is a required field
9130	Key map[string]*AttributeValue `type:"map" required:"true"`
9131
9132	// Determines the level of detail about provisioned throughput consumption that
9133	// is returned in the response:
9134	//
9135	//    * INDEXES - The response includes the aggregate ConsumedCapacity for the
9136	//    operation, together with ConsumedCapacity for each table and secondary
9137	//    index that was accessed. Note that some operations, such as GetItem and
9138	//    BatchGetItem, do not access any indexes at all. In these cases, specifying
9139	//    INDEXES will only return ConsumedCapacity information for table(s).
9140	//
9141	//    * TOTAL - The response includes only the aggregate ConsumedCapacity for
9142	//    the operation.
9143	//
9144	//    * NONE - No ConsumedCapacity details are included in the response.
9145	ReturnConsumedCapacity *string `type:"string" enum:"ReturnConsumedCapacity"`
9146
9147	// Determines whether item collection metrics are returned. If set to SIZE,
9148	// the response includes statistics about item collections, if any, that were
9149	// modified during the operation are returned in the response. If set to NONE
9150	// (the default), no statistics are returned.
9151	ReturnItemCollectionMetrics *string `type:"string" enum:"ReturnItemCollectionMetrics"`
9152
9153	// Use ReturnValues if you want to get the item attributes as they appeared
9154	// before they were deleted. For DeleteItem, the valid values are:
9155	//
9156	//    * NONE - If ReturnValues is not specified, or if its value is NONE, then
9157	//    nothing is returned. (This setting is the default for ReturnValues.)
9158	//
9159	//    * ALL_OLD - The content of the old item is returned.
9160	//
9161	// The ReturnValues parameter is used by several DynamoDB operations; however,
9162	// DeleteItem does not recognize any values other than NONE or ALL_OLD.
9163	ReturnValues *string `type:"string" enum:"ReturnValue"`
9164
9165	// The name of the table from which to delete the item.
9166	//
9167	// TableName is a required field
9168	TableName *string `min:"3" type:"string" required:"true"`
9169}
9170
9171// String returns the string representation
9172func (s DeleteItemInput) String() string {
9173	return awsutil.Prettify(s)
9174}
9175
9176// GoString returns the string representation
9177func (s DeleteItemInput) GoString() string {
9178	return s.String()
9179}
9180
9181// Validate inspects the fields of the type to determine if they are valid.
9182func (s *DeleteItemInput) Validate() error {
9183	invalidParams := request.ErrInvalidParams{Context: "DeleteItemInput"}
9184	if s.Key == nil {
9185		invalidParams.Add(request.NewErrParamRequired("Key"))
9186	}
9187	if s.TableName == nil {
9188		invalidParams.Add(request.NewErrParamRequired("TableName"))
9189	}
9190	if s.TableName != nil && len(*s.TableName) < 3 {
9191		invalidParams.Add(request.NewErrParamMinLen("TableName", 3))
9192	}
9193
9194	if invalidParams.Len() > 0 {
9195		return invalidParams
9196	}
9197	return nil
9198}
9199
9200// SetConditionExpression sets the ConditionExpression field's value.
9201func (s *DeleteItemInput) SetConditionExpression(v string) *DeleteItemInput {
9202	s.ConditionExpression = &v
9203	return s
9204}
9205
9206// SetConditionalOperator sets the ConditionalOperator field's value.
9207func (s *DeleteItemInput) SetConditionalOperator(v string) *DeleteItemInput {
9208	s.ConditionalOperator = &v
9209	return s
9210}
9211
9212// SetExpected sets the Expected field's value.
9213func (s *DeleteItemInput) SetExpected(v map[string]*ExpectedAttributeValue) *DeleteItemInput {
9214	s.Expected = v
9215	return s
9216}
9217
9218// SetExpressionAttributeNames sets the ExpressionAttributeNames field's value.
9219func (s *DeleteItemInput) SetExpressionAttributeNames(v map[string]*string) *DeleteItemInput {
9220	s.ExpressionAttributeNames = v
9221	return s
9222}
9223
9224// SetExpressionAttributeValues sets the ExpressionAttributeValues field's value.
9225func (s *DeleteItemInput) SetExpressionAttributeValues(v map[string]*AttributeValue) *DeleteItemInput {
9226	s.ExpressionAttributeValues = v
9227	return s
9228}
9229
9230// SetKey sets the Key field's value.
9231func (s *DeleteItemInput) SetKey(v map[string]*AttributeValue) *DeleteItemInput {
9232	s.Key = v
9233	return s
9234}
9235
9236// SetReturnConsumedCapacity sets the ReturnConsumedCapacity field's value.
9237func (s *DeleteItemInput) SetReturnConsumedCapacity(v string) *DeleteItemInput {
9238	s.ReturnConsumedCapacity = &v
9239	return s
9240}
9241
9242// SetReturnItemCollectionMetrics sets the ReturnItemCollectionMetrics field's value.
9243func (s *DeleteItemInput) SetReturnItemCollectionMetrics(v string) *DeleteItemInput {
9244	s.ReturnItemCollectionMetrics = &v
9245	return s
9246}
9247
9248// SetReturnValues sets the ReturnValues field's value.
9249func (s *DeleteItemInput) SetReturnValues(v string) *DeleteItemInput {
9250	s.ReturnValues = &v
9251	return s
9252}
9253
9254// SetTableName sets the TableName field's value.
9255func (s *DeleteItemInput) SetTableName(v string) *DeleteItemInput {
9256	s.TableName = &v
9257	return s
9258}
9259
9260// Represents the output of a DeleteItem operation.
9261type DeleteItemOutput struct {
9262	_ struct{} `type:"structure"`
9263
9264	// A map of attribute names to AttributeValue objects, representing the item
9265	// as it appeared before the DeleteItem operation. This map appears in the response
9266	// only if ReturnValues was specified as ALL_OLD in the request.
9267	Attributes map[string]*AttributeValue `type:"map"`
9268
9269	// The capacity units consumed by the DeleteItem operation. The data returned
9270	// includes the total provisioned throughput consumed, along with statistics
9271	// for the table and any indexes involved in the operation. ConsumedCapacity
9272	// is only returned if the ReturnConsumedCapacity parameter was specified. For
9273	// more information, see Provisioned Mode (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ProvisionedThroughputIntro.html)
9274	// in the Amazon DynamoDB Developer Guide.
9275	ConsumedCapacity *ConsumedCapacity `type:"structure"`
9276
9277	// Information about item collections, if any, that were affected by the DeleteItem
9278	// operation. ItemCollectionMetrics is only returned if the ReturnItemCollectionMetrics
9279	// parameter was specified. If the table does not have any local secondary indexes,
9280	// this information is not returned in the response.
9281	//
9282	// Each ItemCollectionMetrics element consists of:
9283	//
9284	//    * ItemCollectionKey - The partition key value of the item collection.
9285	//    This is the same as the partition key value of the item itself.
9286	//
9287	//    * SizeEstimateRangeGB - An estimate of item collection size, in gigabytes.
9288	//    This value is a two-element array containing a lower bound and an upper
9289	//    bound for the estimate. The estimate includes the size of all the items
9290	//    in the table, plus the size of all attributes projected into all of the
9291	//    local secondary indexes on that table. Use this estimate to measure whether
9292	//    a local secondary index is approaching its size limit. The estimate is
9293	//    subject to change over time; therefore, do not rely on the precision or
9294	//    accuracy of the estimate.
9295	ItemCollectionMetrics *ItemCollectionMetrics `type:"structure"`
9296}
9297
9298// String returns the string representation
9299func (s DeleteItemOutput) String() string {
9300	return awsutil.Prettify(s)
9301}
9302
9303// GoString returns the string representation
9304func (s DeleteItemOutput) GoString() string {
9305	return s.String()
9306}
9307
9308// SetAttributes sets the Attributes field's value.
9309func (s *DeleteItemOutput) SetAttributes(v map[string]*AttributeValue) *DeleteItemOutput {
9310	s.Attributes = v
9311	return s
9312}
9313
9314// SetConsumedCapacity sets the ConsumedCapacity field's value.
9315func (s *DeleteItemOutput) SetConsumedCapacity(v *ConsumedCapacity) *DeleteItemOutput {
9316	s.ConsumedCapacity = v
9317	return s
9318}
9319
9320// SetItemCollectionMetrics sets the ItemCollectionMetrics field's value.
9321func (s *DeleteItemOutput) SetItemCollectionMetrics(v *ItemCollectionMetrics) *DeleteItemOutput {
9322	s.ItemCollectionMetrics = v
9323	return s
9324}
9325
9326// Represents a replica to be removed.
9327type DeleteReplicaAction struct {
9328	_ struct{} `type:"structure"`
9329
9330	// The Region of the replica to be removed.
9331	//
9332	// RegionName is a required field
9333	RegionName *string `type:"string" required:"true"`
9334}
9335
9336// String returns the string representation
9337func (s DeleteReplicaAction) String() string {
9338	return awsutil.Prettify(s)
9339}
9340
9341// GoString returns the string representation
9342func (s DeleteReplicaAction) GoString() string {
9343	return s.String()
9344}
9345
9346// Validate inspects the fields of the type to determine if they are valid.
9347func (s *DeleteReplicaAction) Validate() error {
9348	invalidParams := request.ErrInvalidParams{Context: "DeleteReplicaAction"}
9349	if s.RegionName == nil {
9350		invalidParams.Add(request.NewErrParamRequired("RegionName"))
9351	}
9352
9353	if invalidParams.Len() > 0 {
9354		return invalidParams
9355	}
9356	return nil
9357}
9358
9359// SetRegionName sets the RegionName field's value.
9360func (s *DeleteReplicaAction) SetRegionName(v string) *DeleteReplicaAction {
9361	s.RegionName = &v
9362	return s
9363}
9364
9365// Represents a replica to be deleted.
9366type DeleteReplicationGroupMemberAction struct {
9367	_ struct{} `type:"structure"`
9368
9369	// The Region where the replica exists.
9370	//
9371	// RegionName is a required field
9372	RegionName *string `type:"string" required:"true"`
9373}
9374
9375// String returns the string representation
9376func (s DeleteReplicationGroupMemberAction) String() string {
9377	return awsutil.Prettify(s)
9378}
9379
9380// GoString returns the string representation
9381func (s DeleteReplicationGroupMemberAction) GoString() string {
9382	return s.String()
9383}
9384
9385// Validate inspects the fields of the type to determine if they are valid.
9386func (s *DeleteReplicationGroupMemberAction) Validate() error {
9387	invalidParams := request.ErrInvalidParams{Context: "DeleteReplicationGroupMemberAction"}
9388	if s.RegionName == nil {
9389		invalidParams.Add(request.NewErrParamRequired("RegionName"))
9390	}
9391
9392	if invalidParams.Len() > 0 {
9393		return invalidParams
9394	}
9395	return nil
9396}
9397
9398// SetRegionName sets the RegionName field's value.
9399func (s *DeleteReplicationGroupMemberAction) SetRegionName(v string) *DeleteReplicationGroupMemberAction {
9400	s.RegionName = &v
9401	return s
9402}
9403
9404// Represents a request to perform a DeleteItem operation on an item.
9405type DeleteRequest struct {
9406	_ struct{} `type:"structure"`
9407
9408	// A map of attribute name to attribute values, representing the primary key
9409	// of the item to delete. All of the table's primary key attributes must be
9410	// specified, and their data types must match those of the table's key schema.
9411	//
9412	// Key is a required field
9413	Key map[string]*AttributeValue `type:"map" required:"true"`
9414}
9415
9416// String returns the string representation
9417func (s DeleteRequest) String() string {
9418	return awsutil.Prettify(s)
9419}
9420
9421// GoString returns the string representation
9422func (s DeleteRequest) GoString() string {
9423	return s.String()
9424}
9425
9426// SetKey sets the Key field's value.
9427func (s *DeleteRequest) SetKey(v map[string]*AttributeValue) *DeleteRequest {
9428	s.Key = v
9429	return s
9430}
9431
9432// Represents the input of a DeleteTable operation.
9433type DeleteTableInput struct {
9434	_ struct{} `type:"structure"`
9435
9436	// The name of the table to delete.
9437	//
9438	// TableName is a required field
9439	TableName *string `min:"3" type:"string" required:"true"`
9440}
9441
9442// String returns the string representation
9443func (s DeleteTableInput) String() string {
9444	return awsutil.Prettify(s)
9445}
9446
9447// GoString returns the string representation
9448func (s DeleteTableInput) GoString() string {
9449	return s.String()
9450}
9451
9452// Validate inspects the fields of the type to determine if they are valid.
9453func (s *DeleteTableInput) Validate() error {
9454	invalidParams := request.ErrInvalidParams{Context: "DeleteTableInput"}
9455	if s.TableName == nil {
9456		invalidParams.Add(request.NewErrParamRequired("TableName"))
9457	}
9458	if s.TableName != nil && len(*s.TableName) < 3 {
9459		invalidParams.Add(request.NewErrParamMinLen("TableName", 3))
9460	}
9461
9462	if invalidParams.Len() > 0 {
9463		return invalidParams
9464	}
9465	return nil
9466}
9467
9468// SetTableName sets the TableName field's value.
9469func (s *DeleteTableInput) SetTableName(v string) *DeleteTableInput {
9470	s.TableName = &v
9471	return s
9472}
9473
9474// Represents the output of a DeleteTable operation.
9475type DeleteTableOutput struct {
9476	_ struct{} `type:"structure"`
9477
9478	// Represents the properties of a table.
9479	TableDescription *TableDescription `type:"structure"`
9480}
9481
9482// String returns the string representation
9483func (s DeleteTableOutput) String() string {
9484	return awsutil.Prettify(s)
9485}
9486
9487// GoString returns the string representation
9488func (s DeleteTableOutput) GoString() string {
9489	return s.String()
9490}
9491
9492// SetTableDescription sets the TableDescription field's value.
9493func (s *DeleteTableOutput) SetTableDescription(v *TableDescription) *DeleteTableOutput {
9494	s.TableDescription = v
9495	return s
9496}
9497
9498type DescribeBackupInput struct {
9499	_ struct{} `type:"structure"`
9500
9501	// The Amazon Resource Name (ARN) associated with the backup.
9502	//
9503	// BackupArn is a required field
9504	BackupArn *string `min:"37" type:"string" required:"true"`
9505}
9506
9507// String returns the string representation
9508func (s DescribeBackupInput) String() string {
9509	return awsutil.Prettify(s)
9510}
9511
9512// GoString returns the string representation
9513func (s DescribeBackupInput) GoString() string {
9514	return s.String()
9515}
9516
9517// Validate inspects the fields of the type to determine if they are valid.
9518func (s *DescribeBackupInput) Validate() error {
9519	invalidParams := request.ErrInvalidParams{Context: "DescribeBackupInput"}
9520	if s.BackupArn == nil {
9521		invalidParams.Add(request.NewErrParamRequired("BackupArn"))
9522	}
9523	if s.BackupArn != nil && len(*s.BackupArn) < 37 {
9524		invalidParams.Add(request.NewErrParamMinLen("BackupArn", 37))
9525	}
9526
9527	if invalidParams.Len() > 0 {
9528		return invalidParams
9529	}
9530	return nil
9531}
9532
9533// SetBackupArn sets the BackupArn field's value.
9534func (s *DescribeBackupInput) SetBackupArn(v string) *DescribeBackupInput {
9535	s.BackupArn = &v
9536	return s
9537}
9538
9539type DescribeBackupOutput struct {
9540	_ struct{} `type:"structure"`
9541
9542	// Contains the description of the backup created for the table.
9543	BackupDescription *BackupDescription `type:"structure"`
9544}
9545
9546// String returns the string representation
9547func (s DescribeBackupOutput) String() string {
9548	return awsutil.Prettify(s)
9549}
9550
9551// GoString returns the string representation
9552func (s DescribeBackupOutput) GoString() string {
9553	return s.String()
9554}
9555
9556// SetBackupDescription sets the BackupDescription field's value.
9557func (s *DescribeBackupOutput) SetBackupDescription(v *BackupDescription) *DescribeBackupOutput {
9558	s.BackupDescription = v
9559	return s
9560}
9561
9562type DescribeContinuousBackupsInput struct {
9563	_ struct{} `type:"structure"`
9564
9565	// Name of the table for which the customer wants to check the continuous backups
9566	// and point in time recovery settings.
9567	//
9568	// TableName is a required field
9569	TableName *string `min:"3" type:"string" required:"true"`
9570}
9571
9572// String returns the string representation
9573func (s DescribeContinuousBackupsInput) String() string {
9574	return awsutil.Prettify(s)
9575}
9576
9577// GoString returns the string representation
9578func (s DescribeContinuousBackupsInput) GoString() string {
9579	return s.String()
9580}
9581
9582// Validate inspects the fields of the type to determine if they are valid.
9583func (s *DescribeContinuousBackupsInput) Validate() error {
9584	invalidParams := request.ErrInvalidParams{Context: "DescribeContinuousBackupsInput"}
9585	if s.TableName == nil {
9586		invalidParams.Add(request.NewErrParamRequired("TableName"))
9587	}
9588	if s.TableName != nil && len(*s.TableName) < 3 {
9589		invalidParams.Add(request.NewErrParamMinLen("TableName", 3))
9590	}
9591
9592	if invalidParams.Len() > 0 {
9593		return invalidParams
9594	}
9595	return nil
9596}
9597
9598// SetTableName sets the TableName field's value.
9599func (s *DescribeContinuousBackupsInput) SetTableName(v string) *DescribeContinuousBackupsInput {
9600	s.TableName = &v
9601	return s
9602}
9603
9604type DescribeContinuousBackupsOutput struct {
9605	_ struct{} `type:"structure"`
9606
9607	// Represents the continuous backups and point in time recovery settings on
9608	// the table.
9609	ContinuousBackupsDescription *ContinuousBackupsDescription `type:"structure"`
9610}
9611
9612// String returns the string representation
9613func (s DescribeContinuousBackupsOutput) String() string {
9614	return awsutil.Prettify(s)
9615}
9616
9617// GoString returns the string representation
9618func (s DescribeContinuousBackupsOutput) GoString() string {
9619	return s.String()
9620}
9621
9622// SetContinuousBackupsDescription sets the ContinuousBackupsDescription field's value.
9623func (s *DescribeContinuousBackupsOutput) SetContinuousBackupsDescription(v *ContinuousBackupsDescription) *DescribeContinuousBackupsOutput {
9624	s.ContinuousBackupsDescription = v
9625	return s
9626}
9627
9628type DescribeContributorInsightsInput struct {
9629	_ struct{} `type:"structure"`
9630
9631	// The name of the global secondary index to describe, if applicable.
9632	IndexName *string `min:"3" type:"string"`
9633
9634	// The name of the table to describe.
9635	//
9636	// TableName is a required field
9637	TableName *string `min:"3" type:"string" required:"true"`
9638}
9639
9640// String returns the string representation
9641func (s DescribeContributorInsightsInput) String() string {
9642	return awsutil.Prettify(s)
9643}
9644
9645// GoString returns the string representation
9646func (s DescribeContributorInsightsInput) GoString() string {
9647	return s.String()
9648}
9649
9650// Validate inspects the fields of the type to determine if they are valid.
9651func (s *DescribeContributorInsightsInput) Validate() error {
9652	invalidParams := request.ErrInvalidParams{Context: "DescribeContributorInsightsInput"}
9653	if s.IndexName != nil && len(*s.IndexName) < 3 {
9654		invalidParams.Add(request.NewErrParamMinLen("IndexName", 3))
9655	}
9656	if s.TableName == nil {
9657		invalidParams.Add(request.NewErrParamRequired("TableName"))
9658	}
9659	if s.TableName != nil && len(*s.TableName) < 3 {
9660		invalidParams.Add(request.NewErrParamMinLen("TableName", 3))
9661	}
9662
9663	if invalidParams.Len() > 0 {
9664		return invalidParams
9665	}
9666	return nil
9667}
9668
9669// SetIndexName sets the IndexName field's value.
9670func (s *DescribeContributorInsightsInput) SetIndexName(v string) *DescribeContributorInsightsInput {
9671	s.IndexName = &v
9672	return s
9673}
9674
9675// SetTableName sets the TableName field's value.
9676func (s *DescribeContributorInsightsInput) SetTableName(v string) *DescribeContributorInsightsInput {
9677	s.TableName = &v
9678	return s
9679}
9680
9681type DescribeContributorInsightsOutput struct {
9682	_ struct{} `type:"structure"`
9683
9684	// List of names of the associated Alpine rules.
9685	ContributorInsightsRuleList []*string `type:"list"`
9686
9687	// Current Status contributor insights.
9688	ContributorInsightsStatus *string `type:"string" enum:"ContributorInsightsStatus"`
9689
9690	// Returns information about the last failure that encountered.
9691	//
9692	// The most common exceptions for a FAILED status are:
9693	//
9694	//    * LimitExceededException - Per-account Amazon CloudWatch Contributor Insights
9695	//    rule limit reached. Please disable Contributor Insights for other tables/indexes
9696	//    OR disable Contributor Insights rules before retrying.
9697	//
9698	//    * AccessDeniedException - Amazon CloudWatch Contributor Insights rules
9699	//    cannot be modified due to insufficient permissions.
9700	//
9701	//    * AccessDeniedException - Failed to create service-linked role for Contributor
9702	//    Insights due to insufficient permissions.
9703	//
9704	//    * InternalServerError - Failed to create Amazon CloudWatch Contributor
9705	//    Insights rules. Please retry request.
9706	FailureException *FailureException `type:"structure"`
9707
9708	// The name of the global secondary index being described.
9709	IndexName *string `min:"3" type:"string"`
9710
9711	// Timestamp of the last time the status was changed.
9712	LastUpdateDateTime *time.Time `type:"timestamp"`
9713
9714	// The name of the table being described.
9715	TableName *string `min:"3" type:"string"`
9716}
9717
9718// String returns the string representation
9719func (s DescribeContributorInsightsOutput) String() string {
9720	return awsutil.Prettify(s)
9721}
9722
9723// GoString returns the string representation
9724func (s DescribeContributorInsightsOutput) GoString() string {
9725	return s.String()
9726}
9727
9728// SetContributorInsightsRuleList sets the ContributorInsightsRuleList field's value.
9729func (s *DescribeContributorInsightsOutput) SetContributorInsightsRuleList(v []*string) *DescribeContributorInsightsOutput {
9730	s.ContributorInsightsRuleList = v
9731	return s
9732}
9733
9734// SetContributorInsightsStatus sets the ContributorInsightsStatus field's value.
9735func (s *DescribeContributorInsightsOutput) SetContributorInsightsStatus(v string) *DescribeContributorInsightsOutput {
9736	s.ContributorInsightsStatus = &v
9737	return s
9738}
9739
9740// SetFailureException sets the FailureException field's value.
9741func (s *DescribeContributorInsightsOutput) SetFailureException(v *FailureException) *DescribeContributorInsightsOutput {
9742	s.FailureException = v
9743	return s
9744}
9745
9746// SetIndexName sets the IndexName field's value.
9747func (s *DescribeContributorInsightsOutput) SetIndexName(v string) *DescribeContributorInsightsOutput {
9748	s.IndexName = &v
9749	return s
9750}
9751
9752// SetLastUpdateDateTime sets the LastUpdateDateTime field's value.
9753func (s *DescribeContributorInsightsOutput) SetLastUpdateDateTime(v time.Time) *DescribeContributorInsightsOutput {
9754	s.LastUpdateDateTime = &v
9755	return s
9756}
9757
9758// SetTableName sets the TableName field's value.
9759func (s *DescribeContributorInsightsOutput) SetTableName(v string) *DescribeContributorInsightsOutput {
9760	s.TableName = &v
9761	return s
9762}
9763
9764type DescribeEndpointsInput struct {
9765	_ struct{} `type:"structure"`
9766}
9767
9768// String returns the string representation
9769func (s DescribeEndpointsInput) String() string {
9770	return awsutil.Prettify(s)
9771}
9772
9773// GoString returns the string representation
9774func (s DescribeEndpointsInput) GoString() string {
9775	return s.String()
9776}
9777
9778type DescribeEndpointsOutput struct {
9779	_ struct{} `type:"structure"`
9780
9781	// List of endpoints.
9782	//
9783	// Endpoints is a required field
9784	Endpoints []*Endpoint `type:"list" required:"true"`
9785}
9786
9787// String returns the string representation
9788func (s DescribeEndpointsOutput) String() string {
9789	return awsutil.Prettify(s)
9790}
9791
9792// GoString returns the string representation
9793func (s DescribeEndpointsOutput) GoString() string {
9794	return s.String()
9795}
9796
9797// SetEndpoints sets the Endpoints field's value.
9798func (s *DescribeEndpointsOutput) SetEndpoints(v []*Endpoint) *DescribeEndpointsOutput {
9799	s.Endpoints = v
9800	return s
9801}
9802
9803type DescribeGlobalTableInput struct {
9804	_ struct{} `type:"structure"`
9805
9806	// The name of the global table.
9807	//
9808	// GlobalTableName is a required field
9809	GlobalTableName *string `min:"3" type:"string" required:"true"`
9810}
9811
9812// String returns the string representation
9813func (s DescribeGlobalTableInput) String() string {
9814	return awsutil.Prettify(s)
9815}
9816
9817// GoString returns the string representation
9818func (s DescribeGlobalTableInput) GoString() string {
9819	return s.String()
9820}
9821
9822// Validate inspects the fields of the type to determine if they are valid.
9823func (s *DescribeGlobalTableInput) Validate() error {
9824	invalidParams := request.ErrInvalidParams{Context: "DescribeGlobalTableInput"}
9825	if s.GlobalTableName == nil {
9826		invalidParams.Add(request.NewErrParamRequired("GlobalTableName"))
9827	}
9828	if s.GlobalTableName != nil && len(*s.GlobalTableName) < 3 {
9829		invalidParams.Add(request.NewErrParamMinLen("GlobalTableName", 3))
9830	}
9831
9832	if invalidParams.Len() > 0 {
9833		return invalidParams
9834	}
9835	return nil
9836}
9837
9838// SetGlobalTableName sets the GlobalTableName field's value.
9839func (s *DescribeGlobalTableInput) SetGlobalTableName(v string) *DescribeGlobalTableInput {
9840	s.GlobalTableName = &v
9841	return s
9842}
9843
9844type DescribeGlobalTableOutput struct {
9845	_ struct{} `type:"structure"`
9846
9847	// Contains the details of the global table.
9848	GlobalTableDescription *GlobalTableDescription `type:"structure"`
9849}
9850
9851// String returns the string representation
9852func (s DescribeGlobalTableOutput) String() string {
9853	return awsutil.Prettify(s)
9854}
9855
9856// GoString returns the string representation
9857func (s DescribeGlobalTableOutput) GoString() string {
9858	return s.String()
9859}
9860
9861// SetGlobalTableDescription sets the GlobalTableDescription field's value.
9862func (s *DescribeGlobalTableOutput) SetGlobalTableDescription(v *GlobalTableDescription) *DescribeGlobalTableOutput {
9863	s.GlobalTableDescription = v
9864	return s
9865}
9866
9867type DescribeGlobalTableSettingsInput struct {
9868	_ struct{} `type:"structure"`
9869
9870	// The name of the global table to describe.
9871	//
9872	// GlobalTableName is a required field
9873	GlobalTableName *string `min:"3" type:"string" required:"true"`
9874}
9875
9876// String returns the string representation
9877func (s DescribeGlobalTableSettingsInput) String() string {
9878	return awsutil.Prettify(s)
9879}
9880
9881// GoString returns the string representation
9882func (s DescribeGlobalTableSettingsInput) GoString() string {
9883	return s.String()
9884}
9885
9886// Validate inspects the fields of the type to determine if they are valid.
9887func (s *DescribeGlobalTableSettingsInput) Validate() error {
9888	invalidParams := request.ErrInvalidParams{Context: "DescribeGlobalTableSettingsInput"}
9889	if s.GlobalTableName == nil {
9890		invalidParams.Add(request.NewErrParamRequired("GlobalTableName"))
9891	}
9892	if s.GlobalTableName != nil && len(*s.GlobalTableName) < 3 {
9893		invalidParams.Add(request.NewErrParamMinLen("GlobalTableName", 3))
9894	}
9895
9896	if invalidParams.Len() > 0 {
9897		return invalidParams
9898	}
9899	return nil
9900}
9901
9902// SetGlobalTableName sets the GlobalTableName field's value.
9903func (s *DescribeGlobalTableSettingsInput) SetGlobalTableName(v string) *DescribeGlobalTableSettingsInput {
9904	s.GlobalTableName = &v
9905	return s
9906}
9907
9908type DescribeGlobalTableSettingsOutput struct {
9909	_ struct{} `type:"structure"`
9910
9911	// The name of the global table.
9912	GlobalTableName *string `min:"3" type:"string"`
9913
9914	// The Region-specific settings for the global table.
9915	ReplicaSettings []*ReplicaSettingsDescription `type:"list"`
9916}
9917
9918// String returns the string representation
9919func (s DescribeGlobalTableSettingsOutput) String() string {
9920	return awsutil.Prettify(s)
9921}
9922
9923// GoString returns the string representation
9924func (s DescribeGlobalTableSettingsOutput) GoString() string {
9925	return s.String()
9926}
9927
9928// SetGlobalTableName sets the GlobalTableName field's value.
9929func (s *DescribeGlobalTableSettingsOutput) SetGlobalTableName(v string) *DescribeGlobalTableSettingsOutput {
9930	s.GlobalTableName = &v
9931	return s
9932}
9933
9934// SetReplicaSettings sets the ReplicaSettings field's value.
9935func (s *DescribeGlobalTableSettingsOutput) SetReplicaSettings(v []*ReplicaSettingsDescription) *DescribeGlobalTableSettingsOutput {
9936	s.ReplicaSettings = v
9937	return s
9938}
9939
9940// Represents the input of a DescribeLimits operation. Has no content.
9941type DescribeLimitsInput struct {
9942	_ struct{} `type:"structure"`
9943}
9944
9945// String returns the string representation
9946func (s DescribeLimitsInput) String() string {
9947	return awsutil.Prettify(s)
9948}
9949
9950// GoString returns the string representation
9951func (s DescribeLimitsInput) GoString() string {
9952	return s.String()
9953}
9954
9955// Represents the output of a DescribeLimits operation.
9956type DescribeLimitsOutput struct {
9957	_ struct{} `type:"structure"`
9958
9959	// The maximum total read capacity units that your account allows you to provision
9960	// across all of your tables in this Region.
9961	AccountMaxReadCapacityUnits *int64 `min:"1" type:"long"`
9962
9963	// The maximum total write capacity units that your account allows you to provision
9964	// across all of your tables in this Region.
9965	AccountMaxWriteCapacityUnits *int64 `min:"1" type:"long"`
9966
9967	// The maximum read capacity units that your account allows you to provision
9968	// for a new table that you are creating in this Region, including the read
9969	// capacity units provisioned for its global secondary indexes (GSIs).
9970	TableMaxReadCapacityUnits *int64 `min:"1" type:"long"`
9971
9972	// The maximum write capacity units that your account allows you to provision
9973	// for a new table that you are creating in this Region, including the write
9974	// capacity units provisioned for its global secondary indexes (GSIs).
9975	TableMaxWriteCapacityUnits *int64 `min:"1" type:"long"`
9976}
9977
9978// String returns the string representation
9979func (s DescribeLimitsOutput) String() string {
9980	return awsutil.Prettify(s)
9981}
9982
9983// GoString returns the string representation
9984func (s DescribeLimitsOutput) GoString() string {
9985	return s.String()
9986}
9987
9988// SetAccountMaxReadCapacityUnits sets the AccountMaxReadCapacityUnits field's value.
9989func (s *DescribeLimitsOutput) SetAccountMaxReadCapacityUnits(v int64) *DescribeLimitsOutput {
9990	s.AccountMaxReadCapacityUnits = &v
9991	return s
9992}
9993
9994// SetAccountMaxWriteCapacityUnits sets the AccountMaxWriteCapacityUnits field's value.
9995func (s *DescribeLimitsOutput) SetAccountMaxWriteCapacityUnits(v int64) *DescribeLimitsOutput {
9996	s.AccountMaxWriteCapacityUnits = &v
9997	return s
9998}
9999
10000// SetTableMaxReadCapacityUnits sets the TableMaxReadCapacityUnits field's value.
10001func (s *DescribeLimitsOutput) SetTableMaxReadCapacityUnits(v int64) *DescribeLimitsOutput {
10002	s.TableMaxReadCapacityUnits = &v
10003	return s
10004}
10005
10006// SetTableMaxWriteCapacityUnits sets the TableMaxWriteCapacityUnits field's value.
10007func (s *DescribeLimitsOutput) SetTableMaxWriteCapacityUnits(v int64) *DescribeLimitsOutput {
10008	s.TableMaxWriteCapacityUnits = &v
10009	return s
10010}
10011
10012// Represents the input of a DescribeTable operation.
10013type DescribeTableInput struct {
10014	_ struct{} `type:"structure"`
10015
10016	// The name of the table to describe.
10017	//
10018	// TableName is a required field
10019	TableName *string `min:"3" type:"string" required:"true"`
10020}
10021
10022// String returns the string representation
10023func (s DescribeTableInput) String() string {
10024	return awsutil.Prettify(s)
10025}
10026
10027// GoString returns the string representation
10028func (s DescribeTableInput) GoString() string {
10029	return s.String()
10030}
10031
10032// Validate inspects the fields of the type to determine if they are valid.
10033func (s *DescribeTableInput) Validate() error {
10034	invalidParams := request.ErrInvalidParams{Context: "DescribeTableInput"}
10035	if s.TableName == nil {
10036		invalidParams.Add(request.NewErrParamRequired("TableName"))
10037	}
10038	if s.TableName != nil && len(*s.TableName) < 3 {
10039		invalidParams.Add(request.NewErrParamMinLen("TableName", 3))
10040	}
10041
10042	if invalidParams.Len() > 0 {
10043		return invalidParams
10044	}
10045	return nil
10046}
10047
10048// SetTableName sets the TableName field's value.
10049func (s *DescribeTableInput) SetTableName(v string) *DescribeTableInput {
10050	s.TableName = &v
10051	return s
10052}
10053
10054// Represents the output of a DescribeTable operation.
10055type DescribeTableOutput struct {
10056	_ struct{} `type:"structure"`
10057
10058	// The properties of the table.
10059	Table *TableDescription `type:"structure"`
10060}
10061
10062// String returns the string representation
10063func (s DescribeTableOutput) String() string {
10064	return awsutil.Prettify(s)
10065}
10066
10067// GoString returns the string representation
10068func (s DescribeTableOutput) GoString() string {
10069	return s.String()
10070}
10071
10072// SetTable sets the Table field's value.
10073func (s *DescribeTableOutput) SetTable(v *TableDescription) *DescribeTableOutput {
10074	s.Table = v
10075	return s
10076}
10077
10078type DescribeTableReplicaAutoScalingInput struct {
10079	_ struct{} `type:"structure"`
10080
10081	// The name of the table.
10082	//
10083	// TableName is a required field
10084	TableName *string `min:"3" type:"string" required:"true"`
10085}
10086
10087// String returns the string representation
10088func (s DescribeTableReplicaAutoScalingInput) String() string {
10089	return awsutil.Prettify(s)
10090}
10091
10092// GoString returns the string representation
10093func (s DescribeTableReplicaAutoScalingInput) GoString() string {
10094	return s.String()
10095}
10096
10097// Validate inspects the fields of the type to determine if they are valid.
10098func (s *DescribeTableReplicaAutoScalingInput) Validate() error {
10099	invalidParams := request.ErrInvalidParams{Context: "DescribeTableReplicaAutoScalingInput"}
10100	if s.TableName == nil {
10101		invalidParams.Add(request.NewErrParamRequired("TableName"))
10102	}
10103	if s.TableName != nil && len(*s.TableName) < 3 {
10104		invalidParams.Add(request.NewErrParamMinLen("TableName", 3))
10105	}
10106
10107	if invalidParams.Len() > 0 {
10108		return invalidParams
10109	}
10110	return nil
10111}
10112
10113// SetTableName sets the TableName field's value.
10114func (s *DescribeTableReplicaAutoScalingInput) SetTableName(v string) *DescribeTableReplicaAutoScalingInput {
10115	s.TableName = &v
10116	return s
10117}
10118
10119type DescribeTableReplicaAutoScalingOutput struct {
10120	_ struct{} `type:"structure"`
10121
10122	// Represents the auto scaling properties of the table.
10123	TableAutoScalingDescription *TableAutoScalingDescription `type:"structure"`
10124}
10125
10126// String returns the string representation
10127func (s DescribeTableReplicaAutoScalingOutput) String() string {
10128	return awsutil.Prettify(s)
10129}
10130
10131// GoString returns the string representation
10132func (s DescribeTableReplicaAutoScalingOutput) GoString() string {
10133	return s.String()
10134}
10135
10136// SetTableAutoScalingDescription sets the TableAutoScalingDescription field's value.
10137func (s *DescribeTableReplicaAutoScalingOutput) SetTableAutoScalingDescription(v *TableAutoScalingDescription) *DescribeTableReplicaAutoScalingOutput {
10138	s.TableAutoScalingDescription = v
10139	return s
10140}
10141
10142type DescribeTimeToLiveInput struct {
10143	_ struct{} `type:"structure"`
10144
10145	// The name of the table to be described.
10146	//
10147	// TableName is a required field
10148	TableName *string `min:"3" type:"string" required:"true"`
10149}
10150
10151// String returns the string representation
10152func (s DescribeTimeToLiveInput) String() string {
10153	return awsutil.Prettify(s)
10154}
10155
10156// GoString returns the string representation
10157func (s DescribeTimeToLiveInput) GoString() string {
10158	return s.String()
10159}
10160
10161// Validate inspects the fields of the type to determine if they are valid.
10162func (s *DescribeTimeToLiveInput) Validate() error {
10163	invalidParams := request.ErrInvalidParams{Context: "DescribeTimeToLiveInput"}
10164	if s.TableName == nil {
10165		invalidParams.Add(request.NewErrParamRequired("TableName"))
10166	}
10167	if s.TableName != nil && len(*s.TableName) < 3 {
10168		invalidParams.Add(request.NewErrParamMinLen("TableName", 3))
10169	}
10170
10171	if invalidParams.Len() > 0 {
10172		return invalidParams
10173	}
10174	return nil
10175}
10176
10177// SetTableName sets the TableName field's value.
10178func (s *DescribeTimeToLiveInput) SetTableName(v string) *DescribeTimeToLiveInput {
10179	s.TableName = &v
10180	return s
10181}
10182
10183type DescribeTimeToLiveOutput struct {
10184	_ struct{} `type:"structure"`
10185
10186	// The description of the Time to Live (TTL) status on the specified table.
10187	TimeToLiveDescription *TimeToLiveDescription `type:"structure"`
10188}
10189
10190// String returns the string representation
10191func (s DescribeTimeToLiveOutput) String() string {
10192	return awsutil.Prettify(s)
10193}
10194
10195// GoString returns the string representation
10196func (s DescribeTimeToLiveOutput) GoString() string {
10197	return s.String()
10198}
10199
10200// SetTimeToLiveDescription sets the TimeToLiveDescription field's value.
10201func (s *DescribeTimeToLiveOutput) SetTimeToLiveDescription(v *TimeToLiveDescription) *DescribeTimeToLiveOutput {
10202	s.TimeToLiveDescription = v
10203	return s
10204}
10205
10206// An endpoint information details.
10207type Endpoint struct {
10208	_ struct{} `type:"structure"`
10209
10210	// IP address of the endpoint.
10211	//
10212	// Address is a required field
10213	Address *string `type:"string" required:"true"`
10214
10215	// Endpoint cache time to live (TTL) value.
10216	//
10217	// CachePeriodInMinutes is a required field
10218	CachePeriodInMinutes *int64 `type:"long" required:"true"`
10219}
10220
10221// String returns the string representation
10222func (s Endpoint) String() string {
10223	return awsutil.Prettify(s)
10224}
10225
10226// GoString returns the string representation
10227func (s Endpoint) GoString() string {
10228	return s.String()
10229}
10230
10231// SetAddress sets the Address field's value.
10232func (s *Endpoint) SetAddress(v string) *Endpoint {
10233	s.Address = &v
10234	return s
10235}
10236
10237// SetCachePeriodInMinutes sets the CachePeriodInMinutes field's value.
10238func (s *Endpoint) SetCachePeriodInMinutes(v int64) *Endpoint {
10239	s.CachePeriodInMinutes = &v
10240	return s
10241}
10242
10243// Represents a condition to be compared with an attribute value. This condition
10244// can be used with DeleteItem, PutItem, or UpdateItem operations; if the comparison
10245// evaluates to true, the operation succeeds; if not, the operation fails. You
10246// can use ExpectedAttributeValue in one of two different ways:
10247//
10248//    * Use AttributeValueList to specify one or more values to compare against
10249//    an attribute. Use ComparisonOperator to specify how you want to perform
10250//    the comparison. If the comparison evaluates to true, then the conditional
10251//    operation succeeds.
10252//
10253//    * Use Value to specify a value that DynamoDB will compare against an attribute.
10254//    If the values match, then ExpectedAttributeValue evaluates to true and
10255//    the conditional operation succeeds. Optionally, you can also set Exists
10256//    to false, indicating that you do not expect to find the attribute value
10257//    in the table. In this case, the conditional operation succeeds only if
10258//    the comparison evaluates to false.
10259//
10260// Value and Exists are incompatible with AttributeValueList and ComparisonOperator.
10261// Note that if you use both sets of parameters at once, DynamoDB will return
10262// a ValidationException exception.
10263type ExpectedAttributeValue struct {
10264	_ struct{} `type:"structure"`
10265
10266	// One or more values to evaluate against the supplied attribute. The number
10267	// of values in the list depends on the ComparisonOperator being used.
10268	//
10269	// For type Number, value comparisons are numeric.
10270	//
10271	// String value comparisons for greater than, equals, or less than are based
10272	// on ASCII character code values. For example, a is greater than A, and a is
10273	// greater than B. For a list of code values, see http://en.wikipedia.org/wiki/ASCII#ASCII_printable_characters
10274	// (http://en.wikipedia.org/wiki/ASCII#ASCII_printable_characters).
10275	//
10276	// For Binary, DynamoDB treats each byte of the binary data as unsigned when
10277	// it compares binary values.
10278	//
10279	// For information on specifying data types in JSON, see JSON Data Format (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/DataFormat.html)
10280	// in the Amazon DynamoDB Developer Guide.
10281	AttributeValueList []*AttributeValue `type:"list"`
10282
10283	// A comparator for evaluating attributes in the AttributeValueList. For example,
10284	// equals, greater than, less than, etc.
10285	//
10286	// The following comparison operators are available:
10287	//
10288	// EQ | NE | LE | LT | GE | GT | NOT_NULL | NULL | CONTAINS | NOT_CONTAINS |
10289	// BEGINS_WITH | IN | BETWEEN
10290	//
10291	// The following are descriptions of each comparison operator.
10292	//
10293	//    * EQ : Equal. EQ is supported for all data types, including lists and
10294	//    maps. AttributeValueList can contain only one AttributeValue element of
10295	//    type String, Number, Binary, String Set, Number Set, or Binary Set. If
10296	//    an item contains an AttributeValue element of a different type than the
10297	//    one provided in the request, the value does not match. For example, {"S":"6"}
10298	//    does not equal {"N":"6"}. Also, {"N":"6"} does not equal {"NS":["6", "2",
10299	//    "1"]}.
10300	//
10301	//    * NE : Not equal. NE is supported for all data types, including lists
10302	//    and maps. AttributeValueList can contain only one AttributeValue of type
10303	//    String, Number, Binary, String Set, Number Set, or Binary Set. If an item
10304	//    contains an AttributeValue of a different type than the one provided in
10305	//    the request, the value does not match. For example, {"S":"6"} does not
10306	//    equal {"N":"6"}. Also, {"N":"6"} does not equal {"NS":["6", "2", "1"]}.
10307	//
10308	//    * LE : Less than or equal. AttributeValueList can contain only one AttributeValue
10309	//    element of type String, Number, or Binary (not a set type). If an item
10310	//    contains an AttributeValue element of a different type than the one provided
10311	//    in the request, the value does not match. For example, {"S":"6"} does
10312	//    not equal {"N":"6"}. Also, {"N":"6"} does not compare to {"NS":["6", "2",
10313	//    "1"]}.
10314	//
10315	//    * LT : Less than. AttributeValueList can contain only one AttributeValue
10316	//    of type String, Number, or Binary (not a set type). If an item contains
10317	//    an AttributeValue element of a different type than the one provided in
10318	//    the request, the value does not match. For example, {"S":"6"} does not
10319	//    equal {"N":"6"}. Also, {"N":"6"} does not compare to {"NS":["6", "2",
10320	//    "1"]}.
10321	//
10322	//    * GE : Greater than or equal. AttributeValueList can contain only one
10323	//    AttributeValue element of type String, Number, or Binary (not a set type).
10324	//    If an item contains an AttributeValue element of a different type than
10325	//    the one provided in the request, the value does not match. For example,
10326	//    {"S":"6"} does not equal {"N":"6"}. Also, {"N":"6"} does not compare to
10327	//    {"NS":["6", "2", "1"]}.
10328	//
10329	//    * GT : Greater than. AttributeValueList can contain only one AttributeValue
10330	//    element of type String, Number, or Binary (not a set type). If an item
10331	//    contains an AttributeValue element of a different type than the one provided
10332	//    in the request, the value does not match. For example, {"S":"6"} does
10333	//    not equal {"N":"6"}. Also, {"N":"6"} does not compare to {"NS":["6", "2",
10334	//    "1"]}.
10335	//
10336	//    * NOT_NULL : The attribute exists. NOT_NULL is supported for all data
10337	//    types, including lists and maps. This operator tests for the existence
10338	//    of an attribute, not its data type. If the data type of attribute "a"
10339	//    is null, and you evaluate it using NOT_NULL, the result is a Boolean true.
10340	//    This result is because the attribute "a" exists; its data type is not
10341	//    relevant to the NOT_NULL comparison operator.
10342	//
10343	//    * NULL : The attribute does not exist. NULL is supported for all data
10344	//    types, including lists and maps. This operator tests for the nonexistence
10345	//    of an attribute, not its data type. If the data type of attribute "a"
10346	//    is null, and you evaluate it using NULL, the result is a Boolean false.
10347	//    This is because the attribute "a" exists; its data type is not relevant
10348	//    to the NULL comparison operator.
10349	//
10350	//    * CONTAINS : Checks for a subsequence, or value in a set. AttributeValueList
10351	//    can contain only one AttributeValue element of type String, Number, or
10352	//    Binary (not a set type). If the target attribute of the comparison is
10353	//    of type String, then the operator checks for a substring match. If the
10354	//    target attribute of the comparison is of type Binary, then the operator
10355	//    looks for a subsequence of the target that matches the input. If the target
10356	//    attribute of the comparison is a set ("SS", "NS", or "BS"), then the operator
10357	//    evaluates to true if it finds an exact match with any member of the set.
10358	//    CONTAINS is supported for lists: When evaluating "a CONTAINS b", "a" can
10359	//    be a list; however, "b" cannot be a set, a map, or a list.
10360	//
10361	//    * NOT_CONTAINS : Checks for absence of a subsequence, or absence of a
10362	//    value in a set. AttributeValueList can contain only one AttributeValue
10363	//    element of type String, Number, or Binary (not a set type). If the target
10364	//    attribute of the comparison is a String, then the operator checks for
10365	//    the absence of a substring match. If the target attribute of the comparison
10366	//    is Binary, then the operator checks for the absence of a subsequence of
10367	//    the target that matches the input. If the target attribute of the comparison
10368	//    is a set ("SS", "NS", or "BS"), then the operator evaluates to true if
10369	//    it does not find an exact match with any member of the set. NOT_CONTAINS
10370	//    is supported for lists: When evaluating "a NOT CONTAINS b", "a" can be
10371	//    a list; however, "b" cannot be a set, a map, or a list.
10372	//
10373	//    * BEGINS_WITH : Checks for a prefix. AttributeValueList can contain only
10374	//    one AttributeValue of type String or Binary (not a Number or a set type).
10375	//    The target attribute of the comparison must be of type String or Binary
10376	//    (not a Number or a set type).
10377	//
10378	//    * IN : Checks for matching elements in a list. AttributeValueList can
10379	//    contain one or more AttributeValue elements of type String, Number, or
10380	//    Binary. These attributes are compared against an existing attribute of
10381	//    an item. If any elements of the input are equal to the item attribute,
10382	//    the expression evaluates to true.
10383	//
10384	//    * BETWEEN : Greater than or equal to the first value, and less than or
10385	//    equal to the second value. AttributeValueList must contain two AttributeValue
10386	//    elements of the same type, either String, Number, or Binary (not a set
10387	//    type). A target attribute matches if the target value is greater than,
10388	//    or equal to, the first element and less than, or equal to, the second
10389	//    element. If an item contains an AttributeValue element of a different
10390	//    type than the one provided in the request, the value does not match. For
10391	//    example, {"S":"6"} does not compare to {"N":"6"}. Also, {"N":"6"} does
10392	//    not compare to {"NS":["6", "2", "1"]}
10393	ComparisonOperator *string `type:"string" enum:"ComparisonOperator"`
10394
10395	// Causes DynamoDB to evaluate the value before attempting a conditional operation:
10396	//
10397	//    * If Exists is true, DynamoDB will check to see if that attribute value
10398	//    already exists in the table. If it is found, then the operation succeeds.
10399	//    If it is not found, the operation fails with a ConditionCheckFailedException.
10400	//
10401	//    * If Exists is false, DynamoDB assumes that the attribute value does not
10402	//    exist in the table. If in fact the value does not exist, then the assumption
10403	//    is valid and the operation succeeds. If the value is found, despite the
10404	//    assumption that it does not exist, the operation fails with a ConditionCheckFailedException.
10405	//
10406	// The default setting for Exists is true. If you supply a Value all by itself,
10407	// DynamoDB assumes the attribute exists: You don't have to set Exists to true,
10408	// because it is implied.
10409	//
10410	// DynamoDB returns a ValidationException if:
10411	//
10412	//    * Exists is true but there is no Value to check. (You expect a value to
10413	//    exist, but don't specify what that value is.)
10414	//
10415	//    * Exists is false but you also provide a Value. (You cannot expect an
10416	//    attribute to have a value, while also expecting it not to exist.)
10417	Exists *bool `type:"boolean"`
10418
10419	// Represents the data for the expected attribute.
10420	//
10421	// Each attribute value is described as a name-value pair. The name is the data
10422	// type, and the value is the data itself.
10423	//
10424	// For more information, see Data Types (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/HowItWorks.NamingRulesDataTypes.html#HowItWorks.DataTypes)
10425	// in the Amazon DynamoDB Developer Guide.
10426	Value *AttributeValue `type:"structure"`
10427}
10428
10429// String returns the string representation
10430func (s ExpectedAttributeValue) String() string {
10431	return awsutil.Prettify(s)
10432}
10433
10434// GoString returns the string representation
10435func (s ExpectedAttributeValue) GoString() string {
10436	return s.String()
10437}
10438
10439// SetAttributeValueList sets the AttributeValueList field's value.
10440func (s *ExpectedAttributeValue) SetAttributeValueList(v []*AttributeValue) *ExpectedAttributeValue {
10441	s.AttributeValueList = v
10442	return s
10443}
10444
10445// SetComparisonOperator sets the ComparisonOperator field's value.
10446func (s *ExpectedAttributeValue) SetComparisonOperator(v string) *ExpectedAttributeValue {
10447	s.ComparisonOperator = &v
10448	return s
10449}
10450
10451// SetExists sets the Exists field's value.
10452func (s *ExpectedAttributeValue) SetExists(v bool) *ExpectedAttributeValue {
10453	s.Exists = &v
10454	return s
10455}
10456
10457// SetValue sets the Value field's value.
10458func (s *ExpectedAttributeValue) SetValue(v *AttributeValue) *ExpectedAttributeValue {
10459	s.Value = v
10460	return s
10461}
10462
10463// Represents a failure a contributor insights operation.
10464type FailureException struct {
10465	_ struct{} `type:"structure"`
10466
10467	// Description of the failure.
10468	ExceptionDescription *string `type:"string"`
10469
10470	// Exception name.
10471	ExceptionName *string `type:"string"`
10472}
10473
10474// String returns the string representation
10475func (s FailureException) String() string {
10476	return awsutil.Prettify(s)
10477}
10478
10479// GoString returns the string representation
10480func (s FailureException) GoString() string {
10481	return s.String()
10482}
10483
10484// SetExceptionDescription sets the ExceptionDescription field's value.
10485func (s *FailureException) SetExceptionDescription(v string) *FailureException {
10486	s.ExceptionDescription = &v
10487	return s
10488}
10489
10490// SetExceptionName sets the ExceptionName field's value.
10491func (s *FailureException) SetExceptionName(v string) *FailureException {
10492	s.ExceptionName = &v
10493	return s
10494}
10495
10496// Specifies an item and related attribute values to retrieve in a TransactGetItem
10497// object.
10498type Get struct {
10499	_ struct{} `type:"structure"`
10500
10501	// One or more substitution tokens for attribute names in the ProjectionExpression
10502	// parameter.
10503	ExpressionAttributeNames map[string]*string `type:"map"`
10504
10505	// A map of attribute names to AttributeValue objects that specifies the primary
10506	// key of the item to retrieve.
10507	//
10508	// Key is a required field
10509	Key map[string]*AttributeValue `type:"map" required:"true"`
10510
10511	// A string that identifies one or more attributes of the specified item to
10512	// retrieve from the table. The attributes in the expression must be separated
10513	// by commas. If no attribute names are specified, then all attributes of the
10514	// specified item are returned. If any of the requested attributes are not found,
10515	// they do not appear in the result.
10516	ProjectionExpression *string `type:"string"`
10517
10518	// The name of the table from which to retrieve the specified item.
10519	//
10520	// TableName is a required field
10521	TableName *string `min:"3" type:"string" required:"true"`
10522}
10523
10524// String returns the string representation
10525func (s Get) String() string {
10526	return awsutil.Prettify(s)
10527}
10528
10529// GoString returns the string representation
10530func (s Get) GoString() string {
10531	return s.String()
10532}
10533
10534// Validate inspects the fields of the type to determine if they are valid.
10535func (s *Get) Validate() error {
10536	invalidParams := request.ErrInvalidParams{Context: "Get"}
10537	if s.Key == nil {
10538		invalidParams.Add(request.NewErrParamRequired("Key"))
10539	}
10540	if s.TableName == nil {
10541		invalidParams.Add(request.NewErrParamRequired("TableName"))
10542	}
10543	if s.TableName != nil && len(*s.TableName) < 3 {
10544		invalidParams.Add(request.NewErrParamMinLen("TableName", 3))
10545	}
10546
10547	if invalidParams.Len() > 0 {
10548		return invalidParams
10549	}
10550	return nil
10551}
10552
10553// SetExpressionAttributeNames sets the ExpressionAttributeNames field's value.
10554func (s *Get) SetExpressionAttributeNames(v map[string]*string) *Get {
10555	s.ExpressionAttributeNames = v
10556	return s
10557}
10558
10559// SetKey sets the Key field's value.
10560func (s *Get) SetKey(v map[string]*AttributeValue) *Get {
10561	s.Key = v
10562	return s
10563}
10564
10565// SetProjectionExpression sets the ProjectionExpression field's value.
10566func (s *Get) SetProjectionExpression(v string) *Get {
10567	s.ProjectionExpression = &v
10568	return s
10569}
10570
10571// SetTableName sets the TableName field's value.
10572func (s *Get) SetTableName(v string) *Get {
10573	s.TableName = &v
10574	return s
10575}
10576
10577// Represents the input of a GetItem operation.
10578type GetItemInput struct {
10579	_ struct{} `type:"structure"`
10580
10581	// This is a legacy parameter. Use ProjectionExpression instead. For more information,
10582	// see AttributesToGet (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/LegacyConditionalParameters.AttributesToGet.html)
10583	// in the Amazon DynamoDB Developer Guide.
10584	AttributesToGet []*string `min:"1" type:"list"`
10585
10586	// Determines the read consistency model: If set to true, then the operation
10587	// uses strongly consistent reads; otherwise, the operation uses eventually
10588	// consistent reads.
10589	ConsistentRead *bool `type:"boolean"`
10590
10591	// One or more substitution tokens for attribute names in an expression. The
10592	// following are some use cases for using ExpressionAttributeNames:
10593	//
10594	//    * To access an attribute whose name conflicts with a DynamoDB reserved
10595	//    word.
10596	//
10597	//    * To create a placeholder for repeating occurrences of an attribute name
10598	//    in an expression.
10599	//
10600	//    * To prevent special characters in an attribute name from being misinterpreted
10601	//    in an expression.
10602	//
10603	// Use the # character in an expression to dereference an attribute name. For
10604	// example, consider the following attribute name:
10605	//
10606	//    * Percentile
10607	//
10608	// The name of this attribute conflicts with a reserved word, so it cannot be
10609	// used directly in an expression. (For the complete list of reserved words,
10610	// see Reserved Words (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ReservedWords.html)
10611	// in the Amazon DynamoDB Developer Guide). To work around this, you could specify
10612	// the following for ExpressionAttributeNames:
10613	//
10614	//    * {"#P":"Percentile"}
10615	//
10616	// You could then use this substitution in an expression, as in this example:
10617	//
10618	//    * #P = :val
10619	//
10620	// Tokens that begin with the : character are expression attribute values, which
10621	// are placeholders for the actual value at runtime.
10622	//
10623	// For more information on expression attribute names, see Specifying Item Attributes
10624	// (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.AccessingItemAttributes.html)
10625	// in the Amazon DynamoDB Developer Guide.
10626	ExpressionAttributeNames map[string]*string `type:"map"`
10627
10628	// A map of attribute names to AttributeValue objects, representing the primary
10629	// key of the item to retrieve.
10630	//
10631	// For the primary key, you must provide all of the attributes. For example,
10632	// with a simple primary key, you only need to provide a value for the partition
10633	// key. For a composite primary key, you must provide values for both the partition
10634	// key and the sort key.
10635	//
10636	// Key is a required field
10637	Key map[string]*AttributeValue `type:"map" required:"true"`
10638
10639	// A string that identifies one or more attributes to retrieve from the table.
10640	// These attributes can include scalars, sets, or elements of a JSON document.
10641	// The attributes in the expression must be separated by commas.
10642	//
10643	// If no attribute names are specified, then all attributes are returned. If
10644	// any of the requested attributes are not found, they do not appear in the
10645	// result.
10646	//
10647	// For more information, see Specifying Item Attributes (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.AccessingItemAttributes.html)
10648	// in the Amazon DynamoDB Developer Guide.
10649	ProjectionExpression *string `type:"string"`
10650
10651	// Determines the level of detail about provisioned throughput consumption that
10652	// is returned in the response:
10653	//
10654	//    * INDEXES - The response includes the aggregate ConsumedCapacity for the
10655	//    operation, together with ConsumedCapacity for each table and secondary
10656	//    index that was accessed. Note that some operations, such as GetItem and
10657	//    BatchGetItem, do not access any indexes at all. In these cases, specifying
10658	//    INDEXES will only return ConsumedCapacity information for table(s).
10659	//
10660	//    * TOTAL - The response includes only the aggregate ConsumedCapacity for
10661	//    the operation.
10662	//
10663	//    * NONE - No ConsumedCapacity details are included in the response.
10664	ReturnConsumedCapacity *string `type:"string" enum:"ReturnConsumedCapacity"`
10665
10666	// The name of the table containing the requested item.
10667	//
10668	// TableName is a required field
10669	TableName *string `min:"3" type:"string" required:"true"`
10670}
10671
10672// String returns the string representation
10673func (s GetItemInput) String() string {
10674	return awsutil.Prettify(s)
10675}
10676
10677// GoString returns the string representation
10678func (s GetItemInput) GoString() string {
10679	return s.String()
10680}
10681
10682// Validate inspects the fields of the type to determine if they are valid.
10683func (s *GetItemInput) Validate() error {
10684	invalidParams := request.ErrInvalidParams{Context: "GetItemInput"}
10685	if s.AttributesToGet != nil && len(s.AttributesToGet) < 1 {
10686		invalidParams.Add(request.NewErrParamMinLen("AttributesToGet", 1))
10687	}
10688	if s.Key == nil {
10689		invalidParams.Add(request.NewErrParamRequired("Key"))
10690	}
10691	if s.TableName == nil {
10692		invalidParams.Add(request.NewErrParamRequired("TableName"))
10693	}
10694	if s.TableName != nil && len(*s.TableName) < 3 {
10695		invalidParams.Add(request.NewErrParamMinLen("TableName", 3))
10696	}
10697
10698	if invalidParams.Len() > 0 {
10699		return invalidParams
10700	}
10701	return nil
10702}
10703
10704// SetAttributesToGet sets the AttributesToGet field's value.
10705func (s *GetItemInput) SetAttributesToGet(v []*string) *GetItemInput {
10706	s.AttributesToGet = v
10707	return s
10708}
10709
10710// SetConsistentRead sets the ConsistentRead field's value.
10711func (s *GetItemInput) SetConsistentRead(v bool) *GetItemInput {
10712	s.ConsistentRead = &v
10713	return s
10714}
10715
10716// SetExpressionAttributeNames sets the ExpressionAttributeNames field's value.
10717func (s *GetItemInput) SetExpressionAttributeNames(v map[string]*string) *GetItemInput {
10718	s.ExpressionAttributeNames = v
10719	return s
10720}
10721
10722// SetKey sets the Key field's value.
10723func (s *GetItemInput) SetKey(v map[string]*AttributeValue) *GetItemInput {
10724	s.Key = v
10725	return s
10726}
10727
10728// SetProjectionExpression sets the ProjectionExpression field's value.
10729func (s *GetItemInput) SetProjectionExpression(v string) *GetItemInput {
10730	s.ProjectionExpression = &v
10731	return s
10732}
10733
10734// SetReturnConsumedCapacity sets the ReturnConsumedCapacity field's value.
10735func (s *GetItemInput) SetReturnConsumedCapacity(v string) *GetItemInput {
10736	s.ReturnConsumedCapacity = &v
10737	return s
10738}
10739
10740// SetTableName sets the TableName field's value.
10741func (s *GetItemInput) SetTableName(v string) *GetItemInput {
10742	s.TableName = &v
10743	return s
10744}
10745
10746// Represents the output of a GetItem operation.
10747type GetItemOutput struct {
10748	_ struct{} `type:"structure"`
10749
10750	// The capacity units consumed by the GetItem operation. The data returned includes
10751	// the total provisioned throughput consumed, along with statistics for the
10752	// table and any indexes involved in the operation. ConsumedCapacity is only
10753	// returned if the ReturnConsumedCapacity parameter was specified. For more
10754	// information, see Read/Write Capacity Mode (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ProvisionedThroughputIntro.html)
10755	// in the Amazon DynamoDB Developer Guide.
10756	ConsumedCapacity *ConsumedCapacity `type:"structure"`
10757
10758	// A map of attribute names to AttributeValue objects, as specified by ProjectionExpression.
10759	Item map[string]*AttributeValue `type:"map"`
10760}
10761
10762// String returns the string representation
10763func (s GetItemOutput) String() string {
10764	return awsutil.Prettify(s)
10765}
10766
10767// GoString returns the string representation
10768func (s GetItemOutput) GoString() string {
10769	return s.String()
10770}
10771
10772// SetConsumedCapacity sets the ConsumedCapacity field's value.
10773func (s *GetItemOutput) SetConsumedCapacity(v *ConsumedCapacity) *GetItemOutput {
10774	s.ConsumedCapacity = v
10775	return s
10776}
10777
10778// SetItem sets the Item field's value.
10779func (s *GetItemOutput) SetItem(v map[string]*AttributeValue) *GetItemOutput {
10780	s.Item = v
10781	return s
10782}
10783
10784// Represents the properties of a global secondary index.
10785type GlobalSecondaryIndex struct {
10786	_ struct{} `type:"structure"`
10787
10788	// The name of the global secondary index. The name must be unique among all
10789	// other indexes on this table.
10790	//
10791	// IndexName is a required field
10792	IndexName *string `min:"3" type:"string" required:"true"`
10793
10794	// The complete key schema for a global secondary index, which consists of one
10795	// or more pairs of attribute names and key types:
10796	//
10797	//    * HASH - partition key
10798	//
10799	//    * RANGE - sort key
10800	//
10801	// The partition key of an item is also known as its hash attribute. The term
10802	// "hash attribute" derives from DynamoDB's usage of an internal hash function
10803	// to evenly distribute data items across partitions, based on their partition
10804	// key values.
10805	//
10806	// The sort key of an item is also known as its range attribute. The term "range
10807	// attribute" derives from the way DynamoDB stores items with the same partition
10808	// key physically close together, in sorted order by the sort key value.
10809	//
10810	// KeySchema is a required field
10811	KeySchema []*KeySchemaElement `min:"1" type:"list" required:"true"`
10812
10813	// Represents attributes that are copied (projected) from the table into the
10814	// global secondary index. These are in addition to the primary key attributes
10815	// and index key attributes, which are automatically projected.
10816	//
10817	// Projection is a required field
10818	Projection *Projection `type:"structure" required:"true"`
10819
10820	// Represents the provisioned throughput settings for the specified global secondary
10821	// index.
10822	//
10823	// For current minimum and maximum provisioned throughput values, see Limits
10824	// (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Limits.html)
10825	// in the Amazon DynamoDB Developer Guide.
10826	ProvisionedThroughput *ProvisionedThroughput `type:"structure"`
10827}
10828
10829// String returns the string representation
10830func (s GlobalSecondaryIndex) String() string {
10831	return awsutil.Prettify(s)
10832}
10833
10834// GoString returns the string representation
10835func (s GlobalSecondaryIndex) GoString() string {
10836	return s.String()
10837}
10838
10839// Validate inspects the fields of the type to determine if they are valid.
10840func (s *GlobalSecondaryIndex) Validate() error {
10841	invalidParams := request.ErrInvalidParams{Context: "GlobalSecondaryIndex"}
10842	if s.IndexName == nil {
10843		invalidParams.Add(request.NewErrParamRequired("IndexName"))
10844	}
10845	if s.IndexName != nil && len(*s.IndexName) < 3 {
10846		invalidParams.Add(request.NewErrParamMinLen("IndexName", 3))
10847	}
10848	if s.KeySchema == nil {
10849		invalidParams.Add(request.NewErrParamRequired("KeySchema"))
10850	}
10851	if s.KeySchema != nil && len(s.KeySchema) < 1 {
10852		invalidParams.Add(request.NewErrParamMinLen("KeySchema", 1))
10853	}
10854	if s.Projection == nil {
10855		invalidParams.Add(request.NewErrParamRequired("Projection"))
10856	}
10857	if s.KeySchema != nil {
10858		for i, v := range s.KeySchema {
10859			if v == nil {
10860				continue
10861			}
10862			if err := v.Validate(); err != nil {
10863				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "KeySchema", i), err.(request.ErrInvalidParams))
10864			}
10865		}
10866	}
10867	if s.Projection != nil {
10868		if err := s.Projection.Validate(); err != nil {
10869			invalidParams.AddNested("Projection", err.(request.ErrInvalidParams))
10870		}
10871	}
10872	if s.ProvisionedThroughput != nil {
10873		if err := s.ProvisionedThroughput.Validate(); err != nil {
10874			invalidParams.AddNested("ProvisionedThroughput", err.(request.ErrInvalidParams))
10875		}
10876	}
10877
10878	if invalidParams.Len() > 0 {
10879		return invalidParams
10880	}
10881	return nil
10882}
10883
10884// SetIndexName sets the IndexName field's value.
10885func (s *GlobalSecondaryIndex) SetIndexName(v string) *GlobalSecondaryIndex {
10886	s.IndexName = &v
10887	return s
10888}
10889
10890// SetKeySchema sets the KeySchema field's value.
10891func (s *GlobalSecondaryIndex) SetKeySchema(v []*KeySchemaElement) *GlobalSecondaryIndex {
10892	s.KeySchema = v
10893	return s
10894}
10895
10896// SetProjection sets the Projection field's value.
10897func (s *GlobalSecondaryIndex) SetProjection(v *Projection) *GlobalSecondaryIndex {
10898	s.Projection = v
10899	return s
10900}
10901
10902// SetProvisionedThroughput sets the ProvisionedThroughput field's value.
10903func (s *GlobalSecondaryIndex) SetProvisionedThroughput(v *ProvisionedThroughput) *GlobalSecondaryIndex {
10904	s.ProvisionedThroughput = v
10905	return s
10906}
10907
10908// Represents the auto scaling settings of a global secondary index for a global
10909// table that will be modified.
10910type GlobalSecondaryIndexAutoScalingUpdate struct {
10911	_ struct{} `type:"structure"`
10912
10913	// The name of the global secondary index.
10914	IndexName *string `min:"3" type:"string"`
10915
10916	// Represents the auto scaling settings to be modified for a global table or
10917	// global secondary index.
10918	ProvisionedWriteCapacityAutoScalingUpdate *AutoScalingSettingsUpdate `type:"structure"`
10919}
10920
10921// String returns the string representation
10922func (s GlobalSecondaryIndexAutoScalingUpdate) String() string {
10923	return awsutil.Prettify(s)
10924}
10925
10926// GoString returns the string representation
10927func (s GlobalSecondaryIndexAutoScalingUpdate) GoString() string {
10928	return s.String()
10929}
10930
10931// Validate inspects the fields of the type to determine if they are valid.
10932func (s *GlobalSecondaryIndexAutoScalingUpdate) Validate() error {
10933	invalidParams := request.ErrInvalidParams{Context: "GlobalSecondaryIndexAutoScalingUpdate"}
10934	if s.IndexName != nil && len(*s.IndexName) < 3 {
10935		invalidParams.Add(request.NewErrParamMinLen("IndexName", 3))
10936	}
10937	if s.ProvisionedWriteCapacityAutoScalingUpdate != nil {
10938		if err := s.ProvisionedWriteCapacityAutoScalingUpdate.Validate(); err != nil {
10939			invalidParams.AddNested("ProvisionedWriteCapacityAutoScalingUpdate", err.(request.ErrInvalidParams))
10940		}
10941	}
10942
10943	if invalidParams.Len() > 0 {
10944		return invalidParams
10945	}
10946	return nil
10947}
10948
10949// SetIndexName sets the IndexName field's value.
10950func (s *GlobalSecondaryIndexAutoScalingUpdate) SetIndexName(v string) *GlobalSecondaryIndexAutoScalingUpdate {
10951	s.IndexName = &v
10952	return s
10953}
10954
10955// SetProvisionedWriteCapacityAutoScalingUpdate sets the ProvisionedWriteCapacityAutoScalingUpdate field's value.
10956func (s *GlobalSecondaryIndexAutoScalingUpdate) SetProvisionedWriteCapacityAutoScalingUpdate(v *AutoScalingSettingsUpdate) *GlobalSecondaryIndexAutoScalingUpdate {
10957	s.ProvisionedWriteCapacityAutoScalingUpdate = v
10958	return s
10959}
10960
10961// Represents the properties of a global secondary index.
10962type GlobalSecondaryIndexDescription struct {
10963	_ struct{} `type:"structure"`
10964
10965	// Indicates whether the index is currently backfilling. Backfilling is the
10966	// process of reading items from the table and determining whether they can
10967	// be added to the index. (Not all items will qualify: For example, a partition
10968	// key cannot have any duplicate values.) If an item can be added to the index,
10969	// DynamoDB will do so. After all items have been processed, the backfilling
10970	// operation is complete and Backfilling is false.
10971	//
10972	// You can delete an index that is being created during the Backfilling phase
10973	// when IndexStatus is set to CREATING and Backfilling is true. You can't delete
10974	// the index that is being created when IndexStatus is set to CREATING and Backfilling
10975	// is false.
10976	//
10977	// For indexes that were created during a CreateTable operation, the Backfilling
10978	// attribute does not appear in the DescribeTable output.
10979	Backfilling *bool `type:"boolean"`
10980
10981	// The Amazon Resource Name (ARN) that uniquely identifies the index.
10982	IndexArn *string `type:"string"`
10983
10984	// The name of the global secondary index.
10985	IndexName *string `min:"3" type:"string"`
10986
10987	// The total size of the specified index, in bytes. DynamoDB updates this value
10988	// approximately every six hours. Recent changes might not be reflected in this
10989	// value.
10990	IndexSizeBytes *int64 `type:"long"`
10991
10992	// The current state of the global secondary index:
10993	//
10994	//    * CREATING - The index is being created.
10995	//
10996	//    * UPDATING - The index is being updated.
10997	//
10998	//    * DELETING - The index is being deleted.
10999	//
11000	//    * ACTIVE - The index is ready for use.
11001	IndexStatus *string `type:"string" enum:"IndexStatus"`
11002
11003	// The number of items in the specified index. DynamoDB updates this value approximately
11004	// every six hours. Recent changes might not be reflected in this value.
11005	ItemCount *int64 `type:"long"`
11006
11007	// The complete key schema for a global secondary index, which consists of one
11008	// or more pairs of attribute names and key types:
11009	//
11010	//    * HASH - partition key
11011	//
11012	//    * RANGE - sort key
11013	//
11014	// The partition key of an item is also known as its hash attribute. The term
11015	// "hash attribute" derives from DynamoDB's usage of an internal hash function
11016	// to evenly distribute data items across partitions, based on their partition
11017	// key values.
11018	//
11019	// The sort key of an item is also known as its range attribute. The term "range
11020	// attribute" derives from the way DynamoDB stores items with the same partition
11021	// key physically close together, in sorted order by the sort key value.
11022	KeySchema []*KeySchemaElement `min:"1" type:"list"`
11023
11024	// Represents attributes that are copied (projected) from the table into the
11025	// global secondary index. These are in addition to the primary key attributes
11026	// and index key attributes, which are automatically projected.
11027	Projection *Projection `type:"structure"`
11028
11029	// Represents the provisioned throughput settings for the specified global secondary
11030	// index.
11031	//
11032	// For current minimum and maximum provisioned throughput values, see Limits
11033	// (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Limits.html)
11034	// in the Amazon DynamoDB Developer Guide.
11035	ProvisionedThroughput *ProvisionedThroughputDescription `type:"structure"`
11036}
11037
11038// String returns the string representation
11039func (s GlobalSecondaryIndexDescription) String() string {
11040	return awsutil.Prettify(s)
11041}
11042
11043// GoString returns the string representation
11044func (s GlobalSecondaryIndexDescription) GoString() string {
11045	return s.String()
11046}
11047
11048// SetBackfilling sets the Backfilling field's value.
11049func (s *GlobalSecondaryIndexDescription) SetBackfilling(v bool) *GlobalSecondaryIndexDescription {
11050	s.Backfilling = &v
11051	return s
11052}
11053
11054// SetIndexArn sets the IndexArn field's value.
11055func (s *GlobalSecondaryIndexDescription) SetIndexArn(v string) *GlobalSecondaryIndexDescription {
11056	s.IndexArn = &v
11057	return s
11058}
11059
11060// SetIndexName sets the IndexName field's value.
11061func (s *GlobalSecondaryIndexDescription) SetIndexName(v string) *GlobalSecondaryIndexDescription {
11062	s.IndexName = &v
11063	return s
11064}
11065
11066// SetIndexSizeBytes sets the IndexSizeBytes field's value.
11067func (s *GlobalSecondaryIndexDescription) SetIndexSizeBytes(v int64) *GlobalSecondaryIndexDescription {
11068	s.IndexSizeBytes = &v
11069	return s
11070}
11071
11072// SetIndexStatus sets the IndexStatus field's value.
11073func (s *GlobalSecondaryIndexDescription) SetIndexStatus(v string) *GlobalSecondaryIndexDescription {
11074	s.IndexStatus = &v
11075	return s
11076}
11077
11078// SetItemCount sets the ItemCount field's value.
11079func (s *GlobalSecondaryIndexDescription) SetItemCount(v int64) *GlobalSecondaryIndexDescription {
11080	s.ItemCount = &v
11081	return s
11082}
11083
11084// SetKeySchema sets the KeySchema field's value.
11085func (s *GlobalSecondaryIndexDescription) SetKeySchema(v []*KeySchemaElement) *GlobalSecondaryIndexDescription {
11086	s.KeySchema = v
11087	return s
11088}
11089
11090// SetProjection sets the Projection field's value.
11091func (s *GlobalSecondaryIndexDescription) SetProjection(v *Projection) *GlobalSecondaryIndexDescription {
11092	s.Projection = v
11093	return s
11094}
11095
11096// SetProvisionedThroughput sets the ProvisionedThroughput field's value.
11097func (s *GlobalSecondaryIndexDescription) SetProvisionedThroughput(v *ProvisionedThroughputDescription) *GlobalSecondaryIndexDescription {
11098	s.ProvisionedThroughput = v
11099	return s
11100}
11101
11102// Represents the properties of a global secondary index for the table when
11103// the backup was created.
11104type GlobalSecondaryIndexInfo struct {
11105	_ struct{} `type:"structure"`
11106
11107	// The name of the global secondary index.
11108	IndexName *string `min:"3" type:"string"`
11109
11110	// The complete key schema for a global secondary index, which consists of one
11111	// or more pairs of attribute names and key types:
11112	//
11113	//    * HASH - partition key
11114	//
11115	//    * RANGE - sort key
11116	//
11117	// The partition key of an item is also known as its hash attribute. The term
11118	// "hash attribute" derives from DynamoDB's usage of an internal hash function
11119	// to evenly distribute data items across partitions, based on their partition
11120	// key values.
11121	//
11122	// The sort key of an item is also known as its range attribute. The term "range
11123	// attribute" derives from the way DynamoDB stores items with the same partition
11124	// key physically close together, in sorted order by the sort key value.
11125	KeySchema []*KeySchemaElement `min:"1" type:"list"`
11126
11127	// Represents attributes that are copied (projected) from the table into the
11128	// global secondary index. These are in addition to the primary key attributes
11129	// and index key attributes, which are automatically projected.
11130	Projection *Projection `type:"structure"`
11131
11132	// Represents the provisioned throughput settings for the specified global secondary
11133	// index.
11134	ProvisionedThroughput *ProvisionedThroughput `type:"structure"`
11135}
11136
11137// String returns the string representation
11138func (s GlobalSecondaryIndexInfo) String() string {
11139	return awsutil.Prettify(s)
11140}
11141
11142// GoString returns the string representation
11143func (s GlobalSecondaryIndexInfo) GoString() string {
11144	return s.String()
11145}
11146
11147// SetIndexName sets the IndexName field's value.
11148func (s *GlobalSecondaryIndexInfo) SetIndexName(v string) *GlobalSecondaryIndexInfo {
11149	s.IndexName = &v
11150	return s
11151}
11152
11153// SetKeySchema sets the KeySchema field's value.
11154func (s *GlobalSecondaryIndexInfo) SetKeySchema(v []*KeySchemaElement) *GlobalSecondaryIndexInfo {
11155	s.KeySchema = v
11156	return s
11157}
11158
11159// SetProjection sets the Projection field's value.
11160func (s *GlobalSecondaryIndexInfo) SetProjection(v *Projection) *GlobalSecondaryIndexInfo {
11161	s.Projection = v
11162	return s
11163}
11164
11165// SetProvisionedThroughput sets the ProvisionedThroughput field's value.
11166func (s *GlobalSecondaryIndexInfo) SetProvisionedThroughput(v *ProvisionedThroughput) *GlobalSecondaryIndexInfo {
11167	s.ProvisionedThroughput = v
11168	return s
11169}
11170
11171// Represents one of the following:
11172//
11173//    * A new global secondary index to be added to an existing table.
11174//
11175//    * New provisioned throughput parameters for an existing global secondary
11176//    index.
11177//
11178//    * An existing global secondary index to be removed from an existing table.
11179type GlobalSecondaryIndexUpdate struct {
11180	_ struct{} `type:"structure"`
11181
11182	// The parameters required for creating a global secondary index on an existing
11183	// table:
11184	//
11185	//    * IndexName
11186	//
11187	//    * KeySchema
11188	//
11189	//    * AttributeDefinitions
11190	//
11191	//    * Projection
11192	//
11193	//    * ProvisionedThroughput
11194	Create *CreateGlobalSecondaryIndexAction `type:"structure"`
11195
11196	// The name of an existing global secondary index to be removed.
11197	Delete *DeleteGlobalSecondaryIndexAction `type:"structure"`
11198
11199	// The name of an existing global secondary index, along with new provisioned
11200	// throughput settings to be applied to that index.
11201	Update *UpdateGlobalSecondaryIndexAction `type:"structure"`
11202}
11203
11204// String returns the string representation
11205func (s GlobalSecondaryIndexUpdate) String() string {
11206	return awsutil.Prettify(s)
11207}
11208
11209// GoString returns the string representation
11210func (s GlobalSecondaryIndexUpdate) GoString() string {
11211	return s.String()
11212}
11213
11214// Validate inspects the fields of the type to determine if they are valid.
11215func (s *GlobalSecondaryIndexUpdate) Validate() error {
11216	invalidParams := request.ErrInvalidParams{Context: "GlobalSecondaryIndexUpdate"}
11217	if s.Create != nil {
11218		if err := s.Create.Validate(); err != nil {
11219			invalidParams.AddNested("Create", err.(request.ErrInvalidParams))
11220		}
11221	}
11222	if s.Delete != nil {
11223		if err := s.Delete.Validate(); err != nil {
11224			invalidParams.AddNested("Delete", err.(request.ErrInvalidParams))
11225		}
11226	}
11227	if s.Update != nil {
11228		if err := s.Update.Validate(); err != nil {
11229			invalidParams.AddNested("Update", err.(request.ErrInvalidParams))
11230		}
11231	}
11232
11233	if invalidParams.Len() > 0 {
11234		return invalidParams
11235	}
11236	return nil
11237}
11238
11239// SetCreate sets the Create field's value.
11240func (s *GlobalSecondaryIndexUpdate) SetCreate(v *CreateGlobalSecondaryIndexAction) *GlobalSecondaryIndexUpdate {
11241	s.Create = v
11242	return s
11243}
11244
11245// SetDelete sets the Delete field's value.
11246func (s *GlobalSecondaryIndexUpdate) SetDelete(v *DeleteGlobalSecondaryIndexAction) *GlobalSecondaryIndexUpdate {
11247	s.Delete = v
11248	return s
11249}
11250
11251// SetUpdate sets the Update field's value.
11252func (s *GlobalSecondaryIndexUpdate) SetUpdate(v *UpdateGlobalSecondaryIndexAction) *GlobalSecondaryIndexUpdate {
11253	s.Update = v
11254	return s
11255}
11256
11257// Represents the properties of a global table.
11258type GlobalTable struct {
11259	_ struct{} `type:"structure"`
11260
11261	// The global table name.
11262	GlobalTableName *string `min:"3" type:"string"`
11263
11264	// The Regions where the global table has replicas.
11265	ReplicationGroup []*Replica `type:"list"`
11266}
11267
11268// String returns the string representation
11269func (s GlobalTable) String() string {
11270	return awsutil.Prettify(s)
11271}
11272
11273// GoString returns the string representation
11274func (s GlobalTable) GoString() string {
11275	return s.String()
11276}
11277
11278// SetGlobalTableName sets the GlobalTableName field's value.
11279func (s *GlobalTable) SetGlobalTableName(v string) *GlobalTable {
11280	s.GlobalTableName = &v
11281	return s
11282}
11283
11284// SetReplicationGroup sets the ReplicationGroup field's value.
11285func (s *GlobalTable) SetReplicationGroup(v []*Replica) *GlobalTable {
11286	s.ReplicationGroup = v
11287	return s
11288}
11289
11290// The specified global table already exists.
11291type GlobalTableAlreadyExistsException struct {
11292	_            struct{}                  `type:"structure"`
11293	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`
11294
11295	Message_ *string `locationName:"message" type:"string"`
11296}
11297
11298// String returns the string representation
11299func (s GlobalTableAlreadyExistsException) String() string {
11300	return awsutil.Prettify(s)
11301}
11302
11303// GoString returns the string representation
11304func (s GlobalTableAlreadyExistsException) GoString() string {
11305	return s.String()
11306}
11307
11308func newErrorGlobalTableAlreadyExistsException(v protocol.ResponseMetadata) error {
11309	return &GlobalTableAlreadyExistsException{
11310		RespMetadata: v,
11311	}
11312}
11313
11314// Code returns the exception type name.
11315func (s *GlobalTableAlreadyExistsException) Code() string {
11316	return "GlobalTableAlreadyExistsException"
11317}
11318
11319// Message returns the exception's message.
11320func (s *GlobalTableAlreadyExistsException) Message() string {
11321	if s.Message_ != nil {
11322		return *s.Message_
11323	}
11324	return ""
11325}
11326
11327// OrigErr always returns nil, satisfies awserr.Error interface.
11328func (s *GlobalTableAlreadyExistsException) OrigErr() error {
11329	return nil
11330}
11331
11332func (s *GlobalTableAlreadyExistsException) Error() string {
11333	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
11334}
11335
11336// Status code returns the HTTP status code for the request's response error.
11337func (s *GlobalTableAlreadyExistsException) StatusCode() int {
11338	return s.RespMetadata.StatusCode
11339}
11340
11341// RequestID returns the service's response RequestID for request.
11342func (s *GlobalTableAlreadyExistsException) RequestID() string {
11343	return s.RespMetadata.RequestID
11344}
11345
11346// Contains details about the global table.
11347type GlobalTableDescription struct {
11348	_ struct{} `type:"structure"`
11349
11350	// The creation time of the global table.
11351	CreationDateTime *time.Time `type:"timestamp"`
11352
11353	// The unique identifier of the global table.
11354	GlobalTableArn *string `type:"string"`
11355
11356	// The global table name.
11357	GlobalTableName *string `min:"3" type:"string"`
11358
11359	// The current state of the global table:
11360	//
11361	//    * CREATING - The global table is being created.
11362	//
11363	//    * UPDATING - The global table is being updated.
11364	//
11365	//    * DELETING - The global table is being deleted.
11366	//
11367	//    * ACTIVE - The global table is ready for use.
11368	GlobalTableStatus *string `type:"string" enum:"GlobalTableStatus"`
11369
11370	// The Regions where the global table has replicas.
11371	ReplicationGroup []*ReplicaDescription `type:"list"`
11372}
11373
11374// String returns the string representation
11375func (s GlobalTableDescription) String() string {
11376	return awsutil.Prettify(s)
11377}
11378
11379// GoString returns the string representation
11380func (s GlobalTableDescription) GoString() string {
11381	return s.String()
11382}
11383
11384// SetCreationDateTime sets the CreationDateTime field's value.
11385func (s *GlobalTableDescription) SetCreationDateTime(v time.Time) *GlobalTableDescription {
11386	s.CreationDateTime = &v
11387	return s
11388}
11389
11390// SetGlobalTableArn sets the GlobalTableArn field's value.
11391func (s *GlobalTableDescription) SetGlobalTableArn(v string) *GlobalTableDescription {
11392	s.GlobalTableArn = &v
11393	return s
11394}
11395
11396// SetGlobalTableName sets the GlobalTableName field's value.
11397func (s *GlobalTableDescription) SetGlobalTableName(v string) *GlobalTableDescription {
11398	s.GlobalTableName = &v
11399	return s
11400}
11401
11402// SetGlobalTableStatus sets the GlobalTableStatus field's value.
11403func (s *GlobalTableDescription) SetGlobalTableStatus(v string) *GlobalTableDescription {
11404	s.GlobalTableStatus = &v
11405	return s
11406}
11407
11408// SetReplicationGroup sets the ReplicationGroup field's value.
11409func (s *GlobalTableDescription) SetReplicationGroup(v []*ReplicaDescription) *GlobalTableDescription {
11410	s.ReplicationGroup = v
11411	return s
11412}
11413
11414// Represents the settings of a global secondary index for a global table that
11415// will be modified.
11416type GlobalTableGlobalSecondaryIndexSettingsUpdate struct {
11417	_ struct{} `type:"structure"`
11418
11419	// The name of the global secondary index. The name must be unique among all
11420	// other indexes on this table.
11421	//
11422	// IndexName is a required field
11423	IndexName *string `min:"3" type:"string" required:"true"`
11424
11425	// Auto scaling settings for managing a global secondary index's write capacity
11426	// units.
11427	ProvisionedWriteCapacityAutoScalingSettingsUpdate *AutoScalingSettingsUpdate `type:"structure"`
11428
11429	// The maximum number of writes consumed per second before DynamoDB returns
11430	// a ThrottlingException.
11431	ProvisionedWriteCapacityUnits *int64 `min:"1" type:"long"`
11432}
11433
11434// String returns the string representation
11435func (s GlobalTableGlobalSecondaryIndexSettingsUpdate) String() string {
11436	return awsutil.Prettify(s)
11437}
11438
11439// GoString returns the string representation
11440func (s GlobalTableGlobalSecondaryIndexSettingsUpdate) GoString() string {
11441	return s.String()
11442}
11443
11444// Validate inspects the fields of the type to determine if they are valid.
11445func (s *GlobalTableGlobalSecondaryIndexSettingsUpdate) Validate() error {
11446	invalidParams := request.ErrInvalidParams{Context: "GlobalTableGlobalSecondaryIndexSettingsUpdate"}
11447	if s.IndexName == nil {
11448		invalidParams.Add(request.NewErrParamRequired("IndexName"))
11449	}
11450	if s.IndexName != nil && len(*s.IndexName) < 3 {
11451		invalidParams.Add(request.NewErrParamMinLen("IndexName", 3))
11452	}
11453	if s.ProvisionedWriteCapacityUnits != nil && *s.ProvisionedWriteCapacityUnits < 1 {
11454		invalidParams.Add(request.NewErrParamMinValue("ProvisionedWriteCapacityUnits", 1))
11455	}
11456	if s.ProvisionedWriteCapacityAutoScalingSettingsUpdate != nil {
11457		if err := s.ProvisionedWriteCapacityAutoScalingSettingsUpdate.Validate(); err != nil {
11458			invalidParams.AddNested("ProvisionedWriteCapacityAutoScalingSettingsUpdate", err.(request.ErrInvalidParams))
11459		}
11460	}
11461
11462	if invalidParams.Len() > 0 {
11463		return invalidParams
11464	}
11465	return nil
11466}
11467
11468// SetIndexName sets the IndexName field's value.
11469func (s *GlobalTableGlobalSecondaryIndexSettingsUpdate) SetIndexName(v string) *GlobalTableGlobalSecondaryIndexSettingsUpdate {
11470	s.IndexName = &v
11471	return s
11472}
11473
11474// SetProvisionedWriteCapacityAutoScalingSettingsUpdate sets the ProvisionedWriteCapacityAutoScalingSettingsUpdate field's value.
11475func (s *GlobalTableGlobalSecondaryIndexSettingsUpdate) SetProvisionedWriteCapacityAutoScalingSettingsUpdate(v *AutoScalingSettingsUpdate) *GlobalTableGlobalSecondaryIndexSettingsUpdate {
11476	s.ProvisionedWriteCapacityAutoScalingSettingsUpdate = v
11477	return s
11478}
11479
11480// SetProvisionedWriteCapacityUnits sets the ProvisionedWriteCapacityUnits field's value.
11481func (s *GlobalTableGlobalSecondaryIndexSettingsUpdate) SetProvisionedWriteCapacityUnits(v int64) *GlobalTableGlobalSecondaryIndexSettingsUpdate {
11482	s.ProvisionedWriteCapacityUnits = &v
11483	return s
11484}
11485
11486// The specified global table does not exist.
11487type GlobalTableNotFoundException struct {
11488	_            struct{}                  `type:"structure"`
11489	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`
11490
11491	Message_ *string `locationName:"message" type:"string"`
11492}
11493
11494// String returns the string representation
11495func (s GlobalTableNotFoundException) String() string {
11496	return awsutil.Prettify(s)
11497}
11498
11499// GoString returns the string representation
11500func (s GlobalTableNotFoundException) GoString() string {
11501	return s.String()
11502}
11503
11504func newErrorGlobalTableNotFoundException(v protocol.ResponseMetadata) error {
11505	return &GlobalTableNotFoundException{
11506		RespMetadata: v,
11507	}
11508}
11509
11510// Code returns the exception type name.
11511func (s *GlobalTableNotFoundException) Code() string {
11512	return "GlobalTableNotFoundException"
11513}
11514
11515// Message returns the exception's message.
11516func (s *GlobalTableNotFoundException) Message() string {
11517	if s.Message_ != nil {
11518		return *s.Message_
11519	}
11520	return ""
11521}
11522
11523// OrigErr always returns nil, satisfies awserr.Error interface.
11524func (s *GlobalTableNotFoundException) OrigErr() error {
11525	return nil
11526}
11527
11528func (s *GlobalTableNotFoundException) Error() string {
11529	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
11530}
11531
11532// Status code returns the HTTP status code for the request's response error.
11533func (s *GlobalTableNotFoundException) StatusCode() int {
11534	return s.RespMetadata.StatusCode
11535}
11536
11537// RequestID returns the service's response RequestID for request.
11538func (s *GlobalTableNotFoundException) RequestID() string {
11539	return s.RespMetadata.RequestID
11540}
11541
11542// DynamoDB rejected the request because you retried a request with a different
11543// payload but with an idempotent token that was already used.
11544type IdempotentParameterMismatchException struct {
11545	_            struct{}                  `type:"structure"`
11546	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`
11547
11548	Message_ *string `locationName:"Message" type:"string"`
11549}
11550
11551// String returns the string representation
11552func (s IdempotentParameterMismatchException) String() string {
11553	return awsutil.Prettify(s)
11554}
11555
11556// GoString returns the string representation
11557func (s IdempotentParameterMismatchException) GoString() string {
11558	return s.String()
11559}
11560
11561func newErrorIdempotentParameterMismatchException(v protocol.ResponseMetadata) error {
11562	return &IdempotentParameterMismatchException{
11563		RespMetadata: v,
11564	}
11565}
11566
11567// Code returns the exception type name.
11568func (s *IdempotentParameterMismatchException) Code() string {
11569	return "IdempotentParameterMismatchException"
11570}
11571
11572// Message returns the exception's message.
11573func (s *IdempotentParameterMismatchException) Message() string {
11574	if s.Message_ != nil {
11575		return *s.Message_
11576	}
11577	return ""
11578}
11579
11580// OrigErr always returns nil, satisfies awserr.Error interface.
11581func (s *IdempotentParameterMismatchException) OrigErr() error {
11582	return nil
11583}
11584
11585func (s *IdempotentParameterMismatchException) Error() string {
11586	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
11587}
11588
11589// Status code returns the HTTP status code for the request's response error.
11590func (s *IdempotentParameterMismatchException) StatusCode() int {
11591	return s.RespMetadata.StatusCode
11592}
11593
11594// RequestID returns the service's response RequestID for request.
11595func (s *IdempotentParameterMismatchException) RequestID() string {
11596	return s.RespMetadata.RequestID
11597}
11598
11599// The operation tried to access a nonexistent index.
11600type IndexNotFoundException struct {
11601	_            struct{}                  `type:"structure"`
11602	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`
11603
11604	Message_ *string `locationName:"message" type:"string"`
11605}
11606
11607// String returns the string representation
11608func (s IndexNotFoundException) String() string {
11609	return awsutil.Prettify(s)
11610}
11611
11612// GoString returns the string representation
11613func (s IndexNotFoundException) GoString() string {
11614	return s.String()
11615}
11616
11617func newErrorIndexNotFoundException(v protocol.ResponseMetadata) error {
11618	return &IndexNotFoundException{
11619		RespMetadata: v,
11620	}
11621}
11622
11623// Code returns the exception type name.
11624func (s *IndexNotFoundException) Code() string {
11625	return "IndexNotFoundException"
11626}
11627
11628// Message returns the exception's message.
11629func (s *IndexNotFoundException) Message() string {
11630	if s.Message_ != nil {
11631		return *s.Message_
11632	}
11633	return ""
11634}
11635
11636// OrigErr always returns nil, satisfies awserr.Error interface.
11637func (s *IndexNotFoundException) OrigErr() error {
11638	return nil
11639}
11640
11641func (s *IndexNotFoundException) Error() string {
11642	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
11643}
11644
11645// Status code returns the HTTP status code for the request's response error.
11646func (s *IndexNotFoundException) StatusCode() int {
11647	return s.RespMetadata.StatusCode
11648}
11649
11650// RequestID returns the service's response RequestID for request.
11651func (s *IndexNotFoundException) RequestID() string {
11652	return s.RespMetadata.RequestID
11653}
11654
11655// An error occurred on the server side.
11656type InternalServerError struct {
11657	_            struct{}                  `type:"structure"`
11658	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`
11659
11660	// The server encountered an internal error trying to fulfill the request.
11661	Message_ *string `locationName:"message" type:"string"`
11662}
11663
11664// String returns the string representation
11665func (s InternalServerError) String() string {
11666	return awsutil.Prettify(s)
11667}
11668
11669// GoString returns the string representation
11670func (s InternalServerError) GoString() string {
11671	return s.String()
11672}
11673
11674func newErrorInternalServerError(v protocol.ResponseMetadata) error {
11675	return &InternalServerError{
11676		RespMetadata: v,
11677	}
11678}
11679
11680// Code returns the exception type name.
11681func (s *InternalServerError) Code() string {
11682	return "InternalServerError"
11683}
11684
11685// Message returns the exception's message.
11686func (s *InternalServerError) Message() string {
11687	if s.Message_ != nil {
11688		return *s.Message_
11689	}
11690	return ""
11691}
11692
11693// OrigErr always returns nil, satisfies awserr.Error interface.
11694func (s *InternalServerError) OrigErr() error {
11695	return nil
11696}
11697
11698func (s *InternalServerError) Error() string {
11699	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
11700}
11701
11702// Status code returns the HTTP status code for the request's response error.
11703func (s *InternalServerError) StatusCode() int {
11704	return s.RespMetadata.StatusCode
11705}
11706
11707// RequestID returns the service's response RequestID for request.
11708func (s *InternalServerError) RequestID() string {
11709	return s.RespMetadata.RequestID
11710}
11711
11712// An invalid restore time was specified. RestoreDateTime must be between EarliestRestorableDateTime
11713// and LatestRestorableDateTime.
11714type InvalidRestoreTimeException struct {
11715	_            struct{}                  `type:"structure"`
11716	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`
11717
11718	Message_ *string `locationName:"message" type:"string"`
11719}
11720
11721// String returns the string representation
11722func (s InvalidRestoreTimeException) String() string {
11723	return awsutil.Prettify(s)
11724}
11725
11726// GoString returns the string representation
11727func (s InvalidRestoreTimeException) GoString() string {
11728	return s.String()
11729}
11730
11731func newErrorInvalidRestoreTimeException(v protocol.ResponseMetadata) error {
11732	return &InvalidRestoreTimeException{
11733		RespMetadata: v,
11734	}
11735}
11736
11737// Code returns the exception type name.
11738func (s *InvalidRestoreTimeException) Code() string {
11739	return "InvalidRestoreTimeException"
11740}
11741
11742// Message returns the exception's message.
11743func (s *InvalidRestoreTimeException) Message() string {
11744	if s.Message_ != nil {
11745		return *s.Message_
11746	}
11747	return ""
11748}
11749
11750// OrigErr always returns nil, satisfies awserr.Error interface.
11751func (s *InvalidRestoreTimeException) OrigErr() error {
11752	return nil
11753}
11754
11755func (s *InvalidRestoreTimeException) Error() string {
11756	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
11757}
11758
11759// Status code returns the HTTP status code for the request's response error.
11760func (s *InvalidRestoreTimeException) StatusCode() int {
11761	return s.RespMetadata.StatusCode
11762}
11763
11764// RequestID returns the service's response RequestID for request.
11765func (s *InvalidRestoreTimeException) RequestID() string {
11766	return s.RespMetadata.RequestID
11767}
11768
11769// Information about item collections, if any, that were affected by the operation.
11770// ItemCollectionMetrics is only returned if the request asked for it. If the
11771// table does not have any local secondary indexes, this information is not
11772// returned in the response.
11773type ItemCollectionMetrics struct {
11774	_ struct{} `type:"structure"`
11775
11776	// The partition key value of the item collection. This value is the same as
11777	// the partition key value of the item.
11778	ItemCollectionKey map[string]*AttributeValue `type:"map"`
11779
11780	// An estimate of item collection size, in gigabytes. This value is a two-element
11781	// array containing a lower bound and an upper bound for the estimate. The estimate
11782	// includes the size of all the items in the table, plus the size of all attributes
11783	// projected into all of the local secondary indexes on that table. Use this
11784	// estimate to measure whether a local secondary index is approaching its size
11785	// limit.
11786	//
11787	// The estimate is subject to change over time; therefore, do not rely on the
11788	// precision or accuracy of the estimate.
11789	SizeEstimateRangeGB []*float64 `type:"list"`
11790}
11791
11792// String returns the string representation
11793func (s ItemCollectionMetrics) String() string {
11794	return awsutil.Prettify(s)
11795}
11796
11797// GoString returns the string representation
11798func (s ItemCollectionMetrics) GoString() string {
11799	return s.String()
11800}
11801
11802// SetItemCollectionKey sets the ItemCollectionKey field's value.
11803func (s *ItemCollectionMetrics) SetItemCollectionKey(v map[string]*AttributeValue) *ItemCollectionMetrics {
11804	s.ItemCollectionKey = v
11805	return s
11806}
11807
11808// SetSizeEstimateRangeGB sets the SizeEstimateRangeGB field's value.
11809func (s *ItemCollectionMetrics) SetSizeEstimateRangeGB(v []*float64) *ItemCollectionMetrics {
11810	s.SizeEstimateRangeGB = v
11811	return s
11812}
11813
11814// An item collection is too large. This exception is only returned for tables
11815// that have one or more local secondary indexes.
11816type ItemCollectionSizeLimitExceededException struct {
11817	_            struct{}                  `type:"structure"`
11818	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`
11819
11820	// The total size of an item collection has exceeded the maximum limit of 10
11821	// gigabytes.
11822	Message_ *string `locationName:"message" type:"string"`
11823}
11824
11825// String returns the string representation
11826func (s ItemCollectionSizeLimitExceededException) String() string {
11827	return awsutil.Prettify(s)
11828}
11829
11830// GoString returns the string representation
11831func (s ItemCollectionSizeLimitExceededException) GoString() string {
11832	return s.String()
11833}
11834
11835func newErrorItemCollectionSizeLimitExceededException(v protocol.ResponseMetadata) error {
11836	return &ItemCollectionSizeLimitExceededException{
11837		RespMetadata: v,
11838	}
11839}
11840
11841// Code returns the exception type name.
11842func (s *ItemCollectionSizeLimitExceededException) Code() string {
11843	return "ItemCollectionSizeLimitExceededException"
11844}
11845
11846// Message returns the exception's message.
11847func (s *ItemCollectionSizeLimitExceededException) Message() string {
11848	if s.Message_ != nil {
11849		return *s.Message_
11850	}
11851	return ""
11852}
11853
11854// OrigErr always returns nil, satisfies awserr.Error interface.
11855func (s *ItemCollectionSizeLimitExceededException) OrigErr() error {
11856	return nil
11857}
11858
11859func (s *ItemCollectionSizeLimitExceededException) Error() string {
11860	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
11861}
11862
11863// Status code returns the HTTP status code for the request's response error.
11864func (s *ItemCollectionSizeLimitExceededException) StatusCode() int {
11865	return s.RespMetadata.StatusCode
11866}
11867
11868// RequestID returns the service's response RequestID for request.
11869func (s *ItemCollectionSizeLimitExceededException) RequestID() string {
11870	return s.RespMetadata.RequestID
11871}
11872
11873// Details for the requested item.
11874type ItemResponse struct {
11875	_ struct{} `type:"structure"`
11876
11877	// Map of attribute data consisting of the data type and attribute value.
11878	Item map[string]*AttributeValue `type:"map"`
11879}
11880
11881// String returns the string representation
11882func (s ItemResponse) String() string {
11883	return awsutil.Prettify(s)
11884}
11885
11886// GoString returns the string representation
11887func (s ItemResponse) GoString() string {
11888	return s.String()
11889}
11890
11891// SetItem sets the Item field's value.
11892func (s *ItemResponse) SetItem(v map[string]*AttributeValue) *ItemResponse {
11893	s.Item = v
11894	return s
11895}
11896
11897// Represents a single element of a key schema. A key schema specifies the attributes
11898// that make up the primary key of a table, or the key attributes of an index.
11899//
11900// A KeySchemaElement represents exactly one attribute of the primary key. For
11901// example, a simple primary key would be represented by one KeySchemaElement
11902// (for the partition key). A composite primary key would require one KeySchemaElement
11903// for the partition key, and another KeySchemaElement for the sort key.
11904//
11905// A KeySchemaElement must be a scalar, top-level attribute (not a nested attribute).
11906// The data type must be one of String, Number, or Binary. The attribute cannot
11907// be nested within a List or a Map.
11908type KeySchemaElement struct {
11909	_ struct{} `type:"structure"`
11910
11911	// The name of a key attribute.
11912	//
11913	// AttributeName is a required field
11914	AttributeName *string `min:"1" type:"string" required:"true"`
11915
11916	// The role that this key attribute will assume:
11917	//
11918	//    * HASH - partition key
11919	//
11920	//    * RANGE - sort key
11921	//
11922	// The partition key of an item is also known as its hash attribute. The term
11923	// "hash attribute" derives from DynamoDB's usage of an internal hash function
11924	// to evenly distribute data items across partitions, based on their partition
11925	// key values.
11926	//
11927	// The sort key of an item is also known as its range attribute. The term "range
11928	// attribute" derives from the way DynamoDB stores items with the same partition
11929	// key physically close together, in sorted order by the sort key value.
11930	//
11931	// KeyType is a required field
11932	KeyType *string `type:"string" required:"true" enum:"KeyType"`
11933}
11934
11935// String returns the string representation
11936func (s KeySchemaElement) String() string {
11937	return awsutil.Prettify(s)
11938}
11939
11940// GoString returns the string representation
11941func (s KeySchemaElement) GoString() string {
11942	return s.String()
11943}
11944
11945// Validate inspects the fields of the type to determine if they are valid.
11946func (s *KeySchemaElement) Validate() error {
11947	invalidParams := request.ErrInvalidParams{Context: "KeySchemaElement"}
11948	if s.AttributeName == nil {
11949		invalidParams.Add(request.NewErrParamRequired("AttributeName"))
11950	}
11951	if s.AttributeName != nil && len(*s.AttributeName) < 1 {
11952		invalidParams.Add(request.NewErrParamMinLen("AttributeName", 1))
11953	}
11954	if s.KeyType == nil {
11955		invalidParams.Add(request.NewErrParamRequired("KeyType"))
11956	}
11957
11958	if invalidParams.Len() > 0 {
11959		return invalidParams
11960	}
11961	return nil
11962}
11963
11964// SetAttributeName sets the AttributeName field's value.
11965func (s *KeySchemaElement) SetAttributeName(v string) *KeySchemaElement {
11966	s.AttributeName = &v
11967	return s
11968}
11969
11970// SetKeyType sets the KeyType field's value.
11971func (s *KeySchemaElement) SetKeyType(v string) *KeySchemaElement {
11972	s.KeyType = &v
11973	return s
11974}
11975
11976// Represents a set of primary keys and, for each key, the attributes to retrieve
11977// from the table.
11978//
11979// For each primary key, you must provide all of the key attributes. For example,
11980// with a simple primary key, you only need to provide the partition key. For
11981// a composite primary key, you must provide both the partition key and the
11982// sort key.
11983type KeysAndAttributes struct {
11984	_ struct{} `type:"structure"`
11985
11986	// This is a legacy parameter. Use ProjectionExpression instead. For more information,
11987	// see Legacy Conditional Parameters (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/LegacyConditionalParameters.html)
11988	// in the Amazon DynamoDB Developer Guide.
11989	AttributesToGet []*string `min:"1" type:"list"`
11990
11991	// The consistency of a read operation. If set to true, then a strongly consistent
11992	// read is used; otherwise, an eventually consistent read is used.
11993	ConsistentRead *bool `type:"boolean"`
11994
11995	// One or more substitution tokens for attribute names in an expression. The
11996	// following are some use cases for using ExpressionAttributeNames:
11997	//
11998	//    * To access an attribute whose name conflicts with a DynamoDB reserved
11999	//    word.
12000	//
12001	//    * To create a placeholder for repeating occurrences of an attribute name
12002	//    in an expression.
12003	//
12004	//    * To prevent special characters in an attribute name from being misinterpreted
12005	//    in an expression.
12006	//
12007	// Use the # character in an expression to dereference an attribute name. For
12008	// example, consider the following attribute name:
12009	//
12010	//    * Percentile
12011	//
12012	// The name of this attribute conflicts with a reserved word, so it cannot be
12013	// used directly in an expression. (For the complete list of reserved words,
12014	// see Reserved Words (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ReservedWords.html)
12015	// in the Amazon DynamoDB Developer Guide). To work around this, you could specify
12016	// the following for ExpressionAttributeNames:
12017	//
12018	//    * {"#P":"Percentile"}
12019	//
12020	// You could then use this substitution in an expression, as in this example:
12021	//
12022	//    * #P = :val
12023	//
12024	// Tokens that begin with the : character are expression attribute values, which
12025	// are placeholders for the actual value at runtime.
12026	//
12027	// For more information on expression attribute names, see Accessing Item Attributes
12028	// (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.AccessingItemAttributes.html)
12029	// in the Amazon DynamoDB Developer Guide.
12030	ExpressionAttributeNames map[string]*string `type:"map"`
12031
12032	// The primary key attribute values that define the items and the attributes
12033	// associated with the items.
12034	//
12035	// Keys is a required field
12036	Keys []map[string]*AttributeValue `min:"1" type:"list" required:"true"`
12037
12038	// A string that identifies one or more attributes to retrieve from the table.
12039	// These attributes can include scalars, sets, or elements of a JSON document.
12040	// The attributes in the ProjectionExpression must be separated by commas.
12041	//
12042	// If no attribute names are specified, then all attributes will be returned.
12043	// If any of the requested attributes are not found, they will not appear in
12044	// the result.
12045	//
12046	// For more information, see Accessing Item Attributes (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.AccessingItemAttributes.html)
12047	// in the Amazon DynamoDB Developer Guide.
12048	ProjectionExpression *string `type:"string"`
12049}
12050
12051// String returns the string representation
12052func (s KeysAndAttributes) String() string {
12053	return awsutil.Prettify(s)
12054}
12055
12056// GoString returns the string representation
12057func (s KeysAndAttributes) GoString() string {
12058	return s.String()
12059}
12060
12061// Validate inspects the fields of the type to determine if they are valid.
12062func (s *KeysAndAttributes) Validate() error {
12063	invalidParams := request.ErrInvalidParams{Context: "KeysAndAttributes"}
12064	if s.AttributesToGet != nil && len(s.AttributesToGet) < 1 {
12065		invalidParams.Add(request.NewErrParamMinLen("AttributesToGet", 1))
12066	}
12067	if s.Keys == nil {
12068		invalidParams.Add(request.NewErrParamRequired("Keys"))
12069	}
12070	if s.Keys != nil && len(s.Keys) < 1 {
12071		invalidParams.Add(request.NewErrParamMinLen("Keys", 1))
12072	}
12073
12074	if invalidParams.Len() > 0 {
12075		return invalidParams
12076	}
12077	return nil
12078}
12079
12080// SetAttributesToGet sets the AttributesToGet field's value.
12081func (s *KeysAndAttributes) SetAttributesToGet(v []*string) *KeysAndAttributes {
12082	s.AttributesToGet = v
12083	return s
12084}
12085
12086// SetConsistentRead sets the ConsistentRead field's value.
12087func (s *KeysAndAttributes) SetConsistentRead(v bool) *KeysAndAttributes {
12088	s.ConsistentRead = &v
12089	return s
12090}
12091
12092// SetExpressionAttributeNames sets the ExpressionAttributeNames field's value.
12093func (s *KeysAndAttributes) SetExpressionAttributeNames(v map[string]*string) *KeysAndAttributes {
12094	s.ExpressionAttributeNames = v
12095	return s
12096}
12097
12098// SetKeys sets the Keys field's value.
12099func (s *KeysAndAttributes) SetKeys(v []map[string]*AttributeValue) *KeysAndAttributes {
12100	s.Keys = v
12101	return s
12102}
12103
12104// SetProjectionExpression sets the ProjectionExpression field's value.
12105func (s *KeysAndAttributes) SetProjectionExpression(v string) *KeysAndAttributes {
12106	s.ProjectionExpression = &v
12107	return s
12108}
12109
12110// There is no limit to the number of daily on-demand backups that can be taken.
12111//
12112// Up to 50 simultaneous table operations are allowed per account. These operations
12113// include CreateTable, UpdateTable, DeleteTable,UpdateTimeToLive, RestoreTableFromBackup,
12114// and RestoreTableToPointInTime.
12115//
12116// The only exception is when you are creating a table with one or more secondary
12117// indexes. You can have up to 25 such requests running at a time; however,
12118// if the table or index specifications are complex, DynamoDB might temporarily
12119// reduce the number of concurrent operations.
12120//
12121// There is a soft account limit of 256 tables.
12122type LimitExceededException struct {
12123	_            struct{}                  `type:"structure"`
12124	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`
12125
12126	// Too many operations for a given subscriber.
12127	Message_ *string `locationName:"message" type:"string"`
12128}
12129
12130// String returns the string representation
12131func (s LimitExceededException) String() string {
12132	return awsutil.Prettify(s)
12133}
12134
12135// GoString returns the string representation
12136func (s LimitExceededException) GoString() string {
12137	return s.String()
12138}
12139
12140func newErrorLimitExceededException(v protocol.ResponseMetadata) error {
12141	return &LimitExceededException{
12142		RespMetadata: v,
12143	}
12144}
12145
12146// Code returns the exception type name.
12147func (s *LimitExceededException) Code() string {
12148	return "LimitExceededException"
12149}
12150
12151// Message returns the exception's message.
12152func (s *LimitExceededException) Message() string {
12153	if s.Message_ != nil {
12154		return *s.Message_
12155	}
12156	return ""
12157}
12158
12159// OrigErr always returns nil, satisfies awserr.Error interface.
12160func (s *LimitExceededException) OrigErr() error {
12161	return nil
12162}
12163
12164func (s *LimitExceededException) Error() string {
12165	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
12166}
12167
12168// Status code returns the HTTP status code for the request's response error.
12169func (s *LimitExceededException) StatusCode() int {
12170	return s.RespMetadata.StatusCode
12171}
12172
12173// RequestID returns the service's response RequestID for request.
12174func (s *LimitExceededException) RequestID() string {
12175	return s.RespMetadata.RequestID
12176}
12177
12178type ListBackupsInput struct {
12179	_ struct{} `type:"structure"`
12180
12181	// The backups from the table specified by BackupType are listed.
12182	//
12183	// Where BackupType can be:
12184	//
12185	//    * USER - On-demand backup created by you.
12186	//
12187	//    * SYSTEM - On-demand backup automatically created by DynamoDB.
12188	//
12189	//    * ALL - All types of on-demand backups (USER and SYSTEM).
12190	BackupType *string `type:"string" enum:"BackupTypeFilter"`
12191
12192	// LastEvaluatedBackupArn is the Amazon Resource Name (ARN) of the backup last
12193	// evaluated when the current page of results was returned, inclusive of the
12194	// current page of results. This value may be specified as the ExclusiveStartBackupArn
12195	// of a new ListBackups operation in order to fetch the next page of results.
12196	ExclusiveStartBackupArn *string `min:"37" type:"string"`
12197
12198	// Maximum number of backups to return at once.
12199	Limit *int64 `min:"1" type:"integer"`
12200
12201	// The backups from the table specified by TableName are listed.
12202	TableName *string `min:"3" type:"string"`
12203
12204	// Only backups created after this time are listed. TimeRangeLowerBound is inclusive.
12205	TimeRangeLowerBound *time.Time `type:"timestamp"`
12206
12207	// Only backups created before this time are listed. TimeRangeUpperBound is
12208	// exclusive.
12209	TimeRangeUpperBound *time.Time `type:"timestamp"`
12210}
12211
12212// String returns the string representation
12213func (s ListBackupsInput) String() string {
12214	return awsutil.Prettify(s)
12215}
12216
12217// GoString returns the string representation
12218func (s ListBackupsInput) GoString() string {
12219	return s.String()
12220}
12221
12222// Validate inspects the fields of the type to determine if they are valid.
12223func (s *ListBackupsInput) Validate() error {
12224	invalidParams := request.ErrInvalidParams{Context: "ListBackupsInput"}
12225	if s.ExclusiveStartBackupArn != nil && len(*s.ExclusiveStartBackupArn) < 37 {
12226		invalidParams.Add(request.NewErrParamMinLen("ExclusiveStartBackupArn", 37))
12227	}
12228	if s.Limit != nil && *s.Limit < 1 {
12229		invalidParams.Add(request.NewErrParamMinValue("Limit", 1))
12230	}
12231	if s.TableName != nil && len(*s.TableName) < 3 {
12232		invalidParams.Add(request.NewErrParamMinLen("TableName", 3))
12233	}
12234
12235	if invalidParams.Len() > 0 {
12236		return invalidParams
12237	}
12238	return nil
12239}
12240
12241// SetBackupType sets the BackupType field's value.
12242func (s *ListBackupsInput) SetBackupType(v string) *ListBackupsInput {
12243	s.BackupType = &v
12244	return s
12245}
12246
12247// SetExclusiveStartBackupArn sets the ExclusiveStartBackupArn field's value.
12248func (s *ListBackupsInput) SetExclusiveStartBackupArn(v string) *ListBackupsInput {
12249	s.ExclusiveStartBackupArn = &v
12250	return s
12251}
12252
12253// SetLimit sets the Limit field's value.
12254func (s *ListBackupsInput) SetLimit(v int64) *ListBackupsInput {
12255	s.Limit = &v
12256	return s
12257}
12258
12259// SetTableName sets the TableName field's value.
12260func (s *ListBackupsInput) SetTableName(v string) *ListBackupsInput {
12261	s.TableName = &v
12262	return s
12263}
12264
12265// SetTimeRangeLowerBound sets the TimeRangeLowerBound field's value.
12266func (s *ListBackupsInput) SetTimeRangeLowerBound(v time.Time) *ListBackupsInput {
12267	s.TimeRangeLowerBound = &v
12268	return s
12269}
12270
12271// SetTimeRangeUpperBound sets the TimeRangeUpperBound field's value.
12272func (s *ListBackupsInput) SetTimeRangeUpperBound(v time.Time) *ListBackupsInput {
12273	s.TimeRangeUpperBound = &v
12274	return s
12275}
12276
12277type ListBackupsOutput struct {
12278	_ struct{} `type:"structure"`
12279
12280	// List of BackupSummary objects.
12281	BackupSummaries []*BackupSummary `type:"list"`
12282
12283	// The ARN of the backup last evaluated when the current page of results was
12284	// returned, inclusive of the current page of results. This value may be specified
12285	// as the ExclusiveStartBackupArn of a new ListBackups operation in order to
12286	// fetch the next page of results.
12287	//
12288	// If LastEvaluatedBackupArn is empty, then the last page of results has been
12289	// processed and there are no more results to be retrieved.
12290	//
12291	// If LastEvaluatedBackupArn is not empty, this may or may not indicate that
12292	// there is more data to be returned. All results are guaranteed to have been
12293	// returned if and only if no value for LastEvaluatedBackupArn is returned.
12294	LastEvaluatedBackupArn *string `min:"37" type:"string"`
12295}
12296
12297// String returns the string representation
12298func (s ListBackupsOutput) String() string {
12299	return awsutil.Prettify(s)
12300}
12301
12302// GoString returns the string representation
12303func (s ListBackupsOutput) GoString() string {
12304	return s.String()
12305}
12306
12307// SetBackupSummaries sets the BackupSummaries field's value.
12308func (s *ListBackupsOutput) SetBackupSummaries(v []*BackupSummary) *ListBackupsOutput {
12309	s.BackupSummaries = v
12310	return s
12311}
12312
12313// SetLastEvaluatedBackupArn sets the LastEvaluatedBackupArn field's value.
12314func (s *ListBackupsOutput) SetLastEvaluatedBackupArn(v string) *ListBackupsOutput {
12315	s.LastEvaluatedBackupArn = &v
12316	return s
12317}
12318
12319type ListContributorInsightsInput struct {
12320	_ struct{} `type:"structure"`
12321
12322	// Maximum number of results to return per page.
12323	MaxResults *int64 `type:"integer"`
12324
12325	// A token to for the desired page, if there is one.
12326	NextToken *string `type:"string"`
12327
12328	// The name of the table.
12329	TableName *string `min:"3" type:"string"`
12330}
12331
12332// String returns the string representation
12333func (s ListContributorInsightsInput) String() string {
12334	return awsutil.Prettify(s)
12335}
12336
12337// GoString returns the string representation
12338func (s ListContributorInsightsInput) GoString() string {
12339	return s.String()
12340}
12341
12342// Validate inspects the fields of the type to determine if they are valid.
12343func (s *ListContributorInsightsInput) Validate() error {
12344	invalidParams := request.ErrInvalidParams{Context: "ListContributorInsightsInput"}
12345	if s.TableName != nil && len(*s.TableName) < 3 {
12346		invalidParams.Add(request.NewErrParamMinLen("TableName", 3))
12347	}
12348
12349	if invalidParams.Len() > 0 {
12350		return invalidParams
12351	}
12352	return nil
12353}
12354
12355// SetMaxResults sets the MaxResults field's value.
12356func (s *ListContributorInsightsInput) SetMaxResults(v int64) *ListContributorInsightsInput {
12357	s.MaxResults = &v
12358	return s
12359}
12360
12361// SetNextToken sets the NextToken field's value.
12362func (s *ListContributorInsightsInput) SetNextToken(v string) *ListContributorInsightsInput {
12363	s.NextToken = &v
12364	return s
12365}
12366
12367// SetTableName sets the TableName field's value.
12368func (s *ListContributorInsightsInput) SetTableName(v string) *ListContributorInsightsInput {
12369	s.TableName = &v
12370	return s
12371}
12372
12373type ListContributorInsightsOutput struct {
12374	_ struct{} `type:"structure"`
12375
12376	// A list of ContributorInsightsSummary.
12377	ContributorInsightsSummaries []*ContributorInsightsSummary `type:"list"`
12378
12379	// A token to go to the next page if there is one.
12380	NextToken *string `type:"string"`
12381}
12382
12383// String returns the string representation
12384func (s ListContributorInsightsOutput) String() string {
12385	return awsutil.Prettify(s)
12386}
12387
12388// GoString returns the string representation
12389func (s ListContributorInsightsOutput) GoString() string {
12390	return s.String()
12391}
12392
12393// SetContributorInsightsSummaries sets the ContributorInsightsSummaries field's value.
12394func (s *ListContributorInsightsOutput) SetContributorInsightsSummaries(v []*ContributorInsightsSummary) *ListContributorInsightsOutput {
12395	s.ContributorInsightsSummaries = v
12396	return s
12397}
12398
12399// SetNextToken sets the NextToken field's value.
12400func (s *ListContributorInsightsOutput) SetNextToken(v string) *ListContributorInsightsOutput {
12401	s.NextToken = &v
12402	return s
12403}
12404
12405type ListGlobalTablesInput struct {
12406	_ struct{} `type:"structure"`
12407
12408	// The first global table name that this operation will evaluate.
12409	ExclusiveStartGlobalTableName *string `min:"3" type:"string"`
12410
12411	// The maximum number of table names to return, if the parameter is not specified
12412	// DynamoDB defaults to 100.
12413	//
12414	// If the number of global tables DynamoDB finds reaches this limit, it stops
12415	// the operation and returns the table names collected up to that point, with
12416	// a table name in the LastEvaluatedGlobalTableName to apply in a subsequent
12417	// operation to the ExclusiveStartGlobalTableName parameter.
12418	Limit *int64 `min:"1" type:"integer"`
12419
12420	// Lists the global tables in a specific Region.
12421	RegionName *string `type:"string"`
12422}
12423
12424// String returns the string representation
12425func (s ListGlobalTablesInput) String() string {
12426	return awsutil.Prettify(s)
12427}
12428
12429// GoString returns the string representation
12430func (s ListGlobalTablesInput) GoString() string {
12431	return s.String()
12432}
12433
12434// Validate inspects the fields of the type to determine if they are valid.
12435func (s *ListGlobalTablesInput) Validate() error {
12436	invalidParams := request.ErrInvalidParams{Context: "ListGlobalTablesInput"}
12437	if s.ExclusiveStartGlobalTableName != nil && len(*s.ExclusiveStartGlobalTableName) < 3 {
12438		invalidParams.Add(request.NewErrParamMinLen("ExclusiveStartGlobalTableName", 3))
12439	}
12440	if s.Limit != nil && *s.Limit < 1 {
12441		invalidParams.Add(request.NewErrParamMinValue("Limit", 1))
12442	}
12443
12444	if invalidParams.Len() > 0 {
12445		return invalidParams
12446	}
12447	return nil
12448}
12449
12450// SetExclusiveStartGlobalTableName sets the ExclusiveStartGlobalTableName field's value.
12451func (s *ListGlobalTablesInput) SetExclusiveStartGlobalTableName(v string) *ListGlobalTablesInput {
12452	s.ExclusiveStartGlobalTableName = &v
12453	return s
12454}
12455
12456// SetLimit sets the Limit field's value.
12457func (s *ListGlobalTablesInput) SetLimit(v int64) *ListGlobalTablesInput {
12458	s.Limit = &v
12459	return s
12460}
12461
12462// SetRegionName sets the RegionName field's value.
12463func (s *ListGlobalTablesInput) SetRegionName(v string) *ListGlobalTablesInput {
12464	s.RegionName = &v
12465	return s
12466}
12467
12468type ListGlobalTablesOutput struct {
12469	_ struct{} `type:"structure"`
12470
12471	// List of global table names.
12472	GlobalTables []*GlobalTable `type:"list"`
12473
12474	// Last evaluated global table name.
12475	LastEvaluatedGlobalTableName *string `min:"3" type:"string"`
12476}
12477
12478// String returns the string representation
12479func (s ListGlobalTablesOutput) String() string {
12480	return awsutil.Prettify(s)
12481}
12482
12483// GoString returns the string representation
12484func (s ListGlobalTablesOutput) GoString() string {
12485	return s.String()
12486}
12487
12488// SetGlobalTables sets the GlobalTables field's value.
12489func (s *ListGlobalTablesOutput) SetGlobalTables(v []*GlobalTable) *ListGlobalTablesOutput {
12490	s.GlobalTables = v
12491	return s
12492}
12493
12494// SetLastEvaluatedGlobalTableName sets the LastEvaluatedGlobalTableName field's value.
12495func (s *ListGlobalTablesOutput) SetLastEvaluatedGlobalTableName(v string) *ListGlobalTablesOutput {
12496	s.LastEvaluatedGlobalTableName = &v
12497	return s
12498}
12499
12500// Represents the input of a ListTables operation.
12501type ListTablesInput struct {
12502	_ struct{} `type:"structure"`
12503
12504	// The first table name that this operation will evaluate. Use the value that
12505	// was returned for LastEvaluatedTableName in a previous operation, so that
12506	// you can obtain the next page of results.
12507	ExclusiveStartTableName *string `min:"3" type:"string"`
12508
12509	// A maximum number of table names to return. If this parameter is not specified,
12510	// the limit is 100.
12511	Limit *int64 `min:"1" type:"integer"`
12512}
12513
12514// String returns the string representation
12515func (s ListTablesInput) String() string {
12516	return awsutil.Prettify(s)
12517}
12518
12519// GoString returns the string representation
12520func (s ListTablesInput) GoString() string {
12521	return s.String()
12522}
12523
12524// Validate inspects the fields of the type to determine if they are valid.
12525func (s *ListTablesInput) Validate() error {
12526	invalidParams := request.ErrInvalidParams{Context: "ListTablesInput"}
12527	if s.ExclusiveStartTableName != nil && len(*s.ExclusiveStartTableName) < 3 {
12528		invalidParams.Add(request.NewErrParamMinLen("ExclusiveStartTableName", 3))
12529	}
12530	if s.Limit != nil && *s.Limit < 1 {
12531		invalidParams.Add(request.NewErrParamMinValue("Limit", 1))
12532	}
12533
12534	if invalidParams.Len() > 0 {
12535		return invalidParams
12536	}
12537	return nil
12538}
12539
12540// SetExclusiveStartTableName sets the ExclusiveStartTableName field's value.
12541func (s *ListTablesInput) SetExclusiveStartTableName(v string) *ListTablesInput {
12542	s.ExclusiveStartTableName = &v
12543	return s
12544}
12545
12546// SetLimit sets the Limit field's value.
12547func (s *ListTablesInput) SetLimit(v int64) *ListTablesInput {
12548	s.Limit = &v
12549	return s
12550}
12551
12552// Represents the output of a ListTables operation.
12553type ListTablesOutput struct {
12554	_ struct{} `type:"structure"`
12555
12556	// The name of the last table in the current page of results. Use this value
12557	// as the ExclusiveStartTableName in a new request to obtain the next page of
12558	// results, until all the table names are returned.
12559	//
12560	// If you do not receive a LastEvaluatedTableName value in the response, this
12561	// means that there are no more table names to be retrieved.
12562	LastEvaluatedTableName *string `min:"3" type:"string"`
12563
12564	// The names of the tables associated with the current account at the current
12565	// endpoint. The maximum size of this array is 100.
12566	//
12567	// If LastEvaluatedTableName also appears in the output, you can use this value
12568	// as the ExclusiveStartTableName parameter in a subsequent ListTables request
12569	// and obtain the next page of results.
12570	TableNames []*string `type:"list"`
12571}
12572
12573// String returns the string representation
12574func (s ListTablesOutput) String() string {
12575	return awsutil.Prettify(s)
12576}
12577
12578// GoString returns the string representation
12579func (s ListTablesOutput) GoString() string {
12580	return s.String()
12581}
12582
12583// SetLastEvaluatedTableName sets the LastEvaluatedTableName field's value.
12584func (s *ListTablesOutput) SetLastEvaluatedTableName(v string) *ListTablesOutput {
12585	s.LastEvaluatedTableName = &v
12586	return s
12587}
12588
12589// SetTableNames sets the TableNames field's value.
12590func (s *ListTablesOutput) SetTableNames(v []*string) *ListTablesOutput {
12591	s.TableNames = v
12592	return s
12593}
12594
12595type ListTagsOfResourceInput struct {
12596	_ struct{} `type:"structure"`
12597
12598	// An optional string that, if supplied, must be copied from the output of a
12599	// previous call to ListTagOfResource. When provided in this manner, this API
12600	// fetches the next page of results.
12601	NextToken *string `type:"string"`
12602
12603	// The Amazon DynamoDB resource with tags to be listed. This value is an Amazon
12604	// Resource Name (ARN).
12605	//
12606	// ResourceArn is a required field
12607	ResourceArn *string `min:"1" type:"string" required:"true"`
12608}
12609
12610// String returns the string representation
12611func (s ListTagsOfResourceInput) String() string {
12612	return awsutil.Prettify(s)
12613}
12614
12615// GoString returns the string representation
12616func (s ListTagsOfResourceInput) GoString() string {
12617	return s.String()
12618}
12619
12620// Validate inspects the fields of the type to determine if they are valid.
12621func (s *ListTagsOfResourceInput) Validate() error {
12622	invalidParams := request.ErrInvalidParams{Context: "ListTagsOfResourceInput"}
12623	if s.ResourceArn == nil {
12624		invalidParams.Add(request.NewErrParamRequired("ResourceArn"))
12625	}
12626	if s.ResourceArn != nil && len(*s.ResourceArn) < 1 {
12627		invalidParams.Add(request.NewErrParamMinLen("ResourceArn", 1))
12628	}
12629
12630	if invalidParams.Len() > 0 {
12631		return invalidParams
12632	}
12633	return nil
12634}
12635
12636// SetNextToken sets the NextToken field's value.
12637func (s *ListTagsOfResourceInput) SetNextToken(v string) *ListTagsOfResourceInput {
12638	s.NextToken = &v
12639	return s
12640}
12641
12642// SetResourceArn sets the ResourceArn field's value.
12643func (s *ListTagsOfResourceInput) SetResourceArn(v string) *ListTagsOfResourceInput {
12644	s.ResourceArn = &v
12645	return s
12646}
12647
12648type ListTagsOfResourceOutput struct {
12649	_ struct{} `type:"structure"`
12650
12651	// If this value is returned, there are additional results to be displayed.
12652	// To retrieve them, call ListTagsOfResource again, with NextToken set to this
12653	// value.
12654	NextToken *string `type:"string"`
12655
12656	// The tags currently associated with the Amazon DynamoDB resource.
12657	Tags []*Tag `type:"list"`
12658}
12659
12660// String returns the string representation
12661func (s ListTagsOfResourceOutput) String() string {
12662	return awsutil.Prettify(s)
12663}
12664
12665// GoString returns the string representation
12666func (s ListTagsOfResourceOutput) GoString() string {
12667	return s.String()
12668}
12669
12670// SetNextToken sets the NextToken field's value.
12671func (s *ListTagsOfResourceOutput) SetNextToken(v string) *ListTagsOfResourceOutput {
12672	s.NextToken = &v
12673	return s
12674}
12675
12676// SetTags sets the Tags field's value.
12677func (s *ListTagsOfResourceOutput) SetTags(v []*Tag) *ListTagsOfResourceOutput {
12678	s.Tags = v
12679	return s
12680}
12681
12682// Represents the properties of a local secondary index.
12683type LocalSecondaryIndex struct {
12684	_ struct{} `type:"structure"`
12685
12686	// The name of the local secondary index. The name must be unique among all
12687	// other indexes on this table.
12688	//
12689	// IndexName is a required field
12690	IndexName *string `min:"3" type:"string" required:"true"`
12691
12692	// The complete key schema for the local secondary index, consisting of one
12693	// or more pairs of attribute names and key types:
12694	//
12695	//    * HASH - partition key
12696	//
12697	//    * RANGE - sort key
12698	//
12699	// The partition key of an item is also known as its hash attribute. The term
12700	// "hash attribute" derives from DynamoDB's usage of an internal hash function
12701	// to evenly distribute data items across partitions, based on their partition
12702	// key values.
12703	//
12704	// The sort key of an item is also known as its range attribute. The term "range
12705	// attribute" derives from the way DynamoDB stores items with the same partition
12706	// key physically close together, in sorted order by the sort key value.
12707	//
12708	// KeySchema is a required field
12709	KeySchema []*KeySchemaElement `min:"1" type:"list" required:"true"`
12710
12711	// Represents attributes that are copied (projected) from the table into the
12712	// local secondary index. These are in addition to the primary key attributes
12713	// and index key attributes, which are automatically projected.
12714	//
12715	// Projection is a required field
12716	Projection *Projection `type:"structure" required:"true"`
12717}
12718
12719// String returns the string representation
12720func (s LocalSecondaryIndex) String() string {
12721	return awsutil.Prettify(s)
12722}
12723
12724// GoString returns the string representation
12725func (s LocalSecondaryIndex) GoString() string {
12726	return s.String()
12727}
12728
12729// Validate inspects the fields of the type to determine if they are valid.
12730func (s *LocalSecondaryIndex) Validate() error {
12731	invalidParams := request.ErrInvalidParams{Context: "LocalSecondaryIndex"}
12732	if s.IndexName == nil {
12733		invalidParams.Add(request.NewErrParamRequired("IndexName"))
12734	}
12735	if s.IndexName != nil && len(*s.IndexName) < 3 {
12736		invalidParams.Add(request.NewErrParamMinLen("IndexName", 3))
12737	}
12738	if s.KeySchema == nil {
12739		invalidParams.Add(request.NewErrParamRequired("KeySchema"))
12740	}
12741	if s.KeySchema != nil && len(s.KeySchema) < 1 {
12742		invalidParams.Add(request.NewErrParamMinLen("KeySchema", 1))
12743	}
12744	if s.Projection == nil {
12745		invalidParams.Add(request.NewErrParamRequired("Projection"))
12746	}
12747	if s.KeySchema != nil {
12748		for i, v := range s.KeySchema {
12749			if v == nil {
12750				continue
12751			}
12752			if err := v.Validate(); err != nil {
12753				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "KeySchema", i), err.(request.ErrInvalidParams))
12754			}
12755		}
12756	}
12757	if s.Projection != nil {
12758		if err := s.Projection.Validate(); err != nil {
12759			invalidParams.AddNested("Projection", err.(request.ErrInvalidParams))
12760		}
12761	}
12762
12763	if invalidParams.Len() > 0 {
12764		return invalidParams
12765	}
12766	return nil
12767}
12768
12769// SetIndexName sets the IndexName field's value.
12770func (s *LocalSecondaryIndex) SetIndexName(v string) *LocalSecondaryIndex {
12771	s.IndexName = &v
12772	return s
12773}
12774
12775// SetKeySchema sets the KeySchema field's value.
12776func (s *LocalSecondaryIndex) SetKeySchema(v []*KeySchemaElement) *LocalSecondaryIndex {
12777	s.KeySchema = v
12778	return s
12779}
12780
12781// SetProjection sets the Projection field's value.
12782func (s *LocalSecondaryIndex) SetProjection(v *Projection) *LocalSecondaryIndex {
12783	s.Projection = v
12784	return s
12785}
12786
12787// Represents the properties of a local secondary index.
12788type LocalSecondaryIndexDescription struct {
12789	_ struct{} `type:"structure"`
12790
12791	// The Amazon Resource Name (ARN) that uniquely identifies the index.
12792	IndexArn *string `type:"string"`
12793
12794	// Represents the name of the local secondary index.
12795	IndexName *string `min:"3" type:"string"`
12796
12797	// The total size of the specified index, in bytes. DynamoDB updates this value
12798	// approximately every six hours. Recent changes might not be reflected in this
12799	// value.
12800	IndexSizeBytes *int64 `type:"long"`
12801
12802	// The number of items in the specified index. DynamoDB updates this value approximately
12803	// every six hours. Recent changes might not be reflected in this value.
12804	ItemCount *int64 `type:"long"`
12805
12806	// The complete key schema for the local secondary index, consisting of one
12807	// or more pairs of attribute names and key types:
12808	//
12809	//    * HASH - partition key
12810	//
12811	//    * RANGE - sort key
12812	//
12813	// The partition key of an item is also known as its hash attribute. The term
12814	// "hash attribute" derives from DynamoDB's usage of an internal hash function
12815	// to evenly distribute data items across partitions, based on their partition
12816	// key values.
12817	//
12818	// The sort key of an item is also known as its range attribute. The term "range
12819	// attribute" derives from the way DynamoDB stores items with the same partition
12820	// key physically close together, in sorted order by the sort key value.
12821	KeySchema []*KeySchemaElement `min:"1" type:"list"`
12822
12823	// Represents attributes that are copied (projected) from the table into the
12824	// global secondary index. These are in addition to the primary key attributes
12825	// and index key attributes, which are automatically projected.
12826	Projection *Projection `type:"structure"`
12827}
12828
12829// String returns the string representation
12830func (s LocalSecondaryIndexDescription) String() string {
12831	return awsutil.Prettify(s)
12832}
12833
12834// GoString returns the string representation
12835func (s LocalSecondaryIndexDescription) GoString() string {
12836	return s.String()
12837}
12838
12839// SetIndexArn sets the IndexArn field's value.
12840func (s *LocalSecondaryIndexDescription) SetIndexArn(v string) *LocalSecondaryIndexDescription {
12841	s.IndexArn = &v
12842	return s
12843}
12844
12845// SetIndexName sets the IndexName field's value.
12846func (s *LocalSecondaryIndexDescription) SetIndexName(v string) *LocalSecondaryIndexDescription {
12847	s.IndexName = &v
12848	return s
12849}
12850
12851// SetIndexSizeBytes sets the IndexSizeBytes field's value.
12852func (s *LocalSecondaryIndexDescription) SetIndexSizeBytes(v int64) *LocalSecondaryIndexDescription {
12853	s.IndexSizeBytes = &v
12854	return s
12855}
12856
12857// SetItemCount sets the ItemCount field's value.
12858func (s *LocalSecondaryIndexDescription) SetItemCount(v int64) *LocalSecondaryIndexDescription {
12859	s.ItemCount = &v
12860	return s
12861}
12862
12863// SetKeySchema sets the KeySchema field's value.
12864func (s *LocalSecondaryIndexDescription) SetKeySchema(v []*KeySchemaElement) *LocalSecondaryIndexDescription {
12865	s.KeySchema = v
12866	return s
12867}
12868
12869// SetProjection sets the Projection field's value.
12870func (s *LocalSecondaryIndexDescription) SetProjection(v *Projection) *LocalSecondaryIndexDescription {
12871	s.Projection = v
12872	return s
12873}
12874
12875// Represents the properties of a local secondary index for the table when the
12876// backup was created.
12877type LocalSecondaryIndexInfo struct {
12878	_ struct{} `type:"structure"`
12879
12880	// Represents the name of the local secondary index.
12881	IndexName *string `min:"3" type:"string"`
12882
12883	// The complete key schema for a local secondary index, which consists of one
12884	// or more pairs of attribute names and key types:
12885	//
12886	//    * HASH - partition key
12887	//
12888	//    * RANGE - sort key
12889	//
12890	// The partition key of an item is also known as its hash attribute. The term
12891	// "hash attribute" derives from DynamoDB's usage of an internal hash function
12892	// to evenly distribute data items across partitions, based on their partition
12893	// key values.
12894	//
12895	// The sort key of an item is also known as its range attribute. The term "range
12896	// attribute" derives from the way DynamoDB stores items with the same partition
12897	// key physically close together, in sorted order by the sort key value.
12898	KeySchema []*KeySchemaElement `min:"1" type:"list"`
12899
12900	// Represents attributes that are copied (projected) from the table into the
12901	// global secondary index. These are in addition to the primary key attributes
12902	// and index key attributes, which are automatically projected.
12903	Projection *Projection `type:"structure"`
12904}
12905
12906// String returns the string representation
12907func (s LocalSecondaryIndexInfo) String() string {
12908	return awsutil.Prettify(s)
12909}
12910
12911// GoString returns the string representation
12912func (s LocalSecondaryIndexInfo) GoString() string {
12913	return s.String()
12914}
12915
12916// SetIndexName sets the IndexName field's value.
12917func (s *LocalSecondaryIndexInfo) SetIndexName(v string) *LocalSecondaryIndexInfo {
12918	s.IndexName = &v
12919	return s
12920}
12921
12922// SetKeySchema sets the KeySchema field's value.
12923func (s *LocalSecondaryIndexInfo) SetKeySchema(v []*KeySchemaElement) *LocalSecondaryIndexInfo {
12924	s.KeySchema = v
12925	return s
12926}
12927
12928// SetProjection sets the Projection field's value.
12929func (s *LocalSecondaryIndexInfo) SetProjection(v *Projection) *LocalSecondaryIndexInfo {
12930	s.Projection = v
12931	return s
12932}
12933
12934// The description of the point in time settings applied to the table.
12935type PointInTimeRecoveryDescription struct {
12936	_ struct{} `type:"structure"`
12937
12938	// Specifies the earliest point in time you can restore your table to. You can
12939	// restore your table to any point in time during the last 35 days.
12940	EarliestRestorableDateTime *time.Time `type:"timestamp"`
12941
12942	// LatestRestorableDateTime is typically 5 minutes before the current time.
12943	LatestRestorableDateTime *time.Time `type:"timestamp"`
12944
12945	// The current state of point in time recovery:
12946	//
12947	//    * ENABLING - Point in time recovery is being enabled.
12948	//
12949	//    * ENABLED - Point in time recovery is enabled.
12950	//
12951	//    * DISABLED - Point in time recovery is disabled.
12952	PointInTimeRecoveryStatus *string `type:"string" enum:"PointInTimeRecoveryStatus"`
12953}
12954
12955// String returns the string representation
12956func (s PointInTimeRecoveryDescription) String() string {
12957	return awsutil.Prettify(s)
12958}
12959
12960// GoString returns the string representation
12961func (s PointInTimeRecoveryDescription) GoString() string {
12962	return s.String()
12963}
12964
12965// SetEarliestRestorableDateTime sets the EarliestRestorableDateTime field's value.
12966func (s *PointInTimeRecoveryDescription) SetEarliestRestorableDateTime(v time.Time) *PointInTimeRecoveryDescription {
12967	s.EarliestRestorableDateTime = &v
12968	return s
12969}
12970
12971// SetLatestRestorableDateTime sets the LatestRestorableDateTime field's value.
12972func (s *PointInTimeRecoveryDescription) SetLatestRestorableDateTime(v time.Time) *PointInTimeRecoveryDescription {
12973	s.LatestRestorableDateTime = &v
12974	return s
12975}
12976
12977// SetPointInTimeRecoveryStatus sets the PointInTimeRecoveryStatus field's value.
12978func (s *PointInTimeRecoveryDescription) SetPointInTimeRecoveryStatus(v string) *PointInTimeRecoveryDescription {
12979	s.PointInTimeRecoveryStatus = &v
12980	return s
12981}
12982
12983// Represents the settings used to enable point in time recovery.
12984type PointInTimeRecoverySpecification struct {
12985	_ struct{} `type:"structure"`
12986
12987	// Indicates whether point in time recovery is enabled (true) or disabled (false)
12988	// on the table.
12989	//
12990	// PointInTimeRecoveryEnabled is a required field
12991	PointInTimeRecoveryEnabled *bool `type:"boolean" required:"true"`
12992}
12993
12994// String returns the string representation
12995func (s PointInTimeRecoverySpecification) String() string {
12996	return awsutil.Prettify(s)
12997}
12998
12999// GoString returns the string representation
13000func (s PointInTimeRecoverySpecification) GoString() string {
13001	return s.String()
13002}
13003
13004// Validate inspects the fields of the type to determine if they are valid.
13005func (s *PointInTimeRecoverySpecification) Validate() error {
13006	invalidParams := request.ErrInvalidParams{Context: "PointInTimeRecoverySpecification"}
13007	if s.PointInTimeRecoveryEnabled == nil {
13008		invalidParams.Add(request.NewErrParamRequired("PointInTimeRecoveryEnabled"))
13009	}
13010
13011	if invalidParams.Len() > 0 {
13012		return invalidParams
13013	}
13014	return nil
13015}
13016
13017// SetPointInTimeRecoveryEnabled sets the PointInTimeRecoveryEnabled field's value.
13018func (s *PointInTimeRecoverySpecification) SetPointInTimeRecoveryEnabled(v bool) *PointInTimeRecoverySpecification {
13019	s.PointInTimeRecoveryEnabled = &v
13020	return s
13021}
13022
13023// Point in time recovery has not yet been enabled for this source table.
13024type PointInTimeRecoveryUnavailableException struct {
13025	_            struct{}                  `type:"structure"`
13026	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`
13027
13028	Message_ *string `locationName:"message" type:"string"`
13029}
13030
13031// String returns the string representation
13032func (s PointInTimeRecoveryUnavailableException) String() string {
13033	return awsutil.Prettify(s)
13034}
13035
13036// GoString returns the string representation
13037func (s PointInTimeRecoveryUnavailableException) GoString() string {
13038	return s.String()
13039}
13040
13041func newErrorPointInTimeRecoveryUnavailableException(v protocol.ResponseMetadata) error {
13042	return &PointInTimeRecoveryUnavailableException{
13043		RespMetadata: v,
13044	}
13045}
13046
13047// Code returns the exception type name.
13048func (s *PointInTimeRecoveryUnavailableException) Code() string {
13049	return "PointInTimeRecoveryUnavailableException"
13050}
13051
13052// Message returns the exception's message.
13053func (s *PointInTimeRecoveryUnavailableException) Message() string {
13054	if s.Message_ != nil {
13055		return *s.Message_
13056	}
13057	return ""
13058}
13059
13060// OrigErr always returns nil, satisfies awserr.Error interface.
13061func (s *PointInTimeRecoveryUnavailableException) OrigErr() error {
13062	return nil
13063}
13064
13065func (s *PointInTimeRecoveryUnavailableException) Error() string {
13066	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
13067}
13068
13069// Status code returns the HTTP status code for the request's response error.
13070func (s *PointInTimeRecoveryUnavailableException) StatusCode() int {
13071	return s.RespMetadata.StatusCode
13072}
13073
13074// RequestID returns the service's response RequestID for request.
13075func (s *PointInTimeRecoveryUnavailableException) RequestID() string {
13076	return s.RespMetadata.RequestID
13077}
13078
13079// Represents attributes that are copied (projected) from the table into an
13080// index. These are in addition to the primary key attributes and index key
13081// attributes, which are automatically projected.
13082type Projection struct {
13083	_ struct{} `type:"structure"`
13084
13085	// Represents the non-key attribute names which will be projected into the index.
13086	//
13087	// For local secondary indexes, the total count of NonKeyAttributes summed across
13088	// all of the local secondary indexes, must not exceed 20. If you project the
13089	// same attribute into two different indexes, this counts as two distinct attributes
13090	// when determining the total.
13091	NonKeyAttributes []*string `min:"1" type:"list"`
13092
13093	// The set of attributes that are projected into the index:
13094	//
13095	//    * KEYS_ONLY - Only the index and primary keys are projected into the index.
13096	//
13097	//    * INCLUDE - Only the specified table attributes are projected into the
13098	//    index. The list of projected attributes is in NonKeyAttributes.
13099	//
13100	//    * ALL - All of the table attributes are projected into the index.
13101	ProjectionType *string `type:"string" enum:"ProjectionType"`
13102}
13103
13104// String returns the string representation
13105func (s Projection) String() string {
13106	return awsutil.Prettify(s)
13107}
13108
13109// GoString returns the string representation
13110func (s Projection) GoString() string {
13111	return s.String()
13112}
13113
13114// Validate inspects the fields of the type to determine if they are valid.
13115func (s *Projection) Validate() error {
13116	invalidParams := request.ErrInvalidParams{Context: "Projection"}
13117	if s.NonKeyAttributes != nil && len(s.NonKeyAttributes) < 1 {
13118		invalidParams.Add(request.NewErrParamMinLen("NonKeyAttributes", 1))
13119	}
13120
13121	if invalidParams.Len() > 0 {
13122		return invalidParams
13123	}
13124	return nil
13125}
13126
13127// SetNonKeyAttributes sets the NonKeyAttributes field's value.
13128func (s *Projection) SetNonKeyAttributes(v []*string) *Projection {
13129	s.NonKeyAttributes = v
13130	return s
13131}
13132
13133// SetProjectionType sets the ProjectionType field's value.
13134func (s *Projection) SetProjectionType(v string) *Projection {
13135	s.ProjectionType = &v
13136	return s
13137}
13138
13139// Represents the provisioned throughput settings for a specified table or index.
13140// The settings can be modified using the UpdateTable operation.
13141//
13142// For current minimum and maximum provisioned throughput values, see Limits
13143// (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Limits.html)
13144// in the Amazon DynamoDB Developer Guide.
13145type ProvisionedThroughput struct {
13146	_ struct{} `type:"structure"`
13147
13148	// The maximum number of strongly consistent reads consumed per second before
13149	// DynamoDB returns a ThrottlingException. For more information, see Specifying
13150	// Read and Write Requirements (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/WorkingWithTables.html#ProvisionedThroughput)
13151	// in the Amazon DynamoDB Developer Guide.
13152	//
13153	// If read/write capacity mode is PAY_PER_REQUEST the value is set to 0.
13154	//
13155	// ReadCapacityUnits is a required field
13156	ReadCapacityUnits *int64 `min:"1" type:"long" required:"true"`
13157
13158	// The maximum number of writes consumed per second before DynamoDB returns
13159	// a ThrottlingException. For more information, see Specifying Read and Write
13160	// Requirements (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/WorkingWithTables.html#ProvisionedThroughput)
13161	// in the Amazon DynamoDB Developer Guide.
13162	//
13163	// If read/write capacity mode is PAY_PER_REQUEST the value is set to 0.
13164	//
13165	// WriteCapacityUnits is a required field
13166	WriteCapacityUnits *int64 `min:"1" type:"long" required:"true"`
13167}
13168
13169// String returns the string representation
13170func (s ProvisionedThroughput) String() string {
13171	return awsutil.Prettify(s)
13172}
13173
13174// GoString returns the string representation
13175func (s ProvisionedThroughput) GoString() string {
13176	return s.String()
13177}
13178
13179// Validate inspects the fields of the type to determine if they are valid.
13180func (s *ProvisionedThroughput) Validate() error {
13181	invalidParams := request.ErrInvalidParams{Context: "ProvisionedThroughput"}
13182	if s.ReadCapacityUnits == nil {
13183		invalidParams.Add(request.NewErrParamRequired("ReadCapacityUnits"))
13184	}
13185	if s.ReadCapacityUnits != nil && *s.ReadCapacityUnits < 1 {
13186		invalidParams.Add(request.NewErrParamMinValue("ReadCapacityUnits", 1))
13187	}
13188	if s.WriteCapacityUnits == nil {
13189		invalidParams.Add(request.NewErrParamRequired("WriteCapacityUnits"))
13190	}
13191	if s.WriteCapacityUnits != nil && *s.WriteCapacityUnits < 1 {
13192		invalidParams.Add(request.NewErrParamMinValue("WriteCapacityUnits", 1))
13193	}
13194
13195	if invalidParams.Len() > 0 {
13196		return invalidParams
13197	}
13198	return nil
13199}
13200
13201// SetReadCapacityUnits sets the ReadCapacityUnits field's value.
13202func (s *ProvisionedThroughput) SetReadCapacityUnits(v int64) *ProvisionedThroughput {
13203	s.ReadCapacityUnits = &v
13204	return s
13205}
13206
13207// SetWriteCapacityUnits sets the WriteCapacityUnits field's value.
13208func (s *ProvisionedThroughput) SetWriteCapacityUnits(v int64) *ProvisionedThroughput {
13209	s.WriteCapacityUnits = &v
13210	return s
13211}
13212
13213// Represents the provisioned throughput settings for the table, consisting
13214// of read and write capacity units, along with data about increases and decreases.
13215type ProvisionedThroughputDescription struct {
13216	_ struct{} `type:"structure"`
13217
13218	// The date and time of the last provisioned throughput decrease for this table.
13219	LastDecreaseDateTime *time.Time `type:"timestamp"`
13220
13221	// The date and time of the last provisioned throughput increase for this table.
13222	LastIncreaseDateTime *time.Time `type:"timestamp"`
13223
13224	// The number of provisioned throughput decreases for this table during this
13225	// UTC calendar day. For current maximums on provisioned throughput decreases,
13226	// see Limits (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Limits.html)
13227	// in the Amazon DynamoDB Developer Guide.
13228	NumberOfDecreasesToday *int64 `min:"1" type:"long"`
13229
13230	// The maximum number of strongly consistent reads consumed per second before
13231	// DynamoDB returns a ThrottlingException. Eventually consistent reads require
13232	// less effort than strongly consistent reads, so a setting of 50 ReadCapacityUnits
13233	// per second provides 100 eventually consistent ReadCapacityUnits per second.
13234	ReadCapacityUnits *int64 `type:"long"`
13235
13236	// The maximum number of writes consumed per second before DynamoDB returns
13237	// a ThrottlingException.
13238	WriteCapacityUnits *int64 `type:"long"`
13239}
13240
13241// String returns the string representation
13242func (s ProvisionedThroughputDescription) String() string {
13243	return awsutil.Prettify(s)
13244}
13245
13246// GoString returns the string representation
13247func (s ProvisionedThroughputDescription) GoString() string {
13248	return s.String()
13249}
13250
13251// SetLastDecreaseDateTime sets the LastDecreaseDateTime field's value.
13252func (s *ProvisionedThroughputDescription) SetLastDecreaseDateTime(v time.Time) *ProvisionedThroughputDescription {
13253	s.LastDecreaseDateTime = &v
13254	return s
13255}
13256
13257// SetLastIncreaseDateTime sets the LastIncreaseDateTime field's value.
13258func (s *ProvisionedThroughputDescription) SetLastIncreaseDateTime(v time.Time) *ProvisionedThroughputDescription {
13259	s.LastIncreaseDateTime = &v
13260	return s
13261}
13262
13263// SetNumberOfDecreasesToday sets the NumberOfDecreasesToday field's value.
13264func (s *ProvisionedThroughputDescription) SetNumberOfDecreasesToday(v int64) *ProvisionedThroughputDescription {
13265	s.NumberOfDecreasesToday = &v
13266	return s
13267}
13268
13269// SetReadCapacityUnits sets the ReadCapacityUnits field's value.
13270func (s *ProvisionedThroughputDescription) SetReadCapacityUnits(v int64) *ProvisionedThroughputDescription {
13271	s.ReadCapacityUnits = &v
13272	return s
13273}
13274
13275// SetWriteCapacityUnits sets the WriteCapacityUnits field's value.
13276func (s *ProvisionedThroughputDescription) SetWriteCapacityUnits(v int64) *ProvisionedThroughputDescription {
13277	s.WriteCapacityUnits = &v
13278	return s
13279}
13280
13281// Your request rate is too high. The AWS SDKs for DynamoDB automatically retry
13282// requests that receive this exception. Your request is eventually successful,
13283// unless your retry queue is too large to finish. Reduce the frequency of requests
13284// and use exponential backoff. For more information, go to Error Retries and
13285// Exponential Backoff (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Programming.Errors.html#Programming.Errors.RetryAndBackoff)
13286// in the Amazon DynamoDB Developer Guide.
13287type ProvisionedThroughputExceededException struct {
13288	_            struct{}                  `type:"structure"`
13289	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`
13290
13291	// You exceeded your maximum allowed provisioned throughput.
13292	Message_ *string `locationName:"message" type:"string"`
13293}
13294
13295// String returns the string representation
13296func (s ProvisionedThroughputExceededException) String() string {
13297	return awsutil.Prettify(s)
13298}
13299
13300// GoString returns the string representation
13301func (s ProvisionedThroughputExceededException) GoString() string {
13302	return s.String()
13303}
13304
13305func newErrorProvisionedThroughputExceededException(v protocol.ResponseMetadata) error {
13306	return &ProvisionedThroughputExceededException{
13307		RespMetadata: v,
13308	}
13309}
13310
13311// Code returns the exception type name.
13312func (s *ProvisionedThroughputExceededException) Code() string {
13313	return "ProvisionedThroughputExceededException"
13314}
13315
13316// Message returns the exception's message.
13317func (s *ProvisionedThroughputExceededException) Message() string {
13318	if s.Message_ != nil {
13319		return *s.Message_
13320	}
13321	return ""
13322}
13323
13324// OrigErr always returns nil, satisfies awserr.Error interface.
13325func (s *ProvisionedThroughputExceededException) OrigErr() error {
13326	return nil
13327}
13328
13329func (s *ProvisionedThroughputExceededException) Error() string {
13330	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
13331}
13332
13333// Status code returns the HTTP status code for the request's response error.
13334func (s *ProvisionedThroughputExceededException) StatusCode() int {
13335	return s.RespMetadata.StatusCode
13336}
13337
13338// RequestID returns the service's response RequestID for request.
13339func (s *ProvisionedThroughputExceededException) RequestID() string {
13340	return s.RespMetadata.RequestID
13341}
13342
13343// Replica-specific provisioned throughput settings. If not specified, uses
13344// the source table's provisioned throughput settings.
13345type ProvisionedThroughputOverride struct {
13346	_ struct{} `type:"structure"`
13347
13348	// Replica-specific read capacity units. If not specified, uses the source table's
13349	// read capacity settings.
13350	ReadCapacityUnits *int64 `min:"1" type:"long"`
13351}
13352
13353// String returns the string representation
13354func (s ProvisionedThroughputOverride) String() string {
13355	return awsutil.Prettify(s)
13356}
13357
13358// GoString returns the string representation
13359func (s ProvisionedThroughputOverride) GoString() string {
13360	return s.String()
13361}
13362
13363// Validate inspects the fields of the type to determine if they are valid.
13364func (s *ProvisionedThroughputOverride) Validate() error {
13365	invalidParams := request.ErrInvalidParams{Context: "ProvisionedThroughputOverride"}
13366	if s.ReadCapacityUnits != nil && *s.ReadCapacityUnits < 1 {
13367		invalidParams.Add(request.NewErrParamMinValue("ReadCapacityUnits", 1))
13368	}
13369
13370	if invalidParams.Len() > 0 {
13371		return invalidParams
13372	}
13373	return nil
13374}
13375
13376// SetReadCapacityUnits sets the ReadCapacityUnits field's value.
13377func (s *ProvisionedThroughputOverride) SetReadCapacityUnits(v int64) *ProvisionedThroughputOverride {
13378	s.ReadCapacityUnits = &v
13379	return s
13380}
13381
13382// Represents a request to perform a PutItem operation.
13383type Put struct {
13384	_ struct{} `type:"structure"`
13385
13386	// A condition that must be satisfied in order for a conditional update to succeed.
13387	ConditionExpression *string `type:"string"`
13388
13389	// One or more substitution tokens for attribute names in an expression.
13390	ExpressionAttributeNames map[string]*string `type:"map"`
13391
13392	// One or more values that can be substituted in an expression.
13393	ExpressionAttributeValues map[string]*AttributeValue `type:"map"`
13394
13395	// A map of attribute name to attribute values, representing the primary key
13396	// of the item to be written by PutItem. All of the table's primary key attributes
13397	// must be specified, and their data types must match those of the table's key
13398	// schema. If any attributes are present in the item that are part of an index
13399	// key schema for the table, their types must match the index key schema.
13400	//
13401	// Item is a required field
13402	Item map[string]*AttributeValue `type:"map" required:"true"`
13403
13404	// Use ReturnValuesOnConditionCheckFailure to get the item attributes if the
13405	// Put condition fails. For ReturnValuesOnConditionCheckFailure, the valid values
13406	// are: NONE and ALL_OLD.
13407	ReturnValuesOnConditionCheckFailure *string `type:"string" enum:"ReturnValuesOnConditionCheckFailure"`
13408
13409	// Name of the table in which to write the item.
13410	//
13411	// TableName is a required field
13412	TableName *string `min:"3" type:"string" required:"true"`
13413}
13414
13415// String returns the string representation
13416func (s Put) String() string {
13417	return awsutil.Prettify(s)
13418}
13419
13420// GoString returns the string representation
13421func (s Put) GoString() string {
13422	return s.String()
13423}
13424
13425// Validate inspects the fields of the type to determine if they are valid.
13426func (s *Put) Validate() error {
13427	invalidParams := request.ErrInvalidParams{Context: "Put"}
13428	if s.Item == nil {
13429		invalidParams.Add(request.NewErrParamRequired("Item"))
13430	}
13431	if s.TableName == nil {
13432		invalidParams.Add(request.NewErrParamRequired("TableName"))
13433	}
13434	if s.TableName != nil && len(*s.TableName) < 3 {
13435		invalidParams.Add(request.NewErrParamMinLen("TableName", 3))
13436	}
13437
13438	if invalidParams.Len() > 0 {
13439		return invalidParams
13440	}
13441	return nil
13442}
13443
13444// SetConditionExpression sets the ConditionExpression field's value.
13445func (s *Put) SetConditionExpression(v string) *Put {
13446	s.ConditionExpression = &v
13447	return s
13448}
13449
13450// SetExpressionAttributeNames sets the ExpressionAttributeNames field's value.
13451func (s *Put) SetExpressionAttributeNames(v map[string]*string) *Put {
13452	s.ExpressionAttributeNames = v
13453	return s
13454}
13455
13456// SetExpressionAttributeValues sets the ExpressionAttributeValues field's value.
13457func (s *Put) SetExpressionAttributeValues(v map[string]*AttributeValue) *Put {
13458	s.ExpressionAttributeValues = v
13459	return s
13460}
13461
13462// SetItem sets the Item field's value.
13463func (s *Put) SetItem(v map[string]*AttributeValue) *Put {
13464	s.Item = v
13465	return s
13466}
13467
13468// SetReturnValuesOnConditionCheckFailure sets the ReturnValuesOnConditionCheckFailure field's value.
13469func (s *Put) SetReturnValuesOnConditionCheckFailure(v string) *Put {
13470	s.ReturnValuesOnConditionCheckFailure = &v
13471	return s
13472}
13473
13474// SetTableName sets the TableName field's value.
13475func (s *Put) SetTableName(v string) *Put {
13476	s.TableName = &v
13477	return s
13478}
13479
13480// Represents the input of a PutItem operation.
13481type PutItemInput struct {
13482	_ struct{} `type:"structure"`
13483
13484	// A condition that must be satisfied in order for a conditional PutItem operation
13485	// to succeed.
13486	//
13487	// An expression can contain any of the following:
13488	//
13489	//    * Functions: attribute_exists | attribute_not_exists | attribute_type
13490	//    | contains | begins_with | size These function names are case-sensitive.
13491	//
13492	//    * Comparison operators: = | <> | < | > | <= | >= | BETWEEN | IN
13493	//
13494	//    * Logical operators: AND | OR | NOT
13495	//
13496	// For more information on condition expressions, see Condition Expressions
13497	// (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.SpecifyingConditions.html)
13498	// in the Amazon DynamoDB Developer Guide.
13499	ConditionExpression *string `type:"string"`
13500
13501	// This is a legacy parameter. Use ConditionExpression instead. For more information,
13502	// see ConditionalOperator (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/LegacyConditionalParameters.ConditionalOperator.html)
13503	// in the Amazon DynamoDB Developer Guide.
13504	ConditionalOperator *string `type:"string" enum:"ConditionalOperator"`
13505
13506	// This is a legacy parameter. Use ConditionExpression instead. For more information,
13507	// see Expected (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/LegacyConditionalParameters.Expected.html)
13508	// in the Amazon DynamoDB Developer Guide.
13509	Expected map[string]*ExpectedAttributeValue `type:"map"`
13510
13511	// One or more substitution tokens for attribute names in an expression. The
13512	// following are some use cases for using ExpressionAttributeNames:
13513	//
13514	//    * To access an attribute whose name conflicts with a DynamoDB reserved
13515	//    word.
13516	//
13517	//    * To create a placeholder for repeating occurrences of an attribute name
13518	//    in an expression.
13519	//
13520	//    * To prevent special characters in an attribute name from being misinterpreted
13521	//    in an expression.
13522	//
13523	// Use the # character in an expression to dereference an attribute name. For
13524	// example, consider the following attribute name:
13525	//
13526	//    * Percentile
13527	//
13528	// The name of this attribute conflicts with a reserved word, so it cannot be
13529	// used directly in an expression. (For the complete list of reserved words,
13530	// see Reserved Words (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ReservedWords.html)
13531	// in the Amazon DynamoDB Developer Guide). To work around this, you could specify
13532	// the following for ExpressionAttributeNames:
13533	//
13534	//    * {"#P":"Percentile"}
13535	//
13536	// You could then use this substitution in an expression, as in this example:
13537	//
13538	//    * #P = :val
13539	//
13540	// Tokens that begin with the : character are expression attribute values, which
13541	// are placeholders for the actual value at runtime.
13542	//
13543	// For more information on expression attribute names, see Specifying Item Attributes
13544	// (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.AccessingItemAttributes.html)
13545	// in the Amazon DynamoDB Developer Guide.
13546	ExpressionAttributeNames map[string]*string `type:"map"`
13547
13548	// One or more values that can be substituted in an expression.
13549	//
13550	// Use the : (colon) character in an expression to dereference an attribute
13551	// value. For example, suppose that you wanted to check whether the value of
13552	// the ProductStatus attribute was one of the following:
13553	//
13554	// Available | Backordered | Discontinued
13555	//
13556	// You would first need to specify ExpressionAttributeValues as follows:
13557	//
13558	// { ":avail":{"S":"Available"}, ":back":{"S":"Backordered"}, ":disc":{"S":"Discontinued"}
13559	// }
13560	//
13561	// You could then use these values in an expression, such as this:
13562	//
13563	// ProductStatus IN (:avail, :back, :disc)
13564	//
13565	// For more information on expression attribute values, see Condition Expressions
13566	// (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.SpecifyingConditions.html)
13567	// in the Amazon DynamoDB Developer Guide.
13568	ExpressionAttributeValues map[string]*AttributeValue `type:"map"`
13569
13570	// A map of attribute name/value pairs, one for each attribute. Only the primary
13571	// key attributes are required; you can optionally provide other attribute name-value
13572	// pairs for the item.
13573	//
13574	// You must provide all of the attributes for the primary key. For example,
13575	// with a simple primary key, you only need to provide a value for the partition
13576	// key. For a composite primary key, you must provide both values for both the
13577	// partition key and the sort key.
13578	//
13579	// If you specify any attributes that are part of an index key, then the data
13580	// types for those attributes must match those of the schema in the table's
13581	// attribute definition.
13582	//
13583	// Empty String and Binary attribute values are allowed. Attribute values of
13584	// type String and Binary must have a length greater than zero if the attribute
13585	// is used as a key attribute for a table or index.
13586	//
13587	// For more information about primary keys, see Primary Key (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/HowItWorks.CoreComponents.html#HowItWorks.CoreComponents.PrimaryKey)
13588	// in the Amazon DynamoDB Developer Guide.
13589	//
13590	// Each element in the Item map is an AttributeValue object.
13591	//
13592	// Item is a required field
13593	Item map[string]*AttributeValue `type:"map" required:"true"`
13594
13595	// Determines the level of detail about provisioned throughput consumption that
13596	// is returned in the response:
13597	//
13598	//    * INDEXES - The response includes the aggregate ConsumedCapacity for the
13599	//    operation, together with ConsumedCapacity for each table and secondary
13600	//    index that was accessed. Note that some operations, such as GetItem and
13601	//    BatchGetItem, do not access any indexes at all. In these cases, specifying
13602	//    INDEXES will only return ConsumedCapacity information for table(s).
13603	//
13604	//    * TOTAL - The response includes only the aggregate ConsumedCapacity for
13605	//    the operation.
13606	//
13607	//    * NONE - No ConsumedCapacity details are included in the response.
13608	ReturnConsumedCapacity *string `type:"string" enum:"ReturnConsumedCapacity"`
13609
13610	// Determines whether item collection metrics are returned. If set to SIZE,
13611	// the response includes statistics about item collections, if any, that were
13612	// modified during the operation are returned in the response. If set to NONE
13613	// (the default), no statistics are returned.
13614	ReturnItemCollectionMetrics *string `type:"string" enum:"ReturnItemCollectionMetrics"`
13615
13616	// Use ReturnValues if you want to get the item attributes as they appeared
13617	// before they were updated with the PutItem request. For PutItem, the valid
13618	// values are:
13619	//
13620	//    * NONE - If ReturnValues is not specified, or if its value is NONE, then
13621	//    nothing is returned. (This setting is the default for ReturnValues.)
13622	//
13623	//    * ALL_OLD - If PutItem overwrote an attribute name-value pair, then the
13624	//    content of the old item is returned.
13625	//
13626	// The ReturnValues parameter is used by several DynamoDB operations; however,
13627	// PutItem does not recognize any values other than NONE or ALL_OLD.
13628	ReturnValues *string `type:"string" enum:"ReturnValue"`
13629
13630	// The name of the table to contain the item.
13631	//
13632	// TableName is a required field
13633	TableName *string `min:"3" type:"string" required:"true"`
13634}
13635
13636// String returns the string representation
13637func (s PutItemInput) String() string {
13638	return awsutil.Prettify(s)
13639}
13640
13641// GoString returns the string representation
13642func (s PutItemInput) GoString() string {
13643	return s.String()
13644}
13645
13646// Validate inspects the fields of the type to determine if they are valid.
13647func (s *PutItemInput) Validate() error {
13648	invalidParams := request.ErrInvalidParams{Context: "PutItemInput"}
13649	if s.Item == nil {
13650		invalidParams.Add(request.NewErrParamRequired("Item"))
13651	}
13652	if s.TableName == nil {
13653		invalidParams.Add(request.NewErrParamRequired("TableName"))
13654	}
13655	if s.TableName != nil && len(*s.TableName) < 3 {
13656		invalidParams.Add(request.NewErrParamMinLen("TableName", 3))
13657	}
13658
13659	if invalidParams.Len() > 0 {
13660		return invalidParams
13661	}
13662	return nil
13663}
13664
13665// SetConditionExpression sets the ConditionExpression field's value.
13666func (s *PutItemInput) SetConditionExpression(v string) *PutItemInput {
13667	s.ConditionExpression = &v
13668	return s
13669}
13670
13671// SetConditionalOperator sets the ConditionalOperator field's value.
13672func (s *PutItemInput) SetConditionalOperator(v string) *PutItemInput {
13673	s.ConditionalOperator = &v
13674	return s
13675}
13676
13677// SetExpected sets the Expected field's value.
13678func (s *PutItemInput) SetExpected(v map[string]*ExpectedAttributeValue) *PutItemInput {
13679	s.Expected = v
13680	return s
13681}
13682
13683// SetExpressionAttributeNames sets the ExpressionAttributeNames field's value.
13684func (s *PutItemInput) SetExpressionAttributeNames(v map[string]*string) *PutItemInput {
13685	s.ExpressionAttributeNames = v
13686	return s
13687}
13688
13689// SetExpressionAttributeValues sets the ExpressionAttributeValues field's value.
13690func (s *PutItemInput) SetExpressionAttributeValues(v map[string]*AttributeValue) *PutItemInput {
13691	s.ExpressionAttributeValues = v
13692	return s
13693}
13694
13695// SetItem sets the Item field's value.
13696func (s *PutItemInput) SetItem(v map[string]*AttributeValue) *PutItemInput {
13697	s.Item = v
13698	return s
13699}
13700
13701// SetReturnConsumedCapacity sets the ReturnConsumedCapacity field's value.
13702func (s *PutItemInput) SetReturnConsumedCapacity(v string) *PutItemInput {
13703	s.ReturnConsumedCapacity = &v
13704	return s
13705}
13706
13707// SetReturnItemCollectionMetrics sets the ReturnItemCollectionMetrics field's value.
13708func (s *PutItemInput) SetReturnItemCollectionMetrics(v string) *PutItemInput {
13709	s.ReturnItemCollectionMetrics = &v
13710	return s
13711}
13712
13713// SetReturnValues sets the ReturnValues field's value.
13714func (s *PutItemInput) SetReturnValues(v string) *PutItemInput {
13715	s.ReturnValues = &v
13716	return s
13717}
13718
13719// SetTableName sets the TableName field's value.
13720func (s *PutItemInput) SetTableName(v string) *PutItemInput {
13721	s.TableName = &v
13722	return s
13723}
13724
13725// Represents the output of a PutItem operation.
13726type PutItemOutput struct {
13727	_ struct{} `type:"structure"`
13728
13729	// The attribute values as they appeared before the PutItem operation, but only
13730	// if ReturnValues is specified as ALL_OLD in the request. Each element consists
13731	// of an attribute name and an attribute value.
13732	Attributes map[string]*AttributeValue `type:"map"`
13733
13734	// The capacity units consumed by the PutItem operation. The data returned includes
13735	// the total provisioned throughput consumed, along with statistics for the
13736	// table and any indexes involved in the operation. ConsumedCapacity is only
13737	// returned if the ReturnConsumedCapacity parameter was specified. For more
13738	// information, see Read/Write Capacity Mode (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ProvisionedThroughputIntro.html)
13739	// in the Amazon DynamoDB Developer Guide.
13740	ConsumedCapacity *ConsumedCapacity `type:"structure"`
13741
13742	// Information about item collections, if any, that were affected by the PutItem
13743	// operation. ItemCollectionMetrics is only returned if the ReturnItemCollectionMetrics
13744	// parameter was specified. If the table does not have any local secondary indexes,
13745	// this information is not returned in the response.
13746	//
13747	// Each ItemCollectionMetrics element consists of:
13748	//
13749	//    * ItemCollectionKey - The partition key value of the item collection.
13750	//    This is the same as the partition key value of the item itself.
13751	//
13752	//    * SizeEstimateRangeGB - An estimate of item collection size, in gigabytes.
13753	//    This value is a two-element array containing a lower bound and an upper
13754	//    bound for the estimate. The estimate includes the size of all the items
13755	//    in the table, plus the size of all attributes projected into all of the
13756	//    local secondary indexes on that table. Use this estimate to measure whether
13757	//    a local secondary index is approaching its size limit. The estimate is
13758	//    subject to change over time; therefore, do not rely on the precision or
13759	//    accuracy of the estimate.
13760	ItemCollectionMetrics *ItemCollectionMetrics `type:"structure"`
13761}
13762
13763// String returns the string representation
13764func (s PutItemOutput) String() string {
13765	return awsutil.Prettify(s)
13766}
13767
13768// GoString returns the string representation
13769func (s PutItemOutput) GoString() string {
13770	return s.String()
13771}
13772
13773// SetAttributes sets the Attributes field's value.
13774func (s *PutItemOutput) SetAttributes(v map[string]*AttributeValue) *PutItemOutput {
13775	s.Attributes = v
13776	return s
13777}
13778
13779// SetConsumedCapacity sets the ConsumedCapacity field's value.
13780func (s *PutItemOutput) SetConsumedCapacity(v *ConsumedCapacity) *PutItemOutput {
13781	s.ConsumedCapacity = v
13782	return s
13783}
13784
13785// SetItemCollectionMetrics sets the ItemCollectionMetrics field's value.
13786func (s *PutItemOutput) SetItemCollectionMetrics(v *ItemCollectionMetrics) *PutItemOutput {
13787	s.ItemCollectionMetrics = v
13788	return s
13789}
13790
13791// Represents a request to perform a PutItem operation on an item.
13792type PutRequest struct {
13793	_ struct{} `type:"structure"`
13794
13795	// A map of attribute name to attribute values, representing the primary key
13796	// of an item to be processed by PutItem. All of the table's primary key attributes
13797	// must be specified, and their data types must match those of the table's key
13798	// schema. If any attributes are present in the item that are part of an index
13799	// key schema for the table, their types must match the index key schema.
13800	//
13801	// Item is a required field
13802	Item map[string]*AttributeValue `type:"map" required:"true"`
13803}
13804
13805// String returns the string representation
13806func (s PutRequest) String() string {
13807	return awsutil.Prettify(s)
13808}
13809
13810// GoString returns the string representation
13811func (s PutRequest) GoString() string {
13812	return s.String()
13813}
13814
13815// SetItem sets the Item field's value.
13816func (s *PutRequest) SetItem(v map[string]*AttributeValue) *PutRequest {
13817	s.Item = v
13818	return s
13819}
13820
13821// Represents the input of a Query operation.
13822type QueryInput struct {
13823	_ struct{} `type:"structure"`
13824
13825	// This is a legacy parameter. Use ProjectionExpression instead. For more information,
13826	// see AttributesToGet (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/LegacyConditionalParameters.AttributesToGet.html)
13827	// in the Amazon DynamoDB Developer Guide.
13828	AttributesToGet []*string `min:"1" type:"list"`
13829
13830	// This is a legacy parameter. Use FilterExpression instead. For more information,
13831	// see ConditionalOperator (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/LegacyConditionalParameters.ConditionalOperator.html)
13832	// in the Amazon DynamoDB Developer Guide.
13833	ConditionalOperator *string `type:"string" enum:"ConditionalOperator"`
13834
13835	// Determines the read consistency model: If set to true, then the operation
13836	// uses strongly consistent reads; otherwise, the operation uses eventually
13837	// consistent reads.
13838	//
13839	// Strongly consistent reads are not supported on global secondary indexes.
13840	// If you query a global secondary index with ConsistentRead set to true, you
13841	// will receive a ValidationException.
13842	ConsistentRead *bool `type:"boolean"`
13843
13844	// The primary key of the first item that this operation will evaluate. Use
13845	// the value that was returned for LastEvaluatedKey in the previous operation.
13846	//
13847	// The data type for ExclusiveStartKey must be String, Number, or Binary. No
13848	// set data types are allowed.
13849	ExclusiveStartKey map[string]*AttributeValue `type:"map"`
13850
13851	// One or more substitution tokens for attribute names in an expression. The
13852	// following are some use cases for using ExpressionAttributeNames:
13853	//
13854	//    * To access an attribute whose name conflicts with a DynamoDB reserved
13855	//    word.
13856	//
13857	//    * To create a placeholder for repeating occurrences of an attribute name
13858	//    in an expression.
13859	//
13860	//    * To prevent special characters in an attribute name from being misinterpreted
13861	//    in an expression.
13862	//
13863	// Use the # character in an expression to dereference an attribute name. For
13864	// example, consider the following attribute name:
13865	//
13866	//    * Percentile
13867	//
13868	// The name of this attribute conflicts with a reserved word, so it cannot be
13869	// used directly in an expression. (For the complete list of reserved words,
13870	// see Reserved Words (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ReservedWords.html)
13871	// in the Amazon DynamoDB Developer Guide). To work around this, you could specify
13872	// the following for ExpressionAttributeNames:
13873	//
13874	//    * {"#P":"Percentile"}
13875	//
13876	// You could then use this substitution in an expression, as in this example:
13877	//
13878	//    * #P = :val
13879	//
13880	// Tokens that begin with the : character are expression attribute values, which
13881	// are placeholders for the actual value at runtime.
13882	//
13883	// For more information on expression attribute names, see Specifying Item Attributes
13884	// (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.AccessingItemAttributes.html)
13885	// in the Amazon DynamoDB Developer Guide.
13886	ExpressionAttributeNames map[string]*string `type:"map"`
13887
13888	// One or more values that can be substituted in an expression.
13889	//
13890	// Use the : (colon) character in an expression to dereference an attribute
13891	// value. For example, suppose that you wanted to check whether the value of
13892	// the ProductStatus attribute was one of the following:
13893	//
13894	// Available | Backordered | Discontinued
13895	//
13896	// You would first need to specify ExpressionAttributeValues as follows:
13897	//
13898	// { ":avail":{"S":"Available"}, ":back":{"S":"Backordered"}, ":disc":{"S":"Discontinued"}
13899	// }
13900	//
13901	// You could then use these values in an expression, such as this:
13902	//
13903	// ProductStatus IN (:avail, :back, :disc)
13904	//
13905	// For more information on expression attribute values, see Specifying Conditions
13906	// (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.SpecifyingConditions.html)
13907	// in the Amazon DynamoDB Developer Guide.
13908	ExpressionAttributeValues map[string]*AttributeValue `type:"map"`
13909
13910	// A string that contains conditions that DynamoDB applies after the Query operation,
13911	// but before the data is returned to you. Items that do not satisfy the FilterExpression
13912	// criteria are not returned.
13913	//
13914	// A FilterExpression does not allow key attributes. You cannot define a filter
13915	// expression based on a partition key or a sort key.
13916	//
13917	// A FilterExpression is applied after the items have already been read; the
13918	// process of filtering does not consume any additional read capacity units.
13919	//
13920	// For more information, see Filter Expressions (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/QueryAndScan.html#FilteringResults)
13921	// in the Amazon DynamoDB Developer Guide.
13922	FilterExpression *string `type:"string"`
13923
13924	// The name of an index to query. This index can be any local secondary index
13925	// or global secondary index on the table. Note that if you use the IndexName
13926	// parameter, you must also provide TableName.
13927	IndexName *string `min:"3" type:"string"`
13928
13929	// The condition that specifies the key values for items to be retrieved by
13930	// the Query action.
13931	//
13932	// The condition must perform an equality test on a single partition key value.
13933	//
13934	// The condition can optionally perform one of several comparison tests on a
13935	// single sort key value. This allows Query to retrieve one item with a given
13936	// partition key value and sort key value, or several items that have the same
13937	// partition key value but different sort key values.
13938	//
13939	// The partition key equality test is required, and must be specified in the
13940	// following format:
13941	//
13942	// partitionKeyName = :partitionkeyval
13943	//
13944	// If you also want to provide a condition for the sort key, it must be combined
13945	// using AND with the condition for the sort key. Following is an example, using
13946	// the = comparison operator for the sort key:
13947	//
13948	// partitionKeyName = :partitionkeyval AND sortKeyName = :sortkeyval
13949	//
13950	// Valid comparisons for the sort key condition are as follows:
13951	//
13952	//    * sortKeyName = :sortkeyval - true if the sort key value is equal to :sortkeyval.
13953	//
13954	//    * sortKeyName < :sortkeyval - true if the sort key value is less than
13955	//    :sortkeyval.
13956	//
13957	//    * sortKeyName <= :sortkeyval - true if the sort key value is less than
13958	//    or equal to :sortkeyval.
13959	//
13960	//    * sortKeyName > :sortkeyval - true if the sort key value is greater than
13961	//    :sortkeyval.
13962	//
13963	//    * sortKeyName >= :sortkeyval - true if the sort key value is greater than
13964	//    or equal to :sortkeyval.
13965	//
13966	//    * sortKeyName BETWEEN :sortkeyval1 AND :sortkeyval2 - true if the sort
13967	//    key value is greater than or equal to :sortkeyval1, and less than or equal
13968	//    to :sortkeyval2.
13969	//
13970	//    * begins_with ( sortKeyName, :sortkeyval ) - true if the sort key value
13971	//    begins with a particular operand. (You cannot use this function with a
13972	//    sort key that is of type Number.) Note that the function name begins_with
13973	//    is case-sensitive.
13974	//
13975	// Use the ExpressionAttributeValues parameter to replace tokens such as :partitionval
13976	// and :sortval with actual values at runtime.
13977	//
13978	// You can optionally use the ExpressionAttributeNames parameter to replace
13979	// the names of the partition key and sort key with placeholder tokens. This
13980	// option might be necessary if an attribute name conflicts with a DynamoDB
13981	// reserved word. For example, the following KeyConditionExpression parameter
13982	// causes an error because Size is a reserved word:
13983	//
13984	//    * Size = :myval
13985	//
13986	// To work around this, define a placeholder (such a #S) to represent the attribute
13987	// name Size. KeyConditionExpression then is as follows:
13988	//
13989	//    * #S = :myval
13990	//
13991	// For a list of reserved words, see Reserved Words (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ReservedWords.html)
13992	// in the Amazon DynamoDB Developer Guide.
13993	//
13994	// For more information on ExpressionAttributeNames and ExpressionAttributeValues,
13995	// see Using Placeholders for Attribute Names and Values (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ExpressionPlaceholders.html)
13996	// in the Amazon DynamoDB Developer Guide.
13997	KeyConditionExpression *string `type:"string"`
13998
13999	// This is a legacy parameter. Use KeyConditionExpression instead. For more
14000	// information, see KeyConditions (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/LegacyConditionalParameters.KeyConditions.html)
14001	// in the Amazon DynamoDB Developer Guide.
14002	KeyConditions map[string]*Condition `type:"map"`
14003
14004	// The maximum number of items to evaluate (not necessarily the number of matching
14005	// items). If DynamoDB processes the number of items up to the limit while processing
14006	// the results, it stops the operation and returns the matching values up to
14007	// that point, and a key in LastEvaluatedKey to apply in a subsequent operation,
14008	// so that you can pick up where you left off. Also, if the processed dataset
14009	// size exceeds 1 MB before DynamoDB reaches this limit, it stops the operation
14010	// and returns the matching values up to the limit, and a key in LastEvaluatedKey
14011	// to apply in a subsequent operation to continue the operation. For more information,
14012	// see Query and Scan (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/QueryAndScan.html)
14013	// in the Amazon DynamoDB Developer Guide.
14014	Limit *int64 `min:"1" type:"integer"`
14015
14016	// A string that identifies one or more attributes to retrieve from the table.
14017	// These attributes can include scalars, sets, or elements of a JSON document.
14018	// The attributes in the expression must be separated by commas.
14019	//
14020	// If no attribute names are specified, then all attributes will be returned.
14021	// If any of the requested attributes are not found, they will not appear in
14022	// the result.
14023	//
14024	// For more information, see Accessing Item Attributes (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.AccessingItemAttributes.html)
14025	// in the Amazon DynamoDB Developer Guide.
14026	ProjectionExpression *string `type:"string"`
14027
14028	// This is a legacy parameter. Use FilterExpression instead. For more information,
14029	// see QueryFilter (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/LegacyConditionalParameters.QueryFilter.html)
14030	// in the Amazon DynamoDB Developer Guide.
14031	QueryFilter map[string]*Condition `type:"map"`
14032
14033	// Determines the level of detail about provisioned throughput consumption that
14034	// is returned in the response:
14035	//
14036	//    * INDEXES - The response includes the aggregate ConsumedCapacity for the
14037	//    operation, together with ConsumedCapacity for each table and secondary
14038	//    index that was accessed. Note that some operations, such as GetItem and
14039	//    BatchGetItem, do not access any indexes at all. In these cases, specifying
14040	//    INDEXES will only return ConsumedCapacity information for table(s).
14041	//
14042	//    * TOTAL - The response includes only the aggregate ConsumedCapacity for
14043	//    the operation.
14044	//
14045	//    * NONE - No ConsumedCapacity details are included in the response.
14046	ReturnConsumedCapacity *string `type:"string" enum:"ReturnConsumedCapacity"`
14047
14048	// Specifies the order for index traversal: If true (default), the traversal
14049	// is performed in ascending order; if false, the traversal is performed in
14050	// descending order.
14051	//
14052	// Items with the same partition key value are stored in sorted order by sort
14053	// key. If the sort key data type is Number, the results are stored in numeric
14054	// order. For type String, the results are stored in order of UTF-8 bytes. For
14055	// type Binary, DynamoDB treats each byte of the binary data as unsigned.
14056	//
14057	// If ScanIndexForward is true, DynamoDB returns the results in the order in
14058	// which they are stored (by sort key value). This is the default behavior.
14059	// If ScanIndexForward is false, DynamoDB reads the results in reverse order
14060	// by sort key value, and then returns the results to the client.
14061	ScanIndexForward *bool `type:"boolean"`
14062
14063	// The attributes to be returned in the result. You can retrieve all item attributes,
14064	// specific item attributes, the count of matching items, or in the case of
14065	// an index, some or all of the attributes projected into the index.
14066	//
14067	//    * ALL_ATTRIBUTES - Returns all of the item attributes from the specified
14068	//    table or index. If you query a local secondary index, then for each matching
14069	//    item in the index, DynamoDB fetches the entire item from the parent table.
14070	//    If the index is configured to project all item attributes, then all of
14071	//    the data can be obtained from the local secondary index, and no fetching
14072	//    is required.
14073	//
14074	//    * ALL_PROJECTED_ATTRIBUTES - Allowed only when querying an index. Retrieves
14075	//    all attributes that have been projected into the index. If the index is
14076	//    configured to project all attributes, this return value is equivalent
14077	//    to specifying ALL_ATTRIBUTES.
14078	//
14079	//    * COUNT - Returns the number of matching items, rather than the matching
14080	//    items themselves.
14081	//
14082	//    * SPECIFIC_ATTRIBUTES - Returns only the attributes listed in AttributesToGet.
14083	//    This return value is equivalent to specifying AttributesToGet without
14084	//    specifying any value for Select. If you query or scan a local secondary
14085	//    index and request only attributes that are projected into that index,
14086	//    the operation will read only the index and not the table. If any of the
14087	//    requested attributes are not projected into the local secondary index,
14088	//    DynamoDB fetches each of these attributes from the parent table. This
14089	//    extra fetching incurs additional throughput cost and latency. If you query
14090	//    or scan a global secondary index, you can only request attributes that
14091	//    are projected into the index. Global secondary index queries cannot fetch
14092	//    attributes from the parent table.
14093	//
14094	// If neither Select nor AttributesToGet are specified, DynamoDB defaults to
14095	// ALL_ATTRIBUTES when accessing a table, and ALL_PROJECTED_ATTRIBUTES when
14096	// accessing an index. You cannot use both Select and AttributesToGet together
14097	// in a single request, unless the value for Select is SPECIFIC_ATTRIBUTES.
14098	// (This usage is equivalent to specifying AttributesToGet without any value
14099	// for Select.)
14100	//
14101	// If you use the ProjectionExpression parameter, then the value for Select
14102	// can only be SPECIFIC_ATTRIBUTES. Any other value for Select will return an
14103	// error.
14104	Select *string `type:"string" enum:"Select"`
14105
14106	// The name of the table containing the requested items.
14107	//
14108	// TableName is a required field
14109	TableName *string `min:"3" type:"string" required:"true"`
14110}
14111
14112// String returns the string representation
14113func (s QueryInput) String() string {
14114	return awsutil.Prettify(s)
14115}
14116
14117// GoString returns the string representation
14118func (s QueryInput) GoString() string {
14119	return s.String()
14120}
14121
14122// Validate inspects the fields of the type to determine if they are valid.
14123func (s *QueryInput) Validate() error {
14124	invalidParams := request.ErrInvalidParams{Context: "QueryInput"}
14125	if s.AttributesToGet != nil && len(s.AttributesToGet) < 1 {
14126		invalidParams.Add(request.NewErrParamMinLen("AttributesToGet", 1))
14127	}
14128	if s.IndexName != nil && len(*s.IndexName) < 3 {
14129		invalidParams.Add(request.NewErrParamMinLen("IndexName", 3))
14130	}
14131	if s.Limit != nil && *s.Limit < 1 {
14132		invalidParams.Add(request.NewErrParamMinValue("Limit", 1))
14133	}
14134	if s.TableName == nil {
14135		invalidParams.Add(request.NewErrParamRequired("TableName"))
14136	}
14137	if s.TableName != nil && len(*s.TableName) < 3 {
14138		invalidParams.Add(request.NewErrParamMinLen("TableName", 3))
14139	}
14140	if s.KeyConditions != nil {
14141		for i, v := range s.KeyConditions {
14142			if v == nil {
14143				continue
14144			}
14145			if err := v.Validate(); err != nil {
14146				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "KeyConditions", i), err.(request.ErrInvalidParams))
14147			}
14148		}
14149	}
14150	if s.QueryFilter != nil {
14151		for i, v := range s.QueryFilter {
14152			if v == nil {
14153				continue
14154			}
14155			if err := v.Validate(); err != nil {
14156				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "QueryFilter", i), err.(request.ErrInvalidParams))
14157			}
14158		}
14159	}
14160
14161	if invalidParams.Len() > 0 {
14162		return invalidParams
14163	}
14164	return nil
14165}
14166
14167// SetAttributesToGet sets the AttributesToGet field's value.
14168func (s *QueryInput) SetAttributesToGet(v []*string) *QueryInput {
14169	s.AttributesToGet = v
14170	return s
14171}
14172
14173// SetConditionalOperator sets the ConditionalOperator field's value.
14174func (s *QueryInput) SetConditionalOperator(v string) *QueryInput {
14175	s.ConditionalOperator = &v
14176	return s
14177}
14178
14179// SetConsistentRead sets the ConsistentRead field's value.
14180func (s *QueryInput) SetConsistentRead(v bool) *QueryInput {
14181	s.ConsistentRead = &v
14182	return s
14183}
14184
14185// SetExclusiveStartKey sets the ExclusiveStartKey field's value.
14186func (s *QueryInput) SetExclusiveStartKey(v map[string]*AttributeValue) *QueryInput {
14187	s.ExclusiveStartKey = v
14188	return s
14189}
14190
14191// SetExpressionAttributeNames sets the ExpressionAttributeNames field's value.
14192func (s *QueryInput) SetExpressionAttributeNames(v map[string]*string) *QueryInput {
14193	s.ExpressionAttributeNames = v
14194	return s
14195}
14196
14197// SetExpressionAttributeValues sets the ExpressionAttributeValues field's value.
14198func (s *QueryInput) SetExpressionAttributeValues(v map[string]*AttributeValue) *QueryInput {
14199	s.ExpressionAttributeValues = v
14200	return s
14201}
14202
14203// SetFilterExpression sets the FilterExpression field's value.
14204func (s *QueryInput) SetFilterExpression(v string) *QueryInput {
14205	s.FilterExpression = &v
14206	return s
14207}
14208
14209// SetIndexName sets the IndexName field's value.
14210func (s *QueryInput) SetIndexName(v string) *QueryInput {
14211	s.IndexName = &v
14212	return s
14213}
14214
14215// SetKeyConditionExpression sets the KeyConditionExpression field's value.
14216func (s *QueryInput) SetKeyConditionExpression(v string) *QueryInput {
14217	s.KeyConditionExpression = &v
14218	return s
14219}
14220
14221// SetKeyConditions sets the KeyConditions field's value.
14222func (s *QueryInput) SetKeyConditions(v map[string]*Condition) *QueryInput {
14223	s.KeyConditions = v
14224	return s
14225}
14226
14227// SetLimit sets the Limit field's value.
14228func (s *QueryInput) SetLimit(v int64) *QueryInput {
14229	s.Limit = &v
14230	return s
14231}
14232
14233// SetProjectionExpression sets the ProjectionExpression field's value.
14234func (s *QueryInput) SetProjectionExpression(v string) *QueryInput {
14235	s.ProjectionExpression = &v
14236	return s
14237}
14238
14239// SetQueryFilter sets the QueryFilter field's value.
14240func (s *QueryInput) SetQueryFilter(v map[string]*Condition) *QueryInput {
14241	s.QueryFilter = v
14242	return s
14243}
14244
14245// SetReturnConsumedCapacity sets the ReturnConsumedCapacity field's value.
14246func (s *QueryInput) SetReturnConsumedCapacity(v string) *QueryInput {
14247	s.ReturnConsumedCapacity = &v
14248	return s
14249}
14250
14251// SetScanIndexForward sets the ScanIndexForward field's value.
14252func (s *QueryInput) SetScanIndexForward(v bool) *QueryInput {
14253	s.ScanIndexForward = &v
14254	return s
14255}
14256
14257// SetSelect sets the Select field's value.
14258func (s *QueryInput) SetSelect(v string) *QueryInput {
14259	s.Select = &v
14260	return s
14261}
14262
14263// SetTableName sets the TableName field's value.
14264func (s *QueryInput) SetTableName(v string) *QueryInput {
14265	s.TableName = &v
14266	return s
14267}
14268
14269// Represents the output of a Query operation.
14270type QueryOutput struct {
14271	_ struct{} `type:"structure"`
14272
14273	// The capacity units consumed by the Query operation. The data returned includes
14274	// the total provisioned throughput consumed, along with statistics for the
14275	// table and any indexes involved in the operation. ConsumedCapacity is only
14276	// returned if the ReturnConsumedCapacity parameter was specified. For more
14277	// information, see Provisioned Throughput (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ProvisionedThroughputIntro.html)
14278	// in the Amazon DynamoDB Developer Guide.
14279	ConsumedCapacity *ConsumedCapacity `type:"structure"`
14280
14281	// The number of items in the response.
14282	//
14283	// If you used a QueryFilter in the request, then Count is the number of items
14284	// returned after the filter was applied, and ScannedCount is the number of
14285	// matching items before the filter was applied.
14286	//
14287	// If you did not use a filter in the request, then Count and ScannedCount are
14288	// the same.
14289	Count *int64 `type:"integer"`
14290
14291	// An array of item attributes that match the query criteria. Each element in
14292	// this array consists of an attribute name and the value for that attribute.
14293	Items []map[string]*AttributeValue `type:"list"`
14294
14295	// The primary key of the item where the operation stopped, inclusive of the
14296	// previous result set. Use this value to start a new operation, excluding this
14297	// value in the new request.
14298	//
14299	// If LastEvaluatedKey is empty, then the "last page" of results has been processed
14300	// and there is no more data to be retrieved.
14301	//
14302	// If LastEvaluatedKey is not empty, it does not necessarily mean that there
14303	// is more data in the result set. The only way to know when you have reached
14304	// the end of the result set is when LastEvaluatedKey is empty.
14305	LastEvaluatedKey map[string]*AttributeValue `type:"map"`
14306
14307	// The number of items evaluated, before any QueryFilter is applied. A high
14308	// ScannedCount value with few, or no, Count results indicates an inefficient
14309	// Query operation. For more information, see Count and ScannedCount (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/QueryAndScan.html#Count)
14310	// in the Amazon DynamoDB Developer Guide.
14311	//
14312	// If you did not use a filter in the request, then ScannedCount is the same
14313	// as Count.
14314	ScannedCount *int64 `type:"integer"`
14315}
14316
14317// String returns the string representation
14318func (s QueryOutput) String() string {
14319	return awsutil.Prettify(s)
14320}
14321
14322// GoString returns the string representation
14323func (s QueryOutput) GoString() string {
14324	return s.String()
14325}
14326
14327// SetConsumedCapacity sets the ConsumedCapacity field's value.
14328func (s *QueryOutput) SetConsumedCapacity(v *ConsumedCapacity) *QueryOutput {
14329	s.ConsumedCapacity = v
14330	return s
14331}
14332
14333// SetCount sets the Count field's value.
14334func (s *QueryOutput) SetCount(v int64) *QueryOutput {
14335	s.Count = &v
14336	return s
14337}
14338
14339// SetItems sets the Items field's value.
14340func (s *QueryOutput) SetItems(v []map[string]*AttributeValue) *QueryOutput {
14341	s.Items = v
14342	return s
14343}
14344
14345// SetLastEvaluatedKey sets the LastEvaluatedKey field's value.
14346func (s *QueryOutput) SetLastEvaluatedKey(v map[string]*AttributeValue) *QueryOutput {
14347	s.LastEvaluatedKey = v
14348	return s
14349}
14350
14351// SetScannedCount sets the ScannedCount field's value.
14352func (s *QueryOutput) SetScannedCount(v int64) *QueryOutput {
14353	s.ScannedCount = &v
14354	return s
14355}
14356
14357// Represents the properties of a replica.
14358type Replica struct {
14359	_ struct{} `type:"structure"`
14360
14361	// The Region where the replica needs to be created.
14362	RegionName *string `type:"string"`
14363}
14364
14365// String returns the string representation
14366func (s Replica) String() string {
14367	return awsutil.Prettify(s)
14368}
14369
14370// GoString returns the string representation
14371func (s Replica) GoString() string {
14372	return s.String()
14373}
14374
14375// SetRegionName sets the RegionName field's value.
14376func (s *Replica) SetRegionName(v string) *Replica {
14377	s.RegionName = &v
14378	return s
14379}
14380
14381// The specified replica is already part of the global table.
14382type ReplicaAlreadyExistsException struct {
14383	_            struct{}                  `type:"structure"`
14384	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`
14385
14386	Message_ *string `locationName:"message" type:"string"`
14387}
14388
14389// String returns the string representation
14390func (s ReplicaAlreadyExistsException) String() string {
14391	return awsutil.Prettify(s)
14392}
14393
14394// GoString returns the string representation
14395func (s ReplicaAlreadyExistsException) GoString() string {
14396	return s.String()
14397}
14398
14399func newErrorReplicaAlreadyExistsException(v protocol.ResponseMetadata) error {
14400	return &ReplicaAlreadyExistsException{
14401		RespMetadata: v,
14402	}
14403}
14404
14405// Code returns the exception type name.
14406func (s *ReplicaAlreadyExistsException) Code() string {
14407	return "ReplicaAlreadyExistsException"
14408}
14409
14410// Message returns the exception's message.
14411func (s *ReplicaAlreadyExistsException) Message() string {
14412	if s.Message_ != nil {
14413		return *s.Message_
14414	}
14415	return ""
14416}
14417
14418// OrigErr always returns nil, satisfies awserr.Error interface.
14419func (s *ReplicaAlreadyExistsException) OrigErr() error {
14420	return nil
14421}
14422
14423func (s *ReplicaAlreadyExistsException) Error() string {
14424	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
14425}
14426
14427// Status code returns the HTTP status code for the request's response error.
14428func (s *ReplicaAlreadyExistsException) StatusCode() int {
14429	return s.RespMetadata.StatusCode
14430}
14431
14432// RequestID returns the service's response RequestID for request.
14433func (s *ReplicaAlreadyExistsException) RequestID() string {
14434	return s.RespMetadata.RequestID
14435}
14436
14437// Represents the auto scaling settings of the replica.
14438type ReplicaAutoScalingDescription struct {
14439	_ struct{} `type:"structure"`
14440
14441	// Replica-specific global secondary index auto scaling settings.
14442	GlobalSecondaryIndexes []*ReplicaGlobalSecondaryIndexAutoScalingDescription `type:"list"`
14443
14444	// The Region where the replica exists.
14445	RegionName *string `type:"string"`
14446
14447	// Represents the auto scaling settings for a global table or global secondary
14448	// index.
14449	ReplicaProvisionedReadCapacityAutoScalingSettings *AutoScalingSettingsDescription `type:"structure"`
14450
14451	// Represents the auto scaling settings for a global table or global secondary
14452	// index.
14453	ReplicaProvisionedWriteCapacityAutoScalingSettings *AutoScalingSettingsDescription `type:"structure"`
14454
14455	// The current state of the replica:
14456	//
14457	//    * CREATING - The replica is being created.
14458	//
14459	//    * UPDATING - The replica is being updated.
14460	//
14461	//    * DELETING - The replica is being deleted.
14462	//
14463	//    * ACTIVE - The replica is ready for use.
14464	ReplicaStatus *string `type:"string" enum:"ReplicaStatus"`
14465}
14466
14467// String returns the string representation
14468func (s ReplicaAutoScalingDescription) String() string {
14469	return awsutil.Prettify(s)
14470}
14471
14472// GoString returns the string representation
14473func (s ReplicaAutoScalingDescription) GoString() string {
14474	return s.String()
14475}
14476
14477// SetGlobalSecondaryIndexes sets the GlobalSecondaryIndexes field's value.
14478func (s *ReplicaAutoScalingDescription) SetGlobalSecondaryIndexes(v []*ReplicaGlobalSecondaryIndexAutoScalingDescription) *ReplicaAutoScalingDescription {
14479	s.GlobalSecondaryIndexes = v
14480	return s
14481}
14482
14483// SetRegionName sets the RegionName field's value.
14484func (s *ReplicaAutoScalingDescription) SetRegionName(v string) *ReplicaAutoScalingDescription {
14485	s.RegionName = &v
14486	return s
14487}
14488
14489// SetReplicaProvisionedReadCapacityAutoScalingSettings sets the ReplicaProvisionedReadCapacityAutoScalingSettings field's value.
14490func (s *ReplicaAutoScalingDescription) SetReplicaProvisionedReadCapacityAutoScalingSettings(v *AutoScalingSettingsDescription) *ReplicaAutoScalingDescription {
14491	s.ReplicaProvisionedReadCapacityAutoScalingSettings = v
14492	return s
14493}
14494
14495// SetReplicaProvisionedWriteCapacityAutoScalingSettings sets the ReplicaProvisionedWriteCapacityAutoScalingSettings field's value.
14496func (s *ReplicaAutoScalingDescription) SetReplicaProvisionedWriteCapacityAutoScalingSettings(v *AutoScalingSettingsDescription) *ReplicaAutoScalingDescription {
14497	s.ReplicaProvisionedWriteCapacityAutoScalingSettings = v
14498	return s
14499}
14500
14501// SetReplicaStatus sets the ReplicaStatus field's value.
14502func (s *ReplicaAutoScalingDescription) SetReplicaStatus(v string) *ReplicaAutoScalingDescription {
14503	s.ReplicaStatus = &v
14504	return s
14505}
14506
14507// Represents the auto scaling settings of a replica that will be modified.
14508type ReplicaAutoScalingUpdate struct {
14509	_ struct{} `type:"structure"`
14510
14511	// The Region where the replica exists.
14512	//
14513	// RegionName is a required field
14514	RegionName *string `type:"string" required:"true"`
14515
14516	// Represents the auto scaling settings of global secondary indexes that will
14517	// be modified.
14518	ReplicaGlobalSecondaryIndexUpdates []*ReplicaGlobalSecondaryIndexAutoScalingUpdate `type:"list"`
14519
14520	// Represents the auto scaling settings to be modified for a global table or
14521	// global secondary index.
14522	ReplicaProvisionedReadCapacityAutoScalingUpdate *AutoScalingSettingsUpdate `type:"structure"`
14523}
14524
14525// String returns the string representation
14526func (s ReplicaAutoScalingUpdate) String() string {
14527	return awsutil.Prettify(s)
14528}
14529
14530// GoString returns the string representation
14531func (s ReplicaAutoScalingUpdate) GoString() string {
14532	return s.String()
14533}
14534
14535// Validate inspects the fields of the type to determine if they are valid.
14536func (s *ReplicaAutoScalingUpdate) Validate() error {
14537	invalidParams := request.ErrInvalidParams{Context: "ReplicaAutoScalingUpdate"}
14538	if s.RegionName == nil {
14539		invalidParams.Add(request.NewErrParamRequired("RegionName"))
14540	}
14541	if s.ReplicaGlobalSecondaryIndexUpdates != nil {
14542		for i, v := range s.ReplicaGlobalSecondaryIndexUpdates {
14543			if v == nil {
14544				continue
14545			}
14546			if err := v.Validate(); err != nil {
14547				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "ReplicaGlobalSecondaryIndexUpdates", i), err.(request.ErrInvalidParams))
14548			}
14549		}
14550	}
14551	if s.ReplicaProvisionedReadCapacityAutoScalingUpdate != nil {
14552		if err := s.ReplicaProvisionedReadCapacityAutoScalingUpdate.Validate(); err != nil {
14553			invalidParams.AddNested("ReplicaProvisionedReadCapacityAutoScalingUpdate", err.(request.ErrInvalidParams))
14554		}
14555	}
14556
14557	if invalidParams.Len() > 0 {
14558		return invalidParams
14559	}
14560	return nil
14561}
14562
14563// SetRegionName sets the RegionName field's value.
14564func (s *ReplicaAutoScalingUpdate) SetRegionName(v string) *ReplicaAutoScalingUpdate {
14565	s.RegionName = &v
14566	return s
14567}
14568
14569// SetReplicaGlobalSecondaryIndexUpdates sets the ReplicaGlobalSecondaryIndexUpdates field's value.
14570func (s *ReplicaAutoScalingUpdate) SetReplicaGlobalSecondaryIndexUpdates(v []*ReplicaGlobalSecondaryIndexAutoScalingUpdate) *ReplicaAutoScalingUpdate {
14571	s.ReplicaGlobalSecondaryIndexUpdates = v
14572	return s
14573}
14574
14575// SetReplicaProvisionedReadCapacityAutoScalingUpdate sets the ReplicaProvisionedReadCapacityAutoScalingUpdate field's value.
14576func (s *ReplicaAutoScalingUpdate) SetReplicaProvisionedReadCapacityAutoScalingUpdate(v *AutoScalingSettingsUpdate) *ReplicaAutoScalingUpdate {
14577	s.ReplicaProvisionedReadCapacityAutoScalingUpdate = v
14578	return s
14579}
14580
14581// Contains the details of the replica.
14582type ReplicaDescription struct {
14583	_ struct{} `type:"structure"`
14584
14585	// Replica-specific global secondary index settings.
14586	GlobalSecondaryIndexes []*ReplicaGlobalSecondaryIndexDescription `type:"list"`
14587
14588	// The AWS KMS customer master key (CMK) of the replica that will be used for
14589	// AWS KMS encryption.
14590	KMSMasterKeyId *string `type:"string"`
14591
14592	// Replica-specific provisioned throughput. If not described, uses the source
14593	// table's provisioned throughput settings.
14594	ProvisionedThroughputOverride *ProvisionedThroughputOverride `type:"structure"`
14595
14596	// The name of the Region.
14597	RegionName *string `type:"string"`
14598
14599	// The current state of the replica:
14600	//
14601	//    * CREATING - The replica is being created.
14602	//
14603	//    * UPDATING - The replica is being updated.
14604	//
14605	//    * DELETING - The replica is being deleted.
14606	//
14607	//    * ACTIVE - The replica is ready for use.
14608	ReplicaStatus *string `type:"string" enum:"ReplicaStatus"`
14609
14610	// Detailed information about the replica status.
14611	ReplicaStatusDescription *string `type:"string"`
14612
14613	// Specifies the progress of a Create, Update, or Delete action on the replica
14614	// as a percentage.
14615	ReplicaStatusPercentProgress *string `type:"string"`
14616}
14617
14618// String returns the string representation
14619func (s ReplicaDescription) String() string {
14620	return awsutil.Prettify(s)
14621}
14622
14623// GoString returns the string representation
14624func (s ReplicaDescription) GoString() string {
14625	return s.String()
14626}
14627
14628// SetGlobalSecondaryIndexes sets the GlobalSecondaryIndexes field's value.
14629func (s *ReplicaDescription) SetGlobalSecondaryIndexes(v []*ReplicaGlobalSecondaryIndexDescription) *ReplicaDescription {
14630	s.GlobalSecondaryIndexes = v
14631	return s
14632}
14633
14634// SetKMSMasterKeyId sets the KMSMasterKeyId field's value.
14635func (s *ReplicaDescription) SetKMSMasterKeyId(v string) *ReplicaDescription {
14636	s.KMSMasterKeyId = &v
14637	return s
14638}
14639
14640// SetProvisionedThroughputOverride sets the ProvisionedThroughputOverride field's value.
14641func (s *ReplicaDescription) SetProvisionedThroughputOverride(v *ProvisionedThroughputOverride) *ReplicaDescription {
14642	s.ProvisionedThroughputOverride = v
14643	return s
14644}
14645
14646// SetRegionName sets the RegionName field's value.
14647func (s *ReplicaDescription) SetRegionName(v string) *ReplicaDescription {
14648	s.RegionName = &v
14649	return s
14650}
14651
14652// SetReplicaStatus sets the ReplicaStatus field's value.
14653func (s *ReplicaDescription) SetReplicaStatus(v string) *ReplicaDescription {
14654	s.ReplicaStatus = &v
14655	return s
14656}
14657
14658// SetReplicaStatusDescription sets the ReplicaStatusDescription field's value.
14659func (s *ReplicaDescription) SetReplicaStatusDescription(v string) *ReplicaDescription {
14660	s.ReplicaStatusDescription = &v
14661	return s
14662}
14663
14664// SetReplicaStatusPercentProgress sets the ReplicaStatusPercentProgress field's value.
14665func (s *ReplicaDescription) SetReplicaStatusPercentProgress(v string) *ReplicaDescription {
14666	s.ReplicaStatusPercentProgress = &v
14667	return s
14668}
14669
14670// Represents the properties of a replica global secondary index.
14671type ReplicaGlobalSecondaryIndex struct {
14672	_ struct{} `type:"structure"`
14673
14674	// The name of the global secondary index.
14675	//
14676	// IndexName is a required field
14677	IndexName *string `min:"3" type:"string" required:"true"`
14678
14679	// Replica table GSI-specific provisioned throughput. If not specified, uses
14680	// the source table GSI's read capacity settings.
14681	ProvisionedThroughputOverride *ProvisionedThroughputOverride `type:"structure"`
14682}
14683
14684// String returns the string representation
14685func (s ReplicaGlobalSecondaryIndex) String() string {
14686	return awsutil.Prettify(s)
14687}
14688
14689// GoString returns the string representation
14690func (s ReplicaGlobalSecondaryIndex) GoString() string {
14691	return s.String()
14692}
14693
14694// Validate inspects the fields of the type to determine if they are valid.
14695func (s *ReplicaGlobalSecondaryIndex) Validate() error {
14696	invalidParams := request.ErrInvalidParams{Context: "ReplicaGlobalSecondaryIndex"}
14697	if s.IndexName == nil {
14698		invalidParams.Add(request.NewErrParamRequired("IndexName"))
14699	}
14700	if s.IndexName != nil && len(*s.IndexName) < 3 {
14701		invalidParams.Add(request.NewErrParamMinLen("IndexName", 3))
14702	}
14703	if s.ProvisionedThroughputOverride != nil {
14704		if err := s.ProvisionedThroughputOverride.Validate(); err != nil {
14705			invalidParams.AddNested("ProvisionedThroughputOverride", err.(request.ErrInvalidParams))
14706		}
14707	}
14708
14709	if invalidParams.Len() > 0 {
14710		return invalidParams
14711	}
14712	return nil
14713}
14714
14715// SetIndexName sets the IndexName field's value.
14716func (s *ReplicaGlobalSecondaryIndex) SetIndexName(v string) *ReplicaGlobalSecondaryIndex {
14717	s.IndexName = &v
14718	return s
14719}
14720
14721// SetProvisionedThroughputOverride sets the ProvisionedThroughputOverride field's value.
14722func (s *ReplicaGlobalSecondaryIndex) SetProvisionedThroughputOverride(v *ProvisionedThroughputOverride) *ReplicaGlobalSecondaryIndex {
14723	s.ProvisionedThroughputOverride = v
14724	return s
14725}
14726
14727// Represents the auto scaling configuration for a replica global secondary
14728// index.
14729type ReplicaGlobalSecondaryIndexAutoScalingDescription struct {
14730	_ struct{} `type:"structure"`
14731
14732	// The name of the global secondary index.
14733	IndexName *string `min:"3" type:"string"`
14734
14735	// The current state of the replica global secondary index:
14736	//
14737	//    * CREATING - The index is being created.
14738	//
14739	//    * UPDATING - The index is being updated.
14740	//
14741	//    * DELETING - The index is being deleted.
14742	//
14743	//    * ACTIVE - The index is ready for use.
14744	IndexStatus *string `type:"string" enum:"IndexStatus"`
14745
14746	// Represents the auto scaling settings for a global table or global secondary
14747	// index.
14748	ProvisionedReadCapacityAutoScalingSettings *AutoScalingSettingsDescription `type:"structure"`
14749
14750	// Represents the auto scaling settings for a global table or global secondary
14751	// index.
14752	ProvisionedWriteCapacityAutoScalingSettings *AutoScalingSettingsDescription `type:"structure"`
14753}
14754
14755// String returns the string representation
14756func (s ReplicaGlobalSecondaryIndexAutoScalingDescription) String() string {
14757	return awsutil.Prettify(s)
14758}
14759
14760// GoString returns the string representation
14761func (s ReplicaGlobalSecondaryIndexAutoScalingDescription) GoString() string {
14762	return s.String()
14763}
14764
14765// SetIndexName sets the IndexName field's value.
14766func (s *ReplicaGlobalSecondaryIndexAutoScalingDescription) SetIndexName(v string) *ReplicaGlobalSecondaryIndexAutoScalingDescription {
14767	s.IndexName = &v
14768	return s
14769}
14770
14771// SetIndexStatus sets the IndexStatus field's value.
14772func (s *ReplicaGlobalSecondaryIndexAutoScalingDescription) SetIndexStatus(v string) *ReplicaGlobalSecondaryIndexAutoScalingDescription {
14773	s.IndexStatus = &v
14774	return s
14775}
14776
14777// SetProvisionedReadCapacityAutoScalingSettings sets the ProvisionedReadCapacityAutoScalingSettings field's value.
14778func (s *ReplicaGlobalSecondaryIndexAutoScalingDescription) SetProvisionedReadCapacityAutoScalingSettings(v *AutoScalingSettingsDescription) *ReplicaGlobalSecondaryIndexAutoScalingDescription {
14779	s.ProvisionedReadCapacityAutoScalingSettings = v
14780	return s
14781}
14782
14783// SetProvisionedWriteCapacityAutoScalingSettings sets the ProvisionedWriteCapacityAutoScalingSettings field's value.
14784func (s *ReplicaGlobalSecondaryIndexAutoScalingDescription) SetProvisionedWriteCapacityAutoScalingSettings(v *AutoScalingSettingsDescription) *ReplicaGlobalSecondaryIndexAutoScalingDescription {
14785	s.ProvisionedWriteCapacityAutoScalingSettings = v
14786	return s
14787}
14788
14789// Represents the auto scaling settings of a global secondary index for a replica
14790// that will be modified.
14791type ReplicaGlobalSecondaryIndexAutoScalingUpdate struct {
14792	_ struct{} `type:"structure"`
14793
14794	// The name of the global secondary index.
14795	IndexName *string `min:"3" type:"string"`
14796
14797	// Represents the auto scaling settings to be modified for a global table or
14798	// global secondary index.
14799	ProvisionedReadCapacityAutoScalingUpdate *AutoScalingSettingsUpdate `type:"structure"`
14800}
14801
14802// String returns the string representation
14803func (s ReplicaGlobalSecondaryIndexAutoScalingUpdate) String() string {
14804	return awsutil.Prettify(s)
14805}
14806
14807// GoString returns the string representation
14808func (s ReplicaGlobalSecondaryIndexAutoScalingUpdate) GoString() string {
14809	return s.String()
14810}
14811
14812// Validate inspects the fields of the type to determine if they are valid.
14813func (s *ReplicaGlobalSecondaryIndexAutoScalingUpdate) Validate() error {
14814	invalidParams := request.ErrInvalidParams{Context: "ReplicaGlobalSecondaryIndexAutoScalingUpdate"}
14815	if s.IndexName != nil && len(*s.IndexName) < 3 {
14816		invalidParams.Add(request.NewErrParamMinLen("IndexName", 3))
14817	}
14818	if s.ProvisionedReadCapacityAutoScalingUpdate != nil {
14819		if err := s.ProvisionedReadCapacityAutoScalingUpdate.Validate(); err != nil {
14820			invalidParams.AddNested("ProvisionedReadCapacityAutoScalingUpdate", err.(request.ErrInvalidParams))
14821		}
14822	}
14823
14824	if invalidParams.Len() > 0 {
14825		return invalidParams
14826	}
14827	return nil
14828}
14829
14830// SetIndexName sets the IndexName field's value.
14831func (s *ReplicaGlobalSecondaryIndexAutoScalingUpdate) SetIndexName(v string) *ReplicaGlobalSecondaryIndexAutoScalingUpdate {
14832	s.IndexName = &v
14833	return s
14834}
14835
14836// SetProvisionedReadCapacityAutoScalingUpdate sets the ProvisionedReadCapacityAutoScalingUpdate field's value.
14837func (s *ReplicaGlobalSecondaryIndexAutoScalingUpdate) SetProvisionedReadCapacityAutoScalingUpdate(v *AutoScalingSettingsUpdate) *ReplicaGlobalSecondaryIndexAutoScalingUpdate {
14838	s.ProvisionedReadCapacityAutoScalingUpdate = v
14839	return s
14840}
14841
14842// Represents the properties of a replica global secondary index.
14843type ReplicaGlobalSecondaryIndexDescription struct {
14844	_ struct{} `type:"structure"`
14845
14846	// The name of the global secondary index.
14847	IndexName *string `min:"3" type:"string"`
14848
14849	// If not described, uses the source table GSI's read capacity settings.
14850	ProvisionedThroughputOverride *ProvisionedThroughputOverride `type:"structure"`
14851}
14852
14853// String returns the string representation
14854func (s ReplicaGlobalSecondaryIndexDescription) String() string {
14855	return awsutil.Prettify(s)
14856}
14857
14858// GoString returns the string representation
14859func (s ReplicaGlobalSecondaryIndexDescription) GoString() string {
14860	return s.String()
14861}
14862
14863// SetIndexName sets the IndexName field's value.
14864func (s *ReplicaGlobalSecondaryIndexDescription) SetIndexName(v string) *ReplicaGlobalSecondaryIndexDescription {
14865	s.IndexName = &v
14866	return s
14867}
14868
14869// SetProvisionedThroughputOverride sets the ProvisionedThroughputOverride field's value.
14870func (s *ReplicaGlobalSecondaryIndexDescription) SetProvisionedThroughputOverride(v *ProvisionedThroughputOverride) *ReplicaGlobalSecondaryIndexDescription {
14871	s.ProvisionedThroughputOverride = v
14872	return s
14873}
14874
14875// Represents the properties of a global secondary index.
14876type ReplicaGlobalSecondaryIndexSettingsDescription struct {
14877	_ struct{} `type:"structure"`
14878
14879	// The name of the global secondary index. The name must be unique among all
14880	// other indexes on this table.
14881	//
14882	// IndexName is a required field
14883	IndexName *string `min:"3" type:"string" required:"true"`
14884
14885	// The current status of the global secondary index:
14886	//
14887	//    * CREATING - The global secondary index is being created.
14888	//
14889	//    * UPDATING - The global secondary index is being updated.
14890	//
14891	//    * DELETING - The global secondary index is being deleted.
14892	//
14893	//    * ACTIVE - The global secondary index is ready for use.
14894	IndexStatus *string `type:"string" enum:"IndexStatus"`
14895
14896	// Auto scaling settings for a global secondary index replica's read capacity
14897	// units.
14898	ProvisionedReadCapacityAutoScalingSettings *AutoScalingSettingsDescription `type:"structure"`
14899
14900	// The maximum number of strongly consistent reads consumed per second before
14901	// DynamoDB returns a ThrottlingException.
14902	ProvisionedReadCapacityUnits *int64 `min:"1" type:"long"`
14903
14904	// Auto scaling settings for a global secondary index replica's write capacity
14905	// units.
14906	ProvisionedWriteCapacityAutoScalingSettings *AutoScalingSettingsDescription `type:"structure"`
14907
14908	// The maximum number of writes consumed per second before DynamoDB returns
14909	// a ThrottlingException.
14910	ProvisionedWriteCapacityUnits *int64 `min:"1" type:"long"`
14911}
14912
14913// String returns the string representation
14914func (s ReplicaGlobalSecondaryIndexSettingsDescription) String() string {
14915	return awsutil.Prettify(s)
14916}
14917
14918// GoString returns the string representation
14919func (s ReplicaGlobalSecondaryIndexSettingsDescription) GoString() string {
14920	return s.String()
14921}
14922
14923// SetIndexName sets the IndexName field's value.
14924func (s *ReplicaGlobalSecondaryIndexSettingsDescription) SetIndexName(v string) *ReplicaGlobalSecondaryIndexSettingsDescription {
14925	s.IndexName = &v
14926	return s
14927}
14928
14929// SetIndexStatus sets the IndexStatus field's value.
14930func (s *ReplicaGlobalSecondaryIndexSettingsDescription) SetIndexStatus(v string) *ReplicaGlobalSecondaryIndexSettingsDescription {
14931	s.IndexStatus = &v
14932	return s
14933}
14934
14935// SetProvisionedReadCapacityAutoScalingSettings sets the ProvisionedReadCapacityAutoScalingSettings field's value.
14936func (s *ReplicaGlobalSecondaryIndexSettingsDescription) SetProvisionedReadCapacityAutoScalingSettings(v *AutoScalingSettingsDescription) *ReplicaGlobalSecondaryIndexSettingsDescription {
14937	s.ProvisionedReadCapacityAutoScalingSettings = v
14938	return s
14939}
14940
14941// SetProvisionedReadCapacityUnits sets the ProvisionedReadCapacityUnits field's value.
14942func (s *ReplicaGlobalSecondaryIndexSettingsDescription) SetProvisionedReadCapacityUnits(v int64) *ReplicaGlobalSecondaryIndexSettingsDescription {
14943	s.ProvisionedReadCapacityUnits = &v
14944	return s
14945}
14946
14947// SetProvisionedWriteCapacityAutoScalingSettings sets the ProvisionedWriteCapacityAutoScalingSettings field's value.
14948func (s *ReplicaGlobalSecondaryIndexSettingsDescription) SetProvisionedWriteCapacityAutoScalingSettings(v *AutoScalingSettingsDescription) *ReplicaGlobalSecondaryIndexSettingsDescription {
14949	s.ProvisionedWriteCapacityAutoScalingSettings = v
14950	return s
14951}
14952
14953// SetProvisionedWriteCapacityUnits sets the ProvisionedWriteCapacityUnits field's value.
14954func (s *ReplicaGlobalSecondaryIndexSettingsDescription) SetProvisionedWriteCapacityUnits(v int64) *ReplicaGlobalSecondaryIndexSettingsDescription {
14955	s.ProvisionedWriteCapacityUnits = &v
14956	return s
14957}
14958
14959// Represents the settings of a global secondary index for a global table that
14960// will be modified.
14961type ReplicaGlobalSecondaryIndexSettingsUpdate struct {
14962	_ struct{} `type:"structure"`
14963
14964	// The name of the global secondary index. The name must be unique among all
14965	// other indexes on this table.
14966	//
14967	// IndexName is a required field
14968	IndexName *string `min:"3" type:"string" required:"true"`
14969
14970	// Auto scaling settings for managing a global secondary index replica's read
14971	// capacity units.
14972	ProvisionedReadCapacityAutoScalingSettingsUpdate *AutoScalingSettingsUpdate `type:"structure"`
14973
14974	// The maximum number of strongly consistent reads consumed per second before
14975	// DynamoDB returns a ThrottlingException.
14976	ProvisionedReadCapacityUnits *int64 `min:"1" type:"long"`
14977}
14978
14979// String returns the string representation
14980func (s ReplicaGlobalSecondaryIndexSettingsUpdate) String() string {
14981	return awsutil.Prettify(s)
14982}
14983
14984// GoString returns the string representation
14985func (s ReplicaGlobalSecondaryIndexSettingsUpdate) GoString() string {
14986	return s.String()
14987}
14988
14989// Validate inspects the fields of the type to determine if they are valid.
14990func (s *ReplicaGlobalSecondaryIndexSettingsUpdate) Validate() error {
14991	invalidParams := request.ErrInvalidParams{Context: "ReplicaGlobalSecondaryIndexSettingsUpdate"}
14992	if s.IndexName == nil {
14993		invalidParams.Add(request.NewErrParamRequired("IndexName"))
14994	}
14995	if s.IndexName != nil && len(*s.IndexName) < 3 {
14996		invalidParams.Add(request.NewErrParamMinLen("IndexName", 3))
14997	}
14998	if s.ProvisionedReadCapacityUnits != nil && *s.ProvisionedReadCapacityUnits < 1 {
14999		invalidParams.Add(request.NewErrParamMinValue("ProvisionedReadCapacityUnits", 1))
15000	}
15001	if s.ProvisionedReadCapacityAutoScalingSettingsUpdate != nil {
15002		if err := s.ProvisionedReadCapacityAutoScalingSettingsUpdate.Validate(); err != nil {
15003			invalidParams.AddNested("ProvisionedReadCapacityAutoScalingSettingsUpdate", err.(request.ErrInvalidParams))
15004		}
15005	}
15006
15007	if invalidParams.Len() > 0 {
15008		return invalidParams
15009	}
15010	return nil
15011}
15012
15013// SetIndexName sets the IndexName field's value.
15014func (s *ReplicaGlobalSecondaryIndexSettingsUpdate) SetIndexName(v string) *ReplicaGlobalSecondaryIndexSettingsUpdate {
15015	s.IndexName = &v
15016	return s
15017}
15018
15019// SetProvisionedReadCapacityAutoScalingSettingsUpdate sets the ProvisionedReadCapacityAutoScalingSettingsUpdate field's value.
15020func (s *ReplicaGlobalSecondaryIndexSettingsUpdate) SetProvisionedReadCapacityAutoScalingSettingsUpdate(v *AutoScalingSettingsUpdate) *ReplicaGlobalSecondaryIndexSettingsUpdate {
15021	s.ProvisionedReadCapacityAutoScalingSettingsUpdate = v
15022	return s
15023}
15024
15025// SetProvisionedReadCapacityUnits sets the ProvisionedReadCapacityUnits field's value.
15026func (s *ReplicaGlobalSecondaryIndexSettingsUpdate) SetProvisionedReadCapacityUnits(v int64) *ReplicaGlobalSecondaryIndexSettingsUpdate {
15027	s.ProvisionedReadCapacityUnits = &v
15028	return s
15029}
15030
15031// The specified replica is no longer part of the global table.
15032type ReplicaNotFoundException struct {
15033	_            struct{}                  `type:"structure"`
15034	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`
15035
15036	Message_ *string `locationName:"message" type:"string"`
15037}
15038
15039// String returns the string representation
15040func (s ReplicaNotFoundException) String() string {
15041	return awsutil.Prettify(s)
15042}
15043
15044// GoString returns the string representation
15045func (s ReplicaNotFoundException) GoString() string {
15046	return s.String()
15047}
15048
15049func newErrorReplicaNotFoundException(v protocol.ResponseMetadata) error {
15050	return &ReplicaNotFoundException{
15051		RespMetadata: v,
15052	}
15053}
15054
15055// Code returns the exception type name.
15056func (s *ReplicaNotFoundException) Code() string {
15057	return "ReplicaNotFoundException"
15058}
15059
15060// Message returns the exception's message.
15061func (s *ReplicaNotFoundException) Message() string {
15062	if s.Message_ != nil {
15063		return *s.Message_
15064	}
15065	return ""
15066}
15067
15068// OrigErr always returns nil, satisfies awserr.Error interface.
15069func (s *ReplicaNotFoundException) OrigErr() error {
15070	return nil
15071}
15072
15073func (s *ReplicaNotFoundException) Error() string {
15074	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
15075}
15076
15077// Status code returns the HTTP status code for the request's response error.
15078func (s *ReplicaNotFoundException) StatusCode() int {
15079	return s.RespMetadata.StatusCode
15080}
15081
15082// RequestID returns the service's response RequestID for request.
15083func (s *ReplicaNotFoundException) RequestID() string {
15084	return s.RespMetadata.RequestID
15085}
15086
15087// Represents the properties of a replica.
15088type ReplicaSettingsDescription struct {
15089	_ struct{} `type:"structure"`
15090
15091	// The Region name of the replica.
15092	//
15093	// RegionName is a required field
15094	RegionName *string `type:"string" required:"true"`
15095
15096	// The read/write capacity mode of the replica.
15097	ReplicaBillingModeSummary *BillingModeSummary `type:"structure"`
15098
15099	// Replica global secondary index settings for the global table.
15100	ReplicaGlobalSecondaryIndexSettings []*ReplicaGlobalSecondaryIndexSettingsDescription `type:"list"`
15101
15102	// Auto scaling settings for a global table replica's read capacity units.
15103	ReplicaProvisionedReadCapacityAutoScalingSettings *AutoScalingSettingsDescription `type:"structure"`
15104
15105	// The maximum number of strongly consistent reads consumed per second before
15106	// DynamoDB returns a ThrottlingException. For more information, see Specifying
15107	// Read and Write Requirements (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/WorkingWithTables.html#ProvisionedThroughput)
15108	// in the Amazon DynamoDB Developer Guide.
15109	ReplicaProvisionedReadCapacityUnits *int64 `type:"long"`
15110
15111	// Auto scaling settings for a global table replica's write capacity units.
15112	ReplicaProvisionedWriteCapacityAutoScalingSettings *AutoScalingSettingsDescription `type:"structure"`
15113
15114	// The maximum number of writes consumed per second before DynamoDB returns
15115	// a ThrottlingException. For more information, see Specifying Read and Write
15116	// Requirements (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/WorkingWithTables.html#ProvisionedThroughput)
15117	// in the Amazon DynamoDB Developer Guide.
15118	ReplicaProvisionedWriteCapacityUnits *int64 `type:"long"`
15119
15120	// The current state of the Region:
15121	//
15122	//    * CREATING - The Region is being created.
15123	//
15124	//    * UPDATING - The Region is being updated.
15125	//
15126	//    * DELETING - The Region is being deleted.
15127	//
15128	//    * ACTIVE - The Region is ready for use.
15129	ReplicaStatus *string `type:"string" enum:"ReplicaStatus"`
15130}
15131
15132// String returns the string representation
15133func (s ReplicaSettingsDescription) String() string {
15134	return awsutil.Prettify(s)
15135}
15136
15137// GoString returns the string representation
15138func (s ReplicaSettingsDescription) GoString() string {
15139	return s.String()
15140}
15141
15142// SetRegionName sets the RegionName field's value.
15143func (s *ReplicaSettingsDescription) SetRegionName(v string) *ReplicaSettingsDescription {
15144	s.RegionName = &v
15145	return s
15146}
15147
15148// SetReplicaBillingModeSummary sets the ReplicaBillingModeSummary field's value.
15149func (s *ReplicaSettingsDescription) SetReplicaBillingModeSummary(v *BillingModeSummary) *ReplicaSettingsDescription {
15150	s.ReplicaBillingModeSummary = v
15151	return s
15152}
15153
15154// SetReplicaGlobalSecondaryIndexSettings sets the ReplicaGlobalSecondaryIndexSettings field's value.
15155func (s *ReplicaSettingsDescription) SetReplicaGlobalSecondaryIndexSettings(v []*ReplicaGlobalSecondaryIndexSettingsDescription) *ReplicaSettingsDescription {
15156	s.ReplicaGlobalSecondaryIndexSettings = v
15157	return s
15158}
15159
15160// SetReplicaProvisionedReadCapacityAutoScalingSettings sets the ReplicaProvisionedReadCapacityAutoScalingSettings field's value.
15161func (s *ReplicaSettingsDescription) SetReplicaProvisionedReadCapacityAutoScalingSettings(v *AutoScalingSettingsDescription) *ReplicaSettingsDescription {
15162	s.ReplicaProvisionedReadCapacityAutoScalingSettings = v
15163	return s
15164}
15165
15166// SetReplicaProvisionedReadCapacityUnits sets the ReplicaProvisionedReadCapacityUnits field's value.
15167func (s *ReplicaSettingsDescription) SetReplicaProvisionedReadCapacityUnits(v int64) *ReplicaSettingsDescription {
15168	s.ReplicaProvisionedReadCapacityUnits = &v
15169	return s
15170}
15171
15172// SetReplicaProvisionedWriteCapacityAutoScalingSettings sets the ReplicaProvisionedWriteCapacityAutoScalingSettings field's value.
15173func (s *ReplicaSettingsDescription) SetReplicaProvisionedWriteCapacityAutoScalingSettings(v *AutoScalingSettingsDescription) *ReplicaSettingsDescription {
15174	s.ReplicaProvisionedWriteCapacityAutoScalingSettings = v
15175	return s
15176}
15177
15178// SetReplicaProvisionedWriteCapacityUnits sets the ReplicaProvisionedWriteCapacityUnits field's value.
15179func (s *ReplicaSettingsDescription) SetReplicaProvisionedWriteCapacityUnits(v int64) *ReplicaSettingsDescription {
15180	s.ReplicaProvisionedWriteCapacityUnits = &v
15181	return s
15182}
15183
15184// SetReplicaStatus sets the ReplicaStatus field's value.
15185func (s *ReplicaSettingsDescription) SetReplicaStatus(v string) *ReplicaSettingsDescription {
15186	s.ReplicaStatus = &v
15187	return s
15188}
15189
15190// Represents the settings for a global table in a Region that will be modified.
15191type ReplicaSettingsUpdate struct {
15192	_ struct{} `type:"structure"`
15193
15194	// The Region of the replica to be added.
15195	//
15196	// RegionName is a required field
15197	RegionName *string `type:"string" required:"true"`
15198
15199	// Represents the settings of a global secondary index for a global table that
15200	// will be modified.
15201	ReplicaGlobalSecondaryIndexSettingsUpdate []*ReplicaGlobalSecondaryIndexSettingsUpdate `min:"1" type:"list"`
15202
15203	// Auto scaling settings for managing a global table replica's read capacity
15204	// units.
15205	ReplicaProvisionedReadCapacityAutoScalingSettingsUpdate *AutoScalingSettingsUpdate `type:"structure"`
15206
15207	// The maximum number of strongly consistent reads consumed per second before
15208	// DynamoDB returns a ThrottlingException. For more information, see Specifying
15209	// Read and Write Requirements (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/WorkingWithTables.html#ProvisionedThroughput)
15210	// in the Amazon DynamoDB Developer Guide.
15211	ReplicaProvisionedReadCapacityUnits *int64 `min:"1" type:"long"`
15212}
15213
15214// String returns the string representation
15215func (s ReplicaSettingsUpdate) String() string {
15216	return awsutil.Prettify(s)
15217}
15218
15219// GoString returns the string representation
15220func (s ReplicaSettingsUpdate) GoString() string {
15221	return s.String()
15222}
15223
15224// Validate inspects the fields of the type to determine if they are valid.
15225func (s *ReplicaSettingsUpdate) Validate() error {
15226	invalidParams := request.ErrInvalidParams{Context: "ReplicaSettingsUpdate"}
15227	if s.RegionName == nil {
15228		invalidParams.Add(request.NewErrParamRequired("RegionName"))
15229	}
15230	if s.ReplicaGlobalSecondaryIndexSettingsUpdate != nil && len(s.ReplicaGlobalSecondaryIndexSettingsUpdate) < 1 {
15231		invalidParams.Add(request.NewErrParamMinLen("ReplicaGlobalSecondaryIndexSettingsUpdate", 1))
15232	}
15233	if s.ReplicaProvisionedReadCapacityUnits != nil && *s.ReplicaProvisionedReadCapacityUnits < 1 {
15234		invalidParams.Add(request.NewErrParamMinValue("ReplicaProvisionedReadCapacityUnits", 1))
15235	}
15236	if s.ReplicaGlobalSecondaryIndexSettingsUpdate != nil {
15237		for i, v := range s.ReplicaGlobalSecondaryIndexSettingsUpdate {
15238			if v == nil {
15239				continue
15240			}
15241			if err := v.Validate(); err != nil {
15242				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "ReplicaGlobalSecondaryIndexSettingsUpdate", i), err.(request.ErrInvalidParams))
15243			}
15244		}
15245	}
15246	if s.ReplicaProvisionedReadCapacityAutoScalingSettingsUpdate != nil {
15247		if err := s.ReplicaProvisionedReadCapacityAutoScalingSettingsUpdate.Validate(); err != nil {
15248			invalidParams.AddNested("ReplicaProvisionedReadCapacityAutoScalingSettingsUpdate", err.(request.ErrInvalidParams))
15249		}
15250	}
15251
15252	if invalidParams.Len() > 0 {
15253		return invalidParams
15254	}
15255	return nil
15256}
15257
15258// SetRegionName sets the RegionName field's value.
15259func (s *ReplicaSettingsUpdate) SetRegionName(v string) *ReplicaSettingsUpdate {
15260	s.RegionName = &v
15261	return s
15262}
15263
15264// SetReplicaGlobalSecondaryIndexSettingsUpdate sets the ReplicaGlobalSecondaryIndexSettingsUpdate field's value.
15265func (s *ReplicaSettingsUpdate) SetReplicaGlobalSecondaryIndexSettingsUpdate(v []*ReplicaGlobalSecondaryIndexSettingsUpdate) *ReplicaSettingsUpdate {
15266	s.ReplicaGlobalSecondaryIndexSettingsUpdate = v
15267	return s
15268}
15269
15270// SetReplicaProvisionedReadCapacityAutoScalingSettingsUpdate sets the ReplicaProvisionedReadCapacityAutoScalingSettingsUpdate field's value.
15271func (s *ReplicaSettingsUpdate) SetReplicaProvisionedReadCapacityAutoScalingSettingsUpdate(v *AutoScalingSettingsUpdate) *ReplicaSettingsUpdate {
15272	s.ReplicaProvisionedReadCapacityAutoScalingSettingsUpdate = v
15273	return s
15274}
15275
15276// SetReplicaProvisionedReadCapacityUnits sets the ReplicaProvisionedReadCapacityUnits field's value.
15277func (s *ReplicaSettingsUpdate) SetReplicaProvisionedReadCapacityUnits(v int64) *ReplicaSettingsUpdate {
15278	s.ReplicaProvisionedReadCapacityUnits = &v
15279	return s
15280}
15281
15282// Represents one of the following:
15283//
15284//    * A new replica to be added to an existing global table.
15285//
15286//    * New parameters for an existing replica.
15287//
15288//    * An existing replica to be removed from an existing global table.
15289type ReplicaUpdate struct {
15290	_ struct{} `type:"structure"`
15291
15292	// The parameters required for creating a replica on an existing global table.
15293	Create *CreateReplicaAction `type:"structure"`
15294
15295	// The name of the existing replica to be removed.
15296	Delete *DeleteReplicaAction `type:"structure"`
15297}
15298
15299// String returns the string representation
15300func (s ReplicaUpdate) String() string {
15301	return awsutil.Prettify(s)
15302}
15303
15304// GoString returns the string representation
15305func (s ReplicaUpdate) GoString() string {
15306	return s.String()
15307}
15308
15309// Validate inspects the fields of the type to determine if they are valid.
15310func (s *ReplicaUpdate) Validate() error {
15311	invalidParams := request.ErrInvalidParams{Context: "ReplicaUpdate"}
15312	if s.Create != nil {
15313		if err := s.Create.Validate(); err != nil {
15314			invalidParams.AddNested("Create", err.(request.ErrInvalidParams))
15315		}
15316	}
15317	if s.Delete != nil {
15318		if err := s.Delete.Validate(); err != nil {
15319			invalidParams.AddNested("Delete", err.(request.ErrInvalidParams))
15320		}
15321	}
15322
15323	if invalidParams.Len() > 0 {
15324		return invalidParams
15325	}
15326	return nil
15327}
15328
15329// SetCreate sets the Create field's value.
15330func (s *ReplicaUpdate) SetCreate(v *CreateReplicaAction) *ReplicaUpdate {
15331	s.Create = v
15332	return s
15333}
15334
15335// SetDelete sets the Delete field's value.
15336func (s *ReplicaUpdate) SetDelete(v *DeleteReplicaAction) *ReplicaUpdate {
15337	s.Delete = v
15338	return s
15339}
15340
15341// Represents one of the following:
15342//
15343//    * A new replica to be added to an existing regional table or global table.
15344//    This request invokes the CreateTableReplica action in the destination
15345//    Region.
15346//
15347//    * New parameters for an existing replica. This request invokes the UpdateTable
15348//    action in the destination Region.
15349//
15350//    * An existing replica to be deleted. The request invokes the DeleteTableReplica
15351//    action in the destination Region, deleting the replica and all if its
15352//    items in the destination Region.
15353type ReplicationGroupUpdate struct {
15354	_ struct{} `type:"structure"`
15355
15356	// The parameters required for creating a replica for the table.
15357	Create *CreateReplicationGroupMemberAction `type:"structure"`
15358
15359	// The parameters required for deleting a replica for the table.
15360	Delete *DeleteReplicationGroupMemberAction `type:"structure"`
15361
15362	// The parameters required for updating a replica for the table.
15363	Update *UpdateReplicationGroupMemberAction `type:"structure"`
15364}
15365
15366// String returns the string representation
15367func (s ReplicationGroupUpdate) String() string {
15368	return awsutil.Prettify(s)
15369}
15370
15371// GoString returns the string representation
15372func (s ReplicationGroupUpdate) GoString() string {
15373	return s.String()
15374}
15375
15376// Validate inspects the fields of the type to determine if they are valid.
15377func (s *ReplicationGroupUpdate) Validate() error {
15378	invalidParams := request.ErrInvalidParams{Context: "ReplicationGroupUpdate"}
15379	if s.Create != nil {
15380		if err := s.Create.Validate(); err != nil {
15381			invalidParams.AddNested("Create", err.(request.ErrInvalidParams))
15382		}
15383	}
15384	if s.Delete != nil {
15385		if err := s.Delete.Validate(); err != nil {
15386			invalidParams.AddNested("Delete", err.(request.ErrInvalidParams))
15387		}
15388	}
15389	if s.Update != nil {
15390		if err := s.Update.Validate(); err != nil {
15391			invalidParams.AddNested("Update", err.(request.ErrInvalidParams))
15392		}
15393	}
15394
15395	if invalidParams.Len() > 0 {
15396		return invalidParams
15397	}
15398	return nil
15399}
15400
15401// SetCreate sets the Create field's value.
15402func (s *ReplicationGroupUpdate) SetCreate(v *CreateReplicationGroupMemberAction) *ReplicationGroupUpdate {
15403	s.Create = v
15404	return s
15405}
15406
15407// SetDelete sets the Delete field's value.
15408func (s *ReplicationGroupUpdate) SetDelete(v *DeleteReplicationGroupMemberAction) *ReplicationGroupUpdate {
15409	s.Delete = v
15410	return s
15411}
15412
15413// SetUpdate sets the Update field's value.
15414func (s *ReplicationGroupUpdate) SetUpdate(v *UpdateReplicationGroupMemberAction) *ReplicationGroupUpdate {
15415	s.Update = v
15416	return s
15417}
15418
15419// Throughput exceeds the current throughput limit for your account. Please
15420// contact AWS Support at AWS Support (https://aws.amazon.com/support) to request
15421// a limit increase.
15422type RequestLimitExceeded struct {
15423	_            struct{}                  `type:"structure"`
15424	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`
15425
15426	Message_ *string `locationName:"message" type:"string"`
15427}
15428
15429// String returns the string representation
15430func (s RequestLimitExceeded) String() string {
15431	return awsutil.Prettify(s)
15432}
15433
15434// GoString returns the string representation
15435func (s RequestLimitExceeded) GoString() string {
15436	return s.String()
15437}
15438
15439func newErrorRequestLimitExceeded(v protocol.ResponseMetadata) error {
15440	return &RequestLimitExceeded{
15441		RespMetadata: v,
15442	}
15443}
15444
15445// Code returns the exception type name.
15446func (s *RequestLimitExceeded) Code() string {
15447	return "RequestLimitExceeded"
15448}
15449
15450// Message returns the exception's message.
15451func (s *RequestLimitExceeded) Message() string {
15452	if s.Message_ != nil {
15453		return *s.Message_
15454	}
15455	return ""
15456}
15457
15458// OrigErr always returns nil, satisfies awserr.Error interface.
15459func (s *RequestLimitExceeded) OrigErr() error {
15460	return nil
15461}
15462
15463func (s *RequestLimitExceeded) Error() string {
15464	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
15465}
15466
15467// Status code returns the HTTP status code for the request's response error.
15468func (s *RequestLimitExceeded) StatusCode() int {
15469	return s.RespMetadata.StatusCode
15470}
15471
15472// RequestID returns the service's response RequestID for request.
15473func (s *RequestLimitExceeded) RequestID() string {
15474	return s.RespMetadata.RequestID
15475}
15476
15477// The operation conflicts with the resource's availability. For example, you
15478// attempted to recreate an existing table, or tried to delete a table currently
15479// in the CREATING state.
15480type ResourceInUseException struct {
15481	_            struct{}                  `type:"structure"`
15482	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`
15483
15484	// The resource which is being attempted to be changed is in use.
15485	Message_ *string `locationName:"message" type:"string"`
15486}
15487
15488// String returns the string representation
15489func (s ResourceInUseException) String() string {
15490	return awsutil.Prettify(s)
15491}
15492
15493// GoString returns the string representation
15494func (s ResourceInUseException) GoString() string {
15495	return s.String()
15496}
15497
15498func newErrorResourceInUseException(v protocol.ResponseMetadata) error {
15499	return &ResourceInUseException{
15500		RespMetadata: v,
15501	}
15502}
15503
15504// Code returns the exception type name.
15505func (s *ResourceInUseException) Code() string {
15506	return "ResourceInUseException"
15507}
15508
15509// Message returns the exception's message.
15510func (s *ResourceInUseException) Message() string {
15511	if s.Message_ != nil {
15512		return *s.Message_
15513	}
15514	return ""
15515}
15516
15517// OrigErr always returns nil, satisfies awserr.Error interface.
15518func (s *ResourceInUseException) OrigErr() error {
15519	return nil
15520}
15521
15522func (s *ResourceInUseException) Error() string {
15523	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
15524}
15525
15526// Status code returns the HTTP status code for the request's response error.
15527func (s *ResourceInUseException) StatusCode() int {
15528	return s.RespMetadata.StatusCode
15529}
15530
15531// RequestID returns the service's response RequestID for request.
15532func (s *ResourceInUseException) RequestID() string {
15533	return s.RespMetadata.RequestID
15534}
15535
15536// The operation tried to access a nonexistent table or index. The resource
15537// might not be specified correctly, or its status might not be ACTIVE.
15538type ResourceNotFoundException struct {
15539	_            struct{}                  `type:"structure"`
15540	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`
15541
15542	// The resource which is being requested does not exist.
15543	Message_ *string `locationName:"message" type:"string"`
15544}
15545
15546// String returns the string representation
15547func (s ResourceNotFoundException) String() string {
15548	return awsutil.Prettify(s)
15549}
15550
15551// GoString returns the string representation
15552func (s ResourceNotFoundException) GoString() string {
15553	return s.String()
15554}
15555
15556func newErrorResourceNotFoundException(v protocol.ResponseMetadata) error {
15557	return &ResourceNotFoundException{
15558		RespMetadata: v,
15559	}
15560}
15561
15562// Code returns the exception type name.
15563func (s *ResourceNotFoundException) Code() string {
15564	return "ResourceNotFoundException"
15565}
15566
15567// Message returns the exception's message.
15568func (s *ResourceNotFoundException) Message() string {
15569	if s.Message_ != nil {
15570		return *s.Message_
15571	}
15572	return ""
15573}
15574
15575// OrigErr always returns nil, satisfies awserr.Error interface.
15576func (s *ResourceNotFoundException) OrigErr() error {
15577	return nil
15578}
15579
15580func (s *ResourceNotFoundException) Error() string {
15581	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
15582}
15583
15584// Status code returns the HTTP status code for the request's response error.
15585func (s *ResourceNotFoundException) StatusCode() int {
15586	return s.RespMetadata.StatusCode
15587}
15588
15589// RequestID returns the service's response RequestID for request.
15590func (s *ResourceNotFoundException) RequestID() string {
15591	return s.RespMetadata.RequestID
15592}
15593
15594// Contains details for the restore.
15595type RestoreSummary struct {
15596	_ struct{} `type:"structure"`
15597
15598	// Point in time or source backup time.
15599	//
15600	// RestoreDateTime is a required field
15601	RestoreDateTime *time.Time `type:"timestamp" required:"true"`
15602
15603	// Indicates if a restore is in progress or not.
15604	//
15605	// RestoreInProgress is a required field
15606	RestoreInProgress *bool `type:"boolean" required:"true"`
15607
15608	// The Amazon Resource Name (ARN) of the backup from which the table was restored.
15609	SourceBackupArn *string `min:"37" type:"string"`
15610
15611	// The ARN of the source table of the backup that is being restored.
15612	SourceTableArn *string `type:"string"`
15613}
15614
15615// String returns the string representation
15616func (s RestoreSummary) String() string {
15617	return awsutil.Prettify(s)
15618}
15619
15620// GoString returns the string representation
15621func (s RestoreSummary) GoString() string {
15622	return s.String()
15623}
15624
15625// SetRestoreDateTime sets the RestoreDateTime field's value.
15626func (s *RestoreSummary) SetRestoreDateTime(v time.Time) *RestoreSummary {
15627	s.RestoreDateTime = &v
15628	return s
15629}
15630
15631// SetRestoreInProgress sets the RestoreInProgress field's value.
15632func (s *RestoreSummary) SetRestoreInProgress(v bool) *RestoreSummary {
15633	s.RestoreInProgress = &v
15634	return s
15635}
15636
15637// SetSourceBackupArn sets the SourceBackupArn field's value.
15638func (s *RestoreSummary) SetSourceBackupArn(v string) *RestoreSummary {
15639	s.SourceBackupArn = &v
15640	return s
15641}
15642
15643// SetSourceTableArn sets the SourceTableArn field's value.
15644func (s *RestoreSummary) SetSourceTableArn(v string) *RestoreSummary {
15645	s.SourceTableArn = &v
15646	return s
15647}
15648
15649type RestoreTableFromBackupInput struct {
15650	_ struct{} `type:"structure"`
15651
15652	// The Amazon Resource Name (ARN) associated with the backup.
15653	//
15654	// BackupArn is a required field
15655	BackupArn *string `min:"37" type:"string" required:"true"`
15656
15657	// The billing mode of the restored table.
15658	BillingModeOverride *string `type:"string" enum:"BillingMode"`
15659
15660	// List of global secondary indexes for the restored table. The indexes provided
15661	// should match existing secondary indexes. You can choose to exclude some or
15662	// all of the indexes at the time of restore.
15663	GlobalSecondaryIndexOverride []*GlobalSecondaryIndex `type:"list"`
15664
15665	// List of local secondary indexes for the restored table. The indexes provided
15666	// should match existing secondary indexes. You can choose to exclude some or
15667	// all of the indexes at the time of restore.
15668	LocalSecondaryIndexOverride []*LocalSecondaryIndex `type:"list"`
15669
15670	// Provisioned throughput settings for the restored table.
15671	ProvisionedThroughputOverride *ProvisionedThroughput `type:"structure"`
15672
15673	// The new server-side encryption settings for the restored table.
15674	SSESpecificationOverride *SSESpecification `type:"structure"`
15675
15676	// The name of the new table to which the backup must be restored.
15677	//
15678	// TargetTableName is a required field
15679	TargetTableName *string `min:"3" type:"string" required:"true"`
15680}
15681
15682// String returns the string representation
15683func (s RestoreTableFromBackupInput) String() string {
15684	return awsutil.Prettify(s)
15685}
15686
15687// GoString returns the string representation
15688func (s RestoreTableFromBackupInput) GoString() string {
15689	return s.String()
15690}
15691
15692// Validate inspects the fields of the type to determine if they are valid.
15693func (s *RestoreTableFromBackupInput) Validate() error {
15694	invalidParams := request.ErrInvalidParams{Context: "RestoreTableFromBackupInput"}
15695	if s.BackupArn == nil {
15696		invalidParams.Add(request.NewErrParamRequired("BackupArn"))
15697	}
15698	if s.BackupArn != nil && len(*s.BackupArn) < 37 {
15699		invalidParams.Add(request.NewErrParamMinLen("BackupArn", 37))
15700	}
15701	if s.TargetTableName == nil {
15702		invalidParams.Add(request.NewErrParamRequired("TargetTableName"))
15703	}
15704	if s.TargetTableName != nil && len(*s.TargetTableName) < 3 {
15705		invalidParams.Add(request.NewErrParamMinLen("TargetTableName", 3))
15706	}
15707	if s.GlobalSecondaryIndexOverride != nil {
15708		for i, v := range s.GlobalSecondaryIndexOverride {
15709			if v == nil {
15710				continue
15711			}
15712			if err := v.Validate(); err != nil {
15713				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "GlobalSecondaryIndexOverride", i), err.(request.ErrInvalidParams))
15714			}
15715		}
15716	}
15717	if s.LocalSecondaryIndexOverride != nil {
15718		for i, v := range s.LocalSecondaryIndexOverride {
15719			if v == nil {
15720				continue
15721			}
15722			if err := v.Validate(); err != nil {
15723				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "LocalSecondaryIndexOverride", i), err.(request.ErrInvalidParams))
15724			}
15725		}
15726	}
15727	if s.ProvisionedThroughputOverride != nil {
15728		if err := s.ProvisionedThroughputOverride.Validate(); err != nil {
15729			invalidParams.AddNested("ProvisionedThroughputOverride", err.(request.ErrInvalidParams))
15730		}
15731	}
15732
15733	if invalidParams.Len() > 0 {
15734		return invalidParams
15735	}
15736	return nil
15737}
15738
15739// SetBackupArn sets the BackupArn field's value.
15740func (s *RestoreTableFromBackupInput) SetBackupArn(v string) *RestoreTableFromBackupInput {
15741	s.BackupArn = &v
15742	return s
15743}
15744
15745// SetBillingModeOverride sets the BillingModeOverride field's value.
15746func (s *RestoreTableFromBackupInput) SetBillingModeOverride(v string) *RestoreTableFromBackupInput {
15747	s.BillingModeOverride = &v
15748	return s
15749}
15750
15751// SetGlobalSecondaryIndexOverride sets the GlobalSecondaryIndexOverride field's value.
15752func (s *RestoreTableFromBackupInput) SetGlobalSecondaryIndexOverride(v []*GlobalSecondaryIndex) *RestoreTableFromBackupInput {
15753	s.GlobalSecondaryIndexOverride = v
15754	return s
15755}
15756
15757// SetLocalSecondaryIndexOverride sets the LocalSecondaryIndexOverride field's value.
15758func (s *RestoreTableFromBackupInput) SetLocalSecondaryIndexOverride(v []*LocalSecondaryIndex) *RestoreTableFromBackupInput {
15759	s.LocalSecondaryIndexOverride = v
15760	return s
15761}
15762
15763// SetProvisionedThroughputOverride sets the ProvisionedThroughputOverride field's value.
15764func (s *RestoreTableFromBackupInput) SetProvisionedThroughputOverride(v *ProvisionedThroughput) *RestoreTableFromBackupInput {
15765	s.ProvisionedThroughputOverride = v
15766	return s
15767}
15768
15769// SetSSESpecificationOverride sets the SSESpecificationOverride field's value.
15770func (s *RestoreTableFromBackupInput) SetSSESpecificationOverride(v *SSESpecification) *RestoreTableFromBackupInput {
15771	s.SSESpecificationOverride = v
15772	return s
15773}
15774
15775// SetTargetTableName sets the TargetTableName field's value.
15776func (s *RestoreTableFromBackupInput) SetTargetTableName(v string) *RestoreTableFromBackupInput {
15777	s.TargetTableName = &v
15778	return s
15779}
15780
15781type RestoreTableFromBackupOutput struct {
15782	_ struct{} `type:"structure"`
15783
15784	// The description of the table created from an existing backup.
15785	TableDescription *TableDescription `type:"structure"`
15786}
15787
15788// String returns the string representation
15789func (s RestoreTableFromBackupOutput) String() string {
15790	return awsutil.Prettify(s)
15791}
15792
15793// GoString returns the string representation
15794func (s RestoreTableFromBackupOutput) GoString() string {
15795	return s.String()
15796}
15797
15798// SetTableDescription sets the TableDescription field's value.
15799func (s *RestoreTableFromBackupOutput) SetTableDescription(v *TableDescription) *RestoreTableFromBackupOutput {
15800	s.TableDescription = v
15801	return s
15802}
15803
15804type RestoreTableToPointInTimeInput struct {
15805	_ struct{} `type:"structure"`
15806
15807	// The billing mode of the restored table.
15808	BillingModeOverride *string `type:"string" enum:"BillingMode"`
15809
15810	// List of global secondary indexes for the restored table. The indexes provided
15811	// should match existing secondary indexes. You can choose to exclude some or
15812	// all of the indexes at the time of restore.
15813	GlobalSecondaryIndexOverride []*GlobalSecondaryIndex `type:"list"`
15814
15815	// List of local secondary indexes for the restored table. The indexes provided
15816	// should match existing secondary indexes. You can choose to exclude some or
15817	// all of the indexes at the time of restore.
15818	LocalSecondaryIndexOverride []*LocalSecondaryIndex `type:"list"`
15819
15820	// Provisioned throughput settings for the restored table.
15821	ProvisionedThroughputOverride *ProvisionedThroughput `type:"structure"`
15822
15823	// Time in the past to restore the table to.
15824	RestoreDateTime *time.Time `type:"timestamp"`
15825
15826	// The new server-side encryption settings for the restored table.
15827	SSESpecificationOverride *SSESpecification `type:"structure"`
15828
15829	// The DynamoDB table that will be restored. This value is an Amazon Resource
15830	// Name (ARN).
15831	SourceTableArn *string `type:"string"`
15832
15833	// Name of the source table that is being restored.
15834	SourceTableName *string `min:"3" type:"string"`
15835
15836	// The name of the new table to which it must be restored to.
15837	//
15838	// TargetTableName is a required field
15839	TargetTableName *string `min:"3" type:"string" required:"true"`
15840
15841	// Restore the table to the latest possible time. LatestRestorableDateTime is
15842	// typically 5 minutes before the current time.
15843	UseLatestRestorableTime *bool `type:"boolean"`
15844}
15845
15846// String returns the string representation
15847func (s RestoreTableToPointInTimeInput) String() string {
15848	return awsutil.Prettify(s)
15849}
15850
15851// GoString returns the string representation
15852func (s RestoreTableToPointInTimeInput) GoString() string {
15853	return s.String()
15854}
15855
15856// Validate inspects the fields of the type to determine if they are valid.
15857func (s *RestoreTableToPointInTimeInput) Validate() error {
15858	invalidParams := request.ErrInvalidParams{Context: "RestoreTableToPointInTimeInput"}
15859	if s.SourceTableName != nil && len(*s.SourceTableName) < 3 {
15860		invalidParams.Add(request.NewErrParamMinLen("SourceTableName", 3))
15861	}
15862	if s.TargetTableName == nil {
15863		invalidParams.Add(request.NewErrParamRequired("TargetTableName"))
15864	}
15865	if s.TargetTableName != nil && len(*s.TargetTableName) < 3 {
15866		invalidParams.Add(request.NewErrParamMinLen("TargetTableName", 3))
15867	}
15868	if s.GlobalSecondaryIndexOverride != nil {
15869		for i, v := range s.GlobalSecondaryIndexOverride {
15870			if v == nil {
15871				continue
15872			}
15873			if err := v.Validate(); err != nil {
15874				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "GlobalSecondaryIndexOverride", i), err.(request.ErrInvalidParams))
15875			}
15876		}
15877	}
15878	if s.LocalSecondaryIndexOverride != nil {
15879		for i, v := range s.LocalSecondaryIndexOverride {
15880			if v == nil {
15881				continue
15882			}
15883			if err := v.Validate(); err != nil {
15884				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "LocalSecondaryIndexOverride", i), err.(request.ErrInvalidParams))
15885			}
15886		}
15887	}
15888	if s.ProvisionedThroughputOverride != nil {
15889		if err := s.ProvisionedThroughputOverride.Validate(); err != nil {
15890			invalidParams.AddNested("ProvisionedThroughputOverride", err.(request.ErrInvalidParams))
15891		}
15892	}
15893
15894	if invalidParams.Len() > 0 {
15895		return invalidParams
15896	}
15897	return nil
15898}
15899
15900// SetBillingModeOverride sets the BillingModeOverride field's value.
15901func (s *RestoreTableToPointInTimeInput) SetBillingModeOverride(v string) *RestoreTableToPointInTimeInput {
15902	s.BillingModeOverride = &v
15903	return s
15904}
15905
15906// SetGlobalSecondaryIndexOverride sets the GlobalSecondaryIndexOverride field's value.
15907func (s *RestoreTableToPointInTimeInput) SetGlobalSecondaryIndexOverride(v []*GlobalSecondaryIndex) *RestoreTableToPointInTimeInput {
15908	s.GlobalSecondaryIndexOverride = v
15909	return s
15910}
15911
15912// SetLocalSecondaryIndexOverride sets the LocalSecondaryIndexOverride field's value.
15913func (s *RestoreTableToPointInTimeInput) SetLocalSecondaryIndexOverride(v []*LocalSecondaryIndex) *RestoreTableToPointInTimeInput {
15914	s.LocalSecondaryIndexOverride = v
15915	return s
15916}
15917
15918// SetProvisionedThroughputOverride sets the ProvisionedThroughputOverride field's value.
15919func (s *RestoreTableToPointInTimeInput) SetProvisionedThroughputOverride(v *ProvisionedThroughput) *RestoreTableToPointInTimeInput {
15920	s.ProvisionedThroughputOverride = v
15921	return s
15922}
15923
15924// SetRestoreDateTime sets the RestoreDateTime field's value.
15925func (s *RestoreTableToPointInTimeInput) SetRestoreDateTime(v time.Time) *RestoreTableToPointInTimeInput {
15926	s.RestoreDateTime = &v
15927	return s
15928}
15929
15930// SetSSESpecificationOverride sets the SSESpecificationOverride field's value.
15931func (s *RestoreTableToPointInTimeInput) SetSSESpecificationOverride(v *SSESpecification) *RestoreTableToPointInTimeInput {
15932	s.SSESpecificationOverride = v
15933	return s
15934}
15935
15936// SetSourceTableArn sets the SourceTableArn field's value.
15937func (s *RestoreTableToPointInTimeInput) SetSourceTableArn(v string) *RestoreTableToPointInTimeInput {
15938	s.SourceTableArn = &v
15939	return s
15940}
15941
15942// SetSourceTableName sets the SourceTableName field's value.
15943func (s *RestoreTableToPointInTimeInput) SetSourceTableName(v string) *RestoreTableToPointInTimeInput {
15944	s.SourceTableName = &v
15945	return s
15946}
15947
15948// SetTargetTableName sets the TargetTableName field's value.
15949func (s *RestoreTableToPointInTimeInput) SetTargetTableName(v string) *RestoreTableToPointInTimeInput {
15950	s.TargetTableName = &v
15951	return s
15952}
15953
15954// SetUseLatestRestorableTime sets the UseLatestRestorableTime field's value.
15955func (s *RestoreTableToPointInTimeInput) SetUseLatestRestorableTime(v bool) *RestoreTableToPointInTimeInput {
15956	s.UseLatestRestorableTime = &v
15957	return s
15958}
15959
15960type RestoreTableToPointInTimeOutput struct {
15961	_ struct{} `type:"structure"`
15962
15963	// Represents the properties of a table.
15964	TableDescription *TableDescription `type:"structure"`
15965}
15966
15967// String returns the string representation
15968func (s RestoreTableToPointInTimeOutput) String() string {
15969	return awsutil.Prettify(s)
15970}
15971
15972// GoString returns the string representation
15973func (s RestoreTableToPointInTimeOutput) GoString() string {
15974	return s.String()
15975}
15976
15977// SetTableDescription sets the TableDescription field's value.
15978func (s *RestoreTableToPointInTimeOutput) SetTableDescription(v *TableDescription) *RestoreTableToPointInTimeOutput {
15979	s.TableDescription = v
15980	return s
15981}
15982
15983// The description of the server-side encryption status on the specified table.
15984type SSEDescription struct {
15985	_ struct{} `type:"structure"`
15986
15987	// Indicates the time, in UNIX epoch date format, when DynamoDB detected that
15988	// the table's AWS KMS key was inaccessible. This attribute will automatically
15989	// be cleared when DynamoDB detects that the table's AWS KMS key is accessible
15990	// again. DynamoDB will initiate the table archival process when table's AWS
15991	// KMS key remains inaccessible for more than seven days from this date.
15992	InaccessibleEncryptionDateTime *time.Time `type:"timestamp"`
15993
15994	// The AWS KMS customer master key (CMK) ARN used for the AWS KMS encryption.
15995	KMSMasterKeyArn *string `type:"string"`
15996
15997	// Server-side encryption type. The only supported value is:
15998	//
15999	//    * KMS - Server-side encryption that uses AWS Key Management Service. The
16000	//    key is stored in your account and is managed by AWS KMS (AWS KMS charges
16001	//    apply).
16002	SSEType *string `type:"string" enum:"SSEType"`
16003
16004	// Represents the current state of server-side encryption. The only supported
16005	// values are:
16006	//
16007	//    * ENABLED - Server-side encryption is enabled.
16008	//
16009	//    * UPDATING - Server-side encryption is being updated.
16010	Status *string `type:"string" enum:"SSEStatus"`
16011}
16012
16013// String returns the string representation
16014func (s SSEDescription) String() string {
16015	return awsutil.Prettify(s)
16016}
16017
16018// GoString returns the string representation
16019func (s SSEDescription) GoString() string {
16020	return s.String()
16021}
16022
16023// SetInaccessibleEncryptionDateTime sets the InaccessibleEncryptionDateTime field's value.
16024func (s *SSEDescription) SetInaccessibleEncryptionDateTime(v time.Time) *SSEDescription {
16025	s.InaccessibleEncryptionDateTime = &v
16026	return s
16027}
16028
16029// SetKMSMasterKeyArn sets the KMSMasterKeyArn field's value.
16030func (s *SSEDescription) SetKMSMasterKeyArn(v string) *SSEDescription {
16031	s.KMSMasterKeyArn = &v
16032	return s
16033}
16034
16035// SetSSEType sets the SSEType field's value.
16036func (s *SSEDescription) SetSSEType(v string) *SSEDescription {
16037	s.SSEType = &v
16038	return s
16039}
16040
16041// SetStatus sets the Status field's value.
16042func (s *SSEDescription) SetStatus(v string) *SSEDescription {
16043	s.Status = &v
16044	return s
16045}
16046
16047// Represents the settings used to enable server-side encryption.
16048type SSESpecification struct {
16049	_ struct{} `type:"structure"`
16050
16051	// Indicates whether server-side encryption is done using an AWS managed CMK
16052	// or an AWS owned CMK. If enabled (true), server-side encryption type is set
16053	// to KMS and an AWS managed CMK is used (AWS KMS charges apply). If disabled
16054	// (false) or not specified, server-side encryption is set to AWS owned CMK.
16055	Enabled *bool `type:"boolean"`
16056
16057	// The AWS KMS customer master key (CMK) that should be used for the AWS KMS
16058	// encryption. To specify a CMK, use its key ID, Amazon Resource Name (ARN),
16059	// alias name, or alias ARN. Note that you should only provide this parameter
16060	// if the key is different from the default DynamoDB customer master key alias/aws/dynamodb.
16061	KMSMasterKeyId *string `type:"string"`
16062
16063	// Server-side encryption type. The only supported value is:
16064	//
16065	//    * KMS - Server-side encryption that uses AWS Key Management Service. The
16066	//    key is stored in your account and is managed by AWS KMS (AWS KMS charges
16067	//    apply).
16068	SSEType *string `type:"string" enum:"SSEType"`
16069}
16070
16071// String returns the string representation
16072func (s SSESpecification) String() string {
16073	return awsutil.Prettify(s)
16074}
16075
16076// GoString returns the string representation
16077func (s SSESpecification) GoString() string {
16078	return s.String()
16079}
16080
16081// SetEnabled sets the Enabled field's value.
16082func (s *SSESpecification) SetEnabled(v bool) *SSESpecification {
16083	s.Enabled = &v
16084	return s
16085}
16086
16087// SetKMSMasterKeyId sets the KMSMasterKeyId field's value.
16088func (s *SSESpecification) SetKMSMasterKeyId(v string) *SSESpecification {
16089	s.KMSMasterKeyId = &v
16090	return s
16091}
16092
16093// SetSSEType sets the SSEType field's value.
16094func (s *SSESpecification) SetSSEType(v string) *SSESpecification {
16095	s.SSEType = &v
16096	return s
16097}
16098
16099// Represents the input of a Scan operation.
16100type ScanInput struct {
16101	_ struct{} `type:"structure"`
16102
16103	// This is a legacy parameter. Use ProjectionExpression instead. For more information,
16104	// see AttributesToGet (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/LegacyConditionalParameters.AttributesToGet.html)
16105	// in the Amazon DynamoDB Developer Guide.
16106	AttributesToGet []*string `min:"1" type:"list"`
16107
16108	// This is a legacy parameter. Use FilterExpression instead. For more information,
16109	// see ConditionalOperator (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/LegacyConditionalParameters.ConditionalOperator.html)
16110	// in the Amazon DynamoDB Developer Guide.
16111	ConditionalOperator *string `type:"string" enum:"ConditionalOperator"`
16112
16113	// A Boolean value that determines the read consistency model during the scan:
16114	//
16115	//    * If ConsistentRead is false, then the data returned from Scan might not
16116	//    contain the results from other recently completed write operations (PutItem,
16117	//    UpdateItem, or DeleteItem).
16118	//
16119	//    * If ConsistentRead is true, then all of the write operations that completed
16120	//    before the Scan began are guaranteed to be contained in the Scan response.
16121	//
16122	// The default setting for ConsistentRead is false.
16123	//
16124	// The ConsistentRead parameter is not supported on global secondary indexes.
16125	// If you scan a global secondary index with ConsistentRead set to true, you
16126	// will receive a ValidationException.
16127	ConsistentRead *bool `type:"boolean"`
16128
16129	// The primary key of the first item that this operation will evaluate. Use
16130	// the value that was returned for LastEvaluatedKey in the previous operation.
16131	//
16132	// The data type for ExclusiveStartKey must be String, Number or Binary. No
16133	// set data types are allowed.
16134	//
16135	// In a parallel scan, a Scan request that includes ExclusiveStartKey must specify
16136	// the same segment whose previous Scan returned the corresponding value of
16137	// LastEvaluatedKey.
16138	ExclusiveStartKey map[string]*AttributeValue `type:"map"`
16139
16140	// One or more substitution tokens for attribute names in an expression. The
16141	// following are some use cases for using ExpressionAttributeNames:
16142	//
16143	//    * To access an attribute whose name conflicts with a DynamoDB reserved
16144	//    word.
16145	//
16146	//    * To create a placeholder for repeating occurrences of an attribute name
16147	//    in an expression.
16148	//
16149	//    * To prevent special characters in an attribute name from being misinterpreted
16150	//    in an expression.
16151	//
16152	// Use the # character in an expression to dereference an attribute name. For
16153	// example, consider the following attribute name:
16154	//
16155	//    * Percentile
16156	//
16157	// The name of this attribute conflicts with a reserved word, so it cannot be
16158	// used directly in an expression. (For the complete list of reserved words,
16159	// see Reserved Words (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ReservedWords.html)
16160	// in the Amazon DynamoDB Developer Guide). To work around this, you could specify
16161	// the following for ExpressionAttributeNames:
16162	//
16163	//    * {"#P":"Percentile"}
16164	//
16165	// You could then use this substitution in an expression, as in this example:
16166	//
16167	//    * #P = :val
16168	//
16169	// Tokens that begin with the : character are expression attribute values, which
16170	// are placeholders for the actual value at runtime.
16171	//
16172	// For more information on expression attribute names, see Specifying Item Attributes
16173	// (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.AccessingItemAttributes.html)
16174	// in the Amazon DynamoDB Developer Guide.
16175	ExpressionAttributeNames map[string]*string `type:"map"`
16176
16177	// One or more values that can be substituted in an expression.
16178	//
16179	// Use the : (colon) character in an expression to dereference an attribute
16180	// value. For example, suppose that you wanted to check whether the value of
16181	// the ProductStatus attribute was one of the following:
16182	//
16183	// Available | Backordered | Discontinued
16184	//
16185	// You would first need to specify ExpressionAttributeValues as follows:
16186	//
16187	// { ":avail":{"S":"Available"}, ":back":{"S":"Backordered"}, ":disc":{"S":"Discontinued"}
16188	// }
16189	//
16190	// You could then use these values in an expression, such as this:
16191	//
16192	// ProductStatus IN (:avail, :back, :disc)
16193	//
16194	// For more information on expression attribute values, see Condition Expressions
16195	// (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.SpecifyingConditions.html)
16196	// in the Amazon DynamoDB Developer Guide.
16197	ExpressionAttributeValues map[string]*AttributeValue `type:"map"`
16198
16199	// A string that contains conditions that DynamoDB applies after the Scan operation,
16200	// but before the data is returned to you. Items that do not satisfy the FilterExpression
16201	// criteria are not returned.
16202	//
16203	// A FilterExpression is applied after the items have already been read; the
16204	// process of filtering does not consume any additional read capacity units.
16205	//
16206	// For more information, see Filter Expressions (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/QueryAndScan.html#FilteringResults)
16207	// in the Amazon DynamoDB Developer Guide.
16208	FilterExpression *string `type:"string"`
16209
16210	// The name of a secondary index to scan. This index can be any local secondary
16211	// index or global secondary index. Note that if you use the IndexName parameter,
16212	// you must also provide TableName.
16213	IndexName *string `min:"3" type:"string"`
16214
16215	// The maximum number of items to evaluate (not necessarily the number of matching
16216	// items). If DynamoDB processes the number of items up to the limit while processing
16217	// the results, it stops the operation and returns the matching values up to
16218	// that point, and a key in LastEvaluatedKey to apply in a subsequent operation,
16219	// so that you can pick up where you left off. Also, if the processed dataset
16220	// size exceeds 1 MB before DynamoDB reaches this limit, it stops the operation
16221	// and returns the matching values up to the limit, and a key in LastEvaluatedKey
16222	// to apply in a subsequent operation to continue the operation. For more information,
16223	// see Working with Queries (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/QueryAndScan.html)
16224	// in the Amazon DynamoDB Developer Guide.
16225	Limit *int64 `min:"1" type:"integer"`
16226
16227	// A string that identifies one or more attributes to retrieve from the specified
16228	// table or index. These attributes can include scalars, sets, or elements of
16229	// a JSON document. The attributes in the expression must be separated by commas.
16230	//
16231	// If no attribute names are specified, then all attributes will be returned.
16232	// If any of the requested attributes are not found, they will not appear in
16233	// the result.
16234	//
16235	// For more information, see Specifying Item Attributes (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.AccessingItemAttributes.html)
16236	// in the Amazon DynamoDB Developer Guide.
16237	ProjectionExpression *string `type:"string"`
16238
16239	// Determines the level of detail about provisioned throughput consumption that
16240	// is returned in the response:
16241	//
16242	//    * INDEXES - The response includes the aggregate ConsumedCapacity for the
16243	//    operation, together with ConsumedCapacity for each table and secondary
16244	//    index that was accessed. Note that some operations, such as GetItem and
16245	//    BatchGetItem, do not access any indexes at all. In these cases, specifying
16246	//    INDEXES will only return ConsumedCapacity information for table(s).
16247	//
16248	//    * TOTAL - The response includes only the aggregate ConsumedCapacity for
16249	//    the operation.
16250	//
16251	//    * NONE - No ConsumedCapacity details are included in the response.
16252	ReturnConsumedCapacity *string `type:"string" enum:"ReturnConsumedCapacity"`
16253
16254	// This is a legacy parameter. Use FilterExpression instead. For more information,
16255	// see ScanFilter (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/LegacyConditionalParameters.ScanFilter.html)
16256	// in the Amazon DynamoDB Developer Guide.
16257	ScanFilter map[string]*Condition `type:"map"`
16258
16259	// For a parallel Scan request, Segment identifies an individual segment to
16260	// be scanned by an application worker.
16261	//
16262	// Segment IDs are zero-based, so the first segment is always 0. For example,
16263	// if you want to use four application threads to scan a table or an index,
16264	// then the first thread specifies a Segment value of 0, the second thread specifies
16265	// 1, and so on.
16266	//
16267	// The value of LastEvaluatedKey returned from a parallel Scan request must
16268	// be used as ExclusiveStartKey with the same segment ID in a subsequent Scan
16269	// operation.
16270	//
16271	// The value for Segment must be greater than or equal to 0, and less than the
16272	// value provided for TotalSegments.
16273	//
16274	// If you provide Segment, you must also provide TotalSegments.
16275	Segment *int64 `type:"integer"`
16276
16277	// The attributes to be returned in the result. You can retrieve all item attributes,
16278	// specific item attributes, the count of matching items, or in the case of
16279	// an index, some or all of the attributes projected into the index.
16280	//
16281	//    * ALL_ATTRIBUTES - Returns all of the item attributes from the specified
16282	//    table or index. If you query a local secondary index, then for each matching
16283	//    item in the index, DynamoDB fetches the entire item from the parent table.
16284	//    If the index is configured to project all item attributes, then all of
16285	//    the data can be obtained from the local secondary index, and no fetching
16286	//    is required.
16287	//
16288	//    * ALL_PROJECTED_ATTRIBUTES - Allowed only when querying an index. Retrieves
16289	//    all attributes that have been projected into the index. If the index is
16290	//    configured to project all attributes, this return value is equivalent
16291	//    to specifying ALL_ATTRIBUTES.
16292	//
16293	//    * COUNT - Returns the number of matching items, rather than the matching
16294	//    items themselves.
16295	//
16296	//    * SPECIFIC_ATTRIBUTES - Returns only the attributes listed in AttributesToGet.
16297	//    This return value is equivalent to specifying AttributesToGet without
16298	//    specifying any value for Select. If you query or scan a local secondary
16299	//    index and request only attributes that are projected into that index,
16300	//    the operation reads only the index and not the table. If any of the requested
16301	//    attributes are not projected into the local secondary index, DynamoDB
16302	//    fetches each of these attributes from the parent table. This extra fetching
16303	//    incurs additional throughput cost and latency. If you query or scan a
16304	//    global secondary index, you can only request attributes that are projected
16305	//    into the index. Global secondary index queries cannot fetch attributes
16306	//    from the parent table.
16307	//
16308	// If neither Select nor AttributesToGet are specified, DynamoDB defaults to
16309	// ALL_ATTRIBUTES when accessing a table, and ALL_PROJECTED_ATTRIBUTES when
16310	// accessing an index. You cannot use both Select and AttributesToGet together
16311	// in a single request, unless the value for Select is SPECIFIC_ATTRIBUTES.
16312	// (This usage is equivalent to specifying AttributesToGet without any value
16313	// for Select.)
16314	//
16315	// If you use the ProjectionExpression parameter, then the value for Select
16316	// can only be SPECIFIC_ATTRIBUTES. Any other value for Select will return an
16317	// error.
16318	Select *string `type:"string" enum:"Select"`
16319
16320	// The name of the table containing the requested items; or, if you provide
16321	// IndexName, the name of the table to which that index belongs.
16322	//
16323	// TableName is a required field
16324	TableName *string `min:"3" type:"string" required:"true"`
16325
16326	// For a parallel Scan request, TotalSegments represents the total number of
16327	// segments into which the Scan operation will be divided. The value of TotalSegments
16328	// corresponds to the number of application workers that will perform the parallel
16329	// scan. For example, if you want to use four application threads to scan a
16330	// table or an index, specify a TotalSegments value of 4.
16331	//
16332	// The value for TotalSegments must be greater than or equal to 1, and less
16333	// than or equal to 1000000. If you specify a TotalSegments value of 1, the
16334	// Scan operation will be sequential rather than parallel.
16335	//
16336	// If you specify TotalSegments, you must also specify Segment.
16337	TotalSegments *int64 `min:"1" type:"integer"`
16338}
16339
16340// String returns the string representation
16341func (s ScanInput) String() string {
16342	return awsutil.Prettify(s)
16343}
16344
16345// GoString returns the string representation
16346func (s ScanInput) GoString() string {
16347	return s.String()
16348}
16349
16350// Validate inspects the fields of the type to determine if they are valid.
16351func (s *ScanInput) Validate() error {
16352	invalidParams := request.ErrInvalidParams{Context: "ScanInput"}
16353	if s.AttributesToGet != nil && len(s.AttributesToGet) < 1 {
16354		invalidParams.Add(request.NewErrParamMinLen("AttributesToGet", 1))
16355	}
16356	if s.IndexName != nil && len(*s.IndexName) < 3 {
16357		invalidParams.Add(request.NewErrParamMinLen("IndexName", 3))
16358	}
16359	if s.Limit != nil && *s.Limit < 1 {
16360		invalidParams.Add(request.NewErrParamMinValue("Limit", 1))
16361	}
16362	if s.TableName == nil {
16363		invalidParams.Add(request.NewErrParamRequired("TableName"))
16364	}
16365	if s.TableName != nil && len(*s.TableName) < 3 {
16366		invalidParams.Add(request.NewErrParamMinLen("TableName", 3))
16367	}
16368	if s.TotalSegments != nil && *s.TotalSegments < 1 {
16369		invalidParams.Add(request.NewErrParamMinValue("TotalSegments", 1))
16370	}
16371	if s.ScanFilter != nil {
16372		for i, v := range s.ScanFilter {
16373			if v == nil {
16374				continue
16375			}
16376			if err := v.Validate(); err != nil {
16377				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "ScanFilter", i), err.(request.ErrInvalidParams))
16378			}
16379		}
16380	}
16381
16382	if invalidParams.Len() > 0 {
16383		return invalidParams
16384	}
16385	return nil
16386}
16387
16388// SetAttributesToGet sets the AttributesToGet field's value.
16389func (s *ScanInput) SetAttributesToGet(v []*string) *ScanInput {
16390	s.AttributesToGet = v
16391	return s
16392}
16393
16394// SetConditionalOperator sets the ConditionalOperator field's value.
16395func (s *ScanInput) SetConditionalOperator(v string) *ScanInput {
16396	s.ConditionalOperator = &v
16397	return s
16398}
16399
16400// SetConsistentRead sets the ConsistentRead field's value.
16401func (s *ScanInput) SetConsistentRead(v bool) *ScanInput {
16402	s.ConsistentRead = &v
16403	return s
16404}
16405
16406// SetExclusiveStartKey sets the ExclusiveStartKey field's value.
16407func (s *ScanInput) SetExclusiveStartKey(v map[string]*AttributeValue) *ScanInput {
16408	s.ExclusiveStartKey = v
16409	return s
16410}
16411
16412// SetExpressionAttributeNames sets the ExpressionAttributeNames field's value.
16413func (s *ScanInput) SetExpressionAttributeNames(v map[string]*string) *ScanInput {
16414	s.ExpressionAttributeNames = v
16415	return s
16416}
16417
16418// SetExpressionAttributeValues sets the ExpressionAttributeValues field's value.
16419func (s *ScanInput) SetExpressionAttributeValues(v map[string]*AttributeValue) *ScanInput {
16420	s.ExpressionAttributeValues = v
16421	return s
16422}
16423
16424// SetFilterExpression sets the FilterExpression field's value.
16425func (s *ScanInput) SetFilterExpression(v string) *ScanInput {
16426	s.FilterExpression = &v
16427	return s
16428}
16429
16430// SetIndexName sets the IndexName field's value.
16431func (s *ScanInput) SetIndexName(v string) *ScanInput {
16432	s.IndexName = &v
16433	return s
16434}
16435
16436// SetLimit sets the Limit field's value.
16437func (s *ScanInput) SetLimit(v int64) *ScanInput {
16438	s.Limit = &v
16439	return s
16440}
16441
16442// SetProjectionExpression sets the ProjectionExpression field's value.
16443func (s *ScanInput) SetProjectionExpression(v string) *ScanInput {
16444	s.ProjectionExpression = &v
16445	return s
16446}
16447
16448// SetReturnConsumedCapacity sets the ReturnConsumedCapacity field's value.
16449func (s *ScanInput) SetReturnConsumedCapacity(v string) *ScanInput {
16450	s.ReturnConsumedCapacity = &v
16451	return s
16452}
16453
16454// SetScanFilter sets the ScanFilter field's value.
16455func (s *ScanInput) SetScanFilter(v map[string]*Condition) *ScanInput {
16456	s.ScanFilter = v
16457	return s
16458}
16459
16460// SetSegment sets the Segment field's value.
16461func (s *ScanInput) SetSegment(v int64) *ScanInput {
16462	s.Segment = &v
16463	return s
16464}
16465
16466// SetSelect sets the Select field's value.
16467func (s *ScanInput) SetSelect(v string) *ScanInput {
16468	s.Select = &v
16469	return s
16470}
16471
16472// SetTableName sets the TableName field's value.
16473func (s *ScanInput) SetTableName(v string) *ScanInput {
16474	s.TableName = &v
16475	return s
16476}
16477
16478// SetTotalSegments sets the TotalSegments field's value.
16479func (s *ScanInput) SetTotalSegments(v int64) *ScanInput {
16480	s.TotalSegments = &v
16481	return s
16482}
16483
16484// Represents the output of a Scan operation.
16485type ScanOutput struct {
16486	_ struct{} `type:"structure"`
16487
16488	// The capacity units consumed by the Scan operation. The data returned includes
16489	// the total provisioned throughput consumed, along with statistics for the
16490	// table and any indexes involved in the operation. ConsumedCapacity is only
16491	// returned if the ReturnConsumedCapacity parameter was specified. For more
16492	// information, see Provisioned Throughput (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ProvisionedThroughputIntro.html)
16493	// in the Amazon DynamoDB Developer Guide.
16494	ConsumedCapacity *ConsumedCapacity `type:"structure"`
16495
16496	// The number of items in the response.
16497	//
16498	// If you set ScanFilter in the request, then Count is the number of items returned
16499	// after the filter was applied, and ScannedCount is the number of matching
16500	// items before the filter was applied.
16501	//
16502	// If you did not use a filter in the request, then Count is the same as ScannedCount.
16503	Count *int64 `type:"integer"`
16504
16505	// An array of item attributes that match the scan criteria. Each element in
16506	// this array consists of an attribute name and the value for that attribute.
16507	Items []map[string]*AttributeValue `type:"list"`
16508
16509	// The primary key of the item where the operation stopped, inclusive of the
16510	// previous result set. Use this value to start a new operation, excluding this
16511	// value in the new request.
16512	//
16513	// If LastEvaluatedKey is empty, then the "last page" of results has been processed
16514	// and there is no more data to be retrieved.
16515	//
16516	// If LastEvaluatedKey is not empty, it does not necessarily mean that there
16517	// is more data in the result set. The only way to know when you have reached
16518	// the end of the result set is when LastEvaluatedKey is empty.
16519	LastEvaluatedKey map[string]*AttributeValue `type:"map"`
16520
16521	// The number of items evaluated, before any ScanFilter is applied. A high ScannedCount
16522	// value with few, or no, Count results indicates an inefficient Scan operation.
16523	// For more information, see Count and ScannedCount (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/QueryAndScan.html#Count)
16524	// in the Amazon DynamoDB Developer Guide.
16525	//
16526	// If you did not use a filter in the request, then ScannedCount is the same
16527	// as Count.
16528	ScannedCount *int64 `type:"integer"`
16529}
16530
16531// String returns the string representation
16532func (s ScanOutput) String() string {
16533	return awsutil.Prettify(s)
16534}
16535
16536// GoString returns the string representation
16537func (s ScanOutput) GoString() string {
16538	return s.String()
16539}
16540
16541// SetConsumedCapacity sets the ConsumedCapacity field's value.
16542func (s *ScanOutput) SetConsumedCapacity(v *ConsumedCapacity) *ScanOutput {
16543	s.ConsumedCapacity = v
16544	return s
16545}
16546
16547// SetCount sets the Count field's value.
16548func (s *ScanOutput) SetCount(v int64) *ScanOutput {
16549	s.Count = &v
16550	return s
16551}
16552
16553// SetItems sets the Items field's value.
16554func (s *ScanOutput) SetItems(v []map[string]*AttributeValue) *ScanOutput {
16555	s.Items = v
16556	return s
16557}
16558
16559// SetLastEvaluatedKey sets the LastEvaluatedKey field's value.
16560func (s *ScanOutput) SetLastEvaluatedKey(v map[string]*AttributeValue) *ScanOutput {
16561	s.LastEvaluatedKey = v
16562	return s
16563}
16564
16565// SetScannedCount sets the ScannedCount field's value.
16566func (s *ScanOutput) SetScannedCount(v int64) *ScanOutput {
16567	s.ScannedCount = &v
16568	return s
16569}
16570
16571// Contains the details of the table when the backup was created.
16572type SourceTableDetails struct {
16573	_ struct{} `type:"structure"`
16574
16575	// Controls how you are charged for read and write throughput and how you manage
16576	// capacity. This setting can be changed later.
16577	//
16578	//    * PROVISIONED - Sets the read/write capacity mode to PROVISIONED. We recommend
16579	//    using PROVISIONED for predictable workloads.
16580	//
16581	//    * PAY_PER_REQUEST - Sets the read/write capacity mode to PAY_PER_REQUEST.
16582	//    We recommend using PAY_PER_REQUEST for unpredictable workloads.
16583	BillingMode *string `type:"string" enum:"BillingMode"`
16584
16585	// Number of items in the table. Note that this is an approximate value.
16586	ItemCount *int64 `type:"long"`
16587
16588	// Schema of the table.
16589	//
16590	// KeySchema is a required field
16591	KeySchema []*KeySchemaElement `min:"1" type:"list" required:"true"`
16592
16593	// Read IOPs and Write IOPS on the table when the backup was created.
16594	//
16595	// ProvisionedThroughput is a required field
16596	ProvisionedThroughput *ProvisionedThroughput `type:"structure" required:"true"`
16597
16598	// ARN of the table for which backup was created.
16599	TableArn *string `type:"string"`
16600
16601	// Time when the source table was created.
16602	//
16603	// TableCreationDateTime is a required field
16604	TableCreationDateTime *time.Time `type:"timestamp" required:"true"`
16605
16606	// Unique identifier for the table for which the backup was created.
16607	//
16608	// TableId is a required field
16609	TableId *string `type:"string" required:"true"`
16610
16611	// The name of the table for which the backup was created.
16612	//
16613	// TableName is a required field
16614	TableName *string `min:"3" type:"string" required:"true"`
16615
16616	// Size of the table in bytes. Note that this is an approximate value.
16617	TableSizeBytes *int64 `type:"long"`
16618}
16619
16620// String returns the string representation
16621func (s SourceTableDetails) String() string {
16622	return awsutil.Prettify(s)
16623}
16624
16625// GoString returns the string representation
16626func (s SourceTableDetails) GoString() string {
16627	return s.String()
16628}
16629
16630// SetBillingMode sets the BillingMode field's value.
16631func (s *SourceTableDetails) SetBillingMode(v string) *SourceTableDetails {
16632	s.BillingMode = &v
16633	return s
16634}
16635
16636// SetItemCount sets the ItemCount field's value.
16637func (s *SourceTableDetails) SetItemCount(v int64) *SourceTableDetails {
16638	s.ItemCount = &v
16639	return s
16640}
16641
16642// SetKeySchema sets the KeySchema field's value.
16643func (s *SourceTableDetails) SetKeySchema(v []*KeySchemaElement) *SourceTableDetails {
16644	s.KeySchema = v
16645	return s
16646}
16647
16648// SetProvisionedThroughput sets the ProvisionedThroughput field's value.
16649func (s *SourceTableDetails) SetProvisionedThroughput(v *ProvisionedThroughput) *SourceTableDetails {
16650	s.ProvisionedThroughput = v
16651	return s
16652}
16653
16654// SetTableArn sets the TableArn field's value.
16655func (s *SourceTableDetails) SetTableArn(v string) *SourceTableDetails {
16656	s.TableArn = &v
16657	return s
16658}
16659
16660// SetTableCreationDateTime sets the TableCreationDateTime field's value.
16661func (s *SourceTableDetails) SetTableCreationDateTime(v time.Time) *SourceTableDetails {
16662	s.TableCreationDateTime = &v
16663	return s
16664}
16665
16666// SetTableId sets the TableId field's value.
16667func (s *SourceTableDetails) SetTableId(v string) *SourceTableDetails {
16668	s.TableId = &v
16669	return s
16670}
16671
16672// SetTableName sets the TableName field's value.
16673func (s *SourceTableDetails) SetTableName(v string) *SourceTableDetails {
16674	s.TableName = &v
16675	return s
16676}
16677
16678// SetTableSizeBytes sets the TableSizeBytes field's value.
16679func (s *SourceTableDetails) SetTableSizeBytes(v int64) *SourceTableDetails {
16680	s.TableSizeBytes = &v
16681	return s
16682}
16683
16684// Contains the details of the features enabled on the table when the backup
16685// was created. For example, LSIs, GSIs, streams, TTL.
16686type SourceTableFeatureDetails struct {
16687	_ struct{} `type:"structure"`
16688
16689	// Represents the GSI properties for the table when the backup was created.
16690	// It includes the IndexName, KeySchema, Projection, and ProvisionedThroughput
16691	// for the GSIs on the table at the time of backup.
16692	GlobalSecondaryIndexes []*GlobalSecondaryIndexInfo `type:"list"`
16693
16694	// Represents the LSI properties for the table when the backup was created.
16695	// It includes the IndexName, KeySchema and Projection for the LSIs on the table
16696	// at the time of backup.
16697	LocalSecondaryIndexes []*LocalSecondaryIndexInfo `type:"list"`
16698
16699	// The description of the server-side encryption status on the table when the
16700	// backup was created.
16701	SSEDescription *SSEDescription `type:"structure"`
16702
16703	// Stream settings on the table when the backup was created.
16704	StreamDescription *StreamSpecification `type:"structure"`
16705
16706	// Time to Live settings on the table when the backup was created.
16707	TimeToLiveDescription *TimeToLiveDescription `type:"structure"`
16708}
16709
16710// String returns the string representation
16711func (s SourceTableFeatureDetails) String() string {
16712	return awsutil.Prettify(s)
16713}
16714
16715// GoString returns the string representation
16716func (s SourceTableFeatureDetails) GoString() string {
16717	return s.String()
16718}
16719
16720// SetGlobalSecondaryIndexes sets the GlobalSecondaryIndexes field's value.
16721func (s *SourceTableFeatureDetails) SetGlobalSecondaryIndexes(v []*GlobalSecondaryIndexInfo) *SourceTableFeatureDetails {
16722	s.GlobalSecondaryIndexes = v
16723	return s
16724}
16725
16726// SetLocalSecondaryIndexes sets the LocalSecondaryIndexes field's value.
16727func (s *SourceTableFeatureDetails) SetLocalSecondaryIndexes(v []*LocalSecondaryIndexInfo) *SourceTableFeatureDetails {
16728	s.LocalSecondaryIndexes = v
16729	return s
16730}
16731
16732// SetSSEDescription sets the SSEDescription field's value.
16733func (s *SourceTableFeatureDetails) SetSSEDescription(v *SSEDescription) *SourceTableFeatureDetails {
16734	s.SSEDescription = v
16735	return s
16736}
16737
16738// SetStreamDescription sets the StreamDescription field's value.
16739func (s *SourceTableFeatureDetails) SetStreamDescription(v *StreamSpecification) *SourceTableFeatureDetails {
16740	s.StreamDescription = v
16741	return s
16742}
16743
16744// SetTimeToLiveDescription sets the TimeToLiveDescription field's value.
16745func (s *SourceTableFeatureDetails) SetTimeToLiveDescription(v *TimeToLiveDescription) *SourceTableFeatureDetails {
16746	s.TimeToLiveDescription = v
16747	return s
16748}
16749
16750// Represents the DynamoDB Streams configuration for a table in DynamoDB.
16751type StreamSpecification struct {
16752	_ struct{} `type:"structure"`
16753
16754	// Indicates whether DynamoDB Streams is enabled (true) or disabled (false)
16755	// on the table.
16756	//
16757	// StreamEnabled is a required field
16758	StreamEnabled *bool `type:"boolean" required:"true"`
16759
16760	// When an item in the table is modified, StreamViewType determines what information
16761	// is written to the stream for this table. Valid values for StreamViewType
16762	// are:
16763	//
16764	//    * KEYS_ONLY - Only the key attributes of the modified item are written
16765	//    to the stream.
16766	//
16767	//    * NEW_IMAGE - The entire item, as it appears after it was modified, is
16768	//    written to the stream.
16769	//
16770	//    * OLD_IMAGE - The entire item, as it appeared before it was modified,
16771	//    is written to the stream.
16772	//
16773	//    * NEW_AND_OLD_IMAGES - Both the new and the old item images of the item
16774	//    are written to the stream.
16775	StreamViewType *string `type:"string" enum:"StreamViewType"`
16776}
16777
16778// String returns the string representation
16779func (s StreamSpecification) String() string {
16780	return awsutil.Prettify(s)
16781}
16782
16783// GoString returns the string representation
16784func (s StreamSpecification) GoString() string {
16785	return s.String()
16786}
16787
16788// Validate inspects the fields of the type to determine if they are valid.
16789func (s *StreamSpecification) Validate() error {
16790	invalidParams := request.ErrInvalidParams{Context: "StreamSpecification"}
16791	if s.StreamEnabled == nil {
16792		invalidParams.Add(request.NewErrParamRequired("StreamEnabled"))
16793	}
16794
16795	if invalidParams.Len() > 0 {
16796		return invalidParams
16797	}
16798	return nil
16799}
16800
16801// SetStreamEnabled sets the StreamEnabled field's value.
16802func (s *StreamSpecification) SetStreamEnabled(v bool) *StreamSpecification {
16803	s.StreamEnabled = &v
16804	return s
16805}
16806
16807// SetStreamViewType sets the StreamViewType field's value.
16808func (s *StreamSpecification) SetStreamViewType(v string) *StreamSpecification {
16809	s.StreamViewType = &v
16810	return s
16811}
16812
16813// A target table with the specified name already exists.
16814type TableAlreadyExistsException struct {
16815	_            struct{}                  `type:"structure"`
16816	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`
16817
16818	Message_ *string `locationName:"message" type:"string"`
16819}
16820
16821// String returns the string representation
16822func (s TableAlreadyExistsException) String() string {
16823	return awsutil.Prettify(s)
16824}
16825
16826// GoString returns the string representation
16827func (s TableAlreadyExistsException) GoString() string {
16828	return s.String()
16829}
16830
16831func newErrorTableAlreadyExistsException(v protocol.ResponseMetadata) error {
16832	return &TableAlreadyExistsException{
16833		RespMetadata: v,
16834	}
16835}
16836
16837// Code returns the exception type name.
16838func (s *TableAlreadyExistsException) Code() string {
16839	return "TableAlreadyExistsException"
16840}
16841
16842// Message returns the exception's message.
16843func (s *TableAlreadyExistsException) Message() string {
16844	if s.Message_ != nil {
16845		return *s.Message_
16846	}
16847	return ""
16848}
16849
16850// OrigErr always returns nil, satisfies awserr.Error interface.
16851func (s *TableAlreadyExistsException) OrigErr() error {
16852	return nil
16853}
16854
16855func (s *TableAlreadyExistsException) Error() string {
16856	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
16857}
16858
16859// Status code returns the HTTP status code for the request's response error.
16860func (s *TableAlreadyExistsException) StatusCode() int {
16861	return s.RespMetadata.StatusCode
16862}
16863
16864// RequestID returns the service's response RequestID for request.
16865func (s *TableAlreadyExistsException) RequestID() string {
16866	return s.RespMetadata.RequestID
16867}
16868
16869// Represents the auto scaling configuration for a global table.
16870type TableAutoScalingDescription struct {
16871	_ struct{} `type:"structure"`
16872
16873	// Represents replicas of the global table.
16874	Replicas []*ReplicaAutoScalingDescription `type:"list"`
16875
16876	// The name of the table.
16877	TableName *string `min:"3" type:"string"`
16878
16879	// The current state of the table:
16880	//
16881	//    * CREATING - The table is being created.
16882	//
16883	//    * UPDATING - The table is being updated.
16884	//
16885	//    * DELETING - The table is being deleted.
16886	//
16887	//    * ACTIVE - The table is ready for use.
16888	TableStatus *string `type:"string" enum:"TableStatus"`
16889}
16890
16891// String returns the string representation
16892func (s TableAutoScalingDescription) String() string {
16893	return awsutil.Prettify(s)
16894}
16895
16896// GoString returns the string representation
16897func (s TableAutoScalingDescription) GoString() string {
16898	return s.String()
16899}
16900
16901// SetReplicas sets the Replicas field's value.
16902func (s *TableAutoScalingDescription) SetReplicas(v []*ReplicaAutoScalingDescription) *TableAutoScalingDescription {
16903	s.Replicas = v
16904	return s
16905}
16906
16907// SetTableName sets the TableName field's value.
16908func (s *TableAutoScalingDescription) SetTableName(v string) *TableAutoScalingDescription {
16909	s.TableName = &v
16910	return s
16911}
16912
16913// SetTableStatus sets the TableStatus field's value.
16914func (s *TableAutoScalingDescription) SetTableStatus(v string) *TableAutoScalingDescription {
16915	s.TableStatus = &v
16916	return s
16917}
16918
16919// Represents the properties of a table.
16920type TableDescription struct {
16921	_ struct{} `type:"structure"`
16922
16923	// Contains information about the table archive.
16924	ArchivalSummary *ArchivalSummary `type:"structure"`
16925
16926	// An array of AttributeDefinition objects. Each of these objects describes
16927	// one attribute in the table and index key schema.
16928	//
16929	// Each AttributeDefinition object in this array is composed of:
16930	//
16931	//    * AttributeName - The name of the attribute.
16932	//
16933	//    * AttributeType - The data type for the attribute.
16934	AttributeDefinitions []*AttributeDefinition `type:"list"`
16935
16936	// Contains the details for the read/write capacity mode.
16937	BillingModeSummary *BillingModeSummary `type:"structure"`
16938
16939	// The date and time when the table was created, in UNIX epoch time (http://www.epochconverter.com/)
16940	// format.
16941	CreationDateTime *time.Time `type:"timestamp"`
16942
16943	// The global secondary indexes, if any, on the table. Each index is scoped
16944	// to a given partition key value. Each element is composed of:
16945	//
16946	//    * Backfilling - If true, then the index is currently in the backfilling
16947	//    phase. Backfilling occurs only when a new global secondary index is added
16948	//    to the table. It is the process by which DynamoDB populates the new index
16949	//    with data from the table. (This attribute does not appear for indexes
16950	//    that were created during a CreateTable operation.) You can delete an index
16951	//    that is being created during the Backfilling phase when IndexStatus is
16952	//    set to CREATING and Backfilling is true. You can't delete the index that
16953	//    is being created when IndexStatus is set to CREATING and Backfilling is
16954	//    false. (This attribute does not appear for indexes that were created during
16955	//    a CreateTable operation.)
16956	//
16957	//    * IndexName - The name of the global secondary index.
16958	//
16959	//    * IndexSizeBytes - The total size of the global secondary index, in bytes.
16960	//    DynamoDB updates this value approximately every six hours. Recent changes
16961	//    might not be reflected in this value.
16962	//
16963	//    * IndexStatus - The current status of the global secondary index: CREATING
16964	//    - The index is being created. UPDATING - The index is being updated. DELETING
16965	//    - The index is being deleted. ACTIVE - The index is ready for use.
16966	//
16967	//    * ItemCount - The number of items in the global secondary index. DynamoDB
16968	//    updates this value approximately every six hours. Recent changes might
16969	//    not be reflected in this value.
16970	//
16971	//    * KeySchema - Specifies the complete index key schema. The attribute names
16972	//    in the key schema must be between 1 and 255 characters (inclusive). The
16973	//    key schema must begin with the same partition key as the table.
16974	//
16975	//    * Projection - Specifies attributes that are copied (projected) from the
16976	//    table into the index. These are in addition to the primary key attributes
16977	//    and index key attributes, which are automatically projected. Each attribute
16978	//    specification is composed of: ProjectionType - One of the following: KEYS_ONLY
16979	//    - Only the index and primary keys are projected into the index. INCLUDE
16980	//    - Only the specified table attributes are projected into the index. The
16981	//    list of projected attributes is in NonKeyAttributes. ALL - All of the
16982	//    table attributes are projected into the index. NonKeyAttributes - A list
16983	//    of one or more non-key attribute names that are projected into the secondary
16984	//    index. The total count of attributes provided in NonKeyAttributes, summed
16985	//    across all of the secondary indexes, must not exceed 20. If you project
16986	//    the same attribute into two different indexes, this counts as two distinct
16987	//    attributes when determining the total.
16988	//
16989	//    * ProvisionedThroughput - The provisioned throughput settings for the
16990	//    global secondary index, consisting of read and write capacity units, along
16991	//    with data about increases and decreases.
16992	//
16993	// If the table is in the DELETING state, no information about indexes will
16994	// be returned.
16995	GlobalSecondaryIndexes []*GlobalSecondaryIndexDescription `type:"list"`
16996
16997	// Represents the version of global tables (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/GlobalTables.html)
16998	// in use, if the table is replicated across AWS Regions.
16999	GlobalTableVersion *string `type:"string"`
17000
17001	// The number of items in the specified table. DynamoDB updates this value approximately
17002	// every six hours. Recent changes might not be reflected in this value.
17003	ItemCount *int64 `type:"long"`
17004
17005	// The primary key structure for the table. Each KeySchemaElement consists of:
17006	//
17007	//    * AttributeName - The name of the attribute.
17008	//
17009	//    * KeyType - The role of the attribute: HASH - partition key RANGE - sort
17010	//    key The partition key of an item is also known as its hash attribute.
17011	//    The term "hash attribute" derives from DynamoDB's usage of an internal
17012	//    hash function to evenly distribute data items across partitions, based
17013	//    on their partition key values. The sort key of an item is also known as
17014	//    its range attribute. The term "range attribute" derives from the way DynamoDB
17015	//    stores items with the same partition key physically close together, in
17016	//    sorted order by the sort key value.
17017	//
17018	// For more information about primary keys, see Primary Key (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/DataModel.html#DataModelPrimaryKey)
17019	// in the Amazon DynamoDB Developer Guide.
17020	KeySchema []*KeySchemaElement `min:"1" type:"list"`
17021
17022	// The Amazon Resource Name (ARN) that uniquely identifies the latest stream
17023	// for this table.
17024	LatestStreamArn *string `min:"37" type:"string"`
17025
17026	// A timestamp, in ISO 8601 format, for this stream.
17027	//
17028	// Note that LatestStreamLabel is not a unique identifier for the stream, because
17029	// it is possible that a stream from another table might have the same timestamp.
17030	// However, the combination of the following three elements is guaranteed to
17031	// be unique:
17032	//
17033	//    * AWS customer ID
17034	//
17035	//    * Table name
17036	//
17037	//    * StreamLabel
17038	LatestStreamLabel *string `type:"string"`
17039
17040	// Represents one or more local secondary indexes on the table. Each index is
17041	// scoped to a given partition key value. Tables with one or more local secondary
17042	// indexes are subject to an item collection size limit, where the amount of
17043	// data within a given item collection cannot exceed 10 GB. Each element is
17044	// composed of:
17045	//
17046	//    * IndexName - The name of the local secondary index.
17047	//
17048	//    * KeySchema - Specifies the complete index key schema. The attribute names
17049	//    in the key schema must be between 1 and 255 characters (inclusive). The
17050	//    key schema must begin with the same partition key as the table.
17051	//
17052	//    * Projection - Specifies attributes that are copied (projected) from the
17053	//    table into the index. These are in addition to the primary key attributes
17054	//    and index key attributes, which are automatically projected. Each attribute
17055	//    specification is composed of: ProjectionType - One of the following: KEYS_ONLY
17056	//    - Only the index and primary keys are projected into the index. INCLUDE
17057	//    - Only the specified table attributes are projected into the index. The
17058	//    list of projected attributes is in NonKeyAttributes. ALL - All of the
17059	//    table attributes are projected into the index. NonKeyAttributes - A list
17060	//    of one or more non-key attribute names that are projected into the secondary
17061	//    index. The total count of attributes provided in NonKeyAttributes, summed
17062	//    across all of the secondary indexes, must not exceed 20. If you project
17063	//    the same attribute into two different indexes, this counts as two distinct
17064	//    attributes when determining the total.
17065	//
17066	//    * IndexSizeBytes - Represents the total size of the index, in bytes. DynamoDB
17067	//    updates this value approximately every six hours. Recent changes might
17068	//    not be reflected in this value.
17069	//
17070	//    * ItemCount - Represents the number of items in the index. DynamoDB updates
17071	//    this value approximately every six hours. Recent changes might not be
17072	//    reflected in this value.
17073	//
17074	// If the table is in the DELETING state, no information about indexes will
17075	// be returned.
17076	LocalSecondaryIndexes []*LocalSecondaryIndexDescription `type:"list"`
17077
17078	// The provisioned throughput settings for the table, consisting of read and
17079	// write capacity units, along with data about increases and decreases.
17080	ProvisionedThroughput *ProvisionedThroughputDescription `type:"structure"`
17081
17082	// Represents replicas of the table.
17083	Replicas []*ReplicaDescription `type:"list"`
17084
17085	// Contains details for the restore.
17086	RestoreSummary *RestoreSummary `type:"structure"`
17087
17088	// The description of the server-side encryption status on the specified table.
17089	SSEDescription *SSEDescription `type:"structure"`
17090
17091	// The current DynamoDB Streams configuration for the table.
17092	StreamSpecification *StreamSpecification `type:"structure"`
17093
17094	// The Amazon Resource Name (ARN) that uniquely identifies the table.
17095	TableArn *string `type:"string"`
17096
17097	// Unique identifier for the table for which the backup was created.
17098	TableId *string `type:"string"`
17099
17100	// The name of the table.
17101	TableName *string `min:"3" type:"string"`
17102
17103	// The total size of the specified table, in bytes. DynamoDB updates this value
17104	// approximately every six hours. Recent changes might not be reflected in this
17105	// value.
17106	TableSizeBytes *int64 `type:"long"`
17107
17108	// The current state of the table:
17109	//
17110	//    * CREATING - The table is being created.
17111	//
17112	//    * UPDATING - The table is being updated.
17113	//
17114	//    * DELETING - The table is being deleted.
17115	//
17116	//    * ACTIVE - The table is ready for use.
17117	//
17118	//    * INACCESSIBLE_ENCRYPTION_CREDENTIALS - The AWS KMS key used to encrypt
17119	//    the table in inaccessible. Table operations may fail due to failure to
17120	//    use the AWS KMS key. DynamoDB will initiate the table archival process
17121	//    when a table's AWS KMS key remains inaccessible for more than seven days.
17122	//
17123	//    * ARCHIVING - The table is being archived. Operations are not allowed
17124	//    until archival is complete.
17125	//
17126	//    * ARCHIVED - The table has been archived. See the ArchivalReason for more
17127	//    information.
17128	TableStatus *string `type:"string" enum:"TableStatus"`
17129}
17130
17131// String returns the string representation
17132func (s TableDescription) String() string {
17133	return awsutil.Prettify(s)
17134}
17135
17136// GoString returns the string representation
17137func (s TableDescription) GoString() string {
17138	return s.String()
17139}
17140
17141// SetArchivalSummary sets the ArchivalSummary field's value.
17142func (s *TableDescription) SetArchivalSummary(v *ArchivalSummary) *TableDescription {
17143	s.ArchivalSummary = v
17144	return s
17145}
17146
17147// SetAttributeDefinitions sets the AttributeDefinitions field's value.
17148func (s *TableDescription) SetAttributeDefinitions(v []*AttributeDefinition) *TableDescription {
17149	s.AttributeDefinitions = v
17150	return s
17151}
17152
17153// SetBillingModeSummary sets the BillingModeSummary field's value.
17154func (s *TableDescription) SetBillingModeSummary(v *BillingModeSummary) *TableDescription {
17155	s.BillingModeSummary = v
17156	return s
17157}
17158
17159// SetCreationDateTime sets the CreationDateTime field's value.
17160func (s *TableDescription) SetCreationDateTime(v time.Time) *TableDescription {
17161	s.CreationDateTime = &v
17162	return s
17163}
17164
17165// SetGlobalSecondaryIndexes sets the GlobalSecondaryIndexes field's value.
17166func (s *TableDescription) SetGlobalSecondaryIndexes(v []*GlobalSecondaryIndexDescription) *TableDescription {
17167	s.GlobalSecondaryIndexes = v
17168	return s
17169}
17170
17171// SetGlobalTableVersion sets the GlobalTableVersion field's value.
17172func (s *TableDescription) SetGlobalTableVersion(v string) *TableDescription {
17173	s.GlobalTableVersion = &v
17174	return s
17175}
17176
17177// SetItemCount sets the ItemCount field's value.
17178func (s *TableDescription) SetItemCount(v int64) *TableDescription {
17179	s.ItemCount = &v
17180	return s
17181}
17182
17183// SetKeySchema sets the KeySchema field's value.
17184func (s *TableDescription) SetKeySchema(v []*KeySchemaElement) *TableDescription {
17185	s.KeySchema = v
17186	return s
17187}
17188
17189// SetLatestStreamArn sets the LatestStreamArn field's value.
17190func (s *TableDescription) SetLatestStreamArn(v string) *TableDescription {
17191	s.LatestStreamArn = &v
17192	return s
17193}
17194
17195// SetLatestStreamLabel sets the LatestStreamLabel field's value.
17196func (s *TableDescription) SetLatestStreamLabel(v string) *TableDescription {
17197	s.LatestStreamLabel = &v
17198	return s
17199}
17200
17201// SetLocalSecondaryIndexes sets the LocalSecondaryIndexes field's value.
17202func (s *TableDescription) SetLocalSecondaryIndexes(v []*LocalSecondaryIndexDescription) *TableDescription {
17203	s.LocalSecondaryIndexes = v
17204	return s
17205}
17206
17207// SetProvisionedThroughput sets the ProvisionedThroughput field's value.
17208func (s *TableDescription) SetProvisionedThroughput(v *ProvisionedThroughputDescription) *TableDescription {
17209	s.ProvisionedThroughput = v
17210	return s
17211}
17212
17213// SetReplicas sets the Replicas field's value.
17214func (s *TableDescription) SetReplicas(v []*ReplicaDescription) *TableDescription {
17215	s.Replicas = v
17216	return s
17217}
17218
17219// SetRestoreSummary sets the RestoreSummary field's value.
17220func (s *TableDescription) SetRestoreSummary(v *RestoreSummary) *TableDescription {
17221	s.RestoreSummary = v
17222	return s
17223}
17224
17225// SetSSEDescription sets the SSEDescription field's value.
17226func (s *TableDescription) SetSSEDescription(v *SSEDescription) *TableDescription {
17227	s.SSEDescription = v
17228	return s
17229}
17230
17231// SetStreamSpecification sets the StreamSpecification field's value.
17232func (s *TableDescription) SetStreamSpecification(v *StreamSpecification) *TableDescription {
17233	s.StreamSpecification = v
17234	return s
17235}
17236
17237// SetTableArn sets the TableArn field's value.
17238func (s *TableDescription) SetTableArn(v string) *TableDescription {
17239	s.TableArn = &v
17240	return s
17241}
17242
17243// SetTableId sets the TableId field's value.
17244func (s *TableDescription) SetTableId(v string) *TableDescription {
17245	s.TableId = &v
17246	return s
17247}
17248
17249// SetTableName sets the TableName field's value.
17250func (s *TableDescription) SetTableName(v string) *TableDescription {
17251	s.TableName = &v
17252	return s
17253}
17254
17255// SetTableSizeBytes sets the TableSizeBytes field's value.
17256func (s *TableDescription) SetTableSizeBytes(v int64) *TableDescription {
17257	s.TableSizeBytes = &v
17258	return s
17259}
17260
17261// SetTableStatus sets the TableStatus field's value.
17262func (s *TableDescription) SetTableStatus(v string) *TableDescription {
17263	s.TableStatus = &v
17264	return s
17265}
17266
17267// A target table with the specified name is either being created or deleted.
17268type TableInUseException struct {
17269	_            struct{}                  `type:"structure"`
17270	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`
17271
17272	Message_ *string `locationName:"message" type:"string"`
17273}
17274
17275// String returns the string representation
17276func (s TableInUseException) String() string {
17277	return awsutil.Prettify(s)
17278}
17279
17280// GoString returns the string representation
17281func (s TableInUseException) GoString() string {
17282	return s.String()
17283}
17284
17285func newErrorTableInUseException(v protocol.ResponseMetadata) error {
17286	return &TableInUseException{
17287		RespMetadata: v,
17288	}
17289}
17290
17291// Code returns the exception type name.
17292func (s *TableInUseException) Code() string {
17293	return "TableInUseException"
17294}
17295
17296// Message returns the exception's message.
17297func (s *TableInUseException) Message() string {
17298	if s.Message_ != nil {
17299		return *s.Message_
17300	}
17301	return ""
17302}
17303
17304// OrigErr always returns nil, satisfies awserr.Error interface.
17305func (s *TableInUseException) OrigErr() error {
17306	return nil
17307}
17308
17309func (s *TableInUseException) Error() string {
17310	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
17311}
17312
17313// Status code returns the HTTP status code for the request's response error.
17314func (s *TableInUseException) StatusCode() int {
17315	return s.RespMetadata.StatusCode
17316}
17317
17318// RequestID returns the service's response RequestID for request.
17319func (s *TableInUseException) RequestID() string {
17320	return s.RespMetadata.RequestID
17321}
17322
17323// A source table with the name TableName does not currently exist within the
17324// subscriber's account.
17325type TableNotFoundException struct {
17326	_            struct{}                  `type:"structure"`
17327	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`
17328
17329	Message_ *string `locationName:"message" type:"string"`
17330}
17331
17332// String returns the string representation
17333func (s TableNotFoundException) String() string {
17334	return awsutil.Prettify(s)
17335}
17336
17337// GoString returns the string representation
17338func (s TableNotFoundException) GoString() string {
17339	return s.String()
17340}
17341
17342func newErrorTableNotFoundException(v protocol.ResponseMetadata) error {
17343	return &TableNotFoundException{
17344		RespMetadata: v,
17345	}
17346}
17347
17348// Code returns the exception type name.
17349func (s *TableNotFoundException) Code() string {
17350	return "TableNotFoundException"
17351}
17352
17353// Message returns the exception's message.
17354func (s *TableNotFoundException) Message() string {
17355	if s.Message_ != nil {
17356		return *s.Message_
17357	}
17358	return ""
17359}
17360
17361// OrigErr always returns nil, satisfies awserr.Error interface.
17362func (s *TableNotFoundException) OrigErr() error {
17363	return nil
17364}
17365
17366func (s *TableNotFoundException) Error() string {
17367	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
17368}
17369
17370// Status code returns the HTTP status code for the request's response error.
17371func (s *TableNotFoundException) StatusCode() int {
17372	return s.RespMetadata.StatusCode
17373}
17374
17375// RequestID returns the service's response RequestID for request.
17376func (s *TableNotFoundException) RequestID() string {
17377	return s.RespMetadata.RequestID
17378}
17379
17380// Describes a tag. A tag is a key-value pair. You can add up to 50 tags to
17381// a single DynamoDB table.
17382//
17383// AWS-assigned tag names and values are automatically assigned the aws: prefix,
17384// which the user cannot assign. AWS-assigned tag names do not count towards
17385// the tag limit of 50. User-assigned tag names have the prefix user: in the
17386// Cost Allocation Report. You cannot backdate the application of a tag.
17387//
17388// For an overview on tagging DynamoDB resources, see Tagging for DynamoDB (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Tagging.html)
17389// in the Amazon DynamoDB Developer Guide.
17390type Tag struct {
17391	_ struct{} `type:"structure"`
17392
17393	// The key of the tag. Tag keys are case sensitive. Each DynamoDB table can
17394	// only have up to one tag with the same key. If you try to add an existing
17395	// tag (same key), the existing tag value will be updated to the new value.
17396	//
17397	// Key is a required field
17398	Key *string `min:"1" type:"string" required:"true"`
17399
17400	// The value of the tag. Tag values are case-sensitive and can be null.
17401	//
17402	// Value is a required field
17403	Value *string `type:"string" required:"true"`
17404}
17405
17406// String returns the string representation
17407func (s Tag) String() string {
17408	return awsutil.Prettify(s)
17409}
17410
17411// GoString returns the string representation
17412func (s Tag) GoString() string {
17413	return s.String()
17414}
17415
17416// Validate inspects the fields of the type to determine if they are valid.
17417func (s *Tag) Validate() error {
17418	invalidParams := request.ErrInvalidParams{Context: "Tag"}
17419	if s.Key == nil {
17420		invalidParams.Add(request.NewErrParamRequired("Key"))
17421	}
17422	if s.Key != nil && len(*s.Key) < 1 {
17423		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
17424	}
17425	if s.Value == nil {
17426		invalidParams.Add(request.NewErrParamRequired("Value"))
17427	}
17428
17429	if invalidParams.Len() > 0 {
17430		return invalidParams
17431	}
17432	return nil
17433}
17434
17435// SetKey sets the Key field's value.
17436func (s *Tag) SetKey(v string) *Tag {
17437	s.Key = &v
17438	return s
17439}
17440
17441// SetValue sets the Value field's value.
17442func (s *Tag) SetValue(v string) *Tag {
17443	s.Value = &v
17444	return s
17445}
17446
17447type TagResourceInput struct {
17448	_ struct{} `type:"structure"`
17449
17450	// Identifies the Amazon DynamoDB resource to which tags should be added. This
17451	// value is an Amazon Resource Name (ARN).
17452	//
17453	// ResourceArn is a required field
17454	ResourceArn *string `min:"1" type:"string" required:"true"`
17455
17456	// The tags to be assigned to the Amazon DynamoDB resource.
17457	//
17458	// Tags is a required field
17459	Tags []*Tag `type:"list" required:"true"`
17460}
17461
17462// String returns the string representation
17463func (s TagResourceInput) String() string {
17464	return awsutil.Prettify(s)
17465}
17466
17467// GoString returns the string representation
17468func (s TagResourceInput) GoString() string {
17469	return s.String()
17470}
17471
17472// Validate inspects the fields of the type to determine if they are valid.
17473func (s *TagResourceInput) Validate() error {
17474	invalidParams := request.ErrInvalidParams{Context: "TagResourceInput"}
17475	if s.ResourceArn == nil {
17476		invalidParams.Add(request.NewErrParamRequired("ResourceArn"))
17477	}
17478	if s.ResourceArn != nil && len(*s.ResourceArn) < 1 {
17479		invalidParams.Add(request.NewErrParamMinLen("ResourceArn", 1))
17480	}
17481	if s.Tags == nil {
17482		invalidParams.Add(request.NewErrParamRequired("Tags"))
17483	}
17484	if s.Tags != nil {
17485		for i, v := range s.Tags {
17486			if v == nil {
17487				continue
17488			}
17489			if err := v.Validate(); err != nil {
17490				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Tags", i), err.(request.ErrInvalidParams))
17491			}
17492		}
17493	}
17494
17495	if invalidParams.Len() > 0 {
17496		return invalidParams
17497	}
17498	return nil
17499}
17500
17501// SetResourceArn sets the ResourceArn field's value.
17502func (s *TagResourceInput) SetResourceArn(v string) *TagResourceInput {
17503	s.ResourceArn = &v
17504	return s
17505}
17506
17507// SetTags sets the Tags field's value.
17508func (s *TagResourceInput) SetTags(v []*Tag) *TagResourceInput {
17509	s.Tags = v
17510	return s
17511}
17512
17513type TagResourceOutput struct {
17514	_ struct{} `type:"structure"`
17515}
17516
17517// String returns the string representation
17518func (s TagResourceOutput) String() string {
17519	return awsutil.Prettify(s)
17520}
17521
17522// GoString returns the string representation
17523func (s TagResourceOutput) GoString() string {
17524	return s.String()
17525}
17526
17527// The description of the Time to Live (TTL) status on the specified table.
17528type TimeToLiveDescription struct {
17529	_ struct{} `type:"structure"`
17530
17531	// The name of the TTL attribute for items in the table.
17532	AttributeName *string `min:"1" type:"string"`
17533
17534	// The TTL status for the table.
17535	TimeToLiveStatus *string `type:"string" enum:"TimeToLiveStatus"`
17536}
17537
17538// String returns the string representation
17539func (s TimeToLiveDescription) String() string {
17540	return awsutil.Prettify(s)
17541}
17542
17543// GoString returns the string representation
17544func (s TimeToLiveDescription) GoString() string {
17545	return s.String()
17546}
17547
17548// SetAttributeName sets the AttributeName field's value.
17549func (s *TimeToLiveDescription) SetAttributeName(v string) *TimeToLiveDescription {
17550	s.AttributeName = &v
17551	return s
17552}
17553
17554// SetTimeToLiveStatus sets the TimeToLiveStatus field's value.
17555func (s *TimeToLiveDescription) SetTimeToLiveStatus(v string) *TimeToLiveDescription {
17556	s.TimeToLiveStatus = &v
17557	return s
17558}
17559
17560// Represents the settings used to enable or disable Time to Live (TTL) for
17561// the specified table.
17562type TimeToLiveSpecification struct {
17563	_ struct{} `type:"structure"`
17564
17565	// The name of the TTL attribute used to store the expiration time for items
17566	// in the table.
17567	//
17568	// AttributeName is a required field
17569	AttributeName *string `min:"1" type:"string" required:"true"`
17570
17571	// Indicates whether TTL is to be enabled (true) or disabled (false) on the
17572	// table.
17573	//
17574	// Enabled is a required field
17575	Enabled *bool `type:"boolean" required:"true"`
17576}
17577
17578// String returns the string representation
17579func (s TimeToLiveSpecification) String() string {
17580	return awsutil.Prettify(s)
17581}
17582
17583// GoString returns the string representation
17584func (s TimeToLiveSpecification) GoString() string {
17585	return s.String()
17586}
17587
17588// Validate inspects the fields of the type to determine if they are valid.
17589func (s *TimeToLiveSpecification) Validate() error {
17590	invalidParams := request.ErrInvalidParams{Context: "TimeToLiveSpecification"}
17591	if s.AttributeName == nil {
17592		invalidParams.Add(request.NewErrParamRequired("AttributeName"))
17593	}
17594	if s.AttributeName != nil && len(*s.AttributeName) < 1 {
17595		invalidParams.Add(request.NewErrParamMinLen("AttributeName", 1))
17596	}
17597	if s.Enabled == nil {
17598		invalidParams.Add(request.NewErrParamRequired("Enabled"))
17599	}
17600
17601	if invalidParams.Len() > 0 {
17602		return invalidParams
17603	}
17604	return nil
17605}
17606
17607// SetAttributeName sets the AttributeName field's value.
17608func (s *TimeToLiveSpecification) SetAttributeName(v string) *TimeToLiveSpecification {
17609	s.AttributeName = &v
17610	return s
17611}
17612
17613// SetEnabled sets the Enabled field's value.
17614func (s *TimeToLiveSpecification) SetEnabled(v bool) *TimeToLiveSpecification {
17615	s.Enabled = &v
17616	return s
17617}
17618
17619// Specifies an item to be retrieved as part of the transaction.
17620type TransactGetItem struct {
17621	_ struct{} `type:"structure"`
17622
17623	// Contains the primary key that identifies the item to get, together with the
17624	// name of the table that contains the item, and optionally the specific attributes
17625	// of the item to retrieve.
17626	//
17627	// Get is a required field
17628	Get *Get `type:"structure" required:"true"`
17629}
17630
17631// String returns the string representation
17632func (s TransactGetItem) String() string {
17633	return awsutil.Prettify(s)
17634}
17635
17636// GoString returns the string representation
17637func (s TransactGetItem) GoString() string {
17638	return s.String()
17639}
17640
17641// Validate inspects the fields of the type to determine if they are valid.
17642func (s *TransactGetItem) Validate() error {
17643	invalidParams := request.ErrInvalidParams{Context: "TransactGetItem"}
17644	if s.Get == nil {
17645		invalidParams.Add(request.NewErrParamRequired("Get"))
17646	}
17647	if s.Get != nil {
17648		if err := s.Get.Validate(); err != nil {
17649			invalidParams.AddNested("Get", err.(request.ErrInvalidParams))
17650		}
17651	}
17652
17653	if invalidParams.Len() > 0 {
17654		return invalidParams
17655	}
17656	return nil
17657}
17658
17659// SetGet sets the Get field's value.
17660func (s *TransactGetItem) SetGet(v *Get) *TransactGetItem {
17661	s.Get = v
17662	return s
17663}
17664
17665type TransactGetItemsInput struct {
17666	_ struct{} `type:"structure"`
17667
17668	// A value of TOTAL causes consumed capacity information to be returned, and
17669	// a value of NONE prevents that information from being returned. No other value
17670	// is valid.
17671	ReturnConsumedCapacity *string `type:"string" enum:"ReturnConsumedCapacity"`
17672
17673	// An ordered array of up to 25 TransactGetItem objects, each of which contains
17674	// a Get structure.
17675	//
17676	// TransactItems is a required field
17677	TransactItems []*TransactGetItem `min:"1" type:"list" required:"true"`
17678}
17679
17680// String returns the string representation
17681func (s TransactGetItemsInput) String() string {
17682	return awsutil.Prettify(s)
17683}
17684
17685// GoString returns the string representation
17686func (s TransactGetItemsInput) GoString() string {
17687	return s.String()
17688}
17689
17690// Validate inspects the fields of the type to determine if they are valid.
17691func (s *TransactGetItemsInput) Validate() error {
17692	invalidParams := request.ErrInvalidParams{Context: "TransactGetItemsInput"}
17693	if s.TransactItems == nil {
17694		invalidParams.Add(request.NewErrParamRequired("TransactItems"))
17695	}
17696	if s.TransactItems != nil && len(s.TransactItems) < 1 {
17697		invalidParams.Add(request.NewErrParamMinLen("TransactItems", 1))
17698	}
17699	if s.TransactItems != nil {
17700		for i, v := range s.TransactItems {
17701			if v == nil {
17702				continue
17703			}
17704			if err := v.Validate(); err != nil {
17705				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "TransactItems", i), err.(request.ErrInvalidParams))
17706			}
17707		}
17708	}
17709
17710	if invalidParams.Len() > 0 {
17711		return invalidParams
17712	}
17713	return nil
17714}
17715
17716// SetReturnConsumedCapacity sets the ReturnConsumedCapacity field's value.
17717func (s *TransactGetItemsInput) SetReturnConsumedCapacity(v string) *TransactGetItemsInput {
17718	s.ReturnConsumedCapacity = &v
17719	return s
17720}
17721
17722// SetTransactItems sets the TransactItems field's value.
17723func (s *TransactGetItemsInput) SetTransactItems(v []*TransactGetItem) *TransactGetItemsInput {
17724	s.TransactItems = v
17725	return s
17726}
17727
17728type TransactGetItemsOutput struct {
17729	_ struct{} `type:"structure"`
17730
17731	// If the ReturnConsumedCapacity value was TOTAL, this is an array of ConsumedCapacity
17732	// objects, one for each table addressed by TransactGetItem objects in the TransactItems
17733	// parameter. These ConsumedCapacity objects report the read-capacity units
17734	// consumed by the TransactGetItems call in that table.
17735	ConsumedCapacity []*ConsumedCapacity `type:"list"`
17736
17737	// An ordered array of up to 25 ItemResponse objects, each of which corresponds
17738	// to the TransactGetItem object in the same position in the TransactItems array.
17739	// Each ItemResponse object contains a Map of the name-value pairs that are
17740	// the projected attributes of the requested item.
17741	//
17742	// If a requested item could not be retrieved, the corresponding ItemResponse
17743	// object is Null, or if the requested item has no projected attributes, the
17744	// corresponding ItemResponse object is an empty Map.
17745	Responses []*ItemResponse `min:"1" type:"list"`
17746}
17747
17748// String returns the string representation
17749func (s TransactGetItemsOutput) String() string {
17750	return awsutil.Prettify(s)
17751}
17752
17753// GoString returns the string representation
17754func (s TransactGetItemsOutput) GoString() string {
17755	return s.String()
17756}
17757
17758// SetConsumedCapacity sets the ConsumedCapacity field's value.
17759func (s *TransactGetItemsOutput) SetConsumedCapacity(v []*ConsumedCapacity) *TransactGetItemsOutput {
17760	s.ConsumedCapacity = v
17761	return s
17762}
17763
17764// SetResponses sets the Responses field's value.
17765func (s *TransactGetItemsOutput) SetResponses(v []*ItemResponse) *TransactGetItemsOutput {
17766	s.Responses = v
17767	return s
17768}
17769
17770// A list of requests that can perform update, put, delete, or check operations
17771// on multiple items in one or more tables atomically.
17772type TransactWriteItem struct {
17773	_ struct{} `type:"structure"`
17774
17775	// A request to perform a check item operation.
17776	ConditionCheck *ConditionCheck `type:"structure"`
17777
17778	// A request to perform a DeleteItem operation.
17779	Delete *Delete `type:"structure"`
17780
17781	// A request to perform a PutItem operation.
17782	Put *Put `type:"structure"`
17783
17784	// A request to perform an UpdateItem operation.
17785	Update *Update `type:"structure"`
17786}
17787
17788// String returns the string representation
17789func (s TransactWriteItem) String() string {
17790	return awsutil.Prettify(s)
17791}
17792
17793// GoString returns the string representation
17794func (s TransactWriteItem) GoString() string {
17795	return s.String()
17796}
17797
17798// Validate inspects the fields of the type to determine if they are valid.
17799func (s *TransactWriteItem) Validate() error {
17800	invalidParams := request.ErrInvalidParams{Context: "TransactWriteItem"}
17801	if s.ConditionCheck != nil {
17802		if err := s.ConditionCheck.Validate(); err != nil {
17803			invalidParams.AddNested("ConditionCheck", err.(request.ErrInvalidParams))
17804		}
17805	}
17806	if s.Delete != nil {
17807		if err := s.Delete.Validate(); err != nil {
17808			invalidParams.AddNested("Delete", err.(request.ErrInvalidParams))
17809		}
17810	}
17811	if s.Put != nil {
17812		if err := s.Put.Validate(); err != nil {
17813			invalidParams.AddNested("Put", err.(request.ErrInvalidParams))
17814		}
17815	}
17816	if s.Update != nil {
17817		if err := s.Update.Validate(); err != nil {
17818			invalidParams.AddNested("Update", err.(request.ErrInvalidParams))
17819		}
17820	}
17821
17822	if invalidParams.Len() > 0 {
17823		return invalidParams
17824	}
17825	return nil
17826}
17827
17828// SetConditionCheck sets the ConditionCheck field's value.
17829func (s *TransactWriteItem) SetConditionCheck(v *ConditionCheck) *TransactWriteItem {
17830	s.ConditionCheck = v
17831	return s
17832}
17833
17834// SetDelete sets the Delete field's value.
17835func (s *TransactWriteItem) SetDelete(v *Delete) *TransactWriteItem {
17836	s.Delete = v
17837	return s
17838}
17839
17840// SetPut sets the Put field's value.
17841func (s *TransactWriteItem) SetPut(v *Put) *TransactWriteItem {
17842	s.Put = v
17843	return s
17844}
17845
17846// SetUpdate sets the Update field's value.
17847func (s *TransactWriteItem) SetUpdate(v *Update) *TransactWriteItem {
17848	s.Update = v
17849	return s
17850}
17851
17852type TransactWriteItemsInput struct {
17853	_ struct{} `type:"structure"`
17854
17855	// Providing a ClientRequestToken makes the call to TransactWriteItems idempotent,
17856	// meaning that multiple identical calls have the same effect as one single
17857	// call.
17858	//
17859	// Although multiple identical calls using the same client request token produce
17860	// the same result on the server (no side effects), the responses to the calls
17861	// might not be the same. If the ReturnConsumedCapacity> parameter is set, then
17862	// the initial TransactWriteItems call returns the amount of write capacity
17863	// units consumed in making the changes. Subsequent TransactWriteItems calls
17864	// with the same client token return the number of read capacity units consumed
17865	// in reading the item.
17866	//
17867	// A client request token is valid for 10 minutes after the first request that
17868	// uses it is completed. After 10 minutes, any request with the same client
17869	// token is treated as a new request. Do not resubmit the same request with
17870	// the same client token for more than 10 minutes, or the result might not be
17871	// idempotent.
17872	//
17873	// If you submit a request with the same client token but a change in other
17874	// parameters within the 10-minute idempotency window, DynamoDB returns an IdempotentParameterMismatch
17875	// exception.
17876	ClientRequestToken *string `min:"1" type:"string" idempotencyToken:"true"`
17877
17878	// Determines the level of detail about provisioned throughput consumption that
17879	// is returned in the response:
17880	//
17881	//    * INDEXES - The response includes the aggregate ConsumedCapacity for the
17882	//    operation, together with ConsumedCapacity for each table and secondary
17883	//    index that was accessed. Note that some operations, such as GetItem and
17884	//    BatchGetItem, do not access any indexes at all. In these cases, specifying
17885	//    INDEXES will only return ConsumedCapacity information for table(s).
17886	//
17887	//    * TOTAL - The response includes only the aggregate ConsumedCapacity for
17888	//    the operation.
17889	//
17890	//    * NONE - No ConsumedCapacity details are included in the response.
17891	ReturnConsumedCapacity *string `type:"string" enum:"ReturnConsumedCapacity"`
17892
17893	// Determines whether item collection metrics are returned. If set to SIZE,
17894	// the response includes statistics about item collections (if any), that were
17895	// modified during the operation and are returned in the response. If set to
17896	// NONE (the default), no statistics are returned.
17897	ReturnItemCollectionMetrics *string `type:"string" enum:"ReturnItemCollectionMetrics"`
17898
17899	// An ordered array of up to 25 TransactWriteItem objects, each of which contains
17900	// a ConditionCheck, Put, Update, or Delete object. These can operate on items
17901	// in different tables, but the tables must reside in the same AWS account and
17902	// Region, and no two of them can operate on the same item.
17903	//
17904	// TransactItems is a required field
17905	TransactItems []*TransactWriteItem `min:"1" type:"list" required:"true"`
17906}
17907
17908// String returns the string representation
17909func (s TransactWriteItemsInput) String() string {
17910	return awsutil.Prettify(s)
17911}
17912
17913// GoString returns the string representation
17914func (s TransactWriteItemsInput) GoString() string {
17915	return s.String()
17916}
17917
17918// Validate inspects the fields of the type to determine if they are valid.
17919func (s *TransactWriteItemsInput) Validate() error {
17920	invalidParams := request.ErrInvalidParams{Context: "TransactWriteItemsInput"}
17921	if s.ClientRequestToken != nil && len(*s.ClientRequestToken) < 1 {
17922		invalidParams.Add(request.NewErrParamMinLen("ClientRequestToken", 1))
17923	}
17924	if s.TransactItems == nil {
17925		invalidParams.Add(request.NewErrParamRequired("TransactItems"))
17926	}
17927	if s.TransactItems != nil && len(s.TransactItems) < 1 {
17928		invalidParams.Add(request.NewErrParamMinLen("TransactItems", 1))
17929	}
17930	if s.TransactItems != nil {
17931		for i, v := range s.TransactItems {
17932			if v == nil {
17933				continue
17934			}
17935			if err := v.Validate(); err != nil {
17936				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "TransactItems", i), err.(request.ErrInvalidParams))
17937			}
17938		}
17939	}
17940
17941	if invalidParams.Len() > 0 {
17942		return invalidParams
17943	}
17944	return nil
17945}
17946
17947// SetClientRequestToken sets the ClientRequestToken field's value.
17948func (s *TransactWriteItemsInput) SetClientRequestToken(v string) *TransactWriteItemsInput {
17949	s.ClientRequestToken = &v
17950	return s
17951}
17952
17953// SetReturnConsumedCapacity sets the ReturnConsumedCapacity field's value.
17954func (s *TransactWriteItemsInput) SetReturnConsumedCapacity(v string) *TransactWriteItemsInput {
17955	s.ReturnConsumedCapacity = &v
17956	return s
17957}
17958
17959// SetReturnItemCollectionMetrics sets the ReturnItemCollectionMetrics field's value.
17960func (s *TransactWriteItemsInput) SetReturnItemCollectionMetrics(v string) *TransactWriteItemsInput {
17961	s.ReturnItemCollectionMetrics = &v
17962	return s
17963}
17964
17965// SetTransactItems sets the TransactItems field's value.
17966func (s *TransactWriteItemsInput) SetTransactItems(v []*TransactWriteItem) *TransactWriteItemsInput {
17967	s.TransactItems = v
17968	return s
17969}
17970
17971type TransactWriteItemsOutput struct {
17972	_ struct{} `type:"structure"`
17973
17974	// The capacity units consumed by the entire TransactWriteItems operation. The
17975	// values of the list are ordered according to the ordering of the TransactItems
17976	// request parameter.
17977	ConsumedCapacity []*ConsumedCapacity `type:"list"`
17978
17979	// A list of tables that were processed by TransactWriteItems and, for each
17980	// table, information about any item collections that were affected by individual
17981	// UpdateItem, PutItem, or DeleteItem operations.
17982	ItemCollectionMetrics map[string][]*ItemCollectionMetrics `type:"map"`
17983}
17984
17985// String returns the string representation
17986func (s TransactWriteItemsOutput) String() string {
17987	return awsutil.Prettify(s)
17988}
17989
17990// GoString returns the string representation
17991func (s TransactWriteItemsOutput) GoString() string {
17992	return s.String()
17993}
17994
17995// SetConsumedCapacity sets the ConsumedCapacity field's value.
17996func (s *TransactWriteItemsOutput) SetConsumedCapacity(v []*ConsumedCapacity) *TransactWriteItemsOutput {
17997	s.ConsumedCapacity = v
17998	return s
17999}
18000
18001// SetItemCollectionMetrics sets the ItemCollectionMetrics field's value.
18002func (s *TransactWriteItemsOutput) SetItemCollectionMetrics(v map[string][]*ItemCollectionMetrics) *TransactWriteItemsOutput {
18003	s.ItemCollectionMetrics = v
18004	return s
18005}
18006
18007// The entire transaction request was canceled.
18008//
18009// DynamoDB cancels a TransactWriteItems request under the following circumstances:
18010//
18011//    * A condition in one of the condition expressions is not met.
18012//
18013//    * A table in the TransactWriteItems request is in a different account
18014//    or region.
18015//
18016//    * More than one action in the TransactWriteItems operation targets the
18017//    same item.
18018//
18019//    * There is insufficient provisioned capacity for the transaction to be
18020//    completed.
18021//
18022//    * An item size becomes too large (larger than 400 KB), or a local secondary
18023//    index (LSI) becomes too large, or a similar validation error occurs because
18024//    of changes made by the transaction.
18025//
18026//    * There is a user error, such as an invalid data format.
18027//
18028// DynamoDB cancels a TransactGetItems request under the following circumstances:
18029//
18030//    * There is an ongoing TransactGetItems operation that conflicts with a
18031//    concurrent PutItem, UpdateItem, DeleteItem or TransactWriteItems request.
18032//    In this case the TransactGetItems operation fails with a TransactionCanceledException.
18033//
18034//    * A table in the TransactGetItems request is in a different account or
18035//    region.
18036//
18037//    * There is insufficient provisioned capacity for the transaction to be
18038//    completed.
18039//
18040//    * There is a user error, such as an invalid data format.
18041//
18042// If using Java, DynamoDB lists the cancellation reasons on the CancellationReasons
18043// property. This property is not set for other languages. Transaction cancellation
18044// reasons are ordered in the order of requested items, if an item has no error
18045// it will have NONE code and Null message.
18046//
18047// Cancellation reason codes and possible error messages:
18048//
18049//    * No Errors: Code: NONE Message: null
18050//
18051//    * Conditional Check Failed: Code: ConditionalCheckFailed Message: The
18052//    conditional request failed.
18053//
18054//    * Item Collection Size Limit Exceeded: Code: ItemCollectionSizeLimitExceeded
18055//    Message: Collection size exceeded.
18056//
18057//    * Transaction Conflict: Code: TransactionConflict Message: Transaction
18058//    is ongoing for the item.
18059//
18060//    * Provisioned Throughput Exceeded: Code: ProvisionedThroughputExceeded
18061//    Messages: The level of configured provisioned throughput for the table
18062//    was exceeded. Consider increasing your provisioning level with the UpdateTable
18063//    API. This Message is received when provisioned throughput is exceeded
18064//    is on a provisioned DynamoDB table. The level of configured provisioned
18065//    throughput for one or more global secondary indexes of the table was exceeded.
18066//    Consider increasing your provisioning level for the under-provisioned
18067//    global secondary indexes with the UpdateTable API. This message is returned
18068//    when provisioned throughput is exceeded is on a provisioned GSI.
18069//
18070//    * Throttling Error: Code: ThrottlingError Messages: Throughput exceeds
18071//    the current capacity of your table or index. DynamoDB is automatically
18072//    scaling your table or index so please try again shortly. If exceptions
18073//    persist, check if you have a hot key: https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/bp-partition-key-design.html.
18074//    This message is returned when writes get throttled on an On-Demand table
18075//    as DynamoDB is automatically scaling the table. Throughput exceeds the
18076//    current capacity for one or more global secondary indexes. DynamoDB is
18077//    automatically scaling your index so please try again shortly. This message
18078//    is returned when when writes get throttled on an On-Demand GSI as DynamoDB
18079//    is automatically scaling the GSI.
18080//
18081//    * Validation Error: Code: ValidationError Messages: One or more parameter
18082//    values were invalid. The update expression attempted to update the secondary
18083//    index key beyond allowed size limits. The update expression attempted
18084//    to update the secondary index key to unsupported type. An operand in the
18085//    update expression has an incorrect data type. Item size to update has
18086//    exceeded the maximum allowed size. Number overflow. Attempting to store
18087//    a number with magnitude larger than supported range. Type mismatch for
18088//    attribute to update. Nesting Levels have exceeded supported limits. The
18089//    document path provided in the update expression is invalid for update.
18090//    The provided expression refers to an attribute that does not exist in
18091//    the item.
18092type TransactionCanceledException struct {
18093	_            struct{}                  `type:"structure"`
18094	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`
18095
18096	// A list of cancellation reasons.
18097	CancellationReasons []*CancellationReason `min:"1" type:"list"`
18098
18099	Message_ *string `locationName:"Message" type:"string"`
18100}
18101
18102// String returns the string representation
18103func (s TransactionCanceledException) String() string {
18104	return awsutil.Prettify(s)
18105}
18106
18107// GoString returns the string representation
18108func (s TransactionCanceledException) GoString() string {
18109	return s.String()
18110}
18111
18112func newErrorTransactionCanceledException(v protocol.ResponseMetadata) error {
18113	return &TransactionCanceledException{
18114		RespMetadata: v,
18115	}
18116}
18117
18118// Code returns the exception type name.
18119func (s *TransactionCanceledException) Code() string {
18120	return "TransactionCanceledException"
18121}
18122
18123// Message returns the exception's message.
18124func (s *TransactionCanceledException) Message() string {
18125	if s.Message_ != nil {
18126		return *s.Message_
18127	}
18128	return ""
18129}
18130
18131// OrigErr always returns nil, satisfies awserr.Error interface.
18132func (s *TransactionCanceledException) OrigErr() error {
18133	return nil
18134}
18135
18136func (s *TransactionCanceledException) Error() string {
18137	return fmt.Sprintf("%s: %s\n%s", s.Code(), s.Message(), s.String())
18138}
18139
18140// Status code returns the HTTP status code for the request's response error.
18141func (s *TransactionCanceledException) StatusCode() int {
18142	return s.RespMetadata.StatusCode
18143}
18144
18145// RequestID returns the service's response RequestID for request.
18146func (s *TransactionCanceledException) RequestID() string {
18147	return s.RespMetadata.RequestID
18148}
18149
18150// Operation was rejected because there is an ongoing transaction for the item.
18151type TransactionConflictException struct {
18152	_            struct{}                  `type:"structure"`
18153	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`
18154
18155	Message_ *string `locationName:"message" type:"string"`
18156}
18157
18158// String returns the string representation
18159func (s TransactionConflictException) String() string {
18160	return awsutil.Prettify(s)
18161}
18162
18163// GoString returns the string representation
18164func (s TransactionConflictException) GoString() string {
18165	return s.String()
18166}
18167
18168func newErrorTransactionConflictException(v protocol.ResponseMetadata) error {
18169	return &TransactionConflictException{
18170		RespMetadata: v,
18171	}
18172}
18173
18174// Code returns the exception type name.
18175func (s *TransactionConflictException) Code() string {
18176	return "TransactionConflictException"
18177}
18178
18179// Message returns the exception's message.
18180func (s *TransactionConflictException) Message() string {
18181	if s.Message_ != nil {
18182		return *s.Message_
18183	}
18184	return ""
18185}
18186
18187// OrigErr always returns nil, satisfies awserr.Error interface.
18188func (s *TransactionConflictException) OrigErr() error {
18189	return nil
18190}
18191
18192func (s *TransactionConflictException) Error() string {
18193	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
18194}
18195
18196// Status code returns the HTTP status code for the request's response error.
18197func (s *TransactionConflictException) StatusCode() int {
18198	return s.RespMetadata.StatusCode
18199}
18200
18201// RequestID returns the service's response RequestID for request.
18202func (s *TransactionConflictException) RequestID() string {
18203	return s.RespMetadata.RequestID
18204}
18205
18206// The transaction with the given request token is already in progress.
18207type TransactionInProgressException struct {
18208	_            struct{}                  `type:"structure"`
18209	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`
18210
18211	Message_ *string `locationName:"Message" type:"string"`
18212}
18213
18214// String returns the string representation
18215func (s TransactionInProgressException) String() string {
18216	return awsutil.Prettify(s)
18217}
18218
18219// GoString returns the string representation
18220func (s TransactionInProgressException) GoString() string {
18221	return s.String()
18222}
18223
18224func newErrorTransactionInProgressException(v protocol.ResponseMetadata) error {
18225	return &TransactionInProgressException{
18226		RespMetadata: v,
18227	}
18228}
18229
18230// Code returns the exception type name.
18231func (s *TransactionInProgressException) Code() string {
18232	return "TransactionInProgressException"
18233}
18234
18235// Message returns the exception's message.
18236func (s *TransactionInProgressException) Message() string {
18237	if s.Message_ != nil {
18238		return *s.Message_
18239	}
18240	return ""
18241}
18242
18243// OrigErr always returns nil, satisfies awserr.Error interface.
18244func (s *TransactionInProgressException) OrigErr() error {
18245	return nil
18246}
18247
18248func (s *TransactionInProgressException) Error() string {
18249	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
18250}
18251
18252// Status code returns the HTTP status code for the request's response error.
18253func (s *TransactionInProgressException) StatusCode() int {
18254	return s.RespMetadata.StatusCode
18255}
18256
18257// RequestID returns the service's response RequestID for request.
18258func (s *TransactionInProgressException) RequestID() string {
18259	return s.RespMetadata.RequestID
18260}
18261
18262type UntagResourceInput struct {
18263	_ struct{} `type:"structure"`
18264
18265	// The DynamoDB resource that the tags will be removed from. This value is an
18266	// Amazon Resource Name (ARN).
18267	//
18268	// ResourceArn is a required field
18269	ResourceArn *string `min:"1" type:"string" required:"true"`
18270
18271	// A list of tag keys. Existing tags of the resource whose keys are members
18272	// of this list will be removed from the DynamoDB resource.
18273	//
18274	// TagKeys is a required field
18275	TagKeys []*string `type:"list" required:"true"`
18276}
18277
18278// String returns the string representation
18279func (s UntagResourceInput) String() string {
18280	return awsutil.Prettify(s)
18281}
18282
18283// GoString returns the string representation
18284func (s UntagResourceInput) GoString() string {
18285	return s.String()
18286}
18287
18288// Validate inspects the fields of the type to determine if they are valid.
18289func (s *UntagResourceInput) Validate() error {
18290	invalidParams := request.ErrInvalidParams{Context: "UntagResourceInput"}
18291	if s.ResourceArn == nil {
18292		invalidParams.Add(request.NewErrParamRequired("ResourceArn"))
18293	}
18294	if s.ResourceArn != nil && len(*s.ResourceArn) < 1 {
18295		invalidParams.Add(request.NewErrParamMinLen("ResourceArn", 1))
18296	}
18297	if s.TagKeys == nil {
18298		invalidParams.Add(request.NewErrParamRequired("TagKeys"))
18299	}
18300
18301	if invalidParams.Len() > 0 {
18302		return invalidParams
18303	}
18304	return nil
18305}
18306
18307// SetResourceArn sets the ResourceArn field's value.
18308func (s *UntagResourceInput) SetResourceArn(v string) *UntagResourceInput {
18309	s.ResourceArn = &v
18310	return s
18311}
18312
18313// SetTagKeys sets the TagKeys field's value.
18314func (s *UntagResourceInput) SetTagKeys(v []*string) *UntagResourceInput {
18315	s.TagKeys = v
18316	return s
18317}
18318
18319type UntagResourceOutput struct {
18320	_ struct{} `type:"structure"`
18321}
18322
18323// String returns the string representation
18324func (s UntagResourceOutput) String() string {
18325	return awsutil.Prettify(s)
18326}
18327
18328// GoString returns the string representation
18329func (s UntagResourceOutput) GoString() string {
18330	return s.String()
18331}
18332
18333// Represents a request to perform an UpdateItem operation.
18334type Update struct {
18335	_ struct{} `type:"structure"`
18336
18337	// A condition that must be satisfied in order for a conditional update to succeed.
18338	ConditionExpression *string `type:"string"`
18339
18340	// One or more substitution tokens for attribute names in an expression.
18341	ExpressionAttributeNames map[string]*string `type:"map"`
18342
18343	// One or more values that can be substituted in an expression.
18344	ExpressionAttributeValues map[string]*AttributeValue `type:"map"`
18345
18346	// The primary key of the item to be updated. Each element consists of an attribute
18347	// name and a value for that attribute.
18348	//
18349	// Key is a required field
18350	Key map[string]*AttributeValue `type:"map" required:"true"`
18351
18352	// Use ReturnValuesOnConditionCheckFailure to get the item attributes if the
18353	// Update condition fails. For ReturnValuesOnConditionCheckFailure, the valid
18354	// values are: NONE, ALL_OLD, UPDATED_OLD, ALL_NEW, UPDATED_NEW.
18355	ReturnValuesOnConditionCheckFailure *string `type:"string" enum:"ReturnValuesOnConditionCheckFailure"`
18356
18357	// Name of the table for the UpdateItem request.
18358	//
18359	// TableName is a required field
18360	TableName *string `min:"3" type:"string" required:"true"`
18361
18362	// An expression that defines one or more attributes to be updated, the action
18363	// to be performed on them, and new value(s) for them.
18364	//
18365	// UpdateExpression is a required field
18366	UpdateExpression *string `type:"string" required:"true"`
18367}
18368
18369// String returns the string representation
18370func (s Update) String() string {
18371	return awsutil.Prettify(s)
18372}
18373
18374// GoString returns the string representation
18375func (s Update) GoString() string {
18376	return s.String()
18377}
18378
18379// Validate inspects the fields of the type to determine if they are valid.
18380func (s *Update) Validate() error {
18381	invalidParams := request.ErrInvalidParams{Context: "Update"}
18382	if s.Key == nil {
18383		invalidParams.Add(request.NewErrParamRequired("Key"))
18384	}
18385	if s.TableName == nil {
18386		invalidParams.Add(request.NewErrParamRequired("TableName"))
18387	}
18388	if s.TableName != nil && len(*s.TableName) < 3 {
18389		invalidParams.Add(request.NewErrParamMinLen("TableName", 3))
18390	}
18391	if s.UpdateExpression == nil {
18392		invalidParams.Add(request.NewErrParamRequired("UpdateExpression"))
18393	}
18394
18395	if invalidParams.Len() > 0 {
18396		return invalidParams
18397	}
18398	return nil
18399}
18400
18401// SetConditionExpression sets the ConditionExpression field's value.
18402func (s *Update) SetConditionExpression(v string) *Update {
18403	s.ConditionExpression = &v
18404	return s
18405}
18406
18407// SetExpressionAttributeNames sets the ExpressionAttributeNames field's value.
18408func (s *Update) SetExpressionAttributeNames(v map[string]*string) *Update {
18409	s.ExpressionAttributeNames = v
18410	return s
18411}
18412
18413// SetExpressionAttributeValues sets the ExpressionAttributeValues field's value.
18414func (s *Update) SetExpressionAttributeValues(v map[string]*AttributeValue) *Update {
18415	s.ExpressionAttributeValues = v
18416	return s
18417}
18418
18419// SetKey sets the Key field's value.
18420func (s *Update) SetKey(v map[string]*AttributeValue) *Update {
18421	s.Key = v
18422	return s
18423}
18424
18425// SetReturnValuesOnConditionCheckFailure sets the ReturnValuesOnConditionCheckFailure field's value.
18426func (s *Update) SetReturnValuesOnConditionCheckFailure(v string) *Update {
18427	s.ReturnValuesOnConditionCheckFailure = &v
18428	return s
18429}
18430
18431// SetTableName sets the TableName field's value.
18432func (s *Update) SetTableName(v string) *Update {
18433	s.TableName = &v
18434	return s
18435}
18436
18437// SetUpdateExpression sets the UpdateExpression field's value.
18438func (s *Update) SetUpdateExpression(v string) *Update {
18439	s.UpdateExpression = &v
18440	return s
18441}
18442
18443type UpdateContinuousBackupsInput struct {
18444	_ struct{} `type:"structure"`
18445
18446	// Represents the settings used to enable point in time recovery.
18447	//
18448	// PointInTimeRecoverySpecification is a required field
18449	PointInTimeRecoverySpecification *PointInTimeRecoverySpecification `type:"structure" required:"true"`
18450
18451	// The name of the table.
18452	//
18453	// TableName is a required field
18454	TableName *string `min:"3" type:"string" required:"true"`
18455}
18456
18457// String returns the string representation
18458func (s UpdateContinuousBackupsInput) String() string {
18459	return awsutil.Prettify(s)
18460}
18461
18462// GoString returns the string representation
18463func (s UpdateContinuousBackupsInput) GoString() string {
18464	return s.String()
18465}
18466
18467// Validate inspects the fields of the type to determine if they are valid.
18468func (s *UpdateContinuousBackupsInput) Validate() error {
18469	invalidParams := request.ErrInvalidParams{Context: "UpdateContinuousBackupsInput"}
18470	if s.PointInTimeRecoverySpecification == nil {
18471		invalidParams.Add(request.NewErrParamRequired("PointInTimeRecoverySpecification"))
18472	}
18473	if s.TableName == nil {
18474		invalidParams.Add(request.NewErrParamRequired("TableName"))
18475	}
18476	if s.TableName != nil && len(*s.TableName) < 3 {
18477		invalidParams.Add(request.NewErrParamMinLen("TableName", 3))
18478	}
18479	if s.PointInTimeRecoverySpecification != nil {
18480		if err := s.PointInTimeRecoverySpecification.Validate(); err != nil {
18481			invalidParams.AddNested("PointInTimeRecoverySpecification", err.(request.ErrInvalidParams))
18482		}
18483	}
18484
18485	if invalidParams.Len() > 0 {
18486		return invalidParams
18487	}
18488	return nil
18489}
18490
18491// SetPointInTimeRecoverySpecification sets the PointInTimeRecoverySpecification field's value.
18492func (s *UpdateContinuousBackupsInput) SetPointInTimeRecoverySpecification(v *PointInTimeRecoverySpecification) *UpdateContinuousBackupsInput {
18493	s.PointInTimeRecoverySpecification = v
18494	return s
18495}
18496
18497// SetTableName sets the TableName field's value.
18498func (s *UpdateContinuousBackupsInput) SetTableName(v string) *UpdateContinuousBackupsInput {
18499	s.TableName = &v
18500	return s
18501}
18502
18503type UpdateContinuousBackupsOutput struct {
18504	_ struct{} `type:"structure"`
18505
18506	// Represents the continuous backups and point in time recovery settings on
18507	// the table.
18508	ContinuousBackupsDescription *ContinuousBackupsDescription `type:"structure"`
18509}
18510
18511// String returns the string representation
18512func (s UpdateContinuousBackupsOutput) String() string {
18513	return awsutil.Prettify(s)
18514}
18515
18516// GoString returns the string representation
18517func (s UpdateContinuousBackupsOutput) GoString() string {
18518	return s.String()
18519}
18520
18521// SetContinuousBackupsDescription sets the ContinuousBackupsDescription field's value.
18522func (s *UpdateContinuousBackupsOutput) SetContinuousBackupsDescription(v *ContinuousBackupsDescription) *UpdateContinuousBackupsOutput {
18523	s.ContinuousBackupsDescription = v
18524	return s
18525}
18526
18527type UpdateContributorInsightsInput struct {
18528	_ struct{} `type:"structure"`
18529
18530	// Represents the contributor insights action.
18531	//
18532	// ContributorInsightsAction is a required field
18533	ContributorInsightsAction *string `type:"string" required:"true" enum:"ContributorInsightsAction"`
18534
18535	// The global secondary index name, if applicable.
18536	IndexName *string `min:"3" type:"string"`
18537
18538	// The name of the table.
18539	//
18540	// TableName is a required field
18541	TableName *string `min:"3" type:"string" required:"true"`
18542}
18543
18544// String returns the string representation
18545func (s UpdateContributorInsightsInput) String() string {
18546	return awsutil.Prettify(s)
18547}
18548
18549// GoString returns the string representation
18550func (s UpdateContributorInsightsInput) GoString() string {
18551	return s.String()
18552}
18553
18554// Validate inspects the fields of the type to determine if they are valid.
18555func (s *UpdateContributorInsightsInput) Validate() error {
18556	invalidParams := request.ErrInvalidParams{Context: "UpdateContributorInsightsInput"}
18557	if s.ContributorInsightsAction == nil {
18558		invalidParams.Add(request.NewErrParamRequired("ContributorInsightsAction"))
18559	}
18560	if s.IndexName != nil && len(*s.IndexName) < 3 {
18561		invalidParams.Add(request.NewErrParamMinLen("IndexName", 3))
18562	}
18563	if s.TableName == nil {
18564		invalidParams.Add(request.NewErrParamRequired("TableName"))
18565	}
18566	if s.TableName != nil && len(*s.TableName) < 3 {
18567		invalidParams.Add(request.NewErrParamMinLen("TableName", 3))
18568	}
18569
18570	if invalidParams.Len() > 0 {
18571		return invalidParams
18572	}
18573	return nil
18574}
18575
18576// SetContributorInsightsAction sets the ContributorInsightsAction field's value.
18577func (s *UpdateContributorInsightsInput) SetContributorInsightsAction(v string) *UpdateContributorInsightsInput {
18578	s.ContributorInsightsAction = &v
18579	return s
18580}
18581
18582// SetIndexName sets the IndexName field's value.
18583func (s *UpdateContributorInsightsInput) SetIndexName(v string) *UpdateContributorInsightsInput {
18584	s.IndexName = &v
18585	return s
18586}
18587
18588// SetTableName sets the TableName field's value.
18589func (s *UpdateContributorInsightsInput) SetTableName(v string) *UpdateContributorInsightsInput {
18590	s.TableName = &v
18591	return s
18592}
18593
18594type UpdateContributorInsightsOutput struct {
18595	_ struct{} `type:"structure"`
18596
18597	// The status of contributor insights
18598	ContributorInsightsStatus *string `type:"string" enum:"ContributorInsightsStatus"`
18599
18600	// The name of the global secondary index, if applicable.
18601	IndexName *string `min:"3" type:"string"`
18602
18603	// The name of the table.
18604	TableName *string `min:"3" type:"string"`
18605}
18606
18607// String returns the string representation
18608func (s UpdateContributorInsightsOutput) String() string {
18609	return awsutil.Prettify(s)
18610}
18611
18612// GoString returns the string representation
18613func (s UpdateContributorInsightsOutput) GoString() string {
18614	return s.String()
18615}
18616
18617// SetContributorInsightsStatus sets the ContributorInsightsStatus field's value.
18618func (s *UpdateContributorInsightsOutput) SetContributorInsightsStatus(v string) *UpdateContributorInsightsOutput {
18619	s.ContributorInsightsStatus = &v
18620	return s
18621}
18622
18623// SetIndexName sets the IndexName field's value.
18624func (s *UpdateContributorInsightsOutput) SetIndexName(v string) *UpdateContributorInsightsOutput {
18625	s.IndexName = &v
18626	return s
18627}
18628
18629// SetTableName sets the TableName field's value.
18630func (s *UpdateContributorInsightsOutput) SetTableName(v string) *UpdateContributorInsightsOutput {
18631	s.TableName = &v
18632	return s
18633}
18634
18635// Represents the new provisioned throughput settings to be applied to a global
18636// secondary index.
18637type UpdateGlobalSecondaryIndexAction struct {
18638	_ struct{} `type:"structure"`
18639
18640	// The name of the global secondary index to be updated.
18641	//
18642	// IndexName is a required field
18643	IndexName *string `min:"3" type:"string" required:"true"`
18644
18645	// Represents the provisioned throughput settings for the specified global secondary
18646	// index.
18647	//
18648	// For current minimum and maximum provisioned throughput values, see Limits
18649	// (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Limits.html)
18650	// in the Amazon DynamoDB Developer Guide.
18651	//
18652	// ProvisionedThroughput is a required field
18653	ProvisionedThroughput *ProvisionedThroughput `type:"structure" required:"true"`
18654}
18655
18656// String returns the string representation
18657func (s UpdateGlobalSecondaryIndexAction) String() string {
18658	return awsutil.Prettify(s)
18659}
18660
18661// GoString returns the string representation
18662func (s UpdateGlobalSecondaryIndexAction) GoString() string {
18663	return s.String()
18664}
18665
18666// Validate inspects the fields of the type to determine if they are valid.
18667func (s *UpdateGlobalSecondaryIndexAction) Validate() error {
18668	invalidParams := request.ErrInvalidParams{Context: "UpdateGlobalSecondaryIndexAction"}
18669	if s.IndexName == nil {
18670		invalidParams.Add(request.NewErrParamRequired("IndexName"))
18671	}
18672	if s.IndexName != nil && len(*s.IndexName) < 3 {
18673		invalidParams.Add(request.NewErrParamMinLen("IndexName", 3))
18674	}
18675	if s.ProvisionedThroughput == nil {
18676		invalidParams.Add(request.NewErrParamRequired("ProvisionedThroughput"))
18677	}
18678	if s.ProvisionedThroughput != nil {
18679		if err := s.ProvisionedThroughput.Validate(); err != nil {
18680			invalidParams.AddNested("ProvisionedThroughput", err.(request.ErrInvalidParams))
18681		}
18682	}
18683
18684	if invalidParams.Len() > 0 {
18685		return invalidParams
18686	}
18687	return nil
18688}
18689
18690// SetIndexName sets the IndexName field's value.
18691func (s *UpdateGlobalSecondaryIndexAction) SetIndexName(v string) *UpdateGlobalSecondaryIndexAction {
18692	s.IndexName = &v
18693	return s
18694}
18695
18696// SetProvisionedThroughput sets the ProvisionedThroughput field's value.
18697func (s *UpdateGlobalSecondaryIndexAction) SetProvisionedThroughput(v *ProvisionedThroughput) *UpdateGlobalSecondaryIndexAction {
18698	s.ProvisionedThroughput = v
18699	return s
18700}
18701
18702type UpdateGlobalTableInput struct {
18703	_ struct{} `type:"structure"`
18704
18705	// The global table name.
18706	//
18707	// GlobalTableName is a required field
18708	GlobalTableName *string `min:"3" type:"string" required:"true"`
18709
18710	// A list of Regions that should be added or removed from the global table.
18711	//
18712	// ReplicaUpdates is a required field
18713	ReplicaUpdates []*ReplicaUpdate `type:"list" required:"true"`
18714}
18715
18716// String returns the string representation
18717func (s UpdateGlobalTableInput) String() string {
18718	return awsutil.Prettify(s)
18719}
18720
18721// GoString returns the string representation
18722func (s UpdateGlobalTableInput) GoString() string {
18723	return s.String()
18724}
18725
18726// Validate inspects the fields of the type to determine if they are valid.
18727func (s *UpdateGlobalTableInput) Validate() error {
18728	invalidParams := request.ErrInvalidParams{Context: "UpdateGlobalTableInput"}
18729	if s.GlobalTableName == nil {
18730		invalidParams.Add(request.NewErrParamRequired("GlobalTableName"))
18731	}
18732	if s.GlobalTableName != nil && len(*s.GlobalTableName) < 3 {
18733		invalidParams.Add(request.NewErrParamMinLen("GlobalTableName", 3))
18734	}
18735	if s.ReplicaUpdates == nil {
18736		invalidParams.Add(request.NewErrParamRequired("ReplicaUpdates"))
18737	}
18738	if s.ReplicaUpdates != nil {
18739		for i, v := range s.ReplicaUpdates {
18740			if v == nil {
18741				continue
18742			}
18743			if err := v.Validate(); err != nil {
18744				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "ReplicaUpdates", i), err.(request.ErrInvalidParams))
18745			}
18746		}
18747	}
18748
18749	if invalidParams.Len() > 0 {
18750		return invalidParams
18751	}
18752	return nil
18753}
18754
18755// SetGlobalTableName sets the GlobalTableName field's value.
18756func (s *UpdateGlobalTableInput) SetGlobalTableName(v string) *UpdateGlobalTableInput {
18757	s.GlobalTableName = &v
18758	return s
18759}
18760
18761// SetReplicaUpdates sets the ReplicaUpdates field's value.
18762func (s *UpdateGlobalTableInput) SetReplicaUpdates(v []*ReplicaUpdate) *UpdateGlobalTableInput {
18763	s.ReplicaUpdates = v
18764	return s
18765}
18766
18767type UpdateGlobalTableOutput struct {
18768	_ struct{} `type:"structure"`
18769
18770	// Contains the details of the global table.
18771	GlobalTableDescription *GlobalTableDescription `type:"structure"`
18772}
18773
18774// String returns the string representation
18775func (s UpdateGlobalTableOutput) String() string {
18776	return awsutil.Prettify(s)
18777}
18778
18779// GoString returns the string representation
18780func (s UpdateGlobalTableOutput) GoString() string {
18781	return s.String()
18782}
18783
18784// SetGlobalTableDescription sets the GlobalTableDescription field's value.
18785func (s *UpdateGlobalTableOutput) SetGlobalTableDescription(v *GlobalTableDescription) *UpdateGlobalTableOutput {
18786	s.GlobalTableDescription = v
18787	return s
18788}
18789
18790type UpdateGlobalTableSettingsInput struct {
18791	_ struct{} `type:"structure"`
18792
18793	// The billing mode of the global table. If GlobalTableBillingMode is not specified,
18794	// the global table defaults to PROVISIONED capacity billing mode.
18795	//
18796	//    * PROVISIONED - We recommend using PROVISIONED for predictable workloads.
18797	//    PROVISIONED sets the billing mode to Provisioned Mode (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/HowItWorks.ReadWriteCapacityMode.html#HowItWorks.ProvisionedThroughput.Manual).
18798	//
18799	//    * PAY_PER_REQUEST - We recommend using PAY_PER_REQUEST for unpredictable
18800	//    workloads. PAY_PER_REQUEST sets the billing mode to On-Demand Mode (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/HowItWorks.ReadWriteCapacityMode.html#HowItWorks.OnDemand).
18801	GlobalTableBillingMode *string `type:"string" enum:"BillingMode"`
18802
18803	// Represents the settings of a global secondary index for a global table that
18804	// will be modified.
18805	GlobalTableGlobalSecondaryIndexSettingsUpdate []*GlobalTableGlobalSecondaryIndexSettingsUpdate `min:"1" type:"list"`
18806
18807	// The name of the global table
18808	//
18809	// GlobalTableName is a required field
18810	GlobalTableName *string `min:"3" type:"string" required:"true"`
18811
18812	// Auto scaling settings for managing provisioned write capacity for the global
18813	// table.
18814	GlobalTableProvisionedWriteCapacityAutoScalingSettingsUpdate *AutoScalingSettingsUpdate `type:"structure"`
18815
18816	// The maximum number of writes consumed per second before DynamoDB returns
18817	// a ThrottlingException.
18818	GlobalTableProvisionedWriteCapacityUnits *int64 `min:"1" type:"long"`
18819
18820	// Represents the settings for a global table in a Region that will be modified.
18821	ReplicaSettingsUpdate []*ReplicaSettingsUpdate `min:"1" type:"list"`
18822}
18823
18824// String returns the string representation
18825func (s UpdateGlobalTableSettingsInput) String() string {
18826	return awsutil.Prettify(s)
18827}
18828
18829// GoString returns the string representation
18830func (s UpdateGlobalTableSettingsInput) GoString() string {
18831	return s.String()
18832}
18833
18834// Validate inspects the fields of the type to determine if they are valid.
18835func (s *UpdateGlobalTableSettingsInput) Validate() error {
18836	invalidParams := request.ErrInvalidParams{Context: "UpdateGlobalTableSettingsInput"}
18837	if s.GlobalTableGlobalSecondaryIndexSettingsUpdate != nil && len(s.GlobalTableGlobalSecondaryIndexSettingsUpdate) < 1 {
18838		invalidParams.Add(request.NewErrParamMinLen("GlobalTableGlobalSecondaryIndexSettingsUpdate", 1))
18839	}
18840	if s.GlobalTableName == nil {
18841		invalidParams.Add(request.NewErrParamRequired("GlobalTableName"))
18842	}
18843	if s.GlobalTableName != nil && len(*s.GlobalTableName) < 3 {
18844		invalidParams.Add(request.NewErrParamMinLen("GlobalTableName", 3))
18845	}
18846	if s.GlobalTableProvisionedWriteCapacityUnits != nil && *s.GlobalTableProvisionedWriteCapacityUnits < 1 {
18847		invalidParams.Add(request.NewErrParamMinValue("GlobalTableProvisionedWriteCapacityUnits", 1))
18848	}
18849	if s.ReplicaSettingsUpdate != nil && len(s.ReplicaSettingsUpdate) < 1 {
18850		invalidParams.Add(request.NewErrParamMinLen("ReplicaSettingsUpdate", 1))
18851	}
18852	if s.GlobalTableGlobalSecondaryIndexSettingsUpdate != nil {
18853		for i, v := range s.GlobalTableGlobalSecondaryIndexSettingsUpdate {
18854			if v == nil {
18855				continue
18856			}
18857			if err := v.Validate(); err != nil {
18858				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "GlobalTableGlobalSecondaryIndexSettingsUpdate", i), err.(request.ErrInvalidParams))
18859			}
18860		}
18861	}
18862	if s.GlobalTableProvisionedWriteCapacityAutoScalingSettingsUpdate != nil {
18863		if err := s.GlobalTableProvisionedWriteCapacityAutoScalingSettingsUpdate.Validate(); err != nil {
18864			invalidParams.AddNested("GlobalTableProvisionedWriteCapacityAutoScalingSettingsUpdate", err.(request.ErrInvalidParams))
18865		}
18866	}
18867	if s.ReplicaSettingsUpdate != nil {
18868		for i, v := range s.ReplicaSettingsUpdate {
18869			if v == nil {
18870				continue
18871			}
18872			if err := v.Validate(); err != nil {
18873				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "ReplicaSettingsUpdate", i), err.(request.ErrInvalidParams))
18874			}
18875		}
18876	}
18877
18878	if invalidParams.Len() > 0 {
18879		return invalidParams
18880	}
18881	return nil
18882}
18883
18884// SetGlobalTableBillingMode sets the GlobalTableBillingMode field's value.
18885func (s *UpdateGlobalTableSettingsInput) SetGlobalTableBillingMode(v string) *UpdateGlobalTableSettingsInput {
18886	s.GlobalTableBillingMode = &v
18887	return s
18888}
18889
18890// SetGlobalTableGlobalSecondaryIndexSettingsUpdate sets the GlobalTableGlobalSecondaryIndexSettingsUpdate field's value.
18891func (s *UpdateGlobalTableSettingsInput) SetGlobalTableGlobalSecondaryIndexSettingsUpdate(v []*GlobalTableGlobalSecondaryIndexSettingsUpdate) *UpdateGlobalTableSettingsInput {
18892	s.GlobalTableGlobalSecondaryIndexSettingsUpdate = v
18893	return s
18894}
18895
18896// SetGlobalTableName sets the GlobalTableName field's value.
18897func (s *UpdateGlobalTableSettingsInput) SetGlobalTableName(v string) *UpdateGlobalTableSettingsInput {
18898	s.GlobalTableName = &v
18899	return s
18900}
18901
18902// SetGlobalTableProvisionedWriteCapacityAutoScalingSettingsUpdate sets the GlobalTableProvisionedWriteCapacityAutoScalingSettingsUpdate field's value.
18903func (s *UpdateGlobalTableSettingsInput) SetGlobalTableProvisionedWriteCapacityAutoScalingSettingsUpdate(v *AutoScalingSettingsUpdate) *UpdateGlobalTableSettingsInput {
18904	s.GlobalTableProvisionedWriteCapacityAutoScalingSettingsUpdate = v
18905	return s
18906}
18907
18908// SetGlobalTableProvisionedWriteCapacityUnits sets the GlobalTableProvisionedWriteCapacityUnits field's value.
18909func (s *UpdateGlobalTableSettingsInput) SetGlobalTableProvisionedWriteCapacityUnits(v int64) *UpdateGlobalTableSettingsInput {
18910	s.GlobalTableProvisionedWriteCapacityUnits = &v
18911	return s
18912}
18913
18914// SetReplicaSettingsUpdate sets the ReplicaSettingsUpdate field's value.
18915func (s *UpdateGlobalTableSettingsInput) SetReplicaSettingsUpdate(v []*ReplicaSettingsUpdate) *UpdateGlobalTableSettingsInput {
18916	s.ReplicaSettingsUpdate = v
18917	return s
18918}
18919
18920type UpdateGlobalTableSettingsOutput struct {
18921	_ struct{} `type:"structure"`
18922
18923	// The name of the global table.
18924	GlobalTableName *string `min:"3" type:"string"`
18925
18926	// The Region-specific settings for the global table.
18927	ReplicaSettings []*ReplicaSettingsDescription `type:"list"`
18928}
18929
18930// String returns the string representation
18931func (s UpdateGlobalTableSettingsOutput) String() string {
18932	return awsutil.Prettify(s)
18933}
18934
18935// GoString returns the string representation
18936func (s UpdateGlobalTableSettingsOutput) GoString() string {
18937	return s.String()
18938}
18939
18940// SetGlobalTableName sets the GlobalTableName field's value.
18941func (s *UpdateGlobalTableSettingsOutput) SetGlobalTableName(v string) *UpdateGlobalTableSettingsOutput {
18942	s.GlobalTableName = &v
18943	return s
18944}
18945
18946// SetReplicaSettings sets the ReplicaSettings field's value.
18947func (s *UpdateGlobalTableSettingsOutput) SetReplicaSettings(v []*ReplicaSettingsDescription) *UpdateGlobalTableSettingsOutput {
18948	s.ReplicaSettings = v
18949	return s
18950}
18951
18952// Represents the input of an UpdateItem operation.
18953type UpdateItemInput struct {
18954	_ struct{} `type:"structure"`
18955
18956	// This is a legacy parameter. Use UpdateExpression instead. For more information,
18957	// see AttributeUpdates (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/LegacyConditionalParameters.AttributeUpdates.html)
18958	// in the Amazon DynamoDB Developer Guide.
18959	AttributeUpdates map[string]*AttributeValueUpdate `type:"map"`
18960
18961	// A condition that must be satisfied in order for a conditional update to succeed.
18962	//
18963	// An expression can contain any of the following:
18964	//
18965	//    * Functions: attribute_exists | attribute_not_exists | attribute_type
18966	//    | contains | begins_with | size These function names are case-sensitive.
18967	//
18968	//    * Comparison operators: = | <> | < | > | <= | >= | BETWEEN | IN
18969	//
18970	//    * Logical operators: AND | OR | NOT
18971	//
18972	// For more information about condition expressions, see Specifying Conditions
18973	// (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.SpecifyingConditions.html)
18974	// in the Amazon DynamoDB Developer Guide.
18975	ConditionExpression *string `type:"string"`
18976
18977	// This is a legacy parameter. Use ConditionExpression instead. For more information,
18978	// see ConditionalOperator (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/LegacyConditionalParameters.ConditionalOperator.html)
18979	// in the Amazon DynamoDB Developer Guide.
18980	ConditionalOperator *string `type:"string" enum:"ConditionalOperator"`
18981
18982	// This is a legacy parameter. Use ConditionExpression instead. For more information,
18983	// see Expected (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/LegacyConditionalParameters.Expected.html)
18984	// in the Amazon DynamoDB Developer Guide.
18985	Expected map[string]*ExpectedAttributeValue `type:"map"`
18986
18987	// One or more substitution tokens for attribute names in an expression. The
18988	// following are some use cases for using ExpressionAttributeNames:
18989	//
18990	//    * To access an attribute whose name conflicts with a DynamoDB reserved
18991	//    word.
18992	//
18993	//    * To create a placeholder for repeating occurrences of an attribute name
18994	//    in an expression.
18995	//
18996	//    * To prevent special characters in an attribute name from being misinterpreted
18997	//    in an expression.
18998	//
18999	// Use the # character in an expression to dereference an attribute name. For
19000	// example, consider the following attribute name:
19001	//
19002	//    * Percentile
19003	//
19004	// The name of this attribute conflicts with a reserved word, so it cannot be
19005	// used directly in an expression. (For the complete list of reserved words,
19006	// see Reserved Words (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ReservedWords.html)
19007	// in the Amazon DynamoDB Developer Guide.) To work around this, you could specify
19008	// the following for ExpressionAttributeNames:
19009	//
19010	//    * {"#P":"Percentile"}
19011	//
19012	// You could then use this substitution in an expression, as in this example:
19013	//
19014	//    * #P = :val
19015	//
19016	// Tokens that begin with the : character are expression attribute values, which
19017	// are placeholders for the actual value at runtime.
19018	//
19019	// For more information about expression attribute names, see Specifying Item
19020	// Attributes (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.AccessingItemAttributes.html)
19021	// in the Amazon DynamoDB Developer Guide.
19022	ExpressionAttributeNames map[string]*string `type:"map"`
19023
19024	// One or more values that can be substituted in an expression.
19025	//
19026	// Use the : (colon) character in an expression to dereference an attribute
19027	// value. For example, suppose that you wanted to check whether the value of
19028	// the ProductStatus attribute was one of the following:
19029	//
19030	// Available | Backordered | Discontinued
19031	//
19032	// You would first need to specify ExpressionAttributeValues as follows:
19033	//
19034	// { ":avail":{"S":"Available"}, ":back":{"S":"Backordered"}, ":disc":{"S":"Discontinued"}
19035	// }
19036	//
19037	// You could then use these values in an expression, such as this:
19038	//
19039	// ProductStatus IN (:avail, :back, :disc)
19040	//
19041	// For more information on expression attribute values, see Condition Expressions
19042	// (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.SpecifyingConditions.html)
19043	// in the Amazon DynamoDB Developer Guide.
19044	ExpressionAttributeValues map[string]*AttributeValue `type:"map"`
19045
19046	// The primary key of the item to be updated. Each element consists of an attribute
19047	// name and a value for that attribute.
19048	//
19049	// For the primary key, you must provide all of the attributes. For example,
19050	// with a simple primary key, you only need to provide a value for the partition
19051	// key. For a composite primary key, you must provide values for both the partition
19052	// key and the sort key.
19053	//
19054	// Key is a required field
19055	Key map[string]*AttributeValue `type:"map" required:"true"`
19056
19057	// Determines the level of detail about provisioned throughput consumption that
19058	// is returned in the response:
19059	//
19060	//    * INDEXES - The response includes the aggregate ConsumedCapacity for the
19061	//    operation, together with ConsumedCapacity for each table and secondary
19062	//    index that was accessed. Note that some operations, such as GetItem and
19063	//    BatchGetItem, do not access any indexes at all. In these cases, specifying
19064	//    INDEXES will only return ConsumedCapacity information for table(s).
19065	//
19066	//    * TOTAL - The response includes only the aggregate ConsumedCapacity for
19067	//    the operation.
19068	//
19069	//    * NONE - No ConsumedCapacity details are included in the response.
19070	ReturnConsumedCapacity *string `type:"string" enum:"ReturnConsumedCapacity"`
19071
19072	// Determines whether item collection metrics are returned. If set to SIZE,
19073	// the response includes statistics about item collections, if any, that were
19074	// modified during the operation are returned in the response. If set to NONE
19075	// (the default), no statistics are returned.
19076	ReturnItemCollectionMetrics *string `type:"string" enum:"ReturnItemCollectionMetrics"`
19077
19078	// Use ReturnValues if you want to get the item attributes as they appear before
19079	// or after they are updated. For UpdateItem, the valid values are:
19080	//
19081	//    * NONE - If ReturnValues is not specified, or if its value is NONE, then
19082	//    nothing is returned. (This setting is the default for ReturnValues.)
19083	//
19084	//    * ALL_OLD - Returns all of the attributes of the item, as they appeared
19085	//    before the UpdateItem operation.
19086	//
19087	//    * UPDATED_OLD - Returns only the updated attributes, as they appeared
19088	//    before the UpdateItem operation.
19089	//
19090	//    * ALL_NEW - Returns all of the attributes of the item, as they appear
19091	//    after the UpdateItem operation.
19092	//
19093	//    * UPDATED_NEW - Returns only the updated attributes, as they appear after
19094	//    the UpdateItem operation.
19095	//
19096	// There is no additional cost associated with requesting a return value aside
19097	// from the small network and processing overhead of receiving a larger response.
19098	// No read capacity units are consumed.
19099	//
19100	// The values returned are strongly consistent.
19101	ReturnValues *string `type:"string" enum:"ReturnValue"`
19102
19103	// The name of the table containing the item to update.
19104	//
19105	// TableName is a required field
19106	TableName *string `min:"3" type:"string" required:"true"`
19107
19108	// An expression that defines one or more attributes to be updated, the action
19109	// to be performed on them, and new values for them.
19110	//
19111	// The following action values are available for UpdateExpression.
19112	//
19113	//    * SET - Adds one or more attributes and values to an item. If any of these
19114	//    attributes already exist, they are replaced by the new values. You can
19115	//    also use SET to add or subtract from an attribute that is of type Number.
19116	//    For example: SET myNum = myNum + :val SET supports the following functions:
19117	//    if_not_exists (path, operand) - if the item does not contain an attribute
19118	//    at the specified path, then if_not_exists evaluates to operand; otherwise,
19119	//    it evaluates to path. You can use this function to avoid overwriting an
19120	//    attribute that may already be present in the item. list_append (operand,
19121	//    operand) - evaluates to a list with a new element added to it. You can
19122	//    append the new element to the start or the end of the list by reversing
19123	//    the order of the operands. These function names are case-sensitive.
19124	//
19125	//    * REMOVE - Removes one or more attributes from an item.
19126	//
19127	//    * ADD - Adds the specified value to the item, if the attribute does not
19128	//    already exist. If the attribute does exist, then the behavior of ADD depends
19129	//    on the data type of the attribute: If the existing attribute is a number,
19130	//    and if Value is also a number, then Value is mathematically added to the
19131	//    existing attribute. If Value is a negative number, then it is subtracted
19132	//    from the existing attribute. If you use ADD to increment or decrement
19133	//    a number value for an item that doesn't exist before the update, DynamoDB
19134	//    uses 0 as the initial value. Similarly, if you use ADD for an existing
19135	//    item to increment or decrement an attribute value that doesn't exist before
19136	//    the update, DynamoDB uses 0 as the initial value. For example, suppose
19137	//    that the item you want to update doesn't have an attribute named itemcount,
19138	//    but you decide to ADD the number 3 to this attribute anyway. DynamoDB
19139	//    will create the itemcount attribute, set its initial value to 0, and finally
19140	//    add 3 to it. The result will be a new itemcount attribute in the item,
19141	//    with a value of 3. If the existing data type is a set and if Value is
19142	//    also a set, then Value is added to the existing set. For example, if the
19143	//    attribute value is the set [1,2], and the ADD action specified [3], then
19144	//    the final attribute value is [1,2,3]. An error occurs if an ADD action
19145	//    is specified for a set attribute and the attribute type specified does
19146	//    not match the existing set type. Both sets must have the same primitive
19147	//    data type. For example, if the existing data type is a set of strings,
19148	//    the Value must also be a set of strings. The ADD action only supports
19149	//    Number and set data types. In addition, ADD can only be used on top-level
19150	//    attributes, not nested attributes.
19151	//
19152	//    * DELETE - Deletes an element from a set. If a set of values is specified,
19153	//    then those values are subtracted from the old set. For example, if the
19154	//    attribute value was the set [a,b,c] and the DELETE action specifies [a,c],
19155	//    then the final attribute value is [b]. Specifying an empty set is an error.
19156	//    The DELETE action only supports set data types. In addition, DELETE can
19157	//    only be used on top-level attributes, not nested attributes.
19158	//
19159	// You can have many actions in a single expression, such as the following:
19160	// SET a=:value1, b=:value2 DELETE :value3, :value4, :value5
19161	//
19162	// For more information on update expressions, see Modifying Items and Attributes
19163	// (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.Modifying.html)
19164	// in the Amazon DynamoDB Developer Guide.
19165	UpdateExpression *string `type:"string"`
19166}
19167
19168// String returns the string representation
19169func (s UpdateItemInput) String() string {
19170	return awsutil.Prettify(s)
19171}
19172
19173// GoString returns the string representation
19174func (s UpdateItemInput) GoString() string {
19175	return s.String()
19176}
19177
19178// Validate inspects the fields of the type to determine if they are valid.
19179func (s *UpdateItemInput) Validate() error {
19180	invalidParams := request.ErrInvalidParams{Context: "UpdateItemInput"}
19181	if s.Key == nil {
19182		invalidParams.Add(request.NewErrParamRequired("Key"))
19183	}
19184	if s.TableName == nil {
19185		invalidParams.Add(request.NewErrParamRequired("TableName"))
19186	}
19187	if s.TableName != nil && len(*s.TableName) < 3 {
19188		invalidParams.Add(request.NewErrParamMinLen("TableName", 3))
19189	}
19190
19191	if invalidParams.Len() > 0 {
19192		return invalidParams
19193	}
19194	return nil
19195}
19196
19197// SetAttributeUpdates sets the AttributeUpdates field's value.
19198func (s *UpdateItemInput) SetAttributeUpdates(v map[string]*AttributeValueUpdate) *UpdateItemInput {
19199	s.AttributeUpdates = v
19200	return s
19201}
19202
19203// SetConditionExpression sets the ConditionExpression field's value.
19204func (s *UpdateItemInput) SetConditionExpression(v string) *UpdateItemInput {
19205	s.ConditionExpression = &v
19206	return s
19207}
19208
19209// SetConditionalOperator sets the ConditionalOperator field's value.
19210func (s *UpdateItemInput) SetConditionalOperator(v string) *UpdateItemInput {
19211	s.ConditionalOperator = &v
19212	return s
19213}
19214
19215// SetExpected sets the Expected field's value.
19216func (s *UpdateItemInput) SetExpected(v map[string]*ExpectedAttributeValue) *UpdateItemInput {
19217	s.Expected = v
19218	return s
19219}
19220
19221// SetExpressionAttributeNames sets the ExpressionAttributeNames field's value.
19222func (s *UpdateItemInput) SetExpressionAttributeNames(v map[string]*string) *UpdateItemInput {
19223	s.ExpressionAttributeNames = v
19224	return s
19225}
19226
19227// SetExpressionAttributeValues sets the ExpressionAttributeValues field's value.
19228func (s *UpdateItemInput) SetExpressionAttributeValues(v map[string]*AttributeValue) *UpdateItemInput {
19229	s.ExpressionAttributeValues = v
19230	return s
19231}
19232
19233// SetKey sets the Key field's value.
19234func (s *UpdateItemInput) SetKey(v map[string]*AttributeValue) *UpdateItemInput {
19235	s.Key = v
19236	return s
19237}
19238
19239// SetReturnConsumedCapacity sets the ReturnConsumedCapacity field's value.
19240func (s *UpdateItemInput) SetReturnConsumedCapacity(v string) *UpdateItemInput {
19241	s.ReturnConsumedCapacity = &v
19242	return s
19243}
19244
19245// SetReturnItemCollectionMetrics sets the ReturnItemCollectionMetrics field's value.
19246func (s *UpdateItemInput) SetReturnItemCollectionMetrics(v string) *UpdateItemInput {
19247	s.ReturnItemCollectionMetrics = &v
19248	return s
19249}
19250
19251// SetReturnValues sets the ReturnValues field's value.
19252func (s *UpdateItemInput) SetReturnValues(v string) *UpdateItemInput {
19253	s.ReturnValues = &v
19254	return s
19255}
19256
19257// SetTableName sets the TableName field's value.
19258func (s *UpdateItemInput) SetTableName(v string) *UpdateItemInput {
19259	s.TableName = &v
19260	return s
19261}
19262
19263// SetUpdateExpression sets the UpdateExpression field's value.
19264func (s *UpdateItemInput) SetUpdateExpression(v string) *UpdateItemInput {
19265	s.UpdateExpression = &v
19266	return s
19267}
19268
19269// Represents the output of an UpdateItem operation.
19270type UpdateItemOutput struct {
19271	_ struct{} `type:"structure"`
19272
19273	// A map of attribute values as they appear before or after the UpdateItem operation,
19274	// as determined by the ReturnValues parameter.
19275	//
19276	// The Attributes map is only present if ReturnValues was specified as something
19277	// other than NONE in the request. Each element represents one attribute.
19278	Attributes map[string]*AttributeValue `type:"map"`
19279
19280	// The capacity units consumed by the UpdateItem operation. The data returned
19281	// includes the total provisioned throughput consumed, along with statistics
19282	// for the table and any indexes involved in the operation. ConsumedCapacity
19283	// is only returned if the ReturnConsumedCapacity parameter was specified. For
19284	// more information, see Provisioned Throughput (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ProvisionedThroughputIntro.html)
19285	// in the Amazon DynamoDB Developer Guide.
19286	ConsumedCapacity *ConsumedCapacity `type:"structure"`
19287
19288	// Information about item collections, if any, that were affected by the UpdateItem
19289	// operation. ItemCollectionMetrics is only returned if the ReturnItemCollectionMetrics
19290	// parameter was specified. If the table does not have any local secondary indexes,
19291	// this information is not returned in the response.
19292	//
19293	// Each ItemCollectionMetrics element consists of:
19294	//
19295	//    * ItemCollectionKey - The partition key value of the item collection.
19296	//    This is the same as the partition key value of the item itself.
19297	//
19298	//    * SizeEstimateRangeGB - An estimate of item collection size, in gigabytes.
19299	//    This value is a two-element array containing a lower bound and an upper
19300	//    bound for the estimate. The estimate includes the size of all the items
19301	//    in the table, plus the size of all attributes projected into all of the
19302	//    local secondary indexes on that table. Use this estimate to measure whether
19303	//    a local secondary index is approaching its size limit. The estimate is
19304	//    subject to change over time; therefore, do not rely on the precision or
19305	//    accuracy of the estimate.
19306	ItemCollectionMetrics *ItemCollectionMetrics `type:"structure"`
19307}
19308
19309// String returns the string representation
19310func (s UpdateItemOutput) String() string {
19311	return awsutil.Prettify(s)
19312}
19313
19314// GoString returns the string representation
19315func (s UpdateItemOutput) GoString() string {
19316	return s.String()
19317}
19318
19319// SetAttributes sets the Attributes field's value.
19320func (s *UpdateItemOutput) SetAttributes(v map[string]*AttributeValue) *UpdateItemOutput {
19321	s.Attributes = v
19322	return s
19323}
19324
19325// SetConsumedCapacity sets the ConsumedCapacity field's value.
19326func (s *UpdateItemOutput) SetConsumedCapacity(v *ConsumedCapacity) *UpdateItemOutput {
19327	s.ConsumedCapacity = v
19328	return s
19329}
19330
19331// SetItemCollectionMetrics sets the ItemCollectionMetrics field's value.
19332func (s *UpdateItemOutput) SetItemCollectionMetrics(v *ItemCollectionMetrics) *UpdateItemOutput {
19333	s.ItemCollectionMetrics = v
19334	return s
19335}
19336
19337// Represents a replica to be modified.
19338type UpdateReplicationGroupMemberAction struct {
19339	_ struct{} `type:"structure"`
19340
19341	// Replica-specific global secondary index settings.
19342	GlobalSecondaryIndexes []*ReplicaGlobalSecondaryIndex `min:"1" type:"list"`
19343
19344	// The AWS KMS customer master key (CMK) of the replica that should be used
19345	// for AWS KMS encryption. To specify a CMK, use its key ID, Amazon Resource
19346	// Name (ARN), alias name, or alias ARN. Note that you should only provide this
19347	// parameter if the key is different from the default DynamoDB KMS master key
19348	// alias/aws/dynamodb.
19349	KMSMasterKeyId *string `type:"string"`
19350
19351	// Replica-specific provisioned throughput. If not specified, uses the source
19352	// table's provisioned throughput settings.
19353	ProvisionedThroughputOverride *ProvisionedThroughputOverride `type:"structure"`
19354
19355	// The Region where the replica exists.
19356	//
19357	// RegionName is a required field
19358	RegionName *string `type:"string" required:"true"`
19359}
19360
19361// String returns the string representation
19362func (s UpdateReplicationGroupMemberAction) String() string {
19363	return awsutil.Prettify(s)
19364}
19365
19366// GoString returns the string representation
19367func (s UpdateReplicationGroupMemberAction) GoString() string {
19368	return s.String()
19369}
19370
19371// Validate inspects the fields of the type to determine if they are valid.
19372func (s *UpdateReplicationGroupMemberAction) Validate() error {
19373	invalidParams := request.ErrInvalidParams{Context: "UpdateReplicationGroupMemberAction"}
19374	if s.GlobalSecondaryIndexes != nil && len(s.GlobalSecondaryIndexes) < 1 {
19375		invalidParams.Add(request.NewErrParamMinLen("GlobalSecondaryIndexes", 1))
19376	}
19377	if s.RegionName == nil {
19378		invalidParams.Add(request.NewErrParamRequired("RegionName"))
19379	}
19380	if s.GlobalSecondaryIndexes != nil {
19381		for i, v := range s.GlobalSecondaryIndexes {
19382			if v == nil {
19383				continue
19384			}
19385			if err := v.Validate(); err != nil {
19386				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "GlobalSecondaryIndexes", i), err.(request.ErrInvalidParams))
19387			}
19388		}
19389	}
19390	if s.ProvisionedThroughputOverride != nil {
19391		if err := s.ProvisionedThroughputOverride.Validate(); err != nil {
19392			invalidParams.AddNested("ProvisionedThroughputOverride", err.(request.ErrInvalidParams))
19393		}
19394	}
19395
19396	if invalidParams.Len() > 0 {
19397		return invalidParams
19398	}
19399	return nil
19400}
19401
19402// SetGlobalSecondaryIndexes sets the GlobalSecondaryIndexes field's value.
19403func (s *UpdateReplicationGroupMemberAction) SetGlobalSecondaryIndexes(v []*ReplicaGlobalSecondaryIndex) *UpdateReplicationGroupMemberAction {
19404	s.GlobalSecondaryIndexes = v
19405	return s
19406}
19407
19408// SetKMSMasterKeyId sets the KMSMasterKeyId field's value.
19409func (s *UpdateReplicationGroupMemberAction) SetKMSMasterKeyId(v string) *UpdateReplicationGroupMemberAction {
19410	s.KMSMasterKeyId = &v
19411	return s
19412}
19413
19414// SetProvisionedThroughputOverride sets the ProvisionedThroughputOverride field's value.
19415func (s *UpdateReplicationGroupMemberAction) SetProvisionedThroughputOverride(v *ProvisionedThroughputOverride) *UpdateReplicationGroupMemberAction {
19416	s.ProvisionedThroughputOverride = v
19417	return s
19418}
19419
19420// SetRegionName sets the RegionName field's value.
19421func (s *UpdateReplicationGroupMemberAction) SetRegionName(v string) *UpdateReplicationGroupMemberAction {
19422	s.RegionName = &v
19423	return s
19424}
19425
19426// Represents the input of an UpdateTable operation.
19427type UpdateTableInput struct {
19428	_ struct{} `type:"structure"`
19429
19430	// An array of attributes that describe the key schema for the table and indexes.
19431	// If you are adding a new global secondary index to the table, AttributeDefinitions
19432	// must include the key element(s) of the new index.
19433	AttributeDefinitions []*AttributeDefinition `type:"list"`
19434
19435	// Controls how you are charged for read and write throughput and how you manage
19436	// capacity. When switching from pay-per-request to provisioned capacity, initial
19437	// provisioned capacity values must be set. The initial provisioned capacity
19438	// values are estimated based on the consumed read and write capacity of your
19439	// table and global secondary indexes over the past 30 minutes.
19440	//
19441	//    * PROVISIONED - We recommend using PROVISIONED for predictable workloads.
19442	//    PROVISIONED sets the billing mode to Provisioned Mode (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/HowItWorks.ReadWriteCapacityMode.html#HowItWorks.ProvisionedThroughput.Manual).
19443	//
19444	//    * PAY_PER_REQUEST - We recommend using PAY_PER_REQUEST for unpredictable
19445	//    workloads. PAY_PER_REQUEST sets the billing mode to On-Demand Mode (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/HowItWorks.ReadWriteCapacityMode.html#HowItWorks.OnDemand).
19446	BillingMode *string `type:"string" enum:"BillingMode"`
19447
19448	// An array of one or more global secondary indexes for the table. For each
19449	// index in the array, you can request one action:
19450	//
19451	//    * Create - add a new global secondary index to the table.
19452	//
19453	//    * Update - modify the provisioned throughput settings of an existing global
19454	//    secondary index.
19455	//
19456	//    * Delete - remove a global secondary index from the table.
19457	//
19458	// You can create or delete only one global secondary index per UpdateTable
19459	// operation.
19460	//
19461	// For more information, see Managing Global Secondary Indexes (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/GSI.OnlineOps.html)
19462	// in the Amazon DynamoDB Developer Guide.
19463	GlobalSecondaryIndexUpdates []*GlobalSecondaryIndexUpdate `type:"list"`
19464
19465	// The new provisioned throughput settings for the specified table or index.
19466	ProvisionedThroughput *ProvisionedThroughput `type:"structure"`
19467
19468	// A list of replica update actions (create, delete, or update) for the table.
19469	//
19470	// This property only applies to Version 2019.11.21 (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/globaltables.V2.html)
19471	// of global tables.
19472	ReplicaUpdates []*ReplicationGroupUpdate `min:"1" type:"list"`
19473
19474	// The new server-side encryption settings for the specified table.
19475	SSESpecification *SSESpecification `type:"structure"`
19476
19477	// Represents the DynamoDB Streams configuration for the table.
19478	//
19479	// You receive a ResourceInUseException if you try to enable a stream on a table
19480	// that already has a stream, or if you try to disable a stream on a table that
19481	// doesn't have a stream.
19482	StreamSpecification *StreamSpecification `type:"structure"`
19483
19484	// The name of the table to be updated.
19485	//
19486	// TableName is a required field
19487	TableName *string `min:"3" type:"string" required:"true"`
19488}
19489
19490// String returns the string representation
19491func (s UpdateTableInput) String() string {
19492	return awsutil.Prettify(s)
19493}
19494
19495// GoString returns the string representation
19496func (s UpdateTableInput) GoString() string {
19497	return s.String()
19498}
19499
19500// Validate inspects the fields of the type to determine if they are valid.
19501func (s *UpdateTableInput) Validate() error {
19502	invalidParams := request.ErrInvalidParams{Context: "UpdateTableInput"}
19503	if s.ReplicaUpdates != nil && len(s.ReplicaUpdates) < 1 {
19504		invalidParams.Add(request.NewErrParamMinLen("ReplicaUpdates", 1))
19505	}
19506	if s.TableName == nil {
19507		invalidParams.Add(request.NewErrParamRequired("TableName"))
19508	}
19509	if s.TableName != nil && len(*s.TableName) < 3 {
19510		invalidParams.Add(request.NewErrParamMinLen("TableName", 3))
19511	}
19512	if s.AttributeDefinitions != nil {
19513		for i, v := range s.AttributeDefinitions {
19514			if v == nil {
19515				continue
19516			}
19517			if err := v.Validate(); err != nil {
19518				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "AttributeDefinitions", i), err.(request.ErrInvalidParams))
19519			}
19520		}
19521	}
19522	if s.GlobalSecondaryIndexUpdates != nil {
19523		for i, v := range s.GlobalSecondaryIndexUpdates {
19524			if v == nil {
19525				continue
19526			}
19527			if err := v.Validate(); err != nil {
19528				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "GlobalSecondaryIndexUpdates", i), err.(request.ErrInvalidParams))
19529			}
19530		}
19531	}
19532	if s.ProvisionedThroughput != nil {
19533		if err := s.ProvisionedThroughput.Validate(); err != nil {
19534			invalidParams.AddNested("ProvisionedThroughput", err.(request.ErrInvalidParams))
19535		}
19536	}
19537	if s.ReplicaUpdates != nil {
19538		for i, v := range s.ReplicaUpdates {
19539			if v == nil {
19540				continue
19541			}
19542			if err := v.Validate(); err != nil {
19543				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "ReplicaUpdates", i), err.(request.ErrInvalidParams))
19544			}
19545		}
19546	}
19547	if s.StreamSpecification != nil {
19548		if err := s.StreamSpecification.Validate(); err != nil {
19549			invalidParams.AddNested("StreamSpecification", err.(request.ErrInvalidParams))
19550		}
19551	}
19552
19553	if invalidParams.Len() > 0 {
19554		return invalidParams
19555	}
19556	return nil
19557}
19558
19559// SetAttributeDefinitions sets the AttributeDefinitions field's value.
19560func (s *UpdateTableInput) SetAttributeDefinitions(v []*AttributeDefinition) *UpdateTableInput {
19561	s.AttributeDefinitions = v
19562	return s
19563}
19564
19565// SetBillingMode sets the BillingMode field's value.
19566func (s *UpdateTableInput) SetBillingMode(v string) *UpdateTableInput {
19567	s.BillingMode = &v
19568	return s
19569}
19570
19571// SetGlobalSecondaryIndexUpdates sets the GlobalSecondaryIndexUpdates field's value.
19572func (s *UpdateTableInput) SetGlobalSecondaryIndexUpdates(v []*GlobalSecondaryIndexUpdate) *UpdateTableInput {
19573	s.GlobalSecondaryIndexUpdates = v
19574	return s
19575}
19576
19577// SetProvisionedThroughput sets the ProvisionedThroughput field's value.
19578func (s *UpdateTableInput) SetProvisionedThroughput(v *ProvisionedThroughput) *UpdateTableInput {
19579	s.ProvisionedThroughput = v
19580	return s
19581}
19582
19583// SetReplicaUpdates sets the ReplicaUpdates field's value.
19584func (s *UpdateTableInput) SetReplicaUpdates(v []*ReplicationGroupUpdate) *UpdateTableInput {
19585	s.ReplicaUpdates = v
19586	return s
19587}
19588
19589// SetSSESpecification sets the SSESpecification field's value.
19590func (s *UpdateTableInput) SetSSESpecification(v *SSESpecification) *UpdateTableInput {
19591	s.SSESpecification = v
19592	return s
19593}
19594
19595// SetStreamSpecification sets the StreamSpecification field's value.
19596func (s *UpdateTableInput) SetStreamSpecification(v *StreamSpecification) *UpdateTableInput {
19597	s.StreamSpecification = v
19598	return s
19599}
19600
19601// SetTableName sets the TableName field's value.
19602func (s *UpdateTableInput) SetTableName(v string) *UpdateTableInput {
19603	s.TableName = &v
19604	return s
19605}
19606
19607// Represents the output of an UpdateTable operation.
19608type UpdateTableOutput struct {
19609	_ struct{} `type:"structure"`
19610
19611	// Represents the properties of the table.
19612	TableDescription *TableDescription `type:"structure"`
19613}
19614
19615// String returns the string representation
19616func (s UpdateTableOutput) String() string {
19617	return awsutil.Prettify(s)
19618}
19619
19620// GoString returns the string representation
19621func (s UpdateTableOutput) GoString() string {
19622	return s.String()
19623}
19624
19625// SetTableDescription sets the TableDescription field's value.
19626func (s *UpdateTableOutput) SetTableDescription(v *TableDescription) *UpdateTableOutput {
19627	s.TableDescription = v
19628	return s
19629}
19630
19631type UpdateTableReplicaAutoScalingInput struct {
19632	_ struct{} `type:"structure"`
19633
19634	// Represents the auto scaling settings of the global secondary indexes of the
19635	// replica to be updated.
19636	GlobalSecondaryIndexUpdates []*GlobalSecondaryIndexAutoScalingUpdate `min:"1" type:"list"`
19637
19638	// Represents the auto scaling settings to be modified for a global table or
19639	// global secondary index.
19640	ProvisionedWriteCapacityAutoScalingUpdate *AutoScalingSettingsUpdate `type:"structure"`
19641
19642	// Represents the auto scaling settings of replicas of the table that will be
19643	// modified.
19644	ReplicaUpdates []*ReplicaAutoScalingUpdate `min:"1" type:"list"`
19645
19646	// The name of the global table to be updated.
19647	//
19648	// TableName is a required field
19649	TableName *string `min:"3" type:"string" required:"true"`
19650}
19651
19652// String returns the string representation
19653func (s UpdateTableReplicaAutoScalingInput) String() string {
19654	return awsutil.Prettify(s)
19655}
19656
19657// GoString returns the string representation
19658func (s UpdateTableReplicaAutoScalingInput) GoString() string {
19659	return s.String()
19660}
19661
19662// Validate inspects the fields of the type to determine if they are valid.
19663func (s *UpdateTableReplicaAutoScalingInput) Validate() error {
19664	invalidParams := request.ErrInvalidParams{Context: "UpdateTableReplicaAutoScalingInput"}
19665	if s.GlobalSecondaryIndexUpdates != nil && len(s.GlobalSecondaryIndexUpdates) < 1 {
19666		invalidParams.Add(request.NewErrParamMinLen("GlobalSecondaryIndexUpdates", 1))
19667	}
19668	if s.ReplicaUpdates != nil && len(s.ReplicaUpdates) < 1 {
19669		invalidParams.Add(request.NewErrParamMinLen("ReplicaUpdates", 1))
19670	}
19671	if s.TableName == nil {
19672		invalidParams.Add(request.NewErrParamRequired("TableName"))
19673	}
19674	if s.TableName != nil && len(*s.TableName) < 3 {
19675		invalidParams.Add(request.NewErrParamMinLen("TableName", 3))
19676	}
19677	if s.GlobalSecondaryIndexUpdates != nil {
19678		for i, v := range s.GlobalSecondaryIndexUpdates {
19679			if v == nil {
19680				continue
19681			}
19682			if err := v.Validate(); err != nil {
19683				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "GlobalSecondaryIndexUpdates", i), err.(request.ErrInvalidParams))
19684			}
19685		}
19686	}
19687	if s.ProvisionedWriteCapacityAutoScalingUpdate != nil {
19688		if err := s.ProvisionedWriteCapacityAutoScalingUpdate.Validate(); err != nil {
19689			invalidParams.AddNested("ProvisionedWriteCapacityAutoScalingUpdate", err.(request.ErrInvalidParams))
19690		}
19691	}
19692	if s.ReplicaUpdates != nil {
19693		for i, v := range s.ReplicaUpdates {
19694			if v == nil {
19695				continue
19696			}
19697			if err := v.Validate(); err != nil {
19698				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "ReplicaUpdates", i), err.(request.ErrInvalidParams))
19699			}
19700		}
19701	}
19702
19703	if invalidParams.Len() > 0 {
19704		return invalidParams
19705	}
19706	return nil
19707}
19708
19709// SetGlobalSecondaryIndexUpdates sets the GlobalSecondaryIndexUpdates field's value.
19710func (s *UpdateTableReplicaAutoScalingInput) SetGlobalSecondaryIndexUpdates(v []*GlobalSecondaryIndexAutoScalingUpdate) *UpdateTableReplicaAutoScalingInput {
19711	s.GlobalSecondaryIndexUpdates = v
19712	return s
19713}
19714
19715// SetProvisionedWriteCapacityAutoScalingUpdate sets the ProvisionedWriteCapacityAutoScalingUpdate field's value.
19716func (s *UpdateTableReplicaAutoScalingInput) SetProvisionedWriteCapacityAutoScalingUpdate(v *AutoScalingSettingsUpdate) *UpdateTableReplicaAutoScalingInput {
19717	s.ProvisionedWriteCapacityAutoScalingUpdate = v
19718	return s
19719}
19720
19721// SetReplicaUpdates sets the ReplicaUpdates field's value.
19722func (s *UpdateTableReplicaAutoScalingInput) SetReplicaUpdates(v []*ReplicaAutoScalingUpdate) *UpdateTableReplicaAutoScalingInput {
19723	s.ReplicaUpdates = v
19724	return s
19725}
19726
19727// SetTableName sets the TableName field's value.
19728func (s *UpdateTableReplicaAutoScalingInput) SetTableName(v string) *UpdateTableReplicaAutoScalingInput {
19729	s.TableName = &v
19730	return s
19731}
19732
19733type UpdateTableReplicaAutoScalingOutput struct {
19734	_ struct{} `type:"structure"`
19735
19736	// Returns information about the auto scaling settings of a table with replicas.
19737	TableAutoScalingDescription *TableAutoScalingDescription `type:"structure"`
19738}
19739
19740// String returns the string representation
19741func (s UpdateTableReplicaAutoScalingOutput) String() string {
19742	return awsutil.Prettify(s)
19743}
19744
19745// GoString returns the string representation
19746func (s UpdateTableReplicaAutoScalingOutput) GoString() string {
19747	return s.String()
19748}
19749
19750// SetTableAutoScalingDescription sets the TableAutoScalingDescription field's value.
19751func (s *UpdateTableReplicaAutoScalingOutput) SetTableAutoScalingDescription(v *TableAutoScalingDescription) *UpdateTableReplicaAutoScalingOutput {
19752	s.TableAutoScalingDescription = v
19753	return s
19754}
19755
19756// Represents the input of an UpdateTimeToLive operation.
19757type UpdateTimeToLiveInput struct {
19758	_ struct{} `type:"structure"`
19759
19760	// The name of the table to be configured.
19761	//
19762	// TableName is a required field
19763	TableName *string `min:"3" type:"string" required:"true"`
19764
19765	// Represents the settings used to enable or disable Time to Live for the specified
19766	// table.
19767	//
19768	// TimeToLiveSpecification is a required field
19769	TimeToLiveSpecification *TimeToLiveSpecification `type:"structure" required:"true"`
19770}
19771
19772// String returns the string representation
19773func (s UpdateTimeToLiveInput) String() string {
19774	return awsutil.Prettify(s)
19775}
19776
19777// GoString returns the string representation
19778func (s UpdateTimeToLiveInput) GoString() string {
19779	return s.String()
19780}
19781
19782// Validate inspects the fields of the type to determine if they are valid.
19783func (s *UpdateTimeToLiveInput) Validate() error {
19784	invalidParams := request.ErrInvalidParams{Context: "UpdateTimeToLiveInput"}
19785	if s.TableName == nil {
19786		invalidParams.Add(request.NewErrParamRequired("TableName"))
19787	}
19788	if s.TableName != nil && len(*s.TableName) < 3 {
19789		invalidParams.Add(request.NewErrParamMinLen("TableName", 3))
19790	}
19791	if s.TimeToLiveSpecification == nil {
19792		invalidParams.Add(request.NewErrParamRequired("TimeToLiveSpecification"))
19793	}
19794	if s.TimeToLiveSpecification != nil {
19795		if err := s.TimeToLiveSpecification.Validate(); err != nil {
19796			invalidParams.AddNested("TimeToLiveSpecification", err.(request.ErrInvalidParams))
19797		}
19798	}
19799
19800	if invalidParams.Len() > 0 {
19801		return invalidParams
19802	}
19803	return nil
19804}
19805
19806// SetTableName sets the TableName field's value.
19807func (s *UpdateTimeToLiveInput) SetTableName(v string) *UpdateTimeToLiveInput {
19808	s.TableName = &v
19809	return s
19810}
19811
19812// SetTimeToLiveSpecification sets the TimeToLiveSpecification field's value.
19813func (s *UpdateTimeToLiveInput) SetTimeToLiveSpecification(v *TimeToLiveSpecification) *UpdateTimeToLiveInput {
19814	s.TimeToLiveSpecification = v
19815	return s
19816}
19817
19818type UpdateTimeToLiveOutput struct {
19819	_ struct{} `type:"structure"`
19820
19821	// Represents the output of an UpdateTimeToLive operation.
19822	TimeToLiveSpecification *TimeToLiveSpecification `type:"structure"`
19823}
19824
19825// String returns the string representation
19826func (s UpdateTimeToLiveOutput) String() string {
19827	return awsutil.Prettify(s)
19828}
19829
19830// GoString returns the string representation
19831func (s UpdateTimeToLiveOutput) GoString() string {
19832	return s.String()
19833}
19834
19835// SetTimeToLiveSpecification sets the TimeToLiveSpecification field's value.
19836func (s *UpdateTimeToLiveOutput) SetTimeToLiveSpecification(v *TimeToLiveSpecification) *UpdateTimeToLiveOutput {
19837	s.TimeToLiveSpecification = v
19838	return s
19839}
19840
19841// Represents an operation to perform - either DeleteItem or PutItem. You can
19842// only request one of these operations, not both, in a single WriteRequest.
19843// If you do need to perform both of these operations, you need to provide two
19844// separate WriteRequest objects.
19845type WriteRequest struct {
19846	_ struct{} `type:"structure"`
19847
19848	// A request to perform a DeleteItem operation.
19849	DeleteRequest *DeleteRequest `type:"structure"`
19850
19851	// A request to perform a PutItem operation.
19852	PutRequest *PutRequest `type:"structure"`
19853}
19854
19855// String returns the string representation
19856func (s WriteRequest) String() string {
19857	return awsutil.Prettify(s)
19858}
19859
19860// GoString returns the string representation
19861func (s WriteRequest) GoString() string {
19862	return s.String()
19863}
19864
19865// SetDeleteRequest sets the DeleteRequest field's value.
19866func (s *WriteRequest) SetDeleteRequest(v *DeleteRequest) *WriteRequest {
19867	s.DeleteRequest = v
19868	return s
19869}
19870
19871// SetPutRequest sets the PutRequest field's value.
19872func (s *WriteRequest) SetPutRequest(v *PutRequest) *WriteRequest {
19873	s.PutRequest = v
19874	return s
19875}
19876
19877const (
19878	// AttributeActionAdd is a AttributeAction enum value
19879	AttributeActionAdd = "ADD"
19880
19881	// AttributeActionPut is a AttributeAction enum value
19882	AttributeActionPut = "PUT"
19883
19884	// AttributeActionDelete is a AttributeAction enum value
19885	AttributeActionDelete = "DELETE"
19886)
19887
19888const (
19889	// BackupStatusCreating is a BackupStatus enum value
19890	BackupStatusCreating = "CREATING"
19891
19892	// BackupStatusDeleted is a BackupStatus enum value
19893	BackupStatusDeleted = "DELETED"
19894
19895	// BackupStatusAvailable is a BackupStatus enum value
19896	BackupStatusAvailable = "AVAILABLE"
19897)
19898
19899const (
19900	// BackupTypeUser is a BackupType enum value
19901	BackupTypeUser = "USER"
19902
19903	// BackupTypeSystem is a BackupType enum value
19904	BackupTypeSystem = "SYSTEM"
19905
19906	// BackupTypeAwsBackup is a BackupType enum value
19907	BackupTypeAwsBackup = "AWS_BACKUP"
19908)
19909
19910const (
19911	// BackupTypeFilterUser is a BackupTypeFilter enum value
19912	BackupTypeFilterUser = "USER"
19913
19914	// BackupTypeFilterSystem is a BackupTypeFilter enum value
19915	BackupTypeFilterSystem = "SYSTEM"
19916
19917	// BackupTypeFilterAwsBackup is a BackupTypeFilter enum value
19918	BackupTypeFilterAwsBackup = "AWS_BACKUP"
19919
19920	// BackupTypeFilterAll is a BackupTypeFilter enum value
19921	BackupTypeFilterAll = "ALL"
19922)
19923
19924const (
19925	// BillingModeProvisioned is a BillingMode enum value
19926	BillingModeProvisioned = "PROVISIONED"
19927
19928	// BillingModePayPerRequest is a BillingMode enum value
19929	BillingModePayPerRequest = "PAY_PER_REQUEST"
19930)
19931
19932const (
19933	// ComparisonOperatorEq is a ComparisonOperator enum value
19934	ComparisonOperatorEq = "EQ"
19935
19936	// ComparisonOperatorNe is a ComparisonOperator enum value
19937	ComparisonOperatorNe = "NE"
19938
19939	// ComparisonOperatorIn is a ComparisonOperator enum value
19940	ComparisonOperatorIn = "IN"
19941
19942	// ComparisonOperatorLe is a ComparisonOperator enum value
19943	ComparisonOperatorLe = "LE"
19944
19945	// ComparisonOperatorLt is a ComparisonOperator enum value
19946	ComparisonOperatorLt = "LT"
19947
19948	// ComparisonOperatorGe is a ComparisonOperator enum value
19949	ComparisonOperatorGe = "GE"
19950
19951	// ComparisonOperatorGt is a ComparisonOperator enum value
19952	ComparisonOperatorGt = "GT"
19953
19954	// ComparisonOperatorBetween is a ComparisonOperator enum value
19955	ComparisonOperatorBetween = "BETWEEN"
19956
19957	// ComparisonOperatorNotNull is a ComparisonOperator enum value
19958	ComparisonOperatorNotNull = "NOT_NULL"
19959
19960	// ComparisonOperatorNull is a ComparisonOperator enum value
19961	ComparisonOperatorNull = "NULL"
19962
19963	// ComparisonOperatorContains is a ComparisonOperator enum value
19964	ComparisonOperatorContains = "CONTAINS"
19965
19966	// ComparisonOperatorNotContains is a ComparisonOperator enum value
19967	ComparisonOperatorNotContains = "NOT_CONTAINS"
19968
19969	// ComparisonOperatorBeginsWith is a ComparisonOperator enum value
19970	ComparisonOperatorBeginsWith = "BEGINS_WITH"
19971)
19972
19973const (
19974	// ConditionalOperatorAnd is a ConditionalOperator enum value
19975	ConditionalOperatorAnd = "AND"
19976
19977	// ConditionalOperatorOr is a ConditionalOperator enum value
19978	ConditionalOperatorOr = "OR"
19979)
19980
19981const (
19982	// ContinuousBackupsStatusEnabled is a ContinuousBackupsStatus enum value
19983	ContinuousBackupsStatusEnabled = "ENABLED"
19984
19985	// ContinuousBackupsStatusDisabled is a ContinuousBackupsStatus enum value
19986	ContinuousBackupsStatusDisabled = "DISABLED"
19987)
19988
19989const (
19990	// ContributorInsightsActionEnable is a ContributorInsightsAction enum value
19991	ContributorInsightsActionEnable = "ENABLE"
19992
19993	// ContributorInsightsActionDisable is a ContributorInsightsAction enum value
19994	ContributorInsightsActionDisable = "DISABLE"
19995)
19996
19997const (
19998	// ContributorInsightsStatusEnabling is a ContributorInsightsStatus enum value
19999	ContributorInsightsStatusEnabling = "ENABLING"
20000
20001	// ContributorInsightsStatusEnabled is a ContributorInsightsStatus enum value
20002	ContributorInsightsStatusEnabled = "ENABLED"
20003
20004	// ContributorInsightsStatusDisabling is a ContributorInsightsStatus enum value
20005	ContributorInsightsStatusDisabling = "DISABLING"
20006
20007	// ContributorInsightsStatusDisabled is a ContributorInsightsStatus enum value
20008	ContributorInsightsStatusDisabled = "DISABLED"
20009
20010	// ContributorInsightsStatusFailed is a ContributorInsightsStatus enum value
20011	ContributorInsightsStatusFailed = "FAILED"
20012)
20013
20014const (
20015	// GlobalTableStatusCreating is a GlobalTableStatus enum value
20016	GlobalTableStatusCreating = "CREATING"
20017
20018	// GlobalTableStatusActive is a GlobalTableStatus enum value
20019	GlobalTableStatusActive = "ACTIVE"
20020
20021	// GlobalTableStatusDeleting is a GlobalTableStatus enum value
20022	GlobalTableStatusDeleting = "DELETING"
20023
20024	// GlobalTableStatusUpdating is a GlobalTableStatus enum value
20025	GlobalTableStatusUpdating = "UPDATING"
20026)
20027
20028const (
20029	// IndexStatusCreating is a IndexStatus enum value
20030	IndexStatusCreating = "CREATING"
20031
20032	// IndexStatusUpdating is a IndexStatus enum value
20033	IndexStatusUpdating = "UPDATING"
20034
20035	// IndexStatusDeleting is a IndexStatus enum value
20036	IndexStatusDeleting = "DELETING"
20037
20038	// IndexStatusActive is a IndexStatus enum value
20039	IndexStatusActive = "ACTIVE"
20040)
20041
20042const (
20043	// KeyTypeHash is a KeyType enum value
20044	KeyTypeHash = "HASH"
20045
20046	// KeyTypeRange is a KeyType enum value
20047	KeyTypeRange = "RANGE"
20048)
20049
20050const (
20051	// PointInTimeRecoveryStatusEnabled is a PointInTimeRecoveryStatus enum value
20052	PointInTimeRecoveryStatusEnabled = "ENABLED"
20053
20054	// PointInTimeRecoveryStatusDisabled is a PointInTimeRecoveryStatus enum value
20055	PointInTimeRecoveryStatusDisabled = "DISABLED"
20056)
20057
20058const (
20059	// ProjectionTypeAll is a ProjectionType enum value
20060	ProjectionTypeAll = "ALL"
20061
20062	// ProjectionTypeKeysOnly is a ProjectionType enum value
20063	ProjectionTypeKeysOnly = "KEYS_ONLY"
20064
20065	// ProjectionTypeInclude is a ProjectionType enum value
20066	ProjectionTypeInclude = "INCLUDE"
20067)
20068
20069const (
20070	// ReplicaStatusCreating is a ReplicaStatus enum value
20071	ReplicaStatusCreating = "CREATING"
20072
20073	// ReplicaStatusCreationFailed is a ReplicaStatus enum value
20074	ReplicaStatusCreationFailed = "CREATION_FAILED"
20075
20076	// ReplicaStatusUpdating is a ReplicaStatus enum value
20077	ReplicaStatusUpdating = "UPDATING"
20078
20079	// ReplicaStatusDeleting is a ReplicaStatus enum value
20080	ReplicaStatusDeleting = "DELETING"
20081
20082	// ReplicaStatusActive is a ReplicaStatus enum value
20083	ReplicaStatusActive = "ACTIVE"
20084)
20085
20086// Determines the level of detail about provisioned throughput consumption that
20087// is returned in the response:
20088//
20089//    * INDEXES - The response includes the aggregate ConsumedCapacity for the
20090//    operation, together with ConsumedCapacity for each table and secondary
20091//    index that was accessed. Note that some operations, such as GetItem and
20092//    BatchGetItem, do not access any indexes at all. In these cases, specifying
20093//    INDEXES will only return ConsumedCapacity information for table(s).
20094//
20095//    * TOTAL - The response includes only the aggregate ConsumedCapacity for
20096//    the operation.
20097//
20098//    * NONE - No ConsumedCapacity details are included in the response.
20099const (
20100	// ReturnConsumedCapacityIndexes is a ReturnConsumedCapacity enum value
20101	ReturnConsumedCapacityIndexes = "INDEXES"
20102
20103	// ReturnConsumedCapacityTotal is a ReturnConsumedCapacity enum value
20104	ReturnConsumedCapacityTotal = "TOTAL"
20105
20106	// ReturnConsumedCapacityNone is a ReturnConsumedCapacity enum value
20107	ReturnConsumedCapacityNone = "NONE"
20108)
20109
20110const (
20111	// ReturnItemCollectionMetricsSize is a ReturnItemCollectionMetrics enum value
20112	ReturnItemCollectionMetricsSize = "SIZE"
20113
20114	// ReturnItemCollectionMetricsNone is a ReturnItemCollectionMetrics enum value
20115	ReturnItemCollectionMetricsNone = "NONE"
20116)
20117
20118const (
20119	// ReturnValueNone is a ReturnValue enum value
20120	ReturnValueNone = "NONE"
20121
20122	// ReturnValueAllOld is a ReturnValue enum value
20123	ReturnValueAllOld = "ALL_OLD"
20124
20125	// ReturnValueUpdatedOld is a ReturnValue enum value
20126	ReturnValueUpdatedOld = "UPDATED_OLD"
20127
20128	// ReturnValueAllNew is a ReturnValue enum value
20129	ReturnValueAllNew = "ALL_NEW"
20130
20131	// ReturnValueUpdatedNew is a ReturnValue enum value
20132	ReturnValueUpdatedNew = "UPDATED_NEW"
20133)
20134
20135const (
20136	// ReturnValuesOnConditionCheckFailureAllOld is a ReturnValuesOnConditionCheckFailure enum value
20137	ReturnValuesOnConditionCheckFailureAllOld = "ALL_OLD"
20138
20139	// ReturnValuesOnConditionCheckFailureNone is a ReturnValuesOnConditionCheckFailure enum value
20140	ReturnValuesOnConditionCheckFailureNone = "NONE"
20141)
20142
20143const (
20144	// SSEStatusEnabling is a SSEStatus enum value
20145	SSEStatusEnabling = "ENABLING"
20146
20147	// SSEStatusEnabled is a SSEStatus enum value
20148	SSEStatusEnabled = "ENABLED"
20149
20150	// SSEStatusDisabling is a SSEStatus enum value
20151	SSEStatusDisabling = "DISABLING"
20152
20153	// SSEStatusDisabled is a SSEStatus enum value
20154	SSEStatusDisabled = "DISABLED"
20155
20156	// SSEStatusUpdating is a SSEStatus enum value
20157	SSEStatusUpdating = "UPDATING"
20158)
20159
20160const (
20161	// SSETypeAes256 is a SSEType enum value
20162	SSETypeAes256 = "AES256"
20163
20164	// SSETypeKms is a SSEType enum value
20165	SSETypeKms = "KMS"
20166)
20167
20168const (
20169	// ScalarAttributeTypeS is a ScalarAttributeType enum value
20170	ScalarAttributeTypeS = "S"
20171
20172	// ScalarAttributeTypeN is a ScalarAttributeType enum value
20173	ScalarAttributeTypeN = "N"
20174
20175	// ScalarAttributeTypeB is a ScalarAttributeType enum value
20176	ScalarAttributeTypeB = "B"
20177)
20178
20179const (
20180	// SelectAllAttributes is a Select enum value
20181	SelectAllAttributes = "ALL_ATTRIBUTES"
20182
20183	// SelectAllProjectedAttributes is a Select enum value
20184	SelectAllProjectedAttributes = "ALL_PROJECTED_ATTRIBUTES"
20185
20186	// SelectSpecificAttributes is a Select enum value
20187	SelectSpecificAttributes = "SPECIFIC_ATTRIBUTES"
20188
20189	// SelectCount is a Select enum value
20190	SelectCount = "COUNT"
20191)
20192
20193const (
20194	// StreamViewTypeNewImage is a StreamViewType enum value
20195	StreamViewTypeNewImage = "NEW_IMAGE"
20196
20197	// StreamViewTypeOldImage is a StreamViewType enum value
20198	StreamViewTypeOldImage = "OLD_IMAGE"
20199
20200	// StreamViewTypeNewAndOldImages is a StreamViewType enum value
20201	StreamViewTypeNewAndOldImages = "NEW_AND_OLD_IMAGES"
20202
20203	// StreamViewTypeKeysOnly is a StreamViewType enum value
20204	StreamViewTypeKeysOnly = "KEYS_ONLY"
20205)
20206
20207const (
20208	// TableStatusCreating is a TableStatus enum value
20209	TableStatusCreating = "CREATING"
20210
20211	// TableStatusUpdating is a TableStatus enum value
20212	TableStatusUpdating = "UPDATING"
20213
20214	// TableStatusDeleting is a TableStatus enum value
20215	TableStatusDeleting = "DELETING"
20216
20217	// TableStatusActive is a TableStatus enum value
20218	TableStatusActive = "ACTIVE"
20219
20220	// TableStatusInaccessibleEncryptionCredentials is a TableStatus enum value
20221	TableStatusInaccessibleEncryptionCredentials = "INACCESSIBLE_ENCRYPTION_CREDENTIALS"
20222
20223	// TableStatusArchiving is a TableStatus enum value
20224	TableStatusArchiving = "ARCHIVING"
20225
20226	// TableStatusArchived is a TableStatus enum value
20227	TableStatusArchived = "ARCHIVED"
20228)
20229
20230const (
20231	// TimeToLiveStatusEnabling is a TimeToLiveStatus enum value
20232	TimeToLiveStatusEnabling = "ENABLING"
20233
20234	// TimeToLiveStatusDisabling is a TimeToLiveStatus enum value
20235	TimeToLiveStatusDisabling = "DISABLING"
20236
20237	// TimeToLiveStatusEnabled is a TimeToLiveStatus enum value
20238	TimeToLiveStatusEnabled = "ENABLED"
20239
20240	// TimeToLiveStatusDisabled is a TimeToLiveStatus enum value
20241	TimeToLiveStatusDisabled = "DISABLED"
20242)
20243