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/ssm-contacts/SSMContacts_EXPORTS.h>
8 #include <aws/ssm-contacts/SSMContactsRequest.h>
9 #include <aws/core/utils/memory/stl/AWSString.h>
10 #include <aws/ssm-contacts/model/ContactType.h>
11 #include <aws/ssm-contacts/model/Plan.h>
12 #include <aws/core/utils/memory/stl/AWSVector.h>
13 #include <aws/ssm-contacts/model/Tag.h>
14 #include <utility>
15 #include <aws/core/utils/UUID.h>
16 
17 namespace Aws
18 {
19 namespace SSMContacts
20 {
21 namespace Model
22 {
23 
24   /**
25    */
26   class AWS_SSMCONTACTS_API CreateContactRequest : public SSMContactsRequest
27   {
28   public:
29     CreateContactRequest();
30 
31     // Service request name is the Operation name which will send this request out,
32     // each operation should has unique request name, so that we can get operation's name from this request.
33     // Note: this is not true for response, multiple operations may have the same response name,
34     // so we can not get operation's name from response.
GetServiceRequestName()35     inline virtual const char* GetServiceRequestName() const override { return "CreateContact"; }
36 
37     Aws::String SerializePayload() const override;
38 
39     Aws::Http::HeaderValueCollection GetRequestSpecificHeaders() const override;
40 
41 
42     /**
43      * <p>The short name to quickly identify a contact or escalation plan. The contact
44      * alias must be unique and identifiable. </p>
45      */
GetAlias()46     inline const Aws::String& GetAlias() const{ return m_alias; }
47 
48     /**
49      * <p>The short name to quickly identify a contact or escalation plan. The contact
50      * alias must be unique and identifiable. </p>
51      */
AliasHasBeenSet()52     inline bool AliasHasBeenSet() const { return m_aliasHasBeenSet; }
53 
54     /**
55      * <p>The short name to quickly identify a contact or escalation plan. The contact
56      * alias must be unique and identifiable. </p>
57      */
SetAlias(const Aws::String & value)58     inline void SetAlias(const Aws::String& value) { m_aliasHasBeenSet = true; m_alias = value; }
59 
60     /**
61      * <p>The short name to quickly identify a contact or escalation plan. The contact
62      * alias must be unique and identifiable. </p>
63      */
SetAlias(Aws::String && value)64     inline void SetAlias(Aws::String&& value) { m_aliasHasBeenSet = true; m_alias = std::move(value); }
65 
66     /**
67      * <p>The short name to quickly identify a contact or escalation plan. The contact
68      * alias must be unique and identifiable. </p>
69      */
SetAlias(const char * value)70     inline void SetAlias(const char* value) { m_aliasHasBeenSet = true; m_alias.assign(value); }
71 
72     /**
73      * <p>The short name to quickly identify a contact or escalation plan. The contact
74      * alias must be unique and identifiable. </p>
75      */
WithAlias(const Aws::String & value)76     inline CreateContactRequest& WithAlias(const Aws::String& value) { SetAlias(value); return *this;}
77 
78     /**
79      * <p>The short name to quickly identify a contact or escalation plan. The contact
80      * alias must be unique and identifiable. </p>
81      */
WithAlias(Aws::String && value)82     inline CreateContactRequest& WithAlias(Aws::String&& value) { SetAlias(std::move(value)); return *this;}
83 
84     /**
85      * <p>The short name to quickly identify a contact or escalation plan. The contact
86      * alias must be unique and identifiable. </p>
87      */
WithAlias(const char * value)88     inline CreateContactRequest& WithAlias(const char* value) { SetAlias(value); return *this;}
89 
90 
91     /**
92      * <p>The full name of the contact or escalation plan. </p>
93      */
GetDisplayName()94     inline const Aws::String& GetDisplayName() const{ return m_displayName; }
95 
96     /**
97      * <p>The full name of the contact or escalation plan. </p>
98      */
DisplayNameHasBeenSet()99     inline bool DisplayNameHasBeenSet() const { return m_displayNameHasBeenSet; }
100 
101     /**
102      * <p>The full name of the contact or escalation plan. </p>
103      */
SetDisplayName(const Aws::String & value)104     inline void SetDisplayName(const Aws::String& value) { m_displayNameHasBeenSet = true; m_displayName = value; }
105 
106     /**
107      * <p>The full name of the contact or escalation plan. </p>
108      */
SetDisplayName(Aws::String && value)109     inline void SetDisplayName(Aws::String&& value) { m_displayNameHasBeenSet = true; m_displayName = std::move(value); }
110 
111     /**
112      * <p>The full name of the contact or escalation plan. </p>
113      */
SetDisplayName(const char * value)114     inline void SetDisplayName(const char* value) { m_displayNameHasBeenSet = true; m_displayName.assign(value); }
115 
116     /**
117      * <p>The full name of the contact or escalation plan. </p>
118      */
WithDisplayName(const Aws::String & value)119     inline CreateContactRequest& WithDisplayName(const Aws::String& value) { SetDisplayName(value); return *this;}
120 
121     /**
122      * <p>The full name of the contact or escalation plan. </p>
123      */
WithDisplayName(Aws::String && value)124     inline CreateContactRequest& WithDisplayName(Aws::String&& value) { SetDisplayName(std::move(value)); return *this;}
125 
126     /**
127      * <p>The full name of the contact or escalation plan. </p>
128      */
WithDisplayName(const char * value)129     inline CreateContactRequest& WithDisplayName(const char* value) { SetDisplayName(value); return *this;}
130 
131 
132     /**
133      * <p>To create an escalation plan use <code>ESCALATION</code>. To create a contact
134      * use <code>PERSONAL</code>.</p>
135      */
GetType()136     inline const ContactType& GetType() const{ return m_type; }
137 
138     /**
139      * <p>To create an escalation plan use <code>ESCALATION</code>. To create a contact
140      * use <code>PERSONAL</code>.</p>
141      */
TypeHasBeenSet()142     inline bool TypeHasBeenSet() const { return m_typeHasBeenSet; }
143 
144     /**
145      * <p>To create an escalation plan use <code>ESCALATION</code>. To create a contact
146      * use <code>PERSONAL</code>.</p>
147      */
SetType(const ContactType & value)148     inline void SetType(const ContactType& value) { m_typeHasBeenSet = true; m_type = value; }
149 
150     /**
151      * <p>To create an escalation plan use <code>ESCALATION</code>. To create a contact
152      * use <code>PERSONAL</code>.</p>
153      */
SetType(ContactType && value)154     inline void SetType(ContactType&& value) { m_typeHasBeenSet = true; m_type = std::move(value); }
155 
156     /**
157      * <p>To create an escalation plan use <code>ESCALATION</code>. To create a contact
158      * use <code>PERSONAL</code>.</p>
159      */
WithType(const ContactType & value)160     inline CreateContactRequest& WithType(const ContactType& value) { SetType(value); return *this;}
161 
162     /**
163      * <p>To create an escalation plan use <code>ESCALATION</code>. To create a contact
164      * use <code>PERSONAL</code>.</p>
165      */
WithType(ContactType && value)166     inline CreateContactRequest& WithType(ContactType&& value) { SetType(std::move(value)); return *this;}
167 
168 
169     /**
170      * <p>A list of stages. A contact has an engagement plan with stages that contact
171      * specified contact channels. An escalation plan uses stages that contact
172      * specified contacts. </p>
173      */
GetPlan()174     inline const Plan& GetPlan() const{ return m_plan; }
175 
176     /**
177      * <p>A list of stages. A contact has an engagement plan with stages that contact
178      * specified contact channels. An escalation plan uses stages that contact
179      * specified contacts. </p>
180      */
PlanHasBeenSet()181     inline bool PlanHasBeenSet() const { return m_planHasBeenSet; }
182 
183     /**
184      * <p>A list of stages. A contact has an engagement plan with stages that contact
185      * specified contact channels. An escalation plan uses stages that contact
186      * specified contacts. </p>
187      */
SetPlan(const Plan & value)188     inline void SetPlan(const Plan& value) { m_planHasBeenSet = true; m_plan = value; }
189 
190     /**
191      * <p>A list of stages. A contact has an engagement plan with stages that contact
192      * specified contact channels. An escalation plan uses stages that contact
193      * specified contacts. </p>
194      */
SetPlan(Plan && value)195     inline void SetPlan(Plan&& value) { m_planHasBeenSet = true; m_plan = std::move(value); }
196 
197     /**
198      * <p>A list of stages. A contact has an engagement plan with stages that contact
199      * specified contact channels. An escalation plan uses stages that contact
200      * specified contacts. </p>
201      */
WithPlan(const Plan & value)202     inline CreateContactRequest& WithPlan(const Plan& value) { SetPlan(value); return *this;}
203 
204     /**
205      * <p>A list of stages. A contact has an engagement plan with stages that contact
206      * specified contact channels. An escalation plan uses stages that contact
207      * specified contacts. </p>
208      */
WithPlan(Plan && value)209     inline CreateContactRequest& WithPlan(Plan&& value) { SetPlan(std::move(value)); return *this;}
210 
211 
212     /**
213      * <p>Adds a tag to the target. You can only tag resources created in the first
214      * Region of your replication set. </p>
215      */
GetTags()216     inline const Aws::Vector<Tag>& GetTags() const{ return m_tags; }
217 
218     /**
219      * <p>Adds a tag to the target. You can only tag resources created in the first
220      * Region of your replication set. </p>
221      */
TagsHasBeenSet()222     inline bool TagsHasBeenSet() const { return m_tagsHasBeenSet; }
223 
224     /**
225      * <p>Adds a tag to the target. You can only tag resources created in the first
226      * Region of your replication set. </p>
227      */
SetTags(const Aws::Vector<Tag> & value)228     inline void SetTags(const Aws::Vector<Tag>& value) { m_tagsHasBeenSet = true; m_tags = value; }
229 
230     /**
231      * <p>Adds a tag to the target. You can only tag resources created in the first
232      * Region of your replication set. </p>
233      */
SetTags(Aws::Vector<Tag> && value)234     inline void SetTags(Aws::Vector<Tag>&& value) { m_tagsHasBeenSet = true; m_tags = std::move(value); }
235 
236     /**
237      * <p>Adds a tag to the target. You can only tag resources created in the first
238      * Region of your replication set. </p>
239      */
WithTags(const Aws::Vector<Tag> & value)240     inline CreateContactRequest& WithTags(const Aws::Vector<Tag>& value) { SetTags(value); return *this;}
241 
242     /**
243      * <p>Adds a tag to the target. You can only tag resources created in the first
244      * Region of your replication set. </p>
245      */
WithTags(Aws::Vector<Tag> && value)246     inline CreateContactRequest& WithTags(Aws::Vector<Tag>&& value) { SetTags(std::move(value)); return *this;}
247 
248     /**
249      * <p>Adds a tag to the target. You can only tag resources created in the first
250      * Region of your replication set. </p>
251      */
AddTags(const Tag & value)252     inline CreateContactRequest& AddTags(const Tag& value) { m_tagsHasBeenSet = true; m_tags.push_back(value); return *this; }
253 
254     /**
255      * <p>Adds a tag to the target. You can only tag resources created in the first
256      * Region of your replication set. </p>
257      */
AddTags(Tag && value)258     inline CreateContactRequest& AddTags(Tag&& value) { m_tagsHasBeenSet = true; m_tags.push_back(std::move(value)); return *this; }
259 
260 
261     /**
262      * <p>A token ensuring that the operation is called only once with the specified
263      * details.</p>
264      */
GetIdempotencyToken()265     inline const Aws::String& GetIdempotencyToken() const{ return m_idempotencyToken; }
266 
267     /**
268      * <p>A token ensuring that the operation is called only once with the specified
269      * details.</p>
270      */
IdempotencyTokenHasBeenSet()271     inline bool IdempotencyTokenHasBeenSet() const { return m_idempotencyTokenHasBeenSet; }
272 
273     /**
274      * <p>A token ensuring that the operation is called only once with the specified
275      * details.</p>
276      */
SetIdempotencyToken(const Aws::String & value)277     inline void SetIdempotencyToken(const Aws::String& value) { m_idempotencyTokenHasBeenSet = true; m_idempotencyToken = value; }
278 
279     /**
280      * <p>A token ensuring that the operation is called only once with the specified
281      * details.</p>
282      */
SetIdempotencyToken(Aws::String && value)283     inline void SetIdempotencyToken(Aws::String&& value) { m_idempotencyTokenHasBeenSet = true; m_idempotencyToken = std::move(value); }
284 
285     /**
286      * <p>A token ensuring that the operation is called only once with the specified
287      * details.</p>
288      */
SetIdempotencyToken(const char * value)289     inline void SetIdempotencyToken(const char* value) { m_idempotencyTokenHasBeenSet = true; m_idempotencyToken.assign(value); }
290 
291     /**
292      * <p>A token ensuring that the operation is called only once with the specified
293      * details.</p>
294      */
WithIdempotencyToken(const Aws::String & value)295     inline CreateContactRequest& WithIdempotencyToken(const Aws::String& value) { SetIdempotencyToken(value); return *this;}
296 
297     /**
298      * <p>A token ensuring that the operation is called only once with the specified
299      * details.</p>
300      */
WithIdempotencyToken(Aws::String && value)301     inline CreateContactRequest& WithIdempotencyToken(Aws::String&& value) { SetIdempotencyToken(std::move(value)); return *this;}
302 
303     /**
304      * <p>A token ensuring that the operation is called only once with the specified
305      * details.</p>
306      */
WithIdempotencyToken(const char * value)307     inline CreateContactRequest& WithIdempotencyToken(const char* value) { SetIdempotencyToken(value); return *this;}
308 
309   private:
310 
311     Aws::String m_alias;
312     bool m_aliasHasBeenSet;
313 
314     Aws::String m_displayName;
315     bool m_displayNameHasBeenSet;
316 
317     ContactType m_type;
318     bool m_typeHasBeenSet;
319 
320     Plan m_plan;
321     bool m_planHasBeenSet;
322 
323     Aws::Vector<Tag> m_tags;
324     bool m_tagsHasBeenSet;
325 
326     Aws::String m_idempotencyToken;
327     bool m_idempotencyTokenHasBeenSet;
328   };
329 
330 } // namespace Model
331 } // namespace SSMContacts
332 } // namespace Aws
333