This repository has been archived on 2025-09-14. You can view files and clone it, but cannot push or open issues or pull requests.
Files

920 lines
39 KiB
C++

/**
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
* SPDX-License-Identifier: Apache-2.0.
*/
#pragma once
#include <aws/serverlessrepo/ServerlessApplicationRepository_EXPORTS.h>
#include <aws/core/utils/memory/stl/AWSString.h>
#include <aws/core/utils/memory/stl/AWSVector.h>
#include <aws/serverlessrepo/model/ParameterDefinition.h>
#include <aws/serverlessrepo/model/Capability.h>
#include <utility>
namespace Aws
{
namespace Utils
{
namespace Json
{
class JsonValue;
class JsonView;
} // namespace Json
} // namespace Utils
namespace ServerlessApplicationRepository
{
namespace Model
{
/**
* <p>Application version details.</p><p><h3>See Also:</h3> <a
* href="http://docs.aws.amazon.com/goto/WebAPI/serverlessrepo-2017-09-08/Version">AWS
* API Reference</a></p>
*/
class AWS_SERVERLESSAPPLICATIONREPOSITORY_API Version
{
public:
Version();
Version(Aws::Utils::Json::JsonView jsonValue);
Version& operator=(Aws::Utils::Json::JsonView jsonValue);
Aws::Utils::Json::JsonValue Jsonize() const;
/**
* <p>The application Amazon Resource Name (ARN).</p>
*/
inline const Aws::String& GetApplicationId() const{ return m_applicationId; }
/**
* <p>The application Amazon Resource Name (ARN).</p>
*/
inline bool ApplicationIdHasBeenSet() const { return m_applicationIdHasBeenSet; }
/**
* <p>The application Amazon Resource Name (ARN).</p>
*/
inline void SetApplicationId(const Aws::String& value) { m_applicationIdHasBeenSet = true; m_applicationId = value; }
/**
* <p>The application Amazon Resource Name (ARN).</p>
*/
inline void SetApplicationId(Aws::String&& value) { m_applicationIdHasBeenSet = true; m_applicationId = std::move(value); }
/**
* <p>The application Amazon Resource Name (ARN).</p>
*/
inline void SetApplicationId(const char* value) { m_applicationIdHasBeenSet = true; m_applicationId.assign(value); }
/**
* <p>The application Amazon Resource Name (ARN).</p>
*/
inline Version& WithApplicationId(const Aws::String& value) { SetApplicationId(value); return *this;}
/**
* <p>The application Amazon Resource Name (ARN).</p>
*/
inline Version& WithApplicationId(Aws::String&& value) { SetApplicationId(std::move(value)); return *this;}
/**
* <p>The application Amazon Resource Name (ARN).</p>
*/
inline Version& WithApplicationId(const char* value) { SetApplicationId(value); return *this;}
/**
* <p>The date and time this resource was created.</p>
*/
inline const Aws::String& GetCreationTime() const{ return m_creationTime; }
/**
* <p>The date and time this resource was created.</p>
*/
inline bool CreationTimeHasBeenSet() const { return m_creationTimeHasBeenSet; }
/**
* <p>The date and time this resource was created.</p>
*/
inline void SetCreationTime(const Aws::String& value) { m_creationTimeHasBeenSet = true; m_creationTime = value; }
/**
* <p>The date and time this resource was created.</p>
*/
inline void SetCreationTime(Aws::String&& value) { m_creationTimeHasBeenSet = true; m_creationTime = std::move(value); }
/**
* <p>The date and time this resource was created.</p>
*/
inline void SetCreationTime(const char* value) { m_creationTimeHasBeenSet = true; m_creationTime.assign(value); }
/**
* <p>The date and time this resource was created.</p>
*/
inline Version& WithCreationTime(const Aws::String& value) { SetCreationTime(value); return *this;}
/**
* <p>The date and time this resource was created.</p>
*/
inline Version& WithCreationTime(Aws::String&& value) { SetCreationTime(std::move(value)); return *this;}
/**
* <p>The date and time this resource was created.</p>
*/
inline Version& WithCreationTime(const char* value) { SetCreationTime(value); return *this;}
/**
* <p>An array of parameter types supported by the application.</p>
*/
inline const Aws::Vector<ParameterDefinition>& GetParameterDefinitions() const{ return m_parameterDefinitions; }
/**
* <p>An array of parameter types supported by the application.</p>
*/
inline bool ParameterDefinitionsHasBeenSet() const { return m_parameterDefinitionsHasBeenSet; }
/**
* <p>An array of parameter types supported by the application.</p>
*/
inline void SetParameterDefinitions(const Aws::Vector<ParameterDefinition>& value) { m_parameterDefinitionsHasBeenSet = true; m_parameterDefinitions = value; }
/**
* <p>An array of parameter types supported by the application.</p>
*/
inline void SetParameterDefinitions(Aws::Vector<ParameterDefinition>&& value) { m_parameterDefinitionsHasBeenSet = true; m_parameterDefinitions = std::move(value); }
/**
* <p>An array of parameter types supported by the application.</p>
*/
inline Version& WithParameterDefinitions(const Aws::Vector<ParameterDefinition>& value) { SetParameterDefinitions(value); return *this;}
/**
* <p>An array of parameter types supported by the application.</p>
*/
inline Version& WithParameterDefinitions(Aws::Vector<ParameterDefinition>&& value) { SetParameterDefinitions(std::move(value)); return *this;}
/**
* <p>An array of parameter types supported by the application.</p>
*/
inline Version& AddParameterDefinitions(const ParameterDefinition& value) { m_parameterDefinitionsHasBeenSet = true; m_parameterDefinitions.push_back(value); return *this; }
/**
* <p>An array of parameter types supported by the application.</p>
*/
inline Version& AddParameterDefinitions(ParameterDefinition&& value) { m_parameterDefinitionsHasBeenSet = true; m_parameterDefinitions.push_back(std::move(value)); return *this; }
/**
* <p>A list of values that you must specify before you can deploy certain
* applications.
Some applications might include resources that can affect
* permissions in your AWS
account, for example, by creating new AWS Identity and
* Access Management (IAM) users.
For those applications, you must explicitly
* acknowledge their capabilities by
specifying this parameter.</p><p>The only
* valid values are CAPABILITY_IAM, CAPABILITY_NAMED_IAM,
* CAPABILITY_RESOURCE_POLICY, and CAPABILITY_AUTO_EXPAND.</p><p>The following
* resources require you to specify CAPABILITY_IAM or
CAPABILITY_NAMED_IAM:
<a
* href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iam-group.html">AWS::IAM::Group</a>,
* <a
* href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-instanceprofile.html">AWS::IAM::InstanceProfile</a>,
* <a
* href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-policy.html">AWS::IAM::Policy</a>,
* and
<a
* href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-role.html">AWS::IAM::Role</a>.
* If the application contains IAM resources, you can specify either
* CAPABILITY_IAM
or CAPABILITY_NAMED_IAM. If the application contains IAM
* resources
with custom names, you must specify CAPABILITY_NAMED_IAM.</p><p>The
* following resources require you to specify CAPABILITY_RESOURCE_POLICY:
<a
* href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-permission.html">AWS::Lambda::Permission</a>,
* <a
* href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-policy.html">AWS::IAM:Policy</a>,
* <a
* href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-applicationautoscaling-scalingpolicy.html">AWS::ApplicationAutoScaling::ScalingPolicy</a>,
* <a
* href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-policy.html">AWS::S3::BucketPolicy</a>,
* <a
* href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sqs-policy.html">AWS::SQS::QueuePolicy</a>,
* and
<a
* href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sns-policy.html">AWS::SNS::TopicPolicy</a>.</p><p>Applications
* that contain one or more nested applications require you to specify
* CAPABILITY_AUTO_EXPAND.</p><p>If your application template contains any of the
* above resources, we recommend that you review
all permissions associated with
* the application before deploying. If you don't specify
this parameter for an
* application that requires capabilities, the call will fail.</p>
*/
inline const Aws::Vector<Capability>& GetRequiredCapabilities() const{ return m_requiredCapabilities; }
/**
* <p>A list of values that you must specify before you can deploy certain
* applications.
Some applications might include resources that can affect
* permissions in your AWS
account, for example, by creating new AWS Identity and
* Access Management (IAM) users.
For those applications, you must explicitly
* acknowledge their capabilities by
specifying this parameter.</p><p>The only
* valid values are CAPABILITY_IAM, CAPABILITY_NAMED_IAM,
* CAPABILITY_RESOURCE_POLICY, and CAPABILITY_AUTO_EXPAND.</p><p>The following
* resources require you to specify CAPABILITY_IAM or
CAPABILITY_NAMED_IAM:
<a
* href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iam-group.html">AWS::IAM::Group</a>,
* <a
* href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-instanceprofile.html">AWS::IAM::InstanceProfile</a>,
* <a
* href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-policy.html">AWS::IAM::Policy</a>,
* and
<a
* href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-role.html">AWS::IAM::Role</a>.
* If the application contains IAM resources, you can specify either
* CAPABILITY_IAM
or CAPABILITY_NAMED_IAM. If the application contains IAM
* resources
with custom names, you must specify CAPABILITY_NAMED_IAM.</p><p>The
* following resources require you to specify CAPABILITY_RESOURCE_POLICY:
<a
* href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-permission.html">AWS::Lambda::Permission</a>,
* <a
* href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-policy.html">AWS::IAM:Policy</a>,
* <a
* href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-applicationautoscaling-scalingpolicy.html">AWS::ApplicationAutoScaling::ScalingPolicy</a>,
* <a
* href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-policy.html">AWS::S3::BucketPolicy</a>,
* <a
* href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sqs-policy.html">AWS::SQS::QueuePolicy</a>,
* and
<a
* href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sns-policy.html">AWS::SNS::TopicPolicy</a>.</p><p>Applications
* that contain one or more nested applications require you to specify
* CAPABILITY_AUTO_EXPAND.</p><p>If your application template contains any of the
* above resources, we recommend that you review
all permissions associated with
* the application before deploying. If you don't specify
this parameter for an
* application that requires capabilities, the call will fail.</p>
*/
inline bool RequiredCapabilitiesHasBeenSet() const { return m_requiredCapabilitiesHasBeenSet; }
/**
* <p>A list of values that you must specify before you can deploy certain
* applications.
Some applications might include resources that can affect
* permissions in your AWS
account, for example, by creating new AWS Identity and
* Access Management (IAM) users.
For those applications, you must explicitly
* acknowledge their capabilities by
specifying this parameter.</p><p>The only
* valid values are CAPABILITY_IAM, CAPABILITY_NAMED_IAM,
* CAPABILITY_RESOURCE_POLICY, and CAPABILITY_AUTO_EXPAND.</p><p>The following
* resources require you to specify CAPABILITY_IAM or
CAPABILITY_NAMED_IAM:
<a
* href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iam-group.html">AWS::IAM::Group</a>,
* <a
* href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-instanceprofile.html">AWS::IAM::InstanceProfile</a>,
* <a
* href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-policy.html">AWS::IAM::Policy</a>,
* and
<a
* href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-role.html">AWS::IAM::Role</a>.
* If the application contains IAM resources, you can specify either
* CAPABILITY_IAM
or CAPABILITY_NAMED_IAM. If the application contains IAM
* resources
with custom names, you must specify CAPABILITY_NAMED_IAM.</p><p>The
* following resources require you to specify CAPABILITY_RESOURCE_POLICY:
<a
* href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-permission.html">AWS::Lambda::Permission</a>,
* <a
* href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-policy.html">AWS::IAM:Policy</a>,
* <a
* href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-applicationautoscaling-scalingpolicy.html">AWS::ApplicationAutoScaling::ScalingPolicy</a>,
* <a
* href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-policy.html">AWS::S3::BucketPolicy</a>,
* <a
* href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sqs-policy.html">AWS::SQS::QueuePolicy</a>,
* and
<a
* href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sns-policy.html">AWS::SNS::TopicPolicy</a>.</p><p>Applications
* that contain one or more nested applications require you to specify
* CAPABILITY_AUTO_EXPAND.</p><p>If your application template contains any of the
* above resources, we recommend that you review
all permissions associated with
* the application before deploying. If you don't specify
this parameter for an
* application that requires capabilities, the call will fail.</p>
*/
inline void SetRequiredCapabilities(const Aws::Vector<Capability>& value) { m_requiredCapabilitiesHasBeenSet = true; m_requiredCapabilities = value; }
/**
* <p>A list of values that you must specify before you can deploy certain
* applications.
Some applications might include resources that can affect
* permissions in your AWS
account, for example, by creating new AWS Identity and
* Access Management (IAM) users.
For those applications, you must explicitly
* acknowledge their capabilities by
specifying this parameter.</p><p>The only
* valid values are CAPABILITY_IAM, CAPABILITY_NAMED_IAM,
* CAPABILITY_RESOURCE_POLICY, and CAPABILITY_AUTO_EXPAND.</p><p>The following
* resources require you to specify CAPABILITY_IAM or
CAPABILITY_NAMED_IAM:
<a
* href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iam-group.html">AWS::IAM::Group</a>,
* <a
* href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-instanceprofile.html">AWS::IAM::InstanceProfile</a>,
* <a
* href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-policy.html">AWS::IAM::Policy</a>,
* and
<a
* href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-role.html">AWS::IAM::Role</a>.
* If the application contains IAM resources, you can specify either
* CAPABILITY_IAM
or CAPABILITY_NAMED_IAM. If the application contains IAM
* resources
with custom names, you must specify CAPABILITY_NAMED_IAM.</p><p>The
* following resources require you to specify CAPABILITY_RESOURCE_POLICY:
<a
* href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-permission.html">AWS::Lambda::Permission</a>,
* <a
* href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-policy.html">AWS::IAM:Policy</a>,
* <a
* href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-applicationautoscaling-scalingpolicy.html">AWS::ApplicationAutoScaling::ScalingPolicy</a>,
* <a
* href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-policy.html">AWS::S3::BucketPolicy</a>,
* <a
* href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sqs-policy.html">AWS::SQS::QueuePolicy</a>,
* and
<a
* href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sns-policy.html">AWS::SNS::TopicPolicy</a>.</p><p>Applications
* that contain one or more nested applications require you to specify
* CAPABILITY_AUTO_EXPAND.</p><p>If your application template contains any of the
* above resources, we recommend that you review
all permissions associated with
* the application before deploying. If you don't specify
this parameter for an
* application that requires capabilities, the call will fail.</p>
*/
inline void SetRequiredCapabilities(Aws::Vector<Capability>&& value) { m_requiredCapabilitiesHasBeenSet = true; m_requiredCapabilities = std::move(value); }
/**
* <p>A list of values that you must specify before you can deploy certain
* applications.
Some applications might include resources that can affect
* permissions in your AWS
account, for example, by creating new AWS Identity and
* Access Management (IAM) users.
For those applications, you must explicitly
* acknowledge their capabilities by
specifying this parameter.</p><p>The only
* valid values are CAPABILITY_IAM, CAPABILITY_NAMED_IAM,
* CAPABILITY_RESOURCE_POLICY, and CAPABILITY_AUTO_EXPAND.</p><p>The following
* resources require you to specify CAPABILITY_IAM or
CAPABILITY_NAMED_IAM:
<a
* href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iam-group.html">AWS::IAM::Group</a>,
* <a
* href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-instanceprofile.html">AWS::IAM::InstanceProfile</a>,
* <a
* href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-policy.html">AWS::IAM::Policy</a>,
* and
<a
* href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-role.html">AWS::IAM::Role</a>.
* If the application contains IAM resources, you can specify either
* CAPABILITY_IAM
or CAPABILITY_NAMED_IAM. If the application contains IAM
* resources
with custom names, you must specify CAPABILITY_NAMED_IAM.</p><p>The
* following resources require you to specify CAPABILITY_RESOURCE_POLICY:
<a
* href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-permission.html">AWS::Lambda::Permission</a>,
* <a
* href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-policy.html">AWS::IAM:Policy</a>,
* <a
* href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-applicationautoscaling-scalingpolicy.html">AWS::ApplicationAutoScaling::ScalingPolicy</a>,
* <a
* href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-policy.html">AWS::S3::BucketPolicy</a>,
* <a
* href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sqs-policy.html">AWS::SQS::QueuePolicy</a>,
* and
<a
* href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sns-policy.html">AWS::SNS::TopicPolicy</a>.</p><p>Applications
* that contain one or more nested applications require you to specify
* CAPABILITY_AUTO_EXPAND.</p><p>If your application template contains any of the
* above resources, we recommend that you review
all permissions associated with
* the application before deploying. If you don't specify
this parameter for an
* application that requires capabilities, the call will fail.</p>
*/
inline Version& WithRequiredCapabilities(const Aws::Vector<Capability>& value) { SetRequiredCapabilities(value); return *this;}
/**
* <p>A list of values that you must specify before you can deploy certain
* applications.
Some applications might include resources that can affect
* permissions in your AWS
account, for example, by creating new AWS Identity and
* Access Management (IAM) users.
For those applications, you must explicitly
* acknowledge their capabilities by
specifying this parameter.</p><p>The only
* valid values are CAPABILITY_IAM, CAPABILITY_NAMED_IAM,
* CAPABILITY_RESOURCE_POLICY, and CAPABILITY_AUTO_EXPAND.</p><p>The following
* resources require you to specify CAPABILITY_IAM or
CAPABILITY_NAMED_IAM:
<a
* href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iam-group.html">AWS::IAM::Group</a>,
* <a
* href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-instanceprofile.html">AWS::IAM::InstanceProfile</a>,
* <a
* href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-policy.html">AWS::IAM::Policy</a>,
* and
<a
* href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-role.html">AWS::IAM::Role</a>.
* If the application contains IAM resources, you can specify either
* CAPABILITY_IAM
or CAPABILITY_NAMED_IAM. If the application contains IAM
* resources
with custom names, you must specify CAPABILITY_NAMED_IAM.</p><p>The
* following resources require you to specify CAPABILITY_RESOURCE_POLICY:
<a
* href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-permission.html">AWS::Lambda::Permission</a>,
* <a
* href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-policy.html">AWS::IAM:Policy</a>,
* <a
* href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-applicationautoscaling-scalingpolicy.html">AWS::ApplicationAutoScaling::ScalingPolicy</a>,
* <a
* href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-policy.html">AWS::S3::BucketPolicy</a>,
* <a
* href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sqs-policy.html">AWS::SQS::QueuePolicy</a>,
* and
<a
* href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sns-policy.html">AWS::SNS::TopicPolicy</a>.</p><p>Applications
* that contain one or more nested applications require you to specify
* CAPABILITY_AUTO_EXPAND.</p><p>If your application template contains any of the
* above resources, we recommend that you review
all permissions associated with
* the application before deploying. If you don't specify
this parameter for an
* application that requires capabilities, the call will fail.</p>
*/
inline Version& WithRequiredCapabilities(Aws::Vector<Capability>&& value) { SetRequiredCapabilities(std::move(value)); return *this;}
/**
* <p>A list of values that you must specify before you can deploy certain
* applications.
Some applications might include resources that can affect
* permissions in your AWS
account, for example, by creating new AWS Identity and
* Access Management (IAM) users.
For those applications, you must explicitly
* acknowledge their capabilities by
specifying this parameter.</p><p>The only
* valid values are CAPABILITY_IAM, CAPABILITY_NAMED_IAM,
* CAPABILITY_RESOURCE_POLICY, and CAPABILITY_AUTO_EXPAND.</p><p>The following
* resources require you to specify CAPABILITY_IAM or
CAPABILITY_NAMED_IAM:
<a
* href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iam-group.html">AWS::IAM::Group</a>,
* <a
* href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-instanceprofile.html">AWS::IAM::InstanceProfile</a>,
* <a
* href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-policy.html">AWS::IAM::Policy</a>,
* and
<a
* href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-role.html">AWS::IAM::Role</a>.
* If the application contains IAM resources, you can specify either
* CAPABILITY_IAM
or CAPABILITY_NAMED_IAM. If the application contains IAM
* resources
with custom names, you must specify CAPABILITY_NAMED_IAM.</p><p>The
* following resources require you to specify CAPABILITY_RESOURCE_POLICY:
<a
* href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-permission.html">AWS::Lambda::Permission</a>,
* <a
* href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-policy.html">AWS::IAM:Policy</a>,
* <a
* href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-applicationautoscaling-scalingpolicy.html">AWS::ApplicationAutoScaling::ScalingPolicy</a>,
* <a
* href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-policy.html">AWS::S3::BucketPolicy</a>,
* <a
* href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sqs-policy.html">AWS::SQS::QueuePolicy</a>,
* and
<a
* href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sns-policy.html">AWS::SNS::TopicPolicy</a>.</p><p>Applications
* that contain one or more nested applications require you to specify
* CAPABILITY_AUTO_EXPAND.</p><p>If your application template contains any of the
* above resources, we recommend that you review
all permissions associated with
* the application before deploying. If you don't specify
this parameter for an
* application that requires capabilities, the call will fail.</p>
*/
inline Version& AddRequiredCapabilities(const Capability& value) { m_requiredCapabilitiesHasBeenSet = true; m_requiredCapabilities.push_back(value); return *this; }
/**
* <p>A list of values that you must specify before you can deploy certain
* applications.
Some applications might include resources that can affect
* permissions in your AWS
account, for example, by creating new AWS Identity and
* Access Management (IAM) users.
For those applications, you must explicitly
* acknowledge their capabilities by
specifying this parameter.</p><p>The only
* valid values are CAPABILITY_IAM, CAPABILITY_NAMED_IAM,
* CAPABILITY_RESOURCE_POLICY, and CAPABILITY_AUTO_EXPAND.</p><p>The following
* resources require you to specify CAPABILITY_IAM or
CAPABILITY_NAMED_IAM:
<a
* href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iam-group.html">AWS::IAM::Group</a>,
* <a
* href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-instanceprofile.html">AWS::IAM::InstanceProfile</a>,
* <a
* href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-policy.html">AWS::IAM::Policy</a>,
* and
<a
* href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-role.html">AWS::IAM::Role</a>.
* If the application contains IAM resources, you can specify either
* CAPABILITY_IAM
or CAPABILITY_NAMED_IAM. If the application contains IAM
* resources
with custom names, you must specify CAPABILITY_NAMED_IAM.</p><p>The
* following resources require you to specify CAPABILITY_RESOURCE_POLICY:
<a
* href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-permission.html">AWS::Lambda::Permission</a>,
* <a
* href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-policy.html">AWS::IAM:Policy</a>,
* <a
* href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-applicationautoscaling-scalingpolicy.html">AWS::ApplicationAutoScaling::ScalingPolicy</a>,
* <a
* href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-policy.html">AWS::S3::BucketPolicy</a>,
* <a
* href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sqs-policy.html">AWS::SQS::QueuePolicy</a>,
* and
<a
* href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sns-policy.html">AWS::SNS::TopicPolicy</a>.</p><p>Applications
* that contain one or more nested applications require you to specify
* CAPABILITY_AUTO_EXPAND.</p><p>If your application template contains any of the
* above resources, we recommend that you review
all permissions associated with
* the application before deploying. If you don't specify
this parameter for an
* application that requires capabilities, the call will fail.</p>
*/
inline Version& AddRequiredCapabilities(Capability&& value) { m_requiredCapabilitiesHasBeenSet = true; m_requiredCapabilities.push_back(std::move(value)); return *this; }
/**
* <p>Whether all of the AWS resources contained in this application are supported
* in the region
in which it is being retrieved.</p>
*/
inline bool GetResourcesSupported() const{ return m_resourcesSupported; }
/**
* <p>Whether all of the AWS resources contained in this application are supported
* in the region
in which it is being retrieved.</p>
*/
inline bool ResourcesSupportedHasBeenSet() const { return m_resourcesSupportedHasBeenSet; }
/**
* <p>Whether all of the AWS resources contained in this application are supported
* in the region
in which it is being retrieved.</p>
*/
inline void SetResourcesSupported(bool value) { m_resourcesSupportedHasBeenSet = true; m_resourcesSupported = value; }
/**
* <p>Whether all of the AWS resources contained in this application are supported
* in the region
in which it is being retrieved.</p>
*/
inline Version& WithResourcesSupported(bool value) { SetResourcesSupported(value); return *this;}
/**
* <p>The semantic version of the application:</p><p>
<a
* href="https://semver.org/">https://semver.org/</a>
</p>
*/
inline const Aws::String& GetSemanticVersion() const{ return m_semanticVersion; }
/**
* <p>The semantic version of the application:</p><p>
<a
* href="https://semver.org/">https://semver.org/</a>
</p>
*/
inline bool SemanticVersionHasBeenSet() const { return m_semanticVersionHasBeenSet; }
/**
* <p>The semantic version of the application:</p><p>
<a
* href="https://semver.org/">https://semver.org/</a>
</p>
*/
inline void SetSemanticVersion(const Aws::String& value) { m_semanticVersionHasBeenSet = true; m_semanticVersion = value; }
/**
* <p>The semantic version of the application:</p><p>
<a
* href="https://semver.org/">https://semver.org/</a>
</p>
*/
inline void SetSemanticVersion(Aws::String&& value) { m_semanticVersionHasBeenSet = true; m_semanticVersion = std::move(value); }
/**
* <p>The semantic version of the application:</p><p>
<a
* href="https://semver.org/">https://semver.org/</a>
</p>
*/
inline void SetSemanticVersion(const char* value) { m_semanticVersionHasBeenSet = true; m_semanticVersion.assign(value); }
/**
* <p>The semantic version of the application:</p><p>
<a
* href="https://semver.org/">https://semver.org/</a>
</p>
*/
inline Version& WithSemanticVersion(const Aws::String& value) { SetSemanticVersion(value); return *this;}
/**
* <p>The semantic version of the application:</p><p>
<a
* href="https://semver.org/">https://semver.org/</a>
</p>
*/
inline Version& WithSemanticVersion(Aws::String&& value) { SetSemanticVersion(std::move(value)); return *this;}
/**
* <p>The semantic version of the application:</p><p>
<a
* href="https://semver.org/">https://semver.org/</a>
</p>
*/
inline Version& WithSemanticVersion(const char* value) { SetSemanticVersion(value); return *this;}
/**
* <p>A link to the S3 object that contains the ZIP archive of the source code for
* this version of your application.</p><p>Maximum size 50 MB</p>
*/
inline const Aws::String& GetSourceCodeArchiveUrl() const{ return m_sourceCodeArchiveUrl; }
/**
* <p>A link to the S3 object that contains the ZIP archive of the source code for
* this version of your application.</p><p>Maximum size 50 MB</p>
*/
inline bool SourceCodeArchiveUrlHasBeenSet() const { return m_sourceCodeArchiveUrlHasBeenSet; }
/**
* <p>A link to the S3 object that contains the ZIP archive of the source code for
* this version of your application.</p><p>Maximum size 50 MB</p>
*/
inline void SetSourceCodeArchiveUrl(const Aws::String& value) { m_sourceCodeArchiveUrlHasBeenSet = true; m_sourceCodeArchiveUrl = value; }
/**
* <p>A link to the S3 object that contains the ZIP archive of the source code for
* this version of your application.</p><p>Maximum size 50 MB</p>
*/
inline void SetSourceCodeArchiveUrl(Aws::String&& value) { m_sourceCodeArchiveUrlHasBeenSet = true; m_sourceCodeArchiveUrl = std::move(value); }
/**
* <p>A link to the S3 object that contains the ZIP archive of the source code for
* this version of your application.</p><p>Maximum size 50 MB</p>
*/
inline void SetSourceCodeArchiveUrl(const char* value) { m_sourceCodeArchiveUrlHasBeenSet = true; m_sourceCodeArchiveUrl.assign(value); }
/**
* <p>A link to the S3 object that contains the ZIP archive of the source code for
* this version of your application.</p><p>Maximum size 50 MB</p>
*/
inline Version& WithSourceCodeArchiveUrl(const Aws::String& value) { SetSourceCodeArchiveUrl(value); return *this;}
/**
* <p>A link to the S3 object that contains the ZIP archive of the source code for
* this version of your application.</p><p>Maximum size 50 MB</p>
*/
inline Version& WithSourceCodeArchiveUrl(Aws::String&& value) { SetSourceCodeArchiveUrl(std::move(value)); return *this;}
/**
* <p>A link to the S3 object that contains the ZIP archive of the source code for
* this version of your application.</p><p>Maximum size 50 MB</p>
*/
inline Version& WithSourceCodeArchiveUrl(const char* value) { SetSourceCodeArchiveUrl(value); return *this;}
/**
* <p>A link to a public repository for the source code of your application, for
* example the URL of a specific GitHub commit.</p>
*/
inline const Aws::String& GetSourceCodeUrl() const{ return m_sourceCodeUrl; }
/**
* <p>A link to a public repository for the source code of your application, for
* example the URL of a specific GitHub commit.</p>
*/
inline bool SourceCodeUrlHasBeenSet() const { return m_sourceCodeUrlHasBeenSet; }
/**
* <p>A link to a public repository for the source code of your application, for
* example the URL of a specific GitHub commit.</p>
*/
inline void SetSourceCodeUrl(const Aws::String& value) { m_sourceCodeUrlHasBeenSet = true; m_sourceCodeUrl = value; }
/**
* <p>A link to a public repository for the source code of your application, for
* example the URL of a specific GitHub commit.</p>
*/
inline void SetSourceCodeUrl(Aws::String&& value) { m_sourceCodeUrlHasBeenSet = true; m_sourceCodeUrl = std::move(value); }
/**
* <p>A link to a public repository for the source code of your application, for
* example the URL of a specific GitHub commit.</p>
*/
inline void SetSourceCodeUrl(const char* value) { m_sourceCodeUrlHasBeenSet = true; m_sourceCodeUrl.assign(value); }
/**
* <p>A link to a public repository for the source code of your application, for
* example the URL of a specific GitHub commit.</p>
*/
inline Version& WithSourceCodeUrl(const Aws::String& value) { SetSourceCodeUrl(value); return *this;}
/**
* <p>A link to a public repository for the source code of your application, for
* example the URL of a specific GitHub commit.</p>
*/
inline Version& WithSourceCodeUrl(Aws::String&& value) { SetSourceCodeUrl(std::move(value)); return *this;}
/**
* <p>A link to a public repository for the source code of your application, for
* example the URL of a specific GitHub commit.</p>
*/
inline Version& WithSourceCodeUrl(const char* value) { SetSourceCodeUrl(value); return *this;}
/**
* <p>A link to the packaged AWS SAM template of your application.</p>
*/
inline const Aws::String& GetTemplateUrl() const{ return m_templateUrl; }
/**
* <p>A link to the packaged AWS SAM template of your application.</p>
*/
inline bool TemplateUrlHasBeenSet() const { return m_templateUrlHasBeenSet; }
/**
* <p>A link to the packaged AWS SAM template of your application.</p>
*/
inline void SetTemplateUrl(const Aws::String& value) { m_templateUrlHasBeenSet = true; m_templateUrl = value; }
/**
* <p>A link to the packaged AWS SAM template of your application.</p>
*/
inline void SetTemplateUrl(Aws::String&& value) { m_templateUrlHasBeenSet = true; m_templateUrl = std::move(value); }
/**
* <p>A link to the packaged AWS SAM template of your application.</p>
*/
inline void SetTemplateUrl(const char* value) { m_templateUrlHasBeenSet = true; m_templateUrl.assign(value); }
/**
* <p>A link to the packaged AWS SAM template of your application.</p>
*/
inline Version& WithTemplateUrl(const Aws::String& value) { SetTemplateUrl(value); return *this;}
/**
* <p>A link to the packaged AWS SAM template of your application.</p>
*/
inline Version& WithTemplateUrl(Aws::String&& value) { SetTemplateUrl(std::move(value)); return *this;}
/**
* <p>A link to the packaged AWS SAM template of your application.</p>
*/
inline Version& WithTemplateUrl(const char* value) { SetTemplateUrl(value); return *this;}
private:
Aws::String m_applicationId;
bool m_applicationIdHasBeenSet;
Aws::String m_creationTime;
bool m_creationTimeHasBeenSet;
Aws::Vector<ParameterDefinition> m_parameterDefinitions;
bool m_parameterDefinitionsHasBeenSet;
Aws::Vector<Capability> m_requiredCapabilities;
bool m_requiredCapabilitiesHasBeenSet;
bool m_resourcesSupported;
bool m_resourcesSupportedHasBeenSet;
Aws::String m_semanticVersion;
bool m_semanticVersionHasBeenSet;
Aws::String m_sourceCodeArchiveUrl;
bool m_sourceCodeArchiveUrlHasBeenSet;
Aws::String m_sourceCodeUrl;
bool m_sourceCodeUrlHasBeenSet;
Aws::String m_templateUrl;
bool m_templateUrlHasBeenSet;
};
} // namespace Model
} // namespace ServerlessApplicationRepository
} // namespace Aws