1 /**
2  * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
3  * SPDX-License-Identifier: Apache-2.0.
4  */
5 
6 #pragma once
7 #include <aws/dynamodb/DynamoDB_EXPORTS.h>
8 #include <aws/dynamodb/DynamoDBRequest.h>
9 #include <aws/core/utils/memory/stl/AWSVector.h>
10 #include <aws/core/utils/memory/stl/AWSString.h>
11 #include <aws/dynamodb/model/BillingMode.h>
12 #include <aws/dynamodb/model/ProvisionedThroughput.h>
13 #include <aws/dynamodb/model/StreamSpecification.h>
14 #include <aws/dynamodb/model/SSESpecification.h>
15 #include <aws/dynamodb/model/AttributeDefinition.h>
16 #include <aws/dynamodb/model/KeySchemaElement.h>
17 #include <aws/dynamodb/model/LocalSecondaryIndex.h>
18 #include <aws/dynamodb/model/GlobalSecondaryIndex.h>
19 #include <aws/dynamodb/model/Tag.h>
20 #include <utility>
21 
22 namespace Aws
23 {
24 namespace DynamoDB
25 {
26 namespace Model
27 {
28 
29   /**
30    * <p>Represents the input of a <code>CreateTable</code> operation.</p><p><h3>See
31    * Also:</h3>   <a
32    * href="http://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/CreateTableInput">AWS
33    * API Reference</a></p>
34    */
35   class AWS_DYNAMODB_API CreateTableRequest : public DynamoDBRequest
36   {
37   public:
38     CreateTableRequest();
39 
40     // Service request name is the Operation name which will send this request out,
41     // each operation should has unique request name, so that we can get operation's name from this request.
42     // Note: this is not true for response, multiple operations may have the same response name,
43     // so we can not get operation's name from response.
GetServiceRequestName()44     inline virtual const char* GetServiceRequestName() const override { return "CreateTable"; }
45 
46     Aws::String SerializePayload() const override;
47 
48     Aws::Http::HeaderValueCollection GetRequestSpecificHeaders() const override;
49 
50 
51     /**
52      * <p>An array of attributes that describe the key schema for the table and
53      * indexes.</p>
54      */
GetAttributeDefinitions()55     inline const Aws::Vector<AttributeDefinition>& GetAttributeDefinitions() const{ return m_attributeDefinitions; }
56 
57     /**
58      * <p>An array of attributes that describe the key schema for the table and
59      * indexes.</p>
60      */
AttributeDefinitionsHasBeenSet()61     inline bool AttributeDefinitionsHasBeenSet() const { return m_attributeDefinitionsHasBeenSet; }
62 
63     /**
64      * <p>An array of attributes that describe the key schema for the table and
65      * indexes.</p>
66      */
SetAttributeDefinitions(const Aws::Vector<AttributeDefinition> & value)67     inline void SetAttributeDefinitions(const Aws::Vector<AttributeDefinition>& value) { m_attributeDefinitionsHasBeenSet = true; m_attributeDefinitions = value; }
68 
69     /**
70      * <p>An array of attributes that describe the key schema for the table and
71      * indexes.</p>
72      */
SetAttributeDefinitions(Aws::Vector<AttributeDefinition> && value)73     inline void SetAttributeDefinitions(Aws::Vector<AttributeDefinition>&& value) { m_attributeDefinitionsHasBeenSet = true; m_attributeDefinitions = std::move(value); }
74 
75     /**
76      * <p>An array of attributes that describe the key schema for the table and
77      * indexes.</p>
78      */
WithAttributeDefinitions(const Aws::Vector<AttributeDefinition> & value)79     inline CreateTableRequest& WithAttributeDefinitions(const Aws::Vector<AttributeDefinition>& value) { SetAttributeDefinitions(value); return *this;}
80 
81     /**
82      * <p>An array of attributes that describe the key schema for the table and
83      * indexes.</p>
84      */
WithAttributeDefinitions(Aws::Vector<AttributeDefinition> && value)85     inline CreateTableRequest& WithAttributeDefinitions(Aws::Vector<AttributeDefinition>&& value) { SetAttributeDefinitions(std::move(value)); return *this;}
86 
87     /**
88      * <p>An array of attributes that describe the key schema for the table and
89      * indexes.</p>
90      */
AddAttributeDefinitions(const AttributeDefinition & value)91     inline CreateTableRequest& AddAttributeDefinitions(const AttributeDefinition& value) { m_attributeDefinitionsHasBeenSet = true; m_attributeDefinitions.push_back(value); return *this; }
92 
93     /**
94      * <p>An array of attributes that describe the key schema for the table and
95      * indexes.</p>
96      */
AddAttributeDefinitions(AttributeDefinition && value)97     inline CreateTableRequest& AddAttributeDefinitions(AttributeDefinition&& value) { m_attributeDefinitionsHasBeenSet = true; m_attributeDefinitions.push_back(std::move(value)); return *this; }
98 
99 
100     /**
101      * <p>The name of the table to create.</p>
102      */
GetTableName()103     inline const Aws::String& GetTableName() const{ return m_tableName; }
104 
105     /**
106      * <p>The name of the table to create.</p>
107      */
TableNameHasBeenSet()108     inline bool TableNameHasBeenSet() const { return m_tableNameHasBeenSet; }
109 
110     /**
111      * <p>The name of the table to create.</p>
112      */
SetTableName(const Aws::String & value)113     inline void SetTableName(const Aws::String& value) { m_tableNameHasBeenSet = true; m_tableName = value; }
114 
115     /**
116      * <p>The name of the table to create.</p>
117      */
SetTableName(Aws::String && value)118     inline void SetTableName(Aws::String&& value) { m_tableNameHasBeenSet = true; m_tableName = std::move(value); }
119 
120     /**
121      * <p>The name of the table to create.</p>
122      */
SetTableName(const char * value)123     inline void SetTableName(const char* value) { m_tableNameHasBeenSet = true; m_tableName.assign(value); }
124 
125     /**
126      * <p>The name of the table to create.</p>
127      */
WithTableName(const Aws::String & value)128     inline CreateTableRequest& WithTableName(const Aws::String& value) { SetTableName(value); return *this;}
129 
130     /**
131      * <p>The name of the table to create.</p>
132      */
WithTableName(Aws::String && value)133     inline CreateTableRequest& WithTableName(Aws::String&& value) { SetTableName(std::move(value)); return *this;}
134 
135     /**
136      * <p>The name of the table to create.</p>
137      */
WithTableName(const char * value)138     inline CreateTableRequest& WithTableName(const char* value) { SetTableName(value); return *this;}
139 
140 
141     /**
142      * <p>Specifies the attributes that make up the primary key for a table or an
143      * index. The attributes in <code>KeySchema</code> must also be defined in the
144      * <code>AttributeDefinitions</code> array. For more information, see <a
145      * href="https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/DataModel.html">Data
146      * Model</a> in the <i>Amazon DynamoDB Developer Guide</i>.</p> <p>Each
147      * <code>KeySchemaElement</code> in the array is composed of:</p> <ul> <li> <p>
148      * <code>AttributeName</code> - The name of this key attribute.</p> </li> <li> <p>
149      * <code>KeyType</code> - The role that the key attribute will assume:</p> <ul>
150      * <li> <p> <code>HASH</code> - partition key</p> </li> <li> <p> <code>RANGE</code>
151      * - sort key</p> </li> </ul> </li> </ul>  <p>The partition key of an item is
152      * also known as its <i>hash attribute</i>. The term "hash attribute" derives from
153      * the DynamoDB usage of an internal hash function to evenly distribute data items
154      * across partitions, based on their partition key values.</p> <p>The sort key of
155      * an item is also known as its <i>range attribute</i>. The term "range attribute"
156      * derives from the way DynamoDB stores items with the same partition key
157      * physically close together, in sorted order by the sort key value.</p>
158      * <p>For a simple primary key (partition key), you must provide exactly one
159      * element with a <code>KeyType</code> of <code>HASH</code>.</p> <p>For a composite
160      * primary key (partition key and sort key), you must provide exactly two elements,
161      * in this order: The first element must have a <code>KeyType</code> of
162      * <code>HASH</code>, and the second element must have a <code>KeyType</code> of
163      * <code>RANGE</code>.</p> <p>For more information, see <a
164      * href="https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/WorkingWithTables.html#WorkingWithTables.primary.key">Working
165      * with Tables</a> in the <i>Amazon DynamoDB Developer Guide</i>.</p>
166      */
GetKeySchema()167     inline const Aws::Vector<KeySchemaElement>& GetKeySchema() const{ return m_keySchema; }
168 
169     /**
170      * <p>Specifies the attributes that make up the primary key for a table or an
171      * index. The attributes in <code>KeySchema</code> must also be defined in the
172      * <code>AttributeDefinitions</code> array. For more information, see <a
173      * href="https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/DataModel.html">Data
174      * Model</a> in the <i>Amazon DynamoDB Developer Guide</i>.</p> <p>Each
175      * <code>KeySchemaElement</code> in the array is composed of:</p> <ul> <li> <p>
176      * <code>AttributeName</code> - The name of this key attribute.</p> </li> <li> <p>
177      * <code>KeyType</code> - The role that the key attribute will assume:</p> <ul>
178      * <li> <p> <code>HASH</code> - partition key</p> </li> <li> <p> <code>RANGE</code>
179      * - sort key</p> </li> </ul> </li> </ul>  <p>The partition key of an item is
180      * also known as its <i>hash attribute</i>. The term "hash attribute" derives from
181      * the DynamoDB usage of an internal hash function to evenly distribute data items
182      * across partitions, based on their partition key values.</p> <p>The sort key of
183      * an item is also known as its <i>range attribute</i>. The term "range attribute"
184      * derives from the way DynamoDB stores items with the same partition key
185      * physically close together, in sorted order by the sort key value.</p>
186      * <p>For a simple primary key (partition key), you must provide exactly one
187      * element with a <code>KeyType</code> of <code>HASH</code>.</p> <p>For a composite
188      * primary key (partition key and sort key), you must provide exactly two elements,
189      * in this order: The first element must have a <code>KeyType</code> of
190      * <code>HASH</code>, and the second element must have a <code>KeyType</code> of
191      * <code>RANGE</code>.</p> <p>For more information, see <a
192      * href="https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/WorkingWithTables.html#WorkingWithTables.primary.key">Working
193      * with Tables</a> in the <i>Amazon DynamoDB Developer Guide</i>.</p>
194      */
KeySchemaHasBeenSet()195     inline bool KeySchemaHasBeenSet() const { return m_keySchemaHasBeenSet; }
196 
197     /**
198      * <p>Specifies the attributes that make up the primary key for a table or an
199      * index. The attributes in <code>KeySchema</code> must also be defined in the
200      * <code>AttributeDefinitions</code> array. For more information, see <a
201      * href="https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/DataModel.html">Data
202      * Model</a> in the <i>Amazon DynamoDB Developer Guide</i>.</p> <p>Each
203      * <code>KeySchemaElement</code> in the array is composed of:</p> <ul> <li> <p>
204      * <code>AttributeName</code> - The name of this key attribute.</p> </li> <li> <p>
205      * <code>KeyType</code> - The role that the key attribute will assume:</p> <ul>
206      * <li> <p> <code>HASH</code> - partition key</p> </li> <li> <p> <code>RANGE</code>
207      * - sort key</p> </li> </ul> </li> </ul>  <p>The partition key of an item is
208      * also known as its <i>hash attribute</i>. The term "hash attribute" derives from
209      * the DynamoDB usage of an internal hash function to evenly distribute data items
210      * across partitions, based on their partition key values.</p> <p>The sort key of
211      * an item is also known as its <i>range attribute</i>. The term "range attribute"
212      * derives from the way DynamoDB stores items with the same partition key
213      * physically close together, in sorted order by the sort key value.</p>
214      * <p>For a simple primary key (partition key), you must provide exactly one
215      * element with a <code>KeyType</code> of <code>HASH</code>.</p> <p>For a composite
216      * primary key (partition key and sort key), you must provide exactly two elements,
217      * in this order: The first element must have a <code>KeyType</code> of
218      * <code>HASH</code>, and the second element must have a <code>KeyType</code> of
219      * <code>RANGE</code>.</p> <p>For more information, see <a
220      * href="https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/WorkingWithTables.html#WorkingWithTables.primary.key">Working
221      * with Tables</a> in the <i>Amazon DynamoDB Developer Guide</i>.</p>
222      */
SetKeySchema(const Aws::Vector<KeySchemaElement> & value)223     inline void SetKeySchema(const Aws::Vector<KeySchemaElement>& value) { m_keySchemaHasBeenSet = true; m_keySchema = value; }
224 
225     /**
226      * <p>Specifies the attributes that make up the primary key for a table or an
227      * index. The attributes in <code>KeySchema</code> must also be defined in the
228      * <code>AttributeDefinitions</code> array. For more information, see <a
229      * href="https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/DataModel.html">Data
230      * Model</a> in the <i>Amazon DynamoDB Developer Guide</i>.</p> <p>Each
231      * <code>KeySchemaElement</code> in the array is composed of:</p> <ul> <li> <p>
232      * <code>AttributeName</code> - The name of this key attribute.</p> </li> <li> <p>
233      * <code>KeyType</code> - The role that the key attribute will assume:</p> <ul>
234      * <li> <p> <code>HASH</code> - partition key</p> </li> <li> <p> <code>RANGE</code>
235      * - sort key</p> </li> </ul> </li> </ul>  <p>The partition key of an item is
236      * also known as its <i>hash attribute</i>. The term "hash attribute" derives from
237      * the DynamoDB usage of an internal hash function to evenly distribute data items
238      * across partitions, based on their partition key values.</p> <p>The sort key of
239      * an item is also known as its <i>range attribute</i>. The term "range attribute"
240      * derives from the way DynamoDB stores items with the same partition key
241      * physically close together, in sorted order by the sort key value.</p>
242      * <p>For a simple primary key (partition key), you must provide exactly one
243      * element with a <code>KeyType</code> of <code>HASH</code>.</p> <p>For a composite
244      * primary key (partition key and sort key), you must provide exactly two elements,
245      * in this order: The first element must have a <code>KeyType</code> of
246      * <code>HASH</code>, and the second element must have a <code>KeyType</code> of
247      * <code>RANGE</code>.</p> <p>For more information, see <a
248      * href="https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/WorkingWithTables.html#WorkingWithTables.primary.key">Working
249      * with Tables</a> in the <i>Amazon DynamoDB Developer Guide</i>.</p>
250      */
SetKeySchema(Aws::Vector<KeySchemaElement> && value)251     inline void SetKeySchema(Aws::Vector<KeySchemaElement>&& value) { m_keySchemaHasBeenSet = true; m_keySchema = std::move(value); }
252 
253     /**
254      * <p>Specifies the attributes that make up the primary key for a table or an
255      * index. The attributes in <code>KeySchema</code> must also be defined in the
256      * <code>AttributeDefinitions</code> array. For more information, see <a
257      * href="https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/DataModel.html">Data
258      * Model</a> in the <i>Amazon DynamoDB Developer Guide</i>.</p> <p>Each
259      * <code>KeySchemaElement</code> in the array is composed of:</p> <ul> <li> <p>
260      * <code>AttributeName</code> - The name of this key attribute.</p> </li> <li> <p>
261      * <code>KeyType</code> - The role that the key attribute will assume:</p> <ul>
262      * <li> <p> <code>HASH</code> - partition key</p> </li> <li> <p> <code>RANGE</code>
263      * - sort key</p> </li> </ul> </li> </ul>  <p>The partition key of an item is
264      * also known as its <i>hash attribute</i>. The term "hash attribute" derives from
265      * the DynamoDB usage of an internal hash function to evenly distribute data items
266      * across partitions, based on their partition key values.</p> <p>The sort key of
267      * an item is also known as its <i>range attribute</i>. The term "range attribute"
268      * derives from the way DynamoDB stores items with the same partition key
269      * physically close together, in sorted order by the sort key value.</p>
270      * <p>For a simple primary key (partition key), you must provide exactly one
271      * element with a <code>KeyType</code> of <code>HASH</code>.</p> <p>For a composite
272      * primary key (partition key and sort key), you must provide exactly two elements,
273      * in this order: The first element must have a <code>KeyType</code> of
274      * <code>HASH</code>, and the second element must have a <code>KeyType</code> of
275      * <code>RANGE</code>.</p> <p>For more information, see <a
276      * href="https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/WorkingWithTables.html#WorkingWithTables.primary.key">Working
277      * with Tables</a> in the <i>Amazon DynamoDB Developer Guide</i>.</p>
278      */
WithKeySchema(const Aws::Vector<KeySchemaElement> & value)279     inline CreateTableRequest& WithKeySchema(const Aws::Vector<KeySchemaElement>& value) { SetKeySchema(value); return *this;}
280 
281     /**
282      * <p>Specifies the attributes that make up the primary key for a table or an
283      * index. The attributes in <code>KeySchema</code> must also be defined in the
284      * <code>AttributeDefinitions</code> array. For more information, see <a
285      * href="https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/DataModel.html">Data
286      * Model</a> in the <i>Amazon DynamoDB Developer Guide</i>.</p> <p>Each
287      * <code>KeySchemaElement</code> in the array is composed of:</p> <ul> <li> <p>
288      * <code>AttributeName</code> - The name of this key attribute.</p> </li> <li> <p>
289      * <code>KeyType</code> - The role that the key attribute will assume:</p> <ul>
290      * <li> <p> <code>HASH</code> - partition key</p> </li> <li> <p> <code>RANGE</code>
291      * - sort key</p> </li> </ul> </li> </ul>  <p>The partition key of an item is
292      * also known as its <i>hash attribute</i>. The term "hash attribute" derives from
293      * the DynamoDB usage of an internal hash function to evenly distribute data items
294      * across partitions, based on their partition key values.</p> <p>The sort key of
295      * an item is also known as its <i>range attribute</i>. The term "range attribute"
296      * derives from the way DynamoDB stores items with the same partition key
297      * physically close together, in sorted order by the sort key value.</p>
298      * <p>For a simple primary key (partition key), you must provide exactly one
299      * element with a <code>KeyType</code> of <code>HASH</code>.</p> <p>For a composite
300      * primary key (partition key and sort key), you must provide exactly two elements,
301      * in this order: The first element must have a <code>KeyType</code> of
302      * <code>HASH</code>, and the second element must have a <code>KeyType</code> of
303      * <code>RANGE</code>.</p> <p>For more information, see <a
304      * href="https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/WorkingWithTables.html#WorkingWithTables.primary.key">Working
305      * with Tables</a> in the <i>Amazon DynamoDB Developer Guide</i>.</p>
306      */
WithKeySchema(Aws::Vector<KeySchemaElement> && value)307     inline CreateTableRequest& WithKeySchema(Aws::Vector<KeySchemaElement>&& value) { SetKeySchema(std::move(value)); return *this;}
308 
309     /**
310      * <p>Specifies the attributes that make up the primary key for a table or an
311      * index. The attributes in <code>KeySchema</code> must also be defined in the
312      * <code>AttributeDefinitions</code> array. For more information, see <a
313      * href="https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/DataModel.html">Data
314      * Model</a> in the <i>Amazon DynamoDB Developer Guide</i>.</p> <p>Each
315      * <code>KeySchemaElement</code> in the array is composed of:</p> <ul> <li> <p>
316      * <code>AttributeName</code> - The name of this key attribute.</p> </li> <li> <p>
317      * <code>KeyType</code> - The role that the key attribute will assume:</p> <ul>
318      * <li> <p> <code>HASH</code> - partition key</p> </li> <li> <p> <code>RANGE</code>
319      * - sort key</p> </li> </ul> </li> </ul>  <p>The partition key of an item is
320      * also known as its <i>hash attribute</i>. The term "hash attribute" derives from
321      * the DynamoDB usage of an internal hash function to evenly distribute data items
322      * across partitions, based on their partition key values.</p> <p>The sort key of
323      * an item is also known as its <i>range attribute</i>. The term "range attribute"
324      * derives from the way DynamoDB stores items with the same partition key
325      * physically close together, in sorted order by the sort key value.</p>
326      * <p>For a simple primary key (partition key), you must provide exactly one
327      * element with a <code>KeyType</code> of <code>HASH</code>.</p> <p>For a composite
328      * primary key (partition key and sort key), you must provide exactly two elements,
329      * in this order: The first element must have a <code>KeyType</code> of
330      * <code>HASH</code>, and the second element must have a <code>KeyType</code> of
331      * <code>RANGE</code>.</p> <p>For more information, see <a
332      * href="https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/WorkingWithTables.html#WorkingWithTables.primary.key">Working
333      * with Tables</a> in the <i>Amazon DynamoDB Developer Guide</i>.</p>
334      */
AddKeySchema(const KeySchemaElement & value)335     inline CreateTableRequest& AddKeySchema(const KeySchemaElement& value) { m_keySchemaHasBeenSet = true; m_keySchema.push_back(value); return *this; }
336 
337     /**
338      * <p>Specifies the attributes that make up the primary key for a table or an
339      * index. The attributes in <code>KeySchema</code> must also be defined in the
340      * <code>AttributeDefinitions</code> array. For more information, see <a
341      * href="https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/DataModel.html">Data
342      * Model</a> in the <i>Amazon DynamoDB Developer Guide</i>.</p> <p>Each
343      * <code>KeySchemaElement</code> in the array is composed of:</p> <ul> <li> <p>
344      * <code>AttributeName</code> - The name of this key attribute.</p> </li> <li> <p>
345      * <code>KeyType</code> - The role that the key attribute will assume:</p> <ul>
346      * <li> <p> <code>HASH</code> - partition key</p> </li> <li> <p> <code>RANGE</code>
347      * - sort key</p> </li> </ul> </li> </ul>  <p>The partition key of an item is
348      * also known as its <i>hash attribute</i>. The term "hash attribute" derives from
349      * the DynamoDB usage of an internal hash function to evenly distribute data items
350      * across partitions, based on their partition key values.</p> <p>The sort key of
351      * an item is also known as its <i>range attribute</i>. The term "range attribute"
352      * derives from the way DynamoDB stores items with the same partition key
353      * physically close together, in sorted order by the sort key value.</p>
354      * <p>For a simple primary key (partition key), you must provide exactly one
355      * element with a <code>KeyType</code> of <code>HASH</code>.</p> <p>For a composite
356      * primary key (partition key and sort key), you must provide exactly two elements,
357      * in this order: The first element must have a <code>KeyType</code> of
358      * <code>HASH</code>, and the second element must have a <code>KeyType</code> of
359      * <code>RANGE</code>.</p> <p>For more information, see <a
360      * href="https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/WorkingWithTables.html#WorkingWithTables.primary.key">Working
361      * with Tables</a> in the <i>Amazon DynamoDB Developer Guide</i>.</p>
362      */
AddKeySchema(KeySchemaElement && value)363     inline CreateTableRequest& AddKeySchema(KeySchemaElement&& value) { m_keySchemaHasBeenSet = true; m_keySchema.push_back(std::move(value)); return *this; }
364 
365 
366     /**
367      * <p>One or more local secondary indexes (the maximum is 5) to be created on the
368      * table. Each index is scoped to a given partition key value. There is a 10 GB
369      * size limit per partition key value; otherwise, the size of a local secondary
370      * index is unconstrained.</p> <p>Each local secondary index in the array includes
371      * the following:</p> <ul> <li> <p> <code>IndexName</code> - The name of the local
372      * secondary index. Must be unique only for this table.</p> <p/> </li> <li> <p>
373      * <code>KeySchema</code> - Specifies the key schema for the local secondary index.
374      * The key schema must begin with the same partition key as the table.</p> </li>
375      * <li> <p> <code>Projection</code> - Specifies attributes that are copied
376      * (projected) from the table into the index. These are in addition to the primary
377      * key attributes and index key attributes, which are automatically projected. Each
378      * attribute specification is composed of:</p> <ul> <li> <p>
379      * <code>ProjectionType</code> - One of the following:</p> <ul> <li> <p>
380      * <code>KEYS_ONLY</code> - Only the index and primary keys are projected into the
381      * index.</p> </li> <li> <p> <code>INCLUDE</code> - Only the specified table
382      * attributes are projected into the index. The list of projected attributes is in
383      * <code>NonKeyAttributes</code>.</p> </li> <li> <p> <code>ALL</code> - All of the
384      * table attributes are projected into the index.</p> </li> </ul> </li> <li> <p>
385      * <code>NonKeyAttributes</code> - A list of one or more non-key attribute names
386      * that are projected into the secondary index. The total count of attributes
387      * provided in <code>NonKeyAttributes</code>, summed across all of the secondary
388      * indexes, must not exceed 100. If you project the same attribute into two
389      * different indexes, this counts as two distinct attributes when determining the
390      * total.</p> </li> </ul> </li> </ul>
391      */
GetLocalSecondaryIndexes()392     inline const Aws::Vector<LocalSecondaryIndex>& GetLocalSecondaryIndexes() const{ return m_localSecondaryIndexes; }
393 
394     /**
395      * <p>One or more local secondary indexes (the maximum is 5) to be created on the
396      * table. Each index is scoped to a given partition key value. There is a 10 GB
397      * size limit per partition key value; otherwise, the size of a local secondary
398      * index is unconstrained.</p> <p>Each local secondary index in the array includes
399      * the following:</p> <ul> <li> <p> <code>IndexName</code> - The name of the local
400      * secondary index. Must be unique only for this table.</p> <p/> </li> <li> <p>
401      * <code>KeySchema</code> - Specifies the key schema for the local secondary index.
402      * The key schema must begin with the same partition key as the table.</p> </li>
403      * <li> <p> <code>Projection</code> - Specifies attributes that are copied
404      * (projected) from the table into the index. These are in addition to the primary
405      * key attributes and index key attributes, which are automatically projected. Each
406      * attribute specification is composed of:</p> <ul> <li> <p>
407      * <code>ProjectionType</code> - One of the following:</p> <ul> <li> <p>
408      * <code>KEYS_ONLY</code> - Only the index and primary keys are projected into the
409      * index.</p> </li> <li> <p> <code>INCLUDE</code> - Only the specified table
410      * attributes are projected into the index. The list of projected attributes is in
411      * <code>NonKeyAttributes</code>.</p> </li> <li> <p> <code>ALL</code> - All of the
412      * table attributes are projected into the index.</p> </li> </ul> </li> <li> <p>
413      * <code>NonKeyAttributes</code> - A list of one or more non-key attribute names
414      * that are projected into the secondary index. The total count of attributes
415      * provided in <code>NonKeyAttributes</code>, summed across all of the secondary
416      * indexes, must not exceed 100. If you project the same attribute into two
417      * different indexes, this counts as two distinct attributes when determining the
418      * total.</p> </li> </ul> </li> </ul>
419      */
LocalSecondaryIndexesHasBeenSet()420     inline bool LocalSecondaryIndexesHasBeenSet() const { return m_localSecondaryIndexesHasBeenSet; }
421 
422     /**
423      * <p>One or more local secondary indexes (the maximum is 5) to be created on the
424      * table. Each index is scoped to a given partition key value. There is a 10 GB
425      * size limit per partition key value; otherwise, the size of a local secondary
426      * index is unconstrained.</p> <p>Each local secondary index in the array includes
427      * the following:</p> <ul> <li> <p> <code>IndexName</code> - The name of the local
428      * secondary index. Must be unique only for this table.</p> <p/> </li> <li> <p>
429      * <code>KeySchema</code> - Specifies the key schema for the local secondary index.
430      * The key schema must begin with the same partition key as the table.</p> </li>
431      * <li> <p> <code>Projection</code> - Specifies attributes that are copied
432      * (projected) from the table into the index. These are in addition to the primary
433      * key attributes and index key attributes, which are automatically projected. Each
434      * attribute specification is composed of:</p> <ul> <li> <p>
435      * <code>ProjectionType</code> - One of the following:</p> <ul> <li> <p>
436      * <code>KEYS_ONLY</code> - Only the index and primary keys are projected into the
437      * index.</p> </li> <li> <p> <code>INCLUDE</code> - Only the specified table
438      * attributes are projected into the index. The list of projected attributes is in
439      * <code>NonKeyAttributes</code>.</p> </li> <li> <p> <code>ALL</code> - All of the
440      * table attributes are projected into the index.</p> </li> </ul> </li> <li> <p>
441      * <code>NonKeyAttributes</code> - A list of one or more non-key attribute names
442      * that are projected into the secondary index. The total count of attributes
443      * provided in <code>NonKeyAttributes</code>, summed across all of the secondary
444      * indexes, must not exceed 100. If you project the same attribute into two
445      * different indexes, this counts as two distinct attributes when determining the
446      * total.</p> </li> </ul> </li> </ul>
447      */
SetLocalSecondaryIndexes(const Aws::Vector<LocalSecondaryIndex> & value)448     inline void SetLocalSecondaryIndexes(const Aws::Vector<LocalSecondaryIndex>& value) { m_localSecondaryIndexesHasBeenSet = true; m_localSecondaryIndexes = value; }
449 
450     /**
451      * <p>One or more local secondary indexes (the maximum is 5) to be created on the
452      * table. Each index is scoped to a given partition key value. There is a 10 GB
453      * size limit per partition key value; otherwise, the size of a local secondary
454      * index is unconstrained.</p> <p>Each local secondary index in the array includes
455      * the following:</p> <ul> <li> <p> <code>IndexName</code> - The name of the local
456      * secondary index. Must be unique only for this table.</p> <p/> </li> <li> <p>
457      * <code>KeySchema</code> - Specifies the key schema for the local secondary index.
458      * The key schema must begin with the same partition key as the table.</p> </li>
459      * <li> <p> <code>Projection</code> - Specifies attributes that are copied
460      * (projected) from the table into the index. These are in addition to the primary
461      * key attributes and index key attributes, which are automatically projected. Each
462      * attribute specification is composed of:</p> <ul> <li> <p>
463      * <code>ProjectionType</code> - One of the following:</p> <ul> <li> <p>
464      * <code>KEYS_ONLY</code> - Only the index and primary keys are projected into the
465      * index.</p> </li> <li> <p> <code>INCLUDE</code> - Only the specified table
466      * attributes are projected into the index. The list of projected attributes is in
467      * <code>NonKeyAttributes</code>.</p> </li> <li> <p> <code>ALL</code> - All of the
468      * table attributes are projected into the index.</p> </li> </ul> </li> <li> <p>
469      * <code>NonKeyAttributes</code> - A list of one or more non-key attribute names
470      * that are projected into the secondary index. The total count of attributes
471      * provided in <code>NonKeyAttributes</code>, summed across all of the secondary
472      * indexes, must not exceed 100. If you project the same attribute into two
473      * different indexes, this counts as two distinct attributes when determining the
474      * total.</p> </li> </ul> </li> </ul>
475      */
SetLocalSecondaryIndexes(Aws::Vector<LocalSecondaryIndex> && value)476     inline void SetLocalSecondaryIndexes(Aws::Vector<LocalSecondaryIndex>&& value) { m_localSecondaryIndexesHasBeenSet = true; m_localSecondaryIndexes = std::move(value); }
477 
478     /**
479      * <p>One or more local secondary indexes (the maximum is 5) to be created on the
480      * table. Each index is scoped to a given partition key value. There is a 10 GB
481      * size limit per partition key value; otherwise, the size of a local secondary
482      * index is unconstrained.</p> <p>Each local secondary index in the array includes
483      * the following:</p> <ul> <li> <p> <code>IndexName</code> - The name of the local
484      * secondary index. Must be unique only for this table.</p> <p/> </li> <li> <p>
485      * <code>KeySchema</code> - Specifies the key schema for the local secondary index.
486      * The key schema must begin with the same partition key as the table.</p> </li>
487      * <li> <p> <code>Projection</code> - Specifies attributes that are copied
488      * (projected) from the table into the index. These are in addition to the primary
489      * key attributes and index key attributes, which are automatically projected. Each
490      * attribute specification is composed of:</p> <ul> <li> <p>
491      * <code>ProjectionType</code> - One of the following:</p> <ul> <li> <p>
492      * <code>KEYS_ONLY</code> - Only the index and primary keys are projected into the
493      * index.</p> </li> <li> <p> <code>INCLUDE</code> - Only the specified table
494      * attributes are projected into the index. The list of projected attributes is in
495      * <code>NonKeyAttributes</code>.</p> </li> <li> <p> <code>ALL</code> - All of the
496      * table attributes are projected into the index.</p> </li> </ul> </li> <li> <p>
497      * <code>NonKeyAttributes</code> - A list of one or more non-key attribute names
498      * that are projected into the secondary index. The total count of attributes
499      * provided in <code>NonKeyAttributes</code>, summed across all of the secondary
500      * indexes, must not exceed 100. If you project the same attribute into two
501      * different indexes, this counts as two distinct attributes when determining the
502      * total.</p> </li> </ul> </li> </ul>
503      */
WithLocalSecondaryIndexes(const Aws::Vector<LocalSecondaryIndex> & value)504     inline CreateTableRequest& WithLocalSecondaryIndexes(const Aws::Vector<LocalSecondaryIndex>& value) { SetLocalSecondaryIndexes(value); return *this;}
505 
506     /**
507      * <p>One or more local secondary indexes (the maximum is 5) to be created on the
508      * table. Each index is scoped to a given partition key value. There is a 10 GB
509      * size limit per partition key value; otherwise, the size of a local secondary
510      * index is unconstrained.</p> <p>Each local secondary index in the array includes
511      * the following:</p> <ul> <li> <p> <code>IndexName</code> - The name of the local
512      * secondary index. Must be unique only for this table.</p> <p/> </li> <li> <p>
513      * <code>KeySchema</code> - Specifies the key schema for the local secondary index.
514      * The key schema must begin with the same partition key as the table.</p> </li>
515      * <li> <p> <code>Projection</code> - Specifies attributes that are copied
516      * (projected) from the table into the index. These are in addition to the primary
517      * key attributes and index key attributes, which are automatically projected. Each
518      * attribute specification is composed of:</p> <ul> <li> <p>
519      * <code>ProjectionType</code> - One of the following:</p> <ul> <li> <p>
520      * <code>KEYS_ONLY</code> - Only the index and primary keys are projected into the
521      * index.</p> </li> <li> <p> <code>INCLUDE</code> - Only the specified table
522      * attributes are projected into the index. The list of projected attributes is in
523      * <code>NonKeyAttributes</code>.</p> </li> <li> <p> <code>ALL</code> - All of the
524      * table attributes are projected into the index.</p> </li> </ul> </li> <li> <p>
525      * <code>NonKeyAttributes</code> - A list of one or more non-key attribute names
526      * that are projected into the secondary index. The total count of attributes
527      * provided in <code>NonKeyAttributes</code>, summed across all of the secondary
528      * indexes, must not exceed 100. If you project the same attribute into two
529      * different indexes, this counts as two distinct attributes when determining the
530      * total.</p> </li> </ul> </li> </ul>
531      */
WithLocalSecondaryIndexes(Aws::Vector<LocalSecondaryIndex> && value)532     inline CreateTableRequest& WithLocalSecondaryIndexes(Aws::Vector<LocalSecondaryIndex>&& value) { SetLocalSecondaryIndexes(std::move(value)); return *this;}
533 
534     /**
535      * <p>One or more local secondary indexes (the maximum is 5) to be created on the
536      * table. Each index is scoped to a given partition key value. There is a 10 GB
537      * size limit per partition key value; otherwise, the size of a local secondary
538      * index is unconstrained.</p> <p>Each local secondary index in the array includes
539      * the following:</p> <ul> <li> <p> <code>IndexName</code> - The name of the local
540      * secondary index. Must be unique only for this table.</p> <p/> </li> <li> <p>
541      * <code>KeySchema</code> - Specifies the key schema for the local secondary index.
542      * The key schema must begin with the same partition key as the table.</p> </li>
543      * <li> <p> <code>Projection</code> - Specifies attributes that are copied
544      * (projected) from the table into the index. These are in addition to the primary
545      * key attributes and index key attributes, which are automatically projected. Each
546      * attribute specification is composed of:</p> <ul> <li> <p>
547      * <code>ProjectionType</code> - One of the following:</p> <ul> <li> <p>
548      * <code>KEYS_ONLY</code> - Only the index and primary keys are projected into the
549      * index.</p> </li> <li> <p> <code>INCLUDE</code> - Only the specified table
550      * attributes are projected into the index. The list of projected attributes is in
551      * <code>NonKeyAttributes</code>.</p> </li> <li> <p> <code>ALL</code> - All of the
552      * table attributes are projected into the index.</p> </li> </ul> </li> <li> <p>
553      * <code>NonKeyAttributes</code> - A list of one or more non-key attribute names
554      * that are projected into the secondary index. The total count of attributes
555      * provided in <code>NonKeyAttributes</code>, summed across all of the secondary
556      * indexes, must not exceed 100. If you project the same attribute into two
557      * different indexes, this counts as two distinct attributes when determining the
558      * total.</p> </li> </ul> </li> </ul>
559      */
AddLocalSecondaryIndexes(const LocalSecondaryIndex & value)560     inline CreateTableRequest& AddLocalSecondaryIndexes(const LocalSecondaryIndex& value) { m_localSecondaryIndexesHasBeenSet = true; m_localSecondaryIndexes.push_back(value); return *this; }
561 
562     /**
563      * <p>One or more local secondary indexes (the maximum is 5) to be created on the
564      * table. Each index is scoped to a given partition key value. There is a 10 GB
565      * size limit per partition key value; otherwise, the size of a local secondary
566      * index is unconstrained.</p> <p>Each local secondary index in the array includes
567      * the following:</p> <ul> <li> <p> <code>IndexName</code> - The name of the local
568      * secondary index. Must be unique only for this table.</p> <p/> </li> <li> <p>
569      * <code>KeySchema</code> - Specifies the key schema for the local secondary index.
570      * The key schema must begin with the same partition key as the table.</p> </li>
571      * <li> <p> <code>Projection</code> - Specifies attributes that are copied
572      * (projected) from the table into the index. These are in addition to the primary
573      * key attributes and index key attributes, which are automatically projected. Each
574      * attribute specification is composed of:</p> <ul> <li> <p>
575      * <code>ProjectionType</code> - One of the following:</p> <ul> <li> <p>
576      * <code>KEYS_ONLY</code> - Only the index and primary keys are projected into the
577      * index.</p> </li> <li> <p> <code>INCLUDE</code> - Only the specified table
578      * attributes are projected into the index. The list of projected attributes is in
579      * <code>NonKeyAttributes</code>.</p> </li> <li> <p> <code>ALL</code> - All of the
580      * table attributes are projected into the index.</p> </li> </ul> </li> <li> <p>
581      * <code>NonKeyAttributes</code> - A list of one or more non-key attribute names
582      * that are projected into the secondary index. The total count of attributes
583      * provided in <code>NonKeyAttributes</code>, summed across all of the secondary
584      * indexes, must not exceed 100. If you project the same attribute into two
585      * different indexes, this counts as two distinct attributes when determining the
586      * total.</p> </li> </ul> </li> </ul>
587      */
AddLocalSecondaryIndexes(LocalSecondaryIndex && value)588     inline CreateTableRequest& AddLocalSecondaryIndexes(LocalSecondaryIndex&& value) { m_localSecondaryIndexesHasBeenSet = true; m_localSecondaryIndexes.push_back(std::move(value)); return *this; }
589 
590 
591     /**
592      * <p>One or more global secondary indexes (the maximum is 20) to be created on the
593      * table. Each global secondary index in the array includes the following:</p> <ul>
594      * <li> <p> <code>IndexName</code> - The name of the global secondary index. Must
595      * be unique only for this table.</p> <p/> </li> <li> <p> <code>KeySchema</code> -
596      * Specifies the key schema for the global secondary index.</p> </li> <li> <p>
597      * <code>Projection</code> - Specifies attributes that are copied (projected) from
598      * the table into the index. These are in addition to the primary key attributes
599      * and index key attributes, which are automatically projected. Each attribute
600      * specification is composed of:</p> <ul> <li> <p> <code>ProjectionType</code> -
601      * One of the following:</p> <ul> <li> <p> <code>KEYS_ONLY</code> - Only the index
602      * and primary keys are projected into the index.</p> </li> <li> <p>
603      * <code>INCLUDE</code> - Only the specified table attributes are projected into
604      * the index. The list of projected attributes is in
605      * <code>NonKeyAttributes</code>.</p> </li> <li> <p> <code>ALL</code> - All of the
606      * table attributes are projected into the index.</p> </li> </ul> </li> <li> <p>
607      * <code>NonKeyAttributes</code> - A list of one or more non-key attribute names
608      * that are projected into the secondary index. The total count of attributes
609      * provided in <code>NonKeyAttributes</code>, summed across all of the secondary
610      * indexes, must not exceed 100. If you project the same attribute into two
611      * different indexes, this counts as two distinct attributes when determining the
612      * total.</p> </li> </ul> </li> <li> <p> <code>ProvisionedThroughput</code> - The
613      * provisioned throughput settings for the global secondary index, consisting of
614      * read and write capacity units.</p> </li> </ul>
615      */
GetGlobalSecondaryIndexes()616     inline const Aws::Vector<GlobalSecondaryIndex>& GetGlobalSecondaryIndexes() const{ return m_globalSecondaryIndexes; }
617 
618     /**
619      * <p>One or more global secondary indexes (the maximum is 20) to be created on the
620      * table. Each global secondary index in the array includes the following:</p> <ul>
621      * <li> <p> <code>IndexName</code> - The name of the global secondary index. Must
622      * be unique only for this table.</p> <p/> </li> <li> <p> <code>KeySchema</code> -
623      * Specifies the key schema for the global secondary index.</p> </li> <li> <p>
624      * <code>Projection</code> - Specifies attributes that are copied (projected) from
625      * the table into the index. These are in addition to the primary key attributes
626      * and index key attributes, which are automatically projected. Each attribute
627      * specification is composed of:</p> <ul> <li> <p> <code>ProjectionType</code> -
628      * One of the following:</p> <ul> <li> <p> <code>KEYS_ONLY</code> - Only the index
629      * and primary keys are projected into the index.</p> </li> <li> <p>
630      * <code>INCLUDE</code> - Only the specified table attributes are projected into
631      * the index. The list of projected attributes is in
632      * <code>NonKeyAttributes</code>.</p> </li> <li> <p> <code>ALL</code> - All of the
633      * table attributes are projected into the index.</p> </li> </ul> </li> <li> <p>
634      * <code>NonKeyAttributes</code> - A list of one or more non-key attribute names
635      * that are projected into the secondary index. The total count of attributes
636      * provided in <code>NonKeyAttributes</code>, summed across all of the secondary
637      * indexes, must not exceed 100. If you project the same attribute into two
638      * different indexes, this counts as two distinct attributes when determining the
639      * total.</p> </li> </ul> </li> <li> <p> <code>ProvisionedThroughput</code> - The
640      * provisioned throughput settings for the global secondary index, consisting of
641      * read and write capacity units.</p> </li> </ul>
642      */
GlobalSecondaryIndexesHasBeenSet()643     inline bool GlobalSecondaryIndexesHasBeenSet() const { return m_globalSecondaryIndexesHasBeenSet; }
644 
645     /**
646      * <p>One or more global secondary indexes (the maximum is 20) to be created on the
647      * table. Each global secondary index in the array includes the following:</p> <ul>
648      * <li> <p> <code>IndexName</code> - The name of the global secondary index. Must
649      * be unique only for this table.</p> <p/> </li> <li> <p> <code>KeySchema</code> -
650      * Specifies the key schema for the global secondary index.</p> </li> <li> <p>
651      * <code>Projection</code> - Specifies attributes that are copied (projected) from
652      * the table into the index. These are in addition to the primary key attributes
653      * and index key attributes, which are automatically projected. Each attribute
654      * specification is composed of:</p> <ul> <li> <p> <code>ProjectionType</code> -
655      * One of the following:</p> <ul> <li> <p> <code>KEYS_ONLY</code> - Only the index
656      * and primary keys are projected into the index.</p> </li> <li> <p>
657      * <code>INCLUDE</code> - Only the specified table attributes are projected into
658      * the index. The list of projected attributes is in
659      * <code>NonKeyAttributes</code>.</p> </li> <li> <p> <code>ALL</code> - All of the
660      * table attributes are projected into the index.</p> </li> </ul> </li> <li> <p>
661      * <code>NonKeyAttributes</code> - A list of one or more non-key attribute names
662      * that are projected into the secondary index. The total count of attributes
663      * provided in <code>NonKeyAttributes</code>, summed across all of the secondary
664      * indexes, must not exceed 100. If you project the same attribute into two
665      * different indexes, this counts as two distinct attributes when determining the
666      * total.</p> </li> </ul> </li> <li> <p> <code>ProvisionedThroughput</code> - The
667      * provisioned throughput settings for the global secondary index, consisting of
668      * read and write capacity units.</p> </li> </ul>
669      */
SetGlobalSecondaryIndexes(const Aws::Vector<GlobalSecondaryIndex> & value)670     inline void SetGlobalSecondaryIndexes(const Aws::Vector<GlobalSecondaryIndex>& value) { m_globalSecondaryIndexesHasBeenSet = true; m_globalSecondaryIndexes = value; }
671 
672     /**
673      * <p>One or more global secondary indexes (the maximum is 20) to be created on the
674      * table. Each global secondary index in the array includes the following:</p> <ul>
675      * <li> <p> <code>IndexName</code> - The name of the global secondary index. Must
676      * be unique only for this table.</p> <p/> </li> <li> <p> <code>KeySchema</code> -
677      * Specifies the key schema for the global secondary index.</p> </li> <li> <p>
678      * <code>Projection</code> - Specifies attributes that are copied (projected) from
679      * the table into the index. These are in addition to the primary key attributes
680      * and index key attributes, which are automatically projected. Each attribute
681      * specification is composed of:</p> <ul> <li> <p> <code>ProjectionType</code> -
682      * One of the following:</p> <ul> <li> <p> <code>KEYS_ONLY</code> - Only the index
683      * and primary keys are projected into the index.</p> </li> <li> <p>
684      * <code>INCLUDE</code> - Only the specified table attributes are projected into
685      * the index. The list of projected attributes is in
686      * <code>NonKeyAttributes</code>.</p> </li> <li> <p> <code>ALL</code> - All of the
687      * table attributes are projected into the index.</p> </li> </ul> </li> <li> <p>
688      * <code>NonKeyAttributes</code> - A list of one or more non-key attribute names
689      * that are projected into the secondary index. The total count of attributes
690      * provided in <code>NonKeyAttributes</code>, summed across all of the secondary
691      * indexes, must not exceed 100. If you project the same attribute into two
692      * different indexes, this counts as two distinct attributes when determining the
693      * total.</p> </li> </ul> </li> <li> <p> <code>ProvisionedThroughput</code> - The
694      * provisioned throughput settings for the global secondary index, consisting of
695      * read and write capacity units.</p> </li> </ul>
696      */
SetGlobalSecondaryIndexes(Aws::Vector<GlobalSecondaryIndex> && value)697     inline void SetGlobalSecondaryIndexes(Aws::Vector<GlobalSecondaryIndex>&& value) { m_globalSecondaryIndexesHasBeenSet = true; m_globalSecondaryIndexes = std::move(value); }
698 
699     /**
700      * <p>One or more global secondary indexes (the maximum is 20) to be created on the
701      * table. Each global secondary index in the array includes the following:</p> <ul>
702      * <li> <p> <code>IndexName</code> - The name of the global secondary index. Must
703      * be unique only for this table.</p> <p/> </li> <li> <p> <code>KeySchema</code> -
704      * Specifies the key schema for the global secondary index.</p> </li> <li> <p>
705      * <code>Projection</code> - Specifies attributes that are copied (projected) from
706      * the table into the index. These are in addition to the primary key attributes
707      * and index key attributes, which are automatically projected. Each attribute
708      * specification is composed of:</p> <ul> <li> <p> <code>ProjectionType</code> -
709      * One of the following:</p> <ul> <li> <p> <code>KEYS_ONLY</code> - Only the index
710      * and primary keys are projected into the index.</p> </li> <li> <p>
711      * <code>INCLUDE</code> - Only the specified table attributes are projected into
712      * the index. The list of projected attributes is in
713      * <code>NonKeyAttributes</code>.</p> </li> <li> <p> <code>ALL</code> - All of the
714      * table attributes are projected into the index.</p> </li> </ul> </li> <li> <p>
715      * <code>NonKeyAttributes</code> - A list of one or more non-key attribute names
716      * that are projected into the secondary index. The total count of attributes
717      * provided in <code>NonKeyAttributes</code>, summed across all of the secondary
718      * indexes, must not exceed 100. If you project the same attribute into two
719      * different indexes, this counts as two distinct attributes when determining the
720      * total.</p> </li> </ul> </li> <li> <p> <code>ProvisionedThroughput</code> - The
721      * provisioned throughput settings for the global secondary index, consisting of
722      * read and write capacity units.</p> </li> </ul>
723      */
WithGlobalSecondaryIndexes(const Aws::Vector<GlobalSecondaryIndex> & value)724     inline CreateTableRequest& WithGlobalSecondaryIndexes(const Aws::Vector<GlobalSecondaryIndex>& value) { SetGlobalSecondaryIndexes(value); return *this;}
725 
726     /**
727      * <p>One or more global secondary indexes (the maximum is 20) to be created on the
728      * table. Each global secondary index in the array includes the following:</p> <ul>
729      * <li> <p> <code>IndexName</code> - The name of the global secondary index. Must
730      * be unique only for this table.</p> <p/> </li> <li> <p> <code>KeySchema</code> -
731      * Specifies the key schema for the global secondary index.</p> </li> <li> <p>
732      * <code>Projection</code> - Specifies attributes that are copied (projected) from
733      * the table into the index. These are in addition to the primary key attributes
734      * and index key attributes, which are automatically projected. Each attribute
735      * specification is composed of:</p> <ul> <li> <p> <code>ProjectionType</code> -
736      * One of the following:</p> <ul> <li> <p> <code>KEYS_ONLY</code> - Only the index
737      * and primary keys are projected into the index.</p> </li> <li> <p>
738      * <code>INCLUDE</code> - Only the specified table attributes are projected into
739      * the index. The list of projected attributes is in
740      * <code>NonKeyAttributes</code>.</p> </li> <li> <p> <code>ALL</code> - All of the
741      * table attributes are projected into the index.</p> </li> </ul> </li> <li> <p>
742      * <code>NonKeyAttributes</code> - A list of one or more non-key attribute names
743      * that are projected into the secondary index. The total count of attributes
744      * provided in <code>NonKeyAttributes</code>, summed across all of the secondary
745      * indexes, must not exceed 100. If you project the same attribute into two
746      * different indexes, this counts as two distinct attributes when determining the
747      * total.</p> </li> </ul> </li> <li> <p> <code>ProvisionedThroughput</code> - The
748      * provisioned throughput settings for the global secondary index, consisting of
749      * read and write capacity units.</p> </li> </ul>
750      */
WithGlobalSecondaryIndexes(Aws::Vector<GlobalSecondaryIndex> && value)751     inline CreateTableRequest& WithGlobalSecondaryIndexes(Aws::Vector<GlobalSecondaryIndex>&& value) { SetGlobalSecondaryIndexes(std::move(value)); return *this;}
752 
753     /**
754      * <p>One or more global secondary indexes (the maximum is 20) to be created on the
755      * table. Each global secondary index in the array includes the following:</p> <ul>
756      * <li> <p> <code>IndexName</code> - The name of the global secondary index. Must
757      * be unique only for this table.</p> <p/> </li> <li> <p> <code>KeySchema</code> -
758      * Specifies the key schema for the global secondary index.</p> </li> <li> <p>
759      * <code>Projection</code> - Specifies attributes that are copied (projected) from
760      * the table into the index. These are in addition to the primary key attributes
761      * and index key attributes, which are automatically projected. Each attribute
762      * specification is composed of:</p> <ul> <li> <p> <code>ProjectionType</code> -
763      * One of the following:</p> <ul> <li> <p> <code>KEYS_ONLY</code> - Only the index
764      * and primary keys are projected into the index.</p> </li> <li> <p>
765      * <code>INCLUDE</code> - Only the specified table attributes are projected into
766      * the index. The list of projected attributes is in
767      * <code>NonKeyAttributes</code>.</p> </li> <li> <p> <code>ALL</code> - All of the
768      * table attributes are projected into the index.</p> </li> </ul> </li> <li> <p>
769      * <code>NonKeyAttributes</code> - A list of one or more non-key attribute names
770      * that are projected into the secondary index. The total count of attributes
771      * provided in <code>NonKeyAttributes</code>, summed across all of the secondary
772      * indexes, must not exceed 100. If you project the same attribute into two
773      * different indexes, this counts as two distinct attributes when determining the
774      * total.</p> </li> </ul> </li> <li> <p> <code>ProvisionedThroughput</code> - The
775      * provisioned throughput settings for the global secondary index, consisting of
776      * read and write capacity units.</p> </li> </ul>
777      */
AddGlobalSecondaryIndexes(const GlobalSecondaryIndex & value)778     inline CreateTableRequest& AddGlobalSecondaryIndexes(const GlobalSecondaryIndex& value) { m_globalSecondaryIndexesHasBeenSet = true; m_globalSecondaryIndexes.push_back(value); return *this; }
779 
780     /**
781      * <p>One or more global secondary indexes (the maximum is 20) to be created on the
782      * table. Each global secondary index in the array includes the following:</p> <ul>
783      * <li> <p> <code>IndexName</code> - The name of the global secondary index. Must
784      * be unique only for this table.</p> <p/> </li> <li> <p> <code>KeySchema</code> -
785      * Specifies the key schema for the global secondary index.</p> </li> <li> <p>
786      * <code>Projection</code> - Specifies attributes that are copied (projected) from
787      * the table into the index. These are in addition to the primary key attributes
788      * and index key attributes, which are automatically projected. Each attribute
789      * specification is composed of:</p> <ul> <li> <p> <code>ProjectionType</code> -
790      * One of the following:</p> <ul> <li> <p> <code>KEYS_ONLY</code> - Only the index
791      * and primary keys are projected into the index.</p> </li> <li> <p>
792      * <code>INCLUDE</code> - Only the specified table attributes are projected into
793      * the index. The list of projected attributes is in
794      * <code>NonKeyAttributes</code>.</p> </li> <li> <p> <code>ALL</code> - All of the
795      * table attributes are projected into the index.</p> </li> </ul> </li> <li> <p>
796      * <code>NonKeyAttributes</code> - A list of one or more non-key attribute names
797      * that are projected into the secondary index. The total count of attributes
798      * provided in <code>NonKeyAttributes</code>, summed across all of the secondary
799      * indexes, must not exceed 100. If you project the same attribute into two
800      * different indexes, this counts as two distinct attributes when determining the
801      * total.</p> </li> </ul> </li> <li> <p> <code>ProvisionedThroughput</code> - The
802      * provisioned throughput settings for the global secondary index, consisting of
803      * read and write capacity units.</p> </li> </ul>
804      */
AddGlobalSecondaryIndexes(GlobalSecondaryIndex && value)805     inline CreateTableRequest& AddGlobalSecondaryIndexes(GlobalSecondaryIndex&& value) { m_globalSecondaryIndexesHasBeenSet = true; m_globalSecondaryIndexes.push_back(std::move(value)); return *this; }
806 
807 
808     /**
809      * <p>Controls how you are charged for read and write throughput and how you manage
810      * capacity. This setting can be changed later.</p> <ul> <li> <p>
811      * <code>PROVISIONED</code> - We recommend using <code>PROVISIONED</code> for
812      * predictable workloads. <code>PROVISIONED</code> sets the billing mode to <a
813      * href="https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/HowItWorks.ReadWriteCapacityMode.html#HowItWorks.ProvisionedThroughput.Manual">Provisioned
814      * Mode</a>.</p> </li> <li> <p> <code>PAY_PER_REQUEST</code> - We recommend using
815      * <code>PAY_PER_REQUEST</code> for unpredictable workloads.
816      * <code>PAY_PER_REQUEST</code> sets the billing mode to <a
817      * href="https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/HowItWorks.ReadWriteCapacityMode.html#HowItWorks.OnDemand">On-Demand
818      * Mode</a>. </p> </li> </ul>
819      */
GetBillingMode()820     inline const BillingMode& GetBillingMode() const{ return m_billingMode; }
821 
822     /**
823      * <p>Controls how you are charged for read and write throughput and how you manage
824      * capacity. This setting can be changed later.</p> <ul> <li> <p>
825      * <code>PROVISIONED</code> - We recommend using <code>PROVISIONED</code> for
826      * predictable workloads. <code>PROVISIONED</code> sets the billing mode to <a
827      * href="https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/HowItWorks.ReadWriteCapacityMode.html#HowItWorks.ProvisionedThroughput.Manual">Provisioned
828      * Mode</a>.</p> </li> <li> <p> <code>PAY_PER_REQUEST</code> - We recommend using
829      * <code>PAY_PER_REQUEST</code> for unpredictable workloads.
830      * <code>PAY_PER_REQUEST</code> sets the billing mode to <a
831      * href="https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/HowItWorks.ReadWriteCapacityMode.html#HowItWorks.OnDemand">On-Demand
832      * Mode</a>. </p> </li> </ul>
833      */
BillingModeHasBeenSet()834     inline bool BillingModeHasBeenSet() const { return m_billingModeHasBeenSet; }
835 
836     /**
837      * <p>Controls how you are charged for read and write throughput and how you manage
838      * capacity. This setting can be changed later.</p> <ul> <li> <p>
839      * <code>PROVISIONED</code> - We recommend using <code>PROVISIONED</code> for
840      * predictable workloads. <code>PROVISIONED</code> sets the billing mode to <a
841      * href="https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/HowItWorks.ReadWriteCapacityMode.html#HowItWorks.ProvisionedThroughput.Manual">Provisioned
842      * Mode</a>.</p> </li> <li> <p> <code>PAY_PER_REQUEST</code> - We recommend using
843      * <code>PAY_PER_REQUEST</code> for unpredictable workloads.
844      * <code>PAY_PER_REQUEST</code> sets the billing mode to <a
845      * href="https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/HowItWorks.ReadWriteCapacityMode.html#HowItWorks.OnDemand">On-Demand
846      * Mode</a>. </p> </li> </ul>
847      */
SetBillingMode(const BillingMode & value)848     inline void SetBillingMode(const BillingMode& value) { m_billingModeHasBeenSet = true; m_billingMode = value; }
849 
850     /**
851      * <p>Controls how you are charged for read and write throughput and how you manage
852      * capacity. This setting can be changed later.</p> <ul> <li> <p>
853      * <code>PROVISIONED</code> - We recommend using <code>PROVISIONED</code> for
854      * predictable workloads. <code>PROVISIONED</code> sets the billing mode to <a
855      * href="https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/HowItWorks.ReadWriteCapacityMode.html#HowItWorks.ProvisionedThroughput.Manual">Provisioned
856      * Mode</a>.</p> </li> <li> <p> <code>PAY_PER_REQUEST</code> - We recommend using
857      * <code>PAY_PER_REQUEST</code> for unpredictable workloads.
858      * <code>PAY_PER_REQUEST</code> sets the billing mode to <a
859      * href="https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/HowItWorks.ReadWriteCapacityMode.html#HowItWorks.OnDemand">On-Demand
860      * Mode</a>. </p> </li> </ul>
861      */
SetBillingMode(BillingMode && value)862     inline void SetBillingMode(BillingMode&& value) { m_billingModeHasBeenSet = true; m_billingMode = std::move(value); }
863 
864     /**
865      * <p>Controls how you are charged for read and write throughput and how you manage
866      * capacity. This setting can be changed later.</p> <ul> <li> <p>
867      * <code>PROVISIONED</code> - We recommend using <code>PROVISIONED</code> for
868      * predictable workloads. <code>PROVISIONED</code> sets the billing mode to <a
869      * href="https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/HowItWorks.ReadWriteCapacityMode.html#HowItWorks.ProvisionedThroughput.Manual">Provisioned
870      * Mode</a>.</p> </li> <li> <p> <code>PAY_PER_REQUEST</code> - We recommend using
871      * <code>PAY_PER_REQUEST</code> for unpredictable workloads.
872      * <code>PAY_PER_REQUEST</code> sets the billing mode to <a
873      * href="https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/HowItWorks.ReadWriteCapacityMode.html#HowItWorks.OnDemand">On-Demand
874      * Mode</a>. </p> </li> </ul>
875      */
WithBillingMode(const BillingMode & value)876     inline CreateTableRequest& WithBillingMode(const BillingMode& value) { SetBillingMode(value); return *this;}
877 
878     /**
879      * <p>Controls how you are charged for read and write throughput and how you manage
880      * capacity. This setting can be changed later.</p> <ul> <li> <p>
881      * <code>PROVISIONED</code> - We recommend using <code>PROVISIONED</code> for
882      * predictable workloads. <code>PROVISIONED</code> sets the billing mode to <a
883      * href="https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/HowItWorks.ReadWriteCapacityMode.html#HowItWorks.ProvisionedThroughput.Manual">Provisioned
884      * Mode</a>.</p> </li> <li> <p> <code>PAY_PER_REQUEST</code> - We recommend using
885      * <code>PAY_PER_REQUEST</code> for unpredictable workloads.
886      * <code>PAY_PER_REQUEST</code> sets the billing mode to <a
887      * href="https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/HowItWorks.ReadWriteCapacityMode.html#HowItWorks.OnDemand">On-Demand
888      * Mode</a>. </p> </li> </ul>
889      */
WithBillingMode(BillingMode && value)890     inline CreateTableRequest& WithBillingMode(BillingMode&& value) { SetBillingMode(std::move(value)); return *this;}
891 
892 
893     /**
894      * <p>Represents the provisioned throughput settings for a specified table or
895      * index. The settings can be modified using the <code>UpdateTable</code>
896      * operation.</p> <p> If you set BillingMode as <code>PROVISIONED</code>, you must
897      * specify this property. If you set BillingMode as <code>PAY_PER_REQUEST</code>,
898      * you cannot specify this property.</p> <p>For current minimum and maximum
899      * provisioned throughput values, see <a
900      * href="https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Limits.html">Service,
901      * Account, and Table Quotas</a> in the <i>Amazon DynamoDB Developer Guide</i>.</p>
902      */
GetProvisionedThroughput()903     inline const ProvisionedThroughput& GetProvisionedThroughput() const{ return m_provisionedThroughput; }
904 
905     /**
906      * <p>Represents the provisioned throughput settings for a specified table or
907      * index. The settings can be modified using the <code>UpdateTable</code>
908      * operation.</p> <p> If you set BillingMode as <code>PROVISIONED</code>, you must
909      * specify this property. If you set BillingMode as <code>PAY_PER_REQUEST</code>,
910      * you cannot specify this property.</p> <p>For current minimum and maximum
911      * provisioned throughput values, see <a
912      * href="https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Limits.html">Service,
913      * Account, and Table Quotas</a> in the <i>Amazon DynamoDB Developer Guide</i>.</p>
914      */
ProvisionedThroughputHasBeenSet()915     inline bool ProvisionedThroughputHasBeenSet() const { return m_provisionedThroughputHasBeenSet; }
916 
917     /**
918      * <p>Represents the provisioned throughput settings for a specified table or
919      * index. The settings can be modified using the <code>UpdateTable</code>
920      * operation.</p> <p> If you set BillingMode as <code>PROVISIONED</code>, you must
921      * specify this property. If you set BillingMode as <code>PAY_PER_REQUEST</code>,
922      * you cannot specify this property.</p> <p>For current minimum and maximum
923      * provisioned throughput values, see <a
924      * href="https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Limits.html">Service,
925      * Account, and Table Quotas</a> in the <i>Amazon DynamoDB Developer Guide</i>.</p>
926      */
SetProvisionedThroughput(const ProvisionedThroughput & value)927     inline void SetProvisionedThroughput(const ProvisionedThroughput& value) { m_provisionedThroughputHasBeenSet = true; m_provisionedThroughput = value; }
928 
929     /**
930      * <p>Represents the provisioned throughput settings for a specified table or
931      * index. The settings can be modified using the <code>UpdateTable</code>
932      * operation.</p> <p> If you set BillingMode as <code>PROVISIONED</code>, you must
933      * specify this property. If you set BillingMode as <code>PAY_PER_REQUEST</code>,
934      * you cannot specify this property.</p> <p>For current minimum and maximum
935      * provisioned throughput values, see <a
936      * href="https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Limits.html">Service,
937      * Account, and Table Quotas</a> in the <i>Amazon DynamoDB Developer Guide</i>.</p>
938      */
SetProvisionedThroughput(ProvisionedThroughput && value)939     inline void SetProvisionedThroughput(ProvisionedThroughput&& value) { m_provisionedThroughputHasBeenSet = true; m_provisionedThroughput = std::move(value); }
940 
941     /**
942      * <p>Represents the provisioned throughput settings for a specified table or
943      * index. The settings can be modified using the <code>UpdateTable</code>
944      * operation.</p> <p> If you set BillingMode as <code>PROVISIONED</code>, you must
945      * specify this property. If you set BillingMode as <code>PAY_PER_REQUEST</code>,
946      * you cannot specify this property.</p> <p>For current minimum and maximum
947      * provisioned throughput values, see <a
948      * href="https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Limits.html">Service,
949      * Account, and Table Quotas</a> in the <i>Amazon DynamoDB Developer Guide</i>.</p>
950      */
WithProvisionedThroughput(const ProvisionedThroughput & value)951     inline CreateTableRequest& WithProvisionedThroughput(const ProvisionedThroughput& value) { SetProvisionedThroughput(value); return *this;}
952 
953     /**
954      * <p>Represents the provisioned throughput settings for a specified table or
955      * index. The settings can be modified using the <code>UpdateTable</code>
956      * operation.</p> <p> If you set BillingMode as <code>PROVISIONED</code>, you must
957      * specify this property. If you set BillingMode as <code>PAY_PER_REQUEST</code>,
958      * you cannot specify this property.</p> <p>For current minimum and maximum
959      * provisioned throughput values, see <a
960      * href="https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Limits.html">Service,
961      * Account, and Table Quotas</a> in the <i>Amazon DynamoDB Developer Guide</i>.</p>
962      */
WithProvisionedThroughput(ProvisionedThroughput && value)963     inline CreateTableRequest& WithProvisionedThroughput(ProvisionedThroughput&& value) { SetProvisionedThroughput(std::move(value)); return *this;}
964 
965 
966     /**
967      * <p>The settings for DynamoDB Streams on the table. These settings consist
968      * of:</p> <ul> <li> <p> <code>StreamEnabled</code> - Indicates whether DynamoDB
969      * Streams is to be enabled (true) or disabled (false).</p> </li> <li> <p>
970      * <code>StreamViewType</code> - When an item in the table is modified,
971      * <code>StreamViewType</code> determines what information is written to the
972      * table's stream. Valid values for <code>StreamViewType</code> are:</p> <ul> <li>
973      * <p> <code>KEYS_ONLY</code> - Only the key attributes of the modified item are
974      * written to the stream.</p> </li> <li> <p> <code>NEW_IMAGE</code> - The entire
975      * item, as it appears after it was modified, is written to the stream.</p> </li>
976      * <li> <p> <code>OLD_IMAGE</code> - The entire item, as it appeared before it was
977      * modified, is written to the stream.</p> </li> <li> <p>
978      * <code>NEW_AND_OLD_IMAGES</code> - Both the new and the old item images of the
979      * item are written to the stream.</p> </li> </ul> </li> </ul>
980      */
GetStreamSpecification()981     inline const StreamSpecification& GetStreamSpecification() const{ return m_streamSpecification; }
982 
983     /**
984      * <p>The settings for DynamoDB Streams on the table. These settings consist
985      * of:</p> <ul> <li> <p> <code>StreamEnabled</code> - Indicates whether DynamoDB
986      * Streams is to be enabled (true) or disabled (false).</p> </li> <li> <p>
987      * <code>StreamViewType</code> - When an item in the table is modified,
988      * <code>StreamViewType</code> determines what information is written to the
989      * table's stream. Valid values for <code>StreamViewType</code> are:</p> <ul> <li>
990      * <p> <code>KEYS_ONLY</code> - Only the key attributes of the modified item are
991      * written to the stream.</p> </li> <li> <p> <code>NEW_IMAGE</code> - The entire
992      * item, as it appears after it was modified, is written to the stream.</p> </li>
993      * <li> <p> <code>OLD_IMAGE</code> - The entire item, as it appeared before it was
994      * modified, is written to the stream.</p> </li> <li> <p>
995      * <code>NEW_AND_OLD_IMAGES</code> - Both the new and the old item images of the
996      * item are written to the stream.</p> </li> </ul> </li> </ul>
997      */
StreamSpecificationHasBeenSet()998     inline bool StreamSpecificationHasBeenSet() const { return m_streamSpecificationHasBeenSet; }
999 
1000     /**
1001      * <p>The settings for DynamoDB Streams on the table. These settings consist
1002      * of:</p> <ul> <li> <p> <code>StreamEnabled</code> - Indicates whether DynamoDB
1003      * Streams is to be enabled (true) or disabled (false).</p> </li> <li> <p>
1004      * <code>StreamViewType</code> - When an item in the table is modified,
1005      * <code>StreamViewType</code> determines what information is written to the
1006      * table's stream. Valid values for <code>StreamViewType</code> are:</p> <ul> <li>
1007      * <p> <code>KEYS_ONLY</code> - Only the key attributes of the modified item are
1008      * written to the stream.</p> </li> <li> <p> <code>NEW_IMAGE</code> - The entire
1009      * item, as it appears after it was modified, is written to the stream.</p> </li>
1010      * <li> <p> <code>OLD_IMAGE</code> - The entire item, as it appeared before it was
1011      * modified, is written to the stream.</p> </li> <li> <p>
1012      * <code>NEW_AND_OLD_IMAGES</code> - Both the new and the old item images of the
1013      * item are written to the stream.</p> </li> </ul> </li> </ul>
1014      */
SetStreamSpecification(const StreamSpecification & value)1015     inline void SetStreamSpecification(const StreamSpecification& value) { m_streamSpecificationHasBeenSet = true; m_streamSpecification = value; }
1016 
1017     /**
1018      * <p>The settings for DynamoDB Streams on the table. These settings consist
1019      * of:</p> <ul> <li> <p> <code>StreamEnabled</code> - Indicates whether DynamoDB
1020      * Streams is to be enabled (true) or disabled (false).</p> </li> <li> <p>
1021      * <code>StreamViewType</code> - When an item in the table is modified,
1022      * <code>StreamViewType</code> determines what information is written to the
1023      * table's stream. Valid values for <code>StreamViewType</code> are:</p> <ul> <li>
1024      * <p> <code>KEYS_ONLY</code> - Only the key attributes of the modified item are
1025      * written to the stream.</p> </li> <li> <p> <code>NEW_IMAGE</code> - The entire
1026      * item, as it appears after it was modified, is written to the stream.</p> </li>
1027      * <li> <p> <code>OLD_IMAGE</code> - The entire item, as it appeared before it was
1028      * modified, is written to the stream.</p> </li> <li> <p>
1029      * <code>NEW_AND_OLD_IMAGES</code> - Both the new and the old item images of the
1030      * item are written to the stream.</p> </li> </ul> </li> </ul>
1031      */
SetStreamSpecification(StreamSpecification && value)1032     inline void SetStreamSpecification(StreamSpecification&& value) { m_streamSpecificationHasBeenSet = true; m_streamSpecification = std::move(value); }
1033 
1034     /**
1035      * <p>The settings for DynamoDB Streams on the table. These settings consist
1036      * of:</p> <ul> <li> <p> <code>StreamEnabled</code> - Indicates whether DynamoDB
1037      * Streams is to be enabled (true) or disabled (false).</p> </li> <li> <p>
1038      * <code>StreamViewType</code> - When an item in the table is modified,
1039      * <code>StreamViewType</code> determines what information is written to the
1040      * table's stream. Valid values for <code>StreamViewType</code> are:</p> <ul> <li>
1041      * <p> <code>KEYS_ONLY</code> - Only the key attributes of the modified item are
1042      * written to the stream.</p> </li> <li> <p> <code>NEW_IMAGE</code> - The entire
1043      * item, as it appears after it was modified, is written to the stream.</p> </li>
1044      * <li> <p> <code>OLD_IMAGE</code> - The entire item, as it appeared before it was
1045      * modified, is written to the stream.</p> </li> <li> <p>
1046      * <code>NEW_AND_OLD_IMAGES</code> - Both the new and the old item images of the
1047      * item are written to the stream.</p> </li> </ul> </li> </ul>
1048      */
WithStreamSpecification(const StreamSpecification & value)1049     inline CreateTableRequest& WithStreamSpecification(const StreamSpecification& value) { SetStreamSpecification(value); return *this;}
1050 
1051     /**
1052      * <p>The settings for DynamoDB Streams on the table. These settings consist
1053      * of:</p> <ul> <li> <p> <code>StreamEnabled</code> - Indicates whether DynamoDB
1054      * Streams is to be enabled (true) or disabled (false).</p> </li> <li> <p>
1055      * <code>StreamViewType</code> - When an item in the table is modified,
1056      * <code>StreamViewType</code> determines what information is written to the
1057      * table's stream. Valid values for <code>StreamViewType</code> are:</p> <ul> <li>
1058      * <p> <code>KEYS_ONLY</code> - Only the key attributes of the modified item are
1059      * written to the stream.</p> </li> <li> <p> <code>NEW_IMAGE</code> - The entire
1060      * item, as it appears after it was modified, is written to the stream.</p> </li>
1061      * <li> <p> <code>OLD_IMAGE</code> - The entire item, as it appeared before it was
1062      * modified, is written to the stream.</p> </li> <li> <p>
1063      * <code>NEW_AND_OLD_IMAGES</code> - Both the new and the old item images of the
1064      * item are written to the stream.</p> </li> </ul> </li> </ul>
1065      */
WithStreamSpecification(StreamSpecification && value)1066     inline CreateTableRequest& WithStreamSpecification(StreamSpecification&& value) { SetStreamSpecification(std::move(value)); return *this;}
1067 
1068 
1069     /**
1070      * <p>Represents the settings used to enable server-side encryption.</p>
1071      */
GetSSESpecification()1072     inline const SSESpecification& GetSSESpecification() const{ return m_sSESpecification; }
1073 
1074     /**
1075      * <p>Represents the settings used to enable server-side encryption.</p>
1076      */
SSESpecificationHasBeenSet()1077     inline bool SSESpecificationHasBeenSet() const { return m_sSESpecificationHasBeenSet; }
1078 
1079     /**
1080      * <p>Represents the settings used to enable server-side encryption.</p>
1081      */
SetSSESpecification(const SSESpecification & value)1082     inline void SetSSESpecification(const SSESpecification& value) { m_sSESpecificationHasBeenSet = true; m_sSESpecification = value; }
1083 
1084     /**
1085      * <p>Represents the settings used to enable server-side encryption.</p>
1086      */
SetSSESpecification(SSESpecification && value)1087     inline void SetSSESpecification(SSESpecification&& value) { m_sSESpecificationHasBeenSet = true; m_sSESpecification = std::move(value); }
1088 
1089     /**
1090      * <p>Represents the settings used to enable server-side encryption.</p>
1091      */
WithSSESpecification(const SSESpecification & value)1092     inline CreateTableRequest& WithSSESpecification(const SSESpecification& value) { SetSSESpecification(value); return *this;}
1093 
1094     /**
1095      * <p>Represents the settings used to enable server-side encryption.</p>
1096      */
WithSSESpecification(SSESpecification && value)1097     inline CreateTableRequest& WithSSESpecification(SSESpecification&& value) { SetSSESpecification(std::move(value)); return *this;}
1098 
1099 
1100     /**
1101      * <p>A list of key-value pairs to label the table. For more information, see <a
1102      * href="https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Tagging.html">Tagging
1103      * for DynamoDB</a>.</p>
1104      */
GetTags()1105     inline const Aws::Vector<Tag>& GetTags() const{ return m_tags; }
1106 
1107     /**
1108      * <p>A list of key-value pairs to label the table. For more information, see <a
1109      * href="https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Tagging.html">Tagging
1110      * for DynamoDB</a>.</p>
1111      */
TagsHasBeenSet()1112     inline bool TagsHasBeenSet() const { return m_tagsHasBeenSet; }
1113 
1114     /**
1115      * <p>A list of key-value pairs to label the table. For more information, see <a
1116      * href="https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Tagging.html">Tagging
1117      * for DynamoDB</a>.</p>
1118      */
SetTags(const Aws::Vector<Tag> & value)1119     inline void SetTags(const Aws::Vector<Tag>& value) { m_tagsHasBeenSet = true; m_tags = value; }
1120 
1121     /**
1122      * <p>A list of key-value pairs to label the table. For more information, see <a
1123      * href="https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Tagging.html">Tagging
1124      * for DynamoDB</a>.</p>
1125      */
SetTags(Aws::Vector<Tag> && value)1126     inline void SetTags(Aws::Vector<Tag>&& value) { m_tagsHasBeenSet = true; m_tags = std::move(value); }
1127 
1128     /**
1129      * <p>A list of key-value pairs to label the table. For more information, see <a
1130      * href="https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Tagging.html">Tagging
1131      * for DynamoDB</a>.</p>
1132      */
WithTags(const Aws::Vector<Tag> & value)1133     inline CreateTableRequest& WithTags(const Aws::Vector<Tag>& value) { SetTags(value); return *this;}
1134 
1135     /**
1136      * <p>A list of key-value pairs to label the table. For more information, see <a
1137      * href="https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Tagging.html">Tagging
1138      * for DynamoDB</a>.</p>
1139      */
WithTags(Aws::Vector<Tag> && value)1140     inline CreateTableRequest& WithTags(Aws::Vector<Tag>&& value) { SetTags(std::move(value)); return *this;}
1141 
1142     /**
1143      * <p>A list of key-value pairs to label the table. For more information, see <a
1144      * href="https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Tagging.html">Tagging
1145      * for DynamoDB</a>.</p>
1146      */
AddTags(const Tag & value)1147     inline CreateTableRequest& AddTags(const Tag& value) { m_tagsHasBeenSet = true; m_tags.push_back(value); return *this; }
1148 
1149     /**
1150      * <p>A list of key-value pairs to label the table. For more information, see <a
1151      * href="https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Tagging.html">Tagging
1152      * for DynamoDB</a>.</p>
1153      */
AddTags(Tag && value)1154     inline CreateTableRequest& AddTags(Tag&& value) { m_tagsHasBeenSet = true; m_tags.push_back(std::move(value)); return *this; }
1155 
1156   private:
1157 
1158     Aws::Vector<AttributeDefinition> m_attributeDefinitions;
1159     bool m_attributeDefinitionsHasBeenSet;
1160 
1161     Aws::String m_tableName;
1162     bool m_tableNameHasBeenSet;
1163 
1164     Aws::Vector<KeySchemaElement> m_keySchema;
1165     bool m_keySchemaHasBeenSet;
1166 
1167     Aws::Vector<LocalSecondaryIndex> m_localSecondaryIndexes;
1168     bool m_localSecondaryIndexesHasBeenSet;
1169 
1170     Aws::Vector<GlobalSecondaryIndex> m_globalSecondaryIndexes;
1171     bool m_globalSecondaryIndexesHasBeenSet;
1172 
1173     BillingMode m_billingMode;
1174     bool m_billingModeHasBeenSet;
1175 
1176     ProvisionedThroughput m_provisionedThroughput;
1177     bool m_provisionedThroughputHasBeenSet;
1178 
1179     StreamSpecification m_streamSpecification;
1180     bool m_streamSpecificationHasBeenSet;
1181 
1182     SSESpecification m_sSESpecification;
1183     bool m_sSESpecificationHasBeenSet;
1184 
1185     Aws::Vector<Tag> m_tags;
1186     bool m_tagsHasBeenSet;
1187   };
1188 
1189 } // namespace Model
1190 } // namespace DynamoDB
1191 } // namespace Aws
1192