# frozen_string_literal: true

# Copyright 2021 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

# Auto-generated by gapic-generator-ruby. DO NOT EDIT!


module Google
  module Cloud
    module Deploy
      module V1
        # A `DeliveryPipeline` resource in the Google Cloud Deploy API.
        #
        # A `DeliveryPipeline` defines a pipeline through which a Skaffold
        # configuration can progress.
        # @!attribute [rw] name
        #   @return [::String]
        #     Optional. Name of the `DeliveryPipeline`. Format is projects/\\{project}/
        #     locations/\\{location}/deliveryPipelines/[a-z][a-z0-9\-]\\{0,62}.
        # @!attribute [r] uid
        #   @return [::String]
        #     Output only. Unique identifier of the `DeliveryPipeline`.
        # @!attribute [rw] description
        #   @return [::String]
        #     Description of the `DeliveryPipeline`. Max length is 255 characters.
        # @!attribute [rw] annotations
        #   @return [::Google::Protobuf::Map{::String => ::String}]
        #     User annotations. These attributes can only be set and used by the
        #     user, and not by Google Cloud Deploy. See
        #     https://google.aip.dev/128#annotations for more details such as format and
        #     size limitations.
        # @!attribute [rw] labels
        #   @return [::Google::Protobuf::Map{::String => ::String}]
        #     Labels are attributes that can be set and used by both the
        #     user and by Google Cloud Deploy. Labels must meet the following
        #     constraints: Each resource is limited to 64 labels. Keys must conform to
        #     the regexp: [a-zA-Z][a-zA-Z0-9_-]\\{0,62} Values must conform to the regexp:
        #     [a-zA-Z0-9_-]\\{0,63} Both keys and values are additionally constrained to be
        #     <= 128 bytes in size.
        # @!attribute [r] create_time
        #   @return [::Google::Protobuf::Timestamp]
        #     Output only. Time at which the pipeline was created.
        # @!attribute [r] update_time
        #   @return [::Google::Protobuf::Timestamp]
        #     Output only. Most recent time at which the pipeline was updated.
        # @!attribute [rw] serial_pipeline
        #   @return [::Google::Cloud::Deploy::V1::SerialPipeline]
        #     SerialPipeline defines a sequential set of stages for a
        #     `DeliveryPipeline`.
        # @!attribute [r] condition
        #   @return [::Google::Cloud::Deploy::V1::PipelineCondition]
        #     Output only. Information around the state of the Delivery Pipeline.
        # @!attribute [rw] etag
        #   @return [::String]
        #     This checksum is computed by the server based on the value of other
        #     fields, and may be sent on update and delete requests to ensure the
        #     client has an up-to-date value before proceeding.
        class DeliveryPipeline
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods

          # @!attribute [rw] key
          #   @return [::String]
          # @!attribute [rw] value
          #   @return [::String]
          class AnnotationsEntry
            include ::Google::Protobuf::MessageExts
            extend ::Google::Protobuf::MessageExts::ClassMethods
          end

          # @!attribute [rw] key
          #   @return [::String]
          # @!attribute [rw] value
          #   @return [::String]
          class LabelsEntry
            include ::Google::Protobuf::MessageExts
            extend ::Google::Protobuf::MessageExts::ClassMethods
          end
        end

        # SerialPipeline defines a sequential set of stages for a `DeliveryPipeline`.
        # @!attribute [rw] stages
        #   @return [::Array<::Google::Cloud::Deploy::V1::Stage>]
        #     Each stage specifies configuration for a `Target`. The ordering
        #     of this list defines the promotion flow.
        class SerialPipeline
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # Stage specifies a location to which to deploy.
        # @!attribute [rw] target_id
        #   @return [::String]
        #     The target_id to which this stage points. This field refers exclusively to
        #     the last segment of a target name. For example, this field would just be
        #     `my-target` (rather than
        #     `projects/project/deliveryPipelines/pipeline/targets/my-target`). The
        #     parent `DeliveryPipeline` of the `Target` is inferred to be the parent
        #     `DeliveryPipeline` of the `Release` in which this `Stage` lives.
        # @!attribute [rw] profiles
        #   @return [::Array<::String>]
        #     Skaffold profiles to use when rendering the manifest for this stage's
        #     `Target`.
        class Stage
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # PipelineReadyCondition contains information around the status of the
        # Pipeline.
        # @!attribute [rw] status
        #   @return [::Boolean]
        #     True if the Pipeline is in a valid state. Otherwise at least one condition
        #     in `PipelineCondition` is in an invalid state. Iterate over those
        #     conditions and see which condition(s) has status = false to find out what
        #     is wrong with the Pipeline.
        # @!attribute [rw] update_time
        #   @return [::Google::Protobuf::Timestamp]
        #     Last time the condition was updated.
        class PipelineReadyCondition
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # TargetsPresentCondition contains information on any Targets defined in
        # the Delivery Pipeline that do not actually exist.
        # @!attribute [rw] status
        #   @return [::Boolean]
        #     True if there aren't any missing Targets.
        # @!attribute [rw] missing_targets
        #   @return [::Array<::String>]
        #     The list of Target names that are missing. For example,
        #     projects/\\{project_id}/locations/\\{location_name}/targets/\\{target_name}.
        # @!attribute [rw] update_time
        #   @return [::Google::Protobuf::Timestamp]
        #     Last time the condition was updated.
        class TargetsPresentCondition
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # PipelineCondition contains all conditions relevant to a Delivery Pipeline.
        # @!attribute [rw] pipeline_ready_condition
        #   @return [::Google::Cloud::Deploy::V1::PipelineReadyCondition]
        #     Details around the Pipeline's overall status.
        # @!attribute [rw] targets_present_condition
        #   @return [::Google::Cloud::Deploy::V1::TargetsPresentCondition]
        #     Detalis around targets enumerated in the pipeline.
        class PipelineCondition
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # The request object for `ListDeliveryPipelines`.
        # @!attribute [rw] parent
        #   @return [::String]
        #     Required. The parent, which owns this collection of pipelines. Format must be
        #     projects/\\{project_id}/locations/\\{location_name}.
        # @!attribute [rw] page_size
        #   @return [::Integer]
        #     The maximum number of pipelines to return. The service may return
        #     fewer than this value. If unspecified, at most 50 pipelines will
        #     be returned. The maximum value is 1000; values above 1000 will be set
        #     to 1000.
        # @!attribute [rw] page_token
        #   @return [::String]
        #     A page token, received from a previous `ListDeliveryPipelines` call.
        #     Provide this to retrieve the subsequent page.
        #
        #     When paginating, all other provided parameters match
        #     the call that provided the page token.
        # @!attribute [rw] filter
        #   @return [::String]
        #     Filter builds to be returned. See https://google.aip.dev/160 for more
        #     details.
        # @!attribute [rw] order_by
        #   @return [::String]
        #     Field to sort by. See https://google.aip.dev/132#ordering for more details.
        class ListDeliveryPipelinesRequest
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # The response object from `ListDeliveryPipelines`.
        # @!attribute [rw] delivery_pipelines
        #   @return [::Array<::Google::Cloud::Deploy::V1::DeliveryPipeline>]
        #     The `DeliveryPipeline` objects.
        # @!attribute [rw] next_page_token
        #   @return [::String]
        #     A token, which can be sent as `page_token` to retrieve the next page.
        #     If this field is omitted, there are no subsequent pages.
        # @!attribute [rw] unreachable
        #   @return [::Array<::String>]
        #     Locations that could not be reached.
        class ListDeliveryPipelinesResponse
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # The request object for `GetDeliveryPipeline`
        # @!attribute [rw] name
        #   @return [::String]
        #     Required. Name of the `DeliveryPipeline`. Format must be
        #     projects/\\{project_id}/locations/\\{location_name}/deliveryPipelines/\\{pipeline_name}.
        class GetDeliveryPipelineRequest
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # The request object for `CreateDeliveryPipeline`.
        # @!attribute [rw] parent
        #   @return [::String]
        #     Required. The parent collection in which the `DeliveryPipeline` should be created.
        #     Format should be projects/\\{project_id}/locations/\\{location_name}.
        # @!attribute [rw] delivery_pipeline_id
        #   @return [::String]
        #     Required. ID of the `DeliveryPipeline`.
        # @!attribute [rw] delivery_pipeline
        #   @return [::Google::Cloud::Deploy::V1::DeliveryPipeline]
        #     Required. The `DeliveryPipeline` to create.
        # @!attribute [rw] request_id
        #   @return [::String]
        #     Optional. A request ID to identify requests. Specify a unique request ID
        #     so that if you must retry your request, the server will know to ignore
        #     the request if it has already been completed. The server will guarantee
        #     that for at least 60 minutes since the first request.
        #
        #     For example, consider a situation where you make an initial request and the
        #     request times out. If you make the request again with the same request ID,
        #     the server can check if original operation with the same request ID was
        #     received, and if so, will ignore the second request. This prevents clients
        #     from accidentally creating duplicate commitments.
        #
        #     The request ID must be a valid UUID with the exception that zero UUID is
        #     not supported (00000000-0000-0000-0000-000000000000).
        # @!attribute [rw] validate_only
        #   @return [::Boolean]
        #     Optional. If set to true, the request is validated and the user is provided with
        #     an expected result, but no actual change is made.
        class CreateDeliveryPipelineRequest
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # The request object for `UpdateDeliveryPipeline`.
        # @!attribute [rw] update_mask
        #   @return [::Google::Protobuf::FieldMask]
        #     Required. Field mask is used to specify the fields to be overwritten in the
        #     `DeliveryPipeline` resource by the update.
        #     The fields specified in the update_mask are relative to the resource, not
        #     the full request. A field will be overwritten if it is in the mask. If the
        #     user does not provide a mask then all fields will be overwritten.
        # @!attribute [rw] delivery_pipeline
        #   @return [::Google::Cloud::Deploy::V1::DeliveryPipeline]
        #     Required. The `DeliveryPipeline` to update.
        # @!attribute [rw] request_id
        #   @return [::String]
        #     Optional. A request ID to identify requests. Specify a unique request ID
        #     so that if you must retry your request, the server will know to ignore
        #     the request if it has already been completed. The server will guarantee
        #     that for at least 60 minutes since the first request.
        #
        #     For example, consider a situation where you make an initial request and the
        #     request times out. If you make the request again with the same request ID,
        #     the server can check if original operation with the same request ID was
        #     received, and if so, will ignore the second request. This prevents clients
        #     from accidentally creating duplicate commitments.
        #
        #     The request ID must be a valid UUID with the exception that zero UUID is
        #     not supported (00000000-0000-0000-0000-000000000000).
        # @!attribute [rw] allow_missing
        #   @return [::Boolean]
        #     Optional. If set to true, updating a `DeliveryPipeline` that does not exist will
        #     result in the creation of a new `DeliveryPipeline`.
        # @!attribute [rw] validate_only
        #   @return [::Boolean]
        #     Optional. If set to true, the request is validated and the user is provided with
        #     an expected result, but no actual change is made.
        class UpdateDeliveryPipelineRequest
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # The request object for `DeleteDeliveryPipeline`.
        # @!attribute [rw] name
        #   @return [::String]
        #     Required. The name of the `DeliveryPipeline` to delete. Format should be
        #     projects/\\{project_id}/locations/\\{location_name}/deliveryPipelines/\\{pipeline_name}.
        # @!attribute [rw] request_id
        #   @return [::String]
        #     Optional. A request ID to identify requests. Specify a unique request ID
        #     so that if you must retry your request, the server will know to ignore
        #     the request if it has already been completed. The server will guarantee
        #     that for at least 60 minutes after the first request.
        #
        #     For example, consider a situation where you make an initial request and the
        #     request times out. If you make the request again with the same request ID,
        #     the server can check if original operation with the same request ID was
        #     received, and if so, will ignore the second request. This prevents clients
        #     from accidentally creating duplicate commitments.
        #
        #     The request ID must be a valid UUID with the exception that zero UUID is
        #     not supported (00000000-0000-0000-0000-000000000000).
        # @!attribute [rw] allow_missing
        #   @return [::Boolean]
        #     Optional. If set to true, then deleting an already deleted or non-existing
        #     `DeliveryPipeline` will succeed.
        # @!attribute [rw] validate_only
        #   @return [::Boolean]
        #     Optional. If set, validate the request and preview the review, but do not actually
        #     post it.
        # @!attribute [rw] force
        #   @return [::Boolean]
        #     Optional. If set to true, all child resources under this pipeline will also be
        #     deleted. Otherwise, the request will only work if the pipeline has
        #     no child resources.
        # @!attribute [rw] etag
        #   @return [::String]
        #     Optional. This checksum is computed by the server based on the value of other
        #     fields, and may be sent on update and delete requests to ensure the
        #     client has an up-to-date value before proceeding.
        class DeleteDeliveryPipelineRequest
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # A `Target` resource in the Google Cloud Deploy API.
        #
        # A `Target` defines a location to which a Skaffold configuration
        # can be deployed.
        # @!attribute [rw] name
        #   @return [::String]
        #     Optional. Name of the `Target`. Format is projects/\\{project}/locations/\\{location}/
        #     deliveryPipelines/\\{deliveryPipeline}/targets/[a-z][a-z0-9\-]\\{0,62}.
        # @!attribute [r] target_id
        #   @return [::String]
        #     Output only. Resource id of the `Target`.
        # @!attribute [r] uid
        #   @return [::String]
        #     Output only. Unique identifier of the `Target`.
        # @!attribute [rw] description
        #   @return [::String]
        #     Optional. Description of the `Target`. Max length is 255 characters.
        # @!attribute [rw] annotations
        #   @return [::Google::Protobuf::Map{::String => ::String}]
        #     Optional. User annotations. These attributes can only be set and used by the
        #     user, and not by Google Cloud Deploy. See
        #     https://google.aip.dev/128#annotations for more details such as format and
        #     size limitations.
        # @!attribute [rw] labels
        #   @return [::Google::Protobuf::Map{::String => ::String}]
        #     Optional. Labels are attributes that can be set and used by both the
        #     user and by Google Cloud Deploy. Labels must meet the following
        #     constraints: Each resource is limited to 64 labels. Keys must conform to
        #     the regexp: [a-zA-Z][a-zA-Z0-9_-]\\{0,62} Values must conform to the regexp:
        #     [a-zA-Z0-9_-]\\{0,63} Both keys and values are additionally constrained to be
        #     <= 128 bytes in size.
        # @!attribute [rw] require_approval
        #   @return [::Boolean]
        #     Optional. Whether or not the `Target` requires approval.
        # @!attribute [r] create_time
        #   @return [::Google::Protobuf::Timestamp]
        #     Output only. Time at which the `Target` was created.
        # @!attribute [r] update_time
        #   @return [::Google::Protobuf::Timestamp]
        #     Output only. Most recent time at which the `Target` was updated.
        # @!attribute [rw] gke
        #   @return [::Google::Cloud::Deploy::V1::GkeCluster]
        #     Information specifying a GKE Cluster.
        # @!attribute [rw] etag
        #   @return [::String]
        #     Optional. This checksum is computed by the server based on the value of other
        #     fields, and may be sent on update and delete requests to ensure the
        #     client has an up-to-date value before proceeding.
        # @!attribute [rw] execution_configs
        #   @return [::Array<::Google::Cloud::Deploy::V1::ExecutionConfig>]
        #     Configurations for all execution that relates to this `Target`.
        #     Each `ExecutionEnvironmentUsage` value may only be used in a single
        #     configuration; using the same value multiple times is an error.
        #     When one or more configurations are specified, they must include the
        #     `RENDER` and `DEPLOY` `ExecutionEnvironmentUsage` values.
        #     When no configurations are specified, execution will use the default
        #     specified in `DefaultPool`.
        class Target
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods

          # @!attribute [rw] key
          #   @return [::String]
          # @!attribute [rw] value
          #   @return [::String]
          class AnnotationsEntry
            include ::Google::Protobuf::MessageExts
            extend ::Google::Protobuf::MessageExts::ClassMethods
          end

          # @!attribute [rw] key
          #   @return [::String]
          # @!attribute [rw] value
          #   @return [::String]
          class LabelsEntry
            include ::Google::Protobuf::MessageExts
            extend ::Google::Protobuf::MessageExts::ClassMethods
          end
        end

        # Configuration of the environment to use when calling Skaffold.
        # @!attribute [rw] usages
        #   @return [::Array<::Google::Cloud::Deploy::V1::ExecutionConfig::ExecutionEnvironmentUsage>]
        #     Required. Usages when this configuration should be applied.
        # @!attribute [rw] default_pool
        #   @return [::Google::Cloud::Deploy::V1::DefaultPool]
        #     Optional. Use default Cloud Build pool.
        # @!attribute [rw] private_pool
        #   @return [::Google::Cloud::Deploy::V1::PrivatePool]
        #     Optional. Use private Cloud Build pool.
        class ExecutionConfig
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods

          # Possible usages of this configuration.
          module ExecutionEnvironmentUsage
            # Default value. This value is unused.
            EXECUTION_ENVIRONMENT_USAGE_UNSPECIFIED = 0

            # Use for rendering.
            RENDER = 1

            # Use for deploying and deployment hooks.
            DEPLOY = 2
          end
        end

        # Execution using the default Cloud Build pool.
        # @!attribute [rw] service_account
        #   @return [::String]
        #     Optional. Google service account to use for execution. If unspecified,
        #     the project execution service account
        #     (<PROJECT_NUMBER>-compute@developer.gserviceaccount.com) will be used.
        # @!attribute [rw] artifact_storage
        #   @return [::String]
        #     Optional. Cloud Storage location where execution outputs should be stored. This can
        #     either be a bucket ("gs://my-bucket") or a path within a bucket
        #     ("gs://my-bucket/my-dir").
        #     If unspecified, a default bucket located in the same region will be used.
        class DefaultPool
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # Execution using a private Cloud Build pool.
        # @!attribute [rw] worker_pool
        #   @return [::String]
        #     Required. Resource name of the Cloud Build worker pool to use. The format is
        #     `projects/{project}/locations/{location}/workerPools/{pool}`.
        # @!attribute [rw] service_account
        #   @return [::String]
        #     Optional. Google service account to use for execution. If unspecified,
        #     the project execution service account
        #     (<PROJECT_NUMBER>-compute@developer.gserviceaccount.com) will be used.
        # @!attribute [rw] artifact_storage
        #   @return [::String]
        #     Optional. Cloud Storage location where execution outputs should be stored. This can
        #     either be a bucket ("gs://my-bucket") or a path within a bucket
        #     ("gs://my-bucket/my-dir").
        #     If unspecified, a default bucket located in the same region will be used.
        class PrivatePool
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # Information specifying a GKE Cluster.
        # @!attribute [rw] cluster
        #   @return [::String]
        #     Information specifying a GKE Cluster. Format is
        #     `projects/{project_id}/locations/{location_id}/clusters/{cluster_id}.
        class GkeCluster
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # The request object for `ListTargets`.
        # @!attribute [rw] parent
        #   @return [::String]
        #     Required. The parent, which owns this collection of targets. Format must be
        #     projects/\\{project_id}/locations/\\{location_name}.
        # @!attribute [rw] page_size
        #   @return [::Integer]
        #     Optional. The maximum number of `Target` objects to return. The service may return
        #     fewer than this value. If unspecified, at most 50 `Target` objects will be
        #     returned. The maximum value is 1000; values above 1000 will be set to 1000.
        # @!attribute [rw] page_token
        #   @return [::String]
        #     Optional. A page token, received from a previous `ListTargets` call.
        #     Provide this to retrieve the subsequent page.
        #
        #     When paginating, all other provided parameters match
        #     the call that provided the page token.
        # @!attribute [rw] filter
        #   @return [::String]
        #     Optional. Filter builds to be returned. See https://google.aip.dev/160 for more
        #     details.
        # @!attribute [rw] order_by
        #   @return [::String]
        #     Optional. Field to sort by. See https://google.aip.dev/132#ordering for more details.
        class ListTargetsRequest
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # The response object from `ListTargets`.
        # @!attribute [rw] targets
        #   @return [::Array<::Google::Cloud::Deploy::V1::Target>]
        #     The `Target` objects.
        # @!attribute [rw] next_page_token
        #   @return [::String]
        #     A token, which can be sent as `page_token` to retrieve the next page.
        #     If this field is omitted, there are no subsequent pages.
        # @!attribute [rw] unreachable
        #   @return [::Array<::String>]
        #     Locations that could not be reached.
        class ListTargetsResponse
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # The request object for `GetTarget`.
        # @!attribute [rw] name
        #   @return [::String]
        #     Required. Name of the `Target`. Format must be
        #     projects/\\{project_id}/locations/\\{location_name}/targets/\\{target_name}.
        class GetTargetRequest
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # The request object for `CreateTarget`.
        # @!attribute [rw] parent
        #   @return [::String]
        #     Required. The parent collection in which the `Target` should be created.
        #     Format should be
        #     projects/\\{project_id}/locations/\\{location_name}.
        # @!attribute [rw] target_id
        #   @return [::String]
        #     Required. ID of the `Target`.
        # @!attribute [rw] target
        #   @return [::Google::Cloud::Deploy::V1::Target]
        #     Required. The `Target` to create.
        # @!attribute [rw] request_id
        #   @return [::String]
        #     Optional. A request ID to identify requests. Specify a unique request ID
        #     so that if you must retry your request, the server will know to ignore
        #     the request if it has already been completed. The server will guarantee
        #     that for at least 60 minutes since the first request.
        #
        #     For example, consider a situation where you make an initial request and the
        #     request times out. If you make the request again with the same request ID,
        #     the server can check if original operation with the same request ID was
        #     received, and if so, will ignore the second request. This prevents clients
        #     from accidentally creating duplicate commitments.
        #
        #     The request ID must be a valid UUID with the exception that zero UUID is
        #     not supported (00000000-0000-0000-0000-000000000000).
        # @!attribute [rw] validate_only
        #   @return [::Boolean]
        #     Optional. If set to true, the request is validated and the user is provided with
        #     an expected result, but no actual change is made.
        class CreateTargetRequest
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # The request object for `UpdateTarget`.
        # @!attribute [rw] update_mask
        #   @return [::Google::Protobuf::FieldMask]
        #     Required. Field mask is used to specify the fields to be overwritten in the
        #     Target resource by the update.
        #     The fields specified in the update_mask are relative to the resource, not
        #     the full request. A field will be overwritten if it is in the mask. If the
        #     user does not provide a mask then all fields will be overwritten.
        # @!attribute [rw] target
        #   @return [::Google::Cloud::Deploy::V1::Target]
        #     Required. The `Target` to update.
        # @!attribute [rw] request_id
        #   @return [::String]
        #     Optional. A request ID to identify requests. Specify a unique request ID
        #     so that if you must retry your request, the server will know to ignore
        #     the request if it has already been completed. The server will guarantee
        #     that for at least 60 minutes since the first request.
        #
        #     For example, consider a situation where you make an initial request and the
        #     request times out. If you make the request again with the same request ID,
        #     the server can check if original operation with the same request ID was
        #     received, and if so, will ignore the second request. This prevents clients
        #     from accidentally creating duplicate commitments.
        #
        #     The request ID must be a valid UUID with the exception that zero UUID is
        #     not supported (00000000-0000-0000-0000-000000000000).
        # @!attribute [rw] allow_missing
        #   @return [::Boolean]
        #     Optional. If set to true, updating a `Target` that does not exist will
        #     result in the creation of a new `Target`.
        # @!attribute [rw] validate_only
        #   @return [::Boolean]
        #     Optional. If set to true, the request is validated and the user is provided with
        #     an expected result, but no actual change is made.
        class UpdateTargetRequest
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # The request object for `DeleteTarget`.
        # @!attribute [rw] name
        #   @return [::String]
        #     Required. The name of the `Target` to delete. Format should be
        #     projects/\\{project_id}/locations/\\{location_name}/targets/\\{target_name}.
        # @!attribute [rw] request_id
        #   @return [::String]
        #     Optional. A request ID to identify requests. Specify a unique request ID
        #     so that if you must retry your request, the server will know to ignore
        #     the request if it has already been completed. The server will guarantee
        #     that for at least 60 minutes after the first request.
        #
        #     For example, consider a situation where you make an initial request and the
        #     request times out. If you make the request again with the same request ID,
        #     the server can check if original operation with the same request ID was
        #     received, and if so, will ignore the second request. This prevents clients
        #     from accidentally creating duplicate commitments.
        #
        #     The request ID must be a valid UUID with the exception that zero UUID is
        #     not supported (00000000-0000-0000-0000-000000000000).
        # @!attribute [rw] allow_missing
        #   @return [::Boolean]
        #     Optional. If set to true, then deleting an already deleted or non-existing
        #     DeliveryPipeline will succeed.
        # @!attribute [rw] validate_only
        #   @return [::Boolean]
        #     Optional. If set, validate the request and preview the review, but do not actually
        #     post it.
        # @!attribute [rw] etag
        #   @return [::String]
        #     Optional. This checksum is computed by the server based on the value of other
        #     fields, and may be sent on update and delete requests to ensure the
        #     client has an up-to-date value before proceeding.
        class DeleteTargetRequest
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # A `Release` resource in the Google Cloud Deploy API.
        #
        # A `Release` defines a specific Skaffold configuration instance
        # that can be deployed.
        # @!attribute [rw] name
        #   @return [::String]
        #     Optional. Name of the `Release`. Format is projects/\\{project}/
        #     locations/\\{location}/deliveryPipelines/\\{deliveryPipeline}/
        #     releases/[a-z][a-z0-9\-]\\{0,62}.
        # @!attribute [r] uid
        #   @return [::String]
        #     Output only. Unique identifier of the `Release`.
        # @!attribute [rw] description
        #   @return [::String]
        #     Description of the `Release`. Max length is 255 characters.
        # @!attribute [rw] annotations
        #   @return [::Google::Protobuf::Map{::String => ::String}]
        #     User annotations. These attributes can only be set and used by the
        #     user, and not by Google Cloud Deploy. See
        #     https://google.aip.dev/128#annotations for more details such as format and
        #     size limitations.
        # @!attribute [rw] labels
        #   @return [::Google::Protobuf::Map{::String => ::String}]
        #     Labels are attributes that can be set and used by both the
        #     user and by Google Cloud Deploy. Labels must meet the following
        #     constraints: Each resource is limited to 64 labels. Keys must conform to
        #     the regexp: [a-zA-Z][a-zA-Z0-9_-]\\{0,62} Values must conform to the regexp:
        #     [a-zA-Z0-9_-]\\{0,63} Both keys and values are additionally constrained to be
        #     <= 128 bytes in size.
        # @!attribute [r] create_time
        #   @return [::Google::Protobuf::Timestamp]
        #     Output only. Time at which the `Release` was created.
        # @!attribute [r] render_start_time
        #   @return [::Google::Protobuf::Timestamp]
        #     Output only. Time at which the render began.
        # @!attribute [r] render_end_time
        #   @return [::Google::Protobuf::Timestamp]
        #     Output only. Time at which the render completed.
        # @!attribute [rw] skaffold_config_uri
        #   @return [::String]
        #     Cloud Storage URI of tar.gz archive containing Skaffold configuration.
        # @!attribute [rw] skaffold_config_path
        #   @return [::String]
        #     Filepath of the Skaffold config inside of the config URI.
        # @!attribute [rw] build_artifacts
        #   @return [::Array<::Google::Cloud::Deploy::V1::BuildArtifact>]
        #     List of artifacts to pass through to Skaffold command.
        # @!attribute [r] delivery_pipeline_snapshot
        #   @return [::Google::Cloud::Deploy::V1::DeliveryPipeline]
        #     Output only. Snapshot of the parent pipeline taken at release creation time.
        # @!attribute [r] target_snapshots
        #   @return [::Array<::Google::Cloud::Deploy::V1::Target>]
        #     Output only. Snapshot of the parent pipeline's targets taken at release creation time.
        # @!attribute [r] render_state
        #   @return [::Google::Cloud::Deploy::V1::Release::RenderState]
        #     Output only. Current state of the render operation.
        # @!attribute [rw] etag
        #   @return [::String]
        #     This checksum is computed by the server based on the value of other
        #     fields, and may be sent on update and delete requests to ensure the
        #     client has an up-to-date value before proceeding.
        # @!attribute [rw] skaffold_version
        #   @return [::String]
        #     The Skaffold version to use when operating on this release, such as
        #     "1.20.0". Not all versions are valid; Google Cloud Deploy supports a
        #     specific set of versions.
        #
        #     If unset, the most recent supported Skaffold version will be used.
        # @!attribute [r] target_artifacts
        #   @return [::Google::Protobuf::Map{::String => ::Google::Cloud::Deploy::V1::TargetArtifact}]
        #     Output only. Map from target ID to the target artifacts created
        #     during the render operation.
        # @!attribute [r] target_renders
        #   @return [::Google::Protobuf::Map{::String => ::Google::Cloud::Deploy::V1::Release::TargetRender}]
        #     Output only. Map from target ID to details of the render operation for that target.
        class Release
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods

          # Details of rendering for a single target.
          # @!attribute [r] rendering_build
          #   @return [::String]
          #     Output only. The resource name of the Cloud Build `Build` object that is used to
          #     render the manifest for this target. Format is
          #     `projects/{project}/locations/{location}/builds/{build}`.
          # @!attribute [r] rendering_state
          #   @return [::Google::Cloud::Deploy::V1::Release::TargetRender::TargetRenderState]
          #     Output only. Current state of the render operation for this Target.
          class TargetRender
            include ::Google::Protobuf::MessageExts
            extend ::Google::Protobuf::MessageExts::ClassMethods

            # Valid states of the render operation.
            module TargetRenderState
              # The render operation state is unspecified.
              TARGET_RENDER_STATE_UNSPECIFIED = 0

              # The render operation has completed successfully.
              SUCCEEDED = 1

              # The render operation has failed.
              FAILED = 2

              # The render operation is in progress.
              IN_PROGRESS = 3
            end
          end

          # @!attribute [rw] key
          #   @return [::String]
          # @!attribute [rw] value
          #   @return [::String]
          class AnnotationsEntry
            include ::Google::Protobuf::MessageExts
            extend ::Google::Protobuf::MessageExts::ClassMethods
          end

          # @!attribute [rw] key
          #   @return [::String]
          # @!attribute [rw] value
          #   @return [::String]
          class LabelsEntry
            include ::Google::Protobuf::MessageExts
            extend ::Google::Protobuf::MessageExts::ClassMethods
          end

          # @!attribute [rw] key
          #   @return [::String]
          # @!attribute [rw] value
          #   @return [::Google::Cloud::Deploy::V1::TargetArtifact]
          class TargetArtifactsEntry
            include ::Google::Protobuf::MessageExts
            extend ::Google::Protobuf::MessageExts::ClassMethods
          end

          # @!attribute [rw] key
          #   @return [::String]
          # @!attribute [rw] value
          #   @return [::Google::Cloud::Deploy::V1::Release::TargetRender]
          class TargetRendersEntry
            include ::Google::Protobuf::MessageExts
            extend ::Google::Protobuf::MessageExts::ClassMethods
          end

          # Valid states of the render operation.
          module RenderState
            # The render state is unspecified.
            RENDER_STATE_UNSPECIFIED = 0

            # All rendering operations have completed successfully.
            SUCCEEDED = 1

            # All rendering operations have completed, and one or more have failed.
            FAILED = 2

            # Rendering has started and is not complete.
            IN_PROGRESS = 3
          end
        end

        # Description of an a image to use during Skaffold rendering.
        # @!attribute [rw] image
        #   @return [::String]
        #     Image name in Skaffold configuration.
        # @!attribute [rw] tag
        #   @return [::String]
        #     Image tag to use. This will generally be the full path to an image, such
        #     as "gcr.io/my-project/busybox:1.2.3" or
        #     "gcr.io/my-project/busybox@sha256:abc123".
        class BuildArtifact
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # The artifacts produced by a target render operation.
        # @!attribute [r] artifact_uri
        #   @return [::String]
        #     Output only. URI of a directory containing the artifacts. This contains
        #     deployment configuration used by Skaffold during a rollout, and all
        #     paths are relative to this location.
        # @!attribute [r] skaffold_config_path
        #   @return [::String]
        #     Output only. File path of the resolved Skaffold configuration relative to the URI.
        # @!attribute [r] manifest_path
        #   @return [::String]
        #     Output only. File path of the rendered manifest relative to the URI.
        class TargetArtifact
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # The request object for `ListReleases`.
        # @!attribute [rw] parent
        #   @return [::String]
        #     Required. The `DeliveryPipeline` which owns this collection of `Release` objects.
        # @!attribute [rw] page_size
        #   @return [::Integer]
        #     Optional. The maximum number of `Release` objects to return. The service may return
        #     fewer than this value. If unspecified, at most 50 `Release` objects will be
        #     returned. The maximum value is 1000; values above 1000 will be set to 1000.
        # @!attribute [rw] page_token
        #   @return [::String]
        #     Optional. A page token, received from a previous `ListReleases` call.
        #     Provide this to retrieve the subsequent page.
        #
        #     When paginating, all other provided parameters match
        #     the call that provided the page token.
        # @!attribute [rw] filter
        #   @return [::String]
        #     Optional. Filter builds to be returned. See https://google.aip.dev/160 for more
        #     details.
        # @!attribute [rw] order_by
        #   @return [::String]
        #     Optional. Field to sort by. See https://google.aip.dev/132#ordering for more details.
        class ListReleasesRequest
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # The response object from `ListReleases`.
        # @!attribute [rw] releases
        #   @return [::Array<::Google::Cloud::Deploy::V1::Release>]
        #     The `Release` objects.
        # @!attribute [rw] next_page_token
        #   @return [::String]
        #     A token, which can be sent as `page_token` to retrieve the next page.
        #     If this field is omitted, there are no subsequent pages.
        # @!attribute [rw] unreachable
        #   @return [::Array<::String>]
        #     Locations that could not be reached.
        class ListReleasesResponse
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # The request object for `GetRelease`.
        # @!attribute [rw] name
        #   @return [::String]
        #     Required. Name of the `Release`. Format must be
        #     projects/\\{project_id}/locations/\\{location_name}/deliveryPipelines/\\{pipeline_name}/releases/\\{release_name}.
        class GetReleaseRequest
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # The request object for `CreateRelease`,
        # @!attribute [rw] parent
        #   @return [::String]
        #     Required. The parent collection in which the `Release` should be created.
        #     Format should be
        #     projects/\\{project_id}/locations/\\{location_name}/deliveryPipelines/\\{pipeline_name}.
        # @!attribute [rw] release_id
        #   @return [::String]
        #     Required. ID of the `Release`.
        # @!attribute [rw] release
        #   @return [::Google::Cloud::Deploy::V1::Release]
        #     Required. The `Release` to create.
        # @!attribute [rw] request_id
        #   @return [::String]
        #     Optional. A request ID to identify requests. Specify a unique request ID
        #     so that if you must retry your request, the server will know to ignore
        #     the request if it has already been completed. The server will guarantee
        #     that for at least 60 minutes since the first request.
        #
        #     For example, consider a situation where you make an initial request and the
        #     request times out. If you make the request again with the same request ID,
        #     the server can check if original operation with the same request ID was
        #     received, and if so, will ignore the second request. This prevents clients
        #     from accidentally creating duplicate commitments.
        #
        #     The request ID must be a valid UUID with the exception that zero UUID is
        #     not supported (00000000-0000-0000-0000-000000000000).
        # @!attribute [rw] validate_only
        #   @return [::Boolean]
        #     Optional. If set to true, the request is validated and the user is provided with
        #     an expected result, but no actual change is made.
        class CreateReleaseRequest
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # A `Rollout` resource in the Google Cloud Deploy API.
        #
        # A `Rollout` contains information around a specific deployment to a `Target`.
        # @!attribute [rw] name
        #   @return [::String]
        #     Optional. Name of the `Rollout`. Format is projects/\\{project}/
        #     locations/\\{location}/deliveryPipelines/\\{deliveryPipeline}/
        #     releases/\\{release}/rollouts/[a-z][a-z0-9\-]\\{0,62}.
        # @!attribute [r] uid
        #   @return [::String]
        #     Output only. Unique identifier of the `Rollout`.
        # @!attribute [rw] description
        #   @return [::String]
        #     Description of the `Rollout` for user purposes. Max length is 255
        #     characters.
        # @!attribute [rw] annotations
        #   @return [::Google::Protobuf::Map{::String => ::String}]
        #     User annotations. These attributes can only be set and used by the
        #     user, and not by Google Cloud Deploy. See
        #     https://google.aip.dev/128#annotations for more details such as format and
        #     size limitations.
        # @!attribute [rw] labels
        #   @return [::Google::Protobuf::Map{::String => ::String}]
        #     Labels are attributes that can be set and used by both the
        #     user and by Google Cloud Deploy. Labels must meet the following
        #     constraints: Each resource is limited to 64 labels. Keys must conform to
        #     the regexp: [a-zA-Z][a-zA-Z0-9_-]\\{0,62} Values must conform to the regexp:
        #     [a-zA-Z0-9_-]\\{0,63} Both keys and values are additionally constrained to be
        #     <= 128 bytes in size.
        # @!attribute [r] create_time
        #   @return [::Google::Protobuf::Timestamp]
        #     Output only. Time at which the `Rollout` was created.
        # @!attribute [r] approve_time
        #   @return [::Google::Protobuf::Timestamp]
        #     Output only. Time at which the `Rollout` was approved.
        # @!attribute [r] enqueue_time
        #   @return [::Google::Protobuf::Timestamp]
        #     Output only. Time at which the `Rollout` was enqueued.
        # @!attribute [r] deploy_start_time
        #   @return [::Google::Protobuf::Timestamp]
        #     Output only. Time at which the `Rollout` started deploying.
        # @!attribute [r] deploy_end_time
        #   @return [::Google::Protobuf::Timestamp]
        #     Output only. Time at which the `Rollout` finished deploying.
        # @!attribute [rw] target_id
        #   @return [::String]
        #     Required. The ID of Target to which this `Rollout` is deploying.
        # @!attribute [r] approval_state
        #   @return [::Google::Cloud::Deploy::V1::Rollout::ApprovalState]
        #     Output only. Approval state of the `Rollout`.
        # @!attribute [r] state
        #   @return [::Google::Cloud::Deploy::V1::Rollout::State]
        #     Output only. Current state of the `Rollout`.
        # @!attribute [r] failure_reason
        #   @return [::String]
        #     Output only. Reason the build failed. Empty if the build succeeded.
        # @!attribute [r] deploying_build
        #   @return [::String]
        #     Output only. The resource name of the Cloud Build `Build` object that is used to deploy
        #     the Rollout. Format is
        #     `projects/{project}/locations/{location}/builds/{build}`.
        # @!attribute [rw] etag
        #   @return [::String]
        #     This checksum is computed by the server based on the value of other
        #     fields, and may be sent on update and delete requests to ensure the
        #     client has an up-to-date value before proceeding.
        class Rollout
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods

          # @!attribute [rw] key
          #   @return [::String]
          # @!attribute [rw] value
          #   @return [::String]
          class AnnotationsEntry
            include ::Google::Protobuf::MessageExts
            extend ::Google::Protobuf::MessageExts::ClassMethods
          end

          # @!attribute [rw] key
          #   @return [::String]
          # @!attribute [rw] value
          #   @return [::String]
          class LabelsEntry
            include ::Google::Protobuf::MessageExts
            extend ::Google::Protobuf::MessageExts::ClassMethods
          end

          # Valid approval states of a `Rollout`.
          module ApprovalState
            # The `Rollout` has an unspecified approval state.
            APPROVAL_STATE_UNSPECIFIED = 0

            # The `Rollout` requires approval.
            NEEDS_APPROVAL = 1

            # The `Rollout` does not require approval.
            DOES_NOT_NEED_APPROVAL = 2

            # The `Rollout` has been approved.
            APPROVED = 3

            # The `Rollout` has been rejected.
            REJECTED = 4
          end

          # Valid states of a `Rollout`.
          module State
            # The `Rollout` has an unspecified state.
            STATE_UNSPECIFIED = 0

            # The `Rollout` has completed successfully.
            SUCCEEDED = 1

            # The `Rollout` has failed.
            FAILED = 2

            # The `Rollout` is being deployed.
            IN_PROGRESS = 3

            # The `Rollout` needs approval.
            PENDING_APPROVAL = 4

            # An approver rejected the `Rollout`.
            APPROVAL_REJECTED = 5

            # The `Rollout` is waiting for an earlier Rollout(s) to complete on this
            # `Target`.
            PENDING = 6

            # The `Rollout` is waiting for the `Release` to be fully rendered.
            PENDING_RELEASE = 7
          end
        end

        # ListRolloutsRequest is the request object used by `ListRollouts`.
        # @!attribute [rw] parent
        #   @return [::String]
        #     Required. The `Release` which owns this collection of `Rollout` objects.
        # @!attribute [rw] page_size
        #   @return [::Integer]
        #     Optional. The maximum number of `Rollout` objects to return. The service may return
        #     fewer than this value. If unspecified, at most 50 `Rollout` objects will be
        #     returned. The maximum value is 1000; values above 1000 will be set to 1000.
        # @!attribute [rw] page_token
        #   @return [::String]
        #     Optional. A page token, received from a previous `ListRollouts` call.
        #     Provide this to retrieve the subsequent page.
        #
        #     When paginating, all other provided parameters match
        #     the call that provided the page token.
        # @!attribute [rw] filter
        #   @return [::String]
        #     Optional. Filter builds to be returned. See https://google.aip.dev/160 for more
        #     details.
        # @!attribute [rw] order_by
        #   @return [::String]
        #     Optional. Field to sort by. See https://google.aip.dev/132#ordering for more details.
        class ListRolloutsRequest
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # ListRolloutsResponse is the response object reutrned by `ListRollouts`.
        # @!attribute [rw] rollouts
        #   @return [::Array<::Google::Cloud::Deploy::V1::Rollout>]
        #     The `Rollout` objects.
        # @!attribute [rw] next_page_token
        #   @return [::String]
        #     A token, which can be sent as `page_token` to retrieve the next page.
        #     If this field is omitted, there are no subsequent pages.
        # @!attribute [rw] unreachable
        #   @return [::Array<::String>]
        #     Locations that could not be reached.
        class ListRolloutsResponse
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # GetRolloutRequest is the request object used by `GetRollout`.
        # @!attribute [rw] name
        #   @return [::String]
        #     Required. Name of the `Rollout`. Format must be
        #     projects/\\{project_id}/locations/\\{location_name}/deliveryPipelines/\\{pipeline_name}/releases/\\{release_name}/rollouts/\\{rollout_name}.
        class GetRolloutRequest
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # CreateRolloutRequest is the request object used by `CreateRollout`.
        # @!attribute [rw] parent
        #   @return [::String]
        #     Required. The parent collection in which the `Rollout` should be created.
        #     Format should be
        #     projects/\\{project_id}/locations/\\{location_name}/deliveryPipelines/\\{pipeline_name}/releases/\\{release_name}.
        # @!attribute [rw] rollout_id
        #   @return [::String]
        #     Required. ID of the `Rollout`.
        # @!attribute [rw] rollout
        #   @return [::Google::Cloud::Deploy::V1::Rollout]
        #     Required. The `Rollout` to create.
        # @!attribute [rw] request_id
        #   @return [::String]
        #     Optional. A request ID to identify requests. Specify a unique request ID
        #     so that if you must retry your request, the server will know to ignore
        #     the request if it has already been completed. The server will guarantee
        #     that for at least 60 minutes since the first request.
        #
        #     For example, consider a situation where you make an initial request and the
        #     request times out. If you make the request again with the same request ID,
        #     the server can check if original operation with the same request ID was
        #     received, and if so, will ignore the second request. This prevents clients
        #     from accidentally creating duplicate commitments.
        #
        #     The request ID must be a valid UUID with the exception that zero UUID is
        #     not supported (00000000-0000-0000-0000-000000000000).
        # @!attribute [rw] validate_only
        #   @return [::Boolean]
        #     Optional. If set to true, the request is validated and the user is provided with
        #     an expected result, but no actual change is made.
        class CreateRolloutRequest
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # Represents the metadata of the long-running operation.
        # @!attribute [r] create_time
        #   @return [::Google::Protobuf::Timestamp]
        #     Output only. The time the operation was created.
        # @!attribute [r] end_time
        #   @return [::Google::Protobuf::Timestamp]
        #     Output only. The time the operation finished running.
        # @!attribute [r] target
        #   @return [::String]
        #     Output only. Server-defined resource path for the target of the operation.
        # @!attribute [r] verb
        #   @return [::String]
        #     Output only. Name of the verb executed by the operation.
        # @!attribute [r] status_message
        #   @return [::String]
        #     Output only. Human-readable status of the operation, if any.
        # @!attribute [r] requested_cancellation
        #   @return [::Boolean]
        #     Output only. Identifies whether the user has requested cancellation
        #     of the operation. Operations that have successfully been cancelled
        #     have [Operation.error][] value with a {::Google::Rpc::Status#code google.rpc.Status.code} of 1,
        #     corresponding to `Code.CANCELLED`.
        # @!attribute [r] api_version
        #   @return [::String]
        #     Output only. API version used to start the operation.
        class OperationMetadata
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # The request object used by `ApproveRollout`.
        # @!attribute [rw] name
        #   @return [::String]
        #     Required. Name of the Rollout. Format is
        #     projects/\\{project}/locations/\\{location}/deliveryPipelines/\\{deliveryPipeline}/
        #     releases/\\{release}/rollouts/\\{rollout}.
        # @!attribute [rw] approved
        #   @return [::Boolean]
        #     Required. True = approve; false = reject
        class ApproveRolloutRequest
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # The response object from `ApproveRollout`.
        class ApproveRolloutResponse
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # Service-wide configuration.
        # @!attribute [rw] name
        #   @return [::String]
        #     Name of the configuration.
        # @!attribute [r] supported_versions
        #   @return [::Array<::Google::Cloud::Deploy::V1::SkaffoldVersion>]
        #     Output only. All supported versions of Skaffold.
        # @!attribute [r] default_skaffold_version
        #   @return [::String]
        #     Output only. Default Skaffold version that is assigned when a Release is created without
        #     specifying a Skaffold version.
        class Config
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # Details of a supported Skaffold version.
        # @!attribute [rw] version
        #   @return [::String]
        #     Release version number. For example, "1.20.3".
        # @!attribute [rw] support_end_date
        #   @return [::Google::Type::Date]
        #     Date when this version is expected to no longer be supported.
        class SkaffoldVersion
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # Request to get a configuration.
        # @!attribute [rw] name
        #   @return [::String]
        #     Required. Name of requested configuration.
        class GetConfigRequest
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end
      end
    end
  end
end
