package awsssm


// Attributes for parameters of various types of string.
//
// Example:
//   parameterVersion := awscdk.Token_AsNumber(map[string]*string{
//   	"Ref": jsii.String("MyParameter"),
//   })
//
//   // Retrieve the latest value of the non-secret parameter
//   // with name "/My/String/Parameter".
//   stringValue := ssm.StringParameter_FromStringParameterAttributes(this, jsii.String("MyValue"), &StringParameterAttributes{
//   	ParameterName: jsii.String("/My/Public/Parameter"),
//   }).StringValue
//   stringValueVersionFromToken := ssm.StringParameter_FromStringParameterAttributes(this, jsii.String("MyValueVersionFromToken"), &StringParameterAttributes{
//   	ParameterName: jsii.String("/My/Public/Parameter"),
//   	// parameter version from token
//   	Version: parameterVersion,
//   }).StringValue
//
//   // Retrieve a specific version of the secret (SecureString) parameter.
//   // 'version' is always required.
//   secretValue := ssm.StringParameter_FromSecureStringParameterAttributes(this, jsii.String("MySecureValue"), &SecureStringParameterAttributes{
//   	ParameterName: jsii.String("/My/Secret/Parameter"),
//   	Version: jsii.Number(5),
//   })
//   secretValueVersionFromToken := ssm.StringParameter_FromSecureStringParameterAttributes(this, jsii.String("MySecureValueVersionFromToken"), &SecureStringParameterAttributes{
//   	ParameterName: jsii.String("/My/Secret/Parameter"),
//   	// parameter version from token
//   	Version: parameterVersion,
//   })
//
// See: ParameterType.
//
type StringParameterAttributes struct {
	// The name of the parameter store value.
	//
	// This value can be a token or a concrete string. If it is a concrete string
	// and includes "/" it must also be prefixed with a "/" (fully-qualified).
	ParameterName *string `field:"required" json:"parameterName" yaml:"parameterName"`
	// Indicates whether the parameter name is a simple name.
	//
	// A parameter name
	// without any "/" is considered a simple name. If the parameter name includes
	// "/", setting simpleName to true might cause unintended issues such
	// as duplicate "/" in the resulting ARN.
	//
	// This is required only if `parameterName` is a token, which means we
	// are unable to detect if the name is simple or "path-like" for the purpose
	// of rendering SSM parameter ARNs.
	//
	// If `parameterName` is not specified, `simpleName` must be `true` (or
	// undefined) since the name generated by AWS CloudFormation is always a
	// simple name.
	// Default: - auto-detect based on `parameterName`.
	//
	SimpleName *bool `field:"optional" json:"simpleName" yaml:"simpleName"`
	// Use a dynamic reference as the representation in CloudFormation template level.
	//
	// By default, CDK tries to deduce an appropriate representation based on the parameter value (a CfnParameter or a dynamic reference). Use this flag to override the representation when it does not work.
	// Default: false.
	//
	ForceDynamicReference *bool `field:"optional" json:"forceDynamicReference" yaml:"forceDynamicReference"`
	// The type of the string parameter.
	// Default: ParameterType.STRING
	//
	// Deprecated: - use valueType instead.
	Type ParameterType `field:"optional" json:"type" yaml:"type"`
	// The type of the string parameter value.
	//
	// Using specific types can be helpful in catching invalid values
	// at the start of creating or updating a stack. CloudFormation validates
	// the values against existing values in the account.
	//
	// Note - if you want to allow values from different AWS accounts, use
	// ParameterValueType.STRING
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/parameters-section-structure.html#aws-ssm-parameter-types
	//
	// Default: ParameterValueType.STRING
	//
	ValueType ParameterValueType `field:"optional" json:"valueType" yaml:"valueType"`
	// The version number of the value you wish to retrieve.
	// Default: The latest version will be retrieved.
	//
	Version *float64 `field:"optional" json:"version" yaml:"version"`
}

