/*
 * 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 migrationhubstrategy-2020-02-19.normal.json service model.
 */
using System;
using System.Threading;
using System.Threading.Tasks;
using System.Collections.Generic;
using Amazon.Runtime;
using Amazon.MigrationHubStrategyRecommendations.Model;
namespace Amazon.MigrationHubStrategyRecommendations
{
    /// 
    /// Interface for accessing MigrationHubStrategyRecommendations
    ///
    /// Migration Hub Strategy Recommendations 
    /// 
    /// This API reference provides descriptions, syntax, and other details about each of
    /// the actions and data types for Migration Hub Strategy Recommendations (Strategy Recommendations).
    /// The topic for each action shows the API request parameters and the response. Alternatively,
    /// you can use one of the AWS SDKs to access an API that is tailored to the programming
    /// language or platform that you're using. For more information, see AWS
    /// SDKs.
    /// 
    /// 
    /// 
    /// 
    public partial interface IAmazonMigrationHubStrategyRecommendations : IAmazonService, IDisposable
    {
#if AWS_ASYNC_ENUMERABLES_API
        /// 
        /// Paginators for the service
        /// 
        IMigrationHubStrategyRecommendationsPaginatorFactory Paginators { get; }
#endif
                
        #region  GetApplicationComponentDetails
        /// 
        /// Retrieves details about an application component.
        /// 
        /// Container for the necessary parameters to execute the GetApplicationComponentDetails service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the GetApplicationComponentDetails service method, as returned by MigrationHubStrategyRecommendations.
        /// 
        /// The server experienced an internal error. Try again.
        /// 
        /// 
        /// The specified ID in the request is not found.
        /// 
        /// 
        /// The request was denied due to request throttling.
        /// 
        /// REST API Reference for GetApplicationComponentDetails Operation
        Task GetApplicationComponentDetailsAsync(GetApplicationComponentDetailsRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken));
        #endregion
                
        #region  GetApplicationComponentStrategies
        /// 
        /// Retrieves a list of all the recommended strategies and tools for an application component
        /// running on a server.
        /// 
        /// Container for the necessary parameters to execute the GetApplicationComponentStrategies service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the GetApplicationComponentStrategies service method, as returned by MigrationHubStrategyRecommendations.
        /// 
        /// The server experienced an internal error. Try again.
        /// 
        /// 
        /// The specified ID in the request is not found.
        /// 
        /// 
        /// The request was denied due to request throttling.
        /// 
        /// REST API Reference for GetApplicationComponentStrategies Operation
        Task GetApplicationComponentStrategiesAsync(GetApplicationComponentStrategiesRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken));
        #endregion
                
        #region  GetAssessment
        /// 
        /// Retrieves the status of an on-going assessment.
        /// 
        /// Container for the necessary parameters to execute the GetAssessment service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the GetAssessment service method, as returned by MigrationHubStrategyRecommendations.
        /// 
        /// The user does not have permission to perform the action. Check the AWS Identity and
        /// Access Management (IAM) policy associated with this user.
        /// 
        /// 
        /// The server experienced an internal error. Try again.
        /// 
        /// 
        /// The specified ID in the request is not found.
        /// 
        /// 
        /// The request was denied due to request throttling.
        /// 
        /// REST API Reference for GetAssessment Operation
        Task GetAssessmentAsync(GetAssessmentRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken));
        #endregion
                
        #region  GetImportFileTask
        /// 
        /// Retrieves the details about a specific import task.
        /// 
        /// Container for the necessary parameters to execute the GetImportFileTask service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the GetImportFileTask service method, as returned by MigrationHubStrategyRecommendations.
        /// 
        /// The user does not have permission to perform the action. Check the AWS Identity and
        /// Access Management (IAM) policy associated with this user.
        /// 
        /// 
        /// The server experienced an internal error. Try again.
        /// 
        /// 
        /// The specified ID in the request is not found.
        /// 
        /// 
        /// The request was denied due to request throttling.
        /// 
        /// 
        /// The request body isn't valid.
        /// 
        /// REST API Reference for GetImportFileTask Operation
        Task GetImportFileTaskAsync(GetImportFileTaskRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken));
        #endregion
                
        #region  GetLatestAssessmentId
        /// 
        /// Retrieve the latest ID of a specific assessment task.
        /// 
        /// Container for the necessary parameters to execute the GetLatestAssessmentId service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the GetLatestAssessmentId service method, as returned by MigrationHubStrategyRecommendations.
        /// 
        /// The user does not have permission to perform the action. Check the AWS Identity and
        /// Access Management (IAM) policy associated with this user.
        /// 
        /// 
        /// Dependency encountered an error.
        /// 
        /// 
        /// The server experienced an internal error. Try again.
        /// 
        /// 
        /// The request body isn't valid.
        /// 
        /// REST API Reference for GetLatestAssessmentId Operation
        Task GetLatestAssessmentIdAsync(GetLatestAssessmentIdRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken));
        #endregion
                
        #region  GetPortfolioPreferences
        /// 
        /// Retrieves your migration and modernization preferences.
        /// 
        /// Container for the necessary parameters to execute the GetPortfolioPreferences service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the GetPortfolioPreferences service method, as returned by MigrationHubStrategyRecommendations.
        /// 
        /// The user does not have permission to perform the action. Check the AWS Identity and
        /// Access Management (IAM) policy associated with this user.
        /// 
        /// 
        /// The server experienced an internal error. Try again.
        /// 
        /// 
        /// The specified ID in the request is not found.
        /// 
        /// 
        /// The request was denied due to request throttling.
        /// 
        /// REST API Reference for GetPortfolioPreferences Operation
        Task GetPortfolioPreferencesAsync(GetPortfolioPreferencesRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken));
        #endregion
                
        #region  GetPortfolioSummary
        /// 
        /// Retrieves overall summary including the number of servers to rehost and the overall
        /// number of anti-patterns.
        /// 
        /// Container for the necessary parameters to execute the GetPortfolioSummary service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the GetPortfolioSummary service method, as returned by MigrationHubStrategyRecommendations.
        /// 
        /// The user does not have permission to perform the action. Check the AWS Identity and
        /// Access Management (IAM) policy associated with this user.
        /// 
        /// 
        /// The server experienced an internal error. Try again.
        /// 
        /// 
        /// The request was denied due to request throttling.
        /// 
        /// REST API Reference for GetPortfolioSummary Operation
        Task GetPortfolioSummaryAsync(GetPortfolioSummaryRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken));
        #endregion
                
        #region  GetRecommendationReportDetails
        /// 
        /// Retrieves detailed information about the specified recommendation report.
        /// 
        /// Container for the necessary parameters to execute the GetRecommendationReportDetails service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the GetRecommendationReportDetails service method, as returned by MigrationHubStrategyRecommendations.
        /// 
        /// The user does not have permission to perform the action. Check the AWS Identity and
        /// Access Management (IAM) policy associated with this user.
        /// 
        /// 
        /// The server experienced an internal error. Try again.
        /// 
        /// 
        /// The specified ID in the request is not found.
        /// 
        /// 
        /// The request was denied due to request throttling.
        /// 
        /// 
        /// The request body isn't valid.
        /// 
        /// REST API Reference for GetRecommendationReportDetails Operation
        Task GetRecommendationReportDetailsAsync(GetRecommendationReportDetailsRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken));
        #endregion
                
        #region  GetServerDetails
        /// 
        /// Retrieves detailed information about a specified server.
        /// 
        /// Container for the necessary parameters to execute the GetServerDetails service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the GetServerDetails service method, as returned by MigrationHubStrategyRecommendations.
        /// 
        /// The user does not have permission to perform the action. Check the AWS Identity and
        /// Access Management (IAM) policy associated with this user.
        /// 
        /// 
        /// The server experienced an internal error. Try again.
        /// 
        /// 
        /// The specified ID in the request is not found.
        /// 
        /// 
        /// The request was denied due to request throttling.
        /// 
        /// 
        /// The request body isn't valid.
        /// 
        /// REST API Reference for GetServerDetails Operation
        Task GetServerDetailsAsync(GetServerDetailsRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken));
        #endregion
                
        #region  GetServerStrategies
        /// 
        /// Retrieves recommended strategies and tools for the specified server.
        /// 
        /// Container for the necessary parameters to execute the GetServerStrategies service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the GetServerStrategies service method, as returned by MigrationHubStrategyRecommendations.
        /// 
        /// The user does not have permission to perform the action. Check the AWS Identity and
        /// Access Management (IAM) policy associated with this user.
        /// 
        /// 
        /// The server experienced an internal error. Try again.
        /// 
        /// 
        /// The specified ID in the request is not found.
        /// 
        /// 
        /// The request was denied due to request throttling.
        /// 
        /// 
        /// The request body isn't valid.
        /// 
        /// REST API Reference for GetServerStrategies Operation
        Task GetServerStrategiesAsync(GetServerStrategiesRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken));
        #endregion
                
        #region  ListApplicationComponents
        /// 
        /// Retrieves a list of all the application components (processes).
        /// 
        /// Container for the necessary parameters to execute the ListApplicationComponents service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the ListApplicationComponents service method, as returned by MigrationHubStrategyRecommendations.
        /// 
        /// The user does not have permission to perform the action. Check the AWS Identity and
        /// Access Management (IAM) policy associated with this user.
        /// 
        /// 
        /// The server experienced an internal error. Try again.
        /// 
        /// 
        /// Exception to indicate that the service-linked role (SLR) is locked.
        /// 
        /// 
        /// The request body isn't valid.
        /// 
        /// REST API Reference for ListApplicationComponents Operation
        Task ListApplicationComponentsAsync(ListApplicationComponentsRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken));
        #endregion
                
        #region  ListCollectors
        /// 
        /// Retrieves a list of all the installed collectors.
        /// 
        /// Container for the necessary parameters to execute the ListCollectors service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the ListCollectors service method, as returned by MigrationHubStrategyRecommendations.
        /// 
        /// The user does not have permission to perform the action. Check the AWS Identity and
        /// Access Management (IAM) policy associated with this user.
        /// 
        /// 
        /// The server experienced an internal error. Try again.
        /// 
        /// 
        /// The request was denied due to request throttling.
        /// 
        /// 
        /// The request body isn't valid.
        /// 
        /// REST API Reference for ListCollectors Operation
        Task ListCollectorsAsync(ListCollectorsRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken));
        #endregion
                
        #region  ListImportFileTask
        /// 
        /// Retrieves a list of all the imports performed.
        /// 
        /// Container for the necessary parameters to execute the ListImportFileTask service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the ListImportFileTask service method, as returned by MigrationHubStrategyRecommendations.
        /// 
        /// The user does not have permission to perform the action. Check the AWS Identity and
        /// Access Management (IAM) policy associated with this user.
        /// 
        /// 
        /// The server experienced an internal error. Try again.
        /// 
        /// 
        /// The request was denied due to request throttling.
        /// 
        /// 
        /// The request body isn't valid.
        /// 
        /// REST API Reference for ListImportFileTask Operation
        Task ListImportFileTaskAsync(ListImportFileTaskRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken));
        #endregion
                
        #region  ListServers
        /// 
        /// Returns a list of all the servers.
        /// 
        /// Container for the necessary parameters to execute the ListServers service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the ListServers service method, as returned by MigrationHubStrategyRecommendations.
        /// 
        /// The user does not have permission to perform the action. Check the AWS Identity and
        /// Access Management (IAM) policy associated with this user.
        /// 
        /// 
        /// The server experienced an internal error. Try again.
        /// 
        /// 
        /// The request was denied due to request throttling.
        /// 
        /// 
        /// The request body isn't valid.
        /// 
        /// REST API Reference for ListServers Operation
        Task ListServersAsync(ListServersRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken));
        #endregion
                
        #region  PutPortfolioPreferences
        /// 
        /// Saves the specified migration and modernization preferences.
        /// 
        /// Container for the necessary parameters to execute the PutPortfolioPreferences service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the PutPortfolioPreferences service method, as returned by MigrationHubStrategyRecommendations.
        /// 
        /// The user does not have permission to perform the action. Check the AWS Identity and
        /// Access Management (IAM) policy associated with this user.
        /// 
        /// 
        /// Exception to indicate that there is an ongoing task when a new task is created. Return
        /// when once the existing tasks are complete.
        /// 
        /// 
        /// The server experienced an internal error. Try again.
        /// 
        /// 
        /// The request was denied due to request throttling.
        /// 
        /// 
        /// The request body isn't valid.
        /// 
        /// REST API Reference for PutPortfolioPreferences Operation
        Task PutPortfolioPreferencesAsync(PutPortfolioPreferencesRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken));
        #endregion
                
        #region  StartAssessment
        /// 
        /// Starts the assessment of an on-premises environment.
        /// 
        /// Container for the necessary parameters to execute the StartAssessment service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the StartAssessment service method, as returned by MigrationHubStrategyRecommendations.
        /// 
        /// The user does not have permission to perform the action. Check the AWS Identity and
        /// Access Management (IAM) policy associated with this user.
        /// 
        /// 
        /// The server experienced an internal error. Try again.
        /// 
        /// 
        /// The AWS account has reached its quota of imports. Contact AWS Support to increase
        /// the quota for this account.
        /// 
        /// 
        /// The request was denied due to request throttling.
        /// 
        /// REST API Reference for StartAssessment Operation
        Task StartAssessmentAsync(StartAssessmentRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken));
        #endregion
                
        #region  StartImportFileTask
        /// 
        /// Starts a file import.
        /// 
        /// Container for the necessary parameters to execute the StartImportFileTask service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the StartImportFileTask service method, as returned by MigrationHubStrategyRecommendations.
        /// 
        /// The user does not have permission to perform the action. Check the AWS Identity and
        /// Access Management (IAM) policy associated with this user.
        /// 
        /// 
        /// The server experienced an internal error. Try again.
        /// 
        /// 
        /// The AWS account has reached its quota of imports. Contact AWS Support to increase
        /// the quota for this account.
        /// 
        /// 
        /// The request was denied due to request throttling.
        /// 
        /// 
        /// The request body isn't valid.
        /// 
        /// REST API Reference for StartImportFileTask Operation
        Task StartImportFileTaskAsync(StartImportFileTaskRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken));
        #endregion
                
        #region  StartRecommendationReportGeneration
        /// 
        /// Starts generating a recommendation report.
        /// 
        /// Container for the necessary parameters to execute the StartRecommendationReportGeneration service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the StartRecommendationReportGeneration service method, as returned by MigrationHubStrategyRecommendations.
        /// 
        /// The user does not have permission to perform the action. Check the AWS Identity and
        /// Access Management (IAM) policy associated with this user.
        /// 
        /// 
        /// Exception to indicate that there is an ongoing task when a new task is created. Return
        /// when once the existing tasks are complete.
        /// 
        /// 
        /// The server experienced an internal error. Try again.
        /// 
        /// 
        /// The request was denied due to request throttling.
        /// 
        /// 
        /// The request body isn't valid.
        /// 
        /// REST API Reference for StartRecommendationReportGeneration Operation
        Task StartRecommendationReportGenerationAsync(StartRecommendationReportGenerationRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken));
        #endregion
                
        #region  StopAssessment
        /// 
        /// Stops the assessment of an on-premises environment.
        /// 
        /// Container for the necessary parameters to execute the StopAssessment service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the StopAssessment service method, as returned by MigrationHubStrategyRecommendations.
        /// 
        /// The user does not have permission to perform the action. Check the AWS Identity and
        /// Access Management (IAM) policy associated with this user.
        /// 
        /// 
        /// The server experienced an internal error. Try again.
        /// 
        /// 
        /// The request was denied due to request throttling.
        /// 
        /// 
        /// The request body isn't valid.
        /// 
        /// REST API Reference for StopAssessment Operation
        Task StopAssessmentAsync(StopAssessmentRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken));
        #endregion
                
        #region  UpdateApplicationComponentConfig
        /// 
        /// Updates the configuration of an application component.
        /// 
        /// Container for the necessary parameters to execute the UpdateApplicationComponentConfig service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the UpdateApplicationComponentConfig service method, as returned by MigrationHubStrategyRecommendations.
        /// 
        /// The server experienced an internal error. Try again.
        /// 
        /// 
        /// The specified ID in the request is not found.
        /// 
        /// 
        /// The request was denied due to request throttling.
        /// 
        /// 
        /// The request body isn't valid.
        /// 
        /// REST API Reference for UpdateApplicationComponentConfig Operation
        Task UpdateApplicationComponentConfigAsync(UpdateApplicationComponentConfigRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken));
        #endregion
                
        #region  UpdateServerConfig
        /// 
        /// Updates the configuration of the specified server.
        /// 
        /// Container for the necessary parameters to execute the UpdateServerConfig service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the UpdateServerConfig service method, as returned by MigrationHubStrategyRecommendations.
        /// 
        /// The server experienced an internal error. Try again.
        /// 
        /// 
        /// The specified ID in the request is not found.
        /// 
        /// 
        /// The request was denied due to request throttling.
        /// 
        /// 
        /// The request body isn't valid.
        /// 
        /// REST API Reference for UpdateServerConfig Operation
        Task UpdateServerConfigAsync(UpdateServerConfigRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken));
        #endregion
        
    }
}