<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_v1alpha1.html">Cloud Run Admin API</a> . <a href="run_v1alpha1.projects.html">projects</a> . <a href="run_v1alpha1.projects.locations.html">locations</a> . <a href="run_v1alpha1.projects.locations.triggers.html">triggers</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="#create">create(parent, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Creates a new trigger.</p>
<p class="toc_element">
  <code><a href="#delete">delete(name, kind=None, apiVersion=None, propagationPolicy=None, x__xgafv=None)</a></code></p>
<p class="firstline">Rpc to delete a trigger.</p>
<p class="toc_element">
  <code><a href="#get">get(name, x__xgafv=None)</a></code></p>
<p class="firstline">Rpc to get information about a trigger.</p>
<p class="toc_element">
  <code><a href="#list">list(parent, includeUninitialized=None, watch=None, continue=None, limit=None, fieldSelector=None, resourceVersion=None, labelSelector=None, x__xgafv=None)</a></code></p>
<p class="firstline">Rpc to list triggers.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="close">close()</code>
  <pre>Close httplib2 connections.</pre>
</div>

<div class="method">
    <code class="details" id="create">create(parent, body=None, x__xgafv=None)</code>
  <pre>Creates a new trigger.

Args:
  parent: string, The project ID or project number in which this trigger should be created. (required)
  body: object, The request body.
    The object takes the form of:

{
    &quot;metadata&quot;: { # ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create. # Metadata associated with this Trigger.
      &quot;creationTimestamp&quot;: &quot;A String&quot;, # 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 +optional
      &quot;clusterName&quot;: &quot;A String&quot;, # Not currently 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. +optional
      &quot;resourceVersion&quot;: &quot;A String&quot;, # 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. 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 and . 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 string selfLink = 4;
      &quot;deletionTimestamp&quot;: &quot;A String&quot;, # 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 +optional
      &quot;generateName&quot;: &quot;A String&quot;, # Not currently 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 +optional string generateName = 2;
      &quot;ownerReferences&quot;: [ # List of objects that own this object. If ALL objects in the list have been deleted, this object will be garbage collected. +optional
        { # 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;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;kind&quot;: &quot;A String&quot;, # Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds
          &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;apiVersion&quot;: &quot;A String&quot;, # API version of the referent.
          &quot;controller&quot;: True or False, # If true, this reference points to the managing controller. +optional
        },
      ],
      &quot;labels&quot;: { # 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 +optional
        &quot;a_key&quot;: &quot;A String&quot;,
      },
      &quot;uid&quot;: &quot;A String&quot;, # 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 +optional
      &quot;annotations&quot;: { # 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 +optional
        &quot;a_key&quot;: &quot;A String&quot;,
      },
      &quot;deletionGracePeriodSeconds&quot;: 42, # Not currently 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. +optional
      &quot;generation&quot;: 42, # A sequence number representing a specific generation of the desired state. Populated by the system. Read-only. +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;finalizers&quot;: [ # Not currently 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. +optional +patchStrategy=merge
        &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;apiVersion&quot;: &quot;A String&quot;, # The API version for this call such as &quot;eventing.knative.dev/v1alpha1&quot;.
    &quot;spec&quot;: { # The desired state of the Trigger. # Spec defines the desired state of the Trigger.
      &quot;broker&quot;: &quot;A String&quot;, # Broker is the broker that this trigger receives events from. If not specified, will default to &#x27;default&#x27;. Not currently supported by Cloud Run.
      &quot;subscriber&quot;: { # Sink is the addressable that will receive events.
        &quot;uri&quot;: &quot;A String&quot;, # URI is for direct URI Designations or used with the resulting URL from Addressable ObjectReference. If used with an ObjectReference, will be appended to the path of the resulting URL from the Addressable. + optional
        &quot;ref&quot;: { # ObjectReference contains enough information to let you inspect or modify the referred object. # ObjectReference points to an Addressable. + optional
          &quot;kind&quot;: &quot;A String&quot;, # Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds +optional
          &quot;resourceVersion&quot;: &quot;A String&quot;, # Specific resourceVersion to which this reference is made, if any. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency +optional
          &quot;fieldPath&quot;: &quot;A String&quot;, # If referring to a piece of an object instead of an entire object, this string should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. For example, if the object reference is to a container within a pod, this would take on a value like: &quot;spec.containers{name}&quot; (where &quot;name&quot; refers to the name of the container that triggered the event) or if no container name is specified &quot;spec.containers[2]&quot; (container with index 2 in this pod). This syntax is chosen only to have some well-defined way of referencing a part of an object.
          &quot;uid&quot;: &quot;A String&quot;, # UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids +optional
          &quot;name&quot;: &quot;A String&quot;, # Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names +optional
          &quot;apiVersion&quot;: &quot;A String&quot;, # API version of the referent. +optional
          &quot;namespace&quot;: &quot;A String&quot;, # Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ +optional
        },
      },
      &quot;filter&quot;: { # Optional. Filter is the filter to apply against all events from the Broker. Only events that pass this filter will be sent to the Subscriber. Note that filter is optional in knative and is only required in fully managed due to different broker implementation.
        &quot;attributes&quot;: { # Optional. Attributes filters events by exact match on event context attributes. Each key in the map is compared with the equivalent key in the event context. An event passes the filter if all values are equal to the specified values. Nested context attributes are not supported as keys. Only string values are supported. Note that this field is optional in knative. In fully managed, &#x27;type&#x27; attribute is required due to different broker implementation.
          &quot;a_key&quot;: &quot;A String&quot;,
        },
      },
    },
    &quot;kind&quot;: &quot;A String&quot;, # The kind of resource, in this case &quot;Trigger&quot;.
    &quot;status&quot;: { # TriggerStatus represents the current state of a Trigger. # Optional. Status represents the current state of the Trigger. This data may be out of date.
      &quot;conditions&quot;: [ # Array of observed TriggerConditions, indicating the current state of the Trigger.
        { # TriggerCondition contains state information for an Trigger.
          &quot;status&quot;: &quot;A String&quot;, # Status of the condition, one of True, False, Unknown.
          &quot;type&quot;: &quot;A String&quot;, # Type of Trigger condition.
          &quot;reason&quot;: &quot;A String&quot;, # Optional. One-word CamelCase reason for the condition&#x27;s current status.
          &quot;severity&quot;: &quot;A String&quot;, # Optional. How to interpret failures of this condition, one of Error, Warning, Info
          &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;subscriberUri&quot;: &quot;A String&quot;, # SubscriberURI is the resolved URI of the receiver for this Trigger.
      &quot;observedGeneration&quot;: 42, # ObservedGeneration is the &#x27;Generation&#x27; of the Trigger that was last processed by the controller.
    },
  }

  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    {
      &quot;metadata&quot;: { # ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create. # Metadata associated with this Trigger.
        &quot;creationTimestamp&quot;: &quot;A String&quot;, # 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 +optional
        &quot;clusterName&quot;: &quot;A String&quot;, # Not currently 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. +optional
        &quot;resourceVersion&quot;: &quot;A String&quot;, # 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. 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 and . 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 string selfLink = 4;
        &quot;deletionTimestamp&quot;: &quot;A String&quot;, # 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 +optional
        &quot;generateName&quot;: &quot;A String&quot;, # Not currently 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 +optional string generateName = 2;
        &quot;ownerReferences&quot;: [ # List of objects that own this object. If ALL objects in the list have been deleted, this object will be garbage collected. +optional
          { # 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;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;kind&quot;: &quot;A String&quot;, # Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds
            &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;apiVersion&quot;: &quot;A String&quot;, # API version of the referent.
            &quot;controller&quot;: True or False, # If true, this reference points to the managing controller. +optional
          },
        ],
        &quot;labels&quot;: { # 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 +optional
          &quot;a_key&quot;: &quot;A String&quot;,
        },
        &quot;uid&quot;: &quot;A String&quot;, # 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 +optional
        &quot;annotations&quot;: { # 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 +optional
          &quot;a_key&quot;: &quot;A String&quot;,
        },
        &quot;deletionGracePeriodSeconds&quot;: 42, # Not currently 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. +optional
        &quot;generation&quot;: 42, # A sequence number representing a specific generation of the desired state. Populated by the system. Read-only. +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;finalizers&quot;: [ # Not currently 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. +optional +patchStrategy=merge
          &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;apiVersion&quot;: &quot;A String&quot;, # The API version for this call such as &quot;eventing.knative.dev/v1alpha1&quot;.
      &quot;spec&quot;: { # The desired state of the Trigger. # Spec defines the desired state of the Trigger.
        &quot;broker&quot;: &quot;A String&quot;, # Broker is the broker that this trigger receives events from. If not specified, will default to &#x27;default&#x27;. Not currently supported by Cloud Run.
        &quot;subscriber&quot;: { # Sink is the addressable that will receive events.
          &quot;uri&quot;: &quot;A String&quot;, # URI is for direct URI Designations or used with the resulting URL from Addressable ObjectReference. If used with an ObjectReference, will be appended to the path of the resulting URL from the Addressable. + optional
          &quot;ref&quot;: { # ObjectReference contains enough information to let you inspect or modify the referred object. # ObjectReference points to an Addressable. + optional
            &quot;kind&quot;: &quot;A String&quot;, # Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds +optional
            &quot;resourceVersion&quot;: &quot;A String&quot;, # Specific resourceVersion to which this reference is made, if any. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency +optional
            &quot;fieldPath&quot;: &quot;A String&quot;, # If referring to a piece of an object instead of an entire object, this string should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. For example, if the object reference is to a container within a pod, this would take on a value like: &quot;spec.containers{name}&quot; (where &quot;name&quot; refers to the name of the container that triggered the event) or if no container name is specified &quot;spec.containers[2]&quot; (container with index 2 in this pod). This syntax is chosen only to have some well-defined way of referencing a part of an object.
            &quot;uid&quot;: &quot;A String&quot;, # UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids +optional
            &quot;name&quot;: &quot;A String&quot;, # Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names +optional
            &quot;apiVersion&quot;: &quot;A String&quot;, # API version of the referent. +optional
            &quot;namespace&quot;: &quot;A String&quot;, # Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ +optional
          },
        },
        &quot;filter&quot;: { # Optional. Filter is the filter to apply against all events from the Broker. Only events that pass this filter will be sent to the Subscriber. Note that filter is optional in knative and is only required in fully managed due to different broker implementation.
          &quot;attributes&quot;: { # Optional. Attributes filters events by exact match on event context attributes. Each key in the map is compared with the equivalent key in the event context. An event passes the filter if all values are equal to the specified values. Nested context attributes are not supported as keys. Only string values are supported. Note that this field is optional in knative. In fully managed, &#x27;type&#x27; attribute is required due to different broker implementation.
            &quot;a_key&quot;: &quot;A String&quot;,
          },
        },
      },
      &quot;kind&quot;: &quot;A String&quot;, # The kind of resource, in this case &quot;Trigger&quot;.
      &quot;status&quot;: { # TriggerStatus represents the current state of a Trigger. # Optional. Status represents the current state of the Trigger. This data may be out of date.
        &quot;conditions&quot;: [ # Array of observed TriggerConditions, indicating the current state of the Trigger.
          { # TriggerCondition contains state information for an Trigger.
            &quot;status&quot;: &quot;A String&quot;, # Status of the condition, one of True, False, Unknown.
            &quot;type&quot;: &quot;A String&quot;, # Type of Trigger condition.
            &quot;reason&quot;: &quot;A String&quot;, # Optional. One-word CamelCase reason for the condition&#x27;s current status.
            &quot;severity&quot;: &quot;A String&quot;, # Optional. How to interpret failures of this condition, one of Error, Warning, Info
            &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;subscriberUri&quot;: &quot;A String&quot;, # SubscriberURI is the resolved URI of the receiver for this Trigger.
        &quot;observedGeneration&quot;: 42, # ObservedGeneration is the &#x27;Generation&#x27; of the Trigger that was last processed by the controller.
      },
    }</pre>
</div>

<div class="method">
    <code class="details" id="delete">delete(name, kind=None, apiVersion=None, propagationPolicy=None, x__xgafv=None)</code>
  <pre>Rpc to delete a trigger.

Args:
  name: string, The name of the trigger being deleted. If needed, replace {namespace_id} with the project ID. (required)
  kind: string, Cloud Run currently ignores this parameter.
  apiVersion: string, Cloud Run currently ignores this parameter.
  propagationPolicy: string, 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:

    { # A generic empty message that you can re-use to avoid defining duplicated empty messages in your APIs. A typical example is to use it as the request or the response type of an API method. For instance: service Foo { rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty); } The JSON representation for `Empty` is empty JSON object `{}`.
  }</pre>
</div>

<div class="method">
    <code class="details" id="get">get(name, x__xgafv=None)</code>
  <pre>Rpc to get information about a trigger.

Args:
  name: string, The name of the trigger being retrieved. If needed, replace {namespace_id} with the project ID. (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    {
      &quot;metadata&quot;: { # ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create. # Metadata associated with this Trigger.
        &quot;creationTimestamp&quot;: &quot;A String&quot;, # 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 +optional
        &quot;clusterName&quot;: &quot;A String&quot;, # Not currently 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. +optional
        &quot;resourceVersion&quot;: &quot;A String&quot;, # 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. 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 and . 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 string selfLink = 4;
        &quot;deletionTimestamp&quot;: &quot;A String&quot;, # 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 +optional
        &quot;generateName&quot;: &quot;A String&quot;, # Not currently 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 +optional string generateName = 2;
        &quot;ownerReferences&quot;: [ # List of objects that own this object. If ALL objects in the list have been deleted, this object will be garbage collected. +optional
          { # 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;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;kind&quot;: &quot;A String&quot;, # Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds
            &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;apiVersion&quot;: &quot;A String&quot;, # API version of the referent.
            &quot;controller&quot;: True or False, # If true, this reference points to the managing controller. +optional
          },
        ],
        &quot;labels&quot;: { # 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 +optional
          &quot;a_key&quot;: &quot;A String&quot;,
        },
        &quot;uid&quot;: &quot;A String&quot;, # 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 +optional
        &quot;annotations&quot;: { # 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 +optional
          &quot;a_key&quot;: &quot;A String&quot;,
        },
        &quot;deletionGracePeriodSeconds&quot;: 42, # Not currently 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. +optional
        &quot;generation&quot;: 42, # A sequence number representing a specific generation of the desired state. Populated by the system. Read-only. +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;finalizers&quot;: [ # Not currently 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. +optional +patchStrategy=merge
          &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;apiVersion&quot;: &quot;A String&quot;, # The API version for this call such as &quot;eventing.knative.dev/v1alpha1&quot;.
      &quot;spec&quot;: { # The desired state of the Trigger. # Spec defines the desired state of the Trigger.
        &quot;broker&quot;: &quot;A String&quot;, # Broker is the broker that this trigger receives events from. If not specified, will default to &#x27;default&#x27;. Not currently supported by Cloud Run.
        &quot;subscriber&quot;: { # Sink is the addressable that will receive events.
          &quot;uri&quot;: &quot;A String&quot;, # URI is for direct URI Designations or used with the resulting URL from Addressable ObjectReference. If used with an ObjectReference, will be appended to the path of the resulting URL from the Addressable. + optional
          &quot;ref&quot;: { # ObjectReference contains enough information to let you inspect or modify the referred object. # ObjectReference points to an Addressable. + optional
            &quot;kind&quot;: &quot;A String&quot;, # Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds +optional
            &quot;resourceVersion&quot;: &quot;A String&quot;, # Specific resourceVersion to which this reference is made, if any. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency +optional
            &quot;fieldPath&quot;: &quot;A String&quot;, # If referring to a piece of an object instead of an entire object, this string should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. For example, if the object reference is to a container within a pod, this would take on a value like: &quot;spec.containers{name}&quot; (where &quot;name&quot; refers to the name of the container that triggered the event) or if no container name is specified &quot;spec.containers[2]&quot; (container with index 2 in this pod). This syntax is chosen only to have some well-defined way of referencing a part of an object.
            &quot;uid&quot;: &quot;A String&quot;, # UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids +optional
            &quot;name&quot;: &quot;A String&quot;, # Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names +optional
            &quot;apiVersion&quot;: &quot;A String&quot;, # API version of the referent. +optional
            &quot;namespace&quot;: &quot;A String&quot;, # Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ +optional
          },
        },
        &quot;filter&quot;: { # Optional. Filter is the filter to apply against all events from the Broker. Only events that pass this filter will be sent to the Subscriber. Note that filter is optional in knative and is only required in fully managed due to different broker implementation.
          &quot;attributes&quot;: { # Optional. Attributes filters events by exact match on event context attributes. Each key in the map is compared with the equivalent key in the event context. An event passes the filter if all values are equal to the specified values. Nested context attributes are not supported as keys. Only string values are supported. Note that this field is optional in knative. In fully managed, &#x27;type&#x27; attribute is required due to different broker implementation.
            &quot;a_key&quot;: &quot;A String&quot;,
          },
        },
      },
      &quot;kind&quot;: &quot;A String&quot;, # The kind of resource, in this case &quot;Trigger&quot;.
      &quot;status&quot;: { # TriggerStatus represents the current state of a Trigger. # Optional. Status represents the current state of the Trigger. This data may be out of date.
        &quot;conditions&quot;: [ # Array of observed TriggerConditions, indicating the current state of the Trigger.
          { # TriggerCondition contains state information for an Trigger.
            &quot;status&quot;: &quot;A String&quot;, # Status of the condition, one of True, False, Unknown.
            &quot;type&quot;: &quot;A String&quot;, # Type of Trigger condition.
            &quot;reason&quot;: &quot;A String&quot;, # Optional. One-word CamelCase reason for the condition&#x27;s current status.
            &quot;severity&quot;: &quot;A String&quot;, # Optional. How to interpret failures of this condition, one of Error, Warning, Info
            &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;subscriberUri&quot;: &quot;A String&quot;, # SubscriberURI is the resolved URI of the receiver for this Trigger.
        &quot;observedGeneration&quot;: 42, # ObservedGeneration is the &#x27;Generation&#x27; of the Trigger that was last processed by the controller.
      },
    }</pre>
</div>

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

Args:
  parent: string, The project ID or project number from which the triggers should be listed. (required)
  includeUninitialized: boolean, Not currently used by Cloud Run.
  watch: boolean, Flag that indicates that the client expects to watch this resource as well. Not currently used by Cloud Run.
  continue: string, Optional. Encoded string to continue paging.
  limit: integer, The maximum number of records that should be returned.
  fieldSelector: string, 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.
  resourceVersion: string, The baseline resource version from which the list or watch operation should start. Not currently used by Cloud Run.
  labelSelector: string, Allows to filter resources based on a label. Supported operations are =, !=, exists, in, and notIn.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # ListTriggersResponse is a list of Trigger resources.
    &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 Trigger list.
      &quot;selfLink&quot;: &quot;A String&quot;, # SelfLink is a URL representing this object. Populated by the system. Read-only. +optional
      &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;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;apiVersion&quot;: &quot;A String&quot;, # The API version for this call such as &quot;eventing.knative.dev/v1alpha1&quot;.
    &quot;kind&quot;: &quot;A String&quot;, # The kind of this resource, in this case &quot;TriggerList&quot;.
    &quot;unreachable&quot;: [ # Locations that could not be reached.
      &quot;A String&quot;,
    ],
    &quot;items&quot;: [ # List of Triggers.
      {
          &quot;metadata&quot;: { # ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create. # Metadata associated with this Trigger.
            &quot;creationTimestamp&quot;: &quot;A String&quot;, # 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 +optional
            &quot;clusterName&quot;: &quot;A String&quot;, # Not currently 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. +optional
            &quot;resourceVersion&quot;: &quot;A String&quot;, # 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. 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 and . 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 string selfLink = 4;
            &quot;deletionTimestamp&quot;: &quot;A String&quot;, # 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 +optional
            &quot;generateName&quot;: &quot;A String&quot;, # Not currently 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 +optional string generateName = 2;
            &quot;ownerReferences&quot;: [ # List of objects that own this object. If ALL objects in the list have been deleted, this object will be garbage collected. +optional
              { # 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;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;kind&quot;: &quot;A String&quot;, # Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds
                &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;apiVersion&quot;: &quot;A String&quot;, # API version of the referent.
                &quot;controller&quot;: True or False, # If true, this reference points to the managing controller. +optional
              },
            ],
            &quot;labels&quot;: { # 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 +optional
              &quot;a_key&quot;: &quot;A String&quot;,
            },
            &quot;uid&quot;: &quot;A String&quot;, # 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 +optional
            &quot;annotations&quot;: { # 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 +optional
              &quot;a_key&quot;: &quot;A String&quot;,
            },
            &quot;deletionGracePeriodSeconds&quot;: 42, # Not currently 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. +optional
            &quot;generation&quot;: 42, # A sequence number representing a specific generation of the desired state. Populated by the system. Read-only. +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;finalizers&quot;: [ # Not currently 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. +optional +patchStrategy=merge
              &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;apiVersion&quot;: &quot;A String&quot;, # The API version for this call such as &quot;eventing.knative.dev/v1alpha1&quot;.
          &quot;spec&quot;: { # The desired state of the Trigger. # Spec defines the desired state of the Trigger.
            &quot;broker&quot;: &quot;A String&quot;, # Broker is the broker that this trigger receives events from. If not specified, will default to &#x27;default&#x27;. Not currently supported by Cloud Run.
            &quot;subscriber&quot;: { # Sink is the addressable that will receive events.
              &quot;uri&quot;: &quot;A String&quot;, # URI is for direct URI Designations or used with the resulting URL from Addressable ObjectReference. If used with an ObjectReference, will be appended to the path of the resulting URL from the Addressable. + optional
              &quot;ref&quot;: { # ObjectReference contains enough information to let you inspect or modify the referred object. # ObjectReference points to an Addressable. + optional
                &quot;kind&quot;: &quot;A String&quot;, # Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds +optional
                &quot;resourceVersion&quot;: &quot;A String&quot;, # Specific resourceVersion to which this reference is made, if any. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency +optional
                &quot;fieldPath&quot;: &quot;A String&quot;, # If referring to a piece of an object instead of an entire object, this string should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. For example, if the object reference is to a container within a pod, this would take on a value like: &quot;spec.containers{name}&quot; (where &quot;name&quot; refers to the name of the container that triggered the event) or if no container name is specified &quot;spec.containers[2]&quot; (container with index 2 in this pod). This syntax is chosen only to have some well-defined way of referencing a part of an object.
                &quot;uid&quot;: &quot;A String&quot;, # UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids +optional
                &quot;name&quot;: &quot;A String&quot;, # Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names +optional
                &quot;apiVersion&quot;: &quot;A String&quot;, # API version of the referent. +optional
                &quot;namespace&quot;: &quot;A String&quot;, # Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ +optional
              },
            },
            &quot;filter&quot;: { # Optional. Filter is the filter to apply against all events from the Broker. Only events that pass this filter will be sent to the Subscriber. Note that filter is optional in knative and is only required in fully managed due to different broker implementation.
              &quot;attributes&quot;: { # Optional. Attributes filters events by exact match on event context attributes. Each key in the map is compared with the equivalent key in the event context. An event passes the filter if all values are equal to the specified values. Nested context attributes are not supported as keys. Only string values are supported. Note that this field is optional in knative. In fully managed, &#x27;type&#x27; attribute is required due to different broker implementation.
                &quot;a_key&quot;: &quot;A String&quot;,
              },
            },
          },
          &quot;kind&quot;: &quot;A String&quot;, # The kind of resource, in this case &quot;Trigger&quot;.
          &quot;status&quot;: { # TriggerStatus represents the current state of a Trigger. # Optional. Status represents the current state of the Trigger. This data may be out of date.
            &quot;conditions&quot;: [ # Array of observed TriggerConditions, indicating the current state of the Trigger.
              { # TriggerCondition contains state information for an Trigger.
                &quot;status&quot;: &quot;A String&quot;, # Status of the condition, one of True, False, Unknown.
                &quot;type&quot;: &quot;A String&quot;, # Type of Trigger condition.
                &quot;reason&quot;: &quot;A String&quot;, # Optional. One-word CamelCase reason for the condition&#x27;s current status.
                &quot;severity&quot;: &quot;A String&quot;, # Optional. How to interpret failures of this condition, one of Error, Warning, Info
                &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;subscriberUri&quot;: &quot;A String&quot;, # SubscriberURI is the resolved URI of the receiver for this Trigger.
            &quot;observedGeneration&quot;: 42, # ObservedGeneration is the &#x27;Generation&#x27; of the Trigger that was last processed by the controller.
          },
        },
    ],
  }</pre>
</div>

</body></html>