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/SSM_EXPORTS.h>
8 #include <aws/core/utils/memory/stl/AWSString.h>
9 #include <aws/core/utils/memory/stl/AWSVector.h>
10 #include <aws/core/utils/memory/stl/AWSMap.h>
11 #include <utility>
12 
13 namespace Aws
14 {
15 namespace Utils
16 {
17 namespace Json
18 {
19   class JsonValue;
20   class JsonView;
21 } // namespace Json
22 } // namespace Utils
23 namespace SSM
24 {
25 namespace Model
26 {
27 
28   /**
29    * <p>Information collected from managed instances based on your inventory policy
30    * document</p><p><h3>See Also:</h3>   <a
31    * href="http://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/InventoryItem">AWS
32    * API Reference</a></p>
33    */
34   class AWS_SSM_API InventoryItem
35   {
36   public:
37     InventoryItem();
38     InventoryItem(Aws::Utils::Json::JsonView jsonValue);
39     InventoryItem& operator=(Aws::Utils::Json::JsonView jsonValue);
40     Aws::Utils::Json::JsonValue Jsonize() const;
41 
42 
43     /**
44      * <p>The name of the inventory type. Default inventory item type names start with
45      * <code>AWS</code>. Custom inventory type names will start with Custom. Default
46      * inventory item types include the following: <code>AWS:AWSComponent</code>,
47      * <code>AWS:Application</code>, <code>AWS:InstanceInformation</code>,
48      * <code>AWS:Network</code>, and <code>AWS:WindowsUpdate</code>.</p>
49      */
GetTypeName()50     inline const Aws::String& GetTypeName() const{ return m_typeName; }
51 
52     /**
53      * <p>The name of the inventory type. Default inventory item type names start with
54      * <code>AWS</code>. Custom inventory type names will start with Custom. Default
55      * inventory item types include the following: <code>AWS:AWSComponent</code>,
56      * <code>AWS:Application</code>, <code>AWS:InstanceInformation</code>,
57      * <code>AWS:Network</code>, and <code>AWS:WindowsUpdate</code>.</p>
58      */
TypeNameHasBeenSet()59     inline bool TypeNameHasBeenSet() const { return m_typeNameHasBeenSet; }
60 
61     /**
62      * <p>The name of the inventory type. Default inventory item type names start with
63      * <code>AWS</code>. Custom inventory type names will start with Custom. Default
64      * inventory item types include the following: <code>AWS:AWSComponent</code>,
65      * <code>AWS:Application</code>, <code>AWS:InstanceInformation</code>,
66      * <code>AWS:Network</code>, and <code>AWS:WindowsUpdate</code>.</p>
67      */
SetTypeName(const Aws::String & value)68     inline void SetTypeName(const Aws::String& value) { m_typeNameHasBeenSet = true; m_typeName = value; }
69 
70     /**
71      * <p>The name of the inventory type. Default inventory item type names start with
72      * <code>AWS</code>. Custom inventory type names will start with Custom. Default
73      * inventory item types include the following: <code>AWS:AWSComponent</code>,
74      * <code>AWS:Application</code>, <code>AWS:InstanceInformation</code>,
75      * <code>AWS:Network</code>, and <code>AWS:WindowsUpdate</code>.</p>
76      */
SetTypeName(Aws::String && value)77     inline void SetTypeName(Aws::String&& value) { m_typeNameHasBeenSet = true; m_typeName = std::move(value); }
78 
79     /**
80      * <p>The name of the inventory type. Default inventory item type names start with
81      * <code>AWS</code>. Custom inventory type names will start with Custom. Default
82      * inventory item types include the following: <code>AWS:AWSComponent</code>,
83      * <code>AWS:Application</code>, <code>AWS:InstanceInformation</code>,
84      * <code>AWS:Network</code>, and <code>AWS:WindowsUpdate</code>.</p>
85      */
SetTypeName(const char * value)86     inline void SetTypeName(const char* value) { m_typeNameHasBeenSet = true; m_typeName.assign(value); }
87 
88     /**
89      * <p>The name of the inventory type. Default inventory item type names start with
90      * <code>AWS</code>. Custom inventory type names will start with Custom. Default
91      * inventory item types include the following: <code>AWS:AWSComponent</code>,
92      * <code>AWS:Application</code>, <code>AWS:InstanceInformation</code>,
93      * <code>AWS:Network</code>, and <code>AWS:WindowsUpdate</code>.</p>
94      */
WithTypeName(const Aws::String & value)95     inline InventoryItem& WithTypeName(const Aws::String& value) { SetTypeName(value); return *this;}
96 
97     /**
98      * <p>The name of the inventory type. Default inventory item type names start with
99      * <code>AWS</code>. Custom inventory type names will start with Custom. Default
100      * inventory item types include the following: <code>AWS:AWSComponent</code>,
101      * <code>AWS:Application</code>, <code>AWS:InstanceInformation</code>,
102      * <code>AWS:Network</code>, and <code>AWS:WindowsUpdate</code>.</p>
103      */
WithTypeName(Aws::String && value)104     inline InventoryItem& WithTypeName(Aws::String&& value) { SetTypeName(std::move(value)); return *this;}
105 
106     /**
107      * <p>The name of the inventory type. Default inventory item type names start with
108      * <code>AWS</code>. Custom inventory type names will start with Custom. Default
109      * inventory item types include the following: <code>AWS:AWSComponent</code>,
110      * <code>AWS:Application</code>, <code>AWS:InstanceInformation</code>,
111      * <code>AWS:Network</code>, and <code>AWS:WindowsUpdate</code>.</p>
112      */
WithTypeName(const char * value)113     inline InventoryItem& WithTypeName(const char* value) { SetTypeName(value); return *this;}
114 
115 
116     /**
117      * <p>The schema version for the inventory item.</p>
118      */
GetSchemaVersion()119     inline const Aws::String& GetSchemaVersion() const{ return m_schemaVersion; }
120 
121     /**
122      * <p>The schema version for the inventory item.</p>
123      */
SchemaVersionHasBeenSet()124     inline bool SchemaVersionHasBeenSet() const { return m_schemaVersionHasBeenSet; }
125 
126     /**
127      * <p>The schema version for the inventory item.</p>
128      */
SetSchemaVersion(const Aws::String & value)129     inline void SetSchemaVersion(const Aws::String& value) { m_schemaVersionHasBeenSet = true; m_schemaVersion = value; }
130 
131     /**
132      * <p>The schema version for the inventory item.</p>
133      */
SetSchemaVersion(Aws::String && value)134     inline void SetSchemaVersion(Aws::String&& value) { m_schemaVersionHasBeenSet = true; m_schemaVersion = std::move(value); }
135 
136     /**
137      * <p>The schema version for the inventory item.</p>
138      */
SetSchemaVersion(const char * value)139     inline void SetSchemaVersion(const char* value) { m_schemaVersionHasBeenSet = true; m_schemaVersion.assign(value); }
140 
141     /**
142      * <p>The schema version for the inventory item.</p>
143      */
WithSchemaVersion(const Aws::String & value)144     inline InventoryItem& WithSchemaVersion(const Aws::String& value) { SetSchemaVersion(value); return *this;}
145 
146     /**
147      * <p>The schema version for the inventory item.</p>
148      */
WithSchemaVersion(Aws::String && value)149     inline InventoryItem& WithSchemaVersion(Aws::String&& value) { SetSchemaVersion(std::move(value)); return *this;}
150 
151     /**
152      * <p>The schema version for the inventory item.</p>
153      */
WithSchemaVersion(const char * value)154     inline InventoryItem& WithSchemaVersion(const char* value) { SetSchemaVersion(value); return *this;}
155 
156 
157     /**
158      * <p>The time the inventory information was collected.</p>
159      */
GetCaptureTime()160     inline const Aws::String& GetCaptureTime() const{ return m_captureTime; }
161 
162     /**
163      * <p>The time the inventory information was collected.</p>
164      */
CaptureTimeHasBeenSet()165     inline bool CaptureTimeHasBeenSet() const { return m_captureTimeHasBeenSet; }
166 
167     /**
168      * <p>The time the inventory information was collected.</p>
169      */
SetCaptureTime(const Aws::String & value)170     inline void SetCaptureTime(const Aws::String& value) { m_captureTimeHasBeenSet = true; m_captureTime = value; }
171 
172     /**
173      * <p>The time the inventory information was collected.</p>
174      */
SetCaptureTime(Aws::String && value)175     inline void SetCaptureTime(Aws::String&& value) { m_captureTimeHasBeenSet = true; m_captureTime = std::move(value); }
176 
177     /**
178      * <p>The time the inventory information was collected.</p>
179      */
SetCaptureTime(const char * value)180     inline void SetCaptureTime(const char* value) { m_captureTimeHasBeenSet = true; m_captureTime.assign(value); }
181 
182     /**
183      * <p>The time the inventory information was collected.</p>
184      */
WithCaptureTime(const Aws::String & value)185     inline InventoryItem& WithCaptureTime(const Aws::String& value) { SetCaptureTime(value); return *this;}
186 
187     /**
188      * <p>The time the inventory information was collected.</p>
189      */
WithCaptureTime(Aws::String && value)190     inline InventoryItem& WithCaptureTime(Aws::String&& value) { SetCaptureTime(std::move(value)); return *this;}
191 
192     /**
193      * <p>The time the inventory information was collected.</p>
194      */
WithCaptureTime(const char * value)195     inline InventoryItem& WithCaptureTime(const char* value) { SetCaptureTime(value); return *this;}
196 
197 
198     /**
199      * <p>MD5 hash of the inventory item type contents. The content hash is used to
200      * determine whether to update inventory information. The PutInventory API doesn't
201      * update the inventory item type contents if the MD5 hash hasn't changed since
202      * last update. </p>
203      */
GetContentHash()204     inline const Aws::String& GetContentHash() const{ return m_contentHash; }
205 
206     /**
207      * <p>MD5 hash of the inventory item type contents. The content hash is used to
208      * determine whether to update inventory information. The PutInventory API doesn't
209      * update the inventory item type contents if the MD5 hash hasn't changed since
210      * last update. </p>
211      */
ContentHashHasBeenSet()212     inline bool ContentHashHasBeenSet() const { return m_contentHashHasBeenSet; }
213 
214     /**
215      * <p>MD5 hash of the inventory item type contents. The content hash is used to
216      * determine whether to update inventory information. The PutInventory API doesn't
217      * update the inventory item type contents if the MD5 hash hasn't changed since
218      * last update. </p>
219      */
SetContentHash(const Aws::String & value)220     inline void SetContentHash(const Aws::String& value) { m_contentHashHasBeenSet = true; m_contentHash = value; }
221 
222     /**
223      * <p>MD5 hash of the inventory item type contents. The content hash is used to
224      * determine whether to update inventory information. The PutInventory API doesn't
225      * update the inventory item type contents if the MD5 hash hasn't changed since
226      * last update. </p>
227      */
SetContentHash(Aws::String && value)228     inline void SetContentHash(Aws::String&& value) { m_contentHashHasBeenSet = true; m_contentHash = std::move(value); }
229 
230     /**
231      * <p>MD5 hash of the inventory item type contents. The content hash is used to
232      * determine whether to update inventory information. The PutInventory API doesn't
233      * update the inventory item type contents if the MD5 hash hasn't changed since
234      * last update. </p>
235      */
SetContentHash(const char * value)236     inline void SetContentHash(const char* value) { m_contentHashHasBeenSet = true; m_contentHash.assign(value); }
237 
238     /**
239      * <p>MD5 hash of the inventory item type contents. The content hash is used to
240      * determine whether to update inventory information. The PutInventory API doesn't
241      * update the inventory item type contents if the MD5 hash hasn't changed since
242      * last update. </p>
243      */
WithContentHash(const Aws::String & value)244     inline InventoryItem& WithContentHash(const Aws::String& value) { SetContentHash(value); return *this;}
245 
246     /**
247      * <p>MD5 hash of the inventory item type contents. The content hash is used to
248      * determine whether to update inventory information. The PutInventory API doesn't
249      * update the inventory item type contents if the MD5 hash hasn't changed since
250      * last update. </p>
251      */
WithContentHash(Aws::String && value)252     inline InventoryItem& WithContentHash(Aws::String&& value) { SetContentHash(std::move(value)); return *this;}
253 
254     /**
255      * <p>MD5 hash of the inventory item type contents. The content hash is used to
256      * determine whether to update inventory information. The PutInventory API doesn't
257      * update the inventory item type contents if the MD5 hash hasn't changed since
258      * last update. </p>
259      */
WithContentHash(const char * value)260     inline InventoryItem& WithContentHash(const char* value) { SetContentHash(value); return *this;}
261 
262 
263     /**
264      * <p>The inventory data of the inventory type.</p>
265      */
GetContent()266     inline const Aws::Vector<Aws::Map<Aws::String, Aws::String>>& GetContent() const{ return m_content; }
267 
268     /**
269      * <p>The inventory data of the inventory type.</p>
270      */
ContentHasBeenSet()271     inline bool ContentHasBeenSet() const { return m_contentHasBeenSet; }
272 
273     /**
274      * <p>The inventory data of the inventory type.</p>
275      */
SetContent(const Aws::Vector<Aws::Map<Aws::String,Aws::String>> & value)276     inline void SetContent(const Aws::Vector<Aws::Map<Aws::String, Aws::String>>& value) { m_contentHasBeenSet = true; m_content = value; }
277 
278     /**
279      * <p>The inventory data of the inventory type.</p>
280      */
SetContent(Aws::Vector<Aws::Map<Aws::String,Aws::String>> && value)281     inline void SetContent(Aws::Vector<Aws::Map<Aws::String, Aws::String>>&& value) { m_contentHasBeenSet = true; m_content = std::move(value); }
282 
283     /**
284      * <p>The inventory data of the inventory type.</p>
285      */
WithContent(const Aws::Vector<Aws::Map<Aws::String,Aws::String>> & value)286     inline InventoryItem& WithContent(const Aws::Vector<Aws::Map<Aws::String, Aws::String>>& value) { SetContent(value); return *this;}
287 
288     /**
289      * <p>The inventory data of the inventory type.</p>
290      */
WithContent(Aws::Vector<Aws::Map<Aws::String,Aws::String>> && value)291     inline InventoryItem& WithContent(Aws::Vector<Aws::Map<Aws::String, Aws::String>>&& value) { SetContent(std::move(value)); return *this;}
292 
293     /**
294      * <p>The inventory data of the inventory type.</p>
295      */
AddContent(const Aws::Map<Aws::String,Aws::String> & value)296     inline InventoryItem& AddContent(const Aws::Map<Aws::String, Aws::String>& value) { m_contentHasBeenSet = true; m_content.push_back(value); return *this; }
297 
298     /**
299      * <p>The inventory data of the inventory type.</p>
300      */
AddContent(Aws::Map<Aws::String,Aws::String> && value)301     inline InventoryItem& AddContent(Aws::Map<Aws::String, Aws::String>&& value) { m_contentHasBeenSet = true; m_content.push_back(std::move(value)); return *this; }
302 
303 
304     /**
305      * <p>A map of associated properties for a specified inventory type. For example,
306      * with this attribute, you can specify the <code>ExecutionId</code>,
307      * <code>ExecutionType</code>, <code>ComplianceType</code> properties of the
308      * <code>AWS:ComplianceItem</code> type.</p>
309      */
GetContext()310     inline const Aws::Map<Aws::String, Aws::String>& GetContext() const{ return m_context; }
311 
312     /**
313      * <p>A map of associated properties for a specified inventory type. For example,
314      * with this attribute, you can specify the <code>ExecutionId</code>,
315      * <code>ExecutionType</code>, <code>ComplianceType</code> properties of the
316      * <code>AWS:ComplianceItem</code> type.</p>
317      */
ContextHasBeenSet()318     inline bool ContextHasBeenSet() const { return m_contextHasBeenSet; }
319 
320     /**
321      * <p>A map of associated properties for a specified inventory type. For example,
322      * with this attribute, you can specify the <code>ExecutionId</code>,
323      * <code>ExecutionType</code>, <code>ComplianceType</code> properties of the
324      * <code>AWS:ComplianceItem</code> type.</p>
325      */
SetContext(const Aws::Map<Aws::String,Aws::String> & value)326     inline void SetContext(const Aws::Map<Aws::String, Aws::String>& value) { m_contextHasBeenSet = true; m_context = value; }
327 
328     /**
329      * <p>A map of associated properties for a specified inventory type. For example,
330      * with this attribute, you can specify the <code>ExecutionId</code>,
331      * <code>ExecutionType</code>, <code>ComplianceType</code> properties of the
332      * <code>AWS:ComplianceItem</code> type.</p>
333      */
SetContext(Aws::Map<Aws::String,Aws::String> && value)334     inline void SetContext(Aws::Map<Aws::String, Aws::String>&& value) { m_contextHasBeenSet = true; m_context = std::move(value); }
335 
336     /**
337      * <p>A map of associated properties for a specified inventory type. For example,
338      * with this attribute, you can specify the <code>ExecutionId</code>,
339      * <code>ExecutionType</code>, <code>ComplianceType</code> properties of the
340      * <code>AWS:ComplianceItem</code> type.</p>
341      */
WithContext(const Aws::Map<Aws::String,Aws::String> & value)342     inline InventoryItem& WithContext(const Aws::Map<Aws::String, Aws::String>& value) { SetContext(value); return *this;}
343 
344     /**
345      * <p>A map of associated properties for a specified inventory type. For example,
346      * with this attribute, you can specify the <code>ExecutionId</code>,
347      * <code>ExecutionType</code>, <code>ComplianceType</code> properties of the
348      * <code>AWS:ComplianceItem</code> type.</p>
349      */
WithContext(Aws::Map<Aws::String,Aws::String> && value)350     inline InventoryItem& WithContext(Aws::Map<Aws::String, Aws::String>&& value) { SetContext(std::move(value)); return *this;}
351 
352     /**
353      * <p>A map of associated properties for a specified inventory type. For example,
354      * with this attribute, you can specify the <code>ExecutionId</code>,
355      * <code>ExecutionType</code>, <code>ComplianceType</code> properties of the
356      * <code>AWS:ComplianceItem</code> type.</p>
357      */
AddContext(const Aws::String & key,const Aws::String & value)358     inline InventoryItem& AddContext(const Aws::String& key, const Aws::String& value) { m_contextHasBeenSet = true; m_context.emplace(key, value); return *this; }
359 
360     /**
361      * <p>A map of associated properties for a specified inventory type. For example,
362      * with this attribute, you can specify the <code>ExecutionId</code>,
363      * <code>ExecutionType</code>, <code>ComplianceType</code> properties of the
364      * <code>AWS:ComplianceItem</code> type.</p>
365      */
AddContext(Aws::String && key,const Aws::String & value)366     inline InventoryItem& AddContext(Aws::String&& key, const Aws::String& value) { m_contextHasBeenSet = true; m_context.emplace(std::move(key), value); return *this; }
367 
368     /**
369      * <p>A map of associated properties for a specified inventory type. For example,
370      * with this attribute, you can specify the <code>ExecutionId</code>,
371      * <code>ExecutionType</code>, <code>ComplianceType</code> properties of the
372      * <code>AWS:ComplianceItem</code> type.</p>
373      */
AddContext(const Aws::String & key,Aws::String && value)374     inline InventoryItem& AddContext(const Aws::String& key, Aws::String&& value) { m_contextHasBeenSet = true; m_context.emplace(key, std::move(value)); return *this; }
375 
376     /**
377      * <p>A map of associated properties for a specified inventory type. For example,
378      * with this attribute, you can specify the <code>ExecutionId</code>,
379      * <code>ExecutionType</code>, <code>ComplianceType</code> properties of the
380      * <code>AWS:ComplianceItem</code> type.</p>
381      */
AddContext(Aws::String && key,Aws::String && value)382     inline InventoryItem& AddContext(Aws::String&& key, Aws::String&& value) { m_contextHasBeenSet = true; m_context.emplace(std::move(key), std::move(value)); return *this; }
383 
384     /**
385      * <p>A map of associated properties for a specified inventory type. For example,
386      * with this attribute, you can specify the <code>ExecutionId</code>,
387      * <code>ExecutionType</code>, <code>ComplianceType</code> properties of the
388      * <code>AWS:ComplianceItem</code> type.</p>
389      */
AddContext(const char * key,Aws::String && value)390     inline InventoryItem& AddContext(const char* key, Aws::String&& value) { m_contextHasBeenSet = true; m_context.emplace(key, std::move(value)); return *this; }
391 
392     /**
393      * <p>A map of associated properties for a specified inventory type. For example,
394      * with this attribute, you can specify the <code>ExecutionId</code>,
395      * <code>ExecutionType</code>, <code>ComplianceType</code> properties of the
396      * <code>AWS:ComplianceItem</code> type.</p>
397      */
AddContext(Aws::String && key,const char * value)398     inline InventoryItem& AddContext(Aws::String&& key, const char* value) { m_contextHasBeenSet = true; m_context.emplace(std::move(key), value); return *this; }
399 
400     /**
401      * <p>A map of associated properties for a specified inventory type. For example,
402      * with this attribute, you can specify the <code>ExecutionId</code>,
403      * <code>ExecutionType</code>, <code>ComplianceType</code> properties of the
404      * <code>AWS:ComplianceItem</code> type.</p>
405      */
AddContext(const char * key,const char * value)406     inline InventoryItem& AddContext(const char* key, const char* value) { m_contextHasBeenSet = true; m_context.emplace(key, value); return *this; }
407 
408   private:
409 
410     Aws::String m_typeName;
411     bool m_typeNameHasBeenSet;
412 
413     Aws::String m_schemaVersion;
414     bool m_schemaVersionHasBeenSet;
415 
416     Aws::String m_captureTime;
417     bool m_captureTimeHasBeenSet;
418 
419     Aws::String m_contentHash;
420     bool m_contentHashHasBeenSet;
421 
422     Aws::Vector<Aws::Map<Aws::String, Aws::String>> m_content;
423     bool m_contentHasBeenSet;
424 
425     Aws::Map<Aws::String, Aws::String> m_context;
426     bool m_contextHasBeenSet;
427   };
428 
429 } // namespace Model
430 } // namespace SSM
431 } // namespace Aws
432