<html><body>
<style>

body, h1, h2, h3, div, span, p, pre, a {
  margin: 0;
  padding: 0;
  border: 0;
  font-weight: inherit;
  font-style: inherit;
  font-size: 100%;
  font-family: inherit;
  vertical-align: baseline;
}

body {
  font-size: 13px;
  padding: 1em;
}

h1 {
  font-size: 26px;
  margin-bottom: 1em;
}

h2 {
  font-size: 24px;
  margin-bottom: 1em;
}

h3 {
  font-size: 20px;
  margin-bottom: 1em;
  margin-top: 1em;
}

pre, code {
  line-height: 1.5;
  font-family: Monaco, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Lucida Console', monospace;
}

pre {
  margin-top: 0.5em;
}

h1, h2, h3, p {
  font-family: Arial, sans serif;
}

h1, h2, h3 {
  border-bottom: solid #CCC 1px;
}

.toc_element {
  margin-top: 0.5em;
}

.firstline {
  margin-left: 2 em;
}

.method  {
  margin-top: 1em;
  border: solid 1px #CCC;
  padding: 1em;
  background: #EEE;
}

.details {
  font-weight: bold;
  font-size: 14px;
}

</style>

<h1><a href="clouddeploy_v1.html">Google Cloud Deploy API</a> . <a href="clouddeploy_v1.projects.html">projects</a> . <a href="clouddeploy_v1.projects.locations.html">locations</a> . <a href="clouddeploy_v1.projects.locations.deliveryPipelines.html">deliveryPipelines</a> . <a href="clouddeploy_v1.projects.locations.deliveryPipelines.releases.html">releases</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="clouddeploy_v1.projects.locations.deliveryPipelines.releases.rollouts.html">rollouts()</a></code>
</p>
<p class="firstline">Returns the rollouts Resource.</p>

<p class="toc_element">
  <code><a href="#close">close()</a></code></p>
<p class="firstline">Close httplib2 connections.</p>
<p class="toc_element">
  <code><a href="#create">create(parent, body=None, releaseId=None, requestId=None, validateOnly=None, x__xgafv=None)</a></code></p>
<p class="firstline">Creates a new Release in a given project and location.</p>
<p class="toc_element">
  <code><a href="#get">get(name, x__xgafv=None)</a></code></p>
<p class="firstline">Gets details of a single Release.</p>
<p class="toc_element">
  <code><a href="#list">list(parent, filter=None, orderBy=None, pageSize=None, pageToken=None, x__xgafv=None)</a></code></p>
<p class="firstline">Lists Releases in a given project and location.</p>
<p class="toc_element">
  <code><a href="#list_next">list_next(previous_request, previous_response)</a></code></p>
<p class="firstline">Retrieves the next page of results.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="close">close()</code>
  <pre>Close httplib2 connections.</pre>
</div>

<div class="method">
    <code class="details" id="create">create(parent, body=None, releaseId=None, requestId=None, validateOnly=None, x__xgafv=None)</code>
  <pre>Creates a new Release in a given project and location.

Args:
  parent: string, Required. The parent collection in which the `Release` should be created. Format should be projects/{project_id}/locations/{location_name}/deliveryPipelines/{pipeline_name}. (required)
  body: object, The request body.
    The object takes the form of:

{ # A `Release` resource in the Google Cloud Deploy API. A `Release` defines a specific Skaffold configuration instance that can be deployed.
  &quot;annotations&quot;: { # 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.
    &quot;a_key&quot;: &quot;A String&quot;,
  },
  &quot;buildArtifacts&quot;: [ # List of artifacts to pass through to Skaffold command.
    { # Description of an a image to use during Skaffold rendering.
      &quot;image&quot;: &quot;A String&quot;, # Image name in Skaffold configuration.
      &quot;tag&quot;: &quot;A String&quot;, # Image tag to use. This will generally be the full path to an image, such as &quot;gcr.io/my-project/busybox:1.2.3&quot; or &quot;gcr.io/my-project/busybox@sha256:abc123&quot;.
    },
  ],
  &quot;createTime&quot;: &quot;A String&quot;, # Output only. Time at which the `Release` was created.
  &quot;deliveryPipelineSnapshot&quot;: { # A `DeliveryPipeline` resource in the Google Cloud Deploy API. A `DeliveryPipeline` defines a pipeline through which a Skaffold configuration can progress. # Output only. Snapshot of the parent pipeline taken at release creation time.
    &quot;annotations&quot;: { # 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.
      &quot;a_key&quot;: &quot;A String&quot;,
    },
    &quot;condition&quot;: { # PipelineCondition contains all conditions relevant to a Delivery Pipeline. # Output only. Information around the state of the Delivery Pipeline.
      &quot;pipelineReadyCondition&quot;: { # PipelineReadyCondition contains information around the status of the Pipeline. # Details around the Pipeline&#x27;s overall status.
        &quot;status&quot;: True or False, # 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.
        &quot;updateTime&quot;: &quot;A String&quot;, # Last time the condition was updated.
      },
      &quot;targetsPresentCondition&quot;: { # TargetsPresentCondition contains information on any Targets defined in the Delivery Pipeline that do not actually exist. # Detalis around targets enumerated in the pipeline.
        &quot;missingTargets&quot;: [ # The list of Target names that are missing. For example, projects/{project_id}/locations/{location_name}/targets/{target_name}.
          &quot;A String&quot;,
        ],
        &quot;status&quot;: True or False, # True if there aren&#x27;t any missing Targets.
        &quot;updateTime&quot;: &quot;A String&quot;, # Last time the condition was updated.
      },
    },
    &quot;createTime&quot;: &quot;A String&quot;, # Output only. Time at which the pipeline was created.
    &quot;description&quot;: &quot;A String&quot;, # Description of the `DeliveryPipeline`. Max length is 255 characters.
    &quot;etag&quot;: &quot;A String&quot;, # 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.
    &quot;labels&quot;: { # Labels are attributes that can be set and used by both the user and by Google Cloud Deploy. Labels must meet the following constraints: * Keys and values can contain only lowercase letters, numeric characters, underscores, and dashes. * All characters must use UTF-8 encoding, and international characters are allowed. * Keys must start with a lowercase letter or international character. * Each resource is limited to a maximum of 64 labels. Both keys and values are additionally constrained to be &lt;= 128 bytes.
      &quot;a_key&quot;: &quot;A String&quot;,
    },
    &quot;name&quot;: &quot;A String&quot;, # Optional. Name of the `DeliveryPipeline`. Format is projects/{project}/ locations/{location}/deliveryPipelines/a-z{0,62}.
    &quot;serialPipeline&quot;: { # SerialPipeline defines a sequential set of stages for a `DeliveryPipeline`. # SerialPipeline defines a sequential set of stages for a `DeliveryPipeline`.
      &quot;stages&quot;: [ # Each stage specifies configuration for a `Target`. The ordering of this list defines the promotion flow.
        { # Stage specifies a location to which to deploy.
          &quot;profiles&quot;: [ # Skaffold profiles to use when rendering the manifest for this stage&#x27;s `Target`.
            &quot;A String&quot;,
          ],
          &quot;targetId&quot;: &quot;A String&quot;, # 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.
        },
      ],
    },
    &quot;uid&quot;: &quot;A String&quot;, # Output only. Unique identifier of the `DeliveryPipeline`.
    &quot;updateTime&quot;: &quot;A String&quot;, # Output only. Most recent time at which the pipeline was updated.
  },
  &quot;description&quot;: &quot;A String&quot;, # Description of the `Release`. Max length is 255 characters.
  &quot;etag&quot;: &quot;A String&quot;, # 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.
  &quot;labels&quot;: { # Labels are attributes that can be set and used by both the user and by Google Cloud Deploy. Labels must meet the following constraints: * Keys and values can contain only lowercase letters, numeric characters, underscores, and dashes. * All characters must use UTF-8 encoding, and international characters are allowed. * Keys must start with a lowercase letter or international character. * Each resource is limited to a maximum of 64 labels. Both keys and values are additionally constrained to be &lt;= 128 bytes.
    &quot;a_key&quot;: &quot;A String&quot;,
  },
  &quot;name&quot;: &quot;A String&quot;, # Optional. Name of the `Release`. Format is projects/{project}/ locations/{location}/deliveryPipelines/{deliveryPipeline}/ releases/a-z{0,62}.
  &quot;renderEndTime&quot;: &quot;A String&quot;, # Output only. Time at which the render completed.
  &quot;renderStartTime&quot;: &quot;A String&quot;, # Output only. Time at which the render began.
  &quot;renderState&quot;: &quot;A String&quot;, # Output only. Current state of the render operation.
  &quot;skaffoldConfigPath&quot;: &quot;A String&quot;, # Filepath of the Skaffold config inside of the config URI.
  &quot;skaffoldConfigUri&quot;: &quot;A String&quot;, # Cloud Storage URI of tar.gz archive containing Skaffold configuration.
  &quot;skaffoldVersion&quot;: &quot;A String&quot;, # The Skaffold version to use when operating on this release, such as &quot;1.20.0&quot;. 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.
  &quot;targetArtifacts&quot;: { # Output only. Map from target ID to the target artifacts created during the render operation.
    &quot;a_key&quot;: { # The artifacts produced by a target render operation.
      &quot;artifactUri&quot;: &quot;A String&quot;, # 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.
      &quot;manifestPath&quot;: &quot;A String&quot;, # Output only. File path of the rendered manifest relative to the URI.
      &quot;skaffoldConfigPath&quot;: &quot;A String&quot;, # Output only. File path of the resolved Skaffold configuration relative to the URI.
    },
  },
  &quot;targetRenders&quot;: { # Output only. Map from target ID to details of the render operation for that target.
    &quot;a_key&quot;: { # Details of rendering for a single target.
      &quot;failureCause&quot;: &quot;A String&quot;, # Output only. Reason this render failed. This will always be unspecified while the render in progress.
      &quot;renderingBuild&quot;: &quot;A String&quot;, # 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}`.
      &quot;renderingState&quot;: &quot;A String&quot;, # Output only. Current state of the render operation for this Target.
    },
  },
  &quot;targetSnapshots&quot;: [ # Output only. Snapshot of the parent pipeline&#x27;s targets taken at release creation time.
    { # A `Target` resource in the Google Cloud Deploy API. A `Target` defines a location to which a Skaffold configuration can be deployed.
      &quot;annotations&quot;: { # 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.
        &quot;a_key&quot;: &quot;A String&quot;,
      },
      &quot;createTime&quot;: &quot;A String&quot;, # Output only. Time at which the `Target` was created.
      &quot;description&quot;: &quot;A String&quot;, # Optional. Description of the `Target`. Max length is 255 characters.
      &quot;etag&quot;: &quot;A String&quot;, # 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.
      &quot;executionConfigs&quot;: [ # 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`.
        { # Configuration of the environment to use when calling Skaffold.
          &quot;defaultPool&quot;: { # Execution using the default Cloud Build pool. # Optional. Use default Cloud Build pool.
            &quot;artifactStorage&quot;: &quot;A String&quot;, # Optional. Cloud Storage location where execution outputs should be stored. This can either be a bucket (&quot;gs://my-bucket&quot;) or a path within a bucket (&quot;gs://my-bucket/my-dir&quot;). If unspecified, a default bucket located in the same region will be used.
            &quot;serviceAccount&quot;: &quot;A String&quot;, # Optional. Google service account to use for execution. If unspecified, the project execution service account (-compute@developer.gserviceaccount.com) will be used.
          },
          &quot;privatePool&quot;: { # Execution using a private Cloud Build pool. # Optional. Use private Cloud Build pool.
            &quot;artifactStorage&quot;: &quot;A String&quot;, # Optional. Cloud Storage location where execution outputs should be stored. This can either be a bucket (&quot;gs://my-bucket&quot;) or a path within a bucket (&quot;gs://my-bucket/my-dir&quot;). If unspecified, a default bucket located in the same region will be used.
            &quot;serviceAccount&quot;: &quot;A String&quot;, # Optional. Google service account to use for execution. If unspecified, the project execution service account (-compute@developer.gserviceaccount.com) will be used.
            &quot;workerPool&quot;: &quot;A String&quot;, # Required. Resource name of the Cloud Build worker pool to use. The format is `projects/{project}/locations/{location}/workerPools/{pool}`.
          },
          &quot;usages&quot;: [ # Required. Usages when this configuration should be applied.
            &quot;A String&quot;,
          ],
        },
      ],
      &quot;gke&quot;: { # Information specifying a GKE Cluster. # Information specifying a GKE Cluster.
        &quot;cluster&quot;: &quot;A String&quot;, # Information specifying a GKE Cluster. Format is `projects/{project_id}/locations/{location_id}/clusters/{cluster_id}.
      },
      &quot;labels&quot;: { # 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: * Keys and values can contain only lowercase letters, numeric characters, underscores, and dashes. * All characters must use UTF-8 encoding, and international characters are allowed. * Keys must start with a lowercase letter or international character. * Each resource is limited to a maximum of 64 labels. Both keys and values are additionally constrained to be &lt;= 128 bytes.
        &quot;a_key&quot;: &quot;A String&quot;,
      },
      &quot;name&quot;: &quot;A String&quot;, # Optional. Name of the `Target`. Format is projects/{project}/locations/{location}/ deliveryPipelines/{deliveryPipeline}/targets/a-z{0,62}.
      &quot;requireApproval&quot;: True or False, # Optional. Whether or not the `Target` requires approval.
      &quot;targetId&quot;: &quot;A String&quot;, # Output only. Resource id of the `Target`.
      &quot;uid&quot;: &quot;A String&quot;, # Output only. Unique identifier of the `Target`.
      &quot;updateTime&quot;: &quot;A String&quot;, # Output only. Most recent time at which the `Target` was updated.
    },
  ],
  &quot;uid&quot;: &quot;A String&quot;, # Output only. Unique identifier of the `Release`.
}

  releaseId: string, Required. ID of the `Release`.
  requestId: 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).
  validateOnly: 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.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # This resource represents a long-running operation that is the result of a network API call.
  &quot;done&quot;: True or False, # If the value is `false`, it means the operation is still in progress. If `true`, the operation is completed, and either `error` or `response` is available.
  &quot;error&quot;: { # The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors). # The error result of the operation in case of failure or cancellation.
    &quot;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
    &quot;details&quot;: [ # A list of messages that carry the error details. There is a common set of message types for APIs to use.
      {
        &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
      },
    ],
    &quot;message&quot;: &quot;A String&quot;, # A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.
  },
  &quot;metadata&quot;: { # Service-specific metadata associated with the operation. It typically contains progress information and common metadata such as create time. Some services might not provide such metadata. Any method that returns a long-running operation should document the metadata type, if any.
    &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
  },
  &quot;name&quot;: &quot;A String&quot;, # The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the `name` should be a resource name ending with `operations/{unique_id}`.
  &quot;response&quot;: { # The normal response of the operation in case of success. If the original method returns no data on success, such as `Delete`, the response is `google.protobuf.Empty`. If the original method is standard `Get`/`Create`/`Update`, the response should be the resource. For other methods, the response should have the type `XxxResponse`, where `Xxx` is the original method name. For example, if the original method name is `TakeSnapshot()`, the inferred response type is `TakeSnapshotResponse`.
    &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
  },
}</pre>
</div>

<div class="method">
    <code class="details" id="get">get(name, x__xgafv=None)</code>
  <pre>Gets details of a single Release.

Args:
  name: string, Required. Name of the `Release`. Format must be projects/{project_id}/locations/{location_name}/deliveryPipelines/{pipeline_name}/releases/{release_name}. (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # A `Release` resource in the Google Cloud Deploy API. A `Release` defines a specific Skaffold configuration instance that can be deployed.
  &quot;annotations&quot;: { # 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.
    &quot;a_key&quot;: &quot;A String&quot;,
  },
  &quot;buildArtifacts&quot;: [ # List of artifacts to pass through to Skaffold command.
    { # Description of an a image to use during Skaffold rendering.
      &quot;image&quot;: &quot;A String&quot;, # Image name in Skaffold configuration.
      &quot;tag&quot;: &quot;A String&quot;, # Image tag to use. This will generally be the full path to an image, such as &quot;gcr.io/my-project/busybox:1.2.3&quot; or &quot;gcr.io/my-project/busybox@sha256:abc123&quot;.
    },
  ],
  &quot;createTime&quot;: &quot;A String&quot;, # Output only. Time at which the `Release` was created.
  &quot;deliveryPipelineSnapshot&quot;: { # A `DeliveryPipeline` resource in the Google Cloud Deploy API. A `DeliveryPipeline` defines a pipeline through which a Skaffold configuration can progress. # Output only. Snapshot of the parent pipeline taken at release creation time.
    &quot;annotations&quot;: { # 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.
      &quot;a_key&quot;: &quot;A String&quot;,
    },
    &quot;condition&quot;: { # PipelineCondition contains all conditions relevant to a Delivery Pipeline. # Output only. Information around the state of the Delivery Pipeline.
      &quot;pipelineReadyCondition&quot;: { # PipelineReadyCondition contains information around the status of the Pipeline. # Details around the Pipeline&#x27;s overall status.
        &quot;status&quot;: True or False, # 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.
        &quot;updateTime&quot;: &quot;A String&quot;, # Last time the condition was updated.
      },
      &quot;targetsPresentCondition&quot;: { # TargetsPresentCondition contains information on any Targets defined in the Delivery Pipeline that do not actually exist. # Detalis around targets enumerated in the pipeline.
        &quot;missingTargets&quot;: [ # The list of Target names that are missing. For example, projects/{project_id}/locations/{location_name}/targets/{target_name}.
          &quot;A String&quot;,
        ],
        &quot;status&quot;: True or False, # True if there aren&#x27;t any missing Targets.
        &quot;updateTime&quot;: &quot;A String&quot;, # Last time the condition was updated.
      },
    },
    &quot;createTime&quot;: &quot;A String&quot;, # Output only. Time at which the pipeline was created.
    &quot;description&quot;: &quot;A String&quot;, # Description of the `DeliveryPipeline`. Max length is 255 characters.
    &quot;etag&quot;: &quot;A String&quot;, # 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.
    &quot;labels&quot;: { # Labels are attributes that can be set and used by both the user and by Google Cloud Deploy. Labels must meet the following constraints: * Keys and values can contain only lowercase letters, numeric characters, underscores, and dashes. * All characters must use UTF-8 encoding, and international characters are allowed. * Keys must start with a lowercase letter or international character. * Each resource is limited to a maximum of 64 labels. Both keys and values are additionally constrained to be &lt;= 128 bytes.
      &quot;a_key&quot;: &quot;A String&quot;,
    },
    &quot;name&quot;: &quot;A String&quot;, # Optional. Name of the `DeliveryPipeline`. Format is projects/{project}/ locations/{location}/deliveryPipelines/a-z{0,62}.
    &quot;serialPipeline&quot;: { # SerialPipeline defines a sequential set of stages for a `DeliveryPipeline`. # SerialPipeline defines a sequential set of stages for a `DeliveryPipeline`.
      &quot;stages&quot;: [ # Each stage specifies configuration for a `Target`. The ordering of this list defines the promotion flow.
        { # Stage specifies a location to which to deploy.
          &quot;profiles&quot;: [ # Skaffold profiles to use when rendering the manifest for this stage&#x27;s `Target`.
            &quot;A String&quot;,
          ],
          &quot;targetId&quot;: &quot;A String&quot;, # 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.
        },
      ],
    },
    &quot;uid&quot;: &quot;A String&quot;, # Output only. Unique identifier of the `DeliveryPipeline`.
    &quot;updateTime&quot;: &quot;A String&quot;, # Output only. Most recent time at which the pipeline was updated.
  },
  &quot;description&quot;: &quot;A String&quot;, # Description of the `Release`. Max length is 255 characters.
  &quot;etag&quot;: &quot;A String&quot;, # 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.
  &quot;labels&quot;: { # Labels are attributes that can be set and used by both the user and by Google Cloud Deploy. Labels must meet the following constraints: * Keys and values can contain only lowercase letters, numeric characters, underscores, and dashes. * All characters must use UTF-8 encoding, and international characters are allowed. * Keys must start with a lowercase letter or international character. * Each resource is limited to a maximum of 64 labels. Both keys and values are additionally constrained to be &lt;= 128 bytes.
    &quot;a_key&quot;: &quot;A String&quot;,
  },
  &quot;name&quot;: &quot;A String&quot;, # Optional. Name of the `Release`. Format is projects/{project}/ locations/{location}/deliveryPipelines/{deliveryPipeline}/ releases/a-z{0,62}.
  &quot;renderEndTime&quot;: &quot;A String&quot;, # Output only. Time at which the render completed.
  &quot;renderStartTime&quot;: &quot;A String&quot;, # Output only. Time at which the render began.
  &quot;renderState&quot;: &quot;A String&quot;, # Output only. Current state of the render operation.
  &quot;skaffoldConfigPath&quot;: &quot;A String&quot;, # Filepath of the Skaffold config inside of the config URI.
  &quot;skaffoldConfigUri&quot;: &quot;A String&quot;, # Cloud Storage URI of tar.gz archive containing Skaffold configuration.
  &quot;skaffoldVersion&quot;: &quot;A String&quot;, # The Skaffold version to use when operating on this release, such as &quot;1.20.0&quot;. 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.
  &quot;targetArtifacts&quot;: { # Output only. Map from target ID to the target artifacts created during the render operation.
    &quot;a_key&quot;: { # The artifacts produced by a target render operation.
      &quot;artifactUri&quot;: &quot;A String&quot;, # 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.
      &quot;manifestPath&quot;: &quot;A String&quot;, # Output only. File path of the rendered manifest relative to the URI.
      &quot;skaffoldConfigPath&quot;: &quot;A String&quot;, # Output only. File path of the resolved Skaffold configuration relative to the URI.
    },
  },
  &quot;targetRenders&quot;: { # Output only. Map from target ID to details of the render operation for that target.
    &quot;a_key&quot;: { # Details of rendering for a single target.
      &quot;failureCause&quot;: &quot;A String&quot;, # Output only. Reason this render failed. This will always be unspecified while the render in progress.
      &quot;renderingBuild&quot;: &quot;A String&quot;, # 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}`.
      &quot;renderingState&quot;: &quot;A String&quot;, # Output only. Current state of the render operation for this Target.
    },
  },
  &quot;targetSnapshots&quot;: [ # Output only. Snapshot of the parent pipeline&#x27;s targets taken at release creation time.
    { # A `Target` resource in the Google Cloud Deploy API. A `Target` defines a location to which a Skaffold configuration can be deployed.
      &quot;annotations&quot;: { # 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.
        &quot;a_key&quot;: &quot;A String&quot;,
      },
      &quot;createTime&quot;: &quot;A String&quot;, # Output only. Time at which the `Target` was created.
      &quot;description&quot;: &quot;A String&quot;, # Optional. Description of the `Target`. Max length is 255 characters.
      &quot;etag&quot;: &quot;A String&quot;, # 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.
      &quot;executionConfigs&quot;: [ # 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`.
        { # Configuration of the environment to use when calling Skaffold.
          &quot;defaultPool&quot;: { # Execution using the default Cloud Build pool. # Optional. Use default Cloud Build pool.
            &quot;artifactStorage&quot;: &quot;A String&quot;, # Optional. Cloud Storage location where execution outputs should be stored. This can either be a bucket (&quot;gs://my-bucket&quot;) or a path within a bucket (&quot;gs://my-bucket/my-dir&quot;). If unspecified, a default bucket located in the same region will be used.
            &quot;serviceAccount&quot;: &quot;A String&quot;, # Optional. Google service account to use for execution. If unspecified, the project execution service account (-compute@developer.gserviceaccount.com) will be used.
          },
          &quot;privatePool&quot;: { # Execution using a private Cloud Build pool. # Optional. Use private Cloud Build pool.
            &quot;artifactStorage&quot;: &quot;A String&quot;, # Optional. Cloud Storage location where execution outputs should be stored. This can either be a bucket (&quot;gs://my-bucket&quot;) or a path within a bucket (&quot;gs://my-bucket/my-dir&quot;). If unspecified, a default bucket located in the same region will be used.
            &quot;serviceAccount&quot;: &quot;A String&quot;, # Optional. Google service account to use for execution. If unspecified, the project execution service account (-compute@developer.gserviceaccount.com) will be used.
            &quot;workerPool&quot;: &quot;A String&quot;, # Required. Resource name of the Cloud Build worker pool to use. The format is `projects/{project}/locations/{location}/workerPools/{pool}`.
          },
          &quot;usages&quot;: [ # Required. Usages when this configuration should be applied.
            &quot;A String&quot;,
          ],
        },
      ],
      &quot;gke&quot;: { # Information specifying a GKE Cluster. # Information specifying a GKE Cluster.
        &quot;cluster&quot;: &quot;A String&quot;, # Information specifying a GKE Cluster. Format is `projects/{project_id}/locations/{location_id}/clusters/{cluster_id}.
      },
      &quot;labels&quot;: { # 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: * Keys and values can contain only lowercase letters, numeric characters, underscores, and dashes. * All characters must use UTF-8 encoding, and international characters are allowed. * Keys must start with a lowercase letter or international character. * Each resource is limited to a maximum of 64 labels. Both keys and values are additionally constrained to be &lt;= 128 bytes.
        &quot;a_key&quot;: &quot;A String&quot;,
      },
      &quot;name&quot;: &quot;A String&quot;, # Optional. Name of the `Target`. Format is projects/{project}/locations/{location}/ deliveryPipelines/{deliveryPipeline}/targets/a-z{0,62}.
      &quot;requireApproval&quot;: True or False, # Optional. Whether or not the `Target` requires approval.
      &quot;targetId&quot;: &quot;A String&quot;, # Output only. Resource id of the `Target`.
      &quot;uid&quot;: &quot;A String&quot;, # Output only. Unique identifier of the `Target`.
      &quot;updateTime&quot;: &quot;A String&quot;, # Output only. Most recent time at which the `Target` was updated.
    },
  ],
  &quot;uid&quot;: &quot;A String&quot;, # Output only. Unique identifier of the `Release`.
}</pre>
</div>

<div class="method">
    <code class="details" id="list">list(parent, filter=None, orderBy=None, pageSize=None, pageToken=None, x__xgafv=None)</code>
  <pre>Lists Releases in a given project and location.

Args:
  parent: string, Required. The `DeliveryPipeline` which owns this collection of `Release` objects. (required)
  filter: string, Optional. Filter builds to be returned. See https://google.aip.dev/160 for more details.
  orderBy: string, Optional. Field to sort by. See https://google.aip.dev/132#ordering for more details.
  pageSize: 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.
  pageToken: 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.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # The response object from `ListReleases`.
  &quot;nextPageToken&quot;: &quot;A String&quot;, # A token, which can be sent as `page_token` to retrieve the next page. If this field is omitted, there are no subsequent pages.
  &quot;releases&quot;: [ # The `Release` objects.
    { # A `Release` resource in the Google Cloud Deploy API. A `Release` defines a specific Skaffold configuration instance that can be deployed.
      &quot;annotations&quot;: { # 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.
        &quot;a_key&quot;: &quot;A String&quot;,
      },
      &quot;buildArtifacts&quot;: [ # List of artifacts to pass through to Skaffold command.
        { # Description of an a image to use during Skaffold rendering.
          &quot;image&quot;: &quot;A String&quot;, # Image name in Skaffold configuration.
          &quot;tag&quot;: &quot;A String&quot;, # Image tag to use. This will generally be the full path to an image, such as &quot;gcr.io/my-project/busybox:1.2.3&quot; or &quot;gcr.io/my-project/busybox@sha256:abc123&quot;.
        },
      ],
      &quot;createTime&quot;: &quot;A String&quot;, # Output only. Time at which the `Release` was created.
      &quot;deliveryPipelineSnapshot&quot;: { # A `DeliveryPipeline` resource in the Google Cloud Deploy API. A `DeliveryPipeline` defines a pipeline through which a Skaffold configuration can progress. # Output only. Snapshot of the parent pipeline taken at release creation time.
        &quot;annotations&quot;: { # 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.
          &quot;a_key&quot;: &quot;A String&quot;,
        },
        &quot;condition&quot;: { # PipelineCondition contains all conditions relevant to a Delivery Pipeline. # Output only. Information around the state of the Delivery Pipeline.
          &quot;pipelineReadyCondition&quot;: { # PipelineReadyCondition contains information around the status of the Pipeline. # Details around the Pipeline&#x27;s overall status.
            &quot;status&quot;: True or False, # 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.
            &quot;updateTime&quot;: &quot;A String&quot;, # Last time the condition was updated.
          },
          &quot;targetsPresentCondition&quot;: { # TargetsPresentCondition contains information on any Targets defined in the Delivery Pipeline that do not actually exist. # Detalis around targets enumerated in the pipeline.
            &quot;missingTargets&quot;: [ # The list of Target names that are missing. For example, projects/{project_id}/locations/{location_name}/targets/{target_name}.
              &quot;A String&quot;,
            ],
            &quot;status&quot;: True or False, # True if there aren&#x27;t any missing Targets.
            &quot;updateTime&quot;: &quot;A String&quot;, # Last time the condition was updated.
          },
        },
        &quot;createTime&quot;: &quot;A String&quot;, # Output only. Time at which the pipeline was created.
        &quot;description&quot;: &quot;A String&quot;, # Description of the `DeliveryPipeline`. Max length is 255 characters.
        &quot;etag&quot;: &quot;A String&quot;, # 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.
        &quot;labels&quot;: { # Labels are attributes that can be set and used by both the user and by Google Cloud Deploy. Labels must meet the following constraints: * Keys and values can contain only lowercase letters, numeric characters, underscores, and dashes. * All characters must use UTF-8 encoding, and international characters are allowed. * Keys must start with a lowercase letter or international character. * Each resource is limited to a maximum of 64 labels. Both keys and values are additionally constrained to be &lt;= 128 bytes.
          &quot;a_key&quot;: &quot;A String&quot;,
        },
        &quot;name&quot;: &quot;A String&quot;, # Optional. Name of the `DeliveryPipeline`. Format is projects/{project}/ locations/{location}/deliveryPipelines/a-z{0,62}.
        &quot;serialPipeline&quot;: { # SerialPipeline defines a sequential set of stages for a `DeliveryPipeline`. # SerialPipeline defines a sequential set of stages for a `DeliveryPipeline`.
          &quot;stages&quot;: [ # Each stage specifies configuration for a `Target`. The ordering of this list defines the promotion flow.
            { # Stage specifies a location to which to deploy.
              &quot;profiles&quot;: [ # Skaffold profiles to use when rendering the manifest for this stage&#x27;s `Target`.
                &quot;A String&quot;,
              ],
              &quot;targetId&quot;: &quot;A String&quot;, # 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.
            },
          ],
        },
        &quot;uid&quot;: &quot;A String&quot;, # Output only. Unique identifier of the `DeliveryPipeline`.
        &quot;updateTime&quot;: &quot;A String&quot;, # Output only. Most recent time at which the pipeline was updated.
      },
      &quot;description&quot;: &quot;A String&quot;, # Description of the `Release`. Max length is 255 characters.
      &quot;etag&quot;: &quot;A String&quot;, # 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.
      &quot;labels&quot;: { # Labels are attributes that can be set and used by both the user and by Google Cloud Deploy. Labels must meet the following constraints: * Keys and values can contain only lowercase letters, numeric characters, underscores, and dashes. * All characters must use UTF-8 encoding, and international characters are allowed. * Keys must start with a lowercase letter or international character. * Each resource is limited to a maximum of 64 labels. Both keys and values are additionally constrained to be &lt;= 128 bytes.
        &quot;a_key&quot;: &quot;A String&quot;,
      },
      &quot;name&quot;: &quot;A String&quot;, # Optional. Name of the `Release`. Format is projects/{project}/ locations/{location}/deliveryPipelines/{deliveryPipeline}/ releases/a-z{0,62}.
      &quot;renderEndTime&quot;: &quot;A String&quot;, # Output only. Time at which the render completed.
      &quot;renderStartTime&quot;: &quot;A String&quot;, # Output only. Time at which the render began.
      &quot;renderState&quot;: &quot;A String&quot;, # Output only. Current state of the render operation.
      &quot;skaffoldConfigPath&quot;: &quot;A String&quot;, # Filepath of the Skaffold config inside of the config URI.
      &quot;skaffoldConfigUri&quot;: &quot;A String&quot;, # Cloud Storage URI of tar.gz archive containing Skaffold configuration.
      &quot;skaffoldVersion&quot;: &quot;A String&quot;, # The Skaffold version to use when operating on this release, such as &quot;1.20.0&quot;. 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.
      &quot;targetArtifacts&quot;: { # Output only. Map from target ID to the target artifacts created during the render operation.
        &quot;a_key&quot;: { # The artifacts produced by a target render operation.
          &quot;artifactUri&quot;: &quot;A String&quot;, # 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.
          &quot;manifestPath&quot;: &quot;A String&quot;, # Output only. File path of the rendered manifest relative to the URI.
          &quot;skaffoldConfigPath&quot;: &quot;A String&quot;, # Output only. File path of the resolved Skaffold configuration relative to the URI.
        },
      },
      &quot;targetRenders&quot;: { # Output only. Map from target ID to details of the render operation for that target.
        &quot;a_key&quot;: { # Details of rendering for a single target.
          &quot;failureCause&quot;: &quot;A String&quot;, # Output only. Reason this render failed. This will always be unspecified while the render in progress.
          &quot;renderingBuild&quot;: &quot;A String&quot;, # 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}`.
          &quot;renderingState&quot;: &quot;A String&quot;, # Output only. Current state of the render operation for this Target.
        },
      },
      &quot;targetSnapshots&quot;: [ # Output only. Snapshot of the parent pipeline&#x27;s targets taken at release creation time.
        { # A `Target` resource in the Google Cloud Deploy API. A `Target` defines a location to which a Skaffold configuration can be deployed.
          &quot;annotations&quot;: { # 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.
            &quot;a_key&quot;: &quot;A String&quot;,
          },
          &quot;createTime&quot;: &quot;A String&quot;, # Output only. Time at which the `Target` was created.
          &quot;description&quot;: &quot;A String&quot;, # Optional. Description of the `Target`. Max length is 255 characters.
          &quot;etag&quot;: &quot;A String&quot;, # 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.
          &quot;executionConfigs&quot;: [ # 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`.
            { # Configuration of the environment to use when calling Skaffold.
              &quot;defaultPool&quot;: { # Execution using the default Cloud Build pool. # Optional. Use default Cloud Build pool.
                &quot;artifactStorage&quot;: &quot;A String&quot;, # Optional. Cloud Storage location where execution outputs should be stored. This can either be a bucket (&quot;gs://my-bucket&quot;) or a path within a bucket (&quot;gs://my-bucket/my-dir&quot;). If unspecified, a default bucket located in the same region will be used.
                &quot;serviceAccount&quot;: &quot;A String&quot;, # Optional. Google service account to use for execution. If unspecified, the project execution service account (-compute@developer.gserviceaccount.com) will be used.
              },
              &quot;privatePool&quot;: { # Execution using a private Cloud Build pool. # Optional. Use private Cloud Build pool.
                &quot;artifactStorage&quot;: &quot;A String&quot;, # Optional. Cloud Storage location where execution outputs should be stored. This can either be a bucket (&quot;gs://my-bucket&quot;) or a path within a bucket (&quot;gs://my-bucket/my-dir&quot;). If unspecified, a default bucket located in the same region will be used.
                &quot;serviceAccount&quot;: &quot;A String&quot;, # Optional. Google service account to use for execution. If unspecified, the project execution service account (-compute@developer.gserviceaccount.com) will be used.
                &quot;workerPool&quot;: &quot;A String&quot;, # Required. Resource name of the Cloud Build worker pool to use. The format is `projects/{project}/locations/{location}/workerPools/{pool}`.
              },
              &quot;usages&quot;: [ # Required. Usages when this configuration should be applied.
                &quot;A String&quot;,
              ],
            },
          ],
          &quot;gke&quot;: { # Information specifying a GKE Cluster. # Information specifying a GKE Cluster.
            &quot;cluster&quot;: &quot;A String&quot;, # Information specifying a GKE Cluster. Format is `projects/{project_id}/locations/{location_id}/clusters/{cluster_id}.
          },
          &quot;labels&quot;: { # 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: * Keys and values can contain only lowercase letters, numeric characters, underscores, and dashes. * All characters must use UTF-8 encoding, and international characters are allowed. * Keys must start with a lowercase letter or international character. * Each resource is limited to a maximum of 64 labels. Both keys and values are additionally constrained to be &lt;= 128 bytes.
            &quot;a_key&quot;: &quot;A String&quot;,
          },
          &quot;name&quot;: &quot;A String&quot;, # Optional. Name of the `Target`. Format is projects/{project}/locations/{location}/ deliveryPipelines/{deliveryPipeline}/targets/a-z{0,62}.
          &quot;requireApproval&quot;: True or False, # Optional. Whether or not the `Target` requires approval.
          &quot;targetId&quot;: &quot;A String&quot;, # Output only. Resource id of the `Target`.
          &quot;uid&quot;: &quot;A String&quot;, # Output only. Unique identifier of the `Target`.
          &quot;updateTime&quot;: &quot;A String&quot;, # Output only. Most recent time at which the `Target` was updated.
        },
      ],
      &quot;uid&quot;: &quot;A String&quot;, # Output only. Unique identifier of the `Release`.
    },
  ],
  &quot;unreachable&quot;: [ # Locations that could not be reached.
    &quot;A String&quot;,
  ],
}</pre>
</div>

<div class="method">
    <code class="details" id="list_next">list_next(previous_request, previous_response)</code>
  <pre>Retrieves the next page of results.

Args:
  previous_request: The request for the previous page. (required)
  previous_response: The response from the request for the previous page. (required)

Returns:
  A request object that you can call &#x27;execute()&#x27; on to request the next
  page. Returns None if there are no more items in the collection.
    </pre>
</div>

</body></html>