/** * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. * SPDX-License-Identifier: Apache-2.0. */ #pragma once #include #include #include #include #include #include namespace Aws { namespace SupportApp { /** *

Amazon Web Services Support App in Slack

You can use * the Amazon Web Services Support App in Slack API to manage your support cases in * Slack for your Amazon Web Services account. After you configure your Slack * workspace and channel with the Amazon Web Services Support App, you can perform * the following tasks directly in your Slack channel:

  • Create, * search, update, and resolve your support cases

  • Request service * quota increases for your account

  • Invite Amazon Web Services * Support agents to your channel so that you can chat directly about your support * cases

For more information about how to perform these actions * in Slack, see the following documentation in the Amazon Web Services Support * User Guide:

You can also * use the Amazon Web Services Management Console instead of the Amazon Web * Services Support App API to manage your Slack configurations. For more * information, see Authorize * a Slack workspace to enable the Amazon Web Services Support App.

*
  • You must have a Business or Enterprise Support plan to use the * Amazon Web Services Support App API.

  • For more information * about the Amazon Web Services Support App endpoints, see the Amazon * Web Services Support App in Slack endpoints in the Amazon Web Services * General Reference.

*/ class AWS_SUPPORTAPP_API SupportAppClient : public Aws::Client::AWSJsonClient, public Aws::Client::ClientWithAsyncTemplateMethods { public: typedef Aws::Client::AWSJsonClient BASECLASS; static const char* SERVICE_NAME; static const char* ALLOCATION_TAG; typedef SupportAppClientConfiguration ClientConfigurationType; typedef SupportAppEndpointProvider EndpointProviderType; /** * Initializes client to use DefaultCredentialProviderChain, with default http client factory, and optional client config. If client config * is not specified, it will be initialized to default values. */ SupportAppClient(const Aws::SupportApp::SupportAppClientConfiguration& clientConfiguration = Aws::SupportApp::SupportAppClientConfiguration(), std::shared_ptr endpointProvider = Aws::MakeShared(ALLOCATION_TAG)); /** * Initializes client to use SimpleAWSCredentialsProvider, with default http client factory, and optional client config. If client config * is not specified, it will be initialized to default values. */ SupportAppClient(const Aws::Auth::AWSCredentials& credentials, std::shared_ptr endpointProvider = Aws::MakeShared(ALLOCATION_TAG), const Aws::SupportApp::SupportAppClientConfiguration& clientConfiguration = Aws::SupportApp::SupportAppClientConfiguration()); /** * Initializes client to use specified credentials provider with specified client config. If http client factory is not supplied, * the default http client factory will be used */ SupportAppClient(const std::shared_ptr& credentialsProvider, std::shared_ptr endpointProvider = Aws::MakeShared(ALLOCATION_TAG), const Aws::SupportApp::SupportAppClientConfiguration& clientConfiguration = Aws::SupportApp::SupportAppClientConfiguration()); /* Legacy constructors due deprecation */ /** * Initializes client to use DefaultCredentialProviderChain, with default http client factory, and optional client config. If client config * is not specified, it will be initialized to default values. */ SupportAppClient(const Aws::Client::ClientConfiguration& clientConfiguration); /** * Initializes client to use SimpleAWSCredentialsProvider, with default http client factory, and optional client config. If client config * is not specified, it will be initialized to default values. */ SupportAppClient(const Aws::Auth::AWSCredentials& credentials, const Aws::Client::ClientConfiguration& clientConfiguration); /** * Initializes client to use specified credentials provider with specified client config. If http client factory is not supplied, * the default http client factory will be used */ SupportAppClient(const std::shared_ptr& credentialsProvider, const Aws::Client::ClientConfiguration& clientConfiguration); /* End of legacy constructors due deprecation */ virtual ~SupportAppClient(); /** *

Creates a Slack channel configuration for your Amazon Web Services * account.

  • You can add up to 5 Slack workspaces for your * account.

  • You can add up to 20 Slack channels for your * account.

A Slack channel can have up to 100 Amazon * Web Services accounts. This means that only 100 accounts can add the same Slack * channel to the Amazon Web Services Support App. We recommend that you only add * the accounts that you need to manage support cases for your organization. This * can reduce the notifications about case updates that you receive in the Slack * channel.

We recommend that you choose a private Slack channel so * that only members in that channel have read and write access to your support * cases. Anyone in your Slack channel can create, update, or resolve support cases * for your account. Users require an invitation to join private channels.

*

See Also:

AWS * API Reference

*/ virtual Model::CreateSlackChannelConfigurationOutcome CreateSlackChannelConfiguration(const Model::CreateSlackChannelConfigurationRequest& request) const; /** * A Callable wrapper for CreateSlackChannelConfiguration that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::CreateSlackChannelConfigurationOutcomeCallable CreateSlackChannelConfigurationCallable(const CreateSlackChannelConfigurationRequestT& request) const { return SubmitCallable(&SupportAppClient::CreateSlackChannelConfiguration, request); } /** * An Async wrapper for CreateSlackChannelConfiguration that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void CreateSlackChannelConfigurationAsync(const CreateSlackChannelConfigurationRequestT& request, const CreateSlackChannelConfigurationResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&SupportAppClient::CreateSlackChannelConfiguration, request, handler, context); } /** *

Deletes an alias for an Amazon Web Services account ID. The alias appears in * the Amazon Web Services Support App page of the Amazon Web Services Support * Center. The alias also appears in Slack messages from the Amazon Web Services * Support App.

See Also:

AWS * API Reference

*/ virtual Model::DeleteAccountAliasOutcome DeleteAccountAlias(const Model::DeleteAccountAliasRequest& request) const; /** * A Callable wrapper for DeleteAccountAlias that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::DeleteAccountAliasOutcomeCallable DeleteAccountAliasCallable(const DeleteAccountAliasRequestT& request) const { return SubmitCallable(&SupportAppClient::DeleteAccountAlias, request); } /** * An Async wrapper for DeleteAccountAlias that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void DeleteAccountAliasAsync(const DeleteAccountAliasRequestT& request, const DeleteAccountAliasResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&SupportAppClient::DeleteAccountAlias, request, handler, context); } /** *

Deletes a Slack channel configuration from your Amazon Web Services account. * This operation doesn't delete your Slack channel.

See Also:

AWS * API Reference

*/ virtual Model::DeleteSlackChannelConfigurationOutcome DeleteSlackChannelConfiguration(const Model::DeleteSlackChannelConfigurationRequest& request) const; /** * A Callable wrapper for DeleteSlackChannelConfiguration that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::DeleteSlackChannelConfigurationOutcomeCallable DeleteSlackChannelConfigurationCallable(const DeleteSlackChannelConfigurationRequestT& request) const { return SubmitCallable(&SupportAppClient::DeleteSlackChannelConfiguration, request); } /** * An Async wrapper for DeleteSlackChannelConfiguration that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void DeleteSlackChannelConfigurationAsync(const DeleteSlackChannelConfigurationRequestT& request, const DeleteSlackChannelConfigurationResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&SupportAppClient::DeleteSlackChannelConfiguration, request, handler, context); } /** *

Deletes a Slack workspace configuration from your Amazon Web Services * account. This operation doesn't delete your Slack workspace.

See * Also:

AWS * API Reference

*/ virtual Model::DeleteSlackWorkspaceConfigurationOutcome DeleteSlackWorkspaceConfiguration(const Model::DeleteSlackWorkspaceConfigurationRequest& request) const; /** * A Callable wrapper for DeleteSlackWorkspaceConfiguration that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::DeleteSlackWorkspaceConfigurationOutcomeCallable DeleteSlackWorkspaceConfigurationCallable(const DeleteSlackWorkspaceConfigurationRequestT& request) const { return SubmitCallable(&SupportAppClient::DeleteSlackWorkspaceConfiguration, request); } /** * An Async wrapper for DeleteSlackWorkspaceConfiguration that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void DeleteSlackWorkspaceConfigurationAsync(const DeleteSlackWorkspaceConfigurationRequestT& request, const DeleteSlackWorkspaceConfigurationResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&SupportAppClient::DeleteSlackWorkspaceConfiguration, request, handler, context); } /** *

Retrieves the alias from an Amazon Web Services account ID. The alias appears * in the Amazon Web Services Support App page of the Amazon Web Services Support * Center. The alias also appears in Slack messages from the Amazon Web Services * Support App.

See Also:

AWS * API Reference

*/ virtual Model::GetAccountAliasOutcome GetAccountAlias(const Model::GetAccountAliasRequest& request) const; /** * A Callable wrapper for GetAccountAlias that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::GetAccountAliasOutcomeCallable GetAccountAliasCallable(const GetAccountAliasRequestT& request) const { return SubmitCallable(&SupportAppClient::GetAccountAlias, request); } /** * An Async wrapper for GetAccountAlias that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void GetAccountAliasAsync(const GetAccountAliasRequestT& request, const GetAccountAliasResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&SupportAppClient::GetAccountAlias, request, handler, context); } /** *

Lists the Slack channel configurations for an Amazon Web Services * account.

See Also:

AWS * API Reference

*/ virtual Model::ListSlackChannelConfigurationsOutcome ListSlackChannelConfigurations(const Model::ListSlackChannelConfigurationsRequest& request) const; /** * A Callable wrapper for ListSlackChannelConfigurations that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::ListSlackChannelConfigurationsOutcomeCallable ListSlackChannelConfigurationsCallable(const ListSlackChannelConfigurationsRequestT& request) const { return SubmitCallable(&SupportAppClient::ListSlackChannelConfigurations, request); } /** * An Async wrapper for ListSlackChannelConfigurations that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void ListSlackChannelConfigurationsAsync(const ListSlackChannelConfigurationsRequestT& request, const ListSlackChannelConfigurationsResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&SupportAppClient::ListSlackChannelConfigurations, request, handler, context); } /** *

Lists the Slack workspace configurations for an Amazon Web Services * account.

See Also:

AWS * API Reference

*/ virtual Model::ListSlackWorkspaceConfigurationsOutcome ListSlackWorkspaceConfigurations(const Model::ListSlackWorkspaceConfigurationsRequest& request) const; /** * A Callable wrapper for ListSlackWorkspaceConfigurations that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::ListSlackWorkspaceConfigurationsOutcomeCallable ListSlackWorkspaceConfigurationsCallable(const ListSlackWorkspaceConfigurationsRequestT& request) const { return SubmitCallable(&SupportAppClient::ListSlackWorkspaceConfigurations, request); } /** * An Async wrapper for ListSlackWorkspaceConfigurations that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void ListSlackWorkspaceConfigurationsAsync(const ListSlackWorkspaceConfigurationsRequestT& request, const ListSlackWorkspaceConfigurationsResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&SupportAppClient::ListSlackWorkspaceConfigurations, request, handler, context); } /** *

Creates or updates an individual alias for each Amazon Web Services account * ID. The alias appears in the Amazon Web Services Support App page of the Amazon * Web Services Support Center. The alias also appears in Slack messages from the * Amazon Web Services Support App.

See Also:

AWS * API Reference

*/ virtual Model::PutAccountAliasOutcome PutAccountAlias(const Model::PutAccountAliasRequest& request) const; /** * A Callable wrapper for PutAccountAlias that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::PutAccountAliasOutcomeCallable PutAccountAliasCallable(const PutAccountAliasRequestT& request) const { return SubmitCallable(&SupportAppClient::PutAccountAlias, request); } /** * An Async wrapper for PutAccountAlias that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void PutAccountAliasAsync(const PutAccountAliasRequestT& request, const PutAccountAliasResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&SupportAppClient::PutAccountAlias, request, handler, context); } /** *

Registers a Slack workspace for your Amazon Web Services account. To call * this API, your account must be part of an organization in Organizations.

*

If you're the management account and you want to register Slack * workspaces for your organization, you must complete the following tasks:

*
  1. Sign in to the Amazon Web Services Support * Center and authorize the Slack workspaces where you want your organization * to have access to. See Authorize * a Slack workspace in the Amazon Web Services Support User Guide.

    *
  2. Call the RegisterSlackWorkspaceForOrganization API to * authorize each Slack workspace for the organization.

After * the management account authorizes the Slack workspace, member accounts can call * this API to authorize the same Slack workspace for their individual accounts. * Member accounts don't need to authorize the Slack workspace manually through the * Amazon Web Services Support * Center.

To use the Amazon Web Services Support App, each account must * then complete the following tasks:

See Also:

AWS * API Reference

*/ virtual Model::RegisterSlackWorkspaceForOrganizationOutcome RegisterSlackWorkspaceForOrganization(const Model::RegisterSlackWorkspaceForOrganizationRequest& request) const; /** * A Callable wrapper for RegisterSlackWorkspaceForOrganization that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::RegisterSlackWorkspaceForOrganizationOutcomeCallable RegisterSlackWorkspaceForOrganizationCallable(const RegisterSlackWorkspaceForOrganizationRequestT& request) const { return SubmitCallable(&SupportAppClient::RegisterSlackWorkspaceForOrganization, request); } /** * An Async wrapper for RegisterSlackWorkspaceForOrganization that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void RegisterSlackWorkspaceForOrganizationAsync(const RegisterSlackWorkspaceForOrganizationRequestT& request, const RegisterSlackWorkspaceForOrganizationResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&SupportAppClient::RegisterSlackWorkspaceForOrganization, request, handler, context); } /** *

Updates the configuration for a Slack channel, such as case update * notifications.

See Also:

AWS * API Reference

*/ virtual Model::UpdateSlackChannelConfigurationOutcome UpdateSlackChannelConfiguration(const Model::UpdateSlackChannelConfigurationRequest& request) const; /** * A Callable wrapper for UpdateSlackChannelConfiguration that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::UpdateSlackChannelConfigurationOutcomeCallable UpdateSlackChannelConfigurationCallable(const UpdateSlackChannelConfigurationRequestT& request) const { return SubmitCallable(&SupportAppClient::UpdateSlackChannelConfiguration, request); } /** * An Async wrapper for UpdateSlackChannelConfiguration that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void UpdateSlackChannelConfigurationAsync(const UpdateSlackChannelConfigurationRequestT& request, const UpdateSlackChannelConfigurationResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&SupportAppClient::UpdateSlackChannelConfiguration, request, handler, context); } void OverrideEndpoint(const Aws::String& endpoint); std::shared_ptr& accessEndpointProvider(); private: friend class Aws::Client::ClientWithAsyncTemplateMethods; void init(const SupportAppClientConfiguration& clientConfiguration); SupportAppClientConfiguration m_clientConfiguration; std::shared_ptr m_executor; std::shared_ptr m_endpointProvider; }; } // namespace SupportApp } // namespace Aws