<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="run_v1.html">Cloud Run Admin API</a> . <a href="run_v1.namespaces.html">namespaces</a> . <a href="run_v1.namespaces.executions.html">executions</a></h1>
<h2>Instance Methods</h2>
<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="#delete">delete(name, apiVersion=None, kind=None, propagationPolicy=None, x__xgafv=None)</a></code></p>
<p class="firstline">Delete an execution.</p>
<p class="toc_element">
  <code><a href="#get">get(name, x__xgafv=None)</a></code></p>
<p class="firstline">Get information about an execution.</p>
<p class="toc_element">
  <code><a href="#list">list(parent, continue=None, fieldSelector=None, includeUninitialized=None, labelSelector=None, limit=None, resourceVersion=None, watch=None, x__xgafv=None)</a></code></p>
<p class="firstline">List executions.</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="delete">delete(name, apiVersion=None, kind=None, propagationPolicy=None, x__xgafv=None)</code>
  <pre>Delete an execution.

Args:
  name: string, Required. The name of the execution to delete. Replace {namespace_id} with the project ID or number. (required)
  apiVersion: string, Optional. Cloud Run currently ignores this parameter.
  kind: string, Optional. Cloud Run currently ignores this parameter.
  propagationPolicy: string, Optional. Specifies the propagation policy of delete. Cloud Run currently ignores this setting, and deletes in the background. Please see kubernetes.io/docs/concepts/workloads/controllers/garbage-collection/ for more information.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Status is a return value for calls that don&#x27;t return other objects
  &quot;code&quot;: 42, # Suggested HTTP return code for this status, 0 if not set. +optional
  &quot;details&quot;: { # StatusDetails is a set of additional properties that MAY be set by the server to provide additional information about a response. The Reason field of a Status object defines what attributes will be set. Clients must ignore fields that do not match the defined type of each attribute, and should assume that any attribute may be empty, invalid, or under defined. # Extended data associated with the reason. Each reason may define its own extended details. This field is optional and the data returned is not guaranteed to conform to any schema except that defined by the reason type. +optional
    &quot;causes&quot;: [ # The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes. +optional
      { # StatusCause provides more information about an api.Status failure, including cases when multiple errors are encountered.
        &quot;field&quot;: &quot;A String&quot;, # The field of the resource that has caused this error, as named by its JSON serialization. May include dot and postfix notation for nested attributes. Arrays are zero-indexed. Fields may appear more than once in an array of causes due to fields having multiple errors. Optional. Examples: &quot;name&quot; - the field &quot;name&quot; on the current resource &quot;items[0].name&quot; - the field &quot;name&quot; on the first array entry in &quot;items&quot; +optional
        &quot;message&quot;: &quot;A String&quot;, # A human-readable description of the cause of the error. This field may be presented as-is to a reader. +optional
        &quot;reason&quot;: &quot;A String&quot;, # A machine-readable description of the cause of the error. If this value is empty there is no information available. +optional
      },
    ],
    &quot;group&quot;: &quot;A String&quot;, # The group attribute of the resource associated with the status StatusReason. +optional
    &quot;kind&quot;: &quot;A String&quot;, # The kind attribute of the resource associated with the status StatusReason. On some operations may differ from the requested resource Kind. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds +optional
    &quot;name&quot;: &quot;A String&quot;, # The name attribute of the resource associated with the status StatusReason (when there is a single name which can be described). +optional
    &quot;retryAfterSeconds&quot;: 42, # If specified, the time in seconds before the operation should be retried. Some errors may indicate the client must take an alternate action - for those errors this field may indicate how long to wait before taking the alternate action. +optional
    &quot;uid&quot;: &quot;A String&quot;, # UID of the resource. (when there is a single resource which can be described). More info: http://kubernetes.io/docs/user-guide/identifiers#uids +optional
  },
  &quot;message&quot;: &quot;A String&quot;, # A human-readable description of the status of this operation. +optional
  &quot;metadata&quot;: { # ListMeta describes metadata that synthetic resources must have, including lists and various status objects. A resource may have only one of {ObjectMeta, ListMeta}. # Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds +optional
    &quot;continue&quot;: &quot;A String&quot;, # continue may be set if the user set a limit on the number of items returned, and indicates that the server has more data available. The value is opaque and may be used to issue another request to the endpoint that served this list to retrieve the next set of available objects. Continuing a list may not be possible if the server configuration has changed or more than a few minutes have passed. The resourceVersion field returned when using this continue value will be identical to the value in the first response.
    &quot;resourceVersion&quot;: &quot;A String&quot;, # String that identifies the server&#x27;s internal version of this object that can be used by clients to determine when objects have changed. Value must be treated as opaque by clients and passed unmodified back to the server. Populated by the system. Read-only. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency +optional
    &quot;selfLink&quot;: &quot;A String&quot;, # SelfLink is a URL representing this object. Populated by the system. Read-only. +optional
  },
  &quot;reason&quot;: &quot;A String&quot;, # A machine-readable description of why this operation is in the &quot;Failure&quot; status. If this value is empty there is no information available. A Reason clarifies an HTTP status code but does not override it. +optional
  &quot;status&quot;: &quot;A String&quot;, # Status of the operation. One of: &quot;Success&quot; or &quot;Failure&quot;. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status +optional
}</pre>
</div>

<div class="method">
    <code class="details" id="get">get(name, x__xgafv=None)</code>
  <pre>Get information about an execution.

Args:
  name: string, Required. The name of the execution to retrieve. Replace {namespace_id} with the project ID or number. (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Execution represents the configuration of a single execution. A execution an immutable resource that references a container image which is run to completion.
  &quot;apiVersion&quot;: &quot;A String&quot;, # Optional. APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources +optional
  &quot;kind&quot;: &quot;A String&quot;, # Optional. Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds +optional
  &quot;metadata&quot;: { # k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create. # Optional. Standard object&#x27;s metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata +optional
    &quot;annotations&quot;: { # (Optional) Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations
      &quot;a_key&quot;: &quot;A String&quot;,
    },
    &quot;clusterName&quot;: &quot;A String&quot;, # (Optional) Not supported by Cloud Run The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.
    &quot;creationTimestamp&quot;: &quot;A String&quot;, # (Optional) CreationTimestamp is a timestamp representing the server time when this object was created. It is not guaranteed to be set in happens-before order across separate operations. Clients may not set this value. It is represented in RFC3339 form and is in UTC. Populated by the system. Read-only. Null for lists. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata
    &quot;deletionGracePeriodSeconds&quot;: 42, # (Optional) Not supported by Cloud Run Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.
    &quot;deletionTimestamp&quot;: &quot;A String&quot;, # (Optional) Not supported by Cloud Run DeletionTimestamp is RFC 3339 date and time at which this resource will be deleted. This field is set by the server when a graceful deletion is requested by the user, and is not directly settable by a client. The resource is expected to be deleted (no longer visible from resource lists, and not reachable by name) after the time in this field, once the finalizers list is empty. As long as the finalizers list contains items, deletion is blocked. Once the deletionTimestamp is set, this value may not be unset or be set further into the future, although it may be shortened or the resource may be deleted prior to this time. For example, a user may request that a pod is deleted in 30 seconds. The Kubelet will react by sending a graceful termination signal to the containers in the pod. After that 30 seconds, the Kubelet will send a hard termination signal (SIGKILL) to the container and after cleanup, remove the pod from the API. In the presence of network partitions, this object may still exist after this timestamp, until an administrator or automated process can determine the resource is fully terminated. If not set, graceful deletion of the object has not been requested. Populated by the system when a graceful deletion is requested. Read-only. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata
    &quot;finalizers&quot;: [ # (Optional) Not supported by Cloud Run Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. +patchStrategy=merge
      &quot;A String&quot;,
    ],
    &quot;generateName&quot;: &quot;A String&quot;, # (Optional) Not supported by Cloud Run GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server. If this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header). Applied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#idempotency string generateName = 2;
    &quot;generation&quot;: 42, # (Optional) A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.
    &quot;labels&quot;: { # (Optional) Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and routes. More info: http://kubernetes.io/docs/user-guide/labels
      &quot;a_key&quot;: &quot;A String&quot;,
    },
    &quot;name&quot;: &quot;A String&quot;, # Name must be unique within a namespace, within a Cloud Run region. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names +optional
    &quot;namespace&quot;: &quot;A String&quot;, # Namespace defines the space within each name must be unique, within a Cloud Run region. In Cloud Run the namespace must be equal to either the project ID or project number.
    &quot;ownerReferences&quot;: [ # (Optional) Not supported by Cloud Run List of objects that own this object. If ALL objects in the list have been deleted, this object will be garbage collected.
      { # OwnerReference contains enough information to let you identify an owning object. Currently, an owning object must be in the same namespace, so there is no namespace field.
        &quot;apiVersion&quot;: &quot;A String&quot;, # API version of the referent.
        &quot;blockOwnerDeletion&quot;: True or False, # If true, AND if the owner has the &quot;foregroundDeletion&quot; finalizer, then the owner cannot be deleted from the key-value store until this reference is removed. Defaults to false. To set this field, a user needs &quot;delete&quot; permission of the owner, otherwise 422 (Unprocessable Entity) will be returned. +optional
        &quot;controller&quot;: True or False, # If true, this reference points to the managing controller. +optional
        &quot;kind&quot;: &quot;A String&quot;, # Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
        &quot;name&quot;: &quot;A String&quot;, # Name of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#names
        &quot;uid&quot;: &quot;A String&quot;, # UID of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#uids
      },
    ],
    &quot;resourceVersion&quot;: &quot;A String&quot;, # Optional. An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server or omit the value to disable conflict-detection. They may only be valid for a particular resource or set of resources. Populated by the system. Read-only. Value must be treated as opaque by clients or omitted. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency
    &quot;selfLink&quot;: &quot;A String&quot;, # (Optional) SelfLink is a URL representing this object. Populated by the system. Read-only. string selfLink = 4;
    &quot;uid&quot;: &quot;A String&quot;, # (Optional) UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations. Populated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids
  },
  &quot;spec&quot;: { # ExecutionSpec describes how the execution will look. # Optional. Specification of the desired behavior of an execution. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status +optional
    &quot;parallelism&quot;: 42, # Optional. Specifies the maximum desired number of tasks the execution should run at any given time. Must be &lt;= task_count. The actual number of tasks running in steady state will be less than this number when ((.spec.task_count - .status.successful) &lt; .spec.parallelism), i.e. when the work left to do is less than max parallelism. More info: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/ +optional
    &quot;taskCount&quot;: 42, # Optional. Specifies the desired number of tasks the execution should run. Setting to 1 means that parallelism is limited to 1 and the success of that task signals the success of the execution. More info: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/ +optional
    &quot;template&quot;: { # TaskTemplateSpec describes the data a task should have when created from a template. # Optional. Describes the task(s) that will be created when executing an execution.
      &quot;spec&quot;: { # TaskSpec is a description of a task. # Optional. Specification of the desired behavior of the task. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status +optional
        &quot;containers&quot;: [ # Optional. List of containers belonging to the task. We disallow a number of fields on this Container. Only a single container may be provided.
          { # A single application container. This specifies both the container to run, the command to run in the container and the arguments to supply to it. Note that additional arguments may be supplied by the system to the container at runtime.
            &quot;args&quot;: [ # (Optional) Arguments to the entrypoint. The docker image&#x27;s CMD is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container&#x27;s environment. If a variable cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded, regardless of whether the variable exists or not. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell
              &quot;A String&quot;,
            ],
            &quot;command&quot;: [
              &quot;A String&quot;,
            ],
            &quot;env&quot;: [ # (Optional) List of environment variables to set in the container.
              { # EnvVar represents an environment variable present in a Container.
                &quot;name&quot;: &quot;A String&quot;, # Name of the environment variable. Must be a C_IDENTIFIER.
                &quot;value&quot;: &quot;A String&quot;, # (Optional) Variable references $(VAR_NAME) are expanded using the previous defined environment variables in the container and any route environment variables. If a variable cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded, regardless of whether the variable exists or not. Defaults to &quot;&quot;.
                &quot;valueFrom&quot;: { # EnvVarSource represents a source for the value of an EnvVar. # (Optional) Source for the environment variable&#x27;s value. Only supports secret_key_ref. Source for the environment variable&#x27;s value. Cannot be used if value is not empty.
                  &quot;configMapKeyRef&quot;: { # Not supported by Cloud Run Selects a key from a ConfigMap. # (Optional) Not supported by Cloud Run Selects a key of a ConfigMap.
                    &quot;key&quot;: &quot;A String&quot;, # The key to select.
                    &quot;localObjectReference&quot;: { # Not supported by Cloud Run LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace. # This field should not be used directly as it is meant to be inlined directly into the message. Use the &quot;name&quot; field instead.
                      &quot;name&quot;: &quot;A String&quot;, # (Optional) Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                    },
                    &quot;name&quot;: &quot;A String&quot;, # The ConfigMap to select from.
                    &quot;optional&quot;: True or False, # (Optional) Specify whether the ConfigMap or its key must be defined
                  },
                  &quot;secretKeyRef&quot;: { # SecretKeySelector selects a key of a Secret. # (Optional) Selects a key (version) of a secret in Secret Manager.
                    &quot;key&quot;: &quot;A String&quot;, # A Cloud Secret Manager secret version. Must be &#x27;latest&#x27; for the latest version or an integer for a specific version. The key of the secret to select from. Must be a valid secret key.
                    &quot;localObjectReference&quot;: { # Not supported by Cloud Run LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace. # This field should not be used directly as it is meant to be inlined directly into the message. Use the &quot;name&quot; field instead.
                      &quot;name&quot;: &quot;A String&quot;, # (Optional) Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                    },
                    &quot;name&quot;: &quot;A String&quot;, # The name of the secret in Cloud Secret Manager. By default, the secret is assumed to be in the same project. If the secret is in another project, you must define an alias. An alias definition has the form: :projects//secrets/. If multiple alias definitions are needed, they must be separated by commas. The alias definitions must be set on the run.googleapis.com/secrets annotation. The name of the secret in the pod&#x27;s namespace to select from.
                    &quot;optional&quot;: True or False, # (Optional) Specify whether the Secret or its key must be defined
                  },
                },
              },
            ],
            &quot;envFrom&quot;: [ # (Optional) List of sources to populate environment variables in the container. The keys defined within a source must be a C_IDENTIFIER. All invalid keys will be reported as an event when the container is starting. When a key exists in multiple sources, the value associated with the last source will take precedence. Values defined by an Env with a duplicate key will take precedence. Cannot be updated.
              { # Not supported by Cloud Run EnvFromSource represents the source of a set of ConfigMaps
                &quot;configMapRef&quot;: { # Not supported by Cloud Run ConfigMapEnvSource selects a ConfigMap to populate the environment variables with. The contents of the target ConfigMap&#x27;s Data field will represent the key-value pairs as environment variables. # (Optional) The ConfigMap to select from
                  &quot;localObjectReference&quot;: { # Not supported by Cloud Run LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace. # This field should not be used directly as it is meant to be inlined directly into the message. Use the &quot;name&quot; field instead.
                    &quot;name&quot;: &quot;A String&quot;, # (Optional) Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                  },
                  &quot;name&quot;: &quot;A String&quot;, # The ConfigMap to select from.
                  &quot;optional&quot;: True or False, # (Optional) Specify whether the ConfigMap must be defined
                },
                &quot;prefix&quot;: &quot;A String&quot;, # (Optional) An optional identifier to prepend to each key in the ConfigMap. Must be a C_IDENTIFIER.
                &quot;secretRef&quot;: { # Not supported by Cloud Run SecretEnvSource selects a Secret to populate the environment variables with. The contents of the target Secret&#x27;s Data field will represent the key-value pairs as environment variables. # (Optional) The Secret to select from
                  &quot;localObjectReference&quot;: { # Not supported by Cloud Run LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace. # This field should not be used directly as it is meant to be inlined directly into the message. Use the &quot;name&quot; field instead.
                    &quot;name&quot;: &quot;A String&quot;, # (Optional) Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                  },
                  &quot;name&quot;: &quot;A String&quot;, # The Secret to select from.
                  &quot;optional&quot;: True or False, # (Optional) Specify whether the Secret must be defined
                },
              },
            ],
            &quot;image&quot;: &quot;A String&quot;, # Only supports containers from Google Container Registry or Artifact Registry URL of the Container image. More info: https://kubernetes.io/docs/concepts/containers/images
            &quot;imagePullPolicy&quot;: &quot;A String&quot;, # (Optional) Image pull policy. One of Always, Never, IfNotPresent. Defaults to Always if :latest tag is specified, or IfNotPresent otherwise. More info: https://kubernetes.io/docs/concepts/containers/images#updating-images
            &quot;livenessProbe&quot;: { # Not supported by Cloud Run Probe describes a health check to be performed against a container to determine whether it is alive or ready to receive traffic. # (Optional) Periodic probe of container liveness. Container will be restarted if the probe fails. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
              &quot;exec&quot;: { # Not supported by Cloud Run ExecAction describes a &quot;run in container&quot; action. # (Optional) One and only one of the following should be specified. Exec specifies the action to take. A field inlined from the Handler message.
                &quot;command&quot;: [ # (Optional) Command is the command line to execute inside the container, the working directory for the command is root (&#x27;/&#x27;) in the container&#x27;s filesystem. The command is simply exec&#x27;d, it is not run inside a shell, so traditional shell instructions (&#x27;|&#x27;, etc) won&#x27;t work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy.
                  &quot;A String&quot;,
                ],
              },
              &quot;failureThreshold&quot;: 42, # (Optional) Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1.
              &quot;httpGet&quot;: { # Not supported by Cloud Run HTTPGetAction describes an action based on HTTP Get requests. # (Optional) HTTPGet specifies the http request to perform. A field inlined from the Handler message.
                &quot;host&quot;: &quot;A String&quot;, # (Optional) Host name to connect to, defaults to the pod IP. You probably want to set &quot;Host&quot; in httpHeaders instead.
                &quot;httpHeaders&quot;: [ # (Optional) Custom headers to set in the request. HTTP allows repeated headers.
                  { # Not supported by Cloud Run HTTPHeader describes a custom header to be used in HTTP probes
                    &quot;name&quot;: &quot;A String&quot;, # The header field name
                    &quot;value&quot;: &quot;A String&quot;, # The header field value
                  },
                ],
                &quot;path&quot;: &quot;A String&quot;, # (Optional) Path to access on the HTTP server.
                &quot;scheme&quot;: &quot;A String&quot;, # (Optional) Scheme to use for connecting to the host. Defaults to HTTP.
              },
              &quot;initialDelaySeconds&quot;: 42, # (Optional) Number of seconds after the container has started before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
              &quot;periodSeconds&quot;: 42, # (Optional) How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1.
              &quot;successThreshold&quot;: 42, # (Optional) Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness. Minimum value is 1.
              &quot;tcpSocket&quot;: { # Not supported by Cloud Run TCPSocketAction describes an action based on opening a socket # (Optional) TCPSocket specifies an action involving a TCP port. TCP hooks not yet supported A field inlined from the Handler message.
                &quot;host&quot;: &quot;A String&quot;, # (Optional) Optional: Host name to connect to, defaults to the pod IP.
                &quot;port&quot;: 42, # Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. This field is currently limited to integer types only because of proto&#x27;s inability to properly support the IntOrString golang type.
              },
              &quot;timeoutSeconds&quot;: 42, # (Optional) Number of seconds after which the probe times out. Defaults to 1 second. Minimum value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
            },
            &quot;name&quot;: &quot;A String&quot;, # (Optional) Name of the container specified as a DNS_LABEL. Currently unused in Cloud Run. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#dns-label-names
            &quot;ports&quot;: [ # (Optional) List of ports to expose from the container. Only a single port can be specified. The specified ports must be listening on all interfaces (0.0.0.0) within the container to be accessible. If omitted, a port number will be chosen and passed to the container through the PORT environment variable for the container to listen on.
              { # ContainerPort represents a network port in a single container.
                &quot;containerPort&quot;: 42, # (Optional) Port number the container listens on. This must be a valid port number, 0 &lt; x &lt; 65536.
                &quot;name&quot;: &quot;A String&quot;, # (Optional) If specified, used to specify which protocol to use. Allowed values are &quot;http1&quot; and &quot;h2c&quot;.
                &quot;protocol&quot;: &quot;A String&quot;, # (Optional) Protocol for port. Must be &quot;TCP&quot;. Defaults to &quot;TCP&quot;.
              },
            ],
            &quot;readinessProbe&quot;: { # Not supported by Cloud Run Probe describes a health check to be performed against a container to determine whether it is alive or ready to receive traffic. # (Optional) Periodic probe of container service readiness. Container will be removed from service endpoints if the probe fails. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
              &quot;exec&quot;: { # Not supported by Cloud Run ExecAction describes a &quot;run in container&quot; action. # (Optional) One and only one of the following should be specified. Exec specifies the action to take. A field inlined from the Handler message.
                &quot;command&quot;: [ # (Optional) Command is the command line to execute inside the container, the working directory for the command is root (&#x27;/&#x27;) in the container&#x27;s filesystem. The command is simply exec&#x27;d, it is not run inside a shell, so traditional shell instructions (&#x27;|&#x27;, etc) won&#x27;t work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy.
                  &quot;A String&quot;,
                ],
              },
              &quot;failureThreshold&quot;: 42, # (Optional) Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1.
              &quot;httpGet&quot;: { # Not supported by Cloud Run HTTPGetAction describes an action based on HTTP Get requests. # (Optional) HTTPGet specifies the http request to perform. A field inlined from the Handler message.
                &quot;host&quot;: &quot;A String&quot;, # (Optional) Host name to connect to, defaults to the pod IP. You probably want to set &quot;Host&quot; in httpHeaders instead.
                &quot;httpHeaders&quot;: [ # (Optional) Custom headers to set in the request. HTTP allows repeated headers.
                  { # Not supported by Cloud Run HTTPHeader describes a custom header to be used in HTTP probes
                    &quot;name&quot;: &quot;A String&quot;, # The header field name
                    &quot;value&quot;: &quot;A String&quot;, # The header field value
                  },
                ],
                &quot;path&quot;: &quot;A String&quot;, # (Optional) Path to access on the HTTP server.
                &quot;scheme&quot;: &quot;A String&quot;, # (Optional) Scheme to use for connecting to the host. Defaults to HTTP.
              },
              &quot;initialDelaySeconds&quot;: 42, # (Optional) Number of seconds after the container has started before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
              &quot;periodSeconds&quot;: 42, # (Optional) How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1.
              &quot;successThreshold&quot;: 42, # (Optional) Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness. Minimum value is 1.
              &quot;tcpSocket&quot;: { # Not supported by Cloud Run TCPSocketAction describes an action based on opening a socket # (Optional) TCPSocket specifies an action involving a TCP port. TCP hooks not yet supported A field inlined from the Handler message.
                &quot;host&quot;: &quot;A String&quot;, # (Optional) Optional: Host name to connect to, defaults to the pod IP.
                &quot;port&quot;: 42, # Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. This field is currently limited to integer types only because of proto&#x27;s inability to properly support the IntOrString golang type.
              },
              &quot;timeoutSeconds&quot;: 42, # (Optional) Number of seconds after which the probe times out. Defaults to 1 second. Minimum value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
            },
            &quot;resources&quot;: { # ResourceRequirements describes the compute resource requirements. # (Optional) Compute Resources required by this container. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources
              &quot;limits&quot;: { # (Optional) Only memory and CPU are supported. Limits describes the maximum amount of compute resources allowed. The values of the map is string form of the &#x27;quantity&#x27; k8s type: https://github.com/kubernetes/kubernetes/blob/master/staging/src/k8s.io/apimachinery/pkg/api/resource/quantity.go
                &quot;a_key&quot;: &quot;A String&quot;,
              },
              &quot;requests&quot;: { # (Optional) Only memory and CPU are supported. Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. The values of the map is string form of the &#x27;quantity&#x27; k8s type: https://github.com/kubernetes/kubernetes/blob/master/staging/src/k8s.io/apimachinery/pkg/api/resource/quantity.go
                &quot;a_key&quot;: &quot;A String&quot;,
              },
            },
            &quot;securityContext&quot;: { # Not supported by Cloud Run SecurityContext holds security configuration that will be applied to a container. Some fields are present in both SecurityContext and PodSecurityContext. When both are set, the values in SecurityContext take precedence. # (Optional) Security options the pod should run with. More info: https://kubernetes.io/docs/concepts/policy/security-context/ More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/
              &quot;runAsUser&quot;: 42, # (Optional) The UID to run the entrypoint of the container process. Defaults to user specified in image metadata if unspecified. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.
            },
            &quot;startupProbe&quot;: { # Not supported by Cloud Run Probe describes a health check to be performed against a container to determine whether it is alive or ready to receive traffic. # (Optional) Startup probe of application within the container. All other probes are disabled if a startup probe is provided, until it succeeds. Container will not be added to service endpoints if the probe fails. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
              &quot;exec&quot;: { # Not supported by Cloud Run ExecAction describes a &quot;run in container&quot; action. # (Optional) One and only one of the following should be specified. Exec specifies the action to take. A field inlined from the Handler message.
                &quot;command&quot;: [ # (Optional) Command is the command line to execute inside the container, the working directory for the command is root (&#x27;/&#x27;) in the container&#x27;s filesystem. The command is simply exec&#x27;d, it is not run inside a shell, so traditional shell instructions (&#x27;|&#x27;, etc) won&#x27;t work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy.
                  &quot;A String&quot;,
                ],
              },
              &quot;failureThreshold&quot;: 42, # (Optional) Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1.
              &quot;httpGet&quot;: { # Not supported by Cloud Run HTTPGetAction describes an action based on HTTP Get requests. # (Optional) HTTPGet specifies the http request to perform. A field inlined from the Handler message.
                &quot;host&quot;: &quot;A String&quot;, # (Optional) Host name to connect to, defaults to the pod IP. You probably want to set &quot;Host&quot; in httpHeaders instead.
                &quot;httpHeaders&quot;: [ # (Optional) Custom headers to set in the request. HTTP allows repeated headers.
                  { # Not supported by Cloud Run HTTPHeader describes a custom header to be used in HTTP probes
                    &quot;name&quot;: &quot;A String&quot;, # The header field name
                    &quot;value&quot;: &quot;A String&quot;, # The header field value
                  },
                ],
                &quot;path&quot;: &quot;A String&quot;, # (Optional) Path to access on the HTTP server.
                &quot;scheme&quot;: &quot;A String&quot;, # (Optional) Scheme to use for connecting to the host. Defaults to HTTP.
              },
              &quot;initialDelaySeconds&quot;: 42, # (Optional) Number of seconds after the container has started before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
              &quot;periodSeconds&quot;: 42, # (Optional) How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1.
              &quot;successThreshold&quot;: 42, # (Optional) Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness. Minimum value is 1.
              &quot;tcpSocket&quot;: { # Not supported by Cloud Run TCPSocketAction describes an action based on opening a socket # (Optional) TCPSocket specifies an action involving a TCP port. TCP hooks not yet supported A field inlined from the Handler message.
                &quot;host&quot;: &quot;A String&quot;, # (Optional) Optional: Host name to connect to, defaults to the pod IP.
                &quot;port&quot;: 42, # Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. This field is currently limited to integer types only because of proto&#x27;s inability to properly support the IntOrString golang type.
              },
              &quot;timeoutSeconds&quot;: 42, # (Optional) Number of seconds after which the probe times out. Defaults to 1 second. Minimum value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
            },
            &quot;terminationMessagePath&quot;: &quot;A String&quot;, # (Optional) Path at which the file to which the container&#x27;s termination message will be written is mounted into the container&#x27;s filesystem. Message written is intended to be brief final status, such as an assertion failure message. Will be truncated by the node if greater than 4096 bytes. The total message length across all containers will be limited to 12kb. Defaults to /dev/termination-log.
            &quot;terminationMessagePolicy&quot;: &quot;A String&quot;, # (Optional) Indicate how the termination message should be populated. File will use the contents of terminationMessagePath to populate the container status message on both success and failure. FallbackToLogsOnError will use the last chunk of container log output if the termination message file is empty and the container exited with an error. The log output is limited to 2048 bytes or 80 lines, whichever is smaller. Defaults to File. Cannot be updated.
            &quot;volumeMounts&quot;: [ # (Optional) Volume to mount into the container&#x27;s filesystem. Only supports SecretVolumeSources. Pod volumes to mount into the container&#x27;s filesystem.
              { # VolumeMount describes a mounting of a Volume within a container.
                &quot;mountPath&quot;: &quot;A String&quot;, # Path within the container at which the volume should be mounted. Must not contain &#x27;:&#x27;.
                &quot;name&quot;: &quot;A String&quot;, # The name of the volume. There must be a corresponding Volume with the same name.
                &quot;readOnly&quot;: True or False, # (Optional) Only true is accepted. Defaults to true.
                &quot;subPath&quot;: &quot;A String&quot;, # (Optional) Path within the volume from which the container&#x27;s volume should be mounted. Defaults to &quot;&quot; (volume&#x27;s root).
              },
            ],
            &quot;workingDir&quot;: &quot;A String&quot;, # (Optional) Container&#x27;s working directory. If not specified, the container runtime&#x27;s default will be used, which might be configured in the container image.
          },
        ],
        &quot;maxRetries&quot;: 42, # Optional. Number of retries allowed per task, before marking this job failed.
        &quot;serviceAccountName&quot;: &quot;A String&quot;, # Optional. Email address of the IAM service account associated with the task of a job execution. The service account represents the identity of the running task, and determines what permissions the task has. If not provided, the task will use the project&#x27;s default service account. +optional
        &quot;timeoutSeconds&quot;: &quot;A String&quot;, # Optional. Optional duration in seconds the task may be active before the system will actively try to mark it failed and kill associated containers. This applies per attempt of a task, meaning each retry can run for the full timeout. +optional
        &quot;volumes&quot;: [ # Optional. List of volumes that can be mounted by containers belonging to the task. More info: https://kubernetes.io/docs/concepts/storage/volumes +optional
          { # Volume represents a named volume in a container.
            &quot;configMap&quot;: { # Not supported by Cloud Run Adapts a ConfigMap into a volume. The contents of the target ConfigMap&#x27;s Data field will be presented in a volume as files using the keys in the Data field as the file names, unless the items element is populated with specific mappings of keys to paths.
              &quot;defaultMode&quot;: 42, # (Optional) Integer representation of mode bits to use on created files by default. Must be a value between 01 and 0777 (octal). If 0 or not set, it will default to 0644. Directories within the path are not affected by this setting. Notes * Internally, a umask of 0222 will be applied to any non-zero value. * This is an integer representation of the mode bits. So, the octal integer value should look exactly as the chmod numeric notation with a leading zero. Some examples: for chmod 777 (a=rwx), set to 0777 (octal) or 511 (base-10). For chmod 640 (u=rw,g=r), set to 0640 (octal) or 416 (base-10). For chmod 755 (u=rwx,g=rx,o=rx), set to 0755 (octal) or 493 (base-10). * This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.
              &quot;items&quot;: [ # (Optional) If unspecified, each key-value pair in the Data field of the referenced Secret will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified that is not present in the Secret, the volume setup will error unless it is marked optional.
                { # Maps a string key to a path within a volume.
                  &quot;key&quot;: &quot;A String&quot;, # The Cloud Secret Manager secret version. Can be &#x27;latest&#x27; for the latest value or an integer for a specific version. The key to project.
                  &quot;mode&quot;: 42, # (Optional) Mode bits to use on this file, must be a value between 01 and 0777 (octal). If 0 or not set, the Volume&#x27;s default mode will be used. Notes * Internally, a umask of 0222 will be applied to any non-zero value. * This is an integer representation of the mode bits. So, the octal integer value should look exactly as the chmod numeric notation with a leading zero. Some examples: for chmod 777 (a=rwx), set to 0777 (octal) or 511 (base-10). For chmod 640 (u=rw,g=r), set to 0640 (octal) or 416 (base-10). For chmod 755 (u=rwx,g=rx,o=rx), set to 0755 (octal) or 493 (base-10). * This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.
                  &quot;path&quot;: &quot;A String&quot;, # The relative path of the file to map the key to. May not be an absolute path. May not contain the path element &#x27;..&#x27;. May not start with the string &#x27;..&#x27;.
                },
              ],
              &quot;name&quot;: &quot;A String&quot;, # Name of the config.
              &quot;optional&quot;: True or False, # (Optional) Specify whether the Secret or its keys must be defined.
            },
            &quot;name&quot;: &quot;A String&quot;, # Volume&#x27;s name. In Cloud Run Fully Managed, the name &#x27;cloudsql&#x27; is reserved.
            &quot;secret&quot;: { # The secret&#x27;s value will be presented as the content of a file whose name is defined in the item path. If no items are defined, the name of the file is the secret_name. The contents of the target Secret&#x27;s Data field will be presented in a volume as files using the keys in the Data field as the file names.
              &quot;defaultMode&quot;: 42, # Integer representation of mode bits to use on created files by default. Must be a value between 01 and 0777 (octal). If 0 or not set, it will default to 0644. Directories within the path are not affected by this setting. Notes * Internally, a umask of 0222 will be applied to any non-zero value. * This is an integer representation of the mode bits. So, the octal integer value should look exactly as the chmod numeric notation with a leading zero. Some examples: for chmod 777 (a=rwx), set to 0777 (octal) or 511 (base-10). For chmod 640 (u=rw,g=r), set to 0640 (octal) or 416 (base-10). For chmod 755 (u=rwx,g=rx,o=rx), set to 0755 (octal) or 493 (base-10). * This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.
              &quot;items&quot;: [ # (Optional) If unspecified, the volume will expose a file whose name is the secret_name. If specified, the key will be used as the version to fetch from Cloud Secret Manager and the path will be the name of the file exposed in the volume. When items are defined, they must specify a key and a path. If unspecified, each key-value pair in the Data field of the referenced Secret will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified that is not present in the Secret, the volume setup will error unless it is marked optional.
                { # Maps a string key to a path within a volume.
                  &quot;key&quot;: &quot;A String&quot;, # The Cloud Secret Manager secret version. Can be &#x27;latest&#x27; for the latest value or an integer for a specific version. The key to project.
                  &quot;mode&quot;: 42, # (Optional) Mode bits to use on this file, must be a value between 01 and 0777 (octal). If 0 or not set, the Volume&#x27;s default mode will be used. Notes * Internally, a umask of 0222 will be applied to any non-zero value. * This is an integer representation of the mode bits. So, the octal integer value should look exactly as the chmod numeric notation with a leading zero. Some examples: for chmod 777 (a=rwx), set to 0777 (octal) or 511 (base-10). For chmod 640 (u=rw,g=r), set to 0640 (octal) or 416 (base-10). For chmod 755 (u=rwx,g=rx,o=rx), set to 0755 (octal) or 493 (base-10). * This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.
                  &quot;path&quot;: &quot;A String&quot;, # The relative path of the file to map the key to. May not be an absolute path. May not contain the path element &#x27;..&#x27;. May not start with the string &#x27;..&#x27;.
                },
              ],
              &quot;optional&quot;: True or False, # (Optional) Specify whether the Secret or its keys must be defined.
              &quot;secretName&quot;: &quot;A String&quot;, # The name of the secret in Cloud Secret Manager. By default, the secret is assumed to be in the same project. If the secret is in another project, you must define an alias. An alias definition has the form: :projects//secrets/. If multiple alias definitions are needed, they must be separated by commas. The alias definitions must be set on the run.googleapis.com/secrets annotation. Name of the secret in the container&#x27;s namespace to use.
            },
          },
        ],
      },
    },
  },
  &quot;status&quot;: { # ExecutionStatus represents the current state of a Execution. # Output only. Current status of an execution. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status +optional
    &quot;completionTime&quot;: &quot;A String&quot;, # Optional. Represents time when the execution was completed. It is not guaranteed to be set in happens-before order across separate operations. It is represented in RFC3339 form and is in UTC. +optional
    &quot;conditions&quot;: [ # Optional. The latest available observations of an execution&#x27;s current state. More info: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/ +optional
      { # Condition defines a generic condition for a Resource.
        &quot;lastTransitionTime&quot;: &quot;A String&quot;, # Optional. Last time the condition transitioned from one status to another.
        &quot;message&quot;: &quot;A String&quot;, # Optional. Human readable message indicating details about the current status.
        &quot;reason&quot;: &quot;A String&quot;, # Optional. One-word CamelCase reason for the condition&#x27;s last transition.
        &quot;severity&quot;: &quot;A String&quot;, # Optional. How to interpret failures of this condition, one of Error, Warning, Info
        &quot;status&quot;: &quot;A String&quot;, # Status of the condition, one of True, False, Unknown.
        &quot;type&quot;: &quot;A String&quot;, # type is used to communicate the status of the reconciliation process. See also: https://github.com/knative/serving/blob/main/docs/spec/errors.md#error-conditions-and-reporting Types common to all resources include: * &quot;Ready&quot;: True when the Resource is ready.
      },
    ],
    &quot;failedCount&quot;: 42, # Optional. The number of tasks which reached phase Failed. +optional
    &quot;logUri&quot;: &quot;A String&quot;, # Optional. URI where logs for this execution can be found in Cloud Console.
    &quot;observedGeneration&quot;: 42, # Optional. The &#x27;generation&#x27; of the execution that was last processed by the controller.
    &quot;runningCount&quot;: 42, # Optional. The number of actively running tasks. +optional
    &quot;startTime&quot;: &quot;A String&quot;, # Optional. Represents time when the execution started to run. It is not guaranteed to be set in happens-before order across separate operations. It is represented in RFC3339 form and is in UTC. +optional
    &quot;succeededCount&quot;: 42, # Optional. The number of tasks which reached phase Succeeded. +optional
  },
}</pre>
</div>

<div class="method">
    <code class="details" id="list">list(parent, continue=None, fieldSelector=None, includeUninitialized=None, labelSelector=None, limit=None, resourceVersion=None, watch=None, x__xgafv=None)</code>
  <pre>List executions.

Args:
  parent: string, Required. The namespace from which the executions should be listed. Replace {namespace_id} with the project ID or number. (required)
  continue: string, Optional. Optional encoded string to continue paging.
  fieldSelector: string, Optional. Allows to filter resources based on a specific value for a field name. Send this in a query string format. i.e. &#x27;metadata.name%3Dlorem&#x27;. Not currently used by Cloud Run.
  includeUninitialized: boolean, Optional. Not currently used by Cloud Run.
  labelSelector: string, Optional. Allows to filter resources based on a label. Supported operations are =, !=, exists, in, and notIn.
  limit: integer, Optional. The maximum number of records that should be returned.
  resourceVersion: string, Optional. The baseline resource version from which the list or watch operation should start. Not currently used by Cloud Run.
  watch: boolean, Optional. Flag that indicates that the client expects to watch this resource as well. Not currently used by Cloud Run.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # ListExecutionsResponse is a list of Executions resources.
  &quot;apiVersion&quot;: &quot;A String&quot;, # The API version for this call such as &quot;run.googleapis.com/v1&quot;.
  &quot;items&quot;: [ # List of Executions.
    { # Execution represents the configuration of a single execution. A execution an immutable resource that references a container image which is run to completion.
      &quot;apiVersion&quot;: &quot;A String&quot;, # Optional. APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources +optional
      &quot;kind&quot;: &quot;A String&quot;, # Optional. Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds +optional
      &quot;metadata&quot;: { # k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create. # Optional. Standard object&#x27;s metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata +optional
        &quot;annotations&quot;: { # (Optional) Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations
          &quot;a_key&quot;: &quot;A String&quot;,
        },
        &quot;clusterName&quot;: &quot;A String&quot;, # (Optional) Not supported by Cloud Run The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.
        &quot;creationTimestamp&quot;: &quot;A String&quot;, # (Optional) CreationTimestamp is a timestamp representing the server time when this object was created. It is not guaranteed to be set in happens-before order across separate operations. Clients may not set this value. It is represented in RFC3339 form and is in UTC. Populated by the system. Read-only. Null for lists. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata
        &quot;deletionGracePeriodSeconds&quot;: 42, # (Optional) Not supported by Cloud Run Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.
        &quot;deletionTimestamp&quot;: &quot;A String&quot;, # (Optional) Not supported by Cloud Run DeletionTimestamp is RFC 3339 date and time at which this resource will be deleted. This field is set by the server when a graceful deletion is requested by the user, and is not directly settable by a client. The resource is expected to be deleted (no longer visible from resource lists, and not reachable by name) after the time in this field, once the finalizers list is empty. As long as the finalizers list contains items, deletion is blocked. Once the deletionTimestamp is set, this value may not be unset or be set further into the future, although it may be shortened or the resource may be deleted prior to this time. For example, a user may request that a pod is deleted in 30 seconds. The Kubelet will react by sending a graceful termination signal to the containers in the pod. After that 30 seconds, the Kubelet will send a hard termination signal (SIGKILL) to the container and after cleanup, remove the pod from the API. In the presence of network partitions, this object may still exist after this timestamp, until an administrator or automated process can determine the resource is fully terminated. If not set, graceful deletion of the object has not been requested. Populated by the system when a graceful deletion is requested. Read-only. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata
        &quot;finalizers&quot;: [ # (Optional) Not supported by Cloud Run Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. +patchStrategy=merge
          &quot;A String&quot;,
        ],
        &quot;generateName&quot;: &quot;A String&quot;, # (Optional) Not supported by Cloud Run GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server. If this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header). Applied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#idempotency string generateName = 2;
        &quot;generation&quot;: 42, # (Optional) A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.
        &quot;labels&quot;: { # (Optional) Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and routes. More info: http://kubernetes.io/docs/user-guide/labels
          &quot;a_key&quot;: &quot;A String&quot;,
        },
        &quot;name&quot;: &quot;A String&quot;, # Name must be unique within a namespace, within a Cloud Run region. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names +optional
        &quot;namespace&quot;: &quot;A String&quot;, # Namespace defines the space within each name must be unique, within a Cloud Run region. In Cloud Run the namespace must be equal to either the project ID or project number.
        &quot;ownerReferences&quot;: [ # (Optional) Not supported by Cloud Run List of objects that own this object. If ALL objects in the list have been deleted, this object will be garbage collected.
          { # OwnerReference contains enough information to let you identify an owning object. Currently, an owning object must be in the same namespace, so there is no namespace field.
            &quot;apiVersion&quot;: &quot;A String&quot;, # API version of the referent.
            &quot;blockOwnerDeletion&quot;: True or False, # If true, AND if the owner has the &quot;foregroundDeletion&quot; finalizer, then the owner cannot be deleted from the key-value store until this reference is removed. Defaults to false. To set this field, a user needs &quot;delete&quot; permission of the owner, otherwise 422 (Unprocessable Entity) will be returned. +optional
            &quot;controller&quot;: True or False, # If true, this reference points to the managing controller. +optional
            &quot;kind&quot;: &quot;A String&quot;, # Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
            &quot;name&quot;: &quot;A String&quot;, # Name of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#names
            &quot;uid&quot;: &quot;A String&quot;, # UID of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#uids
          },
        ],
        &quot;resourceVersion&quot;: &quot;A String&quot;, # Optional. An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server or omit the value to disable conflict-detection. They may only be valid for a particular resource or set of resources. Populated by the system. Read-only. Value must be treated as opaque by clients or omitted. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency
        &quot;selfLink&quot;: &quot;A String&quot;, # (Optional) SelfLink is a URL representing this object. Populated by the system. Read-only. string selfLink = 4;
        &quot;uid&quot;: &quot;A String&quot;, # (Optional) UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations. Populated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids
      },
      &quot;spec&quot;: { # ExecutionSpec describes how the execution will look. # Optional. Specification of the desired behavior of an execution. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status +optional
        &quot;parallelism&quot;: 42, # Optional. Specifies the maximum desired number of tasks the execution should run at any given time. Must be &lt;= task_count. The actual number of tasks running in steady state will be less than this number when ((.spec.task_count - .status.successful) &lt; .spec.parallelism), i.e. when the work left to do is less than max parallelism. More info: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/ +optional
        &quot;taskCount&quot;: 42, # Optional. Specifies the desired number of tasks the execution should run. Setting to 1 means that parallelism is limited to 1 and the success of that task signals the success of the execution. More info: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/ +optional
        &quot;template&quot;: { # TaskTemplateSpec describes the data a task should have when created from a template. # Optional. Describes the task(s) that will be created when executing an execution.
          &quot;spec&quot;: { # TaskSpec is a description of a task. # Optional. Specification of the desired behavior of the task. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status +optional
            &quot;containers&quot;: [ # Optional. List of containers belonging to the task. We disallow a number of fields on this Container. Only a single container may be provided.
              { # A single application container. This specifies both the container to run, the command to run in the container and the arguments to supply to it. Note that additional arguments may be supplied by the system to the container at runtime.
                &quot;args&quot;: [ # (Optional) Arguments to the entrypoint. The docker image&#x27;s CMD is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container&#x27;s environment. If a variable cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded, regardless of whether the variable exists or not. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell
                  &quot;A String&quot;,
                ],
                &quot;command&quot;: [
                  &quot;A String&quot;,
                ],
                &quot;env&quot;: [ # (Optional) List of environment variables to set in the container.
                  { # EnvVar represents an environment variable present in a Container.
                    &quot;name&quot;: &quot;A String&quot;, # Name of the environment variable. Must be a C_IDENTIFIER.
                    &quot;value&quot;: &quot;A String&quot;, # (Optional) Variable references $(VAR_NAME) are expanded using the previous defined environment variables in the container and any route environment variables. If a variable cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded, regardless of whether the variable exists or not. Defaults to &quot;&quot;.
                    &quot;valueFrom&quot;: { # EnvVarSource represents a source for the value of an EnvVar. # (Optional) Source for the environment variable&#x27;s value. Only supports secret_key_ref. Source for the environment variable&#x27;s value. Cannot be used if value is not empty.
                      &quot;configMapKeyRef&quot;: { # Not supported by Cloud Run Selects a key from a ConfigMap. # (Optional) Not supported by Cloud Run Selects a key of a ConfigMap.
                        &quot;key&quot;: &quot;A String&quot;, # The key to select.
                        &quot;localObjectReference&quot;: { # Not supported by Cloud Run LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace. # This field should not be used directly as it is meant to be inlined directly into the message. Use the &quot;name&quot; field instead.
                          &quot;name&quot;: &quot;A String&quot;, # (Optional) Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                        },
                        &quot;name&quot;: &quot;A String&quot;, # The ConfigMap to select from.
                        &quot;optional&quot;: True or False, # (Optional) Specify whether the ConfigMap or its key must be defined
                      },
                      &quot;secretKeyRef&quot;: { # SecretKeySelector selects a key of a Secret. # (Optional) Selects a key (version) of a secret in Secret Manager.
                        &quot;key&quot;: &quot;A String&quot;, # A Cloud Secret Manager secret version. Must be &#x27;latest&#x27; for the latest version or an integer for a specific version. The key of the secret to select from. Must be a valid secret key.
                        &quot;localObjectReference&quot;: { # Not supported by Cloud Run LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace. # This field should not be used directly as it is meant to be inlined directly into the message. Use the &quot;name&quot; field instead.
                          &quot;name&quot;: &quot;A String&quot;, # (Optional) Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                        },
                        &quot;name&quot;: &quot;A String&quot;, # The name of the secret in Cloud Secret Manager. By default, the secret is assumed to be in the same project. If the secret is in another project, you must define an alias. An alias definition has the form: :projects//secrets/. If multiple alias definitions are needed, they must be separated by commas. The alias definitions must be set on the run.googleapis.com/secrets annotation. The name of the secret in the pod&#x27;s namespace to select from.
                        &quot;optional&quot;: True or False, # (Optional) Specify whether the Secret or its key must be defined
                      },
                    },
                  },
                ],
                &quot;envFrom&quot;: [ # (Optional) List of sources to populate environment variables in the container. The keys defined within a source must be a C_IDENTIFIER. All invalid keys will be reported as an event when the container is starting. When a key exists in multiple sources, the value associated with the last source will take precedence. Values defined by an Env with a duplicate key will take precedence. Cannot be updated.
                  { # Not supported by Cloud Run EnvFromSource represents the source of a set of ConfigMaps
                    &quot;configMapRef&quot;: { # Not supported by Cloud Run ConfigMapEnvSource selects a ConfigMap to populate the environment variables with. The contents of the target ConfigMap&#x27;s Data field will represent the key-value pairs as environment variables. # (Optional) The ConfigMap to select from
                      &quot;localObjectReference&quot;: { # Not supported by Cloud Run LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace. # This field should not be used directly as it is meant to be inlined directly into the message. Use the &quot;name&quot; field instead.
                        &quot;name&quot;: &quot;A String&quot;, # (Optional) Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                      },
                      &quot;name&quot;: &quot;A String&quot;, # The ConfigMap to select from.
                      &quot;optional&quot;: True or False, # (Optional) Specify whether the ConfigMap must be defined
                    },
                    &quot;prefix&quot;: &quot;A String&quot;, # (Optional) An optional identifier to prepend to each key in the ConfigMap. Must be a C_IDENTIFIER.
                    &quot;secretRef&quot;: { # Not supported by Cloud Run SecretEnvSource selects a Secret to populate the environment variables with. The contents of the target Secret&#x27;s Data field will represent the key-value pairs as environment variables. # (Optional) The Secret to select from
                      &quot;localObjectReference&quot;: { # Not supported by Cloud Run LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace. # This field should not be used directly as it is meant to be inlined directly into the message. Use the &quot;name&quot; field instead.
                        &quot;name&quot;: &quot;A String&quot;, # (Optional) Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                      },
                      &quot;name&quot;: &quot;A String&quot;, # The Secret to select from.
                      &quot;optional&quot;: True or False, # (Optional) Specify whether the Secret must be defined
                    },
                  },
                ],
                &quot;image&quot;: &quot;A String&quot;, # Only supports containers from Google Container Registry or Artifact Registry URL of the Container image. More info: https://kubernetes.io/docs/concepts/containers/images
                &quot;imagePullPolicy&quot;: &quot;A String&quot;, # (Optional) Image pull policy. One of Always, Never, IfNotPresent. Defaults to Always if :latest tag is specified, or IfNotPresent otherwise. More info: https://kubernetes.io/docs/concepts/containers/images#updating-images
                &quot;livenessProbe&quot;: { # Not supported by Cloud Run Probe describes a health check to be performed against a container to determine whether it is alive or ready to receive traffic. # (Optional) Periodic probe of container liveness. Container will be restarted if the probe fails. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
                  &quot;exec&quot;: { # Not supported by Cloud Run ExecAction describes a &quot;run in container&quot; action. # (Optional) One and only one of the following should be specified. Exec specifies the action to take. A field inlined from the Handler message.
                    &quot;command&quot;: [ # (Optional) Command is the command line to execute inside the container, the working directory for the command is root (&#x27;/&#x27;) in the container&#x27;s filesystem. The command is simply exec&#x27;d, it is not run inside a shell, so traditional shell instructions (&#x27;|&#x27;, etc) won&#x27;t work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy.
                      &quot;A String&quot;,
                    ],
                  },
                  &quot;failureThreshold&quot;: 42, # (Optional) Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1.
                  &quot;httpGet&quot;: { # Not supported by Cloud Run HTTPGetAction describes an action based on HTTP Get requests. # (Optional) HTTPGet specifies the http request to perform. A field inlined from the Handler message.
                    &quot;host&quot;: &quot;A String&quot;, # (Optional) Host name to connect to, defaults to the pod IP. You probably want to set &quot;Host&quot; in httpHeaders instead.
                    &quot;httpHeaders&quot;: [ # (Optional) Custom headers to set in the request. HTTP allows repeated headers.
                      { # Not supported by Cloud Run HTTPHeader describes a custom header to be used in HTTP probes
                        &quot;name&quot;: &quot;A String&quot;, # The header field name
                        &quot;value&quot;: &quot;A String&quot;, # The header field value
                      },
                    ],
                    &quot;path&quot;: &quot;A String&quot;, # (Optional) Path to access on the HTTP server.
                    &quot;scheme&quot;: &quot;A String&quot;, # (Optional) Scheme to use for connecting to the host. Defaults to HTTP.
                  },
                  &quot;initialDelaySeconds&quot;: 42, # (Optional) Number of seconds after the container has started before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
                  &quot;periodSeconds&quot;: 42, # (Optional) How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1.
                  &quot;successThreshold&quot;: 42, # (Optional) Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness. Minimum value is 1.
                  &quot;tcpSocket&quot;: { # Not supported by Cloud Run TCPSocketAction describes an action based on opening a socket # (Optional) TCPSocket specifies an action involving a TCP port. TCP hooks not yet supported A field inlined from the Handler message.
                    &quot;host&quot;: &quot;A String&quot;, # (Optional) Optional: Host name to connect to, defaults to the pod IP.
                    &quot;port&quot;: 42, # Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. This field is currently limited to integer types only because of proto&#x27;s inability to properly support the IntOrString golang type.
                  },
                  &quot;timeoutSeconds&quot;: 42, # (Optional) Number of seconds after which the probe times out. Defaults to 1 second. Minimum value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
                },
                &quot;name&quot;: &quot;A String&quot;, # (Optional) Name of the container specified as a DNS_LABEL. Currently unused in Cloud Run. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#dns-label-names
                &quot;ports&quot;: [ # (Optional) List of ports to expose from the container. Only a single port can be specified. The specified ports must be listening on all interfaces (0.0.0.0) within the container to be accessible. If omitted, a port number will be chosen and passed to the container through the PORT environment variable for the container to listen on.
                  { # ContainerPort represents a network port in a single container.
                    &quot;containerPort&quot;: 42, # (Optional) Port number the container listens on. This must be a valid port number, 0 &lt; x &lt; 65536.
                    &quot;name&quot;: &quot;A String&quot;, # (Optional) If specified, used to specify which protocol to use. Allowed values are &quot;http1&quot; and &quot;h2c&quot;.
                    &quot;protocol&quot;: &quot;A String&quot;, # (Optional) Protocol for port. Must be &quot;TCP&quot;. Defaults to &quot;TCP&quot;.
                  },
                ],
                &quot;readinessProbe&quot;: { # Not supported by Cloud Run Probe describes a health check to be performed against a container to determine whether it is alive or ready to receive traffic. # (Optional) Periodic probe of container service readiness. Container will be removed from service endpoints if the probe fails. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
                  &quot;exec&quot;: { # Not supported by Cloud Run ExecAction describes a &quot;run in container&quot; action. # (Optional) One and only one of the following should be specified. Exec specifies the action to take. A field inlined from the Handler message.
                    &quot;command&quot;: [ # (Optional) Command is the command line to execute inside the container, the working directory for the command is root (&#x27;/&#x27;) in the container&#x27;s filesystem. The command is simply exec&#x27;d, it is not run inside a shell, so traditional shell instructions (&#x27;|&#x27;, etc) won&#x27;t work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy.
                      &quot;A String&quot;,
                    ],
                  },
                  &quot;failureThreshold&quot;: 42, # (Optional) Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1.
                  &quot;httpGet&quot;: { # Not supported by Cloud Run HTTPGetAction describes an action based on HTTP Get requests. # (Optional) HTTPGet specifies the http request to perform. A field inlined from the Handler message.
                    &quot;host&quot;: &quot;A String&quot;, # (Optional) Host name to connect to, defaults to the pod IP. You probably want to set &quot;Host&quot; in httpHeaders instead.
                    &quot;httpHeaders&quot;: [ # (Optional) Custom headers to set in the request. HTTP allows repeated headers.
                      { # Not supported by Cloud Run HTTPHeader describes a custom header to be used in HTTP probes
                        &quot;name&quot;: &quot;A String&quot;, # The header field name
                        &quot;value&quot;: &quot;A String&quot;, # The header field value
                      },
                    ],
                    &quot;path&quot;: &quot;A String&quot;, # (Optional) Path to access on the HTTP server.
                    &quot;scheme&quot;: &quot;A String&quot;, # (Optional) Scheme to use for connecting to the host. Defaults to HTTP.
                  },
                  &quot;initialDelaySeconds&quot;: 42, # (Optional) Number of seconds after the container has started before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
                  &quot;periodSeconds&quot;: 42, # (Optional) How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1.
                  &quot;successThreshold&quot;: 42, # (Optional) Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness. Minimum value is 1.
                  &quot;tcpSocket&quot;: { # Not supported by Cloud Run TCPSocketAction describes an action based on opening a socket # (Optional) TCPSocket specifies an action involving a TCP port. TCP hooks not yet supported A field inlined from the Handler message.
                    &quot;host&quot;: &quot;A String&quot;, # (Optional) Optional: Host name to connect to, defaults to the pod IP.
                    &quot;port&quot;: 42, # Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. This field is currently limited to integer types only because of proto&#x27;s inability to properly support the IntOrString golang type.
                  },
                  &quot;timeoutSeconds&quot;: 42, # (Optional) Number of seconds after which the probe times out. Defaults to 1 second. Minimum value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
                },
                &quot;resources&quot;: { # ResourceRequirements describes the compute resource requirements. # (Optional) Compute Resources required by this container. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources
                  &quot;limits&quot;: { # (Optional) Only memory and CPU are supported. Limits describes the maximum amount of compute resources allowed. The values of the map is string form of the &#x27;quantity&#x27; k8s type: https://github.com/kubernetes/kubernetes/blob/master/staging/src/k8s.io/apimachinery/pkg/api/resource/quantity.go
                    &quot;a_key&quot;: &quot;A String&quot;,
                  },
                  &quot;requests&quot;: { # (Optional) Only memory and CPU are supported. Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. The values of the map is string form of the &#x27;quantity&#x27; k8s type: https://github.com/kubernetes/kubernetes/blob/master/staging/src/k8s.io/apimachinery/pkg/api/resource/quantity.go
                    &quot;a_key&quot;: &quot;A String&quot;,
                  },
                },
                &quot;securityContext&quot;: { # Not supported by Cloud Run SecurityContext holds security configuration that will be applied to a container. Some fields are present in both SecurityContext and PodSecurityContext. When both are set, the values in SecurityContext take precedence. # (Optional) Security options the pod should run with. More info: https://kubernetes.io/docs/concepts/policy/security-context/ More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/
                  &quot;runAsUser&quot;: 42, # (Optional) The UID to run the entrypoint of the container process. Defaults to user specified in image metadata if unspecified. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.
                },
                &quot;startupProbe&quot;: { # Not supported by Cloud Run Probe describes a health check to be performed against a container to determine whether it is alive or ready to receive traffic. # (Optional) Startup probe of application within the container. All other probes are disabled if a startup probe is provided, until it succeeds. Container will not be added to service endpoints if the probe fails. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
                  &quot;exec&quot;: { # Not supported by Cloud Run ExecAction describes a &quot;run in container&quot; action. # (Optional) One and only one of the following should be specified. Exec specifies the action to take. A field inlined from the Handler message.
                    &quot;command&quot;: [ # (Optional) Command is the command line to execute inside the container, the working directory for the command is root (&#x27;/&#x27;) in the container&#x27;s filesystem. The command is simply exec&#x27;d, it is not run inside a shell, so traditional shell instructions (&#x27;|&#x27;, etc) won&#x27;t work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy.
                      &quot;A String&quot;,
                    ],
                  },
                  &quot;failureThreshold&quot;: 42, # (Optional) Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1.
                  &quot;httpGet&quot;: { # Not supported by Cloud Run HTTPGetAction describes an action based on HTTP Get requests. # (Optional) HTTPGet specifies the http request to perform. A field inlined from the Handler message.
                    &quot;host&quot;: &quot;A String&quot;, # (Optional) Host name to connect to, defaults to the pod IP. You probably want to set &quot;Host&quot; in httpHeaders instead.
                    &quot;httpHeaders&quot;: [ # (Optional) Custom headers to set in the request. HTTP allows repeated headers.
                      { # Not supported by Cloud Run HTTPHeader describes a custom header to be used in HTTP probes
                        &quot;name&quot;: &quot;A String&quot;, # The header field name
                        &quot;value&quot;: &quot;A String&quot;, # The header field value
                      },
                    ],
                    &quot;path&quot;: &quot;A String&quot;, # (Optional) Path to access on the HTTP server.
                    &quot;scheme&quot;: &quot;A String&quot;, # (Optional) Scheme to use for connecting to the host. Defaults to HTTP.
                  },
                  &quot;initialDelaySeconds&quot;: 42, # (Optional) Number of seconds after the container has started before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
                  &quot;periodSeconds&quot;: 42, # (Optional) How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1.
                  &quot;successThreshold&quot;: 42, # (Optional) Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness. Minimum value is 1.
                  &quot;tcpSocket&quot;: { # Not supported by Cloud Run TCPSocketAction describes an action based on opening a socket # (Optional) TCPSocket specifies an action involving a TCP port. TCP hooks not yet supported A field inlined from the Handler message.
                    &quot;host&quot;: &quot;A String&quot;, # (Optional) Optional: Host name to connect to, defaults to the pod IP.
                    &quot;port&quot;: 42, # Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. This field is currently limited to integer types only because of proto&#x27;s inability to properly support the IntOrString golang type.
                  },
                  &quot;timeoutSeconds&quot;: 42, # (Optional) Number of seconds after which the probe times out. Defaults to 1 second. Minimum value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
                },
                &quot;terminationMessagePath&quot;: &quot;A String&quot;, # (Optional) Path at which the file to which the container&#x27;s termination message will be written is mounted into the container&#x27;s filesystem. Message written is intended to be brief final status, such as an assertion failure message. Will be truncated by the node if greater than 4096 bytes. The total message length across all containers will be limited to 12kb. Defaults to /dev/termination-log.
                &quot;terminationMessagePolicy&quot;: &quot;A String&quot;, # (Optional) Indicate how the termination message should be populated. File will use the contents of terminationMessagePath to populate the container status message on both success and failure. FallbackToLogsOnError will use the last chunk of container log output if the termination message file is empty and the container exited with an error. The log output is limited to 2048 bytes or 80 lines, whichever is smaller. Defaults to File. Cannot be updated.
                &quot;volumeMounts&quot;: [ # (Optional) Volume to mount into the container&#x27;s filesystem. Only supports SecretVolumeSources. Pod volumes to mount into the container&#x27;s filesystem.
                  { # VolumeMount describes a mounting of a Volume within a container.
                    &quot;mountPath&quot;: &quot;A String&quot;, # Path within the container at which the volume should be mounted. Must not contain &#x27;:&#x27;.
                    &quot;name&quot;: &quot;A String&quot;, # The name of the volume. There must be a corresponding Volume with the same name.
                    &quot;readOnly&quot;: True or False, # (Optional) Only true is accepted. Defaults to true.
                    &quot;subPath&quot;: &quot;A String&quot;, # (Optional) Path within the volume from which the container&#x27;s volume should be mounted. Defaults to &quot;&quot; (volume&#x27;s root).
                  },
                ],
                &quot;workingDir&quot;: &quot;A String&quot;, # (Optional) Container&#x27;s working directory. If not specified, the container runtime&#x27;s default will be used, which might be configured in the container image.
              },
            ],
            &quot;maxRetries&quot;: 42, # Optional. Number of retries allowed per task, before marking this job failed.
            &quot;serviceAccountName&quot;: &quot;A String&quot;, # Optional. Email address of the IAM service account associated with the task of a job execution. The service account represents the identity of the running task, and determines what permissions the task has. If not provided, the task will use the project&#x27;s default service account. +optional
            &quot;timeoutSeconds&quot;: &quot;A String&quot;, # Optional. Optional duration in seconds the task may be active before the system will actively try to mark it failed and kill associated containers. This applies per attempt of a task, meaning each retry can run for the full timeout. +optional
            &quot;volumes&quot;: [ # Optional. List of volumes that can be mounted by containers belonging to the task. More info: https://kubernetes.io/docs/concepts/storage/volumes +optional
              { # Volume represents a named volume in a container.
                &quot;configMap&quot;: { # Not supported by Cloud Run Adapts a ConfigMap into a volume. The contents of the target ConfigMap&#x27;s Data field will be presented in a volume as files using the keys in the Data field as the file names, unless the items element is populated with specific mappings of keys to paths.
                  &quot;defaultMode&quot;: 42, # (Optional) Integer representation of mode bits to use on created files by default. Must be a value between 01 and 0777 (octal). If 0 or not set, it will default to 0644. Directories within the path are not affected by this setting. Notes * Internally, a umask of 0222 will be applied to any non-zero value. * This is an integer representation of the mode bits. So, the octal integer value should look exactly as the chmod numeric notation with a leading zero. Some examples: for chmod 777 (a=rwx), set to 0777 (octal) or 511 (base-10). For chmod 640 (u=rw,g=r), set to 0640 (octal) or 416 (base-10). For chmod 755 (u=rwx,g=rx,o=rx), set to 0755 (octal) or 493 (base-10). * This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.
                  &quot;items&quot;: [ # (Optional) If unspecified, each key-value pair in the Data field of the referenced Secret will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified that is not present in the Secret, the volume setup will error unless it is marked optional.
                    { # Maps a string key to a path within a volume.
                      &quot;key&quot;: &quot;A String&quot;, # The Cloud Secret Manager secret version. Can be &#x27;latest&#x27; for the latest value or an integer for a specific version. The key to project.
                      &quot;mode&quot;: 42, # (Optional) Mode bits to use on this file, must be a value between 01 and 0777 (octal). If 0 or not set, the Volume&#x27;s default mode will be used. Notes * Internally, a umask of 0222 will be applied to any non-zero value. * This is an integer representation of the mode bits. So, the octal integer value should look exactly as the chmod numeric notation with a leading zero. Some examples: for chmod 777 (a=rwx), set to 0777 (octal) or 511 (base-10). For chmod 640 (u=rw,g=r), set to 0640 (octal) or 416 (base-10). For chmod 755 (u=rwx,g=rx,o=rx), set to 0755 (octal) or 493 (base-10). * This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.
                      &quot;path&quot;: &quot;A String&quot;, # The relative path of the file to map the key to. May not be an absolute path. May not contain the path element &#x27;..&#x27;. May not start with the string &#x27;..&#x27;.
                    },
                  ],
                  &quot;name&quot;: &quot;A String&quot;, # Name of the config.
                  &quot;optional&quot;: True or False, # (Optional) Specify whether the Secret or its keys must be defined.
                },
                &quot;name&quot;: &quot;A String&quot;, # Volume&#x27;s name. In Cloud Run Fully Managed, the name &#x27;cloudsql&#x27; is reserved.
                &quot;secret&quot;: { # The secret&#x27;s value will be presented as the content of a file whose name is defined in the item path. If no items are defined, the name of the file is the secret_name. The contents of the target Secret&#x27;s Data field will be presented in a volume as files using the keys in the Data field as the file names.
                  &quot;defaultMode&quot;: 42, # Integer representation of mode bits to use on created files by default. Must be a value between 01 and 0777 (octal). If 0 or not set, it will default to 0644. Directories within the path are not affected by this setting. Notes * Internally, a umask of 0222 will be applied to any non-zero value. * This is an integer representation of the mode bits. So, the octal integer value should look exactly as the chmod numeric notation with a leading zero. Some examples: for chmod 777 (a=rwx), set to 0777 (octal) or 511 (base-10). For chmod 640 (u=rw,g=r), set to 0640 (octal) or 416 (base-10). For chmod 755 (u=rwx,g=rx,o=rx), set to 0755 (octal) or 493 (base-10). * This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.
                  &quot;items&quot;: [ # (Optional) If unspecified, the volume will expose a file whose name is the secret_name. If specified, the key will be used as the version to fetch from Cloud Secret Manager and the path will be the name of the file exposed in the volume. When items are defined, they must specify a key and a path. If unspecified, each key-value pair in the Data field of the referenced Secret will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified that is not present in the Secret, the volume setup will error unless it is marked optional.
                    { # Maps a string key to a path within a volume.
                      &quot;key&quot;: &quot;A String&quot;, # The Cloud Secret Manager secret version. Can be &#x27;latest&#x27; for the latest value or an integer for a specific version. The key to project.
                      &quot;mode&quot;: 42, # (Optional) Mode bits to use on this file, must be a value between 01 and 0777 (octal). If 0 or not set, the Volume&#x27;s default mode will be used. Notes * Internally, a umask of 0222 will be applied to any non-zero value. * This is an integer representation of the mode bits. So, the octal integer value should look exactly as the chmod numeric notation with a leading zero. Some examples: for chmod 777 (a=rwx), set to 0777 (octal) or 511 (base-10). For chmod 640 (u=rw,g=r), set to 0640 (octal) or 416 (base-10). For chmod 755 (u=rwx,g=rx,o=rx), set to 0755 (octal) or 493 (base-10). * This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.
                      &quot;path&quot;: &quot;A String&quot;, # The relative path of the file to map the key to. May not be an absolute path. May not contain the path element &#x27;..&#x27;. May not start with the string &#x27;..&#x27;.
                    },
                  ],
                  &quot;optional&quot;: True or False, # (Optional) Specify whether the Secret or its keys must be defined.
                  &quot;secretName&quot;: &quot;A String&quot;, # The name of the secret in Cloud Secret Manager. By default, the secret is assumed to be in the same project. If the secret is in another project, you must define an alias. An alias definition has the form: :projects//secrets/. If multiple alias definitions are needed, they must be separated by commas. The alias definitions must be set on the run.googleapis.com/secrets annotation. Name of the secret in the container&#x27;s namespace to use.
                },
              },
            ],
          },
        },
      },
      &quot;status&quot;: { # ExecutionStatus represents the current state of a Execution. # Output only. Current status of an execution. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status +optional
        &quot;completionTime&quot;: &quot;A String&quot;, # Optional. Represents time when the execution was completed. It is not guaranteed to be set in happens-before order across separate operations. It is represented in RFC3339 form and is in UTC. +optional
        &quot;conditions&quot;: [ # Optional. The latest available observations of an execution&#x27;s current state. More info: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/ +optional
          { # Condition defines a generic condition for a Resource.
            &quot;lastTransitionTime&quot;: &quot;A String&quot;, # Optional. Last time the condition transitioned from one status to another.
            &quot;message&quot;: &quot;A String&quot;, # Optional. Human readable message indicating details about the current status.
            &quot;reason&quot;: &quot;A String&quot;, # Optional. One-word CamelCase reason for the condition&#x27;s last transition.
            &quot;severity&quot;: &quot;A String&quot;, # Optional. How to interpret failures of this condition, one of Error, Warning, Info
            &quot;status&quot;: &quot;A String&quot;, # Status of the condition, one of True, False, Unknown.
            &quot;type&quot;: &quot;A String&quot;, # type is used to communicate the status of the reconciliation process. See also: https://github.com/knative/serving/blob/main/docs/spec/errors.md#error-conditions-and-reporting Types common to all resources include: * &quot;Ready&quot;: True when the Resource is ready.
          },
        ],
        &quot;failedCount&quot;: 42, # Optional. The number of tasks which reached phase Failed. +optional
        &quot;logUri&quot;: &quot;A String&quot;, # Optional. URI where logs for this execution can be found in Cloud Console.
        &quot;observedGeneration&quot;: 42, # Optional. The &#x27;generation&#x27; of the execution that was last processed by the controller.
        &quot;runningCount&quot;: 42, # Optional. The number of actively running tasks. +optional
        &quot;startTime&quot;: &quot;A String&quot;, # Optional. Represents time when the execution started to run. It is not guaranteed to be set in happens-before order across separate operations. It is represented in RFC3339 form and is in UTC. +optional
        &quot;succeededCount&quot;: 42, # Optional. The number of tasks which reached phase Succeeded. +optional
      },
    },
  ],
  &quot;kind&quot;: &quot;A String&quot;, # The kind of this resource, in this case &quot;ExecutionsList&quot;.
  &quot;metadata&quot;: { # ListMeta describes metadata that synthetic resources must have, including lists and various status objects. A resource may have only one of {ObjectMeta, ListMeta}. # Metadata associated with this executions list.
    &quot;continue&quot;: &quot;A String&quot;, # continue may be set if the user set a limit on the number of items returned, and indicates that the server has more data available. The value is opaque and may be used to issue another request to the endpoint that served this list to retrieve the next set of available objects. Continuing a list may not be possible if the server configuration has changed or more than a few minutes have passed. The resourceVersion field returned when using this continue value will be identical to the value in the first response.
    &quot;resourceVersion&quot;: &quot;A String&quot;, # String that identifies the server&#x27;s internal version of this object that can be used by clients to determine when objects have changed. Value must be treated as opaque by clients and passed unmodified back to the server. Populated by the system. Read-only. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency +optional
    &quot;selfLink&quot;: &quot;A String&quot;, # SelfLink is a URL representing this object. Populated by the system. Read-only. +optional
  },
  &quot;unreachable&quot;: [ # Locations that could not be reached.
    &quot;A String&quot;,
  ],
}</pre>
</div>

</body></html>