aws-sdk-costexplorer 1.78.0 → 1.80.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/CHANGELOG.md +10 -0
- data/VERSION +1 -1
- data/lib/aws-sdk-costexplorer/client.rb +106 -5
- data/lib/aws-sdk-costexplorer/client_api.rb +62 -0
- data/lib/aws-sdk-costexplorer/endpoint_parameters.rb +69 -0
- data/lib/aws-sdk-costexplorer/endpoint_provider.rb +222 -0
- data/lib/aws-sdk-costexplorer/endpoints.rb +533 -0
- data/lib/aws-sdk-costexplorer/errors.rb +16 -0
- data/lib/aws-sdk-costexplorer/plugins/endpoints.rb +142 -0
- data/lib/aws-sdk-costexplorer/types.rb +118 -1450
- data/lib/aws-sdk-costexplorer.rb +5 -1
- metadata +8 -4
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA256:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: f29b723690f77b46793898db81ba6e1f209f34e2354626394a2d2b8efd17b35b
         | 
| 4 | 
            +
              data.tar.gz: cb6e46daf2706629f949d5ef43238ae6d27dfca49bc916d9c4475181f017d44a
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: b34ff974f7f1e5a69df15f3ceb033001b4f73771ddcaabedcb05d598499fc1e386f00d4cf10767d8888335c9b176c66d327f0ae2d6c39f775833adeda9806441
         | 
| 7 | 
            +
              data.tar.gz: 77c3259379b7d91dc6fc6a0048c5ed9a52d16fd77c81738ea8a33c5c4265210e9606f5ea32a266be4fd4b1f912427c584a093057b08d440c1fe793a28ea27c2c
         | 
    
        data/CHANGELOG.md
    CHANGED
    
    | @@ -1,6 +1,16 @@ | |
| 1 1 | 
             
            Unreleased Changes
         | 
| 2 2 | 
             
            ------------------
         | 
| 3 3 |  | 
| 4 | 
            +
            1.80.0 (2022-12-05)
         | 
| 5 | 
            +
            ------------------
         | 
| 6 | 
            +
             | 
| 7 | 
            +
            * Feature - This release introduces two new APIs that offer a 1-click experience to refresh Savings Plans recommendations. The two APIs are StartSavingsPlansPurchaseRecommendationGeneration and ListSavingsPlansPurchaseRecommendationGeneration.
         | 
| 8 | 
            +
             | 
| 9 | 
            +
            1.79.0 (2022-10-25)
         | 
| 10 | 
            +
            ------------------
         | 
| 11 | 
            +
             | 
| 12 | 
            +
            * Feature - Code Generated Changes, see `./build_tools` or `aws-sdk-core`'s CHANGELOG.md for details.
         | 
| 13 | 
            +
             | 
| 4 14 | 
             
            1.78.0 (2022-09-27)
         | 
| 5 15 | 
             
            ------------------
         | 
| 6 16 |  | 
    
        data/VERSION
    CHANGED
    
    | @@ -1 +1 @@ | |
| 1 | 
            -
            1. | 
| 1 | 
            +
            1.80.0
         | 
| @@ -30,7 +30,7 @@ require 'aws-sdk-core/plugins/http_checksum.rb' | |
| 30 30 | 
             
            require 'aws-sdk-core/plugins/checksum_algorithm.rb'
         | 
| 31 31 | 
             
            require 'aws-sdk-core/plugins/defaults_mode.rb'
         | 
| 32 32 | 
             
            require 'aws-sdk-core/plugins/recursion_detection.rb'
         | 
| 33 | 
            -
            require 'aws-sdk-core/plugins/ | 
| 33 | 
            +
            require 'aws-sdk-core/plugins/sign.rb'
         | 
| 34 34 | 
             
            require 'aws-sdk-core/plugins/protocols/json_rpc.rb'
         | 
| 35 35 |  | 
| 36 36 | 
             
            Aws::Plugins::GlobalConfiguration.add_identifier(:costexplorer)
         | 
| @@ -79,8 +79,9 @@ module Aws::CostExplorer | |
| 79 79 | 
             
                add_plugin(Aws::Plugins::ChecksumAlgorithm)
         | 
| 80 80 | 
             
                add_plugin(Aws::Plugins::DefaultsMode)
         | 
| 81 81 | 
             
                add_plugin(Aws::Plugins::RecursionDetection)
         | 
| 82 | 
            -
                add_plugin(Aws::Plugins:: | 
| 82 | 
            +
                add_plugin(Aws::Plugins::Sign)
         | 
| 83 83 | 
             
                add_plugin(Aws::Plugins::Protocols::JsonRpc)
         | 
| 84 | 
            +
                add_plugin(Aws::CostExplorer::Plugins::Endpoints)
         | 
| 84 85 |  | 
| 85 86 | 
             
                # @overload initialize(options)
         | 
| 86 87 | 
             
                #   @param [Hash] options
         | 
| @@ -297,6 +298,19 @@ module Aws::CostExplorer | |
| 297 298 | 
             
                #     ** Please note ** When response stubbing is enabled, no HTTP
         | 
| 298 299 | 
             
                #     requests are made, and retries are disabled.
         | 
| 299 300 | 
             
                #
         | 
| 301 | 
            +
                #   @option options [Aws::TokenProvider] :token_provider
         | 
| 302 | 
            +
                #     A Bearer Token Provider. This can be an instance of any one of the
         | 
| 303 | 
            +
                #     following classes:
         | 
| 304 | 
            +
                #
         | 
| 305 | 
            +
                #     * `Aws::StaticTokenProvider` - Used for configuring static, non-refreshing
         | 
| 306 | 
            +
                #       tokens.
         | 
| 307 | 
            +
                #
         | 
| 308 | 
            +
                #     * `Aws::SSOTokenProvider` - Used for loading tokens from AWS SSO using an
         | 
| 309 | 
            +
                #       access token generated from `aws login`.
         | 
| 310 | 
            +
                #
         | 
| 311 | 
            +
                #     When `:token_provider` is not configured directly, the `Aws::TokenProviderChain`
         | 
| 312 | 
            +
                #     will be used to search for tokens configured for your profile in shared configuration files.
         | 
| 313 | 
            +
                #
         | 
| 300 314 | 
             
                #   @option options [Boolean] :use_dualstack_endpoint
         | 
| 301 315 | 
             
                #     When set to `true`, dualstack enabled endpoints (with `.aws` TLD)
         | 
| 302 316 | 
             
                #     will be used if available.
         | 
| @@ -310,6 +324,9 @@ module Aws::CostExplorer | |
| 310 324 | 
             
                #     When `true`, request parameters are validated before
         | 
| 311 325 | 
             
                #     sending the request.
         | 
| 312 326 | 
             
                #
         | 
| 327 | 
            +
                #   @option options [Aws::CostExplorer::EndpointProvider] :endpoint_provider
         | 
| 328 | 
            +
                #     The endpoint provider used to resolve endpoints. Any object that responds to `#resolve_endpoint(parameters)` where `parameters` is a Struct similar to `Aws::CostExplorer::EndpointParameters`
         | 
| 329 | 
            +
                #
         | 
| 313 330 | 
             
                #   @option options [URI::HTTP,String] :http_proxy A proxy to send
         | 
| 314 331 | 
             
                #     requests through.  Formatted like 'http://proxy.com:123'.
         | 
| 315 332 | 
             
                #
         | 
| @@ -3275,8 +3292,10 @@ module Aws::CostExplorer | |
| 3275 3292 | 
             
                  req.send_request(options)
         | 
| 3276 3293 | 
             
                end
         | 
| 3277 3294 |  | 
| 3278 | 
            -
                # Retrieves  | 
| 3279 | 
            -
                #  | 
| 3295 | 
            +
                # Retrieves the Savings Plans recommendations for your account. First
         | 
| 3296 | 
            +
                # use `StartSavingsPlansPurchaseRecommendationGeneration` to generate a
         | 
| 3297 | 
            +
                # new set of recommendations, and then use
         | 
| 3298 | 
            +
                # `GetSavingsPlansPurchaseRecommendation` to retrieve them.
         | 
| 3280 3299 | 
             
                #
         | 
| 3281 3300 | 
             
                # @option params [required, String] :savings_plans_type
         | 
| 3282 3301 | 
             
                #   The Savings Plans recommendation type that's requested.
         | 
| @@ -4191,6 +4210,55 @@ module Aws::CostExplorer | |
| 4191 4210 | 
             
                  req.send_request(options)
         | 
| 4192 4211 | 
             
                end
         | 
| 4193 4212 |  | 
| 4213 | 
            +
                # Retrieves a list of your historical recommendation generations within
         | 
| 4214 | 
            +
                # the past 30 days.
         | 
| 4215 | 
            +
                #
         | 
| 4216 | 
            +
                # @option params [String] :generation_status
         | 
| 4217 | 
            +
                #   The status of the recommendation generation.
         | 
| 4218 | 
            +
                #
         | 
| 4219 | 
            +
                # @option params [Array<String>] :recommendation_ids
         | 
| 4220 | 
            +
                #   The IDs for each specific recommendation.
         | 
| 4221 | 
            +
                #
         | 
| 4222 | 
            +
                # @option params [Integer] :page_size
         | 
| 4223 | 
            +
                #   The number of recommendations that you want returned in a single
         | 
| 4224 | 
            +
                #   response object.
         | 
| 4225 | 
            +
                #
         | 
| 4226 | 
            +
                # @option params [String] :next_page_token
         | 
| 4227 | 
            +
                #   The token to retrieve the next set of results.
         | 
| 4228 | 
            +
                #
         | 
| 4229 | 
            +
                # @return [Types::ListSavingsPlansPurchaseRecommendationGenerationResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
         | 
| 4230 | 
            +
                #
         | 
| 4231 | 
            +
                #   * {Types::ListSavingsPlansPurchaseRecommendationGenerationResponse#generation_summary_list #generation_summary_list} => Array<Types::GenerationSummary>
         | 
| 4232 | 
            +
                #   * {Types::ListSavingsPlansPurchaseRecommendationGenerationResponse#next_page_token #next_page_token} => String
         | 
| 4233 | 
            +
                #
         | 
| 4234 | 
            +
                # @example Request syntax with placeholder values
         | 
| 4235 | 
            +
                #
         | 
| 4236 | 
            +
                #   resp = client.list_savings_plans_purchase_recommendation_generation({
         | 
| 4237 | 
            +
                #     generation_status: "SUCCEEDED", # accepts SUCCEEDED, PROCESSING, FAILED
         | 
| 4238 | 
            +
                #     recommendation_ids: ["RecommendationId"],
         | 
| 4239 | 
            +
                #     page_size: 1,
         | 
| 4240 | 
            +
                #     next_page_token: "NextPageToken",
         | 
| 4241 | 
            +
                #   })
         | 
| 4242 | 
            +
                #
         | 
| 4243 | 
            +
                # @example Response structure
         | 
| 4244 | 
            +
                #
         | 
| 4245 | 
            +
                #   resp.generation_summary_list #=> Array
         | 
| 4246 | 
            +
                #   resp.generation_summary_list[0].recommendation_id #=> String
         | 
| 4247 | 
            +
                #   resp.generation_summary_list[0].generation_status #=> String, one of "SUCCEEDED", "PROCESSING", "FAILED"
         | 
| 4248 | 
            +
                #   resp.generation_summary_list[0].generation_started_time #=> String
         | 
| 4249 | 
            +
                #   resp.generation_summary_list[0].generation_completion_time #=> String
         | 
| 4250 | 
            +
                #   resp.generation_summary_list[0].estimated_completion_time #=> String
         | 
| 4251 | 
            +
                #   resp.next_page_token #=> String
         | 
| 4252 | 
            +
                #
         | 
| 4253 | 
            +
                # @see http://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/ListSavingsPlansPurchaseRecommendationGeneration AWS API Documentation
         | 
| 4254 | 
            +
                #
         | 
| 4255 | 
            +
                # @overload list_savings_plans_purchase_recommendation_generation(params = {})
         | 
| 4256 | 
            +
                # @param [Hash] params ({})
         | 
| 4257 | 
            +
                def list_savings_plans_purchase_recommendation_generation(params = {}, options = {})
         | 
| 4258 | 
            +
                  req = build_request(:list_savings_plans_purchase_recommendation_generation, params)
         | 
| 4259 | 
            +
                  req.send_request(options)
         | 
| 4260 | 
            +
                end
         | 
| 4261 | 
            +
             | 
| 4194 4262 | 
             
                # Returns a list of resource tags associated with the resource specified
         | 
| 4195 4263 | 
             
                # by the Amazon Resource Name (ARN).
         | 
| 4196 4264 | 
             
                #
         | 
| @@ -4260,6 +4328,39 @@ module Aws::CostExplorer | |
| 4260 4328 | 
             
                  req.send_request(options)
         | 
| 4261 4329 | 
             
                end
         | 
| 4262 4330 |  | 
| 4331 | 
            +
                # Requests a Savings Plans recommendation generation. This enables you
         | 
| 4332 | 
            +
                # to calculate a fresh set of Savings Plans recommendations that takes
         | 
| 4333 | 
            +
                # your latest usage data and current Savings Plans inventory into
         | 
| 4334 | 
            +
                # account. You can refresh Savings Plans recommendations up to three
         | 
| 4335 | 
            +
                # times daily for a consolidated billing family.
         | 
| 4336 | 
            +
                #
         | 
| 4337 | 
            +
                # <note markdown="1"> `StartSavingsPlansPurchaseRecommendationGeneration` has no request
         | 
| 4338 | 
            +
                # syntax because no input parameters are needed to support this
         | 
| 4339 | 
            +
                # operation.
         | 
| 4340 | 
            +
                #
         | 
| 4341 | 
            +
                #  </note>
         | 
| 4342 | 
            +
                #
         | 
| 4343 | 
            +
                # @return [Types::StartSavingsPlansPurchaseRecommendationGenerationResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
         | 
| 4344 | 
            +
                #
         | 
| 4345 | 
            +
                #   * {Types::StartSavingsPlansPurchaseRecommendationGenerationResponse#recommendation_id #recommendation_id} => String
         | 
| 4346 | 
            +
                #   * {Types::StartSavingsPlansPurchaseRecommendationGenerationResponse#generation_started_time #generation_started_time} => String
         | 
| 4347 | 
            +
                #   * {Types::StartSavingsPlansPurchaseRecommendationGenerationResponse#estimated_completion_time #estimated_completion_time} => String
         | 
| 4348 | 
            +
                #
         | 
| 4349 | 
            +
                # @example Response structure
         | 
| 4350 | 
            +
                #
         | 
| 4351 | 
            +
                #   resp.recommendation_id #=> String
         | 
| 4352 | 
            +
                #   resp.generation_started_time #=> String
         | 
| 4353 | 
            +
                #   resp.estimated_completion_time #=> String
         | 
| 4354 | 
            +
                #
         | 
| 4355 | 
            +
                # @see http://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/StartSavingsPlansPurchaseRecommendationGeneration AWS API Documentation
         | 
| 4356 | 
            +
                #
         | 
| 4357 | 
            +
                # @overload start_savings_plans_purchase_recommendation_generation(params = {})
         | 
| 4358 | 
            +
                # @param [Hash] params ({})
         | 
| 4359 | 
            +
                def start_savings_plans_purchase_recommendation_generation(params = {}, options = {})
         | 
| 4360 | 
            +
                  req = build_request(:start_savings_plans_purchase_recommendation_generation, params)
         | 
| 4361 | 
            +
                  req.send_request(options)
         | 
| 4362 | 
            +
                end
         | 
| 4363 | 
            +
             | 
| 4263 4364 | 
             
                # An API operation for adding one or more tags (key-value pairs) to a
         | 
| 4264 4365 | 
             
                # resource.
         | 
| 4265 4366 | 
             
                #
         | 
| @@ -4617,7 +4718,7 @@ module Aws::CostExplorer | |
| 4617 4718 | 
             
                    params: params,
         | 
| 4618 4719 | 
             
                    config: config)
         | 
| 4619 4720 | 
             
                  context[:gem_name] = 'aws-sdk-costexplorer'
         | 
| 4620 | 
            -
                  context[:gem_version] = '1. | 
| 4721 | 
            +
                  context[:gem_version] = '1.80.0'
         | 
| 4621 4722 | 
             
                  Seahorse::Client::Request.new(handlers, context)
         | 
| 4622 4723 | 
             
                end
         | 
| 4623 4724 |  | 
| @@ -113,6 +113,10 @@ module Aws::CostExplorer | |
| 113 113 | 
             
                FindingReasonCodes = Shapes::ListShape.new(name: 'FindingReasonCodes')
         | 
| 114 114 | 
             
                ForecastResult = Shapes::StructureShape.new(name: 'ForecastResult')
         | 
| 115 115 | 
             
                ForecastResultsByTime = Shapes::ListShape.new(name: 'ForecastResultsByTime')
         | 
| 116 | 
            +
                GenerationExistsException = Shapes::StructureShape.new(name: 'GenerationExistsException')
         | 
| 117 | 
            +
                GenerationStatus = Shapes::StringShape.new(name: 'GenerationStatus')
         | 
| 118 | 
            +
                GenerationSummary = Shapes::StructureShape.new(name: 'GenerationSummary')
         | 
| 119 | 
            +
                GenerationSummaryList = Shapes::ListShape.new(name: 'GenerationSummaryList')
         | 
| 116 120 | 
             
                GenericBoolean = Shapes::BooleanShape.new(name: 'GenericBoolean')
         | 
| 117 121 | 
             
                GenericDouble = Shapes::FloatShape.new(name: 'GenericDouble')
         | 
| 118 122 | 
             
                GenericString = Shapes::StringShape.new(name: 'GenericString')
         | 
| @@ -169,6 +173,8 @@ module Aws::CostExplorer | |
| 169 173 | 
             
                ListCostAllocationTagsResponse = Shapes::StructureShape.new(name: 'ListCostAllocationTagsResponse')
         | 
| 170 174 | 
             
                ListCostCategoryDefinitionsRequest = Shapes::StructureShape.new(name: 'ListCostCategoryDefinitionsRequest')
         | 
| 171 175 | 
             
                ListCostCategoryDefinitionsResponse = Shapes::StructureShape.new(name: 'ListCostCategoryDefinitionsResponse')
         | 
| 176 | 
            +
                ListSavingsPlansPurchaseRecommendationGenerationRequest = Shapes::StructureShape.new(name: 'ListSavingsPlansPurchaseRecommendationGenerationRequest')
         | 
| 177 | 
            +
                ListSavingsPlansPurchaseRecommendationGenerationResponse = Shapes::StructureShape.new(name: 'ListSavingsPlansPurchaseRecommendationGenerationResponse')
         | 
| 172 178 | 
             
                ListTagsForResourceRequest = Shapes::StructureShape.new(name: 'ListTagsForResourceRequest')
         | 
| 173 179 | 
             
                ListTagsForResourceResponse = Shapes::StructureShape.new(name: 'ListTagsForResourceResponse')
         | 
| 174 180 | 
             
                LookbackPeriodInDays = Shapes::StringShape.new(name: 'LookbackPeriodInDays')
         | 
| @@ -209,6 +215,8 @@ module Aws::CostExplorer | |
| 209 215 | 
             
                RDSInstanceDetails = Shapes::StructureShape.new(name: 'RDSInstanceDetails')
         | 
| 210 216 | 
             
                RICostForUnusedHours = Shapes::StringShape.new(name: 'RICostForUnusedHours')
         | 
| 211 217 | 
             
                RealizedSavings = Shapes::StringShape.new(name: 'RealizedSavings')
         | 
| 218 | 
            +
                RecommendationId = Shapes::StringShape.new(name: 'RecommendationId')
         | 
| 219 | 
            +
                RecommendationIdList = Shapes::ListShape.new(name: 'RecommendationIdList')
         | 
| 212 220 | 
             
                RecommendationTarget = Shapes::StringShape.new(name: 'RecommendationTarget')
         | 
| 213 221 | 
             
                RedshiftInstanceDetails = Shapes::StructureShape.new(name: 'RedshiftInstanceDetails')
         | 
| 214 222 | 
             
                RequestChangedException = Shapes::StructureShape.new(name: 'RequestChangedException')
         | 
| @@ -272,6 +280,8 @@ module Aws::CostExplorer | |
| 272 280 | 
             
                SortDefinitionKey = Shapes::StringShape.new(name: 'SortDefinitionKey')
         | 
| 273 281 | 
             
                SortDefinitions = Shapes::ListShape.new(name: 'SortDefinitions')
         | 
| 274 282 | 
             
                SortOrder = Shapes::StringShape.new(name: 'SortOrder')
         | 
| 283 | 
            +
                StartSavingsPlansPurchaseRecommendationGenerationRequest = Shapes::StructureShape.new(name: 'StartSavingsPlansPurchaseRecommendationGenerationRequest')
         | 
| 284 | 
            +
                StartSavingsPlansPurchaseRecommendationGenerationResponse = Shapes::StructureShape.new(name: 'StartSavingsPlansPurchaseRecommendationGenerationResponse')
         | 
| 275 285 | 
             
                Subscriber = Shapes::StructureShape.new(name: 'Subscriber')
         | 
| 276 286 | 
             
                SubscriberAddress = Shapes::StringShape.new(name: 'SubscriberAddress')
         | 
| 277 287 | 
             
                SubscriberStatus = Shapes::StringShape.new(name: 'SubscriberStatus')
         | 
| @@ -645,6 +655,18 @@ module Aws::CostExplorer | |
| 645 655 |  | 
| 646 656 | 
             
                ForecastResultsByTime.member = Shapes::ShapeRef.new(shape: ForecastResult)
         | 
| 647 657 |  | 
| 658 | 
            +
                GenerationExistsException.add_member(:message, Shapes::ShapeRef.new(shape: ErrorMessage, location_name: "Message"))
         | 
| 659 | 
            +
                GenerationExistsException.struct_class = Types::GenerationExistsException
         | 
| 660 | 
            +
             | 
| 661 | 
            +
                GenerationSummary.add_member(:recommendation_id, Shapes::ShapeRef.new(shape: RecommendationId, location_name: "RecommendationId"))
         | 
| 662 | 
            +
                GenerationSummary.add_member(:generation_status, Shapes::ShapeRef.new(shape: GenerationStatus, location_name: "GenerationStatus"))
         | 
| 663 | 
            +
                GenerationSummary.add_member(:generation_started_time, Shapes::ShapeRef.new(shape: ZonedDateTime, location_name: "GenerationStartedTime"))
         | 
| 664 | 
            +
                GenerationSummary.add_member(:generation_completion_time, Shapes::ShapeRef.new(shape: ZonedDateTime, location_name: "GenerationCompletionTime"))
         | 
| 665 | 
            +
                GenerationSummary.add_member(:estimated_completion_time, Shapes::ShapeRef.new(shape: ZonedDateTime, location_name: "EstimatedCompletionTime"))
         | 
| 666 | 
            +
                GenerationSummary.struct_class = Types::GenerationSummary
         | 
| 667 | 
            +
             | 
| 668 | 
            +
                GenerationSummaryList.member = Shapes::ShapeRef.new(shape: GenerationSummary)
         | 
| 669 | 
            +
             | 
| 648 670 | 
             
                GetAnomaliesRequest.add_member(:monitor_arn, Shapes::ShapeRef.new(shape: GenericString, location_name: "MonitorArn"))
         | 
| 649 671 | 
             
                GetAnomaliesRequest.add_member(:date_interval, Shapes::ShapeRef.new(shape: AnomalyDateInterval, required: true, location_name: "DateInterval"))
         | 
| 650 672 | 
             
                GetAnomaliesRequest.add_member(:feedback, Shapes::ShapeRef.new(shape: AnomalyFeedbackType, location_name: "Feedback"))
         | 
| @@ -937,6 +959,16 @@ module Aws::CostExplorer | |
| 937 959 | 
             
                ListCostCategoryDefinitionsResponse.add_member(:next_token, Shapes::ShapeRef.new(shape: NextPageToken, location_name: "NextToken"))
         | 
| 938 960 | 
             
                ListCostCategoryDefinitionsResponse.struct_class = Types::ListCostCategoryDefinitionsResponse
         | 
| 939 961 |  | 
| 962 | 
            +
                ListSavingsPlansPurchaseRecommendationGenerationRequest.add_member(:generation_status, Shapes::ShapeRef.new(shape: GenerationStatus, location_name: "GenerationStatus"))
         | 
| 963 | 
            +
                ListSavingsPlansPurchaseRecommendationGenerationRequest.add_member(:recommendation_ids, Shapes::ShapeRef.new(shape: RecommendationIdList, location_name: "RecommendationIds"))
         | 
| 964 | 
            +
                ListSavingsPlansPurchaseRecommendationGenerationRequest.add_member(:page_size, Shapes::ShapeRef.new(shape: NonNegativeInteger, location_name: "PageSize"))
         | 
| 965 | 
            +
                ListSavingsPlansPurchaseRecommendationGenerationRequest.add_member(:next_page_token, Shapes::ShapeRef.new(shape: NextPageToken, location_name: "NextPageToken"))
         | 
| 966 | 
            +
                ListSavingsPlansPurchaseRecommendationGenerationRequest.struct_class = Types::ListSavingsPlansPurchaseRecommendationGenerationRequest
         | 
| 967 | 
            +
             | 
| 968 | 
            +
                ListSavingsPlansPurchaseRecommendationGenerationResponse.add_member(:generation_summary_list, Shapes::ShapeRef.new(shape: GenerationSummaryList, location_name: "GenerationSummaryList"))
         | 
| 969 | 
            +
                ListSavingsPlansPurchaseRecommendationGenerationResponse.add_member(:next_page_token, Shapes::ShapeRef.new(shape: NextPageToken, location_name: "NextPageToken"))
         | 
| 970 | 
            +
                ListSavingsPlansPurchaseRecommendationGenerationResponse.struct_class = Types::ListSavingsPlansPurchaseRecommendationGenerationResponse
         | 
| 971 | 
            +
             | 
| 940 972 | 
             
                ListTagsForResourceRequest.add_member(:resource_arn, Shapes::ShapeRef.new(shape: Arn, required: true, location_name: "ResourceArn"))
         | 
| 941 973 | 
             
                ListTagsForResourceRequest.struct_class = Types::ListTagsForResourceRequest
         | 
| 942 974 |  | 
| @@ -985,6 +1017,8 @@ module Aws::CostExplorer | |
| 985 1017 | 
             
                RDSInstanceDetails.add_member(:size_flex_eligible, Shapes::ShapeRef.new(shape: GenericBoolean, location_name: "SizeFlexEligible"))
         | 
| 986 1018 | 
             
                RDSInstanceDetails.struct_class = Types::RDSInstanceDetails
         | 
| 987 1019 |  | 
| 1020 | 
            +
                RecommendationIdList.member = Shapes::ShapeRef.new(shape: RecommendationId)
         | 
| 1021 | 
            +
             | 
| 988 1022 | 
             
                RedshiftInstanceDetails.add_member(:family, Shapes::ShapeRef.new(shape: GenericString, location_name: "Family"))
         | 
| 989 1023 | 
             
                RedshiftInstanceDetails.add_member(:node_type, Shapes::ShapeRef.new(shape: GenericString, location_name: "NodeType"))
         | 
| 990 1024 | 
             
                RedshiftInstanceDetails.add_member(:region, Shapes::ShapeRef.new(shape: GenericString, location_name: "Region"))
         | 
| @@ -1247,6 +1281,13 @@ module Aws::CostExplorer | |
| 1247 1281 |  | 
| 1248 1282 | 
             
                SortDefinitions.member = Shapes::ShapeRef.new(shape: SortDefinition)
         | 
| 1249 1283 |  | 
| 1284 | 
            +
                StartSavingsPlansPurchaseRecommendationGenerationRequest.struct_class = Types::StartSavingsPlansPurchaseRecommendationGenerationRequest
         | 
| 1285 | 
            +
             | 
| 1286 | 
            +
                StartSavingsPlansPurchaseRecommendationGenerationResponse.add_member(:recommendation_id, Shapes::ShapeRef.new(shape: RecommendationId, location_name: "RecommendationId"))
         | 
| 1287 | 
            +
                StartSavingsPlansPurchaseRecommendationGenerationResponse.add_member(:generation_started_time, Shapes::ShapeRef.new(shape: ZonedDateTime, location_name: "GenerationStartedTime"))
         | 
| 1288 | 
            +
                StartSavingsPlansPurchaseRecommendationGenerationResponse.add_member(:estimated_completion_time, Shapes::ShapeRef.new(shape: ZonedDateTime, location_name: "EstimatedCompletionTime"))
         | 
| 1289 | 
            +
                StartSavingsPlansPurchaseRecommendationGenerationResponse.struct_class = Types::StartSavingsPlansPurchaseRecommendationGenerationResponse
         | 
| 1290 | 
            +
             | 
| 1250 1291 | 
             
                Subscriber.add_member(:address, Shapes::ShapeRef.new(shape: SubscriberAddress, location_name: "Address"))
         | 
| 1251 1292 | 
             
                Subscriber.add_member(:type, Shapes::ShapeRef.new(shape: SubscriberType, location_name: "Type"))
         | 
| 1252 1293 | 
             
                Subscriber.add_member(:status, Shapes::ShapeRef.new(shape: SubscriberStatus, location_name: "Status"))
         | 
| @@ -1695,6 +1736,16 @@ module Aws::CostExplorer | |
| 1695 1736 | 
             
                    )
         | 
| 1696 1737 | 
             
                  end)
         | 
| 1697 1738 |  | 
| 1739 | 
            +
                  api.add_operation(:list_savings_plans_purchase_recommendation_generation, Seahorse::Model::Operation.new.tap do |o|
         | 
| 1740 | 
            +
                    o.name = "ListSavingsPlansPurchaseRecommendationGeneration"
         | 
| 1741 | 
            +
                    o.http_method = "POST"
         | 
| 1742 | 
            +
                    o.http_request_uri = "/"
         | 
| 1743 | 
            +
                    o.input = Shapes::ShapeRef.new(shape: ListSavingsPlansPurchaseRecommendationGenerationRequest)
         | 
| 1744 | 
            +
                    o.output = Shapes::ShapeRef.new(shape: ListSavingsPlansPurchaseRecommendationGenerationResponse)
         | 
| 1745 | 
            +
                    o.errors << Shapes::ShapeRef.new(shape: LimitExceededException)
         | 
| 1746 | 
            +
                    o.errors << Shapes::ShapeRef.new(shape: InvalidNextTokenException)
         | 
| 1747 | 
            +
                  end)
         | 
| 1748 | 
            +
             | 
| 1698 1749 | 
             
                  api.add_operation(:list_tags_for_resource, Seahorse::Model::Operation.new.tap do |o|
         | 
| 1699 1750 | 
             
                    o.name = "ListTagsForResource"
         | 
| 1700 1751 | 
             
                    o.http_method = "POST"
         | 
| @@ -1714,6 +1765,17 @@ module Aws::CostExplorer | |
| 1714 1765 | 
             
                    o.errors << Shapes::ShapeRef.new(shape: LimitExceededException)
         | 
| 1715 1766 | 
             
                  end)
         | 
| 1716 1767 |  | 
| 1768 | 
            +
                  api.add_operation(:start_savings_plans_purchase_recommendation_generation, Seahorse::Model::Operation.new.tap do |o|
         | 
| 1769 | 
            +
                    o.name = "StartSavingsPlansPurchaseRecommendationGeneration"
         | 
| 1770 | 
            +
                    o.http_method = "POST"
         | 
| 1771 | 
            +
                    o.http_request_uri = "/"
         | 
| 1772 | 
            +
                    o.input = Shapes::ShapeRef.new(shape: StartSavingsPlansPurchaseRecommendationGenerationRequest)
         | 
| 1773 | 
            +
                    o.output = Shapes::ShapeRef.new(shape: StartSavingsPlansPurchaseRecommendationGenerationResponse)
         | 
| 1774 | 
            +
                    o.errors << Shapes::ShapeRef.new(shape: LimitExceededException)
         | 
| 1775 | 
            +
                    o.errors << Shapes::ShapeRef.new(shape: ServiceQuotaExceededException)
         | 
| 1776 | 
            +
                    o.errors << Shapes::ShapeRef.new(shape: GenerationExistsException)
         | 
| 1777 | 
            +
                  end)
         | 
| 1778 | 
            +
             | 
| 1717 1779 | 
             
                  api.add_operation(:tag_resource, Seahorse::Model::Operation.new.tap do |o|
         | 
| 1718 1780 | 
             
                    o.name = "TagResource"
         | 
| 1719 1781 | 
             
                    o.http_method = "POST"
         | 
| @@ -0,0 +1,69 @@ | |
| 1 | 
            +
            # frozen_string_literal: true
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            # WARNING ABOUT GENERATED CODE
         | 
| 4 | 
            +
            #
         | 
| 5 | 
            +
            # This file is generated. See the contributing guide for more information:
         | 
| 6 | 
            +
            # https://github.com/aws/aws-sdk-ruby/blob/version-3/CONTRIBUTING.md
         | 
| 7 | 
            +
            #
         | 
| 8 | 
            +
            # WARNING ABOUT GENERATED CODE
         | 
| 9 | 
            +
             | 
| 10 | 
            +
            module Aws::CostExplorer
         | 
| 11 | 
            +
              # Endpoint parameters used to influence endpoints per request.
         | 
| 12 | 
            +
              #
         | 
| 13 | 
            +
              # @!attribute region
         | 
| 14 | 
            +
              #   The AWS region used to dispatch the request.
         | 
| 15 | 
            +
              #
         | 
| 16 | 
            +
              #   @return [String]
         | 
| 17 | 
            +
              #
         | 
| 18 | 
            +
              # @!attribute use_dual_stack
         | 
| 19 | 
            +
              #   When true, use the dual-stack endpoint. If the configured endpoint does not support dual-stack, dispatching the request MAY return an error.
         | 
| 20 | 
            +
              #
         | 
| 21 | 
            +
              #   @return [Boolean]
         | 
| 22 | 
            +
              #
         | 
| 23 | 
            +
              # @!attribute use_fips
         | 
| 24 | 
            +
              #   When true, send this request to the FIPS-compliant regional endpoint. If the configured endpoint does not have a FIPS compliant endpoint, dispatching the request will return an error.
         | 
| 25 | 
            +
              #
         | 
| 26 | 
            +
              #   @return [Boolean]
         | 
| 27 | 
            +
              #
         | 
| 28 | 
            +
              # @!attribute endpoint
         | 
| 29 | 
            +
              #   Override the endpoint used to send this request
         | 
| 30 | 
            +
              #
         | 
| 31 | 
            +
              #   @return [String]
         | 
| 32 | 
            +
              #
         | 
| 33 | 
            +
              EndpointParameters = Struct.new(
         | 
| 34 | 
            +
                :region,
         | 
| 35 | 
            +
                :use_dual_stack,
         | 
| 36 | 
            +
                :use_fips,
         | 
| 37 | 
            +
                :endpoint,
         | 
| 38 | 
            +
              ) do
         | 
| 39 | 
            +
                include Aws::Structure
         | 
| 40 | 
            +
             | 
| 41 | 
            +
                # @api private
         | 
| 42 | 
            +
                class << self
         | 
| 43 | 
            +
                  PARAM_MAP = {
         | 
| 44 | 
            +
                    'Region' => :region,
         | 
| 45 | 
            +
                    'UseDualStack' => :use_dual_stack,
         | 
| 46 | 
            +
                    'UseFIPS' => :use_fips,
         | 
| 47 | 
            +
                    'Endpoint' => :endpoint,
         | 
| 48 | 
            +
                  }.freeze
         | 
| 49 | 
            +
                end
         | 
| 50 | 
            +
             | 
| 51 | 
            +
                def initialize(options = {})
         | 
| 52 | 
            +
                  self[:region] = options[:region]
         | 
| 53 | 
            +
                  if self[:region].nil?
         | 
| 54 | 
            +
                    raise ArgumentError, "Missing required EndpointParameter: :region"
         | 
| 55 | 
            +
                  end
         | 
| 56 | 
            +
                  self[:use_dual_stack] = options[:use_dual_stack]
         | 
| 57 | 
            +
                  self[:use_dual_stack] = false if self[:use_dual_stack].nil?
         | 
| 58 | 
            +
                  if self[:use_dual_stack].nil?
         | 
| 59 | 
            +
                    raise ArgumentError, "Missing required EndpointParameter: :use_dual_stack"
         | 
| 60 | 
            +
                  end
         | 
| 61 | 
            +
                  self[:use_fips] = options[:use_fips]
         | 
| 62 | 
            +
                  self[:use_fips] = false if self[:use_fips].nil?
         | 
| 63 | 
            +
                  if self[:use_fips].nil?
         | 
| 64 | 
            +
                    raise ArgumentError, "Missing required EndpointParameter: :use_fips"
         | 
| 65 | 
            +
                  end
         | 
| 66 | 
            +
                  self[:endpoint] = options[:endpoint]
         | 
| 67 | 
            +
                end
         | 
| 68 | 
            +
              end
         | 
| 69 | 
            +
            end
         | 
| @@ -0,0 +1,222 @@ | |
| 1 | 
            +
            # frozen_string_literal: true
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            # WARNING ABOUT GENERATED CODE
         | 
| 4 | 
            +
            #
         | 
| 5 | 
            +
            # This file is generated. See the contributing guide for more information:
         | 
| 6 | 
            +
            # https://github.com/aws/aws-sdk-ruby/blob/version-3/CONTRIBUTING.md
         | 
| 7 | 
            +
            #
         | 
| 8 | 
            +
            # WARNING ABOUT GENERATED CODE
         | 
| 9 | 
            +
             | 
| 10 | 
            +
            module Aws::CostExplorer
         | 
| 11 | 
            +
              class EndpointProvider
         | 
| 12 | 
            +
                def initialize(rule_set = nil)
         | 
| 13 | 
            +
                  @@rule_set ||= begin
         | 
| 14 | 
            +
                    endpoint_rules = Aws::Json.load(Base64.decode64(RULES))
         | 
| 15 | 
            +
                    Aws::Endpoints::RuleSet.new(
         | 
| 16 | 
            +
                      version: endpoint_rules['version'],
         | 
| 17 | 
            +
                      service_id: endpoint_rules['serviceId'],
         | 
| 18 | 
            +
                      parameters: endpoint_rules['parameters'],
         | 
| 19 | 
            +
                      rules: endpoint_rules['rules']
         | 
| 20 | 
            +
                    )
         | 
| 21 | 
            +
                  end
         | 
| 22 | 
            +
                  @provider = Aws::Endpoints::RulesProvider.new(rule_set || @@rule_set)
         | 
| 23 | 
            +
                end
         | 
| 24 | 
            +
             | 
| 25 | 
            +
                def resolve_endpoint(parameters)
         | 
| 26 | 
            +
                  @provider.resolve_endpoint(parameters)
         | 
| 27 | 
            +
                end
         | 
| 28 | 
            +
             | 
| 29 | 
            +
                # @api private
         | 
| 30 | 
            +
                RULES = <<-JSON
         | 
| 31 | 
            +
            eyJ2ZXJzaW9uIjoiMS4wIiwicGFyYW1ldGVycyI6eyJSZWdpb24iOnsiYnVp
         | 
| 32 | 
            +
            bHRJbiI6IkFXUzo6UmVnaW9uIiwicmVxdWlyZWQiOnRydWUsImRvY3VtZW50
         | 
| 33 | 
            +
            YXRpb24iOiJUaGUgQVdTIHJlZ2lvbiB1c2VkIHRvIGRpc3BhdGNoIHRoZSBy
         | 
| 34 | 
            +
            ZXF1ZXN0LiIsInR5cGUiOiJTdHJpbmcifSwiVXNlRHVhbFN0YWNrIjp7ImJ1
         | 
| 35 | 
            +
            aWx0SW4iOiJBV1M6OlVzZUR1YWxTdGFjayIsInJlcXVpcmVkIjp0cnVlLCJk
         | 
| 36 | 
            +
            ZWZhdWx0IjpmYWxzZSwiZG9jdW1lbnRhdGlvbiI6IldoZW4gdHJ1ZSwgdXNl
         | 
| 37 | 
            +
            IHRoZSBkdWFsLXN0YWNrIGVuZHBvaW50LiBJZiB0aGUgY29uZmlndXJlZCBl
         | 
| 38 | 
            +
            bmRwb2ludCBkb2VzIG5vdCBzdXBwb3J0IGR1YWwtc3RhY2ssIGRpc3BhdGNo
         | 
| 39 | 
            +
            aW5nIHRoZSByZXF1ZXN0IE1BWSByZXR1cm4gYW4gZXJyb3IuIiwidHlwZSI6
         | 
| 40 | 
            +
            IkJvb2xlYW4ifSwiVXNlRklQUyI6eyJidWlsdEluIjoiQVdTOjpVc2VGSVBT
         | 
| 41 | 
            +
            IiwicmVxdWlyZWQiOnRydWUsImRlZmF1bHQiOmZhbHNlLCJkb2N1bWVudGF0
         | 
| 42 | 
            +
            aW9uIjoiV2hlbiB0cnVlLCBzZW5kIHRoaXMgcmVxdWVzdCB0byB0aGUgRklQ
         | 
| 43 | 
            +
            Uy1jb21wbGlhbnQgcmVnaW9uYWwgZW5kcG9pbnQuIElmIHRoZSBjb25maWd1
         | 
| 44 | 
            +
            cmVkIGVuZHBvaW50IGRvZXMgbm90IGhhdmUgYSBGSVBTIGNvbXBsaWFudCBl
         | 
| 45 | 
            +
            bmRwb2ludCwgZGlzcGF0Y2hpbmcgdGhlIHJlcXVlc3Qgd2lsbCByZXR1cm4g
         | 
| 46 | 
            +
            YW4gZXJyb3IuIiwidHlwZSI6IkJvb2xlYW4ifSwiRW5kcG9pbnQiOnsiYnVp
         | 
| 47 | 
            +
            bHRJbiI6IlNESzo6RW5kcG9pbnQiLCJyZXF1aXJlZCI6ZmFsc2UsImRvY3Vt
         | 
| 48 | 
            +
            ZW50YXRpb24iOiJPdmVycmlkZSB0aGUgZW5kcG9pbnQgdXNlZCB0byBzZW5k
         | 
| 49 | 
            +
            IHRoaXMgcmVxdWVzdCIsInR5cGUiOiJTdHJpbmcifX0sInJ1bGVzIjpbeyJj
         | 
| 50 | 
            +
            b25kaXRpb25zIjpbeyJmbiI6ImF3cy5wYXJ0aXRpb24iLCJhcmd2IjpbeyJy
         | 
| 51 | 
            +
            ZWYiOiJSZWdpb24ifV0sImFzc2lnbiI6IlBhcnRpdGlvblJlc3VsdCJ9XSwi
         | 
| 52 | 
            +
            dHlwZSI6InRyZWUiLCJydWxlcyI6W3siY29uZGl0aW9ucyI6W3siZm4iOiJp
         | 
| 53 | 
            +
            c1NldCIsImFyZ3YiOlt7InJlZiI6IkVuZHBvaW50In1dfV0sInR5cGUiOiJ0
         | 
| 54 | 
            +
            cmVlIiwicnVsZXMiOlt7ImNvbmRpdGlvbnMiOlt7ImZuIjoiYm9vbGVhbkVx
         | 
| 55 | 
            +
            dWFscyIsImFyZ3YiOlt7InJlZiI6IlVzZUZJUFMifSx0cnVlXX1dLCJlcnJv
         | 
| 56 | 
            +
            ciI6IkludmFsaWQgQ29uZmlndXJhdGlvbjogRklQUyBhbmQgY3VzdG9tIGVu
         | 
| 57 | 
            +
            ZHBvaW50IGFyZSBub3Qgc3VwcG9ydGVkIiwidHlwZSI6ImVycm9yIn0seyJj
         | 
| 58 | 
            +
            b25kaXRpb25zIjpbXSwidHlwZSI6InRyZWUiLCJydWxlcyI6W3siY29uZGl0
         | 
| 59 | 
            +
            aW9ucyI6W3siZm4iOiJib29sZWFuRXF1YWxzIiwiYXJndiI6W3sicmVmIjoi
         | 
| 60 | 
            +
            VXNlRHVhbFN0YWNrIn0sdHJ1ZV19XSwiZXJyb3IiOiJJbnZhbGlkIENvbmZp
         | 
| 61 | 
            +
            Z3VyYXRpb246IER1YWxzdGFjayBhbmQgY3VzdG9tIGVuZHBvaW50IGFyZSBu
         | 
| 62 | 
            +
            b3Qgc3VwcG9ydGVkIiwidHlwZSI6ImVycm9yIn0seyJjb25kaXRpb25zIjpb
         | 
| 63 | 
            +
            XSwiZW5kcG9pbnQiOnsidXJsIjp7InJlZiI6IkVuZHBvaW50In0sInByb3Bl
         | 
| 64 | 
            +
            cnRpZXMiOnt9LCJoZWFkZXJzIjp7fX0sInR5cGUiOiJlbmRwb2ludCJ9XX1d
         | 
| 65 | 
            +
            fSx7ImNvbmRpdGlvbnMiOlt7ImZuIjoic3RyaW5nRXF1YWxzIiwiYXJndiI6
         | 
| 66 | 
            +
            W3siZm4iOiJnZXRBdHRyIiwiYXJndiI6W3sicmVmIjoiUGFydGl0aW9uUmVz
         | 
| 67 | 
            +
            dWx0In0sIm5hbWUiXX0sImF3cyJdfV0sInR5cGUiOiJ0cmVlIiwicnVsZXMi
         | 
| 68 | 
            +
            Olt7ImNvbmRpdGlvbnMiOlt7ImZuIjoiYm9vbGVhbkVxdWFscyIsImFyZ3Yi
         | 
| 69 | 
            +
            Olt7InJlZiI6IlVzZUZJUFMifSx0cnVlXX0seyJmbiI6ImJvb2xlYW5FcXVh
         | 
| 70 | 
            +
            bHMiLCJhcmd2IjpbeyJyZWYiOiJVc2VEdWFsU3RhY2sifSx0cnVlXX1dLCJ0
         | 
| 71 | 
            +
            eXBlIjoidHJlZSIsInJ1bGVzIjpbeyJjb25kaXRpb25zIjpbeyJmbiI6ImJv
         | 
| 72 | 
            +
            b2xlYW5FcXVhbHMiLCJhcmd2IjpbdHJ1ZSx7ImZuIjoiZ2V0QXR0ciIsImFy
         | 
| 73 | 
            +
            Z3YiOlt7InJlZiI6IlBhcnRpdGlvblJlc3VsdCJ9LCJzdXBwb3J0c0ZJUFMi
         | 
| 74 | 
            +
            XX1dfSx7ImZuIjoiYm9vbGVhbkVxdWFscyIsImFyZ3YiOlt0cnVlLHsiZm4i
         | 
| 75 | 
            +
            OiJnZXRBdHRyIiwiYXJndiI6W3sicmVmIjoiUGFydGl0aW9uUmVzdWx0In0s
         | 
| 76 | 
            +
            InN1cHBvcnRzRHVhbFN0YWNrIl19XX1dLCJ0eXBlIjoidHJlZSIsInJ1bGVz
         | 
| 77 | 
            +
            IjpbeyJjb25kaXRpb25zIjpbXSwiZW5kcG9pbnQiOnsidXJsIjoiaHR0cHM6
         | 
| 78 | 
            +
            Ly9jb3N0LWV4cGxvcmVyLWZpcHMue1JlZ2lvbn0uYXBpLmF3cyIsInByb3Bl
         | 
| 79 | 
            +
            cnRpZXMiOnsiYXV0aFNjaGVtZXMiOlt7Im5hbWUiOiJzaWd2NCIsInNpZ25p
         | 
| 80 | 
            +
            bmdSZWdpb24iOiJ1cy1lYXN0LTEiLCJzaWduaW5nTmFtZSI6ImNlIn1dfSwi
         | 
| 81 | 
            +
            aGVhZGVycyI6e319LCJ0eXBlIjoiZW5kcG9pbnQifV19LHsiY29uZGl0aW9u
         | 
| 82 | 
            +
            cyI6W10sImVycm9yIjoiRklQUyBhbmQgRHVhbFN0YWNrIGFyZSBlbmFibGVk
         | 
| 83 | 
            +
            LCBidXQgdGhpcyBwYXJ0aXRpb24gZG9lcyBub3Qgc3VwcG9ydCBvbmUgb3Ig
         | 
| 84 | 
            +
            Ym90aCIsInR5cGUiOiJlcnJvciJ9XX0seyJjb25kaXRpb25zIjpbeyJmbiI6
         | 
| 85 | 
            +
            ImJvb2xlYW5FcXVhbHMiLCJhcmd2IjpbeyJyZWYiOiJVc2VGSVBTIn0sdHJ1
         | 
| 86 | 
            +
            ZV19XSwidHlwZSI6InRyZWUiLCJydWxlcyI6W3siY29uZGl0aW9ucyI6W3si
         | 
| 87 | 
            +
            Zm4iOiJib29sZWFuRXF1YWxzIiwiYXJndiI6W3RydWUseyJmbiI6ImdldEF0
         | 
| 88 | 
            +
            dHIiLCJhcmd2IjpbeyJyZWYiOiJQYXJ0aXRpb25SZXN1bHQifSwic3VwcG9y
         | 
| 89 | 
            +
            dHNGSVBTIl19XX1dLCJ0eXBlIjoidHJlZSIsInJ1bGVzIjpbeyJjb25kaXRp
         | 
| 90 | 
            +
            b25zIjpbXSwiZW5kcG9pbnQiOnsidXJsIjoiaHR0cHM6Ly9jb3N0LWV4cGxv
         | 
| 91 | 
            +
            cmVyLWZpcHMue1JlZ2lvbn0uYW1hem9uYXdzLmNvbSIsInByb3BlcnRpZXMi
         | 
| 92 | 
            +
            OnsiYXV0aFNjaGVtZXMiOlt7Im5hbWUiOiJzaWd2NCIsInNpZ25pbmdSZWdp
         | 
| 93 | 
            +
            b24iOiJ1cy1lYXN0LTEiLCJzaWduaW5nTmFtZSI6ImNlIn1dfSwiaGVhZGVy
         | 
| 94 | 
            +
            cyI6e319LCJ0eXBlIjoiZW5kcG9pbnQifV19LHsiY29uZGl0aW9ucyI6W10s
         | 
| 95 | 
            +
            ImVycm9yIjoiRklQUyBpcyBlbmFibGVkIGJ1dCB0aGlzIHBhcnRpdGlvbiBk
         | 
| 96 | 
            +
            b2VzIG5vdCBzdXBwb3J0IEZJUFMiLCJ0eXBlIjoiZXJyb3IifV19LHsiY29u
         | 
| 97 | 
            +
            ZGl0aW9ucyI6W3siZm4iOiJib29sZWFuRXF1YWxzIiwiYXJndiI6W3sicmVm
         | 
| 98 | 
            +
            IjoiVXNlRHVhbFN0YWNrIn0sdHJ1ZV19XSwidHlwZSI6InRyZWUiLCJydWxl
         | 
| 99 | 
            +
            cyI6W3siY29uZGl0aW9ucyI6W3siZm4iOiJib29sZWFuRXF1YWxzIiwiYXJn
         | 
| 100 | 
            +
            diI6W3RydWUseyJmbiI6ImdldEF0dHIiLCJhcmd2IjpbeyJyZWYiOiJQYXJ0
         | 
| 101 | 
            +
            aXRpb25SZXN1bHQifSwic3VwcG9ydHNEdWFsU3RhY2siXX1dfV0sInR5cGUi
         | 
| 102 | 
            +
            OiJ0cmVlIiwicnVsZXMiOlt7ImNvbmRpdGlvbnMiOltdLCJlbmRwb2ludCI6
         | 
| 103 | 
            +
            eyJ1cmwiOiJodHRwczovL2Nvc3QtZXhwbG9yZXIue1JlZ2lvbn0uYXBpLmF3
         | 
| 104 | 
            +
            cyIsInByb3BlcnRpZXMiOnsiYXV0aFNjaGVtZXMiOlt7Im5hbWUiOiJzaWd2
         | 
| 105 | 
            +
            NCIsInNpZ25pbmdSZWdpb24iOiJ1cy1lYXN0LTEiLCJzaWduaW5nTmFtZSI6
         | 
| 106 | 
            +
            ImNlIn1dfSwiaGVhZGVycyI6e319LCJ0eXBlIjoiZW5kcG9pbnQifV19LHsi
         | 
| 107 | 
            +
            Y29uZGl0aW9ucyI6W10sImVycm9yIjoiRHVhbFN0YWNrIGlzIGVuYWJsZWQg
         | 
| 108 | 
            +
            YnV0IHRoaXMgcGFydGl0aW9uIGRvZXMgbm90IHN1cHBvcnQgRHVhbFN0YWNr
         | 
| 109 | 
            +
            IiwidHlwZSI6ImVycm9yIn1dfSx7ImNvbmRpdGlvbnMiOltdLCJlbmRwb2lu
         | 
| 110 | 
            +
            dCI6eyJ1cmwiOiJodHRwczovL2NlLnVzLWVhc3QtMS5hbWF6b25hd3MuY29t
         | 
| 111 | 
            +
            IiwicHJvcGVydGllcyI6eyJhdXRoU2NoZW1lcyI6W3sibmFtZSI6InNpZ3Y0
         | 
| 112 | 
            +
            Iiwic2lnbmluZ1JlZ2lvbiI6InVzLWVhc3QtMSIsInNpZ25pbmdOYW1lIjoi
         | 
| 113 | 
            +
            Y2UifV19LCJoZWFkZXJzIjp7fX0sInR5cGUiOiJlbmRwb2ludCJ9XX0seyJj
         | 
| 114 | 
            +
            b25kaXRpb25zIjpbeyJmbiI6InN0cmluZ0VxdWFscyIsImFyZ3YiOlt7ImZu
         | 
| 115 | 
            +
            IjoiZ2V0QXR0ciIsImFyZ3YiOlt7InJlZiI6IlBhcnRpdGlvblJlc3VsdCJ9
         | 
| 116 | 
            +
            LCJuYW1lIl19LCJhd3MtY24iXX1dLCJ0eXBlIjoidHJlZSIsInJ1bGVzIjpb
         | 
| 117 | 
            +
            eyJjb25kaXRpb25zIjpbeyJmbiI6ImJvb2xlYW5FcXVhbHMiLCJhcmd2Ijpb
         | 
| 118 | 
            +
            eyJyZWYiOiJVc2VGSVBTIn0sdHJ1ZV19LHsiZm4iOiJib29sZWFuRXF1YWxz
         | 
| 119 | 
            +
            IiwiYXJndiI6W3sicmVmIjoiVXNlRHVhbFN0YWNrIn0sdHJ1ZV19XSwidHlw
         | 
| 120 | 
            +
            ZSI6InRyZWUiLCJydWxlcyI6W3siY29uZGl0aW9ucyI6W3siZm4iOiJib29s
         | 
| 121 | 
            +
            ZWFuRXF1YWxzIiwiYXJndiI6W3RydWUseyJmbiI6ImdldEF0dHIiLCJhcmd2
         | 
| 122 | 
            +
            IjpbeyJyZWYiOiJQYXJ0aXRpb25SZXN1bHQifSwic3VwcG9ydHNGSVBTIl19
         | 
| 123 | 
            +
            XX0seyJmbiI6ImJvb2xlYW5FcXVhbHMiLCJhcmd2IjpbdHJ1ZSx7ImZuIjoi
         | 
| 124 | 
            +
            Z2V0QXR0ciIsImFyZ3YiOlt7InJlZiI6IlBhcnRpdGlvblJlc3VsdCJ9LCJz
         | 
| 125 | 
            +
            dXBwb3J0c0R1YWxTdGFjayJdfV19XSwidHlwZSI6InRyZWUiLCJydWxlcyI6
         | 
| 126 | 
            +
            W3siY29uZGl0aW9ucyI6W10sImVuZHBvaW50Ijp7InVybCI6Imh0dHBzOi8v
         | 
| 127 | 
            +
            Y29zdC1leHBsb3Jlci1maXBzLntSZWdpb259LmFwaS5hbWF6b253ZWJzZXJ2
         | 
| 128 | 
            +
            aWNlcy5jb20uY24iLCJwcm9wZXJ0aWVzIjp7ImF1dGhTY2hlbWVzIjpbeyJu
         | 
| 129 | 
            +
            YW1lIjoic2lndjQiLCJzaWduaW5nUmVnaW9uIjoiY24tbm9ydGh3ZXN0LTEi
         | 
| 130 | 
            +
            LCJzaWduaW5nTmFtZSI6ImNlIn1dfSwiaGVhZGVycyI6e319LCJ0eXBlIjoi
         | 
| 131 | 
            +
            ZW5kcG9pbnQifV19LHsiY29uZGl0aW9ucyI6W10sImVycm9yIjoiRklQUyBh
         | 
| 132 | 
            +
            bmQgRHVhbFN0YWNrIGFyZSBlbmFibGVkLCBidXQgdGhpcyBwYXJ0aXRpb24g
         | 
| 133 | 
            +
            ZG9lcyBub3Qgc3VwcG9ydCBvbmUgb3IgYm90aCIsInR5cGUiOiJlcnJvciJ9
         | 
| 134 | 
            +
            XX0seyJjb25kaXRpb25zIjpbeyJmbiI6ImJvb2xlYW5FcXVhbHMiLCJhcmd2
         | 
| 135 | 
            +
            IjpbeyJyZWYiOiJVc2VGSVBTIn0sdHJ1ZV19XSwidHlwZSI6InRyZWUiLCJy
         | 
| 136 | 
            +
            dWxlcyI6W3siY29uZGl0aW9ucyI6W3siZm4iOiJib29sZWFuRXF1YWxzIiwi
         | 
| 137 | 
            +
            YXJndiI6W3RydWUseyJmbiI6ImdldEF0dHIiLCJhcmd2IjpbeyJyZWYiOiJQ
         | 
| 138 | 
            +
            YXJ0aXRpb25SZXN1bHQifSwic3VwcG9ydHNGSVBTIl19XX1dLCJ0eXBlIjoi
         | 
| 139 | 
            +
            dHJlZSIsInJ1bGVzIjpbeyJjb25kaXRpb25zIjpbXSwiZW5kcG9pbnQiOnsi
         | 
| 140 | 
            +
            dXJsIjoiaHR0cHM6Ly9jb3N0LWV4cGxvcmVyLWZpcHMue1JlZ2lvbn0uYW1h
         | 
| 141 | 
            +
            em9uYXdzLmNvbS5jbiIsInByb3BlcnRpZXMiOnsiYXV0aFNjaGVtZXMiOlt7
         | 
| 142 | 
            +
            Im5hbWUiOiJzaWd2NCIsInNpZ25pbmdSZWdpb24iOiJjbi1ub3J0aHdlc3Qt
         | 
| 143 | 
            +
            MSIsInNpZ25pbmdOYW1lIjoiY2UifV19LCJoZWFkZXJzIjp7fX0sInR5cGUi
         | 
| 144 | 
            +
            OiJlbmRwb2ludCJ9XX0seyJjb25kaXRpb25zIjpbXSwiZXJyb3IiOiJGSVBT
         | 
| 145 | 
            +
            IGlzIGVuYWJsZWQgYnV0IHRoaXMgcGFydGl0aW9uIGRvZXMgbm90IHN1cHBv
         | 
| 146 | 
            +
            cnQgRklQUyIsInR5cGUiOiJlcnJvciJ9XX0seyJjb25kaXRpb25zIjpbeyJm
         | 
| 147 | 
            +
            biI6ImJvb2xlYW5FcXVhbHMiLCJhcmd2IjpbeyJyZWYiOiJVc2VEdWFsU3Rh
         | 
| 148 | 
            +
            Y2sifSx0cnVlXX1dLCJ0eXBlIjoidHJlZSIsInJ1bGVzIjpbeyJjb25kaXRp
         | 
| 149 | 
            +
            b25zIjpbeyJmbiI6ImJvb2xlYW5FcXVhbHMiLCJhcmd2IjpbdHJ1ZSx7ImZu
         | 
| 150 | 
            +
            IjoiZ2V0QXR0ciIsImFyZ3YiOlt7InJlZiI6IlBhcnRpdGlvblJlc3VsdCJ9
         | 
| 151 | 
            +
            LCJzdXBwb3J0c0R1YWxTdGFjayJdfV19XSwidHlwZSI6InRyZWUiLCJydWxl
         | 
| 152 | 
            +
            cyI6W3siY29uZGl0aW9ucyI6W10sImVuZHBvaW50Ijp7InVybCI6Imh0dHBz
         | 
| 153 | 
            +
            Oi8vY29zdC1leHBsb3Jlci57UmVnaW9ufS5hcGkuYW1hem9ud2Vic2Vydmlj
         | 
| 154 | 
            +
            ZXMuY29tLmNuIiwicHJvcGVydGllcyI6eyJhdXRoU2NoZW1lcyI6W3sibmFt
         | 
| 155 | 
            +
            ZSI6InNpZ3Y0Iiwic2lnbmluZ1JlZ2lvbiI6ImNuLW5vcnRod2VzdC0xIiwi
         | 
| 156 | 
            +
            c2lnbmluZ05hbWUiOiJjZSJ9XX0sImhlYWRlcnMiOnt9fSwidHlwZSI6ImVu
         | 
| 157 | 
            +
            ZHBvaW50In1dfSx7ImNvbmRpdGlvbnMiOltdLCJlcnJvciI6IkR1YWxTdGFj
         | 
| 158 | 
            +
            ayBpcyBlbmFibGVkIGJ1dCB0aGlzIHBhcnRpdGlvbiBkb2VzIG5vdCBzdXBw
         | 
| 159 | 
            +
            b3J0IER1YWxTdGFjayIsInR5cGUiOiJlcnJvciJ9XX0seyJjb25kaXRpb25z
         | 
| 160 | 
            +
            IjpbXSwiZW5kcG9pbnQiOnsidXJsIjoiaHR0cHM6Ly9jZS5jbi1ub3J0aHdl
         | 
| 161 | 
            +
            c3QtMS5hbWF6b25hd3MuY29tLmNuIiwicHJvcGVydGllcyI6eyJhdXRoU2No
         | 
| 162 | 
            +
            ZW1lcyI6W3sibmFtZSI6InNpZ3Y0Iiwic2lnbmluZ1JlZ2lvbiI6ImNuLW5v
         | 
| 163 | 
            +
            cnRod2VzdC0xIiwic2lnbmluZ05hbWUiOiJjZSJ9XX0sImhlYWRlcnMiOnt9
         | 
| 164 | 
            +
            fSwidHlwZSI6ImVuZHBvaW50In1dfSx7ImNvbmRpdGlvbnMiOlt7ImZuIjoi
         | 
| 165 | 
            +
            Ym9vbGVhbkVxdWFscyIsImFyZ3YiOlt7InJlZiI6IlVzZUZJUFMifSx0cnVl
         | 
| 166 | 
            +
            XX0seyJmbiI6ImJvb2xlYW5FcXVhbHMiLCJhcmd2IjpbeyJyZWYiOiJVc2VE
         | 
| 167 | 
            +
            dWFsU3RhY2sifSx0cnVlXX1dLCJ0eXBlIjoidHJlZSIsInJ1bGVzIjpbeyJj
         | 
| 168 | 
            +
            b25kaXRpb25zIjpbeyJmbiI6ImJvb2xlYW5FcXVhbHMiLCJhcmd2IjpbdHJ1
         | 
| 169 | 
            +
            ZSx7ImZuIjoiZ2V0QXR0ciIsImFyZ3YiOlt7InJlZiI6IlBhcnRpdGlvblJl
         | 
| 170 | 
            +
            c3VsdCJ9LCJzdXBwb3J0c0ZJUFMiXX1dfSx7ImZuIjoiYm9vbGVhbkVxdWFs
         | 
| 171 | 
            +
            cyIsImFyZ3YiOlt0cnVlLHsiZm4iOiJnZXRBdHRyIiwiYXJndiI6W3sicmVm
         | 
| 172 | 
            +
            IjoiUGFydGl0aW9uUmVzdWx0In0sInN1cHBvcnRzRHVhbFN0YWNrIl19XX1d
         | 
| 173 | 
            +
            LCJ0eXBlIjoidHJlZSIsInJ1bGVzIjpbeyJjb25kaXRpb25zIjpbXSwiZW5k
         | 
| 174 | 
            +
            cG9pbnQiOnsidXJsIjoiaHR0cHM6Ly9jZS1maXBzLntSZWdpb259LntQYXJ0
         | 
| 175 | 
            +
            aXRpb25SZXN1bHQjZHVhbFN0YWNrRG5zU3VmZml4fSIsInByb3BlcnRpZXMi
         | 
| 176 | 
            +
            Ont9LCJoZWFkZXJzIjp7fX0sInR5cGUiOiJlbmRwb2ludCJ9XX0seyJjb25k
         | 
| 177 | 
            +
            aXRpb25zIjpbXSwiZXJyb3IiOiJGSVBTIGFuZCBEdWFsU3RhY2sgYXJlIGVu
         | 
| 178 | 
            +
            YWJsZWQsIGJ1dCB0aGlzIHBhcnRpdGlvbiBkb2VzIG5vdCBzdXBwb3J0IG9u
         | 
| 179 | 
            +
            ZSBvciBib3RoIiwidHlwZSI6ImVycm9yIn1dfSx7ImNvbmRpdGlvbnMiOlt7
         | 
| 180 | 
            +
            ImZuIjoiYm9vbGVhbkVxdWFscyIsImFyZ3YiOlt7InJlZiI6IlVzZUZJUFMi
         | 
| 181 | 
            +
            fSx0cnVlXX1dLCJ0eXBlIjoidHJlZSIsInJ1bGVzIjpbeyJjb25kaXRpb25z
         | 
| 182 | 
            +
            IjpbeyJmbiI6ImJvb2xlYW5FcXVhbHMiLCJhcmd2IjpbdHJ1ZSx7ImZuIjoi
         | 
| 183 | 
            +
            Z2V0QXR0ciIsImFyZ3YiOlt7InJlZiI6IlBhcnRpdGlvblJlc3VsdCJ9LCJz
         | 
| 184 | 
            +
            dXBwb3J0c0ZJUFMiXX1dfV0sInR5cGUiOiJ0cmVlIiwicnVsZXMiOlt7ImNv
         | 
| 185 | 
            +
            bmRpdGlvbnMiOltdLCJ0eXBlIjoidHJlZSIsInJ1bGVzIjpbeyJjb25kaXRp
         | 
| 186 | 
            +
            b25zIjpbXSwiZW5kcG9pbnQiOnsidXJsIjoiaHR0cHM6Ly9jZS1maXBzLntS
         | 
| 187 | 
            +
            ZWdpb259LntQYXJ0aXRpb25SZXN1bHQjZG5zU3VmZml4fSIsInByb3BlcnRp
         | 
| 188 | 
            +
            ZXMiOnt9LCJoZWFkZXJzIjp7fX0sInR5cGUiOiJlbmRwb2ludCJ9XX1dfSx7
         | 
| 189 | 
            +
            ImNvbmRpdGlvbnMiOltdLCJlcnJvciI6IkZJUFMgaXMgZW5hYmxlZCBidXQg
         | 
| 190 | 
            +
            dGhpcyBwYXJ0aXRpb24gZG9lcyBub3Qgc3VwcG9ydCBGSVBTIiwidHlwZSI6
         | 
| 191 | 
            +
            ImVycm9yIn1dfSx7ImNvbmRpdGlvbnMiOlt7ImZuIjoiYm9vbGVhbkVxdWFs
         | 
| 192 | 
            +
            cyIsImFyZ3YiOlt7InJlZiI6IlVzZUR1YWxTdGFjayJ9LHRydWVdfV0sInR5
         | 
| 193 | 
            +
            cGUiOiJ0cmVlIiwicnVsZXMiOlt7ImNvbmRpdGlvbnMiOlt7ImZuIjoiYm9v
         | 
| 194 | 
            +
            bGVhbkVxdWFscyIsImFyZ3YiOlt0cnVlLHsiZm4iOiJnZXRBdHRyIiwiYXJn
         | 
| 195 | 
            +
            diI6W3sicmVmIjoiUGFydGl0aW9uUmVzdWx0In0sInN1cHBvcnRzRHVhbFN0
         | 
| 196 | 
            +
            YWNrIl19XX1dLCJ0eXBlIjoidHJlZSIsInJ1bGVzIjpbeyJjb25kaXRpb25z
         | 
| 197 | 
            +
            IjpbXSwiZW5kcG9pbnQiOnsidXJsIjoiaHR0cHM6Ly9jZS57UmVnaW9ufS57
         | 
| 198 | 
            +
            UGFydGl0aW9uUmVzdWx0I2R1YWxTdGFja0Ruc1N1ZmZpeH0iLCJwcm9wZXJ0
         | 
| 199 | 
            +
            aWVzIjp7fSwiaGVhZGVycyI6e319LCJ0eXBlIjoiZW5kcG9pbnQifV19LHsi
         | 
| 200 | 
            +
            Y29uZGl0aW9ucyI6W10sImVycm9yIjoiRHVhbFN0YWNrIGlzIGVuYWJsZWQg
         | 
| 201 | 
            +
            YnV0IHRoaXMgcGFydGl0aW9uIGRvZXMgbm90IHN1cHBvcnQgRHVhbFN0YWNr
         | 
| 202 | 
            +
            IiwidHlwZSI6ImVycm9yIn1dfSx7ImNvbmRpdGlvbnMiOltdLCJ0eXBlIjoi
         | 
| 203 | 
            +
            dHJlZSIsInJ1bGVzIjpbeyJjb25kaXRpb25zIjpbeyJmbiI6InN0cmluZ0Vx
         | 
| 204 | 
            +
            dWFscyIsImFyZ3YiOlt7InJlZiI6IlJlZ2lvbiJ9LCJhd3MtZ2xvYmFsIl19
         | 
| 205 | 
            +
            XSwiZW5kcG9pbnQiOnsidXJsIjoiaHR0cHM6Ly9jZS51cy1lYXN0LTEuYW1h
         | 
| 206 | 
            +
            em9uYXdzLmNvbSIsInByb3BlcnRpZXMiOnsiYXV0aFNjaGVtZXMiOlt7Im5h
         | 
| 207 | 
            +
            bWUiOiJzaWd2NCIsInNpZ25pbmdSZWdpb24iOiJ1cy1lYXN0LTEiLCJzaWdu
         | 
| 208 | 
            +
            aW5nTmFtZSI6ImNlIn1dfSwiaGVhZGVycyI6e319LCJ0eXBlIjoiZW5kcG9p
         | 
| 209 | 
            +
            bnQifSx7ImNvbmRpdGlvbnMiOlt7ImZuIjoic3RyaW5nRXF1YWxzIiwiYXJn
         | 
| 210 | 
            +
            diI6W3sicmVmIjoiUmVnaW9uIn0sImF3cy1jbi1nbG9iYWwiXX1dLCJlbmRw
         | 
| 211 | 
            +
            b2ludCI6eyJ1cmwiOiJodHRwczovL2NlLmNuLW5vcnRod2VzdC0xLmFtYXpv
         | 
| 212 | 
            +
            bmF3cy5jb20uY24iLCJwcm9wZXJ0aWVzIjp7ImF1dGhTY2hlbWVzIjpbeyJu
         | 
| 213 | 
            +
            YW1lIjoic2lndjQiLCJzaWduaW5nUmVnaW9uIjoiY24tbm9ydGh3ZXN0LTEi
         | 
| 214 | 
            +
            LCJzaWduaW5nTmFtZSI6ImNlIn1dfSwiaGVhZGVycyI6e319LCJ0eXBlIjoi
         | 
| 215 | 
            +
            ZW5kcG9pbnQifSx7ImNvbmRpdGlvbnMiOltdLCJlbmRwb2ludCI6eyJ1cmwi
         | 
| 216 | 
            +
            OiJodHRwczovL2NlLntSZWdpb259LntQYXJ0aXRpb25SZXN1bHQjZG5zU3Vm
         | 
| 217 | 
            +
            Zml4fSIsInByb3BlcnRpZXMiOnt9LCJoZWFkZXJzIjp7fX0sInR5cGUiOiJl
         | 
| 218 | 
            +
            bmRwb2ludCJ9XX1dfV19
         | 
| 219 | 
            +
             | 
| 220 | 
            +
                JSON
         | 
| 221 | 
            +
              end
         | 
| 222 | 
            +
            end
         |