/*
 * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
 * 
 * Licensed under the Apache License, Version 2.0 (the "License").
 * You may not use this file except in compliance with the License.
 * A copy of the License is located at
 * 
 *  http://aws.amazon.com/apache2.0
 * 
 * or in the "license" file accompanying this file. This file is distributed
 * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
 * express or implied. See the License for the specific language governing
 * permissions and limitations under the License.
 */
/*
 * Do not modify this file. This file is generated from the migrationhub-config-2019-06-30.normal.json service model.
 */
using System;
using System.Threading;
using System.Threading.Tasks;
using System.Collections.Generic;
using Amazon.Runtime;
using Amazon.MigrationHubConfig.Model;
namespace Amazon.MigrationHubConfig
{
    /// 
    /// Interface for accessing MigrationHubConfig
    ///
    /// The AWS Migration Hub home region APIs are available specifically for working with
    /// your Migration Hub home region. You can use these APIs to determine a home region,
    /// as well as to create and work with controls that describe the home region.
    /// 
    ///   -  
    /// 
    /// You must make API calls for write actions (create, notify, associate, disassociate,
    /// import, or put) while in your home region, or a HomeRegionNotSetException/// error is returned.
    /// 
    ///
-  
    /// 
    /// API calls for read actions (list, describe, stop, and delete) are permitted outside
    /// of your home region.
    /// 
    ///  
-  
    /// 
    /// If you call a write API outside the home region, an InvalidInputException/// is returned.
    /// 
    ///
-  
    /// 
    /// You can call GetHomeRegionaction to obtain the account's Migration Hub
    /// home region.
    /// 
    ///
/// 
    /// For specific API usage, see the sections that follow in this AWS Migration Hub Home
    /// Region API reference. 
    /// 
    /// 
    public partial interface IAmazonMigrationHubConfig : IAmazonService, IDisposable
    {
#if AWS_ASYNC_ENUMERABLES_API
        /// 
        /// Paginators for the service
        /// 
        IMigrationHubConfigPaginatorFactory Paginators { get; }
#endif
                
        #region  CreateHomeRegionControl
        /// 
        /// This API sets up the home region for the calling account only.
        /// 
        /// Container for the necessary parameters to execute the CreateHomeRegionControl service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the CreateHomeRegionControl service method, as returned by MigrationHubConfig.
        /// 
        /// You do not have sufficient access to perform this action.
        /// 
        /// 
        /// Exception raised to indicate that authorization of an action was successful, when
        /// theDryRun flag is set to true.
        /// 
        /// 
        /// Exception raised when an internal, configuration, or dependency error is encountered.
        /// 
        /// 
        /// Exception raised when the provided input violates a policy constraint or is entered
        /// in the wrong format or data type.
        /// 
        /// 
        /// Exception raised when a request fails due to temporary unavailability of the service.
        /// 
        /// 
        /// The request was denied due to request throttling.
        /// 
        /// REST API Reference for CreateHomeRegionControl Operation
        Task CreateHomeRegionControlAsync(CreateHomeRegionControlRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken));
        #endregion
                
        #region  DescribeHomeRegionControls
        /// 
        /// This API permits filtering on the ControlId and HomeRegion
        /// fields.
        /// 
        /// Container for the necessary parameters to execute the DescribeHomeRegionControls service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the DescribeHomeRegionControls service method, as returned by MigrationHubConfig.
        /// 
        /// You do not have sufficient access to perform this action.
        /// 
        /// 
        /// Exception raised when an internal, configuration, or dependency error is encountered.
        /// 
        /// 
        /// Exception raised when the provided input violates a policy constraint or is entered
        /// in the wrong format or data type.
        /// 
        /// 
        /// Exception raised when a request fails due to temporary unavailability of the service.
        /// 
        /// 
        /// The request was denied due to request throttling.
        /// 
        /// REST API Reference for DescribeHomeRegionControls Operation
        Task DescribeHomeRegionControlsAsync(DescribeHomeRegionControlsRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken));
        #endregion
                
        #region  GetHomeRegion
        /// 
        /// Returns the calling account’s home region, if configured. This API is used by other
        /// AWS services to determine the regional endpoint for calling AWS Application Discovery
        /// Service and Migration Hub. You must call GetHomeRegion at least once
        /// before you call any other AWS Application Discovery Service and AWS Migration Hub
        /// APIs, to obtain the account's Migration Hub home region.
        /// 
        /// Container for the necessary parameters to execute the GetHomeRegion service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the GetHomeRegion service method, as returned by MigrationHubConfig.
        /// 
        /// You do not have sufficient access to perform this action.
        /// 
        /// 
        /// Exception raised when an internal, configuration, or dependency error is encountered.
        /// 
        /// 
        /// Exception raised when the provided input violates a policy constraint or is entered
        /// in the wrong format or data type.
        /// 
        /// 
        /// Exception raised when a request fails due to temporary unavailability of the service.
        /// 
        /// 
        /// The request was denied due to request throttling.
        /// 
        /// REST API Reference for GetHomeRegion Operation
        Task GetHomeRegionAsync(GetHomeRegionRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken));
        #endregion
        
    }
}