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/workspaces/WorkSpaces_EXPORTS.h>
8 #include <aws/core/utils/memory/stl/AWSString.h>
9 #include <aws/workspaces/model/WorkspaceProperties.h>
10 #include <aws/core/utils/memory/stl/AWSVector.h>
11 #include <aws/workspaces/model/Tag.h>
12 #include <utility>
13 
14 namespace Aws
15 {
16 namespace Utils
17 {
18 namespace Json
19 {
20   class JsonValue;
21   class JsonView;
22 } // namespace Json
23 } // namespace Utils
24 namespace WorkSpaces
25 {
26 namespace Model
27 {
28 
29   /**
30    * <p>Describes the information used to create a WorkSpace.</p><p><h3>See
31    * Also:</h3>   <a
32    * href="http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/WorkspaceRequest">AWS
33    * API Reference</a></p>
34    */
35   class AWS_WORKSPACES_API WorkspaceRequest
36   {
37   public:
38     WorkspaceRequest();
39     WorkspaceRequest(Aws::Utils::Json::JsonView jsonValue);
40     WorkspaceRequest& operator=(Aws::Utils::Json::JsonView jsonValue);
41     Aws::Utils::Json::JsonValue Jsonize() const;
42 
43 
44     /**
45      * <p>The identifier of the Directory Service directory for the WorkSpace. You can
46      * use <a>DescribeWorkspaceDirectories</a> to list the available directories.</p>
47      */
GetDirectoryId()48     inline const Aws::String& GetDirectoryId() const{ return m_directoryId; }
49 
50     /**
51      * <p>The identifier of the Directory Service directory for the WorkSpace. You can
52      * use <a>DescribeWorkspaceDirectories</a> to list the available directories.</p>
53      */
DirectoryIdHasBeenSet()54     inline bool DirectoryIdHasBeenSet() const { return m_directoryIdHasBeenSet; }
55 
56     /**
57      * <p>The identifier of the Directory Service directory for the WorkSpace. You can
58      * use <a>DescribeWorkspaceDirectories</a> to list the available directories.</p>
59      */
SetDirectoryId(const Aws::String & value)60     inline void SetDirectoryId(const Aws::String& value) { m_directoryIdHasBeenSet = true; m_directoryId = value; }
61 
62     /**
63      * <p>The identifier of the Directory Service directory for the WorkSpace. You can
64      * use <a>DescribeWorkspaceDirectories</a> to list the available directories.</p>
65      */
SetDirectoryId(Aws::String && value)66     inline void SetDirectoryId(Aws::String&& value) { m_directoryIdHasBeenSet = true; m_directoryId = std::move(value); }
67 
68     /**
69      * <p>The identifier of the Directory Service directory for the WorkSpace. You can
70      * use <a>DescribeWorkspaceDirectories</a> to list the available directories.</p>
71      */
SetDirectoryId(const char * value)72     inline void SetDirectoryId(const char* value) { m_directoryIdHasBeenSet = true; m_directoryId.assign(value); }
73 
74     /**
75      * <p>The identifier of the Directory Service directory for the WorkSpace. You can
76      * use <a>DescribeWorkspaceDirectories</a> to list the available directories.</p>
77      */
WithDirectoryId(const Aws::String & value)78     inline WorkspaceRequest& WithDirectoryId(const Aws::String& value) { SetDirectoryId(value); return *this;}
79 
80     /**
81      * <p>The identifier of the Directory Service directory for the WorkSpace. You can
82      * use <a>DescribeWorkspaceDirectories</a> to list the available directories.</p>
83      */
WithDirectoryId(Aws::String && value)84     inline WorkspaceRequest& WithDirectoryId(Aws::String&& value) { SetDirectoryId(std::move(value)); return *this;}
85 
86     /**
87      * <p>The identifier of the Directory Service directory for the WorkSpace. You can
88      * use <a>DescribeWorkspaceDirectories</a> to list the available directories.</p>
89      */
WithDirectoryId(const char * value)90     inline WorkspaceRequest& WithDirectoryId(const char* value) { SetDirectoryId(value); return *this;}
91 
92 
93     /**
94      * <p>The user name of the user for the WorkSpace. This user name must exist in the
95      * Directory Service directory for the WorkSpace.</p>
96      */
GetUserName()97     inline const Aws::String& GetUserName() const{ return m_userName; }
98 
99     /**
100      * <p>The user name of the user for the WorkSpace. This user name must exist in the
101      * Directory Service directory for the WorkSpace.</p>
102      */
UserNameHasBeenSet()103     inline bool UserNameHasBeenSet() const { return m_userNameHasBeenSet; }
104 
105     /**
106      * <p>The user name of the user for the WorkSpace. This user name must exist in the
107      * Directory Service directory for the WorkSpace.</p>
108      */
SetUserName(const Aws::String & value)109     inline void SetUserName(const Aws::String& value) { m_userNameHasBeenSet = true; m_userName = value; }
110 
111     /**
112      * <p>The user name of the user for the WorkSpace. This user name must exist in the
113      * Directory Service directory for the WorkSpace.</p>
114      */
SetUserName(Aws::String && value)115     inline void SetUserName(Aws::String&& value) { m_userNameHasBeenSet = true; m_userName = std::move(value); }
116 
117     /**
118      * <p>The user name of the user for the WorkSpace. This user name must exist in the
119      * Directory Service directory for the WorkSpace.</p>
120      */
SetUserName(const char * value)121     inline void SetUserName(const char* value) { m_userNameHasBeenSet = true; m_userName.assign(value); }
122 
123     /**
124      * <p>The user name of the user for the WorkSpace. This user name must exist in the
125      * Directory Service directory for the WorkSpace.</p>
126      */
WithUserName(const Aws::String & value)127     inline WorkspaceRequest& WithUserName(const Aws::String& value) { SetUserName(value); return *this;}
128 
129     /**
130      * <p>The user name of the user for the WorkSpace. This user name must exist in the
131      * Directory Service directory for the WorkSpace.</p>
132      */
WithUserName(Aws::String && value)133     inline WorkspaceRequest& WithUserName(Aws::String&& value) { SetUserName(std::move(value)); return *this;}
134 
135     /**
136      * <p>The user name of the user for the WorkSpace. This user name must exist in the
137      * Directory Service directory for the WorkSpace.</p>
138      */
WithUserName(const char * value)139     inline WorkspaceRequest& WithUserName(const char* value) { SetUserName(value); return *this;}
140 
141 
142     /**
143      * <p>The identifier of the bundle for the WorkSpace. You can use
144      * <a>DescribeWorkspaceBundles</a> to list the available bundles.</p>
145      */
GetBundleId()146     inline const Aws::String& GetBundleId() const{ return m_bundleId; }
147 
148     /**
149      * <p>The identifier of the bundle for the WorkSpace. You can use
150      * <a>DescribeWorkspaceBundles</a> to list the available bundles.</p>
151      */
BundleIdHasBeenSet()152     inline bool BundleIdHasBeenSet() const { return m_bundleIdHasBeenSet; }
153 
154     /**
155      * <p>The identifier of the bundle for the WorkSpace. You can use
156      * <a>DescribeWorkspaceBundles</a> to list the available bundles.</p>
157      */
SetBundleId(const Aws::String & value)158     inline void SetBundleId(const Aws::String& value) { m_bundleIdHasBeenSet = true; m_bundleId = value; }
159 
160     /**
161      * <p>The identifier of the bundle for the WorkSpace. You can use
162      * <a>DescribeWorkspaceBundles</a> to list the available bundles.</p>
163      */
SetBundleId(Aws::String && value)164     inline void SetBundleId(Aws::String&& value) { m_bundleIdHasBeenSet = true; m_bundleId = std::move(value); }
165 
166     /**
167      * <p>The identifier of the bundle for the WorkSpace. You can use
168      * <a>DescribeWorkspaceBundles</a> to list the available bundles.</p>
169      */
SetBundleId(const char * value)170     inline void SetBundleId(const char* value) { m_bundleIdHasBeenSet = true; m_bundleId.assign(value); }
171 
172     /**
173      * <p>The identifier of the bundle for the WorkSpace. You can use
174      * <a>DescribeWorkspaceBundles</a> to list the available bundles.</p>
175      */
WithBundleId(const Aws::String & value)176     inline WorkspaceRequest& WithBundleId(const Aws::String& value) { SetBundleId(value); return *this;}
177 
178     /**
179      * <p>The identifier of the bundle for the WorkSpace. You can use
180      * <a>DescribeWorkspaceBundles</a> to list the available bundles.</p>
181      */
WithBundleId(Aws::String && value)182     inline WorkspaceRequest& WithBundleId(Aws::String&& value) { SetBundleId(std::move(value)); return *this;}
183 
184     /**
185      * <p>The identifier of the bundle for the WorkSpace. You can use
186      * <a>DescribeWorkspaceBundles</a> to list the available bundles.</p>
187      */
WithBundleId(const char * value)188     inline WorkspaceRequest& WithBundleId(const char* value) { SetBundleId(value); return *this;}
189 
190 
191     /**
192      * <p>The symmetric KMS key used to encrypt data stored on your WorkSpace. Amazon
193      * WorkSpaces does not support asymmetric KMS keys.</p>
194      */
GetVolumeEncryptionKey()195     inline const Aws::String& GetVolumeEncryptionKey() const{ return m_volumeEncryptionKey; }
196 
197     /**
198      * <p>The symmetric KMS key used to encrypt data stored on your WorkSpace. Amazon
199      * WorkSpaces does not support asymmetric KMS keys.</p>
200      */
VolumeEncryptionKeyHasBeenSet()201     inline bool VolumeEncryptionKeyHasBeenSet() const { return m_volumeEncryptionKeyHasBeenSet; }
202 
203     /**
204      * <p>The symmetric KMS key used to encrypt data stored on your WorkSpace. Amazon
205      * WorkSpaces does not support asymmetric KMS keys.</p>
206      */
SetVolumeEncryptionKey(const Aws::String & value)207     inline void SetVolumeEncryptionKey(const Aws::String& value) { m_volumeEncryptionKeyHasBeenSet = true; m_volumeEncryptionKey = value; }
208 
209     /**
210      * <p>The symmetric KMS key used to encrypt data stored on your WorkSpace. Amazon
211      * WorkSpaces does not support asymmetric KMS keys.</p>
212      */
SetVolumeEncryptionKey(Aws::String && value)213     inline void SetVolumeEncryptionKey(Aws::String&& value) { m_volumeEncryptionKeyHasBeenSet = true; m_volumeEncryptionKey = std::move(value); }
214 
215     /**
216      * <p>The symmetric KMS key used to encrypt data stored on your WorkSpace. Amazon
217      * WorkSpaces does not support asymmetric KMS keys.</p>
218      */
SetVolumeEncryptionKey(const char * value)219     inline void SetVolumeEncryptionKey(const char* value) { m_volumeEncryptionKeyHasBeenSet = true; m_volumeEncryptionKey.assign(value); }
220 
221     /**
222      * <p>The symmetric KMS key used to encrypt data stored on your WorkSpace. Amazon
223      * WorkSpaces does not support asymmetric KMS keys.</p>
224      */
WithVolumeEncryptionKey(const Aws::String & value)225     inline WorkspaceRequest& WithVolumeEncryptionKey(const Aws::String& value) { SetVolumeEncryptionKey(value); return *this;}
226 
227     /**
228      * <p>The symmetric KMS key used to encrypt data stored on your WorkSpace. Amazon
229      * WorkSpaces does not support asymmetric KMS keys.</p>
230      */
WithVolumeEncryptionKey(Aws::String && value)231     inline WorkspaceRequest& WithVolumeEncryptionKey(Aws::String&& value) { SetVolumeEncryptionKey(std::move(value)); return *this;}
232 
233     /**
234      * <p>The symmetric KMS key used to encrypt data stored on your WorkSpace. Amazon
235      * WorkSpaces does not support asymmetric KMS keys.</p>
236      */
WithVolumeEncryptionKey(const char * value)237     inline WorkspaceRequest& WithVolumeEncryptionKey(const char* value) { SetVolumeEncryptionKey(value); return *this;}
238 
239 
240     /**
241      * <p>Indicates whether the data stored on the user volume is encrypted.</p>
242      */
GetUserVolumeEncryptionEnabled()243     inline bool GetUserVolumeEncryptionEnabled() const{ return m_userVolumeEncryptionEnabled; }
244 
245     /**
246      * <p>Indicates whether the data stored on the user volume is encrypted.</p>
247      */
UserVolumeEncryptionEnabledHasBeenSet()248     inline bool UserVolumeEncryptionEnabledHasBeenSet() const { return m_userVolumeEncryptionEnabledHasBeenSet; }
249 
250     /**
251      * <p>Indicates whether the data stored on the user volume is encrypted.</p>
252      */
SetUserVolumeEncryptionEnabled(bool value)253     inline void SetUserVolumeEncryptionEnabled(bool value) { m_userVolumeEncryptionEnabledHasBeenSet = true; m_userVolumeEncryptionEnabled = value; }
254 
255     /**
256      * <p>Indicates whether the data stored on the user volume is encrypted.</p>
257      */
WithUserVolumeEncryptionEnabled(bool value)258     inline WorkspaceRequest& WithUserVolumeEncryptionEnabled(bool value) { SetUserVolumeEncryptionEnabled(value); return *this;}
259 
260 
261     /**
262      * <p>Indicates whether the data stored on the root volume is encrypted.</p>
263      */
GetRootVolumeEncryptionEnabled()264     inline bool GetRootVolumeEncryptionEnabled() const{ return m_rootVolumeEncryptionEnabled; }
265 
266     /**
267      * <p>Indicates whether the data stored on the root volume is encrypted.</p>
268      */
RootVolumeEncryptionEnabledHasBeenSet()269     inline bool RootVolumeEncryptionEnabledHasBeenSet() const { return m_rootVolumeEncryptionEnabledHasBeenSet; }
270 
271     /**
272      * <p>Indicates whether the data stored on the root volume is encrypted.</p>
273      */
SetRootVolumeEncryptionEnabled(bool value)274     inline void SetRootVolumeEncryptionEnabled(bool value) { m_rootVolumeEncryptionEnabledHasBeenSet = true; m_rootVolumeEncryptionEnabled = value; }
275 
276     /**
277      * <p>Indicates whether the data stored on the root volume is encrypted.</p>
278      */
WithRootVolumeEncryptionEnabled(bool value)279     inline WorkspaceRequest& WithRootVolumeEncryptionEnabled(bool value) { SetRootVolumeEncryptionEnabled(value); return *this;}
280 
281 
282     /**
283      * <p>The WorkSpace properties.</p>
284      */
GetWorkspaceProperties()285     inline const WorkspaceProperties& GetWorkspaceProperties() const{ return m_workspaceProperties; }
286 
287     /**
288      * <p>The WorkSpace properties.</p>
289      */
WorkspacePropertiesHasBeenSet()290     inline bool WorkspacePropertiesHasBeenSet() const { return m_workspacePropertiesHasBeenSet; }
291 
292     /**
293      * <p>The WorkSpace properties.</p>
294      */
SetWorkspaceProperties(const WorkspaceProperties & value)295     inline void SetWorkspaceProperties(const WorkspaceProperties& value) { m_workspacePropertiesHasBeenSet = true; m_workspaceProperties = value; }
296 
297     /**
298      * <p>The WorkSpace properties.</p>
299      */
SetWorkspaceProperties(WorkspaceProperties && value)300     inline void SetWorkspaceProperties(WorkspaceProperties&& value) { m_workspacePropertiesHasBeenSet = true; m_workspaceProperties = std::move(value); }
301 
302     /**
303      * <p>The WorkSpace properties.</p>
304      */
WithWorkspaceProperties(const WorkspaceProperties & value)305     inline WorkspaceRequest& WithWorkspaceProperties(const WorkspaceProperties& value) { SetWorkspaceProperties(value); return *this;}
306 
307     /**
308      * <p>The WorkSpace properties.</p>
309      */
WithWorkspaceProperties(WorkspaceProperties && value)310     inline WorkspaceRequest& WithWorkspaceProperties(WorkspaceProperties&& value) { SetWorkspaceProperties(std::move(value)); return *this;}
311 
312 
313     /**
314      * <p>The tags for the WorkSpace.</p>
315      */
GetTags()316     inline const Aws::Vector<Tag>& GetTags() const{ return m_tags; }
317 
318     /**
319      * <p>The tags for the WorkSpace.</p>
320      */
TagsHasBeenSet()321     inline bool TagsHasBeenSet() const { return m_tagsHasBeenSet; }
322 
323     /**
324      * <p>The tags for the WorkSpace.</p>
325      */
SetTags(const Aws::Vector<Tag> & value)326     inline void SetTags(const Aws::Vector<Tag>& value) { m_tagsHasBeenSet = true; m_tags = value; }
327 
328     /**
329      * <p>The tags for the WorkSpace.</p>
330      */
SetTags(Aws::Vector<Tag> && value)331     inline void SetTags(Aws::Vector<Tag>&& value) { m_tagsHasBeenSet = true; m_tags = std::move(value); }
332 
333     /**
334      * <p>The tags for the WorkSpace.</p>
335      */
WithTags(const Aws::Vector<Tag> & value)336     inline WorkspaceRequest& WithTags(const Aws::Vector<Tag>& value) { SetTags(value); return *this;}
337 
338     /**
339      * <p>The tags for the WorkSpace.</p>
340      */
WithTags(Aws::Vector<Tag> && value)341     inline WorkspaceRequest& WithTags(Aws::Vector<Tag>&& value) { SetTags(std::move(value)); return *this;}
342 
343     /**
344      * <p>The tags for the WorkSpace.</p>
345      */
AddTags(const Tag & value)346     inline WorkspaceRequest& AddTags(const Tag& value) { m_tagsHasBeenSet = true; m_tags.push_back(value); return *this; }
347 
348     /**
349      * <p>The tags for the WorkSpace.</p>
350      */
AddTags(Tag && value)351     inline WorkspaceRequest& AddTags(Tag&& value) { m_tagsHasBeenSet = true; m_tags.push_back(std::move(value)); return *this; }
352 
353   private:
354 
355     Aws::String m_directoryId;
356     bool m_directoryIdHasBeenSet;
357 
358     Aws::String m_userName;
359     bool m_userNameHasBeenSet;
360 
361     Aws::String m_bundleId;
362     bool m_bundleIdHasBeenSet;
363 
364     Aws::String m_volumeEncryptionKey;
365     bool m_volumeEncryptionKeyHasBeenSet;
366 
367     bool m_userVolumeEncryptionEnabled;
368     bool m_userVolumeEncryptionEnabledHasBeenSet;
369 
370     bool m_rootVolumeEncryptionEnabled;
371     bool m_rootVolumeEncryptionEnabledHasBeenSet;
372 
373     WorkspaceProperties m_workspaceProperties;
374     bool m_workspacePropertiesHasBeenSet;
375 
376     Aws::Vector<Tag> m_tags;
377     bool m_tagsHasBeenSet;
378   };
379 
380 } // namespace Model
381 } // namespace WorkSpaces
382 } // namespace Aws
383