package awsssm


// Properties needed to create a String SSM parameter.
//
// Example:
//   import lambda "github.com/aws/aws-cdk-go/awscdk"
//
//   var func iFunction
//
//
//   simpleParameter := ssm.NewStringParameter(this, jsii.String("StringParameter"), &StringParameterProps{
//   	// the parameter name doesn't contain any '/'
//   	ParameterName: jsii.String("parameter"),
//   	StringValue: jsii.String("SOME_VALUE"),
//   	SimpleName: jsii.Boolean(true),
//   })
//   nonSimpleParameter := ssm.NewStringParameter(this, jsii.String("StringParameter"), &StringParameterProps{
//   	// the parameter name contains '/'
//   	ParameterName: fmt.Sprintf("/%v/my/app/param", func.FunctionName),
//   	StringValue: jsii.String("SOME_VALUE"),
//   	SimpleName: jsii.Boolean(false),
//   })
//
type StringParameterProps struct {
	// A regular expression used to validate the parameter value.
	//
	// For example, for String types with values restricted to
	// numbers, you can specify the following: ``^\d+$``.
	// Default: no validation is performed.
	//
	AllowedPattern *string `field:"optional" json:"allowedPattern" yaml:"allowedPattern"`
	// Information about the parameter that you want to add to the system.
	// Default: none.
	//
	Description *string `field:"optional" json:"description" yaml:"description"`
	// The name of the parameter.
	// Default: - a name will be generated by CloudFormation.
	//
	ParameterName *string `field:"optional" 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"`
	// The tier of the string parameter.
	// Default: - undefined.
	//
	Tier ParameterTier `field:"optional" json:"tier" yaml:"tier"`
	// The value of the parameter.
	//
	// It may not reference another parameter and ``{{}}`` cannot be used in the value.
	StringValue *string `field:"required" json:"stringValue" yaml:"stringValue"`
	// The data type of the parameter, such as `text` or `aws:ec2:image`.
	// Default: ParameterDataType.TEXT
	//
	DataType ParameterDataType `field:"optional" json:"dataType" yaml:"dataType"`
	// The type of the string parameter.
	// Default: ParameterType.STRING
	//
	// Deprecated: - type will always be 'String'.
	Type ParameterType `field:"optional" json:"type" yaml:"type"`
}

