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

package types

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

// Represents information about an action configuration.
type ActionConfiguration struct {

	// The configuration data for the action.
	Configuration map[string]string

	noSmithyDocumentSerde
}

// Represents information about an action configuration property.
type ActionConfigurationProperty struct {

	// Whether the configuration property is a key.
	//
	// This member is required.
	Key bool

	// The name of the action configuration property.
	//
	// This member is required.
	Name *string

	// Whether the configuration property is a required value.
	//
	// This member is required.
	Required bool

	// Whether the configuration property is secret. Secrets are hidden from all calls
	// except for GetJobDetails , GetThirdPartyJobDetails , PollForJobs , and
	// PollForThirdPartyJobs .
	//
	// When updating a pipeline, passing * * * * * without changing any other values
	// of the action preserves the previous value of the secret.
	//
	// This member is required.
	Secret bool

	// The description of the action configuration property that is displayed to users.
	Description *string

	// Indicates that the property is used with PollForJobs . When creating a custom
	// action, an action can have up to one queryable property. If it has one, that
	// property must be both required and not secret.
	//
	// If you create a pipeline with a custom action type, and that custom action
	// contains a queryable property, the value for that configuration property is
	// subject to other restrictions. The value must be less than or equal to twenty
	// (20) characters. The value can contain only alphanumeric characters,
	// underscores, and hyphens.
	Queryable bool

	// The type of the configuration property.
	Type ActionConfigurationPropertyType

	noSmithyDocumentSerde
}

// Represents the context of an action in the stage of a pipeline to a job worker.
type ActionContext struct {

	// The system-generated unique ID that corresponds to an action's execution.
	ActionExecutionId *string

	// The name of the action in the context of a job.
	Name *string

	noSmithyDocumentSerde
}

// Represents information about an action declaration.
type ActionDeclaration struct {

	// Specifies the action type and the provider of the action.
	//
	// This member is required.
	ActionTypeId *ActionTypeId

	// The action declaration's name.
	//
	// This member is required.
	Name *string

	// The shell commands to run with your compute action in CodePipeline. All
	// commands are supported except multi-line formats. While CodeBuild logs and
	// permissions are used, you do not need to create any resources in CodeBuild.
	//
	// Using compute time for this action will incur separate charges in CodeBuild.
	Commands []string

	// The action's configuration. These are key-value pairs that specify input values
	// for an action. For more information, see [Action Structure Requirements in CodePipeline]. For the list of configuration
	// properties for the CloudFormation action type in CodePipeline, see [Configuration Properties Reference]in the
	// CloudFormation User Guide. For template snippets with examples, see [Using Parameter Override Functions with CodePipeline Pipelines]in the
	// CloudFormation User Guide.
	//
	// The values can be represented in either JSON or YAML format. For example, the
	// JSON configuration item format is as follows:
	//
	// JSON:
	//
	//     "Configuration" : { Key : Value },
	//
	// [Action Structure Requirements in CodePipeline]: https://docs.aws.amazon.com/codepipeline/latest/userguide/reference-pipeline-structure.html#action-requirements
	// [Using Parameter Override Functions with CodePipeline Pipelines]: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/continuous-delivery-codepipeline-parameter-override-functions.html
	// [Configuration Properties Reference]: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/continuous-delivery-codepipeline-action-reference.html
	Configuration map[string]string

	// The environment variables for the action.
	EnvironmentVariables []EnvironmentVariable

	// The name or ID of the artifact consumed by the action, such as a test or build
	// artifact.
	InputArtifacts []InputArtifact

	// The variable namespace associated with the action. All variables produced as
	// output by this action fall under this namespace.
	Namespace *string

	// The name or ID of the result of the action declaration, such as a test or build
	// artifact.
	OutputArtifacts []OutputArtifact

	// The list of variables that are to be exported from the compute action. This is
	// specifically CodeBuild environment variables as used for that action.
	OutputVariables []string

	// The action declaration's Amazon Web Services Region, such as us-east-1.
	Region *string

	// The ARN of the IAM service role that performs the declared action. This is
	// assumed through the roleArn for the pipeline.
	RoleArn *string

	// The order in which actions are run.
	RunOrder *int32

	// A timeout duration in minutes that can be applied against the ActionType’s
	// default timeout value specified in [Quotas for CodePipeline]. This attribute is available only to the
	// manual approval ActionType.
	//
	// [Quotas for CodePipeline]: https://docs.aws.amazon.com/codepipeline/latest/userguide/limits.html
	TimeoutInMinutes *int32

	noSmithyDocumentSerde
}

// Represents information about the run of an action.
type ActionExecution struct {

	// ID of the workflow action execution in the current stage. Use the GetPipelineState action to
	// retrieve the current action execution details of the current stage.
	//
	// For older executions, this field might be empty. The action execution ID is
	// available for executions run on or after March 2020.
	ActionExecutionId *string

	// The details of an error returned by a URL external to Amazon Web Services.
	ErrorDetails *ErrorDetails

	// The external ID of the run of the action.
	ExternalExecutionId *string

	// The URL of a resource external to Amazon Web Services that is used when running
	// the action (for example, an external repository URL).
	ExternalExecutionUrl *string

	// The last status change of the action.
	LastStatusChange *time.Time

	// The ARN of the user who last changed the pipeline.
	LastUpdatedBy *string

	// The Amazon Resource Name (ARN) of the log stream for the action compute.
	LogStreamARN *string

	// A percentage of completeness of the action as it runs.
	PercentComplete *int32

	// The status of the action, or for a completed action, the last status of the
	// action.
	Status ActionExecutionStatus

	// A summary of the run of the action.
	Summary *string

	// The system-generated token used to identify a unique approval request. The
	// token for each open approval request can be obtained using the GetPipelineState
	// command. It is used to validate that the approval request corresponding to this
	// token is still valid.
	Token *string

	noSmithyDocumentSerde
}

// Returns information about an execution of an action, including the action
// execution ID, and the name, version, and timing of the action.
type ActionExecutionDetail struct {

	// The action execution ID.
	ActionExecutionId *string

	// The name of the action.
	ActionName *string

	// Input details for the action execution, such as role ARN, Region, and input
	// artifacts.
	Input *ActionExecutionInput

	// The last update time of the action execution.
	LastUpdateTime *time.Time

	// Output details for the action execution, such as the action execution result.
	Output *ActionExecutionOutput

	// The pipeline execution ID for the action execution.
	PipelineExecutionId *string

	// The version of the pipeline where the action was run.
	PipelineVersion *int32

	// The name of the stage that contains the action.
	StageName *string

	// The start time of the action execution.
	StartTime *time.Time

	//  The status of the action execution. Status categories are InProgress ,
	// Succeeded , and Failed .
	Status ActionExecutionStatus

	// The ARN of the user who changed the pipeline execution details.
	UpdatedBy *string

	noSmithyDocumentSerde
}

// Filter values for the action execution.
type ActionExecutionFilter struct {

	// The latest execution in the pipeline.
	//
	// Filtering on the latest execution is available for executions run on or after
	// February 08, 2024.
	LatestInPipelineExecution *LatestInPipelineExecutionFilter

	// The pipeline execution ID used to filter action execution history.
	PipelineExecutionId *string

	noSmithyDocumentSerde
}

// Input information used for an action execution.
type ActionExecutionInput struct {

	// Represents information about an action type.
	ActionTypeId *ActionTypeId

	// Configuration data for an action execution.
	Configuration map[string]string

	// Details of input artifacts of the action that correspond to the action
	// execution.
	InputArtifacts []ArtifactDetail

	// The variable namespace associated with the action. All variables produced as
	// output by this action fall under this namespace.
	Namespace *string

	// The Amazon Web Services Region for the action, such as us-east-1.
	Region *string

	// Configuration data for an action execution with all variable references
	// replaced with their real values for the execution.
	ResolvedConfiguration map[string]string

	// The ARN of the IAM service role that performs the declared action. This is
	// assumed through the roleArn for the pipeline.
	RoleArn *string

	noSmithyDocumentSerde
}

// Output details listed for an action execution, such as the action execution
// result.
type ActionExecutionOutput struct {

	// Execution result information listed in the output details for an action
	// execution.
	ExecutionResult *ActionExecutionResult

	// Details of output artifacts of the action that correspond to the action
	// execution.
	OutputArtifacts []ArtifactDetail

	// The outputVariables field shows the key-value pairs that were output as part of
	// that execution.
	OutputVariables map[string]string

	noSmithyDocumentSerde
}

// Execution result information, such as the external execution ID.
type ActionExecutionResult struct {

	// Represents information about an error in CodePipeline.
	ErrorDetails *ErrorDetails

	// The action provider's external ID for the action execution.
	ExternalExecutionId *string

	// The action provider's summary for the action execution.
	ExternalExecutionSummary *string

	// The deepest external link to the external resource (for example, a repository
	// URL or deployment endpoint) that is used when running the action.
	ExternalExecutionUrl *string

	// The Amazon Resource Name (ARN) of the log stream for the action compute.
	LogStreamARN *string

	noSmithyDocumentSerde
}

// Represents information about the version (or revision) of an action.
type ActionRevision struct {

	// The date and time when the most recent version of the action was created, in
	// timestamp format.
	//
	// This member is required.
	Created *time.Time

	// The unique identifier of the change that set the state to this revision (for
	// example, a deployment ID or timestamp).
	//
	// This member is required.
	RevisionChangeId *string

	// The system-generated unique ID that identifies the revision number of the
	// action.
	//
	// This member is required.
	RevisionId *string

	noSmithyDocumentSerde
}

// Represents information about the state of an action.
type ActionState struct {

	// The name of the action.
	ActionName *string

	// Represents information about the version (or revision) of an action.
	CurrentRevision *ActionRevision

	// A URL link for more information about the state of the action, such as a
	// deployment group details page.
	EntityUrl *string

	// Represents information about the run of an action.
	LatestExecution *ActionExecution

	// A URL link for more information about the revision, such as a commit details
	// page.
	RevisionUrl *string

	noSmithyDocumentSerde
}

// Returns information about the details of an action type.
type ActionType struct {

	// Represents information about an action type.
	//
	// This member is required.
	Id *ActionTypeId

	// The details of the input artifact for the action, such as its commit ID.
	//
	// This member is required.
	InputArtifactDetails *ArtifactDetails

	// The details of the output artifact of the action, such as its commit ID.
	//
	// This member is required.
	OutputArtifactDetails *ArtifactDetails

	// The configuration properties for the action type.
	ActionConfigurationProperties []ActionConfigurationProperty

	// The settings for the action type.
	Settings *ActionTypeSettings

	noSmithyDocumentSerde
}

// Information about parameters for artifacts associated with the action type,
// such as the minimum and maximum artifacts allowed.
type ActionTypeArtifactDetails struct {

	// The maximum number of artifacts that can be used with the actiontype. For
	// example, you should specify a minimum and maximum of zero input artifacts for an
	// action type with a category of source .
	//
	// This member is required.
	MaximumCount int32

	// The minimum number of artifacts that can be used with the action type. For
	// example, you should specify a minimum and maximum of zero input artifacts for an
	// action type with a category of source .
	//
	// This member is required.
	MinimumCount int32

	noSmithyDocumentSerde
}

// The parameters for the action type definition that are provided when the action
// type is created or updated.
type ActionTypeDeclaration struct {

	// Information about the executor for an action type that was created with any
	// supported integration model.
	//
	// This member is required.
	Executor *ActionTypeExecutor

	// The action category, owner, provider, and version of the action type to be
	// updated.
	//
	// This member is required.
	Id *ActionTypeIdentifier

	// Details for the artifacts, such as application files, to be worked on by the
	// action. For example, the minimum and maximum number of input artifacts allowed.
	//
	// This member is required.
	InputArtifactDetails *ActionTypeArtifactDetails

	// Details for the output artifacts, such as a built application, that are the
	// result of the action. For example, the minimum and maximum number of output
	// artifacts allowed.
	//
	// This member is required.
	OutputArtifactDetails *ActionTypeArtifactDetails

	// The description for the action type to be updated.
	Description *string

	// Details identifying the accounts with permissions to use the action type.
	Permissions *ActionTypePermissions

	// The properties of the action type to be updated.
	Properties []ActionTypeProperty

	// The links associated with the action type to be updated.
	Urls *ActionTypeUrls

	noSmithyDocumentSerde
}

// The action engine, or executor, for an action type created for a provider,
// where the action is to be used by customers of the provider. The action engine
// is associated with the model used to create and update the action, such as the
// Lambda integration model.
type ActionTypeExecutor struct {

	// The action configuration properties for the action type. These properties are
	// specified in the action definition when the action type is created.
	//
	// This member is required.
	Configuration *ExecutorConfiguration

	// The integration model used to create and update the action type, Lambda or
	// JobWorker .
	//
	// This member is required.
	Type ExecutorType

	// The timeout in seconds for the job. An action execution can have multiple jobs.
	// This is the timeout for a single job, not the entire action execution.
	JobTimeout *int32

	// The policy statement that specifies the permissions in the CodePipeline
	// customer account that are needed to successfully run an action.
	//
	// To grant permission to another account, specify the account ID as the
	// Principal, a domain-style identifier defined by the service, for example
	// codepipeline.amazonaws.com .
	//
	// The size of the passed JSON policy document cannot exceed 2048 characters.
	PolicyStatementsTemplate *string

	noSmithyDocumentSerde
}

// Represents information about an action type.
type ActionTypeId struct {

	// A category defines what kind of action can be taken in the stage, and
	// constrains the provider type for the action. Valid categories are limited to one
	// of the following values.
	//
	//   - Source
	//
	//   - Build
	//
	//   - Test
	//
	//   - Deploy
	//
	//   - Invoke
	//
	//   - Approval
	//
	//   - Compute
	//
	// This member is required.
	Category ActionCategory

	// The creator of the action being called. There are three valid values for the
	// Owner field in the action category section within your pipeline structure: AWS ,
	// ThirdParty , and Custom . For more information, see [Valid Action Types and Providers in CodePipeline].
	//
	// [Valid Action Types and Providers in CodePipeline]: https://docs.aws.amazon.com/codepipeline/latest/userguide/reference-pipeline-structure.html#actions-valid-providers
	//
	// This member is required.
	Owner ActionOwner

	// The provider of the service being called by the action. Valid providers are
	// determined by the action category. For example, an action in the Deploy category
	// type might have a provider of CodeDeploy, which would be specified as CodeDeploy
	// . For more information, see [Valid Action Types and Providers in CodePipeline].
	//
	// [Valid Action Types and Providers in CodePipeline]: https://docs.aws.amazon.com/codepipeline/latest/userguide/reference-pipeline-structure.html#actions-valid-providers
	//
	// This member is required.
	Provider *string

	// A string that describes the action version.
	//
	// This member is required.
	Version *string

	noSmithyDocumentSerde
}

// Specifies the category, owner, provider, and version of the action type.
type ActionTypeIdentifier struct {

	// Defines what kind of action can be taken in the stage, one of the following:
	//
	//   - Source
	//
	//   - Build
	//
	//   - Test
	//
	//   - Deploy
	//
	//   - Approval
	//
	//   - Invoke
	//
	// This member is required.
	Category ActionCategory

	// The creator of the action type being called: AWS or ThirdParty .
	//
	// This member is required.
	Owner *string

	// The provider of the action type being called. The provider name is supplied
	// when the action type is created.
	//
	// This member is required.
	Provider *string

	// A string that describes the action type version.
	//
	// This member is required.
	Version *string

	noSmithyDocumentSerde
}

// Details identifying the users with permissions to use the action type.
type ActionTypePermissions struct {

	// A list of Amazon Web Services account IDs with access to use the action type in
	// their pipelines.
	//
	// This member is required.
	AllowedAccounts []string

	noSmithyDocumentSerde
}

// Represents information about each property specified in the action
// configuration, such as the description and key name that display for the
// customer using the action type.
type ActionTypeProperty struct {

	// Whether the configuration property is a key.
	//
	// This member is required.
	Key bool

	// The property name that is displayed to users.
	//
	// This member is required.
	Name *string

	// Whether to omit the field value entered by the customer in the log. If true ,
	// the value is not saved in CloudTrail logs for the action execution.
	//
	// This member is required.
	NoEcho bool

	// Whether the configuration property is an optional value.
	//
	// This member is required.
	Optional bool

	// The description of the property that is displayed to users.
	Description *string

	// Indicates that the property is used with polling. An action type can have up to
	// one queryable property. If it has one, that property must be both required and
	// not secret.
	Queryable bool

	noSmithyDocumentSerde
}

// Returns information about the settings for an action type.
type ActionTypeSettings struct {

	// The URL returned to the CodePipeline console that provides a deep link to the
	// resources of the external system, such as the configuration page for a
	// CodeDeploy deployment group. This link is provided as part of the action display
	// in the pipeline.
	EntityUrlTemplate *string

	// The URL returned to the CodePipeline console that contains a link to the
	// top-level landing page for the external system, such as the console page for
	// CodeDeploy. This link is shown on the pipeline view page in the CodePipeline
	// console and provides a link to the execution entity of the external action.
	ExecutionUrlTemplate *string

	// The URL returned to the CodePipeline console that contains a link to the page
	// where customers can update or change the configuration of the external action.
	RevisionUrlTemplate *string

	// The URL of a sign-up page where users can sign up for an external service and
	// perform initial configuration of the action provided by that service.
	ThirdPartyConfigurationUrl *string

	noSmithyDocumentSerde
}

// Returns information about URLs for web pages that display to customers as links
// on the pipeline view, such as an external configuration page for the action
// type.
type ActionTypeUrls struct {

	// The URL returned to the CodePipeline console that contains a link to the page
	// where customers can configure the external action.
	ConfigurationUrl *string

	// The URL returned to the CodePipeline console that provides a deep link to the
	// resources of the external system, such as a status page. This link is provided
	// as part of the action display in the pipeline.
	EntityUrlTemplate *string

	// The link to an execution page for the action type in progress. For example, for
	// a CodeDeploy action, this link is shown on the pipeline view page in the
	// CodePipeline console, and it links to a CodeDeploy status page.
	ExecutionUrlTemplate *string

	// The URL returned to the CodePipeline console that contains a link to the page
	// where customers can update or change the configuration of the external action.
	RevisionUrlTemplate *string

	noSmithyDocumentSerde
}

// Represents information about the result of an approval request.
type ApprovalResult struct {

	// The response submitted by a reviewer assigned to an approval action request.
	//
	// This member is required.
	Status ApprovalStatus

	// The summary of the current status of the approval request.
	//
	// This member is required.
	Summary *string

	noSmithyDocumentSerde
}

// Artifacts are the files that are worked on by actions in the pipeline. See the
// action configuration for each action for details about artifact parameters. For
// example, the S3 source action artifact is a file name (or file path), and the
// files are generally provided as a ZIP file. Example artifact name:
// SampleApp_Windows.zip
type Artifact struct {

	// The location of an artifact.
	Location *ArtifactLocation

	// The artifact's name.
	Name *string

	// The artifact's revision ID. Depending on the type of object, this could be a
	// commit ID (GitHub) or a revision ID (Amazon S3).
	Revision *string

	noSmithyDocumentSerde
}

// Artifact details for the action execution, such as the artifact location.
type ArtifactDetail struct {

	// The artifact object name for the action execution.
	Name *string

	// The Amazon S3 artifact location for the action execution.
	S3location *S3Location

	noSmithyDocumentSerde
}

// Returns information about the details of an artifact.
type ArtifactDetails struct {

	// The maximum number of artifacts allowed for the action type.
	//
	// This member is required.
	MaximumCount int32

	// The minimum number of artifacts allowed for the action type.
	//
	// This member is required.
	MinimumCount int32

	noSmithyDocumentSerde
}

// Represents information about the location of an artifact.
type ArtifactLocation struct {

	// The S3 bucket that contains the artifact.
	S3Location *S3ArtifactLocation

	// The type of artifact in the location.
	Type ArtifactLocationType

	noSmithyDocumentSerde
}

// Represents revision details of an artifact.
type ArtifactRevision struct {

	// The date and time when the most recent revision of the artifact was created, in
	// timestamp format.
	Created *time.Time

	// The name of an artifact. This name might be system-generated, such as "MyApp",
	// or defined by the user when an action is created.
	Name *string

	// An additional identifier for a revision, such as a commit date or, for
	// artifacts stored in Amazon S3 buckets, the ETag value.
	RevisionChangeIdentifier *string

	// The revision ID of the artifact.
	RevisionId *string

	// Summary information about the most recent revision of the artifact. For GitHub
	// and CodeCommit repositories, the commit message. For Amazon S3 buckets or
	// actions, the user-provided content of a codepipeline-artifact-revision-summary
	// key specified in the object metadata.
	RevisionSummary *string

	// The commit ID for the artifact revision. For artifacts stored in GitHub or
	// CodeCommit repositories, the commit ID is linked to a commit details page.
	RevisionUrl *string

	noSmithyDocumentSerde
}

// The S3 bucket where artifacts for the pipeline are stored.
//
// You must include either artifactStore or artifactStores in your pipeline, but
// you cannot use both. If you create a cross-region action in your pipeline, you
// must use artifactStores .
type ArtifactStore struct {

	// The S3 bucket used for storing the artifacts for a pipeline. You can specify
	// the name of an S3 bucket but not a folder in the bucket. A folder to contain the
	// pipeline artifacts is created for you based on the name of the pipeline. You can
	// use any S3 bucket in the same Amazon Web Services Region as the pipeline to
	// store your pipeline artifacts.
	//
	// This member is required.
	Location *string

	// The type of the artifact store, such as S3.
	//
	// This member is required.
	Type ArtifactStoreType

	// The encryption key used to encrypt the data in the artifact store, such as an
	// Amazon Web Services Key Management Service key. If this is undefined, the
	// default key for Amazon S3 is used.
	EncryptionKey *EncryptionKey

	noSmithyDocumentSerde
}

// Represents an Amazon Web Services session credentials object. These credentials
// are temporary credentials that are issued by Amazon Web Services Secure Token
// Service (STS). They can be used to access input and output artifacts in the S3
// bucket used to store artifact for the pipeline in CodePipeline.
type AWSSessionCredentials struct {

	// The access key for the session.
	//
	// This member is required.
	AccessKeyId *string

	// The secret access key for the session.
	//
	// This member is required.
	SecretAccessKey *string

	// The token for the session.
	//
	// This member is required.
	SessionToken *string

	noSmithyDocumentSerde
}

// The conditions for making checks for entry to a stage. For more information
// about conditions, see [Stage conditions]and [How do stage conditions work?].
//
// [Stage conditions]: https://docs.aws.amazon.com/codepipeline/latest/userguide/stage-conditions.html
// [How do stage conditions work?]: https://docs.aws.amazon.com/codepipeline/latest/userguide/concepts-how-it-works-conditions.html
type BeforeEntryConditions struct {

	// The conditions that are configured as entry conditions.
	//
	// This member is required.
	Conditions []Condition

	noSmithyDocumentSerde
}

// Reserved for future use.
type BlockerDeclaration struct {

	// Reserved for future use.
	//
	// This member is required.
	Name *string

	// Reserved for future use.
	//
	// This member is required.
	Type BlockerType

	noSmithyDocumentSerde
}

// The condition for the stage. A condition is made up of the rules and the result
// for the condition. For more information about conditions, see [Stage conditions]and [How do stage conditions work?].. For more
// information about rules, see the [CodePipeline rule reference].
//
// [Stage conditions]: https://docs.aws.amazon.com/codepipeline/latest/userguide/stage-conditions.html
// [How do stage conditions work?]: https://docs.aws.amazon.com/codepipeline/latest/userguide/concepts-how-it-works-conditions.html
// [CodePipeline rule reference]: https://docs.aws.amazon.com/codepipeline/latest/userguide/rule-reference.html
type Condition struct {

	// The action to be done when the condition is met. For example, rolling back an
	// execution for a failure condition.
	Result Result

	// The rules that make up the condition.
	Rules []RuleDeclaration

	noSmithyDocumentSerde
}

// The run of a condition.
type ConditionExecution struct {

	// The last status change of the condition.
	LastStatusChange *time.Time

	// The status of the run for a condition.
	Status ConditionExecutionStatus

	// The summary of information about a run for a condition.
	Summary *string

	noSmithyDocumentSerde
}

// Information about the state of the condition.
type ConditionState struct {

	// The state of the latest run of the rule.
	LatestExecution *ConditionExecution

	// The state of the rules for the condition.
	RuleStates []RuleState

	noSmithyDocumentSerde
}

// Represents information about a current revision.
type CurrentRevision struct {

	// The change identifier for the current revision.
	//
	// This member is required.
	ChangeIdentifier *string

	// The revision ID of the current version of an artifact.
	//
	// This member is required.
	Revision *string

	// The date and time when the most recent revision of the artifact was created, in
	// timestamp format.
	Created *time.Time

	// The summary of the most recent revision of the artifact.
	RevisionSummary *string

	noSmithyDocumentSerde
}

// The target for the deploy action.
type DeployActionExecutionTarget struct {

	// The end time for the deploy action.
	EndTime *time.Time

	// The lifecycle events for the deploy action.
	Events []DeployTargetEvent

	// The start time for the deploy action.
	StartTime *time.Time

	// The status of the deploy action.
	Status *string

	// The ID of the target for the deploy action.
	TargetId *string

	// The type of target for the deploy action.
	TargetType *string

	noSmithyDocumentSerde
}

// A lifecycle event for the deploy action.
type DeployTargetEvent struct {

	// The context for the event for the deploy action.
	Context *DeployTargetEventContext

	// The end time for the event for the deploy action.
	EndTime *time.Time

	// The name of the event for the deploy action.
	Name *string

	// The start time for the event for the deploy action.
	StartTime *time.Time

	// The status of the event for the deploy action.
	Status *string

	noSmithyDocumentSerde
}

// The context for the event for the deploy action.
type DeployTargetEventContext struct {

	// The context message for the event for the deploy action.
	Message *string

	// The command ID for the event for the deploy action.
	SsmCommandId *string

	noSmithyDocumentSerde
}

// Represents information about the key used to encrypt data in the artifact
// store, such as an Amazon Web Services Key Management Service (Key Management
// Service) key.
type EncryptionKey struct {

	// The ID used to identify the key. For an Amazon Web Services KMS key, you can
	// use the key ID, the key ARN, or the alias ARN.
	//
	// Aliases are recognized only in the account that created the KMS key. For
	// cross-account actions, you can only use the key ID or key ARN to identify the
	// key. Cross-account actions involve using the role from the other account
	// (AccountB), so specifying the key ID will use the key from the other account
	// (AccountB).
	//
	// This member is required.
	Id *string

	// The type of encryption key, such as an Amazon Web Services KMS key. When
	// creating or updating a pipeline, the value must be set to 'KMS'.
	//
	// This member is required.
	Type EncryptionKeyType

	noSmithyDocumentSerde
}

// The environment variables for the action.
type EnvironmentVariable struct {

	// The environment variable name in the key-value pair.
	//
	// This member is required.
	Name *string

	// The environment variable value in the key-value pair.
	//
	// This member is required.
	Value *string

	// Specifies the type of use for the environment variable value. The value can be
	// either PLAINTEXT or SECRETS_MANAGER . If the value is SECRETS_MANAGER , provide
	// the Secrets reference in the EnvironmentVariable value.
	Type EnvironmentVariableType

	noSmithyDocumentSerde
}

// Represents information about an error in CodePipeline.
type ErrorDetails struct {

	// The system ID or number code of the error.
	Code *string

	// The text of the error message.
	Message *string

	noSmithyDocumentSerde
}

// The details of the actions taken and results produced on an artifact as it
// passes through stages in the pipeline.
type ExecutionDetails struct {

	// The system-generated unique ID of this action used to identify this job worker
	// in any external systems, such as CodeDeploy.
	ExternalExecutionId *string

	// The percentage of work completed on the action, represented on a scale of 0 to
	// 100 percent.
	PercentComplete *int32

	// The summary of the current status of the actions.
	Summary *string

	noSmithyDocumentSerde
}

// The interaction or event that started a pipeline execution.
type ExecutionTrigger struct {

	// Detail related to the event that started a pipeline execution, such as the
	// webhook ARN of the webhook that triggered the pipeline execution or the user ARN
	// for a user-initiated start-pipeline-execution CLI command.
	TriggerDetail *string

	// The type of change-detection method, command, or user interaction that started
	// a pipeline execution.
	TriggerType TriggerType

	noSmithyDocumentSerde
}

// The action engine, or executor, related to the supported integration model used
// to create and update the action type. The available executor types are Lambda
// and JobWorker .
type ExecutorConfiguration struct {

	// Details about the JobWorker executor of the action type.
	JobWorkerExecutorConfiguration *JobWorkerExecutorConfiguration

	// Details about the Lambda executor of the action type.
	LambdaExecutorConfiguration *LambdaExecutorConfiguration

	noSmithyDocumentSerde
}

// The configuration that specifies the result, such as rollback, to occur upon
// stage failure. For more information about conditions, see [Stage conditions]and [How do stage conditions work?].
//
// [Stage conditions]: https://docs.aws.amazon.com/codepipeline/latest/userguide/stage-conditions.html
// [How do stage conditions work?]: https://docs.aws.amazon.com/codepipeline/latest/userguide/concepts-how-it-works-conditions.html
type FailureConditions struct {

	// The conditions that are configured as failure conditions. For more information
	// about conditions, see [Stage conditions]and [How do stage conditions work?].
	//
	// [Stage conditions]: https://docs.aws.amazon.com/codepipeline/latest/userguide/stage-conditions.html
	// [How do stage conditions work?]: https://docs.aws.amazon.com/codepipeline/latest/userguide/concepts-how-it-works-conditions.html
	Conditions []Condition

	// The specified result for when the failure conditions are met, such as rolling
	// back the stage.
	Result Result

	// The retry configuration specifies automatic retry for a failed stage, along
	// with the configured retry mode.
	RetryConfiguration *RetryConfiguration

	noSmithyDocumentSerde
}

// Represents information about failure details.
type FailureDetails struct {

	// The message about the failure.
	//
	// This member is required.
	Message *string

	// The type of the failure.
	//
	// This member is required.
	Type FailureType

	// The external ID of the run of the action that failed.
	ExternalExecutionId *string

	noSmithyDocumentSerde
}

// The Git repository branches specified as filter criteria to start the pipeline.
type GitBranchFilterCriteria struct {

	// The list of patterns of Git branches that, when a commit is pushed, are to be
	// excluded from starting the pipeline.
	Excludes []string

	// The list of patterns of Git branches that, when a commit is pushed, are to be
	// included as criteria that starts the pipeline.
	Includes []string

	noSmithyDocumentSerde
}

// A type of trigger configuration for Git-based source actions.
//
// You can specify the Git configuration trigger type for all third-party
// Git-based source actions that are supported by the CodeStarSourceConnection
// action type.
type GitConfiguration struct {

	// The name of the pipeline source action where the trigger configuration, such as
	// Git tags, is specified. The trigger configuration will start the pipeline upon
	// the specified change only.
	//
	// You can only specify one trigger configuration per source action.
	//
	// This member is required.
	SourceActionName *string

	// The field where the repository event that will start the pipeline is specified
	// as pull requests.
	PullRequest []GitPullRequestFilter

	// The field where the repository event that will start the pipeline, such as
	// pushing Git tags, is specified with details.
	Push []GitPushFilter

	noSmithyDocumentSerde
}

// The Git repository file paths specified as filter criteria to start the
// pipeline.
type GitFilePathFilterCriteria struct {

	// The list of patterns of Git repository file paths that, when a commit is
	// pushed, are to be excluded from starting the pipeline.
	Excludes []string

	// The list of patterns of Git repository file paths that, when a commit is
	// pushed, are to be included as criteria that starts the pipeline.
	Includes []string

	noSmithyDocumentSerde
}

// The event criteria for the pull request trigger configuration, such as the
// lists of branches or file paths to include and exclude.
//
// The following are valid values for the events for this filter:
//
//   - CLOSED
//
//   - OPEN
//
//   - UPDATED
type GitPullRequestFilter struct {

	// The field that specifies to filter on branches for the pull request trigger
	// configuration.
	Branches *GitBranchFilterCriteria

	// The field that specifies which pull request events to filter on (OPEN, UPDATED,
	// CLOSED) for the trigger configuration.
	Events []GitPullRequestEventType

	// The field that specifies to filter on file paths for the pull request trigger
	// configuration.
	FilePaths *GitFilePathFilterCriteria

	noSmithyDocumentSerde
}

// The event criteria that specify when a specified repository event will start
// the pipeline for the specified trigger configuration, such as the lists of Git
// tags to include and exclude.
type GitPushFilter struct {

	// The field that specifies to filter on branches for the push trigger
	// configuration.
	Branches *GitBranchFilterCriteria

	// The field that specifies to filter on file paths for the push trigger
	// configuration.
	FilePaths *GitFilePathFilterCriteria

	// The field that contains the details for the Git tags trigger configuration.
	Tags *GitTagFilterCriteria

	noSmithyDocumentSerde
}

// The Git tags specified as filter criteria for whether a Git tag repository
// event will start the pipeline.
type GitTagFilterCriteria struct {

	// The list of patterns of Git tags that, when pushed, are to be excluded from
	// starting the pipeline.
	Excludes []string

	// The list of patterns of Git tags that, when pushed, are to be included as
	// criteria that starts the pipeline.
	Includes []string

	noSmithyDocumentSerde
}

// Represents information about an artifact to be worked on, such as a test or
// build artifact.
type InputArtifact struct {

	// The name of the artifact to be worked on (for example, "My App").
	//
	// Artifacts are the files that are worked on by actions in the pipeline. See the
	// action configuration for each action for details about artifact parameters. For
	// example, the S3 source action input artifact is a file name (or file path), and
	// the files are generally provided as a ZIP file. Example artifact name:
	// SampleApp_Windows.zip
	//
	// The input artifact of an action must exactly match the output artifact declared
	// in a preceding action, but the input artifact does not have to be the next
	// action in strict sequence from the action that provided the output artifact.
	// Actions in parallel can declare different output artifacts, which are in turn
	// consumed by different following actions.
	//
	// This member is required.
	Name *string

	noSmithyDocumentSerde
}

// Represents information about a job.
type Job struct {

	// The ID of the Amazon Web Services account to use when performing the job.
	AccountId *string

	// Other data about a job.
	Data *JobData

	// The unique system-generated ID of the job.
	Id *string

	// A system-generated random number that CodePipeline uses to ensure that the job
	// is being worked on by only one job worker. Use this number in an AcknowledgeJobrequest.
	Nonce *string

	noSmithyDocumentSerde
}

// Represents other information about a job required for a job worker to complete
// the job.
type JobData struct {

	// Represents information about an action configuration.
	ActionConfiguration *ActionConfiguration

	// Represents information about an action type.
	ActionTypeId *ActionTypeId

	// Represents an Amazon Web Services session credentials object. These credentials
	// are temporary credentials that are issued by Amazon Web Services Secure Token
	// Service (STS). They can be used to access input and output artifacts in the S3
	// bucket used to store artifacts for the pipeline in CodePipeline.
	ArtifactCredentials *AWSSessionCredentials

	// A system-generated token, such as a deployment ID, required by a job to
	// continue the job asynchronously.
	ContinuationToken *string

	// Represents information about the key used to encrypt data in the artifact
	// store, such as an KMS key.
	EncryptionKey *EncryptionKey

	// The artifact supplied to the job.
	InputArtifacts []Artifact

	// The output of the job.
	OutputArtifacts []Artifact

	// Represents information about a pipeline to a job worker.
	//
	// Includes pipelineArn and pipelineExecutionId for custom jobs.
	PipelineContext *PipelineContext

	noSmithyDocumentSerde
}

// Represents information about the details of a job.
type JobDetails struct {

	// The Amazon Web Services account ID associated with the job.
	AccountId *string

	// Represents other information about a job required for a job worker to complete
	// the job.
	Data *JobData

	// The unique system-generated ID of the job.
	Id *string

	noSmithyDocumentSerde
}

// Details about the polling configuration for the JobWorker action engine, or
// executor.
type JobWorkerExecutorConfiguration struct {

	// The accounts in which the job worker is configured and might poll for jobs as
	// part of the action execution.
	PollingAccounts []string

	// The service Principals in which the job worker is configured and might poll for
	// jobs as part of the action execution.
	PollingServicePrincipals []string

	noSmithyDocumentSerde
}

// Details about the configuration for the Lambda action engine, or executor.
type LambdaExecutorConfiguration struct {

	// The ARN of the Lambda function used by the action engine.
	//
	// This member is required.
	LambdaFunctionArn *string

	noSmithyDocumentSerde
}

// The field that specifies to filter on the latest execution in the pipeline.
//
// Filtering on the latest execution is available for executions run on or after
// February 08, 2024.
type LatestInPipelineExecutionFilter struct {

	// The execution ID for the latest execution in the pipeline.
	//
	// This member is required.
	PipelineExecutionId *string

	// The start time to filter on for the latest execution in the pipeline. Valid
	// options:
	//
	//   - All
	//
	//   - Latest
	//
	// This member is required.
	StartTimeRange StartTimeRange

	noSmithyDocumentSerde
}

// The detail returned for each webhook after listing webhooks, such as the
// webhook URL, the webhook name, and the webhook ARN.
type ListWebhookItem struct {

	// The detail returned for each webhook, such as the webhook authentication type
	// and filter rules.
	//
	// This member is required.
	Definition *WebhookDefinition

	// A unique URL generated by CodePipeline. When a POST request is made to this
	// URL, the defined pipeline is started as long as the body of the post request
	// satisfies the defined authentication and filtering conditions. Deleting and
	// re-creating a webhook makes the old URL invalid and generates a new one.
	//
	// This member is required.
	Url *string

	// The Amazon Resource Name (ARN) of the webhook.
	Arn *string

	// The number code of the error.
	ErrorCode *string

	// The text of the error message about the webhook.
	ErrorMessage *string

	// The date and time a webhook was last successfully triggered, in timestamp
	// format.
	LastTriggered *time.Time

	// Specifies the tags applied to the webhook.
	Tags []Tag

	noSmithyDocumentSerde
}

// Represents information about the output of an action.
type OutputArtifact struct {

	// The name of the output of an artifact, such as "My App".
	//
	// The input artifact of an action must exactly match the output artifact declared
	// in a preceding action, but the input artifact does not have to be the next
	// action in strict sequence from the action that provided the output artifact.
	// Actions in parallel can declare different output artifacts, which are in turn
	// consumed by different following actions.
	//
	// Output artifact names must be unique within a pipeline.
	//
	// This member is required.
	Name *string

	// The files that you want to associate with the output artifact that will be
	// exported from the compute action.
	Files []string

	noSmithyDocumentSerde
}

// Represents information about a pipeline to a job worker.
//
// PipelineContext contains pipelineArn and pipelineExecutionId for custom action
// jobs. The pipelineArn and pipelineExecutionId fields are not populated for
// ThirdParty action jobs.
type PipelineContext struct {

	// The context of an action to a job worker in the stage of a pipeline.
	Action *ActionContext

	// The Amazon Resource Name (ARN) of the pipeline.
	PipelineArn *string

	// The execution ID of the pipeline.
	PipelineExecutionId *string

	// The name of the pipeline. This is a user-specified value. Pipeline names must
	// be unique across all pipeline names under an Amazon Web Services account.
	PipelineName *string

	// The stage of the pipeline.
	Stage *StageContext

	noSmithyDocumentSerde
}

// Represents the structure of actions and stages to be performed in the pipeline.
type PipelineDeclaration struct {

	// The name of the pipeline.
	//
	// This member is required.
	Name *string

	// The Amazon Resource Name (ARN) for CodePipeline to use to either perform
	// actions with no actionRoleArn , or to use to assume roles for actions with an
	// actionRoleArn .
	//
	// This member is required.
	RoleArn *string

	// The stage in which to perform the action.
	//
	// This member is required.
	Stages []StageDeclaration

	// Represents information about the S3 bucket where artifacts are stored for the
	// pipeline.
	//
	// You must include either artifactStore or artifactStores in your pipeline, but
	// you cannot use both. If you create a cross-region action in your pipeline, you
	// must use artifactStores .
	ArtifactStore *ArtifactStore

	// A mapping of artifactStore objects and their corresponding Amazon Web Services
	// Regions. There must be an artifact store for the pipeline Region and for each
	// cross-region action in the pipeline.
	//
	// You must include either artifactStore or artifactStores in your pipeline, but
	// you cannot use both. If you create a cross-region action in your pipeline, you
	// must use artifactStores .
	ArtifactStores map[string]ArtifactStore

	// The method that the pipeline will use to handle multiple executions. The
	// default mode is SUPERSEDED.
	ExecutionMode ExecutionMode

	// CodePipeline provides the following pipeline types, which differ in
	// characteristics and price, so that you can tailor your pipeline features and
	// cost to the needs of your applications.
	//
	//   - V1 type pipelines have a JSON structure that contains standard pipeline,
	//   stage, and action-level parameters.
	//
	//   - V2 type pipelines have the same structure as a V1 type, along with
	//   additional parameters for release safety and trigger configuration.
	//
	// Including V2 parameters, such as triggers on Git tags, in the pipeline JSON
	// when creating or updating a pipeline will result in the pipeline having the V2
	// type of pipeline and the associated costs.
	//
	// For information about pricing for CodePipeline, see [Pricing].
	//
	// For information about which type of pipeline to choose, see [What type of pipeline is right for me?].
	//
	// [What type of pipeline is right for me?]: https://docs.aws.amazon.com/codepipeline/latest/userguide/pipeline-types-planning.html
	// [Pricing]: http://aws.amazon.com/codepipeline/pricing/
	PipelineType PipelineType

	// The trigger configuration specifying a type of event, such as Git tags, that
	// starts the pipeline.
	//
	// When a trigger configuration is specified, default change detection for
	// repository and branch commits is disabled.
	Triggers []PipelineTriggerDeclaration

	// A list that defines the pipeline variables for a pipeline resource. Variable
	// names can have alphanumeric and underscore characters, and the values must match
	// [A-Za-z0-9@\-_]+ .
	Variables []PipelineVariableDeclaration

	// The version number of the pipeline. A new pipeline always has a version number
	// of 1. This number is incremented when a pipeline is updated.
	Version *int32

	noSmithyDocumentSerde
}

// Represents information about an execution of a pipeline.
type PipelineExecution struct {

	// A list of ArtifactRevision objects included in a pipeline execution.
	ArtifactRevisions []ArtifactRevision

	// The method that the pipeline will use to handle multiple executions. The
	// default mode is SUPERSEDED.
	ExecutionMode ExecutionMode

	// The type of the pipeline execution.
	ExecutionType ExecutionType

	// The ID of the pipeline execution.
	PipelineExecutionId *string

	// The name of the pipeline with the specified pipeline execution.
	PipelineName *string

	// The version number of the pipeline with the specified pipeline execution.
	PipelineVersion *int32

	// The metadata about the execution pertaining to stage rollback.
	RollbackMetadata *PipelineRollbackMetadata

	// The status of the pipeline execution.
	//
	//   - Cancelled: The pipeline’s definition was updated before the pipeline
	//   execution could be completed.
	//
	//   - InProgress: The pipeline execution is currently running.
	//
	//   - Stopped: The pipeline execution was manually stopped. For more information,
	//   see [Stopped Executions].
	//
	//   - Stopping: The pipeline execution received a request to be manually stopped.
	//   Depending on the selected stop mode, the execution is either completing or
	//   abandoning in-progress actions. For more information, see [Stopped Executions].
	//
	//   - Succeeded: The pipeline execution was completed successfully.
	//
	//   - Superseded: While this pipeline execution was waiting for the next stage to
	//   be completed, a newer pipeline execution advanced and continued through the
	//   pipeline instead. For more information, see [Superseded Executions].
	//
	//   - Failed: The pipeline execution was not completed successfully.
	//
	// [Superseded Executions]: https://docs.aws.amazon.com/codepipeline/latest/userguide/concepts.html#concepts-superseded
	// [Stopped Executions]: https://docs.aws.amazon.com/codepipeline/latest/userguide/concepts.html#concepts-executions-stopped
	Status PipelineExecutionStatus

	// A summary that contains a description of the pipeline execution status.
	StatusSummary *string

	// The interaction or event that started a pipeline execution.
	Trigger *ExecutionTrigger

	// A list of pipeline variables used for the pipeline execution.
	Variables []ResolvedPipelineVariable

	noSmithyDocumentSerde
}

// The pipeline execution to filter on.
type PipelineExecutionFilter struct {

	// Filter for pipeline executions where the stage was successful in the current
	// pipeline version.
	SucceededInStage *SucceededInStageFilter

	noSmithyDocumentSerde
}

// Summary information about a pipeline execution.
type PipelineExecutionSummary struct {

	// The method that the pipeline will use to handle multiple executions. The
	// default mode is SUPERSEDED.
	ExecutionMode ExecutionMode

	// Type of the pipeline execution.
	ExecutionType ExecutionType

	// The date and time of the last change to the pipeline execution, in timestamp
	// format.
	LastUpdateTime *time.Time

	// The ID of the pipeline execution.
	PipelineExecutionId *string

	// The metadata for the stage execution to be rolled back.
	RollbackMetadata *PipelineRollbackMetadata

	// A list of the source artifact revisions that initiated a pipeline execution.
	SourceRevisions []SourceRevision

	// The date and time when the pipeline execution began, in timestamp format.
	StartTime *time.Time

	// The status of the pipeline execution.
	//
	//   - InProgress: The pipeline execution is currently running.
	//
	//   - Stopped: The pipeline execution was manually stopped. For more information,
	//   see [Stopped Executions].
	//
	//   - Stopping: The pipeline execution received a request to be manually stopped.
	//   Depending on the selected stop mode, the execution is either completing or
	//   abandoning in-progress actions. For more information, see [Stopped Executions].
	//
	//   - Succeeded: The pipeline execution was completed successfully.
	//
	//   - Superseded: While this pipeline execution was waiting for the next stage to
	//   be completed, a newer pipeline execution advanced and continued through the
	//   pipeline instead. For more information, see [Superseded Executions].
	//
	//   - Failed: The pipeline execution was not completed successfully.
	//
	// [Superseded Executions]: https://docs.aws.amazon.com/codepipeline/latest/userguide/concepts.html#concepts-superseded
	// [Stopped Executions]: https://docs.aws.amazon.com/codepipeline/latest/userguide/concepts.html#concepts-executions-stopped
	Status PipelineExecutionStatus

	// Status summary for the pipeline.
	StatusSummary *string

	// The interaction that stopped a pipeline execution.
	StopTrigger *StopExecutionTrigger

	// The interaction or event that started a pipeline execution, such as automated
	// change detection or a StartPipelineExecution API call.
	Trigger *ExecutionTrigger

	noSmithyDocumentSerde
}

// Information about a pipeline.
type PipelineMetadata struct {

	// The date and time the pipeline was created, in timestamp format.
	Created *time.Time

	// The Amazon Resource Name (ARN) of the pipeline.
	PipelineArn *string

	// The date and time that polling for source changes (periodic checks) was stopped
	// for the pipeline, in timestamp format.
	//
	// Pipelines that are inactive for longer than 30 days will have polling disabled
	// for the pipeline. For more information, see [pollingDisabledAt]in the pipeline structure
	// reference. For the steps to migrate your pipeline from polling to event-based
	// change detection, see [Migrate polling pipelines to use event-based change detection].
	//
	// You can migrate (update) a polling pipeline to use event-based change
	// detection. For example, for a pipeline with a CodeCommit source, we recommend
	// you migrate (update) your pipeline to use CloudWatch Events. To learn more, see [Migrate polling pipelines to use event-based change detection]
	// in the CodePipeline User Guide.
	//
	// [Migrate polling pipelines to use event-based change detection]: https://docs.aws.amazon.com/codepipeline/latest/userguide/update-change-detection.html
	// [pollingDisabledAt]: https://docs.aws.amazon.com/codepipeline/latest/userguide/reference-pipeline-structure.html#metadata.pollingDisabledAt
	PollingDisabledAt *time.Time

	// The date and time the pipeline was last updated, in timestamp format.
	Updated *time.Time

	noSmithyDocumentSerde
}

// The metadata for the stage execution to be rolled back.
type PipelineRollbackMetadata struct {

	// The pipeline execution ID to which the stage will be rolled back.
	RollbackTargetPipelineExecutionId *string

	noSmithyDocumentSerde
}

// Returns a summary of a pipeline.
type PipelineSummary struct {

	// The date and time the pipeline was created, in timestamp format.
	Created *time.Time

	// The method that the pipeline will use to handle multiple executions. The
	// default mode is SUPERSEDED.
	ExecutionMode ExecutionMode

	// The name of the pipeline.
	Name *string

	// CodePipeline provides the following pipeline types, which differ in
	// characteristics and price, so that you can tailor your pipeline features and
	// cost to the needs of your applications.
	//
	//   - V1 type pipelines have a JSON structure that contains standard pipeline,
	//   stage, and action-level parameters.
	//
	//   - V2 type pipelines have the same structure as a V1 type, along with
	//   additional parameters for release safety and trigger configuration.
	//
	// Including V2 parameters, such as triggers on Git tags, in the pipeline JSON
	// when creating or updating a pipeline will result in the pipeline having the V2
	// type of pipeline and the associated costs.
	//
	// For information about pricing for CodePipeline, see [Pricing].
	//
	// For information about which type of pipeline to choose, see [What type of pipeline is right for me?].
	//
	// [What type of pipeline is right for me?]: https://docs.aws.amazon.com/codepipeline/latest/userguide/pipeline-types-planning.html
	// [Pricing]: http://aws.amazon.com/codepipeline/pricing/
	PipelineType PipelineType

	// The date and time of the last update to the pipeline, in timestamp format.
	Updated *time.Time

	// The version number of the pipeline.
	Version *int32

	noSmithyDocumentSerde
}

// Represents information about the specified trigger configuration, such as the
// filter criteria and the source stage for the action that contains the trigger.
//
// This is only supported for the CodeStarSourceConnection action type.
//
// When a trigger configuration is specified, default change detection for
// repository and branch commits is disabled.
type PipelineTriggerDeclaration struct {

	// Provides the filter criteria and the source stage for the repository event that
	// starts the pipeline, such as Git tags.
	//
	// This member is required.
	GitConfiguration *GitConfiguration

	// The source provider for the event, such as connections configured for a
	// repository with Git tags, for the specified trigger configuration.
	//
	// This member is required.
	ProviderType PipelineTriggerProviderType

	noSmithyDocumentSerde
}

// A pipeline-level variable used for a pipeline execution.
type PipelineVariable struct {

	// The name of a pipeline-level variable.
	//
	// This member is required.
	Name *string

	// The value of a pipeline-level variable.
	//
	// This member is required.
	Value *string

	noSmithyDocumentSerde
}

// A variable declared at the pipeline level.
type PipelineVariableDeclaration struct {

	// The name of a pipeline-level variable.
	//
	// This member is required.
	Name *string

	// The value of a pipeline-level variable.
	DefaultValue *string

	// The description of a pipeline-level variable. It's used to add additional
	// context about the variable, and not being used at time when pipeline executes.
	Description *string

	noSmithyDocumentSerde
}

// A pipeline-level variable used for a pipeline execution.
type ResolvedPipelineVariable struct {

	// The name of a pipeline-level variable.
	Name *string

	// The resolved value of a pipeline-level variable.
	ResolvedValue *string

	noSmithyDocumentSerde
}

// The retry configuration specifies automatic retry for a failed stage, along
// with the configured retry mode.
type RetryConfiguration struct {

	// The method that you want to configure for automatic stage retry on stage
	// failure. You can specify to retry only failed action in the stage or all actions
	// in the stage.
	RetryMode StageRetryMode

	noSmithyDocumentSerde
}

// The details of a specific automatic retry on stage failure, including the
// attempt number and trigger.
type RetryStageMetadata struct {

	// The number of attempts for a specific stage with automatic retry on stage
	// failure. One attempt is allowed for automatic stage retry on failure.
	AutoStageRetryAttempt *int32

	// The latest trigger for a specific stage where manual or automatic retries have
	// been made upon stage failure.
	LatestRetryTrigger RetryTrigger

	// The number of attempts for a specific stage where manual retries have been made
	// upon stage failure.
	ManualStageRetryAttempt *int32

	noSmithyDocumentSerde
}

// Represents information about a rule configuration property.
type RuleConfigurationProperty struct {

	// Whether the configuration property is a key.
	//
	// This member is required.
	Key bool

	// The name of the rule configuration property.
	//
	// This member is required.
	Name *string

	// Whether the configuration property is a required value.
	//
	// This member is required.
	Required bool

	// Whether the configuration property is secret.
	//
	// When updating a pipeline, passing * * * * * without changing any other values
	// of the action preserves the previous value of the secret.
	//
	// This member is required.
	Secret bool

	// The description of the action configuration property that is displayed to users.
	Description *string

	// Indicates whether the property can be queried.
	//
	// If you create a pipeline with a condition and rule, and that rule contains a
	// queryable property, the value for that configuration property is subject to
	// other restrictions. The value must be less than or equal to twenty (20)
	// characters. The value can contain only alphanumeric characters, underscores, and
	// hyphens.
	Queryable bool

	// The type of the configuration property.
	Type RuleConfigurationPropertyType

	noSmithyDocumentSerde
}

// Represents information about the rule to be created for an associated
// condition. An example would be creating a new rule for an entry condition, such
// as a rule that checks for a test result before allowing the run to enter the
// deployment stage. For more information about conditions, see [Stage conditions]and [How do stage conditions work?]. For more
// information about rules, see the [CodePipeline rule reference].
//
// [Stage conditions]: https://docs.aws.amazon.com/codepipeline/latest/userguide/stage-conditions.html
// [How do stage conditions work?]: https://docs.aws.amazon.com/codepipeline/latest/userguide/concepts-how-it-works-conditions.html
// [CodePipeline rule reference]: https://docs.aws.amazon.com/codepipeline/latest/userguide/rule-reference.html
type RuleDeclaration struct {

	// The name of the rule that is created for the condition, such as VariableCheck .
	//
	// This member is required.
	Name *string

	// The ID for the rule type, which is made up of the combined values for category,
	// owner, provider, and version.
	//
	// This member is required.
	RuleTypeId *RuleTypeId

	// The shell commands to run with your commands rule in CodePipeline. All commands
	// are supported except multi-line formats. While CodeBuild logs and permissions
	// are used, you do not need to create any resources in CodeBuild.
	//
	// Using compute time for this action will incur separate charges in CodeBuild.
	Commands []string

	// The action configuration fields for the rule.
	Configuration map[string]string

	// The input artifacts fields for the rule, such as specifying an input file for
	// the rule.
	InputArtifacts []InputArtifact

	// The Region for the condition associated with the rule.
	Region *string

	// The pipeline role ARN associated with the rule.
	RoleArn *string

	// The action timeout for the rule.
	TimeoutInMinutes *int32

	noSmithyDocumentSerde
}

// Represents information about each time a rule is run as part of the pipeline
// execution for a pipeline configured with conditions.
type RuleExecution struct {

	// Represents information about an error in CodePipeline.
	ErrorDetails *ErrorDetails

	// The external ID of the run of the rule.
	ExternalExecutionId *string

	// The URL of a resource external to Amazon Web Services that is used when running
	// the rule (for example, an external repository URL).
	ExternalExecutionUrl *string

	// The last status change of the rule.
	LastStatusChange *time.Time

	// The ARN of the user who last changed the rule.
	LastUpdatedBy *string

	// The execution ID for the run of the rule.
	RuleExecutionId *string

	// The status of the run of the rule, such as FAILED.
	Status RuleExecutionStatus

	// A summary of the run of the rule.
	Summary *string

	// The system-generated token used to identify a unique request.
	Token *string

	noSmithyDocumentSerde
}

// The details of the runs for a rule and the results produced on an artifact as
// it passes through stages in the pipeline.
type RuleExecutionDetail struct {

	// Input details for the rule execution, such as role ARN, Region, and input
	// artifacts.
	Input *RuleExecutionInput

	// The date and time of the last change to the rule execution, in timestamp format.
	LastUpdateTime *time.Time

	// Output details for the rule execution, such as the rule execution result.
	Output *RuleExecutionOutput

	// The ID of the pipeline execution in the stage where the rule was run. Use the GetPipelineState
	// action to retrieve the current pipelineExecutionId of the stage.
	PipelineExecutionId *string

	// The version number of the pipeline with the stage where the rule was run.
	PipelineVersion *int32

	// The ID of the run for the rule.
	RuleExecutionId *string

	// The name of the rule that was run in the stage.
	RuleName *string

	// The name of the stage where the rule was run.
	StageName *string

	// The start time of the rule execution.
	StartTime *time.Time

	// The status of the rule execution. Status categories are InProgress , Succeeded ,
	// and Failed .
	Status RuleExecutionStatus

	// The ARN of the user who changed the rule execution details.
	UpdatedBy *string

	noSmithyDocumentSerde
}

// Filter values for the rule execution.
type RuleExecutionFilter struct {

	// The field that specifies to filter on the latest execution in the pipeline.
	//
	// Filtering on the latest execution is available for executions run on or after
	// February 08, 2024.
	LatestInPipelineExecution *LatestInPipelineExecutionFilter

	// The pipeline execution ID used to filter rule execution history.
	PipelineExecutionId *string

	noSmithyDocumentSerde
}

// Input information used for a rule execution.
type RuleExecutionInput struct {

	// Configuration data for a rule execution, such as the resolved values for that
	// run.
	Configuration map[string]string

	// Details of input artifacts of the rule that correspond to the rule execution.
	InputArtifacts []ArtifactDetail

	// The Amazon Web Services Region for the rule, such as us-east-1.
	Region *string

	// Configuration data for a rule execution with all variable references replaced
	// with their real values for the execution.
	ResolvedConfiguration map[string]string

	// The ARN of the IAM service role that performs the declared rule. This is
	// assumed through the roleArn for the pipeline.
	RoleArn *string

	// The ID for the rule type, which is made up of the combined values for category,
	// owner, provider, and version. For more information about conditions, see [Stage conditions]. For
	// more information about rules, see the [CodePipeline rule reference].
	//
	// [Stage conditions]: https://docs.aws.amazon.com/codepipeline/latest/userguide/stage-conditions.html
	// [CodePipeline rule reference]: https://docs.aws.amazon.com/codepipeline/latest/userguide/rule-reference.html
	RuleTypeId *RuleTypeId

	noSmithyDocumentSerde
}

// Output details listed for a rule execution, such as the rule execution result.
type RuleExecutionOutput struct {

	// Execution result information listed in the output details for a rule execution.
	ExecutionResult *RuleExecutionResult

	noSmithyDocumentSerde
}

// Execution result information, such as the external execution ID.
type RuleExecutionResult struct {

	// Represents information about an error in CodePipeline.
	ErrorDetails *ErrorDetails

	// The external ID for the rule execution.
	ExternalExecutionId *string

	// The external provider summary for the rule execution.
	ExternalExecutionSummary *string

	// The deepest external link to the external resource (for example, a repository
	// URL or deployment endpoint) that is used when running the rule.
	ExternalExecutionUrl *string

	noSmithyDocumentSerde
}

// The change to a rule that creates a revision of the rule.
type RuleRevision struct {

	// The date and time when the most recent version of the rule was created, in
	// timestamp format.
	//
	// This member is required.
	Created *time.Time

	// The unique identifier of the change that set the state to this revision (for
	// example, a deployment ID or timestamp).
	//
	// This member is required.
	RevisionChangeId *string

	// The system-generated unique ID that identifies the revision number of the rule.
	//
	// This member is required.
	RevisionId *string

	noSmithyDocumentSerde
}

// Returns information about the state of a rule.
//
// Values returned in the revisionId field indicate the rule revision information,
// such as the commit ID, for the current state.
type RuleState struct {

	// The ID of the current revision of the artifact successfully worked on by the
	// job.
	CurrentRevision *RuleRevision

	// A URL link for more information about the state of the action, such as a
	// details page.
	EntityUrl *string

	// Represents information about the latest run of an rule.
	LatestExecution *RuleExecution

	// A URL link for more information about the revision, such as a commit details
	// page.
	RevisionUrl *string

	// The name of the rule.
	RuleName *string

	noSmithyDocumentSerde
}

// The rule type, which is made up of the combined values for category, owner,
// provider, and version.
type RuleType struct {

	// Represents information about a rule type.
	//
	// This member is required.
	Id *RuleTypeId

	// Returns information about the details of an artifact.
	//
	// This member is required.
	InputArtifactDetails *ArtifactDetails

	// The configuration properties for the rule type.
	RuleConfigurationProperties []RuleConfigurationProperty

	// Returns information about the settings for a rule type.
	Settings *RuleTypeSettings

	noSmithyDocumentSerde
}

// The ID for the rule type, which is made up of the combined values for category,
// owner, provider, and version. For more information about conditions, see [Stage conditions]. For
// more information about rules, see the [CodePipeline rule reference].
//
// [Stage conditions]: https://docs.aws.amazon.com/codepipeline/latest/userguide/stage-conditions.html
// [CodePipeline rule reference]: https://docs.aws.amazon.com/codepipeline/latest/userguide/rule-reference.html
type RuleTypeId struct {

	// A category defines what kind of rule can be run in the stage, and constrains
	// the provider type for the rule. The valid category is Rule .
	//
	// This member is required.
	Category RuleCategory

	// The rule provider, such as the DeploymentWindow rule. For a list of rule
	// provider names, see the rules listed in the [CodePipeline rule reference].
	//
	// [CodePipeline rule reference]: https://docs.aws.amazon.com/codepipeline/latest/userguide/rule-reference.html
	//
	// This member is required.
	Provider *string

	// The creator of the rule being called. The valid value for the Owner field in
	// the rule category is AWS .
	Owner RuleOwner

	// A string that describes the rule version.
	Version *string

	noSmithyDocumentSerde
}

// Returns information about the settings for a rule type.
type RuleTypeSettings struct {

	// The URL returned to the CodePipeline console that provides a deep link to the
	// resources of the external system, such as the configuration page for a
	// CodeDeploy deployment group. This link is provided as part of the action display
	// in the pipeline.
	EntityUrlTemplate *string

	// The URL returned to the CodePipeline console that contains a link to the
	// top-level landing page for the external system, such as the console page for
	// CodeDeploy. This link is shown on the pipeline view page in the CodePipeline
	// console and provides a link to the execution entity of the external action.
	ExecutionUrlTemplate *string

	// The URL returned to the CodePipeline console that contains a link to the page
	// where customers can update or change the configuration of the external action.
	RevisionUrlTemplate *string

	// The URL of a sign-up page where users can sign up for an external service and
	// perform initial configuration of the action provided by that service.
	ThirdPartyConfigurationUrl *string

	noSmithyDocumentSerde
}

// The location of the S3 bucket that contains a revision.
type S3ArtifactLocation struct {

	// The name of the S3 bucket.
	//
	// This member is required.
	BucketName *string

	// The key of the object in the S3 bucket, which uniquely identifies the object in
	// the bucket.
	//
	// This member is required.
	ObjectKey *string

	noSmithyDocumentSerde
}

// The Amazon S3 artifact location for an action's artifacts.
type S3Location struct {

	// The Amazon S3 artifact bucket for an action's artifacts.
	Bucket *string

	// The artifact name.
	Key *string

	noSmithyDocumentSerde
}

// Information about the version (or revision) of a source artifact that initiated
// a pipeline execution.
type SourceRevision struct {

	// The name of the action that processed the revision to the source artifact.
	//
	// This member is required.
	ActionName *string

	// The system-generated unique ID that identifies the revision number of the
	// artifact.
	RevisionId *string

	// Summary information about the most recent revision of the artifact. For GitHub
	// and CodeCommit repositories, the commit message. For Amazon S3 buckets or
	// actions, the user-provided content of a codepipeline-artifact-revision-summary
	// key specified in the object metadata.
	RevisionSummary *string

	// The commit ID for the artifact revision. For artifacts stored in GitHub or
	// CodeCommit repositories, the commit ID is linked to a commit details page.
	RevisionUrl *string

	noSmithyDocumentSerde
}

// A list that allows you to specify, or override, the source revision for a
// pipeline execution that's being started. A source revision is the version with
// all the changes to your application code, or source artifact, for the pipeline
// execution.
//
// For the S3_OBJECT_VERSION_ID and S3_OBJECT_KEY types of source revisions,
// either of the types can be used independently, or they can be used together to
// override the source with a specific ObjectKey and VersionID.
type SourceRevisionOverride struct {

	// The name of the action where the override will be applied.
	//
	// This member is required.
	ActionName *string

	// The type of source revision, based on the source provider. For example, the
	// revision type for the CodeCommit action provider is the commit ID.
	//
	// This member is required.
	RevisionType SourceRevisionType

	// The source revision, or version of your source artifact, with the changes that
	// you want to run in the pipeline execution.
	//
	// This member is required.
	RevisionValue *string

	noSmithyDocumentSerde
}

// Represents information about the run of a condition for a stage.
type StageConditionsExecution struct {

	// The status of a run of a condition for a stage.
	Status ConditionExecutionStatus

	// A summary of the run of the condition for a stage.
	Summary *string

	noSmithyDocumentSerde
}

// The state of a run of a condition for a stage.
type StageConditionState struct {

	// The states of the conditions for a run of a condition for a stage.
	ConditionStates []ConditionState

	// Represents information about the latest run of a condition for a stage.
	LatestExecution *StageConditionsExecution

	noSmithyDocumentSerde
}

// Represents information about a stage to a job worker.
type StageContext struct {

	// The name of the stage.
	Name *string

	noSmithyDocumentSerde
}

// Represents information about a stage and its definition.
type StageDeclaration struct {

	// The actions included in a stage.
	//
	// This member is required.
	Actions []ActionDeclaration

	// The name of the stage.
	//
	// This member is required.
	Name *string

	// The method to use when a stage allows entry. For example, configuring this
	// field for conditions will allow entry to the stage when the conditions are met.
	BeforeEntry *BeforeEntryConditions

	// Reserved for future use.
	Blockers []BlockerDeclaration

	// The method to use when a stage has not completed successfully. For example,
	// configuring this field for rollback will roll back a failed stage automatically
	// to the last successful pipeline execution in the stage.
	OnFailure *FailureConditions

	// The method to use when a stage has succeeded. For example, configuring this
	// field for conditions will allow the stage to succeed when the conditions are
	// met.
	OnSuccess *SuccessConditions

	noSmithyDocumentSerde
}

// Represents information about the run of a stage.
type StageExecution struct {

	// The ID of the pipeline execution associated with the stage.
	//
	// This member is required.
	PipelineExecutionId *string

	// The status of the stage, or for a completed stage, the last status of the stage.
	//
	// A status of cancelled means that the pipeline’s definition was updated before
	// the stage execution could be completed.
	//
	// This member is required.
	Status StageExecutionStatus

	// The type of pipeline execution for the stage, such as a rollback pipeline
	// execution.
	Type ExecutionType

	noSmithyDocumentSerde
}

// Represents information about the state of the stage.
type StageState struct {

	// The state of the stage.
	ActionStates []ActionState

	// The state of the entry conditions for a stage.
	BeforeEntryConditionState *StageConditionState

	// Represents information about the run of a stage.
	InboundExecution *StageExecution

	// The inbound executions for a stage.
	InboundExecutions []StageExecution

	// The state of the inbound transition, which is either enabled or disabled.
	InboundTransitionState *TransitionState

	// Information about the latest execution in the stage, including its ID and
	// status.
	LatestExecution *StageExecution

	// The state of the failure conditions for a stage.
	OnFailureConditionState *StageConditionState

	// The state of the success conditions for a stage.
	OnSuccessConditionState *StageConditionState

	// he details of a specific automatic retry on stage failure, including the
	// attempt number and trigger.
	RetryStageMetadata *RetryStageMetadata

	// The name of the stage.
	StageName *string

	noSmithyDocumentSerde
}

// The interaction that stopped a pipeline execution.
type StopExecutionTrigger struct {

	// The user-specified reason the pipeline was stopped.
	Reason *string

	noSmithyDocumentSerde
}

// Filter for pipeline executions that have successfully completed the stage in
// the current pipeline version.
type SucceededInStageFilter struct {

	// The name of the stage for filtering for pipeline executions where the stage was
	// successful in the current pipeline version.
	StageName *string

	noSmithyDocumentSerde
}

// The conditions for making checks that, if met, succeed a stage. For more
// information about conditions, see [Stage conditions]and [How do stage conditions work?].
//
// [Stage conditions]: https://docs.aws.amazon.com/codepipeline/latest/userguide/stage-conditions.html
// [How do stage conditions work?]: https://docs.aws.amazon.com/codepipeline/latest/userguide/concepts-how-it-works-conditions.html
type SuccessConditions struct {

	// The conditions that are success conditions.
	//
	// This member is required.
	Conditions []Condition

	noSmithyDocumentSerde
}

// A tag is a key-value pair that is used to manage the resource.
type Tag struct {

	// The tag's key.
	//
	// This member is required.
	Key *string

	// The tag's value.
	//
	// This member is required.
	Value *string

	noSmithyDocumentSerde
}

// Filters the list of targets.
type TargetFilter struct {

	// The name on which to filter.
	Name TargetFilterName

	// The values on which to filter.
	Values []string

	noSmithyDocumentSerde
}

// A response to a PollForThirdPartyJobs request returned by CodePipeline when
// there is a job to be worked on by a partner action.
type ThirdPartyJob struct {

	// The clientToken portion of the clientId and clientToken pair used to verify
	// that the calling entity is allowed access to the job and its details.
	ClientId *string

	// The identifier used to identify the job in CodePipeline.
	JobId *string

	noSmithyDocumentSerde
}

// Represents information about the job data for a partner action.
type ThirdPartyJobData struct {

	// Represents information about an action configuration.
	ActionConfiguration *ActionConfiguration

	// Represents information about an action type.
	ActionTypeId *ActionTypeId

	// Represents an Amazon Web Services session credentials object. These credentials
	// are temporary credentials that are issued by Amazon Web Services Secure Token
	// Service (STS). They can be used to access input and output artifacts in the S3
	// bucket used to store artifact for the pipeline in CodePipeline.
	ArtifactCredentials *AWSSessionCredentials

	// A system-generated token, such as a CodeDeploy deployment ID, that a job
	// requires to continue the job asynchronously.
	ContinuationToken *string

	// The encryption key used to encrypt and decrypt data in the artifact store for
	// the pipeline, such as an Amazon Web Services Key Management Service (Amazon Web
	// Services KMS) key. This is optional and might not be present.
	EncryptionKey *EncryptionKey

	// The name of the artifact that is worked on by the action, if any. This name
	// might be system-generated, such as "MyApp", or it might be defined by the user
	// when the action is created. The input artifact name must match the name of an
	// output artifact generated by an action in an earlier action or stage of the
	// pipeline.
	InputArtifacts []Artifact

	// The name of the artifact that is the result of the action, if any. This name
	// might be system-generated, such as "MyBuiltApp", or it might be defined by the
	// user when the action is created.
	OutputArtifacts []Artifact

	// Represents information about a pipeline to a job worker.
	//
	// Does not include pipelineArn and pipelineExecutionId for ThirdParty jobs.
	PipelineContext *PipelineContext

	noSmithyDocumentSerde
}

// The details of a job sent in response to a GetThirdPartyJobDetails request.
type ThirdPartyJobDetails struct {

	// The data to be returned by the third party job worker.
	Data *ThirdPartyJobData

	// The identifier used to identify the job details in CodePipeline.
	Id *string

	// A system-generated random number that CodePipeline uses to ensure that the job
	// is being worked on by only one job worker. Use this number in an AcknowledgeThirdPartyJobrequest.
	Nonce *string

	noSmithyDocumentSerde
}

// Represents information about the state of transitions between one stage and
// another stage.
type TransitionState struct {

	// The user-specified reason why the transition between two stages of a pipeline
	// was disabled.
	DisabledReason *string

	// Whether the transition between stages is enabled (true) or disabled (false).
	Enabled bool

	// The timestamp when the transition state was last changed.
	LastChangedAt *time.Time

	// The ID of the user who last changed the transition state.
	LastChangedBy *string

	noSmithyDocumentSerde
}

// The authentication applied to incoming webhook trigger requests.
type WebhookAuthConfiguration struct {

	// The property used to configure acceptance of webhooks in an IP address range.
	// For IP, only the AllowedIPRange property must be set. This property must be set
	// to a valid CIDR range.
	AllowedIPRange *string

	// The property used to configure GitHub authentication. For GITHUB_HMAC, only the
	// SecretToken property must be set.
	//
	// When creating CodePipeline webhooks, do not use your own credentials or reuse
	// the same secret token across multiple webhooks. For optimal security, generate a
	// unique secret token for each webhook you create. The secret token is an
	// arbitrary string that you provide, which GitHub uses to compute and sign the
	// webhook payloads sent to CodePipeline, for protecting the integrity and
	// authenticity of the webhook payloads. Using your own credentials or reusing the
	// same token across multiple webhooks can lead to security vulnerabilities.
	//
	// If a secret token was provided, it will be redacted in the response.
	SecretToken *string

	noSmithyDocumentSerde
}

// Represents information about a webhook and its definition.
type WebhookDefinition struct {

	// Supported options are GITHUB_HMAC, IP, and UNAUTHENTICATED.
	//
	// When creating CodePipeline webhooks, do not use your own credentials or reuse
	// the same secret token across multiple webhooks. For optimal security, generate a
	// unique secret token for each webhook you create. The secret token is an
	// arbitrary string that you provide, which GitHub uses to compute and sign the
	// webhook payloads sent to CodePipeline, for protecting the integrity and
	// authenticity of the webhook payloads. Using your own credentials or reusing the
	// same token across multiple webhooks can lead to security vulnerabilities.
	//
	// If a secret token was provided, it will be redacted in the response.
	//
	//   - For information about the authentication scheme implemented by GITHUB_HMAC,
	//   see [Securing your webhooks]on the GitHub Developer website.
	//
	//   - IP rejects webhooks trigger requests unless they originate from an IP
	//   address in the IP range whitelisted in the authentication configuration.
	//
	//   - UNAUTHENTICATED accepts all webhook trigger requests regardless of origin.
	//
	// [Securing your webhooks]: https://developer.github.com/webhooks/securing/
	//
	// This member is required.
	Authentication WebhookAuthenticationType

	// Properties that configure the authentication applied to incoming webhook
	// trigger requests. The required properties depend on the authentication type. For
	// GITHUB_HMAC, only the SecretToken property must be set. For IP, only the
	// AllowedIPRange property must be set to a valid CIDR range. For UNAUTHENTICATED,
	// no properties can be set.
	//
	// This member is required.
	AuthenticationConfiguration *WebhookAuthConfiguration

	// A list of rules applied to the body/payload sent in the POST request to a
	// webhook URL. All defined rules must pass for the request to be accepted and the
	// pipeline started.
	//
	// This member is required.
	Filters []WebhookFilterRule

	// The name of the webhook.
	//
	// This member is required.
	Name *string

	// The name of the action in a pipeline you want to connect to the webhook. The
	// action must be from the source (first) stage of the pipeline.
	//
	// This member is required.
	TargetAction *string

	// The name of the pipeline you want to connect to the webhook.
	//
	// This member is required.
	TargetPipeline *string

	noSmithyDocumentSerde
}

// The event criteria that specify when a webhook notification is sent to your URL.
type WebhookFilterRule struct {

	// A JsonPath expression that is applied to the body/payload of the webhook. The
	// value selected by the JsonPath expression must match the value specified in the
	// MatchEquals field. Otherwise, the request is ignored. For more information, see [Java JsonPath implementation]
	// in GitHub.
	//
	// [Java JsonPath implementation]: https://github.com/json-path/JsonPath
	//
	// This member is required.
	JsonPath *string

	// The value selected by the JsonPath expression must match what is supplied in
	// the MatchEquals field. Otherwise, the request is ignored. Properties from the
	// target action configuration can be included as placeholders in this value by
	// surrounding the action configuration key with curly brackets. For example, if
	// the value supplied here is "refs/heads/{Branch}" and the target action has an
	// action configuration property called "Branch" with a value of "main", the
	// MatchEquals value is evaluated as "refs/heads/main". For a list of action
	// configuration properties for built-in action types, see [Pipeline Structure Reference Action Requirements].
	//
	// [Pipeline Structure Reference Action Requirements]: https://docs.aws.amazon.com/codepipeline/latest/userguide/reference-pipeline-structure.html#action-requirements
	MatchEquals *string

	noSmithyDocumentSerde
}

type noSmithyDocumentSerde = smithydocument.NoSerde
