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/mediaconnect/MediaConnect_EXPORTS.h>
8 #include <aws/core/utils/memory/stl/AWSString.h>
9 #include <aws/mediaconnect/model/DurationUnits.h>
10 #include <aws/mediaconnect/model/PriceUnits.h>
11 #include <aws/mediaconnect/model/ResourceSpecification.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 MediaConnect
25 {
26 namespace Model
27 {
28 
29   /**
30    * A savings plan that reserves a certain amount of outbound bandwidth usage at a
31    * discounted rate each month over a period of time.<p><h3>See Also:</h3>   <a
32    * href="http://docs.aws.amazon.com/goto/WebAPI/mediaconnect-2018-11-14/Offering">AWS
33    * API Reference</a></p>
34    */
35   class AWS_MEDIACONNECT_API Offering
36   {
37   public:
38     Offering();
39     Offering(Aws::Utils::Json::JsonView jsonValue);
40     Offering& operator=(Aws::Utils::Json::JsonView jsonValue);
41     Aws::Utils::Json::JsonValue Jsonize() const;
42 
43 
44     /**
45      * The type of currency that is used for billing. The currencyCode used for all
46      * reservations is US dollars.
47      */
GetCurrencyCode()48     inline const Aws::String& GetCurrencyCode() const{ return m_currencyCode; }
49 
50     /**
51      * The type of currency that is used for billing. The currencyCode used for all
52      * reservations is US dollars.
53      */
CurrencyCodeHasBeenSet()54     inline bool CurrencyCodeHasBeenSet() const { return m_currencyCodeHasBeenSet; }
55 
56     /**
57      * The type of currency that is used for billing. The currencyCode used for all
58      * reservations is US dollars.
59      */
SetCurrencyCode(const Aws::String & value)60     inline void SetCurrencyCode(const Aws::String& value) { m_currencyCodeHasBeenSet = true; m_currencyCode = value; }
61 
62     /**
63      * The type of currency that is used for billing. The currencyCode used for all
64      * reservations is US dollars.
65      */
SetCurrencyCode(Aws::String && value)66     inline void SetCurrencyCode(Aws::String&& value) { m_currencyCodeHasBeenSet = true; m_currencyCode = std::move(value); }
67 
68     /**
69      * The type of currency that is used for billing. The currencyCode used for all
70      * reservations is US dollars.
71      */
SetCurrencyCode(const char * value)72     inline void SetCurrencyCode(const char* value) { m_currencyCodeHasBeenSet = true; m_currencyCode.assign(value); }
73 
74     /**
75      * The type of currency that is used for billing. The currencyCode used for all
76      * reservations is US dollars.
77      */
WithCurrencyCode(const Aws::String & value)78     inline Offering& WithCurrencyCode(const Aws::String& value) { SetCurrencyCode(value); return *this;}
79 
80     /**
81      * The type of currency that is used for billing. The currencyCode used for all
82      * reservations is US dollars.
83      */
WithCurrencyCode(Aws::String && value)84     inline Offering& WithCurrencyCode(Aws::String&& value) { SetCurrencyCode(std::move(value)); return *this;}
85 
86     /**
87      * The type of currency that is used for billing. The currencyCode used for all
88      * reservations is US dollars.
89      */
WithCurrencyCode(const char * value)90     inline Offering& WithCurrencyCode(const char* value) { SetCurrencyCode(value); return *this;}
91 
92 
93     /**
94      * The length of time that your reservation would be active.
95      */
GetDuration()96     inline int GetDuration() const{ return m_duration; }
97 
98     /**
99      * The length of time that your reservation would be active.
100      */
DurationHasBeenSet()101     inline bool DurationHasBeenSet() const { return m_durationHasBeenSet; }
102 
103     /**
104      * The length of time that your reservation would be active.
105      */
SetDuration(int value)106     inline void SetDuration(int value) { m_durationHasBeenSet = true; m_duration = value; }
107 
108     /**
109      * The length of time that your reservation would be active.
110      */
WithDuration(int value)111     inline Offering& WithDuration(int value) { SetDuration(value); return *this;}
112 
113 
114     /**
115      * The unit of measurement for the duration of the offering.
116      */
GetDurationUnits()117     inline const DurationUnits& GetDurationUnits() const{ return m_durationUnits; }
118 
119     /**
120      * The unit of measurement for the duration of the offering.
121      */
DurationUnitsHasBeenSet()122     inline bool DurationUnitsHasBeenSet() const { return m_durationUnitsHasBeenSet; }
123 
124     /**
125      * The unit of measurement for the duration of the offering.
126      */
SetDurationUnits(const DurationUnits & value)127     inline void SetDurationUnits(const DurationUnits& value) { m_durationUnitsHasBeenSet = true; m_durationUnits = value; }
128 
129     /**
130      * The unit of measurement for the duration of the offering.
131      */
SetDurationUnits(DurationUnits && value)132     inline void SetDurationUnits(DurationUnits&& value) { m_durationUnitsHasBeenSet = true; m_durationUnits = std::move(value); }
133 
134     /**
135      * The unit of measurement for the duration of the offering.
136      */
WithDurationUnits(const DurationUnits & value)137     inline Offering& WithDurationUnits(const DurationUnits& value) { SetDurationUnits(value); return *this;}
138 
139     /**
140      * The unit of measurement for the duration of the offering.
141      */
WithDurationUnits(DurationUnits && value)142     inline Offering& WithDurationUnits(DurationUnits&& value) { SetDurationUnits(std::move(value)); return *this;}
143 
144 
145     /**
146      * The Amazon Resource Name (ARN) that MediaConnect assigns to the offering.
147      */
GetOfferingArn()148     inline const Aws::String& GetOfferingArn() const{ return m_offeringArn; }
149 
150     /**
151      * The Amazon Resource Name (ARN) that MediaConnect assigns to the offering.
152      */
OfferingArnHasBeenSet()153     inline bool OfferingArnHasBeenSet() const { return m_offeringArnHasBeenSet; }
154 
155     /**
156      * The Amazon Resource Name (ARN) that MediaConnect assigns to the offering.
157      */
SetOfferingArn(const Aws::String & value)158     inline void SetOfferingArn(const Aws::String& value) { m_offeringArnHasBeenSet = true; m_offeringArn = value; }
159 
160     /**
161      * The Amazon Resource Name (ARN) that MediaConnect assigns to the offering.
162      */
SetOfferingArn(Aws::String && value)163     inline void SetOfferingArn(Aws::String&& value) { m_offeringArnHasBeenSet = true; m_offeringArn = std::move(value); }
164 
165     /**
166      * The Amazon Resource Name (ARN) that MediaConnect assigns to the offering.
167      */
SetOfferingArn(const char * value)168     inline void SetOfferingArn(const char* value) { m_offeringArnHasBeenSet = true; m_offeringArn.assign(value); }
169 
170     /**
171      * The Amazon Resource Name (ARN) that MediaConnect assigns to the offering.
172      */
WithOfferingArn(const Aws::String & value)173     inline Offering& WithOfferingArn(const Aws::String& value) { SetOfferingArn(value); return *this;}
174 
175     /**
176      * The Amazon Resource Name (ARN) that MediaConnect assigns to the offering.
177      */
WithOfferingArn(Aws::String && value)178     inline Offering& WithOfferingArn(Aws::String&& value) { SetOfferingArn(std::move(value)); return *this;}
179 
180     /**
181      * The Amazon Resource Name (ARN) that MediaConnect assigns to the offering.
182      */
WithOfferingArn(const char * value)183     inline Offering& WithOfferingArn(const char* value) { SetOfferingArn(value); return *this;}
184 
185 
186     /**
187      * A description of the offering.
188      */
GetOfferingDescription()189     inline const Aws::String& GetOfferingDescription() const{ return m_offeringDescription; }
190 
191     /**
192      * A description of the offering.
193      */
OfferingDescriptionHasBeenSet()194     inline bool OfferingDescriptionHasBeenSet() const { return m_offeringDescriptionHasBeenSet; }
195 
196     /**
197      * A description of the offering.
198      */
SetOfferingDescription(const Aws::String & value)199     inline void SetOfferingDescription(const Aws::String& value) { m_offeringDescriptionHasBeenSet = true; m_offeringDescription = value; }
200 
201     /**
202      * A description of the offering.
203      */
SetOfferingDescription(Aws::String && value)204     inline void SetOfferingDescription(Aws::String&& value) { m_offeringDescriptionHasBeenSet = true; m_offeringDescription = std::move(value); }
205 
206     /**
207      * A description of the offering.
208      */
SetOfferingDescription(const char * value)209     inline void SetOfferingDescription(const char* value) { m_offeringDescriptionHasBeenSet = true; m_offeringDescription.assign(value); }
210 
211     /**
212      * A description of the offering.
213      */
WithOfferingDescription(const Aws::String & value)214     inline Offering& WithOfferingDescription(const Aws::String& value) { SetOfferingDescription(value); return *this;}
215 
216     /**
217      * A description of the offering.
218      */
WithOfferingDescription(Aws::String && value)219     inline Offering& WithOfferingDescription(Aws::String&& value) { SetOfferingDescription(std::move(value)); return *this;}
220 
221     /**
222      * A description of the offering.
223      */
WithOfferingDescription(const char * value)224     inline Offering& WithOfferingDescription(const char* value) { SetOfferingDescription(value); return *this;}
225 
226 
227     /**
228      * The cost of a single unit. This value, in combination with priceUnits, makes up
229      * the rate.
230      */
GetPricePerUnit()231     inline const Aws::String& GetPricePerUnit() const{ return m_pricePerUnit; }
232 
233     /**
234      * The cost of a single unit. This value, in combination with priceUnits, makes up
235      * the rate.
236      */
PricePerUnitHasBeenSet()237     inline bool PricePerUnitHasBeenSet() const { return m_pricePerUnitHasBeenSet; }
238 
239     /**
240      * The cost of a single unit. This value, in combination with priceUnits, makes up
241      * the rate.
242      */
SetPricePerUnit(const Aws::String & value)243     inline void SetPricePerUnit(const Aws::String& value) { m_pricePerUnitHasBeenSet = true; m_pricePerUnit = value; }
244 
245     /**
246      * The cost of a single unit. This value, in combination with priceUnits, makes up
247      * the rate.
248      */
SetPricePerUnit(Aws::String && value)249     inline void SetPricePerUnit(Aws::String&& value) { m_pricePerUnitHasBeenSet = true; m_pricePerUnit = std::move(value); }
250 
251     /**
252      * The cost of a single unit. This value, in combination with priceUnits, makes up
253      * the rate.
254      */
SetPricePerUnit(const char * value)255     inline void SetPricePerUnit(const char* value) { m_pricePerUnitHasBeenSet = true; m_pricePerUnit.assign(value); }
256 
257     /**
258      * The cost of a single unit. This value, in combination with priceUnits, makes up
259      * the rate.
260      */
WithPricePerUnit(const Aws::String & value)261     inline Offering& WithPricePerUnit(const Aws::String& value) { SetPricePerUnit(value); return *this;}
262 
263     /**
264      * The cost of a single unit. This value, in combination with priceUnits, makes up
265      * the rate.
266      */
WithPricePerUnit(Aws::String && value)267     inline Offering& WithPricePerUnit(Aws::String&& value) { SetPricePerUnit(std::move(value)); return *this;}
268 
269     /**
270      * The cost of a single unit. This value, in combination with priceUnits, makes up
271      * the rate.
272      */
WithPricePerUnit(const char * value)273     inline Offering& WithPricePerUnit(const char* value) { SetPricePerUnit(value); return *this;}
274 
275 
276     /**
277      * The unit of measurement that is used for billing. This value, in combination
278      * with pricePerUnit, makes up the rate.
279      */
GetPriceUnits()280     inline const PriceUnits& GetPriceUnits() const{ return m_priceUnits; }
281 
282     /**
283      * The unit of measurement that is used for billing. This value, in combination
284      * with pricePerUnit, makes up the rate.
285      */
PriceUnitsHasBeenSet()286     inline bool PriceUnitsHasBeenSet() const { return m_priceUnitsHasBeenSet; }
287 
288     /**
289      * The unit of measurement that is used for billing. This value, in combination
290      * with pricePerUnit, makes up the rate.
291      */
SetPriceUnits(const PriceUnits & value)292     inline void SetPriceUnits(const PriceUnits& value) { m_priceUnitsHasBeenSet = true; m_priceUnits = value; }
293 
294     /**
295      * The unit of measurement that is used for billing. This value, in combination
296      * with pricePerUnit, makes up the rate.
297      */
SetPriceUnits(PriceUnits && value)298     inline void SetPriceUnits(PriceUnits&& value) { m_priceUnitsHasBeenSet = true; m_priceUnits = std::move(value); }
299 
300     /**
301      * The unit of measurement that is used for billing. This value, in combination
302      * with pricePerUnit, makes up the rate.
303      */
WithPriceUnits(const PriceUnits & value)304     inline Offering& WithPriceUnits(const PriceUnits& value) { SetPriceUnits(value); return *this;}
305 
306     /**
307      * The unit of measurement that is used for billing. This value, in combination
308      * with pricePerUnit, makes up the rate.
309      */
WithPriceUnits(PriceUnits && value)310     inline Offering& WithPriceUnits(PriceUnits&& value) { SetPriceUnits(std::move(value)); return *this;}
311 
312 
313     /**
314      * A definition of the amount of outbound bandwidth that you would be reserving if
315      * you purchase the offering.
316      */
GetResourceSpecification()317     inline const ResourceSpecification& GetResourceSpecification() const{ return m_resourceSpecification; }
318 
319     /**
320      * A definition of the amount of outbound bandwidth that you would be reserving if
321      * you purchase the offering.
322      */
ResourceSpecificationHasBeenSet()323     inline bool ResourceSpecificationHasBeenSet() const { return m_resourceSpecificationHasBeenSet; }
324 
325     /**
326      * A definition of the amount of outbound bandwidth that you would be reserving if
327      * you purchase the offering.
328      */
SetResourceSpecification(const ResourceSpecification & value)329     inline void SetResourceSpecification(const ResourceSpecification& value) { m_resourceSpecificationHasBeenSet = true; m_resourceSpecification = value; }
330 
331     /**
332      * A definition of the amount of outbound bandwidth that you would be reserving if
333      * you purchase the offering.
334      */
SetResourceSpecification(ResourceSpecification && value)335     inline void SetResourceSpecification(ResourceSpecification&& value) { m_resourceSpecificationHasBeenSet = true; m_resourceSpecification = std::move(value); }
336 
337     /**
338      * A definition of the amount of outbound bandwidth that you would be reserving if
339      * you purchase the offering.
340      */
WithResourceSpecification(const ResourceSpecification & value)341     inline Offering& WithResourceSpecification(const ResourceSpecification& value) { SetResourceSpecification(value); return *this;}
342 
343     /**
344      * A definition of the amount of outbound bandwidth that you would be reserving if
345      * you purchase the offering.
346      */
WithResourceSpecification(ResourceSpecification && value)347     inline Offering& WithResourceSpecification(ResourceSpecification&& value) { SetResourceSpecification(std::move(value)); return *this;}
348 
349   private:
350 
351     Aws::String m_currencyCode;
352     bool m_currencyCodeHasBeenSet;
353 
354     int m_duration;
355     bool m_durationHasBeenSet;
356 
357     DurationUnits m_durationUnits;
358     bool m_durationUnitsHasBeenSet;
359 
360     Aws::String m_offeringArn;
361     bool m_offeringArnHasBeenSet;
362 
363     Aws::String m_offeringDescription;
364     bool m_offeringDescriptionHasBeenSet;
365 
366     Aws::String m_pricePerUnit;
367     bool m_pricePerUnitHasBeenSet;
368 
369     PriceUnits m_priceUnits;
370     bool m_priceUnitsHasBeenSet;
371 
372     ResourceSpecification m_resourceSpecification;
373     bool m_resourceSpecificationHasBeenSet;
374   };
375 
376 } // namespace Model
377 } // namespace MediaConnect
378 } // namespace Aws
379