/** * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. * SPDX-License-Identifier: Apache-2.0. */ #pragma once #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include namespace Aws { namespace Http { class HttpClient; class HttpClientFactory; } // namespace Http namespace Utils { template< typename R, typename E> class Outcome; namespace Threading { class Executor; } // namespace Threading } // namespace Utils namespace Auth { class AWSCredentials; class AWSCredentialsProvider; } // namespace Auth namespace Client { class RetryStrategy; } // namespace Client namespace ServerlessApplicationRepository { namespace Model { class CreateApplicationRequest; class CreateApplicationVersionRequest; class CreateCloudFormationChangeSetRequest; class CreateCloudFormationTemplateRequest; class DeleteApplicationRequest; class GetApplicationRequest; class GetApplicationPolicyRequest; class GetCloudFormationTemplateRequest; class ListApplicationDependenciesRequest; class ListApplicationVersionsRequest; class ListApplicationsRequest; class PutApplicationPolicyRequest; class UnshareApplicationRequest; class UpdateApplicationRequest; typedef Aws::Utils::Outcome CreateApplicationOutcome; typedef Aws::Utils::Outcome CreateApplicationVersionOutcome; typedef Aws::Utils::Outcome CreateCloudFormationChangeSetOutcome; typedef Aws::Utils::Outcome CreateCloudFormationTemplateOutcome; typedef Aws::Utils::Outcome DeleteApplicationOutcome; typedef Aws::Utils::Outcome GetApplicationOutcome; typedef Aws::Utils::Outcome GetApplicationPolicyOutcome; typedef Aws::Utils::Outcome GetCloudFormationTemplateOutcome; typedef Aws::Utils::Outcome ListApplicationDependenciesOutcome; typedef Aws::Utils::Outcome ListApplicationVersionsOutcome; typedef Aws::Utils::Outcome ListApplicationsOutcome; typedef Aws::Utils::Outcome PutApplicationPolicyOutcome; typedef Aws::Utils::Outcome UnshareApplicationOutcome; typedef Aws::Utils::Outcome UpdateApplicationOutcome; typedef std::future CreateApplicationOutcomeCallable; typedef std::future CreateApplicationVersionOutcomeCallable; typedef std::future CreateCloudFormationChangeSetOutcomeCallable; typedef std::future CreateCloudFormationTemplateOutcomeCallable; typedef std::future DeleteApplicationOutcomeCallable; typedef std::future GetApplicationOutcomeCallable; typedef std::future GetApplicationPolicyOutcomeCallable; typedef std::future GetCloudFormationTemplateOutcomeCallable; typedef std::future ListApplicationDependenciesOutcomeCallable; typedef std::future ListApplicationVersionsOutcomeCallable; typedef std::future ListApplicationsOutcomeCallable; typedef std::future PutApplicationPolicyOutcomeCallable; typedef std::future UnshareApplicationOutcomeCallable; typedef std::future UpdateApplicationOutcomeCallable; } // namespace Model class ServerlessApplicationRepositoryClient; typedef std::function&) > CreateApplicationResponseReceivedHandler; typedef std::function&) > CreateApplicationVersionResponseReceivedHandler; typedef std::function&) > CreateCloudFormationChangeSetResponseReceivedHandler; typedef std::function&) > CreateCloudFormationTemplateResponseReceivedHandler; typedef std::function&) > DeleteApplicationResponseReceivedHandler; typedef std::function&) > GetApplicationResponseReceivedHandler; typedef std::function&) > GetApplicationPolicyResponseReceivedHandler; typedef std::function&) > GetCloudFormationTemplateResponseReceivedHandler; typedef std::function&) > ListApplicationDependenciesResponseReceivedHandler; typedef std::function&) > ListApplicationVersionsResponseReceivedHandler; typedef std::function&) > ListApplicationsResponseReceivedHandler; typedef std::function&) > PutApplicationPolicyResponseReceivedHandler; typedef std::function&) > UnshareApplicationResponseReceivedHandler; typedef std::function&) > UpdateApplicationResponseReceivedHandler; /** *

The AWS Serverless Application Repository makes it easy for developers and * enterprises to quickly find and deploy serverless applications in the AWS * Cloud. For more information about serverless applications, see Serverless * Computing and Applications on the AWS website.

The AWS Serverless * Application Repository is deeply integrated with the AWS Lambda console, so that * developers of all levels can get started with serverless computing without * needing to learn anything new. You can use category keywords to browse for * applications such as web and mobile backends, data processing applications, or * chatbots. You can also search for applications by name, publisher, or event * source. To use an application, you simply choose it, configure any required * fields, and deploy it with a few clicks.

You can also easily publish * applications, sharing them publicly with the community at large, or privately * within your team or across your organization. To publish a serverless * application (or app), you can use the AWS Management Console, AWS Command Line * Interface (AWS CLI), or AWS SDKs to upload the code. Along with the code, you * upload a simple manifest file, also known as the AWS Serverless Application * Model (AWS SAM) template. For more information about AWS SAM, see AWS * Serverless Application Model (AWS SAM) on the AWS Labs GitHub * repository.

The AWS Serverless Application Repository Developer Guide * contains more information about the two developer experiences * available:

  • Consuming Applications – Browse for applications * and view information about them, including source code and readme files. Also * install, configure, and deploy applications of your choosing.

    *

    Publishing Applications – Configure and upload applications to make them * available to other developers, and publish new versions of applications.

    *
*/ class AWS_SERVERLESSAPPLICATIONREPOSITORY_API ServerlessApplicationRepositoryClient : public Aws::Client::AWSJsonClient { public: typedef Aws::Client::AWSJsonClient BASECLASS; /** * 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. */ ServerlessApplicationRepositoryClient(const Aws::Client::ClientConfiguration& clientConfiguration = Aws::Client::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. */ ServerlessApplicationRepositoryClient(const Aws::Auth::AWSCredentials& credentials, const Aws::Client::ClientConfiguration& clientConfiguration = Aws::Client::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 */ ServerlessApplicationRepositoryClient(const std::shared_ptr& credentialsProvider, const Aws::Client::ClientConfiguration& clientConfiguration = Aws::Client::ClientConfiguration()); virtual ~ServerlessApplicationRepositoryClient(); /** *

Creates an application, optionally including an AWS SAM file to create the * first application version in the same call.

See Also:

AWS * API Reference

*/ virtual Model::CreateApplicationOutcome CreateApplication(const Model::CreateApplicationRequest& request) const; /** *

Creates an application, optionally including an AWS SAM file to create the * first application version in the same call.

See Also:

AWS * API Reference

* * returns a future to the operation so that it can be executed in parallel to other requests. */ virtual Model::CreateApplicationOutcomeCallable CreateApplicationCallable(const Model::CreateApplicationRequest& request) const; /** *

Creates an application, optionally including an AWS SAM file to create the * first application version in the same call.

See Also:

AWS * API Reference

* * Queues the request into a thread executor and triggers associated callback when operation has finished. */ virtual void CreateApplicationAsync(const Model::CreateApplicationRequest& request, const CreateApplicationResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const; /** *

Creates an application version.

See Also:

AWS * API Reference

*/ virtual Model::CreateApplicationVersionOutcome CreateApplicationVersion(const Model::CreateApplicationVersionRequest& request) const; /** *

Creates an application version.

See Also:

AWS * API Reference

* * returns a future to the operation so that it can be executed in parallel to other requests. */ virtual Model::CreateApplicationVersionOutcomeCallable CreateApplicationVersionCallable(const Model::CreateApplicationVersionRequest& request) const; /** *

Creates an application version.

See Also:

AWS * API Reference

* * Queues the request into a thread executor and triggers associated callback when operation has finished. */ virtual void CreateApplicationVersionAsync(const Model::CreateApplicationVersionRequest& request, const CreateApplicationVersionResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const; /** *

Creates an AWS CloudFormation change set for the given * application.

See Also:

AWS * API Reference

*/ virtual Model::CreateCloudFormationChangeSetOutcome CreateCloudFormationChangeSet(const Model::CreateCloudFormationChangeSetRequest& request) const; /** *

Creates an AWS CloudFormation change set for the given * application.

See Also:

AWS * API Reference

* * returns a future to the operation so that it can be executed in parallel to other requests. */ virtual Model::CreateCloudFormationChangeSetOutcomeCallable CreateCloudFormationChangeSetCallable(const Model::CreateCloudFormationChangeSetRequest& request) const; /** *

Creates an AWS CloudFormation change set for the given * application.

See Also:

AWS * API Reference

* * Queues the request into a thread executor and triggers associated callback when operation has finished. */ virtual void CreateCloudFormationChangeSetAsync(const Model::CreateCloudFormationChangeSetRequest& request, const CreateCloudFormationChangeSetResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const; /** *

Creates an AWS CloudFormation template.

See Also:

AWS * API Reference

*/ virtual Model::CreateCloudFormationTemplateOutcome CreateCloudFormationTemplate(const Model::CreateCloudFormationTemplateRequest& request) const; /** *

Creates an AWS CloudFormation template.

See Also:

AWS * API Reference

* * returns a future to the operation so that it can be executed in parallel to other requests. */ virtual Model::CreateCloudFormationTemplateOutcomeCallable CreateCloudFormationTemplateCallable(const Model::CreateCloudFormationTemplateRequest& request) const; /** *

Creates an AWS CloudFormation template.

See Also:

AWS * API Reference

* * Queues the request into a thread executor and triggers associated callback when operation has finished. */ virtual void CreateCloudFormationTemplateAsync(const Model::CreateCloudFormationTemplateRequest& request, const CreateCloudFormationTemplateResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const; /** *

Deletes the specified application.

See Also:

AWS * API Reference

*/ virtual Model::DeleteApplicationOutcome DeleteApplication(const Model::DeleteApplicationRequest& request) const; /** *

Deletes the specified application.

See Also:

AWS * API Reference

* * returns a future to the operation so that it can be executed in parallel to other requests. */ virtual Model::DeleteApplicationOutcomeCallable DeleteApplicationCallable(const Model::DeleteApplicationRequest& request) const; /** *

Deletes the specified application.

See Also:

AWS * API Reference

* * Queues the request into a thread executor and triggers associated callback when operation has finished. */ virtual void DeleteApplicationAsync(const Model::DeleteApplicationRequest& request, const DeleteApplicationResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const; /** *

Gets the specified application.

See Also:

AWS * API Reference

*/ virtual Model::GetApplicationOutcome GetApplication(const Model::GetApplicationRequest& request) const; /** *

Gets the specified application.

See Also:

AWS * API Reference

* * returns a future to the operation so that it can be executed in parallel to other requests. */ virtual Model::GetApplicationOutcomeCallable GetApplicationCallable(const Model::GetApplicationRequest& request) const; /** *

Gets the specified application.

See Also:

AWS * API Reference

* * Queues the request into a thread executor and triggers associated callback when operation has finished. */ virtual void GetApplicationAsync(const Model::GetApplicationRequest& request, const GetApplicationResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const; /** *

Retrieves the policy for the application.

See Also:

AWS * API Reference

*/ virtual Model::GetApplicationPolicyOutcome GetApplicationPolicy(const Model::GetApplicationPolicyRequest& request) const; /** *

Retrieves the policy for the application.

See Also:

AWS * API Reference

* * returns a future to the operation so that it can be executed in parallel to other requests. */ virtual Model::GetApplicationPolicyOutcomeCallable GetApplicationPolicyCallable(const Model::GetApplicationPolicyRequest& request) const; /** *

Retrieves the policy for the application.

See Also:

AWS * API Reference

* * Queues the request into a thread executor and triggers associated callback when operation has finished. */ virtual void GetApplicationPolicyAsync(const Model::GetApplicationPolicyRequest& request, const GetApplicationPolicyResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const; /** *

Gets the specified AWS CloudFormation template.

See Also:

AWS * API Reference

*/ virtual Model::GetCloudFormationTemplateOutcome GetCloudFormationTemplate(const Model::GetCloudFormationTemplateRequest& request) const; /** *

Gets the specified AWS CloudFormation template.

See Also:

AWS * API Reference

* * returns a future to the operation so that it can be executed in parallel to other requests. */ virtual Model::GetCloudFormationTemplateOutcomeCallable GetCloudFormationTemplateCallable(const Model::GetCloudFormationTemplateRequest& request) const; /** *

Gets the specified AWS CloudFormation template.

See Also:

AWS * API Reference

* * Queues the request into a thread executor and triggers associated callback when operation has finished. */ virtual void GetCloudFormationTemplateAsync(const Model::GetCloudFormationTemplateRequest& request, const GetCloudFormationTemplateResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const; /** *

Retrieves the list of applications nested in the containing * application.

See Also:

AWS * API Reference

*/ virtual Model::ListApplicationDependenciesOutcome ListApplicationDependencies(const Model::ListApplicationDependenciesRequest& request) const; /** *

Retrieves the list of applications nested in the containing * application.

See Also:

AWS * API Reference

* * returns a future to the operation so that it can be executed in parallel to other requests. */ virtual Model::ListApplicationDependenciesOutcomeCallable ListApplicationDependenciesCallable(const Model::ListApplicationDependenciesRequest& request) const; /** *

Retrieves the list of applications nested in the containing * application.

See Also:

AWS * API Reference

* * Queues the request into a thread executor and triggers associated callback when operation has finished. */ virtual void ListApplicationDependenciesAsync(const Model::ListApplicationDependenciesRequest& request, const ListApplicationDependenciesResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const; /** *

Lists versions for the specified application.

See Also:

AWS * API Reference

*/ virtual Model::ListApplicationVersionsOutcome ListApplicationVersions(const Model::ListApplicationVersionsRequest& request) const; /** *

Lists versions for the specified application.

See Also:

AWS * API Reference

* * returns a future to the operation so that it can be executed in parallel to other requests. */ virtual Model::ListApplicationVersionsOutcomeCallable ListApplicationVersionsCallable(const Model::ListApplicationVersionsRequest& request) const; /** *

Lists versions for the specified application.

See Also:

AWS * API Reference

* * Queues the request into a thread executor and triggers associated callback when operation has finished. */ virtual void ListApplicationVersionsAsync(const Model::ListApplicationVersionsRequest& request, const ListApplicationVersionsResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const; /** *

Lists applications owned by the requester.

See Also:

AWS * API Reference

*/ virtual Model::ListApplicationsOutcome ListApplications(const Model::ListApplicationsRequest& request) const; /** *

Lists applications owned by the requester.

See Also:

AWS * API Reference

* * returns a future to the operation so that it can be executed in parallel to other requests. */ virtual Model::ListApplicationsOutcomeCallable ListApplicationsCallable(const Model::ListApplicationsRequest& request) const; /** *

Lists applications owned by the requester.

See Also:

AWS * API Reference

* * Queues the request into a thread executor and triggers associated callback when operation has finished. */ virtual void ListApplicationsAsync(const Model::ListApplicationsRequest& request, const ListApplicationsResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const; /** *

Sets the permission policy for an application. For the list of actions * supported for this operation, see Application * Permissions .

See Also:

AWS * API Reference

*/ virtual Model::PutApplicationPolicyOutcome PutApplicationPolicy(const Model::PutApplicationPolicyRequest& request) const; /** *

Sets the permission policy for an application. For the list of actions * supported for this operation, see Application * Permissions .

See Also:

AWS * API Reference

* * returns a future to the operation so that it can be executed in parallel to other requests. */ virtual Model::PutApplicationPolicyOutcomeCallable PutApplicationPolicyCallable(const Model::PutApplicationPolicyRequest& request) const; /** *

Sets the permission policy for an application. For the list of actions * supported for this operation, see Application * Permissions .

See Also:

AWS * API Reference

* * Queues the request into a thread executor and triggers associated callback when operation has finished. */ virtual void PutApplicationPolicyAsync(const Model::PutApplicationPolicyRequest& request, const PutApplicationPolicyResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const; /** *

Unshares an application from an AWS Organization.

This operation can be * called only from the organization's master account.

See Also:

* AWS * API Reference

*/ virtual Model::UnshareApplicationOutcome UnshareApplication(const Model::UnshareApplicationRequest& request) const; /** *

Unshares an application from an AWS Organization.

This operation can be * called only from the organization's master account.

See Also:

* AWS * API Reference

* * returns a future to the operation so that it can be executed in parallel to other requests. */ virtual Model::UnshareApplicationOutcomeCallable UnshareApplicationCallable(const Model::UnshareApplicationRequest& request) const; /** *

Unshares an application from an AWS Organization.

This operation can be * called only from the organization's master account.

See Also:

* AWS * API Reference

* * Queues the request into a thread executor and triggers associated callback when operation has finished. */ virtual void UnshareApplicationAsync(const Model::UnshareApplicationRequest& request, const UnshareApplicationResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const; /** *

Updates the specified application.

See Also:

AWS * API Reference

*/ virtual Model::UpdateApplicationOutcome UpdateApplication(const Model::UpdateApplicationRequest& request) const; /** *

Updates the specified application.

See Also:

AWS * API Reference

* * returns a future to the operation so that it can be executed in parallel to other requests. */ virtual Model::UpdateApplicationOutcomeCallable UpdateApplicationCallable(const Model::UpdateApplicationRequest& request) const; /** *

Updates the specified application.

See Also:

AWS * API Reference

* * Queues the request into a thread executor and triggers associated callback when operation has finished. */ virtual void UpdateApplicationAsync(const Model::UpdateApplicationRequest& request, const UpdateApplicationResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const; void OverrideEndpoint(const Aws::String& endpoint); private: void init(const Aws::Client::ClientConfiguration& clientConfiguration); void CreateApplicationAsyncHelper(const Model::CreateApplicationRequest& request, const CreateApplicationResponseReceivedHandler& handler, const std::shared_ptr& context) const; void CreateApplicationVersionAsyncHelper(const Model::CreateApplicationVersionRequest& request, const CreateApplicationVersionResponseReceivedHandler& handler, const std::shared_ptr& context) const; void CreateCloudFormationChangeSetAsyncHelper(const Model::CreateCloudFormationChangeSetRequest& request, const CreateCloudFormationChangeSetResponseReceivedHandler& handler, const std::shared_ptr& context) const; void CreateCloudFormationTemplateAsyncHelper(const Model::CreateCloudFormationTemplateRequest& request, const CreateCloudFormationTemplateResponseReceivedHandler& handler, const std::shared_ptr& context) const; void DeleteApplicationAsyncHelper(const Model::DeleteApplicationRequest& request, const DeleteApplicationResponseReceivedHandler& handler, const std::shared_ptr& context) const; void GetApplicationAsyncHelper(const Model::GetApplicationRequest& request, const GetApplicationResponseReceivedHandler& handler, const std::shared_ptr& context) const; void GetApplicationPolicyAsyncHelper(const Model::GetApplicationPolicyRequest& request, const GetApplicationPolicyResponseReceivedHandler& handler, const std::shared_ptr& context) const; void GetCloudFormationTemplateAsyncHelper(const Model::GetCloudFormationTemplateRequest& request, const GetCloudFormationTemplateResponseReceivedHandler& handler, const std::shared_ptr& context) const; void ListApplicationDependenciesAsyncHelper(const Model::ListApplicationDependenciesRequest& request, const ListApplicationDependenciesResponseReceivedHandler& handler, const std::shared_ptr& context) const; void ListApplicationVersionsAsyncHelper(const Model::ListApplicationVersionsRequest& request, const ListApplicationVersionsResponseReceivedHandler& handler, const std::shared_ptr& context) const; void ListApplicationsAsyncHelper(const Model::ListApplicationsRequest& request, const ListApplicationsResponseReceivedHandler& handler, const std::shared_ptr& context) const; void PutApplicationPolicyAsyncHelper(const Model::PutApplicationPolicyRequest& request, const PutApplicationPolicyResponseReceivedHandler& handler, const std::shared_ptr& context) const; void UnshareApplicationAsyncHelper(const Model::UnshareApplicationRequest& request, const UnshareApplicationResponseReceivedHandler& handler, const std::shared_ptr& context) const; void UpdateApplicationAsyncHelper(const Model::UpdateApplicationRequest& request, const UpdateApplicationResponseReceivedHandler& handler, const std::shared_ptr& context) const; Aws::String m_uri; Aws::String m_configScheme; std::shared_ptr m_executor; }; } // namespace ServerlessApplicationRepository } // namespace Aws