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/servicecatalog/ServiceCatalog_EXPORTS.h>
8 #include <aws/servicecatalog/ServiceCatalogRequest.h>
9 #include <aws/core/utils/memory/stl/AWSString.h>
10 #include <utility>
11 #include <aws/core/utils/UUID.h>
12 
13 namespace Aws
14 {
15 namespace ServiceCatalog
16 {
17 namespace Model
18 {
19 
20   /**
21    */
22   class AWS_SERVICECATALOG_API CreateConstraintRequest : public ServiceCatalogRequest
23   {
24   public:
25     CreateConstraintRequest();
26 
27     // Service request name is the Operation name which will send this request out,
28     // each operation should has unique request name, so that we can get operation's name from this request.
29     // Note: this is not true for response, multiple operations may have the same response name,
30     // so we can not get operation's name from response.
GetServiceRequestName()31     inline virtual const char* GetServiceRequestName() const override { return "CreateConstraint"; }
32 
33     Aws::String SerializePayload() const override;
34 
35     Aws::Http::HeaderValueCollection GetRequestSpecificHeaders() const override;
36 
37 
38     /**
39      * <p>The language code.</p> <ul> <li> <p> <code>en</code> - English (default)</p>
40      * </li> <li> <p> <code>jp</code> - Japanese</p> </li> <li> <p> <code>zh</code> -
41      * Chinese</p> </li> </ul>
42      */
GetAcceptLanguage()43     inline const Aws::String& GetAcceptLanguage() const{ return m_acceptLanguage; }
44 
45     /**
46      * <p>The language code.</p> <ul> <li> <p> <code>en</code> - English (default)</p>
47      * </li> <li> <p> <code>jp</code> - Japanese</p> </li> <li> <p> <code>zh</code> -
48      * Chinese</p> </li> </ul>
49      */
AcceptLanguageHasBeenSet()50     inline bool AcceptLanguageHasBeenSet() const { return m_acceptLanguageHasBeenSet; }
51 
52     /**
53      * <p>The language code.</p> <ul> <li> <p> <code>en</code> - English (default)</p>
54      * </li> <li> <p> <code>jp</code> - Japanese</p> </li> <li> <p> <code>zh</code> -
55      * Chinese</p> </li> </ul>
56      */
SetAcceptLanguage(const Aws::String & value)57     inline void SetAcceptLanguage(const Aws::String& value) { m_acceptLanguageHasBeenSet = true; m_acceptLanguage = value; }
58 
59     /**
60      * <p>The language code.</p> <ul> <li> <p> <code>en</code> - English (default)</p>
61      * </li> <li> <p> <code>jp</code> - Japanese</p> </li> <li> <p> <code>zh</code> -
62      * Chinese</p> </li> </ul>
63      */
SetAcceptLanguage(Aws::String && value)64     inline void SetAcceptLanguage(Aws::String&& value) { m_acceptLanguageHasBeenSet = true; m_acceptLanguage = std::move(value); }
65 
66     /**
67      * <p>The language code.</p> <ul> <li> <p> <code>en</code> - English (default)</p>
68      * </li> <li> <p> <code>jp</code> - Japanese</p> </li> <li> <p> <code>zh</code> -
69      * Chinese</p> </li> </ul>
70      */
SetAcceptLanguage(const char * value)71     inline void SetAcceptLanguage(const char* value) { m_acceptLanguageHasBeenSet = true; m_acceptLanguage.assign(value); }
72 
73     /**
74      * <p>The language code.</p> <ul> <li> <p> <code>en</code> - English (default)</p>
75      * </li> <li> <p> <code>jp</code> - Japanese</p> </li> <li> <p> <code>zh</code> -
76      * Chinese</p> </li> </ul>
77      */
WithAcceptLanguage(const Aws::String & value)78     inline CreateConstraintRequest& WithAcceptLanguage(const Aws::String& value) { SetAcceptLanguage(value); return *this;}
79 
80     /**
81      * <p>The language code.</p> <ul> <li> <p> <code>en</code> - English (default)</p>
82      * </li> <li> <p> <code>jp</code> - Japanese</p> </li> <li> <p> <code>zh</code> -
83      * Chinese</p> </li> </ul>
84      */
WithAcceptLanguage(Aws::String && value)85     inline CreateConstraintRequest& WithAcceptLanguage(Aws::String&& value) { SetAcceptLanguage(std::move(value)); return *this;}
86 
87     /**
88      * <p>The language code.</p> <ul> <li> <p> <code>en</code> - English (default)</p>
89      * </li> <li> <p> <code>jp</code> - Japanese</p> </li> <li> <p> <code>zh</code> -
90      * Chinese</p> </li> </ul>
91      */
WithAcceptLanguage(const char * value)92     inline CreateConstraintRequest& WithAcceptLanguage(const char* value) { SetAcceptLanguage(value); return *this;}
93 
94 
95     /**
96      * <p>The portfolio identifier.</p>
97      */
GetPortfolioId()98     inline const Aws::String& GetPortfolioId() const{ return m_portfolioId; }
99 
100     /**
101      * <p>The portfolio identifier.</p>
102      */
PortfolioIdHasBeenSet()103     inline bool PortfolioIdHasBeenSet() const { return m_portfolioIdHasBeenSet; }
104 
105     /**
106      * <p>The portfolio identifier.</p>
107      */
SetPortfolioId(const Aws::String & value)108     inline void SetPortfolioId(const Aws::String& value) { m_portfolioIdHasBeenSet = true; m_portfolioId = value; }
109 
110     /**
111      * <p>The portfolio identifier.</p>
112      */
SetPortfolioId(Aws::String && value)113     inline void SetPortfolioId(Aws::String&& value) { m_portfolioIdHasBeenSet = true; m_portfolioId = std::move(value); }
114 
115     /**
116      * <p>The portfolio identifier.</p>
117      */
SetPortfolioId(const char * value)118     inline void SetPortfolioId(const char* value) { m_portfolioIdHasBeenSet = true; m_portfolioId.assign(value); }
119 
120     /**
121      * <p>The portfolio identifier.</p>
122      */
WithPortfolioId(const Aws::String & value)123     inline CreateConstraintRequest& WithPortfolioId(const Aws::String& value) { SetPortfolioId(value); return *this;}
124 
125     /**
126      * <p>The portfolio identifier.</p>
127      */
WithPortfolioId(Aws::String && value)128     inline CreateConstraintRequest& WithPortfolioId(Aws::String&& value) { SetPortfolioId(std::move(value)); return *this;}
129 
130     /**
131      * <p>The portfolio identifier.</p>
132      */
WithPortfolioId(const char * value)133     inline CreateConstraintRequest& WithPortfolioId(const char* value) { SetPortfolioId(value); return *this;}
134 
135 
136     /**
137      * <p>The product identifier.</p>
138      */
GetProductId()139     inline const Aws::String& GetProductId() const{ return m_productId; }
140 
141     /**
142      * <p>The product identifier.</p>
143      */
ProductIdHasBeenSet()144     inline bool ProductIdHasBeenSet() const { return m_productIdHasBeenSet; }
145 
146     /**
147      * <p>The product identifier.</p>
148      */
SetProductId(const Aws::String & value)149     inline void SetProductId(const Aws::String& value) { m_productIdHasBeenSet = true; m_productId = value; }
150 
151     /**
152      * <p>The product identifier.</p>
153      */
SetProductId(Aws::String && value)154     inline void SetProductId(Aws::String&& value) { m_productIdHasBeenSet = true; m_productId = std::move(value); }
155 
156     /**
157      * <p>The product identifier.</p>
158      */
SetProductId(const char * value)159     inline void SetProductId(const char* value) { m_productIdHasBeenSet = true; m_productId.assign(value); }
160 
161     /**
162      * <p>The product identifier.</p>
163      */
WithProductId(const Aws::String & value)164     inline CreateConstraintRequest& WithProductId(const Aws::String& value) { SetProductId(value); return *this;}
165 
166     /**
167      * <p>The product identifier.</p>
168      */
WithProductId(Aws::String && value)169     inline CreateConstraintRequest& WithProductId(Aws::String&& value) { SetProductId(std::move(value)); return *this;}
170 
171     /**
172      * <p>The product identifier.</p>
173      */
WithProductId(const char * value)174     inline CreateConstraintRequest& WithProductId(const char* value) { SetProductId(value); return *this;}
175 
176 
177     /**
178      * <p>The constraint parameters, in JSON format. The syntax depends on the
179      * constraint type as follows:</p> <dl> <dt>LAUNCH</dt> <dd> <p>You are required to
180      * specify either the <code>RoleArn</code> or the <code>LocalRoleName</code> but
181      * can't use both.</p> <p>Specify the <code>RoleArn</code> property as follows:</p>
182      * <p> <code>{"RoleArn" : "arn:aws:iam::123456789012:role/LaunchRole"}</code> </p>
183      * <p>Specify the <code>LocalRoleName</code> property as follows:</p> <p>
184      * <code>{"LocalRoleName": "SCBasicLaunchRole"}</code> </p> <p>If you specify the
185      * <code>LocalRoleName</code> property, when an account uses the launch constraint,
186      * the IAM role with that name in the account will be used. This allows launch-role
187      * constraints to be account-agnostic so the administrator can create fewer
188      * resources per shared account.</p>  <p>The given role name must exist in
189      * the account used to create the launch constraint and the account of the user who
190      * launches a product with this launch constraint.</p>  <p>You cannot have
191      * both a <code>LAUNCH</code> and a <code>STACKSET</code> constraint.</p> <p>You
192      * also cannot have more than one <code>LAUNCH</code> constraint on a product and
193      * portfolio.</p> </dd> <dt>NOTIFICATION</dt> <dd> <p>Specify the
194      * <code>NotificationArns</code> property as follows:</p> <p>
195      * <code>{"NotificationArns" : ["arn:aws:sns:us-east-1:123456789012:Topic"]}</code>
196      * </p> </dd> <dt>RESOURCE_UPDATE</dt> <dd> <p>Specify the
197      * <code>TagUpdatesOnProvisionedProduct</code> property as follows:</p> <p>
198      * <code>{"Version":"2.0","Properties":{"TagUpdateOnProvisionedProduct":"String"}}</code>
199      * </p> <p>The <code>TagUpdatesOnProvisionedProduct</code> property accepts a
200      * string value of <code>ALLOWED</code> or <code>NOT_ALLOWED</code>.</p> </dd>
201      * <dt>STACKSET</dt> <dd> <p>Specify the <code>Parameters</code> property as
202      * follows:</p> <p> <code>{"Version": "String", "Properties": {"AccountList": [
203      * "String" ], "RegionList": [ "String" ], "AdminRole": "String", "ExecutionRole":
204      * "String"}}</code> </p> <p>You cannot have both a <code>LAUNCH</code> and a
205      * <code>STACKSET</code> constraint.</p> <p>You also cannot have more than one
206      * <code>STACKSET</code> constraint on a product and portfolio.</p> <p>Products
207      * with a <code>STACKSET</code> constraint will launch an AWS CloudFormation stack
208      * set.</p> </dd> <dt>TEMPLATE</dt> <dd> <p>Specify the <code>Rules</code>
209      * property. For more information, see <a
210      * href="http://docs.aws.amazon.com/servicecatalog/latest/adminguide/reference-template_constraint_rules.html">Template
211      * Constraint Rules</a>.</p> </dd> </dl>
212      */
GetParameters()213     inline const Aws::String& GetParameters() const{ return m_parameters; }
214 
215     /**
216      * <p>The constraint parameters, in JSON format. The syntax depends on the
217      * constraint type as follows:</p> <dl> <dt>LAUNCH</dt> <dd> <p>You are required to
218      * specify either the <code>RoleArn</code> or the <code>LocalRoleName</code> but
219      * can't use both.</p> <p>Specify the <code>RoleArn</code> property as follows:</p>
220      * <p> <code>{"RoleArn" : "arn:aws:iam::123456789012:role/LaunchRole"}</code> </p>
221      * <p>Specify the <code>LocalRoleName</code> property as follows:</p> <p>
222      * <code>{"LocalRoleName": "SCBasicLaunchRole"}</code> </p> <p>If you specify the
223      * <code>LocalRoleName</code> property, when an account uses the launch constraint,
224      * the IAM role with that name in the account will be used. This allows launch-role
225      * constraints to be account-agnostic so the administrator can create fewer
226      * resources per shared account.</p>  <p>The given role name must exist in
227      * the account used to create the launch constraint and the account of the user who
228      * launches a product with this launch constraint.</p>  <p>You cannot have
229      * both a <code>LAUNCH</code> and a <code>STACKSET</code> constraint.</p> <p>You
230      * also cannot have more than one <code>LAUNCH</code> constraint on a product and
231      * portfolio.</p> </dd> <dt>NOTIFICATION</dt> <dd> <p>Specify the
232      * <code>NotificationArns</code> property as follows:</p> <p>
233      * <code>{"NotificationArns" : ["arn:aws:sns:us-east-1:123456789012:Topic"]}</code>
234      * </p> </dd> <dt>RESOURCE_UPDATE</dt> <dd> <p>Specify the
235      * <code>TagUpdatesOnProvisionedProduct</code> property as follows:</p> <p>
236      * <code>{"Version":"2.0","Properties":{"TagUpdateOnProvisionedProduct":"String"}}</code>
237      * </p> <p>The <code>TagUpdatesOnProvisionedProduct</code> property accepts a
238      * string value of <code>ALLOWED</code> or <code>NOT_ALLOWED</code>.</p> </dd>
239      * <dt>STACKSET</dt> <dd> <p>Specify the <code>Parameters</code> property as
240      * follows:</p> <p> <code>{"Version": "String", "Properties": {"AccountList": [
241      * "String" ], "RegionList": [ "String" ], "AdminRole": "String", "ExecutionRole":
242      * "String"}}</code> </p> <p>You cannot have both a <code>LAUNCH</code> and a
243      * <code>STACKSET</code> constraint.</p> <p>You also cannot have more than one
244      * <code>STACKSET</code> constraint on a product and portfolio.</p> <p>Products
245      * with a <code>STACKSET</code> constraint will launch an AWS CloudFormation stack
246      * set.</p> </dd> <dt>TEMPLATE</dt> <dd> <p>Specify the <code>Rules</code>
247      * property. For more information, see <a
248      * href="http://docs.aws.amazon.com/servicecatalog/latest/adminguide/reference-template_constraint_rules.html">Template
249      * Constraint Rules</a>.</p> </dd> </dl>
250      */
ParametersHasBeenSet()251     inline bool ParametersHasBeenSet() const { return m_parametersHasBeenSet; }
252 
253     /**
254      * <p>The constraint parameters, in JSON format. The syntax depends on the
255      * constraint type as follows:</p> <dl> <dt>LAUNCH</dt> <dd> <p>You are required to
256      * specify either the <code>RoleArn</code> or the <code>LocalRoleName</code> but
257      * can't use both.</p> <p>Specify the <code>RoleArn</code> property as follows:</p>
258      * <p> <code>{"RoleArn" : "arn:aws:iam::123456789012:role/LaunchRole"}</code> </p>
259      * <p>Specify the <code>LocalRoleName</code> property as follows:</p> <p>
260      * <code>{"LocalRoleName": "SCBasicLaunchRole"}</code> </p> <p>If you specify the
261      * <code>LocalRoleName</code> property, when an account uses the launch constraint,
262      * the IAM role with that name in the account will be used. This allows launch-role
263      * constraints to be account-agnostic so the administrator can create fewer
264      * resources per shared account.</p>  <p>The given role name must exist in
265      * the account used to create the launch constraint and the account of the user who
266      * launches a product with this launch constraint.</p>  <p>You cannot have
267      * both a <code>LAUNCH</code> and a <code>STACKSET</code> constraint.</p> <p>You
268      * also cannot have more than one <code>LAUNCH</code> constraint on a product and
269      * portfolio.</p> </dd> <dt>NOTIFICATION</dt> <dd> <p>Specify the
270      * <code>NotificationArns</code> property as follows:</p> <p>
271      * <code>{"NotificationArns" : ["arn:aws:sns:us-east-1:123456789012:Topic"]}</code>
272      * </p> </dd> <dt>RESOURCE_UPDATE</dt> <dd> <p>Specify the
273      * <code>TagUpdatesOnProvisionedProduct</code> property as follows:</p> <p>
274      * <code>{"Version":"2.0","Properties":{"TagUpdateOnProvisionedProduct":"String"}}</code>
275      * </p> <p>The <code>TagUpdatesOnProvisionedProduct</code> property accepts a
276      * string value of <code>ALLOWED</code> or <code>NOT_ALLOWED</code>.</p> </dd>
277      * <dt>STACKSET</dt> <dd> <p>Specify the <code>Parameters</code> property as
278      * follows:</p> <p> <code>{"Version": "String", "Properties": {"AccountList": [
279      * "String" ], "RegionList": [ "String" ], "AdminRole": "String", "ExecutionRole":
280      * "String"}}</code> </p> <p>You cannot have both a <code>LAUNCH</code> and a
281      * <code>STACKSET</code> constraint.</p> <p>You also cannot have more than one
282      * <code>STACKSET</code> constraint on a product and portfolio.</p> <p>Products
283      * with a <code>STACKSET</code> constraint will launch an AWS CloudFormation stack
284      * set.</p> </dd> <dt>TEMPLATE</dt> <dd> <p>Specify the <code>Rules</code>
285      * property. For more information, see <a
286      * href="http://docs.aws.amazon.com/servicecatalog/latest/adminguide/reference-template_constraint_rules.html">Template
287      * Constraint Rules</a>.</p> </dd> </dl>
288      */
SetParameters(const Aws::String & value)289     inline void SetParameters(const Aws::String& value) { m_parametersHasBeenSet = true; m_parameters = value; }
290 
291     /**
292      * <p>The constraint parameters, in JSON format. The syntax depends on the
293      * constraint type as follows:</p> <dl> <dt>LAUNCH</dt> <dd> <p>You are required to
294      * specify either the <code>RoleArn</code> or the <code>LocalRoleName</code> but
295      * can't use both.</p> <p>Specify the <code>RoleArn</code> property as follows:</p>
296      * <p> <code>{"RoleArn" : "arn:aws:iam::123456789012:role/LaunchRole"}</code> </p>
297      * <p>Specify the <code>LocalRoleName</code> property as follows:</p> <p>
298      * <code>{"LocalRoleName": "SCBasicLaunchRole"}</code> </p> <p>If you specify the
299      * <code>LocalRoleName</code> property, when an account uses the launch constraint,
300      * the IAM role with that name in the account will be used. This allows launch-role
301      * constraints to be account-agnostic so the administrator can create fewer
302      * resources per shared account.</p>  <p>The given role name must exist in
303      * the account used to create the launch constraint and the account of the user who
304      * launches a product with this launch constraint.</p>  <p>You cannot have
305      * both a <code>LAUNCH</code> and a <code>STACKSET</code> constraint.</p> <p>You
306      * also cannot have more than one <code>LAUNCH</code> constraint on a product and
307      * portfolio.</p> </dd> <dt>NOTIFICATION</dt> <dd> <p>Specify the
308      * <code>NotificationArns</code> property as follows:</p> <p>
309      * <code>{"NotificationArns" : ["arn:aws:sns:us-east-1:123456789012:Topic"]}</code>
310      * </p> </dd> <dt>RESOURCE_UPDATE</dt> <dd> <p>Specify the
311      * <code>TagUpdatesOnProvisionedProduct</code> property as follows:</p> <p>
312      * <code>{"Version":"2.0","Properties":{"TagUpdateOnProvisionedProduct":"String"}}</code>
313      * </p> <p>The <code>TagUpdatesOnProvisionedProduct</code> property accepts a
314      * string value of <code>ALLOWED</code> or <code>NOT_ALLOWED</code>.</p> </dd>
315      * <dt>STACKSET</dt> <dd> <p>Specify the <code>Parameters</code> property as
316      * follows:</p> <p> <code>{"Version": "String", "Properties": {"AccountList": [
317      * "String" ], "RegionList": [ "String" ], "AdminRole": "String", "ExecutionRole":
318      * "String"}}</code> </p> <p>You cannot have both a <code>LAUNCH</code> and a
319      * <code>STACKSET</code> constraint.</p> <p>You also cannot have more than one
320      * <code>STACKSET</code> constraint on a product and portfolio.</p> <p>Products
321      * with a <code>STACKSET</code> constraint will launch an AWS CloudFormation stack
322      * set.</p> </dd> <dt>TEMPLATE</dt> <dd> <p>Specify the <code>Rules</code>
323      * property. For more information, see <a
324      * href="http://docs.aws.amazon.com/servicecatalog/latest/adminguide/reference-template_constraint_rules.html">Template
325      * Constraint Rules</a>.</p> </dd> </dl>
326      */
SetParameters(Aws::String && value)327     inline void SetParameters(Aws::String&& value) { m_parametersHasBeenSet = true; m_parameters = std::move(value); }
328 
329     /**
330      * <p>The constraint parameters, in JSON format. The syntax depends on the
331      * constraint type as follows:</p> <dl> <dt>LAUNCH</dt> <dd> <p>You are required to
332      * specify either the <code>RoleArn</code> or the <code>LocalRoleName</code> but
333      * can't use both.</p> <p>Specify the <code>RoleArn</code> property as follows:</p>
334      * <p> <code>{"RoleArn" : "arn:aws:iam::123456789012:role/LaunchRole"}</code> </p>
335      * <p>Specify the <code>LocalRoleName</code> property as follows:</p> <p>
336      * <code>{"LocalRoleName": "SCBasicLaunchRole"}</code> </p> <p>If you specify the
337      * <code>LocalRoleName</code> property, when an account uses the launch constraint,
338      * the IAM role with that name in the account will be used. This allows launch-role
339      * constraints to be account-agnostic so the administrator can create fewer
340      * resources per shared account.</p>  <p>The given role name must exist in
341      * the account used to create the launch constraint and the account of the user who
342      * launches a product with this launch constraint.</p>  <p>You cannot have
343      * both a <code>LAUNCH</code> and a <code>STACKSET</code> constraint.</p> <p>You
344      * also cannot have more than one <code>LAUNCH</code> constraint on a product and
345      * portfolio.</p> </dd> <dt>NOTIFICATION</dt> <dd> <p>Specify the
346      * <code>NotificationArns</code> property as follows:</p> <p>
347      * <code>{"NotificationArns" : ["arn:aws:sns:us-east-1:123456789012:Topic"]}</code>
348      * </p> </dd> <dt>RESOURCE_UPDATE</dt> <dd> <p>Specify the
349      * <code>TagUpdatesOnProvisionedProduct</code> property as follows:</p> <p>
350      * <code>{"Version":"2.0","Properties":{"TagUpdateOnProvisionedProduct":"String"}}</code>
351      * </p> <p>The <code>TagUpdatesOnProvisionedProduct</code> property accepts a
352      * string value of <code>ALLOWED</code> or <code>NOT_ALLOWED</code>.</p> </dd>
353      * <dt>STACKSET</dt> <dd> <p>Specify the <code>Parameters</code> property as
354      * follows:</p> <p> <code>{"Version": "String", "Properties": {"AccountList": [
355      * "String" ], "RegionList": [ "String" ], "AdminRole": "String", "ExecutionRole":
356      * "String"}}</code> </p> <p>You cannot have both a <code>LAUNCH</code> and a
357      * <code>STACKSET</code> constraint.</p> <p>You also cannot have more than one
358      * <code>STACKSET</code> constraint on a product and portfolio.</p> <p>Products
359      * with a <code>STACKSET</code> constraint will launch an AWS CloudFormation stack
360      * set.</p> </dd> <dt>TEMPLATE</dt> <dd> <p>Specify the <code>Rules</code>
361      * property. For more information, see <a
362      * href="http://docs.aws.amazon.com/servicecatalog/latest/adminguide/reference-template_constraint_rules.html">Template
363      * Constraint Rules</a>.</p> </dd> </dl>
364      */
SetParameters(const char * value)365     inline void SetParameters(const char* value) { m_parametersHasBeenSet = true; m_parameters.assign(value); }
366 
367     /**
368      * <p>The constraint parameters, in JSON format. The syntax depends on the
369      * constraint type as follows:</p> <dl> <dt>LAUNCH</dt> <dd> <p>You are required to
370      * specify either the <code>RoleArn</code> or the <code>LocalRoleName</code> but
371      * can't use both.</p> <p>Specify the <code>RoleArn</code> property as follows:</p>
372      * <p> <code>{"RoleArn" : "arn:aws:iam::123456789012:role/LaunchRole"}</code> </p>
373      * <p>Specify the <code>LocalRoleName</code> property as follows:</p> <p>
374      * <code>{"LocalRoleName": "SCBasicLaunchRole"}</code> </p> <p>If you specify the
375      * <code>LocalRoleName</code> property, when an account uses the launch constraint,
376      * the IAM role with that name in the account will be used. This allows launch-role
377      * constraints to be account-agnostic so the administrator can create fewer
378      * resources per shared account.</p>  <p>The given role name must exist in
379      * the account used to create the launch constraint and the account of the user who
380      * launches a product with this launch constraint.</p>  <p>You cannot have
381      * both a <code>LAUNCH</code> and a <code>STACKSET</code> constraint.</p> <p>You
382      * also cannot have more than one <code>LAUNCH</code> constraint on a product and
383      * portfolio.</p> </dd> <dt>NOTIFICATION</dt> <dd> <p>Specify the
384      * <code>NotificationArns</code> property as follows:</p> <p>
385      * <code>{"NotificationArns" : ["arn:aws:sns:us-east-1:123456789012:Topic"]}</code>
386      * </p> </dd> <dt>RESOURCE_UPDATE</dt> <dd> <p>Specify the
387      * <code>TagUpdatesOnProvisionedProduct</code> property as follows:</p> <p>
388      * <code>{"Version":"2.0","Properties":{"TagUpdateOnProvisionedProduct":"String"}}</code>
389      * </p> <p>The <code>TagUpdatesOnProvisionedProduct</code> property accepts a
390      * string value of <code>ALLOWED</code> or <code>NOT_ALLOWED</code>.</p> </dd>
391      * <dt>STACKSET</dt> <dd> <p>Specify the <code>Parameters</code> property as
392      * follows:</p> <p> <code>{"Version": "String", "Properties": {"AccountList": [
393      * "String" ], "RegionList": [ "String" ], "AdminRole": "String", "ExecutionRole":
394      * "String"}}</code> </p> <p>You cannot have both a <code>LAUNCH</code> and a
395      * <code>STACKSET</code> constraint.</p> <p>You also cannot have more than one
396      * <code>STACKSET</code> constraint on a product and portfolio.</p> <p>Products
397      * with a <code>STACKSET</code> constraint will launch an AWS CloudFormation stack
398      * set.</p> </dd> <dt>TEMPLATE</dt> <dd> <p>Specify the <code>Rules</code>
399      * property. For more information, see <a
400      * href="http://docs.aws.amazon.com/servicecatalog/latest/adminguide/reference-template_constraint_rules.html">Template
401      * Constraint Rules</a>.</p> </dd> </dl>
402      */
WithParameters(const Aws::String & value)403     inline CreateConstraintRequest& WithParameters(const Aws::String& value) { SetParameters(value); return *this;}
404 
405     /**
406      * <p>The constraint parameters, in JSON format. The syntax depends on the
407      * constraint type as follows:</p> <dl> <dt>LAUNCH</dt> <dd> <p>You are required to
408      * specify either the <code>RoleArn</code> or the <code>LocalRoleName</code> but
409      * can't use both.</p> <p>Specify the <code>RoleArn</code> property as follows:</p>
410      * <p> <code>{"RoleArn" : "arn:aws:iam::123456789012:role/LaunchRole"}</code> </p>
411      * <p>Specify the <code>LocalRoleName</code> property as follows:</p> <p>
412      * <code>{"LocalRoleName": "SCBasicLaunchRole"}</code> </p> <p>If you specify the
413      * <code>LocalRoleName</code> property, when an account uses the launch constraint,
414      * the IAM role with that name in the account will be used. This allows launch-role
415      * constraints to be account-agnostic so the administrator can create fewer
416      * resources per shared account.</p>  <p>The given role name must exist in
417      * the account used to create the launch constraint and the account of the user who
418      * launches a product with this launch constraint.</p>  <p>You cannot have
419      * both a <code>LAUNCH</code> and a <code>STACKSET</code> constraint.</p> <p>You
420      * also cannot have more than one <code>LAUNCH</code> constraint on a product and
421      * portfolio.</p> </dd> <dt>NOTIFICATION</dt> <dd> <p>Specify the
422      * <code>NotificationArns</code> property as follows:</p> <p>
423      * <code>{"NotificationArns" : ["arn:aws:sns:us-east-1:123456789012:Topic"]}</code>
424      * </p> </dd> <dt>RESOURCE_UPDATE</dt> <dd> <p>Specify the
425      * <code>TagUpdatesOnProvisionedProduct</code> property as follows:</p> <p>
426      * <code>{"Version":"2.0","Properties":{"TagUpdateOnProvisionedProduct":"String"}}</code>
427      * </p> <p>The <code>TagUpdatesOnProvisionedProduct</code> property accepts a
428      * string value of <code>ALLOWED</code> or <code>NOT_ALLOWED</code>.</p> </dd>
429      * <dt>STACKSET</dt> <dd> <p>Specify the <code>Parameters</code> property as
430      * follows:</p> <p> <code>{"Version": "String", "Properties": {"AccountList": [
431      * "String" ], "RegionList": [ "String" ], "AdminRole": "String", "ExecutionRole":
432      * "String"}}</code> </p> <p>You cannot have both a <code>LAUNCH</code> and a
433      * <code>STACKSET</code> constraint.</p> <p>You also cannot have more than one
434      * <code>STACKSET</code> constraint on a product and portfolio.</p> <p>Products
435      * with a <code>STACKSET</code> constraint will launch an AWS CloudFormation stack
436      * set.</p> </dd> <dt>TEMPLATE</dt> <dd> <p>Specify the <code>Rules</code>
437      * property. For more information, see <a
438      * href="http://docs.aws.amazon.com/servicecatalog/latest/adminguide/reference-template_constraint_rules.html">Template
439      * Constraint Rules</a>.</p> </dd> </dl>
440      */
WithParameters(Aws::String && value)441     inline CreateConstraintRequest& WithParameters(Aws::String&& value) { SetParameters(std::move(value)); return *this;}
442 
443     /**
444      * <p>The constraint parameters, in JSON format. The syntax depends on the
445      * constraint type as follows:</p> <dl> <dt>LAUNCH</dt> <dd> <p>You are required to
446      * specify either the <code>RoleArn</code> or the <code>LocalRoleName</code> but
447      * can't use both.</p> <p>Specify the <code>RoleArn</code> property as follows:</p>
448      * <p> <code>{"RoleArn" : "arn:aws:iam::123456789012:role/LaunchRole"}</code> </p>
449      * <p>Specify the <code>LocalRoleName</code> property as follows:</p> <p>
450      * <code>{"LocalRoleName": "SCBasicLaunchRole"}</code> </p> <p>If you specify the
451      * <code>LocalRoleName</code> property, when an account uses the launch constraint,
452      * the IAM role with that name in the account will be used. This allows launch-role
453      * constraints to be account-agnostic so the administrator can create fewer
454      * resources per shared account.</p>  <p>The given role name must exist in
455      * the account used to create the launch constraint and the account of the user who
456      * launches a product with this launch constraint.</p>  <p>You cannot have
457      * both a <code>LAUNCH</code> and a <code>STACKSET</code> constraint.</p> <p>You
458      * also cannot have more than one <code>LAUNCH</code> constraint on a product and
459      * portfolio.</p> </dd> <dt>NOTIFICATION</dt> <dd> <p>Specify the
460      * <code>NotificationArns</code> property as follows:</p> <p>
461      * <code>{"NotificationArns" : ["arn:aws:sns:us-east-1:123456789012:Topic"]}</code>
462      * </p> </dd> <dt>RESOURCE_UPDATE</dt> <dd> <p>Specify the
463      * <code>TagUpdatesOnProvisionedProduct</code> property as follows:</p> <p>
464      * <code>{"Version":"2.0","Properties":{"TagUpdateOnProvisionedProduct":"String"}}</code>
465      * </p> <p>The <code>TagUpdatesOnProvisionedProduct</code> property accepts a
466      * string value of <code>ALLOWED</code> or <code>NOT_ALLOWED</code>.</p> </dd>
467      * <dt>STACKSET</dt> <dd> <p>Specify the <code>Parameters</code> property as
468      * follows:</p> <p> <code>{"Version": "String", "Properties": {"AccountList": [
469      * "String" ], "RegionList": [ "String" ], "AdminRole": "String", "ExecutionRole":
470      * "String"}}</code> </p> <p>You cannot have both a <code>LAUNCH</code> and a
471      * <code>STACKSET</code> constraint.</p> <p>You also cannot have more than one
472      * <code>STACKSET</code> constraint on a product and portfolio.</p> <p>Products
473      * with a <code>STACKSET</code> constraint will launch an AWS CloudFormation stack
474      * set.</p> </dd> <dt>TEMPLATE</dt> <dd> <p>Specify the <code>Rules</code>
475      * property. For more information, see <a
476      * href="http://docs.aws.amazon.com/servicecatalog/latest/adminguide/reference-template_constraint_rules.html">Template
477      * Constraint Rules</a>.</p> </dd> </dl>
478      */
WithParameters(const char * value)479     inline CreateConstraintRequest& WithParameters(const char* value) { SetParameters(value); return *this;}
480 
481 
482     /**
483      * <p>The type of constraint.</p> <ul> <li> <p> <code>LAUNCH</code> </p> </li> <li>
484      * <p> <code>NOTIFICATION</code> </p> </li> <li> <p> <code>RESOURCE_UPDATE</code>
485      * </p> </li> <li> <p> <code>STACKSET</code> </p> </li> <li> <p>
486      * <code>TEMPLATE</code> </p> </li> </ul>
487      */
GetType()488     inline const Aws::String& GetType() const{ return m_type; }
489 
490     /**
491      * <p>The type of constraint.</p> <ul> <li> <p> <code>LAUNCH</code> </p> </li> <li>
492      * <p> <code>NOTIFICATION</code> </p> </li> <li> <p> <code>RESOURCE_UPDATE</code>
493      * </p> </li> <li> <p> <code>STACKSET</code> </p> </li> <li> <p>
494      * <code>TEMPLATE</code> </p> </li> </ul>
495      */
TypeHasBeenSet()496     inline bool TypeHasBeenSet() const { return m_typeHasBeenSet; }
497 
498     /**
499      * <p>The type of constraint.</p> <ul> <li> <p> <code>LAUNCH</code> </p> </li> <li>
500      * <p> <code>NOTIFICATION</code> </p> </li> <li> <p> <code>RESOURCE_UPDATE</code>
501      * </p> </li> <li> <p> <code>STACKSET</code> </p> </li> <li> <p>
502      * <code>TEMPLATE</code> </p> </li> </ul>
503      */
SetType(const Aws::String & value)504     inline void SetType(const Aws::String& value) { m_typeHasBeenSet = true; m_type = value; }
505 
506     /**
507      * <p>The type of constraint.</p> <ul> <li> <p> <code>LAUNCH</code> </p> </li> <li>
508      * <p> <code>NOTIFICATION</code> </p> </li> <li> <p> <code>RESOURCE_UPDATE</code>
509      * </p> </li> <li> <p> <code>STACKSET</code> </p> </li> <li> <p>
510      * <code>TEMPLATE</code> </p> </li> </ul>
511      */
SetType(Aws::String && value)512     inline void SetType(Aws::String&& value) { m_typeHasBeenSet = true; m_type = std::move(value); }
513 
514     /**
515      * <p>The type of constraint.</p> <ul> <li> <p> <code>LAUNCH</code> </p> </li> <li>
516      * <p> <code>NOTIFICATION</code> </p> </li> <li> <p> <code>RESOURCE_UPDATE</code>
517      * </p> </li> <li> <p> <code>STACKSET</code> </p> </li> <li> <p>
518      * <code>TEMPLATE</code> </p> </li> </ul>
519      */
SetType(const char * value)520     inline void SetType(const char* value) { m_typeHasBeenSet = true; m_type.assign(value); }
521 
522     /**
523      * <p>The type of constraint.</p> <ul> <li> <p> <code>LAUNCH</code> </p> </li> <li>
524      * <p> <code>NOTIFICATION</code> </p> </li> <li> <p> <code>RESOURCE_UPDATE</code>
525      * </p> </li> <li> <p> <code>STACKSET</code> </p> </li> <li> <p>
526      * <code>TEMPLATE</code> </p> </li> </ul>
527      */
WithType(const Aws::String & value)528     inline CreateConstraintRequest& WithType(const Aws::String& value) { SetType(value); return *this;}
529 
530     /**
531      * <p>The type of constraint.</p> <ul> <li> <p> <code>LAUNCH</code> </p> </li> <li>
532      * <p> <code>NOTIFICATION</code> </p> </li> <li> <p> <code>RESOURCE_UPDATE</code>
533      * </p> </li> <li> <p> <code>STACKSET</code> </p> </li> <li> <p>
534      * <code>TEMPLATE</code> </p> </li> </ul>
535      */
WithType(Aws::String && value)536     inline CreateConstraintRequest& WithType(Aws::String&& value) { SetType(std::move(value)); return *this;}
537 
538     /**
539      * <p>The type of constraint.</p> <ul> <li> <p> <code>LAUNCH</code> </p> </li> <li>
540      * <p> <code>NOTIFICATION</code> </p> </li> <li> <p> <code>RESOURCE_UPDATE</code>
541      * </p> </li> <li> <p> <code>STACKSET</code> </p> </li> <li> <p>
542      * <code>TEMPLATE</code> </p> </li> </ul>
543      */
WithType(const char * value)544     inline CreateConstraintRequest& WithType(const char* value) { SetType(value); return *this;}
545 
546 
547     /**
548      * <p>The description of the constraint.</p>
549      */
GetDescription()550     inline const Aws::String& GetDescription() const{ return m_description; }
551 
552     /**
553      * <p>The description of the constraint.</p>
554      */
DescriptionHasBeenSet()555     inline bool DescriptionHasBeenSet() const { return m_descriptionHasBeenSet; }
556 
557     /**
558      * <p>The description of the constraint.</p>
559      */
SetDescription(const Aws::String & value)560     inline void SetDescription(const Aws::String& value) { m_descriptionHasBeenSet = true; m_description = value; }
561 
562     /**
563      * <p>The description of the constraint.</p>
564      */
SetDescription(Aws::String && value)565     inline void SetDescription(Aws::String&& value) { m_descriptionHasBeenSet = true; m_description = std::move(value); }
566 
567     /**
568      * <p>The description of the constraint.</p>
569      */
SetDescription(const char * value)570     inline void SetDescription(const char* value) { m_descriptionHasBeenSet = true; m_description.assign(value); }
571 
572     /**
573      * <p>The description of the constraint.</p>
574      */
WithDescription(const Aws::String & value)575     inline CreateConstraintRequest& WithDescription(const Aws::String& value) { SetDescription(value); return *this;}
576 
577     /**
578      * <p>The description of the constraint.</p>
579      */
WithDescription(Aws::String && value)580     inline CreateConstraintRequest& WithDescription(Aws::String&& value) { SetDescription(std::move(value)); return *this;}
581 
582     /**
583      * <p>The description of the constraint.</p>
584      */
WithDescription(const char * value)585     inline CreateConstraintRequest& WithDescription(const char* value) { SetDescription(value); return *this;}
586 
587 
588     /**
589      * <p>A unique identifier that you provide to ensure idempotency. If multiple
590      * requests differ only by the idempotency token, the same response is returned for
591      * each repeated request.</p>
592      */
GetIdempotencyToken()593     inline const Aws::String& GetIdempotencyToken() const{ return m_idempotencyToken; }
594 
595     /**
596      * <p>A unique identifier that you provide to ensure idempotency. If multiple
597      * requests differ only by the idempotency token, the same response is returned for
598      * each repeated request.</p>
599      */
IdempotencyTokenHasBeenSet()600     inline bool IdempotencyTokenHasBeenSet() const { return m_idempotencyTokenHasBeenSet; }
601 
602     /**
603      * <p>A unique identifier that you provide to ensure idempotency. If multiple
604      * requests differ only by the idempotency token, the same response is returned for
605      * each repeated request.</p>
606      */
SetIdempotencyToken(const Aws::String & value)607     inline void SetIdempotencyToken(const Aws::String& value) { m_idempotencyTokenHasBeenSet = true; m_idempotencyToken = value; }
608 
609     /**
610      * <p>A unique identifier that you provide to ensure idempotency. If multiple
611      * requests differ only by the idempotency token, the same response is returned for
612      * each repeated request.</p>
613      */
SetIdempotencyToken(Aws::String && value)614     inline void SetIdempotencyToken(Aws::String&& value) { m_idempotencyTokenHasBeenSet = true; m_idempotencyToken = std::move(value); }
615 
616     /**
617      * <p>A unique identifier that you provide to ensure idempotency. If multiple
618      * requests differ only by the idempotency token, the same response is returned for
619      * each repeated request.</p>
620      */
SetIdempotencyToken(const char * value)621     inline void SetIdempotencyToken(const char* value) { m_idempotencyTokenHasBeenSet = true; m_idempotencyToken.assign(value); }
622 
623     /**
624      * <p>A unique identifier that you provide to ensure idempotency. If multiple
625      * requests differ only by the idempotency token, the same response is returned for
626      * each repeated request.</p>
627      */
WithIdempotencyToken(const Aws::String & value)628     inline CreateConstraintRequest& WithIdempotencyToken(const Aws::String& value) { SetIdempotencyToken(value); return *this;}
629 
630     /**
631      * <p>A unique identifier that you provide to ensure idempotency. If multiple
632      * requests differ only by the idempotency token, the same response is returned for
633      * each repeated request.</p>
634      */
WithIdempotencyToken(Aws::String && value)635     inline CreateConstraintRequest& WithIdempotencyToken(Aws::String&& value) { SetIdempotencyToken(std::move(value)); return *this;}
636 
637     /**
638      * <p>A unique identifier that you provide to ensure idempotency. If multiple
639      * requests differ only by the idempotency token, the same response is returned for
640      * each repeated request.</p>
641      */
WithIdempotencyToken(const char * value)642     inline CreateConstraintRequest& WithIdempotencyToken(const char* value) { SetIdempotencyToken(value); return *this;}
643 
644   private:
645 
646     Aws::String m_acceptLanguage;
647     bool m_acceptLanguageHasBeenSet;
648 
649     Aws::String m_portfolioId;
650     bool m_portfolioIdHasBeenSet;
651 
652     Aws::String m_productId;
653     bool m_productIdHasBeenSet;
654 
655     Aws::String m_parameters;
656     bool m_parametersHasBeenSet;
657 
658     Aws::String m_type;
659     bool m_typeHasBeenSet;
660 
661     Aws::String m_description;
662     bool m_descriptionHasBeenSet;
663 
664     Aws::String m_idempotencyToken;
665     bool m_idempotencyTokenHasBeenSet;
666   };
667 
668 } // namespace Model
669 } // namespace ServiceCatalog
670 } // namespace Aws
671