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/ce/CostExplorer_EXPORTS.h>
8 #include <aws/ce/CostExplorerRequest.h>
9 #include <aws/core/utils/memory/stl/AWSString.h>
10 #include <aws/ce/model/Expression.h>
11 #include <aws/ce/model/AccountScope.h>
12 #include <aws/ce/model/LookbackPeriodInDays.h>
13 #include <aws/ce/model/TermInYears.h>
14 #include <aws/ce/model/PaymentOption.h>
15 #include <aws/ce/model/ServiceSpecification.h>
16 #include <utility>
17 
18 namespace Aws
19 {
20 namespace CostExplorer
21 {
22 namespace Model
23 {
24 
25   /**
26    */
27   class AWS_COSTEXPLORER_API GetReservationPurchaseRecommendationRequest : public CostExplorerRequest
28   {
29   public:
30     GetReservationPurchaseRecommendationRequest();
31 
32     // Service request name is the Operation name which will send this request out,
33     // each operation should has unique request name, so that we can get operation's name from this request.
34     // Note: this is not true for response, multiple operations may have the same response name,
35     // so we can not get operation's name from response.
GetServiceRequestName()36     inline virtual const char* GetServiceRequestName() const override { return "GetReservationPurchaseRecommendation"; }
37 
38     Aws::String SerializePayload() const override;
39 
40     Aws::Http::HeaderValueCollection GetRequestSpecificHeaders() const override;
41 
42 
43     /**
44      * <p>The account ID that is associated with the recommendation. </p>
45      */
GetAccountId()46     inline const Aws::String& GetAccountId() const{ return m_accountId; }
47 
48     /**
49      * <p>The account ID that is associated with the recommendation. </p>
50      */
AccountIdHasBeenSet()51     inline bool AccountIdHasBeenSet() const { return m_accountIdHasBeenSet; }
52 
53     /**
54      * <p>The account ID that is associated with the recommendation. </p>
55      */
SetAccountId(const Aws::String & value)56     inline void SetAccountId(const Aws::String& value) { m_accountIdHasBeenSet = true; m_accountId = value; }
57 
58     /**
59      * <p>The account ID that is associated with the recommendation. </p>
60      */
SetAccountId(Aws::String && value)61     inline void SetAccountId(Aws::String&& value) { m_accountIdHasBeenSet = true; m_accountId = std::move(value); }
62 
63     /**
64      * <p>The account ID that is associated with the recommendation. </p>
65      */
SetAccountId(const char * value)66     inline void SetAccountId(const char* value) { m_accountIdHasBeenSet = true; m_accountId.assign(value); }
67 
68     /**
69      * <p>The account ID that is associated with the recommendation. </p>
70      */
WithAccountId(const Aws::String & value)71     inline GetReservationPurchaseRecommendationRequest& WithAccountId(const Aws::String& value) { SetAccountId(value); return *this;}
72 
73     /**
74      * <p>The account ID that is associated with the recommendation. </p>
75      */
WithAccountId(Aws::String && value)76     inline GetReservationPurchaseRecommendationRequest& WithAccountId(Aws::String&& value) { SetAccountId(std::move(value)); return *this;}
77 
78     /**
79      * <p>The account ID that is associated with the recommendation. </p>
80      */
WithAccountId(const char * value)81     inline GetReservationPurchaseRecommendationRequest& WithAccountId(const char* value) { SetAccountId(value); return *this;}
82 
83 
84     /**
85      * <p>The specific service that you want recommendations for.</p>
86      */
GetService()87     inline const Aws::String& GetService() const{ return m_service; }
88 
89     /**
90      * <p>The specific service that you want recommendations for.</p>
91      */
ServiceHasBeenSet()92     inline bool ServiceHasBeenSet() const { return m_serviceHasBeenSet; }
93 
94     /**
95      * <p>The specific service that you want recommendations for.</p>
96      */
SetService(const Aws::String & value)97     inline void SetService(const Aws::String& value) { m_serviceHasBeenSet = true; m_service = value; }
98 
99     /**
100      * <p>The specific service that you want recommendations for.</p>
101      */
SetService(Aws::String && value)102     inline void SetService(Aws::String&& value) { m_serviceHasBeenSet = true; m_service = std::move(value); }
103 
104     /**
105      * <p>The specific service that you want recommendations for.</p>
106      */
SetService(const char * value)107     inline void SetService(const char* value) { m_serviceHasBeenSet = true; m_service.assign(value); }
108 
109     /**
110      * <p>The specific service that you want recommendations for.</p>
111      */
WithService(const Aws::String & value)112     inline GetReservationPurchaseRecommendationRequest& WithService(const Aws::String& value) { SetService(value); return *this;}
113 
114     /**
115      * <p>The specific service that you want recommendations for.</p>
116      */
WithService(Aws::String && value)117     inline GetReservationPurchaseRecommendationRequest& WithService(Aws::String&& value) { SetService(std::move(value)); return *this;}
118 
119     /**
120      * <p>The specific service that you want recommendations for.</p>
121      */
WithService(const char * value)122     inline GetReservationPurchaseRecommendationRequest& WithService(const char* value) { SetService(value); return *this;}
123 
124 
125 
GetFilter()126     inline const Expression& GetFilter() const{ return m_filter; }
127 
128 
FilterHasBeenSet()129     inline bool FilterHasBeenSet() const { return m_filterHasBeenSet; }
130 
131 
SetFilter(const Expression & value)132     inline void SetFilter(const Expression& value) { m_filterHasBeenSet = true; m_filter = value; }
133 
134 
SetFilter(Expression && value)135     inline void SetFilter(Expression&& value) { m_filterHasBeenSet = true; m_filter = std::move(value); }
136 
137 
WithFilter(const Expression & value)138     inline GetReservationPurchaseRecommendationRequest& WithFilter(const Expression& value) { SetFilter(value); return *this;}
139 
140 
WithFilter(Expression && value)141     inline GetReservationPurchaseRecommendationRequest& WithFilter(Expression&& value) { SetFilter(std::move(value)); return *this;}
142 
143 
144     /**
145      * <p>The account scope that you want your recommendations for. Amazon Web Services
146      * calculates recommendations including the management account and member accounts
147      * if the value is set to <code>PAYER</code>. If the value is <code>LINKED</code>,
148      * recommendations are calculated for individual member accounts only.</p>
149      */
GetAccountScope()150     inline const AccountScope& GetAccountScope() const{ return m_accountScope; }
151 
152     /**
153      * <p>The account scope that you want your recommendations for. Amazon Web Services
154      * calculates recommendations including the management account and member accounts
155      * if the value is set to <code>PAYER</code>. If the value is <code>LINKED</code>,
156      * recommendations are calculated for individual member accounts only.</p>
157      */
AccountScopeHasBeenSet()158     inline bool AccountScopeHasBeenSet() const { return m_accountScopeHasBeenSet; }
159 
160     /**
161      * <p>The account scope that you want your recommendations for. Amazon Web Services
162      * calculates recommendations including the management account and member accounts
163      * if the value is set to <code>PAYER</code>. If the value is <code>LINKED</code>,
164      * recommendations are calculated for individual member accounts only.</p>
165      */
SetAccountScope(const AccountScope & value)166     inline void SetAccountScope(const AccountScope& value) { m_accountScopeHasBeenSet = true; m_accountScope = value; }
167 
168     /**
169      * <p>The account scope that you want your recommendations for. Amazon Web Services
170      * calculates recommendations including the management account and member accounts
171      * if the value is set to <code>PAYER</code>. If the value is <code>LINKED</code>,
172      * recommendations are calculated for individual member accounts only.</p>
173      */
SetAccountScope(AccountScope && value)174     inline void SetAccountScope(AccountScope&& value) { m_accountScopeHasBeenSet = true; m_accountScope = std::move(value); }
175 
176     /**
177      * <p>The account scope that you want your recommendations for. Amazon Web Services
178      * calculates recommendations including the management account and member accounts
179      * if the value is set to <code>PAYER</code>. If the value is <code>LINKED</code>,
180      * recommendations are calculated for individual member accounts only.</p>
181      */
WithAccountScope(const AccountScope & value)182     inline GetReservationPurchaseRecommendationRequest& WithAccountScope(const AccountScope& value) { SetAccountScope(value); return *this;}
183 
184     /**
185      * <p>The account scope that you want your recommendations for. Amazon Web Services
186      * calculates recommendations including the management account and member accounts
187      * if the value is set to <code>PAYER</code>. If the value is <code>LINKED</code>,
188      * recommendations are calculated for individual member accounts only.</p>
189      */
WithAccountScope(AccountScope && value)190     inline GetReservationPurchaseRecommendationRequest& WithAccountScope(AccountScope&& value) { SetAccountScope(std::move(value)); return *this;}
191 
192 
193     /**
194      * <p>The number of previous days that you want Amazon Web Services to consider
195      * when it calculates your recommendations.</p>
196      */
GetLookbackPeriodInDays()197     inline const LookbackPeriodInDays& GetLookbackPeriodInDays() const{ return m_lookbackPeriodInDays; }
198 
199     /**
200      * <p>The number of previous days that you want Amazon Web Services to consider
201      * when it calculates your recommendations.</p>
202      */
LookbackPeriodInDaysHasBeenSet()203     inline bool LookbackPeriodInDaysHasBeenSet() const { return m_lookbackPeriodInDaysHasBeenSet; }
204 
205     /**
206      * <p>The number of previous days that you want Amazon Web Services to consider
207      * when it calculates your recommendations.</p>
208      */
SetLookbackPeriodInDays(const LookbackPeriodInDays & value)209     inline void SetLookbackPeriodInDays(const LookbackPeriodInDays& value) { m_lookbackPeriodInDaysHasBeenSet = true; m_lookbackPeriodInDays = value; }
210 
211     /**
212      * <p>The number of previous days that you want Amazon Web Services to consider
213      * when it calculates your recommendations.</p>
214      */
SetLookbackPeriodInDays(LookbackPeriodInDays && value)215     inline void SetLookbackPeriodInDays(LookbackPeriodInDays&& value) { m_lookbackPeriodInDaysHasBeenSet = true; m_lookbackPeriodInDays = std::move(value); }
216 
217     /**
218      * <p>The number of previous days that you want Amazon Web Services to consider
219      * when it calculates your recommendations.</p>
220      */
WithLookbackPeriodInDays(const LookbackPeriodInDays & value)221     inline GetReservationPurchaseRecommendationRequest& WithLookbackPeriodInDays(const LookbackPeriodInDays& value) { SetLookbackPeriodInDays(value); return *this;}
222 
223     /**
224      * <p>The number of previous days that you want Amazon Web Services to consider
225      * when it calculates your recommendations.</p>
226      */
WithLookbackPeriodInDays(LookbackPeriodInDays && value)227     inline GetReservationPurchaseRecommendationRequest& WithLookbackPeriodInDays(LookbackPeriodInDays&& value) { SetLookbackPeriodInDays(std::move(value)); return *this;}
228 
229 
230     /**
231      * <p>The reservation term that you want recommendations for.</p>
232      */
GetTermInYears()233     inline const TermInYears& GetTermInYears() const{ return m_termInYears; }
234 
235     /**
236      * <p>The reservation term that you want recommendations for.</p>
237      */
TermInYearsHasBeenSet()238     inline bool TermInYearsHasBeenSet() const { return m_termInYearsHasBeenSet; }
239 
240     /**
241      * <p>The reservation term that you want recommendations for.</p>
242      */
SetTermInYears(const TermInYears & value)243     inline void SetTermInYears(const TermInYears& value) { m_termInYearsHasBeenSet = true; m_termInYears = value; }
244 
245     /**
246      * <p>The reservation term that you want recommendations for.</p>
247      */
SetTermInYears(TermInYears && value)248     inline void SetTermInYears(TermInYears&& value) { m_termInYearsHasBeenSet = true; m_termInYears = std::move(value); }
249 
250     /**
251      * <p>The reservation term that you want recommendations for.</p>
252      */
WithTermInYears(const TermInYears & value)253     inline GetReservationPurchaseRecommendationRequest& WithTermInYears(const TermInYears& value) { SetTermInYears(value); return *this;}
254 
255     /**
256      * <p>The reservation term that you want recommendations for.</p>
257      */
WithTermInYears(TermInYears && value)258     inline GetReservationPurchaseRecommendationRequest& WithTermInYears(TermInYears&& value) { SetTermInYears(std::move(value)); return *this;}
259 
260 
261     /**
262      * <p>The reservation purchase option that you want recommendations for.</p>
263      */
GetPaymentOption()264     inline const PaymentOption& GetPaymentOption() const{ return m_paymentOption; }
265 
266     /**
267      * <p>The reservation purchase option that you want recommendations for.</p>
268      */
PaymentOptionHasBeenSet()269     inline bool PaymentOptionHasBeenSet() const { return m_paymentOptionHasBeenSet; }
270 
271     /**
272      * <p>The reservation purchase option that you want recommendations for.</p>
273      */
SetPaymentOption(const PaymentOption & value)274     inline void SetPaymentOption(const PaymentOption& value) { m_paymentOptionHasBeenSet = true; m_paymentOption = value; }
275 
276     /**
277      * <p>The reservation purchase option that you want recommendations for.</p>
278      */
SetPaymentOption(PaymentOption && value)279     inline void SetPaymentOption(PaymentOption&& value) { m_paymentOptionHasBeenSet = true; m_paymentOption = std::move(value); }
280 
281     /**
282      * <p>The reservation purchase option that you want recommendations for.</p>
283      */
WithPaymentOption(const PaymentOption & value)284     inline GetReservationPurchaseRecommendationRequest& WithPaymentOption(const PaymentOption& value) { SetPaymentOption(value); return *this;}
285 
286     /**
287      * <p>The reservation purchase option that you want recommendations for.</p>
288      */
WithPaymentOption(PaymentOption && value)289     inline GetReservationPurchaseRecommendationRequest& WithPaymentOption(PaymentOption&& value) { SetPaymentOption(std::move(value)); return *this;}
290 
291 
292     /**
293      * <p>The hardware specifications for the service instances that you want
294      * recommendations for, such as standard or convertible Amazon EC2 instances.</p>
295      */
GetServiceSpecification()296     inline const ServiceSpecification& GetServiceSpecification() const{ return m_serviceSpecification; }
297 
298     /**
299      * <p>The hardware specifications for the service instances that you want
300      * recommendations for, such as standard or convertible Amazon EC2 instances.</p>
301      */
ServiceSpecificationHasBeenSet()302     inline bool ServiceSpecificationHasBeenSet() const { return m_serviceSpecificationHasBeenSet; }
303 
304     /**
305      * <p>The hardware specifications for the service instances that you want
306      * recommendations for, such as standard or convertible Amazon EC2 instances.</p>
307      */
SetServiceSpecification(const ServiceSpecification & value)308     inline void SetServiceSpecification(const ServiceSpecification& value) { m_serviceSpecificationHasBeenSet = true; m_serviceSpecification = value; }
309 
310     /**
311      * <p>The hardware specifications for the service instances that you want
312      * recommendations for, such as standard or convertible Amazon EC2 instances.</p>
313      */
SetServiceSpecification(ServiceSpecification && value)314     inline void SetServiceSpecification(ServiceSpecification&& value) { m_serviceSpecificationHasBeenSet = true; m_serviceSpecification = std::move(value); }
315 
316     /**
317      * <p>The hardware specifications for the service instances that you want
318      * recommendations for, such as standard or convertible Amazon EC2 instances.</p>
319      */
WithServiceSpecification(const ServiceSpecification & value)320     inline GetReservationPurchaseRecommendationRequest& WithServiceSpecification(const ServiceSpecification& value) { SetServiceSpecification(value); return *this;}
321 
322     /**
323      * <p>The hardware specifications for the service instances that you want
324      * recommendations for, such as standard or convertible Amazon EC2 instances.</p>
325      */
WithServiceSpecification(ServiceSpecification && value)326     inline GetReservationPurchaseRecommendationRequest& WithServiceSpecification(ServiceSpecification&& value) { SetServiceSpecification(std::move(value)); return *this;}
327 
328 
329     /**
330      * <p>The number of recommendations that you want returned in a single response
331      * object.</p>
332      */
GetPageSize()333     inline int GetPageSize() const{ return m_pageSize; }
334 
335     /**
336      * <p>The number of recommendations that you want returned in a single response
337      * object.</p>
338      */
PageSizeHasBeenSet()339     inline bool PageSizeHasBeenSet() const { return m_pageSizeHasBeenSet; }
340 
341     /**
342      * <p>The number of recommendations that you want returned in a single response
343      * object.</p>
344      */
SetPageSize(int value)345     inline void SetPageSize(int value) { m_pageSizeHasBeenSet = true; m_pageSize = value; }
346 
347     /**
348      * <p>The number of recommendations that you want returned in a single response
349      * object.</p>
350      */
WithPageSize(int value)351     inline GetReservationPurchaseRecommendationRequest& WithPageSize(int value) { SetPageSize(value); return *this;}
352 
353 
354     /**
355      * <p>The pagination token that indicates the next set of results that you want to
356      * retrieve.</p>
357      */
GetNextPageToken()358     inline const Aws::String& GetNextPageToken() const{ return m_nextPageToken; }
359 
360     /**
361      * <p>The pagination token that indicates the next set of results that you want to
362      * retrieve.</p>
363      */
NextPageTokenHasBeenSet()364     inline bool NextPageTokenHasBeenSet() const { return m_nextPageTokenHasBeenSet; }
365 
366     /**
367      * <p>The pagination token that indicates the next set of results that you want to
368      * retrieve.</p>
369      */
SetNextPageToken(const Aws::String & value)370     inline void SetNextPageToken(const Aws::String& value) { m_nextPageTokenHasBeenSet = true; m_nextPageToken = value; }
371 
372     /**
373      * <p>The pagination token that indicates the next set of results that you want to
374      * retrieve.</p>
375      */
SetNextPageToken(Aws::String && value)376     inline void SetNextPageToken(Aws::String&& value) { m_nextPageTokenHasBeenSet = true; m_nextPageToken = std::move(value); }
377 
378     /**
379      * <p>The pagination token that indicates the next set of results that you want to
380      * retrieve.</p>
381      */
SetNextPageToken(const char * value)382     inline void SetNextPageToken(const char* value) { m_nextPageTokenHasBeenSet = true; m_nextPageToken.assign(value); }
383 
384     /**
385      * <p>The pagination token that indicates the next set of results that you want to
386      * retrieve.</p>
387      */
WithNextPageToken(const Aws::String & value)388     inline GetReservationPurchaseRecommendationRequest& WithNextPageToken(const Aws::String& value) { SetNextPageToken(value); return *this;}
389 
390     /**
391      * <p>The pagination token that indicates the next set of results that you want to
392      * retrieve.</p>
393      */
WithNextPageToken(Aws::String && value)394     inline GetReservationPurchaseRecommendationRequest& WithNextPageToken(Aws::String&& value) { SetNextPageToken(std::move(value)); return *this;}
395 
396     /**
397      * <p>The pagination token that indicates the next set of results that you want to
398      * retrieve.</p>
399      */
WithNextPageToken(const char * value)400     inline GetReservationPurchaseRecommendationRequest& WithNextPageToken(const char* value) { SetNextPageToken(value); return *this;}
401 
402   private:
403 
404     Aws::String m_accountId;
405     bool m_accountIdHasBeenSet;
406 
407     Aws::String m_service;
408     bool m_serviceHasBeenSet;
409 
410     Expression m_filter;
411     bool m_filterHasBeenSet;
412 
413     AccountScope m_accountScope;
414     bool m_accountScopeHasBeenSet;
415 
416     LookbackPeriodInDays m_lookbackPeriodInDays;
417     bool m_lookbackPeriodInDaysHasBeenSet;
418 
419     TermInYears m_termInYears;
420     bool m_termInYearsHasBeenSet;
421 
422     PaymentOption m_paymentOption;
423     bool m_paymentOptionHasBeenSet;
424 
425     ServiceSpecification m_serviceSpecification;
426     bool m_serviceSpecificationHasBeenSet;
427 
428     int m_pageSize;
429     bool m_pageSizeHasBeenSet;
430 
431     Aws::String m_nextPageToken;
432     bool m_nextPageTokenHasBeenSet;
433   };
434 
435 } // namespace Model
436 } // namespace CostExplorer
437 } // namespace Aws
438