aws-sdk-costexplorer 1.1.0 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/aws-sdk-costexplorer.rb +1 -1
- data/lib/aws-sdk-costexplorer/client.rb +192 -53
- data/lib/aws-sdk-costexplorer/client_api.rb +108 -0
- data/lib/aws-sdk-costexplorer/types.rb +512 -82
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 87fd4ca3923fa05af050f055cd46350ecaee4e56
|
4
|
+
data.tar.gz: 922c2e493f0550c59285e6f6a19317bcc1d36942
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9488f467344b8eb01fb3ce1bae4b8324ee6725313b0e7a14dfdad98e6a7df633908b131a95f4f31d0491b0b7a311a1b74144ed304ef3d9794bac5d8851412255
|
7
|
+
data.tar.gz: 2d9b78663c7e2b68eea6c2ce794662ce3bc51b5438f35c9fc4c85d61f92072192a421ae05d51a6848ae51d2c1fa9c69e9c1016a7251588404113b57986c6d3c3
|
data/lib/aws-sdk-costexplorer.rb
CHANGED
@@ -155,13 +155,14 @@ module Aws::CostExplorer
|
|
155
155
|
|
156
156
|
# @!group API Operations
|
157
157
|
|
158
|
-
#
|
158
|
+
# Retrieves cost and usage metrics for your account. You can specify
|
159
159
|
# which cost and usage-related metric, such as `BlendedCosts` or
|
160
160
|
# `UsageQuantity`, that you want the request to return. You can also
|
161
161
|
# filter and group your data by various dimensions, such as `SERVICE` or
|
162
|
-
# `AZ`, in a specific time range.
|
163
|
-
#
|
164
|
-
# organization have access to all member
|
162
|
+
# `AZ`, in a specific time range. For a complete list of valid
|
163
|
+
# dimensions, see the ` GetDimensionValues ` operation. Master accounts
|
164
|
+
# in an organization in AWS Organizations have access to all member
|
165
|
+
# accounts.
|
165
166
|
#
|
166
167
|
# @option params [Types::DateInterval] :time_period
|
167
168
|
# Sets the start and end dates for retrieving AWS costs. The start date
|
@@ -177,10 +178,10 @@ module Aws::CostExplorer
|
|
177
178
|
#
|
178
179
|
# @option params [Types::Expression] :filter
|
179
180
|
# Filters AWS costs by different dimensions. For example, you can
|
180
|
-
# specify `SERVICE` and `LINKED_ACCOUNT` and get the costs
|
181
|
-
# with that account's usage of that service. You can nest
|
182
|
-
# objects to define any combination of dimension filters.
|
183
|
-
# information, see [Expression][1].
|
181
|
+
# specify `SERVICE` and `LINKED_ACCOUNT` and get the costs that are
|
182
|
+
# associated with that account's usage of that service. You can nest
|
183
|
+
# `Expression` objects to define any combination of dimension filters.
|
184
|
+
# For more information, see [Expression][1].
|
184
185
|
#
|
185
186
|
#
|
186
187
|
#
|
@@ -202,6 +203,8 @@ module Aws::CostExplorer
|
|
202
203
|
#
|
203
204
|
# </note>
|
204
205
|
#
|
206
|
+
# `Metrics` is required for `GetCostAndUsage` requests.
|
207
|
+
#
|
205
208
|
#
|
206
209
|
#
|
207
210
|
# [1]: https://aws.amazon.com/premiumsupport/knowledge-center/blended-rates-intro/
|
@@ -213,9 +216,9 @@ module Aws::CostExplorer
|
|
213
216
|
# When you group by tag key, you get all tag values, including empty
|
214
217
|
# strings.
|
215
218
|
#
|
216
|
-
# Valid values are `AZ`, `INSTANCE_TYPE`, `
|
217
|
-
# `
|
218
|
-
# `USAGE_TYPE`.
|
219
|
+
# Valid values are `AZ`, `INSTANCE_TYPE`, `LEGAL_ENTITY_NAME`,
|
220
|
+
# `LINKED_ACCOUNT`, `OPERATION`, `PLATFORM`, `PURCHASE_TYPE`, `SERVICE`,
|
221
|
+
# `TAGS`, `TENANCY`, and `USAGE_TYPE`.
|
219
222
|
#
|
220
223
|
# @option params [String] :next_page_token
|
221
224
|
# The token to retrieve the next set of results. AWS provides the token
|
@@ -298,9 +301,9 @@ module Aws::CostExplorer
|
|
298
301
|
req.send_request(options)
|
299
302
|
end
|
300
303
|
|
301
|
-
#
|
302
|
-
#
|
303
|
-
#
|
304
|
+
# Retrieves all available filter values for a specific filter over a
|
305
|
+
# period of time. You can search the dimension values for an arbitrary
|
306
|
+
# string.
|
304
307
|
#
|
305
308
|
# @option params [String] :search_string
|
306
309
|
# The value that you want to search the filter values for.
|
@@ -313,7 +316,7 @@ module Aws::CostExplorer
|
|
313
316
|
# `2017-04-30` but not including `2017-05-01`.
|
314
317
|
#
|
315
318
|
# @option params [required, String] :dimension
|
316
|
-
# The name of the dimension. Each `
|
319
|
+
# The name of the dimension. Each `Dimension` is available for different
|
317
320
|
# a `Context`. For more information, see `Context`.
|
318
321
|
#
|
319
322
|
# @option params [String] :context
|
@@ -321,38 +324,39 @@ module Aws::CostExplorer
|
|
321
324
|
# `RESERVATIONS` or `COST_AND_USAGE`. The default value is
|
322
325
|
# `COST_AND_USAGE`. If the context is set to `RESERVATIONS`, the
|
323
326
|
# resulting dimension values can be used in the
|
324
|
-
# `GetReservationUtilization`
|
325
|
-
# `COST_AND_USAGE
|
327
|
+
# `GetReservationUtilization` operation. If the context is set to
|
328
|
+
# `COST_AND_USAGE` the resulting dimension values can be used in the
|
326
329
|
# `GetCostAndUsage` operation.
|
327
330
|
#
|
328
331
|
# If you set the context to `CostAndUsage`, you can use the following
|
329
332
|
# dimensions for searching:
|
330
333
|
#
|
331
|
-
# * AZ - The Availability Zone. An example is us-east-1a
|
334
|
+
# * AZ - The Availability Zone. An example is `us-east-1a`.
|
332
335
|
#
|
333
|
-
# * INSTANCE\_TYPE - The type of
|
336
|
+
# * INSTANCE\_TYPE - The type of instance. An example is an EC2
|
337
|
+
# `m4.xlarge`.
|
334
338
|
#
|
335
339
|
# * LINKED\_ACCOUNT - The description in the attribute map that includes
|
336
340
|
# the full name of the member account. The value field contains the
|
337
|
-
# AWS ID of the member account
|
341
|
+
# AWS ID of the member account.
|
338
342
|
#
|
339
|
-
# * OPERATION - The action performed. Examples include RunInstance and
|
340
|
-
# CreateBucket
|
343
|
+
# * OPERATION - The action performed. Examples include `RunInstance` and
|
344
|
+
# `CreateBucket`.
|
341
345
|
#
|
342
346
|
# * PURCHASE\_TYPE - The reservation type of the purchase to which this
|
343
|
-
# usage is related. Examples include
|
344
|
-
# Reserved Instances
|
347
|
+
# usage is related. Examples include On-Demand Instances and Standard
|
348
|
+
# Reserved Instances.
|
345
349
|
#
|
346
350
|
# * SERVICE - The AWS service such as DynamoDB.
|
347
351
|
#
|
348
352
|
# * USAGE\_TYPE - The type of usage. An example is
|
349
|
-
# DataTransfer-In-Bytes
|
350
|
-
#
|
351
|
-
# Hrs.
|
353
|
+
# `DataTransfer-In-Bytes`. The response for the `GetDimensionValues`
|
354
|
+
# operation includes a unit attribute, examples of which include GB
|
355
|
+
# and Hrs.
|
352
356
|
#
|
353
357
|
# * USAGE\_TYPE\_GROUP - The grouping of common usage types. An example
|
354
|
-
# is EC2: CloudWatch – Alarms. The response for this
|
355
|
-
# unit attribute.
|
358
|
+
# is EC2: CloudWatch – Alarms. The response for this operation
|
359
|
+
# includes a unit attribute.
|
356
360
|
#
|
357
361
|
# * RECORD\_TYPE - The different types of charges such as RI fees, usage
|
358
362
|
# costs, tax refunds, and credits.
|
@@ -360,20 +364,24 @@ module Aws::CostExplorer
|
|
360
364
|
# If you set the context to `RESERVATIONS`, you can use the following
|
361
365
|
# dimensions for searching:
|
362
366
|
#
|
363
|
-
# * AZ - The Availability Zone. An example is us-east-1a
|
367
|
+
# * AZ - The Availability Zone. An example is `us-east-1a`.
|
364
368
|
#
|
365
|
-
# * INSTANCE\_TYPE - The type of
|
369
|
+
# * INSTANCE\_TYPE - The type of instance. An example is an EC2
|
370
|
+
# `m4.xlarge`.
|
366
371
|
#
|
367
372
|
# * LINKED\_ACCOUNT - The description in the attribute map that includes
|
368
373
|
# the full name of the member account. The value field contains the
|
369
|
-
# AWS ID of the member account
|
374
|
+
# AWS ID of the member account.
|
370
375
|
#
|
371
|
-
# * PLATFORM - The
|
376
|
+
# * PLATFORM - The specific combination of operating system, license
|
377
|
+
# model, and software on an instance. For example, a Windows instance
|
378
|
+
# with SQL Server Web and no license, or a Red Hat Enterprise Linux
|
379
|
+
# instance.
|
372
380
|
#
|
373
|
-
# * REGION - The AWS
|
381
|
+
# * REGION - The AWS Region.
|
374
382
|
#
|
375
|
-
# * SCOPE - The scope of a
|
376
|
-
# or a single
|
383
|
+
# * SCOPE - The scope of a Reserved Instance (RI). Values are regional
|
384
|
+
# or a single Availability Zone.
|
377
385
|
#
|
378
386
|
# * TENANCY - The tenancy of a resource. Examples are shared or
|
379
387
|
# dedicated.
|
@@ -422,10 +430,13 @@ module Aws::CostExplorer
|
|
422
430
|
req.send_request(options)
|
423
431
|
end
|
424
432
|
|
425
|
-
#
|
426
|
-
#
|
427
|
-
#
|
428
|
-
#
|
433
|
+
# Retrieves the reservation coverage for your account. This allows you
|
434
|
+
# to see how much of your Amazon Elastic Compute Cloud, Amazon
|
435
|
+
# ElastiCache, Amazon Relational Database Service, or Amazon Redshift
|
436
|
+
# usage is covered by a reservation. An organization's master account
|
437
|
+
# can see the coverage of the associated member accounts. For any time
|
438
|
+
# period, you can filter data about reservation usage by the following
|
439
|
+
# dimensions:
|
429
440
|
#
|
430
441
|
# * AZ
|
431
442
|
#
|
@@ -445,14 +456,14 @@ module Aws::CostExplorer
|
|
445
456
|
# @option params [required, Types::DateInterval] :time_period
|
446
457
|
# The start and end dates of the period for which you want to retrieve
|
447
458
|
# data about reservation coverage. You can retrieve data for a maximum
|
448
|
-
# of 13 months
|
459
|
+
# of 13 months: the last 12 months and the current month. The start date
|
449
460
|
# is inclusive, but the end date is exclusive. For example, if `start`
|
450
461
|
# is `2017-01-01` and `end` is `2017-05-01`, then the cost and usage
|
451
462
|
# data is retrieved from `2017-01-01` up to and including `2017-04-30`
|
452
463
|
# but not including `2017-05-01`.
|
453
464
|
#
|
454
465
|
# @option params [Array<Types::GroupDefinition>] :group_by
|
455
|
-
# You can group the data by the following attributes
|
466
|
+
# You can group the data by the following attributes:
|
456
467
|
#
|
457
468
|
# * AZ
|
458
469
|
#
|
@@ -476,7 +487,7 @@ module Aws::CostExplorer
|
|
476
487
|
#
|
477
488
|
# @option params [Types::Expression] :filter
|
478
489
|
# Filters utilization data by dimensions. You can filter by the
|
479
|
-
# following dimensions
|
490
|
+
# following dimensions:
|
480
491
|
#
|
481
492
|
# * AZ
|
482
493
|
#
|
@@ -490,7 +501,7 @@ module Aws::CostExplorer
|
|
490
501
|
#
|
491
502
|
# * TENANCY
|
492
503
|
#
|
493
|
-
# `GetReservationCoverage` uses the same `Expression` object as the
|
504
|
+
# `GetReservationCoverage` uses the same ` Expression ` object as the
|
494
505
|
# other operations, but only `AND` is supported among each dimension.
|
495
506
|
# You can nest only one level deep. If there are multiple values for a
|
496
507
|
# dimension, they are OR'd together.
|
@@ -577,11 +588,139 @@ module Aws::CostExplorer
|
|
577
588
|
req.send_request(options)
|
578
589
|
end
|
579
590
|
|
580
|
-
#
|
581
|
-
#
|
582
|
-
#
|
583
|
-
#
|
584
|
-
#
|
591
|
+
# Gets recommendations for which reservations to purchase. These
|
592
|
+
# recommendations could help you reduce your costs. Reservations provide
|
593
|
+
# a discounted hourly rate (up to 75%) compared to On-Demand pricing.
|
594
|
+
#
|
595
|
+
# AWS generates your recommendations by identifying your On-Demand usage
|
596
|
+
# during a specific time period and collecting your usage into
|
597
|
+
# categories that are eligible for a reservation. After AWS has these
|
598
|
+
# categories, it simulates every combination of reservations in each
|
599
|
+
# category of usage to identify the best number of each type of RI to
|
600
|
+
# purchase to maximize your estimated savings.
|
601
|
+
#
|
602
|
+
# For example, AWS automatically aggregates your EC2 Linux, shared
|
603
|
+
# tenancy, and c4 family usage in the US West (Oregon) Region and
|
604
|
+
# recommends that you buy size-flexible regional reservations to apply
|
605
|
+
# to the c4 family usage. AWS recommends the smallest size instance in
|
606
|
+
# an instance family. This makes it easier to purchase a size-flexible
|
607
|
+
# RI. AWS also shows the equal number of normalized units so that you
|
608
|
+
# can purchase any instance size that you want. For this example, your
|
609
|
+
# RI recommendation would be for `c4.large`, because that is the
|
610
|
+
# smallest size instance in the c4 instance family.
|
611
|
+
#
|
612
|
+
# @option params [String] :account_id
|
613
|
+
# The account ID that is associated with the recommendation.
|
614
|
+
#
|
615
|
+
# @option params [required, String] :service
|
616
|
+
# The specific service that you want recommendations for.
|
617
|
+
#
|
618
|
+
# @option params [String] :account_scope
|
619
|
+
# The account scope that you want recommendations for. The only valid
|
620
|
+
# value is `Payer`. This means that AWS includes the master account and
|
621
|
+
# any member accounts when it calculates its recommendations.
|
622
|
+
#
|
623
|
+
# @option params [String] :lookback_period_in_days
|
624
|
+
# The number of previous days that you want AWS to consider when it
|
625
|
+
# calculates your recommendations.
|
626
|
+
#
|
627
|
+
# @option params [String] :term_in_years
|
628
|
+
# The reservation term that you want recommendations for.
|
629
|
+
#
|
630
|
+
# @option params [String] :payment_option
|
631
|
+
# The reservation purchase option that you want recommendations for.
|
632
|
+
#
|
633
|
+
# @option params [Types::ServiceSpecification] :service_specification
|
634
|
+
# The specific service, such as EC2, that you want recommendations for.
|
635
|
+
#
|
636
|
+
# @option params [Integer] :page_size
|
637
|
+
# The number of recommendations that you want returned in a single
|
638
|
+
# response object.
|
639
|
+
#
|
640
|
+
# @option params [String] :next_page_token
|
641
|
+
# The pagination token that indicates the next set of results that you
|
642
|
+
# want to retrieve.
|
643
|
+
#
|
644
|
+
# @return [Types::GetReservationPurchaseRecommendationResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
|
645
|
+
#
|
646
|
+
# * {Types::GetReservationPurchaseRecommendationResponse#metadata #metadata} => Types::ReservationPurchaseRecommendationMetadata
|
647
|
+
# * {Types::GetReservationPurchaseRecommendationResponse#recommendations #recommendations} => Array<Types::ReservationPurchaseRecommendation>
|
648
|
+
# * {Types::GetReservationPurchaseRecommendationResponse#next_page_token #next_page_token} => String
|
649
|
+
#
|
650
|
+
# @example Request syntax with placeholder values
|
651
|
+
#
|
652
|
+
# resp = client.get_reservation_purchase_recommendation({
|
653
|
+
# account_id: "GenericString",
|
654
|
+
# service: "GenericString", # required
|
655
|
+
# account_scope: "PAYER", # accepts PAYER
|
656
|
+
# lookback_period_in_days: "SEVEN_DAYS", # accepts SEVEN_DAYS, THIRTY_DAYS, SIXTY_DAYS
|
657
|
+
# term_in_years: "ONE_YEAR", # accepts ONE_YEAR, THREE_YEARS
|
658
|
+
# payment_option: "NO_UPFRONT", # accepts NO_UPFRONT, PARTIAL_UPFRONT, ALL_UPFRONT
|
659
|
+
# service_specification: {
|
660
|
+
# ec2_specification: {
|
661
|
+
# offering_class: "STANDARD", # accepts STANDARD, CONVERTIBLE
|
662
|
+
# },
|
663
|
+
# },
|
664
|
+
# page_size: 1,
|
665
|
+
# next_page_token: "NextPageToken",
|
666
|
+
# })
|
667
|
+
#
|
668
|
+
# @example Response structure
|
669
|
+
#
|
670
|
+
# resp.metadata.recommendation_id #=> String
|
671
|
+
# resp.metadata.generation_timestamp #=> String
|
672
|
+
# resp.recommendations #=> Array
|
673
|
+
# resp.recommendations[0].account_scope #=> String, one of "PAYER"
|
674
|
+
# resp.recommendations[0].lookback_period_in_days #=> String, one of "SEVEN_DAYS", "THIRTY_DAYS", "SIXTY_DAYS"
|
675
|
+
# resp.recommendations[0].term_in_years #=> String, one of "ONE_YEAR", "THREE_YEARS"
|
676
|
+
# resp.recommendations[0].payment_option #=> String, one of "NO_UPFRONT", "PARTIAL_UPFRONT", "ALL_UPFRONT"
|
677
|
+
# resp.recommendations[0].service_specification.ec2_specification.offering_class #=> String, one of "STANDARD", "CONVERTIBLE"
|
678
|
+
# resp.recommendations[0].recommendation_details #=> Array
|
679
|
+
# resp.recommendations[0].recommendation_details[0].instance_details.ec2_instance_details.family #=> String
|
680
|
+
# resp.recommendations[0].recommendation_details[0].instance_details.ec2_instance_details.instance_type #=> String
|
681
|
+
# resp.recommendations[0].recommendation_details[0].instance_details.ec2_instance_details.region #=> String
|
682
|
+
# resp.recommendations[0].recommendation_details[0].instance_details.ec2_instance_details.availability_zone #=> String
|
683
|
+
# resp.recommendations[0].recommendation_details[0].instance_details.ec2_instance_details.platform #=> String
|
684
|
+
# resp.recommendations[0].recommendation_details[0].instance_details.ec2_instance_details.tenancy #=> String
|
685
|
+
# resp.recommendations[0].recommendation_details[0].instance_details.ec2_instance_details.current_generation #=> Boolean
|
686
|
+
# resp.recommendations[0].recommendation_details[0].instance_details.ec2_instance_details.size_flex_eligible #=> Boolean
|
687
|
+
# resp.recommendations[0].recommendation_details[0].recommended_number_of_instances_to_purchase #=> String
|
688
|
+
# resp.recommendations[0].recommendation_details[0].recommended_normalized_units_to_purchase #=> String
|
689
|
+
# resp.recommendations[0].recommendation_details[0].minimum_number_of_instances_used_per_hour #=> String
|
690
|
+
# resp.recommendations[0].recommendation_details[0].minimum_normalized_units_used_per_hour #=> String
|
691
|
+
# resp.recommendations[0].recommendation_details[0].maximum_number_of_instances_used_per_hour #=> String
|
692
|
+
# resp.recommendations[0].recommendation_details[0].maximum_normalized_units_used_per_hour #=> String
|
693
|
+
# resp.recommendations[0].recommendation_details[0].average_number_of_instances_used_per_hour #=> String
|
694
|
+
# resp.recommendations[0].recommendation_details[0].average_normalized_units_used_per_hour #=> String
|
695
|
+
# resp.recommendations[0].recommendation_details[0].average_utilization #=> String
|
696
|
+
# resp.recommendations[0].recommendation_details[0].estimated_break_even_in_months #=> String
|
697
|
+
# resp.recommendations[0].recommendation_details[0].currency_code #=> String
|
698
|
+
# resp.recommendations[0].recommendation_details[0].estimated_monthly_savings_amount #=> String
|
699
|
+
# resp.recommendations[0].recommendation_details[0].estimated_monthly_savings_percentage #=> String
|
700
|
+
# resp.recommendations[0].recommendation_details[0].estimated_monthly_on_demand_cost #=> String
|
701
|
+
# resp.recommendations[0].recommendation_details[0].estimated_reservation_cost_for_lookback_period #=> String
|
702
|
+
# resp.recommendations[0].recommendation_details[0].upfront_cost #=> String
|
703
|
+
# resp.recommendations[0].recommendation_details[0].recurring_standard_monthly_cost #=> String
|
704
|
+
# resp.recommendations[0].recommendation_summary.total_estimated_monthly_savings_amount #=> String
|
705
|
+
# resp.recommendations[0].recommendation_summary.total_estimated_monthly_savings_percentage #=> String
|
706
|
+
# resp.recommendations[0].recommendation_summary.currency_code #=> String
|
707
|
+
# resp.next_page_token #=> String
|
708
|
+
#
|
709
|
+
# @see http://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/GetReservationPurchaseRecommendation AWS API Documentation
|
710
|
+
#
|
711
|
+
# @overload get_reservation_purchase_recommendation(params = {})
|
712
|
+
# @param [Hash] params ({})
|
713
|
+
def get_reservation_purchase_recommendation(params = {}, options = {})
|
714
|
+
req = build_request(:get_reservation_purchase_recommendation, params)
|
715
|
+
req.send_request(options)
|
716
|
+
end
|
717
|
+
|
718
|
+
# You can retrieve the reservation utilization for your account. Master
|
719
|
+
# accounts in an organization in AWS Organizations have access to their
|
720
|
+
# associated member accounts. You can filter data by dimensions in a
|
721
|
+
# time period. You can use `GetDimensionValues` to determine the
|
722
|
+
# possible dimension values. Currently, you can group only by
|
723
|
+
# `SUBSCRIPTION_ID`.
|
585
724
|
#
|
586
725
|
# @option params [required, Types::DateInterval] :time_period
|
587
726
|
# Sets the start and end dates for retrieving reserve instance (RI)
|
@@ -602,10 +741,10 @@ module Aws::CostExplorer
|
|
602
741
|
#
|
603
742
|
# @option params [Types::Expression] :filter
|
604
743
|
# Filters utilization data by using different dimensions.
|
605
|
-
# `GetReservationUtilization` uses the same `Expression` object as the
|
744
|
+
# `GetReservationUtilization` uses the same ` Expression ` object as the
|
606
745
|
# other operations, but only `AND` is supported among each dimension,
|
607
|
-
# and nesting is supported
|
608
|
-
#
|
746
|
+
# and nesting is supported to only one level deep. If there are multiple
|
747
|
+
# values for a dimension, they are OR'd together.
|
609
748
|
#
|
610
749
|
# @option params [String] :next_page_token
|
611
750
|
# The token to retrieve the next set of results. AWS provides the token
|
@@ -761,7 +900,7 @@ module Aws::CostExplorer
|
|
761
900
|
params: params,
|
762
901
|
config: config)
|
763
902
|
context[:gem_name] = 'aws-sdk-costexplorer'
|
764
|
-
context[:gem_version] = '1.
|
903
|
+
context[:gem_version] = '1.2.0'
|
765
904
|
Seahorse::Client::Request.new(handlers, context)
|
766
905
|
end
|
767
906
|
|
@@ -11,6 +11,7 @@ module Aws::CostExplorer
|
|
11
11
|
|
12
12
|
include Seahorse::Model
|
13
13
|
|
14
|
+
AccountScope = Shapes::StringShape.new(name: 'AccountScope')
|
14
15
|
AttributeType = Shapes::StringShape.new(name: 'AttributeType')
|
15
16
|
AttributeValue = Shapes::StringShape.new(name: 'AttributeValue')
|
16
17
|
Attributes = Shapes::MapShape.new(name: 'Attributes')
|
@@ -27,17 +28,23 @@ module Aws::CostExplorer
|
|
27
28
|
DimensionValues = Shapes::StructureShape.new(name: 'DimensionValues')
|
28
29
|
DimensionValuesWithAttributes = Shapes::StructureShape.new(name: 'DimensionValuesWithAttributes')
|
29
30
|
DimensionValuesWithAttributesList = Shapes::ListShape.new(name: 'DimensionValuesWithAttributesList')
|
31
|
+
EC2InstanceDetails = Shapes::StructureShape.new(name: 'EC2InstanceDetails')
|
32
|
+
EC2Specification = Shapes::StructureShape.new(name: 'EC2Specification')
|
30
33
|
Entity = Shapes::StringShape.new(name: 'Entity')
|
31
34
|
ErrorMessage = Shapes::StringShape.new(name: 'ErrorMessage')
|
32
35
|
Estimated = Shapes::BooleanShape.new(name: 'Estimated')
|
33
36
|
Expression = Shapes::StructureShape.new(name: 'Expression')
|
34
37
|
Expressions = Shapes::ListShape.new(name: 'Expressions')
|
38
|
+
GenericBoolean = Shapes::BooleanShape.new(name: 'GenericBoolean')
|
39
|
+
GenericString = Shapes::StringShape.new(name: 'GenericString')
|
35
40
|
GetCostAndUsageRequest = Shapes::StructureShape.new(name: 'GetCostAndUsageRequest')
|
36
41
|
GetCostAndUsageResponse = Shapes::StructureShape.new(name: 'GetCostAndUsageResponse')
|
37
42
|
GetDimensionValuesRequest = Shapes::StructureShape.new(name: 'GetDimensionValuesRequest')
|
38
43
|
GetDimensionValuesResponse = Shapes::StructureShape.new(name: 'GetDimensionValuesResponse')
|
39
44
|
GetReservationCoverageRequest = Shapes::StructureShape.new(name: 'GetReservationCoverageRequest')
|
40
45
|
GetReservationCoverageResponse = Shapes::StructureShape.new(name: 'GetReservationCoverageResponse')
|
46
|
+
GetReservationPurchaseRecommendationRequest = Shapes::StructureShape.new(name: 'GetReservationPurchaseRecommendationRequest')
|
47
|
+
GetReservationPurchaseRecommendationResponse = Shapes::StructureShape.new(name: 'GetReservationPurchaseRecommendationResponse')
|
41
48
|
GetReservationUtilizationRequest = Shapes::StructureShape.new(name: 'GetReservationUtilizationRequest')
|
42
49
|
GetReservationUtilizationResponse = Shapes::StructureShape.new(name: 'GetReservationUtilizationResponse')
|
43
50
|
GetTagsRequest = Shapes::StructureShape.new(name: 'GetTagsRequest')
|
@@ -49,10 +56,12 @@ module Aws::CostExplorer
|
|
49
56
|
GroupDefinitionType = Shapes::StringShape.new(name: 'GroupDefinitionType')
|
50
57
|
GroupDefinitions = Shapes::ListShape.new(name: 'GroupDefinitions')
|
51
58
|
Groups = Shapes::ListShape.new(name: 'Groups')
|
59
|
+
InstanceDetails = Shapes::StructureShape.new(name: 'InstanceDetails')
|
52
60
|
InvalidNextTokenException = Shapes::StructureShape.new(name: 'InvalidNextTokenException')
|
53
61
|
Key = Shapes::StringShape.new(name: 'Key')
|
54
62
|
Keys = Shapes::ListShape.new(name: 'Keys')
|
55
63
|
LimitExceededException = Shapes::StructureShape.new(name: 'LimitExceededException')
|
64
|
+
LookbackPeriodInDays = Shapes::StringShape.new(name: 'LookbackPeriodInDays')
|
56
65
|
MetricAmount = Shapes::StringShape.new(name: 'MetricAmount')
|
57
66
|
MetricName = Shapes::StringShape.new(name: 'MetricName')
|
58
67
|
MetricNames = Shapes::ListShape.new(name: 'MetricNames')
|
@@ -60,23 +69,34 @@ module Aws::CostExplorer
|
|
60
69
|
MetricValue = Shapes::StructureShape.new(name: 'MetricValue')
|
61
70
|
Metrics = Shapes::MapShape.new(name: 'Metrics')
|
62
71
|
NextPageToken = Shapes::StringShape.new(name: 'NextPageToken')
|
72
|
+
NonNegativeInteger = Shapes::IntegerShape.new(name: 'NonNegativeInteger')
|
73
|
+
OfferingClass = Shapes::StringShape.new(name: 'OfferingClass')
|
63
74
|
OnDemandHours = Shapes::StringShape.new(name: 'OnDemandHours')
|
64
75
|
PageSize = Shapes::IntegerShape.new(name: 'PageSize')
|
76
|
+
PaymentOption = Shapes::StringShape.new(name: 'PaymentOption')
|
65
77
|
PurchasedHours = Shapes::StringShape.new(name: 'PurchasedHours')
|
66
78
|
ReservationAggregates = Shapes::StructureShape.new(name: 'ReservationAggregates')
|
67
79
|
ReservationCoverageGroup = Shapes::StructureShape.new(name: 'ReservationCoverageGroup')
|
68
80
|
ReservationCoverageGroups = Shapes::ListShape.new(name: 'ReservationCoverageGroups')
|
69
81
|
ReservationGroupKey = Shapes::StringShape.new(name: 'ReservationGroupKey')
|
70
82
|
ReservationGroupValue = Shapes::StringShape.new(name: 'ReservationGroupValue')
|
83
|
+
ReservationPurchaseRecommendation = Shapes::StructureShape.new(name: 'ReservationPurchaseRecommendation')
|
84
|
+
ReservationPurchaseRecommendationDetail = Shapes::StructureShape.new(name: 'ReservationPurchaseRecommendationDetail')
|
85
|
+
ReservationPurchaseRecommendationDetails = Shapes::ListShape.new(name: 'ReservationPurchaseRecommendationDetails')
|
86
|
+
ReservationPurchaseRecommendationMetadata = Shapes::StructureShape.new(name: 'ReservationPurchaseRecommendationMetadata')
|
87
|
+
ReservationPurchaseRecommendationSummary = Shapes::StructureShape.new(name: 'ReservationPurchaseRecommendationSummary')
|
88
|
+
ReservationPurchaseRecommendations = Shapes::ListShape.new(name: 'ReservationPurchaseRecommendations')
|
71
89
|
ReservationUtilizationGroup = Shapes::StructureShape.new(name: 'ReservationUtilizationGroup')
|
72
90
|
ReservationUtilizationGroups = Shapes::ListShape.new(name: 'ReservationUtilizationGroups')
|
73
91
|
ReservedHours = Shapes::StringShape.new(name: 'ReservedHours')
|
74
92
|
ResultByTime = Shapes::StructureShape.new(name: 'ResultByTime')
|
75
93
|
ResultsByTime = Shapes::ListShape.new(name: 'ResultsByTime')
|
76
94
|
SearchString = Shapes::StringShape.new(name: 'SearchString')
|
95
|
+
ServiceSpecification = Shapes::StructureShape.new(name: 'ServiceSpecification')
|
77
96
|
TagKey = Shapes::StringShape.new(name: 'TagKey')
|
78
97
|
TagList = Shapes::ListShape.new(name: 'TagList')
|
79
98
|
TagValues = Shapes::StructureShape.new(name: 'TagValues')
|
99
|
+
TermInYears = Shapes::StringShape.new(name: 'TermInYears')
|
80
100
|
TotalActualHours = Shapes::StringShape.new(name: 'TotalActualHours')
|
81
101
|
TotalRunningHours = Shapes::StringShape.new(name: 'TotalRunningHours')
|
82
102
|
UnusedHours = Shapes::StringShape.new(name: 'UnusedHours')
|
@@ -120,6 +140,19 @@ module Aws::CostExplorer
|
|
120
140
|
|
121
141
|
DimensionValuesWithAttributesList.member = Shapes::ShapeRef.new(shape: DimensionValuesWithAttributes)
|
122
142
|
|
143
|
+
EC2InstanceDetails.add_member(:family, Shapes::ShapeRef.new(shape: GenericString, location_name: "Family"))
|
144
|
+
EC2InstanceDetails.add_member(:instance_type, Shapes::ShapeRef.new(shape: GenericString, location_name: "InstanceType"))
|
145
|
+
EC2InstanceDetails.add_member(:region, Shapes::ShapeRef.new(shape: GenericString, location_name: "Region"))
|
146
|
+
EC2InstanceDetails.add_member(:availability_zone, Shapes::ShapeRef.new(shape: GenericString, location_name: "AvailabilityZone"))
|
147
|
+
EC2InstanceDetails.add_member(:platform, Shapes::ShapeRef.new(shape: GenericString, location_name: "Platform"))
|
148
|
+
EC2InstanceDetails.add_member(:tenancy, Shapes::ShapeRef.new(shape: GenericString, location_name: "Tenancy"))
|
149
|
+
EC2InstanceDetails.add_member(:current_generation, Shapes::ShapeRef.new(shape: GenericBoolean, location_name: "CurrentGeneration"))
|
150
|
+
EC2InstanceDetails.add_member(:size_flex_eligible, Shapes::ShapeRef.new(shape: GenericBoolean, location_name: "SizeFlexEligible"))
|
151
|
+
EC2InstanceDetails.struct_class = Types::EC2InstanceDetails
|
152
|
+
|
153
|
+
EC2Specification.add_member(:offering_class, Shapes::ShapeRef.new(shape: OfferingClass, location_name: "OfferingClass"))
|
154
|
+
EC2Specification.struct_class = Types::EC2Specification
|
155
|
+
|
123
156
|
Expression.add_member(:or, Shapes::ShapeRef.new(shape: Expressions, location_name: "Or"))
|
124
157
|
Expression.add_member(:and, Shapes::ShapeRef.new(shape: Expressions, location_name: "And"))
|
125
158
|
Expression.add_member(:not, Shapes::ShapeRef.new(shape: Expression, location_name: "Not"))
|
@@ -167,6 +200,22 @@ module Aws::CostExplorer
|
|
167
200
|
GetReservationCoverageResponse.add_member(:next_page_token, Shapes::ShapeRef.new(shape: NextPageToken, location_name: "NextPageToken"))
|
168
201
|
GetReservationCoverageResponse.struct_class = Types::GetReservationCoverageResponse
|
169
202
|
|
203
|
+
GetReservationPurchaseRecommendationRequest.add_member(:account_id, Shapes::ShapeRef.new(shape: GenericString, location_name: "AccountId"))
|
204
|
+
GetReservationPurchaseRecommendationRequest.add_member(:service, Shapes::ShapeRef.new(shape: GenericString, required: true, location_name: "Service"))
|
205
|
+
GetReservationPurchaseRecommendationRequest.add_member(:account_scope, Shapes::ShapeRef.new(shape: AccountScope, location_name: "AccountScope"))
|
206
|
+
GetReservationPurchaseRecommendationRequest.add_member(:lookback_period_in_days, Shapes::ShapeRef.new(shape: LookbackPeriodInDays, location_name: "LookbackPeriodInDays"))
|
207
|
+
GetReservationPurchaseRecommendationRequest.add_member(:term_in_years, Shapes::ShapeRef.new(shape: TermInYears, location_name: "TermInYears"))
|
208
|
+
GetReservationPurchaseRecommendationRequest.add_member(:payment_option, Shapes::ShapeRef.new(shape: PaymentOption, location_name: "PaymentOption"))
|
209
|
+
GetReservationPurchaseRecommendationRequest.add_member(:service_specification, Shapes::ShapeRef.new(shape: ServiceSpecification, location_name: "ServiceSpecification"))
|
210
|
+
GetReservationPurchaseRecommendationRequest.add_member(:page_size, Shapes::ShapeRef.new(shape: NonNegativeInteger, location_name: "PageSize"))
|
211
|
+
GetReservationPurchaseRecommendationRequest.add_member(:next_page_token, Shapes::ShapeRef.new(shape: NextPageToken, location_name: "NextPageToken"))
|
212
|
+
GetReservationPurchaseRecommendationRequest.struct_class = Types::GetReservationPurchaseRecommendationRequest
|
213
|
+
|
214
|
+
GetReservationPurchaseRecommendationResponse.add_member(:metadata, Shapes::ShapeRef.new(shape: ReservationPurchaseRecommendationMetadata, location_name: "Metadata"))
|
215
|
+
GetReservationPurchaseRecommendationResponse.add_member(:recommendations, Shapes::ShapeRef.new(shape: ReservationPurchaseRecommendations, location_name: "Recommendations"))
|
216
|
+
GetReservationPurchaseRecommendationResponse.add_member(:next_page_token, Shapes::ShapeRef.new(shape: NextPageToken, location_name: "NextPageToken"))
|
217
|
+
GetReservationPurchaseRecommendationResponse.struct_class = Types::GetReservationPurchaseRecommendationResponse
|
218
|
+
|
170
219
|
GetReservationUtilizationRequest.add_member(:time_period, Shapes::ShapeRef.new(shape: DateInterval, required: true, location_name: "TimePeriod"))
|
171
220
|
GetReservationUtilizationRequest.add_member(:group_by, Shapes::ShapeRef.new(shape: GroupDefinitions, location_name: "GroupBy"))
|
172
221
|
GetReservationUtilizationRequest.add_member(:granularity, Shapes::ShapeRef.new(shape: Granularity, location_name: "Granularity"))
|
@@ -203,6 +252,9 @@ module Aws::CostExplorer
|
|
203
252
|
|
204
253
|
Groups.member = Shapes::ShapeRef.new(shape: Group)
|
205
254
|
|
255
|
+
InstanceDetails.add_member(:ec2_instance_details, Shapes::ShapeRef.new(shape: EC2InstanceDetails, location_name: "EC2InstanceDetails"))
|
256
|
+
InstanceDetails.struct_class = Types::InstanceDetails
|
257
|
+
|
206
258
|
Keys.member = Shapes::ShapeRef.new(shape: Key)
|
207
259
|
|
208
260
|
MetricNames.member = Shapes::ShapeRef.new(shape: MetricName)
|
@@ -226,6 +278,48 @@ module Aws::CostExplorer
|
|
226
278
|
|
227
279
|
ReservationCoverageGroups.member = Shapes::ShapeRef.new(shape: ReservationCoverageGroup)
|
228
280
|
|
281
|
+
ReservationPurchaseRecommendation.add_member(:account_scope, Shapes::ShapeRef.new(shape: AccountScope, location_name: "AccountScope"))
|
282
|
+
ReservationPurchaseRecommendation.add_member(:lookback_period_in_days, Shapes::ShapeRef.new(shape: LookbackPeriodInDays, location_name: "LookbackPeriodInDays"))
|
283
|
+
ReservationPurchaseRecommendation.add_member(:term_in_years, Shapes::ShapeRef.new(shape: TermInYears, location_name: "TermInYears"))
|
284
|
+
ReservationPurchaseRecommendation.add_member(:payment_option, Shapes::ShapeRef.new(shape: PaymentOption, location_name: "PaymentOption"))
|
285
|
+
ReservationPurchaseRecommendation.add_member(:service_specification, Shapes::ShapeRef.new(shape: ServiceSpecification, location_name: "ServiceSpecification"))
|
286
|
+
ReservationPurchaseRecommendation.add_member(:recommendation_details, Shapes::ShapeRef.new(shape: ReservationPurchaseRecommendationDetails, location_name: "RecommendationDetails"))
|
287
|
+
ReservationPurchaseRecommendation.add_member(:recommendation_summary, Shapes::ShapeRef.new(shape: ReservationPurchaseRecommendationSummary, location_name: "RecommendationSummary"))
|
288
|
+
ReservationPurchaseRecommendation.struct_class = Types::ReservationPurchaseRecommendation
|
289
|
+
|
290
|
+
ReservationPurchaseRecommendationDetail.add_member(:instance_details, Shapes::ShapeRef.new(shape: InstanceDetails, location_name: "InstanceDetails"))
|
291
|
+
ReservationPurchaseRecommendationDetail.add_member(:recommended_number_of_instances_to_purchase, Shapes::ShapeRef.new(shape: GenericString, location_name: "RecommendedNumberOfInstancesToPurchase"))
|
292
|
+
ReservationPurchaseRecommendationDetail.add_member(:recommended_normalized_units_to_purchase, Shapes::ShapeRef.new(shape: GenericString, location_name: "RecommendedNormalizedUnitsToPurchase"))
|
293
|
+
ReservationPurchaseRecommendationDetail.add_member(:minimum_number_of_instances_used_per_hour, Shapes::ShapeRef.new(shape: GenericString, location_name: "MinimumNumberOfInstancesUsedPerHour"))
|
294
|
+
ReservationPurchaseRecommendationDetail.add_member(:minimum_normalized_units_used_per_hour, Shapes::ShapeRef.new(shape: GenericString, location_name: "MinimumNormalizedUnitsUsedPerHour"))
|
295
|
+
ReservationPurchaseRecommendationDetail.add_member(:maximum_number_of_instances_used_per_hour, Shapes::ShapeRef.new(shape: GenericString, location_name: "MaximumNumberOfInstancesUsedPerHour"))
|
296
|
+
ReservationPurchaseRecommendationDetail.add_member(:maximum_normalized_units_used_per_hour, Shapes::ShapeRef.new(shape: GenericString, location_name: "MaximumNormalizedUnitsUsedPerHour"))
|
297
|
+
ReservationPurchaseRecommendationDetail.add_member(:average_number_of_instances_used_per_hour, Shapes::ShapeRef.new(shape: GenericString, location_name: "AverageNumberOfInstancesUsedPerHour"))
|
298
|
+
ReservationPurchaseRecommendationDetail.add_member(:average_normalized_units_used_per_hour, Shapes::ShapeRef.new(shape: GenericString, location_name: "AverageNormalizedUnitsUsedPerHour"))
|
299
|
+
ReservationPurchaseRecommendationDetail.add_member(:average_utilization, Shapes::ShapeRef.new(shape: GenericString, location_name: "AverageUtilization"))
|
300
|
+
ReservationPurchaseRecommendationDetail.add_member(:estimated_break_even_in_months, Shapes::ShapeRef.new(shape: GenericString, location_name: "EstimatedBreakEvenInMonths"))
|
301
|
+
ReservationPurchaseRecommendationDetail.add_member(:currency_code, Shapes::ShapeRef.new(shape: GenericString, location_name: "CurrencyCode"))
|
302
|
+
ReservationPurchaseRecommendationDetail.add_member(:estimated_monthly_savings_amount, Shapes::ShapeRef.new(shape: GenericString, location_name: "EstimatedMonthlySavingsAmount"))
|
303
|
+
ReservationPurchaseRecommendationDetail.add_member(:estimated_monthly_savings_percentage, Shapes::ShapeRef.new(shape: GenericString, location_name: "EstimatedMonthlySavingsPercentage"))
|
304
|
+
ReservationPurchaseRecommendationDetail.add_member(:estimated_monthly_on_demand_cost, Shapes::ShapeRef.new(shape: GenericString, location_name: "EstimatedMonthlyOnDemandCost"))
|
305
|
+
ReservationPurchaseRecommendationDetail.add_member(:estimated_reservation_cost_for_lookback_period, Shapes::ShapeRef.new(shape: GenericString, location_name: "EstimatedReservationCostForLookbackPeriod"))
|
306
|
+
ReservationPurchaseRecommendationDetail.add_member(:upfront_cost, Shapes::ShapeRef.new(shape: GenericString, location_name: "UpfrontCost"))
|
307
|
+
ReservationPurchaseRecommendationDetail.add_member(:recurring_standard_monthly_cost, Shapes::ShapeRef.new(shape: GenericString, location_name: "RecurringStandardMonthlyCost"))
|
308
|
+
ReservationPurchaseRecommendationDetail.struct_class = Types::ReservationPurchaseRecommendationDetail
|
309
|
+
|
310
|
+
ReservationPurchaseRecommendationDetails.member = Shapes::ShapeRef.new(shape: ReservationPurchaseRecommendationDetail)
|
311
|
+
|
312
|
+
ReservationPurchaseRecommendationMetadata.add_member(:recommendation_id, Shapes::ShapeRef.new(shape: GenericString, location_name: "RecommendationId"))
|
313
|
+
ReservationPurchaseRecommendationMetadata.add_member(:generation_timestamp, Shapes::ShapeRef.new(shape: GenericString, location_name: "GenerationTimestamp"))
|
314
|
+
ReservationPurchaseRecommendationMetadata.struct_class = Types::ReservationPurchaseRecommendationMetadata
|
315
|
+
|
316
|
+
ReservationPurchaseRecommendationSummary.add_member(:total_estimated_monthly_savings_amount, Shapes::ShapeRef.new(shape: GenericString, location_name: "TotalEstimatedMonthlySavingsAmount"))
|
317
|
+
ReservationPurchaseRecommendationSummary.add_member(:total_estimated_monthly_savings_percentage, Shapes::ShapeRef.new(shape: GenericString, location_name: "TotalEstimatedMonthlySavingsPercentage"))
|
318
|
+
ReservationPurchaseRecommendationSummary.add_member(:currency_code, Shapes::ShapeRef.new(shape: GenericString, location_name: "CurrencyCode"))
|
319
|
+
ReservationPurchaseRecommendationSummary.struct_class = Types::ReservationPurchaseRecommendationSummary
|
320
|
+
|
321
|
+
ReservationPurchaseRecommendations.member = Shapes::ShapeRef.new(shape: ReservationPurchaseRecommendation)
|
322
|
+
|
229
323
|
ReservationUtilizationGroup.add_member(:key, Shapes::ShapeRef.new(shape: ReservationGroupKey, location_name: "Key"))
|
230
324
|
ReservationUtilizationGroup.add_member(:value, Shapes::ShapeRef.new(shape: ReservationGroupValue, location_name: "Value"))
|
231
325
|
ReservationUtilizationGroup.add_member(:attributes, Shapes::ShapeRef.new(shape: Attributes, location_name: "Attributes"))
|
@@ -242,6 +336,9 @@ module Aws::CostExplorer
|
|
242
336
|
|
243
337
|
ResultsByTime.member = Shapes::ShapeRef.new(shape: ResultByTime)
|
244
338
|
|
339
|
+
ServiceSpecification.add_member(:ec2_specification, Shapes::ShapeRef.new(shape: EC2Specification, location_name: "EC2Specification"))
|
340
|
+
ServiceSpecification.struct_class = Types::ServiceSpecification
|
341
|
+
|
245
342
|
TagList.member = Shapes::ShapeRef.new(shape: Entity)
|
246
343
|
|
247
344
|
TagValues.add_member(:key, Shapes::ShapeRef.new(shape: TagKey, location_name: "Key"))
|
@@ -307,6 +404,17 @@ module Aws::CostExplorer
|
|
307
404
|
o.errors << Shapes::ShapeRef.new(shape: InvalidNextTokenException)
|
308
405
|
end)
|
309
406
|
|
407
|
+
api.add_operation(:get_reservation_purchase_recommendation, Seahorse::Model::Operation.new.tap do |o|
|
408
|
+
o.name = "GetReservationPurchaseRecommendation"
|
409
|
+
o.http_method = "POST"
|
410
|
+
o.http_request_uri = "/"
|
411
|
+
o.input = Shapes::ShapeRef.new(shape: GetReservationPurchaseRecommendationRequest)
|
412
|
+
o.output = Shapes::ShapeRef.new(shape: GetReservationPurchaseRecommendationResponse)
|
413
|
+
o.errors << Shapes::ShapeRef.new(shape: LimitExceededException)
|
414
|
+
o.errors << Shapes::ShapeRef.new(shape: DataUnavailableException)
|
415
|
+
o.errors << Shapes::ShapeRef.new(shape: InvalidNextTokenException)
|
416
|
+
end)
|
417
|
+
|
310
418
|
api.add_operation(:get_reservation_utilization, Seahorse::Model::Operation.new.tap do |o|
|
311
419
|
o.name = "GetReservationUtilization"
|
312
420
|
o.http_method = "POST"
|