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/xray/XRay_EXPORTS.h>
8 #include <aws/xray/XRayRequest.h>
9 #include <aws/core/utils/memory/stl/AWSString.h>
10 #include <aws/xray/model/InsightsConfiguration.h>
11 #include <aws/core/utils/memory/stl/AWSVector.h>
12 #include <aws/xray/model/Tag.h>
13 #include <utility>
14 
15 namespace Aws
16 {
17 namespace XRay
18 {
19 namespace Model
20 {
21 
22   /**
23    */
24   class AWS_XRAY_API CreateGroupRequest : public XRayRequest
25   {
26   public:
27     CreateGroupRequest();
28 
29     // Service request name is the Operation name which will send this request out,
30     // each operation should has unique request name, so that we can get operation's name from this request.
31     // Note: this is not true for response, multiple operations may have the same response name,
32     // so we can not get operation's name from response.
GetServiceRequestName()33     inline virtual const char* GetServiceRequestName() const override { return "CreateGroup"; }
34 
35     Aws::String SerializePayload() const override;
36 
37 
38     /**
39      * <p>The case-sensitive name of the new group. Default is a reserved name and
40      * names must be unique.</p>
41      */
GetGroupName()42     inline const Aws::String& GetGroupName() const{ return m_groupName; }
43 
44     /**
45      * <p>The case-sensitive name of the new group. Default is a reserved name and
46      * names must be unique.</p>
47      */
GroupNameHasBeenSet()48     inline bool GroupNameHasBeenSet() const { return m_groupNameHasBeenSet; }
49 
50     /**
51      * <p>The case-sensitive name of the new group. Default is a reserved name and
52      * names must be unique.</p>
53      */
SetGroupName(const Aws::String & value)54     inline void SetGroupName(const Aws::String& value) { m_groupNameHasBeenSet = true; m_groupName = value; }
55 
56     /**
57      * <p>The case-sensitive name of the new group. Default is a reserved name and
58      * names must be unique.</p>
59      */
SetGroupName(Aws::String && value)60     inline void SetGroupName(Aws::String&& value) { m_groupNameHasBeenSet = true; m_groupName = std::move(value); }
61 
62     /**
63      * <p>The case-sensitive name of the new group. Default is a reserved name and
64      * names must be unique.</p>
65      */
SetGroupName(const char * value)66     inline void SetGroupName(const char* value) { m_groupNameHasBeenSet = true; m_groupName.assign(value); }
67 
68     /**
69      * <p>The case-sensitive name of the new group. Default is a reserved name and
70      * names must be unique.</p>
71      */
WithGroupName(const Aws::String & value)72     inline CreateGroupRequest& WithGroupName(const Aws::String& value) { SetGroupName(value); return *this;}
73 
74     /**
75      * <p>The case-sensitive name of the new group. Default is a reserved name and
76      * names must be unique.</p>
77      */
WithGroupName(Aws::String && value)78     inline CreateGroupRequest& WithGroupName(Aws::String&& value) { SetGroupName(std::move(value)); return *this;}
79 
80     /**
81      * <p>The case-sensitive name of the new group. Default is a reserved name and
82      * names must be unique.</p>
83      */
WithGroupName(const char * value)84     inline CreateGroupRequest& WithGroupName(const char* value) { SetGroupName(value); return *this;}
85 
86 
87     /**
88      * <p>The filter expression defining criteria by which to group traces.</p>
89      */
GetFilterExpression()90     inline const Aws::String& GetFilterExpression() const{ return m_filterExpression; }
91 
92     /**
93      * <p>The filter expression defining criteria by which to group traces.</p>
94      */
FilterExpressionHasBeenSet()95     inline bool FilterExpressionHasBeenSet() const { return m_filterExpressionHasBeenSet; }
96 
97     /**
98      * <p>The filter expression defining criteria by which to group traces.</p>
99      */
SetFilterExpression(const Aws::String & value)100     inline void SetFilterExpression(const Aws::String& value) { m_filterExpressionHasBeenSet = true; m_filterExpression = value; }
101 
102     /**
103      * <p>The filter expression defining criteria by which to group traces.</p>
104      */
SetFilterExpression(Aws::String && value)105     inline void SetFilterExpression(Aws::String&& value) { m_filterExpressionHasBeenSet = true; m_filterExpression = std::move(value); }
106 
107     /**
108      * <p>The filter expression defining criteria by which to group traces.</p>
109      */
SetFilterExpression(const char * value)110     inline void SetFilterExpression(const char* value) { m_filterExpressionHasBeenSet = true; m_filterExpression.assign(value); }
111 
112     /**
113      * <p>The filter expression defining criteria by which to group traces.</p>
114      */
WithFilterExpression(const Aws::String & value)115     inline CreateGroupRequest& WithFilterExpression(const Aws::String& value) { SetFilterExpression(value); return *this;}
116 
117     /**
118      * <p>The filter expression defining criteria by which to group traces.</p>
119      */
WithFilterExpression(Aws::String && value)120     inline CreateGroupRequest& WithFilterExpression(Aws::String&& value) { SetFilterExpression(std::move(value)); return *this;}
121 
122     /**
123      * <p>The filter expression defining criteria by which to group traces.</p>
124      */
WithFilterExpression(const char * value)125     inline CreateGroupRequest& WithFilterExpression(const char* value) { SetFilterExpression(value); return *this;}
126 
127 
128     /**
129      * <p>The structure containing configurations related to insights.</p> <ul> <li>
130      * <p>The InsightsEnabled boolean can be set to true to enable insights for the new
131      * group or false to disable insights for the new group.</p> </li> <li> <p>The
132      * NotifcationsEnabled boolean can be set to true to enable insights notifications
133      * for the new group. Notifications may only be enabled on a group with
134      * InsightsEnabled set to true.</p> </li> </ul>
135      */
GetInsightsConfiguration()136     inline const InsightsConfiguration& GetInsightsConfiguration() const{ return m_insightsConfiguration; }
137 
138     /**
139      * <p>The structure containing configurations related to insights.</p> <ul> <li>
140      * <p>The InsightsEnabled boolean can be set to true to enable insights for the new
141      * group or false to disable insights for the new group.</p> </li> <li> <p>The
142      * NotifcationsEnabled boolean can be set to true to enable insights notifications
143      * for the new group. Notifications may only be enabled on a group with
144      * InsightsEnabled set to true.</p> </li> </ul>
145      */
InsightsConfigurationHasBeenSet()146     inline bool InsightsConfigurationHasBeenSet() const { return m_insightsConfigurationHasBeenSet; }
147 
148     /**
149      * <p>The structure containing configurations related to insights.</p> <ul> <li>
150      * <p>The InsightsEnabled boolean can be set to true to enable insights for the new
151      * group or false to disable insights for the new group.</p> </li> <li> <p>The
152      * NotifcationsEnabled boolean can be set to true to enable insights notifications
153      * for the new group. Notifications may only be enabled on a group with
154      * InsightsEnabled set to true.</p> </li> </ul>
155      */
SetInsightsConfiguration(const InsightsConfiguration & value)156     inline void SetInsightsConfiguration(const InsightsConfiguration& value) { m_insightsConfigurationHasBeenSet = true; m_insightsConfiguration = value; }
157 
158     /**
159      * <p>The structure containing configurations related to insights.</p> <ul> <li>
160      * <p>The InsightsEnabled boolean can be set to true to enable insights for the new
161      * group or false to disable insights for the new group.</p> </li> <li> <p>The
162      * NotifcationsEnabled boolean can be set to true to enable insights notifications
163      * for the new group. Notifications may only be enabled on a group with
164      * InsightsEnabled set to true.</p> </li> </ul>
165      */
SetInsightsConfiguration(InsightsConfiguration && value)166     inline void SetInsightsConfiguration(InsightsConfiguration&& value) { m_insightsConfigurationHasBeenSet = true; m_insightsConfiguration = std::move(value); }
167 
168     /**
169      * <p>The structure containing configurations related to insights.</p> <ul> <li>
170      * <p>The InsightsEnabled boolean can be set to true to enable insights for the new
171      * group or false to disable insights for the new group.</p> </li> <li> <p>The
172      * NotifcationsEnabled boolean can be set to true to enable insights notifications
173      * for the new group. Notifications may only be enabled on a group with
174      * InsightsEnabled set to true.</p> </li> </ul>
175      */
WithInsightsConfiguration(const InsightsConfiguration & value)176     inline CreateGroupRequest& WithInsightsConfiguration(const InsightsConfiguration& value) { SetInsightsConfiguration(value); return *this;}
177 
178     /**
179      * <p>The structure containing configurations related to insights.</p> <ul> <li>
180      * <p>The InsightsEnabled boolean can be set to true to enable insights for the new
181      * group or false to disable insights for the new group.</p> </li> <li> <p>The
182      * NotifcationsEnabled boolean can be set to true to enable insights notifications
183      * for the new group. Notifications may only be enabled on a group with
184      * InsightsEnabled set to true.</p> </li> </ul>
185      */
WithInsightsConfiguration(InsightsConfiguration && value)186     inline CreateGroupRequest& WithInsightsConfiguration(InsightsConfiguration&& value) { SetInsightsConfiguration(std::move(value)); return *this;}
187 
188 
189     /**
190      * <p>A map that contains one or more tag keys and tag values to attach to an X-Ray
191      * group. For more information about ways to use tags, see <a
192      * href="https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html">Tagging
193      * Amazon Web Services resources</a> in the <i>Amazon Web Services General
194      * Reference</i>.</p> <p>The following restrictions apply to tags:</p> <ul> <li>
195      * <p>Maximum number of user-applied tags per resource: 50</p> </li> <li>
196      * <p>Maximum tag key length: 128 Unicode characters</p> </li> <li> <p>Maximum tag
197      * value length: 256 Unicode characters</p> </li> <li> <p>Valid values for key and
198      * value: a-z, A-Z, 0-9, space, and the following characters: _ . : / = + - and
199      * @</p> </li> <li> <p>Tag keys and values are case sensitive.</p> </li> <li>
200      * <p>Don't use <code>aws:</code> as a prefix for keys; it's reserved for Amazon
201      * Web Services use.</p> </li> </ul>
202      */
GetTags()203     inline const Aws::Vector<Tag>& GetTags() const{ return m_tags; }
204 
205     /**
206      * <p>A map that contains one or more tag keys and tag values to attach to an X-Ray
207      * group. For more information about ways to use tags, see <a
208      * href="https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html">Tagging
209      * Amazon Web Services resources</a> in the <i>Amazon Web Services General
210      * Reference</i>.</p> <p>The following restrictions apply to tags:</p> <ul> <li>
211      * <p>Maximum number of user-applied tags per resource: 50</p> </li> <li>
212      * <p>Maximum tag key length: 128 Unicode characters</p> </li> <li> <p>Maximum tag
213      * value length: 256 Unicode characters</p> </li> <li> <p>Valid values for key and
214      * value: a-z, A-Z, 0-9, space, and the following characters: _ . : / = + - and
215      * @</p> </li> <li> <p>Tag keys and values are case sensitive.</p> </li> <li>
216      * <p>Don't use <code>aws:</code> as a prefix for keys; it's reserved for Amazon
217      * Web Services use.</p> </li> </ul>
218      */
TagsHasBeenSet()219     inline bool TagsHasBeenSet() const { return m_tagsHasBeenSet; }
220 
221     /**
222      * <p>A map that contains one or more tag keys and tag values to attach to an X-Ray
223      * group. For more information about ways to use tags, see <a
224      * href="https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html">Tagging
225      * Amazon Web Services resources</a> in the <i>Amazon Web Services General
226      * Reference</i>.</p> <p>The following restrictions apply to tags:</p> <ul> <li>
227      * <p>Maximum number of user-applied tags per resource: 50</p> </li> <li>
228      * <p>Maximum tag key length: 128 Unicode characters</p> </li> <li> <p>Maximum tag
229      * value length: 256 Unicode characters</p> </li> <li> <p>Valid values for key and
230      * value: a-z, A-Z, 0-9, space, and the following characters: _ . : / = + - and
231      * @</p> </li> <li> <p>Tag keys and values are case sensitive.</p> </li> <li>
232      * <p>Don't use <code>aws:</code> as a prefix for keys; it's reserved for Amazon
233      * Web Services use.</p> </li> </ul>
234      */
SetTags(const Aws::Vector<Tag> & value)235     inline void SetTags(const Aws::Vector<Tag>& value) { m_tagsHasBeenSet = true; m_tags = value; }
236 
237     /**
238      * <p>A map that contains one or more tag keys and tag values to attach to an X-Ray
239      * group. For more information about ways to use tags, see <a
240      * href="https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html">Tagging
241      * Amazon Web Services resources</a> in the <i>Amazon Web Services General
242      * Reference</i>.</p> <p>The following restrictions apply to tags:</p> <ul> <li>
243      * <p>Maximum number of user-applied tags per resource: 50</p> </li> <li>
244      * <p>Maximum tag key length: 128 Unicode characters</p> </li> <li> <p>Maximum tag
245      * value length: 256 Unicode characters</p> </li> <li> <p>Valid values for key and
246      * value: a-z, A-Z, 0-9, space, and the following characters: _ . : / = + - and
247      * @</p> </li> <li> <p>Tag keys and values are case sensitive.</p> </li> <li>
248      * <p>Don't use <code>aws:</code> as a prefix for keys; it's reserved for Amazon
249      * Web Services use.</p> </li> </ul>
250      */
SetTags(Aws::Vector<Tag> && value)251     inline void SetTags(Aws::Vector<Tag>&& value) { m_tagsHasBeenSet = true; m_tags = std::move(value); }
252 
253     /**
254      * <p>A map that contains one or more tag keys and tag values to attach to an X-Ray
255      * group. For more information about ways to use tags, see <a
256      * href="https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html">Tagging
257      * Amazon Web Services resources</a> in the <i>Amazon Web Services General
258      * Reference</i>.</p> <p>The following restrictions apply to tags:</p> <ul> <li>
259      * <p>Maximum number of user-applied tags per resource: 50</p> </li> <li>
260      * <p>Maximum tag key length: 128 Unicode characters</p> </li> <li> <p>Maximum tag
261      * value length: 256 Unicode characters</p> </li> <li> <p>Valid values for key and
262      * value: a-z, A-Z, 0-9, space, and the following characters: _ . : / = + - and
263      * @</p> </li> <li> <p>Tag keys and values are case sensitive.</p> </li> <li>
264      * <p>Don't use <code>aws:</code> as a prefix for keys; it's reserved for Amazon
265      * Web Services use.</p> </li> </ul>
266      */
WithTags(const Aws::Vector<Tag> & value)267     inline CreateGroupRequest& WithTags(const Aws::Vector<Tag>& value) { SetTags(value); return *this;}
268 
269     /**
270      * <p>A map that contains one or more tag keys and tag values to attach to an X-Ray
271      * group. For more information about ways to use tags, see <a
272      * href="https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html">Tagging
273      * Amazon Web Services resources</a> in the <i>Amazon Web Services General
274      * Reference</i>.</p> <p>The following restrictions apply to tags:</p> <ul> <li>
275      * <p>Maximum number of user-applied tags per resource: 50</p> </li> <li>
276      * <p>Maximum tag key length: 128 Unicode characters</p> </li> <li> <p>Maximum tag
277      * value length: 256 Unicode characters</p> </li> <li> <p>Valid values for key and
278      * value: a-z, A-Z, 0-9, space, and the following characters: _ . : / = + - and
279      * @</p> </li> <li> <p>Tag keys and values are case sensitive.</p> </li> <li>
280      * <p>Don't use <code>aws:</code> as a prefix for keys; it's reserved for Amazon
281      * Web Services use.</p> </li> </ul>
282      */
WithTags(Aws::Vector<Tag> && value)283     inline CreateGroupRequest& WithTags(Aws::Vector<Tag>&& value) { SetTags(std::move(value)); return *this;}
284 
285     /**
286      * <p>A map that contains one or more tag keys and tag values to attach to an X-Ray
287      * group. For more information about ways to use tags, see <a
288      * href="https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html">Tagging
289      * Amazon Web Services resources</a> in the <i>Amazon Web Services General
290      * Reference</i>.</p> <p>The following restrictions apply to tags:</p> <ul> <li>
291      * <p>Maximum number of user-applied tags per resource: 50</p> </li> <li>
292      * <p>Maximum tag key length: 128 Unicode characters</p> </li> <li> <p>Maximum tag
293      * value length: 256 Unicode characters</p> </li> <li> <p>Valid values for key and
294      * value: a-z, A-Z, 0-9, space, and the following characters: _ . : / = + - and
295      * @</p> </li> <li> <p>Tag keys and values are case sensitive.</p> </li> <li>
296      * <p>Don't use <code>aws:</code> as a prefix for keys; it's reserved for Amazon
297      * Web Services use.</p> </li> </ul>
298      */
AddTags(const Tag & value)299     inline CreateGroupRequest& AddTags(const Tag& value) { m_tagsHasBeenSet = true; m_tags.push_back(value); return *this; }
300 
301     /**
302      * <p>A map that contains one or more tag keys and tag values to attach to an X-Ray
303      * group. For more information about ways to use tags, see <a
304      * href="https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html">Tagging
305      * Amazon Web Services resources</a> in the <i>Amazon Web Services General
306      * Reference</i>.</p> <p>The following restrictions apply to tags:</p> <ul> <li>
307      * <p>Maximum number of user-applied tags per resource: 50</p> </li> <li>
308      * <p>Maximum tag key length: 128 Unicode characters</p> </li> <li> <p>Maximum tag
309      * value length: 256 Unicode characters</p> </li> <li> <p>Valid values for key and
310      * value: a-z, A-Z, 0-9, space, and the following characters: _ . : / = + - and
311      * @</p> </li> <li> <p>Tag keys and values are case sensitive.</p> </li> <li>
312      * <p>Don't use <code>aws:</code> as a prefix for keys; it's reserved for Amazon
313      * Web Services use.</p> </li> </ul>
314      */
AddTags(Tag && value)315     inline CreateGroupRequest& AddTags(Tag&& value) { m_tagsHasBeenSet = true; m_tags.push_back(std::move(value)); return *this; }
316 
317   private:
318 
319     Aws::String m_groupName;
320     bool m_groupNameHasBeenSet;
321 
322     Aws::String m_filterExpression;
323     bool m_filterExpressionHasBeenSet;
324 
325     InsightsConfiguration m_insightsConfiguration;
326     bool m_insightsConfigurationHasBeenSet;
327 
328     Aws::Vector<Tag> m_tags;
329     bool m_tagsHasBeenSet;
330   };
331 
332 } // namespace Model
333 } // namespace XRay
334 } // namespace Aws
335