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/GlobalSecondaryIndexUpdate.h>
17 #include <aws/dynamodb/model/ReplicationGroupUpdate.h>
18 #include <utility>
19 
20 namespace Aws
21 {
22 namespace DynamoDB
23 {
24 namespace Model
25 {
26 
27   /**
28    * <p>Represents the input of an <code>UpdateTable</code> operation.</p><p><h3>See
29    * Also:</h3>   <a
30    * href="http://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/UpdateTableInput">AWS
31    * API Reference</a></p>
32    */
33   class AWS_DYNAMODB_API UpdateTableRequest : public DynamoDBRequest
34   {
35   public:
36     UpdateTableRequest();
37 
38     // Service request name is the Operation name which will send this request out,
39     // each operation should has unique request name, so that we can get operation's name from this request.
40     // Note: this is not true for response, multiple operations may have the same response name,
41     // so we can not get operation's name from response.
GetServiceRequestName()42     inline virtual const char* GetServiceRequestName() const override { return "UpdateTable"; }
43 
44     Aws::String SerializePayload() const override;
45 
46     Aws::Http::HeaderValueCollection GetRequestSpecificHeaders() const override;
47 
48 
49     /**
50      * <p>An array of attributes that describe the key schema for the table and
51      * indexes. If you are adding a new global secondary index to the table,
52      * <code>AttributeDefinitions</code> must include the key element(s) of the new
53      * index.</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. If you are adding a new global secondary index to the table,
60      * <code>AttributeDefinitions</code> must include the key element(s) of the new
61      * index.</p>
62      */
AttributeDefinitionsHasBeenSet()63     inline bool AttributeDefinitionsHasBeenSet() const { return m_attributeDefinitionsHasBeenSet; }
64 
65     /**
66      * <p>An array of attributes that describe the key schema for the table and
67      * indexes. If you are adding a new global secondary index to the table,
68      * <code>AttributeDefinitions</code> must include the key element(s) of the new
69      * index.</p>
70      */
SetAttributeDefinitions(const Aws::Vector<AttributeDefinition> & value)71     inline void SetAttributeDefinitions(const Aws::Vector<AttributeDefinition>& value) { m_attributeDefinitionsHasBeenSet = true; m_attributeDefinitions = value; }
72 
73     /**
74      * <p>An array of attributes that describe the key schema for the table and
75      * indexes. If you are adding a new global secondary index to the table,
76      * <code>AttributeDefinitions</code> must include the key element(s) of the new
77      * index.</p>
78      */
SetAttributeDefinitions(Aws::Vector<AttributeDefinition> && value)79     inline void SetAttributeDefinitions(Aws::Vector<AttributeDefinition>&& value) { m_attributeDefinitionsHasBeenSet = true; m_attributeDefinitions = std::move(value); }
80 
81     /**
82      * <p>An array of attributes that describe the key schema for the table and
83      * indexes. If you are adding a new global secondary index to the table,
84      * <code>AttributeDefinitions</code> must include the key element(s) of the new
85      * index.</p>
86      */
WithAttributeDefinitions(const Aws::Vector<AttributeDefinition> & value)87     inline UpdateTableRequest& WithAttributeDefinitions(const Aws::Vector<AttributeDefinition>& value) { SetAttributeDefinitions(value); return *this;}
88 
89     /**
90      * <p>An array of attributes that describe the key schema for the table and
91      * indexes. If you are adding a new global secondary index to the table,
92      * <code>AttributeDefinitions</code> must include the key element(s) of the new
93      * index.</p>
94      */
WithAttributeDefinitions(Aws::Vector<AttributeDefinition> && value)95     inline UpdateTableRequest& WithAttributeDefinitions(Aws::Vector<AttributeDefinition>&& value) { SetAttributeDefinitions(std::move(value)); return *this;}
96 
97     /**
98      * <p>An array of attributes that describe the key schema for the table and
99      * indexes. If you are adding a new global secondary index to the table,
100      * <code>AttributeDefinitions</code> must include the key element(s) of the new
101      * index.</p>
102      */
AddAttributeDefinitions(const AttributeDefinition & value)103     inline UpdateTableRequest& AddAttributeDefinitions(const AttributeDefinition& value) { m_attributeDefinitionsHasBeenSet = true; m_attributeDefinitions.push_back(value); return *this; }
104 
105     /**
106      * <p>An array of attributes that describe the key schema for the table and
107      * indexes. If you are adding a new global secondary index to the table,
108      * <code>AttributeDefinitions</code> must include the key element(s) of the new
109      * index.</p>
110      */
AddAttributeDefinitions(AttributeDefinition && value)111     inline UpdateTableRequest& AddAttributeDefinitions(AttributeDefinition&& value) { m_attributeDefinitionsHasBeenSet = true; m_attributeDefinitions.push_back(std::move(value)); return *this; }
112 
113 
114     /**
115      * <p>The name of the table to be updated.</p>
116      */
GetTableName()117     inline const Aws::String& GetTableName() const{ return m_tableName; }
118 
119     /**
120      * <p>The name of the table to be updated.</p>
121      */
TableNameHasBeenSet()122     inline bool TableNameHasBeenSet() const { return m_tableNameHasBeenSet; }
123 
124     /**
125      * <p>The name of the table to be updated.</p>
126      */
SetTableName(const Aws::String & value)127     inline void SetTableName(const Aws::String& value) { m_tableNameHasBeenSet = true; m_tableName = value; }
128 
129     /**
130      * <p>The name of the table to be updated.</p>
131      */
SetTableName(Aws::String && value)132     inline void SetTableName(Aws::String&& value) { m_tableNameHasBeenSet = true; m_tableName = std::move(value); }
133 
134     /**
135      * <p>The name of the table to be updated.</p>
136      */
SetTableName(const char * value)137     inline void SetTableName(const char* value) { m_tableNameHasBeenSet = true; m_tableName.assign(value); }
138 
139     /**
140      * <p>The name of the table to be updated.</p>
141      */
WithTableName(const Aws::String & value)142     inline UpdateTableRequest& WithTableName(const Aws::String& value) { SetTableName(value); return *this;}
143 
144     /**
145      * <p>The name of the table to be updated.</p>
146      */
WithTableName(Aws::String && value)147     inline UpdateTableRequest& WithTableName(Aws::String&& value) { SetTableName(std::move(value)); return *this;}
148 
149     /**
150      * <p>The name of the table to be updated.</p>
151      */
WithTableName(const char * value)152     inline UpdateTableRequest& WithTableName(const char* value) { SetTableName(value); return *this;}
153 
154 
155     /**
156      * <p>Controls how you are charged for read and write throughput and how you manage
157      * capacity. When switching from pay-per-request to provisioned capacity, initial
158      * provisioned capacity values must be set. The initial provisioned capacity values
159      * are estimated based on the consumed read and write capacity of your table and
160      * global secondary indexes over the past 30 minutes.</p> <ul> <li> <p>
161      * <code>PROVISIONED</code> - We recommend using <code>PROVISIONED</code> for
162      * predictable workloads. <code>PROVISIONED</code> sets the billing mode to <a
163      * href="https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/HowItWorks.ReadWriteCapacityMode.html#HowItWorks.ProvisionedThroughput.Manual">Provisioned
164      * Mode</a>.</p> </li> <li> <p> <code>PAY_PER_REQUEST</code> - We recommend using
165      * <code>PAY_PER_REQUEST</code> for unpredictable workloads.
166      * <code>PAY_PER_REQUEST</code> sets the billing mode to <a
167      * href="https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/HowItWorks.ReadWriteCapacityMode.html#HowItWorks.OnDemand">On-Demand
168      * Mode</a>. </p> </li> </ul>
169      */
GetBillingMode()170     inline const BillingMode& GetBillingMode() const{ return m_billingMode; }
171 
172     /**
173      * <p>Controls how you are charged for read and write throughput and how you manage
174      * capacity. When switching from pay-per-request to provisioned capacity, initial
175      * provisioned capacity values must be set. The initial provisioned capacity values
176      * are estimated based on the consumed read and write capacity of your table and
177      * global secondary indexes over the past 30 minutes.</p> <ul> <li> <p>
178      * <code>PROVISIONED</code> - We recommend using <code>PROVISIONED</code> for
179      * predictable workloads. <code>PROVISIONED</code> sets the billing mode to <a
180      * href="https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/HowItWorks.ReadWriteCapacityMode.html#HowItWorks.ProvisionedThroughput.Manual">Provisioned
181      * Mode</a>.</p> </li> <li> <p> <code>PAY_PER_REQUEST</code> - We recommend using
182      * <code>PAY_PER_REQUEST</code> for unpredictable workloads.
183      * <code>PAY_PER_REQUEST</code> sets the billing mode to <a
184      * href="https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/HowItWorks.ReadWriteCapacityMode.html#HowItWorks.OnDemand">On-Demand
185      * Mode</a>. </p> </li> </ul>
186      */
BillingModeHasBeenSet()187     inline bool BillingModeHasBeenSet() const { return m_billingModeHasBeenSet; }
188 
189     /**
190      * <p>Controls how you are charged for read and write throughput and how you manage
191      * capacity. When switching from pay-per-request to provisioned capacity, initial
192      * provisioned capacity values must be set. The initial provisioned capacity values
193      * are estimated based on the consumed read and write capacity of your table and
194      * global secondary indexes over the past 30 minutes.</p> <ul> <li> <p>
195      * <code>PROVISIONED</code> - We recommend using <code>PROVISIONED</code> for
196      * predictable workloads. <code>PROVISIONED</code> sets the billing mode to <a
197      * href="https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/HowItWorks.ReadWriteCapacityMode.html#HowItWorks.ProvisionedThroughput.Manual">Provisioned
198      * Mode</a>.</p> </li> <li> <p> <code>PAY_PER_REQUEST</code> - We recommend using
199      * <code>PAY_PER_REQUEST</code> for unpredictable workloads.
200      * <code>PAY_PER_REQUEST</code> sets the billing mode to <a
201      * href="https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/HowItWorks.ReadWriteCapacityMode.html#HowItWorks.OnDemand">On-Demand
202      * Mode</a>. </p> </li> </ul>
203      */
SetBillingMode(const BillingMode & value)204     inline void SetBillingMode(const BillingMode& value) { m_billingModeHasBeenSet = true; m_billingMode = value; }
205 
206     /**
207      * <p>Controls how you are charged for read and write throughput and how you manage
208      * capacity. When switching from pay-per-request to provisioned capacity, initial
209      * provisioned capacity values must be set. The initial provisioned capacity values
210      * are estimated based on the consumed read and write capacity of your table and
211      * global secondary indexes over the past 30 minutes.</p> <ul> <li> <p>
212      * <code>PROVISIONED</code> - We recommend using <code>PROVISIONED</code> for
213      * predictable workloads. <code>PROVISIONED</code> sets the billing mode to <a
214      * href="https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/HowItWorks.ReadWriteCapacityMode.html#HowItWorks.ProvisionedThroughput.Manual">Provisioned
215      * Mode</a>.</p> </li> <li> <p> <code>PAY_PER_REQUEST</code> - We recommend using
216      * <code>PAY_PER_REQUEST</code> for unpredictable workloads.
217      * <code>PAY_PER_REQUEST</code> sets the billing mode to <a
218      * href="https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/HowItWorks.ReadWriteCapacityMode.html#HowItWorks.OnDemand">On-Demand
219      * Mode</a>. </p> </li> </ul>
220      */
SetBillingMode(BillingMode && value)221     inline void SetBillingMode(BillingMode&& value) { m_billingModeHasBeenSet = true; m_billingMode = std::move(value); }
222 
223     /**
224      * <p>Controls how you are charged for read and write throughput and how you manage
225      * capacity. When switching from pay-per-request to provisioned capacity, initial
226      * provisioned capacity values must be set. The initial provisioned capacity values
227      * are estimated based on the consumed read and write capacity of your table and
228      * global secondary indexes over the past 30 minutes.</p> <ul> <li> <p>
229      * <code>PROVISIONED</code> - We recommend using <code>PROVISIONED</code> for
230      * predictable workloads. <code>PROVISIONED</code> sets the billing mode to <a
231      * href="https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/HowItWorks.ReadWriteCapacityMode.html#HowItWorks.ProvisionedThroughput.Manual">Provisioned
232      * Mode</a>.</p> </li> <li> <p> <code>PAY_PER_REQUEST</code> - We recommend using
233      * <code>PAY_PER_REQUEST</code> for unpredictable workloads.
234      * <code>PAY_PER_REQUEST</code> sets the billing mode to <a
235      * href="https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/HowItWorks.ReadWriteCapacityMode.html#HowItWorks.OnDemand">On-Demand
236      * Mode</a>. </p> </li> </ul>
237      */
WithBillingMode(const BillingMode & value)238     inline UpdateTableRequest& WithBillingMode(const BillingMode& value) { SetBillingMode(value); return *this;}
239 
240     /**
241      * <p>Controls how you are charged for read and write throughput and how you manage
242      * capacity. When switching from pay-per-request to provisioned capacity, initial
243      * provisioned capacity values must be set. The initial provisioned capacity values
244      * are estimated based on the consumed read and write capacity of your table and
245      * global secondary indexes over the past 30 minutes.</p> <ul> <li> <p>
246      * <code>PROVISIONED</code> - We recommend using <code>PROVISIONED</code> for
247      * predictable workloads. <code>PROVISIONED</code> sets the billing mode to <a
248      * href="https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/HowItWorks.ReadWriteCapacityMode.html#HowItWorks.ProvisionedThroughput.Manual">Provisioned
249      * Mode</a>.</p> </li> <li> <p> <code>PAY_PER_REQUEST</code> - We recommend using
250      * <code>PAY_PER_REQUEST</code> for unpredictable workloads.
251      * <code>PAY_PER_REQUEST</code> sets the billing mode to <a
252      * href="https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/HowItWorks.ReadWriteCapacityMode.html#HowItWorks.OnDemand">On-Demand
253      * Mode</a>. </p> </li> </ul>
254      */
WithBillingMode(BillingMode && value)255     inline UpdateTableRequest& WithBillingMode(BillingMode&& value) { SetBillingMode(std::move(value)); return *this;}
256 
257 
258     /**
259      * <p>The new provisioned throughput settings for the specified table or index.</p>
260      */
GetProvisionedThroughput()261     inline const ProvisionedThroughput& GetProvisionedThroughput() const{ return m_provisionedThroughput; }
262 
263     /**
264      * <p>The new provisioned throughput settings for the specified table or index.</p>
265      */
ProvisionedThroughputHasBeenSet()266     inline bool ProvisionedThroughputHasBeenSet() const { return m_provisionedThroughputHasBeenSet; }
267 
268     /**
269      * <p>The new provisioned throughput settings for the specified table or index.</p>
270      */
SetProvisionedThroughput(const ProvisionedThroughput & value)271     inline void SetProvisionedThroughput(const ProvisionedThroughput& value) { m_provisionedThroughputHasBeenSet = true; m_provisionedThroughput = value; }
272 
273     /**
274      * <p>The new provisioned throughput settings for the specified table or index.</p>
275      */
SetProvisionedThroughput(ProvisionedThroughput && value)276     inline void SetProvisionedThroughput(ProvisionedThroughput&& value) { m_provisionedThroughputHasBeenSet = true; m_provisionedThroughput = std::move(value); }
277 
278     /**
279      * <p>The new provisioned throughput settings for the specified table or index.</p>
280      */
WithProvisionedThroughput(const ProvisionedThroughput & value)281     inline UpdateTableRequest& WithProvisionedThroughput(const ProvisionedThroughput& value) { SetProvisionedThroughput(value); return *this;}
282 
283     /**
284      * <p>The new provisioned throughput settings for the specified table or index.</p>
285      */
WithProvisionedThroughput(ProvisionedThroughput && value)286     inline UpdateTableRequest& WithProvisionedThroughput(ProvisionedThroughput&& value) { SetProvisionedThroughput(std::move(value)); return *this;}
287 
288 
289     /**
290      * <p>An array of one or more global secondary indexes for the table. For each
291      * index in the array, you can request one action:</p> <ul> <li> <p>
292      * <code>Create</code> - add a new global secondary index to the table.</p> </li>
293      * <li> <p> <code>Update</code> - modify the provisioned throughput settings of an
294      * existing global secondary index.</p> </li> <li> <p> <code>Delete</code> - remove
295      * a global secondary index from the table.</p> </li> </ul> <p>You can create or
296      * delete only one global secondary index per <code>UpdateTable</code>
297      * operation.</p> <p>For more information, see <a
298      * href="https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/GSI.OnlineOps.html">Managing
299      * Global Secondary Indexes</a> in the <i>Amazon DynamoDB Developer Guide</i>. </p>
300      */
GetGlobalSecondaryIndexUpdates()301     inline const Aws::Vector<GlobalSecondaryIndexUpdate>& GetGlobalSecondaryIndexUpdates() const{ return m_globalSecondaryIndexUpdates; }
302 
303     /**
304      * <p>An array of one or more global secondary indexes for the table. For each
305      * index in the array, you can request one action:</p> <ul> <li> <p>
306      * <code>Create</code> - add a new global secondary index to the table.</p> </li>
307      * <li> <p> <code>Update</code> - modify the provisioned throughput settings of an
308      * existing global secondary index.</p> </li> <li> <p> <code>Delete</code> - remove
309      * a global secondary index from the table.</p> </li> </ul> <p>You can create or
310      * delete only one global secondary index per <code>UpdateTable</code>
311      * operation.</p> <p>For more information, see <a
312      * href="https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/GSI.OnlineOps.html">Managing
313      * Global Secondary Indexes</a> in the <i>Amazon DynamoDB Developer Guide</i>. </p>
314      */
GlobalSecondaryIndexUpdatesHasBeenSet()315     inline bool GlobalSecondaryIndexUpdatesHasBeenSet() const { return m_globalSecondaryIndexUpdatesHasBeenSet; }
316 
317     /**
318      * <p>An array of one or more global secondary indexes for the table. For each
319      * index in the array, you can request one action:</p> <ul> <li> <p>
320      * <code>Create</code> - add a new global secondary index to the table.</p> </li>
321      * <li> <p> <code>Update</code> - modify the provisioned throughput settings of an
322      * existing global secondary index.</p> </li> <li> <p> <code>Delete</code> - remove
323      * a global secondary index from the table.</p> </li> </ul> <p>You can create or
324      * delete only one global secondary index per <code>UpdateTable</code>
325      * operation.</p> <p>For more information, see <a
326      * href="https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/GSI.OnlineOps.html">Managing
327      * Global Secondary Indexes</a> in the <i>Amazon DynamoDB Developer Guide</i>. </p>
328      */
SetGlobalSecondaryIndexUpdates(const Aws::Vector<GlobalSecondaryIndexUpdate> & value)329     inline void SetGlobalSecondaryIndexUpdates(const Aws::Vector<GlobalSecondaryIndexUpdate>& value) { m_globalSecondaryIndexUpdatesHasBeenSet = true; m_globalSecondaryIndexUpdates = value; }
330 
331     /**
332      * <p>An array of one or more global secondary indexes for the table. For each
333      * index in the array, you can request one action:</p> <ul> <li> <p>
334      * <code>Create</code> - add a new global secondary index to the table.</p> </li>
335      * <li> <p> <code>Update</code> - modify the provisioned throughput settings of an
336      * existing global secondary index.</p> </li> <li> <p> <code>Delete</code> - remove
337      * a global secondary index from the table.</p> </li> </ul> <p>You can create or
338      * delete only one global secondary index per <code>UpdateTable</code>
339      * operation.</p> <p>For more information, see <a
340      * href="https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/GSI.OnlineOps.html">Managing
341      * Global Secondary Indexes</a> in the <i>Amazon DynamoDB Developer Guide</i>. </p>
342      */
SetGlobalSecondaryIndexUpdates(Aws::Vector<GlobalSecondaryIndexUpdate> && value)343     inline void SetGlobalSecondaryIndexUpdates(Aws::Vector<GlobalSecondaryIndexUpdate>&& value) { m_globalSecondaryIndexUpdatesHasBeenSet = true; m_globalSecondaryIndexUpdates = std::move(value); }
344 
345     /**
346      * <p>An array of one or more global secondary indexes for the table. For each
347      * index in the array, you can request one action:</p> <ul> <li> <p>
348      * <code>Create</code> - add a new global secondary index to the table.</p> </li>
349      * <li> <p> <code>Update</code> - modify the provisioned throughput settings of an
350      * existing global secondary index.</p> </li> <li> <p> <code>Delete</code> - remove
351      * a global secondary index from the table.</p> </li> </ul> <p>You can create or
352      * delete only one global secondary index per <code>UpdateTable</code>
353      * operation.</p> <p>For more information, see <a
354      * href="https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/GSI.OnlineOps.html">Managing
355      * Global Secondary Indexes</a> in the <i>Amazon DynamoDB Developer Guide</i>. </p>
356      */
WithGlobalSecondaryIndexUpdates(const Aws::Vector<GlobalSecondaryIndexUpdate> & value)357     inline UpdateTableRequest& WithGlobalSecondaryIndexUpdates(const Aws::Vector<GlobalSecondaryIndexUpdate>& value) { SetGlobalSecondaryIndexUpdates(value); return *this;}
358 
359     /**
360      * <p>An array of one or more global secondary indexes for the table. For each
361      * index in the array, you can request one action:</p> <ul> <li> <p>
362      * <code>Create</code> - add a new global secondary index to the table.</p> </li>
363      * <li> <p> <code>Update</code> - modify the provisioned throughput settings of an
364      * existing global secondary index.</p> </li> <li> <p> <code>Delete</code> - remove
365      * a global secondary index from the table.</p> </li> </ul> <p>You can create or
366      * delete only one global secondary index per <code>UpdateTable</code>
367      * operation.</p> <p>For more information, see <a
368      * href="https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/GSI.OnlineOps.html">Managing
369      * Global Secondary Indexes</a> in the <i>Amazon DynamoDB Developer Guide</i>. </p>
370      */
WithGlobalSecondaryIndexUpdates(Aws::Vector<GlobalSecondaryIndexUpdate> && value)371     inline UpdateTableRequest& WithGlobalSecondaryIndexUpdates(Aws::Vector<GlobalSecondaryIndexUpdate>&& value) { SetGlobalSecondaryIndexUpdates(std::move(value)); return *this;}
372 
373     /**
374      * <p>An array of one or more global secondary indexes for the table. For each
375      * index in the array, you can request one action:</p> <ul> <li> <p>
376      * <code>Create</code> - add a new global secondary index to the table.</p> </li>
377      * <li> <p> <code>Update</code> - modify the provisioned throughput settings of an
378      * existing global secondary index.</p> </li> <li> <p> <code>Delete</code> - remove
379      * a global secondary index from the table.</p> </li> </ul> <p>You can create or
380      * delete only one global secondary index per <code>UpdateTable</code>
381      * operation.</p> <p>For more information, see <a
382      * href="https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/GSI.OnlineOps.html">Managing
383      * Global Secondary Indexes</a> in the <i>Amazon DynamoDB Developer Guide</i>. </p>
384      */
AddGlobalSecondaryIndexUpdates(const GlobalSecondaryIndexUpdate & value)385     inline UpdateTableRequest& AddGlobalSecondaryIndexUpdates(const GlobalSecondaryIndexUpdate& value) { m_globalSecondaryIndexUpdatesHasBeenSet = true; m_globalSecondaryIndexUpdates.push_back(value); return *this; }
386 
387     /**
388      * <p>An array of one or more global secondary indexes for the table. For each
389      * index in the array, you can request one action:</p> <ul> <li> <p>
390      * <code>Create</code> - add a new global secondary index to the table.</p> </li>
391      * <li> <p> <code>Update</code> - modify the provisioned throughput settings of an
392      * existing global secondary index.</p> </li> <li> <p> <code>Delete</code> - remove
393      * a global secondary index from the table.</p> </li> </ul> <p>You can create or
394      * delete only one global secondary index per <code>UpdateTable</code>
395      * operation.</p> <p>For more information, see <a
396      * href="https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/GSI.OnlineOps.html">Managing
397      * Global Secondary Indexes</a> in the <i>Amazon DynamoDB Developer Guide</i>. </p>
398      */
AddGlobalSecondaryIndexUpdates(GlobalSecondaryIndexUpdate && value)399     inline UpdateTableRequest& AddGlobalSecondaryIndexUpdates(GlobalSecondaryIndexUpdate&& value) { m_globalSecondaryIndexUpdatesHasBeenSet = true; m_globalSecondaryIndexUpdates.push_back(std::move(value)); return *this; }
400 
401 
402     /**
403      * <p>Represents the DynamoDB Streams configuration for the table.</p>
404      * <p>You receive a <code>ResourceInUseException</code> if you try to enable a
405      * stream on a table that already has a stream, or if you try to disable a stream
406      * on a table that doesn't have a stream.</p>
407      */
GetStreamSpecification()408     inline const StreamSpecification& GetStreamSpecification() const{ return m_streamSpecification; }
409 
410     /**
411      * <p>Represents the DynamoDB Streams configuration for the table.</p>
412      * <p>You receive a <code>ResourceInUseException</code> if you try to enable a
413      * stream on a table that already has a stream, or if you try to disable a stream
414      * on a table that doesn't have a stream.</p>
415      */
StreamSpecificationHasBeenSet()416     inline bool StreamSpecificationHasBeenSet() const { return m_streamSpecificationHasBeenSet; }
417 
418     /**
419      * <p>Represents the DynamoDB Streams configuration for the table.</p>
420      * <p>You receive a <code>ResourceInUseException</code> if you try to enable a
421      * stream on a table that already has a stream, or if you try to disable a stream
422      * on a table that doesn't have a stream.</p>
423      */
SetStreamSpecification(const StreamSpecification & value)424     inline void SetStreamSpecification(const StreamSpecification& value) { m_streamSpecificationHasBeenSet = true; m_streamSpecification = value; }
425 
426     /**
427      * <p>Represents the DynamoDB Streams configuration for the table.</p>
428      * <p>You receive a <code>ResourceInUseException</code> if you try to enable a
429      * stream on a table that already has a stream, or if you try to disable a stream
430      * on a table that doesn't have a stream.</p>
431      */
SetStreamSpecification(StreamSpecification && value)432     inline void SetStreamSpecification(StreamSpecification&& value) { m_streamSpecificationHasBeenSet = true; m_streamSpecification = std::move(value); }
433 
434     /**
435      * <p>Represents the DynamoDB Streams configuration for the table.</p>
436      * <p>You receive a <code>ResourceInUseException</code> if you try to enable a
437      * stream on a table that already has a stream, or if you try to disable a stream
438      * on a table that doesn't have a stream.</p>
439      */
WithStreamSpecification(const StreamSpecification & value)440     inline UpdateTableRequest& WithStreamSpecification(const StreamSpecification& value) { SetStreamSpecification(value); return *this;}
441 
442     /**
443      * <p>Represents the DynamoDB Streams configuration for the table.</p>
444      * <p>You receive a <code>ResourceInUseException</code> if you try to enable a
445      * stream on a table that already has a stream, or if you try to disable a stream
446      * on a table that doesn't have a stream.</p>
447      */
WithStreamSpecification(StreamSpecification && value)448     inline UpdateTableRequest& WithStreamSpecification(StreamSpecification&& value) { SetStreamSpecification(std::move(value)); return *this;}
449 
450 
451     /**
452      * <p>The new server-side encryption settings for the specified table.</p>
453      */
GetSSESpecification()454     inline const SSESpecification& GetSSESpecification() const{ return m_sSESpecification; }
455 
456     /**
457      * <p>The new server-side encryption settings for the specified table.</p>
458      */
SSESpecificationHasBeenSet()459     inline bool SSESpecificationHasBeenSet() const { return m_sSESpecificationHasBeenSet; }
460 
461     /**
462      * <p>The new server-side encryption settings for the specified table.</p>
463      */
SetSSESpecification(const SSESpecification & value)464     inline void SetSSESpecification(const SSESpecification& value) { m_sSESpecificationHasBeenSet = true; m_sSESpecification = value; }
465 
466     /**
467      * <p>The new server-side encryption settings for the specified table.</p>
468      */
SetSSESpecification(SSESpecification && value)469     inline void SetSSESpecification(SSESpecification&& value) { m_sSESpecificationHasBeenSet = true; m_sSESpecification = std::move(value); }
470 
471     /**
472      * <p>The new server-side encryption settings for the specified table.</p>
473      */
WithSSESpecification(const SSESpecification & value)474     inline UpdateTableRequest& WithSSESpecification(const SSESpecification& value) { SetSSESpecification(value); return *this;}
475 
476     /**
477      * <p>The new server-side encryption settings for the specified table.</p>
478      */
WithSSESpecification(SSESpecification && value)479     inline UpdateTableRequest& WithSSESpecification(SSESpecification&& value) { SetSSESpecification(std::move(value)); return *this;}
480 
481 
482     /**
483      * <p>A list of replica update actions (create, delete, or update) for the
484      * table.</p>  <p>This property only applies to <a
485      * href="https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/globaltables.V2.html">Version
486      * 2019.11.21</a> of global tables.</p>
487      */
GetReplicaUpdates()488     inline const Aws::Vector<ReplicationGroupUpdate>& GetReplicaUpdates() const{ return m_replicaUpdates; }
489 
490     /**
491      * <p>A list of replica update actions (create, delete, or update) for the
492      * table.</p>  <p>This property only applies to <a
493      * href="https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/globaltables.V2.html">Version
494      * 2019.11.21</a> of global tables.</p>
495      */
ReplicaUpdatesHasBeenSet()496     inline bool ReplicaUpdatesHasBeenSet() const { return m_replicaUpdatesHasBeenSet; }
497 
498     /**
499      * <p>A list of replica update actions (create, delete, or update) for the
500      * table.</p>  <p>This property only applies to <a
501      * href="https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/globaltables.V2.html">Version
502      * 2019.11.21</a> of global tables.</p>
503      */
SetReplicaUpdates(const Aws::Vector<ReplicationGroupUpdate> & value)504     inline void SetReplicaUpdates(const Aws::Vector<ReplicationGroupUpdate>& value) { m_replicaUpdatesHasBeenSet = true; m_replicaUpdates = value; }
505 
506     /**
507      * <p>A list of replica update actions (create, delete, or update) for the
508      * table.</p>  <p>This property only applies to <a
509      * href="https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/globaltables.V2.html">Version
510      * 2019.11.21</a> of global tables.</p>
511      */
SetReplicaUpdates(Aws::Vector<ReplicationGroupUpdate> && value)512     inline void SetReplicaUpdates(Aws::Vector<ReplicationGroupUpdate>&& value) { m_replicaUpdatesHasBeenSet = true; m_replicaUpdates = std::move(value); }
513 
514     /**
515      * <p>A list of replica update actions (create, delete, or update) for the
516      * table.</p>  <p>This property only applies to <a
517      * href="https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/globaltables.V2.html">Version
518      * 2019.11.21</a> of global tables.</p>
519      */
WithReplicaUpdates(const Aws::Vector<ReplicationGroupUpdate> & value)520     inline UpdateTableRequest& WithReplicaUpdates(const Aws::Vector<ReplicationGroupUpdate>& value) { SetReplicaUpdates(value); return *this;}
521 
522     /**
523      * <p>A list of replica update actions (create, delete, or update) for the
524      * table.</p>  <p>This property only applies to <a
525      * href="https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/globaltables.V2.html">Version
526      * 2019.11.21</a> of global tables.</p>
527      */
WithReplicaUpdates(Aws::Vector<ReplicationGroupUpdate> && value)528     inline UpdateTableRequest& WithReplicaUpdates(Aws::Vector<ReplicationGroupUpdate>&& value) { SetReplicaUpdates(std::move(value)); return *this;}
529 
530     /**
531      * <p>A list of replica update actions (create, delete, or update) for the
532      * table.</p>  <p>This property only applies to <a
533      * href="https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/globaltables.V2.html">Version
534      * 2019.11.21</a> of global tables.</p>
535      */
AddReplicaUpdates(const ReplicationGroupUpdate & value)536     inline UpdateTableRequest& AddReplicaUpdates(const ReplicationGroupUpdate& value) { m_replicaUpdatesHasBeenSet = true; m_replicaUpdates.push_back(value); return *this; }
537 
538     /**
539      * <p>A list of replica update actions (create, delete, or update) for the
540      * table.</p>  <p>This property only applies to <a
541      * href="https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/globaltables.V2.html">Version
542      * 2019.11.21</a> of global tables.</p>
543      */
AddReplicaUpdates(ReplicationGroupUpdate && value)544     inline UpdateTableRequest& AddReplicaUpdates(ReplicationGroupUpdate&& value) { m_replicaUpdatesHasBeenSet = true; m_replicaUpdates.push_back(std::move(value)); return *this; }
545 
546   private:
547 
548     Aws::Vector<AttributeDefinition> m_attributeDefinitions;
549     bool m_attributeDefinitionsHasBeenSet;
550 
551     Aws::String m_tableName;
552     bool m_tableNameHasBeenSet;
553 
554     BillingMode m_billingMode;
555     bool m_billingModeHasBeenSet;
556 
557     ProvisionedThroughput m_provisionedThroughput;
558     bool m_provisionedThroughputHasBeenSet;
559 
560     Aws::Vector<GlobalSecondaryIndexUpdate> m_globalSecondaryIndexUpdates;
561     bool m_globalSecondaryIndexUpdatesHasBeenSet;
562 
563     StreamSpecification m_streamSpecification;
564     bool m_streamSpecificationHasBeenSet;
565 
566     SSESpecification m_sSESpecification;
567     bool m_sSESpecificationHasBeenSet;
568 
569     Aws::Vector<ReplicationGroupUpdate> m_replicaUpdates;
570     bool m_replicaUpdatesHasBeenSet;
571   };
572 
573 } // namespace Model
574 } // namespace DynamoDB
575 } // namespace Aws
576