// Code generated by smithy-go-codegen DO NOT EDIT.

package types

import (
	smithydocument "github.com/aws/smithy-go/document"
	"time"
)

// Information about an alarm.
type Alarm struct {

	// The name of the alarm. Maximum length is 255 characters. Each alarm name can be
	// used only once in a list of alarms.
	Name *string

	noSmithyDocumentSerde
}

// Information about alarms associated with the deployment group.
type AlarmConfiguration struct {

	// A list of alarms configured for the deployment group. A maximum of 10 alarms can
	// be added to a deployment group.
	Alarms []Alarm

	// Indicates whether the alarm configuration is enabled.
	Enabled bool

	// Indicates whether a deployment should continue if information about the current
	// state of alarms cannot be retrieved from Amazon CloudWatch. The default value is
	// false.
	//
	// * true: The deployment proceeds even if alarm status information can't
	// be retrieved from Amazon CloudWatch.
	//
	// * false: The deployment stops if alarm
	// status information can't be retrieved from Amazon CloudWatch.
	IgnorePollAlarmFailure bool

	noSmithyDocumentSerde
}

// Information about an application.
type ApplicationInfo struct {

	// The application ID.
	ApplicationId *string

	// The application name.
	ApplicationName *string

	// The destination platform type for deployment of the application (Lambda or
	// Server).
	ComputePlatform ComputePlatform

	// The time at which the application was created.
	CreateTime *time.Time

	// The name for a connection to a GitHub account.
	GitHubAccountName *string

	// True if the user has authenticated with GitHub for the specified application.
	// Otherwise, false.
	LinkedToGitHub bool

	noSmithyDocumentSerde
}

// A revision for an AWS Lambda or Amazon ECS deployment that is a YAML-formatted
// or JSON-formatted string. For AWS Lambda and Amazon ECS deployments, the
// revision is the same as the AppSpec file. This method replaces the deprecated
// RawString data type.
type AppSpecContent struct {

	// The YAML-formatted or JSON-formatted revision string. For an AWS Lambda
	// deployment, the content includes a Lambda function name, the alias for its
	// original version, and the alias for its replacement version. The deployment
	// shifts traffic from the original version of the Lambda function to the
	// replacement version. For an Amazon ECS deployment, the content includes the task
	// name, information about the load balancer that serves traffic to the container,
	// and more. For both types of deployments, the content can specify Lambda
	// functions that run at specified hooks, such as BeforeInstall, during a
	// deployment.
	Content *string

	// The SHA256 hash value of the revision content.
	Sha256 *string

	noSmithyDocumentSerde
}

// Information about a configuration for automatically rolling back to a previous
// version of an application revision when a deployment is not completed
// successfully.
type AutoRollbackConfiguration struct {

	// Indicates whether a defined automatic rollback configuration is currently
	// enabled.
	Enabled bool

	// The event type or types that trigger a rollback.
	Events []AutoRollbackEvent

	noSmithyDocumentSerde
}

// Information about an Auto Scaling group.
type AutoScalingGroup struct {

	// An Auto Scaling lifecycle event hook name.
	Hook *string

	// The Auto Scaling group name.
	Name *string

	noSmithyDocumentSerde
}

// Information about blue/green deployment options for a deployment group.
type BlueGreenDeploymentConfiguration struct {

	// Information about the action to take when newly provisioned instances are ready
	// to receive traffic in a blue/green deployment.
	DeploymentReadyOption *DeploymentReadyOption

	// Information about how instances are provisioned for a replacement environment in
	// a blue/green deployment.
	GreenFleetProvisioningOption *GreenFleetProvisioningOption

	// Information about whether to terminate instances in the original fleet during a
	// blue/green deployment.
	TerminateBlueInstancesOnDeploymentSuccess *BlueInstanceTerminationOption

	noSmithyDocumentSerde
}

// Information about whether instances in the original environment are terminated
// when a blue/green deployment is successful. BlueInstanceTerminationOption does
// not apply to Lambda deployments.
type BlueInstanceTerminationOption struct {

	// The action to take on instances in the original environment after a successful
	// blue/green deployment.
	//
	// * TERMINATE: Instances are terminated after a specified
	// wait time.
	//
	// * KEEP_ALIVE: Instances are left running after they are deregistered
	// from the load balancer and removed from the deployment group.
	Action InstanceAction

	// For an Amazon EC2 deployment, the number of minutes to wait after a successful
	// blue/green deployment before terminating instances from the original
	// environment. For an Amazon ECS deployment, the number of minutes before deleting
	// the original (blue) task set. During an Amazon ECS deployment, CodeDeploy shifts
	// traffic from the original (blue) task set to a replacement (green) task set. The
	// maximum setting is 2880 minutes (2 days).
	TerminationWaitTimeInMinutes int32

	noSmithyDocumentSerde
}

// Information about the target to be updated by an AWS CloudFormation blue/green
// deployment. This target type is used for all deployments initiated by a
// CloudFormation stack update.
type CloudFormationTarget struct {

	// The unique ID of an AWS CloudFormation blue/green deployment.
	DeploymentId *string

	// The date and time when the target application was updated by an AWS
	// CloudFormation blue/green deployment.
	LastUpdatedAt *time.Time

	// The lifecycle events of the AWS CloudFormation blue/green deployment to this
	// target application.
	LifecycleEvents []LifecycleEvent

	// The resource type for the AWS CloudFormation blue/green deployment.
	ResourceType *string

	// The status of an AWS CloudFormation blue/green deployment's target application.
	Status TargetStatus

	// The unique ID of a deployment target that has a type of CloudFormationTarget.
	TargetId *string

	// The percentage of production traffic that the target version of an AWS
	// CloudFormation blue/green deployment receives.
	TargetVersionWeight float64

	noSmithyDocumentSerde
}

// Information about a deployment configuration.
type DeploymentConfigInfo struct {

	// The destination platform type for the deployment (Lambda, Server, or ECS).
	ComputePlatform ComputePlatform

	// The time at which the deployment configuration was created.
	CreateTime *time.Time

	// The deployment configuration ID.
	DeploymentConfigId *string

	// The deployment configuration name.
	DeploymentConfigName *string

	// Information about the number or percentage of minimum healthy instance.
	MinimumHealthyHosts *MinimumHealthyHosts

	// The configuration that specifies how the deployment traffic is routed. Used for
	// deployments with a Lambda or ECS compute platform only.
	TrafficRoutingConfig *TrafficRoutingConfig

	noSmithyDocumentSerde
}

// Information about a deployment group.
type DeploymentGroupInfo struct {

	// A list of alarms associated with the deployment group.
	AlarmConfiguration *AlarmConfiguration

	// The application name.
	ApplicationName *string

	// Information about the automatic rollback configuration associated with the
	// deployment group.
	AutoRollbackConfiguration *AutoRollbackConfiguration

	// A list of associated Auto Scaling groups.
	AutoScalingGroups []AutoScalingGroup

	// Information about blue/green deployment options for a deployment group.
	BlueGreenDeploymentConfiguration *BlueGreenDeploymentConfiguration

	// The destination platform type for the deployment (Lambda, Server, or ECS).
	ComputePlatform ComputePlatform

	// The deployment configuration name.
	DeploymentConfigName *string

	// The deployment group ID.
	DeploymentGroupId *string

	// The deployment group name.
	DeploymentGroupName *string

	// Information about the type of deployment, either in-place or blue/green, you
	// want to run and whether to route deployment traffic behind a load balancer.
	DeploymentStyle *DeploymentStyle

	// The Amazon EC2 tags on which to filter. The deployment group includes EC2
	// instances with any of the specified tags.
	Ec2TagFilters []EC2TagFilter

	// Information about groups of tags applied to an EC2 instance. The deployment
	// group includes only EC2 instances identified by all of the tag groups. Cannot be
	// used in the same call as ec2TagFilters.
	Ec2TagSet *EC2TagSet

	// The target Amazon ECS services in the deployment group. This applies only to
	// deployment groups that use the Amazon ECS compute platform. A target Amazon ECS
	// service is specified as an Amazon ECS cluster and service name pair using the
	// format :.
	EcsServices []ECSService

	// Information about the most recent attempted deployment to the deployment group.
	LastAttemptedDeployment *LastDeploymentInfo

	// Information about the most recent successful deployment to the deployment group.
	LastSuccessfulDeployment *LastDeploymentInfo

	// Information about the load balancer to use in a deployment.
	LoadBalancerInfo *LoadBalancerInfo

	// The on-premises instance tags on which to filter. The deployment group includes
	// on-premises instances with any of the specified tags.
	OnPremisesInstanceTagFilters []TagFilter

	// Information about groups of tags applied to an on-premises instance. The
	// deployment group includes only on-premises instances identified by all the tag
	// groups. Cannot be used in the same call as onPremisesInstanceTagFilters.
	OnPremisesTagSet *OnPremisesTagSet

	// Indicates what happens when new EC2 instances are launched mid-deployment and do
	// not receive the deployed application revision. If this option is set to UPDATE
	// or is unspecified, CodeDeploy initiates one or more 'auto-update outdated
	// instances' deployments to apply the deployed application revision to the new EC2
	// instances. If this option is set to IGNORE, CodeDeploy does not initiate a
	// deployment to update the new EC2 instances. This may result in instances having
	// different revisions.
	OutdatedInstancesStrategy OutdatedInstancesStrategy

	// A service role Amazon Resource Name (ARN) that grants CodeDeploy permission to
	// make calls to AWS services on your behalf. For more information, see Create a
	// Service Role for AWS CodeDeploy
	// (https://docs.aws.amazon.com/codedeploy/latest/userguide/getting-started-create-service-role.html)
	// in the AWS CodeDeploy User Guide.
	ServiceRoleArn *string

	// Information about the deployment group's target revision, including type and
	// location.
	TargetRevision *RevisionLocation

	// Information about triggers associated with the deployment group.
	TriggerConfigurations []TriggerConfig

	noSmithyDocumentSerde
}

// Information about a deployment.
type DeploymentInfo struct {

	// Provides information about the results of a deployment, such as whether
	// instances in the original environment in a blue/green deployment were not
	// terminated.
	//
	// Deprecated: This member has been deprecated.
	AdditionalDeploymentStatusInfo *string

	// The application name.
	ApplicationName *string

	// Information about the automatic rollback configuration associated with the
	// deployment.
	AutoRollbackConfiguration *AutoRollbackConfiguration

	// Information about blue/green deployment options for this deployment.
	BlueGreenDeploymentConfiguration *BlueGreenDeploymentConfiguration

	// A timestamp that indicates when the deployment was complete.
	CompleteTime *time.Time

	// The destination platform type for the deployment (Lambda, Server, or ECS).
	ComputePlatform ComputePlatform

	// A timestamp that indicates when the deployment was created.
	CreateTime *time.Time

	// The means by which the deployment was created:
	//
	// * user: A user created the
	// deployment.
	//
	// * autoscaling: Amazon EC2 Auto Scaling created the deployment.
	//
	// *
	// codeDeployRollback: A rollback process created the deployment.
	//
	// *
	// CodeDeployAutoUpdate: An auto-update process created the deployment when it
	// detected outdated EC2 instances.
	Creator DeploymentCreator

	// The deployment configuration name.
	DeploymentConfigName *string

	// The deployment group name.
	DeploymentGroupName *string

	// The unique ID of a deployment.
	DeploymentId *string

	// A summary of the deployment status of the instances in the deployment.
	DeploymentOverview *DeploymentOverview

	// Messages that contain information about the status of a deployment.
	DeploymentStatusMessages []string

	// Information about the type of deployment, either in-place or blue/green, you
	// want to run and whether to route deployment traffic behind a load balancer.
	DeploymentStyle *DeploymentStyle

	// A comment about the deployment.
	Description *string

	// Information about any error associated with this deployment.
	ErrorInformation *ErrorInformation

	// The unique ID for an external resource (for example, a CloudFormation stack ID)
	// that is linked to this deployment.
	ExternalId *string

	// Information about how AWS CodeDeploy handles files that already exist in a
	// deployment target location but weren't part of the previous successful
	// deployment.
	//
	// * DISALLOW: The deployment fails. This is also the default behavior
	// if no option is specified.
	//
	// * OVERWRITE: The version of the file from the
	// application revision currently being deployed replaces the version already on
	// the instance.
	//
	// * RETAIN: The version of the file already on the instance is kept
	// and used as part of the new deployment.
	FileExistsBehavior FileExistsBehavior

	// If true, then if an ApplicationStop, BeforeBlockTraffic, or AfterBlockTraffic
	// deployment lifecycle event to an instance fails, then the deployment continues
	// to the next deployment lifecycle event. For example, if ApplicationStop fails,
	// the deployment continues with DownloadBundle. If BeforeBlockTraffic fails, the
	// deployment continues with BlockTraffic. If AfterBlockTraffic fails, the
	// deployment continues with ApplicationStop. If false or not specified, then if a
	// lifecycle event fails during a deployment to an instance, that deployment fails.
	// If deployment to that instance is part of an overall deployment and the number
	// of healthy hosts is not less than the minimum number of healthy hosts, then a
	// deployment to the next instance is attempted. During a deployment, the AWS
	// CodeDeploy agent runs the scripts specified for ApplicationStop,
	// BeforeBlockTraffic, and AfterBlockTraffic in the AppSpec file from the previous
	// successful deployment. (All other scripts are run from the AppSpec file in the
	// current deployment.) If one of these scripts contains an error and does not run
	// successfully, the deployment can fail. If the cause of the failure is a script
	// from the last successful deployment that will never run successfully, create a
	// new deployment and use ignoreApplicationStopFailures to specify that the
	// ApplicationStop, BeforeBlockTraffic, and AfterBlockTraffic failures should be
	// ignored.
	IgnoreApplicationStopFailures bool

	// Indicates whether the wait period set for the termination of instances in the
	// original environment has started. Status is 'false' if the KEEP_ALIVE option is
	// specified. Otherwise, 'true' as soon as the termination wait period starts.
	InstanceTerminationWaitTimeStarted bool

	// Information about the load balancer used in the deployment.
	LoadBalancerInfo *LoadBalancerInfo

	// Information about the application revision that was deployed to the deployment
	// group before the most recent successful deployment.
	PreviousRevision *RevisionLocation

	// Information about deployments related to the specified deployment.
	RelatedDeployments *RelatedDeployments

	// Information about the location of stored application artifacts and the service
	// from which to retrieve them.
	Revision *RevisionLocation

	// Information about a deployment rollback.
	RollbackInfo *RollbackInfo

	// A timestamp that indicates when the deployment was deployed to the deployment
	// group. In some cases, the reported value of the start time might be later than
	// the complete time. This is due to differences in the clock settings of backend
	// servers that participate in the deployment process.
	StartTime *time.Time

	// The current state of the deployment as a whole.
	Status DeploymentStatus

	// Information about the instances that belong to the replacement environment in a
	// blue/green deployment.
	TargetInstances *TargetInstances

	// Indicates whether only instances that are not running the latest application
	// revision are to be deployed to.
	UpdateOutdatedInstancesOnly bool

	noSmithyDocumentSerde
}

// Information about the deployment status of the instances in the deployment.
type DeploymentOverview struct {

	// The number of instances in the deployment in a failed state.
	Failed int64

	// The number of instances in which the deployment is in progress.
	InProgress int64

	// The number of instances in the deployment in a pending state.
	Pending int64

	// The number of instances in a replacement environment ready to receive traffic in
	// a blue/green deployment.
	Ready int64

	// The number of instances in the deployment in a skipped state.
	Skipped int64

	// The number of instances in the deployment to which revisions have been
	// successfully deployed.
	Succeeded int64

	noSmithyDocumentSerde
}

// Information about how traffic is rerouted to instances in a replacement
// environment in a blue/green deployment.
type DeploymentReadyOption struct {

	// Information about when to reroute traffic from an original environment to a
	// replacement environment in a blue/green deployment.
	//
	// * CONTINUE_DEPLOYMENT:
	// Register new instances with the load balancer immediately after the new
	// application revision is installed on the instances in the replacement
	// environment.
	//
	// * STOP_DEPLOYMENT: Do not register new instances with a load
	// balancer unless traffic rerouting is started using ContinueDeployment. If
	// traffic rerouting is not started before the end of the specified wait period,
	// the deployment status is changed to Stopped.
	ActionOnTimeout DeploymentReadyAction

	// The number of minutes to wait before the status of a blue/green deployment is
	// changed to Stopped if rerouting is not started manually. Applies only to the
	// STOP_DEPLOYMENT option for actionOnTimeout.
	WaitTimeInMinutes int32

	noSmithyDocumentSerde
}

// Information about the type of deployment, either in-place or blue/green, you
// want to run and whether to route deployment traffic behind a load balancer.
type DeploymentStyle struct {

	// Indicates whether to route deployment traffic behind a load balancer.
	DeploymentOption DeploymentOption

	// Indicates whether to run an in-place deployment or a blue/green deployment.
	DeploymentType DeploymentType

	noSmithyDocumentSerde
}

// Information about the deployment target.
type DeploymentTarget struct {

	// Information about the target to be updated by an AWS CloudFormation blue/green
	// deployment. This target type is used for all deployments initiated by a
	// CloudFormation stack update.
	CloudFormationTarget *CloudFormationTarget

	// The deployment type that is specific to the deployment's compute platform or
	// deployments initiated by a CloudFormation stack update.
	DeploymentTargetType DeploymentTargetType

	// Information about the target for a deployment that uses the Amazon ECS compute
	// platform.
	EcsTarget *ECSTarget

	// Information about the target for a deployment that uses the EC2/On-premises
	// compute platform.
	InstanceTarget *InstanceTarget

	// Information about the target for a deployment that uses the AWS Lambda compute
	// platform.
	LambdaTarget *LambdaTarget

	noSmithyDocumentSerde
}

// Diagnostic information about executable scripts that are part of a deployment.
type Diagnostics struct {

	// The associated error code:
	//
	// * Success: The specified script ran.
	//
	// *
	// ScriptMissing: The specified script was not found in the specified location.
	//
	// *
	// ScriptNotExecutable: The specified script is not a recognized executable file
	// type.
	//
	// * ScriptTimedOut: The specified script did not finish running in the
	// specified time period.
	//
	// * ScriptFailed: The specified script failed to run as
	// expected.
	//
	// * UnknownError: The specified script did not run for an unknown
	// reason.
	ErrorCode LifecycleErrorCode

	// The last portion of the diagnostic log. If available, AWS CodeDeploy returns up
	// to the last 4 KB of the diagnostic log.
	LogTail *string

	// The message associated with the error.
	Message *string

	// The name of the script.
	ScriptName *string

	noSmithyDocumentSerde
}

// Information about an EC2 tag filter.
type EC2TagFilter struct {

	// The tag filter key.
	Key *string

	// The tag filter type:
	//
	// * KEY_ONLY: Key only.
	//
	// * VALUE_ONLY: Value only.
	//
	// *
	// KEY_AND_VALUE: Key and value.
	Type EC2TagFilterType

	// The tag filter value.
	Value *string

	noSmithyDocumentSerde
}

// Information about groups of EC2 instance tags.
type EC2TagSet struct {

	// A list that contains other lists of EC2 instance tag groups. For an instance to
	// be included in the deployment group, it must be identified by all of the tag
	// groups in the list.
	Ec2TagSetList [][]EC2TagFilter

	noSmithyDocumentSerde
}

// Contains the service and cluster names used to identify an Amazon ECS
// deployment's target.
type ECSService struct {

	// The name of the cluster that the Amazon ECS service is associated with.
	ClusterName *string

	// The name of the target Amazon ECS service.
	ServiceName *string

	noSmithyDocumentSerde
}

// Information about the target of an Amazon ECS deployment.
type ECSTarget struct {

	// The unique ID of a deployment.
	DeploymentId *string

	// The date and time when the target Amazon ECS application was updated by a
	// deployment.
	LastUpdatedAt *time.Time

	// The lifecycle events of the deployment to this target Amazon ECS application.
	LifecycleEvents []LifecycleEvent

	// The status an Amazon ECS deployment's target ECS application.
	Status TargetStatus

	// The Amazon Resource Name (ARN) of the target.
	TargetArn *string

	// The unique ID of a deployment target that has a type of ecsTarget.
	TargetId *string

	// The ECSTaskSet objects associated with the ECS target.
	TaskSetsInfo []ECSTaskSet

	noSmithyDocumentSerde
}

// Information about a set of Amazon ECS tasks in an AWS CodeDeploy deployment. An
// Amazon ECS task set includes details such as the desired number of tasks, how
// many tasks are running, and whether the task set serves production traffic. An
// AWS CodeDeploy application that uses the Amazon ECS compute platform deploys a
// containerized application in an Amazon ECS service as a task set.
type ECSTaskSet struct {

	// The number of tasks in a task set. During a deployment that uses the Amazon ECS
	// compute type, CodeDeploy instructs Amazon ECS to create a new task set and uses
	// this value to determine how many tasks to create. After the updated task set is
	// created, CodeDeploy shifts traffic to the new task set.
	DesiredCount int64

	// A unique ID of an ECSTaskSet.
	Identifer *string

	// The number of tasks in the task set that are in the PENDING status during an
	// Amazon ECS deployment. A task in the PENDING state is preparing to enter the
	// RUNNING state. A task set enters the PENDING status when it launches for the
	// first time, or when it is restarted after being in the STOPPED state.
	PendingCount int64

	// The number of tasks in the task set that are in the RUNNING status during an
	// Amazon ECS deployment. A task in the RUNNING state is running and ready for use.
	RunningCount int64

	// The status of the task set. There are three valid task set statuses:
	//
	// * PRIMARY:
	// Indicates the task set is serving production traffic.
	//
	// * ACTIVE: Indicates the
	// task set is not serving production traffic.
	//
	// * DRAINING: Indicates the tasks in
	// the task set are being stopped and their corresponding targets are being
	// deregistered from their target group.
	Status *string

	// The target group associated with the task set. The target group is used by AWS
	// CodeDeploy to manage traffic to a task set.
	TargetGroup *TargetGroupInfo

	// A label that identifies whether the ECS task set is an original target (BLUE) or
	// a replacement target (GREEN).
	TaskSetLabel TargetLabel

	// The percentage of traffic served by this task set.
	TrafficWeight float64

	noSmithyDocumentSerde
}

// Information about a load balancer in Elastic Load Balancing to use in a
// deployment. Instances are registered directly with a load balancer, and traffic
// is routed to the load balancer.
type ELBInfo struct {

	// For blue/green deployments, the name of the load balancer that is used to route
	// traffic from original instances to replacement instances in a blue/green
	// deployment. For in-place deployments, the name of the load balancer that
	// instances are deregistered from so they are not serving traffic during a
	// deployment, and then re-registered with after the deployment is complete.
	Name *string

	noSmithyDocumentSerde
}

// Information about a deployment error.
type ErrorInformation struct {

	// For more information, see Error Codes for AWS CodeDeploy
	// (https://docs.aws.amazon.com/codedeploy/latest/userguide/error-codes.html) in
	// the AWS CodeDeploy User Guide
	// (https://docs.aws.amazon.com/codedeploy/latest/userguide). The error code:
	//
	// *
	// APPLICATION_MISSING: The application was missing. This error code is most likely
	// raised if the application is deleted after the deployment is created, but before
	// it is started.
	//
	// * DEPLOYMENT_GROUP_MISSING: The deployment group was missing.
	// This error code is most likely raised if the deployment group is deleted after
	// the deployment is created, but before it is started.
	//
	// * HEALTH_CONSTRAINTS: The
	// deployment failed on too many instances to be successfully deployed within the
	// instance health constraints specified.
	//
	// * HEALTH_CONSTRAINTS_INVALID: The
	// revision cannot be successfully deployed within the instance health constraints
	// specified.
	//
	// * IAM_ROLE_MISSING: The service role cannot be accessed.
	//
	// *
	// IAM_ROLE_PERMISSIONS: The service role does not have the correct permissions.
	//
	// *
	// INTERNAL_ERROR: There was an internal error.
	//
	// * NO_EC2_SUBSCRIPTION: The calling
	// account is not subscribed to Amazon EC2.
	//
	// * NO_INSTANCES: No instances were
	// specified, or no instances can be found.
	//
	// * OVER_MAX_INSTANCES: The maximum
	// number of instances was exceeded.
	//
	// * THROTTLED: The operation was throttled
	// because the calling account exceeded the throttling limits of one or more AWS
	// services.
	//
	// * TIMEOUT: The deployment has timed out.
	//
	// * REVISION_MISSING: The
	// revision ID was missing. This error code is most likely raised if the revision
	// is deleted after the deployment is created, but before it is started.
	Code ErrorCode

	// An accompanying error message.
	Message *string

	noSmithyDocumentSerde
}

// Information about an application revision.
type GenericRevisionInfo struct {

	// The deployment groups for which this is the current target revision.
	DeploymentGroups []string

	// A comment about the revision.
	Description *string

	// When the revision was first used by AWS CodeDeploy.
	FirstUsedTime *time.Time

	// When the revision was last used by AWS CodeDeploy.
	LastUsedTime *time.Time

	// When the revision was registered with AWS CodeDeploy.
	RegisterTime *time.Time

	noSmithyDocumentSerde
}

// Information about the location of application artifacts stored in GitHub.
type GitHubLocation struct {

	// The SHA1 commit ID of the GitHub commit that represents the bundled artifacts
	// for the application revision.
	CommitId *string

	// The GitHub account and repository pair that stores a reference to the commit
	// that represents the bundled artifacts for the application revision. Specified as
	// account/repository.
	Repository *string

	noSmithyDocumentSerde
}

// Information about the instances that belong to the replacement environment in a
// blue/green deployment.
type GreenFleetProvisioningOption struct {

	// The method used to add instances to a replacement environment.
	//
	// *
	// DISCOVER_EXISTING: Use instances that already exist or will be created
	// manually.
	//
	// * COPY_AUTO_SCALING_GROUP: Use settings from a specified Auto Scaling
	// group to define and create instances in a new Auto Scaling group.
	Action GreenFleetProvisioningAction

	noSmithyDocumentSerde
}

// Information about an on-premises instance.
type InstanceInfo struct {

	// If the on-premises instance was deregistered, the time at which the on-premises
	// instance was deregistered.
	DeregisterTime *time.Time

	// The ARN of the IAM session associated with the on-premises instance.
	IamSessionArn *string

	// The IAM user ARN associated with the on-premises instance.
	IamUserArn *string

	// The ARN of the on-premises instance.
	InstanceArn *string

	// The name of the on-premises instance.
	InstanceName *string

	// The time at which the on-premises instance was registered.
	RegisterTime *time.Time

	// The tags currently associated with the on-premises instance.
	Tags []Tag

	noSmithyDocumentSerde
}

// Information about an instance in a deployment.
type InstanceSummary struct {

	// The unique ID of a deployment.
	DeploymentId *string

	// The instance ID.
	InstanceId *string

	// Information about which environment an instance belongs to in a blue/green
	// deployment.
	//
	// * BLUE: The instance is part of the original environment.
	//
	// * GREEN:
	// The instance is part of the replacement environment.
	InstanceType InstanceType

	// A timestamp that indicates when the instance information was last updated.
	LastUpdatedAt *time.Time

	// A list of lifecycle events for this instance.
	LifecycleEvents []LifecycleEvent

	// The deployment status for this instance:
	//
	// * Pending: The deployment is pending
	// for this instance.
	//
	// * In Progress: The deployment is in progress for this
	// instance.
	//
	// * Succeeded: The deployment has succeeded for this instance.
	//
	// *
	// Failed: The deployment has failed for this instance.
	//
	// * Skipped: The deployment
	// has been skipped for this instance.
	//
	// * Unknown: The deployment status is unknown
	// for this instance.
	//
	// Deprecated: InstanceStatus is deprecated, use TargetStatus instead.
	Status InstanceStatus

	noSmithyDocumentSerde
}

// A target Amazon EC2 or on-premises instance during a deployment that uses the
// EC2/On-premises compute platform.
type InstanceTarget struct {

	// The unique ID of a deployment.
	DeploymentId *string

	// A label that identifies whether the instance is an original target (BLUE) or a
	// replacement target (GREEN).
	InstanceLabel TargetLabel

	// The date and time when the target instance was updated by a deployment.
	LastUpdatedAt *time.Time

	// The lifecycle events of the deployment to this target instance.
	LifecycleEvents []LifecycleEvent

	// The status an EC2/On-premises deployment's target instance.
	Status TargetStatus

	// The Amazon Resource Name (ARN) of the target.
	TargetArn *string

	// The unique ID of a deployment target that has a type of instanceTarget.
	TargetId *string

	noSmithyDocumentSerde
}

// Information about a Lambda function specified in a deployment.
type LambdaFunctionInfo struct {

	// The version of a Lambda function that production traffic points to.
	CurrentVersion *string

	// The alias of a Lambda function. For more information, see AWS Lambda Function
	// Aliases (https://docs.aws.amazon.com/lambda/latest/dg/aliases-intro.html) in the
	// AWS Lambda Developer Guide.
	FunctionAlias *string

	// The name of a Lambda function.
	FunctionName *string

	// The version of a Lambda function that production traffic points to after the
	// Lambda function is deployed.
	TargetVersion *string

	// The percentage of production traffic that the target version of a Lambda
	// function receives.
	TargetVersionWeight float64

	noSmithyDocumentSerde
}

// Information about the target AWS Lambda function during an AWS Lambda
// deployment.
type LambdaTarget struct {

	// The unique ID of a deployment.
	DeploymentId *string

	// A LambdaFunctionInfo object that describes a target Lambda function.
	LambdaFunctionInfo *LambdaFunctionInfo

	// The date and time when the target Lambda function was updated by a deployment.
	LastUpdatedAt *time.Time

	// The lifecycle events of the deployment to this target Lambda function.
	LifecycleEvents []LifecycleEvent

	// The status an AWS Lambda deployment's target Lambda function.
	Status TargetStatus

	// The Amazon Resource Name (ARN) of the target.
	TargetArn *string

	// The unique ID of a deployment target that has a type of lambdaTarget.
	TargetId *string

	noSmithyDocumentSerde
}

// Information about the most recent attempted or successful deployment to a
// deployment group.
type LastDeploymentInfo struct {

	// A timestamp that indicates when the most recent deployment to the deployment
	// group started.
	CreateTime *time.Time

	// The unique ID of a deployment.
	DeploymentId *string

	// A timestamp that indicates when the most recent deployment to the deployment
	// group was complete.
	EndTime *time.Time

	// The status of the most recent deployment.
	Status DeploymentStatus

	noSmithyDocumentSerde
}

// Information about a deployment lifecycle event.
type LifecycleEvent struct {

	// Diagnostic information about the deployment lifecycle event.
	Diagnostics *Diagnostics

	// A timestamp that indicates when the deployment lifecycle event ended.
	EndTime *time.Time

	// The deployment lifecycle event name, such as ApplicationStop, BeforeInstall,
	// AfterInstall, ApplicationStart, or ValidateService.
	LifecycleEventName *string

	// A timestamp that indicates when the deployment lifecycle event started.
	StartTime *time.Time

	// The deployment lifecycle event status:
	//
	// * Pending: The deployment lifecycle
	// event is pending.
	//
	// * InProgress: The deployment lifecycle event is in
	// progress.
	//
	// * Succeeded: The deployment lifecycle event ran successfully.
	//
	// *
	// Failed: The deployment lifecycle event has failed.
	//
	// * Skipped: The deployment
	// lifecycle event has been skipped.
	//
	// * Unknown: The deployment lifecycle event is
	// unknown.
	Status LifecycleEventStatus

	noSmithyDocumentSerde
}

// Information about the Elastic Load Balancing load balancer or target group used
// in a deployment.
type LoadBalancerInfo struct {

	// An array that contains information about the load balancer to use for load
	// balancing in a deployment. In Elastic Load Balancing, load balancers are used
	// with Classic Load Balancers. Adding more than one load balancer to the array is
	// not supported.
	ElbInfoList []ELBInfo

	// An array that contains information about the target group to use for load
	// balancing in a deployment. In Elastic Load Balancing, target groups are used
	// with Application Load Balancers. Adding more than one target group to the array
	// is not supported.
	TargetGroupInfoList []TargetGroupInfo

	// The target group pair information. This is an array of TargeGroupPairInfo
	// objects with a maximum size of one.
	TargetGroupPairInfoList []TargetGroupPairInfo

	noSmithyDocumentSerde
}

// Information about minimum healthy instance.
type MinimumHealthyHosts struct {

	// The minimum healthy instance type:
	//
	// * HOST_COUNT: The minimum number of healthy
	// instances as an absolute value.
	//
	// * FLEET_PERCENT: The minimum number of healthy
	// instances as a percentage of the total number of instances in the
	// deployment.
	//
	// In an example of nine instances, if a HOST_COUNT of six is
	// specified, deploy to up to three instances at a time. The deployment is
	// successful if six or more instances are deployed to successfully. Otherwise, the
	// deployment fails. If a FLEET_PERCENT of 40 is specified, deploy to up to five
	// instances at a time. The deployment is successful if four or more instances are
	// deployed to successfully. Otherwise, the deployment fails. In a call to the
	// GetDeploymentConfig, CodeDeployDefault.OneAtATime returns a minimum healthy
	// instance type of MOST_CONCURRENCY and a value of 1. This means a deployment to
	// only one instance at a time. (You cannot set the type to MOST_CONCURRENCY, only
	// to HOST_COUNT or FLEET_PERCENT.) In addition, with CodeDeployDefault.OneAtATime,
	// AWS CodeDeploy attempts to ensure that all instances but one are kept in a
	// healthy state during the deployment. Although this allows one instance at a time
	// to be taken offline for a new deployment, it also means that if the deployment
	// to the last instance fails, the overall deployment is still successful. For more
	// information, see AWS CodeDeploy Instance Health
	// (https://docs.aws.amazon.com/codedeploy/latest/userguide/instances-health.html)
	// in the AWS CodeDeploy User Guide.
	Type MinimumHealthyHostsType

	// The minimum healthy instance value.
	Value int32

	noSmithyDocumentSerde
}

// Information about groups of on-premises instance tags.
type OnPremisesTagSet struct {

	// A list that contains other lists of on-premises instance tag groups. For an
	// instance to be included in the deployment group, it must be identified by all of
	// the tag groups in the list.
	OnPremisesTagSetList [][]TagFilter

	noSmithyDocumentSerde
}

// A revision for an AWS Lambda deployment that is a YAML-formatted or
// JSON-formatted string. For AWS Lambda deployments, the revision is the same as
// the AppSpec file.
type RawString struct {

	// The YAML-formatted or JSON-formatted revision string. It includes information
	// about which Lambda function to update and optional Lambda functions that
	// validate deployment lifecycle events.
	Content *string

	// The SHA256 hash value of the revision content.
	Sha256 *string

	noSmithyDocumentSerde
}

// Information about deployments related to the specified deployment.
type RelatedDeployments struct {

	// The deployment IDs of 'auto-update outdated instances' deployments triggered by
	// this deployment.
	AutoUpdateOutdatedInstancesDeploymentIds []string

	// The deployment ID of the root deployment that triggered this deployment.
	AutoUpdateOutdatedInstancesRootDeploymentId *string

	noSmithyDocumentSerde
}

// Information about an application revision.
type RevisionInfo struct {

	// Information about an application revision, including usage details and
	// associated deployment groups.
	GenericRevisionInfo *GenericRevisionInfo

	// Information about the location and type of an application revision.
	RevisionLocation *RevisionLocation

	noSmithyDocumentSerde
}

// Information about the location of an application revision.
type RevisionLocation struct {

	// The content of an AppSpec file for an AWS Lambda or Amazon ECS deployment. The
	// content is formatted as JSON or YAML and stored as a RawString.
	AppSpecContent *AppSpecContent

	// Information about the location of application artifacts stored in GitHub.
	GitHubLocation *GitHubLocation

	// The type of application revision:
	//
	// * S3: An application revision stored in
	// Amazon S3.
	//
	// * GitHub: An application revision stored in GitHub (EC2/On-premises
	// deployments only).
	//
	// * String: A YAML-formatted or JSON-formatted string (AWS
	// Lambda deployments only).
	//
	// * AppSpecContent: An AppSpecContent object that
	// contains the contents of an AppSpec file for an AWS Lambda or Amazon ECS
	// deployment. The content is formatted as JSON or YAML stored as a RawString.
	RevisionType RevisionLocationType

	// Information about the location of a revision stored in Amazon S3.
	S3Location *S3Location

	// Information about the location of an AWS Lambda deployment revision stored as a
	// RawString.
	//
	// Deprecated: RawString and String revision type are deprecated, use
	// AppSpecContent type instead.
	String_ *RawString

	noSmithyDocumentSerde
}

// Information about a deployment rollback.
type RollbackInfo struct {

	// The ID of the deployment rollback.
	RollbackDeploymentId *string

	// Information that describes the status of a deployment rollback (for example,
	// whether the deployment can't be rolled back, is in progress, failed, or
	// succeeded).
	RollbackMessage *string

	// The deployment ID of the deployment that was underway and triggered a rollback
	// deployment because it failed or was stopped.
	RollbackTriggeringDeploymentId *string

	noSmithyDocumentSerde
}

// Information about the location of application artifacts stored in Amazon S3.
type S3Location struct {

	// The name of the Amazon S3 bucket where the application revision is stored.
	Bucket *string

	// The file type of the application revision. Must be one of the following:
	//
	// * tar:
	// A tar archive file.
	//
	// * tgz: A compressed tar archive file.
	//
	// * zip: A zip archive
	// file.
	BundleType BundleType

	// The ETag of the Amazon S3 object that represents the bundled artifacts for the
	// application revision. If the ETag is not specified as an input parameter, ETag
	// validation of the object is skipped.
	ETag *string

	// The name of the Amazon S3 object that represents the bundled artifacts for the
	// application revision.
	Key *string

	// A specific version of the Amazon S3 object that represents the bundled artifacts
	// for the application revision. If the version is not specified, the system uses
	// the most recent version by default.
	Version *string

	noSmithyDocumentSerde
}

// Information about a tag.
type Tag struct {

	// The tag's key.
	Key *string

	// The tag's value.
	Value *string

	noSmithyDocumentSerde
}

// Information about an on-premises instance tag filter.
type TagFilter struct {

	// The on-premises instance tag filter key.
	Key *string

	// The on-premises instance tag filter type:
	//
	// * KEY_ONLY: Key only.
	//
	// * VALUE_ONLY:
	// Value only.
	//
	// * KEY_AND_VALUE: Key and value.
	Type TagFilterType

	// The on-premises instance tag filter value.
	Value *string

	noSmithyDocumentSerde
}

// Information about a target group in Elastic Load Balancing to use in a
// deployment. Instances are registered as targets in a target group, and traffic
// is routed to the target group.
type TargetGroupInfo struct {

	// For blue/green deployments, the name of the target group that instances in the
	// original environment are deregistered from, and instances in the replacement
	// environment are registered with. For in-place deployments, the name of the
	// target group that instances are deregistered from, so they are not serving
	// traffic during a deployment, and then re-registered with after the deployment is
	// complete.
	Name *string

	noSmithyDocumentSerde
}

// Information about two target groups and how traffic is routed during an Amazon
// ECS deployment. An optional test traffic route can be specified.
type TargetGroupPairInfo struct {

	// The path used by a load balancer to route production traffic when an Amazon ECS
	// deployment is complete.
	ProdTrafficRoute *TrafficRoute

	// One pair of target groups. One is associated with the original task set. The
	// second is associated with the task set that serves traffic after the deployment
	// is complete.
	TargetGroups []TargetGroupInfo

	// An optional path used by a load balancer to route test traffic after an Amazon
	// ECS deployment. Validation can occur while test traffic is served during a
	// deployment.
	TestTrafficRoute *TrafficRoute

	noSmithyDocumentSerde
}

// Information about the instances to be used in the replacement environment in a
// blue/green deployment.
type TargetInstances struct {

	// The names of one or more Auto Scaling groups to identify a replacement
	// environment for a blue/green deployment.
	AutoScalingGroups []string

	// Information about the groups of EC2 instance tags that an instance must be
	// identified by in order for it to be included in the replacement environment for
	// a blue/green deployment. Cannot be used in the same call as tagFilters.
	Ec2TagSet *EC2TagSet

	// The tag filter key, type, and value used to identify Amazon EC2 instances in a
	// replacement environment for a blue/green deployment. Cannot be used in the same
	// call as ec2TagSet.
	TagFilters []EC2TagFilter

	noSmithyDocumentSerde
}

// A configuration that shifts traffic from one version of a Lambda function or ECS
// task set to another in two increments. The original and target Lambda function
// versions or ECS task sets are specified in the deployment's AppSpec file.
type TimeBasedCanary struct {

	// The number of minutes between the first and second traffic shifts of a
	// TimeBasedCanary deployment.
	CanaryInterval int32

	// The percentage of traffic to shift in the first increment of a TimeBasedCanary
	// deployment.
	CanaryPercentage int32

	noSmithyDocumentSerde
}

// A configuration that shifts traffic from one version of a Lambda function or ECS
// task set to another in equal increments, with an equal number of minutes between
// each increment. The original and target Lambda function versions or ECS task
// sets are specified in the deployment's AppSpec file.
type TimeBasedLinear struct {

	// The number of minutes between each incremental traffic shift of a
	// TimeBasedLinear deployment.
	LinearInterval int32

	// The percentage of traffic that is shifted at the start of each increment of a
	// TimeBasedLinear deployment.
	LinearPercentage int32

	noSmithyDocumentSerde
}

// Information about a time range.
type TimeRange struct {

	// The end time of the time range. Specify null to leave the end time open-ended.
	End *time.Time

	// The start time of the time range. Specify null to leave the start time
	// open-ended.
	Start *time.Time

	noSmithyDocumentSerde
}

// Information about a listener. The listener contains the path used to route
// traffic that is received from the load balancer to a target group.
type TrafficRoute struct {

	// The Amazon Resource Name (ARN) of one listener. The listener identifies the
	// route between a target group and a load balancer. This is an array of strings
	// with a maximum size of one.
	ListenerArns []string

	noSmithyDocumentSerde
}

// The configuration that specifies how traffic is shifted from one version of a
// Lambda function to another version during an AWS Lambda deployment, or from one
// Amazon ECS task set to another during an Amazon ECS deployment.
type TrafficRoutingConfig struct {

	// A configuration that shifts traffic from one version of a Lambda function or ECS
	// task set to another in two increments. The original and target Lambda function
	// versions or ECS task sets are specified in the deployment's AppSpec file.
	TimeBasedCanary *TimeBasedCanary

	// A configuration that shifts traffic from one version of a Lambda function or ECS
	// task set to another in equal increments, with an equal number of minutes between
	// each increment. The original and target Lambda function versions or ECS task
	// sets are specified in the deployment's AppSpec file.
	TimeBasedLinear *TimeBasedLinear

	// The type of traffic shifting (TimeBasedCanary or TimeBasedLinear) used by a
	// deployment configuration.
	Type TrafficRoutingType

	noSmithyDocumentSerde
}

// Information about notification triggers for the deployment group.
type TriggerConfig struct {

	// The event type or types for which notifications are triggered.
	TriggerEvents []TriggerEventType

	// The name of the notification trigger.
	TriggerName *string

	// The Amazon Resource Name (ARN) of the Amazon Simple Notification Service topic
	// through which notifications about deployment or instance events are sent.
	TriggerTargetArn *string

	noSmithyDocumentSerde
}

type noSmithyDocumentSerde = smithydocument.NoSerde
