<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="integrations_v1.html">Application Integration API</a> . <a href="integrations_v1.projects.html">projects</a> . <a href="integrations_v1.projects.locations.html">locations</a> . <a href="integrations_v1.projects.locations.integrations.html">integrations</a> . <a href="integrations_v1.projects.locations.integrations.versions.html">versions</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="integrations_v1.projects.locations.integrations.versions.testCases.html">testCases()</a></code>
</p>
<p class="firstline">Returns the testCases Resource.</p>

<p class="toc_element">
  <code><a href="#close">close()</a></code></p>
<p class="firstline">Close httplib2 connections.</p>
<p class="toc_element">
  <code><a href="#create">create(parent, body=None, createSampleIntegrations=None, newIntegration=None, x__xgafv=None)</a></code></p>
<p class="firstline">Create a integration with a draft version in the specified project.</p>
<p class="toc_element">
  <code><a href="#delete">delete(name, x__xgafv=None)</a></code></p>
<p class="firstline">Soft-deletes the integration. Changes the status of the integration to ARCHIVED. If the integration being ARCHIVED is tagged as "HEAD", the tag is removed from this snapshot and set to the previous non-ARCHIVED snapshot. The PUBLISH_REQUESTED, DUE_FOR_DELETION tags are removed too. This RPC throws an exception if the version being deleted is DRAFT, and if the `locked_by` user is not the same as the user performing the Delete. Audit fields updated include last_modified_timestamp, last_modified_by. Any existing lock is released when Deleting a integration. Currently, there is no undelete mechanism.</p>
<p class="toc_element">
  <code><a href="#download">download(name, fileFormat=None, files=None, x__xgafv=None)</a></code></p>
<p class="firstline">Downloads an integration. Retrieves the `IntegrationVersion` for a given `integration_id` and returns the response as a string.</p>
<p class="toc_element">
  <code><a href="#downloadJsonPackage">downloadJsonPackage(name, files=None, x__xgafv=None)</a></code></p>
<p class="firstline">Downloads an Integration version package like IntegrationVersion,Integration Config etc. Retrieves the IntegrationVersion package for a given `integration_id` and returns the response as a JSON.</p>
<p class="toc_element">
  <code><a href="#get">get(name, x__xgafv=None)</a></code></p>
<p class="firstline">Get a integration in the specified project.</p>
<p class="toc_element">
  <code><a href="#list">list(parent, fieldMask=None, filter=None, orderBy=None, pageSize=None, pageToken=None, x__xgafv=None)</a></code></p>
<p class="firstline">Returns the list of all integration versions in the specified project.</p>
<p class="toc_element">
  <code><a href="#list_next">list_next()</a></code></p>
<p class="firstline">Retrieves the next page of results.</p>
<p class="toc_element">
  <code><a href="#patch">patch(name, body=None, updateMask=None, x__xgafv=None)</a></code></p>
<p class="firstline">Update a integration with a draft version in the specified project.</p>
<p class="toc_element">
  <code><a href="#publish">publish(name, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">This RPC throws an exception if the integration is in ARCHIVED or ACTIVE state. This RPC throws an exception if the version being published is DRAFT, and if the `locked_by` user is not the same as the user performing the Publish. Audit fields updated include last_published_timestamp, last_published_by, last_modified_timestamp, last_modified_by. Any existing lock is on this integration is released.</p>
<p class="toc_element">
  <code><a href="#test">test(name, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Execute the integration in draft state</p>
<p class="toc_element">
  <code><a href="#unpublish">unpublish(name, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Sets the status of the ACTIVE integration to SNAPSHOT with a new tag "PREVIOUSLY_PUBLISHED" after validating it. The "HEAD" and "PUBLISH_REQUESTED" tags do not change. This RPC throws an exception if the version being snapshot is not ACTIVE. Audit fields added include action, action_by, action_timestamp.</p>
<p class="toc_element">
  <code><a href="#upload">upload(parent, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Uploads an integration. The content can be a previously downloaded integration. Performs the same function as CreateDraftIntegrationVersion, but accepts input in a string format, which holds the complete representation of the IntegrationVersion content.</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, createSampleIntegrations=None, newIntegration=None, x__xgafv=None)</code>
  <pre>Create a integration with a draft version in the specified project.

Args:
  parent: string, Required. The parent resource where this version will be created. Format: projects/{project}/locations/{location}/integrations/{integration} (required)
  body: object, The request body.
    The object takes the form of:

{ # The integration version definition.
  &quot;cloudKmsKey&quot;: &quot;A String&quot;, # Optional. Cloud KMS resource name for the CMEK encryption key.
  &quot;cloudLoggingDetails&quot;: { # Cloud Logging details for execution info # Optional. Cloud Logging details for the integration version
    &quot;cloudLoggingSeverity&quot;: &quot;A String&quot;, # Optional. Severity selected by the customer for the logs to be sent to Cloud Logging, for the integration version getting executed.
    &quot;enableCloudLogging&quot;: True or False, # Optional. Status of whether Cloud Logging is enabled or not for the integration version getting executed.
  },
  &quot;createTime&quot;: &quot;A String&quot;, # Output only. Auto-generated.
  &quot;createdFromTemplate&quot;: &quot;A String&quot;, # Optional. Optional. The resource name of the template from which the integration is created.
  &quot;databasePersistencePolicy&quot;: &quot;A String&quot;, # Optional. Flag to disable database persistence for execution data, including event execution info, execution export info, execution metadata index and execution param index.
  &quot;description&quot;: &quot;A String&quot;, # Optional. The integration description.
  &quot;enableVariableMasking&quot;: True or False, # Optional. True if variable masking feature should be turned on for this version
  &quot;errorCatcherConfigs&quot;: [ # Optional. Error Catch Task configuration for the integration. It&#x27;s optional.
    { # Configuration detail of a error catch task
      &quot;description&quot;: &quot;A String&quot;, # Optional. User-provided description intended to give more business context about the error catcher config.
      &quot;errorCatcherId&quot;: &quot;A String&quot;, # Required. An error catcher id is string representation for the error catcher config. Within a workflow, error_catcher_id uniquely identifies an error catcher config among all error catcher configs for the workflow
      &quot;errorCatcherNumber&quot;: &quot;A String&quot;, # Required. A number to uniquely identify each error catcher config within the workflow on UI.
      &quot;label&quot;: &quot;A String&quot;, # Optional. The user created label for a particular error catcher. Optional.
      &quot;position&quot;: { # Configuration detail of coordinate, it used for UI # Optional. Informs the front-end application where to draw this error catcher config on the UI.
        &quot;x&quot;: 42, # Required. X axis of the coordinate
        &quot;y&quot;: 42, # Required. Y axis of the coordinate
      },
      &quot;startErrorTasks&quot;: [ # Required. The set of start tasks that are to be executed for the error catch flow
        { # The task that is next in line to be executed, if the condition specified evaluated to true.
          &quot;condition&quot;: &quot;A String&quot;, # Standard filter expression for this task to become an eligible next task.
          &quot;description&quot;: &quot;A String&quot;, # User-provided description intended to give additional business context about the task.
          &quot;displayName&quot;: &quot;A String&quot;, # User-provided label that is attached to this edge in the UI.
          &quot;taskConfigId&quot;: &quot;A String&quot;, # ID of the next task.
          &quot;taskId&quot;: &quot;A String&quot;, # Task number of the next task.
        },
      ],
    },
  ],
  &quot;integrationConfigParameters&quot;: [ # Optional. Config Parameters that are expected to be passed to the integration when an integration is published. This consists of all the parameters that are expected to provide configuration in the integration execution. This gives the user the ability to provide default values, value, add information like connection url, project based configuration value and also provide data types of each parameter.
    { # Integration Config Parameter is defined in the integration config and are used to provide external configuration for integration. It provide information about data types of the expected parameters and provide any default values or value. They can also be used to add custom attributes.
      &quot;parameter&quot;: { # Integration Parameter is defined in the integration config and are used to provide information about data types of the expected parameters and provide any default values if needed. They can also be used to add custom attributes. These are static in nature and should not be used for dynamic event definition. # Optional. Integration Parameter to provide the default value, data type and attributes required for the Integration config variables.
        &quot;containsLargeData&quot;: True or False, # Indicates whether this variable contains large data and need to be uploaded to Cloud Storage.
        &quot;dataType&quot;: &quot;A String&quot;, # Type of the parameter.
        &quot;defaultValue&quot;: { # The type of the parameter. # Default values for the defined keys. Each value can either be string, int, double or any proto message or a serialized object.
          &quot;booleanArray&quot;: { # This message only contains a field of boolean array. # Boolean Array.
            &quot;booleanValues&quot;: [ # Boolean array.
              True or False,
            ],
          },
          &quot;booleanValue&quot;: True or False, # Boolean.
          &quot;doubleArray&quot;: { # This message only contains a field of double number array. # Double Number Array.
            &quot;doubleValues&quot;: [ # Double number array.
              3.14,
            ],
          },
          &quot;doubleValue&quot;: 3.14, # Double Number.
          &quot;intArray&quot;: { # This message only contains a field of integer array. # Integer Array.
            &quot;intValues&quot;: [ # Integer array.
              &quot;A String&quot;,
            ],
          },
          &quot;intValue&quot;: &quot;A String&quot;, # Integer.
          &quot;jsonValue&quot;: &quot;A String&quot;, # Json.
          &quot;stringArray&quot;: { # This message only contains a field of string array. # String Array.
            &quot;stringValues&quot;: [ # String array.
              &quot;A String&quot;,
            ],
          },
          &quot;stringValue&quot;: &quot;A String&quot;, # String.
        },
        &quot;description&quot;: &quot;A String&quot;, # Optional. Description of the parameter.
        &quot;displayName&quot;: &quot;A String&quot;, # The name (without prefix) to be displayed in the UI for this parameter. E.g. if the key is &quot;foo.bar.myName&quot;, then the name would be &quot;myName&quot;.
        &quot;inputOutputType&quot;: &quot;A String&quot;, # Specifies the input/output type for the parameter.
        &quot;isTransient&quot;: True or False, # Whether this parameter is a transient parameter.
        &quot;jsonSchema&quot;: &quot;A String&quot;, # This schema will be used to validate runtime JSON-typed values of this parameter.
        &quot;key&quot;: &quot;A String&quot;, # Key is used to retrieve the corresponding parameter value. This should be unique for a given fired event. These parameters must be predefined in the integration definition.
        &quot;masked&quot;: True or False, # True if this parameter should be masked in the logs
        &quot;producer&quot;: &quot;A String&quot;, # The identifier of the node (TaskConfig/TriggerConfig) this parameter was produced by, if it is a transient param or a copy of an input param.
        &quot;searchable&quot;: True or False, # Searchable in the execution log or not.
      },
      &quot;value&quot;: { # The type of the parameter. # Values for the defined keys. Each value can either be string, int, double or any proto message or a serialized object.
        &quot;booleanArray&quot;: { # This message only contains a field of boolean array. # Boolean Array.
          &quot;booleanValues&quot;: [ # Boolean array.
            True or False,
          ],
        },
        &quot;booleanValue&quot;: True or False, # Boolean.
        &quot;doubleArray&quot;: { # This message only contains a field of double number array. # Double Number Array.
          &quot;doubleValues&quot;: [ # Double number array.
            3.14,
          ],
        },
        &quot;doubleValue&quot;: 3.14, # Double Number.
        &quot;intArray&quot;: { # This message only contains a field of integer array. # Integer Array.
          &quot;intValues&quot;: [ # Integer array.
            &quot;A String&quot;,
          ],
        },
        &quot;intValue&quot;: &quot;A String&quot;, # Integer.
        &quot;jsonValue&quot;: &quot;A String&quot;, # Json.
        &quot;stringArray&quot;: { # This message only contains a field of string array. # String Array.
          &quot;stringValues&quot;: [ # String array.
            &quot;A String&quot;,
          ],
        },
        &quot;stringValue&quot;: &quot;A String&quot;, # String.
      },
    },
  ],
  &quot;integrationParameters&quot;: [ # Optional. Parameters that are expected to be passed to the integration when an event is triggered. This consists of all the parameters that are expected in the integration execution. This gives the user the ability to provide default values, add information like PII and also provide data types of each parameter.
    { # Integration Parameter is defined in the integration config and are used to provide information about data types of the expected parameters and provide any default values if needed. They can also be used to add custom attributes. These are static in nature and should not be used for dynamic event definition.
      &quot;containsLargeData&quot;: True or False, # Indicates whether this variable contains large data and need to be uploaded to Cloud Storage.
      &quot;dataType&quot;: &quot;A String&quot;, # Type of the parameter.
      &quot;defaultValue&quot;: { # The type of the parameter. # Default values for the defined keys. Each value can either be string, int, double or any proto message or a serialized object.
        &quot;booleanArray&quot;: { # This message only contains a field of boolean array. # Boolean Array.
          &quot;booleanValues&quot;: [ # Boolean array.
            True or False,
          ],
        },
        &quot;booleanValue&quot;: True or False, # Boolean.
        &quot;doubleArray&quot;: { # This message only contains a field of double number array. # Double Number Array.
          &quot;doubleValues&quot;: [ # Double number array.
            3.14,
          ],
        },
        &quot;doubleValue&quot;: 3.14, # Double Number.
        &quot;intArray&quot;: { # This message only contains a field of integer array. # Integer Array.
          &quot;intValues&quot;: [ # Integer array.
            &quot;A String&quot;,
          ],
        },
        &quot;intValue&quot;: &quot;A String&quot;, # Integer.
        &quot;jsonValue&quot;: &quot;A String&quot;, # Json.
        &quot;stringArray&quot;: { # This message only contains a field of string array. # String Array.
          &quot;stringValues&quot;: [ # String array.
            &quot;A String&quot;,
          ],
        },
        &quot;stringValue&quot;: &quot;A String&quot;, # String.
      },
      &quot;description&quot;: &quot;A String&quot;, # Optional. Description of the parameter.
      &quot;displayName&quot;: &quot;A String&quot;, # The name (without prefix) to be displayed in the UI for this parameter. E.g. if the key is &quot;foo.bar.myName&quot;, then the name would be &quot;myName&quot;.
      &quot;inputOutputType&quot;: &quot;A String&quot;, # Specifies the input/output type for the parameter.
      &quot;isTransient&quot;: True or False, # Whether this parameter is a transient parameter.
      &quot;jsonSchema&quot;: &quot;A String&quot;, # This schema will be used to validate runtime JSON-typed values of this parameter.
      &quot;key&quot;: &quot;A String&quot;, # Key is used to retrieve the corresponding parameter value. This should be unique for a given fired event. These parameters must be predefined in the integration definition.
      &quot;masked&quot;: True or False, # True if this parameter should be masked in the logs
      &quot;producer&quot;: &quot;A String&quot;, # The identifier of the node (TaskConfig/TriggerConfig) this parameter was produced by, if it is a transient param or a copy of an input param.
      &quot;searchable&quot;: True or False, # Searchable in the execution log or not.
    },
  ],
  &quot;integrationParametersInternal&quot;: { # LINT.IfChange This is the frontend version of WorkflowParameters. It&#x27;s exactly like the backend version except that instead of flattening protobuf parameters and treating every field and subfield of a protobuf parameter as a separate parameter, the fields/subfields of a protobuf parameter will be nested as &quot;children&quot; (see &#x27;children&#x27; field below) parameters of the parent parameter. Please refer to enterprise/crm/eventbus/proto/workflow_parameters.proto for more information about WorkflowParameters. # Optional. Parameters that are expected to be passed to the integration when an event is triggered. This consists of all the parameters that are expected in the integration execution. This gives the user the ability to provide default values, add information like PII and also provide data types of each parameter.
    &quot;parameters&quot;: [ # Parameters are a part of Event and can be used to communiticate between different tasks that are part of the same workflow execution.
      {
        &quot;attributes&quot;: { # Attributes are additional options that can be associated with each event property. For more information, see # Metadata information about the parameters.
          &quot;dataType&quot;: &quot;A String&quot;, # Things like URL, Email, Currency, Timestamp (rather than string, int64...)
          &quot;defaultValue&quot;: { # Used for define type for values. Currently supported value types include int, string, double, array, and any proto message. # Used to define defaults.
            &quot;booleanValue&quot;: True or False,
            &quot;doubleArray&quot;: {
              &quot;values&quot;: [
                3.14,
              ],
            },
            &quot;doubleValue&quot;: 3.14,
            &quot;intArray&quot;: {
              &quot;values&quot;: [
                &quot;A String&quot;,
              ],
            },
            &quot;intValue&quot;: &quot;A String&quot;,
            &quot;protoValue&quot;: {
              &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
            },
            &quot;stringArray&quot;: {
              &quot;values&quot;: [
                &quot;A String&quot;,
              ],
            },
            &quot;stringValue&quot;: &quot;A String&quot;,
          },
          &quot;isRequired&quot;: True or False, # Required for event execution. The validation will be done by the event bus when the event is triggered.
          &quot;isSearchable&quot;: True or False, # Used to indicate if a ParameterEntry should be converted to ParamIndexes for ST-Spanner full-text search. DEPRECATED: use searchable.
          &quot;logSettings&quot;: { # The LogSettings define the logging attributes for an event property. These attributes are used to map the property to the parameter in the log proto. Also used to define scrubbing/truncation behavior and PII information. # See
            &quot;logFieldName&quot;: &quot;A String&quot;, # The name of corresponding logging field of the event property. If omitted, assumes the same name as the event property key.
            &quot;seedPeriod&quot;: &quot;A String&quot;,
            &quot;seedScope&quot;: &quot;A String&quot;,
          },
          &quot;masked&quot;: True or False, # True if this workflow parameter should be masked in the logs
          &quot;readOnly&quot;: True or False, # Used to indicate if the ParameterEntry is a read only field or not.
          &quot;searchable&quot;: &quot;A String&quot;,
          &quot;taskVisibility&quot;: [ # List of tasks that can view this property, if empty then all.
            &quot;A String&quot;,
          ],
        },
        &quot;children&quot;: [ # Child parameters nested within this parameter. This field only applies to protobuf parameters
          # Object with schema name: EnterpriseCrmFrontendsEventbusProtoWorkflowParameterEntry
        ],
        &quot;containsLargeData&quot;: True or False, # Indicates whether this variable contains large data and need to be uploaded to Cloud Storage.
        &quot;dataType&quot;: &quot;A String&quot;, # The data type of the parameter.
        &quot;defaultValue&quot;: { # To support various types of parameter values. Next available id: 14 # Default values for the defined keys. Each value can either be string, int, double or any proto message or a serialized object.
          &quot;booleanArray&quot;: {
            &quot;booleanValues&quot;: [
              True or False,
            ],
          },
          &quot;booleanValue&quot;: True or False,
          &quot;doubleArray&quot;: {
            &quot;doubleValues&quot;: [
              3.14,
            ],
          },
          &quot;doubleValue&quot;: 3.14,
          &quot;intArray&quot;: {
            &quot;intValues&quot;: [
              &quot;A String&quot;,
            ],
          },
          &quot;intValue&quot;: &quot;A String&quot;,
          &quot;jsonValue&quot;: &quot;A String&quot;,
          &quot;protoArray&quot;: {
            &quot;protoValues&quot;: [
              {
                &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
              },
            ],
          },
          &quot;protoValue&quot;: {
            &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
          },
          &quot;serializedObjectValue&quot;: {
            &quot;objectValue&quot;: &quot;A String&quot;,
          },
          &quot;stringArray&quot;: {
            &quot;stringValues&quot;: [
              &quot;A String&quot;,
            ],
          },
          &quot;stringValue&quot;: &quot;A String&quot;,
        },
        &quot;description&quot;: &quot;A String&quot;, # Optional. The description about the parameter
        &quot;inOutType&quot;: &quot;A String&quot;, # Specifies the input/output type for the parameter.
        &quot;isTransient&quot;: True or False, # Whether this parameter is a transient parameter.
        &quot;jsonSchema&quot;: &quot;A String&quot;, # This schema will be used to validate runtime JSON-typed values of this parameter.
        &quot;key&quot;: &quot;A String&quot;, # Key is used to retrieve the corresponding parameter value. This should be unique for a given fired event. These parameters must be predefined in the workflow definition.
        &quot;name&quot;: &quot;A String&quot;, # The name (without prefix) to be displayed in the UI for this parameter. E.g. if the key is &quot;foo.bar.myName&quot;, then the name would be &quot;myName&quot;.
        &quot;producedBy&quot;: { # Represents a node identifier (type + id). Next highest id: 3 # The identifier of the node (TaskConfig/TriggerConfig) this parameter was produced by, if it is a transient param or a copy of an input param.
          &quot;elementIdentifier&quot;: &quot;A String&quot;, # Configuration of the edge.
          &quot;elementType&quot;: &quot;A String&quot;, # Destination node where the edge ends. It can only be a task config.
        },
        &quot;producer&quot;: &quot;A String&quot;,
        &quot;protoDefName&quot;: &quot;A String&quot;, # The name of the protobuf type if the parameter has a protobuf data type.
        &quot;protoDefPath&quot;: &quot;A String&quot;, # If the data type is of type proto or proto array, this field needs to be populated with the fully qualified proto name. This message, for example, would be &quot;enterprise.crm.frontends.eventbus.proto.WorkflowParameterEntry&quot;.
        &quot;required&quot;: True or False,
      },
    ],
  },
  &quot;lastModifierEmail&quot;: &quot;A String&quot;, # Optional. The last modifier&#x27;s email address. Generated based on the End User Credentials/LOAS role of the user making the call.
  &quot;lockHolder&quot;: &quot;A String&quot;, # Optional. The edit lock holder&#x27;s email address. Generated based on the End User Credentials/LOAS role of the user making the call.
  &quot;name&quot;: &quot;A String&quot;, # Output only. Auto-generated primary key.
  &quot;origin&quot;: &quot;A String&quot;, # Optional. The origin that indicates where this integration is coming from.
  &quot;parentTemplateId&quot;: &quot;A String&quot;, # Optional. The id of the template which was used to create this integration_version.
  &quot;runAsServiceAccount&quot;: &quot;A String&quot;, # Optional. The run-as service account email, if set and auth config is not configured, that will be used to generate auth token to be used in Connector task, Rest caller task and Cloud function task.
  &quot;snapshotNumber&quot;: &quot;A String&quot;, # Output only. An increasing sequence that is set when a new snapshot is created. The last created snapshot can be identified by [workflow_name, org_id latest(snapshot_number)]. However, last created snapshot need not be same as the HEAD. So users should always use &quot;HEAD&quot; tag to identify the head.
  &quot;state&quot;: &quot;A String&quot;, # Output only. User should not set it as an input.
  &quot;status&quot;: &quot;A String&quot;, # Output only. Generated by eventbus. User should not set it as an input.
  &quot;taskConfigs&quot;: [ # Optional. Task configuration for the integration. It&#x27;s optional, but the integration doesn&#x27;t do anything without task_configs.
    { # The task configuration details. This is not the implementation of Task. There might be multiple TaskConfigs for the same Task.
      &quot;conditionalFailurePolicies&quot;: { # Conditional task failur retry strategies # Optional. The list of conditional failure policies that will be applied to the task in order.
        &quot;defaultFailurePolicy&quot;: { # Policy that defines the task retry logic and failure type. If no FailurePolicy is defined for a task, all its dependent tasks will not be executed (i.e, a `retry_strategy` of NONE will be applied). # The default failure policy to be applied if no conditional failure policy matches.
          &quot;condition&quot;: &quot;A String&quot;, # Optional. The string condition that will be evaluated to determine if the task should be retried with this failure policy.
          &quot;intervalTime&quot;: &quot;A String&quot;, # Required if retry_strategy is FIXED_INTERVAL or LINEAR/EXPONENTIAL_BACKOFF/RESTART_INTEGRATION_WITH_BACKOFF. Defines the initial interval in seconds for backoff.
          &quot;maxRetries&quot;: 42, # Required if retry_strategy is FIXED_INTERVAL or LINEAR/EXPONENTIAL_BACKOFF/RESTART_INTEGRATION_WITH_BACKOFF. Defines the number of times the task will be retried if failed.
          &quot;retryStrategy&quot;: &quot;A String&quot;, # Defines what happens to the task upon failure.
        },
        &quot;failurePolicies&quot;: [ # The list of failure policies that will be applied to the task in order.
          { # Policy that defines the task retry logic and failure type. If no FailurePolicy is defined for a task, all its dependent tasks will not be executed (i.e, a `retry_strategy` of NONE will be applied).
            &quot;condition&quot;: &quot;A String&quot;, # Optional. The string condition that will be evaluated to determine if the task should be retried with this failure policy.
            &quot;intervalTime&quot;: &quot;A String&quot;, # Required if retry_strategy is FIXED_INTERVAL or LINEAR/EXPONENTIAL_BACKOFF/RESTART_INTEGRATION_WITH_BACKOFF. Defines the initial interval in seconds for backoff.
            &quot;maxRetries&quot;: 42, # Required if retry_strategy is FIXED_INTERVAL or LINEAR/EXPONENTIAL_BACKOFF/RESTART_INTEGRATION_WITH_BACKOFF. Defines the number of times the task will be retried if failed.
            &quot;retryStrategy&quot;: &quot;A String&quot;, # Defines what happens to the task upon failure.
          },
        ],
      },
      &quot;description&quot;: &quot;A String&quot;, # Optional. User-provided description intended to give additional business context about the task.
      &quot;displayName&quot;: &quot;A String&quot;, # Optional. User-provided label that is attached to this TaskConfig in the UI.
      &quot;errorCatcherId&quot;: &quot;A String&quot;, # Optional. Optional Error catcher id of the error catch flow which will be executed when execution error happens in the task
      &quot;externalTaskType&quot;: &quot;A String&quot;, # Optional. External task type of the task
      &quot;failurePolicy&quot;: { # Policy that defines the task retry logic and failure type. If no FailurePolicy is defined for a task, all its dependent tasks will not be executed (i.e, a `retry_strategy` of NONE will be applied). # Optional. Determines the number of times the task will be retried on failure and with what retry strategy. This is applicable for asynchronous calls to Eventbus alone (Post To Queue, Schedule etc.).
        &quot;condition&quot;: &quot;A String&quot;, # Optional. The string condition that will be evaluated to determine if the task should be retried with this failure policy.
        &quot;intervalTime&quot;: &quot;A String&quot;, # Required if retry_strategy is FIXED_INTERVAL or LINEAR/EXPONENTIAL_BACKOFF/RESTART_INTEGRATION_WITH_BACKOFF. Defines the initial interval in seconds for backoff.
        &quot;maxRetries&quot;: 42, # Required if retry_strategy is FIXED_INTERVAL or LINEAR/EXPONENTIAL_BACKOFF/RESTART_INTEGRATION_WITH_BACKOFF. Defines the number of times the task will be retried if failed.
        &quot;retryStrategy&quot;: &quot;A String&quot;, # Defines what happens to the task upon failure.
      },
      &quot;jsonValidationOption&quot;: &quot;A String&quot;, # Optional. If set, overrides the option configured in the Task implementation class.
      &quot;nextTasks&quot;: [ # Optional. The set of tasks that are next in line to be executed as per the execution graph defined for the parent event, specified by `event_config_id`. Each of these next tasks are executed only if the condition associated with them evaluates to true.
        { # The task that is next in line to be executed, if the condition specified evaluated to true.
          &quot;condition&quot;: &quot;A String&quot;, # Standard filter expression for this task to become an eligible next task.
          &quot;description&quot;: &quot;A String&quot;, # User-provided description intended to give additional business context about the task.
          &quot;displayName&quot;: &quot;A String&quot;, # User-provided label that is attached to this edge in the UI.
          &quot;taskConfigId&quot;: &quot;A String&quot;, # ID of the next task.
          &quot;taskId&quot;: &quot;A String&quot;, # Task number of the next task.
        },
      ],
      &quot;nextTasksExecutionPolicy&quot;: &quot;A String&quot;, # Optional. The policy dictating the execution of the next set of tasks for the current task.
      &quot;parameters&quot;: { # Optional. The customized parameters the user can pass to this task.
        &quot;a_key&quot;: { # This message is used for processing and persisting (when applicable) key value pair parameters for each event in the event bus. Next available id: 4
          &quot;key&quot;: &quot;A String&quot;, # Key is used to retrieve the corresponding parameter value. This should be unique for a given fired event. These parameters must be predefined in the integration definition.
          &quot;masked&quot;: True or False, # True if this parameter should be masked in the logs
          &quot;value&quot;: { # The type of the parameter. # Values for the defined keys. Each value can either be string, int, double or any proto message.
            &quot;booleanArray&quot;: { # This message only contains a field of boolean array. # Boolean Array.
              &quot;booleanValues&quot;: [ # Boolean array.
                True or False,
              ],
            },
            &quot;booleanValue&quot;: True or False, # Boolean.
            &quot;doubleArray&quot;: { # This message only contains a field of double number array. # Double Number Array.
              &quot;doubleValues&quot;: [ # Double number array.
                3.14,
              ],
            },
            &quot;doubleValue&quot;: 3.14, # Double Number.
            &quot;intArray&quot;: { # This message only contains a field of integer array. # Integer Array.
              &quot;intValues&quot;: [ # Integer array.
                &quot;A String&quot;,
              ],
            },
            &quot;intValue&quot;: &quot;A String&quot;, # Integer.
            &quot;jsonValue&quot;: &quot;A String&quot;, # Json.
            &quot;stringArray&quot;: { # This message only contains a field of string array. # String Array.
              &quot;stringValues&quot;: [ # String array.
                &quot;A String&quot;,
              ],
            },
            &quot;stringValue&quot;: &quot;A String&quot;, # String.
          },
        },
      },
      &quot;position&quot;: { # Configuration detail of coordinate, it used for UI # Optional. Informs the front-end application where to draw this error catcher config on the UI.
        &quot;x&quot;: 42, # Required. X axis of the coordinate
        &quot;y&quot;: 42, # Required. Y axis of the coordinate
      },
      &quot;successPolicy&quot;: { # Policy that dictates the behavior for the task after it completes successfully. # Optional. Determines what action to take upon successful task completion.
        &quot;finalState&quot;: &quot;A String&quot;, # State to which the execution snapshot status will be set if the task succeeds.
      },
      &quot;synchronousCallFailurePolicy&quot;: { # Policy that defines the task retry logic and failure type. If no FailurePolicy is defined for a task, all its dependent tasks will not be executed (i.e, a `retry_strategy` of NONE will be applied). # Optional. Determines the number of times the task will be retried on failure and with what retry strategy. This is applicable for synchronous calls to Eventbus alone (Post).
        &quot;condition&quot;: &quot;A String&quot;, # Optional. The string condition that will be evaluated to determine if the task should be retried with this failure policy.
        &quot;intervalTime&quot;: &quot;A String&quot;, # Required if retry_strategy is FIXED_INTERVAL or LINEAR/EXPONENTIAL_BACKOFF/RESTART_INTEGRATION_WITH_BACKOFF. Defines the initial interval in seconds for backoff.
        &quot;maxRetries&quot;: 42, # Required if retry_strategy is FIXED_INTERVAL or LINEAR/EXPONENTIAL_BACKOFF/RESTART_INTEGRATION_WITH_BACKOFF. Defines the number of times the task will be retried if failed.
        &quot;retryStrategy&quot;: &quot;A String&quot;, # Defines what happens to the task upon failure.
      },
      &quot;task&quot;: &quot;A String&quot;, # Optional. The name for the task.
      &quot;taskExecutionStrategy&quot;: &quot;A String&quot;, # Optional. The policy dictating the execution strategy of this task.
      &quot;taskId&quot;: &quot;A String&quot;, # Required. The identifier of this task within its parent event config, specified by the client. This should be unique among all the tasks belong to the same event config. We use this field as the identifier to find next tasks (via field `next_tasks.task_id`).
      &quot;taskTemplate&quot;: &quot;A String&quot;, # Optional. Used to define task-template name if task is of type task-template
    },
  ],
  &quot;taskConfigsInternal&quot;: [ # Optional. Task configuration for the integration. It&#x27;s optional, but the integration doesn&#x27;t do anything without task_configs.
    { # The task configuration details. This is not the implementation of Task. There might be multiple TaskConfigs for the same Task.
      &quot;alertConfigs&quot;: [ # Alert configurations on error rate, warning rate, number of runs, durations, etc.
        { # Message to be used to configure alerting in the {@code TaskConfig} protos for tasks in an event.
          &quot;aggregationPeriod&quot;: &quot;A String&quot;, # The period over which the metric value should be aggregated and evaluated. Format is , where integer should be a positive integer and unit should be one of (s,m,h,d,w) meaning (second, minute, hour, day, week).
          &quot;alertDisabled&quot;: True or False, # Set to false by default. When set to true, the metrics are not aggregated or pushed to Monarch for this workflow alert.
          &quot;alertName&quot;: &quot;A String&quot;, # A name to identify this alert. This will be displayed in the alert subject. If set, this name should be unique in within the scope of the containing workflow.
          &quot;clientId&quot;: &quot;A String&quot;, # Client associated with this alert configuration. Must be a client enabled in one of the containing workflow&#x27;s triggers.
          &quot;durationThresholdMs&quot;: &quot;A String&quot;, # Should be specified only for TASK_AVERAGE_DURATION and TASK_PERCENTILE_DURATION metrics. This member should be used to specify what duration value the metrics should exceed for the alert to trigger.
          &quot;errorEnumList&quot;: { # List of error enums for alerts.
            &quot;enumStrings&quot;: [
              &quot;A String&quot;,
            ],
            &quot;filterType&quot;: &quot;A String&quot;,
          },
          &quot;metricType&quot;: &quot;A String&quot;,
          &quot;numAggregationPeriods&quot;: 42, # For how many contiguous aggregation periods should the expected min or max be violated for the alert to be fired.
          &quot;onlyFinalAttempt&quot;: True or False, # Only count final task attempts, not retries.
          &quot;playbookUrl&quot;: &quot;A String&quot;, # Link to a playbook for resolving the issue that triggered this alert.
          &quot;thresholdType&quot;: &quot;A String&quot;, # The threshold type for which this alert is being configured. If value falls below expected_min or exceeds expected_max, an alert will be fired.
          &quot;thresholdValue&quot;: { # The threshold value of the metric, above or below which the alert should be triggered. See EventAlertConfig or TaskAlertConfig for the different alert metric types in each case. For the *RATE metrics, one or both of these fields may be set. Zero is the default value and can be left at that. For *PERCENTILE_DURATION metrics, one or both of these fields may be set, and also, the duration threshold value should be specified in the threshold_duration_ms member below. For *AVERAGE_DURATION metrics, these fields should not be set at all. A different member, threshold_duration_ms, must be set in the EventAlertConfig or the TaskAlertConfig. # The metric value, above or below which the alert should be triggered.
            &quot;absolute&quot;: &quot;A String&quot;,
            &quot;percentage&quot;: 42,
          },
          &quot;warningEnumList&quot;: { # List of error enums for alerts.
            &quot;enumStrings&quot;: [
              &quot;A String&quot;,
            ],
            &quot;filterType&quot;: &quot;A String&quot;,
          },
        },
      ],
      &quot;conditionalFailurePolicies&quot;: { # Optional. Determines the number of times the task will be retried on failure and with what retry strategy. This is applicable for synchronous calls to Eventbus alone (Post).
        &quot;defaultFailurePolicy&quot;: { # Policy that defines the task retry logic and failure type. If no FailurePolicy is defined for a task, all its dependent tasks will not be executed (i.e, a `retry_strategy` of NONE will be applied). # The default failure policy to be applied if no conditional failure policy matches
          &quot;intervalInSeconds&quot;: &quot;A String&quot;, # Required if retry_strategy is FIXED_INTERVAL or LINEAR/EXPONENTIAL_BACKOFF/RESTART_WORKFLOW_WITH_BACKOFF. Defines the initial interval for backoff.
          &quot;maxNumRetries&quot;: 42, # Required if retry_strategy is FIXED_INTERVAL or LINEAR/EXPONENTIAL_BACKOFF/RESTART_WORKFLOW_WITH_BACKOFF. Defines the number of times the task will be retried if failed.
          &quot;retryCondition&quot;: &quot;A String&quot;, # Optional. The retry condition that will be evaluated for this failure policy with the corresponding retry strategy.
          &quot;retryStrategy&quot;: &quot;A String&quot;, # Defines what happens to the task upon failure.
        },
        &quot;failurePolicies&quot;: [ # The list of failure policies that will be applied to the task in order.
          { # Policy that defines the task retry logic and failure type. If no FailurePolicy is defined for a task, all its dependent tasks will not be executed (i.e, a `retry_strategy` of NONE will be applied).
            &quot;intervalInSeconds&quot;: &quot;A String&quot;, # Required if retry_strategy is FIXED_INTERVAL or LINEAR/EXPONENTIAL_BACKOFF/RESTART_WORKFLOW_WITH_BACKOFF. Defines the initial interval for backoff.
            &quot;maxNumRetries&quot;: 42, # Required if retry_strategy is FIXED_INTERVAL or LINEAR/EXPONENTIAL_BACKOFF/RESTART_WORKFLOW_WITH_BACKOFF. Defines the number of times the task will be retried if failed.
            &quot;retryCondition&quot;: &quot;A String&quot;, # Optional. The retry condition that will be evaluated for this failure policy with the corresponding retry strategy.
            &quot;retryStrategy&quot;: &quot;A String&quot;, # Defines what happens to the task upon failure.
          },
        ],
      },
      &quot;createTime&quot;: &quot;A String&quot;, # Auto-generated.
      &quot;creatorEmail&quot;: &quot;A String&quot;, # The creator&#x27;s email address. Auto-generated from the user&#x27;s email.
      &quot;description&quot;: &quot;A String&quot;, # User-provided description intended to give more business context about the task.
      &quot;disableStrictTypeValidation&quot;: True or False, # If this config contains a TypedTask, allow validation to succeed if an input is read from the output of another TypedTask whose output type is declared as a superclass of the requested input type. For instance, if the previous task declares an output of type Message, any task with this flag enabled will pass validation when attempting to read any proto Message type from the resultant Event parameter.
      &quot;errorCatcherId&quot;: &quot;A String&quot;, # Optional Error catcher id of the error catch flow which will be executed when execution error happens in the task
      &quot;externalTaskType&quot;: &quot;A String&quot;,
      &quot;failurePolicy&quot;: { # Policy that defines the task retry logic and failure type. If no FailurePolicy is defined for a task, all its dependent tasks will not be executed (i.e, a `retry_strategy` of NONE will be applied). # Optional. Determines the number of times the task will be retried on failure and with what retry strategy. This is applicable for asynchronous calls to Eventbus alone (Post To Queue, Schedule etc.).
        &quot;intervalInSeconds&quot;: &quot;A String&quot;, # Required if retry_strategy is FIXED_INTERVAL or LINEAR/EXPONENTIAL_BACKOFF/RESTART_WORKFLOW_WITH_BACKOFF. Defines the initial interval for backoff.
        &quot;maxNumRetries&quot;: 42, # Required if retry_strategy is FIXED_INTERVAL or LINEAR/EXPONENTIAL_BACKOFF/RESTART_WORKFLOW_WITH_BACKOFF. Defines the number of times the task will be retried if failed.
        &quot;retryCondition&quot;: &quot;A String&quot;, # Optional. The retry condition that will be evaluated for this failure policy with the corresponding retry strategy.
        &quot;retryStrategy&quot;: &quot;A String&quot;, # Defines what happens to the task upon failure.
      },
      &quot;incomingEdgeCount&quot;: 42, # The number of edges leading into this TaskConfig.
      &quot;jsonValidationOption&quot;: &quot;A String&quot;, # If set, overrides the option configured in the Task implementation class.
      &quot;label&quot;: &quot;A String&quot;, # User-provided label that is attached to this TaskConfig in the UI.
      &quot;lastModifiedTime&quot;: &quot;A String&quot;, # Auto-generated.
      &quot;nextTasks&quot;: [ # The set of tasks that are next in line to be executed as per the execution graph defined for the parent event, specified by `event_config_id`. Each of these next tasks are executed only if the condition associated with them evaluates to true.
        { # The task that is next in line to be executed, if the condition specified evaluated to true.
          &quot;combinedConditions&quot;: [ # Combined condition for this task to become an eligible next task. Each of these combined_conditions are joined with logical OR. DEPRECATED: use `condition`
            { # This message recursively combines constituent conditions using logical AND.
              &quot;conditions&quot;: [ # A set of individual constituent conditions.
                { # Condition that uses `operator` to evaluate the key against the value.
                  &quot;eventPropertyKey&quot;: &quot;A String&quot;, # Key that&#x27;s evaluated against the `value`. Please note the data type of the runtime value associated with the key should match the data type of `value`, else an IllegalArgumentException is thrown.
                  &quot;operator&quot;: &quot;A String&quot;, # Operator used to evaluate the condition. Please note that an operator with an inappropriate key/value operand will result in IllegalArgumentException, e.g. CONTAINS with boolean key/value pair.
                  &quot;value&quot;: { # Used for define type for values. Currently supported value types include int, string, double, array, and any proto message. # Value that&#x27;s checked for the key.
                    &quot;booleanValue&quot;: True or False,
                    &quot;doubleArray&quot;: {
                      &quot;values&quot;: [
                        3.14,
                      ],
                    },
                    &quot;doubleValue&quot;: 3.14,
                    &quot;intArray&quot;: {
                      &quot;values&quot;: [
                        &quot;A String&quot;,
                      ],
                    },
                    &quot;intValue&quot;: &quot;A String&quot;,
                    &quot;protoValue&quot;: {
                      &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
                    },
                    &quot;stringArray&quot;: {
                      &quot;values&quot;: [
                        &quot;A String&quot;,
                      ],
                    },
                    &quot;stringValue&quot;: &quot;A String&quot;,
                  },
                },
              ],
            },
          ],
          &quot;condition&quot;: &quot;A String&quot;, # Standard filter expression for this task to become an eligible next task.
          &quot;description&quot;: &quot;A String&quot;, # User-provided description intended to give more business context about the next task edge or condition.
          &quot;label&quot;: &quot;A String&quot;, # User-provided label that is attached to this edge in the UI.
          &quot;taskConfigId&quot;: &quot;A String&quot;, # ID of the next task.
          &quot;taskNumber&quot;: &quot;A String&quot;, # Task number of the next task.
        },
      ],
      &quot;nextTasksExecutionPolicy&quot;: &quot;A String&quot;, # The policy dictating the execution of the next set of tasks for the current task.
      &quot;parameters&quot;: { # The customized parameters the user can pass to this task.
        &quot;a_key&quot;: { # Key-value pair of EventBus parameters.
          &quot;dataType&quot;: &quot;A String&quot;, # Explicitly getting the type of the parameter.
          &quot;key&quot;: &quot;A String&quot;, # Key is used to retrieve the corresponding parameter value. This should be unique for a given fired event. These parameters must be predefined in the workflow definition.
          &quot;masked&quot;: True or False, # True if this parameter should be masked in the logs
          &quot;value&quot;: { # To support various types of parameter values. Next available id: 14 # Values for the defined keys. Each value can either be string, int, double or any proto message.
            &quot;booleanArray&quot;: {
              &quot;booleanValues&quot;: [
                True or False,
              ],
            },
            &quot;booleanValue&quot;: True or False,
            &quot;doubleArray&quot;: {
              &quot;doubleValues&quot;: [
                3.14,
              ],
            },
            &quot;doubleValue&quot;: 3.14,
            &quot;intArray&quot;: {
              &quot;intValues&quot;: [
                &quot;A String&quot;,
              ],
            },
            &quot;intValue&quot;: &quot;A String&quot;,
            &quot;jsonValue&quot;: &quot;A String&quot;,
            &quot;protoArray&quot;: {
              &quot;protoValues&quot;: [
                {
                  &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
                },
              ],
            },
            &quot;protoValue&quot;: {
              &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
            },
            &quot;serializedObjectValue&quot;: {
              &quot;objectValue&quot;: &quot;A String&quot;,
            },
            &quot;stringArray&quot;: {
              &quot;stringValues&quot;: [
                &quot;A String&quot;,
              ],
            },
            &quot;stringValue&quot;: &quot;A String&quot;,
          },
        },
      },
      &quot;position&quot;: { # Represents two-dimensional positions. # Optional. Informs the front-end application where to draw this task config on the UI.
        &quot;x&quot;: 42,
        &quot;y&quot;: 42,
      },
      &quot;precondition&quot;: &quot;A String&quot;, # Optional. Standard filter expression evaluated before execution. Independent of other conditions and tasks. Can be used to enable rollout. e.g. &quot;rollout(5)&quot; will only allow 5% of incoming traffic to task.
      &quot;preconditionLabel&quot;: &quot;A String&quot;, # Optional. User-provided label that is attached to precondition in the UI.
      &quot;rollbackStrategy&quot;: { # Next available id: 4 # Optional. Contains information about what needs to be done upon failure (either a permanent error or after it has been retried too many times).
        &quot;parameters&quot;: { # LINT.IfChange This message is used for processing and persisting (when applicable) key value pair parameters for each event in the event bus. Please see # Optional. The customized parameters the user can pass to this task.
          &quot;parameters&quot;: [ # Parameters are a part of Event and can be used to communicate between different tasks that are part of the same workflow execution.
            { # Key-value pair of EventBus parameters.
              &quot;dataType&quot;: &quot;A String&quot;, # Explicitly getting the type of the parameter.
              &quot;key&quot;: &quot;A String&quot;, # Key is used to retrieve the corresponding parameter value. This should be unique for a given fired event. These parameters must be predefined in the workflow definition.
              &quot;masked&quot;: True or False, # True if this parameter should be masked in the logs
              &quot;value&quot;: { # To support various types of parameter values. Next available id: 14 # Values for the defined keys. Each value can either be string, int, double or any proto message.
                &quot;booleanArray&quot;: {
                  &quot;booleanValues&quot;: [
                    True or False,
                  ],
                },
                &quot;booleanValue&quot;: True or False,
                &quot;doubleArray&quot;: {
                  &quot;doubleValues&quot;: [
                    3.14,
                  ],
                },
                &quot;doubleValue&quot;: 3.14,
                &quot;intArray&quot;: {
                  &quot;intValues&quot;: [
                    &quot;A String&quot;,
                  ],
                },
                &quot;intValue&quot;: &quot;A String&quot;,
                &quot;jsonValue&quot;: &quot;A String&quot;,
                &quot;protoArray&quot;: {
                  &quot;protoValues&quot;: [
                    {
                      &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
                    },
                  ],
                },
                &quot;protoValue&quot;: {
                  &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
                },
                &quot;serializedObjectValue&quot;: {
                  &quot;objectValue&quot;: &quot;A String&quot;,
                },
                &quot;stringArray&quot;: {
                  &quot;stringValues&quot;: [
                    &quot;A String&quot;,
                  ],
                },
                &quot;stringValue&quot;: &quot;A String&quot;,
              },
            },
          ],
        },
        &quot;rollbackTaskImplementationClassName&quot;: &quot;A String&quot;, # Required. This is the name of the task that needs to be executed upon rollback of this task.
        &quot;taskNumbersToRollback&quot;: [ # Required. These are the tasks numbers of the tasks whose `rollback_strategy.rollback_task_implementation_class_name` needs to be executed upon failure of this task.
          &quot;A String&quot;,
        ],
      },
      &quot;successPolicy&quot;: { # Policy that dictates the behavior for the task after it completes successfully. # Determines what action to take upon successful task completion.
        &quot;finalState&quot;: &quot;A String&quot;, # State to which the execution snapshot status will be set if the task succeeds.
      },
      &quot;synchronousCallFailurePolicy&quot;: { # Policy that defines the task retry logic and failure type. If no FailurePolicy is defined for a task, all its dependent tasks will not be executed (i.e, a `retry_strategy` of NONE will be applied). # Optional. Determines the number of times the task will be retried on failure and with what retry strategy. This is applicable for synchronous calls to Eventbus alone (Post).
        &quot;intervalInSeconds&quot;: &quot;A String&quot;, # Required if retry_strategy is FIXED_INTERVAL or LINEAR/EXPONENTIAL_BACKOFF/RESTART_WORKFLOW_WITH_BACKOFF. Defines the initial interval for backoff.
        &quot;maxNumRetries&quot;: 42, # Required if retry_strategy is FIXED_INTERVAL or LINEAR/EXPONENTIAL_BACKOFF/RESTART_WORKFLOW_WITH_BACKOFF. Defines the number of times the task will be retried if failed.
        &quot;retryCondition&quot;: &quot;A String&quot;, # Optional. The retry condition that will be evaluated for this failure policy with the corresponding retry strategy.
        &quot;retryStrategy&quot;: &quot;A String&quot;, # Defines what happens to the task upon failure.
      },
      &quot;taskEntity&quot;: { # Contains a task&#x27;s metadata and associated information. Next available id: 7 # Copy of the task entity that this task config is an instance of.
        &quot;disabledForVpcSc&quot;: True or False, # True if the task has conflict with vpcsc
        &quot;metadata&quot;: { # TaskMetadata are attributes that are associated to every common Task we have. # Metadata inclueds the task name, author and so on.
          &quot;activeTaskName&quot;: &quot;A String&quot;, # The new task name to replace the current task if it is deprecated. Otherwise, it is the same as the current task name.
          &quot;admins&quot;: [
            { # Admins are owners of a Task, and have all permissions on a particular task identified by the task name. By default, Eventbus periodically scans all task metadata and syncs (adds) any new admins defined here to Zanzibar.
              &quot;googleGroupEmail&quot;: &quot;A String&quot;,
              &quot;userEmail&quot;: &quot;A String&quot;,
            },
          ],
          &quot;category&quot;: &quot;A String&quot;,
          &quot;codeSearchLink&quot;: &quot;A String&quot;, # The Code Search link to the Task Java file.
          &quot;defaultJsonValidationOption&quot;: &quot;A String&quot;, # Controls whether JSON workflow parameters are validated against provided schemas before and/or after this task&#x27;s execution.
          &quot;defaultSpec&quot;: &quot;A String&quot;, # Contains the initial configuration of the task with default values set. For now, The string should be compatible to an ASCII-proto format.
          &quot;description&quot;: &quot;A String&quot;, # In a few sentences, describe the purpose and usage of the task.
          &quot;descriptiveName&quot;: &quot;A String&quot;, # The string name to show on the task list on the Workflow editor screen. This should be a very short, one to two words name for the task. (e.g. &quot;Send Mail&quot;)
          &quot;docMarkdown&quot;: &quot;A String&quot;, # Snippet of markdown documentation to embed in the RHP for this task.
          &quot;externalCategory&quot;: &quot;A String&quot;,
          &quot;externalCategorySequence&quot;: 42, # Sequence with which the task in specific category to be displayed in task discovery panel for external users.
          &quot;externalDocHtml&quot;: &quot;A String&quot;, # External-facing documention embedded in the RHP for this task.
          &quot;externalDocLink&quot;: &quot;A String&quot;, # Doc link for external-facing documentation (separate from g3doc).
          &quot;externalDocMarkdown&quot;: &quot;A String&quot;, # DEPRECATED: Use external_doc_html.
          &quot;g3DocLink&quot;: &quot;A String&quot;, # URL to the associated G3 Doc for the task if available
          &quot;iconLink&quot;: &quot;A String&quot;, # URL to gstatic image icon for this task. This icon shows up on the task list panel along with the task name in the Workflow Editor screen. Use the 24p, 2x, gray color icon image format.
          &quot;isDeprecated&quot;: True or False, # The deprecation status of the current task. Default value is false;
          &quot;name&quot;: &quot;A String&quot;, # The actual class name or the annotated name of the task. Task Author should initialize this field with value from the getName() method of the Task class.
          &quot;standaloneExternalDocHtml&quot;: &quot;A String&quot;, # External-facing documention for standalone IP in pantheon embedded in the RHP for this task. Non null only if different from external_doc_html
          &quot;status&quot;: &quot;A String&quot;, # Allows author to indicate if the task is ready to use or not. If not set, then it will default to INACTIVE.
          &quot;system&quot;: &quot;A String&quot;,
          &quot;tags&quot;: [ # A set of tags that pertain to a particular task. This can be used to improve the searchability of tasks with several names (&quot;REST Caller&quot; vs. &quot;Call REST Endpoint&quot;) or to help users find tasks based on related words.
            &quot;A String&quot;,
          ],
        },
        &quot;paramSpecs&quot;: { # Declarations for inputs/outputs for a TypedTask. This is also associated with the METADATA mask.
          &quot;parameters&quot;: [
            { # Key-value pair of EventBus task parameters. Next id: 13
              &quot;className&quot;: &quot;A String&quot;, # The FQCN of the Java object this represents. A string, for example, would be &quot;java.lang.String&quot;. If this is &quot;java.lang.Object&quot;, the parameter can be of any type.
              &quot;collectionElementClassName&quot;: &quot;A String&quot;, # If it is a collection of objects, this would be the FCQN of every individual element in the collection. If this is &quot;java.lang.Object&quot;, the parameter is a collection of any type.
              &quot;config&quot;: { # Optional fields, such as help text and other useful info.
                &quot;descriptivePhrase&quot;: &quot;A String&quot;, # A short phrase to describe what this parameter contains.
                &quot;helpText&quot;: &quot;A String&quot;, # Detailed help text for this parameter containing information not provided elsewhere. For example, instructions on how to migrate from a deprecated parameter.
                &quot;hideDefaultValue&quot;: True or False, # Whether the default value is hidden in the UI.
                &quot;inputDisplayOption&quot;: &quot;A String&quot;,
                &quot;isHidden&quot;: True or False, # Whether this field is hidden in the UI.
                &quot;label&quot;: &quot;A String&quot;, # A user-friendly label for the parameter.
                &quot;parameterNameOption&quot;: &quot;A String&quot;,
                &quot;subSectionLabel&quot;: &quot;A String&quot;, # A user-friendly label for subSection under which the parameter will be displayed.
                &quot;uiPlaceholderText&quot;: &quot;A String&quot;, # Placeholder text which will appear in the UI input form for this parameter.
              },
              &quot;dataType&quot;: &quot;A String&quot;, # The data type of the parameter.
              &quot;defaultValue&quot;: { # To support various types of parameter values. Next available id: 14 # Default values for the defined keys. Each value can either be string, int, double or any proto message or a serialized object.
                &quot;booleanArray&quot;: {
                  &quot;booleanValues&quot;: [
                    True or False,
                  ],
                },
                &quot;booleanValue&quot;: True or False,
                &quot;doubleArray&quot;: {
                  &quot;doubleValues&quot;: [
                    3.14,
                  ],
                },
                &quot;doubleValue&quot;: 3.14,
                &quot;intArray&quot;: {
                  &quot;intValues&quot;: [
                    &quot;A String&quot;,
                  ],
                },
                &quot;intValue&quot;: &quot;A String&quot;,
                &quot;jsonValue&quot;: &quot;A String&quot;,
                &quot;protoArray&quot;: {
                  &quot;protoValues&quot;: [
                    {
                      &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
                    },
                  ],
                },
                &quot;protoValue&quot;: {
                  &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
                },
                &quot;serializedObjectValue&quot;: {
                  &quot;objectValue&quot;: &quot;A String&quot;,
                },
                &quot;stringArray&quot;: {
                  &quot;stringValues&quot;: [
                    &quot;A String&quot;,
                  ],
                },
                &quot;stringValue&quot;: &quot;A String&quot;,
              },
              &quot;isDeprecated&quot;: True or False, # If set, this entry is deprecated, so further use of this parameter should be prohibited.
              &quot;isOutput&quot;: True or False,
              &quot;jsonSchema&quot;: &quot;A String&quot;, # If the data_type is JSON_VALUE, then this will define its schema.
              &quot;key&quot;: &quot;A String&quot;, # Key is used to retrieve the corresponding parameter value. This should be unique for a given task. These parameters must be predefined in the workflow definition.
              &quot;protoDef&quot;: { # Populated if this represents a proto or proto array.
                &quot;fullName&quot;: &quot;A String&quot;, # The fully-qualified proto name. This message, for example, would be &quot;enterprise.crm.eventbus.proto.ParamSpecEntry.ProtoDefinition&quot;.
                &quot;path&quot;: &quot;A String&quot;, # Path to the proto file that contains the message type&#x27;s definition.
              },
              &quot;required&quot;: True or False, # If set, the user must provide an input value for this parameter.
              &quot;validationRule&quot;: { # Rule used to validate inputs (individual values and collection elements) for this parameter.
                &quot;doubleRange&quot;: { # Range used to validate doubles and floats.
                  &quot;max&quot;: 3.14, # The inclusive maximum of the acceptable range.
                  &quot;min&quot;: 3.14, # The inclusive minimum of the acceptable range.
                },
                &quot;intRange&quot;: { # Range used to validate longs and ints.
                  &quot;max&quot;: &quot;A String&quot;, # The inclusive maximum of the acceptable range.
                  &quot;min&quot;: &quot;A String&quot;, # The inclusive minimum of the acceptable range.
                },
                &quot;stringRegex&quot;: { # Rule used to validate strings.
                  &quot;exclusive&quot;: True or False, # Whether the regex matcher is applied exclusively (if true, matching values will be rejected).
                  &quot;regex&quot;: &quot;A String&quot;, # The regex applied to the input value(s).
                },
              },
            },
          ],
        },
        &quot;stats&quot;: { # Stats for the requested dimensions: QPS, duration, and error/warning rate # Deprecated - statistics from the Monarch query.
          &quot;dimensions&quot;: { # Dimensions that these stats have been aggregated on.
            &quot;clientId&quot;: &quot;A String&quot;,
            &quot;enumFilterType&quot;: &quot;A String&quot;, # Whether to include or exclude the enums matching the regex.
            &quot;errorEnumString&quot;: &quot;A String&quot;,
            &quot;retryAttempt&quot;: &quot;A String&quot;,
            &quot;taskName&quot;: &quot;A String&quot;,
            &quot;taskNumber&quot;: &quot;A String&quot;,
            &quot;triggerId&quot;: &quot;A String&quot;, # Stats have been or will be aggregated on set fields for any semantically-meaningful combination.
            &quot;warningEnumString&quot;: &quot;A String&quot;,
            &quot;workflowId&quot;: &quot;A String&quot;,
            &quot;workflowName&quot;: &quot;A String&quot;,
          },
          &quot;durationInSeconds&quot;: 3.14, # Average duration in seconds.
          &quot;errorRate&quot;: 3.14, # Average error rate.
          &quot;qps&quot;: 3.14, # Queries per second.
          &quot;warningRate&quot;: 3.14, # Average warning rate.
        },
        &quot;taskType&quot;: &quot;A String&quot;, # Defines the type of the task
        &quot;uiConfig&quot;: { # Task authors would use this type to configure the UI for a particular task by specifying what UI config modules should be included to compose the UI. Learn more about config module framework: # UI configuration for this task Also associated with the METADATA mask.
          &quot;taskUiModuleConfigs&quot;: [ # Configurations of included config modules.
            { # Task author would use this type to configure a config module.
              &quot;moduleId&quot;: &quot;A String&quot;, # ID of the config module.
            },
          ],
        },
      },
      &quot;taskExecutionStrategy&quot;: &quot;A String&quot;, # The policy dictating the execution strategy of this task.
      &quot;taskName&quot;: &quot;A String&quot;, # The name for the task.
      &quot;taskNumber&quot;: &quot;A String&quot;, # REQUIRED: the identifier of this task within its parent event config, specified by the client. This should be unique among all the tasks belong to the same event config. We use this field as the identifier to find next tasks (via field `next_tasks.task_number`).
      &quot;taskSpec&quot;: &quot;A String&quot;, # A string template that allows user to configure task parameters (with either literal default values or tokens which will be resolved at execution time) for the task. It will eventually replace the old &quot;parameters&quot; field.
      &quot;taskTemplateName&quot;: &quot;A String&quot;, # Used to define task-template name if task is of type task-template
      &quot;taskType&quot;: &quot;A String&quot;, # Defines the type of the task
    },
  ],
  &quot;teardown&quot;: { # Optional. Contains a graph of tasks that will be executed before putting the event in a terminal state (SUCCEEDED/FAILED/FATAL), regardless of success or failure, similar to &quot;finally&quot; in code.
    &quot;teardownTaskConfigs&quot;: [ # Required.
      {
        &quot;creatorEmail&quot;: &quot;A String&quot;, # The creator&#x27;s email address.
        &quot;name&quot;: &quot;A String&quot;, # Required. Unique identifier of the teardown task within this Config. We use this field as the identifier to find next teardown tasks.
        &quot;nextTeardownTask&quot;: { # The teardown task that is next in line to be executed. We support only sequential execution of teardown tasks (i.e. no branching).
          &quot;name&quot;: &quot;A String&quot;, # Required. Name of the next teardown task.
        },
        &quot;parameters&quot;: { # LINT.IfChange This message is used for processing and persisting (when applicable) key value pair parameters for each event in the event bus. Please see # The parameters the user can pass to this task.
          &quot;parameters&quot;: [ # Parameters are a part of Event and can be used to communicate between different tasks that are part of the same integration execution.
            { # Key-value pair of EventBus parameters.
              &quot;key&quot;: &quot;A String&quot;, # Key is used to retrieve the corresponding parameter value. This should be unique for a given fired event. These parameters must be predefined in the integration definition.
              &quot;masked&quot;: True or False, # True if this parameter should be masked in the logs
              &quot;value&quot;: { # LINT.IfChange To support various types of parameter values. Next available id: 14 # Values for the defined keys. Each value can either be string, int, double or any proto message.
                &quot;booleanArray&quot;: {
                  &quot;booleanValues&quot;: [
                    True or False,
                  ],
                },
                &quot;booleanValue&quot;: True or False,
                &quot;doubleArray&quot;: {
                  &quot;doubleValues&quot;: [
                    3.14,
                  ],
                },
                &quot;doubleValue&quot;: 3.14,
                &quot;intArray&quot;: {
                  &quot;intValues&quot;: [
                    &quot;A String&quot;,
                  ],
                },
                &quot;intValue&quot;: &quot;A String&quot;,
                &quot;protoArray&quot;: {
                  &quot;protoValues&quot;: [
                    {
                      &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
                    },
                  ],
                },
                &quot;protoValue&quot;: {
                  &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
                },
                &quot;serializedObjectValue&quot;: {
                  &quot;objectValue&quot;: &quot;A String&quot;,
                },
                &quot;stringArray&quot;: {
                  &quot;stringValues&quot;: [
                    &quot;A String&quot;,
                  ],
                },
                &quot;stringValue&quot;: &quot;A String&quot;,
              },
            },
          ],
        },
        &quot;properties&quot;: { # LINT.IfChange This message is used for storing key value pair properties for each Event / Task in the EventBus.
          &quot;properties&quot;: [ # An unordered list of property entries.
            { # Key-value pair of EventBus property.
              &quot;key&quot;: &quot;A String&quot;, # Key is used to retrieve the corresponding property value. This should be unique for a given fired event. The Tasks should be aware of the keys used while firing the events for them to be able to retrieve the values.
              &quot;value&quot;: { # Used for define type for values. Currently supported value types include int, string, double, array, and any proto message. # Values for the defined keys. Each value can either be string, int, double or any proto message.
                &quot;booleanValue&quot;: True or False,
                &quot;doubleArray&quot;: {
                  &quot;values&quot;: [
                    3.14,
                  ],
                },
                &quot;doubleValue&quot;: 3.14,
                &quot;intArray&quot;: {
                  &quot;values&quot;: [
                    &quot;A String&quot;,
                  ],
                },
                &quot;intValue&quot;: &quot;A String&quot;,
                &quot;protoValue&quot;: {
                  &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
                },
                &quot;stringArray&quot;: {
                  &quot;values&quot;: [
                    &quot;A String&quot;,
                  ],
                },
                &quot;stringValue&quot;: &quot;A String&quot;,
              },
            },
          ],
        },
        &quot;teardownTaskImplementationClassName&quot;: &quot;A String&quot;, # Required. Implementation class name.
      },
    ],
  },
  &quot;triggerConfigs&quot;: [ # Optional. Trigger configurations.
    { # Configuration detail of a trigger.
      &quot;alertConfig&quot;: [ # Optional. An alert threshold configuration for the [trigger + client + integration] tuple. If these values are not specified in the trigger config, default values will be populated by the system. Note that there must be exactly one alert threshold configured per [client + trigger + integration] when published.
        { # Message to be used to configure custom alerting in the {@code EventConfig} protos for an event.
          &quot;aggregationPeriod&quot;: &quot;A String&quot;, # The period over which the metric value should be aggregated and evaluated. Format is , where integer should be a positive integer and unit should be one of (s,m,h,d,w) meaning (second, minute, hour, day, week). For an EXPECTED_MIN threshold, this aggregation_period must be lesser than 24 hours.
          &quot;alertThreshold&quot;: 42, # For how many contiguous aggregation periods should the expected min or max be violated for the alert to be fired.
          &quot;disableAlert&quot;: True or False, # Set to false by default. When set to true, the metrics are not aggregated or pushed to Monarch for this integration alert.
          &quot;displayName&quot;: &quot;A String&quot;, # Name of the alert. This will be displayed in the alert subject. If set, this name should be unique within the scope of the integration.
          &quot;durationThreshold&quot;: &quot;A String&quot;, # Should be specified only for *AVERAGE_DURATION and *PERCENTILE_DURATION metrics. This member should be used to specify what duration value the metrics should exceed for the alert to trigger.
          &quot;metricType&quot;: &quot;A String&quot;, # The type of metric.
          &quot;onlyFinalAttempt&quot;: True or False, # For either events or tasks, depending on the type of alert, count only final attempts, not retries.
          &quot;thresholdType&quot;: &quot;A String&quot;, # The threshold type, whether lower(expected_min) or upper(expected_max), for which this alert is being configured. If value falls below expected_min or exceeds expected_max, an alert will be fired.
          &quot;thresholdValue&quot;: { # The threshold value of the metric, above or below which the alert should be triggered. See EventAlertConfig or TaskAlertConfig for the different alert metric types in each case. For the *RATE metrics, one or both of these fields may be set. Zero is the default value and can be left at that. For *PERCENTILE_DURATION metrics, one or both of these fields may be set, and also, the duration threshold value should be specified in the threshold_duration_ms member below. For *AVERAGE_DURATION metrics, these fields should not be set at all. A different member, threshold_duration_ms, must be set in the EventAlertConfig or the TaskAlertConfig. # The metric value, above or below which the alert should be triggered.
            &quot;absolute&quot;: &quot;A String&quot;, # Absolute value threshold.
            &quot;percentage&quot;: 42, # Percentage threshold.
          },
        },
      ],
      &quot;cloudSchedulerConfig&quot;: { # Cloud Scheduler Trigger configuration # Optional. Cloud Scheduler Trigger related metadata
        &quot;cronTab&quot;: &quot;A String&quot;, # Required. The cron tab of cloud scheduler trigger.
        &quot;errorMessage&quot;: &quot;A String&quot;, # Optional. When the job was deleted from Pantheon UI, error_message will be populated when Get/List integrations
        &quot;location&quot;: &quot;A String&quot;, # Required. The location where associated cloud scheduler job will be created
        &quot;serviceAccountEmail&quot;: &quot;A String&quot;, # Required. Service account used by Cloud Scheduler to trigger the integration at scheduled time
      },
      &quot;description&quot;: &quot;A String&quot;, # Optional. User-provided description intended to give additional business context about the task.
      &quot;errorCatcherId&quot;: &quot;A String&quot;, # Optional. Optional Error catcher id of the error catch flow which will be executed when execution error happens in the task
      &quot;inputVariables&quot;: { # Variables names mapped to api trigger. # Optional. List of input variables for the api trigger.
        &quot;names&quot;: [ # Optional. List of variable names.
          &quot;A String&quot;,
        ],
      },
      &quot;label&quot;: &quot;A String&quot;, # Optional. The user created label for a particular trigger.
      &quot;nextTasksExecutionPolicy&quot;: &quot;A String&quot;, # Optional. Dictates how next tasks will be executed.
      &quot;outputVariables&quot;: { # Variables names mapped to api trigger. # Optional. List of output variables for the api trigger.
        &quot;names&quot;: [ # Optional. List of variable names.
          &quot;A String&quot;,
        ],
      },
      &quot;position&quot;: { # Configuration detail of coordinate, it used for UI # Optional. Informs the front-end application where to draw this error catcher config on the UI.
        &quot;x&quot;: 42, # Required. X axis of the coordinate
        &quot;y&quot;: 42, # Required. Y axis of the coordinate
      },
      &quot;properties&quot;: { # Optional. Configurable properties of the trigger, not to be confused with integration parameters. E.g. &quot;name&quot; is a property for API triggers and &quot;subscription&quot; is a property for Pub/sub triggers.
        &quot;a_key&quot;: &quot;A String&quot;,
      },
      &quot;startTasks&quot;: [ # Optional. Set of tasks numbers from where the integration execution is started by this trigger. If this is empty, then integration is executed with default start tasks. In the list of start tasks, none of two tasks can have direct ancestor-descendant relationships (i.e. in a same integration execution graph).
        { # The task that is next in line to be executed, if the condition specified evaluated to true.
          &quot;condition&quot;: &quot;A String&quot;, # Standard filter expression for this task to become an eligible next task.
          &quot;description&quot;: &quot;A String&quot;, # User-provided description intended to give additional business context about the task.
          &quot;displayName&quot;: &quot;A String&quot;, # User-provided label that is attached to this edge in the UI.
          &quot;taskConfigId&quot;: &quot;A String&quot;, # ID of the next task.
          &quot;taskId&quot;: &quot;A String&quot;, # Task number of the next task.
        },
      ],
      &quot;trigger&quot;: &quot;A String&quot;, # Optional. Name of the trigger. Example: &quot;API Trigger&quot;, &quot;Cloud Pub Sub Trigger&quot; When set will be sent out to monitoring dashabord for tracking purpose.
      &quot;triggerId&quot;: &quot;A String&quot;, # Optional. Auto-generated trigger ID. The ID is based on the properties that you define in the trigger config. For example, for an API trigger, the trigger ID follows the format: api_trigger/TRIGGER_NAME Where trigger config has properties with value {&quot;Trigger name&quot;: TRIGGER_NAME}
      &quot;triggerNumber&quot;: &quot;A String&quot;, # Required. A number to uniquely identify each trigger config within the integration on UI.
      &quot;triggerType&quot;: &quot;A String&quot;, # Optional. Type of trigger
    },
  ],
  &quot;triggerConfigsInternal&quot;: [ # Optional. Trigger configurations.
    { # Configuration detail of a trigger. Next available id: 22
      &quot;alertConfig&quot;: [ # An alert threshold configuration for the [trigger + client + workflow] tuple. If these values are not specified in the trigger config, default values will be populated by the system. Note that there must be exactly one alert threshold configured per [client + trigger + workflow] when published.
        { # Message to be used to configure custom alerting in the {@code EventConfig} protos for an event.
          &quot;aggregationPeriod&quot;: &quot;A String&quot;, # For an EXPECTED_MIN threshold, this aggregation_period must be lesser than 24 hours.
          &quot;alertDisabled&quot;: True or False, # Set to false by default. When set to true, the metrics are not aggregated or pushed to Monarch for this workflow alert.
          &quot;alertName&quot;: &quot;A String&quot;, # A name to identify this alert. This will be displayed in the alert subject. If set, this name should be unique within the scope of the workflow.
          &quot;clientId&quot;: &quot;A String&quot;, # Client associated with this alert configuration.
          &quot;durationThresholdMs&quot;: &quot;A String&quot;, # Should be specified only for *AVERAGE_DURATION and *PERCENTILE_DURATION metrics. This member should be used to specify what duration value the metrics should exceed for the alert to trigger.
          &quot;errorEnumList&quot;: { # List of error enums for alerts.
            &quot;enumStrings&quot;: [
              &quot;A String&quot;,
            ],
            &quot;filterType&quot;: &quot;A String&quot;,
          },
          &quot;metricType&quot;: &quot;A String&quot;,
          &quot;numAggregationPeriods&quot;: 42, # For how many contiguous aggregation periods should the expected min or max be violated for the alert to be fired.
          &quot;onlyFinalAttempt&quot;: True or False, # For either events or tasks, depending on the type of alert, count only final attempts, not retries.
          &quot;playbookUrl&quot;: &quot;A String&quot;, # Link to a playbook for resolving the issue that triggered this alert.
          &quot;thresholdType&quot;: &quot;A String&quot;, # The threshold type, whether lower(expected_min) or upper(expected_max), for which this alert is being configured. If value falls below expected_min or exceeds expected_max, an alert will be fired.
          &quot;thresholdValue&quot;: { # The threshold value of the metric, above or below which the alert should be triggered. See EventAlertConfig or TaskAlertConfig for the different alert metric types in each case. For the *RATE metrics, one or both of these fields may be set. Zero is the default value and can be left at that. For *PERCENTILE_DURATION metrics, one or both of these fields may be set, and also, the duration threshold value should be specified in the threshold_duration_ms member below. For *AVERAGE_DURATION metrics, these fields should not be set at all. A different member, threshold_duration_ms, must be set in the EventAlertConfig or the TaskAlertConfig. # The metric value, above or below which the alert should be triggered.
            &quot;absolute&quot;: &quot;A String&quot;,
            &quot;percentage&quot;: 42,
          },
          &quot;warningEnumList&quot;: { # List of error enums for alerts.
            &quot;enumStrings&quot;: [
              &quot;A String&quot;,
            ],
            &quot;filterType&quot;: &quot;A String&quot;,
          },
        },
      ],
      &quot;cloudSchedulerConfig&quot;: { # Cloud Scheduler Trigger configuration
        &quot;cronTab&quot;: &quot;A String&quot;, # Required. The cron tab of cloud scheduler trigger.
        &quot;errorMessage&quot;: &quot;A String&quot;, # Optional. When the job was deleted from Pantheon UI, error_message will be populated when Get/List integrations
        &quot;location&quot;: &quot;A String&quot;, # Required. The location where associated cloud scheduler job will be created
        &quot;serviceAccountEmail&quot;: &quot;A String&quot;, # Required. Service account used by Cloud Scheduler to trigger the integration at scheduled time
      },
      &quot;description&quot;: &quot;A String&quot;, # User-provided description intended to give more business context about the task.
      &quot;enabledClients&quot;: [ # Required. The list of client ids which are enabled to execute the workflow using this trigger. In other words, these clients have the workflow execution privledges for this trigger. For API trigger, the client id in the incoming request is validated against the list of enabled clients. For non-API triggers, one workflow execution is triggered on behalf of each enabled client.
        &quot;A String&quot;,
      ],
      &quot;errorCatcherId&quot;: &quot;A String&quot;, # Optional Error catcher id of the error catch flow which will be executed when execution error happens in the task
      &quot;inputVariables&quot;: { # Variables names mapped to api trigger. # Optional. List of input variables for the api trigger.
        &quot;names&quot;: [ # Optional. List of variable names.
          &quot;A String&quot;,
        ],
      },
      &quot;label&quot;: &quot;A String&quot;, # The user created label for a particular trigger.
      &quot;nextTasksExecutionPolicy&quot;: &quot;A String&quot;, # Dictates how next tasks will be executed.
      &quot;outputVariables&quot;: { # Variables names mapped to api trigger. # Optional. List of output variables for the api trigger.
        &quot;names&quot;: [ # Optional. List of variable names.
          &quot;A String&quot;,
        ],
      },
      &quot;pauseWorkflowExecutions&quot;: True or False, # Optional. If set to true, any upcoming requests for this trigger config will be paused and the executions will be resumed later when the flag is reset. The workflow to which this trigger config belongs has to be in ACTIVE status for the executions to be paused or resumed.
      &quot;position&quot;: { # Represents two-dimensional positions. # Optional. Informs the front-end application where to draw this trigger config on the UI.
        &quot;x&quot;: 42,
        &quot;y&quot;: 42,
      },
      &quot;properties&quot;: { # Configurable properties of the trigger, not to be confused with workflow parameters. E.g. &quot;name&quot; is a property for API triggers and &quot;subscription&quot; is a property for Cloud Pubsub triggers.
        &quot;a_key&quot;: &quot;A String&quot;,
      },
      &quot;startTasks&quot;: [ # Set of tasks numbers from where the workflow execution is started by this trigger. If this is empty, then workflow is executed with default start tasks. In the list of start tasks, none of two tasks can have direct ancestor-descendant relationships (i.e. in a same workflow execution graph).
        { # The task that is next in line to be executed, if the condition specified evaluated to true.
          &quot;combinedConditions&quot;: [ # Combined condition for this task to become an eligible next task. Each of these combined_conditions are joined with logical OR. DEPRECATED: use `condition`
            { # This message recursively combines constituent conditions using logical AND.
              &quot;conditions&quot;: [ # A set of individual constituent conditions.
                { # Condition that uses `operator` to evaluate the key against the value.
                  &quot;eventPropertyKey&quot;: &quot;A String&quot;, # Key that&#x27;s evaluated against the `value`. Please note the data type of the runtime value associated with the key should match the data type of `value`, else an IllegalArgumentException is thrown.
                  &quot;operator&quot;: &quot;A String&quot;, # Operator used to evaluate the condition. Please note that an operator with an inappropriate key/value operand will result in IllegalArgumentException, e.g. CONTAINS with boolean key/value pair.
                  &quot;value&quot;: { # Used for define type for values. Currently supported value types include int, string, double, array, and any proto message. # Value that&#x27;s checked for the key.
                    &quot;booleanValue&quot;: True or False,
                    &quot;doubleArray&quot;: {
                      &quot;values&quot;: [
                        3.14,
                      ],
                    },
                    &quot;doubleValue&quot;: 3.14,
                    &quot;intArray&quot;: {
                      &quot;values&quot;: [
                        &quot;A String&quot;,
                      ],
                    },
                    &quot;intValue&quot;: &quot;A String&quot;,
                    &quot;protoValue&quot;: {
                      &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
                    },
                    &quot;stringArray&quot;: {
                      &quot;values&quot;: [
                        &quot;A String&quot;,
                      ],
                    },
                    &quot;stringValue&quot;: &quot;A String&quot;,
                  },
                },
              ],
            },
          ],
          &quot;condition&quot;: &quot;A String&quot;, # Standard filter expression for this task to become an eligible next task.
          &quot;description&quot;: &quot;A String&quot;, # User-provided description intended to give more business context about the next task edge or condition.
          &quot;label&quot;: &quot;A String&quot;, # User-provided label that is attached to this edge in the UI.
          &quot;taskConfigId&quot;: &quot;A String&quot;, # ID of the next task.
          &quot;taskNumber&quot;: &quot;A String&quot;, # Task number of the next task.
        },
      ],
      &quot;triggerCriteria&quot;: { # Optional. When set, Eventbus will run the task specified in the trigger_criteria and validate the result using the trigger_criteria.condition, and only execute the workflow when result is true.
        &quot;condition&quot;: &quot;A String&quot;, # Required. Standard filter expression, when true the workflow will be executed. If there&#x27;s no trigger_criteria_task_implementation_class_name specified, the condition will be validated directly.
        &quot;parameters&quot;: { # LINT.IfChange This message is used for processing and persisting (when applicable) key value pair parameters for each event in the event bus. Please see # Optional. To be used in TaskConfig for the implementation class.
          &quot;parameters&quot;: [ # Parameters are a part of Event and can be used to communicate between different tasks that are part of the same integration execution.
            { # Key-value pair of EventBus parameters.
              &quot;key&quot;: &quot;A String&quot;, # Key is used to retrieve the corresponding parameter value. This should be unique for a given fired event. These parameters must be predefined in the integration definition.
              &quot;masked&quot;: True or False, # True if this parameter should be masked in the logs
              &quot;value&quot;: { # LINT.IfChange To support various types of parameter values. Next available id: 14 # Values for the defined keys. Each value can either be string, int, double or any proto message.
                &quot;booleanArray&quot;: {
                  &quot;booleanValues&quot;: [
                    True or False,
                  ],
                },
                &quot;booleanValue&quot;: True or False,
                &quot;doubleArray&quot;: {
                  &quot;doubleValues&quot;: [
                    3.14,
                  ],
                },
                &quot;doubleValue&quot;: 3.14,
                &quot;intArray&quot;: {
                  &quot;intValues&quot;: [
                    &quot;A String&quot;,
                  ],
                },
                &quot;intValue&quot;: &quot;A String&quot;,
                &quot;protoArray&quot;: {
                  &quot;protoValues&quot;: [
                    {
                      &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
                    },
                  ],
                },
                &quot;protoValue&quot;: {
                  &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
                },
                &quot;serializedObjectValue&quot;: {
                  &quot;objectValue&quot;: &quot;A String&quot;,
                },
                &quot;stringArray&quot;: {
                  &quot;stringValues&quot;: [
                    &quot;A String&quot;,
                  ],
                },
                &quot;stringValue&quot;: &quot;A String&quot;,
              },
            },
          ],
        },
        &quot;triggerCriteriaTaskImplementationClassName&quot;: &quot;A String&quot;, # Optional. Implementation class name. The class should implement the “TypedTask” interface.
      },
      &quot;triggerId&quot;: &quot;A String&quot;, # The backend trigger ID.
      &quot;triggerName&quot;: &quot;A String&quot;, # Optional. Name of the trigger This is added to identify the type of trigger. This is avoid the logic on triggerId to identify the trigger_type and push the same to monitoring.
      &quot;triggerNumber&quot;: &quot;A String&quot;, # Required. A number to uniquely identify each trigger config within the workflow on UI.
      &quot;triggerType&quot;: &quot;A String&quot;,
    },
  ],
  &quot;updateTime&quot;: &quot;A String&quot;, # Output only. Auto-generated.
  &quot;userLabel&quot;: &quot;A String&quot;, # Optional. A user-defined label that annotates an integration version. Typically, this is only set when the integration version is created.
}

  createSampleIntegrations: boolean, Optional. Optional. Indicates if sample workflow should be created.
  newIntegration: boolean, Set this flag to true, if draft version is to be created for a brand new integration. False, if the request is for an existing integration. For backward compatibility reasons, even if this flag is set to `false` and no existing integration is found, a new draft integration will still be created.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # The integration version definition.
  &quot;cloudKmsKey&quot;: &quot;A String&quot;, # Optional. Cloud KMS resource name for the CMEK encryption key.
  &quot;cloudLoggingDetails&quot;: { # Cloud Logging details for execution info # Optional. Cloud Logging details for the integration version
    &quot;cloudLoggingSeverity&quot;: &quot;A String&quot;, # Optional. Severity selected by the customer for the logs to be sent to Cloud Logging, for the integration version getting executed.
    &quot;enableCloudLogging&quot;: True or False, # Optional. Status of whether Cloud Logging is enabled or not for the integration version getting executed.
  },
  &quot;createTime&quot;: &quot;A String&quot;, # Output only. Auto-generated.
  &quot;createdFromTemplate&quot;: &quot;A String&quot;, # Optional. Optional. The resource name of the template from which the integration is created.
  &quot;databasePersistencePolicy&quot;: &quot;A String&quot;, # Optional. Flag to disable database persistence for execution data, including event execution info, execution export info, execution metadata index and execution param index.
  &quot;description&quot;: &quot;A String&quot;, # Optional. The integration description.
  &quot;enableVariableMasking&quot;: True or False, # Optional. True if variable masking feature should be turned on for this version
  &quot;errorCatcherConfigs&quot;: [ # Optional. Error Catch Task configuration for the integration. It&#x27;s optional.
    { # Configuration detail of a error catch task
      &quot;description&quot;: &quot;A String&quot;, # Optional. User-provided description intended to give more business context about the error catcher config.
      &quot;errorCatcherId&quot;: &quot;A String&quot;, # Required. An error catcher id is string representation for the error catcher config. Within a workflow, error_catcher_id uniquely identifies an error catcher config among all error catcher configs for the workflow
      &quot;errorCatcherNumber&quot;: &quot;A String&quot;, # Required. A number to uniquely identify each error catcher config within the workflow on UI.
      &quot;label&quot;: &quot;A String&quot;, # Optional. The user created label for a particular error catcher. Optional.
      &quot;position&quot;: { # Configuration detail of coordinate, it used for UI # Optional. Informs the front-end application where to draw this error catcher config on the UI.
        &quot;x&quot;: 42, # Required. X axis of the coordinate
        &quot;y&quot;: 42, # Required. Y axis of the coordinate
      },
      &quot;startErrorTasks&quot;: [ # Required. The set of start tasks that are to be executed for the error catch flow
        { # The task that is next in line to be executed, if the condition specified evaluated to true.
          &quot;condition&quot;: &quot;A String&quot;, # Standard filter expression for this task to become an eligible next task.
          &quot;description&quot;: &quot;A String&quot;, # User-provided description intended to give additional business context about the task.
          &quot;displayName&quot;: &quot;A String&quot;, # User-provided label that is attached to this edge in the UI.
          &quot;taskConfigId&quot;: &quot;A String&quot;, # ID of the next task.
          &quot;taskId&quot;: &quot;A String&quot;, # Task number of the next task.
        },
      ],
    },
  ],
  &quot;integrationConfigParameters&quot;: [ # Optional. Config Parameters that are expected to be passed to the integration when an integration is published. This consists of all the parameters that are expected to provide configuration in the integration execution. This gives the user the ability to provide default values, value, add information like connection url, project based configuration value and also provide data types of each parameter.
    { # Integration Config Parameter is defined in the integration config and are used to provide external configuration for integration. It provide information about data types of the expected parameters and provide any default values or value. They can also be used to add custom attributes.
      &quot;parameter&quot;: { # Integration Parameter is defined in the integration config and are used to provide information about data types of the expected parameters and provide any default values if needed. They can also be used to add custom attributes. These are static in nature and should not be used for dynamic event definition. # Optional. Integration Parameter to provide the default value, data type and attributes required for the Integration config variables.
        &quot;containsLargeData&quot;: True or False, # Indicates whether this variable contains large data and need to be uploaded to Cloud Storage.
        &quot;dataType&quot;: &quot;A String&quot;, # Type of the parameter.
        &quot;defaultValue&quot;: { # The type of the parameter. # Default values for the defined keys. Each value can either be string, int, double or any proto message or a serialized object.
          &quot;booleanArray&quot;: { # This message only contains a field of boolean array. # Boolean Array.
            &quot;booleanValues&quot;: [ # Boolean array.
              True or False,
            ],
          },
          &quot;booleanValue&quot;: True or False, # Boolean.
          &quot;doubleArray&quot;: { # This message only contains a field of double number array. # Double Number Array.
            &quot;doubleValues&quot;: [ # Double number array.
              3.14,
            ],
          },
          &quot;doubleValue&quot;: 3.14, # Double Number.
          &quot;intArray&quot;: { # This message only contains a field of integer array. # Integer Array.
            &quot;intValues&quot;: [ # Integer array.
              &quot;A String&quot;,
            ],
          },
          &quot;intValue&quot;: &quot;A String&quot;, # Integer.
          &quot;jsonValue&quot;: &quot;A String&quot;, # Json.
          &quot;stringArray&quot;: { # This message only contains a field of string array. # String Array.
            &quot;stringValues&quot;: [ # String array.
              &quot;A String&quot;,
            ],
          },
          &quot;stringValue&quot;: &quot;A String&quot;, # String.
        },
        &quot;description&quot;: &quot;A String&quot;, # Optional. Description of the parameter.
        &quot;displayName&quot;: &quot;A String&quot;, # The name (without prefix) to be displayed in the UI for this parameter. E.g. if the key is &quot;foo.bar.myName&quot;, then the name would be &quot;myName&quot;.
        &quot;inputOutputType&quot;: &quot;A String&quot;, # Specifies the input/output type for the parameter.
        &quot;isTransient&quot;: True or False, # Whether this parameter is a transient parameter.
        &quot;jsonSchema&quot;: &quot;A String&quot;, # This schema will be used to validate runtime JSON-typed values of this parameter.
        &quot;key&quot;: &quot;A String&quot;, # Key is used to retrieve the corresponding parameter value. This should be unique for a given fired event. These parameters must be predefined in the integration definition.
        &quot;masked&quot;: True or False, # True if this parameter should be masked in the logs
        &quot;producer&quot;: &quot;A String&quot;, # The identifier of the node (TaskConfig/TriggerConfig) this parameter was produced by, if it is a transient param or a copy of an input param.
        &quot;searchable&quot;: True or False, # Searchable in the execution log or not.
      },
      &quot;value&quot;: { # The type of the parameter. # Values for the defined keys. Each value can either be string, int, double or any proto message or a serialized object.
        &quot;booleanArray&quot;: { # This message only contains a field of boolean array. # Boolean Array.
          &quot;booleanValues&quot;: [ # Boolean array.
            True or False,
          ],
        },
        &quot;booleanValue&quot;: True or False, # Boolean.
        &quot;doubleArray&quot;: { # This message only contains a field of double number array. # Double Number Array.
          &quot;doubleValues&quot;: [ # Double number array.
            3.14,
          ],
        },
        &quot;doubleValue&quot;: 3.14, # Double Number.
        &quot;intArray&quot;: { # This message only contains a field of integer array. # Integer Array.
          &quot;intValues&quot;: [ # Integer array.
            &quot;A String&quot;,
          ],
        },
        &quot;intValue&quot;: &quot;A String&quot;, # Integer.
        &quot;jsonValue&quot;: &quot;A String&quot;, # Json.
        &quot;stringArray&quot;: { # This message only contains a field of string array. # String Array.
          &quot;stringValues&quot;: [ # String array.
            &quot;A String&quot;,
          ],
        },
        &quot;stringValue&quot;: &quot;A String&quot;, # String.
      },
    },
  ],
  &quot;integrationParameters&quot;: [ # Optional. Parameters that are expected to be passed to the integration when an event is triggered. This consists of all the parameters that are expected in the integration execution. This gives the user the ability to provide default values, add information like PII and also provide data types of each parameter.
    { # Integration Parameter is defined in the integration config and are used to provide information about data types of the expected parameters and provide any default values if needed. They can also be used to add custom attributes. These are static in nature and should not be used for dynamic event definition.
      &quot;containsLargeData&quot;: True or False, # Indicates whether this variable contains large data and need to be uploaded to Cloud Storage.
      &quot;dataType&quot;: &quot;A String&quot;, # Type of the parameter.
      &quot;defaultValue&quot;: { # The type of the parameter. # Default values for the defined keys. Each value can either be string, int, double or any proto message or a serialized object.
        &quot;booleanArray&quot;: { # This message only contains a field of boolean array. # Boolean Array.
          &quot;booleanValues&quot;: [ # Boolean array.
            True or False,
          ],
        },
        &quot;booleanValue&quot;: True or False, # Boolean.
        &quot;doubleArray&quot;: { # This message only contains a field of double number array. # Double Number Array.
          &quot;doubleValues&quot;: [ # Double number array.
            3.14,
          ],
        },
        &quot;doubleValue&quot;: 3.14, # Double Number.
        &quot;intArray&quot;: { # This message only contains a field of integer array. # Integer Array.
          &quot;intValues&quot;: [ # Integer array.
            &quot;A String&quot;,
          ],
        },
        &quot;intValue&quot;: &quot;A String&quot;, # Integer.
        &quot;jsonValue&quot;: &quot;A String&quot;, # Json.
        &quot;stringArray&quot;: { # This message only contains a field of string array. # String Array.
          &quot;stringValues&quot;: [ # String array.
            &quot;A String&quot;,
          ],
        },
        &quot;stringValue&quot;: &quot;A String&quot;, # String.
      },
      &quot;description&quot;: &quot;A String&quot;, # Optional. Description of the parameter.
      &quot;displayName&quot;: &quot;A String&quot;, # The name (without prefix) to be displayed in the UI for this parameter. E.g. if the key is &quot;foo.bar.myName&quot;, then the name would be &quot;myName&quot;.
      &quot;inputOutputType&quot;: &quot;A String&quot;, # Specifies the input/output type for the parameter.
      &quot;isTransient&quot;: True or False, # Whether this parameter is a transient parameter.
      &quot;jsonSchema&quot;: &quot;A String&quot;, # This schema will be used to validate runtime JSON-typed values of this parameter.
      &quot;key&quot;: &quot;A String&quot;, # Key is used to retrieve the corresponding parameter value. This should be unique for a given fired event. These parameters must be predefined in the integration definition.
      &quot;masked&quot;: True or False, # True if this parameter should be masked in the logs
      &quot;producer&quot;: &quot;A String&quot;, # The identifier of the node (TaskConfig/TriggerConfig) this parameter was produced by, if it is a transient param or a copy of an input param.
      &quot;searchable&quot;: True or False, # Searchable in the execution log or not.
    },
  ],
  &quot;integrationParametersInternal&quot;: { # LINT.IfChange This is the frontend version of WorkflowParameters. It&#x27;s exactly like the backend version except that instead of flattening protobuf parameters and treating every field and subfield of a protobuf parameter as a separate parameter, the fields/subfields of a protobuf parameter will be nested as &quot;children&quot; (see &#x27;children&#x27; field below) parameters of the parent parameter. Please refer to enterprise/crm/eventbus/proto/workflow_parameters.proto for more information about WorkflowParameters. # Optional. Parameters that are expected to be passed to the integration when an event is triggered. This consists of all the parameters that are expected in the integration execution. This gives the user the ability to provide default values, add information like PII and also provide data types of each parameter.
    &quot;parameters&quot;: [ # Parameters are a part of Event and can be used to communiticate between different tasks that are part of the same workflow execution.
      {
        &quot;attributes&quot;: { # Attributes are additional options that can be associated with each event property. For more information, see # Metadata information about the parameters.
          &quot;dataType&quot;: &quot;A String&quot;, # Things like URL, Email, Currency, Timestamp (rather than string, int64...)
          &quot;defaultValue&quot;: { # Used for define type for values. Currently supported value types include int, string, double, array, and any proto message. # Used to define defaults.
            &quot;booleanValue&quot;: True or False,
            &quot;doubleArray&quot;: {
              &quot;values&quot;: [
                3.14,
              ],
            },
            &quot;doubleValue&quot;: 3.14,
            &quot;intArray&quot;: {
              &quot;values&quot;: [
                &quot;A String&quot;,
              ],
            },
            &quot;intValue&quot;: &quot;A String&quot;,
            &quot;protoValue&quot;: {
              &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
            },
            &quot;stringArray&quot;: {
              &quot;values&quot;: [
                &quot;A String&quot;,
              ],
            },
            &quot;stringValue&quot;: &quot;A String&quot;,
          },
          &quot;isRequired&quot;: True or False, # Required for event execution. The validation will be done by the event bus when the event is triggered.
          &quot;isSearchable&quot;: True or False, # Used to indicate if a ParameterEntry should be converted to ParamIndexes for ST-Spanner full-text search. DEPRECATED: use searchable.
          &quot;logSettings&quot;: { # The LogSettings define the logging attributes for an event property. These attributes are used to map the property to the parameter in the log proto. Also used to define scrubbing/truncation behavior and PII information. # See
            &quot;logFieldName&quot;: &quot;A String&quot;, # The name of corresponding logging field of the event property. If omitted, assumes the same name as the event property key.
            &quot;seedPeriod&quot;: &quot;A String&quot;,
            &quot;seedScope&quot;: &quot;A String&quot;,
          },
          &quot;masked&quot;: True or False, # True if this workflow parameter should be masked in the logs
          &quot;readOnly&quot;: True or False, # Used to indicate if the ParameterEntry is a read only field or not.
          &quot;searchable&quot;: &quot;A String&quot;,
          &quot;taskVisibility&quot;: [ # List of tasks that can view this property, if empty then all.
            &quot;A String&quot;,
          ],
        },
        &quot;children&quot;: [ # Child parameters nested within this parameter. This field only applies to protobuf parameters
          # Object with schema name: EnterpriseCrmFrontendsEventbusProtoWorkflowParameterEntry
        ],
        &quot;containsLargeData&quot;: True or False, # Indicates whether this variable contains large data and need to be uploaded to Cloud Storage.
        &quot;dataType&quot;: &quot;A String&quot;, # The data type of the parameter.
        &quot;defaultValue&quot;: { # To support various types of parameter values. Next available id: 14 # Default values for the defined keys. Each value can either be string, int, double or any proto message or a serialized object.
          &quot;booleanArray&quot;: {
            &quot;booleanValues&quot;: [
              True or False,
            ],
          },
          &quot;booleanValue&quot;: True or False,
          &quot;doubleArray&quot;: {
            &quot;doubleValues&quot;: [
              3.14,
            ],
          },
          &quot;doubleValue&quot;: 3.14,
          &quot;intArray&quot;: {
            &quot;intValues&quot;: [
              &quot;A String&quot;,
            ],
          },
          &quot;intValue&quot;: &quot;A String&quot;,
          &quot;jsonValue&quot;: &quot;A String&quot;,
          &quot;protoArray&quot;: {
            &quot;protoValues&quot;: [
              {
                &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
              },
            ],
          },
          &quot;protoValue&quot;: {
            &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
          },
          &quot;serializedObjectValue&quot;: {
            &quot;objectValue&quot;: &quot;A String&quot;,
          },
          &quot;stringArray&quot;: {
            &quot;stringValues&quot;: [
              &quot;A String&quot;,
            ],
          },
          &quot;stringValue&quot;: &quot;A String&quot;,
        },
        &quot;description&quot;: &quot;A String&quot;, # Optional. The description about the parameter
        &quot;inOutType&quot;: &quot;A String&quot;, # Specifies the input/output type for the parameter.
        &quot;isTransient&quot;: True or False, # Whether this parameter is a transient parameter.
        &quot;jsonSchema&quot;: &quot;A String&quot;, # This schema will be used to validate runtime JSON-typed values of this parameter.
        &quot;key&quot;: &quot;A String&quot;, # Key is used to retrieve the corresponding parameter value. This should be unique for a given fired event. These parameters must be predefined in the workflow definition.
        &quot;name&quot;: &quot;A String&quot;, # The name (without prefix) to be displayed in the UI for this parameter. E.g. if the key is &quot;foo.bar.myName&quot;, then the name would be &quot;myName&quot;.
        &quot;producedBy&quot;: { # Represents a node identifier (type + id). Next highest id: 3 # The identifier of the node (TaskConfig/TriggerConfig) this parameter was produced by, if it is a transient param or a copy of an input param.
          &quot;elementIdentifier&quot;: &quot;A String&quot;, # Configuration of the edge.
          &quot;elementType&quot;: &quot;A String&quot;, # Destination node where the edge ends. It can only be a task config.
        },
        &quot;producer&quot;: &quot;A String&quot;,
        &quot;protoDefName&quot;: &quot;A String&quot;, # The name of the protobuf type if the parameter has a protobuf data type.
        &quot;protoDefPath&quot;: &quot;A String&quot;, # If the data type is of type proto or proto array, this field needs to be populated with the fully qualified proto name. This message, for example, would be &quot;enterprise.crm.frontends.eventbus.proto.WorkflowParameterEntry&quot;.
        &quot;required&quot;: True or False,
      },
    ],
  },
  &quot;lastModifierEmail&quot;: &quot;A String&quot;, # Optional. The last modifier&#x27;s email address. Generated based on the End User Credentials/LOAS role of the user making the call.
  &quot;lockHolder&quot;: &quot;A String&quot;, # Optional. The edit lock holder&#x27;s email address. Generated based on the End User Credentials/LOAS role of the user making the call.
  &quot;name&quot;: &quot;A String&quot;, # Output only. Auto-generated primary key.
  &quot;origin&quot;: &quot;A String&quot;, # Optional. The origin that indicates where this integration is coming from.
  &quot;parentTemplateId&quot;: &quot;A String&quot;, # Optional. The id of the template which was used to create this integration_version.
  &quot;runAsServiceAccount&quot;: &quot;A String&quot;, # Optional. The run-as service account email, if set and auth config is not configured, that will be used to generate auth token to be used in Connector task, Rest caller task and Cloud function task.
  &quot;snapshotNumber&quot;: &quot;A String&quot;, # Output only. An increasing sequence that is set when a new snapshot is created. The last created snapshot can be identified by [workflow_name, org_id latest(snapshot_number)]. However, last created snapshot need not be same as the HEAD. So users should always use &quot;HEAD&quot; tag to identify the head.
  &quot;state&quot;: &quot;A String&quot;, # Output only. User should not set it as an input.
  &quot;status&quot;: &quot;A String&quot;, # Output only. Generated by eventbus. User should not set it as an input.
  &quot;taskConfigs&quot;: [ # Optional. Task configuration for the integration. It&#x27;s optional, but the integration doesn&#x27;t do anything without task_configs.
    { # The task configuration details. This is not the implementation of Task. There might be multiple TaskConfigs for the same Task.
      &quot;conditionalFailurePolicies&quot;: { # Conditional task failur retry strategies # Optional. The list of conditional failure policies that will be applied to the task in order.
        &quot;defaultFailurePolicy&quot;: { # Policy that defines the task retry logic and failure type. If no FailurePolicy is defined for a task, all its dependent tasks will not be executed (i.e, a `retry_strategy` of NONE will be applied). # The default failure policy to be applied if no conditional failure policy matches.
          &quot;condition&quot;: &quot;A String&quot;, # Optional. The string condition that will be evaluated to determine if the task should be retried with this failure policy.
          &quot;intervalTime&quot;: &quot;A String&quot;, # Required if retry_strategy is FIXED_INTERVAL or LINEAR/EXPONENTIAL_BACKOFF/RESTART_INTEGRATION_WITH_BACKOFF. Defines the initial interval in seconds for backoff.
          &quot;maxRetries&quot;: 42, # Required if retry_strategy is FIXED_INTERVAL or LINEAR/EXPONENTIAL_BACKOFF/RESTART_INTEGRATION_WITH_BACKOFF. Defines the number of times the task will be retried if failed.
          &quot;retryStrategy&quot;: &quot;A String&quot;, # Defines what happens to the task upon failure.
        },
        &quot;failurePolicies&quot;: [ # The list of failure policies that will be applied to the task in order.
          { # Policy that defines the task retry logic and failure type. If no FailurePolicy is defined for a task, all its dependent tasks will not be executed (i.e, a `retry_strategy` of NONE will be applied).
            &quot;condition&quot;: &quot;A String&quot;, # Optional. The string condition that will be evaluated to determine if the task should be retried with this failure policy.
            &quot;intervalTime&quot;: &quot;A String&quot;, # Required if retry_strategy is FIXED_INTERVAL or LINEAR/EXPONENTIAL_BACKOFF/RESTART_INTEGRATION_WITH_BACKOFF. Defines the initial interval in seconds for backoff.
            &quot;maxRetries&quot;: 42, # Required if retry_strategy is FIXED_INTERVAL or LINEAR/EXPONENTIAL_BACKOFF/RESTART_INTEGRATION_WITH_BACKOFF. Defines the number of times the task will be retried if failed.
            &quot;retryStrategy&quot;: &quot;A String&quot;, # Defines what happens to the task upon failure.
          },
        ],
      },
      &quot;description&quot;: &quot;A String&quot;, # Optional. User-provided description intended to give additional business context about the task.
      &quot;displayName&quot;: &quot;A String&quot;, # Optional. User-provided label that is attached to this TaskConfig in the UI.
      &quot;errorCatcherId&quot;: &quot;A String&quot;, # Optional. Optional Error catcher id of the error catch flow which will be executed when execution error happens in the task
      &quot;externalTaskType&quot;: &quot;A String&quot;, # Optional. External task type of the task
      &quot;failurePolicy&quot;: { # Policy that defines the task retry logic and failure type. If no FailurePolicy is defined for a task, all its dependent tasks will not be executed (i.e, a `retry_strategy` of NONE will be applied). # Optional. Determines the number of times the task will be retried on failure and with what retry strategy. This is applicable for asynchronous calls to Eventbus alone (Post To Queue, Schedule etc.).
        &quot;condition&quot;: &quot;A String&quot;, # Optional. The string condition that will be evaluated to determine if the task should be retried with this failure policy.
        &quot;intervalTime&quot;: &quot;A String&quot;, # Required if retry_strategy is FIXED_INTERVAL or LINEAR/EXPONENTIAL_BACKOFF/RESTART_INTEGRATION_WITH_BACKOFF. Defines the initial interval in seconds for backoff.
        &quot;maxRetries&quot;: 42, # Required if retry_strategy is FIXED_INTERVAL or LINEAR/EXPONENTIAL_BACKOFF/RESTART_INTEGRATION_WITH_BACKOFF. Defines the number of times the task will be retried if failed.
        &quot;retryStrategy&quot;: &quot;A String&quot;, # Defines what happens to the task upon failure.
      },
      &quot;jsonValidationOption&quot;: &quot;A String&quot;, # Optional. If set, overrides the option configured in the Task implementation class.
      &quot;nextTasks&quot;: [ # Optional. The set of tasks that are next in line to be executed as per the execution graph defined for the parent event, specified by `event_config_id`. Each of these next tasks are executed only if the condition associated with them evaluates to true.
        { # The task that is next in line to be executed, if the condition specified evaluated to true.
          &quot;condition&quot;: &quot;A String&quot;, # Standard filter expression for this task to become an eligible next task.
          &quot;description&quot;: &quot;A String&quot;, # User-provided description intended to give additional business context about the task.
          &quot;displayName&quot;: &quot;A String&quot;, # User-provided label that is attached to this edge in the UI.
          &quot;taskConfigId&quot;: &quot;A String&quot;, # ID of the next task.
          &quot;taskId&quot;: &quot;A String&quot;, # Task number of the next task.
        },
      ],
      &quot;nextTasksExecutionPolicy&quot;: &quot;A String&quot;, # Optional. The policy dictating the execution of the next set of tasks for the current task.
      &quot;parameters&quot;: { # Optional. The customized parameters the user can pass to this task.
        &quot;a_key&quot;: { # This message is used for processing and persisting (when applicable) key value pair parameters for each event in the event bus. Next available id: 4
          &quot;key&quot;: &quot;A String&quot;, # Key is used to retrieve the corresponding parameter value. This should be unique for a given fired event. These parameters must be predefined in the integration definition.
          &quot;masked&quot;: True or False, # True if this parameter should be masked in the logs
          &quot;value&quot;: { # The type of the parameter. # Values for the defined keys. Each value can either be string, int, double or any proto message.
            &quot;booleanArray&quot;: { # This message only contains a field of boolean array. # Boolean Array.
              &quot;booleanValues&quot;: [ # Boolean array.
                True or False,
              ],
            },
            &quot;booleanValue&quot;: True or False, # Boolean.
            &quot;doubleArray&quot;: { # This message only contains a field of double number array. # Double Number Array.
              &quot;doubleValues&quot;: [ # Double number array.
                3.14,
              ],
            },
            &quot;doubleValue&quot;: 3.14, # Double Number.
            &quot;intArray&quot;: { # This message only contains a field of integer array. # Integer Array.
              &quot;intValues&quot;: [ # Integer array.
                &quot;A String&quot;,
              ],
            },
            &quot;intValue&quot;: &quot;A String&quot;, # Integer.
            &quot;jsonValue&quot;: &quot;A String&quot;, # Json.
            &quot;stringArray&quot;: { # This message only contains a field of string array. # String Array.
              &quot;stringValues&quot;: [ # String array.
                &quot;A String&quot;,
              ],
            },
            &quot;stringValue&quot;: &quot;A String&quot;, # String.
          },
        },
      },
      &quot;position&quot;: { # Configuration detail of coordinate, it used for UI # Optional. Informs the front-end application where to draw this error catcher config on the UI.
        &quot;x&quot;: 42, # Required. X axis of the coordinate
        &quot;y&quot;: 42, # Required. Y axis of the coordinate
      },
      &quot;successPolicy&quot;: { # Policy that dictates the behavior for the task after it completes successfully. # Optional. Determines what action to take upon successful task completion.
        &quot;finalState&quot;: &quot;A String&quot;, # State to which the execution snapshot status will be set if the task succeeds.
      },
      &quot;synchronousCallFailurePolicy&quot;: { # Policy that defines the task retry logic and failure type. If no FailurePolicy is defined for a task, all its dependent tasks will not be executed (i.e, a `retry_strategy` of NONE will be applied). # Optional. Determines the number of times the task will be retried on failure and with what retry strategy. This is applicable for synchronous calls to Eventbus alone (Post).
        &quot;condition&quot;: &quot;A String&quot;, # Optional. The string condition that will be evaluated to determine if the task should be retried with this failure policy.
        &quot;intervalTime&quot;: &quot;A String&quot;, # Required if retry_strategy is FIXED_INTERVAL or LINEAR/EXPONENTIAL_BACKOFF/RESTART_INTEGRATION_WITH_BACKOFF. Defines the initial interval in seconds for backoff.
        &quot;maxRetries&quot;: 42, # Required if retry_strategy is FIXED_INTERVAL or LINEAR/EXPONENTIAL_BACKOFF/RESTART_INTEGRATION_WITH_BACKOFF. Defines the number of times the task will be retried if failed.
        &quot;retryStrategy&quot;: &quot;A String&quot;, # Defines what happens to the task upon failure.
      },
      &quot;task&quot;: &quot;A String&quot;, # Optional. The name for the task.
      &quot;taskExecutionStrategy&quot;: &quot;A String&quot;, # Optional. The policy dictating the execution strategy of this task.
      &quot;taskId&quot;: &quot;A String&quot;, # Required. The identifier of this task within its parent event config, specified by the client. This should be unique among all the tasks belong to the same event config. We use this field as the identifier to find next tasks (via field `next_tasks.task_id`).
      &quot;taskTemplate&quot;: &quot;A String&quot;, # Optional. Used to define task-template name if task is of type task-template
    },
  ],
  &quot;taskConfigsInternal&quot;: [ # Optional. Task configuration for the integration. It&#x27;s optional, but the integration doesn&#x27;t do anything without task_configs.
    { # The task configuration details. This is not the implementation of Task. There might be multiple TaskConfigs for the same Task.
      &quot;alertConfigs&quot;: [ # Alert configurations on error rate, warning rate, number of runs, durations, etc.
        { # Message to be used to configure alerting in the {@code TaskConfig} protos for tasks in an event.
          &quot;aggregationPeriod&quot;: &quot;A String&quot;, # The period over which the metric value should be aggregated and evaluated. Format is , where integer should be a positive integer and unit should be one of (s,m,h,d,w) meaning (second, minute, hour, day, week).
          &quot;alertDisabled&quot;: True or False, # Set to false by default. When set to true, the metrics are not aggregated or pushed to Monarch for this workflow alert.
          &quot;alertName&quot;: &quot;A String&quot;, # A name to identify this alert. This will be displayed in the alert subject. If set, this name should be unique in within the scope of the containing workflow.
          &quot;clientId&quot;: &quot;A String&quot;, # Client associated with this alert configuration. Must be a client enabled in one of the containing workflow&#x27;s triggers.
          &quot;durationThresholdMs&quot;: &quot;A String&quot;, # Should be specified only for TASK_AVERAGE_DURATION and TASK_PERCENTILE_DURATION metrics. This member should be used to specify what duration value the metrics should exceed for the alert to trigger.
          &quot;errorEnumList&quot;: { # List of error enums for alerts.
            &quot;enumStrings&quot;: [
              &quot;A String&quot;,
            ],
            &quot;filterType&quot;: &quot;A String&quot;,
          },
          &quot;metricType&quot;: &quot;A String&quot;,
          &quot;numAggregationPeriods&quot;: 42, # For how many contiguous aggregation periods should the expected min or max be violated for the alert to be fired.
          &quot;onlyFinalAttempt&quot;: True or False, # Only count final task attempts, not retries.
          &quot;playbookUrl&quot;: &quot;A String&quot;, # Link to a playbook for resolving the issue that triggered this alert.
          &quot;thresholdType&quot;: &quot;A String&quot;, # The threshold type for which this alert is being configured. If value falls below expected_min or exceeds expected_max, an alert will be fired.
          &quot;thresholdValue&quot;: { # The threshold value of the metric, above or below which the alert should be triggered. See EventAlertConfig or TaskAlertConfig for the different alert metric types in each case. For the *RATE metrics, one or both of these fields may be set. Zero is the default value and can be left at that. For *PERCENTILE_DURATION metrics, one or both of these fields may be set, and also, the duration threshold value should be specified in the threshold_duration_ms member below. For *AVERAGE_DURATION metrics, these fields should not be set at all. A different member, threshold_duration_ms, must be set in the EventAlertConfig or the TaskAlertConfig. # The metric value, above or below which the alert should be triggered.
            &quot;absolute&quot;: &quot;A String&quot;,
            &quot;percentage&quot;: 42,
          },
          &quot;warningEnumList&quot;: { # List of error enums for alerts.
            &quot;enumStrings&quot;: [
              &quot;A String&quot;,
            ],
            &quot;filterType&quot;: &quot;A String&quot;,
          },
        },
      ],
      &quot;conditionalFailurePolicies&quot;: { # Optional. Determines the number of times the task will be retried on failure and with what retry strategy. This is applicable for synchronous calls to Eventbus alone (Post).
        &quot;defaultFailurePolicy&quot;: { # Policy that defines the task retry logic and failure type. If no FailurePolicy is defined for a task, all its dependent tasks will not be executed (i.e, a `retry_strategy` of NONE will be applied). # The default failure policy to be applied if no conditional failure policy matches
          &quot;intervalInSeconds&quot;: &quot;A String&quot;, # Required if retry_strategy is FIXED_INTERVAL or LINEAR/EXPONENTIAL_BACKOFF/RESTART_WORKFLOW_WITH_BACKOFF. Defines the initial interval for backoff.
          &quot;maxNumRetries&quot;: 42, # Required if retry_strategy is FIXED_INTERVAL or LINEAR/EXPONENTIAL_BACKOFF/RESTART_WORKFLOW_WITH_BACKOFF. Defines the number of times the task will be retried if failed.
          &quot;retryCondition&quot;: &quot;A String&quot;, # Optional. The retry condition that will be evaluated for this failure policy with the corresponding retry strategy.
          &quot;retryStrategy&quot;: &quot;A String&quot;, # Defines what happens to the task upon failure.
        },
        &quot;failurePolicies&quot;: [ # The list of failure policies that will be applied to the task in order.
          { # Policy that defines the task retry logic and failure type. If no FailurePolicy is defined for a task, all its dependent tasks will not be executed (i.e, a `retry_strategy` of NONE will be applied).
            &quot;intervalInSeconds&quot;: &quot;A String&quot;, # Required if retry_strategy is FIXED_INTERVAL or LINEAR/EXPONENTIAL_BACKOFF/RESTART_WORKFLOW_WITH_BACKOFF. Defines the initial interval for backoff.
            &quot;maxNumRetries&quot;: 42, # Required if retry_strategy is FIXED_INTERVAL or LINEAR/EXPONENTIAL_BACKOFF/RESTART_WORKFLOW_WITH_BACKOFF. Defines the number of times the task will be retried if failed.
            &quot;retryCondition&quot;: &quot;A String&quot;, # Optional. The retry condition that will be evaluated for this failure policy with the corresponding retry strategy.
            &quot;retryStrategy&quot;: &quot;A String&quot;, # Defines what happens to the task upon failure.
          },
        ],
      },
      &quot;createTime&quot;: &quot;A String&quot;, # Auto-generated.
      &quot;creatorEmail&quot;: &quot;A String&quot;, # The creator&#x27;s email address. Auto-generated from the user&#x27;s email.
      &quot;description&quot;: &quot;A String&quot;, # User-provided description intended to give more business context about the task.
      &quot;disableStrictTypeValidation&quot;: True or False, # If this config contains a TypedTask, allow validation to succeed if an input is read from the output of another TypedTask whose output type is declared as a superclass of the requested input type. For instance, if the previous task declares an output of type Message, any task with this flag enabled will pass validation when attempting to read any proto Message type from the resultant Event parameter.
      &quot;errorCatcherId&quot;: &quot;A String&quot;, # Optional Error catcher id of the error catch flow which will be executed when execution error happens in the task
      &quot;externalTaskType&quot;: &quot;A String&quot;,
      &quot;failurePolicy&quot;: { # Policy that defines the task retry logic and failure type. If no FailurePolicy is defined for a task, all its dependent tasks will not be executed (i.e, a `retry_strategy` of NONE will be applied). # Optional. Determines the number of times the task will be retried on failure and with what retry strategy. This is applicable for asynchronous calls to Eventbus alone (Post To Queue, Schedule etc.).
        &quot;intervalInSeconds&quot;: &quot;A String&quot;, # Required if retry_strategy is FIXED_INTERVAL or LINEAR/EXPONENTIAL_BACKOFF/RESTART_WORKFLOW_WITH_BACKOFF. Defines the initial interval for backoff.
        &quot;maxNumRetries&quot;: 42, # Required if retry_strategy is FIXED_INTERVAL or LINEAR/EXPONENTIAL_BACKOFF/RESTART_WORKFLOW_WITH_BACKOFF. Defines the number of times the task will be retried if failed.
        &quot;retryCondition&quot;: &quot;A String&quot;, # Optional. The retry condition that will be evaluated for this failure policy with the corresponding retry strategy.
        &quot;retryStrategy&quot;: &quot;A String&quot;, # Defines what happens to the task upon failure.
      },
      &quot;incomingEdgeCount&quot;: 42, # The number of edges leading into this TaskConfig.
      &quot;jsonValidationOption&quot;: &quot;A String&quot;, # If set, overrides the option configured in the Task implementation class.
      &quot;label&quot;: &quot;A String&quot;, # User-provided label that is attached to this TaskConfig in the UI.
      &quot;lastModifiedTime&quot;: &quot;A String&quot;, # Auto-generated.
      &quot;nextTasks&quot;: [ # The set of tasks that are next in line to be executed as per the execution graph defined for the parent event, specified by `event_config_id`. Each of these next tasks are executed only if the condition associated with them evaluates to true.
        { # The task that is next in line to be executed, if the condition specified evaluated to true.
          &quot;combinedConditions&quot;: [ # Combined condition for this task to become an eligible next task. Each of these combined_conditions are joined with logical OR. DEPRECATED: use `condition`
            { # This message recursively combines constituent conditions using logical AND.
              &quot;conditions&quot;: [ # A set of individual constituent conditions.
                { # Condition that uses `operator` to evaluate the key against the value.
                  &quot;eventPropertyKey&quot;: &quot;A String&quot;, # Key that&#x27;s evaluated against the `value`. Please note the data type of the runtime value associated with the key should match the data type of `value`, else an IllegalArgumentException is thrown.
                  &quot;operator&quot;: &quot;A String&quot;, # Operator used to evaluate the condition. Please note that an operator with an inappropriate key/value operand will result in IllegalArgumentException, e.g. CONTAINS with boolean key/value pair.
                  &quot;value&quot;: { # Used for define type for values. Currently supported value types include int, string, double, array, and any proto message. # Value that&#x27;s checked for the key.
                    &quot;booleanValue&quot;: True or False,
                    &quot;doubleArray&quot;: {
                      &quot;values&quot;: [
                        3.14,
                      ],
                    },
                    &quot;doubleValue&quot;: 3.14,
                    &quot;intArray&quot;: {
                      &quot;values&quot;: [
                        &quot;A String&quot;,
                      ],
                    },
                    &quot;intValue&quot;: &quot;A String&quot;,
                    &quot;protoValue&quot;: {
                      &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
                    },
                    &quot;stringArray&quot;: {
                      &quot;values&quot;: [
                        &quot;A String&quot;,
                      ],
                    },
                    &quot;stringValue&quot;: &quot;A String&quot;,
                  },
                },
              ],
            },
          ],
          &quot;condition&quot;: &quot;A String&quot;, # Standard filter expression for this task to become an eligible next task.
          &quot;description&quot;: &quot;A String&quot;, # User-provided description intended to give more business context about the next task edge or condition.
          &quot;label&quot;: &quot;A String&quot;, # User-provided label that is attached to this edge in the UI.
          &quot;taskConfigId&quot;: &quot;A String&quot;, # ID of the next task.
          &quot;taskNumber&quot;: &quot;A String&quot;, # Task number of the next task.
        },
      ],
      &quot;nextTasksExecutionPolicy&quot;: &quot;A String&quot;, # The policy dictating the execution of the next set of tasks for the current task.
      &quot;parameters&quot;: { # The customized parameters the user can pass to this task.
        &quot;a_key&quot;: { # Key-value pair of EventBus parameters.
          &quot;dataType&quot;: &quot;A String&quot;, # Explicitly getting the type of the parameter.
          &quot;key&quot;: &quot;A String&quot;, # Key is used to retrieve the corresponding parameter value. This should be unique for a given fired event. These parameters must be predefined in the workflow definition.
          &quot;masked&quot;: True or False, # True if this parameter should be masked in the logs
          &quot;value&quot;: { # To support various types of parameter values. Next available id: 14 # Values for the defined keys. Each value can either be string, int, double or any proto message.
            &quot;booleanArray&quot;: {
              &quot;booleanValues&quot;: [
                True or False,
              ],
            },
            &quot;booleanValue&quot;: True or False,
            &quot;doubleArray&quot;: {
              &quot;doubleValues&quot;: [
                3.14,
              ],
            },
            &quot;doubleValue&quot;: 3.14,
            &quot;intArray&quot;: {
              &quot;intValues&quot;: [
                &quot;A String&quot;,
              ],
            },
            &quot;intValue&quot;: &quot;A String&quot;,
            &quot;jsonValue&quot;: &quot;A String&quot;,
            &quot;protoArray&quot;: {
              &quot;protoValues&quot;: [
                {
                  &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
                },
              ],
            },
            &quot;protoValue&quot;: {
              &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
            },
            &quot;serializedObjectValue&quot;: {
              &quot;objectValue&quot;: &quot;A String&quot;,
            },
            &quot;stringArray&quot;: {
              &quot;stringValues&quot;: [
                &quot;A String&quot;,
              ],
            },
            &quot;stringValue&quot;: &quot;A String&quot;,
          },
        },
      },
      &quot;position&quot;: { # Represents two-dimensional positions. # Optional. Informs the front-end application where to draw this task config on the UI.
        &quot;x&quot;: 42,
        &quot;y&quot;: 42,
      },
      &quot;precondition&quot;: &quot;A String&quot;, # Optional. Standard filter expression evaluated before execution. Independent of other conditions and tasks. Can be used to enable rollout. e.g. &quot;rollout(5)&quot; will only allow 5% of incoming traffic to task.
      &quot;preconditionLabel&quot;: &quot;A String&quot;, # Optional. User-provided label that is attached to precondition in the UI.
      &quot;rollbackStrategy&quot;: { # Next available id: 4 # Optional. Contains information about what needs to be done upon failure (either a permanent error or after it has been retried too many times).
        &quot;parameters&quot;: { # LINT.IfChange This message is used for processing and persisting (when applicable) key value pair parameters for each event in the event bus. Please see # Optional. The customized parameters the user can pass to this task.
          &quot;parameters&quot;: [ # Parameters are a part of Event and can be used to communicate between different tasks that are part of the same workflow execution.
            { # Key-value pair of EventBus parameters.
              &quot;dataType&quot;: &quot;A String&quot;, # Explicitly getting the type of the parameter.
              &quot;key&quot;: &quot;A String&quot;, # Key is used to retrieve the corresponding parameter value. This should be unique for a given fired event. These parameters must be predefined in the workflow definition.
              &quot;masked&quot;: True or False, # True if this parameter should be masked in the logs
              &quot;value&quot;: { # To support various types of parameter values. Next available id: 14 # Values for the defined keys. Each value can either be string, int, double or any proto message.
                &quot;booleanArray&quot;: {
                  &quot;booleanValues&quot;: [
                    True or False,
                  ],
                },
                &quot;booleanValue&quot;: True or False,
                &quot;doubleArray&quot;: {
                  &quot;doubleValues&quot;: [
                    3.14,
                  ],
                },
                &quot;doubleValue&quot;: 3.14,
                &quot;intArray&quot;: {
                  &quot;intValues&quot;: [
                    &quot;A String&quot;,
                  ],
                },
                &quot;intValue&quot;: &quot;A String&quot;,
                &quot;jsonValue&quot;: &quot;A String&quot;,
                &quot;protoArray&quot;: {
                  &quot;protoValues&quot;: [
                    {
                      &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
                    },
                  ],
                },
                &quot;protoValue&quot;: {
                  &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
                },
                &quot;serializedObjectValue&quot;: {
                  &quot;objectValue&quot;: &quot;A String&quot;,
                },
                &quot;stringArray&quot;: {
                  &quot;stringValues&quot;: [
                    &quot;A String&quot;,
                  ],
                },
                &quot;stringValue&quot;: &quot;A String&quot;,
              },
            },
          ],
        },
        &quot;rollbackTaskImplementationClassName&quot;: &quot;A String&quot;, # Required. This is the name of the task that needs to be executed upon rollback of this task.
        &quot;taskNumbersToRollback&quot;: [ # Required. These are the tasks numbers of the tasks whose `rollback_strategy.rollback_task_implementation_class_name` needs to be executed upon failure of this task.
          &quot;A String&quot;,
        ],
      },
      &quot;successPolicy&quot;: { # Policy that dictates the behavior for the task after it completes successfully. # Determines what action to take upon successful task completion.
        &quot;finalState&quot;: &quot;A String&quot;, # State to which the execution snapshot status will be set if the task succeeds.
      },
      &quot;synchronousCallFailurePolicy&quot;: { # Policy that defines the task retry logic and failure type. If no FailurePolicy is defined for a task, all its dependent tasks will not be executed (i.e, a `retry_strategy` of NONE will be applied). # Optional. Determines the number of times the task will be retried on failure and with what retry strategy. This is applicable for synchronous calls to Eventbus alone (Post).
        &quot;intervalInSeconds&quot;: &quot;A String&quot;, # Required if retry_strategy is FIXED_INTERVAL or LINEAR/EXPONENTIAL_BACKOFF/RESTART_WORKFLOW_WITH_BACKOFF. Defines the initial interval for backoff.
        &quot;maxNumRetries&quot;: 42, # Required if retry_strategy is FIXED_INTERVAL or LINEAR/EXPONENTIAL_BACKOFF/RESTART_WORKFLOW_WITH_BACKOFF. Defines the number of times the task will be retried if failed.
        &quot;retryCondition&quot;: &quot;A String&quot;, # Optional. The retry condition that will be evaluated for this failure policy with the corresponding retry strategy.
        &quot;retryStrategy&quot;: &quot;A String&quot;, # Defines what happens to the task upon failure.
      },
      &quot;taskEntity&quot;: { # Contains a task&#x27;s metadata and associated information. Next available id: 7 # Copy of the task entity that this task config is an instance of.
        &quot;disabledForVpcSc&quot;: True or False, # True if the task has conflict with vpcsc
        &quot;metadata&quot;: { # TaskMetadata are attributes that are associated to every common Task we have. # Metadata inclueds the task name, author and so on.
          &quot;activeTaskName&quot;: &quot;A String&quot;, # The new task name to replace the current task if it is deprecated. Otherwise, it is the same as the current task name.
          &quot;admins&quot;: [
            { # Admins are owners of a Task, and have all permissions on a particular task identified by the task name. By default, Eventbus periodically scans all task metadata and syncs (adds) any new admins defined here to Zanzibar.
              &quot;googleGroupEmail&quot;: &quot;A String&quot;,
              &quot;userEmail&quot;: &quot;A String&quot;,
            },
          ],
          &quot;category&quot;: &quot;A String&quot;,
          &quot;codeSearchLink&quot;: &quot;A String&quot;, # The Code Search link to the Task Java file.
          &quot;defaultJsonValidationOption&quot;: &quot;A String&quot;, # Controls whether JSON workflow parameters are validated against provided schemas before and/or after this task&#x27;s execution.
          &quot;defaultSpec&quot;: &quot;A String&quot;, # Contains the initial configuration of the task with default values set. For now, The string should be compatible to an ASCII-proto format.
          &quot;description&quot;: &quot;A String&quot;, # In a few sentences, describe the purpose and usage of the task.
          &quot;descriptiveName&quot;: &quot;A String&quot;, # The string name to show on the task list on the Workflow editor screen. This should be a very short, one to two words name for the task. (e.g. &quot;Send Mail&quot;)
          &quot;docMarkdown&quot;: &quot;A String&quot;, # Snippet of markdown documentation to embed in the RHP for this task.
          &quot;externalCategory&quot;: &quot;A String&quot;,
          &quot;externalCategorySequence&quot;: 42, # Sequence with which the task in specific category to be displayed in task discovery panel for external users.
          &quot;externalDocHtml&quot;: &quot;A String&quot;, # External-facing documention embedded in the RHP for this task.
          &quot;externalDocLink&quot;: &quot;A String&quot;, # Doc link for external-facing documentation (separate from g3doc).
          &quot;externalDocMarkdown&quot;: &quot;A String&quot;, # DEPRECATED: Use external_doc_html.
          &quot;g3DocLink&quot;: &quot;A String&quot;, # URL to the associated G3 Doc for the task if available
          &quot;iconLink&quot;: &quot;A String&quot;, # URL to gstatic image icon for this task. This icon shows up on the task list panel along with the task name in the Workflow Editor screen. Use the 24p, 2x, gray color icon image format.
          &quot;isDeprecated&quot;: True or False, # The deprecation status of the current task. Default value is false;
          &quot;name&quot;: &quot;A String&quot;, # The actual class name or the annotated name of the task. Task Author should initialize this field with value from the getName() method of the Task class.
          &quot;standaloneExternalDocHtml&quot;: &quot;A String&quot;, # External-facing documention for standalone IP in pantheon embedded in the RHP for this task. Non null only if different from external_doc_html
          &quot;status&quot;: &quot;A String&quot;, # Allows author to indicate if the task is ready to use or not. If not set, then it will default to INACTIVE.
          &quot;system&quot;: &quot;A String&quot;,
          &quot;tags&quot;: [ # A set of tags that pertain to a particular task. This can be used to improve the searchability of tasks with several names (&quot;REST Caller&quot; vs. &quot;Call REST Endpoint&quot;) or to help users find tasks based on related words.
            &quot;A String&quot;,
          ],
        },
        &quot;paramSpecs&quot;: { # Declarations for inputs/outputs for a TypedTask. This is also associated with the METADATA mask.
          &quot;parameters&quot;: [
            { # Key-value pair of EventBus task parameters. Next id: 13
              &quot;className&quot;: &quot;A String&quot;, # The FQCN of the Java object this represents. A string, for example, would be &quot;java.lang.String&quot;. If this is &quot;java.lang.Object&quot;, the parameter can be of any type.
              &quot;collectionElementClassName&quot;: &quot;A String&quot;, # If it is a collection of objects, this would be the FCQN of every individual element in the collection. If this is &quot;java.lang.Object&quot;, the parameter is a collection of any type.
              &quot;config&quot;: { # Optional fields, such as help text and other useful info.
                &quot;descriptivePhrase&quot;: &quot;A String&quot;, # A short phrase to describe what this parameter contains.
                &quot;helpText&quot;: &quot;A String&quot;, # Detailed help text for this parameter containing information not provided elsewhere. For example, instructions on how to migrate from a deprecated parameter.
                &quot;hideDefaultValue&quot;: True or False, # Whether the default value is hidden in the UI.
                &quot;inputDisplayOption&quot;: &quot;A String&quot;,
                &quot;isHidden&quot;: True or False, # Whether this field is hidden in the UI.
                &quot;label&quot;: &quot;A String&quot;, # A user-friendly label for the parameter.
                &quot;parameterNameOption&quot;: &quot;A String&quot;,
                &quot;subSectionLabel&quot;: &quot;A String&quot;, # A user-friendly label for subSection under which the parameter will be displayed.
                &quot;uiPlaceholderText&quot;: &quot;A String&quot;, # Placeholder text which will appear in the UI input form for this parameter.
              },
              &quot;dataType&quot;: &quot;A String&quot;, # The data type of the parameter.
              &quot;defaultValue&quot;: { # To support various types of parameter values. Next available id: 14 # Default values for the defined keys. Each value can either be string, int, double or any proto message or a serialized object.
                &quot;booleanArray&quot;: {
                  &quot;booleanValues&quot;: [
                    True or False,
                  ],
                },
                &quot;booleanValue&quot;: True or False,
                &quot;doubleArray&quot;: {
                  &quot;doubleValues&quot;: [
                    3.14,
                  ],
                },
                &quot;doubleValue&quot;: 3.14,
                &quot;intArray&quot;: {
                  &quot;intValues&quot;: [
                    &quot;A String&quot;,
                  ],
                },
                &quot;intValue&quot;: &quot;A String&quot;,
                &quot;jsonValue&quot;: &quot;A String&quot;,
                &quot;protoArray&quot;: {
                  &quot;protoValues&quot;: [
                    {
                      &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
                    },
                  ],
                },
                &quot;protoValue&quot;: {
                  &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
                },
                &quot;serializedObjectValue&quot;: {
                  &quot;objectValue&quot;: &quot;A String&quot;,
                },
                &quot;stringArray&quot;: {
                  &quot;stringValues&quot;: [
                    &quot;A String&quot;,
                  ],
                },
                &quot;stringValue&quot;: &quot;A String&quot;,
              },
              &quot;isDeprecated&quot;: True or False, # If set, this entry is deprecated, so further use of this parameter should be prohibited.
              &quot;isOutput&quot;: True or False,
              &quot;jsonSchema&quot;: &quot;A String&quot;, # If the data_type is JSON_VALUE, then this will define its schema.
              &quot;key&quot;: &quot;A String&quot;, # Key is used to retrieve the corresponding parameter value. This should be unique for a given task. These parameters must be predefined in the workflow definition.
              &quot;protoDef&quot;: { # Populated if this represents a proto or proto array.
                &quot;fullName&quot;: &quot;A String&quot;, # The fully-qualified proto name. This message, for example, would be &quot;enterprise.crm.eventbus.proto.ParamSpecEntry.ProtoDefinition&quot;.
                &quot;path&quot;: &quot;A String&quot;, # Path to the proto file that contains the message type&#x27;s definition.
              },
              &quot;required&quot;: True or False, # If set, the user must provide an input value for this parameter.
              &quot;validationRule&quot;: { # Rule used to validate inputs (individual values and collection elements) for this parameter.
                &quot;doubleRange&quot;: { # Range used to validate doubles and floats.
                  &quot;max&quot;: 3.14, # The inclusive maximum of the acceptable range.
                  &quot;min&quot;: 3.14, # The inclusive minimum of the acceptable range.
                },
                &quot;intRange&quot;: { # Range used to validate longs and ints.
                  &quot;max&quot;: &quot;A String&quot;, # The inclusive maximum of the acceptable range.
                  &quot;min&quot;: &quot;A String&quot;, # The inclusive minimum of the acceptable range.
                },
                &quot;stringRegex&quot;: { # Rule used to validate strings.
                  &quot;exclusive&quot;: True or False, # Whether the regex matcher is applied exclusively (if true, matching values will be rejected).
                  &quot;regex&quot;: &quot;A String&quot;, # The regex applied to the input value(s).
                },
              },
            },
          ],
        },
        &quot;stats&quot;: { # Stats for the requested dimensions: QPS, duration, and error/warning rate # Deprecated - statistics from the Monarch query.
          &quot;dimensions&quot;: { # Dimensions that these stats have been aggregated on.
            &quot;clientId&quot;: &quot;A String&quot;,
            &quot;enumFilterType&quot;: &quot;A String&quot;, # Whether to include or exclude the enums matching the regex.
            &quot;errorEnumString&quot;: &quot;A String&quot;,
            &quot;retryAttempt&quot;: &quot;A String&quot;,
            &quot;taskName&quot;: &quot;A String&quot;,
            &quot;taskNumber&quot;: &quot;A String&quot;,
            &quot;triggerId&quot;: &quot;A String&quot;, # Stats have been or will be aggregated on set fields for any semantically-meaningful combination.
            &quot;warningEnumString&quot;: &quot;A String&quot;,
            &quot;workflowId&quot;: &quot;A String&quot;,
            &quot;workflowName&quot;: &quot;A String&quot;,
          },
          &quot;durationInSeconds&quot;: 3.14, # Average duration in seconds.
          &quot;errorRate&quot;: 3.14, # Average error rate.
          &quot;qps&quot;: 3.14, # Queries per second.
          &quot;warningRate&quot;: 3.14, # Average warning rate.
        },
        &quot;taskType&quot;: &quot;A String&quot;, # Defines the type of the task
        &quot;uiConfig&quot;: { # Task authors would use this type to configure the UI for a particular task by specifying what UI config modules should be included to compose the UI. Learn more about config module framework: # UI configuration for this task Also associated with the METADATA mask.
          &quot;taskUiModuleConfigs&quot;: [ # Configurations of included config modules.
            { # Task author would use this type to configure a config module.
              &quot;moduleId&quot;: &quot;A String&quot;, # ID of the config module.
            },
          ],
        },
      },
      &quot;taskExecutionStrategy&quot;: &quot;A String&quot;, # The policy dictating the execution strategy of this task.
      &quot;taskName&quot;: &quot;A String&quot;, # The name for the task.
      &quot;taskNumber&quot;: &quot;A String&quot;, # REQUIRED: the identifier of this task within its parent event config, specified by the client. This should be unique among all the tasks belong to the same event config. We use this field as the identifier to find next tasks (via field `next_tasks.task_number`).
      &quot;taskSpec&quot;: &quot;A String&quot;, # A string template that allows user to configure task parameters (with either literal default values or tokens which will be resolved at execution time) for the task. It will eventually replace the old &quot;parameters&quot; field.
      &quot;taskTemplateName&quot;: &quot;A String&quot;, # Used to define task-template name if task is of type task-template
      &quot;taskType&quot;: &quot;A String&quot;, # Defines the type of the task
    },
  ],
  &quot;teardown&quot;: { # Optional. Contains a graph of tasks that will be executed before putting the event in a terminal state (SUCCEEDED/FAILED/FATAL), regardless of success or failure, similar to &quot;finally&quot; in code.
    &quot;teardownTaskConfigs&quot;: [ # Required.
      {
        &quot;creatorEmail&quot;: &quot;A String&quot;, # The creator&#x27;s email address.
        &quot;name&quot;: &quot;A String&quot;, # Required. Unique identifier of the teardown task within this Config. We use this field as the identifier to find next teardown tasks.
        &quot;nextTeardownTask&quot;: { # The teardown task that is next in line to be executed. We support only sequential execution of teardown tasks (i.e. no branching).
          &quot;name&quot;: &quot;A String&quot;, # Required. Name of the next teardown task.
        },
        &quot;parameters&quot;: { # LINT.IfChange This message is used for processing and persisting (when applicable) key value pair parameters for each event in the event bus. Please see # The parameters the user can pass to this task.
          &quot;parameters&quot;: [ # Parameters are a part of Event and can be used to communicate between different tasks that are part of the same integration execution.
            { # Key-value pair of EventBus parameters.
              &quot;key&quot;: &quot;A String&quot;, # Key is used to retrieve the corresponding parameter value. This should be unique for a given fired event. These parameters must be predefined in the integration definition.
              &quot;masked&quot;: True or False, # True if this parameter should be masked in the logs
              &quot;value&quot;: { # LINT.IfChange To support various types of parameter values. Next available id: 14 # Values for the defined keys. Each value can either be string, int, double or any proto message.
                &quot;booleanArray&quot;: {
                  &quot;booleanValues&quot;: [
                    True or False,
                  ],
                },
                &quot;booleanValue&quot;: True or False,
                &quot;doubleArray&quot;: {
                  &quot;doubleValues&quot;: [
                    3.14,
                  ],
                },
                &quot;doubleValue&quot;: 3.14,
                &quot;intArray&quot;: {
                  &quot;intValues&quot;: [
                    &quot;A String&quot;,
                  ],
                },
                &quot;intValue&quot;: &quot;A String&quot;,
                &quot;protoArray&quot;: {
                  &quot;protoValues&quot;: [
                    {
                      &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
                    },
                  ],
                },
                &quot;protoValue&quot;: {
                  &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
                },
                &quot;serializedObjectValue&quot;: {
                  &quot;objectValue&quot;: &quot;A String&quot;,
                },
                &quot;stringArray&quot;: {
                  &quot;stringValues&quot;: [
                    &quot;A String&quot;,
                  ],
                },
                &quot;stringValue&quot;: &quot;A String&quot;,
              },
            },
          ],
        },
        &quot;properties&quot;: { # LINT.IfChange This message is used for storing key value pair properties for each Event / Task in the EventBus.
          &quot;properties&quot;: [ # An unordered list of property entries.
            { # Key-value pair of EventBus property.
              &quot;key&quot;: &quot;A String&quot;, # Key is used to retrieve the corresponding property value. This should be unique for a given fired event. The Tasks should be aware of the keys used while firing the events for them to be able to retrieve the values.
              &quot;value&quot;: { # Used for define type for values. Currently supported value types include int, string, double, array, and any proto message. # Values for the defined keys. Each value can either be string, int, double or any proto message.
                &quot;booleanValue&quot;: True or False,
                &quot;doubleArray&quot;: {
                  &quot;values&quot;: [
                    3.14,
                  ],
                },
                &quot;doubleValue&quot;: 3.14,
                &quot;intArray&quot;: {
                  &quot;values&quot;: [
                    &quot;A String&quot;,
                  ],
                },
                &quot;intValue&quot;: &quot;A String&quot;,
                &quot;protoValue&quot;: {
                  &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
                },
                &quot;stringArray&quot;: {
                  &quot;values&quot;: [
                    &quot;A String&quot;,
                  ],
                },
                &quot;stringValue&quot;: &quot;A String&quot;,
              },
            },
          ],
        },
        &quot;teardownTaskImplementationClassName&quot;: &quot;A String&quot;, # Required. Implementation class name.
      },
    ],
  },
  &quot;triggerConfigs&quot;: [ # Optional. Trigger configurations.
    { # Configuration detail of a trigger.
      &quot;alertConfig&quot;: [ # Optional. An alert threshold configuration for the [trigger + client + integration] tuple. If these values are not specified in the trigger config, default values will be populated by the system. Note that there must be exactly one alert threshold configured per [client + trigger + integration] when published.
        { # Message to be used to configure custom alerting in the {@code EventConfig} protos for an event.
          &quot;aggregationPeriod&quot;: &quot;A String&quot;, # The period over which the metric value should be aggregated and evaluated. Format is , where integer should be a positive integer and unit should be one of (s,m,h,d,w) meaning (second, minute, hour, day, week). For an EXPECTED_MIN threshold, this aggregation_period must be lesser than 24 hours.
          &quot;alertThreshold&quot;: 42, # For how many contiguous aggregation periods should the expected min or max be violated for the alert to be fired.
          &quot;disableAlert&quot;: True or False, # Set to false by default. When set to true, the metrics are not aggregated or pushed to Monarch for this integration alert.
          &quot;displayName&quot;: &quot;A String&quot;, # Name of the alert. This will be displayed in the alert subject. If set, this name should be unique within the scope of the integration.
          &quot;durationThreshold&quot;: &quot;A String&quot;, # Should be specified only for *AVERAGE_DURATION and *PERCENTILE_DURATION metrics. This member should be used to specify what duration value the metrics should exceed for the alert to trigger.
          &quot;metricType&quot;: &quot;A String&quot;, # The type of metric.
          &quot;onlyFinalAttempt&quot;: True or False, # For either events or tasks, depending on the type of alert, count only final attempts, not retries.
          &quot;thresholdType&quot;: &quot;A String&quot;, # The threshold type, whether lower(expected_min) or upper(expected_max), for which this alert is being configured. If value falls below expected_min or exceeds expected_max, an alert will be fired.
          &quot;thresholdValue&quot;: { # The threshold value of the metric, above or below which the alert should be triggered. See EventAlertConfig or TaskAlertConfig for the different alert metric types in each case. For the *RATE metrics, one or both of these fields may be set. Zero is the default value and can be left at that. For *PERCENTILE_DURATION metrics, one or both of these fields may be set, and also, the duration threshold value should be specified in the threshold_duration_ms member below. For *AVERAGE_DURATION metrics, these fields should not be set at all. A different member, threshold_duration_ms, must be set in the EventAlertConfig or the TaskAlertConfig. # The metric value, above or below which the alert should be triggered.
            &quot;absolute&quot;: &quot;A String&quot;, # Absolute value threshold.
            &quot;percentage&quot;: 42, # Percentage threshold.
          },
        },
      ],
      &quot;cloudSchedulerConfig&quot;: { # Cloud Scheduler Trigger configuration # Optional. Cloud Scheduler Trigger related metadata
        &quot;cronTab&quot;: &quot;A String&quot;, # Required. The cron tab of cloud scheduler trigger.
        &quot;errorMessage&quot;: &quot;A String&quot;, # Optional. When the job was deleted from Pantheon UI, error_message will be populated when Get/List integrations
        &quot;location&quot;: &quot;A String&quot;, # Required. The location where associated cloud scheduler job will be created
        &quot;serviceAccountEmail&quot;: &quot;A String&quot;, # Required. Service account used by Cloud Scheduler to trigger the integration at scheduled time
      },
      &quot;description&quot;: &quot;A String&quot;, # Optional. User-provided description intended to give additional business context about the task.
      &quot;errorCatcherId&quot;: &quot;A String&quot;, # Optional. Optional Error catcher id of the error catch flow which will be executed when execution error happens in the task
      &quot;inputVariables&quot;: { # Variables names mapped to api trigger. # Optional. List of input variables for the api trigger.
        &quot;names&quot;: [ # Optional. List of variable names.
          &quot;A String&quot;,
        ],
      },
      &quot;label&quot;: &quot;A String&quot;, # Optional. The user created label for a particular trigger.
      &quot;nextTasksExecutionPolicy&quot;: &quot;A String&quot;, # Optional. Dictates how next tasks will be executed.
      &quot;outputVariables&quot;: { # Variables names mapped to api trigger. # Optional. List of output variables for the api trigger.
        &quot;names&quot;: [ # Optional. List of variable names.
          &quot;A String&quot;,
        ],
      },
      &quot;position&quot;: { # Configuration detail of coordinate, it used for UI # Optional. Informs the front-end application where to draw this error catcher config on the UI.
        &quot;x&quot;: 42, # Required. X axis of the coordinate
        &quot;y&quot;: 42, # Required. Y axis of the coordinate
      },
      &quot;properties&quot;: { # Optional. Configurable properties of the trigger, not to be confused with integration parameters. E.g. &quot;name&quot; is a property for API triggers and &quot;subscription&quot; is a property for Pub/sub triggers.
        &quot;a_key&quot;: &quot;A String&quot;,
      },
      &quot;startTasks&quot;: [ # Optional. Set of tasks numbers from where the integration execution is started by this trigger. If this is empty, then integration is executed with default start tasks. In the list of start tasks, none of two tasks can have direct ancestor-descendant relationships (i.e. in a same integration execution graph).
        { # The task that is next in line to be executed, if the condition specified evaluated to true.
          &quot;condition&quot;: &quot;A String&quot;, # Standard filter expression for this task to become an eligible next task.
          &quot;description&quot;: &quot;A String&quot;, # User-provided description intended to give additional business context about the task.
          &quot;displayName&quot;: &quot;A String&quot;, # User-provided label that is attached to this edge in the UI.
          &quot;taskConfigId&quot;: &quot;A String&quot;, # ID of the next task.
          &quot;taskId&quot;: &quot;A String&quot;, # Task number of the next task.
        },
      ],
      &quot;trigger&quot;: &quot;A String&quot;, # Optional. Name of the trigger. Example: &quot;API Trigger&quot;, &quot;Cloud Pub Sub Trigger&quot; When set will be sent out to monitoring dashabord for tracking purpose.
      &quot;triggerId&quot;: &quot;A String&quot;, # Optional. Auto-generated trigger ID. The ID is based on the properties that you define in the trigger config. For example, for an API trigger, the trigger ID follows the format: api_trigger/TRIGGER_NAME Where trigger config has properties with value {&quot;Trigger name&quot;: TRIGGER_NAME}
      &quot;triggerNumber&quot;: &quot;A String&quot;, # Required. A number to uniquely identify each trigger config within the integration on UI.
      &quot;triggerType&quot;: &quot;A String&quot;, # Optional. Type of trigger
    },
  ],
  &quot;triggerConfigsInternal&quot;: [ # Optional. Trigger configurations.
    { # Configuration detail of a trigger. Next available id: 22
      &quot;alertConfig&quot;: [ # An alert threshold configuration for the [trigger + client + workflow] tuple. If these values are not specified in the trigger config, default values will be populated by the system. Note that there must be exactly one alert threshold configured per [client + trigger + workflow] when published.
        { # Message to be used to configure custom alerting in the {@code EventConfig} protos for an event.
          &quot;aggregationPeriod&quot;: &quot;A String&quot;, # For an EXPECTED_MIN threshold, this aggregation_period must be lesser than 24 hours.
          &quot;alertDisabled&quot;: True or False, # Set to false by default. When set to true, the metrics are not aggregated or pushed to Monarch for this workflow alert.
          &quot;alertName&quot;: &quot;A String&quot;, # A name to identify this alert. This will be displayed in the alert subject. If set, this name should be unique within the scope of the workflow.
          &quot;clientId&quot;: &quot;A String&quot;, # Client associated with this alert configuration.
          &quot;durationThresholdMs&quot;: &quot;A String&quot;, # Should be specified only for *AVERAGE_DURATION and *PERCENTILE_DURATION metrics. This member should be used to specify what duration value the metrics should exceed for the alert to trigger.
          &quot;errorEnumList&quot;: { # List of error enums for alerts.
            &quot;enumStrings&quot;: [
              &quot;A String&quot;,
            ],
            &quot;filterType&quot;: &quot;A String&quot;,
          },
          &quot;metricType&quot;: &quot;A String&quot;,
          &quot;numAggregationPeriods&quot;: 42, # For how many contiguous aggregation periods should the expected min or max be violated for the alert to be fired.
          &quot;onlyFinalAttempt&quot;: True or False, # For either events or tasks, depending on the type of alert, count only final attempts, not retries.
          &quot;playbookUrl&quot;: &quot;A String&quot;, # Link to a playbook for resolving the issue that triggered this alert.
          &quot;thresholdType&quot;: &quot;A String&quot;, # The threshold type, whether lower(expected_min) or upper(expected_max), for which this alert is being configured. If value falls below expected_min or exceeds expected_max, an alert will be fired.
          &quot;thresholdValue&quot;: { # The threshold value of the metric, above or below which the alert should be triggered. See EventAlertConfig or TaskAlertConfig for the different alert metric types in each case. For the *RATE metrics, one or both of these fields may be set. Zero is the default value and can be left at that. For *PERCENTILE_DURATION metrics, one or both of these fields may be set, and also, the duration threshold value should be specified in the threshold_duration_ms member below. For *AVERAGE_DURATION metrics, these fields should not be set at all. A different member, threshold_duration_ms, must be set in the EventAlertConfig or the TaskAlertConfig. # The metric value, above or below which the alert should be triggered.
            &quot;absolute&quot;: &quot;A String&quot;,
            &quot;percentage&quot;: 42,
          },
          &quot;warningEnumList&quot;: { # List of error enums for alerts.
            &quot;enumStrings&quot;: [
              &quot;A String&quot;,
            ],
            &quot;filterType&quot;: &quot;A String&quot;,
          },
        },
      ],
      &quot;cloudSchedulerConfig&quot;: { # Cloud Scheduler Trigger configuration
        &quot;cronTab&quot;: &quot;A String&quot;, # Required. The cron tab of cloud scheduler trigger.
        &quot;errorMessage&quot;: &quot;A String&quot;, # Optional. When the job was deleted from Pantheon UI, error_message will be populated when Get/List integrations
        &quot;location&quot;: &quot;A String&quot;, # Required. The location where associated cloud scheduler job will be created
        &quot;serviceAccountEmail&quot;: &quot;A String&quot;, # Required. Service account used by Cloud Scheduler to trigger the integration at scheduled time
      },
      &quot;description&quot;: &quot;A String&quot;, # User-provided description intended to give more business context about the task.
      &quot;enabledClients&quot;: [ # Required. The list of client ids which are enabled to execute the workflow using this trigger. In other words, these clients have the workflow execution privledges for this trigger. For API trigger, the client id in the incoming request is validated against the list of enabled clients. For non-API triggers, one workflow execution is triggered on behalf of each enabled client.
        &quot;A String&quot;,
      ],
      &quot;errorCatcherId&quot;: &quot;A String&quot;, # Optional Error catcher id of the error catch flow which will be executed when execution error happens in the task
      &quot;inputVariables&quot;: { # Variables names mapped to api trigger. # Optional. List of input variables for the api trigger.
        &quot;names&quot;: [ # Optional. List of variable names.
          &quot;A String&quot;,
        ],
      },
      &quot;label&quot;: &quot;A String&quot;, # The user created label for a particular trigger.
      &quot;nextTasksExecutionPolicy&quot;: &quot;A String&quot;, # Dictates how next tasks will be executed.
      &quot;outputVariables&quot;: { # Variables names mapped to api trigger. # Optional. List of output variables for the api trigger.
        &quot;names&quot;: [ # Optional. List of variable names.
          &quot;A String&quot;,
        ],
      },
      &quot;pauseWorkflowExecutions&quot;: True or False, # Optional. If set to true, any upcoming requests for this trigger config will be paused and the executions will be resumed later when the flag is reset. The workflow to which this trigger config belongs has to be in ACTIVE status for the executions to be paused or resumed.
      &quot;position&quot;: { # Represents two-dimensional positions. # Optional. Informs the front-end application where to draw this trigger config on the UI.
        &quot;x&quot;: 42,
        &quot;y&quot;: 42,
      },
      &quot;properties&quot;: { # Configurable properties of the trigger, not to be confused with workflow parameters. E.g. &quot;name&quot; is a property for API triggers and &quot;subscription&quot; is a property for Cloud Pubsub triggers.
        &quot;a_key&quot;: &quot;A String&quot;,
      },
      &quot;startTasks&quot;: [ # Set of tasks numbers from where the workflow execution is started by this trigger. If this is empty, then workflow is executed with default start tasks. In the list of start tasks, none of two tasks can have direct ancestor-descendant relationships (i.e. in a same workflow execution graph).
        { # The task that is next in line to be executed, if the condition specified evaluated to true.
          &quot;combinedConditions&quot;: [ # Combined condition for this task to become an eligible next task. Each of these combined_conditions are joined with logical OR. DEPRECATED: use `condition`
            { # This message recursively combines constituent conditions using logical AND.
              &quot;conditions&quot;: [ # A set of individual constituent conditions.
                { # Condition that uses `operator` to evaluate the key against the value.
                  &quot;eventPropertyKey&quot;: &quot;A String&quot;, # Key that&#x27;s evaluated against the `value`. Please note the data type of the runtime value associated with the key should match the data type of `value`, else an IllegalArgumentException is thrown.
                  &quot;operator&quot;: &quot;A String&quot;, # Operator used to evaluate the condition. Please note that an operator with an inappropriate key/value operand will result in IllegalArgumentException, e.g. CONTAINS with boolean key/value pair.
                  &quot;value&quot;: { # Used for define type for values. Currently supported value types include int, string, double, array, and any proto message. # Value that&#x27;s checked for the key.
                    &quot;booleanValue&quot;: True or False,
                    &quot;doubleArray&quot;: {
                      &quot;values&quot;: [
                        3.14,
                      ],
                    },
                    &quot;doubleValue&quot;: 3.14,
                    &quot;intArray&quot;: {
                      &quot;values&quot;: [
                        &quot;A String&quot;,
                      ],
                    },
                    &quot;intValue&quot;: &quot;A String&quot;,
                    &quot;protoValue&quot;: {
                      &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
                    },
                    &quot;stringArray&quot;: {
                      &quot;values&quot;: [
                        &quot;A String&quot;,
                      ],
                    },
                    &quot;stringValue&quot;: &quot;A String&quot;,
                  },
                },
              ],
            },
          ],
          &quot;condition&quot;: &quot;A String&quot;, # Standard filter expression for this task to become an eligible next task.
          &quot;description&quot;: &quot;A String&quot;, # User-provided description intended to give more business context about the next task edge or condition.
          &quot;label&quot;: &quot;A String&quot;, # User-provided label that is attached to this edge in the UI.
          &quot;taskConfigId&quot;: &quot;A String&quot;, # ID of the next task.
          &quot;taskNumber&quot;: &quot;A String&quot;, # Task number of the next task.
        },
      ],
      &quot;triggerCriteria&quot;: { # Optional. When set, Eventbus will run the task specified in the trigger_criteria and validate the result using the trigger_criteria.condition, and only execute the workflow when result is true.
        &quot;condition&quot;: &quot;A String&quot;, # Required. Standard filter expression, when true the workflow will be executed. If there&#x27;s no trigger_criteria_task_implementation_class_name specified, the condition will be validated directly.
        &quot;parameters&quot;: { # LINT.IfChange This message is used for processing and persisting (when applicable) key value pair parameters for each event in the event bus. Please see # Optional. To be used in TaskConfig for the implementation class.
          &quot;parameters&quot;: [ # Parameters are a part of Event and can be used to communicate between different tasks that are part of the same integration execution.
            { # Key-value pair of EventBus parameters.
              &quot;key&quot;: &quot;A String&quot;, # Key is used to retrieve the corresponding parameter value. This should be unique for a given fired event. These parameters must be predefined in the integration definition.
              &quot;masked&quot;: True or False, # True if this parameter should be masked in the logs
              &quot;value&quot;: { # LINT.IfChange To support various types of parameter values. Next available id: 14 # Values for the defined keys. Each value can either be string, int, double or any proto message.
                &quot;booleanArray&quot;: {
                  &quot;booleanValues&quot;: [
                    True or False,
                  ],
                },
                &quot;booleanValue&quot;: True or False,
                &quot;doubleArray&quot;: {
                  &quot;doubleValues&quot;: [
                    3.14,
                  ],
                },
                &quot;doubleValue&quot;: 3.14,
                &quot;intArray&quot;: {
                  &quot;intValues&quot;: [
                    &quot;A String&quot;,
                  ],
                },
                &quot;intValue&quot;: &quot;A String&quot;,
                &quot;protoArray&quot;: {
                  &quot;protoValues&quot;: [
                    {
                      &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
                    },
                  ],
                },
                &quot;protoValue&quot;: {
                  &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
                },
                &quot;serializedObjectValue&quot;: {
                  &quot;objectValue&quot;: &quot;A String&quot;,
                },
                &quot;stringArray&quot;: {
                  &quot;stringValues&quot;: [
                    &quot;A String&quot;,
                  ],
                },
                &quot;stringValue&quot;: &quot;A String&quot;,
              },
            },
          ],
        },
        &quot;triggerCriteriaTaskImplementationClassName&quot;: &quot;A String&quot;, # Optional. Implementation class name. The class should implement the “TypedTask” interface.
      },
      &quot;triggerId&quot;: &quot;A String&quot;, # The backend trigger ID.
      &quot;triggerName&quot;: &quot;A String&quot;, # Optional. Name of the trigger This is added to identify the type of trigger. This is avoid the logic on triggerId to identify the trigger_type and push the same to monitoring.
      &quot;triggerNumber&quot;: &quot;A String&quot;, # Required. A number to uniquely identify each trigger config within the workflow on UI.
      &quot;triggerType&quot;: &quot;A String&quot;,
    },
  ],
  &quot;updateTime&quot;: &quot;A String&quot;, # Output only. Auto-generated.
  &quot;userLabel&quot;: &quot;A String&quot;, # Optional. A user-defined label that annotates an integration version. Typically, this is only set when the integration version is created.
}</pre>
</div>

<div class="method">
    <code class="details" id="delete">delete(name, x__xgafv=None)</code>
  <pre>Soft-deletes the integration. Changes the status of the integration to ARCHIVED. If the integration being ARCHIVED is tagged as &quot;HEAD&quot;, the tag is removed from this snapshot and set to the previous non-ARCHIVED snapshot. The PUBLISH_REQUESTED, DUE_FOR_DELETION tags are removed too. This RPC throws an exception if the version being deleted is DRAFT, and if the `locked_by` user is not the same as the user performing the Delete. Audit fields updated include last_modified_timestamp, last_modified_by. Any existing lock is released when Deleting a integration. Currently, there is no undelete mechanism.

Args:
  name: string, Required. The version to delete. Format: projects/{project}/locations/{location}/integrations/{integration}/versions/{version} (required)
  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); }
}</pre>
</div>

<div class="method">
    <code class="details" id="download">download(name, fileFormat=None, files=None, x__xgafv=None)</code>
  <pre>Downloads an integration. Retrieves the `IntegrationVersion` for a given `integration_id` and returns the response as a string.

Args:
  name: string, Required. The version to download. Format: projects/{project}/locations/{location}/integrations/{integration}/versions/{version} (required)
  fileFormat: string, File format for download request.
    Allowed values
      FILE_FORMAT_UNSPECIFIED - Unspecified file format
      JSON - JSON File Format
      YAML - YAML File Format
  files: string, Optional. Integration related file to download like Integration Json, Config variable, testcase etc. (repeated)
    Allowed values
      INTEGRATION_FILE_UNSPECIFIED - Default value.
      INTEGRATION - Integration file.
      INTEGRATION_CONFIG_VARIABLES - Integration Config variables.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Response for DownloadIntegrationVersion.
  &quot;content&quot;: &quot;A String&quot;, # String representation of the requested file.
  &quot;files&quot;: [ # List containing String represendation for multiple file with type.
    { # To store string representation of Integration file.
      &quot;content&quot;: &quot;A String&quot;, # String representation of the file content.
      &quot;file&quot;: &quot;A String&quot;, # File information like Integration version, Integration Config variables etc.
    },
  ],
}</pre>
</div>

<div class="method">
    <code class="details" id="downloadJsonPackage">downloadJsonPackage(name, files=None, x__xgafv=None)</code>
  <pre>Downloads an Integration version package like IntegrationVersion,Integration Config etc. Retrieves the IntegrationVersion package for a given `integration_id` and returns the response as a JSON.

Args:
  name: string, Required. Integration version name Format: projects/{project}/locations/{location}/integrations/{integration}/versions/{version} (required)
  files: string, Optional. Integration related file to download like Integration Version, Config variable, testcase etc. (repeated)
    Allowed values
      INTEGRATION_FILE_UNSPECIFIED - Default value.
      INTEGRATION - Integration file.
      INTEGRATION_CONFIG_VARIABLES - Integration Config variables.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Response for DownloadJsonPackage.
  &quot;files&quot;: [ # List containing JSON for multiple file with type information.
    { # To store Integration version related file i.e. Integration Version, Config variable etc.
      &quot;integrationConfig&quot;: { # Integration version config file
        &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
      },
      &quot;integrationVersion&quot;: { # The integration version definition. # Integration version
        &quot;cloudKmsKey&quot;: &quot;A String&quot;, # Optional. Cloud KMS resource name for the CMEK encryption key.
        &quot;cloudLoggingDetails&quot;: { # Cloud Logging details for execution info # Optional. Cloud Logging details for the integration version
          &quot;cloudLoggingSeverity&quot;: &quot;A String&quot;, # Optional. Severity selected by the customer for the logs to be sent to Cloud Logging, for the integration version getting executed.
          &quot;enableCloudLogging&quot;: True or False, # Optional. Status of whether Cloud Logging is enabled or not for the integration version getting executed.
        },
        &quot;createTime&quot;: &quot;A String&quot;, # Output only. Auto-generated.
        &quot;createdFromTemplate&quot;: &quot;A String&quot;, # Optional. Optional. The resource name of the template from which the integration is created.
        &quot;databasePersistencePolicy&quot;: &quot;A String&quot;, # Optional. Flag to disable database persistence for execution data, including event execution info, execution export info, execution metadata index and execution param index.
        &quot;description&quot;: &quot;A String&quot;, # Optional. The integration description.
        &quot;enableVariableMasking&quot;: True or False, # Optional. True if variable masking feature should be turned on for this version
        &quot;errorCatcherConfigs&quot;: [ # Optional. Error Catch Task configuration for the integration. It&#x27;s optional.
          { # Configuration detail of a error catch task
            &quot;description&quot;: &quot;A String&quot;, # Optional. User-provided description intended to give more business context about the error catcher config.
            &quot;errorCatcherId&quot;: &quot;A String&quot;, # Required. An error catcher id is string representation for the error catcher config. Within a workflow, error_catcher_id uniquely identifies an error catcher config among all error catcher configs for the workflow
            &quot;errorCatcherNumber&quot;: &quot;A String&quot;, # Required. A number to uniquely identify each error catcher config within the workflow on UI.
            &quot;label&quot;: &quot;A String&quot;, # Optional. The user created label for a particular error catcher. Optional.
            &quot;position&quot;: { # Configuration detail of coordinate, it used for UI # Optional. Informs the front-end application where to draw this error catcher config on the UI.
              &quot;x&quot;: 42, # Required. X axis of the coordinate
              &quot;y&quot;: 42, # Required. Y axis of the coordinate
            },
            &quot;startErrorTasks&quot;: [ # Required. The set of start tasks that are to be executed for the error catch flow
              { # The task that is next in line to be executed, if the condition specified evaluated to true.
                &quot;condition&quot;: &quot;A String&quot;, # Standard filter expression for this task to become an eligible next task.
                &quot;description&quot;: &quot;A String&quot;, # User-provided description intended to give additional business context about the task.
                &quot;displayName&quot;: &quot;A String&quot;, # User-provided label that is attached to this edge in the UI.
                &quot;taskConfigId&quot;: &quot;A String&quot;, # ID of the next task.
                &quot;taskId&quot;: &quot;A String&quot;, # Task number of the next task.
              },
            ],
          },
        ],
        &quot;integrationConfigParameters&quot;: [ # Optional. Config Parameters that are expected to be passed to the integration when an integration is published. This consists of all the parameters that are expected to provide configuration in the integration execution. This gives the user the ability to provide default values, value, add information like connection url, project based configuration value and also provide data types of each parameter.
          { # Integration Config Parameter is defined in the integration config and are used to provide external configuration for integration. It provide information about data types of the expected parameters and provide any default values or value. They can also be used to add custom attributes.
            &quot;parameter&quot;: { # Integration Parameter is defined in the integration config and are used to provide information about data types of the expected parameters and provide any default values if needed. They can also be used to add custom attributes. These are static in nature and should not be used for dynamic event definition. # Optional. Integration Parameter to provide the default value, data type and attributes required for the Integration config variables.
              &quot;containsLargeData&quot;: True or False, # Indicates whether this variable contains large data and need to be uploaded to Cloud Storage.
              &quot;dataType&quot;: &quot;A String&quot;, # Type of the parameter.
              &quot;defaultValue&quot;: { # The type of the parameter. # Default values for the defined keys. Each value can either be string, int, double or any proto message or a serialized object.
                &quot;booleanArray&quot;: { # This message only contains a field of boolean array. # Boolean Array.
                  &quot;booleanValues&quot;: [ # Boolean array.
                    True or False,
                  ],
                },
                &quot;booleanValue&quot;: True or False, # Boolean.
                &quot;doubleArray&quot;: { # This message only contains a field of double number array. # Double Number Array.
                  &quot;doubleValues&quot;: [ # Double number array.
                    3.14,
                  ],
                },
                &quot;doubleValue&quot;: 3.14, # Double Number.
                &quot;intArray&quot;: { # This message only contains a field of integer array. # Integer Array.
                  &quot;intValues&quot;: [ # Integer array.
                    &quot;A String&quot;,
                  ],
                },
                &quot;intValue&quot;: &quot;A String&quot;, # Integer.
                &quot;jsonValue&quot;: &quot;A String&quot;, # Json.
                &quot;stringArray&quot;: { # This message only contains a field of string array. # String Array.
                  &quot;stringValues&quot;: [ # String array.
                    &quot;A String&quot;,
                  ],
                },
                &quot;stringValue&quot;: &quot;A String&quot;, # String.
              },
              &quot;description&quot;: &quot;A String&quot;, # Optional. Description of the parameter.
              &quot;displayName&quot;: &quot;A String&quot;, # The name (without prefix) to be displayed in the UI for this parameter. E.g. if the key is &quot;foo.bar.myName&quot;, then the name would be &quot;myName&quot;.
              &quot;inputOutputType&quot;: &quot;A String&quot;, # Specifies the input/output type for the parameter.
              &quot;isTransient&quot;: True or False, # Whether this parameter is a transient parameter.
              &quot;jsonSchema&quot;: &quot;A String&quot;, # This schema will be used to validate runtime JSON-typed values of this parameter.
              &quot;key&quot;: &quot;A String&quot;, # Key is used to retrieve the corresponding parameter value. This should be unique for a given fired event. These parameters must be predefined in the integration definition.
              &quot;masked&quot;: True or False, # True if this parameter should be masked in the logs
              &quot;producer&quot;: &quot;A String&quot;, # The identifier of the node (TaskConfig/TriggerConfig) this parameter was produced by, if it is a transient param or a copy of an input param.
              &quot;searchable&quot;: True or False, # Searchable in the execution log or not.
            },
            &quot;value&quot;: { # The type of the parameter. # Values for the defined keys. Each value can either be string, int, double or any proto message or a serialized object.
              &quot;booleanArray&quot;: { # This message only contains a field of boolean array. # Boolean Array.
                &quot;booleanValues&quot;: [ # Boolean array.
                  True or False,
                ],
              },
              &quot;booleanValue&quot;: True or False, # Boolean.
              &quot;doubleArray&quot;: { # This message only contains a field of double number array. # Double Number Array.
                &quot;doubleValues&quot;: [ # Double number array.
                  3.14,
                ],
              },
              &quot;doubleValue&quot;: 3.14, # Double Number.
              &quot;intArray&quot;: { # This message only contains a field of integer array. # Integer Array.
                &quot;intValues&quot;: [ # Integer array.
                  &quot;A String&quot;,
                ],
              },
              &quot;intValue&quot;: &quot;A String&quot;, # Integer.
              &quot;jsonValue&quot;: &quot;A String&quot;, # Json.
              &quot;stringArray&quot;: { # This message only contains a field of string array. # String Array.
                &quot;stringValues&quot;: [ # String array.
                  &quot;A String&quot;,
                ],
              },
              &quot;stringValue&quot;: &quot;A String&quot;, # String.
            },
          },
        ],
        &quot;integrationParameters&quot;: [ # Optional. Parameters that are expected to be passed to the integration when an event is triggered. This consists of all the parameters that are expected in the integration execution. This gives the user the ability to provide default values, add information like PII and also provide data types of each parameter.
          { # Integration Parameter is defined in the integration config and are used to provide information about data types of the expected parameters and provide any default values if needed. They can also be used to add custom attributes. These are static in nature and should not be used for dynamic event definition.
            &quot;containsLargeData&quot;: True or False, # Indicates whether this variable contains large data and need to be uploaded to Cloud Storage.
            &quot;dataType&quot;: &quot;A String&quot;, # Type of the parameter.
            &quot;defaultValue&quot;: { # The type of the parameter. # Default values for the defined keys. Each value can either be string, int, double or any proto message or a serialized object.
              &quot;booleanArray&quot;: { # This message only contains a field of boolean array. # Boolean Array.
                &quot;booleanValues&quot;: [ # Boolean array.
                  True or False,
                ],
              },
              &quot;booleanValue&quot;: True or False, # Boolean.
              &quot;doubleArray&quot;: { # This message only contains a field of double number array. # Double Number Array.
                &quot;doubleValues&quot;: [ # Double number array.
                  3.14,
                ],
              },
              &quot;doubleValue&quot;: 3.14, # Double Number.
              &quot;intArray&quot;: { # This message only contains a field of integer array. # Integer Array.
                &quot;intValues&quot;: [ # Integer array.
                  &quot;A String&quot;,
                ],
              },
              &quot;intValue&quot;: &quot;A String&quot;, # Integer.
              &quot;jsonValue&quot;: &quot;A String&quot;, # Json.
              &quot;stringArray&quot;: { # This message only contains a field of string array. # String Array.
                &quot;stringValues&quot;: [ # String array.
                  &quot;A String&quot;,
                ],
              },
              &quot;stringValue&quot;: &quot;A String&quot;, # String.
            },
            &quot;description&quot;: &quot;A String&quot;, # Optional. Description of the parameter.
            &quot;displayName&quot;: &quot;A String&quot;, # The name (without prefix) to be displayed in the UI for this parameter. E.g. if the key is &quot;foo.bar.myName&quot;, then the name would be &quot;myName&quot;.
            &quot;inputOutputType&quot;: &quot;A String&quot;, # Specifies the input/output type for the parameter.
            &quot;isTransient&quot;: True or False, # Whether this parameter is a transient parameter.
            &quot;jsonSchema&quot;: &quot;A String&quot;, # This schema will be used to validate runtime JSON-typed values of this parameter.
            &quot;key&quot;: &quot;A String&quot;, # Key is used to retrieve the corresponding parameter value. This should be unique for a given fired event. These parameters must be predefined in the integration definition.
            &quot;masked&quot;: True or False, # True if this parameter should be masked in the logs
            &quot;producer&quot;: &quot;A String&quot;, # The identifier of the node (TaskConfig/TriggerConfig) this parameter was produced by, if it is a transient param or a copy of an input param.
            &quot;searchable&quot;: True or False, # Searchable in the execution log or not.
          },
        ],
        &quot;integrationParametersInternal&quot;: { # LINT.IfChange This is the frontend version of WorkflowParameters. It&#x27;s exactly like the backend version except that instead of flattening protobuf parameters and treating every field and subfield of a protobuf parameter as a separate parameter, the fields/subfields of a protobuf parameter will be nested as &quot;children&quot; (see &#x27;children&#x27; field below) parameters of the parent parameter. Please refer to enterprise/crm/eventbus/proto/workflow_parameters.proto for more information about WorkflowParameters. # Optional. Parameters that are expected to be passed to the integration when an event is triggered. This consists of all the parameters that are expected in the integration execution. This gives the user the ability to provide default values, add information like PII and also provide data types of each parameter.
          &quot;parameters&quot;: [ # Parameters are a part of Event and can be used to communiticate between different tasks that are part of the same workflow execution.
            {
              &quot;attributes&quot;: { # Attributes are additional options that can be associated with each event property. For more information, see # Metadata information about the parameters.
                &quot;dataType&quot;: &quot;A String&quot;, # Things like URL, Email, Currency, Timestamp (rather than string, int64...)
                &quot;defaultValue&quot;: { # Used for define type for values. Currently supported value types include int, string, double, array, and any proto message. # Used to define defaults.
                  &quot;booleanValue&quot;: True or False,
                  &quot;doubleArray&quot;: {
                    &quot;values&quot;: [
                      3.14,
                    ],
                  },
                  &quot;doubleValue&quot;: 3.14,
                  &quot;intArray&quot;: {
                    &quot;values&quot;: [
                      &quot;A String&quot;,
                    ],
                  },
                  &quot;intValue&quot;: &quot;A String&quot;,
                  &quot;protoValue&quot;: {
                    &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
                  },
                  &quot;stringArray&quot;: {
                    &quot;values&quot;: [
                      &quot;A String&quot;,
                    ],
                  },
                  &quot;stringValue&quot;: &quot;A String&quot;,
                },
                &quot;isRequired&quot;: True or False, # Required for event execution. The validation will be done by the event bus when the event is triggered.
                &quot;isSearchable&quot;: True or False, # Used to indicate if a ParameterEntry should be converted to ParamIndexes for ST-Spanner full-text search. DEPRECATED: use searchable.
                &quot;logSettings&quot;: { # The LogSettings define the logging attributes for an event property. These attributes are used to map the property to the parameter in the log proto. Also used to define scrubbing/truncation behavior and PII information. # See
                  &quot;logFieldName&quot;: &quot;A String&quot;, # The name of corresponding logging field of the event property. If omitted, assumes the same name as the event property key.
                  &quot;seedPeriod&quot;: &quot;A String&quot;,
                  &quot;seedScope&quot;: &quot;A String&quot;,
                },
                &quot;masked&quot;: True or False, # True if this workflow parameter should be masked in the logs
                &quot;readOnly&quot;: True or False, # Used to indicate if the ParameterEntry is a read only field or not.
                &quot;searchable&quot;: &quot;A String&quot;,
                &quot;taskVisibility&quot;: [ # List of tasks that can view this property, if empty then all.
                  &quot;A String&quot;,
                ],
              },
              &quot;children&quot;: [ # Child parameters nested within this parameter. This field only applies to protobuf parameters
                # Object with schema name: EnterpriseCrmFrontendsEventbusProtoWorkflowParameterEntry
              ],
              &quot;containsLargeData&quot;: True or False, # Indicates whether this variable contains large data and need to be uploaded to Cloud Storage.
              &quot;dataType&quot;: &quot;A String&quot;, # The data type of the parameter.
              &quot;defaultValue&quot;: { # To support various types of parameter values. Next available id: 14 # Default values for the defined keys. Each value can either be string, int, double or any proto message or a serialized object.
                &quot;booleanArray&quot;: {
                  &quot;booleanValues&quot;: [
                    True or False,
                  ],
                },
                &quot;booleanValue&quot;: True or False,
                &quot;doubleArray&quot;: {
                  &quot;doubleValues&quot;: [
                    3.14,
                  ],
                },
                &quot;doubleValue&quot;: 3.14,
                &quot;intArray&quot;: {
                  &quot;intValues&quot;: [
                    &quot;A String&quot;,
                  ],
                },
                &quot;intValue&quot;: &quot;A String&quot;,
                &quot;jsonValue&quot;: &quot;A String&quot;,
                &quot;protoArray&quot;: {
                  &quot;protoValues&quot;: [
                    {
                      &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
                    },
                  ],
                },
                &quot;protoValue&quot;: {
                  &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
                },
                &quot;serializedObjectValue&quot;: {
                  &quot;objectValue&quot;: &quot;A String&quot;,
                },
                &quot;stringArray&quot;: {
                  &quot;stringValues&quot;: [
                    &quot;A String&quot;,
                  ],
                },
                &quot;stringValue&quot;: &quot;A String&quot;,
              },
              &quot;description&quot;: &quot;A String&quot;, # Optional. The description about the parameter
              &quot;inOutType&quot;: &quot;A String&quot;, # Specifies the input/output type for the parameter.
              &quot;isTransient&quot;: True or False, # Whether this parameter is a transient parameter.
              &quot;jsonSchema&quot;: &quot;A String&quot;, # This schema will be used to validate runtime JSON-typed values of this parameter.
              &quot;key&quot;: &quot;A String&quot;, # Key is used to retrieve the corresponding parameter value. This should be unique for a given fired event. These parameters must be predefined in the workflow definition.
              &quot;name&quot;: &quot;A String&quot;, # The name (without prefix) to be displayed in the UI for this parameter. E.g. if the key is &quot;foo.bar.myName&quot;, then the name would be &quot;myName&quot;.
              &quot;producedBy&quot;: { # Represents a node identifier (type + id). Next highest id: 3 # The identifier of the node (TaskConfig/TriggerConfig) this parameter was produced by, if it is a transient param or a copy of an input param.
                &quot;elementIdentifier&quot;: &quot;A String&quot;, # Configuration of the edge.
                &quot;elementType&quot;: &quot;A String&quot;, # Destination node where the edge ends. It can only be a task config.
              },
              &quot;producer&quot;: &quot;A String&quot;,
              &quot;protoDefName&quot;: &quot;A String&quot;, # The name of the protobuf type if the parameter has a protobuf data type.
              &quot;protoDefPath&quot;: &quot;A String&quot;, # If the data type is of type proto or proto array, this field needs to be populated with the fully qualified proto name. This message, for example, would be &quot;enterprise.crm.frontends.eventbus.proto.WorkflowParameterEntry&quot;.
              &quot;required&quot;: True or False,
            },
          ],
        },
        &quot;lastModifierEmail&quot;: &quot;A String&quot;, # Optional. The last modifier&#x27;s email address. Generated based on the End User Credentials/LOAS role of the user making the call.
        &quot;lockHolder&quot;: &quot;A String&quot;, # Optional. The edit lock holder&#x27;s email address. Generated based on the End User Credentials/LOAS role of the user making the call.
        &quot;name&quot;: &quot;A String&quot;, # Output only. Auto-generated primary key.
        &quot;origin&quot;: &quot;A String&quot;, # Optional. The origin that indicates where this integration is coming from.
        &quot;parentTemplateId&quot;: &quot;A String&quot;, # Optional. The id of the template which was used to create this integration_version.
        &quot;runAsServiceAccount&quot;: &quot;A String&quot;, # Optional. The run-as service account email, if set and auth config is not configured, that will be used to generate auth token to be used in Connector task, Rest caller task and Cloud function task.
        &quot;snapshotNumber&quot;: &quot;A String&quot;, # Output only. An increasing sequence that is set when a new snapshot is created. The last created snapshot can be identified by [workflow_name, org_id latest(snapshot_number)]. However, last created snapshot need not be same as the HEAD. So users should always use &quot;HEAD&quot; tag to identify the head.
        &quot;state&quot;: &quot;A String&quot;, # Output only. User should not set it as an input.
        &quot;status&quot;: &quot;A String&quot;, # Output only. Generated by eventbus. User should not set it as an input.
        &quot;taskConfigs&quot;: [ # Optional. Task configuration for the integration. It&#x27;s optional, but the integration doesn&#x27;t do anything without task_configs.
          { # The task configuration details. This is not the implementation of Task. There might be multiple TaskConfigs for the same Task.
            &quot;conditionalFailurePolicies&quot;: { # Conditional task failur retry strategies # Optional. The list of conditional failure policies that will be applied to the task in order.
              &quot;defaultFailurePolicy&quot;: { # Policy that defines the task retry logic and failure type. If no FailurePolicy is defined for a task, all its dependent tasks will not be executed (i.e, a `retry_strategy` of NONE will be applied). # The default failure policy to be applied if no conditional failure policy matches.
                &quot;condition&quot;: &quot;A String&quot;, # Optional. The string condition that will be evaluated to determine if the task should be retried with this failure policy.
                &quot;intervalTime&quot;: &quot;A String&quot;, # Required if retry_strategy is FIXED_INTERVAL or LINEAR/EXPONENTIAL_BACKOFF/RESTART_INTEGRATION_WITH_BACKOFF. Defines the initial interval in seconds for backoff.
                &quot;maxRetries&quot;: 42, # Required if retry_strategy is FIXED_INTERVAL or LINEAR/EXPONENTIAL_BACKOFF/RESTART_INTEGRATION_WITH_BACKOFF. Defines the number of times the task will be retried if failed.
                &quot;retryStrategy&quot;: &quot;A String&quot;, # Defines what happens to the task upon failure.
              },
              &quot;failurePolicies&quot;: [ # The list of failure policies that will be applied to the task in order.
                { # Policy that defines the task retry logic and failure type. If no FailurePolicy is defined for a task, all its dependent tasks will not be executed (i.e, a `retry_strategy` of NONE will be applied).
                  &quot;condition&quot;: &quot;A String&quot;, # Optional. The string condition that will be evaluated to determine if the task should be retried with this failure policy.
                  &quot;intervalTime&quot;: &quot;A String&quot;, # Required if retry_strategy is FIXED_INTERVAL or LINEAR/EXPONENTIAL_BACKOFF/RESTART_INTEGRATION_WITH_BACKOFF. Defines the initial interval in seconds for backoff.
                  &quot;maxRetries&quot;: 42, # Required if retry_strategy is FIXED_INTERVAL or LINEAR/EXPONENTIAL_BACKOFF/RESTART_INTEGRATION_WITH_BACKOFF. Defines the number of times the task will be retried if failed.
                  &quot;retryStrategy&quot;: &quot;A String&quot;, # Defines what happens to the task upon failure.
                },
              ],
            },
            &quot;description&quot;: &quot;A String&quot;, # Optional. User-provided description intended to give additional business context about the task.
            &quot;displayName&quot;: &quot;A String&quot;, # Optional. User-provided label that is attached to this TaskConfig in the UI.
            &quot;errorCatcherId&quot;: &quot;A String&quot;, # Optional. Optional Error catcher id of the error catch flow which will be executed when execution error happens in the task
            &quot;externalTaskType&quot;: &quot;A String&quot;, # Optional. External task type of the task
            &quot;failurePolicy&quot;: { # Policy that defines the task retry logic and failure type. If no FailurePolicy is defined for a task, all its dependent tasks will not be executed (i.e, a `retry_strategy` of NONE will be applied). # Optional. Determines the number of times the task will be retried on failure and with what retry strategy. This is applicable for asynchronous calls to Eventbus alone (Post To Queue, Schedule etc.).
              &quot;condition&quot;: &quot;A String&quot;, # Optional. The string condition that will be evaluated to determine if the task should be retried with this failure policy.
              &quot;intervalTime&quot;: &quot;A String&quot;, # Required if retry_strategy is FIXED_INTERVAL or LINEAR/EXPONENTIAL_BACKOFF/RESTART_INTEGRATION_WITH_BACKOFF. Defines the initial interval in seconds for backoff.
              &quot;maxRetries&quot;: 42, # Required if retry_strategy is FIXED_INTERVAL or LINEAR/EXPONENTIAL_BACKOFF/RESTART_INTEGRATION_WITH_BACKOFF. Defines the number of times the task will be retried if failed.
              &quot;retryStrategy&quot;: &quot;A String&quot;, # Defines what happens to the task upon failure.
            },
            &quot;jsonValidationOption&quot;: &quot;A String&quot;, # Optional. If set, overrides the option configured in the Task implementation class.
            &quot;nextTasks&quot;: [ # Optional. The set of tasks that are next in line to be executed as per the execution graph defined for the parent event, specified by `event_config_id`. Each of these next tasks are executed only if the condition associated with them evaluates to true.
              { # The task that is next in line to be executed, if the condition specified evaluated to true.
                &quot;condition&quot;: &quot;A String&quot;, # Standard filter expression for this task to become an eligible next task.
                &quot;description&quot;: &quot;A String&quot;, # User-provided description intended to give additional business context about the task.
                &quot;displayName&quot;: &quot;A String&quot;, # User-provided label that is attached to this edge in the UI.
                &quot;taskConfigId&quot;: &quot;A String&quot;, # ID of the next task.
                &quot;taskId&quot;: &quot;A String&quot;, # Task number of the next task.
              },
            ],
            &quot;nextTasksExecutionPolicy&quot;: &quot;A String&quot;, # Optional. The policy dictating the execution of the next set of tasks for the current task.
            &quot;parameters&quot;: { # Optional. The customized parameters the user can pass to this task.
              &quot;a_key&quot;: { # This message is used for processing and persisting (when applicable) key value pair parameters for each event in the event bus. Next available id: 4
                &quot;key&quot;: &quot;A String&quot;, # Key is used to retrieve the corresponding parameter value. This should be unique for a given fired event. These parameters must be predefined in the integration definition.
                &quot;masked&quot;: True or False, # True if this parameter should be masked in the logs
                &quot;value&quot;: { # The type of the parameter. # Values for the defined keys. Each value can either be string, int, double or any proto message.
                  &quot;booleanArray&quot;: { # This message only contains a field of boolean array. # Boolean Array.
                    &quot;booleanValues&quot;: [ # Boolean array.
                      True or False,
                    ],
                  },
                  &quot;booleanValue&quot;: True or False, # Boolean.
                  &quot;doubleArray&quot;: { # This message only contains a field of double number array. # Double Number Array.
                    &quot;doubleValues&quot;: [ # Double number array.
                      3.14,
                    ],
                  },
                  &quot;doubleValue&quot;: 3.14, # Double Number.
                  &quot;intArray&quot;: { # This message only contains a field of integer array. # Integer Array.
                    &quot;intValues&quot;: [ # Integer array.
                      &quot;A String&quot;,
                    ],
                  },
                  &quot;intValue&quot;: &quot;A String&quot;, # Integer.
                  &quot;jsonValue&quot;: &quot;A String&quot;, # Json.
                  &quot;stringArray&quot;: { # This message only contains a field of string array. # String Array.
                    &quot;stringValues&quot;: [ # String array.
                      &quot;A String&quot;,
                    ],
                  },
                  &quot;stringValue&quot;: &quot;A String&quot;, # String.
                },
              },
            },
            &quot;position&quot;: { # Configuration detail of coordinate, it used for UI # Optional. Informs the front-end application where to draw this error catcher config on the UI.
              &quot;x&quot;: 42, # Required. X axis of the coordinate
              &quot;y&quot;: 42, # Required. Y axis of the coordinate
            },
            &quot;successPolicy&quot;: { # Policy that dictates the behavior for the task after it completes successfully. # Optional. Determines what action to take upon successful task completion.
              &quot;finalState&quot;: &quot;A String&quot;, # State to which the execution snapshot status will be set if the task succeeds.
            },
            &quot;synchronousCallFailurePolicy&quot;: { # Policy that defines the task retry logic and failure type. If no FailurePolicy is defined for a task, all its dependent tasks will not be executed (i.e, a `retry_strategy` of NONE will be applied). # Optional. Determines the number of times the task will be retried on failure and with what retry strategy. This is applicable for synchronous calls to Eventbus alone (Post).
              &quot;condition&quot;: &quot;A String&quot;, # Optional. The string condition that will be evaluated to determine if the task should be retried with this failure policy.
              &quot;intervalTime&quot;: &quot;A String&quot;, # Required if retry_strategy is FIXED_INTERVAL or LINEAR/EXPONENTIAL_BACKOFF/RESTART_INTEGRATION_WITH_BACKOFF. Defines the initial interval in seconds for backoff.
              &quot;maxRetries&quot;: 42, # Required if retry_strategy is FIXED_INTERVAL or LINEAR/EXPONENTIAL_BACKOFF/RESTART_INTEGRATION_WITH_BACKOFF. Defines the number of times the task will be retried if failed.
              &quot;retryStrategy&quot;: &quot;A String&quot;, # Defines what happens to the task upon failure.
            },
            &quot;task&quot;: &quot;A String&quot;, # Optional. The name for the task.
            &quot;taskExecutionStrategy&quot;: &quot;A String&quot;, # Optional. The policy dictating the execution strategy of this task.
            &quot;taskId&quot;: &quot;A String&quot;, # Required. The identifier of this task within its parent event config, specified by the client. This should be unique among all the tasks belong to the same event config. We use this field as the identifier to find next tasks (via field `next_tasks.task_id`).
            &quot;taskTemplate&quot;: &quot;A String&quot;, # Optional. Used to define task-template name if task is of type task-template
          },
        ],
        &quot;taskConfigsInternal&quot;: [ # Optional. Task configuration for the integration. It&#x27;s optional, but the integration doesn&#x27;t do anything without task_configs.
          { # The task configuration details. This is not the implementation of Task. There might be multiple TaskConfigs for the same Task.
            &quot;alertConfigs&quot;: [ # Alert configurations on error rate, warning rate, number of runs, durations, etc.
              { # Message to be used to configure alerting in the {@code TaskConfig} protos for tasks in an event.
                &quot;aggregationPeriod&quot;: &quot;A String&quot;, # The period over which the metric value should be aggregated and evaluated. Format is , where integer should be a positive integer and unit should be one of (s,m,h,d,w) meaning (second, minute, hour, day, week).
                &quot;alertDisabled&quot;: True or False, # Set to false by default. When set to true, the metrics are not aggregated or pushed to Monarch for this workflow alert.
                &quot;alertName&quot;: &quot;A String&quot;, # A name to identify this alert. This will be displayed in the alert subject. If set, this name should be unique in within the scope of the containing workflow.
                &quot;clientId&quot;: &quot;A String&quot;, # Client associated with this alert configuration. Must be a client enabled in one of the containing workflow&#x27;s triggers.
                &quot;durationThresholdMs&quot;: &quot;A String&quot;, # Should be specified only for TASK_AVERAGE_DURATION and TASK_PERCENTILE_DURATION metrics. This member should be used to specify what duration value the metrics should exceed for the alert to trigger.
                &quot;errorEnumList&quot;: { # List of error enums for alerts.
                  &quot;enumStrings&quot;: [
                    &quot;A String&quot;,
                  ],
                  &quot;filterType&quot;: &quot;A String&quot;,
                },
                &quot;metricType&quot;: &quot;A String&quot;,
                &quot;numAggregationPeriods&quot;: 42, # For how many contiguous aggregation periods should the expected min or max be violated for the alert to be fired.
                &quot;onlyFinalAttempt&quot;: True or False, # Only count final task attempts, not retries.
                &quot;playbookUrl&quot;: &quot;A String&quot;, # Link to a playbook for resolving the issue that triggered this alert.
                &quot;thresholdType&quot;: &quot;A String&quot;, # The threshold type for which this alert is being configured. If value falls below expected_min or exceeds expected_max, an alert will be fired.
                &quot;thresholdValue&quot;: { # The threshold value of the metric, above or below which the alert should be triggered. See EventAlertConfig or TaskAlertConfig for the different alert metric types in each case. For the *RATE metrics, one or both of these fields may be set. Zero is the default value and can be left at that. For *PERCENTILE_DURATION metrics, one or both of these fields may be set, and also, the duration threshold value should be specified in the threshold_duration_ms member below. For *AVERAGE_DURATION metrics, these fields should not be set at all. A different member, threshold_duration_ms, must be set in the EventAlertConfig or the TaskAlertConfig. # The metric value, above or below which the alert should be triggered.
                  &quot;absolute&quot;: &quot;A String&quot;,
                  &quot;percentage&quot;: 42,
                },
                &quot;warningEnumList&quot;: { # List of error enums for alerts.
                  &quot;enumStrings&quot;: [
                    &quot;A String&quot;,
                  ],
                  &quot;filterType&quot;: &quot;A String&quot;,
                },
              },
            ],
            &quot;conditionalFailurePolicies&quot;: { # Optional. Determines the number of times the task will be retried on failure and with what retry strategy. This is applicable for synchronous calls to Eventbus alone (Post).
              &quot;defaultFailurePolicy&quot;: { # Policy that defines the task retry logic and failure type. If no FailurePolicy is defined for a task, all its dependent tasks will not be executed (i.e, a `retry_strategy` of NONE will be applied). # The default failure policy to be applied if no conditional failure policy matches
                &quot;intervalInSeconds&quot;: &quot;A String&quot;, # Required if retry_strategy is FIXED_INTERVAL or LINEAR/EXPONENTIAL_BACKOFF/RESTART_WORKFLOW_WITH_BACKOFF. Defines the initial interval for backoff.
                &quot;maxNumRetries&quot;: 42, # Required if retry_strategy is FIXED_INTERVAL or LINEAR/EXPONENTIAL_BACKOFF/RESTART_WORKFLOW_WITH_BACKOFF. Defines the number of times the task will be retried if failed.
                &quot;retryCondition&quot;: &quot;A String&quot;, # Optional. The retry condition that will be evaluated for this failure policy with the corresponding retry strategy.
                &quot;retryStrategy&quot;: &quot;A String&quot;, # Defines what happens to the task upon failure.
              },
              &quot;failurePolicies&quot;: [ # The list of failure policies that will be applied to the task in order.
                { # Policy that defines the task retry logic and failure type. If no FailurePolicy is defined for a task, all its dependent tasks will not be executed (i.e, a `retry_strategy` of NONE will be applied).
                  &quot;intervalInSeconds&quot;: &quot;A String&quot;, # Required if retry_strategy is FIXED_INTERVAL or LINEAR/EXPONENTIAL_BACKOFF/RESTART_WORKFLOW_WITH_BACKOFF. Defines the initial interval for backoff.
                  &quot;maxNumRetries&quot;: 42, # Required if retry_strategy is FIXED_INTERVAL or LINEAR/EXPONENTIAL_BACKOFF/RESTART_WORKFLOW_WITH_BACKOFF. Defines the number of times the task will be retried if failed.
                  &quot;retryCondition&quot;: &quot;A String&quot;, # Optional. The retry condition that will be evaluated for this failure policy with the corresponding retry strategy.
                  &quot;retryStrategy&quot;: &quot;A String&quot;, # Defines what happens to the task upon failure.
                },
              ],
            },
            &quot;createTime&quot;: &quot;A String&quot;, # Auto-generated.
            &quot;creatorEmail&quot;: &quot;A String&quot;, # The creator&#x27;s email address. Auto-generated from the user&#x27;s email.
            &quot;description&quot;: &quot;A String&quot;, # User-provided description intended to give more business context about the task.
            &quot;disableStrictTypeValidation&quot;: True or False, # If this config contains a TypedTask, allow validation to succeed if an input is read from the output of another TypedTask whose output type is declared as a superclass of the requested input type. For instance, if the previous task declares an output of type Message, any task with this flag enabled will pass validation when attempting to read any proto Message type from the resultant Event parameter.
            &quot;errorCatcherId&quot;: &quot;A String&quot;, # Optional Error catcher id of the error catch flow which will be executed when execution error happens in the task
            &quot;externalTaskType&quot;: &quot;A String&quot;,
            &quot;failurePolicy&quot;: { # Policy that defines the task retry logic and failure type. If no FailurePolicy is defined for a task, all its dependent tasks will not be executed (i.e, a `retry_strategy` of NONE will be applied). # Optional. Determines the number of times the task will be retried on failure and with what retry strategy. This is applicable for asynchronous calls to Eventbus alone (Post To Queue, Schedule etc.).
              &quot;intervalInSeconds&quot;: &quot;A String&quot;, # Required if retry_strategy is FIXED_INTERVAL or LINEAR/EXPONENTIAL_BACKOFF/RESTART_WORKFLOW_WITH_BACKOFF. Defines the initial interval for backoff.
              &quot;maxNumRetries&quot;: 42, # Required if retry_strategy is FIXED_INTERVAL or LINEAR/EXPONENTIAL_BACKOFF/RESTART_WORKFLOW_WITH_BACKOFF. Defines the number of times the task will be retried if failed.
              &quot;retryCondition&quot;: &quot;A String&quot;, # Optional. The retry condition that will be evaluated for this failure policy with the corresponding retry strategy.
              &quot;retryStrategy&quot;: &quot;A String&quot;, # Defines what happens to the task upon failure.
            },
            &quot;incomingEdgeCount&quot;: 42, # The number of edges leading into this TaskConfig.
            &quot;jsonValidationOption&quot;: &quot;A String&quot;, # If set, overrides the option configured in the Task implementation class.
            &quot;label&quot;: &quot;A String&quot;, # User-provided label that is attached to this TaskConfig in the UI.
            &quot;lastModifiedTime&quot;: &quot;A String&quot;, # Auto-generated.
            &quot;nextTasks&quot;: [ # The set of tasks that are next in line to be executed as per the execution graph defined for the parent event, specified by `event_config_id`. Each of these next tasks are executed only if the condition associated with them evaluates to true.
              { # The task that is next in line to be executed, if the condition specified evaluated to true.
                &quot;combinedConditions&quot;: [ # Combined condition for this task to become an eligible next task. Each of these combined_conditions are joined with logical OR. DEPRECATED: use `condition`
                  { # This message recursively combines constituent conditions using logical AND.
                    &quot;conditions&quot;: [ # A set of individual constituent conditions.
                      { # Condition that uses `operator` to evaluate the key against the value.
                        &quot;eventPropertyKey&quot;: &quot;A String&quot;, # Key that&#x27;s evaluated against the `value`. Please note the data type of the runtime value associated with the key should match the data type of `value`, else an IllegalArgumentException is thrown.
                        &quot;operator&quot;: &quot;A String&quot;, # Operator used to evaluate the condition. Please note that an operator with an inappropriate key/value operand will result in IllegalArgumentException, e.g. CONTAINS with boolean key/value pair.
                        &quot;value&quot;: { # Used for define type for values. Currently supported value types include int, string, double, array, and any proto message. # Value that&#x27;s checked for the key.
                          &quot;booleanValue&quot;: True or False,
                          &quot;doubleArray&quot;: {
                            &quot;values&quot;: [
                              3.14,
                            ],
                          },
                          &quot;doubleValue&quot;: 3.14,
                          &quot;intArray&quot;: {
                            &quot;values&quot;: [
                              &quot;A String&quot;,
                            ],
                          },
                          &quot;intValue&quot;: &quot;A String&quot;,
                          &quot;protoValue&quot;: {
                            &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
                          },
                          &quot;stringArray&quot;: {
                            &quot;values&quot;: [
                              &quot;A String&quot;,
                            ],
                          },
                          &quot;stringValue&quot;: &quot;A String&quot;,
                        },
                      },
                    ],
                  },
                ],
                &quot;condition&quot;: &quot;A String&quot;, # Standard filter expression for this task to become an eligible next task.
                &quot;description&quot;: &quot;A String&quot;, # User-provided description intended to give more business context about the next task edge or condition.
                &quot;label&quot;: &quot;A String&quot;, # User-provided label that is attached to this edge in the UI.
                &quot;taskConfigId&quot;: &quot;A String&quot;, # ID of the next task.
                &quot;taskNumber&quot;: &quot;A String&quot;, # Task number of the next task.
              },
            ],
            &quot;nextTasksExecutionPolicy&quot;: &quot;A String&quot;, # The policy dictating the execution of the next set of tasks for the current task.
            &quot;parameters&quot;: { # The customized parameters the user can pass to this task.
              &quot;a_key&quot;: { # Key-value pair of EventBus parameters.
                &quot;dataType&quot;: &quot;A String&quot;, # Explicitly getting the type of the parameter.
                &quot;key&quot;: &quot;A String&quot;, # Key is used to retrieve the corresponding parameter value. This should be unique for a given fired event. These parameters must be predefined in the workflow definition.
                &quot;masked&quot;: True or False, # True if this parameter should be masked in the logs
                &quot;value&quot;: { # To support various types of parameter values. Next available id: 14 # Values for the defined keys. Each value can either be string, int, double or any proto message.
                  &quot;booleanArray&quot;: {
                    &quot;booleanValues&quot;: [
                      True or False,
                    ],
                  },
                  &quot;booleanValue&quot;: True or False,
                  &quot;doubleArray&quot;: {
                    &quot;doubleValues&quot;: [
                      3.14,
                    ],
                  },
                  &quot;doubleValue&quot;: 3.14,
                  &quot;intArray&quot;: {
                    &quot;intValues&quot;: [
                      &quot;A String&quot;,
                    ],
                  },
                  &quot;intValue&quot;: &quot;A String&quot;,
                  &quot;jsonValue&quot;: &quot;A String&quot;,
                  &quot;protoArray&quot;: {
                    &quot;protoValues&quot;: [
                      {
                        &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
                      },
                    ],
                  },
                  &quot;protoValue&quot;: {
                    &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
                  },
                  &quot;serializedObjectValue&quot;: {
                    &quot;objectValue&quot;: &quot;A String&quot;,
                  },
                  &quot;stringArray&quot;: {
                    &quot;stringValues&quot;: [
                      &quot;A String&quot;,
                    ],
                  },
                  &quot;stringValue&quot;: &quot;A String&quot;,
                },
              },
            },
            &quot;position&quot;: { # Represents two-dimensional positions. # Optional. Informs the front-end application where to draw this task config on the UI.
              &quot;x&quot;: 42,
              &quot;y&quot;: 42,
            },
            &quot;precondition&quot;: &quot;A String&quot;, # Optional. Standard filter expression evaluated before execution. Independent of other conditions and tasks. Can be used to enable rollout. e.g. &quot;rollout(5)&quot; will only allow 5% of incoming traffic to task.
            &quot;preconditionLabel&quot;: &quot;A String&quot;, # Optional. User-provided label that is attached to precondition in the UI.
            &quot;rollbackStrategy&quot;: { # Next available id: 4 # Optional. Contains information about what needs to be done upon failure (either a permanent error or after it has been retried too many times).
              &quot;parameters&quot;: { # LINT.IfChange This message is used for processing and persisting (when applicable) key value pair parameters for each event in the event bus. Please see # Optional. The customized parameters the user can pass to this task.
                &quot;parameters&quot;: [ # Parameters are a part of Event and can be used to communicate between different tasks that are part of the same workflow execution.
                  { # Key-value pair of EventBus parameters.
                    &quot;dataType&quot;: &quot;A String&quot;, # Explicitly getting the type of the parameter.
                    &quot;key&quot;: &quot;A String&quot;, # Key is used to retrieve the corresponding parameter value. This should be unique for a given fired event. These parameters must be predefined in the workflow definition.
                    &quot;masked&quot;: True or False, # True if this parameter should be masked in the logs
                    &quot;value&quot;: { # To support various types of parameter values. Next available id: 14 # Values for the defined keys. Each value can either be string, int, double or any proto message.
                      &quot;booleanArray&quot;: {
                        &quot;booleanValues&quot;: [
                          True or False,
                        ],
                      },
                      &quot;booleanValue&quot;: True or False,
                      &quot;doubleArray&quot;: {
                        &quot;doubleValues&quot;: [
                          3.14,
                        ],
                      },
                      &quot;doubleValue&quot;: 3.14,
                      &quot;intArray&quot;: {
                        &quot;intValues&quot;: [
                          &quot;A String&quot;,
                        ],
                      },
                      &quot;intValue&quot;: &quot;A String&quot;,
                      &quot;jsonValue&quot;: &quot;A String&quot;,
                      &quot;protoArray&quot;: {
                        &quot;protoValues&quot;: [
                          {
                            &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
                          },
                        ],
                      },
                      &quot;protoValue&quot;: {
                        &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
                      },
                      &quot;serializedObjectValue&quot;: {
                        &quot;objectValue&quot;: &quot;A String&quot;,
                      },
                      &quot;stringArray&quot;: {
                        &quot;stringValues&quot;: [
                          &quot;A String&quot;,
                        ],
                      },
                      &quot;stringValue&quot;: &quot;A String&quot;,
                    },
                  },
                ],
              },
              &quot;rollbackTaskImplementationClassName&quot;: &quot;A String&quot;, # Required. This is the name of the task that needs to be executed upon rollback of this task.
              &quot;taskNumbersToRollback&quot;: [ # Required. These are the tasks numbers of the tasks whose `rollback_strategy.rollback_task_implementation_class_name` needs to be executed upon failure of this task.
                &quot;A String&quot;,
              ],
            },
            &quot;successPolicy&quot;: { # Policy that dictates the behavior for the task after it completes successfully. # Determines what action to take upon successful task completion.
              &quot;finalState&quot;: &quot;A String&quot;, # State to which the execution snapshot status will be set if the task succeeds.
            },
            &quot;synchronousCallFailurePolicy&quot;: { # Policy that defines the task retry logic and failure type. If no FailurePolicy is defined for a task, all its dependent tasks will not be executed (i.e, a `retry_strategy` of NONE will be applied). # Optional. Determines the number of times the task will be retried on failure and with what retry strategy. This is applicable for synchronous calls to Eventbus alone (Post).
              &quot;intervalInSeconds&quot;: &quot;A String&quot;, # Required if retry_strategy is FIXED_INTERVAL or LINEAR/EXPONENTIAL_BACKOFF/RESTART_WORKFLOW_WITH_BACKOFF. Defines the initial interval for backoff.
              &quot;maxNumRetries&quot;: 42, # Required if retry_strategy is FIXED_INTERVAL or LINEAR/EXPONENTIAL_BACKOFF/RESTART_WORKFLOW_WITH_BACKOFF. Defines the number of times the task will be retried if failed.
              &quot;retryCondition&quot;: &quot;A String&quot;, # Optional. The retry condition that will be evaluated for this failure policy with the corresponding retry strategy.
              &quot;retryStrategy&quot;: &quot;A String&quot;, # Defines what happens to the task upon failure.
            },
            &quot;taskEntity&quot;: { # Contains a task&#x27;s metadata and associated information. Next available id: 7 # Copy of the task entity that this task config is an instance of.
              &quot;disabledForVpcSc&quot;: True or False, # True if the task has conflict with vpcsc
              &quot;metadata&quot;: { # TaskMetadata are attributes that are associated to every common Task we have. # Metadata inclueds the task name, author and so on.
                &quot;activeTaskName&quot;: &quot;A String&quot;, # The new task name to replace the current task if it is deprecated. Otherwise, it is the same as the current task name.
                &quot;admins&quot;: [
                  { # Admins are owners of a Task, and have all permissions on a particular task identified by the task name. By default, Eventbus periodically scans all task metadata and syncs (adds) any new admins defined here to Zanzibar.
                    &quot;googleGroupEmail&quot;: &quot;A String&quot;,
                    &quot;userEmail&quot;: &quot;A String&quot;,
                  },
                ],
                &quot;category&quot;: &quot;A String&quot;,
                &quot;codeSearchLink&quot;: &quot;A String&quot;, # The Code Search link to the Task Java file.
                &quot;defaultJsonValidationOption&quot;: &quot;A String&quot;, # Controls whether JSON workflow parameters are validated against provided schemas before and/or after this task&#x27;s execution.
                &quot;defaultSpec&quot;: &quot;A String&quot;, # Contains the initial configuration of the task with default values set. For now, The string should be compatible to an ASCII-proto format.
                &quot;description&quot;: &quot;A String&quot;, # In a few sentences, describe the purpose and usage of the task.
                &quot;descriptiveName&quot;: &quot;A String&quot;, # The string name to show on the task list on the Workflow editor screen. This should be a very short, one to two words name for the task. (e.g. &quot;Send Mail&quot;)
                &quot;docMarkdown&quot;: &quot;A String&quot;, # Snippet of markdown documentation to embed in the RHP for this task.
                &quot;externalCategory&quot;: &quot;A String&quot;,
                &quot;externalCategorySequence&quot;: 42, # Sequence with which the task in specific category to be displayed in task discovery panel for external users.
                &quot;externalDocHtml&quot;: &quot;A String&quot;, # External-facing documention embedded in the RHP for this task.
                &quot;externalDocLink&quot;: &quot;A String&quot;, # Doc link for external-facing documentation (separate from g3doc).
                &quot;externalDocMarkdown&quot;: &quot;A String&quot;, # DEPRECATED: Use external_doc_html.
                &quot;g3DocLink&quot;: &quot;A String&quot;, # URL to the associated G3 Doc for the task if available
                &quot;iconLink&quot;: &quot;A String&quot;, # URL to gstatic image icon for this task. This icon shows up on the task list panel along with the task name in the Workflow Editor screen. Use the 24p, 2x, gray color icon image format.
                &quot;isDeprecated&quot;: True or False, # The deprecation status of the current task. Default value is false;
                &quot;name&quot;: &quot;A String&quot;, # The actual class name or the annotated name of the task. Task Author should initialize this field with value from the getName() method of the Task class.
                &quot;standaloneExternalDocHtml&quot;: &quot;A String&quot;, # External-facing documention for standalone IP in pantheon embedded in the RHP for this task. Non null only if different from external_doc_html
                &quot;status&quot;: &quot;A String&quot;, # Allows author to indicate if the task is ready to use or not. If not set, then it will default to INACTIVE.
                &quot;system&quot;: &quot;A String&quot;,
                &quot;tags&quot;: [ # A set of tags that pertain to a particular task. This can be used to improve the searchability of tasks with several names (&quot;REST Caller&quot; vs. &quot;Call REST Endpoint&quot;) or to help users find tasks based on related words.
                  &quot;A String&quot;,
                ],
              },
              &quot;paramSpecs&quot;: { # Declarations for inputs/outputs for a TypedTask. This is also associated with the METADATA mask.
                &quot;parameters&quot;: [
                  { # Key-value pair of EventBus task parameters. Next id: 13
                    &quot;className&quot;: &quot;A String&quot;, # The FQCN of the Java object this represents. A string, for example, would be &quot;java.lang.String&quot;. If this is &quot;java.lang.Object&quot;, the parameter can be of any type.
                    &quot;collectionElementClassName&quot;: &quot;A String&quot;, # If it is a collection of objects, this would be the FCQN of every individual element in the collection. If this is &quot;java.lang.Object&quot;, the parameter is a collection of any type.
                    &quot;config&quot;: { # Optional fields, such as help text and other useful info.
                      &quot;descriptivePhrase&quot;: &quot;A String&quot;, # A short phrase to describe what this parameter contains.
                      &quot;helpText&quot;: &quot;A String&quot;, # Detailed help text for this parameter containing information not provided elsewhere. For example, instructions on how to migrate from a deprecated parameter.
                      &quot;hideDefaultValue&quot;: True or False, # Whether the default value is hidden in the UI.
                      &quot;inputDisplayOption&quot;: &quot;A String&quot;,
                      &quot;isHidden&quot;: True or False, # Whether this field is hidden in the UI.
                      &quot;label&quot;: &quot;A String&quot;, # A user-friendly label for the parameter.
                      &quot;parameterNameOption&quot;: &quot;A String&quot;,
                      &quot;subSectionLabel&quot;: &quot;A String&quot;, # A user-friendly label for subSection under which the parameter will be displayed.
                      &quot;uiPlaceholderText&quot;: &quot;A String&quot;, # Placeholder text which will appear in the UI input form for this parameter.
                    },
                    &quot;dataType&quot;: &quot;A String&quot;, # The data type of the parameter.
                    &quot;defaultValue&quot;: { # To support various types of parameter values. Next available id: 14 # Default values for the defined keys. Each value can either be string, int, double or any proto message or a serialized object.
                      &quot;booleanArray&quot;: {
                        &quot;booleanValues&quot;: [
                          True or False,
                        ],
                      },
                      &quot;booleanValue&quot;: True or False,
                      &quot;doubleArray&quot;: {
                        &quot;doubleValues&quot;: [
                          3.14,
                        ],
                      },
                      &quot;doubleValue&quot;: 3.14,
                      &quot;intArray&quot;: {
                        &quot;intValues&quot;: [
                          &quot;A String&quot;,
                        ],
                      },
                      &quot;intValue&quot;: &quot;A String&quot;,
                      &quot;jsonValue&quot;: &quot;A String&quot;,
                      &quot;protoArray&quot;: {
                        &quot;protoValues&quot;: [
                          {
                            &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
                          },
                        ],
                      },
                      &quot;protoValue&quot;: {
                        &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
                      },
                      &quot;serializedObjectValue&quot;: {
                        &quot;objectValue&quot;: &quot;A String&quot;,
                      },
                      &quot;stringArray&quot;: {
                        &quot;stringValues&quot;: [
                          &quot;A String&quot;,
                        ],
                      },
                      &quot;stringValue&quot;: &quot;A String&quot;,
                    },
                    &quot;isDeprecated&quot;: True or False, # If set, this entry is deprecated, so further use of this parameter should be prohibited.
                    &quot;isOutput&quot;: True or False,
                    &quot;jsonSchema&quot;: &quot;A String&quot;, # If the data_type is JSON_VALUE, then this will define its schema.
                    &quot;key&quot;: &quot;A String&quot;, # Key is used to retrieve the corresponding parameter value. This should be unique for a given task. These parameters must be predefined in the workflow definition.
                    &quot;protoDef&quot;: { # Populated if this represents a proto or proto array.
                      &quot;fullName&quot;: &quot;A String&quot;, # The fully-qualified proto name. This message, for example, would be &quot;enterprise.crm.eventbus.proto.ParamSpecEntry.ProtoDefinition&quot;.
                      &quot;path&quot;: &quot;A String&quot;, # Path to the proto file that contains the message type&#x27;s definition.
                    },
                    &quot;required&quot;: True or False, # If set, the user must provide an input value for this parameter.
                    &quot;validationRule&quot;: { # Rule used to validate inputs (individual values and collection elements) for this parameter.
                      &quot;doubleRange&quot;: { # Range used to validate doubles and floats.
                        &quot;max&quot;: 3.14, # The inclusive maximum of the acceptable range.
                        &quot;min&quot;: 3.14, # The inclusive minimum of the acceptable range.
                      },
                      &quot;intRange&quot;: { # Range used to validate longs and ints.
                        &quot;max&quot;: &quot;A String&quot;, # The inclusive maximum of the acceptable range.
                        &quot;min&quot;: &quot;A String&quot;, # The inclusive minimum of the acceptable range.
                      },
                      &quot;stringRegex&quot;: { # Rule used to validate strings.
                        &quot;exclusive&quot;: True or False, # Whether the regex matcher is applied exclusively (if true, matching values will be rejected).
                        &quot;regex&quot;: &quot;A String&quot;, # The regex applied to the input value(s).
                      },
                    },
                  },
                ],
              },
              &quot;stats&quot;: { # Stats for the requested dimensions: QPS, duration, and error/warning rate # Deprecated - statistics from the Monarch query.
                &quot;dimensions&quot;: { # Dimensions that these stats have been aggregated on.
                  &quot;clientId&quot;: &quot;A String&quot;,
                  &quot;enumFilterType&quot;: &quot;A String&quot;, # Whether to include or exclude the enums matching the regex.
                  &quot;errorEnumString&quot;: &quot;A String&quot;,
                  &quot;retryAttempt&quot;: &quot;A String&quot;,
                  &quot;taskName&quot;: &quot;A String&quot;,
                  &quot;taskNumber&quot;: &quot;A String&quot;,
                  &quot;triggerId&quot;: &quot;A String&quot;, # Stats have been or will be aggregated on set fields for any semantically-meaningful combination.
                  &quot;warningEnumString&quot;: &quot;A String&quot;,
                  &quot;workflowId&quot;: &quot;A String&quot;,
                  &quot;workflowName&quot;: &quot;A String&quot;,
                },
                &quot;durationInSeconds&quot;: 3.14, # Average duration in seconds.
                &quot;errorRate&quot;: 3.14, # Average error rate.
                &quot;qps&quot;: 3.14, # Queries per second.
                &quot;warningRate&quot;: 3.14, # Average warning rate.
              },
              &quot;taskType&quot;: &quot;A String&quot;, # Defines the type of the task
              &quot;uiConfig&quot;: { # Task authors would use this type to configure the UI for a particular task by specifying what UI config modules should be included to compose the UI. Learn more about config module framework: # UI configuration for this task Also associated with the METADATA mask.
                &quot;taskUiModuleConfigs&quot;: [ # Configurations of included config modules.
                  { # Task author would use this type to configure a config module.
                    &quot;moduleId&quot;: &quot;A String&quot;, # ID of the config module.
                  },
                ],
              },
            },
            &quot;taskExecutionStrategy&quot;: &quot;A String&quot;, # The policy dictating the execution strategy of this task.
            &quot;taskName&quot;: &quot;A String&quot;, # The name for the task.
            &quot;taskNumber&quot;: &quot;A String&quot;, # REQUIRED: the identifier of this task within its parent event config, specified by the client. This should be unique among all the tasks belong to the same event config. We use this field as the identifier to find next tasks (via field `next_tasks.task_number`).
            &quot;taskSpec&quot;: &quot;A String&quot;, # A string template that allows user to configure task parameters (with either literal default values or tokens which will be resolved at execution time) for the task. It will eventually replace the old &quot;parameters&quot; field.
            &quot;taskTemplateName&quot;: &quot;A String&quot;, # Used to define task-template name if task is of type task-template
            &quot;taskType&quot;: &quot;A String&quot;, # Defines the type of the task
          },
        ],
        &quot;teardown&quot;: { # Optional. Contains a graph of tasks that will be executed before putting the event in a terminal state (SUCCEEDED/FAILED/FATAL), regardless of success or failure, similar to &quot;finally&quot; in code.
          &quot;teardownTaskConfigs&quot;: [ # Required.
            {
              &quot;creatorEmail&quot;: &quot;A String&quot;, # The creator&#x27;s email address.
              &quot;name&quot;: &quot;A String&quot;, # Required. Unique identifier of the teardown task within this Config. We use this field as the identifier to find next teardown tasks.
              &quot;nextTeardownTask&quot;: { # The teardown task that is next in line to be executed. We support only sequential execution of teardown tasks (i.e. no branching).
                &quot;name&quot;: &quot;A String&quot;, # Required. Name of the next teardown task.
              },
              &quot;parameters&quot;: { # LINT.IfChange This message is used for processing and persisting (when applicable) key value pair parameters for each event in the event bus. Please see # The parameters the user can pass to this task.
                &quot;parameters&quot;: [ # Parameters are a part of Event and can be used to communicate between different tasks that are part of the same integration execution.
                  { # Key-value pair of EventBus parameters.
                    &quot;key&quot;: &quot;A String&quot;, # Key is used to retrieve the corresponding parameter value. This should be unique for a given fired event. These parameters must be predefined in the integration definition.
                    &quot;masked&quot;: True or False, # True if this parameter should be masked in the logs
                    &quot;value&quot;: { # LINT.IfChange To support various types of parameter values. Next available id: 14 # Values for the defined keys. Each value can either be string, int, double or any proto message.
                      &quot;booleanArray&quot;: {
                        &quot;booleanValues&quot;: [
                          True or False,
                        ],
                      },
                      &quot;booleanValue&quot;: True or False,
                      &quot;doubleArray&quot;: {
                        &quot;doubleValues&quot;: [
                          3.14,
                        ],
                      },
                      &quot;doubleValue&quot;: 3.14,
                      &quot;intArray&quot;: {
                        &quot;intValues&quot;: [
                          &quot;A String&quot;,
                        ],
                      },
                      &quot;intValue&quot;: &quot;A String&quot;,
                      &quot;protoArray&quot;: {
                        &quot;protoValues&quot;: [
                          {
                            &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
                          },
                        ],
                      },
                      &quot;protoValue&quot;: {
                        &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
                      },
                      &quot;serializedObjectValue&quot;: {
                        &quot;objectValue&quot;: &quot;A String&quot;,
                      },
                      &quot;stringArray&quot;: {
                        &quot;stringValues&quot;: [
                          &quot;A String&quot;,
                        ],
                      },
                      &quot;stringValue&quot;: &quot;A String&quot;,
                    },
                  },
                ],
              },
              &quot;properties&quot;: { # LINT.IfChange This message is used for storing key value pair properties for each Event / Task in the EventBus.
                &quot;properties&quot;: [ # An unordered list of property entries.
                  { # Key-value pair of EventBus property.
                    &quot;key&quot;: &quot;A String&quot;, # Key is used to retrieve the corresponding property value. This should be unique for a given fired event. The Tasks should be aware of the keys used while firing the events for them to be able to retrieve the values.
                    &quot;value&quot;: { # Used for define type for values. Currently supported value types include int, string, double, array, and any proto message. # Values for the defined keys. Each value can either be string, int, double or any proto message.
                      &quot;booleanValue&quot;: True or False,
                      &quot;doubleArray&quot;: {
                        &quot;values&quot;: [
                          3.14,
                        ],
                      },
                      &quot;doubleValue&quot;: 3.14,
                      &quot;intArray&quot;: {
                        &quot;values&quot;: [
                          &quot;A String&quot;,
                        ],
                      },
                      &quot;intValue&quot;: &quot;A String&quot;,
                      &quot;protoValue&quot;: {
                        &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
                      },
                      &quot;stringArray&quot;: {
                        &quot;values&quot;: [
                          &quot;A String&quot;,
                        ],
                      },
                      &quot;stringValue&quot;: &quot;A String&quot;,
                    },
                  },
                ],
              },
              &quot;teardownTaskImplementationClassName&quot;: &quot;A String&quot;, # Required. Implementation class name.
            },
          ],
        },
        &quot;triggerConfigs&quot;: [ # Optional. Trigger configurations.
          { # Configuration detail of a trigger.
            &quot;alertConfig&quot;: [ # Optional. An alert threshold configuration for the [trigger + client + integration] tuple. If these values are not specified in the trigger config, default values will be populated by the system. Note that there must be exactly one alert threshold configured per [client + trigger + integration] when published.
              { # Message to be used to configure custom alerting in the {@code EventConfig} protos for an event.
                &quot;aggregationPeriod&quot;: &quot;A String&quot;, # The period over which the metric value should be aggregated and evaluated. Format is , where integer should be a positive integer and unit should be one of (s,m,h,d,w) meaning (second, minute, hour, day, week). For an EXPECTED_MIN threshold, this aggregation_period must be lesser than 24 hours.
                &quot;alertThreshold&quot;: 42, # For how many contiguous aggregation periods should the expected min or max be violated for the alert to be fired.
                &quot;disableAlert&quot;: True or False, # Set to false by default. When set to true, the metrics are not aggregated or pushed to Monarch for this integration alert.
                &quot;displayName&quot;: &quot;A String&quot;, # Name of the alert. This will be displayed in the alert subject. If set, this name should be unique within the scope of the integration.
                &quot;durationThreshold&quot;: &quot;A String&quot;, # Should be specified only for *AVERAGE_DURATION and *PERCENTILE_DURATION metrics. This member should be used to specify what duration value the metrics should exceed for the alert to trigger.
                &quot;metricType&quot;: &quot;A String&quot;, # The type of metric.
                &quot;onlyFinalAttempt&quot;: True or False, # For either events or tasks, depending on the type of alert, count only final attempts, not retries.
                &quot;thresholdType&quot;: &quot;A String&quot;, # The threshold type, whether lower(expected_min) or upper(expected_max), for which this alert is being configured. If value falls below expected_min or exceeds expected_max, an alert will be fired.
                &quot;thresholdValue&quot;: { # The threshold value of the metric, above or below which the alert should be triggered. See EventAlertConfig or TaskAlertConfig for the different alert metric types in each case. For the *RATE metrics, one or both of these fields may be set. Zero is the default value and can be left at that. For *PERCENTILE_DURATION metrics, one or both of these fields may be set, and also, the duration threshold value should be specified in the threshold_duration_ms member below. For *AVERAGE_DURATION metrics, these fields should not be set at all. A different member, threshold_duration_ms, must be set in the EventAlertConfig or the TaskAlertConfig. # The metric value, above or below which the alert should be triggered.
                  &quot;absolute&quot;: &quot;A String&quot;, # Absolute value threshold.
                  &quot;percentage&quot;: 42, # Percentage threshold.
                },
              },
            ],
            &quot;cloudSchedulerConfig&quot;: { # Cloud Scheduler Trigger configuration # Optional. Cloud Scheduler Trigger related metadata
              &quot;cronTab&quot;: &quot;A String&quot;, # Required. The cron tab of cloud scheduler trigger.
              &quot;errorMessage&quot;: &quot;A String&quot;, # Optional. When the job was deleted from Pantheon UI, error_message will be populated when Get/List integrations
              &quot;location&quot;: &quot;A String&quot;, # Required. The location where associated cloud scheduler job will be created
              &quot;serviceAccountEmail&quot;: &quot;A String&quot;, # Required. Service account used by Cloud Scheduler to trigger the integration at scheduled time
            },
            &quot;description&quot;: &quot;A String&quot;, # Optional. User-provided description intended to give additional business context about the task.
            &quot;errorCatcherId&quot;: &quot;A String&quot;, # Optional. Optional Error catcher id of the error catch flow which will be executed when execution error happens in the task
            &quot;inputVariables&quot;: { # Variables names mapped to api trigger. # Optional. List of input variables for the api trigger.
              &quot;names&quot;: [ # Optional. List of variable names.
                &quot;A String&quot;,
              ],
            },
            &quot;label&quot;: &quot;A String&quot;, # Optional. The user created label for a particular trigger.
            &quot;nextTasksExecutionPolicy&quot;: &quot;A String&quot;, # Optional. Dictates how next tasks will be executed.
            &quot;outputVariables&quot;: { # Variables names mapped to api trigger. # Optional. List of output variables for the api trigger.
              &quot;names&quot;: [ # Optional. List of variable names.
                &quot;A String&quot;,
              ],
            },
            &quot;position&quot;: { # Configuration detail of coordinate, it used for UI # Optional. Informs the front-end application where to draw this error catcher config on the UI.
              &quot;x&quot;: 42, # Required. X axis of the coordinate
              &quot;y&quot;: 42, # Required. Y axis of the coordinate
            },
            &quot;properties&quot;: { # Optional. Configurable properties of the trigger, not to be confused with integration parameters. E.g. &quot;name&quot; is a property for API triggers and &quot;subscription&quot; is a property for Pub/sub triggers.
              &quot;a_key&quot;: &quot;A String&quot;,
            },
            &quot;startTasks&quot;: [ # Optional. Set of tasks numbers from where the integration execution is started by this trigger. If this is empty, then integration is executed with default start tasks. In the list of start tasks, none of two tasks can have direct ancestor-descendant relationships (i.e. in a same integration execution graph).
              { # The task that is next in line to be executed, if the condition specified evaluated to true.
                &quot;condition&quot;: &quot;A String&quot;, # Standard filter expression for this task to become an eligible next task.
                &quot;description&quot;: &quot;A String&quot;, # User-provided description intended to give additional business context about the task.
                &quot;displayName&quot;: &quot;A String&quot;, # User-provided label that is attached to this edge in the UI.
                &quot;taskConfigId&quot;: &quot;A String&quot;, # ID of the next task.
                &quot;taskId&quot;: &quot;A String&quot;, # Task number of the next task.
              },
            ],
            &quot;trigger&quot;: &quot;A String&quot;, # Optional. Name of the trigger. Example: &quot;API Trigger&quot;, &quot;Cloud Pub Sub Trigger&quot; When set will be sent out to monitoring dashabord for tracking purpose.
            &quot;triggerId&quot;: &quot;A String&quot;, # Optional. Auto-generated trigger ID. The ID is based on the properties that you define in the trigger config. For example, for an API trigger, the trigger ID follows the format: api_trigger/TRIGGER_NAME Where trigger config has properties with value {&quot;Trigger name&quot;: TRIGGER_NAME}
            &quot;triggerNumber&quot;: &quot;A String&quot;, # Required. A number to uniquely identify each trigger config within the integration on UI.
            &quot;triggerType&quot;: &quot;A String&quot;, # Optional. Type of trigger
          },
        ],
        &quot;triggerConfigsInternal&quot;: [ # Optional. Trigger configurations.
          { # Configuration detail of a trigger. Next available id: 22
            &quot;alertConfig&quot;: [ # An alert threshold configuration for the [trigger + client + workflow] tuple. If these values are not specified in the trigger config, default values will be populated by the system. Note that there must be exactly one alert threshold configured per [client + trigger + workflow] when published.
              { # Message to be used to configure custom alerting in the {@code EventConfig} protos for an event.
                &quot;aggregationPeriod&quot;: &quot;A String&quot;, # For an EXPECTED_MIN threshold, this aggregation_period must be lesser than 24 hours.
                &quot;alertDisabled&quot;: True or False, # Set to false by default. When set to true, the metrics are not aggregated or pushed to Monarch for this workflow alert.
                &quot;alertName&quot;: &quot;A String&quot;, # A name to identify this alert. This will be displayed in the alert subject. If set, this name should be unique within the scope of the workflow.
                &quot;clientId&quot;: &quot;A String&quot;, # Client associated with this alert configuration.
                &quot;durationThresholdMs&quot;: &quot;A String&quot;, # Should be specified only for *AVERAGE_DURATION and *PERCENTILE_DURATION metrics. This member should be used to specify what duration value the metrics should exceed for the alert to trigger.
                &quot;errorEnumList&quot;: { # List of error enums for alerts.
                  &quot;enumStrings&quot;: [
                    &quot;A String&quot;,
                  ],
                  &quot;filterType&quot;: &quot;A String&quot;,
                },
                &quot;metricType&quot;: &quot;A String&quot;,
                &quot;numAggregationPeriods&quot;: 42, # For how many contiguous aggregation periods should the expected min or max be violated for the alert to be fired.
                &quot;onlyFinalAttempt&quot;: True or False, # For either events or tasks, depending on the type of alert, count only final attempts, not retries.
                &quot;playbookUrl&quot;: &quot;A String&quot;, # Link to a playbook for resolving the issue that triggered this alert.
                &quot;thresholdType&quot;: &quot;A String&quot;, # The threshold type, whether lower(expected_min) or upper(expected_max), for which this alert is being configured. If value falls below expected_min or exceeds expected_max, an alert will be fired.
                &quot;thresholdValue&quot;: { # The threshold value of the metric, above or below which the alert should be triggered. See EventAlertConfig or TaskAlertConfig for the different alert metric types in each case. For the *RATE metrics, one or both of these fields may be set. Zero is the default value and can be left at that. For *PERCENTILE_DURATION metrics, one or both of these fields may be set, and also, the duration threshold value should be specified in the threshold_duration_ms member below. For *AVERAGE_DURATION metrics, these fields should not be set at all. A different member, threshold_duration_ms, must be set in the EventAlertConfig or the TaskAlertConfig. # The metric value, above or below which the alert should be triggered.
                  &quot;absolute&quot;: &quot;A String&quot;,
                  &quot;percentage&quot;: 42,
                },
                &quot;warningEnumList&quot;: { # List of error enums for alerts.
                  &quot;enumStrings&quot;: [
                    &quot;A String&quot;,
                  ],
                  &quot;filterType&quot;: &quot;A String&quot;,
                },
              },
            ],
            &quot;cloudSchedulerConfig&quot;: { # Cloud Scheduler Trigger configuration
              &quot;cronTab&quot;: &quot;A String&quot;, # Required. The cron tab of cloud scheduler trigger.
              &quot;errorMessage&quot;: &quot;A String&quot;, # Optional. When the job was deleted from Pantheon UI, error_message will be populated when Get/List integrations
              &quot;location&quot;: &quot;A String&quot;, # Required. The location where associated cloud scheduler job will be created
              &quot;serviceAccountEmail&quot;: &quot;A String&quot;, # Required. Service account used by Cloud Scheduler to trigger the integration at scheduled time
            },
            &quot;description&quot;: &quot;A String&quot;, # User-provided description intended to give more business context about the task.
            &quot;enabledClients&quot;: [ # Required. The list of client ids which are enabled to execute the workflow using this trigger. In other words, these clients have the workflow execution privledges for this trigger. For API trigger, the client id in the incoming request is validated against the list of enabled clients. For non-API triggers, one workflow execution is triggered on behalf of each enabled client.
              &quot;A String&quot;,
            ],
            &quot;errorCatcherId&quot;: &quot;A String&quot;, # Optional Error catcher id of the error catch flow which will be executed when execution error happens in the task
            &quot;inputVariables&quot;: { # Variables names mapped to api trigger. # Optional. List of input variables for the api trigger.
              &quot;names&quot;: [ # Optional. List of variable names.
                &quot;A String&quot;,
              ],
            },
            &quot;label&quot;: &quot;A String&quot;, # The user created label for a particular trigger.
            &quot;nextTasksExecutionPolicy&quot;: &quot;A String&quot;, # Dictates how next tasks will be executed.
            &quot;outputVariables&quot;: { # Variables names mapped to api trigger. # Optional. List of output variables for the api trigger.
              &quot;names&quot;: [ # Optional. List of variable names.
                &quot;A String&quot;,
              ],
            },
            &quot;pauseWorkflowExecutions&quot;: True or False, # Optional. If set to true, any upcoming requests for this trigger config will be paused and the executions will be resumed later when the flag is reset. The workflow to which this trigger config belongs has to be in ACTIVE status for the executions to be paused or resumed.
            &quot;position&quot;: { # Represents two-dimensional positions. # Optional. Informs the front-end application where to draw this trigger config on the UI.
              &quot;x&quot;: 42,
              &quot;y&quot;: 42,
            },
            &quot;properties&quot;: { # Configurable properties of the trigger, not to be confused with workflow parameters. E.g. &quot;name&quot; is a property for API triggers and &quot;subscription&quot; is a property for Cloud Pubsub triggers.
              &quot;a_key&quot;: &quot;A String&quot;,
            },
            &quot;startTasks&quot;: [ # Set of tasks numbers from where the workflow execution is started by this trigger. If this is empty, then workflow is executed with default start tasks. In the list of start tasks, none of two tasks can have direct ancestor-descendant relationships (i.e. in a same workflow execution graph).
              { # The task that is next in line to be executed, if the condition specified evaluated to true.
                &quot;combinedConditions&quot;: [ # Combined condition for this task to become an eligible next task. Each of these combined_conditions are joined with logical OR. DEPRECATED: use `condition`
                  { # This message recursively combines constituent conditions using logical AND.
                    &quot;conditions&quot;: [ # A set of individual constituent conditions.
                      { # Condition that uses `operator` to evaluate the key against the value.
                        &quot;eventPropertyKey&quot;: &quot;A String&quot;, # Key that&#x27;s evaluated against the `value`. Please note the data type of the runtime value associated with the key should match the data type of `value`, else an IllegalArgumentException is thrown.
                        &quot;operator&quot;: &quot;A String&quot;, # Operator used to evaluate the condition. Please note that an operator with an inappropriate key/value operand will result in IllegalArgumentException, e.g. CONTAINS with boolean key/value pair.
                        &quot;value&quot;: { # Used for define type for values. Currently supported value types include int, string, double, array, and any proto message. # Value that&#x27;s checked for the key.
                          &quot;booleanValue&quot;: True or False,
                          &quot;doubleArray&quot;: {
                            &quot;values&quot;: [
                              3.14,
                            ],
                          },
                          &quot;doubleValue&quot;: 3.14,
                          &quot;intArray&quot;: {
                            &quot;values&quot;: [
                              &quot;A String&quot;,
                            ],
                          },
                          &quot;intValue&quot;: &quot;A String&quot;,
                          &quot;protoValue&quot;: {
                            &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
                          },
                          &quot;stringArray&quot;: {
                            &quot;values&quot;: [
                              &quot;A String&quot;,
                            ],
                          },
                          &quot;stringValue&quot;: &quot;A String&quot;,
                        },
                      },
                    ],
                  },
                ],
                &quot;condition&quot;: &quot;A String&quot;, # Standard filter expression for this task to become an eligible next task.
                &quot;description&quot;: &quot;A String&quot;, # User-provided description intended to give more business context about the next task edge or condition.
                &quot;label&quot;: &quot;A String&quot;, # User-provided label that is attached to this edge in the UI.
                &quot;taskConfigId&quot;: &quot;A String&quot;, # ID of the next task.
                &quot;taskNumber&quot;: &quot;A String&quot;, # Task number of the next task.
              },
            ],
            &quot;triggerCriteria&quot;: { # Optional. When set, Eventbus will run the task specified in the trigger_criteria and validate the result using the trigger_criteria.condition, and only execute the workflow when result is true.
              &quot;condition&quot;: &quot;A String&quot;, # Required. Standard filter expression, when true the workflow will be executed. If there&#x27;s no trigger_criteria_task_implementation_class_name specified, the condition will be validated directly.
              &quot;parameters&quot;: { # LINT.IfChange This message is used for processing and persisting (when applicable) key value pair parameters for each event in the event bus. Please see # Optional. To be used in TaskConfig for the implementation class.
                &quot;parameters&quot;: [ # Parameters are a part of Event and can be used to communicate between different tasks that are part of the same integration execution.
                  { # Key-value pair of EventBus parameters.
                    &quot;key&quot;: &quot;A String&quot;, # Key is used to retrieve the corresponding parameter value. This should be unique for a given fired event. These parameters must be predefined in the integration definition.
                    &quot;masked&quot;: True or False, # True if this parameter should be masked in the logs
                    &quot;value&quot;: { # LINT.IfChange To support various types of parameter values. Next available id: 14 # Values for the defined keys. Each value can either be string, int, double or any proto message.
                      &quot;booleanArray&quot;: {
                        &quot;booleanValues&quot;: [
                          True or False,
                        ],
                      },
                      &quot;booleanValue&quot;: True or False,
                      &quot;doubleArray&quot;: {
                        &quot;doubleValues&quot;: [
                          3.14,
                        ],
                      },
                      &quot;doubleValue&quot;: 3.14,
                      &quot;intArray&quot;: {
                        &quot;intValues&quot;: [
                          &quot;A String&quot;,
                        ],
                      },
                      &quot;intValue&quot;: &quot;A String&quot;,
                      &quot;protoArray&quot;: {
                        &quot;protoValues&quot;: [
                          {
                            &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
                          },
                        ],
                      },
                      &quot;protoValue&quot;: {
                        &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
                      },
                      &quot;serializedObjectValue&quot;: {
                        &quot;objectValue&quot;: &quot;A String&quot;,
                      },
                      &quot;stringArray&quot;: {
                        &quot;stringValues&quot;: [
                          &quot;A String&quot;,
                        ],
                      },
                      &quot;stringValue&quot;: &quot;A String&quot;,
                    },
                  },
                ],
              },
              &quot;triggerCriteriaTaskImplementationClassName&quot;: &quot;A String&quot;, # Optional. Implementation class name. The class should implement the “TypedTask” interface.
            },
            &quot;triggerId&quot;: &quot;A String&quot;, # The backend trigger ID.
            &quot;triggerName&quot;: &quot;A String&quot;, # Optional. Name of the trigger This is added to identify the type of trigger. This is avoid the logic on triggerId to identify the trigger_type and push the same to monitoring.
            &quot;triggerNumber&quot;: &quot;A String&quot;, # Required. A number to uniquely identify each trigger config within the workflow on UI.
            &quot;triggerType&quot;: &quot;A String&quot;,
          },
        ],
        &quot;updateTime&quot;: &quot;A String&quot;, # Output only. Auto-generated.
        &quot;userLabel&quot;: &quot;A String&quot;, # Optional. A user-defined label that annotates an integration version. Typically, this is only set when the integration version is created.
      },
      &quot;type&quot;: &quot;A String&quot;, # File information like Integration version, Integration Config variables etc.
    },
  ],
}</pre>
</div>

<div class="method">
    <code class="details" id="get">get(name, x__xgafv=None)</code>
  <pre>Get a integration in the specified project.

Args:
  name: string, Required. The version to retrieve. Format: projects/{project}/locations/{location}/integrations/{integration}/versions/{version} (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # The integration version definition.
  &quot;cloudKmsKey&quot;: &quot;A String&quot;, # Optional. Cloud KMS resource name for the CMEK encryption key.
  &quot;cloudLoggingDetails&quot;: { # Cloud Logging details for execution info # Optional. Cloud Logging details for the integration version
    &quot;cloudLoggingSeverity&quot;: &quot;A String&quot;, # Optional. Severity selected by the customer for the logs to be sent to Cloud Logging, for the integration version getting executed.
    &quot;enableCloudLogging&quot;: True or False, # Optional. Status of whether Cloud Logging is enabled or not for the integration version getting executed.
  },
  &quot;createTime&quot;: &quot;A String&quot;, # Output only. Auto-generated.
  &quot;createdFromTemplate&quot;: &quot;A String&quot;, # Optional. Optional. The resource name of the template from which the integration is created.
  &quot;databasePersistencePolicy&quot;: &quot;A String&quot;, # Optional. Flag to disable database persistence for execution data, including event execution info, execution export info, execution metadata index and execution param index.
  &quot;description&quot;: &quot;A String&quot;, # Optional. The integration description.
  &quot;enableVariableMasking&quot;: True or False, # Optional. True if variable masking feature should be turned on for this version
  &quot;errorCatcherConfigs&quot;: [ # Optional. Error Catch Task configuration for the integration. It&#x27;s optional.
    { # Configuration detail of a error catch task
      &quot;description&quot;: &quot;A String&quot;, # Optional. User-provided description intended to give more business context about the error catcher config.
      &quot;errorCatcherId&quot;: &quot;A String&quot;, # Required. An error catcher id is string representation for the error catcher config. Within a workflow, error_catcher_id uniquely identifies an error catcher config among all error catcher configs for the workflow
      &quot;errorCatcherNumber&quot;: &quot;A String&quot;, # Required. A number to uniquely identify each error catcher config within the workflow on UI.
      &quot;label&quot;: &quot;A String&quot;, # Optional. The user created label for a particular error catcher. Optional.
      &quot;position&quot;: { # Configuration detail of coordinate, it used for UI # Optional. Informs the front-end application where to draw this error catcher config on the UI.
        &quot;x&quot;: 42, # Required. X axis of the coordinate
        &quot;y&quot;: 42, # Required. Y axis of the coordinate
      },
      &quot;startErrorTasks&quot;: [ # Required. The set of start tasks that are to be executed for the error catch flow
        { # The task that is next in line to be executed, if the condition specified evaluated to true.
          &quot;condition&quot;: &quot;A String&quot;, # Standard filter expression for this task to become an eligible next task.
          &quot;description&quot;: &quot;A String&quot;, # User-provided description intended to give additional business context about the task.
          &quot;displayName&quot;: &quot;A String&quot;, # User-provided label that is attached to this edge in the UI.
          &quot;taskConfigId&quot;: &quot;A String&quot;, # ID of the next task.
          &quot;taskId&quot;: &quot;A String&quot;, # Task number of the next task.
        },
      ],
    },
  ],
  &quot;integrationConfigParameters&quot;: [ # Optional. Config Parameters that are expected to be passed to the integration when an integration is published. This consists of all the parameters that are expected to provide configuration in the integration execution. This gives the user the ability to provide default values, value, add information like connection url, project based configuration value and also provide data types of each parameter.
    { # Integration Config Parameter is defined in the integration config and are used to provide external configuration for integration. It provide information about data types of the expected parameters and provide any default values or value. They can also be used to add custom attributes.
      &quot;parameter&quot;: { # Integration Parameter is defined in the integration config and are used to provide information about data types of the expected parameters and provide any default values if needed. They can also be used to add custom attributes. These are static in nature and should not be used for dynamic event definition. # Optional. Integration Parameter to provide the default value, data type and attributes required for the Integration config variables.
        &quot;containsLargeData&quot;: True or False, # Indicates whether this variable contains large data and need to be uploaded to Cloud Storage.
        &quot;dataType&quot;: &quot;A String&quot;, # Type of the parameter.
        &quot;defaultValue&quot;: { # The type of the parameter. # Default values for the defined keys. Each value can either be string, int, double or any proto message or a serialized object.
          &quot;booleanArray&quot;: { # This message only contains a field of boolean array. # Boolean Array.
            &quot;booleanValues&quot;: [ # Boolean array.
              True or False,
            ],
          },
          &quot;booleanValue&quot;: True or False, # Boolean.
          &quot;doubleArray&quot;: { # This message only contains a field of double number array. # Double Number Array.
            &quot;doubleValues&quot;: [ # Double number array.
              3.14,
            ],
          },
          &quot;doubleValue&quot;: 3.14, # Double Number.
          &quot;intArray&quot;: { # This message only contains a field of integer array. # Integer Array.
            &quot;intValues&quot;: [ # Integer array.
              &quot;A String&quot;,
            ],
          },
          &quot;intValue&quot;: &quot;A String&quot;, # Integer.
          &quot;jsonValue&quot;: &quot;A String&quot;, # Json.
          &quot;stringArray&quot;: { # This message only contains a field of string array. # String Array.
            &quot;stringValues&quot;: [ # String array.
              &quot;A String&quot;,
            ],
          },
          &quot;stringValue&quot;: &quot;A String&quot;, # String.
        },
        &quot;description&quot;: &quot;A String&quot;, # Optional. Description of the parameter.
        &quot;displayName&quot;: &quot;A String&quot;, # The name (without prefix) to be displayed in the UI for this parameter. E.g. if the key is &quot;foo.bar.myName&quot;, then the name would be &quot;myName&quot;.
        &quot;inputOutputType&quot;: &quot;A String&quot;, # Specifies the input/output type for the parameter.
        &quot;isTransient&quot;: True or False, # Whether this parameter is a transient parameter.
        &quot;jsonSchema&quot;: &quot;A String&quot;, # This schema will be used to validate runtime JSON-typed values of this parameter.
        &quot;key&quot;: &quot;A String&quot;, # Key is used to retrieve the corresponding parameter value. This should be unique for a given fired event. These parameters must be predefined in the integration definition.
        &quot;masked&quot;: True or False, # True if this parameter should be masked in the logs
        &quot;producer&quot;: &quot;A String&quot;, # The identifier of the node (TaskConfig/TriggerConfig) this parameter was produced by, if it is a transient param or a copy of an input param.
        &quot;searchable&quot;: True or False, # Searchable in the execution log or not.
      },
      &quot;value&quot;: { # The type of the parameter. # Values for the defined keys. Each value can either be string, int, double or any proto message or a serialized object.
        &quot;booleanArray&quot;: { # This message only contains a field of boolean array. # Boolean Array.
          &quot;booleanValues&quot;: [ # Boolean array.
            True or False,
          ],
        },
        &quot;booleanValue&quot;: True or False, # Boolean.
        &quot;doubleArray&quot;: { # This message only contains a field of double number array. # Double Number Array.
          &quot;doubleValues&quot;: [ # Double number array.
            3.14,
          ],
        },
        &quot;doubleValue&quot;: 3.14, # Double Number.
        &quot;intArray&quot;: { # This message only contains a field of integer array. # Integer Array.
          &quot;intValues&quot;: [ # Integer array.
            &quot;A String&quot;,
          ],
        },
        &quot;intValue&quot;: &quot;A String&quot;, # Integer.
        &quot;jsonValue&quot;: &quot;A String&quot;, # Json.
        &quot;stringArray&quot;: { # This message only contains a field of string array. # String Array.
          &quot;stringValues&quot;: [ # String array.
            &quot;A String&quot;,
          ],
        },
        &quot;stringValue&quot;: &quot;A String&quot;, # String.
      },
    },
  ],
  &quot;integrationParameters&quot;: [ # Optional. Parameters that are expected to be passed to the integration when an event is triggered. This consists of all the parameters that are expected in the integration execution. This gives the user the ability to provide default values, add information like PII and also provide data types of each parameter.
    { # Integration Parameter is defined in the integration config and are used to provide information about data types of the expected parameters and provide any default values if needed. They can also be used to add custom attributes. These are static in nature and should not be used for dynamic event definition.
      &quot;containsLargeData&quot;: True or False, # Indicates whether this variable contains large data and need to be uploaded to Cloud Storage.
      &quot;dataType&quot;: &quot;A String&quot;, # Type of the parameter.
      &quot;defaultValue&quot;: { # The type of the parameter. # Default values for the defined keys. Each value can either be string, int, double or any proto message or a serialized object.
        &quot;booleanArray&quot;: { # This message only contains a field of boolean array. # Boolean Array.
          &quot;booleanValues&quot;: [ # Boolean array.
            True or False,
          ],
        },
        &quot;booleanValue&quot;: True or False, # Boolean.
        &quot;doubleArray&quot;: { # This message only contains a field of double number array. # Double Number Array.
          &quot;doubleValues&quot;: [ # Double number array.
            3.14,
          ],
        },
        &quot;doubleValue&quot;: 3.14, # Double Number.
        &quot;intArray&quot;: { # This message only contains a field of integer array. # Integer Array.
          &quot;intValues&quot;: [ # Integer array.
            &quot;A String&quot;,
          ],
        },
        &quot;intValue&quot;: &quot;A String&quot;, # Integer.
        &quot;jsonValue&quot;: &quot;A String&quot;, # Json.
        &quot;stringArray&quot;: { # This message only contains a field of string array. # String Array.
          &quot;stringValues&quot;: [ # String array.
            &quot;A String&quot;,
          ],
        },
        &quot;stringValue&quot;: &quot;A String&quot;, # String.
      },
      &quot;description&quot;: &quot;A String&quot;, # Optional. Description of the parameter.
      &quot;displayName&quot;: &quot;A String&quot;, # The name (without prefix) to be displayed in the UI for this parameter. E.g. if the key is &quot;foo.bar.myName&quot;, then the name would be &quot;myName&quot;.
      &quot;inputOutputType&quot;: &quot;A String&quot;, # Specifies the input/output type for the parameter.
      &quot;isTransient&quot;: True or False, # Whether this parameter is a transient parameter.
      &quot;jsonSchema&quot;: &quot;A String&quot;, # This schema will be used to validate runtime JSON-typed values of this parameter.
      &quot;key&quot;: &quot;A String&quot;, # Key is used to retrieve the corresponding parameter value. This should be unique for a given fired event. These parameters must be predefined in the integration definition.
      &quot;masked&quot;: True or False, # True if this parameter should be masked in the logs
      &quot;producer&quot;: &quot;A String&quot;, # The identifier of the node (TaskConfig/TriggerConfig) this parameter was produced by, if it is a transient param or a copy of an input param.
      &quot;searchable&quot;: True or False, # Searchable in the execution log or not.
    },
  ],
  &quot;integrationParametersInternal&quot;: { # LINT.IfChange This is the frontend version of WorkflowParameters. It&#x27;s exactly like the backend version except that instead of flattening protobuf parameters and treating every field and subfield of a protobuf parameter as a separate parameter, the fields/subfields of a protobuf parameter will be nested as &quot;children&quot; (see &#x27;children&#x27; field below) parameters of the parent parameter. Please refer to enterprise/crm/eventbus/proto/workflow_parameters.proto for more information about WorkflowParameters. # Optional. Parameters that are expected to be passed to the integration when an event is triggered. This consists of all the parameters that are expected in the integration execution. This gives the user the ability to provide default values, add information like PII and also provide data types of each parameter.
    &quot;parameters&quot;: [ # Parameters are a part of Event and can be used to communiticate between different tasks that are part of the same workflow execution.
      {
        &quot;attributes&quot;: { # Attributes are additional options that can be associated with each event property. For more information, see # Metadata information about the parameters.
          &quot;dataType&quot;: &quot;A String&quot;, # Things like URL, Email, Currency, Timestamp (rather than string, int64...)
          &quot;defaultValue&quot;: { # Used for define type for values. Currently supported value types include int, string, double, array, and any proto message. # Used to define defaults.
            &quot;booleanValue&quot;: True or False,
            &quot;doubleArray&quot;: {
              &quot;values&quot;: [
                3.14,
              ],
            },
            &quot;doubleValue&quot;: 3.14,
            &quot;intArray&quot;: {
              &quot;values&quot;: [
                &quot;A String&quot;,
              ],
            },
            &quot;intValue&quot;: &quot;A String&quot;,
            &quot;protoValue&quot;: {
              &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
            },
            &quot;stringArray&quot;: {
              &quot;values&quot;: [
                &quot;A String&quot;,
              ],
            },
            &quot;stringValue&quot;: &quot;A String&quot;,
          },
          &quot;isRequired&quot;: True or False, # Required for event execution. The validation will be done by the event bus when the event is triggered.
          &quot;isSearchable&quot;: True or False, # Used to indicate if a ParameterEntry should be converted to ParamIndexes for ST-Spanner full-text search. DEPRECATED: use searchable.
          &quot;logSettings&quot;: { # The LogSettings define the logging attributes for an event property. These attributes are used to map the property to the parameter in the log proto. Also used to define scrubbing/truncation behavior and PII information. # See
            &quot;logFieldName&quot;: &quot;A String&quot;, # The name of corresponding logging field of the event property. If omitted, assumes the same name as the event property key.
            &quot;seedPeriod&quot;: &quot;A String&quot;,
            &quot;seedScope&quot;: &quot;A String&quot;,
          },
          &quot;masked&quot;: True or False, # True if this workflow parameter should be masked in the logs
          &quot;readOnly&quot;: True or False, # Used to indicate if the ParameterEntry is a read only field or not.
          &quot;searchable&quot;: &quot;A String&quot;,
          &quot;taskVisibility&quot;: [ # List of tasks that can view this property, if empty then all.
            &quot;A String&quot;,
          ],
        },
        &quot;children&quot;: [ # Child parameters nested within this parameter. This field only applies to protobuf parameters
          # Object with schema name: EnterpriseCrmFrontendsEventbusProtoWorkflowParameterEntry
        ],
        &quot;containsLargeData&quot;: True or False, # Indicates whether this variable contains large data and need to be uploaded to Cloud Storage.
        &quot;dataType&quot;: &quot;A String&quot;, # The data type of the parameter.
        &quot;defaultValue&quot;: { # To support various types of parameter values. Next available id: 14 # Default values for the defined keys. Each value can either be string, int, double or any proto message or a serialized object.
          &quot;booleanArray&quot;: {
            &quot;booleanValues&quot;: [
              True or False,
            ],
          },
          &quot;booleanValue&quot;: True or False,
          &quot;doubleArray&quot;: {
            &quot;doubleValues&quot;: [
              3.14,
            ],
          },
          &quot;doubleValue&quot;: 3.14,
          &quot;intArray&quot;: {
            &quot;intValues&quot;: [
              &quot;A String&quot;,
            ],
          },
          &quot;intValue&quot;: &quot;A String&quot;,
          &quot;jsonValue&quot;: &quot;A String&quot;,
          &quot;protoArray&quot;: {
            &quot;protoValues&quot;: [
              {
                &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
              },
            ],
          },
          &quot;protoValue&quot;: {
            &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
          },
          &quot;serializedObjectValue&quot;: {
            &quot;objectValue&quot;: &quot;A String&quot;,
          },
          &quot;stringArray&quot;: {
            &quot;stringValues&quot;: [
              &quot;A String&quot;,
            ],
          },
          &quot;stringValue&quot;: &quot;A String&quot;,
        },
        &quot;description&quot;: &quot;A String&quot;, # Optional. The description about the parameter
        &quot;inOutType&quot;: &quot;A String&quot;, # Specifies the input/output type for the parameter.
        &quot;isTransient&quot;: True or False, # Whether this parameter is a transient parameter.
        &quot;jsonSchema&quot;: &quot;A String&quot;, # This schema will be used to validate runtime JSON-typed values of this parameter.
        &quot;key&quot;: &quot;A String&quot;, # Key is used to retrieve the corresponding parameter value. This should be unique for a given fired event. These parameters must be predefined in the workflow definition.
        &quot;name&quot;: &quot;A String&quot;, # The name (without prefix) to be displayed in the UI for this parameter. E.g. if the key is &quot;foo.bar.myName&quot;, then the name would be &quot;myName&quot;.
        &quot;producedBy&quot;: { # Represents a node identifier (type + id). Next highest id: 3 # The identifier of the node (TaskConfig/TriggerConfig) this parameter was produced by, if it is a transient param or a copy of an input param.
          &quot;elementIdentifier&quot;: &quot;A String&quot;, # Configuration of the edge.
          &quot;elementType&quot;: &quot;A String&quot;, # Destination node where the edge ends. It can only be a task config.
        },
        &quot;producer&quot;: &quot;A String&quot;,
        &quot;protoDefName&quot;: &quot;A String&quot;, # The name of the protobuf type if the parameter has a protobuf data type.
        &quot;protoDefPath&quot;: &quot;A String&quot;, # If the data type is of type proto or proto array, this field needs to be populated with the fully qualified proto name. This message, for example, would be &quot;enterprise.crm.frontends.eventbus.proto.WorkflowParameterEntry&quot;.
        &quot;required&quot;: True or False,
      },
    ],
  },
  &quot;lastModifierEmail&quot;: &quot;A String&quot;, # Optional. The last modifier&#x27;s email address. Generated based on the End User Credentials/LOAS role of the user making the call.
  &quot;lockHolder&quot;: &quot;A String&quot;, # Optional. The edit lock holder&#x27;s email address. Generated based on the End User Credentials/LOAS role of the user making the call.
  &quot;name&quot;: &quot;A String&quot;, # Output only. Auto-generated primary key.
  &quot;origin&quot;: &quot;A String&quot;, # Optional. The origin that indicates where this integration is coming from.
  &quot;parentTemplateId&quot;: &quot;A String&quot;, # Optional. The id of the template which was used to create this integration_version.
  &quot;runAsServiceAccount&quot;: &quot;A String&quot;, # Optional. The run-as service account email, if set and auth config is not configured, that will be used to generate auth token to be used in Connector task, Rest caller task and Cloud function task.
  &quot;snapshotNumber&quot;: &quot;A String&quot;, # Output only. An increasing sequence that is set when a new snapshot is created. The last created snapshot can be identified by [workflow_name, org_id latest(snapshot_number)]. However, last created snapshot need not be same as the HEAD. So users should always use &quot;HEAD&quot; tag to identify the head.
  &quot;state&quot;: &quot;A String&quot;, # Output only. User should not set it as an input.
  &quot;status&quot;: &quot;A String&quot;, # Output only. Generated by eventbus. User should not set it as an input.
  &quot;taskConfigs&quot;: [ # Optional. Task configuration for the integration. It&#x27;s optional, but the integration doesn&#x27;t do anything without task_configs.
    { # The task configuration details. This is not the implementation of Task. There might be multiple TaskConfigs for the same Task.
      &quot;conditionalFailurePolicies&quot;: { # Conditional task failur retry strategies # Optional. The list of conditional failure policies that will be applied to the task in order.
        &quot;defaultFailurePolicy&quot;: { # Policy that defines the task retry logic and failure type. If no FailurePolicy is defined for a task, all its dependent tasks will not be executed (i.e, a `retry_strategy` of NONE will be applied). # The default failure policy to be applied if no conditional failure policy matches.
          &quot;condition&quot;: &quot;A String&quot;, # Optional. The string condition that will be evaluated to determine if the task should be retried with this failure policy.
          &quot;intervalTime&quot;: &quot;A String&quot;, # Required if retry_strategy is FIXED_INTERVAL or LINEAR/EXPONENTIAL_BACKOFF/RESTART_INTEGRATION_WITH_BACKOFF. Defines the initial interval in seconds for backoff.
          &quot;maxRetries&quot;: 42, # Required if retry_strategy is FIXED_INTERVAL or LINEAR/EXPONENTIAL_BACKOFF/RESTART_INTEGRATION_WITH_BACKOFF. Defines the number of times the task will be retried if failed.
          &quot;retryStrategy&quot;: &quot;A String&quot;, # Defines what happens to the task upon failure.
        },
        &quot;failurePolicies&quot;: [ # The list of failure policies that will be applied to the task in order.
          { # Policy that defines the task retry logic and failure type. If no FailurePolicy is defined for a task, all its dependent tasks will not be executed (i.e, a `retry_strategy` of NONE will be applied).
            &quot;condition&quot;: &quot;A String&quot;, # Optional. The string condition that will be evaluated to determine if the task should be retried with this failure policy.
            &quot;intervalTime&quot;: &quot;A String&quot;, # Required if retry_strategy is FIXED_INTERVAL or LINEAR/EXPONENTIAL_BACKOFF/RESTART_INTEGRATION_WITH_BACKOFF. Defines the initial interval in seconds for backoff.
            &quot;maxRetries&quot;: 42, # Required if retry_strategy is FIXED_INTERVAL or LINEAR/EXPONENTIAL_BACKOFF/RESTART_INTEGRATION_WITH_BACKOFF. Defines the number of times the task will be retried if failed.
            &quot;retryStrategy&quot;: &quot;A String&quot;, # Defines what happens to the task upon failure.
          },
        ],
      },
      &quot;description&quot;: &quot;A String&quot;, # Optional. User-provided description intended to give additional business context about the task.
      &quot;displayName&quot;: &quot;A String&quot;, # Optional. User-provided label that is attached to this TaskConfig in the UI.
      &quot;errorCatcherId&quot;: &quot;A String&quot;, # Optional. Optional Error catcher id of the error catch flow which will be executed when execution error happens in the task
      &quot;externalTaskType&quot;: &quot;A String&quot;, # Optional. External task type of the task
      &quot;failurePolicy&quot;: { # Policy that defines the task retry logic and failure type. If no FailurePolicy is defined for a task, all its dependent tasks will not be executed (i.e, a `retry_strategy` of NONE will be applied). # Optional. Determines the number of times the task will be retried on failure and with what retry strategy. This is applicable for asynchronous calls to Eventbus alone (Post To Queue, Schedule etc.).
        &quot;condition&quot;: &quot;A String&quot;, # Optional. The string condition that will be evaluated to determine if the task should be retried with this failure policy.
        &quot;intervalTime&quot;: &quot;A String&quot;, # Required if retry_strategy is FIXED_INTERVAL or LINEAR/EXPONENTIAL_BACKOFF/RESTART_INTEGRATION_WITH_BACKOFF. Defines the initial interval in seconds for backoff.
        &quot;maxRetries&quot;: 42, # Required if retry_strategy is FIXED_INTERVAL or LINEAR/EXPONENTIAL_BACKOFF/RESTART_INTEGRATION_WITH_BACKOFF. Defines the number of times the task will be retried if failed.
        &quot;retryStrategy&quot;: &quot;A String&quot;, # Defines what happens to the task upon failure.
      },
      &quot;jsonValidationOption&quot;: &quot;A String&quot;, # Optional. If set, overrides the option configured in the Task implementation class.
      &quot;nextTasks&quot;: [ # Optional. The set of tasks that are next in line to be executed as per the execution graph defined for the parent event, specified by `event_config_id`. Each of these next tasks are executed only if the condition associated with them evaluates to true.
        { # The task that is next in line to be executed, if the condition specified evaluated to true.
          &quot;condition&quot;: &quot;A String&quot;, # Standard filter expression for this task to become an eligible next task.
          &quot;description&quot;: &quot;A String&quot;, # User-provided description intended to give additional business context about the task.
          &quot;displayName&quot;: &quot;A String&quot;, # User-provided label that is attached to this edge in the UI.
          &quot;taskConfigId&quot;: &quot;A String&quot;, # ID of the next task.
          &quot;taskId&quot;: &quot;A String&quot;, # Task number of the next task.
        },
      ],
      &quot;nextTasksExecutionPolicy&quot;: &quot;A String&quot;, # Optional. The policy dictating the execution of the next set of tasks for the current task.
      &quot;parameters&quot;: { # Optional. The customized parameters the user can pass to this task.
        &quot;a_key&quot;: { # This message is used for processing and persisting (when applicable) key value pair parameters for each event in the event bus. Next available id: 4
          &quot;key&quot;: &quot;A String&quot;, # Key is used to retrieve the corresponding parameter value. This should be unique for a given fired event. These parameters must be predefined in the integration definition.
          &quot;masked&quot;: True or False, # True if this parameter should be masked in the logs
          &quot;value&quot;: { # The type of the parameter. # Values for the defined keys. Each value can either be string, int, double or any proto message.
            &quot;booleanArray&quot;: { # This message only contains a field of boolean array. # Boolean Array.
              &quot;booleanValues&quot;: [ # Boolean array.
                True or False,
              ],
            },
            &quot;booleanValue&quot;: True or False, # Boolean.
            &quot;doubleArray&quot;: { # This message only contains a field of double number array. # Double Number Array.
              &quot;doubleValues&quot;: [ # Double number array.
                3.14,
              ],
            },
            &quot;doubleValue&quot;: 3.14, # Double Number.
            &quot;intArray&quot;: { # This message only contains a field of integer array. # Integer Array.
              &quot;intValues&quot;: [ # Integer array.
                &quot;A String&quot;,
              ],
            },
            &quot;intValue&quot;: &quot;A String&quot;, # Integer.
            &quot;jsonValue&quot;: &quot;A String&quot;, # Json.
            &quot;stringArray&quot;: { # This message only contains a field of string array. # String Array.
              &quot;stringValues&quot;: [ # String array.
                &quot;A String&quot;,
              ],
            },
            &quot;stringValue&quot;: &quot;A String&quot;, # String.
          },
        },
      },
      &quot;position&quot;: { # Configuration detail of coordinate, it used for UI # Optional. Informs the front-end application where to draw this error catcher config on the UI.
        &quot;x&quot;: 42, # Required. X axis of the coordinate
        &quot;y&quot;: 42, # Required. Y axis of the coordinate
      },
      &quot;successPolicy&quot;: { # Policy that dictates the behavior for the task after it completes successfully. # Optional. Determines what action to take upon successful task completion.
        &quot;finalState&quot;: &quot;A String&quot;, # State to which the execution snapshot status will be set if the task succeeds.
      },
      &quot;synchronousCallFailurePolicy&quot;: { # Policy that defines the task retry logic and failure type. If no FailurePolicy is defined for a task, all its dependent tasks will not be executed (i.e, a `retry_strategy` of NONE will be applied). # Optional. Determines the number of times the task will be retried on failure and with what retry strategy. This is applicable for synchronous calls to Eventbus alone (Post).
        &quot;condition&quot;: &quot;A String&quot;, # Optional. The string condition that will be evaluated to determine if the task should be retried with this failure policy.
        &quot;intervalTime&quot;: &quot;A String&quot;, # Required if retry_strategy is FIXED_INTERVAL or LINEAR/EXPONENTIAL_BACKOFF/RESTART_INTEGRATION_WITH_BACKOFF. Defines the initial interval in seconds for backoff.
        &quot;maxRetries&quot;: 42, # Required if retry_strategy is FIXED_INTERVAL or LINEAR/EXPONENTIAL_BACKOFF/RESTART_INTEGRATION_WITH_BACKOFF. Defines the number of times the task will be retried if failed.
        &quot;retryStrategy&quot;: &quot;A String&quot;, # Defines what happens to the task upon failure.
      },
      &quot;task&quot;: &quot;A String&quot;, # Optional. The name for the task.
      &quot;taskExecutionStrategy&quot;: &quot;A String&quot;, # Optional. The policy dictating the execution strategy of this task.
      &quot;taskId&quot;: &quot;A String&quot;, # Required. The identifier of this task within its parent event config, specified by the client. This should be unique among all the tasks belong to the same event config. We use this field as the identifier to find next tasks (via field `next_tasks.task_id`).
      &quot;taskTemplate&quot;: &quot;A String&quot;, # Optional. Used to define task-template name if task is of type task-template
    },
  ],
  &quot;taskConfigsInternal&quot;: [ # Optional. Task configuration for the integration. It&#x27;s optional, but the integration doesn&#x27;t do anything without task_configs.
    { # The task configuration details. This is not the implementation of Task. There might be multiple TaskConfigs for the same Task.
      &quot;alertConfigs&quot;: [ # Alert configurations on error rate, warning rate, number of runs, durations, etc.
        { # Message to be used to configure alerting in the {@code TaskConfig} protos for tasks in an event.
          &quot;aggregationPeriod&quot;: &quot;A String&quot;, # The period over which the metric value should be aggregated and evaluated. Format is , where integer should be a positive integer and unit should be one of (s,m,h,d,w) meaning (second, minute, hour, day, week).
          &quot;alertDisabled&quot;: True or False, # Set to false by default. When set to true, the metrics are not aggregated or pushed to Monarch for this workflow alert.
          &quot;alertName&quot;: &quot;A String&quot;, # A name to identify this alert. This will be displayed in the alert subject. If set, this name should be unique in within the scope of the containing workflow.
          &quot;clientId&quot;: &quot;A String&quot;, # Client associated with this alert configuration. Must be a client enabled in one of the containing workflow&#x27;s triggers.
          &quot;durationThresholdMs&quot;: &quot;A String&quot;, # Should be specified only for TASK_AVERAGE_DURATION and TASK_PERCENTILE_DURATION metrics. This member should be used to specify what duration value the metrics should exceed for the alert to trigger.
          &quot;errorEnumList&quot;: { # List of error enums for alerts.
            &quot;enumStrings&quot;: [
              &quot;A String&quot;,
            ],
            &quot;filterType&quot;: &quot;A String&quot;,
          },
          &quot;metricType&quot;: &quot;A String&quot;,
          &quot;numAggregationPeriods&quot;: 42, # For how many contiguous aggregation periods should the expected min or max be violated for the alert to be fired.
          &quot;onlyFinalAttempt&quot;: True or False, # Only count final task attempts, not retries.
          &quot;playbookUrl&quot;: &quot;A String&quot;, # Link to a playbook for resolving the issue that triggered this alert.
          &quot;thresholdType&quot;: &quot;A String&quot;, # The threshold type for which this alert is being configured. If value falls below expected_min or exceeds expected_max, an alert will be fired.
          &quot;thresholdValue&quot;: { # The threshold value of the metric, above or below which the alert should be triggered. See EventAlertConfig or TaskAlertConfig for the different alert metric types in each case. For the *RATE metrics, one or both of these fields may be set. Zero is the default value and can be left at that. For *PERCENTILE_DURATION metrics, one or both of these fields may be set, and also, the duration threshold value should be specified in the threshold_duration_ms member below. For *AVERAGE_DURATION metrics, these fields should not be set at all. A different member, threshold_duration_ms, must be set in the EventAlertConfig or the TaskAlertConfig. # The metric value, above or below which the alert should be triggered.
            &quot;absolute&quot;: &quot;A String&quot;,
            &quot;percentage&quot;: 42,
          },
          &quot;warningEnumList&quot;: { # List of error enums for alerts.
            &quot;enumStrings&quot;: [
              &quot;A String&quot;,
            ],
            &quot;filterType&quot;: &quot;A String&quot;,
          },
        },
      ],
      &quot;conditionalFailurePolicies&quot;: { # Optional. Determines the number of times the task will be retried on failure and with what retry strategy. This is applicable for synchronous calls to Eventbus alone (Post).
        &quot;defaultFailurePolicy&quot;: { # Policy that defines the task retry logic and failure type. If no FailurePolicy is defined for a task, all its dependent tasks will not be executed (i.e, a `retry_strategy` of NONE will be applied). # The default failure policy to be applied if no conditional failure policy matches
          &quot;intervalInSeconds&quot;: &quot;A String&quot;, # Required if retry_strategy is FIXED_INTERVAL or LINEAR/EXPONENTIAL_BACKOFF/RESTART_WORKFLOW_WITH_BACKOFF. Defines the initial interval for backoff.
          &quot;maxNumRetries&quot;: 42, # Required if retry_strategy is FIXED_INTERVAL or LINEAR/EXPONENTIAL_BACKOFF/RESTART_WORKFLOW_WITH_BACKOFF. Defines the number of times the task will be retried if failed.
          &quot;retryCondition&quot;: &quot;A String&quot;, # Optional. The retry condition that will be evaluated for this failure policy with the corresponding retry strategy.
          &quot;retryStrategy&quot;: &quot;A String&quot;, # Defines what happens to the task upon failure.
        },
        &quot;failurePolicies&quot;: [ # The list of failure policies that will be applied to the task in order.
          { # Policy that defines the task retry logic and failure type. If no FailurePolicy is defined for a task, all its dependent tasks will not be executed (i.e, a `retry_strategy` of NONE will be applied).
            &quot;intervalInSeconds&quot;: &quot;A String&quot;, # Required if retry_strategy is FIXED_INTERVAL or LINEAR/EXPONENTIAL_BACKOFF/RESTART_WORKFLOW_WITH_BACKOFF. Defines the initial interval for backoff.
            &quot;maxNumRetries&quot;: 42, # Required if retry_strategy is FIXED_INTERVAL or LINEAR/EXPONENTIAL_BACKOFF/RESTART_WORKFLOW_WITH_BACKOFF. Defines the number of times the task will be retried if failed.
            &quot;retryCondition&quot;: &quot;A String&quot;, # Optional. The retry condition that will be evaluated for this failure policy with the corresponding retry strategy.
            &quot;retryStrategy&quot;: &quot;A String&quot;, # Defines what happens to the task upon failure.
          },
        ],
      },
      &quot;createTime&quot;: &quot;A String&quot;, # Auto-generated.
      &quot;creatorEmail&quot;: &quot;A String&quot;, # The creator&#x27;s email address. Auto-generated from the user&#x27;s email.
      &quot;description&quot;: &quot;A String&quot;, # User-provided description intended to give more business context about the task.
      &quot;disableStrictTypeValidation&quot;: True or False, # If this config contains a TypedTask, allow validation to succeed if an input is read from the output of another TypedTask whose output type is declared as a superclass of the requested input type. For instance, if the previous task declares an output of type Message, any task with this flag enabled will pass validation when attempting to read any proto Message type from the resultant Event parameter.
      &quot;errorCatcherId&quot;: &quot;A String&quot;, # Optional Error catcher id of the error catch flow which will be executed when execution error happens in the task
      &quot;externalTaskType&quot;: &quot;A String&quot;,
      &quot;failurePolicy&quot;: { # Policy that defines the task retry logic and failure type. If no FailurePolicy is defined for a task, all its dependent tasks will not be executed (i.e, a `retry_strategy` of NONE will be applied). # Optional. Determines the number of times the task will be retried on failure and with what retry strategy. This is applicable for asynchronous calls to Eventbus alone (Post To Queue, Schedule etc.).
        &quot;intervalInSeconds&quot;: &quot;A String&quot;, # Required if retry_strategy is FIXED_INTERVAL or LINEAR/EXPONENTIAL_BACKOFF/RESTART_WORKFLOW_WITH_BACKOFF. Defines the initial interval for backoff.
        &quot;maxNumRetries&quot;: 42, # Required if retry_strategy is FIXED_INTERVAL or LINEAR/EXPONENTIAL_BACKOFF/RESTART_WORKFLOW_WITH_BACKOFF. Defines the number of times the task will be retried if failed.
        &quot;retryCondition&quot;: &quot;A String&quot;, # Optional. The retry condition that will be evaluated for this failure policy with the corresponding retry strategy.
        &quot;retryStrategy&quot;: &quot;A String&quot;, # Defines what happens to the task upon failure.
      },
      &quot;incomingEdgeCount&quot;: 42, # The number of edges leading into this TaskConfig.
      &quot;jsonValidationOption&quot;: &quot;A String&quot;, # If set, overrides the option configured in the Task implementation class.
      &quot;label&quot;: &quot;A String&quot;, # User-provided label that is attached to this TaskConfig in the UI.
      &quot;lastModifiedTime&quot;: &quot;A String&quot;, # Auto-generated.
      &quot;nextTasks&quot;: [ # The set of tasks that are next in line to be executed as per the execution graph defined for the parent event, specified by `event_config_id`. Each of these next tasks are executed only if the condition associated with them evaluates to true.
        { # The task that is next in line to be executed, if the condition specified evaluated to true.
          &quot;combinedConditions&quot;: [ # Combined condition for this task to become an eligible next task. Each of these combined_conditions are joined with logical OR. DEPRECATED: use `condition`
            { # This message recursively combines constituent conditions using logical AND.
              &quot;conditions&quot;: [ # A set of individual constituent conditions.
                { # Condition that uses `operator` to evaluate the key against the value.
                  &quot;eventPropertyKey&quot;: &quot;A String&quot;, # Key that&#x27;s evaluated against the `value`. Please note the data type of the runtime value associated with the key should match the data type of `value`, else an IllegalArgumentException is thrown.
                  &quot;operator&quot;: &quot;A String&quot;, # Operator used to evaluate the condition. Please note that an operator with an inappropriate key/value operand will result in IllegalArgumentException, e.g. CONTAINS with boolean key/value pair.
                  &quot;value&quot;: { # Used for define type for values. Currently supported value types include int, string, double, array, and any proto message. # Value that&#x27;s checked for the key.
                    &quot;booleanValue&quot;: True or False,
                    &quot;doubleArray&quot;: {
                      &quot;values&quot;: [
                        3.14,
                      ],
                    },
                    &quot;doubleValue&quot;: 3.14,
                    &quot;intArray&quot;: {
                      &quot;values&quot;: [
                        &quot;A String&quot;,
                      ],
                    },
                    &quot;intValue&quot;: &quot;A String&quot;,
                    &quot;protoValue&quot;: {
                      &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
                    },
                    &quot;stringArray&quot;: {
                      &quot;values&quot;: [
                        &quot;A String&quot;,
                      ],
                    },
                    &quot;stringValue&quot;: &quot;A String&quot;,
                  },
                },
              ],
            },
          ],
          &quot;condition&quot;: &quot;A String&quot;, # Standard filter expression for this task to become an eligible next task.
          &quot;description&quot;: &quot;A String&quot;, # User-provided description intended to give more business context about the next task edge or condition.
          &quot;label&quot;: &quot;A String&quot;, # User-provided label that is attached to this edge in the UI.
          &quot;taskConfigId&quot;: &quot;A String&quot;, # ID of the next task.
          &quot;taskNumber&quot;: &quot;A String&quot;, # Task number of the next task.
        },
      ],
      &quot;nextTasksExecutionPolicy&quot;: &quot;A String&quot;, # The policy dictating the execution of the next set of tasks for the current task.
      &quot;parameters&quot;: { # The customized parameters the user can pass to this task.
        &quot;a_key&quot;: { # Key-value pair of EventBus parameters.
          &quot;dataType&quot;: &quot;A String&quot;, # Explicitly getting the type of the parameter.
          &quot;key&quot;: &quot;A String&quot;, # Key is used to retrieve the corresponding parameter value. This should be unique for a given fired event. These parameters must be predefined in the workflow definition.
          &quot;masked&quot;: True or False, # True if this parameter should be masked in the logs
          &quot;value&quot;: { # To support various types of parameter values. Next available id: 14 # Values for the defined keys. Each value can either be string, int, double or any proto message.
            &quot;booleanArray&quot;: {
              &quot;booleanValues&quot;: [
                True or False,
              ],
            },
            &quot;booleanValue&quot;: True or False,
            &quot;doubleArray&quot;: {
              &quot;doubleValues&quot;: [
                3.14,
              ],
            },
            &quot;doubleValue&quot;: 3.14,
            &quot;intArray&quot;: {
              &quot;intValues&quot;: [
                &quot;A String&quot;,
              ],
            },
            &quot;intValue&quot;: &quot;A String&quot;,
            &quot;jsonValue&quot;: &quot;A String&quot;,
            &quot;protoArray&quot;: {
              &quot;protoValues&quot;: [
                {
                  &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
                },
              ],
            },
            &quot;protoValue&quot;: {
              &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
            },
            &quot;serializedObjectValue&quot;: {
              &quot;objectValue&quot;: &quot;A String&quot;,
            },
            &quot;stringArray&quot;: {
              &quot;stringValues&quot;: [
                &quot;A String&quot;,
              ],
            },
            &quot;stringValue&quot;: &quot;A String&quot;,
          },
        },
      },
      &quot;position&quot;: { # Represents two-dimensional positions. # Optional. Informs the front-end application where to draw this task config on the UI.
        &quot;x&quot;: 42,
        &quot;y&quot;: 42,
      },
      &quot;precondition&quot;: &quot;A String&quot;, # Optional. Standard filter expression evaluated before execution. Independent of other conditions and tasks. Can be used to enable rollout. e.g. &quot;rollout(5)&quot; will only allow 5% of incoming traffic to task.
      &quot;preconditionLabel&quot;: &quot;A String&quot;, # Optional. User-provided label that is attached to precondition in the UI.
      &quot;rollbackStrategy&quot;: { # Next available id: 4 # Optional. Contains information about what needs to be done upon failure (either a permanent error or after it has been retried too many times).
        &quot;parameters&quot;: { # LINT.IfChange This message is used for processing and persisting (when applicable) key value pair parameters for each event in the event bus. Please see # Optional. The customized parameters the user can pass to this task.
          &quot;parameters&quot;: [ # Parameters are a part of Event and can be used to communicate between different tasks that are part of the same workflow execution.
            { # Key-value pair of EventBus parameters.
              &quot;dataType&quot;: &quot;A String&quot;, # Explicitly getting the type of the parameter.
              &quot;key&quot;: &quot;A String&quot;, # Key is used to retrieve the corresponding parameter value. This should be unique for a given fired event. These parameters must be predefined in the workflow definition.
              &quot;masked&quot;: True or False, # True if this parameter should be masked in the logs
              &quot;value&quot;: { # To support various types of parameter values. Next available id: 14 # Values for the defined keys. Each value can either be string, int, double or any proto message.
                &quot;booleanArray&quot;: {
                  &quot;booleanValues&quot;: [
                    True or False,
                  ],
                },
                &quot;booleanValue&quot;: True or False,
                &quot;doubleArray&quot;: {
                  &quot;doubleValues&quot;: [
                    3.14,
                  ],
                },
                &quot;doubleValue&quot;: 3.14,
                &quot;intArray&quot;: {
                  &quot;intValues&quot;: [
                    &quot;A String&quot;,
                  ],
                },
                &quot;intValue&quot;: &quot;A String&quot;,
                &quot;jsonValue&quot;: &quot;A String&quot;,
                &quot;protoArray&quot;: {
                  &quot;protoValues&quot;: [
                    {
                      &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
                    },
                  ],
                },
                &quot;protoValue&quot;: {
                  &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
                },
                &quot;serializedObjectValue&quot;: {
                  &quot;objectValue&quot;: &quot;A String&quot;,
                },
                &quot;stringArray&quot;: {
                  &quot;stringValues&quot;: [
                    &quot;A String&quot;,
                  ],
                },
                &quot;stringValue&quot;: &quot;A String&quot;,
              },
            },
          ],
        },
        &quot;rollbackTaskImplementationClassName&quot;: &quot;A String&quot;, # Required. This is the name of the task that needs to be executed upon rollback of this task.
        &quot;taskNumbersToRollback&quot;: [ # Required. These are the tasks numbers of the tasks whose `rollback_strategy.rollback_task_implementation_class_name` needs to be executed upon failure of this task.
          &quot;A String&quot;,
        ],
      },
      &quot;successPolicy&quot;: { # Policy that dictates the behavior for the task after it completes successfully. # Determines what action to take upon successful task completion.
        &quot;finalState&quot;: &quot;A String&quot;, # State to which the execution snapshot status will be set if the task succeeds.
      },
      &quot;synchronousCallFailurePolicy&quot;: { # Policy that defines the task retry logic and failure type. If no FailurePolicy is defined for a task, all its dependent tasks will not be executed (i.e, a `retry_strategy` of NONE will be applied). # Optional. Determines the number of times the task will be retried on failure and with what retry strategy. This is applicable for synchronous calls to Eventbus alone (Post).
        &quot;intervalInSeconds&quot;: &quot;A String&quot;, # Required if retry_strategy is FIXED_INTERVAL or LINEAR/EXPONENTIAL_BACKOFF/RESTART_WORKFLOW_WITH_BACKOFF. Defines the initial interval for backoff.
        &quot;maxNumRetries&quot;: 42, # Required if retry_strategy is FIXED_INTERVAL or LINEAR/EXPONENTIAL_BACKOFF/RESTART_WORKFLOW_WITH_BACKOFF. Defines the number of times the task will be retried if failed.
        &quot;retryCondition&quot;: &quot;A String&quot;, # Optional. The retry condition that will be evaluated for this failure policy with the corresponding retry strategy.
        &quot;retryStrategy&quot;: &quot;A String&quot;, # Defines what happens to the task upon failure.
      },
      &quot;taskEntity&quot;: { # Contains a task&#x27;s metadata and associated information. Next available id: 7 # Copy of the task entity that this task config is an instance of.
        &quot;disabledForVpcSc&quot;: True or False, # True if the task has conflict with vpcsc
        &quot;metadata&quot;: { # TaskMetadata are attributes that are associated to every common Task we have. # Metadata inclueds the task name, author and so on.
          &quot;activeTaskName&quot;: &quot;A String&quot;, # The new task name to replace the current task if it is deprecated. Otherwise, it is the same as the current task name.
          &quot;admins&quot;: [
            { # Admins are owners of a Task, and have all permissions on a particular task identified by the task name. By default, Eventbus periodically scans all task metadata and syncs (adds) any new admins defined here to Zanzibar.
              &quot;googleGroupEmail&quot;: &quot;A String&quot;,
              &quot;userEmail&quot;: &quot;A String&quot;,
            },
          ],
          &quot;category&quot;: &quot;A String&quot;,
          &quot;codeSearchLink&quot;: &quot;A String&quot;, # The Code Search link to the Task Java file.
          &quot;defaultJsonValidationOption&quot;: &quot;A String&quot;, # Controls whether JSON workflow parameters are validated against provided schemas before and/or after this task&#x27;s execution.
          &quot;defaultSpec&quot;: &quot;A String&quot;, # Contains the initial configuration of the task with default values set. For now, The string should be compatible to an ASCII-proto format.
          &quot;description&quot;: &quot;A String&quot;, # In a few sentences, describe the purpose and usage of the task.
          &quot;descriptiveName&quot;: &quot;A String&quot;, # The string name to show on the task list on the Workflow editor screen. This should be a very short, one to two words name for the task. (e.g. &quot;Send Mail&quot;)
          &quot;docMarkdown&quot;: &quot;A String&quot;, # Snippet of markdown documentation to embed in the RHP for this task.
          &quot;externalCategory&quot;: &quot;A String&quot;,
          &quot;externalCategorySequence&quot;: 42, # Sequence with which the task in specific category to be displayed in task discovery panel for external users.
          &quot;externalDocHtml&quot;: &quot;A String&quot;, # External-facing documention embedded in the RHP for this task.
          &quot;externalDocLink&quot;: &quot;A String&quot;, # Doc link for external-facing documentation (separate from g3doc).
          &quot;externalDocMarkdown&quot;: &quot;A String&quot;, # DEPRECATED: Use external_doc_html.
          &quot;g3DocLink&quot;: &quot;A String&quot;, # URL to the associated G3 Doc for the task if available
          &quot;iconLink&quot;: &quot;A String&quot;, # URL to gstatic image icon for this task. This icon shows up on the task list panel along with the task name in the Workflow Editor screen. Use the 24p, 2x, gray color icon image format.
          &quot;isDeprecated&quot;: True or False, # The deprecation status of the current task. Default value is false;
          &quot;name&quot;: &quot;A String&quot;, # The actual class name or the annotated name of the task. Task Author should initialize this field with value from the getName() method of the Task class.
          &quot;standaloneExternalDocHtml&quot;: &quot;A String&quot;, # External-facing documention for standalone IP in pantheon embedded in the RHP for this task. Non null only if different from external_doc_html
          &quot;status&quot;: &quot;A String&quot;, # Allows author to indicate if the task is ready to use or not. If not set, then it will default to INACTIVE.
          &quot;system&quot;: &quot;A String&quot;,
          &quot;tags&quot;: [ # A set of tags that pertain to a particular task. This can be used to improve the searchability of tasks with several names (&quot;REST Caller&quot; vs. &quot;Call REST Endpoint&quot;) or to help users find tasks based on related words.
            &quot;A String&quot;,
          ],
        },
        &quot;paramSpecs&quot;: { # Declarations for inputs/outputs for a TypedTask. This is also associated with the METADATA mask.
          &quot;parameters&quot;: [
            { # Key-value pair of EventBus task parameters. Next id: 13
              &quot;className&quot;: &quot;A String&quot;, # The FQCN of the Java object this represents. A string, for example, would be &quot;java.lang.String&quot;. If this is &quot;java.lang.Object&quot;, the parameter can be of any type.
              &quot;collectionElementClassName&quot;: &quot;A String&quot;, # If it is a collection of objects, this would be the FCQN of every individual element in the collection. If this is &quot;java.lang.Object&quot;, the parameter is a collection of any type.
              &quot;config&quot;: { # Optional fields, such as help text and other useful info.
                &quot;descriptivePhrase&quot;: &quot;A String&quot;, # A short phrase to describe what this parameter contains.
                &quot;helpText&quot;: &quot;A String&quot;, # Detailed help text for this parameter containing information not provided elsewhere. For example, instructions on how to migrate from a deprecated parameter.
                &quot;hideDefaultValue&quot;: True or False, # Whether the default value is hidden in the UI.
                &quot;inputDisplayOption&quot;: &quot;A String&quot;,
                &quot;isHidden&quot;: True or False, # Whether this field is hidden in the UI.
                &quot;label&quot;: &quot;A String&quot;, # A user-friendly label for the parameter.
                &quot;parameterNameOption&quot;: &quot;A String&quot;,
                &quot;subSectionLabel&quot;: &quot;A String&quot;, # A user-friendly label for subSection under which the parameter will be displayed.
                &quot;uiPlaceholderText&quot;: &quot;A String&quot;, # Placeholder text which will appear in the UI input form for this parameter.
              },
              &quot;dataType&quot;: &quot;A String&quot;, # The data type of the parameter.
              &quot;defaultValue&quot;: { # To support various types of parameter values. Next available id: 14 # Default values for the defined keys. Each value can either be string, int, double or any proto message or a serialized object.
                &quot;booleanArray&quot;: {
                  &quot;booleanValues&quot;: [
                    True or False,
                  ],
                },
                &quot;booleanValue&quot;: True or False,
                &quot;doubleArray&quot;: {
                  &quot;doubleValues&quot;: [
                    3.14,
                  ],
                },
                &quot;doubleValue&quot;: 3.14,
                &quot;intArray&quot;: {
                  &quot;intValues&quot;: [
                    &quot;A String&quot;,
                  ],
                },
                &quot;intValue&quot;: &quot;A String&quot;,
                &quot;jsonValue&quot;: &quot;A String&quot;,
                &quot;protoArray&quot;: {
                  &quot;protoValues&quot;: [
                    {
                      &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
                    },
                  ],
                },
                &quot;protoValue&quot;: {
                  &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
                },
                &quot;serializedObjectValue&quot;: {
                  &quot;objectValue&quot;: &quot;A String&quot;,
                },
                &quot;stringArray&quot;: {
                  &quot;stringValues&quot;: [
                    &quot;A String&quot;,
                  ],
                },
                &quot;stringValue&quot;: &quot;A String&quot;,
              },
              &quot;isDeprecated&quot;: True or False, # If set, this entry is deprecated, so further use of this parameter should be prohibited.
              &quot;isOutput&quot;: True or False,
              &quot;jsonSchema&quot;: &quot;A String&quot;, # If the data_type is JSON_VALUE, then this will define its schema.
              &quot;key&quot;: &quot;A String&quot;, # Key is used to retrieve the corresponding parameter value. This should be unique for a given task. These parameters must be predefined in the workflow definition.
              &quot;protoDef&quot;: { # Populated if this represents a proto or proto array.
                &quot;fullName&quot;: &quot;A String&quot;, # The fully-qualified proto name. This message, for example, would be &quot;enterprise.crm.eventbus.proto.ParamSpecEntry.ProtoDefinition&quot;.
                &quot;path&quot;: &quot;A String&quot;, # Path to the proto file that contains the message type&#x27;s definition.
              },
              &quot;required&quot;: True or False, # If set, the user must provide an input value for this parameter.
              &quot;validationRule&quot;: { # Rule used to validate inputs (individual values and collection elements) for this parameter.
                &quot;doubleRange&quot;: { # Range used to validate doubles and floats.
                  &quot;max&quot;: 3.14, # The inclusive maximum of the acceptable range.
                  &quot;min&quot;: 3.14, # The inclusive minimum of the acceptable range.
                },
                &quot;intRange&quot;: { # Range used to validate longs and ints.
                  &quot;max&quot;: &quot;A String&quot;, # The inclusive maximum of the acceptable range.
                  &quot;min&quot;: &quot;A String&quot;, # The inclusive minimum of the acceptable range.
                },
                &quot;stringRegex&quot;: { # Rule used to validate strings.
                  &quot;exclusive&quot;: True or False, # Whether the regex matcher is applied exclusively (if true, matching values will be rejected).
                  &quot;regex&quot;: &quot;A String&quot;, # The regex applied to the input value(s).
                },
              },
            },
          ],
        },
        &quot;stats&quot;: { # Stats for the requested dimensions: QPS, duration, and error/warning rate # Deprecated - statistics from the Monarch query.
          &quot;dimensions&quot;: { # Dimensions that these stats have been aggregated on.
            &quot;clientId&quot;: &quot;A String&quot;,
            &quot;enumFilterType&quot;: &quot;A String&quot;, # Whether to include or exclude the enums matching the regex.
            &quot;errorEnumString&quot;: &quot;A String&quot;,
            &quot;retryAttempt&quot;: &quot;A String&quot;,
            &quot;taskName&quot;: &quot;A String&quot;,
            &quot;taskNumber&quot;: &quot;A String&quot;,
            &quot;triggerId&quot;: &quot;A String&quot;, # Stats have been or will be aggregated on set fields for any semantically-meaningful combination.
            &quot;warningEnumString&quot;: &quot;A String&quot;,
            &quot;workflowId&quot;: &quot;A String&quot;,
            &quot;workflowName&quot;: &quot;A String&quot;,
          },
          &quot;durationInSeconds&quot;: 3.14, # Average duration in seconds.
          &quot;errorRate&quot;: 3.14, # Average error rate.
          &quot;qps&quot;: 3.14, # Queries per second.
          &quot;warningRate&quot;: 3.14, # Average warning rate.
        },
        &quot;taskType&quot;: &quot;A String&quot;, # Defines the type of the task
        &quot;uiConfig&quot;: { # Task authors would use this type to configure the UI for a particular task by specifying what UI config modules should be included to compose the UI. Learn more about config module framework: # UI configuration for this task Also associated with the METADATA mask.
          &quot;taskUiModuleConfigs&quot;: [ # Configurations of included config modules.
            { # Task author would use this type to configure a config module.
              &quot;moduleId&quot;: &quot;A String&quot;, # ID of the config module.
            },
          ],
        },
      },
      &quot;taskExecutionStrategy&quot;: &quot;A String&quot;, # The policy dictating the execution strategy of this task.
      &quot;taskName&quot;: &quot;A String&quot;, # The name for the task.
      &quot;taskNumber&quot;: &quot;A String&quot;, # REQUIRED: the identifier of this task within its parent event config, specified by the client. This should be unique among all the tasks belong to the same event config. We use this field as the identifier to find next tasks (via field `next_tasks.task_number`).
      &quot;taskSpec&quot;: &quot;A String&quot;, # A string template that allows user to configure task parameters (with either literal default values or tokens which will be resolved at execution time) for the task. It will eventually replace the old &quot;parameters&quot; field.
      &quot;taskTemplateName&quot;: &quot;A String&quot;, # Used to define task-template name if task is of type task-template
      &quot;taskType&quot;: &quot;A String&quot;, # Defines the type of the task
    },
  ],
  &quot;teardown&quot;: { # Optional. Contains a graph of tasks that will be executed before putting the event in a terminal state (SUCCEEDED/FAILED/FATAL), regardless of success or failure, similar to &quot;finally&quot; in code.
    &quot;teardownTaskConfigs&quot;: [ # Required.
      {
        &quot;creatorEmail&quot;: &quot;A String&quot;, # The creator&#x27;s email address.
        &quot;name&quot;: &quot;A String&quot;, # Required. Unique identifier of the teardown task within this Config. We use this field as the identifier to find next teardown tasks.
        &quot;nextTeardownTask&quot;: { # The teardown task that is next in line to be executed. We support only sequential execution of teardown tasks (i.e. no branching).
          &quot;name&quot;: &quot;A String&quot;, # Required. Name of the next teardown task.
        },
        &quot;parameters&quot;: { # LINT.IfChange This message is used for processing and persisting (when applicable) key value pair parameters for each event in the event bus. Please see # The parameters the user can pass to this task.
          &quot;parameters&quot;: [ # Parameters are a part of Event and can be used to communicate between different tasks that are part of the same integration execution.
            { # Key-value pair of EventBus parameters.
              &quot;key&quot;: &quot;A String&quot;, # Key is used to retrieve the corresponding parameter value. This should be unique for a given fired event. These parameters must be predefined in the integration definition.
              &quot;masked&quot;: True or False, # True if this parameter should be masked in the logs
              &quot;value&quot;: { # LINT.IfChange To support various types of parameter values. Next available id: 14 # Values for the defined keys. Each value can either be string, int, double or any proto message.
                &quot;booleanArray&quot;: {
                  &quot;booleanValues&quot;: [
                    True or False,
                  ],
                },
                &quot;booleanValue&quot;: True or False,
                &quot;doubleArray&quot;: {
                  &quot;doubleValues&quot;: [
                    3.14,
                  ],
                },
                &quot;doubleValue&quot;: 3.14,
                &quot;intArray&quot;: {
                  &quot;intValues&quot;: [
                    &quot;A String&quot;,
                  ],
                },
                &quot;intValue&quot;: &quot;A String&quot;,
                &quot;protoArray&quot;: {
                  &quot;protoValues&quot;: [
                    {
                      &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
                    },
                  ],
                },
                &quot;protoValue&quot;: {
                  &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
                },
                &quot;serializedObjectValue&quot;: {
                  &quot;objectValue&quot;: &quot;A String&quot;,
                },
                &quot;stringArray&quot;: {
                  &quot;stringValues&quot;: [
                    &quot;A String&quot;,
                  ],
                },
                &quot;stringValue&quot;: &quot;A String&quot;,
              },
            },
          ],
        },
        &quot;properties&quot;: { # LINT.IfChange This message is used for storing key value pair properties for each Event / Task in the EventBus.
          &quot;properties&quot;: [ # An unordered list of property entries.
            { # Key-value pair of EventBus property.
              &quot;key&quot;: &quot;A String&quot;, # Key is used to retrieve the corresponding property value. This should be unique for a given fired event. The Tasks should be aware of the keys used while firing the events for them to be able to retrieve the values.
              &quot;value&quot;: { # Used for define type for values. Currently supported value types include int, string, double, array, and any proto message. # Values for the defined keys. Each value can either be string, int, double or any proto message.
                &quot;booleanValue&quot;: True or False,
                &quot;doubleArray&quot;: {
                  &quot;values&quot;: [
                    3.14,
                  ],
                },
                &quot;doubleValue&quot;: 3.14,
                &quot;intArray&quot;: {
                  &quot;values&quot;: [
                    &quot;A String&quot;,
                  ],
                },
                &quot;intValue&quot;: &quot;A String&quot;,
                &quot;protoValue&quot;: {
                  &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
                },
                &quot;stringArray&quot;: {
                  &quot;values&quot;: [
                    &quot;A String&quot;,
                  ],
                },
                &quot;stringValue&quot;: &quot;A String&quot;,
              },
            },
          ],
        },
        &quot;teardownTaskImplementationClassName&quot;: &quot;A String&quot;, # Required. Implementation class name.
      },
    ],
  },
  &quot;triggerConfigs&quot;: [ # Optional. Trigger configurations.
    { # Configuration detail of a trigger.
      &quot;alertConfig&quot;: [ # Optional. An alert threshold configuration for the [trigger + client + integration] tuple. If these values are not specified in the trigger config, default values will be populated by the system. Note that there must be exactly one alert threshold configured per [client + trigger + integration] when published.
        { # Message to be used to configure custom alerting in the {@code EventConfig} protos for an event.
          &quot;aggregationPeriod&quot;: &quot;A String&quot;, # The period over which the metric value should be aggregated and evaluated. Format is , where integer should be a positive integer and unit should be one of (s,m,h,d,w) meaning (second, minute, hour, day, week). For an EXPECTED_MIN threshold, this aggregation_period must be lesser than 24 hours.
          &quot;alertThreshold&quot;: 42, # For how many contiguous aggregation periods should the expected min or max be violated for the alert to be fired.
          &quot;disableAlert&quot;: True or False, # Set to false by default. When set to true, the metrics are not aggregated or pushed to Monarch for this integration alert.
          &quot;displayName&quot;: &quot;A String&quot;, # Name of the alert. This will be displayed in the alert subject. If set, this name should be unique within the scope of the integration.
          &quot;durationThreshold&quot;: &quot;A String&quot;, # Should be specified only for *AVERAGE_DURATION and *PERCENTILE_DURATION metrics. This member should be used to specify what duration value the metrics should exceed for the alert to trigger.
          &quot;metricType&quot;: &quot;A String&quot;, # The type of metric.
          &quot;onlyFinalAttempt&quot;: True or False, # For either events or tasks, depending on the type of alert, count only final attempts, not retries.
          &quot;thresholdType&quot;: &quot;A String&quot;, # The threshold type, whether lower(expected_min) or upper(expected_max), for which this alert is being configured. If value falls below expected_min or exceeds expected_max, an alert will be fired.
          &quot;thresholdValue&quot;: { # The threshold value of the metric, above or below which the alert should be triggered. See EventAlertConfig or TaskAlertConfig for the different alert metric types in each case. For the *RATE metrics, one or both of these fields may be set. Zero is the default value and can be left at that. For *PERCENTILE_DURATION metrics, one or both of these fields may be set, and also, the duration threshold value should be specified in the threshold_duration_ms member below. For *AVERAGE_DURATION metrics, these fields should not be set at all. A different member, threshold_duration_ms, must be set in the EventAlertConfig or the TaskAlertConfig. # The metric value, above or below which the alert should be triggered.
            &quot;absolute&quot;: &quot;A String&quot;, # Absolute value threshold.
            &quot;percentage&quot;: 42, # Percentage threshold.
          },
        },
      ],
      &quot;cloudSchedulerConfig&quot;: { # Cloud Scheduler Trigger configuration # Optional. Cloud Scheduler Trigger related metadata
        &quot;cronTab&quot;: &quot;A String&quot;, # Required. The cron tab of cloud scheduler trigger.
        &quot;errorMessage&quot;: &quot;A String&quot;, # Optional. When the job was deleted from Pantheon UI, error_message will be populated when Get/List integrations
        &quot;location&quot;: &quot;A String&quot;, # Required. The location where associated cloud scheduler job will be created
        &quot;serviceAccountEmail&quot;: &quot;A String&quot;, # Required. Service account used by Cloud Scheduler to trigger the integration at scheduled time
      },
      &quot;description&quot;: &quot;A String&quot;, # Optional. User-provided description intended to give additional business context about the task.
      &quot;errorCatcherId&quot;: &quot;A String&quot;, # Optional. Optional Error catcher id of the error catch flow which will be executed when execution error happens in the task
      &quot;inputVariables&quot;: { # Variables names mapped to api trigger. # Optional. List of input variables for the api trigger.
        &quot;names&quot;: [ # Optional. List of variable names.
          &quot;A String&quot;,
        ],
      },
      &quot;label&quot;: &quot;A String&quot;, # Optional. The user created label for a particular trigger.
      &quot;nextTasksExecutionPolicy&quot;: &quot;A String&quot;, # Optional. Dictates how next tasks will be executed.
      &quot;outputVariables&quot;: { # Variables names mapped to api trigger. # Optional. List of output variables for the api trigger.
        &quot;names&quot;: [ # Optional. List of variable names.
          &quot;A String&quot;,
        ],
      },
      &quot;position&quot;: { # Configuration detail of coordinate, it used for UI # Optional. Informs the front-end application where to draw this error catcher config on the UI.
        &quot;x&quot;: 42, # Required. X axis of the coordinate
        &quot;y&quot;: 42, # Required. Y axis of the coordinate
      },
      &quot;properties&quot;: { # Optional. Configurable properties of the trigger, not to be confused with integration parameters. E.g. &quot;name&quot; is a property for API triggers and &quot;subscription&quot; is a property for Pub/sub triggers.
        &quot;a_key&quot;: &quot;A String&quot;,
      },
      &quot;startTasks&quot;: [ # Optional. Set of tasks numbers from where the integration execution is started by this trigger. If this is empty, then integration is executed with default start tasks. In the list of start tasks, none of two tasks can have direct ancestor-descendant relationships (i.e. in a same integration execution graph).
        { # The task that is next in line to be executed, if the condition specified evaluated to true.
          &quot;condition&quot;: &quot;A String&quot;, # Standard filter expression for this task to become an eligible next task.
          &quot;description&quot;: &quot;A String&quot;, # User-provided description intended to give additional business context about the task.
          &quot;displayName&quot;: &quot;A String&quot;, # User-provided label that is attached to this edge in the UI.
          &quot;taskConfigId&quot;: &quot;A String&quot;, # ID of the next task.
          &quot;taskId&quot;: &quot;A String&quot;, # Task number of the next task.
        },
      ],
      &quot;trigger&quot;: &quot;A String&quot;, # Optional. Name of the trigger. Example: &quot;API Trigger&quot;, &quot;Cloud Pub Sub Trigger&quot; When set will be sent out to monitoring dashabord for tracking purpose.
      &quot;triggerId&quot;: &quot;A String&quot;, # Optional. Auto-generated trigger ID. The ID is based on the properties that you define in the trigger config. For example, for an API trigger, the trigger ID follows the format: api_trigger/TRIGGER_NAME Where trigger config has properties with value {&quot;Trigger name&quot;: TRIGGER_NAME}
      &quot;triggerNumber&quot;: &quot;A String&quot;, # Required. A number to uniquely identify each trigger config within the integration on UI.
      &quot;triggerType&quot;: &quot;A String&quot;, # Optional. Type of trigger
    },
  ],
  &quot;triggerConfigsInternal&quot;: [ # Optional. Trigger configurations.
    { # Configuration detail of a trigger. Next available id: 22
      &quot;alertConfig&quot;: [ # An alert threshold configuration for the [trigger + client + workflow] tuple. If these values are not specified in the trigger config, default values will be populated by the system. Note that there must be exactly one alert threshold configured per [client + trigger + workflow] when published.
        { # Message to be used to configure custom alerting in the {@code EventConfig} protos for an event.
          &quot;aggregationPeriod&quot;: &quot;A String&quot;, # For an EXPECTED_MIN threshold, this aggregation_period must be lesser than 24 hours.
          &quot;alertDisabled&quot;: True or False, # Set to false by default. When set to true, the metrics are not aggregated or pushed to Monarch for this workflow alert.
          &quot;alertName&quot;: &quot;A String&quot;, # A name to identify this alert. This will be displayed in the alert subject. If set, this name should be unique within the scope of the workflow.
          &quot;clientId&quot;: &quot;A String&quot;, # Client associated with this alert configuration.
          &quot;durationThresholdMs&quot;: &quot;A String&quot;, # Should be specified only for *AVERAGE_DURATION and *PERCENTILE_DURATION metrics. This member should be used to specify what duration value the metrics should exceed for the alert to trigger.
          &quot;errorEnumList&quot;: { # List of error enums for alerts.
            &quot;enumStrings&quot;: [
              &quot;A String&quot;,
            ],
            &quot;filterType&quot;: &quot;A String&quot;,
          },
          &quot;metricType&quot;: &quot;A String&quot;,
          &quot;numAggregationPeriods&quot;: 42, # For how many contiguous aggregation periods should the expected min or max be violated for the alert to be fired.
          &quot;onlyFinalAttempt&quot;: True or False, # For either events or tasks, depending on the type of alert, count only final attempts, not retries.
          &quot;playbookUrl&quot;: &quot;A String&quot;, # Link to a playbook for resolving the issue that triggered this alert.
          &quot;thresholdType&quot;: &quot;A String&quot;, # The threshold type, whether lower(expected_min) or upper(expected_max), for which this alert is being configured. If value falls below expected_min or exceeds expected_max, an alert will be fired.
          &quot;thresholdValue&quot;: { # The threshold value of the metric, above or below which the alert should be triggered. See EventAlertConfig or TaskAlertConfig for the different alert metric types in each case. For the *RATE metrics, one or both of these fields may be set. Zero is the default value and can be left at that. For *PERCENTILE_DURATION metrics, one or both of these fields may be set, and also, the duration threshold value should be specified in the threshold_duration_ms member below. For *AVERAGE_DURATION metrics, these fields should not be set at all. A different member, threshold_duration_ms, must be set in the EventAlertConfig or the TaskAlertConfig. # The metric value, above or below which the alert should be triggered.
            &quot;absolute&quot;: &quot;A String&quot;,
            &quot;percentage&quot;: 42,
          },
          &quot;warningEnumList&quot;: { # List of error enums for alerts.
            &quot;enumStrings&quot;: [
              &quot;A String&quot;,
            ],
            &quot;filterType&quot;: &quot;A String&quot;,
          },
        },
      ],
      &quot;cloudSchedulerConfig&quot;: { # Cloud Scheduler Trigger configuration
        &quot;cronTab&quot;: &quot;A String&quot;, # Required. The cron tab of cloud scheduler trigger.
        &quot;errorMessage&quot;: &quot;A String&quot;, # Optional. When the job was deleted from Pantheon UI, error_message will be populated when Get/List integrations
        &quot;location&quot;: &quot;A String&quot;, # Required. The location where associated cloud scheduler job will be created
        &quot;serviceAccountEmail&quot;: &quot;A String&quot;, # Required. Service account used by Cloud Scheduler to trigger the integration at scheduled time
      },
      &quot;description&quot;: &quot;A String&quot;, # User-provided description intended to give more business context about the task.
      &quot;enabledClients&quot;: [ # Required. The list of client ids which are enabled to execute the workflow using this trigger. In other words, these clients have the workflow execution privledges for this trigger. For API trigger, the client id in the incoming request is validated against the list of enabled clients. For non-API triggers, one workflow execution is triggered on behalf of each enabled client.
        &quot;A String&quot;,
      ],
      &quot;errorCatcherId&quot;: &quot;A String&quot;, # Optional Error catcher id of the error catch flow which will be executed when execution error happens in the task
      &quot;inputVariables&quot;: { # Variables names mapped to api trigger. # Optional. List of input variables for the api trigger.
        &quot;names&quot;: [ # Optional. List of variable names.
          &quot;A String&quot;,
        ],
      },
      &quot;label&quot;: &quot;A String&quot;, # The user created label for a particular trigger.
      &quot;nextTasksExecutionPolicy&quot;: &quot;A String&quot;, # Dictates how next tasks will be executed.
      &quot;outputVariables&quot;: { # Variables names mapped to api trigger. # Optional. List of output variables for the api trigger.
        &quot;names&quot;: [ # Optional. List of variable names.
          &quot;A String&quot;,
        ],
      },
      &quot;pauseWorkflowExecutions&quot;: True or False, # Optional. If set to true, any upcoming requests for this trigger config will be paused and the executions will be resumed later when the flag is reset. The workflow to which this trigger config belongs has to be in ACTIVE status for the executions to be paused or resumed.
      &quot;position&quot;: { # Represents two-dimensional positions. # Optional. Informs the front-end application where to draw this trigger config on the UI.
        &quot;x&quot;: 42,
        &quot;y&quot;: 42,
      },
      &quot;properties&quot;: { # Configurable properties of the trigger, not to be confused with workflow parameters. E.g. &quot;name&quot; is a property for API triggers and &quot;subscription&quot; is a property for Cloud Pubsub triggers.
        &quot;a_key&quot;: &quot;A String&quot;,
      },
      &quot;startTasks&quot;: [ # Set of tasks numbers from where the workflow execution is started by this trigger. If this is empty, then workflow is executed with default start tasks. In the list of start tasks, none of two tasks can have direct ancestor-descendant relationships (i.e. in a same workflow execution graph).
        { # The task that is next in line to be executed, if the condition specified evaluated to true.
          &quot;combinedConditions&quot;: [ # Combined condition for this task to become an eligible next task. Each of these combined_conditions are joined with logical OR. DEPRECATED: use `condition`
            { # This message recursively combines constituent conditions using logical AND.
              &quot;conditions&quot;: [ # A set of individual constituent conditions.
                { # Condition that uses `operator` to evaluate the key against the value.
                  &quot;eventPropertyKey&quot;: &quot;A String&quot;, # Key that&#x27;s evaluated against the `value`. Please note the data type of the runtime value associated with the key should match the data type of `value`, else an IllegalArgumentException is thrown.
                  &quot;operator&quot;: &quot;A String&quot;, # Operator used to evaluate the condition. Please note that an operator with an inappropriate key/value operand will result in IllegalArgumentException, e.g. CONTAINS with boolean key/value pair.
                  &quot;value&quot;: { # Used for define type for values. Currently supported value types include int, string, double, array, and any proto message. # Value that&#x27;s checked for the key.
                    &quot;booleanValue&quot;: True or False,
                    &quot;doubleArray&quot;: {
                      &quot;values&quot;: [
                        3.14,
                      ],
                    },
                    &quot;doubleValue&quot;: 3.14,
                    &quot;intArray&quot;: {
                      &quot;values&quot;: [
                        &quot;A String&quot;,
                      ],
                    },
                    &quot;intValue&quot;: &quot;A String&quot;,
                    &quot;protoValue&quot;: {
                      &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
                    },
                    &quot;stringArray&quot;: {
                      &quot;values&quot;: [
                        &quot;A String&quot;,
                      ],
                    },
                    &quot;stringValue&quot;: &quot;A String&quot;,
                  },
                },
              ],
            },
          ],
          &quot;condition&quot;: &quot;A String&quot;, # Standard filter expression for this task to become an eligible next task.
          &quot;description&quot;: &quot;A String&quot;, # User-provided description intended to give more business context about the next task edge or condition.
          &quot;label&quot;: &quot;A String&quot;, # User-provided label that is attached to this edge in the UI.
          &quot;taskConfigId&quot;: &quot;A String&quot;, # ID of the next task.
          &quot;taskNumber&quot;: &quot;A String&quot;, # Task number of the next task.
        },
      ],
      &quot;triggerCriteria&quot;: { # Optional. When set, Eventbus will run the task specified in the trigger_criteria and validate the result using the trigger_criteria.condition, and only execute the workflow when result is true.
        &quot;condition&quot;: &quot;A String&quot;, # Required. Standard filter expression, when true the workflow will be executed. If there&#x27;s no trigger_criteria_task_implementation_class_name specified, the condition will be validated directly.
        &quot;parameters&quot;: { # LINT.IfChange This message is used for processing and persisting (when applicable) key value pair parameters for each event in the event bus. Please see # Optional. To be used in TaskConfig for the implementation class.
          &quot;parameters&quot;: [ # Parameters are a part of Event and can be used to communicate between different tasks that are part of the same integration execution.
            { # Key-value pair of EventBus parameters.
              &quot;key&quot;: &quot;A String&quot;, # Key is used to retrieve the corresponding parameter value. This should be unique for a given fired event. These parameters must be predefined in the integration definition.
              &quot;masked&quot;: True or False, # True if this parameter should be masked in the logs
              &quot;value&quot;: { # LINT.IfChange To support various types of parameter values. Next available id: 14 # Values for the defined keys. Each value can either be string, int, double or any proto message.
                &quot;booleanArray&quot;: {
                  &quot;booleanValues&quot;: [
                    True or False,
                  ],
                },
                &quot;booleanValue&quot;: True or False,
                &quot;doubleArray&quot;: {
                  &quot;doubleValues&quot;: [
                    3.14,
                  ],
                },
                &quot;doubleValue&quot;: 3.14,
                &quot;intArray&quot;: {
                  &quot;intValues&quot;: [
                    &quot;A String&quot;,
                  ],
                },
                &quot;intValue&quot;: &quot;A String&quot;,
                &quot;protoArray&quot;: {
                  &quot;protoValues&quot;: [
                    {
                      &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
                    },
                  ],
                },
                &quot;protoValue&quot;: {
                  &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
                },
                &quot;serializedObjectValue&quot;: {
                  &quot;objectValue&quot;: &quot;A String&quot;,
                },
                &quot;stringArray&quot;: {
                  &quot;stringValues&quot;: [
                    &quot;A String&quot;,
                  ],
                },
                &quot;stringValue&quot;: &quot;A String&quot;,
              },
            },
          ],
        },
        &quot;triggerCriteriaTaskImplementationClassName&quot;: &quot;A String&quot;, # Optional. Implementation class name. The class should implement the “TypedTask” interface.
      },
      &quot;triggerId&quot;: &quot;A String&quot;, # The backend trigger ID.
      &quot;triggerName&quot;: &quot;A String&quot;, # Optional. Name of the trigger This is added to identify the type of trigger. This is avoid the logic on triggerId to identify the trigger_type and push the same to monitoring.
      &quot;triggerNumber&quot;: &quot;A String&quot;, # Required. A number to uniquely identify each trigger config within the workflow on UI.
      &quot;triggerType&quot;: &quot;A String&quot;,
    },
  ],
  &quot;updateTime&quot;: &quot;A String&quot;, # Output only. Auto-generated.
  &quot;userLabel&quot;: &quot;A String&quot;, # Optional. A user-defined label that annotates an integration version. Typically, this is only set when the integration version is created.
}</pre>
</div>

<div class="method">
    <code class="details" id="list">list(parent, fieldMask=None, filter=None, orderBy=None, pageSize=None, pageToken=None, x__xgafv=None)</code>
  <pre>Returns the list of all integration versions in the specified project.

Args:
  parent: string, Required. The parent resource where this version will be created. Format: projects/{project}/locations/{location}/integrations/{integration} Specifically, when parent equals: 1. projects//locations//integrations/, Meaning: &quot;List versions (with filter) for a particular integration&quot;. 2. projects//locations//integrations/- Meaning: &quot;List versions (with filter) for a client within a particular region&quot;. (required)
  fieldMask: string, The field mask which specifies the particular data to be returned.
  filter: string, Filter on fields of IntegrationVersion. Fields can be compared with literal values by use of &quot;:&quot; (containment), &quot;=&quot; (equality), &quot;&gt;&quot; (greater), &quot;&lt;&quot; (less than), &gt;=&quot; (greater than or equal to), &quot;&lt;=&quot; (less than or equal to), and &quot;!=&quot; (inequality) operators. Negation, conjunction, and disjunction are written using NOT, AND, and OR keywords. For example, organization_id=\&quot;1\&quot; AND state=ACTIVE AND description:&quot;test&quot;. Filtering cannot be performed on repeated fields like `task_config`.
  orderBy: string, The results would be returned in order you specified here. Currently supported sort keys are: Descending sort order for &quot;last\_modified\_time&quot;, &quot;created\_time&quot;, and &quot;snapshot\_number&quot;. Ascending sort order for `name`.
  pageSize: integer, The maximum number of versions to return. The service may return fewer than this value. If unspecified, at most 50 versions will be returned. The maximum value is 1000; values above 1000 will be coerced to 1000.
  pageToken: string, A page token, received from a previous `ListIntegrationVersions` call. Provide this to retrieve the subsequent page. When paginating, all other parameters provided to `ListIntegrationVersions` must match the call that provided the page token.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Response for ListIntegrationVersions.
  &quot;integrationVersions&quot;: [ # The integrations which match the request.
    { # The integration version definition.
      &quot;cloudKmsKey&quot;: &quot;A String&quot;, # Optional. Cloud KMS resource name for the CMEK encryption key.
      &quot;cloudLoggingDetails&quot;: { # Cloud Logging details for execution info # Optional. Cloud Logging details for the integration version
        &quot;cloudLoggingSeverity&quot;: &quot;A String&quot;, # Optional. Severity selected by the customer for the logs to be sent to Cloud Logging, for the integration version getting executed.
        &quot;enableCloudLogging&quot;: True or False, # Optional. Status of whether Cloud Logging is enabled or not for the integration version getting executed.
      },
      &quot;createTime&quot;: &quot;A String&quot;, # Output only. Auto-generated.
      &quot;createdFromTemplate&quot;: &quot;A String&quot;, # Optional. Optional. The resource name of the template from which the integration is created.
      &quot;databasePersistencePolicy&quot;: &quot;A String&quot;, # Optional. Flag to disable database persistence for execution data, including event execution info, execution export info, execution metadata index and execution param index.
      &quot;description&quot;: &quot;A String&quot;, # Optional. The integration description.
      &quot;enableVariableMasking&quot;: True or False, # Optional. True if variable masking feature should be turned on for this version
      &quot;errorCatcherConfigs&quot;: [ # Optional. Error Catch Task configuration for the integration. It&#x27;s optional.
        { # Configuration detail of a error catch task
          &quot;description&quot;: &quot;A String&quot;, # Optional. User-provided description intended to give more business context about the error catcher config.
          &quot;errorCatcherId&quot;: &quot;A String&quot;, # Required. An error catcher id is string representation for the error catcher config. Within a workflow, error_catcher_id uniquely identifies an error catcher config among all error catcher configs for the workflow
          &quot;errorCatcherNumber&quot;: &quot;A String&quot;, # Required. A number to uniquely identify each error catcher config within the workflow on UI.
          &quot;label&quot;: &quot;A String&quot;, # Optional. The user created label for a particular error catcher. Optional.
          &quot;position&quot;: { # Configuration detail of coordinate, it used for UI # Optional. Informs the front-end application where to draw this error catcher config on the UI.
            &quot;x&quot;: 42, # Required. X axis of the coordinate
            &quot;y&quot;: 42, # Required. Y axis of the coordinate
          },
          &quot;startErrorTasks&quot;: [ # Required. The set of start tasks that are to be executed for the error catch flow
            { # The task that is next in line to be executed, if the condition specified evaluated to true.
              &quot;condition&quot;: &quot;A String&quot;, # Standard filter expression for this task to become an eligible next task.
              &quot;description&quot;: &quot;A String&quot;, # User-provided description intended to give additional business context about the task.
              &quot;displayName&quot;: &quot;A String&quot;, # User-provided label that is attached to this edge in the UI.
              &quot;taskConfigId&quot;: &quot;A String&quot;, # ID of the next task.
              &quot;taskId&quot;: &quot;A String&quot;, # Task number of the next task.
            },
          ],
        },
      ],
      &quot;integrationConfigParameters&quot;: [ # Optional. Config Parameters that are expected to be passed to the integration when an integration is published. This consists of all the parameters that are expected to provide configuration in the integration execution. This gives the user the ability to provide default values, value, add information like connection url, project based configuration value and also provide data types of each parameter.
        { # Integration Config Parameter is defined in the integration config and are used to provide external configuration for integration. It provide information about data types of the expected parameters and provide any default values or value. They can also be used to add custom attributes.
          &quot;parameter&quot;: { # Integration Parameter is defined in the integration config and are used to provide information about data types of the expected parameters and provide any default values if needed. They can also be used to add custom attributes. These are static in nature and should not be used for dynamic event definition. # Optional. Integration Parameter to provide the default value, data type and attributes required for the Integration config variables.
            &quot;containsLargeData&quot;: True or False, # Indicates whether this variable contains large data and need to be uploaded to Cloud Storage.
            &quot;dataType&quot;: &quot;A String&quot;, # Type of the parameter.
            &quot;defaultValue&quot;: { # The type of the parameter. # Default values for the defined keys. Each value can either be string, int, double or any proto message or a serialized object.
              &quot;booleanArray&quot;: { # This message only contains a field of boolean array. # Boolean Array.
                &quot;booleanValues&quot;: [ # Boolean array.
                  True or False,
                ],
              },
              &quot;booleanValue&quot;: True or False, # Boolean.
              &quot;doubleArray&quot;: { # This message only contains a field of double number array. # Double Number Array.
                &quot;doubleValues&quot;: [ # Double number array.
                  3.14,
                ],
              },
              &quot;doubleValue&quot;: 3.14, # Double Number.
              &quot;intArray&quot;: { # This message only contains a field of integer array. # Integer Array.
                &quot;intValues&quot;: [ # Integer array.
                  &quot;A String&quot;,
                ],
              },
              &quot;intValue&quot;: &quot;A String&quot;, # Integer.
              &quot;jsonValue&quot;: &quot;A String&quot;, # Json.
              &quot;stringArray&quot;: { # This message only contains a field of string array. # String Array.
                &quot;stringValues&quot;: [ # String array.
                  &quot;A String&quot;,
                ],
              },
              &quot;stringValue&quot;: &quot;A String&quot;, # String.
            },
            &quot;description&quot;: &quot;A String&quot;, # Optional. Description of the parameter.
            &quot;displayName&quot;: &quot;A String&quot;, # The name (without prefix) to be displayed in the UI for this parameter. E.g. if the key is &quot;foo.bar.myName&quot;, then the name would be &quot;myName&quot;.
            &quot;inputOutputType&quot;: &quot;A String&quot;, # Specifies the input/output type for the parameter.
            &quot;isTransient&quot;: True or False, # Whether this parameter is a transient parameter.
            &quot;jsonSchema&quot;: &quot;A String&quot;, # This schema will be used to validate runtime JSON-typed values of this parameter.
            &quot;key&quot;: &quot;A String&quot;, # Key is used to retrieve the corresponding parameter value. This should be unique for a given fired event. These parameters must be predefined in the integration definition.
            &quot;masked&quot;: True or False, # True if this parameter should be masked in the logs
            &quot;producer&quot;: &quot;A String&quot;, # The identifier of the node (TaskConfig/TriggerConfig) this parameter was produced by, if it is a transient param or a copy of an input param.
            &quot;searchable&quot;: True or False, # Searchable in the execution log or not.
          },
          &quot;value&quot;: { # The type of the parameter. # Values for the defined keys. Each value can either be string, int, double or any proto message or a serialized object.
            &quot;booleanArray&quot;: { # This message only contains a field of boolean array. # Boolean Array.
              &quot;booleanValues&quot;: [ # Boolean array.
                True or False,
              ],
            },
            &quot;booleanValue&quot;: True or False, # Boolean.
            &quot;doubleArray&quot;: { # This message only contains a field of double number array. # Double Number Array.
              &quot;doubleValues&quot;: [ # Double number array.
                3.14,
              ],
            },
            &quot;doubleValue&quot;: 3.14, # Double Number.
            &quot;intArray&quot;: { # This message only contains a field of integer array. # Integer Array.
              &quot;intValues&quot;: [ # Integer array.
                &quot;A String&quot;,
              ],
            },
            &quot;intValue&quot;: &quot;A String&quot;, # Integer.
            &quot;jsonValue&quot;: &quot;A String&quot;, # Json.
            &quot;stringArray&quot;: { # This message only contains a field of string array. # String Array.
              &quot;stringValues&quot;: [ # String array.
                &quot;A String&quot;,
              ],
            },
            &quot;stringValue&quot;: &quot;A String&quot;, # String.
          },
        },
      ],
      &quot;integrationParameters&quot;: [ # Optional. Parameters that are expected to be passed to the integration when an event is triggered. This consists of all the parameters that are expected in the integration execution. This gives the user the ability to provide default values, add information like PII and also provide data types of each parameter.
        { # Integration Parameter is defined in the integration config and are used to provide information about data types of the expected parameters and provide any default values if needed. They can also be used to add custom attributes. These are static in nature and should not be used for dynamic event definition.
          &quot;containsLargeData&quot;: True or False, # Indicates whether this variable contains large data and need to be uploaded to Cloud Storage.
          &quot;dataType&quot;: &quot;A String&quot;, # Type of the parameter.
          &quot;defaultValue&quot;: { # The type of the parameter. # Default values for the defined keys. Each value can either be string, int, double or any proto message or a serialized object.
            &quot;booleanArray&quot;: { # This message only contains a field of boolean array. # Boolean Array.
              &quot;booleanValues&quot;: [ # Boolean array.
                True or False,
              ],
            },
            &quot;booleanValue&quot;: True or False, # Boolean.
            &quot;doubleArray&quot;: { # This message only contains a field of double number array. # Double Number Array.
              &quot;doubleValues&quot;: [ # Double number array.
                3.14,
              ],
            },
            &quot;doubleValue&quot;: 3.14, # Double Number.
            &quot;intArray&quot;: { # This message only contains a field of integer array. # Integer Array.
              &quot;intValues&quot;: [ # Integer array.
                &quot;A String&quot;,
              ],
            },
            &quot;intValue&quot;: &quot;A String&quot;, # Integer.
            &quot;jsonValue&quot;: &quot;A String&quot;, # Json.
            &quot;stringArray&quot;: { # This message only contains a field of string array. # String Array.
              &quot;stringValues&quot;: [ # String array.
                &quot;A String&quot;,
              ],
            },
            &quot;stringValue&quot;: &quot;A String&quot;, # String.
          },
          &quot;description&quot;: &quot;A String&quot;, # Optional. Description of the parameter.
          &quot;displayName&quot;: &quot;A String&quot;, # The name (without prefix) to be displayed in the UI for this parameter. E.g. if the key is &quot;foo.bar.myName&quot;, then the name would be &quot;myName&quot;.
          &quot;inputOutputType&quot;: &quot;A String&quot;, # Specifies the input/output type for the parameter.
          &quot;isTransient&quot;: True or False, # Whether this parameter is a transient parameter.
          &quot;jsonSchema&quot;: &quot;A String&quot;, # This schema will be used to validate runtime JSON-typed values of this parameter.
          &quot;key&quot;: &quot;A String&quot;, # Key is used to retrieve the corresponding parameter value. This should be unique for a given fired event. These parameters must be predefined in the integration definition.
          &quot;masked&quot;: True or False, # True if this parameter should be masked in the logs
          &quot;producer&quot;: &quot;A String&quot;, # The identifier of the node (TaskConfig/TriggerConfig) this parameter was produced by, if it is a transient param or a copy of an input param.
          &quot;searchable&quot;: True or False, # Searchable in the execution log or not.
        },
      ],
      &quot;integrationParametersInternal&quot;: { # LINT.IfChange This is the frontend version of WorkflowParameters. It&#x27;s exactly like the backend version except that instead of flattening protobuf parameters and treating every field and subfield of a protobuf parameter as a separate parameter, the fields/subfields of a protobuf parameter will be nested as &quot;children&quot; (see &#x27;children&#x27; field below) parameters of the parent parameter. Please refer to enterprise/crm/eventbus/proto/workflow_parameters.proto for more information about WorkflowParameters. # Optional. Parameters that are expected to be passed to the integration when an event is triggered. This consists of all the parameters that are expected in the integration execution. This gives the user the ability to provide default values, add information like PII and also provide data types of each parameter.
        &quot;parameters&quot;: [ # Parameters are a part of Event and can be used to communiticate between different tasks that are part of the same workflow execution.
          {
            &quot;attributes&quot;: { # Attributes are additional options that can be associated with each event property. For more information, see # Metadata information about the parameters.
              &quot;dataType&quot;: &quot;A String&quot;, # Things like URL, Email, Currency, Timestamp (rather than string, int64...)
              &quot;defaultValue&quot;: { # Used for define type for values. Currently supported value types include int, string, double, array, and any proto message. # Used to define defaults.
                &quot;booleanValue&quot;: True or False,
                &quot;doubleArray&quot;: {
                  &quot;values&quot;: [
                    3.14,
                  ],
                },
                &quot;doubleValue&quot;: 3.14,
                &quot;intArray&quot;: {
                  &quot;values&quot;: [
                    &quot;A String&quot;,
                  ],
                },
                &quot;intValue&quot;: &quot;A String&quot;,
                &quot;protoValue&quot;: {
                  &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
                },
                &quot;stringArray&quot;: {
                  &quot;values&quot;: [
                    &quot;A String&quot;,
                  ],
                },
                &quot;stringValue&quot;: &quot;A String&quot;,
              },
              &quot;isRequired&quot;: True or False, # Required for event execution. The validation will be done by the event bus when the event is triggered.
              &quot;isSearchable&quot;: True or False, # Used to indicate if a ParameterEntry should be converted to ParamIndexes for ST-Spanner full-text search. DEPRECATED: use searchable.
              &quot;logSettings&quot;: { # The LogSettings define the logging attributes for an event property. These attributes are used to map the property to the parameter in the log proto. Also used to define scrubbing/truncation behavior and PII information. # See
                &quot;logFieldName&quot;: &quot;A String&quot;, # The name of corresponding logging field of the event property. If omitted, assumes the same name as the event property key.
                &quot;seedPeriod&quot;: &quot;A String&quot;,
                &quot;seedScope&quot;: &quot;A String&quot;,
              },
              &quot;masked&quot;: True or False, # True if this workflow parameter should be masked in the logs
              &quot;readOnly&quot;: True or False, # Used to indicate if the ParameterEntry is a read only field or not.
              &quot;searchable&quot;: &quot;A String&quot;,
              &quot;taskVisibility&quot;: [ # List of tasks that can view this property, if empty then all.
                &quot;A String&quot;,
              ],
            },
            &quot;children&quot;: [ # Child parameters nested within this parameter. This field only applies to protobuf parameters
              # Object with schema name: EnterpriseCrmFrontendsEventbusProtoWorkflowParameterEntry
            ],
            &quot;containsLargeData&quot;: True or False, # Indicates whether this variable contains large data and need to be uploaded to Cloud Storage.
            &quot;dataType&quot;: &quot;A String&quot;, # The data type of the parameter.
            &quot;defaultValue&quot;: { # To support various types of parameter values. Next available id: 14 # Default values for the defined keys. Each value can either be string, int, double or any proto message or a serialized object.
              &quot;booleanArray&quot;: {
                &quot;booleanValues&quot;: [
                  True or False,
                ],
              },
              &quot;booleanValue&quot;: True or False,
              &quot;doubleArray&quot;: {
                &quot;doubleValues&quot;: [
                  3.14,
                ],
              },
              &quot;doubleValue&quot;: 3.14,
              &quot;intArray&quot;: {
                &quot;intValues&quot;: [
                  &quot;A String&quot;,
                ],
              },
              &quot;intValue&quot;: &quot;A String&quot;,
              &quot;jsonValue&quot;: &quot;A String&quot;,
              &quot;protoArray&quot;: {
                &quot;protoValues&quot;: [
                  {
                    &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
                  },
                ],
              },
              &quot;protoValue&quot;: {
                &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
              },
              &quot;serializedObjectValue&quot;: {
                &quot;objectValue&quot;: &quot;A String&quot;,
              },
              &quot;stringArray&quot;: {
                &quot;stringValues&quot;: [
                  &quot;A String&quot;,
                ],
              },
              &quot;stringValue&quot;: &quot;A String&quot;,
            },
            &quot;description&quot;: &quot;A String&quot;, # Optional. The description about the parameter
            &quot;inOutType&quot;: &quot;A String&quot;, # Specifies the input/output type for the parameter.
            &quot;isTransient&quot;: True or False, # Whether this parameter is a transient parameter.
            &quot;jsonSchema&quot;: &quot;A String&quot;, # This schema will be used to validate runtime JSON-typed values of this parameter.
            &quot;key&quot;: &quot;A String&quot;, # Key is used to retrieve the corresponding parameter value. This should be unique for a given fired event. These parameters must be predefined in the workflow definition.
            &quot;name&quot;: &quot;A String&quot;, # The name (without prefix) to be displayed in the UI for this parameter. E.g. if the key is &quot;foo.bar.myName&quot;, then the name would be &quot;myName&quot;.
            &quot;producedBy&quot;: { # Represents a node identifier (type + id). Next highest id: 3 # The identifier of the node (TaskConfig/TriggerConfig) this parameter was produced by, if it is a transient param or a copy of an input param.
              &quot;elementIdentifier&quot;: &quot;A String&quot;, # Configuration of the edge.
              &quot;elementType&quot;: &quot;A String&quot;, # Destination node where the edge ends. It can only be a task config.
            },
            &quot;producer&quot;: &quot;A String&quot;,
            &quot;protoDefName&quot;: &quot;A String&quot;, # The name of the protobuf type if the parameter has a protobuf data type.
            &quot;protoDefPath&quot;: &quot;A String&quot;, # If the data type is of type proto or proto array, this field needs to be populated with the fully qualified proto name. This message, for example, would be &quot;enterprise.crm.frontends.eventbus.proto.WorkflowParameterEntry&quot;.
            &quot;required&quot;: True or False,
          },
        ],
      },
      &quot;lastModifierEmail&quot;: &quot;A String&quot;, # Optional. The last modifier&#x27;s email address. Generated based on the End User Credentials/LOAS role of the user making the call.
      &quot;lockHolder&quot;: &quot;A String&quot;, # Optional. The edit lock holder&#x27;s email address. Generated based on the End User Credentials/LOAS role of the user making the call.
      &quot;name&quot;: &quot;A String&quot;, # Output only. Auto-generated primary key.
      &quot;origin&quot;: &quot;A String&quot;, # Optional. The origin that indicates where this integration is coming from.
      &quot;parentTemplateId&quot;: &quot;A String&quot;, # Optional. The id of the template which was used to create this integration_version.
      &quot;runAsServiceAccount&quot;: &quot;A String&quot;, # Optional. The run-as service account email, if set and auth config is not configured, that will be used to generate auth token to be used in Connector task, Rest caller task and Cloud function task.
      &quot;snapshotNumber&quot;: &quot;A String&quot;, # Output only. An increasing sequence that is set when a new snapshot is created. The last created snapshot can be identified by [workflow_name, org_id latest(snapshot_number)]. However, last created snapshot need not be same as the HEAD. So users should always use &quot;HEAD&quot; tag to identify the head.
      &quot;state&quot;: &quot;A String&quot;, # Output only. User should not set it as an input.
      &quot;status&quot;: &quot;A String&quot;, # Output only. Generated by eventbus. User should not set it as an input.
      &quot;taskConfigs&quot;: [ # Optional. Task configuration for the integration. It&#x27;s optional, but the integration doesn&#x27;t do anything without task_configs.
        { # The task configuration details. This is not the implementation of Task. There might be multiple TaskConfigs for the same Task.
          &quot;conditionalFailurePolicies&quot;: { # Conditional task failur retry strategies # Optional. The list of conditional failure policies that will be applied to the task in order.
            &quot;defaultFailurePolicy&quot;: { # Policy that defines the task retry logic and failure type. If no FailurePolicy is defined for a task, all its dependent tasks will not be executed (i.e, a `retry_strategy` of NONE will be applied). # The default failure policy to be applied if no conditional failure policy matches.
              &quot;condition&quot;: &quot;A String&quot;, # Optional. The string condition that will be evaluated to determine if the task should be retried with this failure policy.
              &quot;intervalTime&quot;: &quot;A String&quot;, # Required if retry_strategy is FIXED_INTERVAL or LINEAR/EXPONENTIAL_BACKOFF/RESTART_INTEGRATION_WITH_BACKOFF. Defines the initial interval in seconds for backoff.
              &quot;maxRetries&quot;: 42, # Required if retry_strategy is FIXED_INTERVAL or LINEAR/EXPONENTIAL_BACKOFF/RESTART_INTEGRATION_WITH_BACKOFF. Defines the number of times the task will be retried if failed.
              &quot;retryStrategy&quot;: &quot;A String&quot;, # Defines what happens to the task upon failure.
            },
            &quot;failurePolicies&quot;: [ # The list of failure policies that will be applied to the task in order.
              { # Policy that defines the task retry logic and failure type. If no FailurePolicy is defined for a task, all its dependent tasks will not be executed (i.e, a `retry_strategy` of NONE will be applied).
                &quot;condition&quot;: &quot;A String&quot;, # Optional. The string condition that will be evaluated to determine if the task should be retried with this failure policy.
                &quot;intervalTime&quot;: &quot;A String&quot;, # Required if retry_strategy is FIXED_INTERVAL or LINEAR/EXPONENTIAL_BACKOFF/RESTART_INTEGRATION_WITH_BACKOFF. Defines the initial interval in seconds for backoff.
                &quot;maxRetries&quot;: 42, # Required if retry_strategy is FIXED_INTERVAL or LINEAR/EXPONENTIAL_BACKOFF/RESTART_INTEGRATION_WITH_BACKOFF. Defines the number of times the task will be retried if failed.
                &quot;retryStrategy&quot;: &quot;A String&quot;, # Defines what happens to the task upon failure.
              },
            ],
          },
          &quot;description&quot;: &quot;A String&quot;, # Optional. User-provided description intended to give additional business context about the task.
          &quot;displayName&quot;: &quot;A String&quot;, # Optional. User-provided label that is attached to this TaskConfig in the UI.
          &quot;errorCatcherId&quot;: &quot;A String&quot;, # Optional. Optional Error catcher id of the error catch flow which will be executed when execution error happens in the task
          &quot;externalTaskType&quot;: &quot;A String&quot;, # Optional. External task type of the task
          &quot;failurePolicy&quot;: { # Policy that defines the task retry logic and failure type. If no FailurePolicy is defined for a task, all its dependent tasks will not be executed (i.e, a `retry_strategy` of NONE will be applied). # Optional. Determines the number of times the task will be retried on failure and with what retry strategy. This is applicable for asynchronous calls to Eventbus alone (Post To Queue, Schedule etc.).
            &quot;condition&quot;: &quot;A String&quot;, # Optional. The string condition that will be evaluated to determine if the task should be retried with this failure policy.
            &quot;intervalTime&quot;: &quot;A String&quot;, # Required if retry_strategy is FIXED_INTERVAL or LINEAR/EXPONENTIAL_BACKOFF/RESTART_INTEGRATION_WITH_BACKOFF. Defines the initial interval in seconds for backoff.
            &quot;maxRetries&quot;: 42, # Required if retry_strategy is FIXED_INTERVAL or LINEAR/EXPONENTIAL_BACKOFF/RESTART_INTEGRATION_WITH_BACKOFF. Defines the number of times the task will be retried if failed.
            &quot;retryStrategy&quot;: &quot;A String&quot;, # Defines what happens to the task upon failure.
          },
          &quot;jsonValidationOption&quot;: &quot;A String&quot;, # Optional. If set, overrides the option configured in the Task implementation class.
          &quot;nextTasks&quot;: [ # Optional. The set of tasks that are next in line to be executed as per the execution graph defined for the parent event, specified by `event_config_id`. Each of these next tasks are executed only if the condition associated with them evaluates to true.
            { # The task that is next in line to be executed, if the condition specified evaluated to true.
              &quot;condition&quot;: &quot;A String&quot;, # Standard filter expression for this task to become an eligible next task.
              &quot;description&quot;: &quot;A String&quot;, # User-provided description intended to give additional business context about the task.
              &quot;displayName&quot;: &quot;A String&quot;, # User-provided label that is attached to this edge in the UI.
              &quot;taskConfigId&quot;: &quot;A String&quot;, # ID of the next task.
              &quot;taskId&quot;: &quot;A String&quot;, # Task number of the next task.
            },
          ],
          &quot;nextTasksExecutionPolicy&quot;: &quot;A String&quot;, # Optional. The policy dictating the execution of the next set of tasks for the current task.
          &quot;parameters&quot;: { # Optional. The customized parameters the user can pass to this task.
            &quot;a_key&quot;: { # This message is used for processing and persisting (when applicable) key value pair parameters for each event in the event bus. Next available id: 4
              &quot;key&quot;: &quot;A String&quot;, # Key is used to retrieve the corresponding parameter value. This should be unique for a given fired event. These parameters must be predefined in the integration definition.
              &quot;masked&quot;: True or False, # True if this parameter should be masked in the logs
              &quot;value&quot;: { # The type of the parameter. # Values for the defined keys. Each value can either be string, int, double or any proto message.
                &quot;booleanArray&quot;: { # This message only contains a field of boolean array. # Boolean Array.
                  &quot;booleanValues&quot;: [ # Boolean array.
                    True or False,
                  ],
                },
                &quot;booleanValue&quot;: True or False, # Boolean.
                &quot;doubleArray&quot;: { # This message only contains a field of double number array. # Double Number Array.
                  &quot;doubleValues&quot;: [ # Double number array.
                    3.14,
                  ],
                },
                &quot;doubleValue&quot;: 3.14, # Double Number.
                &quot;intArray&quot;: { # This message only contains a field of integer array. # Integer Array.
                  &quot;intValues&quot;: [ # Integer array.
                    &quot;A String&quot;,
                  ],
                },
                &quot;intValue&quot;: &quot;A String&quot;, # Integer.
                &quot;jsonValue&quot;: &quot;A String&quot;, # Json.
                &quot;stringArray&quot;: { # This message only contains a field of string array. # String Array.
                  &quot;stringValues&quot;: [ # String array.
                    &quot;A String&quot;,
                  ],
                },
                &quot;stringValue&quot;: &quot;A String&quot;, # String.
              },
            },
          },
          &quot;position&quot;: { # Configuration detail of coordinate, it used for UI # Optional. Informs the front-end application where to draw this error catcher config on the UI.
            &quot;x&quot;: 42, # Required. X axis of the coordinate
            &quot;y&quot;: 42, # Required. Y axis of the coordinate
          },
          &quot;successPolicy&quot;: { # Policy that dictates the behavior for the task after it completes successfully. # Optional. Determines what action to take upon successful task completion.
            &quot;finalState&quot;: &quot;A String&quot;, # State to which the execution snapshot status will be set if the task succeeds.
          },
          &quot;synchronousCallFailurePolicy&quot;: { # Policy that defines the task retry logic and failure type. If no FailurePolicy is defined for a task, all its dependent tasks will not be executed (i.e, a `retry_strategy` of NONE will be applied). # Optional. Determines the number of times the task will be retried on failure and with what retry strategy. This is applicable for synchronous calls to Eventbus alone (Post).
            &quot;condition&quot;: &quot;A String&quot;, # Optional. The string condition that will be evaluated to determine if the task should be retried with this failure policy.
            &quot;intervalTime&quot;: &quot;A String&quot;, # Required if retry_strategy is FIXED_INTERVAL or LINEAR/EXPONENTIAL_BACKOFF/RESTART_INTEGRATION_WITH_BACKOFF. Defines the initial interval in seconds for backoff.
            &quot;maxRetries&quot;: 42, # Required if retry_strategy is FIXED_INTERVAL or LINEAR/EXPONENTIAL_BACKOFF/RESTART_INTEGRATION_WITH_BACKOFF. Defines the number of times the task will be retried if failed.
            &quot;retryStrategy&quot;: &quot;A String&quot;, # Defines what happens to the task upon failure.
          },
          &quot;task&quot;: &quot;A String&quot;, # Optional. The name for the task.
          &quot;taskExecutionStrategy&quot;: &quot;A String&quot;, # Optional. The policy dictating the execution strategy of this task.
          &quot;taskId&quot;: &quot;A String&quot;, # Required. The identifier of this task within its parent event config, specified by the client. This should be unique among all the tasks belong to the same event config. We use this field as the identifier to find next tasks (via field `next_tasks.task_id`).
          &quot;taskTemplate&quot;: &quot;A String&quot;, # Optional. Used to define task-template name if task is of type task-template
        },
      ],
      &quot;taskConfigsInternal&quot;: [ # Optional. Task configuration for the integration. It&#x27;s optional, but the integration doesn&#x27;t do anything without task_configs.
        { # The task configuration details. This is not the implementation of Task. There might be multiple TaskConfigs for the same Task.
          &quot;alertConfigs&quot;: [ # Alert configurations on error rate, warning rate, number of runs, durations, etc.
            { # Message to be used to configure alerting in the {@code TaskConfig} protos for tasks in an event.
              &quot;aggregationPeriod&quot;: &quot;A String&quot;, # The period over which the metric value should be aggregated and evaluated. Format is , where integer should be a positive integer and unit should be one of (s,m,h,d,w) meaning (second, minute, hour, day, week).
              &quot;alertDisabled&quot;: True or False, # Set to false by default. When set to true, the metrics are not aggregated or pushed to Monarch for this workflow alert.
              &quot;alertName&quot;: &quot;A String&quot;, # A name to identify this alert. This will be displayed in the alert subject. If set, this name should be unique in within the scope of the containing workflow.
              &quot;clientId&quot;: &quot;A String&quot;, # Client associated with this alert configuration. Must be a client enabled in one of the containing workflow&#x27;s triggers.
              &quot;durationThresholdMs&quot;: &quot;A String&quot;, # Should be specified only for TASK_AVERAGE_DURATION and TASK_PERCENTILE_DURATION metrics. This member should be used to specify what duration value the metrics should exceed for the alert to trigger.
              &quot;errorEnumList&quot;: { # List of error enums for alerts.
                &quot;enumStrings&quot;: [
                  &quot;A String&quot;,
                ],
                &quot;filterType&quot;: &quot;A String&quot;,
              },
              &quot;metricType&quot;: &quot;A String&quot;,
              &quot;numAggregationPeriods&quot;: 42, # For how many contiguous aggregation periods should the expected min or max be violated for the alert to be fired.
              &quot;onlyFinalAttempt&quot;: True or False, # Only count final task attempts, not retries.
              &quot;playbookUrl&quot;: &quot;A String&quot;, # Link to a playbook for resolving the issue that triggered this alert.
              &quot;thresholdType&quot;: &quot;A String&quot;, # The threshold type for which this alert is being configured. If value falls below expected_min or exceeds expected_max, an alert will be fired.
              &quot;thresholdValue&quot;: { # The threshold value of the metric, above or below which the alert should be triggered. See EventAlertConfig or TaskAlertConfig for the different alert metric types in each case. For the *RATE metrics, one or both of these fields may be set. Zero is the default value and can be left at that. For *PERCENTILE_DURATION metrics, one or both of these fields may be set, and also, the duration threshold value should be specified in the threshold_duration_ms member below. For *AVERAGE_DURATION metrics, these fields should not be set at all. A different member, threshold_duration_ms, must be set in the EventAlertConfig or the TaskAlertConfig. # The metric value, above or below which the alert should be triggered.
                &quot;absolute&quot;: &quot;A String&quot;,
                &quot;percentage&quot;: 42,
              },
              &quot;warningEnumList&quot;: { # List of error enums for alerts.
                &quot;enumStrings&quot;: [
                  &quot;A String&quot;,
                ],
                &quot;filterType&quot;: &quot;A String&quot;,
              },
            },
          ],
          &quot;conditionalFailurePolicies&quot;: { # Optional. Determines the number of times the task will be retried on failure and with what retry strategy. This is applicable for synchronous calls to Eventbus alone (Post).
            &quot;defaultFailurePolicy&quot;: { # Policy that defines the task retry logic and failure type. If no FailurePolicy is defined for a task, all its dependent tasks will not be executed (i.e, a `retry_strategy` of NONE will be applied). # The default failure policy to be applied if no conditional failure policy matches
              &quot;intervalInSeconds&quot;: &quot;A String&quot;, # Required if retry_strategy is FIXED_INTERVAL or LINEAR/EXPONENTIAL_BACKOFF/RESTART_WORKFLOW_WITH_BACKOFF. Defines the initial interval for backoff.
              &quot;maxNumRetries&quot;: 42, # Required if retry_strategy is FIXED_INTERVAL or LINEAR/EXPONENTIAL_BACKOFF/RESTART_WORKFLOW_WITH_BACKOFF. Defines the number of times the task will be retried if failed.
              &quot;retryCondition&quot;: &quot;A String&quot;, # Optional. The retry condition that will be evaluated for this failure policy with the corresponding retry strategy.
              &quot;retryStrategy&quot;: &quot;A String&quot;, # Defines what happens to the task upon failure.
            },
            &quot;failurePolicies&quot;: [ # The list of failure policies that will be applied to the task in order.
              { # Policy that defines the task retry logic and failure type. If no FailurePolicy is defined for a task, all its dependent tasks will not be executed (i.e, a `retry_strategy` of NONE will be applied).
                &quot;intervalInSeconds&quot;: &quot;A String&quot;, # Required if retry_strategy is FIXED_INTERVAL or LINEAR/EXPONENTIAL_BACKOFF/RESTART_WORKFLOW_WITH_BACKOFF. Defines the initial interval for backoff.
                &quot;maxNumRetries&quot;: 42, # Required if retry_strategy is FIXED_INTERVAL or LINEAR/EXPONENTIAL_BACKOFF/RESTART_WORKFLOW_WITH_BACKOFF. Defines the number of times the task will be retried if failed.
                &quot;retryCondition&quot;: &quot;A String&quot;, # Optional. The retry condition that will be evaluated for this failure policy with the corresponding retry strategy.
                &quot;retryStrategy&quot;: &quot;A String&quot;, # Defines what happens to the task upon failure.
              },
            ],
          },
          &quot;createTime&quot;: &quot;A String&quot;, # Auto-generated.
          &quot;creatorEmail&quot;: &quot;A String&quot;, # The creator&#x27;s email address. Auto-generated from the user&#x27;s email.
          &quot;description&quot;: &quot;A String&quot;, # User-provided description intended to give more business context about the task.
          &quot;disableStrictTypeValidation&quot;: True or False, # If this config contains a TypedTask, allow validation to succeed if an input is read from the output of another TypedTask whose output type is declared as a superclass of the requested input type. For instance, if the previous task declares an output of type Message, any task with this flag enabled will pass validation when attempting to read any proto Message type from the resultant Event parameter.
          &quot;errorCatcherId&quot;: &quot;A String&quot;, # Optional Error catcher id of the error catch flow which will be executed when execution error happens in the task
          &quot;externalTaskType&quot;: &quot;A String&quot;,
          &quot;failurePolicy&quot;: { # Policy that defines the task retry logic and failure type. If no FailurePolicy is defined for a task, all its dependent tasks will not be executed (i.e, a `retry_strategy` of NONE will be applied). # Optional. Determines the number of times the task will be retried on failure and with what retry strategy. This is applicable for asynchronous calls to Eventbus alone (Post To Queue, Schedule etc.).
            &quot;intervalInSeconds&quot;: &quot;A String&quot;, # Required if retry_strategy is FIXED_INTERVAL or LINEAR/EXPONENTIAL_BACKOFF/RESTART_WORKFLOW_WITH_BACKOFF. Defines the initial interval for backoff.
            &quot;maxNumRetries&quot;: 42, # Required if retry_strategy is FIXED_INTERVAL or LINEAR/EXPONENTIAL_BACKOFF/RESTART_WORKFLOW_WITH_BACKOFF. Defines the number of times the task will be retried if failed.
            &quot;retryCondition&quot;: &quot;A String&quot;, # Optional. The retry condition that will be evaluated for this failure policy with the corresponding retry strategy.
            &quot;retryStrategy&quot;: &quot;A String&quot;, # Defines what happens to the task upon failure.
          },
          &quot;incomingEdgeCount&quot;: 42, # The number of edges leading into this TaskConfig.
          &quot;jsonValidationOption&quot;: &quot;A String&quot;, # If set, overrides the option configured in the Task implementation class.
          &quot;label&quot;: &quot;A String&quot;, # User-provided label that is attached to this TaskConfig in the UI.
          &quot;lastModifiedTime&quot;: &quot;A String&quot;, # Auto-generated.
          &quot;nextTasks&quot;: [ # The set of tasks that are next in line to be executed as per the execution graph defined for the parent event, specified by `event_config_id`. Each of these next tasks are executed only if the condition associated with them evaluates to true.
            { # The task that is next in line to be executed, if the condition specified evaluated to true.
              &quot;combinedConditions&quot;: [ # Combined condition for this task to become an eligible next task. Each of these combined_conditions are joined with logical OR. DEPRECATED: use `condition`
                { # This message recursively combines constituent conditions using logical AND.
                  &quot;conditions&quot;: [ # A set of individual constituent conditions.
                    { # Condition that uses `operator` to evaluate the key against the value.
                      &quot;eventPropertyKey&quot;: &quot;A String&quot;, # Key that&#x27;s evaluated against the `value`. Please note the data type of the runtime value associated with the key should match the data type of `value`, else an IllegalArgumentException is thrown.
                      &quot;operator&quot;: &quot;A String&quot;, # Operator used to evaluate the condition. Please note that an operator with an inappropriate key/value operand will result in IllegalArgumentException, e.g. CONTAINS with boolean key/value pair.
                      &quot;value&quot;: { # Used for define type for values. Currently supported value types include int, string, double, array, and any proto message. # Value that&#x27;s checked for the key.
                        &quot;booleanValue&quot;: True or False,
                        &quot;doubleArray&quot;: {
                          &quot;values&quot;: [
                            3.14,
                          ],
                        },
                        &quot;doubleValue&quot;: 3.14,
                        &quot;intArray&quot;: {
                          &quot;values&quot;: [
                            &quot;A String&quot;,
                          ],
                        },
                        &quot;intValue&quot;: &quot;A String&quot;,
                        &quot;protoValue&quot;: {
                          &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
                        },
                        &quot;stringArray&quot;: {
                          &quot;values&quot;: [
                            &quot;A String&quot;,
                          ],
                        },
                        &quot;stringValue&quot;: &quot;A String&quot;,
                      },
                    },
                  ],
                },
              ],
              &quot;condition&quot;: &quot;A String&quot;, # Standard filter expression for this task to become an eligible next task.
              &quot;description&quot;: &quot;A String&quot;, # User-provided description intended to give more business context about the next task edge or condition.
              &quot;label&quot;: &quot;A String&quot;, # User-provided label that is attached to this edge in the UI.
              &quot;taskConfigId&quot;: &quot;A String&quot;, # ID of the next task.
              &quot;taskNumber&quot;: &quot;A String&quot;, # Task number of the next task.
            },
          ],
          &quot;nextTasksExecutionPolicy&quot;: &quot;A String&quot;, # The policy dictating the execution of the next set of tasks for the current task.
          &quot;parameters&quot;: { # The customized parameters the user can pass to this task.
            &quot;a_key&quot;: { # Key-value pair of EventBus parameters.
              &quot;dataType&quot;: &quot;A String&quot;, # Explicitly getting the type of the parameter.
              &quot;key&quot;: &quot;A String&quot;, # Key is used to retrieve the corresponding parameter value. This should be unique for a given fired event. These parameters must be predefined in the workflow definition.
              &quot;masked&quot;: True or False, # True if this parameter should be masked in the logs
              &quot;value&quot;: { # To support various types of parameter values. Next available id: 14 # Values for the defined keys. Each value can either be string, int, double or any proto message.
                &quot;booleanArray&quot;: {
                  &quot;booleanValues&quot;: [
                    True or False,
                  ],
                },
                &quot;booleanValue&quot;: True or False,
                &quot;doubleArray&quot;: {
                  &quot;doubleValues&quot;: [
                    3.14,
                  ],
                },
                &quot;doubleValue&quot;: 3.14,
                &quot;intArray&quot;: {
                  &quot;intValues&quot;: [
                    &quot;A String&quot;,
                  ],
                },
                &quot;intValue&quot;: &quot;A String&quot;,
                &quot;jsonValue&quot;: &quot;A String&quot;,
                &quot;protoArray&quot;: {
                  &quot;protoValues&quot;: [
                    {
                      &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
                    },
                  ],
                },
                &quot;protoValue&quot;: {
                  &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
                },
                &quot;serializedObjectValue&quot;: {
                  &quot;objectValue&quot;: &quot;A String&quot;,
                },
                &quot;stringArray&quot;: {
                  &quot;stringValues&quot;: [
                    &quot;A String&quot;,
                  ],
                },
                &quot;stringValue&quot;: &quot;A String&quot;,
              },
            },
          },
          &quot;position&quot;: { # Represents two-dimensional positions. # Optional. Informs the front-end application where to draw this task config on the UI.
            &quot;x&quot;: 42,
            &quot;y&quot;: 42,
          },
          &quot;precondition&quot;: &quot;A String&quot;, # Optional. Standard filter expression evaluated before execution. Independent of other conditions and tasks. Can be used to enable rollout. e.g. &quot;rollout(5)&quot; will only allow 5% of incoming traffic to task.
          &quot;preconditionLabel&quot;: &quot;A String&quot;, # Optional. User-provided label that is attached to precondition in the UI.
          &quot;rollbackStrategy&quot;: { # Next available id: 4 # Optional. Contains information about what needs to be done upon failure (either a permanent error or after it has been retried too many times).
            &quot;parameters&quot;: { # LINT.IfChange This message is used for processing and persisting (when applicable) key value pair parameters for each event in the event bus. Please see # Optional. The customized parameters the user can pass to this task.
              &quot;parameters&quot;: [ # Parameters are a part of Event and can be used to communicate between different tasks that are part of the same workflow execution.
                { # Key-value pair of EventBus parameters.
                  &quot;dataType&quot;: &quot;A String&quot;, # Explicitly getting the type of the parameter.
                  &quot;key&quot;: &quot;A String&quot;, # Key is used to retrieve the corresponding parameter value. This should be unique for a given fired event. These parameters must be predefined in the workflow definition.
                  &quot;masked&quot;: True or False, # True if this parameter should be masked in the logs
                  &quot;value&quot;: { # To support various types of parameter values. Next available id: 14 # Values for the defined keys. Each value can either be string, int, double or any proto message.
                    &quot;booleanArray&quot;: {
                      &quot;booleanValues&quot;: [
                        True or False,
                      ],
                    },
                    &quot;booleanValue&quot;: True or False,
                    &quot;doubleArray&quot;: {
                      &quot;doubleValues&quot;: [
                        3.14,
                      ],
                    },
                    &quot;doubleValue&quot;: 3.14,
                    &quot;intArray&quot;: {
                      &quot;intValues&quot;: [
                        &quot;A String&quot;,
                      ],
                    },
                    &quot;intValue&quot;: &quot;A String&quot;,
                    &quot;jsonValue&quot;: &quot;A String&quot;,
                    &quot;protoArray&quot;: {
                      &quot;protoValues&quot;: [
                        {
                          &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
                        },
                      ],
                    },
                    &quot;protoValue&quot;: {
                      &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
                    },
                    &quot;serializedObjectValue&quot;: {
                      &quot;objectValue&quot;: &quot;A String&quot;,
                    },
                    &quot;stringArray&quot;: {
                      &quot;stringValues&quot;: [
                        &quot;A String&quot;,
                      ],
                    },
                    &quot;stringValue&quot;: &quot;A String&quot;,
                  },
                },
              ],
            },
            &quot;rollbackTaskImplementationClassName&quot;: &quot;A String&quot;, # Required. This is the name of the task that needs to be executed upon rollback of this task.
            &quot;taskNumbersToRollback&quot;: [ # Required. These are the tasks numbers of the tasks whose `rollback_strategy.rollback_task_implementation_class_name` needs to be executed upon failure of this task.
              &quot;A String&quot;,
            ],
          },
          &quot;successPolicy&quot;: { # Policy that dictates the behavior for the task after it completes successfully. # Determines what action to take upon successful task completion.
            &quot;finalState&quot;: &quot;A String&quot;, # State to which the execution snapshot status will be set if the task succeeds.
          },
          &quot;synchronousCallFailurePolicy&quot;: { # Policy that defines the task retry logic and failure type. If no FailurePolicy is defined for a task, all its dependent tasks will not be executed (i.e, a `retry_strategy` of NONE will be applied). # Optional. Determines the number of times the task will be retried on failure and with what retry strategy. This is applicable for synchronous calls to Eventbus alone (Post).
            &quot;intervalInSeconds&quot;: &quot;A String&quot;, # Required if retry_strategy is FIXED_INTERVAL or LINEAR/EXPONENTIAL_BACKOFF/RESTART_WORKFLOW_WITH_BACKOFF. Defines the initial interval for backoff.
            &quot;maxNumRetries&quot;: 42, # Required if retry_strategy is FIXED_INTERVAL or LINEAR/EXPONENTIAL_BACKOFF/RESTART_WORKFLOW_WITH_BACKOFF. Defines the number of times the task will be retried if failed.
            &quot;retryCondition&quot;: &quot;A String&quot;, # Optional. The retry condition that will be evaluated for this failure policy with the corresponding retry strategy.
            &quot;retryStrategy&quot;: &quot;A String&quot;, # Defines what happens to the task upon failure.
          },
          &quot;taskEntity&quot;: { # Contains a task&#x27;s metadata and associated information. Next available id: 7 # Copy of the task entity that this task config is an instance of.
            &quot;disabledForVpcSc&quot;: True or False, # True if the task has conflict with vpcsc
            &quot;metadata&quot;: { # TaskMetadata are attributes that are associated to every common Task we have. # Metadata inclueds the task name, author and so on.
              &quot;activeTaskName&quot;: &quot;A String&quot;, # The new task name to replace the current task if it is deprecated. Otherwise, it is the same as the current task name.
              &quot;admins&quot;: [
                { # Admins are owners of a Task, and have all permissions on a particular task identified by the task name. By default, Eventbus periodically scans all task metadata and syncs (adds) any new admins defined here to Zanzibar.
                  &quot;googleGroupEmail&quot;: &quot;A String&quot;,
                  &quot;userEmail&quot;: &quot;A String&quot;,
                },
              ],
              &quot;category&quot;: &quot;A String&quot;,
              &quot;codeSearchLink&quot;: &quot;A String&quot;, # The Code Search link to the Task Java file.
              &quot;defaultJsonValidationOption&quot;: &quot;A String&quot;, # Controls whether JSON workflow parameters are validated against provided schemas before and/or after this task&#x27;s execution.
              &quot;defaultSpec&quot;: &quot;A String&quot;, # Contains the initial configuration of the task with default values set. For now, The string should be compatible to an ASCII-proto format.
              &quot;description&quot;: &quot;A String&quot;, # In a few sentences, describe the purpose and usage of the task.
              &quot;descriptiveName&quot;: &quot;A String&quot;, # The string name to show on the task list on the Workflow editor screen. This should be a very short, one to two words name for the task. (e.g. &quot;Send Mail&quot;)
              &quot;docMarkdown&quot;: &quot;A String&quot;, # Snippet of markdown documentation to embed in the RHP for this task.
              &quot;externalCategory&quot;: &quot;A String&quot;,
              &quot;externalCategorySequence&quot;: 42, # Sequence with which the task in specific category to be displayed in task discovery panel for external users.
              &quot;externalDocHtml&quot;: &quot;A String&quot;, # External-facing documention embedded in the RHP for this task.
              &quot;externalDocLink&quot;: &quot;A String&quot;, # Doc link for external-facing documentation (separate from g3doc).
              &quot;externalDocMarkdown&quot;: &quot;A String&quot;, # DEPRECATED: Use external_doc_html.
              &quot;g3DocLink&quot;: &quot;A String&quot;, # URL to the associated G3 Doc for the task if available
              &quot;iconLink&quot;: &quot;A String&quot;, # URL to gstatic image icon for this task. This icon shows up on the task list panel along with the task name in the Workflow Editor screen. Use the 24p, 2x, gray color icon image format.
              &quot;isDeprecated&quot;: True or False, # The deprecation status of the current task. Default value is false;
              &quot;name&quot;: &quot;A String&quot;, # The actual class name or the annotated name of the task. Task Author should initialize this field with value from the getName() method of the Task class.
              &quot;standaloneExternalDocHtml&quot;: &quot;A String&quot;, # External-facing documention for standalone IP in pantheon embedded in the RHP for this task. Non null only if different from external_doc_html
              &quot;status&quot;: &quot;A String&quot;, # Allows author to indicate if the task is ready to use or not. If not set, then it will default to INACTIVE.
              &quot;system&quot;: &quot;A String&quot;,
              &quot;tags&quot;: [ # A set of tags that pertain to a particular task. This can be used to improve the searchability of tasks with several names (&quot;REST Caller&quot; vs. &quot;Call REST Endpoint&quot;) or to help users find tasks based on related words.
                &quot;A String&quot;,
              ],
            },
            &quot;paramSpecs&quot;: { # Declarations for inputs/outputs for a TypedTask. This is also associated with the METADATA mask.
              &quot;parameters&quot;: [
                { # Key-value pair of EventBus task parameters. Next id: 13
                  &quot;className&quot;: &quot;A String&quot;, # The FQCN of the Java object this represents. A string, for example, would be &quot;java.lang.String&quot;. If this is &quot;java.lang.Object&quot;, the parameter can be of any type.
                  &quot;collectionElementClassName&quot;: &quot;A String&quot;, # If it is a collection of objects, this would be the FCQN of every individual element in the collection. If this is &quot;java.lang.Object&quot;, the parameter is a collection of any type.
                  &quot;config&quot;: { # Optional fields, such as help text and other useful info.
                    &quot;descriptivePhrase&quot;: &quot;A String&quot;, # A short phrase to describe what this parameter contains.
                    &quot;helpText&quot;: &quot;A String&quot;, # Detailed help text for this parameter containing information not provided elsewhere. For example, instructions on how to migrate from a deprecated parameter.
                    &quot;hideDefaultValue&quot;: True or False, # Whether the default value is hidden in the UI.
                    &quot;inputDisplayOption&quot;: &quot;A String&quot;,
                    &quot;isHidden&quot;: True or False, # Whether this field is hidden in the UI.
                    &quot;label&quot;: &quot;A String&quot;, # A user-friendly label for the parameter.
                    &quot;parameterNameOption&quot;: &quot;A String&quot;,
                    &quot;subSectionLabel&quot;: &quot;A String&quot;, # A user-friendly label for subSection under which the parameter will be displayed.
                    &quot;uiPlaceholderText&quot;: &quot;A String&quot;, # Placeholder text which will appear in the UI input form for this parameter.
                  },
                  &quot;dataType&quot;: &quot;A String&quot;, # The data type of the parameter.
                  &quot;defaultValue&quot;: { # To support various types of parameter values. Next available id: 14 # Default values for the defined keys. Each value can either be string, int, double or any proto message or a serialized object.
                    &quot;booleanArray&quot;: {
                      &quot;booleanValues&quot;: [
                        True or False,
                      ],
                    },
                    &quot;booleanValue&quot;: True or False,
                    &quot;doubleArray&quot;: {
                      &quot;doubleValues&quot;: [
                        3.14,
                      ],
                    },
                    &quot;doubleValue&quot;: 3.14,
                    &quot;intArray&quot;: {
                      &quot;intValues&quot;: [
                        &quot;A String&quot;,
                      ],
                    },
                    &quot;intValue&quot;: &quot;A String&quot;,
                    &quot;jsonValue&quot;: &quot;A String&quot;,
                    &quot;protoArray&quot;: {
                      &quot;protoValues&quot;: [
                        {
                          &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
                        },
                      ],
                    },
                    &quot;protoValue&quot;: {
                      &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
                    },
                    &quot;serializedObjectValue&quot;: {
                      &quot;objectValue&quot;: &quot;A String&quot;,
                    },
                    &quot;stringArray&quot;: {
                      &quot;stringValues&quot;: [
                        &quot;A String&quot;,
                      ],
                    },
                    &quot;stringValue&quot;: &quot;A String&quot;,
                  },
                  &quot;isDeprecated&quot;: True or False, # If set, this entry is deprecated, so further use of this parameter should be prohibited.
                  &quot;isOutput&quot;: True or False,
                  &quot;jsonSchema&quot;: &quot;A String&quot;, # If the data_type is JSON_VALUE, then this will define its schema.
                  &quot;key&quot;: &quot;A String&quot;, # Key is used to retrieve the corresponding parameter value. This should be unique for a given task. These parameters must be predefined in the workflow definition.
                  &quot;protoDef&quot;: { # Populated if this represents a proto or proto array.
                    &quot;fullName&quot;: &quot;A String&quot;, # The fully-qualified proto name. This message, for example, would be &quot;enterprise.crm.eventbus.proto.ParamSpecEntry.ProtoDefinition&quot;.
                    &quot;path&quot;: &quot;A String&quot;, # Path to the proto file that contains the message type&#x27;s definition.
                  },
                  &quot;required&quot;: True or False, # If set, the user must provide an input value for this parameter.
                  &quot;validationRule&quot;: { # Rule used to validate inputs (individual values and collection elements) for this parameter.
                    &quot;doubleRange&quot;: { # Range used to validate doubles and floats.
                      &quot;max&quot;: 3.14, # The inclusive maximum of the acceptable range.
                      &quot;min&quot;: 3.14, # The inclusive minimum of the acceptable range.
                    },
                    &quot;intRange&quot;: { # Range used to validate longs and ints.
                      &quot;max&quot;: &quot;A String&quot;, # The inclusive maximum of the acceptable range.
                      &quot;min&quot;: &quot;A String&quot;, # The inclusive minimum of the acceptable range.
                    },
                    &quot;stringRegex&quot;: { # Rule used to validate strings.
                      &quot;exclusive&quot;: True or False, # Whether the regex matcher is applied exclusively (if true, matching values will be rejected).
                      &quot;regex&quot;: &quot;A String&quot;, # The regex applied to the input value(s).
                    },
                  },
                },
              ],
            },
            &quot;stats&quot;: { # Stats for the requested dimensions: QPS, duration, and error/warning rate # Deprecated - statistics from the Monarch query.
              &quot;dimensions&quot;: { # Dimensions that these stats have been aggregated on.
                &quot;clientId&quot;: &quot;A String&quot;,
                &quot;enumFilterType&quot;: &quot;A String&quot;, # Whether to include or exclude the enums matching the regex.
                &quot;errorEnumString&quot;: &quot;A String&quot;,
                &quot;retryAttempt&quot;: &quot;A String&quot;,
                &quot;taskName&quot;: &quot;A String&quot;,
                &quot;taskNumber&quot;: &quot;A String&quot;,
                &quot;triggerId&quot;: &quot;A String&quot;, # Stats have been or will be aggregated on set fields for any semantically-meaningful combination.
                &quot;warningEnumString&quot;: &quot;A String&quot;,
                &quot;workflowId&quot;: &quot;A String&quot;,
                &quot;workflowName&quot;: &quot;A String&quot;,
              },
              &quot;durationInSeconds&quot;: 3.14, # Average duration in seconds.
              &quot;errorRate&quot;: 3.14, # Average error rate.
              &quot;qps&quot;: 3.14, # Queries per second.
              &quot;warningRate&quot;: 3.14, # Average warning rate.
            },
            &quot;taskType&quot;: &quot;A String&quot;, # Defines the type of the task
            &quot;uiConfig&quot;: { # Task authors would use this type to configure the UI for a particular task by specifying what UI config modules should be included to compose the UI. Learn more about config module framework: # UI configuration for this task Also associated with the METADATA mask.
              &quot;taskUiModuleConfigs&quot;: [ # Configurations of included config modules.
                { # Task author would use this type to configure a config module.
                  &quot;moduleId&quot;: &quot;A String&quot;, # ID of the config module.
                },
              ],
            },
          },
          &quot;taskExecutionStrategy&quot;: &quot;A String&quot;, # The policy dictating the execution strategy of this task.
          &quot;taskName&quot;: &quot;A String&quot;, # The name for the task.
          &quot;taskNumber&quot;: &quot;A String&quot;, # REQUIRED: the identifier of this task within its parent event config, specified by the client. This should be unique among all the tasks belong to the same event config. We use this field as the identifier to find next tasks (via field `next_tasks.task_number`).
          &quot;taskSpec&quot;: &quot;A String&quot;, # A string template that allows user to configure task parameters (with either literal default values or tokens which will be resolved at execution time) for the task. It will eventually replace the old &quot;parameters&quot; field.
          &quot;taskTemplateName&quot;: &quot;A String&quot;, # Used to define task-template name if task is of type task-template
          &quot;taskType&quot;: &quot;A String&quot;, # Defines the type of the task
        },
      ],
      &quot;teardown&quot;: { # Optional. Contains a graph of tasks that will be executed before putting the event in a terminal state (SUCCEEDED/FAILED/FATAL), regardless of success or failure, similar to &quot;finally&quot; in code.
        &quot;teardownTaskConfigs&quot;: [ # Required.
          {
            &quot;creatorEmail&quot;: &quot;A String&quot;, # The creator&#x27;s email address.
            &quot;name&quot;: &quot;A String&quot;, # Required. Unique identifier of the teardown task within this Config. We use this field as the identifier to find next teardown tasks.
            &quot;nextTeardownTask&quot;: { # The teardown task that is next in line to be executed. We support only sequential execution of teardown tasks (i.e. no branching).
              &quot;name&quot;: &quot;A String&quot;, # Required. Name of the next teardown task.
            },
            &quot;parameters&quot;: { # LINT.IfChange This message is used for processing and persisting (when applicable) key value pair parameters for each event in the event bus. Please see # The parameters the user can pass to this task.
              &quot;parameters&quot;: [ # Parameters are a part of Event and can be used to communicate between different tasks that are part of the same integration execution.
                { # Key-value pair of EventBus parameters.
                  &quot;key&quot;: &quot;A String&quot;, # Key is used to retrieve the corresponding parameter value. This should be unique for a given fired event. These parameters must be predefined in the integration definition.
                  &quot;masked&quot;: True or False, # True if this parameter should be masked in the logs
                  &quot;value&quot;: { # LINT.IfChange To support various types of parameter values. Next available id: 14 # Values for the defined keys. Each value can either be string, int, double or any proto message.
                    &quot;booleanArray&quot;: {
                      &quot;booleanValues&quot;: [
                        True or False,
                      ],
                    },
                    &quot;booleanValue&quot;: True or False,
                    &quot;doubleArray&quot;: {
                      &quot;doubleValues&quot;: [
                        3.14,
                      ],
                    },
                    &quot;doubleValue&quot;: 3.14,
                    &quot;intArray&quot;: {
                      &quot;intValues&quot;: [
                        &quot;A String&quot;,
                      ],
                    },
                    &quot;intValue&quot;: &quot;A String&quot;,
                    &quot;protoArray&quot;: {
                      &quot;protoValues&quot;: [
                        {
                          &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
                        },
                      ],
                    },
                    &quot;protoValue&quot;: {
                      &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
                    },
                    &quot;serializedObjectValue&quot;: {
                      &quot;objectValue&quot;: &quot;A String&quot;,
                    },
                    &quot;stringArray&quot;: {
                      &quot;stringValues&quot;: [
                        &quot;A String&quot;,
                      ],
                    },
                    &quot;stringValue&quot;: &quot;A String&quot;,
                  },
                },
              ],
            },
            &quot;properties&quot;: { # LINT.IfChange This message is used for storing key value pair properties for each Event / Task in the EventBus.
              &quot;properties&quot;: [ # An unordered list of property entries.
                { # Key-value pair of EventBus property.
                  &quot;key&quot;: &quot;A String&quot;, # Key is used to retrieve the corresponding property value. This should be unique for a given fired event. The Tasks should be aware of the keys used while firing the events for them to be able to retrieve the values.
                  &quot;value&quot;: { # Used for define type for values. Currently supported value types include int, string, double, array, and any proto message. # Values for the defined keys. Each value can either be string, int, double or any proto message.
                    &quot;booleanValue&quot;: True or False,
                    &quot;doubleArray&quot;: {
                      &quot;values&quot;: [
                        3.14,
                      ],
                    },
                    &quot;doubleValue&quot;: 3.14,
                    &quot;intArray&quot;: {
                      &quot;values&quot;: [
                        &quot;A String&quot;,
                      ],
                    },
                    &quot;intValue&quot;: &quot;A String&quot;,
                    &quot;protoValue&quot;: {
                      &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
                    },
                    &quot;stringArray&quot;: {
                      &quot;values&quot;: [
                        &quot;A String&quot;,
                      ],
                    },
                    &quot;stringValue&quot;: &quot;A String&quot;,
                  },
                },
              ],
            },
            &quot;teardownTaskImplementationClassName&quot;: &quot;A String&quot;, # Required. Implementation class name.
          },
        ],
      },
      &quot;triggerConfigs&quot;: [ # Optional. Trigger configurations.
        { # Configuration detail of a trigger.
          &quot;alertConfig&quot;: [ # Optional. An alert threshold configuration for the [trigger + client + integration] tuple. If these values are not specified in the trigger config, default values will be populated by the system. Note that there must be exactly one alert threshold configured per [client + trigger + integration] when published.
            { # Message to be used to configure custom alerting in the {@code EventConfig} protos for an event.
              &quot;aggregationPeriod&quot;: &quot;A String&quot;, # The period over which the metric value should be aggregated and evaluated. Format is , where integer should be a positive integer and unit should be one of (s,m,h,d,w) meaning (second, minute, hour, day, week). For an EXPECTED_MIN threshold, this aggregation_period must be lesser than 24 hours.
              &quot;alertThreshold&quot;: 42, # For how many contiguous aggregation periods should the expected min or max be violated for the alert to be fired.
              &quot;disableAlert&quot;: True or False, # Set to false by default. When set to true, the metrics are not aggregated or pushed to Monarch for this integration alert.
              &quot;displayName&quot;: &quot;A String&quot;, # Name of the alert. This will be displayed in the alert subject. If set, this name should be unique within the scope of the integration.
              &quot;durationThreshold&quot;: &quot;A String&quot;, # Should be specified only for *AVERAGE_DURATION and *PERCENTILE_DURATION metrics. This member should be used to specify what duration value the metrics should exceed for the alert to trigger.
              &quot;metricType&quot;: &quot;A String&quot;, # The type of metric.
              &quot;onlyFinalAttempt&quot;: True or False, # For either events or tasks, depending on the type of alert, count only final attempts, not retries.
              &quot;thresholdType&quot;: &quot;A String&quot;, # The threshold type, whether lower(expected_min) or upper(expected_max), for which this alert is being configured. If value falls below expected_min or exceeds expected_max, an alert will be fired.
              &quot;thresholdValue&quot;: { # The threshold value of the metric, above or below which the alert should be triggered. See EventAlertConfig or TaskAlertConfig for the different alert metric types in each case. For the *RATE metrics, one or both of these fields may be set. Zero is the default value and can be left at that. For *PERCENTILE_DURATION metrics, one or both of these fields may be set, and also, the duration threshold value should be specified in the threshold_duration_ms member below. For *AVERAGE_DURATION metrics, these fields should not be set at all. A different member, threshold_duration_ms, must be set in the EventAlertConfig or the TaskAlertConfig. # The metric value, above or below which the alert should be triggered.
                &quot;absolute&quot;: &quot;A String&quot;, # Absolute value threshold.
                &quot;percentage&quot;: 42, # Percentage threshold.
              },
            },
          ],
          &quot;cloudSchedulerConfig&quot;: { # Cloud Scheduler Trigger configuration # Optional. Cloud Scheduler Trigger related metadata
            &quot;cronTab&quot;: &quot;A String&quot;, # Required. The cron tab of cloud scheduler trigger.
            &quot;errorMessage&quot;: &quot;A String&quot;, # Optional. When the job was deleted from Pantheon UI, error_message will be populated when Get/List integrations
            &quot;location&quot;: &quot;A String&quot;, # Required. The location where associated cloud scheduler job will be created
            &quot;serviceAccountEmail&quot;: &quot;A String&quot;, # Required. Service account used by Cloud Scheduler to trigger the integration at scheduled time
          },
          &quot;description&quot;: &quot;A String&quot;, # Optional. User-provided description intended to give additional business context about the task.
          &quot;errorCatcherId&quot;: &quot;A String&quot;, # Optional. Optional Error catcher id of the error catch flow which will be executed when execution error happens in the task
          &quot;inputVariables&quot;: { # Variables names mapped to api trigger. # Optional. List of input variables for the api trigger.
            &quot;names&quot;: [ # Optional. List of variable names.
              &quot;A String&quot;,
            ],
          },
          &quot;label&quot;: &quot;A String&quot;, # Optional. The user created label for a particular trigger.
          &quot;nextTasksExecutionPolicy&quot;: &quot;A String&quot;, # Optional. Dictates how next tasks will be executed.
          &quot;outputVariables&quot;: { # Variables names mapped to api trigger. # Optional. List of output variables for the api trigger.
            &quot;names&quot;: [ # Optional. List of variable names.
              &quot;A String&quot;,
            ],
          },
          &quot;position&quot;: { # Configuration detail of coordinate, it used for UI # Optional. Informs the front-end application where to draw this error catcher config on the UI.
            &quot;x&quot;: 42, # Required. X axis of the coordinate
            &quot;y&quot;: 42, # Required. Y axis of the coordinate
          },
          &quot;properties&quot;: { # Optional. Configurable properties of the trigger, not to be confused with integration parameters. E.g. &quot;name&quot; is a property for API triggers and &quot;subscription&quot; is a property for Pub/sub triggers.
            &quot;a_key&quot;: &quot;A String&quot;,
          },
          &quot;startTasks&quot;: [ # Optional. Set of tasks numbers from where the integration execution is started by this trigger. If this is empty, then integration is executed with default start tasks. In the list of start tasks, none of two tasks can have direct ancestor-descendant relationships (i.e. in a same integration execution graph).
            { # The task that is next in line to be executed, if the condition specified evaluated to true.
              &quot;condition&quot;: &quot;A String&quot;, # Standard filter expression for this task to become an eligible next task.
              &quot;description&quot;: &quot;A String&quot;, # User-provided description intended to give additional business context about the task.
              &quot;displayName&quot;: &quot;A String&quot;, # User-provided label that is attached to this edge in the UI.
              &quot;taskConfigId&quot;: &quot;A String&quot;, # ID of the next task.
              &quot;taskId&quot;: &quot;A String&quot;, # Task number of the next task.
            },
          ],
          &quot;trigger&quot;: &quot;A String&quot;, # Optional. Name of the trigger. Example: &quot;API Trigger&quot;, &quot;Cloud Pub Sub Trigger&quot; When set will be sent out to monitoring dashabord for tracking purpose.
          &quot;triggerId&quot;: &quot;A String&quot;, # Optional. Auto-generated trigger ID. The ID is based on the properties that you define in the trigger config. For example, for an API trigger, the trigger ID follows the format: api_trigger/TRIGGER_NAME Where trigger config has properties with value {&quot;Trigger name&quot;: TRIGGER_NAME}
          &quot;triggerNumber&quot;: &quot;A String&quot;, # Required. A number to uniquely identify each trigger config within the integration on UI.
          &quot;triggerType&quot;: &quot;A String&quot;, # Optional. Type of trigger
        },
      ],
      &quot;triggerConfigsInternal&quot;: [ # Optional. Trigger configurations.
        { # Configuration detail of a trigger. Next available id: 22
          &quot;alertConfig&quot;: [ # An alert threshold configuration for the [trigger + client + workflow] tuple. If these values are not specified in the trigger config, default values will be populated by the system. Note that there must be exactly one alert threshold configured per [client + trigger + workflow] when published.
            { # Message to be used to configure custom alerting in the {@code EventConfig} protos for an event.
              &quot;aggregationPeriod&quot;: &quot;A String&quot;, # For an EXPECTED_MIN threshold, this aggregation_period must be lesser than 24 hours.
              &quot;alertDisabled&quot;: True or False, # Set to false by default. When set to true, the metrics are not aggregated or pushed to Monarch for this workflow alert.
              &quot;alertName&quot;: &quot;A String&quot;, # A name to identify this alert. This will be displayed in the alert subject. If set, this name should be unique within the scope of the workflow.
              &quot;clientId&quot;: &quot;A String&quot;, # Client associated with this alert configuration.
              &quot;durationThresholdMs&quot;: &quot;A String&quot;, # Should be specified only for *AVERAGE_DURATION and *PERCENTILE_DURATION metrics. This member should be used to specify what duration value the metrics should exceed for the alert to trigger.
              &quot;errorEnumList&quot;: { # List of error enums for alerts.
                &quot;enumStrings&quot;: [
                  &quot;A String&quot;,
                ],
                &quot;filterType&quot;: &quot;A String&quot;,
              },
              &quot;metricType&quot;: &quot;A String&quot;,
              &quot;numAggregationPeriods&quot;: 42, # For how many contiguous aggregation periods should the expected min or max be violated for the alert to be fired.
              &quot;onlyFinalAttempt&quot;: True or False, # For either events or tasks, depending on the type of alert, count only final attempts, not retries.
              &quot;playbookUrl&quot;: &quot;A String&quot;, # Link to a playbook for resolving the issue that triggered this alert.
              &quot;thresholdType&quot;: &quot;A String&quot;, # The threshold type, whether lower(expected_min) or upper(expected_max), for which this alert is being configured. If value falls below expected_min or exceeds expected_max, an alert will be fired.
              &quot;thresholdValue&quot;: { # The threshold value of the metric, above or below which the alert should be triggered. See EventAlertConfig or TaskAlertConfig for the different alert metric types in each case. For the *RATE metrics, one or both of these fields may be set. Zero is the default value and can be left at that. For *PERCENTILE_DURATION metrics, one or both of these fields may be set, and also, the duration threshold value should be specified in the threshold_duration_ms member below. For *AVERAGE_DURATION metrics, these fields should not be set at all. A different member, threshold_duration_ms, must be set in the EventAlertConfig or the TaskAlertConfig. # The metric value, above or below which the alert should be triggered.
                &quot;absolute&quot;: &quot;A String&quot;,
                &quot;percentage&quot;: 42,
              },
              &quot;warningEnumList&quot;: { # List of error enums for alerts.
                &quot;enumStrings&quot;: [
                  &quot;A String&quot;,
                ],
                &quot;filterType&quot;: &quot;A String&quot;,
              },
            },
          ],
          &quot;cloudSchedulerConfig&quot;: { # Cloud Scheduler Trigger configuration
            &quot;cronTab&quot;: &quot;A String&quot;, # Required. The cron tab of cloud scheduler trigger.
            &quot;errorMessage&quot;: &quot;A String&quot;, # Optional. When the job was deleted from Pantheon UI, error_message will be populated when Get/List integrations
            &quot;location&quot;: &quot;A String&quot;, # Required. The location where associated cloud scheduler job will be created
            &quot;serviceAccountEmail&quot;: &quot;A String&quot;, # Required. Service account used by Cloud Scheduler to trigger the integration at scheduled time
          },
          &quot;description&quot;: &quot;A String&quot;, # User-provided description intended to give more business context about the task.
          &quot;enabledClients&quot;: [ # Required. The list of client ids which are enabled to execute the workflow using this trigger. In other words, these clients have the workflow execution privledges for this trigger. For API trigger, the client id in the incoming request is validated against the list of enabled clients. For non-API triggers, one workflow execution is triggered on behalf of each enabled client.
            &quot;A String&quot;,
          ],
          &quot;errorCatcherId&quot;: &quot;A String&quot;, # Optional Error catcher id of the error catch flow which will be executed when execution error happens in the task
          &quot;inputVariables&quot;: { # Variables names mapped to api trigger. # Optional. List of input variables for the api trigger.
            &quot;names&quot;: [ # Optional. List of variable names.
              &quot;A String&quot;,
            ],
          },
          &quot;label&quot;: &quot;A String&quot;, # The user created label for a particular trigger.
          &quot;nextTasksExecutionPolicy&quot;: &quot;A String&quot;, # Dictates how next tasks will be executed.
          &quot;outputVariables&quot;: { # Variables names mapped to api trigger. # Optional. List of output variables for the api trigger.
            &quot;names&quot;: [ # Optional. List of variable names.
              &quot;A String&quot;,
            ],
          },
          &quot;pauseWorkflowExecutions&quot;: True or False, # Optional. If set to true, any upcoming requests for this trigger config will be paused and the executions will be resumed later when the flag is reset. The workflow to which this trigger config belongs has to be in ACTIVE status for the executions to be paused or resumed.
          &quot;position&quot;: { # Represents two-dimensional positions. # Optional. Informs the front-end application where to draw this trigger config on the UI.
            &quot;x&quot;: 42,
            &quot;y&quot;: 42,
          },
          &quot;properties&quot;: { # Configurable properties of the trigger, not to be confused with workflow parameters. E.g. &quot;name&quot; is a property for API triggers and &quot;subscription&quot; is a property for Cloud Pubsub triggers.
            &quot;a_key&quot;: &quot;A String&quot;,
          },
          &quot;startTasks&quot;: [ # Set of tasks numbers from where the workflow execution is started by this trigger. If this is empty, then workflow is executed with default start tasks. In the list of start tasks, none of two tasks can have direct ancestor-descendant relationships (i.e. in a same workflow execution graph).
            { # The task that is next in line to be executed, if the condition specified evaluated to true.
              &quot;combinedConditions&quot;: [ # Combined condition for this task to become an eligible next task. Each of these combined_conditions are joined with logical OR. DEPRECATED: use `condition`
                { # This message recursively combines constituent conditions using logical AND.
                  &quot;conditions&quot;: [ # A set of individual constituent conditions.
                    { # Condition that uses `operator` to evaluate the key against the value.
                      &quot;eventPropertyKey&quot;: &quot;A String&quot;, # Key that&#x27;s evaluated against the `value`. Please note the data type of the runtime value associated with the key should match the data type of `value`, else an IllegalArgumentException is thrown.
                      &quot;operator&quot;: &quot;A String&quot;, # Operator used to evaluate the condition. Please note that an operator with an inappropriate key/value operand will result in IllegalArgumentException, e.g. CONTAINS with boolean key/value pair.
                      &quot;value&quot;: { # Used for define type for values. Currently supported value types include int, string, double, array, and any proto message. # Value that&#x27;s checked for the key.
                        &quot;booleanValue&quot;: True or False,
                        &quot;doubleArray&quot;: {
                          &quot;values&quot;: [
                            3.14,
                          ],
                        },
                        &quot;doubleValue&quot;: 3.14,
                        &quot;intArray&quot;: {
                          &quot;values&quot;: [
                            &quot;A String&quot;,
                          ],
                        },
                        &quot;intValue&quot;: &quot;A String&quot;,
                        &quot;protoValue&quot;: {
                          &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
                        },
                        &quot;stringArray&quot;: {
                          &quot;values&quot;: [
                            &quot;A String&quot;,
                          ],
                        },
                        &quot;stringValue&quot;: &quot;A String&quot;,
                      },
                    },
                  ],
                },
              ],
              &quot;condition&quot;: &quot;A String&quot;, # Standard filter expression for this task to become an eligible next task.
              &quot;description&quot;: &quot;A String&quot;, # User-provided description intended to give more business context about the next task edge or condition.
              &quot;label&quot;: &quot;A String&quot;, # User-provided label that is attached to this edge in the UI.
              &quot;taskConfigId&quot;: &quot;A String&quot;, # ID of the next task.
              &quot;taskNumber&quot;: &quot;A String&quot;, # Task number of the next task.
            },
          ],
          &quot;triggerCriteria&quot;: { # Optional. When set, Eventbus will run the task specified in the trigger_criteria and validate the result using the trigger_criteria.condition, and only execute the workflow when result is true.
            &quot;condition&quot;: &quot;A String&quot;, # Required. Standard filter expression, when true the workflow will be executed. If there&#x27;s no trigger_criteria_task_implementation_class_name specified, the condition will be validated directly.
            &quot;parameters&quot;: { # LINT.IfChange This message is used for processing and persisting (when applicable) key value pair parameters for each event in the event bus. Please see # Optional. To be used in TaskConfig for the implementation class.
              &quot;parameters&quot;: [ # Parameters are a part of Event and can be used to communicate between different tasks that are part of the same integration execution.
                { # Key-value pair of EventBus parameters.
                  &quot;key&quot;: &quot;A String&quot;, # Key is used to retrieve the corresponding parameter value. This should be unique for a given fired event. These parameters must be predefined in the integration definition.
                  &quot;masked&quot;: True or False, # True if this parameter should be masked in the logs
                  &quot;value&quot;: { # LINT.IfChange To support various types of parameter values. Next available id: 14 # Values for the defined keys. Each value can either be string, int, double or any proto message.
                    &quot;booleanArray&quot;: {
                      &quot;booleanValues&quot;: [
                        True or False,
                      ],
                    },
                    &quot;booleanValue&quot;: True or False,
                    &quot;doubleArray&quot;: {
                      &quot;doubleValues&quot;: [
                        3.14,
                      ],
                    },
                    &quot;doubleValue&quot;: 3.14,
                    &quot;intArray&quot;: {
                      &quot;intValues&quot;: [
                        &quot;A String&quot;,
                      ],
                    },
                    &quot;intValue&quot;: &quot;A String&quot;,
                    &quot;protoArray&quot;: {
                      &quot;protoValues&quot;: [
                        {
                          &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
                        },
                      ],
                    },
                    &quot;protoValue&quot;: {
                      &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
                    },
                    &quot;serializedObjectValue&quot;: {
                      &quot;objectValue&quot;: &quot;A String&quot;,
                    },
                    &quot;stringArray&quot;: {
                      &quot;stringValues&quot;: [
                        &quot;A String&quot;,
                      ],
                    },
                    &quot;stringValue&quot;: &quot;A String&quot;,
                  },
                },
              ],
            },
            &quot;triggerCriteriaTaskImplementationClassName&quot;: &quot;A String&quot;, # Optional. Implementation class name. The class should implement the “TypedTask” interface.
          },
          &quot;triggerId&quot;: &quot;A String&quot;, # The backend trigger ID.
          &quot;triggerName&quot;: &quot;A String&quot;, # Optional. Name of the trigger This is added to identify the type of trigger. This is avoid the logic on triggerId to identify the trigger_type and push the same to monitoring.
          &quot;triggerNumber&quot;: &quot;A String&quot;, # Required. A number to uniquely identify each trigger config within the workflow on UI.
          &quot;triggerType&quot;: &quot;A String&quot;,
        },
      ],
      &quot;updateTime&quot;: &quot;A String&quot;, # Output only. Auto-generated.
      &quot;userLabel&quot;: &quot;A String&quot;, # Optional. A user-defined label that annotates an integration version. Typically, this is only set when the integration version is created.
    },
  ],
  &quot;nextPageToken&quot;: &quot;A String&quot;, # A token, which can be sent as `page_token` to retrieve the next page. If this field is omitted, there are no subsequent pages.
  &quot;noPermission&quot;: True or False, # Whether the user has no permission on the version or not.
}</pre>
</div>

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

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

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

<div class="method">
    <code class="details" id="patch">patch(name, body=None, updateMask=None, x__xgafv=None)</code>
  <pre>Update a integration with a draft version in the specified project.

Args:
  name: string, Output only. Auto-generated primary key. (required)
  body: object, The request body.
    The object takes the form of:

{ # The integration version definition.
  &quot;cloudKmsKey&quot;: &quot;A String&quot;, # Optional. Cloud KMS resource name for the CMEK encryption key.
  &quot;cloudLoggingDetails&quot;: { # Cloud Logging details for execution info # Optional. Cloud Logging details for the integration version
    &quot;cloudLoggingSeverity&quot;: &quot;A String&quot;, # Optional. Severity selected by the customer for the logs to be sent to Cloud Logging, for the integration version getting executed.
    &quot;enableCloudLogging&quot;: True or False, # Optional. Status of whether Cloud Logging is enabled or not for the integration version getting executed.
  },
  &quot;createTime&quot;: &quot;A String&quot;, # Output only. Auto-generated.
  &quot;createdFromTemplate&quot;: &quot;A String&quot;, # Optional. Optional. The resource name of the template from which the integration is created.
  &quot;databasePersistencePolicy&quot;: &quot;A String&quot;, # Optional. Flag to disable database persistence for execution data, including event execution info, execution export info, execution metadata index and execution param index.
  &quot;description&quot;: &quot;A String&quot;, # Optional. The integration description.
  &quot;enableVariableMasking&quot;: True or False, # Optional. True if variable masking feature should be turned on for this version
  &quot;errorCatcherConfigs&quot;: [ # Optional. Error Catch Task configuration for the integration. It&#x27;s optional.
    { # Configuration detail of a error catch task
      &quot;description&quot;: &quot;A String&quot;, # Optional. User-provided description intended to give more business context about the error catcher config.
      &quot;errorCatcherId&quot;: &quot;A String&quot;, # Required. An error catcher id is string representation for the error catcher config. Within a workflow, error_catcher_id uniquely identifies an error catcher config among all error catcher configs for the workflow
      &quot;errorCatcherNumber&quot;: &quot;A String&quot;, # Required. A number to uniquely identify each error catcher config within the workflow on UI.
      &quot;label&quot;: &quot;A String&quot;, # Optional. The user created label for a particular error catcher. Optional.
      &quot;position&quot;: { # Configuration detail of coordinate, it used for UI # Optional. Informs the front-end application where to draw this error catcher config on the UI.
        &quot;x&quot;: 42, # Required. X axis of the coordinate
        &quot;y&quot;: 42, # Required. Y axis of the coordinate
      },
      &quot;startErrorTasks&quot;: [ # Required. The set of start tasks that are to be executed for the error catch flow
        { # The task that is next in line to be executed, if the condition specified evaluated to true.
          &quot;condition&quot;: &quot;A String&quot;, # Standard filter expression for this task to become an eligible next task.
          &quot;description&quot;: &quot;A String&quot;, # User-provided description intended to give additional business context about the task.
          &quot;displayName&quot;: &quot;A String&quot;, # User-provided label that is attached to this edge in the UI.
          &quot;taskConfigId&quot;: &quot;A String&quot;, # ID of the next task.
          &quot;taskId&quot;: &quot;A String&quot;, # Task number of the next task.
        },
      ],
    },
  ],
  &quot;integrationConfigParameters&quot;: [ # Optional. Config Parameters that are expected to be passed to the integration when an integration is published. This consists of all the parameters that are expected to provide configuration in the integration execution. This gives the user the ability to provide default values, value, add information like connection url, project based configuration value and also provide data types of each parameter.
    { # Integration Config Parameter is defined in the integration config and are used to provide external configuration for integration. It provide information about data types of the expected parameters and provide any default values or value. They can also be used to add custom attributes.
      &quot;parameter&quot;: { # Integration Parameter is defined in the integration config and are used to provide information about data types of the expected parameters and provide any default values if needed. They can also be used to add custom attributes. These are static in nature and should not be used for dynamic event definition. # Optional. Integration Parameter to provide the default value, data type and attributes required for the Integration config variables.
        &quot;containsLargeData&quot;: True or False, # Indicates whether this variable contains large data and need to be uploaded to Cloud Storage.
        &quot;dataType&quot;: &quot;A String&quot;, # Type of the parameter.
        &quot;defaultValue&quot;: { # The type of the parameter. # Default values for the defined keys. Each value can either be string, int, double or any proto message or a serialized object.
          &quot;booleanArray&quot;: { # This message only contains a field of boolean array. # Boolean Array.
            &quot;booleanValues&quot;: [ # Boolean array.
              True or False,
            ],
          },
          &quot;booleanValue&quot;: True or False, # Boolean.
          &quot;doubleArray&quot;: { # This message only contains a field of double number array. # Double Number Array.
            &quot;doubleValues&quot;: [ # Double number array.
              3.14,
            ],
          },
          &quot;doubleValue&quot;: 3.14, # Double Number.
          &quot;intArray&quot;: { # This message only contains a field of integer array. # Integer Array.
            &quot;intValues&quot;: [ # Integer array.
              &quot;A String&quot;,
            ],
          },
          &quot;intValue&quot;: &quot;A String&quot;, # Integer.
          &quot;jsonValue&quot;: &quot;A String&quot;, # Json.
          &quot;stringArray&quot;: { # This message only contains a field of string array. # String Array.
            &quot;stringValues&quot;: [ # String array.
              &quot;A String&quot;,
            ],
          },
          &quot;stringValue&quot;: &quot;A String&quot;, # String.
        },
        &quot;description&quot;: &quot;A String&quot;, # Optional. Description of the parameter.
        &quot;displayName&quot;: &quot;A String&quot;, # The name (without prefix) to be displayed in the UI for this parameter. E.g. if the key is &quot;foo.bar.myName&quot;, then the name would be &quot;myName&quot;.
        &quot;inputOutputType&quot;: &quot;A String&quot;, # Specifies the input/output type for the parameter.
        &quot;isTransient&quot;: True or False, # Whether this parameter is a transient parameter.
        &quot;jsonSchema&quot;: &quot;A String&quot;, # This schema will be used to validate runtime JSON-typed values of this parameter.
        &quot;key&quot;: &quot;A String&quot;, # Key is used to retrieve the corresponding parameter value. This should be unique for a given fired event. These parameters must be predefined in the integration definition.
        &quot;masked&quot;: True or False, # True if this parameter should be masked in the logs
        &quot;producer&quot;: &quot;A String&quot;, # The identifier of the node (TaskConfig/TriggerConfig) this parameter was produced by, if it is a transient param or a copy of an input param.
        &quot;searchable&quot;: True or False, # Searchable in the execution log or not.
      },
      &quot;value&quot;: { # The type of the parameter. # Values for the defined keys. Each value can either be string, int, double or any proto message or a serialized object.
        &quot;booleanArray&quot;: { # This message only contains a field of boolean array. # Boolean Array.
          &quot;booleanValues&quot;: [ # Boolean array.
            True or False,
          ],
        },
        &quot;booleanValue&quot;: True or False, # Boolean.
        &quot;doubleArray&quot;: { # This message only contains a field of double number array. # Double Number Array.
          &quot;doubleValues&quot;: [ # Double number array.
            3.14,
          ],
        },
        &quot;doubleValue&quot;: 3.14, # Double Number.
        &quot;intArray&quot;: { # This message only contains a field of integer array. # Integer Array.
          &quot;intValues&quot;: [ # Integer array.
            &quot;A String&quot;,
          ],
        },
        &quot;intValue&quot;: &quot;A String&quot;, # Integer.
        &quot;jsonValue&quot;: &quot;A String&quot;, # Json.
        &quot;stringArray&quot;: { # This message only contains a field of string array. # String Array.
          &quot;stringValues&quot;: [ # String array.
            &quot;A String&quot;,
          ],
        },
        &quot;stringValue&quot;: &quot;A String&quot;, # String.
      },
    },
  ],
  &quot;integrationParameters&quot;: [ # Optional. Parameters that are expected to be passed to the integration when an event is triggered. This consists of all the parameters that are expected in the integration execution. This gives the user the ability to provide default values, add information like PII and also provide data types of each parameter.
    { # Integration Parameter is defined in the integration config and are used to provide information about data types of the expected parameters and provide any default values if needed. They can also be used to add custom attributes. These are static in nature and should not be used for dynamic event definition.
      &quot;containsLargeData&quot;: True or False, # Indicates whether this variable contains large data and need to be uploaded to Cloud Storage.
      &quot;dataType&quot;: &quot;A String&quot;, # Type of the parameter.
      &quot;defaultValue&quot;: { # The type of the parameter. # Default values for the defined keys. Each value can either be string, int, double or any proto message or a serialized object.
        &quot;booleanArray&quot;: { # This message only contains a field of boolean array. # Boolean Array.
          &quot;booleanValues&quot;: [ # Boolean array.
            True or False,
          ],
        },
        &quot;booleanValue&quot;: True or False, # Boolean.
        &quot;doubleArray&quot;: { # This message only contains a field of double number array. # Double Number Array.
          &quot;doubleValues&quot;: [ # Double number array.
            3.14,
          ],
        },
        &quot;doubleValue&quot;: 3.14, # Double Number.
        &quot;intArray&quot;: { # This message only contains a field of integer array. # Integer Array.
          &quot;intValues&quot;: [ # Integer array.
            &quot;A String&quot;,
          ],
        },
        &quot;intValue&quot;: &quot;A String&quot;, # Integer.
        &quot;jsonValue&quot;: &quot;A String&quot;, # Json.
        &quot;stringArray&quot;: { # This message only contains a field of string array. # String Array.
          &quot;stringValues&quot;: [ # String array.
            &quot;A String&quot;,
          ],
        },
        &quot;stringValue&quot;: &quot;A String&quot;, # String.
      },
      &quot;description&quot;: &quot;A String&quot;, # Optional. Description of the parameter.
      &quot;displayName&quot;: &quot;A String&quot;, # The name (without prefix) to be displayed in the UI for this parameter. E.g. if the key is &quot;foo.bar.myName&quot;, then the name would be &quot;myName&quot;.
      &quot;inputOutputType&quot;: &quot;A String&quot;, # Specifies the input/output type for the parameter.
      &quot;isTransient&quot;: True or False, # Whether this parameter is a transient parameter.
      &quot;jsonSchema&quot;: &quot;A String&quot;, # This schema will be used to validate runtime JSON-typed values of this parameter.
      &quot;key&quot;: &quot;A String&quot;, # Key is used to retrieve the corresponding parameter value. This should be unique for a given fired event. These parameters must be predefined in the integration definition.
      &quot;masked&quot;: True or False, # True if this parameter should be masked in the logs
      &quot;producer&quot;: &quot;A String&quot;, # The identifier of the node (TaskConfig/TriggerConfig) this parameter was produced by, if it is a transient param or a copy of an input param.
      &quot;searchable&quot;: True or False, # Searchable in the execution log or not.
    },
  ],
  &quot;integrationParametersInternal&quot;: { # LINT.IfChange This is the frontend version of WorkflowParameters. It&#x27;s exactly like the backend version except that instead of flattening protobuf parameters and treating every field and subfield of a protobuf parameter as a separate parameter, the fields/subfields of a protobuf parameter will be nested as &quot;children&quot; (see &#x27;children&#x27; field below) parameters of the parent parameter. Please refer to enterprise/crm/eventbus/proto/workflow_parameters.proto for more information about WorkflowParameters. # Optional. Parameters that are expected to be passed to the integration when an event is triggered. This consists of all the parameters that are expected in the integration execution. This gives the user the ability to provide default values, add information like PII and also provide data types of each parameter.
    &quot;parameters&quot;: [ # Parameters are a part of Event and can be used to communiticate between different tasks that are part of the same workflow execution.
      {
        &quot;attributes&quot;: { # Attributes are additional options that can be associated with each event property. For more information, see # Metadata information about the parameters.
          &quot;dataType&quot;: &quot;A String&quot;, # Things like URL, Email, Currency, Timestamp (rather than string, int64...)
          &quot;defaultValue&quot;: { # Used for define type for values. Currently supported value types include int, string, double, array, and any proto message. # Used to define defaults.
            &quot;booleanValue&quot;: True or False,
            &quot;doubleArray&quot;: {
              &quot;values&quot;: [
                3.14,
              ],
            },
            &quot;doubleValue&quot;: 3.14,
            &quot;intArray&quot;: {
              &quot;values&quot;: [
                &quot;A String&quot;,
              ],
            },
            &quot;intValue&quot;: &quot;A String&quot;,
            &quot;protoValue&quot;: {
              &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
            },
            &quot;stringArray&quot;: {
              &quot;values&quot;: [
                &quot;A String&quot;,
              ],
            },
            &quot;stringValue&quot;: &quot;A String&quot;,
          },
          &quot;isRequired&quot;: True or False, # Required for event execution. The validation will be done by the event bus when the event is triggered.
          &quot;isSearchable&quot;: True or False, # Used to indicate if a ParameterEntry should be converted to ParamIndexes for ST-Spanner full-text search. DEPRECATED: use searchable.
          &quot;logSettings&quot;: { # The LogSettings define the logging attributes for an event property. These attributes are used to map the property to the parameter in the log proto. Also used to define scrubbing/truncation behavior and PII information. # See
            &quot;logFieldName&quot;: &quot;A String&quot;, # The name of corresponding logging field of the event property. If omitted, assumes the same name as the event property key.
            &quot;seedPeriod&quot;: &quot;A String&quot;,
            &quot;seedScope&quot;: &quot;A String&quot;,
          },
          &quot;masked&quot;: True or False, # True if this workflow parameter should be masked in the logs
          &quot;readOnly&quot;: True or False, # Used to indicate if the ParameterEntry is a read only field or not.
          &quot;searchable&quot;: &quot;A String&quot;,
          &quot;taskVisibility&quot;: [ # List of tasks that can view this property, if empty then all.
            &quot;A String&quot;,
          ],
        },
        &quot;children&quot;: [ # Child parameters nested within this parameter. This field only applies to protobuf parameters
          # Object with schema name: EnterpriseCrmFrontendsEventbusProtoWorkflowParameterEntry
        ],
        &quot;containsLargeData&quot;: True or False, # Indicates whether this variable contains large data and need to be uploaded to Cloud Storage.
        &quot;dataType&quot;: &quot;A String&quot;, # The data type of the parameter.
        &quot;defaultValue&quot;: { # To support various types of parameter values. Next available id: 14 # Default values for the defined keys. Each value can either be string, int, double or any proto message or a serialized object.
          &quot;booleanArray&quot;: {
            &quot;booleanValues&quot;: [
              True or False,
            ],
          },
          &quot;booleanValue&quot;: True or False,
          &quot;doubleArray&quot;: {
            &quot;doubleValues&quot;: [
              3.14,
            ],
          },
          &quot;doubleValue&quot;: 3.14,
          &quot;intArray&quot;: {
            &quot;intValues&quot;: [
              &quot;A String&quot;,
            ],
          },
          &quot;intValue&quot;: &quot;A String&quot;,
          &quot;jsonValue&quot;: &quot;A String&quot;,
          &quot;protoArray&quot;: {
            &quot;protoValues&quot;: [
              {
                &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
              },
            ],
          },
          &quot;protoValue&quot;: {
            &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
          },
          &quot;serializedObjectValue&quot;: {
            &quot;objectValue&quot;: &quot;A String&quot;,
          },
          &quot;stringArray&quot;: {
            &quot;stringValues&quot;: [
              &quot;A String&quot;,
            ],
          },
          &quot;stringValue&quot;: &quot;A String&quot;,
        },
        &quot;description&quot;: &quot;A String&quot;, # Optional. The description about the parameter
        &quot;inOutType&quot;: &quot;A String&quot;, # Specifies the input/output type for the parameter.
        &quot;isTransient&quot;: True or False, # Whether this parameter is a transient parameter.
        &quot;jsonSchema&quot;: &quot;A String&quot;, # This schema will be used to validate runtime JSON-typed values of this parameter.
        &quot;key&quot;: &quot;A String&quot;, # Key is used to retrieve the corresponding parameter value. This should be unique for a given fired event. These parameters must be predefined in the workflow definition.
        &quot;name&quot;: &quot;A String&quot;, # The name (without prefix) to be displayed in the UI for this parameter. E.g. if the key is &quot;foo.bar.myName&quot;, then the name would be &quot;myName&quot;.
        &quot;producedBy&quot;: { # Represents a node identifier (type + id). Next highest id: 3 # The identifier of the node (TaskConfig/TriggerConfig) this parameter was produced by, if it is a transient param or a copy of an input param.
          &quot;elementIdentifier&quot;: &quot;A String&quot;, # Configuration of the edge.
          &quot;elementType&quot;: &quot;A String&quot;, # Destination node where the edge ends. It can only be a task config.
        },
        &quot;producer&quot;: &quot;A String&quot;,
        &quot;protoDefName&quot;: &quot;A String&quot;, # The name of the protobuf type if the parameter has a protobuf data type.
        &quot;protoDefPath&quot;: &quot;A String&quot;, # If the data type is of type proto or proto array, this field needs to be populated with the fully qualified proto name. This message, for example, would be &quot;enterprise.crm.frontends.eventbus.proto.WorkflowParameterEntry&quot;.
        &quot;required&quot;: True or False,
      },
    ],
  },
  &quot;lastModifierEmail&quot;: &quot;A String&quot;, # Optional. The last modifier&#x27;s email address. Generated based on the End User Credentials/LOAS role of the user making the call.
  &quot;lockHolder&quot;: &quot;A String&quot;, # Optional. The edit lock holder&#x27;s email address. Generated based on the End User Credentials/LOAS role of the user making the call.
  &quot;name&quot;: &quot;A String&quot;, # Output only. Auto-generated primary key.
  &quot;origin&quot;: &quot;A String&quot;, # Optional. The origin that indicates where this integration is coming from.
  &quot;parentTemplateId&quot;: &quot;A String&quot;, # Optional. The id of the template which was used to create this integration_version.
  &quot;runAsServiceAccount&quot;: &quot;A String&quot;, # Optional. The run-as service account email, if set and auth config is not configured, that will be used to generate auth token to be used in Connector task, Rest caller task and Cloud function task.
  &quot;snapshotNumber&quot;: &quot;A String&quot;, # Output only. An increasing sequence that is set when a new snapshot is created. The last created snapshot can be identified by [workflow_name, org_id latest(snapshot_number)]. However, last created snapshot need not be same as the HEAD. So users should always use &quot;HEAD&quot; tag to identify the head.
  &quot;state&quot;: &quot;A String&quot;, # Output only. User should not set it as an input.
  &quot;status&quot;: &quot;A String&quot;, # Output only. Generated by eventbus. User should not set it as an input.
  &quot;taskConfigs&quot;: [ # Optional. Task configuration for the integration. It&#x27;s optional, but the integration doesn&#x27;t do anything without task_configs.
    { # The task configuration details. This is not the implementation of Task. There might be multiple TaskConfigs for the same Task.
      &quot;conditionalFailurePolicies&quot;: { # Conditional task failur retry strategies # Optional. The list of conditional failure policies that will be applied to the task in order.
        &quot;defaultFailurePolicy&quot;: { # Policy that defines the task retry logic and failure type. If no FailurePolicy is defined for a task, all its dependent tasks will not be executed (i.e, a `retry_strategy` of NONE will be applied). # The default failure policy to be applied if no conditional failure policy matches.
          &quot;condition&quot;: &quot;A String&quot;, # Optional. The string condition that will be evaluated to determine if the task should be retried with this failure policy.
          &quot;intervalTime&quot;: &quot;A String&quot;, # Required if retry_strategy is FIXED_INTERVAL or LINEAR/EXPONENTIAL_BACKOFF/RESTART_INTEGRATION_WITH_BACKOFF. Defines the initial interval in seconds for backoff.
          &quot;maxRetries&quot;: 42, # Required if retry_strategy is FIXED_INTERVAL or LINEAR/EXPONENTIAL_BACKOFF/RESTART_INTEGRATION_WITH_BACKOFF. Defines the number of times the task will be retried if failed.
          &quot;retryStrategy&quot;: &quot;A String&quot;, # Defines what happens to the task upon failure.
        },
        &quot;failurePolicies&quot;: [ # The list of failure policies that will be applied to the task in order.
          { # Policy that defines the task retry logic and failure type. If no FailurePolicy is defined for a task, all its dependent tasks will not be executed (i.e, a `retry_strategy` of NONE will be applied).
            &quot;condition&quot;: &quot;A String&quot;, # Optional. The string condition that will be evaluated to determine if the task should be retried with this failure policy.
            &quot;intervalTime&quot;: &quot;A String&quot;, # Required if retry_strategy is FIXED_INTERVAL or LINEAR/EXPONENTIAL_BACKOFF/RESTART_INTEGRATION_WITH_BACKOFF. Defines the initial interval in seconds for backoff.
            &quot;maxRetries&quot;: 42, # Required if retry_strategy is FIXED_INTERVAL or LINEAR/EXPONENTIAL_BACKOFF/RESTART_INTEGRATION_WITH_BACKOFF. Defines the number of times the task will be retried if failed.
            &quot;retryStrategy&quot;: &quot;A String&quot;, # Defines what happens to the task upon failure.
          },
        ],
      },
      &quot;description&quot;: &quot;A String&quot;, # Optional. User-provided description intended to give additional business context about the task.
      &quot;displayName&quot;: &quot;A String&quot;, # Optional. User-provided label that is attached to this TaskConfig in the UI.
      &quot;errorCatcherId&quot;: &quot;A String&quot;, # Optional. Optional Error catcher id of the error catch flow which will be executed when execution error happens in the task
      &quot;externalTaskType&quot;: &quot;A String&quot;, # Optional. External task type of the task
      &quot;failurePolicy&quot;: { # Policy that defines the task retry logic and failure type. If no FailurePolicy is defined for a task, all its dependent tasks will not be executed (i.e, a `retry_strategy` of NONE will be applied). # Optional. Determines the number of times the task will be retried on failure and with what retry strategy. This is applicable for asynchronous calls to Eventbus alone (Post To Queue, Schedule etc.).
        &quot;condition&quot;: &quot;A String&quot;, # Optional. The string condition that will be evaluated to determine if the task should be retried with this failure policy.
        &quot;intervalTime&quot;: &quot;A String&quot;, # Required if retry_strategy is FIXED_INTERVAL or LINEAR/EXPONENTIAL_BACKOFF/RESTART_INTEGRATION_WITH_BACKOFF. Defines the initial interval in seconds for backoff.
        &quot;maxRetries&quot;: 42, # Required if retry_strategy is FIXED_INTERVAL or LINEAR/EXPONENTIAL_BACKOFF/RESTART_INTEGRATION_WITH_BACKOFF. Defines the number of times the task will be retried if failed.
        &quot;retryStrategy&quot;: &quot;A String&quot;, # Defines what happens to the task upon failure.
      },
      &quot;jsonValidationOption&quot;: &quot;A String&quot;, # Optional. If set, overrides the option configured in the Task implementation class.
      &quot;nextTasks&quot;: [ # Optional. The set of tasks that are next in line to be executed as per the execution graph defined for the parent event, specified by `event_config_id`. Each of these next tasks are executed only if the condition associated with them evaluates to true.
        { # The task that is next in line to be executed, if the condition specified evaluated to true.
          &quot;condition&quot;: &quot;A String&quot;, # Standard filter expression for this task to become an eligible next task.
          &quot;description&quot;: &quot;A String&quot;, # User-provided description intended to give additional business context about the task.
          &quot;displayName&quot;: &quot;A String&quot;, # User-provided label that is attached to this edge in the UI.
          &quot;taskConfigId&quot;: &quot;A String&quot;, # ID of the next task.
          &quot;taskId&quot;: &quot;A String&quot;, # Task number of the next task.
        },
      ],
      &quot;nextTasksExecutionPolicy&quot;: &quot;A String&quot;, # Optional. The policy dictating the execution of the next set of tasks for the current task.
      &quot;parameters&quot;: { # Optional. The customized parameters the user can pass to this task.
        &quot;a_key&quot;: { # This message is used for processing and persisting (when applicable) key value pair parameters for each event in the event bus. Next available id: 4
          &quot;key&quot;: &quot;A String&quot;, # Key is used to retrieve the corresponding parameter value. This should be unique for a given fired event. These parameters must be predefined in the integration definition.
          &quot;masked&quot;: True or False, # True if this parameter should be masked in the logs
          &quot;value&quot;: { # The type of the parameter. # Values for the defined keys. Each value can either be string, int, double or any proto message.
            &quot;booleanArray&quot;: { # This message only contains a field of boolean array. # Boolean Array.
              &quot;booleanValues&quot;: [ # Boolean array.
                True or False,
              ],
            },
            &quot;booleanValue&quot;: True or False, # Boolean.
            &quot;doubleArray&quot;: { # This message only contains a field of double number array. # Double Number Array.
              &quot;doubleValues&quot;: [ # Double number array.
                3.14,
              ],
            },
            &quot;doubleValue&quot;: 3.14, # Double Number.
            &quot;intArray&quot;: { # This message only contains a field of integer array. # Integer Array.
              &quot;intValues&quot;: [ # Integer array.
                &quot;A String&quot;,
              ],
            },
            &quot;intValue&quot;: &quot;A String&quot;, # Integer.
            &quot;jsonValue&quot;: &quot;A String&quot;, # Json.
            &quot;stringArray&quot;: { # This message only contains a field of string array. # String Array.
              &quot;stringValues&quot;: [ # String array.
                &quot;A String&quot;,
              ],
            },
            &quot;stringValue&quot;: &quot;A String&quot;, # String.
          },
        },
      },
      &quot;position&quot;: { # Configuration detail of coordinate, it used for UI # Optional. Informs the front-end application where to draw this error catcher config on the UI.
        &quot;x&quot;: 42, # Required. X axis of the coordinate
        &quot;y&quot;: 42, # Required. Y axis of the coordinate
      },
      &quot;successPolicy&quot;: { # Policy that dictates the behavior for the task after it completes successfully. # Optional. Determines what action to take upon successful task completion.
        &quot;finalState&quot;: &quot;A String&quot;, # State to which the execution snapshot status will be set if the task succeeds.
      },
      &quot;synchronousCallFailurePolicy&quot;: { # Policy that defines the task retry logic and failure type. If no FailurePolicy is defined for a task, all its dependent tasks will not be executed (i.e, a `retry_strategy` of NONE will be applied). # Optional. Determines the number of times the task will be retried on failure and with what retry strategy. This is applicable for synchronous calls to Eventbus alone (Post).
        &quot;condition&quot;: &quot;A String&quot;, # Optional. The string condition that will be evaluated to determine if the task should be retried with this failure policy.
        &quot;intervalTime&quot;: &quot;A String&quot;, # Required if retry_strategy is FIXED_INTERVAL or LINEAR/EXPONENTIAL_BACKOFF/RESTART_INTEGRATION_WITH_BACKOFF. Defines the initial interval in seconds for backoff.
        &quot;maxRetries&quot;: 42, # Required if retry_strategy is FIXED_INTERVAL or LINEAR/EXPONENTIAL_BACKOFF/RESTART_INTEGRATION_WITH_BACKOFF. Defines the number of times the task will be retried if failed.
        &quot;retryStrategy&quot;: &quot;A String&quot;, # Defines what happens to the task upon failure.
      },
      &quot;task&quot;: &quot;A String&quot;, # Optional. The name for the task.
      &quot;taskExecutionStrategy&quot;: &quot;A String&quot;, # Optional. The policy dictating the execution strategy of this task.
      &quot;taskId&quot;: &quot;A String&quot;, # Required. The identifier of this task within its parent event config, specified by the client. This should be unique among all the tasks belong to the same event config. We use this field as the identifier to find next tasks (via field `next_tasks.task_id`).
      &quot;taskTemplate&quot;: &quot;A String&quot;, # Optional. Used to define task-template name if task is of type task-template
    },
  ],
  &quot;taskConfigsInternal&quot;: [ # Optional. Task configuration for the integration. It&#x27;s optional, but the integration doesn&#x27;t do anything without task_configs.
    { # The task configuration details. This is not the implementation of Task. There might be multiple TaskConfigs for the same Task.
      &quot;alertConfigs&quot;: [ # Alert configurations on error rate, warning rate, number of runs, durations, etc.
        { # Message to be used to configure alerting in the {@code TaskConfig} protos for tasks in an event.
          &quot;aggregationPeriod&quot;: &quot;A String&quot;, # The period over which the metric value should be aggregated and evaluated. Format is , where integer should be a positive integer and unit should be one of (s,m,h,d,w) meaning (second, minute, hour, day, week).
          &quot;alertDisabled&quot;: True or False, # Set to false by default. When set to true, the metrics are not aggregated or pushed to Monarch for this workflow alert.
          &quot;alertName&quot;: &quot;A String&quot;, # A name to identify this alert. This will be displayed in the alert subject. If set, this name should be unique in within the scope of the containing workflow.
          &quot;clientId&quot;: &quot;A String&quot;, # Client associated with this alert configuration. Must be a client enabled in one of the containing workflow&#x27;s triggers.
          &quot;durationThresholdMs&quot;: &quot;A String&quot;, # Should be specified only for TASK_AVERAGE_DURATION and TASK_PERCENTILE_DURATION metrics. This member should be used to specify what duration value the metrics should exceed for the alert to trigger.
          &quot;errorEnumList&quot;: { # List of error enums for alerts.
            &quot;enumStrings&quot;: [
              &quot;A String&quot;,
            ],
            &quot;filterType&quot;: &quot;A String&quot;,
          },
          &quot;metricType&quot;: &quot;A String&quot;,
          &quot;numAggregationPeriods&quot;: 42, # For how many contiguous aggregation periods should the expected min or max be violated for the alert to be fired.
          &quot;onlyFinalAttempt&quot;: True or False, # Only count final task attempts, not retries.
          &quot;playbookUrl&quot;: &quot;A String&quot;, # Link to a playbook for resolving the issue that triggered this alert.
          &quot;thresholdType&quot;: &quot;A String&quot;, # The threshold type for which this alert is being configured. If value falls below expected_min or exceeds expected_max, an alert will be fired.
          &quot;thresholdValue&quot;: { # The threshold value of the metric, above or below which the alert should be triggered. See EventAlertConfig or TaskAlertConfig for the different alert metric types in each case. For the *RATE metrics, one or both of these fields may be set. Zero is the default value and can be left at that. For *PERCENTILE_DURATION metrics, one or both of these fields may be set, and also, the duration threshold value should be specified in the threshold_duration_ms member below. For *AVERAGE_DURATION metrics, these fields should not be set at all. A different member, threshold_duration_ms, must be set in the EventAlertConfig or the TaskAlertConfig. # The metric value, above or below which the alert should be triggered.
            &quot;absolute&quot;: &quot;A String&quot;,
            &quot;percentage&quot;: 42,
          },
          &quot;warningEnumList&quot;: { # List of error enums for alerts.
            &quot;enumStrings&quot;: [
              &quot;A String&quot;,
            ],
            &quot;filterType&quot;: &quot;A String&quot;,
          },
        },
      ],
      &quot;conditionalFailurePolicies&quot;: { # Optional. Determines the number of times the task will be retried on failure and with what retry strategy. This is applicable for synchronous calls to Eventbus alone (Post).
        &quot;defaultFailurePolicy&quot;: { # Policy that defines the task retry logic and failure type. If no FailurePolicy is defined for a task, all its dependent tasks will not be executed (i.e, a `retry_strategy` of NONE will be applied). # The default failure policy to be applied if no conditional failure policy matches
          &quot;intervalInSeconds&quot;: &quot;A String&quot;, # Required if retry_strategy is FIXED_INTERVAL or LINEAR/EXPONENTIAL_BACKOFF/RESTART_WORKFLOW_WITH_BACKOFF. Defines the initial interval for backoff.
          &quot;maxNumRetries&quot;: 42, # Required if retry_strategy is FIXED_INTERVAL or LINEAR/EXPONENTIAL_BACKOFF/RESTART_WORKFLOW_WITH_BACKOFF. Defines the number of times the task will be retried if failed.
          &quot;retryCondition&quot;: &quot;A String&quot;, # Optional. The retry condition that will be evaluated for this failure policy with the corresponding retry strategy.
          &quot;retryStrategy&quot;: &quot;A String&quot;, # Defines what happens to the task upon failure.
        },
        &quot;failurePolicies&quot;: [ # The list of failure policies that will be applied to the task in order.
          { # Policy that defines the task retry logic and failure type. If no FailurePolicy is defined for a task, all its dependent tasks will not be executed (i.e, a `retry_strategy` of NONE will be applied).
            &quot;intervalInSeconds&quot;: &quot;A String&quot;, # Required if retry_strategy is FIXED_INTERVAL or LINEAR/EXPONENTIAL_BACKOFF/RESTART_WORKFLOW_WITH_BACKOFF. Defines the initial interval for backoff.
            &quot;maxNumRetries&quot;: 42, # Required if retry_strategy is FIXED_INTERVAL or LINEAR/EXPONENTIAL_BACKOFF/RESTART_WORKFLOW_WITH_BACKOFF. Defines the number of times the task will be retried if failed.
            &quot;retryCondition&quot;: &quot;A String&quot;, # Optional. The retry condition that will be evaluated for this failure policy with the corresponding retry strategy.
            &quot;retryStrategy&quot;: &quot;A String&quot;, # Defines what happens to the task upon failure.
          },
        ],
      },
      &quot;createTime&quot;: &quot;A String&quot;, # Auto-generated.
      &quot;creatorEmail&quot;: &quot;A String&quot;, # The creator&#x27;s email address. Auto-generated from the user&#x27;s email.
      &quot;description&quot;: &quot;A String&quot;, # User-provided description intended to give more business context about the task.
      &quot;disableStrictTypeValidation&quot;: True or False, # If this config contains a TypedTask, allow validation to succeed if an input is read from the output of another TypedTask whose output type is declared as a superclass of the requested input type. For instance, if the previous task declares an output of type Message, any task with this flag enabled will pass validation when attempting to read any proto Message type from the resultant Event parameter.
      &quot;errorCatcherId&quot;: &quot;A String&quot;, # Optional Error catcher id of the error catch flow which will be executed when execution error happens in the task
      &quot;externalTaskType&quot;: &quot;A String&quot;,
      &quot;failurePolicy&quot;: { # Policy that defines the task retry logic and failure type. If no FailurePolicy is defined for a task, all its dependent tasks will not be executed (i.e, a `retry_strategy` of NONE will be applied). # Optional. Determines the number of times the task will be retried on failure and with what retry strategy. This is applicable for asynchronous calls to Eventbus alone (Post To Queue, Schedule etc.).
        &quot;intervalInSeconds&quot;: &quot;A String&quot;, # Required if retry_strategy is FIXED_INTERVAL or LINEAR/EXPONENTIAL_BACKOFF/RESTART_WORKFLOW_WITH_BACKOFF. Defines the initial interval for backoff.
        &quot;maxNumRetries&quot;: 42, # Required if retry_strategy is FIXED_INTERVAL or LINEAR/EXPONENTIAL_BACKOFF/RESTART_WORKFLOW_WITH_BACKOFF. Defines the number of times the task will be retried if failed.
        &quot;retryCondition&quot;: &quot;A String&quot;, # Optional. The retry condition that will be evaluated for this failure policy with the corresponding retry strategy.
        &quot;retryStrategy&quot;: &quot;A String&quot;, # Defines what happens to the task upon failure.
      },
      &quot;incomingEdgeCount&quot;: 42, # The number of edges leading into this TaskConfig.
      &quot;jsonValidationOption&quot;: &quot;A String&quot;, # If set, overrides the option configured in the Task implementation class.
      &quot;label&quot;: &quot;A String&quot;, # User-provided label that is attached to this TaskConfig in the UI.
      &quot;lastModifiedTime&quot;: &quot;A String&quot;, # Auto-generated.
      &quot;nextTasks&quot;: [ # The set of tasks that are next in line to be executed as per the execution graph defined for the parent event, specified by `event_config_id`. Each of these next tasks are executed only if the condition associated with them evaluates to true.
        { # The task that is next in line to be executed, if the condition specified evaluated to true.
          &quot;combinedConditions&quot;: [ # Combined condition for this task to become an eligible next task. Each of these combined_conditions are joined with logical OR. DEPRECATED: use `condition`
            { # This message recursively combines constituent conditions using logical AND.
              &quot;conditions&quot;: [ # A set of individual constituent conditions.
                { # Condition that uses `operator` to evaluate the key against the value.
                  &quot;eventPropertyKey&quot;: &quot;A String&quot;, # Key that&#x27;s evaluated against the `value`. Please note the data type of the runtime value associated with the key should match the data type of `value`, else an IllegalArgumentException is thrown.
                  &quot;operator&quot;: &quot;A String&quot;, # Operator used to evaluate the condition. Please note that an operator with an inappropriate key/value operand will result in IllegalArgumentException, e.g. CONTAINS with boolean key/value pair.
                  &quot;value&quot;: { # Used for define type for values. Currently supported value types include int, string, double, array, and any proto message. # Value that&#x27;s checked for the key.
                    &quot;booleanValue&quot;: True or False,
                    &quot;doubleArray&quot;: {
                      &quot;values&quot;: [
                        3.14,
                      ],
                    },
                    &quot;doubleValue&quot;: 3.14,
                    &quot;intArray&quot;: {
                      &quot;values&quot;: [
                        &quot;A String&quot;,
                      ],
                    },
                    &quot;intValue&quot;: &quot;A String&quot;,
                    &quot;protoValue&quot;: {
                      &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
                    },
                    &quot;stringArray&quot;: {
                      &quot;values&quot;: [
                        &quot;A String&quot;,
                      ],
                    },
                    &quot;stringValue&quot;: &quot;A String&quot;,
                  },
                },
              ],
            },
          ],
          &quot;condition&quot;: &quot;A String&quot;, # Standard filter expression for this task to become an eligible next task.
          &quot;description&quot;: &quot;A String&quot;, # User-provided description intended to give more business context about the next task edge or condition.
          &quot;label&quot;: &quot;A String&quot;, # User-provided label that is attached to this edge in the UI.
          &quot;taskConfigId&quot;: &quot;A String&quot;, # ID of the next task.
          &quot;taskNumber&quot;: &quot;A String&quot;, # Task number of the next task.
        },
      ],
      &quot;nextTasksExecutionPolicy&quot;: &quot;A String&quot;, # The policy dictating the execution of the next set of tasks for the current task.
      &quot;parameters&quot;: { # The customized parameters the user can pass to this task.
        &quot;a_key&quot;: { # Key-value pair of EventBus parameters.
          &quot;dataType&quot;: &quot;A String&quot;, # Explicitly getting the type of the parameter.
          &quot;key&quot;: &quot;A String&quot;, # Key is used to retrieve the corresponding parameter value. This should be unique for a given fired event. These parameters must be predefined in the workflow definition.
          &quot;masked&quot;: True or False, # True if this parameter should be masked in the logs
          &quot;value&quot;: { # To support various types of parameter values. Next available id: 14 # Values for the defined keys. Each value can either be string, int, double or any proto message.
            &quot;booleanArray&quot;: {
              &quot;booleanValues&quot;: [
                True or False,
              ],
            },
            &quot;booleanValue&quot;: True or False,
            &quot;doubleArray&quot;: {
              &quot;doubleValues&quot;: [
                3.14,
              ],
            },
            &quot;doubleValue&quot;: 3.14,
            &quot;intArray&quot;: {
              &quot;intValues&quot;: [
                &quot;A String&quot;,
              ],
            },
            &quot;intValue&quot;: &quot;A String&quot;,
            &quot;jsonValue&quot;: &quot;A String&quot;,
            &quot;protoArray&quot;: {
              &quot;protoValues&quot;: [
                {
                  &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
                },
              ],
            },
            &quot;protoValue&quot;: {
              &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
            },
            &quot;serializedObjectValue&quot;: {
              &quot;objectValue&quot;: &quot;A String&quot;,
            },
            &quot;stringArray&quot;: {
              &quot;stringValues&quot;: [
                &quot;A String&quot;,
              ],
            },
            &quot;stringValue&quot;: &quot;A String&quot;,
          },
        },
      },
      &quot;position&quot;: { # Represents two-dimensional positions. # Optional. Informs the front-end application where to draw this task config on the UI.
        &quot;x&quot;: 42,
        &quot;y&quot;: 42,
      },
      &quot;precondition&quot;: &quot;A String&quot;, # Optional. Standard filter expression evaluated before execution. Independent of other conditions and tasks. Can be used to enable rollout. e.g. &quot;rollout(5)&quot; will only allow 5% of incoming traffic to task.
      &quot;preconditionLabel&quot;: &quot;A String&quot;, # Optional. User-provided label that is attached to precondition in the UI.
      &quot;rollbackStrategy&quot;: { # Next available id: 4 # Optional. Contains information about what needs to be done upon failure (either a permanent error or after it has been retried too many times).
        &quot;parameters&quot;: { # LINT.IfChange This message is used for processing and persisting (when applicable) key value pair parameters for each event in the event bus. Please see # Optional. The customized parameters the user can pass to this task.
          &quot;parameters&quot;: [ # Parameters are a part of Event and can be used to communicate between different tasks that are part of the same workflow execution.
            { # Key-value pair of EventBus parameters.
              &quot;dataType&quot;: &quot;A String&quot;, # Explicitly getting the type of the parameter.
              &quot;key&quot;: &quot;A String&quot;, # Key is used to retrieve the corresponding parameter value. This should be unique for a given fired event. These parameters must be predefined in the workflow definition.
              &quot;masked&quot;: True or False, # True if this parameter should be masked in the logs
              &quot;value&quot;: { # To support various types of parameter values. Next available id: 14 # Values for the defined keys. Each value can either be string, int, double or any proto message.
                &quot;booleanArray&quot;: {
                  &quot;booleanValues&quot;: [
                    True or False,
                  ],
                },
                &quot;booleanValue&quot;: True or False,
                &quot;doubleArray&quot;: {
                  &quot;doubleValues&quot;: [
                    3.14,
                  ],
                },
                &quot;doubleValue&quot;: 3.14,
                &quot;intArray&quot;: {
                  &quot;intValues&quot;: [
                    &quot;A String&quot;,
                  ],
                },
                &quot;intValue&quot;: &quot;A String&quot;,
                &quot;jsonValue&quot;: &quot;A String&quot;,
                &quot;protoArray&quot;: {
                  &quot;protoValues&quot;: [
                    {
                      &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
                    },
                  ],
                },
                &quot;protoValue&quot;: {
                  &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
                },
                &quot;serializedObjectValue&quot;: {
                  &quot;objectValue&quot;: &quot;A String&quot;,
                },
                &quot;stringArray&quot;: {
                  &quot;stringValues&quot;: [
                    &quot;A String&quot;,
                  ],
                },
                &quot;stringValue&quot;: &quot;A String&quot;,
              },
            },
          ],
        },
        &quot;rollbackTaskImplementationClassName&quot;: &quot;A String&quot;, # Required. This is the name of the task that needs to be executed upon rollback of this task.
        &quot;taskNumbersToRollback&quot;: [ # Required. These are the tasks numbers of the tasks whose `rollback_strategy.rollback_task_implementation_class_name` needs to be executed upon failure of this task.
          &quot;A String&quot;,
        ],
      },
      &quot;successPolicy&quot;: { # Policy that dictates the behavior for the task after it completes successfully. # Determines what action to take upon successful task completion.
        &quot;finalState&quot;: &quot;A String&quot;, # State to which the execution snapshot status will be set if the task succeeds.
      },
      &quot;synchronousCallFailurePolicy&quot;: { # Policy that defines the task retry logic and failure type. If no FailurePolicy is defined for a task, all its dependent tasks will not be executed (i.e, a `retry_strategy` of NONE will be applied). # Optional. Determines the number of times the task will be retried on failure and with what retry strategy. This is applicable for synchronous calls to Eventbus alone (Post).
        &quot;intervalInSeconds&quot;: &quot;A String&quot;, # Required if retry_strategy is FIXED_INTERVAL or LINEAR/EXPONENTIAL_BACKOFF/RESTART_WORKFLOW_WITH_BACKOFF. Defines the initial interval for backoff.
        &quot;maxNumRetries&quot;: 42, # Required if retry_strategy is FIXED_INTERVAL or LINEAR/EXPONENTIAL_BACKOFF/RESTART_WORKFLOW_WITH_BACKOFF. Defines the number of times the task will be retried if failed.
        &quot;retryCondition&quot;: &quot;A String&quot;, # Optional. The retry condition that will be evaluated for this failure policy with the corresponding retry strategy.
        &quot;retryStrategy&quot;: &quot;A String&quot;, # Defines what happens to the task upon failure.
      },
      &quot;taskEntity&quot;: { # Contains a task&#x27;s metadata and associated information. Next available id: 7 # Copy of the task entity that this task config is an instance of.
        &quot;disabledForVpcSc&quot;: True or False, # True if the task has conflict with vpcsc
        &quot;metadata&quot;: { # TaskMetadata are attributes that are associated to every common Task we have. # Metadata inclueds the task name, author and so on.
          &quot;activeTaskName&quot;: &quot;A String&quot;, # The new task name to replace the current task if it is deprecated. Otherwise, it is the same as the current task name.
          &quot;admins&quot;: [
            { # Admins are owners of a Task, and have all permissions on a particular task identified by the task name. By default, Eventbus periodically scans all task metadata and syncs (adds) any new admins defined here to Zanzibar.
              &quot;googleGroupEmail&quot;: &quot;A String&quot;,
              &quot;userEmail&quot;: &quot;A String&quot;,
            },
          ],
          &quot;category&quot;: &quot;A String&quot;,
          &quot;codeSearchLink&quot;: &quot;A String&quot;, # The Code Search link to the Task Java file.
          &quot;defaultJsonValidationOption&quot;: &quot;A String&quot;, # Controls whether JSON workflow parameters are validated against provided schemas before and/or after this task&#x27;s execution.
          &quot;defaultSpec&quot;: &quot;A String&quot;, # Contains the initial configuration of the task with default values set. For now, The string should be compatible to an ASCII-proto format.
          &quot;description&quot;: &quot;A String&quot;, # In a few sentences, describe the purpose and usage of the task.
          &quot;descriptiveName&quot;: &quot;A String&quot;, # The string name to show on the task list on the Workflow editor screen. This should be a very short, one to two words name for the task. (e.g. &quot;Send Mail&quot;)
          &quot;docMarkdown&quot;: &quot;A String&quot;, # Snippet of markdown documentation to embed in the RHP for this task.
          &quot;externalCategory&quot;: &quot;A String&quot;,
          &quot;externalCategorySequence&quot;: 42, # Sequence with which the task in specific category to be displayed in task discovery panel for external users.
          &quot;externalDocHtml&quot;: &quot;A String&quot;, # External-facing documention embedded in the RHP for this task.
          &quot;externalDocLink&quot;: &quot;A String&quot;, # Doc link for external-facing documentation (separate from g3doc).
          &quot;externalDocMarkdown&quot;: &quot;A String&quot;, # DEPRECATED: Use external_doc_html.
          &quot;g3DocLink&quot;: &quot;A String&quot;, # URL to the associated G3 Doc for the task if available
          &quot;iconLink&quot;: &quot;A String&quot;, # URL to gstatic image icon for this task. This icon shows up on the task list panel along with the task name in the Workflow Editor screen. Use the 24p, 2x, gray color icon image format.
          &quot;isDeprecated&quot;: True or False, # The deprecation status of the current task. Default value is false;
          &quot;name&quot;: &quot;A String&quot;, # The actual class name or the annotated name of the task. Task Author should initialize this field with value from the getName() method of the Task class.
          &quot;standaloneExternalDocHtml&quot;: &quot;A String&quot;, # External-facing documention for standalone IP in pantheon embedded in the RHP for this task. Non null only if different from external_doc_html
          &quot;status&quot;: &quot;A String&quot;, # Allows author to indicate if the task is ready to use or not. If not set, then it will default to INACTIVE.
          &quot;system&quot;: &quot;A String&quot;,
          &quot;tags&quot;: [ # A set of tags that pertain to a particular task. This can be used to improve the searchability of tasks with several names (&quot;REST Caller&quot; vs. &quot;Call REST Endpoint&quot;) or to help users find tasks based on related words.
            &quot;A String&quot;,
          ],
        },
        &quot;paramSpecs&quot;: { # Declarations for inputs/outputs for a TypedTask. This is also associated with the METADATA mask.
          &quot;parameters&quot;: [
            { # Key-value pair of EventBus task parameters. Next id: 13
              &quot;className&quot;: &quot;A String&quot;, # The FQCN of the Java object this represents. A string, for example, would be &quot;java.lang.String&quot;. If this is &quot;java.lang.Object&quot;, the parameter can be of any type.
              &quot;collectionElementClassName&quot;: &quot;A String&quot;, # If it is a collection of objects, this would be the FCQN of every individual element in the collection. If this is &quot;java.lang.Object&quot;, the parameter is a collection of any type.
              &quot;config&quot;: { # Optional fields, such as help text and other useful info.
                &quot;descriptivePhrase&quot;: &quot;A String&quot;, # A short phrase to describe what this parameter contains.
                &quot;helpText&quot;: &quot;A String&quot;, # Detailed help text for this parameter containing information not provided elsewhere. For example, instructions on how to migrate from a deprecated parameter.
                &quot;hideDefaultValue&quot;: True or False, # Whether the default value is hidden in the UI.
                &quot;inputDisplayOption&quot;: &quot;A String&quot;,
                &quot;isHidden&quot;: True or False, # Whether this field is hidden in the UI.
                &quot;label&quot;: &quot;A String&quot;, # A user-friendly label for the parameter.
                &quot;parameterNameOption&quot;: &quot;A String&quot;,
                &quot;subSectionLabel&quot;: &quot;A String&quot;, # A user-friendly label for subSection under which the parameter will be displayed.
                &quot;uiPlaceholderText&quot;: &quot;A String&quot;, # Placeholder text which will appear in the UI input form for this parameter.
              },
              &quot;dataType&quot;: &quot;A String&quot;, # The data type of the parameter.
              &quot;defaultValue&quot;: { # To support various types of parameter values. Next available id: 14 # Default values for the defined keys. Each value can either be string, int, double or any proto message or a serialized object.
                &quot;booleanArray&quot;: {
                  &quot;booleanValues&quot;: [
                    True or False,
                  ],
                },
                &quot;booleanValue&quot;: True or False,
                &quot;doubleArray&quot;: {
                  &quot;doubleValues&quot;: [
                    3.14,
                  ],
                },
                &quot;doubleValue&quot;: 3.14,
                &quot;intArray&quot;: {
                  &quot;intValues&quot;: [
                    &quot;A String&quot;,
                  ],
                },
                &quot;intValue&quot;: &quot;A String&quot;,
                &quot;jsonValue&quot;: &quot;A String&quot;,
                &quot;protoArray&quot;: {
                  &quot;protoValues&quot;: [
                    {
                      &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
                    },
                  ],
                },
                &quot;protoValue&quot;: {
                  &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
                },
                &quot;serializedObjectValue&quot;: {
                  &quot;objectValue&quot;: &quot;A String&quot;,
                },
                &quot;stringArray&quot;: {
                  &quot;stringValues&quot;: [
                    &quot;A String&quot;,
                  ],
                },
                &quot;stringValue&quot;: &quot;A String&quot;,
              },
              &quot;isDeprecated&quot;: True or False, # If set, this entry is deprecated, so further use of this parameter should be prohibited.
              &quot;isOutput&quot;: True or False,
              &quot;jsonSchema&quot;: &quot;A String&quot;, # If the data_type is JSON_VALUE, then this will define its schema.
              &quot;key&quot;: &quot;A String&quot;, # Key is used to retrieve the corresponding parameter value. This should be unique for a given task. These parameters must be predefined in the workflow definition.
              &quot;protoDef&quot;: { # Populated if this represents a proto or proto array.
                &quot;fullName&quot;: &quot;A String&quot;, # The fully-qualified proto name. This message, for example, would be &quot;enterprise.crm.eventbus.proto.ParamSpecEntry.ProtoDefinition&quot;.
                &quot;path&quot;: &quot;A String&quot;, # Path to the proto file that contains the message type&#x27;s definition.
              },
              &quot;required&quot;: True or False, # If set, the user must provide an input value for this parameter.
              &quot;validationRule&quot;: { # Rule used to validate inputs (individual values and collection elements) for this parameter.
                &quot;doubleRange&quot;: { # Range used to validate doubles and floats.
                  &quot;max&quot;: 3.14, # The inclusive maximum of the acceptable range.
                  &quot;min&quot;: 3.14, # The inclusive minimum of the acceptable range.
                },
                &quot;intRange&quot;: { # Range used to validate longs and ints.
                  &quot;max&quot;: &quot;A String&quot;, # The inclusive maximum of the acceptable range.
                  &quot;min&quot;: &quot;A String&quot;, # The inclusive minimum of the acceptable range.
                },
                &quot;stringRegex&quot;: { # Rule used to validate strings.
                  &quot;exclusive&quot;: True or False, # Whether the regex matcher is applied exclusively (if true, matching values will be rejected).
                  &quot;regex&quot;: &quot;A String&quot;, # The regex applied to the input value(s).
                },
              },
            },
          ],
        },
        &quot;stats&quot;: { # Stats for the requested dimensions: QPS, duration, and error/warning rate # Deprecated - statistics from the Monarch query.
          &quot;dimensions&quot;: { # Dimensions that these stats have been aggregated on.
            &quot;clientId&quot;: &quot;A String&quot;,
            &quot;enumFilterType&quot;: &quot;A String&quot;, # Whether to include or exclude the enums matching the regex.
            &quot;errorEnumString&quot;: &quot;A String&quot;,
            &quot;retryAttempt&quot;: &quot;A String&quot;,
            &quot;taskName&quot;: &quot;A String&quot;,
            &quot;taskNumber&quot;: &quot;A String&quot;,
            &quot;triggerId&quot;: &quot;A String&quot;, # Stats have been or will be aggregated on set fields for any semantically-meaningful combination.
            &quot;warningEnumString&quot;: &quot;A String&quot;,
            &quot;workflowId&quot;: &quot;A String&quot;,
            &quot;workflowName&quot;: &quot;A String&quot;,
          },
          &quot;durationInSeconds&quot;: 3.14, # Average duration in seconds.
          &quot;errorRate&quot;: 3.14, # Average error rate.
          &quot;qps&quot;: 3.14, # Queries per second.
          &quot;warningRate&quot;: 3.14, # Average warning rate.
        },
        &quot;taskType&quot;: &quot;A String&quot;, # Defines the type of the task
        &quot;uiConfig&quot;: { # Task authors would use this type to configure the UI for a particular task by specifying what UI config modules should be included to compose the UI. Learn more about config module framework: # UI configuration for this task Also associated with the METADATA mask.
          &quot;taskUiModuleConfigs&quot;: [ # Configurations of included config modules.
            { # Task author would use this type to configure a config module.
              &quot;moduleId&quot;: &quot;A String&quot;, # ID of the config module.
            },
          ],
        },
      },
      &quot;taskExecutionStrategy&quot;: &quot;A String&quot;, # The policy dictating the execution strategy of this task.
      &quot;taskName&quot;: &quot;A String&quot;, # The name for the task.
      &quot;taskNumber&quot;: &quot;A String&quot;, # REQUIRED: the identifier of this task within its parent event config, specified by the client. This should be unique among all the tasks belong to the same event config. We use this field as the identifier to find next tasks (via field `next_tasks.task_number`).
      &quot;taskSpec&quot;: &quot;A String&quot;, # A string template that allows user to configure task parameters (with either literal default values or tokens which will be resolved at execution time) for the task. It will eventually replace the old &quot;parameters&quot; field.
      &quot;taskTemplateName&quot;: &quot;A String&quot;, # Used to define task-template name if task is of type task-template
      &quot;taskType&quot;: &quot;A String&quot;, # Defines the type of the task
    },
  ],
  &quot;teardown&quot;: { # Optional. Contains a graph of tasks that will be executed before putting the event in a terminal state (SUCCEEDED/FAILED/FATAL), regardless of success or failure, similar to &quot;finally&quot; in code.
    &quot;teardownTaskConfigs&quot;: [ # Required.
      {
        &quot;creatorEmail&quot;: &quot;A String&quot;, # The creator&#x27;s email address.
        &quot;name&quot;: &quot;A String&quot;, # Required. Unique identifier of the teardown task within this Config. We use this field as the identifier to find next teardown tasks.
        &quot;nextTeardownTask&quot;: { # The teardown task that is next in line to be executed. We support only sequential execution of teardown tasks (i.e. no branching).
          &quot;name&quot;: &quot;A String&quot;, # Required. Name of the next teardown task.
        },
        &quot;parameters&quot;: { # LINT.IfChange This message is used for processing and persisting (when applicable) key value pair parameters for each event in the event bus. Please see # The parameters the user can pass to this task.
          &quot;parameters&quot;: [ # Parameters are a part of Event and can be used to communicate between different tasks that are part of the same integration execution.
            { # Key-value pair of EventBus parameters.
              &quot;key&quot;: &quot;A String&quot;, # Key is used to retrieve the corresponding parameter value. This should be unique for a given fired event. These parameters must be predefined in the integration definition.
              &quot;masked&quot;: True or False, # True if this parameter should be masked in the logs
              &quot;value&quot;: { # LINT.IfChange To support various types of parameter values. Next available id: 14 # Values for the defined keys. Each value can either be string, int, double or any proto message.
                &quot;booleanArray&quot;: {
                  &quot;booleanValues&quot;: [
                    True or False,
                  ],
                },
                &quot;booleanValue&quot;: True or False,
                &quot;doubleArray&quot;: {
                  &quot;doubleValues&quot;: [
                    3.14,
                  ],
                },
                &quot;doubleValue&quot;: 3.14,
                &quot;intArray&quot;: {
                  &quot;intValues&quot;: [
                    &quot;A String&quot;,
                  ],
                },
                &quot;intValue&quot;: &quot;A String&quot;,
                &quot;protoArray&quot;: {
                  &quot;protoValues&quot;: [
                    {
                      &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
                    },
                  ],
                },
                &quot;protoValue&quot;: {
                  &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
                },
                &quot;serializedObjectValue&quot;: {
                  &quot;objectValue&quot;: &quot;A String&quot;,
                },
                &quot;stringArray&quot;: {
                  &quot;stringValues&quot;: [
                    &quot;A String&quot;,
                  ],
                },
                &quot;stringValue&quot;: &quot;A String&quot;,
              },
            },
          ],
        },
        &quot;properties&quot;: { # LINT.IfChange This message is used for storing key value pair properties for each Event / Task in the EventBus.
          &quot;properties&quot;: [ # An unordered list of property entries.
            { # Key-value pair of EventBus property.
              &quot;key&quot;: &quot;A String&quot;, # Key is used to retrieve the corresponding property value. This should be unique for a given fired event. The Tasks should be aware of the keys used while firing the events for them to be able to retrieve the values.
              &quot;value&quot;: { # Used for define type for values. Currently supported value types include int, string, double, array, and any proto message. # Values for the defined keys. Each value can either be string, int, double or any proto message.
                &quot;booleanValue&quot;: True or False,
                &quot;doubleArray&quot;: {
                  &quot;values&quot;: [
                    3.14,
                  ],
                },
                &quot;doubleValue&quot;: 3.14,
                &quot;intArray&quot;: {
                  &quot;values&quot;: [
                    &quot;A String&quot;,
                  ],
                },
                &quot;intValue&quot;: &quot;A String&quot;,
                &quot;protoValue&quot;: {
                  &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
                },
                &quot;stringArray&quot;: {
                  &quot;values&quot;: [
                    &quot;A String&quot;,
                  ],
                },
                &quot;stringValue&quot;: &quot;A String&quot;,
              },
            },
          ],
        },
        &quot;teardownTaskImplementationClassName&quot;: &quot;A String&quot;, # Required. Implementation class name.
      },
    ],
  },
  &quot;triggerConfigs&quot;: [ # Optional. Trigger configurations.
    { # Configuration detail of a trigger.
      &quot;alertConfig&quot;: [ # Optional. An alert threshold configuration for the [trigger + client + integration] tuple. If these values are not specified in the trigger config, default values will be populated by the system. Note that there must be exactly one alert threshold configured per [client + trigger + integration] when published.
        { # Message to be used to configure custom alerting in the {@code EventConfig} protos for an event.
          &quot;aggregationPeriod&quot;: &quot;A String&quot;, # The period over which the metric value should be aggregated and evaluated. Format is , where integer should be a positive integer and unit should be one of (s,m,h,d,w) meaning (second, minute, hour, day, week). For an EXPECTED_MIN threshold, this aggregation_period must be lesser than 24 hours.
          &quot;alertThreshold&quot;: 42, # For how many contiguous aggregation periods should the expected min or max be violated for the alert to be fired.
          &quot;disableAlert&quot;: True or False, # Set to false by default. When set to true, the metrics are not aggregated or pushed to Monarch for this integration alert.
          &quot;displayName&quot;: &quot;A String&quot;, # Name of the alert. This will be displayed in the alert subject. If set, this name should be unique within the scope of the integration.
          &quot;durationThreshold&quot;: &quot;A String&quot;, # Should be specified only for *AVERAGE_DURATION and *PERCENTILE_DURATION metrics. This member should be used to specify what duration value the metrics should exceed for the alert to trigger.
          &quot;metricType&quot;: &quot;A String&quot;, # The type of metric.
          &quot;onlyFinalAttempt&quot;: True or False, # For either events or tasks, depending on the type of alert, count only final attempts, not retries.
          &quot;thresholdType&quot;: &quot;A String&quot;, # The threshold type, whether lower(expected_min) or upper(expected_max), for which this alert is being configured. If value falls below expected_min or exceeds expected_max, an alert will be fired.
          &quot;thresholdValue&quot;: { # The threshold value of the metric, above or below which the alert should be triggered. See EventAlertConfig or TaskAlertConfig for the different alert metric types in each case. For the *RATE metrics, one or both of these fields may be set. Zero is the default value and can be left at that. For *PERCENTILE_DURATION metrics, one or both of these fields may be set, and also, the duration threshold value should be specified in the threshold_duration_ms member below. For *AVERAGE_DURATION metrics, these fields should not be set at all. A different member, threshold_duration_ms, must be set in the EventAlertConfig or the TaskAlertConfig. # The metric value, above or below which the alert should be triggered.
            &quot;absolute&quot;: &quot;A String&quot;, # Absolute value threshold.
            &quot;percentage&quot;: 42, # Percentage threshold.
          },
        },
      ],
      &quot;cloudSchedulerConfig&quot;: { # Cloud Scheduler Trigger configuration # Optional. Cloud Scheduler Trigger related metadata
        &quot;cronTab&quot;: &quot;A String&quot;, # Required. The cron tab of cloud scheduler trigger.
        &quot;errorMessage&quot;: &quot;A String&quot;, # Optional. When the job was deleted from Pantheon UI, error_message will be populated when Get/List integrations
        &quot;location&quot;: &quot;A String&quot;, # Required. The location where associated cloud scheduler job will be created
        &quot;serviceAccountEmail&quot;: &quot;A String&quot;, # Required. Service account used by Cloud Scheduler to trigger the integration at scheduled time
      },
      &quot;description&quot;: &quot;A String&quot;, # Optional. User-provided description intended to give additional business context about the task.
      &quot;errorCatcherId&quot;: &quot;A String&quot;, # Optional. Optional Error catcher id of the error catch flow which will be executed when execution error happens in the task
      &quot;inputVariables&quot;: { # Variables names mapped to api trigger. # Optional. List of input variables for the api trigger.
        &quot;names&quot;: [ # Optional. List of variable names.
          &quot;A String&quot;,
        ],
      },
      &quot;label&quot;: &quot;A String&quot;, # Optional. The user created label for a particular trigger.
      &quot;nextTasksExecutionPolicy&quot;: &quot;A String&quot;, # Optional. Dictates how next tasks will be executed.
      &quot;outputVariables&quot;: { # Variables names mapped to api trigger. # Optional. List of output variables for the api trigger.
        &quot;names&quot;: [ # Optional. List of variable names.
          &quot;A String&quot;,
        ],
      },
      &quot;position&quot;: { # Configuration detail of coordinate, it used for UI # Optional. Informs the front-end application where to draw this error catcher config on the UI.
        &quot;x&quot;: 42, # Required. X axis of the coordinate
        &quot;y&quot;: 42, # Required. Y axis of the coordinate
      },
      &quot;properties&quot;: { # Optional. Configurable properties of the trigger, not to be confused with integration parameters. E.g. &quot;name&quot; is a property for API triggers and &quot;subscription&quot; is a property for Pub/sub triggers.
        &quot;a_key&quot;: &quot;A String&quot;,
      },
      &quot;startTasks&quot;: [ # Optional. Set of tasks numbers from where the integration execution is started by this trigger. If this is empty, then integration is executed with default start tasks. In the list of start tasks, none of two tasks can have direct ancestor-descendant relationships (i.e. in a same integration execution graph).
        { # The task that is next in line to be executed, if the condition specified evaluated to true.
          &quot;condition&quot;: &quot;A String&quot;, # Standard filter expression for this task to become an eligible next task.
          &quot;description&quot;: &quot;A String&quot;, # User-provided description intended to give additional business context about the task.
          &quot;displayName&quot;: &quot;A String&quot;, # User-provided label that is attached to this edge in the UI.
          &quot;taskConfigId&quot;: &quot;A String&quot;, # ID of the next task.
          &quot;taskId&quot;: &quot;A String&quot;, # Task number of the next task.
        },
      ],
      &quot;trigger&quot;: &quot;A String&quot;, # Optional. Name of the trigger. Example: &quot;API Trigger&quot;, &quot;Cloud Pub Sub Trigger&quot; When set will be sent out to monitoring dashabord for tracking purpose.
      &quot;triggerId&quot;: &quot;A String&quot;, # Optional. Auto-generated trigger ID. The ID is based on the properties that you define in the trigger config. For example, for an API trigger, the trigger ID follows the format: api_trigger/TRIGGER_NAME Where trigger config has properties with value {&quot;Trigger name&quot;: TRIGGER_NAME}
      &quot;triggerNumber&quot;: &quot;A String&quot;, # Required. A number to uniquely identify each trigger config within the integration on UI.
      &quot;triggerType&quot;: &quot;A String&quot;, # Optional. Type of trigger
    },
  ],
  &quot;triggerConfigsInternal&quot;: [ # Optional. Trigger configurations.
    { # Configuration detail of a trigger. Next available id: 22
      &quot;alertConfig&quot;: [ # An alert threshold configuration for the [trigger + client + workflow] tuple. If these values are not specified in the trigger config, default values will be populated by the system. Note that there must be exactly one alert threshold configured per [client + trigger + workflow] when published.
        { # Message to be used to configure custom alerting in the {@code EventConfig} protos for an event.
          &quot;aggregationPeriod&quot;: &quot;A String&quot;, # For an EXPECTED_MIN threshold, this aggregation_period must be lesser than 24 hours.
          &quot;alertDisabled&quot;: True or False, # Set to false by default. When set to true, the metrics are not aggregated or pushed to Monarch for this workflow alert.
          &quot;alertName&quot;: &quot;A String&quot;, # A name to identify this alert. This will be displayed in the alert subject. If set, this name should be unique within the scope of the workflow.
          &quot;clientId&quot;: &quot;A String&quot;, # Client associated with this alert configuration.
          &quot;durationThresholdMs&quot;: &quot;A String&quot;, # Should be specified only for *AVERAGE_DURATION and *PERCENTILE_DURATION metrics. This member should be used to specify what duration value the metrics should exceed for the alert to trigger.
          &quot;errorEnumList&quot;: { # List of error enums for alerts.
            &quot;enumStrings&quot;: [
              &quot;A String&quot;,
            ],
            &quot;filterType&quot;: &quot;A String&quot;,
          },
          &quot;metricType&quot;: &quot;A String&quot;,
          &quot;numAggregationPeriods&quot;: 42, # For how many contiguous aggregation periods should the expected min or max be violated for the alert to be fired.
          &quot;onlyFinalAttempt&quot;: True or False, # For either events or tasks, depending on the type of alert, count only final attempts, not retries.
          &quot;playbookUrl&quot;: &quot;A String&quot;, # Link to a playbook for resolving the issue that triggered this alert.
          &quot;thresholdType&quot;: &quot;A String&quot;, # The threshold type, whether lower(expected_min) or upper(expected_max), for which this alert is being configured. If value falls below expected_min or exceeds expected_max, an alert will be fired.
          &quot;thresholdValue&quot;: { # The threshold value of the metric, above or below which the alert should be triggered. See EventAlertConfig or TaskAlertConfig for the different alert metric types in each case. For the *RATE metrics, one or both of these fields may be set. Zero is the default value and can be left at that. For *PERCENTILE_DURATION metrics, one or both of these fields may be set, and also, the duration threshold value should be specified in the threshold_duration_ms member below. For *AVERAGE_DURATION metrics, these fields should not be set at all. A different member, threshold_duration_ms, must be set in the EventAlertConfig or the TaskAlertConfig. # The metric value, above or below which the alert should be triggered.
            &quot;absolute&quot;: &quot;A String&quot;,
            &quot;percentage&quot;: 42,
          },
          &quot;warningEnumList&quot;: { # List of error enums for alerts.
            &quot;enumStrings&quot;: [
              &quot;A String&quot;,
            ],
            &quot;filterType&quot;: &quot;A String&quot;,
          },
        },
      ],
      &quot;cloudSchedulerConfig&quot;: { # Cloud Scheduler Trigger configuration
        &quot;cronTab&quot;: &quot;A String&quot;, # Required. The cron tab of cloud scheduler trigger.
        &quot;errorMessage&quot;: &quot;A String&quot;, # Optional. When the job was deleted from Pantheon UI, error_message will be populated when Get/List integrations
        &quot;location&quot;: &quot;A String&quot;, # Required. The location where associated cloud scheduler job will be created
        &quot;serviceAccountEmail&quot;: &quot;A String&quot;, # Required. Service account used by Cloud Scheduler to trigger the integration at scheduled time
      },
      &quot;description&quot;: &quot;A String&quot;, # User-provided description intended to give more business context about the task.
      &quot;enabledClients&quot;: [ # Required. The list of client ids which are enabled to execute the workflow using this trigger. In other words, these clients have the workflow execution privledges for this trigger. For API trigger, the client id in the incoming request is validated against the list of enabled clients. For non-API triggers, one workflow execution is triggered on behalf of each enabled client.
        &quot;A String&quot;,
      ],
      &quot;errorCatcherId&quot;: &quot;A String&quot;, # Optional Error catcher id of the error catch flow which will be executed when execution error happens in the task
      &quot;inputVariables&quot;: { # Variables names mapped to api trigger. # Optional. List of input variables for the api trigger.
        &quot;names&quot;: [ # Optional. List of variable names.
          &quot;A String&quot;,
        ],
      },
      &quot;label&quot;: &quot;A String&quot;, # The user created label for a particular trigger.
      &quot;nextTasksExecutionPolicy&quot;: &quot;A String&quot;, # Dictates how next tasks will be executed.
      &quot;outputVariables&quot;: { # Variables names mapped to api trigger. # Optional. List of output variables for the api trigger.
        &quot;names&quot;: [ # Optional. List of variable names.
          &quot;A String&quot;,
        ],
      },
      &quot;pauseWorkflowExecutions&quot;: True or False, # Optional. If set to true, any upcoming requests for this trigger config will be paused and the executions will be resumed later when the flag is reset. The workflow to which this trigger config belongs has to be in ACTIVE status for the executions to be paused or resumed.
      &quot;position&quot;: { # Represents two-dimensional positions. # Optional. Informs the front-end application where to draw this trigger config on the UI.
        &quot;x&quot;: 42,
        &quot;y&quot;: 42,
      },
      &quot;properties&quot;: { # Configurable properties of the trigger, not to be confused with workflow parameters. E.g. &quot;name&quot; is a property for API triggers and &quot;subscription&quot; is a property for Cloud Pubsub triggers.
        &quot;a_key&quot;: &quot;A String&quot;,
      },
      &quot;startTasks&quot;: [ # Set of tasks numbers from where the workflow execution is started by this trigger. If this is empty, then workflow is executed with default start tasks. In the list of start tasks, none of two tasks can have direct ancestor-descendant relationships (i.e. in a same workflow execution graph).
        { # The task that is next in line to be executed, if the condition specified evaluated to true.
          &quot;combinedConditions&quot;: [ # Combined condition for this task to become an eligible next task. Each of these combined_conditions are joined with logical OR. DEPRECATED: use `condition`
            { # This message recursively combines constituent conditions using logical AND.
              &quot;conditions&quot;: [ # A set of individual constituent conditions.
                { # Condition that uses `operator` to evaluate the key against the value.
                  &quot;eventPropertyKey&quot;: &quot;A String&quot;, # Key that&#x27;s evaluated against the `value`. Please note the data type of the runtime value associated with the key should match the data type of `value`, else an IllegalArgumentException is thrown.
                  &quot;operator&quot;: &quot;A String&quot;, # Operator used to evaluate the condition. Please note that an operator with an inappropriate key/value operand will result in IllegalArgumentException, e.g. CONTAINS with boolean key/value pair.
                  &quot;value&quot;: { # Used for define type for values. Currently supported value types include int, string, double, array, and any proto message. # Value that&#x27;s checked for the key.
                    &quot;booleanValue&quot;: True or False,
                    &quot;doubleArray&quot;: {
                      &quot;values&quot;: [
                        3.14,
                      ],
                    },
                    &quot;doubleValue&quot;: 3.14,
                    &quot;intArray&quot;: {
                      &quot;values&quot;: [
                        &quot;A String&quot;,
                      ],
                    },
                    &quot;intValue&quot;: &quot;A String&quot;,
                    &quot;protoValue&quot;: {
                      &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
                    },
                    &quot;stringArray&quot;: {
                      &quot;values&quot;: [
                        &quot;A String&quot;,
                      ],
                    },
                    &quot;stringValue&quot;: &quot;A String&quot;,
                  },
                },
              ],
            },
          ],
          &quot;condition&quot;: &quot;A String&quot;, # Standard filter expression for this task to become an eligible next task.
          &quot;description&quot;: &quot;A String&quot;, # User-provided description intended to give more business context about the next task edge or condition.
          &quot;label&quot;: &quot;A String&quot;, # User-provided label that is attached to this edge in the UI.
          &quot;taskConfigId&quot;: &quot;A String&quot;, # ID of the next task.
          &quot;taskNumber&quot;: &quot;A String&quot;, # Task number of the next task.
        },
      ],
      &quot;triggerCriteria&quot;: { # Optional. When set, Eventbus will run the task specified in the trigger_criteria and validate the result using the trigger_criteria.condition, and only execute the workflow when result is true.
        &quot;condition&quot;: &quot;A String&quot;, # Required. Standard filter expression, when true the workflow will be executed. If there&#x27;s no trigger_criteria_task_implementation_class_name specified, the condition will be validated directly.
        &quot;parameters&quot;: { # LINT.IfChange This message is used for processing and persisting (when applicable) key value pair parameters for each event in the event bus. Please see # Optional. To be used in TaskConfig for the implementation class.
          &quot;parameters&quot;: [ # Parameters are a part of Event and can be used to communicate between different tasks that are part of the same integration execution.
            { # Key-value pair of EventBus parameters.
              &quot;key&quot;: &quot;A String&quot;, # Key is used to retrieve the corresponding parameter value. This should be unique for a given fired event. These parameters must be predefined in the integration definition.
              &quot;masked&quot;: True or False, # True if this parameter should be masked in the logs
              &quot;value&quot;: { # LINT.IfChange To support various types of parameter values. Next available id: 14 # Values for the defined keys. Each value can either be string, int, double or any proto message.
                &quot;booleanArray&quot;: {
                  &quot;booleanValues&quot;: [
                    True or False,
                  ],
                },
                &quot;booleanValue&quot;: True or False,
                &quot;doubleArray&quot;: {
                  &quot;doubleValues&quot;: [
                    3.14,
                  ],
                },
                &quot;doubleValue&quot;: 3.14,
                &quot;intArray&quot;: {
                  &quot;intValues&quot;: [
                    &quot;A String&quot;,
                  ],
                },
                &quot;intValue&quot;: &quot;A String&quot;,
                &quot;protoArray&quot;: {
                  &quot;protoValues&quot;: [
                    {
                      &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
                    },
                  ],
                },
                &quot;protoValue&quot;: {
                  &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
                },
                &quot;serializedObjectValue&quot;: {
                  &quot;objectValue&quot;: &quot;A String&quot;,
                },
                &quot;stringArray&quot;: {
                  &quot;stringValues&quot;: [
                    &quot;A String&quot;,
                  ],
                },
                &quot;stringValue&quot;: &quot;A String&quot;,
              },
            },
          ],
        },
        &quot;triggerCriteriaTaskImplementationClassName&quot;: &quot;A String&quot;, # Optional. Implementation class name. The class should implement the “TypedTask” interface.
      },
      &quot;triggerId&quot;: &quot;A String&quot;, # The backend trigger ID.
      &quot;triggerName&quot;: &quot;A String&quot;, # Optional. Name of the trigger This is added to identify the type of trigger. This is avoid the logic on triggerId to identify the trigger_type and push the same to monitoring.
      &quot;triggerNumber&quot;: &quot;A String&quot;, # Required. A number to uniquely identify each trigger config within the workflow on UI.
      &quot;triggerType&quot;: &quot;A String&quot;,
    },
  ],
  &quot;updateTime&quot;: &quot;A String&quot;, # Output only. Auto-generated.
  &quot;userLabel&quot;: &quot;A String&quot;, # Optional. A user-defined label that annotates an integration version. Typically, this is only set when the integration version is created.
}

  updateMask: string, Field mask specifying the fields in the above integration that have been modified and need to be updated.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # The integration version definition.
  &quot;cloudKmsKey&quot;: &quot;A String&quot;, # Optional. Cloud KMS resource name for the CMEK encryption key.
  &quot;cloudLoggingDetails&quot;: { # Cloud Logging details for execution info # Optional. Cloud Logging details for the integration version
    &quot;cloudLoggingSeverity&quot;: &quot;A String&quot;, # Optional. Severity selected by the customer for the logs to be sent to Cloud Logging, for the integration version getting executed.
    &quot;enableCloudLogging&quot;: True or False, # Optional. Status of whether Cloud Logging is enabled or not for the integration version getting executed.
  },
  &quot;createTime&quot;: &quot;A String&quot;, # Output only. Auto-generated.
  &quot;createdFromTemplate&quot;: &quot;A String&quot;, # Optional. Optional. The resource name of the template from which the integration is created.
  &quot;databasePersistencePolicy&quot;: &quot;A String&quot;, # Optional. Flag to disable database persistence for execution data, including event execution info, execution export info, execution metadata index and execution param index.
  &quot;description&quot;: &quot;A String&quot;, # Optional. The integration description.
  &quot;enableVariableMasking&quot;: True or False, # Optional. True if variable masking feature should be turned on for this version
  &quot;errorCatcherConfigs&quot;: [ # Optional. Error Catch Task configuration for the integration. It&#x27;s optional.
    { # Configuration detail of a error catch task
      &quot;description&quot;: &quot;A String&quot;, # Optional. User-provided description intended to give more business context about the error catcher config.
      &quot;errorCatcherId&quot;: &quot;A String&quot;, # Required. An error catcher id is string representation for the error catcher config. Within a workflow, error_catcher_id uniquely identifies an error catcher config among all error catcher configs for the workflow
      &quot;errorCatcherNumber&quot;: &quot;A String&quot;, # Required. A number to uniquely identify each error catcher config within the workflow on UI.
      &quot;label&quot;: &quot;A String&quot;, # Optional. The user created label for a particular error catcher. Optional.
      &quot;position&quot;: { # Configuration detail of coordinate, it used for UI # Optional. Informs the front-end application where to draw this error catcher config on the UI.
        &quot;x&quot;: 42, # Required. X axis of the coordinate
        &quot;y&quot;: 42, # Required. Y axis of the coordinate
      },
      &quot;startErrorTasks&quot;: [ # Required. The set of start tasks that are to be executed for the error catch flow
        { # The task that is next in line to be executed, if the condition specified evaluated to true.
          &quot;condition&quot;: &quot;A String&quot;, # Standard filter expression for this task to become an eligible next task.
          &quot;description&quot;: &quot;A String&quot;, # User-provided description intended to give additional business context about the task.
          &quot;displayName&quot;: &quot;A String&quot;, # User-provided label that is attached to this edge in the UI.
          &quot;taskConfigId&quot;: &quot;A String&quot;, # ID of the next task.
          &quot;taskId&quot;: &quot;A String&quot;, # Task number of the next task.
        },
      ],
    },
  ],
  &quot;integrationConfigParameters&quot;: [ # Optional. Config Parameters that are expected to be passed to the integration when an integration is published. This consists of all the parameters that are expected to provide configuration in the integration execution. This gives the user the ability to provide default values, value, add information like connection url, project based configuration value and also provide data types of each parameter.
    { # Integration Config Parameter is defined in the integration config and are used to provide external configuration for integration. It provide information about data types of the expected parameters and provide any default values or value. They can also be used to add custom attributes.
      &quot;parameter&quot;: { # Integration Parameter is defined in the integration config and are used to provide information about data types of the expected parameters and provide any default values if needed. They can also be used to add custom attributes. These are static in nature and should not be used for dynamic event definition. # Optional. Integration Parameter to provide the default value, data type and attributes required for the Integration config variables.
        &quot;containsLargeData&quot;: True or False, # Indicates whether this variable contains large data and need to be uploaded to Cloud Storage.
        &quot;dataType&quot;: &quot;A String&quot;, # Type of the parameter.
        &quot;defaultValue&quot;: { # The type of the parameter. # Default values for the defined keys. Each value can either be string, int, double or any proto message or a serialized object.
          &quot;booleanArray&quot;: { # This message only contains a field of boolean array. # Boolean Array.
            &quot;booleanValues&quot;: [ # Boolean array.
              True or False,
            ],
          },
          &quot;booleanValue&quot;: True or False, # Boolean.
          &quot;doubleArray&quot;: { # This message only contains a field of double number array. # Double Number Array.
            &quot;doubleValues&quot;: [ # Double number array.
              3.14,
            ],
          },
          &quot;doubleValue&quot;: 3.14, # Double Number.
          &quot;intArray&quot;: { # This message only contains a field of integer array. # Integer Array.
            &quot;intValues&quot;: [ # Integer array.
              &quot;A String&quot;,
            ],
          },
          &quot;intValue&quot;: &quot;A String&quot;, # Integer.
          &quot;jsonValue&quot;: &quot;A String&quot;, # Json.
          &quot;stringArray&quot;: { # This message only contains a field of string array. # String Array.
            &quot;stringValues&quot;: [ # String array.
              &quot;A String&quot;,
            ],
          },
          &quot;stringValue&quot;: &quot;A String&quot;, # String.
        },
        &quot;description&quot;: &quot;A String&quot;, # Optional. Description of the parameter.
        &quot;displayName&quot;: &quot;A String&quot;, # The name (without prefix) to be displayed in the UI for this parameter. E.g. if the key is &quot;foo.bar.myName&quot;, then the name would be &quot;myName&quot;.
        &quot;inputOutputType&quot;: &quot;A String&quot;, # Specifies the input/output type for the parameter.
        &quot;isTransient&quot;: True or False, # Whether this parameter is a transient parameter.
        &quot;jsonSchema&quot;: &quot;A String&quot;, # This schema will be used to validate runtime JSON-typed values of this parameter.
        &quot;key&quot;: &quot;A String&quot;, # Key is used to retrieve the corresponding parameter value. This should be unique for a given fired event. These parameters must be predefined in the integration definition.
        &quot;masked&quot;: True or False, # True if this parameter should be masked in the logs
        &quot;producer&quot;: &quot;A String&quot;, # The identifier of the node (TaskConfig/TriggerConfig) this parameter was produced by, if it is a transient param or a copy of an input param.
        &quot;searchable&quot;: True or False, # Searchable in the execution log or not.
      },
      &quot;value&quot;: { # The type of the parameter. # Values for the defined keys. Each value can either be string, int, double or any proto message or a serialized object.
        &quot;booleanArray&quot;: { # This message only contains a field of boolean array. # Boolean Array.
          &quot;booleanValues&quot;: [ # Boolean array.
            True or False,
          ],
        },
        &quot;booleanValue&quot;: True or False, # Boolean.
        &quot;doubleArray&quot;: { # This message only contains a field of double number array. # Double Number Array.
          &quot;doubleValues&quot;: [ # Double number array.
            3.14,
          ],
        },
        &quot;doubleValue&quot;: 3.14, # Double Number.
        &quot;intArray&quot;: { # This message only contains a field of integer array. # Integer Array.
          &quot;intValues&quot;: [ # Integer array.
            &quot;A String&quot;,
          ],
        },
        &quot;intValue&quot;: &quot;A String&quot;, # Integer.
        &quot;jsonValue&quot;: &quot;A String&quot;, # Json.
        &quot;stringArray&quot;: { # This message only contains a field of string array. # String Array.
          &quot;stringValues&quot;: [ # String array.
            &quot;A String&quot;,
          ],
        },
        &quot;stringValue&quot;: &quot;A String&quot;, # String.
      },
    },
  ],
  &quot;integrationParameters&quot;: [ # Optional. Parameters that are expected to be passed to the integration when an event is triggered. This consists of all the parameters that are expected in the integration execution. This gives the user the ability to provide default values, add information like PII and also provide data types of each parameter.
    { # Integration Parameter is defined in the integration config and are used to provide information about data types of the expected parameters and provide any default values if needed. They can also be used to add custom attributes. These are static in nature and should not be used for dynamic event definition.
      &quot;containsLargeData&quot;: True or False, # Indicates whether this variable contains large data and need to be uploaded to Cloud Storage.
      &quot;dataType&quot;: &quot;A String&quot;, # Type of the parameter.
      &quot;defaultValue&quot;: { # The type of the parameter. # Default values for the defined keys. Each value can either be string, int, double or any proto message or a serialized object.
        &quot;booleanArray&quot;: { # This message only contains a field of boolean array. # Boolean Array.
          &quot;booleanValues&quot;: [ # Boolean array.
            True or False,
          ],
        },
        &quot;booleanValue&quot;: True or False, # Boolean.
        &quot;doubleArray&quot;: { # This message only contains a field of double number array. # Double Number Array.
          &quot;doubleValues&quot;: [ # Double number array.
            3.14,
          ],
        },
        &quot;doubleValue&quot;: 3.14, # Double Number.
        &quot;intArray&quot;: { # This message only contains a field of integer array. # Integer Array.
          &quot;intValues&quot;: [ # Integer array.
            &quot;A String&quot;,
          ],
        },
        &quot;intValue&quot;: &quot;A String&quot;, # Integer.
        &quot;jsonValue&quot;: &quot;A String&quot;, # Json.
        &quot;stringArray&quot;: { # This message only contains a field of string array. # String Array.
          &quot;stringValues&quot;: [ # String array.
            &quot;A String&quot;,
          ],
        },
        &quot;stringValue&quot;: &quot;A String&quot;, # String.
      },
      &quot;description&quot;: &quot;A String&quot;, # Optional. Description of the parameter.
      &quot;displayName&quot;: &quot;A String&quot;, # The name (without prefix) to be displayed in the UI for this parameter. E.g. if the key is &quot;foo.bar.myName&quot;, then the name would be &quot;myName&quot;.
      &quot;inputOutputType&quot;: &quot;A String&quot;, # Specifies the input/output type for the parameter.
      &quot;isTransient&quot;: True or False, # Whether this parameter is a transient parameter.
      &quot;jsonSchema&quot;: &quot;A String&quot;, # This schema will be used to validate runtime JSON-typed values of this parameter.
      &quot;key&quot;: &quot;A String&quot;, # Key is used to retrieve the corresponding parameter value. This should be unique for a given fired event. These parameters must be predefined in the integration definition.
      &quot;masked&quot;: True or False, # True if this parameter should be masked in the logs
      &quot;producer&quot;: &quot;A String&quot;, # The identifier of the node (TaskConfig/TriggerConfig) this parameter was produced by, if it is a transient param or a copy of an input param.
      &quot;searchable&quot;: True or False, # Searchable in the execution log or not.
    },
  ],
  &quot;integrationParametersInternal&quot;: { # LINT.IfChange This is the frontend version of WorkflowParameters. It&#x27;s exactly like the backend version except that instead of flattening protobuf parameters and treating every field and subfield of a protobuf parameter as a separate parameter, the fields/subfields of a protobuf parameter will be nested as &quot;children&quot; (see &#x27;children&#x27; field below) parameters of the parent parameter. Please refer to enterprise/crm/eventbus/proto/workflow_parameters.proto for more information about WorkflowParameters. # Optional. Parameters that are expected to be passed to the integration when an event is triggered. This consists of all the parameters that are expected in the integration execution. This gives the user the ability to provide default values, add information like PII and also provide data types of each parameter.
    &quot;parameters&quot;: [ # Parameters are a part of Event and can be used to communiticate between different tasks that are part of the same workflow execution.
      {
        &quot;attributes&quot;: { # Attributes are additional options that can be associated with each event property. For more information, see # Metadata information about the parameters.
          &quot;dataType&quot;: &quot;A String&quot;, # Things like URL, Email, Currency, Timestamp (rather than string, int64...)
          &quot;defaultValue&quot;: { # Used for define type for values. Currently supported value types include int, string, double, array, and any proto message. # Used to define defaults.
            &quot;booleanValue&quot;: True or False,
            &quot;doubleArray&quot;: {
              &quot;values&quot;: [
                3.14,
              ],
            },
            &quot;doubleValue&quot;: 3.14,
            &quot;intArray&quot;: {
              &quot;values&quot;: [
                &quot;A String&quot;,
              ],
            },
            &quot;intValue&quot;: &quot;A String&quot;,
            &quot;protoValue&quot;: {
              &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
            },
            &quot;stringArray&quot;: {
              &quot;values&quot;: [
                &quot;A String&quot;,
              ],
            },
            &quot;stringValue&quot;: &quot;A String&quot;,
          },
          &quot;isRequired&quot;: True or False, # Required for event execution. The validation will be done by the event bus when the event is triggered.
          &quot;isSearchable&quot;: True or False, # Used to indicate if a ParameterEntry should be converted to ParamIndexes for ST-Spanner full-text search. DEPRECATED: use searchable.
          &quot;logSettings&quot;: { # The LogSettings define the logging attributes for an event property. These attributes are used to map the property to the parameter in the log proto. Also used to define scrubbing/truncation behavior and PII information. # See
            &quot;logFieldName&quot;: &quot;A String&quot;, # The name of corresponding logging field of the event property. If omitted, assumes the same name as the event property key.
            &quot;seedPeriod&quot;: &quot;A String&quot;,
            &quot;seedScope&quot;: &quot;A String&quot;,
          },
          &quot;masked&quot;: True or False, # True if this workflow parameter should be masked in the logs
          &quot;readOnly&quot;: True or False, # Used to indicate if the ParameterEntry is a read only field or not.
          &quot;searchable&quot;: &quot;A String&quot;,
          &quot;taskVisibility&quot;: [ # List of tasks that can view this property, if empty then all.
            &quot;A String&quot;,
          ],
        },
        &quot;children&quot;: [ # Child parameters nested within this parameter. This field only applies to protobuf parameters
          # Object with schema name: EnterpriseCrmFrontendsEventbusProtoWorkflowParameterEntry
        ],
        &quot;containsLargeData&quot;: True or False, # Indicates whether this variable contains large data and need to be uploaded to Cloud Storage.
        &quot;dataType&quot;: &quot;A String&quot;, # The data type of the parameter.
        &quot;defaultValue&quot;: { # To support various types of parameter values. Next available id: 14 # Default values for the defined keys. Each value can either be string, int, double or any proto message or a serialized object.
          &quot;booleanArray&quot;: {
            &quot;booleanValues&quot;: [
              True or False,
            ],
          },
          &quot;booleanValue&quot;: True or False,
          &quot;doubleArray&quot;: {
            &quot;doubleValues&quot;: [
              3.14,
            ],
          },
          &quot;doubleValue&quot;: 3.14,
          &quot;intArray&quot;: {
            &quot;intValues&quot;: [
              &quot;A String&quot;,
            ],
          },
          &quot;intValue&quot;: &quot;A String&quot;,
          &quot;jsonValue&quot;: &quot;A String&quot;,
          &quot;protoArray&quot;: {
            &quot;protoValues&quot;: [
              {
                &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
              },
            ],
          },
          &quot;protoValue&quot;: {
            &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
          },
          &quot;serializedObjectValue&quot;: {
            &quot;objectValue&quot;: &quot;A String&quot;,
          },
          &quot;stringArray&quot;: {
            &quot;stringValues&quot;: [
              &quot;A String&quot;,
            ],
          },
          &quot;stringValue&quot;: &quot;A String&quot;,
        },
        &quot;description&quot;: &quot;A String&quot;, # Optional. The description about the parameter
        &quot;inOutType&quot;: &quot;A String&quot;, # Specifies the input/output type for the parameter.
        &quot;isTransient&quot;: True or False, # Whether this parameter is a transient parameter.
        &quot;jsonSchema&quot;: &quot;A String&quot;, # This schema will be used to validate runtime JSON-typed values of this parameter.
        &quot;key&quot;: &quot;A String&quot;, # Key is used to retrieve the corresponding parameter value. This should be unique for a given fired event. These parameters must be predefined in the workflow definition.
        &quot;name&quot;: &quot;A String&quot;, # The name (without prefix) to be displayed in the UI for this parameter. E.g. if the key is &quot;foo.bar.myName&quot;, then the name would be &quot;myName&quot;.
        &quot;producedBy&quot;: { # Represents a node identifier (type + id). Next highest id: 3 # The identifier of the node (TaskConfig/TriggerConfig) this parameter was produced by, if it is a transient param or a copy of an input param.
          &quot;elementIdentifier&quot;: &quot;A String&quot;, # Configuration of the edge.
          &quot;elementType&quot;: &quot;A String&quot;, # Destination node where the edge ends. It can only be a task config.
        },
        &quot;producer&quot;: &quot;A String&quot;,
        &quot;protoDefName&quot;: &quot;A String&quot;, # The name of the protobuf type if the parameter has a protobuf data type.
        &quot;protoDefPath&quot;: &quot;A String&quot;, # If the data type is of type proto or proto array, this field needs to be populated with the fully qualified proto name. This message, for example, would be &quot;enterprise.crm.frontends.eventbus.proto.WorkflowParameterEntry&quot;.
        &quot;required&quot;: True or False,
      },
    ],
  },
  &quot;lastModifierEmail&quot;: &quot;A String&quot;, # Optional. The last modifier&#x27;s email address. Generated based on the End User Credentials/LOAS role of the user making the call.
  &quot;lockHolder&quot;: &quot;A String&quot;, # Optional. The edit lock holder&#x27;s email address. Generated based on the End User Credentials/LOAS role of the user making the call.
  &quot;name&quot;: &quot;A String&quot;, # Output only. Auto-generated primary key.
  &quot;origin&quot;: &quot;A String&quot;, # Optional. The origin that indicates where this integration is coming from.
  &quot;parentTemplateId&quot;: &quot;A String&quot;, # Optional. The id of the template which was used to create this integration_version.
  &quot;runAsServiceAccount&quot;: &quot;A String&quot;, # Optional. The run-as service account email, if set and auth config is not configured, that will be used to generate auth token to be used in Connector task, Rest caller task and Cloud function task.
  &quot;snapshotNumber&quot;: &quot;A String&quot;, # Output only. An increasing sequence that is set when a new snapshot is created. The last created snapshot can be identified by [workflow_name, org_id latest(snapshot_number)]. However, last created snapshot need not be same as the HEAD. So users should always use &quot;HEAD&quot; tag to identify the head.
  &quot;state&quot;: &quot;A String&quot;, # Output only. User should not set it as an input.
  &quot;status&quot;: &quot;A String&quot;, # Output only. Generated by eventbus. User should not set it as an input.
  &quot;taskConfigs&quot;: [ # Optional. Task configuration for the integration. It&#x27;s optional, but the integration doesn&#x27;t do anything without task_configs.
    { # The task configuration details. This is not the implementation of Task. There might be multiple TaskConfigs for the same Task.
      &quot;conditionalFailurePolicies&quot;: { # Conditional task failur retry strategies # Optional. The list of conditional failure policies that will be applied to the task in order.
        &quot;defaultFailurePolicy&quot;: { # Policy that defines the task retry logic and failure type. If no FailurePolicy is defined for a task, all its dependent tasks will not be executed (i.e, a `retry_strategy` of NONE will be applied). # The default failure policy to be applied if no conditional failure policy matches.
          &quot;condition&quot;: &quot;A String&quot;, # Optional. The string condition that will be evaluated to determine if the task should be retried with this failure policy.
          &quot;intervalTime&quot;: &quot;A String&quot;, # Required if retry_strategy is FIXED_INTERVAL or LINEAR/EXPONENTIAL_BACKOFF/RESTART_INTEGRATION_WITH_BACKOFF. Defines the initial interval in seconds for backoff.
          &quot;maxRetries&quot;: 42, # Required if retry_strategy is FIXED_INTERVAL or LINEAR/EXPONENTIAL_BACKOFF/RESTART_INTEGRATION_WITH_BACKOFF. Defines the number of times the task will be retried if failed.
          &quot;retryStrategy&quot;: &quot;A String&quot;, # Defines what happens to the task upon failure.
        },
        &quot;failurePolicies&quot;: [ # The list of failure policies that will be applied to the task in order.
          { # Policy that defines the task retry logic and failure type. If no FailurePolicy is defined for a task, all its dependent tasks will not be executed (i.e, a `retry_strategy` of NONE will be applied).
            &quot;condition&quot;: &quot;A String&quot;, # Optional. The string condition that will be evaluated to determine if the task should be retried with this failure policy.
            &quot;intervalTime&quot;: &quot;A String&quot;, # Required if retry_strategy is FIXED_INTERVAL or LINEAR/EXPONENTIAL_BACKOFF/RESTART_INTEGRATION_WITH_BACKOFF. Defines the initial interval in seconds for backoff.
            &quot;maxRetries&quot;: 42, # Required if retry_strategy is FIXED_INTERVAL or LINEAR/EXPONENTIAL_BACKOFF/RESTART_INTEGRATION_WITH_BACKOFF. Defines the number of times the task will be retried if failed.
            &quot;retryStrategy&quot;: &quot;A String&quot;, # Defines what happens to the task upon failure.
          },
        ],
      },
      &quot;description&quot;: &quot;A String&quot;, # Optional. User-provided description intended to give additional business context about the task.
      &quot;displayName&quot;: &quot;A String&quot;, # Optional. User-provided label that is attached to this TaskConfig in the UI.
      &quot;errorCatcherId&quot;: &quot;A String&quot;, # Optional. Optional Error catcher id of the error catch flow which will be executed when execution error happens in the task
      &quot;externalTaskType&quot;: &quot;A String&quot;, # Optional. External task type of the task
      &quot;failurePolicy&quot;: { # Policy that defines the task retry logic and failure type. If no FailurePolicy is defined for a task, all its dependent tasks will not be executed (i.e, a `retry_strategy` of NONE will be applied). # Optional. Determines the number of times the task will be retried on failure and with what retry strategy. This is applicable for asynchronous calls to Eventbus alone (Post To Queue, Schedule etc.).
        &quot;condition&quot;: &quot;A String&quot;, # Optional. The string condition that will be evaluated to determine if the task should be retried with this failure policy.
        &quot;intervalTime&quot;: &quot;A String&quot;, # Required if retry_strategy is FIXED_INTERVAL or LINEAR/EXPONENTIAL_BACKOFF/RESTART_INTEGRATION_WITH_BACKOFF. Defines the initial interval in seconds for backoff.
        &quot;maxRetries&quot;: 42, # Required if retry_strategy is FIXED_INTERVAL or LINEAR/EXPONENTIAL_BACKOFF/RESTART_INTEGRATION_WITH_BACKOFF. Defines the number of times the task will be retried if failed.
        &quot;retryStrategy&quot;: &quot;A String&quot;, # Defines what happens to the task upon failure.
      },
      &quot;jsonValidationOption&quot;: &quot;A String&quot;, # Optional. If set, overrides the option configured in the Task implementation class.
      &quot;nextTasks&quot;: [ # Optional. The set of tasks that are next in line to be executed as per the execution graph defined for the parent event, specified by `event_config_id`. Each of these next tasks are executed only if the condition associated with them evaluates to true.
        { # The task that is next in line to be executed, if the condition specified evaluated to true.
          &quot;condition&quot;: &quot;A String&quot;, # Standard filter expression for this task to become an eligible next task.
          &quot;description&quot;: &quot;A String&quot;, # User-provided description intended to give additional business context about the task.
          &quot;displayName&quot;: &quot;A String&quot;, # User-provided label that is attached to this edge in the UI.
          &quot;taskConfigId&quot;: &quot;A String&quot;, # ID of the next task.
          &quot;taskId&quot;: &quot;A String&quot;, # Task number of the next task.
        },
      ],
      &quot;nextTasksExecutionPolicy&quot;: &quot;A String&quot;, # Optional. The policy dictating the execution of the next set of tasks for the current task.
      &quot;parameters&quot;: { # Optional. The customized parameters the user can pass to this task.
        &quot;a_key&quot;: { # This message is used for processing and persisting (when applicable) key value pair parameters for each event in the event bus. Next available id: 4
          &quot;key&quot;: &quot;A String&quot;, # Key is used to retrieve the corresponding parameter value. This should be unique for a given fired event. These parameters must be predefined in the integration definition.
          &quot;masked&quot;: True or False, # True if this parameter should be masked in the logs
          &quot;value&quot;: { # The type of the parameter. # Values for the defined keys. Each value can either be string, int, double or any proto message.
            &quot;booleanArray&quot;: { # This message only contains a field of boolean array. # Boolean Array.
              &quot;booleanValues&quot;: [ # Boolean array.
                True or False,
              ],
            },
            &quot;booleanValue&quot;: True or False, # Boolean.
            &quot;doubleArray&quot;: { # This message only contains a field of double number array. # Double Number Array.
              &quot;doubleValues&quot;: [ # Double number array.
                3.14,
              ],
            },
            &quot;doubleValue&quot;: 3.14, # Double Number.
            &quot;intArray&quot;: { # This message only contains a field of integer array. # Integer Array.
              &quot;intValues&quot;: [ # Integer array.
                &quot;A String&quot;,
              ],
            },
            &quot;intValue&quot;: &quot;A String&quot;, # Integer.
            &quot;jsonValue&quot;: &quot;A String&quot;, # Json.
            &quot;stringArray&quot;: { # This message only contains a field of string array. # String Array.
              &quot;stringValues&quot;: [ # String array.
                &quot;A String&quot;,
              ],
            },
            &quot;stringValue&quot;: &quot;A String&quot;, # String.
          },
        },
      },
      &quot;position&quot;: { # Configuration detail of coordinate, it used for UI # Optional. Informs the front-end application where to draw this error catcher config on the UI.
        &quot;x&quot;: 42, # Required. X axis of the coordinate
        &quot;y&quot;: 42, # Required. Y axis of the coordinate
      },
      &quot;successPolicy&quot;: { # Policy that dictates the behavior for the task after it completes successfully. # Optional. Determines what action to take upon successful task completion.
        &quot;finalState&quot;: &quot;A String&quot;, # State to which the execution snapshot status will be set if the task succeeds.
      },
      &quot;synchronousCallFailurePolicy&quot;: { # Policy that defines the task retry logic and failure type. If no FailurePolicy is defined for a task, all its dependent tasks will not be executed (i.e, a `retry_strategy` of NONE will be applied). # Optional. Determines the number of times the task will be retried on failure and with what retry strategy. This is applicable for synchronous calls to Eventbus alone (Post).
        &quot;condition&quot;: &quot;A String&quot;, # Optional. The string condition that will be evaluated to determine if the task should be retried with this failure policy.
        &quot;intervalTime&quot;: &quot;A String&quot;, # Required if retry_strategy is FIXED_INTERVAL or LINEAR/EXPONENTIAL_BACKOFF/RESTART_INTEGRATION_WITH_BACKOFF. Defines the initial interval in seconds for backoff.
        &quot;maxRetries&quot;: 42, # Required if retry_strategy is FIXED_INTERVAL or LINEAR/EXPONENTIAL_BACKOFF/RESTART_INTEGRATION_WITH_BACKOFF. Defines the number of times the task will be retried if failed.
        &quot;retryStrategy&quot;: &quot;A String&quot;, # Defines what happens to the task upon failure.
      },
      &quot;task&quot;: &quot;A String&quot;, # Optional. The name for the task.
      &quot;taskExecutionStrategy&quot;: &quot;A String&quot;, # Optional. The policy dictating the execution strategy of this task.
      &quot;taskId&quot;: &quot;A String&quot;, # Required. The identifier of this task within its parent event config, specified by the client. This should be unique among all the tasks belong to the same event config. We use this field as the identifier to find next tasks (via field `next_tasks.task_id`).
      &quot;taskTemplate&quot;: &quot;A String&quot;, # Optional. Used to define task-template name if task is of type task-template
    },
  ],
  &quot;taskConfigsInternal&quot;: [ # Optional. Task configuration for the integration. It&#x27;s optional, but the integration doesn&#x27;t do anything without task_configs.
    { # The task configuration details. This is not the implementation of Task. There might be multiple TaskConfigs for the same Task.
      &quot;alertConfigs&quot;: [ # Alert configurations on error rate, warning rate, number of runs, durations, etc.
        { # Message to be used to configure alerting in the {@code TaskConfig} protos for tasks in an event.
          &quot;aggregationPeriod&quot;: &quot;A String&quot;, # The period over which the metric value should be aggregated and evaluated. Format is , where integer should be a positive integer and unit should be one of (s,m,h,d,w) meaning (second, minute, hour, day, week).
          &quot;alertDisabled&quot;: True or False, # Set to false by default. When set to true, the metrics are not aggregated or pushed to Monarch for this workflow alert.
          &quot;alertName&quot;: &quot;A String&quot;, # A name to identify this alert. This will be displayed in the alert subject. If set, this name should be unique in within the scope of the containing workflow.
          &quot;clientId&quot;: &quot;A String&quot;, # Client associated with this alert configuration. Must be a client enabled in one of the containing workflow&#x27;s triggers.
          &quot;durationThresholdMs&quot;: &quot;A String&quot;, # Should be specified only for TASK_AVERAGE_DURATION and TASK_PERCENTILE_DURATION metrics. This member should be used to specify what duration value the metrics should exceed for the alert to trigger.
          &quot;errorEnumList&quot;: { # List of error enums for alerts.
            &quot;enumStrings&quot;: [
              &quot;A String&quot;,
            ],
            &quot;filterType&quot;: &quot;A String&quot;,
          },
          &quot;metricType&quot;: &quot;A String&quot;,
          &quot;numAggregationPeriods&quot;: 42, # For how many contiguous aggregation periods should the expected min or max be violated for the alert to be fired.
          &quot;onlyFinalAttempt&quot;: True or False, # Only count final task attempts, not retries.
          &quot;playbookUrl&quot;: &quot;A String&quot;, # Link to a playbook for resolving the issue that triggered this alert.
          &quot;thresholdType&quot;: &quot;A String&quot;, # The threshold type for which this alert is being configured. If value falls below expected_min or exceeds expected_max, an alert will be fired.
          &quot;thresholdValue&quot;: { # The threshold value of the metric, above or below which the alert should be triggered. See EventAlertConfig or TaskAlertConfig for the different alert metric types in each case. For the *RATE metrics, one or both of these fields may be set. Zero is the default value and can be left at that. For *PERCENTILE_DURATION metrics, one or both of these fields may be set, and also, the duration threshold value should be specified in the threshold_duration_ms member below. For *AVERAGE_DURATION metrics, these fields should not be set at all. A different member, threshold_duration_ms, must be set in the EventAlertConfig or the TaskAlertConfig. # The metric value, above or below which the alert should be triggered.
            &quot;absolute&quot;: &quot;A String&quot;,
            &quot;percentage&quot;: 42,
          },
          &quot;warningEnumList&quot;: { # List of error enums for alerts.
            &quot;enumStrings&quot;: [
              &quot;A String&quot;,
            ],
            &quot;filterType&quot;: &quot;A String&quot;,
          },
        },
      ],
      &quot;conditionalFailurePolicies&quot;: { # Optional. Determines the number of times the task will be retried on failure and with what retry strategy. This is applicable for synchronous calls to Eventbus alone (Post).
        &quot;defaultFailurePolicy&quot;: { # Policy that defines the task retry logic and failure type. If no FailurePolicy is defined for a task, all its dependent tasks will not be executed (i.e, a `retry_strategy` of NONE will be applied). # The default failure policy to be applied if no conditional failure policy matches
          &quot;intervalInSeconds&quot;: &quot;A String&quot;, # Required if retry_strategy is FIXED_INTERVAL or LINEAR/EXPONENTIAL_BACKOFF/RESTART_WORKFLOW_WITH_BACKOFF. Defines the initial interval for backoff.
          &quot;maxNumRetries&quot;: 42, # Required if retry_strategy is FIXED_INTERVAL or LINEAR/EXPONENTIAL_BACKOFF/RESTART_WORKFLOW_WITH_BACKOFF. Defines the number of times the task will be retried if failed.
          &quot;retryCondition&quot;: &quot;A String&quot;, # Optional. The retry condition that will be evaluated for this failure policy with the corresponding retry strategy.
          &quot;retryStrategy&quot;: &quot;A String&quot;, # Defines what happens to the task upon failure.
        },
        &quot;failurePolicies&quot;: [ # The list of failure policies that will be applied to the task in order.
          { # Policy that defines the task retry logic and failure type. If no FailurePolicy is defined for a task, all its dependent tasks will not be executed (i.e, a `retry_strategy` of NONE will be applied).
            &quot;intervalInSeconds&quot;: &quot;A String&quot;, # Required if retry_strategy is FIXED_INTERVAL or LINEAR/EXPONENTIAL_BACKOFF/RESTART_WORKFLOW_WITH_BACKOFF. Defines the initial interval for backoff.
            &quot;maxNumRetries&quot;: 42, # Required if retry_strategy is FIXED_INTERVAL or LINEAR/EXPONENTIAL_BACKOFF/RESTART_WORKFLOW_WITH_BACKOFF. Defines the number of times the task will be retried if failed.
            &quot;retryCondition&quot;: &quot;A String&quot;, # Optional. The retry condition that will be evaluated for this failure policy with the corresponding retry strategy.
            &quot;retryStrategy&quot;: &quot;A String&quot;, # Defines what happens to the task upon failure.
          },
        ],
      },
      &quot;createTime&quot;: &quot;A String&quot;, # Auto-generated.
      &quot;creatorEmail&quot;: &quot;A String&quot;, # The creator&#x27;s email address. Auto-generated from the user&#x27;s email.
      &quot;description&quot;: &quot;A String&quot;, # User-provided description intended to give more business context about the task.
      &quot;disableStrictTypeValidation&quot;: True or False, # If this config contains a TypedTask, allow validation to succeed if an input is read from the output of another TypedTask whose output type is declared as a superclass of the requested input type. For instance, if the previous task declares an output of type Message, any task with this flag enabled will pass validation when attempting to read any proto Message type from the resultant Event parameter.
      &quot;errorCatcherId&quot;: &quot;A String&quot;, # Optional Error catcher id of the error catch flow which will be executed when execution error happens in the task
      &quot;externalTaskType&quot;: &quot;A String&quot;,
      &quot;failurePolicy&quot;: { # Policy that defines the task retry logic and failure type. If no FailurePolicy is defined for a task, all its dependent tasks will not be executed (i.e, a `retry_strategy` of NONE will be applied). # Optional. Determines the number of times the task will be retried on failure and with what retry strategy. This is applicable for asynchronous calls to Eventbus alone (Post To Queue, Schedule etc.).
        &quot;intervalInSeconds&quot;: &quot;A String&quot;, # Required if retry_strategy is FIXED_INTERVAL or LINEAR/EXPONENTIAL_BACKOFF/RESTART_WORKFLOW_WITH_BACKOFF. Defines the initial interval for backoff.
        &quot;maxNumRetries&quot;: 42, # Required if retry_strategy is FIXED_INTERVAL or LINEAR/EXPONENTIAL_BACKOFF/RESTART_WORKFLOW_WITH_BACKOFF. Defines the number of times the task will be retried if failed.
        &quot;retryCondition&quot;: &quot;A String&quot;, # Optional. The retry condition that will be evaluated for this failure policy with the corresponding retry strategy.
        &quot;retryStrategy&quot;: &quot;A String&quot;, # Defines what happens to the task upon failure.
      },
      &quot;incomingEdgeCount&quot;: 42, # The number of edges leading into this TaskConfig.
      &quot;jsonValidationOption&quot;: &quot;A String&quot;, # If set, overrides the option configured in the Task implementation class.
      &quot;label&quot;: &quot;A String&quot;, # User-provided label that is attached to this TaskConfig in the UI.
      &quot;lastModifiedTime&quot;: &quot;A String&quot;, # Auto-generated.
      &quot;nextTasks&quot;: [ # The set of tasks that are next in line to be executed as per the execution graph defined for the parent event, specified by `event_config_id`. Each of these next tasks are executed only if the condition associated with them evaluates to true.
        { # The task that is next in line to be executed, if the condition specified evaluated to true.
          &quot;combinedConditions&quot;: [ # Combined condition for this task to become an eligible next task. Each of these combined_conditions are joined with logical OR. DEPRECATED: use `condition`
            { # This message recursively combines constituent conditions using logical AND.
              &quot;conditions&quot;: [ # A set of individual constituent conditions.
                { # Condition that uses `operator` to evaluate the key against the value.
                  &quot;eventPropertyKey&quot;: &quot;A String&quot;, # Key that&#x27;s evaluated against the `value`. Please note the data type of the runtime value associated with the key should match the data type of `value`, else an IllegalArgumentException is thrown.
                  &quot;operator&quot;: &quot;A String&quot;, # Operator used to evaluate the condition. Please note that an operator with an inappropriate key/value operand will result in IllegalArgumentException, e.g. CONTAINS with boolean key/value pair.
                  &quot;value&quot;: { # Used for define type for values. Currently supported value types include int, string, double, array, and any proto message. # Value that&#x27;s checked for the key.
                    &quot;booleanValue&quot;: True or False,
                    &quot;doubleArray&quot;: {
                      &quot;values&quot;: [
                        3.14,
                      ],
                    },
                    &quot;doubleValue&quot;: 3.14,
                    &quot;intArray&quot;: {
                      &quot;values&quot;: [
                        &quot;A String&quot;,
                      ],
                    },
                    &quot;intValue&quot;: &quot;A String&quot;,
                    &quot;protoValue&quot;: {
                      &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
                    },
                    &quot;stringArray&quot;: {
                      &quot;values&quot;: [
                        &quot;A String&quot;,
                      ],
                    },
                    &quot;stringValue&quot;: &quot;A String&quot;,
                  },
                },
              ],
            },
          ],
          &quot;condition&quot;: &quot;A String&quot;, # Standard filter expression for this task to become an eligible next task.
          &quot;description&quot;: &quot;A String&quot;, # User-provided description intended to give more business context about the next task edge or condition.
          &quot;label&quot;: &quot;A String&quot;, # User-provided label that is attached to this edge in the UI.
          &quot;taskConfigId&quot;: &quot;A String&quot;, # ID of the next task.
          &quot;taskNumber&quot;: &quot;A String&quot;, # Task number of the next task.
        },
      ],
      &quot;nextTasksExecutionPolicy&quot;: &quot;A String&quot;, # The policy dictating the execution of the next set of tasks for the current task.
      &quot;parameters&quot;: { # The customized parameters the user can pass to this task.
        &quot;a_key&quot;: { # Key-value pair of EventBus parameters.
          &quot;dataType&quot;: &quot;A String&quot;, # Explicitly getting the type of the parameter.
          &quot;key&quot;: &quot;A String&quot;, # Key is used to retrieve the corresponding parameter value. This should be unique for a given fired event. These parameters must be predefined in the workflow definition.
          &quot;masked&quot;: True or False, # True if this parameter should be masked in the logs
          &quot;value&quot;: { # To support various types of parameter values. Next available id: 14 # Values for the defined keys. Each value can either be string, int, double or any proto message.
            &quot;booleanArray&quot;: {
              &quot;booleanValues&quot;: [
                True or False,
              ],
            },
            &quot;booleanValue&quot;: True or False,
            &quot;doubleArray&quot;: {
              &quot;doubleValues&quot;: [
                3.14,
              ],
            },
            &quot;doubleValue&quot;: 3.14,
            &quot;intArray&quot;: {
              &quot;intValues&quot;: [
                &quot;A String&quot;,
              ],
            },
            &quot;intValue&quot;: &quot;A String&quot;,
            &quot;jsonValue&quot;: &quot;A String&quot;,
            &quot;protoArray&quot;: {
              &quot;protoValues&quot;: [
                {
                  &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
                },
              ],
            },
            &quot;protoValue&quot;: {
              &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
            },
            &quot;serializedObjectValue&quot;: {
              &quot;objectValue&quot;: &quot;A String&quot;,
            },
            &quot;stringArray&quot;: {
              &quot;stringValues&quot;: [
                &quot;A String&quot;,
              ],
            },
            &quot;stringValue&quot;: &quot;A String&quot;,
          },
        },
      },
      &quot;position&quot;: { # Represents two-dimensional positions. # Optional. Informs the front-end application where to draw this task config on the UI.
        &quot;x&quot;: 42,
        &quot;y&quot;: 42,
      },
      &quot;precondition&quot;: &quot;A String&quot;, # Optional. Standard filter expression evaluated before execution. Independent of other conditions and tasks. Can be used to enable rollout. e.g. &quot;rollout(5)&quot; will only allow 5% of incoming traffic to task.
      &quot;preconditionLabel&quot;: &quot;A String&quot;, # Optional. User-provided label that is attached to precondition in the UI.
      &quot;rollbackStrategy&quot;: { # Next available id: 4 # Optional. Contains information about what needs to be done upon failure (either a permanent error or after it has been retried too many times).
        &quot;parameters&quot;: { # LINT.IfChange This message is used for processing and persisting (when applicable) key value pair parameters for each event in the event bus. Please see # Optional. The customized parameters the user can pass to this task.
          &quot;parameters&quot;: [ # Parameters are a part of Event and can be used to communicate between different tasks that are part of the same workflow execution.
            { # Key-value pair of EventBus parameters.
              &quot;dataType&quot;: &quot;A String&quot;, # Explicitly getting the type of the parameter.
              &quot;key&quot;: &quot;A String&quot;, # Key is used to retrieve the corresponding parameter value. This should be unique for a given fired event. These parameters must be predefined in the workflow definition.
              &quot;masked&quot;: True or False, # True if this parameter should be masked in the logs
              &quot;value&quot;: { # To support various types of parameter values. Next available id: 14 # Values for the defined keys. Each value can either be string, int, double or any proto message.
                &quot;booleanArray&quot;: {
                  &quot;booleanValues&quot;: [
                    True or False,
                  ],
                },
                &quot;booleanValue&quot;: True or False,
                &quot;doubleArray&quot;: {
                  &quot;doubleValues&quot;: [
                    3.14,
                  ],
                },
                &quot;doubleValue&quot;: 3.14,
                &quot;intArray&quot;: {
                  &quot;intValues&quot;: [
                    &quot;A String&quot;,
                  ],
                },
                &quot;intValue&quot;: &quot;A String&quot;,
                &quot;jsonValue&quot;: &quot;A String&quot;,
                &quot;protoArray&quot;: {
                  &quot;protoValues&quot;: [
                    {
                      &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
                    },
                  ],
                },
                &quot;protoValue&quot;: {
                  &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
                },
                &quot;serializedObjectValue&quot;: {
                  &quot;objectValue&quot;: &quot;A String&quot;,
                },
                &quot;stringArray&quot;: {
                  &quot;stringValues&quot;: [
                    &quot;A String&quot;,
                  ],
                },
                &quot;stringValue&quot;: &quot;A String&quot;,
              },
            },
          ],
        },
        &quot;rollbackTaskImplementationClassName&quot;: &quot;A String&quot;, # Required. This is the name of the task that needs to be executed upon rollback of this task.
        &quot;taskNumbersToRollback&quot;: [ # Required. These are the tasks numbers of the tasks whose `rollback_strategy.rollback_task_implementation_class_name` needs to be executed upon failure of this task.
          &quot;A String&quot;,
        ],
      },
      &quot;successPolicy&quot;: { # Policy that dictates the behavior for the task after it completes successfully. # Determines what action to take upon successful task completion.
        &quot;finalState&quot;: &quot;A String&quot;, # State to which the execution snapshot status will be set if the task succeeds.
      },
      &quot;synchronousCallFailurePolicy&quot;: { # Policy that defines the task retry logic and failure type. If no FailurePolicy is defined for a task, all its dependent tasks will not be executed (i.e, a `retry_strategy` of NONE will be applied). # Optional. Determines the number of times the task will be retried on failure and with what retry strategy. This is applicable for synchronous calls to Eventbus alone (Post).
        &quot;intervalInSeconds&quot;: &quot;A String&quot;, # Required if retry_strategy is FIXED_INTERVAL or LINEAR/EXPONENTIAL_BACKOFF/RESTART_WORKFLOW_WITH_BACKOFF. Defines the initial interval for backoff.
        &quot;maxNumRetries&quot;: 42, # Required if retry_strategy is FIXED_INTERVAL or LINEAR/EXPONENTIAL_BACKOFF/RESTART_WORKFLOW_WITH_BACKOFF. Defines the number of times the task will be retried if failed.
        &quot;retryCondition&quot;: &quot;A String&quot;, # Optional. The retry condition that will be evaluated for this failure policy with the corresponding retry strategy.
        &quot;retryStrategy&quot;: &quot;A String&quot;, # Defines what happens to the task upon failure.
      },
      &quot;taskEntity&quot;: { # Contains a task&#x27;s metadata and associated information. Next available id: 7 # Copy of the task entity that this task config is an instance of.
        &quot;disabledForVpcSc&quot;: True or False, # True if the task has conflict with vpcsc
        &quot;metadata&quot;: { # TaskMetadata are attributes that are associated to every common Task we have. # Metadata inclueds the task name, author and so on.
          &quot;activeTaskName&quot;: &quot;A String&quot;, # The new task name to replace the current task if it is deprecated. Otherwise, it is the same as the current task name.
          &quot;admins&quot;: [
            { # Admins are owners of a Task, and have all permissions on a particular task identified by the task name. By default, Eventbus periodically scans all task metadata and syncs (adds) any new admins defined here to Zanzibar.
              &quot;googleGroupEmail&quot;: &quot;A String&quot;,
              &quot;userEmail&quot;: &quot;A String&quot;,
            },
          ],
          &quot;category&quot;: &quot;A String&quot;,
          &quot;codeSearchLink&quot;: &quot;A String&quot;, # The Code Search link to the Task Java file.
          &quot;defaultJsonValidationOption&quot;: &quot;A String&quot;, # Controls whether JSON workflow parameters are validated against provided schemas before and/or after this task&#x27;s execution.
          &quot;defaultSpec&quot;: &quot;A String&quot;, # Contains the initial configuration of the task with default values set. For now, The string should be compatible to an ASCII-proto format.
          &quot;description&quot;: &quot;A String&quot;, # In a few sentences, describe the purpose and usage of the task.
          &quot;descriptiveName&quot;: &quot;A String&quot;, # The string name to show on the task list on the Workflow editor screen. This should be a very short, one to two words name for the task. (e.g. &quot;Send Mail&quot;)
          &quot;docMarkdown&quot;: &quot;A String&quot;, # Snippet of markdown documentation to embed in the RHP for this task.
          &quot;externalCategory&quot;: &quot;A String&quot;,
          &quot;externalCategorySequence&quot;: 42, # Sequence with which the task in specific category to be displayed in task discovery panel for external users.
          &quot;externalDocHtml&quot;: &quot;A String&quot;, # External-facing documention embedded in the RHP for this task.
          &quot;externalDocLink&quot;: &quot;A String&quot;, # Doc link for external-facing documentation (separate from g3doc).
          &quot;externalDocMarkdown&quot;: &quot;A String&quot;, # DEPRECATED: Use external_doc_html.
          &quot;g3DocLink&quot;: &quot;A String&quot;, # URL to the associated G3 Doc for the task if available
          &quot;iconLink&quot;: &quot;A String&quot;, # URL to gstatic image icon for this task. This icon shows up on the task list panel along with the task name in the Workflow Editor screen. Use the 24p, 2x, gray color icon image format.
          &quot;isDeprecated&quot;: True or False, # The deprecation status of the current task. Default value is false;
          &quot;name&quot;: &quot;A String&quot;, # The actual class name or the annotated name of the task. Task Author should initialize this field with value from the getName() method of the Task class.
          &quot;standaloneExternalDocHtml&quot;: &quot;A String&quot;, # External-facing documention for standalone IP in pantheon embedded in the RHP for this task. Non null only if different from external_doc_html
          &quot;status&quot;: &quot;A String&quot;, # Allows author to indicate if the task is ready to use or not. If not set, then it will default to INACTIVE.
          &quot;system&quot;: &quot;A String&quot;,
          &quot;tags&quot;: [ # A set of tags that pertain to a particular task. This can be used to improve the searchability of tasks with several names (&quot;REST Caller&quot; vs. &quot;Call REST Endpoint&quot;) or to help users find tasks based on related words.
            &quot;A String&quot;,
          ],
        },
        &quot;paramSpecs&quot;: { # Declarations for inputs/outputs for a TypedTask. This is also associated with the METADATA mask.
          &quot;parameters&quot;: [
            { # Key-value pair of EventBus task parameters. Next id: 13
              &quot;className&quot;: &quot;A String&quot;, # The FQCN of the Java object this represents. A string, for example, would be &quot;java.lang.String&quot;. If this is &quot;java.lang.Object&quot;, the parameter can be of any type.
              &quot;collectionElementClassName&quot;: &quot;A String&quot;, # If it is a collection of objects, this would be the FCQN of every individual element in the collection. If this is &quot;java.lang.Object&quot;, the parameter is a collection of any type.
              &quot;config&quot;: { # Optional fields, such as help text and other useful info.
                &quot;descriptivePhrase&quot;: &quot;A String&quot;, # A short phrase to describe what this parameter contains.
                &quot;helpText&quot;: &quot;A String&quot;, # Detailed help text for this parameter containing information not provided elsewhere. For example, instructions on how to migrate from a deprecated parameter.
                &quot;hideDefaultValue&quot;: True or False, # Whether the default value is hidden in the UI.
                &quot;inputDisplayOption&quot;: &quot;A String&quot;,
                &quot;isHidden&quot;: True or False, # Whether this field is hidden in the UI.
                &quot;label&quot;: &quot;A String&quot;, # A user-friendly label for the parameter.
                &quot;parameterNameOption&quot;: &quot;A String&quot;,
                &quot;subSectionLabel&quot;: &quot;A String&quot;, # A user-friendly label for subSection under which the parameter will be displayed.
                &quot;uiPlaceholderText&quot;: &quot;A String&quot;, # Placeholder text which will appear in the UI input form for this parameter.
              },
              &quot;dataType&quot;: &quot;A String&quot;, # The data type of the parameter.
              &quot;defaultValue&quot;: { # To support various types of parameter values. Next available id: 14 # Default values for the defined keys. Each value can either be string, int, double or any proto message or a serialized object.
                &quot;booleanArray&quot;: {
                  &quot;booleanValues&quot;: [
                    True or False,
                  ],
                },
                &quot;booleanValue&quot;: True or False,
                &quot;doubleArray&quot;: {
                  &quot;doubleValues&quot;: [
                    3.14,
                  ],
                },
                &quot;doubleValue&quot;: 3.14,
                &quot;intArray&quot;: {
                  &quot;intValues&quot;: [
                    &quot;A String&quot;,
                  ],
                },
                &quot;intValue&quot;: &quot;A String&quot;,
                &quot;jsonValue&quot;: &quot;A String&quot;,
                &quot;protoArray&quot;: {
                  &quot;protoValues&quot;: [
                    {
                      &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
                    },
                  ],
                },
                &quot;protoValue&quot;: {
                  &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
                },
                &quot;serializedObjectValue&quot;: {
                  &quot;objectValue&quot;: &quot;A String&quot;,
                },
                &quot;stringArray&quot;: {
                  &quot;stringValues&quot;: [
                    &quot;A String&quot;,
                  ],
                },
                &quot;stringValue&quot;: &quot;A String&quot;,
              },
              &quot;isDeprecated&quot;: True or False, # If set, this entry is deprecated, so further use of this parameter should be prohibited.
              &quot;isOutput&quot;: True or False,
              &quot;jsonSchema&quot;: &quot;A String&quot;, # If the data_type is JSON_VALUE, then this will define its schema.
              &quot;key&quot;: &quot;A String&quot;, # Key is used to retrieve the corresponding parameter value. This should be unique for a given task. These parameters must be predefined in the workflow definition.
              &quot;protoDef&quot;: { # Populated if this represents a proto or proto array.
                &quot;fullName&quot;: &quot;A String&quot;, # The fully-qualified proto name. This message, for example, would be &quot;enterprise.crm.eventbus.proto.ParamSpecEntry.ProtoDefinition&quot;.
                &quot;path&quot;: &quot;A String&quot;, # Path to the proto file that contains the message type&#x27;s definition.
              },
              &quot;required&quot;: True or False, # If set, the user must provide an input value for this parameter.
              &quot;validationRule&quot;: { # Rule used to validate inputs (individual values and collection elements) for this parameter.
                &quot;doubleRange&quot;: { # Range used to validate doubles and floats.
                  &quot;max&quot;: 3.14, # The inclusive maximum of the acceptable range.
                  &quot;min&quot;: 3.14, # The inclusive minimum of the acceptable range.
                },
                &quot;intRange&quot;: { # Range used to validate longs and ints.
                  &quot;max&quot;: &quot;A String&quot;, # The inclusive maximum of the acceptable range.
                  &quot;min&quot;: &quot;A String&quot;, # The inclusive minimum of the acceptable range.
                },
                &quot;stringRegex&quot;: { # Rule used to validate strings.
                  &quot;exclusive&quot;: True or False, # Whether the regex matcher is applied exclusively (if true, matching values will be rejected).
                  &quot;regex&quot;: &quot;A String&quot;, # The regex applied to the input value(s).
                },
              },
            },
          ],
        },
        &quot;stats&quot;: { # Stats for the requested dimensions: QPS, duration, and error/warning rate # Deprecated - statistics from the Monarch query.
          &quot;dimensions&quot;: { # Dimensions that these stats have been aggregated on.
            &quot;clientId&quot;: &quot;A String&quot;,
            &quot;enumFilterType&quot;: &quot;A String&quot;, # Whether to include or exclude the enums matching the regex.
            &quot;errorEnumString&quot;: &quot;A String&quot;,
            &quot;retryAttempt&quot;: &quot;A String&quot;,
            &quot;taskName&quot;: &quot;A String&quot;,
            &quot;taskNumber&quot;: &quot;A String&quot;,
            &quot;triggerId&quot;: &quot;A String&quot;, # Stats have been or will be aggregated on set fields for any semantically-meaningful combination.
            &quot;warningEnumString&quot;: &quot;A String&quot;,
            &quot;workflowId&quot;: &quot;A String&quot;,
            &quot;workflowName&quot;: &quot;A String&quot;,
          },
          &quot;durationInSeconds&quot;: 3.14, # Average duration in seconds.
          &quot;errorRate&quot;: 3.14, # Average error rate.
          &quot;qps&quot;: 3.14, # Queries per second.
          &quot;warningRate&quot;: 3.14, # Average warning rate.
        },
        &quot;taskType&quot;: &quot;A String&quot;, # Defines the type of the task
        &quot;uiConfig&quot;: { # Task authors would use this type to configure the UI for a particular task by specifying what UI config modules should be included to compose the UI. Learn more about config module framework: # UI configuration for this task Also associated with the METADATA mask.
          &quot;taskUiModuleConfigs&quot;: [ # Configurations of included config modules.
            { # Task author would use this type to configure a config module.
              &quot;moduleId&quot;: &quot;A String&quot;, # ID of the config module.
            },
          ],
        },
      },
      &quot;taskExecutionStrategy&quot;: &quot;A String&quot;, # The policy dictating the execution strategy of this task.
      &quot;taskName&quot;: &quot;A String&quot;, # The name for the task.
      &quot;taskNumber&quot;: &quot;A String&quot;, # REQUIRED: the identifier of this task within its parent event config, specified by the client. This should be unique among all the tasks belong to the same event config. We use this field as the identifier to find next tasks (via field `next_tasks.task_number`).
      &quot;taskSpec&quot;: &quot;A String&quot;, # A string template that allows user to configure task parameters (with either literal default values or tokens which will be resolved at execution time) for the task. It will eventually replace the old &quot;parameters&quot; field.
      &quot;taskTemplateName&quot;: &quot;A String&quot;, # Used to define task-template name if task is of type task-template
      &quot;taskType&quot;: &quot;A String&quot;, # Defines the type of the task
    },
  ],
  &quot;teardown&quot;: { # Optional. Contains a graph of tasks that will be executed before putting the event in a terminal state (SUCCEEDED/FAILED/FATAL), regardless of success or failure, similar to &quot;finally&quot; in code.
    &quot;teardownTaskConfigs&quot;: [ # Required.
      {
        &quot;creatorEmail&quot;: &quot;A String&quot;, # The creator&#x27;s email address.
        &quot;name&quot;: &quot;A String&quot;, # Required. Unique identifier of the teardown task within this Config. We use this field as the identifier to find next teardown tasks.
        &quot;nextTeardownTask&quot;: { # The teardown task that is next in line to be executed. We support only sequential execution of teardown tasks (i.e. no branching).
          &quot;name&quot;: &quot;A String&quot;, # Required. Name of the next teardown task.
        },
        &quot;parameters&quot;: { # LINT.IfChange This message is used for processing and persisting (when applicable) key value pair parameters for each event in the event bus. Please see # The parameters the user can pass to this task.
          &quot;parameters&quot;: [ # Parameters are a part of Event and can be used to communicate between different tasks that are part of the same integration execution.
            { # Key-value pair of EventBus parameters.
              &quot;key&quot;: &quot;A String&quot;, # Key is used to retrieve the corresponding parameter value. This should be unique for a given fired event. These parameters must be predefined in the integration definition.
              &quot;masked&quot;: True or False, # True if this parameter should be masked in the logs
              &quot;value&quot;: { # LINT.IfChange To support various types of parameter values. Next available id: 14 # Values for the defined keys. Each value can either be string, int, double or any proto message.
                &quot;booleanArray&quot;: {
                  &quot;booleanValues&quot;: [
                    True or False,
                  ],
                },
                &quot;booleanValue&quot;: True or False,
                &quot;doubleArray&quot;: {
                  &quot;doubleValues&quot;: [
                    3.14,
                  ],
                },
                &quot;doubleValue&quot;: 3.14,
                &quot;intArray&quot;: {
                  &quot;intValues&quot;: [
                    &quot;A String&quot;,
                  ],
                },
                &quot;intValue&quot;: &quot;A String&quot;,
                &quot;protoArray&quot;: {
                  &quot;protoValues&quot;: [
                    {
                      &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
                    },
                  ],
                },
                &quot;protoValue&quot;: {
                  &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
                },
                &quot;serializedObjectValue&quot;: {
                  &quot;objectValue&quot;: &quot;A String&quot;,
                },
                &quot;stringArray&quot;: {
                  &quot;stringValues&quot;: [
                    &quot;A String&quot;,
                  ],
                },
                &quot;stringValue&quot;: &quot;A String&quot;,
              },
            },
          ],
        },
        &quot;properties&quot;: { # LINT.IfChange This message is used for storing key value pair properties for each Event / Task in the EventBus.
          &quot;properties&quot;: [ # An unordered list of property entries.
            { # Key-value pair of EventBus property.
              &quot;key&quot;: &quot;A String&quot;, # Key is used to retrieve the corresponding property value. This should be unique for a given fired event. The Tasks should be aware of the keys used while firing the events for them to be able to retrieve the values.
              &quot;value&quot;: { # Used for define type for values. Currently supported value types include int, string, double, array, and any proto message. # Values for the defined keys. Each value can either be string, int, double or any proto message.
                &quot;booleanValue&quot;: True or False,
                &quot;doubleArray&quot;: {
                  &quot;values&quot;: [
                    3.14,
                  ],
                },
                &quot;doubleValue&quot;: 3.14,
                &quot;intArray&quot;: {
                  &quot;values&quot;: [
                    &quot;A String&quot;,
                  ],
                },
                &quot;intValue&quot;: &quot;A String&quot;,
                &quot;protoValue&quot;: {
                  &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
                },
                &quot;stringArray&quot;: {
                  &quot;values&quot;: [
                    &quot;A String&quot;,
                  ],
                },
                &quot;stringValue&quot;: &quot;A String&quot;,
              },
            },
          ],
        },
        &quot;teardownTaskImplementationClassName&quot;: &quot;A String&quot;, # Required. Implementation class name.
      },
    ],
  },
  &quot;triggerConfigs&quot;: [ # Optional. Trigger configurations.
    { # Configuration detail of a trigger.
      &quot;alertConfig&quot;: [ # Optional. An alert threshold configuration for the [trigger + client + integration] tuple. If these values are not specified in the trigger config, default values will be populated by the system. Note that there must be exactly one alert threshold configured per [client + trigger + integration] when published.
        { # Message to be used to configure custom alerting in the {@code EventConfig} protos for an event.
          &quot;aggregationPeriod&quot;: &quot;A String&quot;, # The period over which the metric value should be aggregated and evaluated. Format is , where integer should be a positive integer and unit should be one of (s,m,h,d,w) meaning (second, minute, hour, day, week). For an EXPECTED_MIN threshold, this aggregation_period must be lesser than 24 hours.
          &quot;alertThreshold&quot;: 42, # For how many contiguous aggregation periods should the expected min or max be violated for the alert to be fired.
          &quot;disableAlert&quot;: True or False, # Set to false by default. When set to true, the metrics are not aggregated or pushed to Monarch for this integration alert.
          &quot;displayName&quot;: &quot;A String&quot;, # Name of the alert. This will be displayed in the alert subject. If set, this name should be unique within the scope of the integration.
          &quot;durationThreshold&quot;: &quot;A String&quot;, # Should be specified only for *AVERAGE_DURATION and *PERCENTILE_DURATION metrics. This member should be used to specify what duration value the metrics should exceed for the alert to trigger.
          &quot;metricType&quot;: &quot;A String&quot;, # The type of metric.
          &quot;onlyFinalAttempt&quot;: True or False, # For either events or tasks, depending on the type of alert, count only final attempts, not retries.
          &quot;thresholdType&quot;: &quot;A String&quot;, # The threshold type, whether lower(expected_min) or upper(expected_max), for which this alert is being configured. If value falls below expected_min or exceeds expected_max, an alert will be fired.
          &quot;thresholdValue&quot;: { # The threshold value of the metric, above or below which the alert should be triggered. See EventAlertConfig or TaskAlertConfig for the different alert metric types in each case. For the *RATE metrics, one or both of these fields may be set. Zero is the default value and can be left at that. For *PERCENTILE_DURATION metrics, one or both of these fields may be set, and also, the duration threshold value should be specified in the threshold_duration_ms member below. For *AVERAGE_DURATION metrics, these fields should not be set at all. A different member, threshold_duration_ms, must be set in the EventAlertConfig or the TaskAlertConfig. # The metric value, above or below which the alert should be triggered.
            &quot;absolute&quot;: &quot;A String&quot;, # Absolute value threshold.
            &quot;percentage&quot;: 42, # Percentage threshold.
          },
        },
      ],
      &quot;cloudSchedulerConfig&quot;: { # Cloud Scheduler Trigger configuration # Optional. Cloud Scheduler Trigger related metadata
        &quot;cronTab&quot;: &quot;A String&quot;, # Required. The cron tab of cloud scheduler trigger.
        &quot;errorMessage&quot;: &quot;A String&quot;, # Optional. When the job was deleted from Pantheon UI, error_message will be populated when Get/List integrations
        &quot;location&quot;: &quot;A String&quot;, # Required. The location where associated cloud scheduler job will be created
        &quot;serviceAccountEmail&quot;: &quot;A String&quot;, # Required. Service account used by Cloud Scheduler to trigger the integration at scheduled time
      },
      &quot;description&quot;: &quot;A String&quot;, # Optional. User-provided description intended to give additional business context about the task.
      &quot;errorCatcherId&quot;: &quot;A String&quot;, # Optional. Optional Error catcher id of the error catch flow which will be executed when execution error happens in the task
      &quot;inputVariables&quot;: { # Variables names mapped to api trigger. # Optional. List of input variables for the api trigger.
        &quot;names&quot;: [ # Optional. List of variable names.
          &quot;A String&quot;,
        ],
      },
      &quot;label&quot;: &quot;A String&quot;, # Optional. The user created label for a particular trigger.
      &quot;nextTasksExecutionPolicy&quot;: &quot;A String&quot;, # Optional. Dictates how next tasks will be executed.
      &quot;outputVariables&quot;: { # Variables names mapped to api trigger. # Optional. List of output variables for the api trigger.
        &quot;names&quot;: [ # Optional. List of variable names.
          &quot;A String&quot;,
        ],
      },
      &quot;position&quot;: { # Configuration detail of coordinate, it used for UI # Optional. Informs the front-end application where to draw this error catcher config on the UI.
        &quot;x&quot;: 42, # Required. X axis of the coordinate
        &quot;y&quot;: 42, # Required. Y axis of the coordinate
      },
      &quot;properties&quot;: { # Optional. Configurable properties of the trigger, not to be confused with integration parameters. E.g. &quot;name&quot; is a property for API triggers and &quot;subscription&quot; is a property for Pub/sub triggers.
        &quot;a_key&quot;: &quot;A String&quot;,
      },
      &quot;startTasks&quot;: [ # Optional. Set of tasks numbers from where the integration execution is started by this trigger. If this is empty, then integration is executed with default start tasks. In the list of start tasks, none of two tasks can have direct ancestor-descendant relationships (i.e. in a same integration execution graph).
        { # The task that is next in line to be executed, if the condition specified evaluated to true.
          &quot;condition&quot;: &quot;A String&quot;, # Standard filter expression for this task to become an eligible next task.
          &quot;description&quot;: &quot;A String&quot;, # User-provided description intended to give additional business context about the task.
          &quot;displayName&quot;: &quot;A String&quot;, # User-provided label that is attached to this edge in the UI.
          &quot;taskConfigId&quot;: &quot;A String&quot;, # ID of the next task.
          &quot;taskId&quot;: &quot;A String&quot;, # Task number of the next task.
        },
      ],
      &quot;trigger&quot;: &quot;A String&quot;, # Optional. Name of the trigger. Example: &quot;API Trigger&quot;, &quot;Cloud Pub Sub Trigger&quot; When set will be sent out to monitoring dashabord for tracking purpose.
      &quot;triggerId&quot;: &quot;A String&quot;, # Optional. Auto-generated trigger ID. The ID is based on the properties that you define in the trigger config. For example, for an API trigger, the trigger ID follows the format: api_trigger/TRIGGER_NAME Where trigger config has properties with value {&quot;Trigger name&quot;: TRIGGER_NAME}
      &quot;triggerNumber&quot;: &quot;A String&quot;, # Required. A number to uniquely identify each trigger config within the integration on UI.
      &quot;triggerType&quot;: &quot;A String&quot;, # Optional. Type of trigger
    },
  ],
  &quot;triggerConfigsInternal&quot;: [ # Optional. Trigger configurations.
    { # Configuration detail of a trigger. Next available id: 22
      &quot;alertConfig&quot;: [ # An alert threshold configuration for the [trigger + client + workflow] tuple. If these values are not specified in the trigger config, default values will be populated by the system. Note that there must be exactly one alert threshold configured per [client + trigger + workflow] when published.
        { # Message to be used to configure custom alerting in the {@code EventConfig} protos for an event.
          &quot;aggregationPeriod&quot;: &quot;A String&quot;, # For an EXPECTED_MIN threshold, this aggregation_period must be lesser than 24 hours.
          &quot;alertDisabled&quot;: True or False, # Set to false by default. When set to true, the metrics are not aggregated or pushed to Monarch for this workflow alert.
          &quot;alertName&quot;: &quot;A String&quot;, # A name to identify this alert. This will be displayed in the alert subject. If set, this name should be unique within the scope of the workflow.
          &quot;clientId&quot;: &quot;A String&quot;, # Client associated with this alert configuration.
          &quot;durationThresholdMs&quot;: &quot;A String&quot;, # Should be specified only for *AVERAGE_DURATION and *PERCENTILE_DURATION metrics. This member should be used to specify what duration value the metrics should exceed for the alert to trigger.
          &quot;errorEnumList&quot;: { # List of error enums for alerts.
            &quot;enumStrings&quot;: [
              &quot;A String&quot;,
            ],
            &quot;filterType&quot;: &quot;A String&quot;,
          },
          &quot;metricType&quot;: &quot;A String&quot;,
          &quot;numAggregationPeriods&quot;: 42, # For how many contiguous aggregation periods should the expected min or max be violated for the alert to be fired.
          &quot;onlyFinalAttempt&quot;: True or False, # For either events or tasks, depending on the type of alert, count only final attempts, not retries.
          &quot;playbookUrl&quot;: &quot;A String&quot;, # Link to a playbook for resolving the issue that triggered this alert.
          &quot;thresholdType&quot;: &quot;A String&quot;, # The threshold type, whether lower(expected_min) or upper(expected_max), for which this alert is being configured. If value falls below expected_min or exceeds expected_max, an alert will be fired.
          &quot;thresholdValue&quot;: { # The threshold value of the metric, above or below which the alert should be triggered. See EventAlertConfig or TaskAlertConfig for the different alert metric types in each case. For the *RATE metrics, one or both of these fields may be set. Zero is the default value and can be left at that. For *PERCENTILE_DURATION metrics, one or both of these fields may be set, and also, the duration threshold value should be specified in the threshold_duration_ms member below. For *AVERAGE_DURATION metrics, these fields should not be set at all. A different member, threshold_duration_ms, must be set in the EventAlertConfig or the TaskAlertConfig. # The metric value, above or below which the alert should be triggered.
            &quot;absolute&quot;: &quot;A String&quot;,
            &quot;percentage&quot;: 42,
          },
          &quot;warningEnumList&quot;: { # List of error enums for alerts.
            &quot;enumStrings&quot;: [
              &quot;A String&quot;,
            ],
            &quot;filterType&quot;: &quot;A String&quot;,
          },
        },
      ],
      &quot;cloudSchedulerConfig&quot;: { # Cloud Scheduler Trigger configuration
        &quot;cronTab&quot;: &quot;A String&quot;, # Required. The cron tab of cloud scheduler trigger.
        &quot;errorMessage&quot;: &quot;A String&quot;, # Optional. When the job was deleted from Pantheon UI, error_message will be populated when Get/List integrations
        &quot;location&quot;: &quot;A String&quot;, # Required. The location where associated cloud scheduler job will be created
        &quot;serviceAccountEmail&quot;: &quot;A String&quot;, # Required. Service account used by Cloud Scheduler to trigger the integration at scheduled time
      },
      &quot;description&quot;: &quot;A String&quot;, # User-provided description intended to give more business context about the task.
      &quot;enabledClients&quot;: [ # Required. The list of client ids which are enabled to execute the workflow using this trigger. In other words, these clients have the workflow execution privledges for this trigger. For API trigger, the client id in the incoming request is validated against the list of enabled clients. For non-API triggers, one workflow execution is triggered on behalf of each enabled client.
        &quot;A String&quot;,
      ],
      &quot;errorCatcherId&quot;: &quot;A String&quot;, # Optional Error catcher id of the error catch flow which will be executed when execution error happens in the task
      &quot;inputVariables&quot;: { # Variables names mapped to api trigger. # Optional. List of input variables for the api trigger.
        &quot;names&quot;: [ # Optional. List of variable names.
          &quot;A String&quot;,
        ],
      },
      &quot;label&quot;: &quot;A String&quot;, # The user created label for a particular trigger.
      &quot;nextTasksExecutionPolicy&quot;: &quot;A String&quot;, # Dictates how next tasks will be executed.
      &quot;outputVariables&quot;: { # Variables names mapped to api trigger. # Optional. List of output variables for the api trigger.
        &quot;names&quot;: [ # Optional. List of variable names.
          &quot;A String&quot;,
        ],
      },
      &quot;pauseWorkflowExecutions&quot;: True or False, # Optional. If set to true, any upcoming requests for this trigger config will be paused and the executions will be resumed later when the flag is reset. The workflow to which this trigger config belongs has to be in ACTIVE status for the executions to be paused or resumed.
      &quot;position&quot;: { # Represents two-dimensional positions. # Optional. Informs the front-end application where to draw this trigger config on the UI.
        &quot;x&quot;: 42,
        &quot;y&quot;: 42,
      },
      &quot;properties&quot;: { # Configurable properties of the trigger, not to be confused with workflow parameters. E.g. &quot;name&quot; is a property for API triggers and &quot;subscription&quot; is a property for Cloud Pubsub triggers.
        &quot;a_key&quot;: &quot;A String&quot;,
      },
      &quot;startTasks&quot;: [ # Set of tasks numbers from where the workflow execution is started by this trigger. If this is empty, then workflow is executed with default start tasks. In the list of start tasks, none of two tasks can have direct ancestor-descendant relationships (i.e. in a same workflow execution graph).
        { # The task that is next in line to be executed, if the condition specified evaluated to true.
          &quot;combinedConditions&quot;: [ # Combined condition for this task to become an eligible next task. Each of these combined_conditions are joined with logical OR. DEPRECATED: use `condition`
            { # This message recursively combines constituent conditions using logical AND.
              &quot;conditions&quot;: [ # A set of individual constituent conditions.
                { # Condition that uses `operator` to evaluate the key against the value.
                  &quot;eventPropertyKey&quot;: &quot;A String&quot;, # Key that&#x27;s evaluated against the `value`. Please note the data type of the runtime value associated with the key should match the data type of `value`, else an IllegalArgumentException is thrown.
                  &quot;operator&quot;: &quot;A String&quot;, # Operator used to evaluate the condition. Please note that an operator with an inappropriate key/value operand will result in IllegalArgumentException, e.g. CONTAINS with boolean key/value pair.
                  &quot;value&quot;: { # Used for define type for values. Currently supported value types include int, string, double, array, and any proto message. # Value that&#x27;s checked for the key.
                    &quot;booleanValue&quot;: True or False,
                    &quot;doubleArray&quot;: {
                      &quot;values&quot;: [
                        3.14,
                      ],
                    },
                    &quot;doubleValue&quot;: 3.14,
                    &quot;intArray&quot;: {
                      &quot;values&quot;: [
                        &quot;A String&quot;,
                      ],
                    },
                    &quot;intValue&quot;: &quot;A String&quot;,
                    &quot;protoValue&quot;: {
                      &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
                    },
                    &quot;stringArray&quot;: {
                      &quot;values&quot;: [
                        &quot;A String&quot;,
                      ],
                    },
                    &quot;stringValue&quot;: &quot;A String&quot;,
                  },
                },
              ],
            },
          ],
          &quot;condition&quot;: &quot;A String&quot;, # Standard filter expression for this task to become an eligible next task.
          &quot;description&quot;: &quot;A String&quot;, # User-provided description intended to give more business context about the next task edge or condition.
          &quot;label&quot;: &quot;A String&quot;, # User-provided label that is attached to this edge in the UI.
          &quot;taskConfigId&quot;: &quot;A String&quot;, # ID of the next task.
          &quot;taskNumber&quot;: &quot;A String&quot;, # Task number of the next task.
        },
      ],
      &quot;triggerCriteria&quot;: { # Optional. When set, Eventbus will run the task specified in the trigger_criteria and validate the result using the trigger_criteria.condition, and only execute the workflow when result is true.
        &quot;condition&quot;: &quot;A String&quot;, # Required. Standard filter expression, when true the workflow will be executed. If there&#x27;s no trigger_criteria_task_implementation_class_name specified, the condition will be validated directly.
        &quot;parameters&quot;: { # LINT.IfChange This message is used for processing and persisting (when applicable) key value pair parameters for each event in the event bus. Please see # Optional. To be used in TaskConfig for the implementation class.
          &quot;parameters&quot;: [ # Parameters are a part of Event and can be used to communicate between different tasks that are part of the same integration execution.
            { # Key-value pair of EventBus parameters.
              &quot;key&quot;: &quot;A String&quot;, # Key is used to retrieve the corresponding parameter value. This should be unique for a given fired event. These parameters must be predefined in the integration definition.
              &quot;masked&quot;: True or False, # True if this parameter should be masked in the logs
              &quot;value&quot;: { # LINT.IfChange To support various types of parameter values. Next available id: 14 # Values for the defined keys. Each value can either be string, int, double or any proto message.
                &quot;booleanArray&quot;: {
                  &quot;booleanValues&quot;: [
                    True or False,
                  ],
                },
                &quot;booleanValue&quot;: True or False,
                &quot;doubleArray&quot;: {
                  &quot;doubleValues&quot;: [
                    3.14,
                  ],
                },
                &quot;doubleValue&quot;: 3.14,
                &quot;intArray&quot;: {
                  &quot;intValues&quot;: [
                    &quot;A String&quot;,
                  ],
                },
                &quot;intValue&quot;: &quot;A String&quot;,
                &quot;protoArray&quot;: {
                  &quot;protoValues&quot;: [
                    {
                      &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
                    },
                  ],
                },
                &quot;protoValue&quot;: {
                  &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
                },
                &quot;serializedObjectValue&quot;: {
                  &quot;objectValue&quot;: &quot;A String&quot;,
                },
                &quot;stringArray&quot;: {
                  &quot;stringValues&quot;: [
                    &quot;A String&quot;,
                  ],
                },
                &quot;stringValue&quot;: &quot;A String&quot;,
              },
            },
          ],
        },
        &quot;triggerCriteriaTaskImplementationClassName&quot;: &quot;A String&quot;, # Optional. Implementation class name. The class should implement the “TypedTask” interface.
      },
      &quot;triggerId&quot;: &quot;A String&quot;, # The backend trigger ID.
      &quot;triggerName&quot;: &quot;A String&quot;, # Optional. Name of the trigger This is added to identify the type of trigger. This is avoid the logic on triggerId to identify the trigger_type and push the same to monitoring.
      &quot;triggerNumber&quot;: &quot;A String&quot;, # Required. A number to uniquely identify each trigger config within the workflow on UI.
      &quot;triggerType&quot;: &quot;A String&quot;,
    },
  ],
  &quot;updateTime&quot;: &quot;A String&quot;, # Output only. Auto-generated.
  &quot;userLabel&quot;: &quot;A String&quot;, # Optional. A user-defined label that annotates an integration version. Typically, this is only set when the integration version is created.
}</pre>
</div>

<div class="method">
    <code class="details" id="publish">publish(name, body=None, x__xgafv=None)</code>
  <pre>This RPC throws an exception if the integration is in ARCHIVED or ACTIVE state. This RPC throws an exception if the version being published is DRAFT, and if the `locked_by` user is not the same as the user performing the Publish. Audit fields updated include last_published_timestamp, last_published_by, last_modified_timestamp, last_modified_by. Any existing lock is on this integration is released.

Args:
  name: string, Required. The version to publish. Format: projects/{project}/locations/{location}/integrations/{integration}/versions/{version} (required)
  body: object, The request body.
    The object takes the form of:

{ # Request for PublishIntegrationVersion.
  &quot;configParameters&quot;: { # Optional. Config parameters used during integration execution.
    &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
  },
}

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

Returns:
  An object of the form:

    { # Response for PublishIntegrationVersion.
}</pre>
</div>

<div class="method">
    <code class="details" id="test">test(name, body=None, x__xgafv=None)</code>
  <pre>Execute the integration in draft state

Args:
  name: string, Output only. Auto-generated primary key. (required)
  body: object, The request body.
    The object takes the form of:

{ # The request for testing an integration.
  &quot;clientId&quot;: &quot;A String&quot;, # Required. This is used to identify the client on whose behalf the event will be executed.
  &quot;configParameters&quot;: { # Optional. Config parameters used during integration execution.
    &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
  },
  &quot;deadlineSecondsTime&quot;: &quot;A String&quot;, # Optional. custom deadline of the rpc
  &quot;inputParameters&quot;: { # Optional. Input parameters used during integration execution.
    &quot;a_key&quot;: { # The type of the parameter.
      &quot;booleanArray&quot;: { # This message only contains a field of boolean array. # Boolean Array.
        &quot;booleanValues&quot;: [ # Boolean array.
          True or False,
        ],
      },
      &quot;booleanValue&quot;: True or False, # Boolean.
      &quot;doubleArray&quot;: { # This message only contains a field of double number array. # Double Number Array.
        &quot;doubleValues&quot;: [ # Double number array.
          3.14,
        ],
      },
      &quot;doubleValue&quot;: 3.14, # Double Number.
      &quot;intArray&quot;: { # This message only contains a field of integer array. # Integer Array.
        &quot;intValues&quot;: [ # Integer array.
          &quot;A String&quot;,
        ],
      },
      &quot;intValue&quot;: &quot;A String&quot;, # Integer.
      &quot;jsonValue&quot;: &quot;A String&quot;, # Json.
      &quot;stringArray&quot;: { # This message only contains a field of string array. # String Array.
        &quot;stringValues&quot;: [ # String array.
          &quot;A String&quot;,
        ],
      },
      &quot;stringValue&quot;: &quot;A String&quot;, # String.
    },
  },
  &quot;integrationVersion&quot;: { # The integration version definition. # Required. integration config to execute the workflow
    &quot;cloudKmsKey&quot;: &quot;A String&quot;, # Optional. Cloud KMS resource name for the CMEK encryption key.
    &quot;cloudLoggingDetails&quot;: { # Cloud Logging details for execution info # Optional. Cloud Logging details for the integration version
      &quot;cloudLoggingSeverity&quot;: &quot;A String&quot;, # Optional. Severity selected by the customer for the logs to be sent to Cloud Logging, for the integration version getting executed.
      &quot;enableCloudLogging&quot;: True or False, # Optional. Status of whether Cloud Logging is enabled or not for the integration version getting executed.
    },
    &quot;createTime&quot;: &quot;A String&quot;, # Output only. Auto-generated.
    &quot;createdFromTemplate&quot;: &quot;A String&quot;, # Optional. Optional. The resource name of the template from which the integration is created.
    &quot;databasePersistencePolicy&quot;: &quot;A String&quot;, # Optional. Flag to disable database persistence for execution data, including event execution info, execution export info, execution metadata index and execution param index.
    &quot;description&quot;: &quot;A String&quot;, # Optional. The integration description.
    &quot;enableVariableMasking&quot;: True or False, # Optional. True if variable masking feature should be turned on for this version
    &quot;errorCatcherConfigs&quot;: [ # Optional. Error Catch Task configuration for the integration. It&#x27;s optional.
      { # Configuration detail of a error catch task
        &quot;description&quot;: &quot;A String&quot;, # Optional. User-provided description intended to give more business context about the error catcher config.
        &quot;errorCatcherId&quot;: &quot;A String&quot;, # Required. An error catcher id is string representation for the error catcher config. Within a workflow, error_catcher_id uniquely identifies an error catcher config among all error catcher configs for the workflow
        &quot;errorCatcherNumber&quot;: &quot;A String&quot;, # Required. A number to uniquely identify each error catcher config within the workflow on UI.
        &quot;label&quot;: &quot;A String&quot;, # Optional. The user created label for a particular error catcher. Optional.
        &quot;position&quot;: { # Configuration detail of coordinate, it used for UI # Optional. Informs the front-end application where to draw this error catcher config on the UI.
          &quot;x&quot;: 42, # Required. X axis of the coordinate
          &quot;y&quot;: 42, # Required. Y axis of the coordinate
        },
        &quot;startErrorTasks&quot;: [ # Required. The set of start tasks that are to be executed for the error catch flow
          { # The task that is next in line to be executed, if the condition specified evaluated to true.
            &quot;condition&quot;: &quot;A String&quot;, # Standard filter expression for this task to become an eligible next task.
            &quot;description&quot;: &quot;A String&quot;, # User-provided description intended to give additional business context about the task.
            &quot;displayName&quot;: &quot;A String&quot;, # User-provided label that is attached to this edge in the UI.
            &quot;taskConfigId&quot;: &quot;A String&quot;, # ID of the next task.
            &quot;taskId&quot;: &quot;A String&quot;, # Task number of the next task.
          },
        ],
      },
    ],
    &quot;integrationConfigParameters&quot;: [ # Optional. Config Parameters that are expected to be passed to the integration when an integration is published. This consists of all the parameters that are expected to provide configuration in the integration execution. This gives the user the ability to provide default values, value, add information like connection url, project based configuration value and also provide data types of each parameter.
      { # Integration Config Parameter is defined in the integration config and are used to provide external configuration for integration. It provide information about data types of the expected parameters and provide any default values or value. They can also be used to add custom attributes.
        &quot;parameter&quot;: { # Integration Parameter is defined in the integration config and are used to provide information about data types of the expected parameters and provide any default values if needed. They can also be used to add custom attributes. These are static in nature and should not be used for dynamic event definition. # Optional. Integration Parameter to provide the default value, data type and attributes required for the Integration config variables.
          &quot;containsLargeData&quot;: True or False, # Indicates whether this variable contains large data and need to be uploaded to Cloud Storage.
          &quot;dataType&quot;: &quot;A String&quot;, # Type of the parameter.
          &quot;defaultValue&quot;: { # The type of the parameter. # Default values for the defined keys. Each value can either be string, int, double or any proto message or a serialized object.
            &quot;booleanArray&quot;: { # This message only contains a field of boolean array. # Boolean Array.
              &quot;booleanValues&quot;: [ # Boolean array.
                True or False,
              ],
            },
            &quot;booleanValue&quot;: True or False, # Boolean.
            &quot;doubleArray&quot;: { # This message only contains a field of double number array. # Double Number Array.
              &quot;doubleValues&quot;: [ # Double number array.
                3.14,
              ],
            },
            &quot;doubleValue&quot;: 3.14, # Double Number.
            &quot;intArray&quot;: { # This message only contains a field of integer array. # Integer Array.
              &quot;intValues&quot;: [ # Integer array.
                &quot;A String&quot;,
              ],
            },
            &quot;intValue&quot;: &quot;A String&quot;, # Integer.
            &quot;jsonValue&quot;: &quot;A String&quot;, # Json.
            &quot;stringArray&quot;: { # This message only contains a field of string array. # String Array.
              &quot;stringValues&quot;: [ # String array.
                &quot;A String&quot;,
              ],
            },
            &quot;stringValue&quot;: &quot;A String&quot;, # String.
          },
          &quot;description&quot;: &quot;A String&quot;, # Optional. Description of the parameter.
          &quot;displayName&quot;: &quot;A String&quot;, # The name (without prefix) to be displayed in the UI for this parameter. E.g. if the key is &quot;foo.bar.myName&quot;, then the name would be &quot;myName&quot;.
          &quot;inputOutputType&quot;: &quot;A String&quot;, # Specifies the input/output type for the parameter.
          &quot;isTransient&quot;: True or False, # Whether this parameter is a transient parameter.
          &quot;jsonSchema&quot;: &quot;A String&quot;, # This schema will be used to validate runtime JSON-typed values of this parameter.
          &quot;key&quot;: &quot;A String&quot;, # Key is used to retrieve the corresponding parameter value. This should be unique for a given fired event. These parameters must be predefined in the integration definition.
          &quot;masked&quot;: True or False, # True if this parameter should be masked in the logs
          &quot;producer&quot;: &quot;A String&quot;, # The identifier of the node (TaskConfig/TriggerConfig) this parameter was produced by, if it is a transient param or a copy of an input param.
          &quot;searchable&quot;: True or False, # Searchable in the execution log or not.
        },
        &quot;value&quot;: { # The type of the parameter. # Values for the defined keys. Each value can either be string, int, double or any proto message or a serialized object.
          &quot;booleanArray&quot;: { # This message only contains a field of boolean array. # Boolean Array.
            &quot;booleanValues&quot;: [ # Boolean array.
              True or False,
            ],
          },
          &quot;booleanValue&quot;: True or False, # Boolean.
          &quot;doubleArray&quot;: { # This message only contains a field of double number array. # Double Number Array.
            &quot;doubleValues&quot;: [ # Double number array.
              3.14,
            ],
          },
          &quot;doubleValue&quot;: 3.14, # Double Number.
          &quot;intArray&quot;: { # This message only contains a field of integer array. # Integer Array.
            &quot;intValues&quot;: [ # Integer array.
              &quot;A String&quot;,
            ],
          },
          &quot;intValue&quot;: &quot;A String&quot;, # Integer.
          &quot;jsonValue&quot;: &quot;A String&quot;, # Json.
          &quot;stringArray&quot;: { # This message only contains a field of string array. # String Array.
            &quot;stringValues&quot;: [ # String array.
              &quot;A String&quot;,
            ],
          },
          &quot;stringValue&quot;: &quot;A String&quot;, # String.
        },
      },
    ],
    &quot;integrationParameters&quot;: [ # Optional. Parameters that are expected to be passed to the integration when an event is triggered. This consists of all the parameters that are expected in the integration execution. This gives the user the ability to provide default values, add information like PII and also provide data types of each parameter.
      { # Integration Parameter is defined in the integration config and are used to provide information about data types of the expected parameters and provide any default values if needed. They can also be used to add custom attributes. These are static in nature and should not be used for dynamic event definition.
        &quot;containsLargeData&quot;: True or False, # Indicates whether this variable contains large data and need to be uploaded to Cloud Storage.
        &quot;dataType&quot;: &quot;A String&quot;, # Type of the parameter.
        &quot;defaultValue&quot;: { # The type of the parameter. # Default values for the defined keys. Each value can either be string, int, double or any proto message or a serialized object.
          &quot;booleanArray&quot;: { # This message only contains a field of boolean array. # Boolean Array.
            &quot;booleanValues&quot;: [ # Boolean array.
              True or False,
            ],
          },
          &quot;booleanValue&quot;: True or False, # Boolean.
          &quot;doubleArray&quot;: { # This message only contains a field of double number array. # Double Number Array.
            &quot;doubleValues&quot;: [ # Double number array.
              3.14,
            ],
          },
          &quot;doubleValue&quot;: 3.14, # Double Number.
          &quot;intArray&quot;: { # This message only contains a field of integer array. # Integer Array.
            &quot;intValues&quot;: [ # Integer array.
              &quot;A String&quot;,
            ],
          },
          &quot;intValue&quot;: &quot;A String&quot;, # Integer.
          &quot;jsonValue&quot;: &quot;A String&quot;, # Json.
          &quot;stringArray&quot;: { # This message only contains a field of string array. # String Array.
            &quot;stringValues&quot;: [ # String array.
              &quot;A String&quot;,
            ],
          },
          &quot;stringValue&quot;: &quot;A String&quot;, # String.
        },
        &quot;description&quot;: &quot;A String&quot;, # Optional. Description of the parameter.
        &quot;displayName&quot;: &quot;A String&quot;, # The name (without prefix) to be displayed in the UI for this parameter. E.g. if the key is &quot;foo.bar.myName&quot;, then the name would be &quot;myName&quot;.
        &quot;inputOutputType&quot;: &quot;A String&quot;, # Specifies the input/output type for the parameter.
        &quot;isTransient&quot;: True or False, # Whether this parameter is a transient parameter.
        &quot;jsonSchema&quot;: &quot;A String&quot;, # This schema will be used to validate runtime JSON-typed values of this parameter.
        &quot;key&quot;: &quot;A String&quot;, # Key is used to retrieve the corresponding parameter value. This should be unique for a given fired event. These parameters must be predefined in the integration definition.
        &quot;masked&quot;: True or False, # True if this parameter should be masked in the logs
        &quot;producer&quot;: &quot;A String&quot;, # The identifier of the node (TaskConfig/TriggerConfig) this parameter was produced by, if it is a transient param or a copy of an input param.
        &quot;searchable&quot;: True or False, # Searchable in the execution log or not.
      },
    ],
    &quot;integrationParametersInternal&quot;: { # LINT.IfChange This is the frontend version of WorkflowParameters. It&#x27;s exactly like the backend version except that instead of flattening protobuf parameters and treating every field and subfield of a protobuf parameter as a separate parameter, the fields/subfields of a protobuf parameter will be nested as &quot;children&quot; (see &#x27;children&#x27; field below) parameters of the parent parameter. Please refer to enterprise/crm/eventbus/proto/workflow_parameters.proto for more information about WorkflowParameters. # Optional. Parameters that are expected to be passed to the integration when an event is triggered. This consists of all the parameters that are expected in the integration execution. This gives the user the ability to provide default values, add information like PII and also provide data types of each parameter.
      &quot;parameters&quot;: [ # Parameters are a part of Event and can be used to communiticate between different tasks that are part of the same workflow execution.
        {
          &quot;attributes&quot;: { # Attributes are additional options that can be associated with each event property. For more information, see # Metadata information about the parameters.
            &quot;dataType&quot;: &quot;A String&quot;, # Things like URL, Email, Currency, Timestamp (rather than string, int64...)
            &quot;defaultValue&quot;: { # Used for define type for values. Currently supported value types include int, string, double, array, and any proto message. # Used to define defaults.
              &quot;booleanValue&quot;: True or False,
              &quot;doubleArray&quot;: {
                &quot;values&quot;: [
                  3.14,
                ],
              },
              &quot;doubleValue&quot;: 3.14,
              &quot;intArray&quot;: {
                &quot;values&quot;: [
                  &quot;A String&quot;,
                ],
              },
              &quot;intValue&quot;: &quot;A String&quot;,
              &quot;protoValue&quot;: {
                &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
              },
              &quot;stringArray&quot;: {
                &quot;values&quot;: [
                  &quot;A String&quot;,
                ],
              },
              &quot;stringValue&quot;: &quot;A String&quot;,
            },
            &quot;isRequired&quot;: True or False, # Required for event execution. The validation will be done by the event bus when the event is triggered.
            &quot;isSearchable&quot;: True or False, # Used to indicate if a ParameterEntry should be converted to ParamIndexes for ST-Spanner full-text search. DEPRECATED: use searchable.
            &quot;logSettings&quot;: { # The LogSettings define the logging attributes for an event property. These attributes are used to map the property to the parameter in the log proto. Also used to define scrubbing/truncation behavior and PII information. # See
              &quot;logFieldName&quot;: &quot;A String&quot;, # The name of corresponding logging field of the event property. If omitted, assumes the same name as the event property key.
              &quot;seedPeriod&quot;: &quot;A String&quot;,
              &quot;seedScope&quot;: &quot;A String&quot;,
            },
            &quot;masked&quot;: True or False, # True if this workflow parameter should be masked in the logs
            &quot;readOnly&quot;: True or False, # Used to indicate if the ParameterEntry is a read only field or not.
            &quot;searchable&quot;: &quot;A String&quot;,
            &quot;taskVisibility&quot;: [ # List of tasks that can view this property, if empty then all.
              &quot;A String&quot;,
            ],
          },
          &quot;children&quot;: [ # Child parameters nested within this parameter. This field only applies to protobuf parameters
            # Object with schema name: EnterpriseCrmFrontendsEventbusProtoWorkflowParameterEntry
          ],
          &quot;containsLargeData&quot;: True or False, # Indicates whether this variable contains large data and need to be uploaded to Cloud Storage.
          &quot;dataType&quot;: &quot;A String&quot;, # The data type of the parameter.
          &quot;defaultValue&quot;: { # To support various types of parameter values. Next available id: 14 # Default values for the defined keys. Each value can either be string, int, double or any proto message or a serialized object.
            &quot;booleanArray&quot;: {
              &quot;booleanValues&quot;: [
                True or False,
              ],
            },
            &quot;booleanValue&quot;: True or False,
            &quot;doubleArray&quot;: {
              &quot;doubleValues&quot;: [
                3.14,
              ],
            },
            &quot;doubleValue&quot;: 3.14,
            &quot;intArray&quot;: {
              &quot;intValues&quot;: [
                &quot;A String&quot;,
              ],
            },
            &quot;intValue&quot;: &quot;A String&quot;,
            &quot;jsonValue&quot;: &quot;A String&quot;,
            &quot;protoArray&quot;: {
              &quot;protoValues&quot;: [
                {
                  &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
                },
              ],
            },
            &quot;protoValue&quot;: {
              &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
            },
            &quot;serializedObjectValue&quot;: {
              &quot;objectValue&quot;: &quot;A String&quot;,
            },
            &quot;stringArray&quot;: {
              &quot;stringValues&quot;: [
                &quot;A String&quot;,
              ],
            },
            &quot;stringValue&quot;: &quot;A String&quot;,
          },
          &quot;description&quot;: &quot;A String&quot;, # Optional. The description about the parameter
          &quot;inOutType&quot;: &quot;A String&quot;, # Specifies the input/output type for the parameter.
          &quot;isTransient&quot;: True or False, # Whether this parameter is a transient parameter.
          &quot;jsonSchema&quot;: &quot;A String&quot;, # This schema will be used to validate runtime JSON-typed values of this parameter.
          &quot;key&quot;: &quot;A String&quot;, # Key is used to retrieve the corresponding parameter value. This should be unique for a given fired event. These parameters must be predefined in the workflow definition.
          &quot;name&quot;: &quot;A String&quot;, # The name (without prefix) to be displayed in the UI for this parameter. E.g. if the key is &quot;foo.bar.myName&quot;, then the name would be &quot;myName&quot;.
          &quot;producedBy&quot;: { # Represents a node identifier (type + id). Next highest id: 3 # The identifier of the node (TaskConfig/TriggerConfig) this parameter was produced by, if it is a transient param or a copy of an input param.
            &quot;elementIdentifier&quot;: &quot;A String&quot;, # Configuration of the edge.
            &quot;elementType&quot;: &quot;A String&quot;, # Destination node where the edge ends. It can only be a task config.
          },
          &quot;producer&quot;: &quot;A String&quot;,
          &quot;protoDefName&quot;: &quot;A String&quot;, # The name of the protobuf type if the parameter has a protobuf data type.
          &quot;protoDefPath&quot;: &quot;A String&quot;, # If the data type is of type proto or proto array, this field needs to be populated with the fully qualified proto name. This message, for example, would be &quot;enterprise.crm.frontends.eventbus.proto.WorkflowParameterEntry&quot;.
          &quot;required&quot;: True or False,
        },
      ],
    },
    &quot;lastModifierEmail&quot;: &quot;A String&quot;, # Optional. The last modifier&#x27;s email address. Generated based on the End User Credentials/LOAS role of the user making the call.
    &quot;lockHolder&quot;: &quot;A String&quot;, # Optional. The edit lock holder&#x27;s email address. Generated based on the End User Credentials/LOAS role of the user making the call.
    &quot;name&quot;: &quot;A String&quot;, # Output only. Auto-generated primary key.
    &quot;origin&quot;: &quot;A String&quot;, # Optional. The origin that indicates where this integration is coming from.
    &quot;parentTemplateId&quot;: &quot;A String&quot;, # Optional. The id of the template which was used to create this integration_version.
    &quot;runAsServiceAccount&quot;: &quot;A String&quot;, # Optional. The run-as service account email, if set and auth config is not configured, that will be used to generate auth token to be used in Connector task, Rest caller task and Cloud function task.
    &quot;snapshotNumber&quot;: &quot;A String&quot;, # Output only. An increasing sequence that is set when a new snapshot is created. The last created snapshot can be identified by [workflow_name, org_id latest(snapshot_number)]. However, last created snapshot need not be same as the HEAD. So users should always use &quot;HEAD&quot; tag to identify the head.
    &quot;state&quot;: &quot;A String&quot;, # Output only. User should not set it as an input.
    &quot;status&quot;: &quot;A String&quot;, # Output only. Generated by eventbus. User should not set it as an input.
    &quot;taskConfigs&quot;: [ # Optional. Task configuration for the integration. It&#x27;s optional, but the integration doesn&#x27;t do anything without task_configs.
      { # The task configuration details. This is not the implementation of Task. There might be multiple TaskConfigs for the same Task.
        &quot;conditionalFailurePolicies&quot;: { # Conditional task failur retry strategies # Optional. The list of conditional failure policies that will be applied to the task in order.
          &quot;defaultFailurePolicy&quot;: { # Policy that defines the task retry logic and failure type. If no FailurePolicy is defined for a task, all its dependent tasks will not be executed (i.e, a `retry_strategy` of NONE will be applied). # The default failure policy to be applied if no conditional failure policy matches.
            &quot;condition&quot;: &quot;A String&quot;, # Optional. The string condition that will be evaluated to determine if the task should be retried with this failure policy.
            &quot;intervalTime&quot;: &quot;A String&quot;, # Required if retry_strategy is FIXED_INTERVAL or LINEAR/EXPONENTIAL_BACKOFF/RESTART_INTEGRATION_WITH_BACKOFF. Defines the initial interval in seconds for backoff.
            &quot;maxRetries&quot;: 42, # Required if retry_strategy is FIXED_INTERVAL or LINEAR/EXPONENTIAL_BACKOFF/RESTART_INTEGRATION_WITH_BACKOFF. Defines the number of times the task will be retried if failed.
            &quot;retryStrategy&quot;: &quot;A String&quot;, # Defines what happens to the task upon failure.
          },
          &quot;failurePolicies&quot;: [ # The list of failure policies that will be applied to the task in order.
            { # Policy that defines the task retry logic and failure type. If no FailurePolicy is defined for a task, all its dependent tasks will not be executed (i.e, a `retry_strategy` of NONE will be applied).
              &quot;condition&quot;: &quot;A String&quot;, # Optional. The string condition that will be evaluated to determine if the task should be retried with this failure policy.
              &quot;intervalTime&quot;: &quot;A String&quot;, # Required if retry_strategy is FIXED_INTERVAL or LINEAR/EXPONENTIAL_BACKOFF/RESTART_INTEGRATION_WITH_BACKOFF. Defines the initial interval in seconds for backoff.
              &quot;maxRetries&quot;: 42, # Required if retry_strategy is FIXED_INTERVAL or LINEAR/EXPONENTIAL_BACKOFF/RESTART_INTEGRATION_WITH_BACKOFF. Defines the number of times the task will be retried if failed.
              &quot;retryStrategy&quot;: &quot;A String&quot;, # Defines what happens to the task upon failure.
            },
          ],
        },
        &quot;description&quot;: &quot;A String&quot;, # Optional. User-provided description intended to give additional business context about the task.
        &quot;displayName&quot;: &quot;A String&quot;, # Optional. User-provided label that is attached to this TaskConfig in the UI.
        &quot;errorCatcherId&quot;: &quot;A String&quot;, # Optional. Optional Error catcher id of the error catch flow which will be executed when execution error happens in the task
        &quot;externalTaskType&quot;: &quot;A String&quot;, # Optional. External task type of the task
        &quot;failurePolicy&quot;: { # Policy that defines the task retry logic and failure type. If no FailurePolicy is defined for a task, all its dependent tasks will not be executed (i.e, a `retry_strategy` of NONE will be applied). # Optional. Determines the number of times the task will be retried on failure and with what retry strategy. This is applicable for asynchronous calls to Eventbus alone (Post To Queue, Schedule etc.).
          &quot;condition&quot;: &quot;A String&quot;, # Optional. The string condition that will be evaluated to determine if the task should be retried with this failure policy.
          &quot;intervalTime&quot;: &quot;A String&quot;, # Required if retry_strategy is FIXED_INTERVAL or LINEAR/EXPONENTIAL_BACKOFF/RESTART_INTEGRATION_WITH_BACKOFF. Defines the initial interval in seconds for backoff.
          &quot;maxRetries&quot;: 42, # Required if retry_strategy is FIXED_INTERVAL or LINEAR/EXPONENTIAL_BACKOFF/RESTART_INTEGRATION_WITH_BACKOFF. Defines the number of times the task will be retried if failed.
          &quot;retryStrategy&quot;: &quot;A String&quot;, # Defines what happens to the task upon failure.
        },
        &quot;jsonValidationOption&quot;: &quot;A String&quot;, # Optional. If set, overrides the option configured in the Task implementation class.
        &quot;nextTasks&quot;: [ # Optional. The set of tasks that are next in line to be executed as per the execution graph defined for the parent event, specified by `event_config_id`. Each of these next tasks are executed only if the condition associated with them evaluates to true.
          { # The task that is next in line to be executed, if the condition specified evaluated to true.
            &quot;condition&quot;: &quot;A String&quot;, # Standard filter expression for this task to become an eligible next task.
            &quot;description&quot;: &quot;A String&quot;, # User-provided description intended to give additional business context about the task.
            &quot;displayName&quot;: &quot;A String&quot;, # User-provided label that is attached to this edge in the UI.
            &quot;taskConfigId&quot;: &quot;A String&quot;, # ID of the next task.
            &quot;taskId&quot;: &quot;A String&quot;, # Task number of the next task.
          },
        ],
        &quot;nextTasksExecutionPolicy&quot;: &quot;A String&quot;, # Optional. The policy dictating the execution of the next set of tasks for the current task.
        &quot;parameters&quot;: { # Optional. The customized parameters the user can pass to this task.
          &quot;a_key&quot;: { # This message is used for processing and persisting (when applicable) key value pair parameters for each event in the event bus. Next available id: 4
            &quot;key&quot;: &quot;A String&quot;, # Key is used to retrieve the corresponding parameter value. This should be unique for a given fired event. These parameters must be predefined in the integration definition.
            &quot;masked&quot;: True or False, # True if this parameter should be masked in the logs
            &quot;value&quot;: { # The type of the parameter. # Values for the defined keys. Each value can either be string, int, double or any proto message.
              &quot;booleanArray&quot;: { # This message only contains a field of boolean array. # Boolean Array.
                &quot;booleanValues&quot;: [ # Boolean array.
                  True or False,
                ],
              },
              &quot;booleanValue&quot;: True or False, # Boolean.
              &quot;doubleArray&quot;: { # This message only contains a field of double number array. # Double Number Array.
                &quot;doubleValues&quot;: [ # Double number array.
                  3.14,
                ],
              },
              &quot;doubleValue&quot;: 3.14, # Double Number.
              &quot;intArray&quot;: { # This message only contains a field of integer array. # Integer Array.
                &quot;intValues&quot;: [ # Integer array.
                  &quot;A String&quot;,
                ],
              },
              &quot;intValue&quot;: &quot;A String&quot;, # Integer.
              &quot;jsonValue&quot;: &quot;A String&quot;, # Json.
              &quot;stringArray&quot;: { # This message only contains a field of string array. # String Array.
                &quot;stringValues&quot;: [ # String array.
                  &quot;A String&quot;,
                ],
              },
              &quot;stringValue&quot;: &quot;A String&quot;, # String.
            },
          },
        },
        &quot;position&quot;: { # Configuration detail of coordinate, it used for UI # Optional. Informs the front-end application where to draw this error catcher config on the UI.
          &quot;x&quot;: 42, # Required. X axis of the coordinate
          &quot;y&quot;: 42, # Required. Y axis of the coordinate
        },
        &quot;successPolicy&quot;: { # Policy that dictates the behavior for the task after it completes successfully. # Optional. Determines what action to take upon successful task completion.
          &quot;finalState&quot;: &quot;A String&quot;, # State to which the execution snapshot status will be set if the task succeeds.
        },
        &quot;synchronousCallFailurePolicy&quot;: { # Policy that defines the task retry logic and failure type. If no FailurePolicy is defined for a task, all its dependent tasks will not be executed (i.e, a `retry_strategy` of NONE will be applied). # Optional. Determines the number of times the task will be retried on failure and with what retry strategy. This is applicable for synchronous calls to Eventbus alone (Post).
          &quot;condition&quot;: &quot;A String&quot;, # Optional. The string condition that will be evaluated to determine if the task should be retried with this failure policy.
          &quot;intervalTime&quot;: &quot;A String&quot;, # Required if retry_strategy is FIXED_INTERVAL or LINEAR/EXPONENTIAL_BACKOFF/RESTART_INTEGRATION_WITH_BACKOFF. Defines the initial interval in seconds for backoff.
          &quot;maxRetries&quot;: 42, # Required if retry_strategy is FIXED_INTERVAL or LINEAR/EXPONENTIAL_BACKOFF/RESTART_INTEGRATION_WITH_BACKOFF. Defines the number of times the task will be retried if failed.
          &quot;retryStrategy&quot;: &quot;A String&quot;, # Defines what happens to the task upon failure.
        },
        &quot;task&quot;: &quot;A String&quot;, # Optional. The name for the task.
        &quot;taskExecutionStrategy&quot;: &quot;A String&quot;, # Optional. The policy dictating the execution strategy of this task.
        &quot;taskId&quot;: &quot;A String&quot;, # Required. The identifier of this task within its parent event config, specified by the client. This should be unique among all the tasks belong to the same event config. We use this field as the identifier to find next tasks (via field `next_tasks.task_id`).
        &quot;taskTemplate&quot;: &quot;A String&quot;, # Optional. Used to define task-template name if task is of type task-template
      },
    ],
    &quot;taskConfigsInternal&quot;: [ # Optional. Task configuration for the integration. It&#x27;s optional, but the integration doesn&#x27;t do anything without task_configs.
      { # The task configuration details. This is not the implementation of Task. There might be multiple TaskConfigs for the same Task.
        &quot;alertConfigs&quot;: [ # Alert configurations on error rate, warning rate, number of runs, durations, etc.
          { # Message to be used to configure alerting in the {@code TaskConfig} protos for tasks in an event.
            &quot;aggregationPeriod&quot;: &quot;A String&quot;, # The period over which the metric value should be aggregated and evaluated. Format is , where integer should be a positive integer and unit should be one of (s,m,h,d,w) meaning (second, minute, hour, day, week).
            &quot;alertDisabled&quot;: True or False, # Set to false by default. When set to true, the metrics are not aggregated or pushed to Monarch for this workflow alert.
            &quot;alertName&quot;: &quot;A String&quot;, # A name to identify this alert. This will be displayed in the alert subject. If set, this name should be unique in within the scope of the containing workflow.
            &quot;clientId&quot;: &quot;A String&quot;, # Client associated with this alert configuration. Must be a client enabled in one of the containing workflow&#x27;s triggers.
            &quot;durationThresholdMs&quot;: &quot;A String&quot;, # Should be specified only for TASK_AVERAGE_DURATION and TASK_PERCENTILE_DURATION metrics. This member should be used to specify what duration value the metrics should exceed for the alert to trigger.
            &quot;errorEnumList&quot;: { # List of error enums for alerts.
              &quot;enumStrings&quot;: [
                &quot;A String&quot;,
              ],
              &quot;filterType&quot;: &quot;A String&quot;,
            },
            &quot;metricType&quot;: &quot;A String&quot;,
            &quot;numAggregationPeriods&quot;: 42, # For how many contiguous aggregation periods should the expected min or max be violated for the alert to be fired.
            &quot;onlyFinalAttempt&quot;: True or False, # Only count final task attempts, not retries.
            &quot;playbookUrl&quot;: &quot;A String&quot;, # Link to a playbook for resolving the issue that triggered this alert.
            &quot;thresholdType&quot;: &quot;A String&quot;, # The threshold type for which this alert is being configured. If value falls below expected_min or exceeds expected_max, an alert will be fired.
            &quot;thresholdValue&quot;: { # The threshold value of the metric, above or below which the alert should be triggered. See EventAlertConfig or TaskAlertConfig for the different alert metric types in each case. For the *RATE metrics, one or both of these fields may be set. Zero is the default value and can be left at that. For *PERCENTILE_DURATION metrics, one or both of these fields may be set, and also, the duration threshold value should be specified in the threshold_duration_ms member below. For *AVERAGE_DURATION metrics, these fields should not be set at all. A different member, threshold_duration_ms, must be set in the EventAlertConfig or the TaskAlertConfig. # The metric value, above or below which the alert should be triggered.
              &quot;absolute&quot;: &quot;A String&quot;,
              &quot;percentage&quot;: 42,
            },
            &quot;warningEnumList&quot;: { # List of error enums for alerts.
              &quot;enumStrings&quot;: [
                &quot;A String&quot;,
              ],
              &quot;filterType&quot;: &quot;A String&quot;,
            },
          },
        ],
        &quot;conditionalFailurePolicies&quot;: { # Optional. Determines the number of times the task will be retried on failure and with what retry strategy. This is applicable for synchronous calls to Eventbus alone (Post).
          &quot;defaultFailurePolicy&quot;: { # Policy that defines the task retry logic and failure type. If no FailurePolicy is defined for a task, all its dependent tasks will not be executed (i.e, a `retry_strategy` of NONE will be applied). # The default failure policy to be applied if no conditional failure policy matches
            &quot;intervalInSeconds&quot;: &quot;A String&quot;, # Required if retry_strategy is FIXED_INTERVAL or LINEAR/EXPONENTIAL_BACKOFF/RESTART_WORKFLOW_WITH_BACKOFF. Defines the initial interval for backoff.
            &quot;maxNumRetries&quot;: 42, # Required if retry_strategy is FIXED_INTERVAL or LINEAR/EXPONENTIAL_BACKOFF/RESTART_WORKFLOW_WITH_BACKOFF. Defines the number of times the task will be retried if failed.
            &quot;retryCondition&quot;: &quot;A String&quot;, # Optional. The retry condition that will be evaluated for this failure policy with the corresponding retry strategy.
            &quot;retryStrategy&quot;: &quot;A String&quot;, # Defines what happens to the task upon failure.
          },
          &quot;failurePolicies&quot;: [ # The list of failure policies that will be applied to the task in order.
            { # Policy that defines the task retry logic and failure type. If no FailurePolicy is defined for a task, all its dependent tasks will not be executed (i.e, a `retry_strategy` of NONE will be applied).
              &quot;intervalInSeconds&quot;: &quot;A String&quot;, # Required if retry_strategy is FIXED_INTERVAL or LINEAR/EXPONENTIAL_BACKOFF/RESTART_WORKFLOW_WITH_BACKOFF. Defines the initial interval for backoff.
              &quot;maxNumRetries&quot;: 42, # Required if retry_strategy is FIXED_INTERVAL or LINEAR/EXPONENTIAL_BACKOFF/RESTART_WORKFLOW_WITH_BACKOFF. Defines the number of times the task will be retried if failed.
              &quot;retryCondition&quot;: &quot;A String&quot;, # Optional. The retry condition that will be evaluated for this failure policy with the corresponding retry strategy.
              &quot;retryStrategy&quot;: &quot;A String&quot;, # Defines what happens to the task upon failure.
            },
          ],
        },
        &quot;createTime&quot;: &quot;A String&quot;, # Auto-generated.
        &quot;creatorEmail&quot;: &quot;A String&quot;, # The creator&#x27;s email address. Auto-generated from the user&#x27;s email.
        &quot;description&quot;: &quot;A String&quot;, # User-provided description intended to give more business context about the task.
        &quot;disableStrictTypeValidation&quot;: True or False, # If this config contains a TypedTask, allow validation to succeed if an input is read from the output of another TypedTask whose output type is declared as a superclass of the requested input type. For instance, if the previous task declares an output of type Message, any task with this flag enabled will pass validation when attempting to read any proto Message type from the resultant Event parameter.
        &quot;errorCatcherId&quot;: &quot;A String&quot;, # Optional Error catcher id of the error catch flow which will be executed when execution error happens in the task
        &quot;externalTaskType&quot;: &quot;A String&quot;,
        &quot;failurePolicy&quot;: { # Policy that defines the task retry logic and failure type. If no FailurePolicy is defined for a task, all its dependent tasks will not be executed (i.e, a `retry_strategy` of NONE will be applied). # Optional. Determines the number of times the task will be retried on failure and with what retry strategy. This is applicable for asynchronous calls to Eventbus alone (Post To Queue, Schedule etc.).
          &quot;intervalInSeconds&quot;: &quot;A String&quot;, # Required if retry_strategy is FIXED_INTERVAL or LINEAR/EXPONENTIAL_BACKOFF/RESTART_WORKFLOW_WITH_BACKOFF. Defines the initial interval for backoff.
          &quot;maxNumRetries&quot;: 42, # Required if retry_strategy is FIXED_INTERVAL or LINEAR/EXPONENTIAL_BACKOFF/RESTART_WORKFLOW_WITH_BACKOFF. Defines the number of times the task will be retried if failed.
          &quot;retryCondition&quot;: &quot;A String&quot;, # Optional. The retry condition that will be evaluated for this failure policy with the corresponding retry strategy.
          &quot;retryStrategy&quot;: &quot;A String&quot;, # Defines what happens to the task upon failure.
        },
        &quot;incomingEdgeCount&quot;: 42, # The number of edges leading into this TaskConfig.
        &quot;jsonValidationOption&quot;: &quot;A String&quot;, # If set, overrides the option configured in the Task implementation class.
        &quot;label&quot;: &quot;A String&quot;, # User-provided label that is attached to this TaskConfig in the UI.
        &quot;lastModifiedTime&quot;: &quot;A String&quot;, # Auto-generated.
        &quot;nextTasks&quot;: [ # The set of tasks that are next in line to be executed as per the execution graph defined for the parent event, specified by `event_config_id`. Each of these next tasks are executed only if the condition associated with them evaluates to true.
          { # The task that is next in line to be executed, if the condition specified evaluated to true.
            &quot;combinedConditions&quot;: [ # Combined condition for this task to become an eligible next task. Each of these combined_conditions are joined with logical OR. DEPRECATED: use `condition`
              { # This message recursively combines constituent conditions using logical AND.
                &quot;conditions&quot;: [ # A set of individual constituent conditions.
                  { # Condition that uses `operator` to evaluate the key against the value.
                    &quot;eventPropertyKey&quot;: &quot;A String&quot;, # Key that&#x27;s evaluated against the `value`. Please note the data type of the runtime value associated with the key should match the data type of `value`, else an IllegalArgumentException is thrown.
                    &quot;operator&quot;: &quot;A String&quot;, # Operator used to evaluate the condition. Please note that an operator with an inappropriate key/value operand will result in IllegalArgumentException, e.g. CONTAINS with boolean key/value pair.
                    &quot;value&quot;: { # Used for define type for values. Currently supported value types include int, string, double, array, and any proto message. # Value that&#x27;s checked for the key.
                      &quot;booleanValue&quot;: True or False,
                      &quot;doubleArray&quot;: {
                        &quot;values&quot;: [
                          3.14,
                        ],
                      },
                      &quot;doubleValue&quot;: 3.14,
                      &quot;intArray&quot;: {
                        &quot;values&quot;: [
                          &quot;A String&quot;,
                        ],
                      },
                      &quot;intValue&quot;: &quot;A String&quot;,
                      &quot;protoValue&quot;: {
                        &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
                      },
                      &quot;stringArray&quot;: {
                        &quot;values&quot;: [
                          &quot;A String&quot;,
                        ],
                      },
                      &quot;stringValue&quot;: &quot;A String&quot;,
                    },
                  },
                ],
              },
            ],
            &quot;condition&quot;: &quot;A String&quot;, # Standard filter expression for this task to become an eligible next task.
            &quot;description&quot;: &quot;A String&quot;, # User-provided description intended to give more business context about the next task edge or condition.
            &quot;label&quot;: &quot;A String&quot;, # User-provided label that is attached to this edge in the UI.
            &quot;taskConfigId&quot;: &quot;A String&quot;, # ID of the next task.
            &quot;taskNumber&quot;: &quot;A String&quot;, # Task number of the next task.
          },
        ],
        &quot;nextTasksExecutionPolicy&quot;: &quot;A String&quot;, # The policy dictating the execution of the next set of tasks for the current task.
        &quot;parameters&quot;: { # The customized parameters the user can pass to this task.
          &quot;a_key&quot;: { # Key-value pair of EventBus parameters.
            &quot;dataType&quot;: &quot;A String&quot;, # Explicitly getting the type of the parameter.
            &quot;key&quot;: &quot;A String&quot;, # Key is used to retrieve the corresponding parameter value. This should be unique for a given fired event. These parameters must be predefined in the workflow definition.
            &quot;masked&quot;: True or False, # True if this parameter should be masked in the logs
            &quot;value&quot;: { # To support various types of parameter values. Next available id: 14 # Values for the defined keys. Each value can either be string, int, double or any proto message.
              &quot;booleanArray&quot;: {
                &quot;booleanValues&quot;: [
                  True or False,
                ],
              },
              &quot;booleanValue&quot;: True or False,
              &quot;doubleArray&quot;: {
                &quot;doubleValues&quot;: [
                  3.14,
                ],
              },
              &quot;doubleValue&quot;: 3.14,
              &quot;intArray&quot;: {
                &quot;intValues&quot;: [
                  &quot;A String&quot;,
                ],
              },
              &quot;intValue&quot;: &quot;A String&quot;,
              &quot;jsonValue&quot;: &quot;A String&quot;,
              &quot;protoArray&quot;: {
                &quot;protoValues&quot;: [
                  {
                    &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
                  },
                ],
              },
              &quot;protoValue&quot;: {
                &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
              },
              &quot;serializedObjectValue&quot;: {
                &quot;objectValue&quot;: &quot;A String&quot;,
              },
              &quot;stringArray&quot;: {
                &quot;stringValues&quot;: [
                  &quot;A String&quot;,
                ],
              },
              &quot;stringValue&quot;: &quot;A String&quot;,
            },
          },
        },
        &quot;position&quot;: { # Represents two-dimensional positions. # Optional. Informs the front-end application where to draw this task config on the UI.
          &quot;x&quot;: 42,
          &quot;y&quot;: 42,
        },
        &quot;precondition&quot;: &quot;A String&quot;, # Optional. Standard filter expression evaluated before execution. Independent of other conditions and tasks. Can be used to enable rollout. e.g. &quot;rollout(5)&quot; will only allow 5% of incoming traffic to task.
        &quot;preconditionLabel&quot;: &quot;A String&quot;, # Optional. User-provided label that is attached to precondition in the UI.
        &quot;rollbackStrategy&quot;: { # Next available id: 4 # Optional. Contains information about what needs to be done upon failure (either a permanent error or after it has been retried too many times).
          &quot;parameters&quot;: { # LINT.IfChange This message is used for processing and persisting (when applicable) key value pair parameters for each event in the event bus. Please see # Optional. The customized parameters the user can pass to this task.
            &quot;parameters&quot;: [ # Parameters are a part of Event and can be used to communicate between different tasks that are part of the same workflow execution.
              { # Key-value pair of EventBus parameters.
                &quot;dataType&quot;: &quot;A String&quot;, # Explicitly getting the type of the parameter.
                &quot;key&quot;: &quot;A String&quot;, # Key is used to retrieve the corresponding parameter value. This should be unique for a given fired event. These parameters must be predefined in the workflow definition.
                &quot;masked&quot;: True or False, # True if this parameter should be masked in the logs
                &quot;value&quot;: { # To support various types of parameter values. Next available id: 14 # Values for the defined keys. Each value can either be string, int, double or any proto message.
                  &quot;booleanArray&quot;: {
                    &quot;booleanValues&quot;: [
                      True or False,
                    ],
                  },
                  &quot;booleanValue&quot;: True or False,
                  &quot;doubleArray&quot;: {
                    &quot;doubleValues&quot;: [
                      3.14,
                    ],
                  },
                  &quot;doubleValue&quot;: 3.14,
                  &quot;intArray&quot;: {
                    &quot;intValues&quot;: [
                      &quot;A String&quot;,
                    ],
                  },
                  &quot;intValue&quot;: &quot;A String&quot;,
                  &quot;jsonValue&quot;: &quot;A String&quot;,
                  &quot;protoArray&quot;: {
                    &quot;protoValues&quot;: [
                      {
                        &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
                      },
                    ],
                  },
                  &quot;protoValue&quot;: {
                    &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
                  },
                  &quot;serializedObjectValue&quot;: {
                    &quot;objectValue&quot;: &quot;A String&quot;,
                  },
                  &quot;stringArray&quot;: {
                    &quot;stringValues&quot;: [
                      &quot;A String&quot;,
                    ],
                  },
                  &quot;stringValue&quot;: &quot;A String&quot;,
                },
              },
            ],
          },
          &quot;rollbackTaskImplementationClassName&quot;: &quot;A String&quot;, # Required. This is the name of the task that needs to be executed upon rollback of this task.
          &quot;taskNumbersToRollback&quot;: [ # Required. These are the tasks numbers of the tasks whose `rollback_strategy.rollback_task_implementation_class_name` needs to be executed upon failure of this task.
            &quot;A String&quot;,
          ],
        },
        &quot;successPolicy&quot;: { # Policy that dictates the behavior for the task after it completes successfully. # Determines what action to take upon successful task completion.
          &quot;finalState&quot;: &quot;A String&quot;, # State to which the execution snapshot status will be set if the task succeeds.
        },
        &quot;synchronousCallFailurePolicy&quot;: { # Policy that defines the task retry logic and failure type. If no FailurePolicy is defined for a task, all its dependent tasks will not be executed (i.e, a `retry_strategy` of NONE will be applied). # Optional. Determines the number of times the task will be retried on failure and with what retry strategy. This is applicable for synchronous calls to Eventbus alone (Post).
          &quot;intervalInSeconds&quot;: &quot;A String&quot;, # Required if retry_strategy is FIXED_INTERVAL or LINEAR/EXPONENTIAL_BACKOFF/RESTART_WORKFLOW_WITH_BACKOFF. Defines the initial interval for backoff.
          &quot;maxNumRetries&quot;: 42, # Required if retry_strategy is FIXED_INTERVAL or LINEAR/EXPONENTIAL_BACKOFF/RESTART_WORKFLOW_WITH_BACKOFF. Defines the number of times the task will be retried if failed.
          &quot;retryCondition&quot;: &quot;A String&quot;, # Optional. The retry condition that will be evaluated for this failure policy with the corresponding retry strategy.
          &quot;retryStrategy&quot;: &quot;A String&quot;, # Defines what happens to the task upon failure.
        },
        &quot;taskEntity&quot;: { # Contains a task&#x27;s metadata and associated information. Next available id: 7 # Copy of the task entity that this task config is an instance of.
          &quot;disabledForVpcSc&quot;: True or False, # True if the task has conflict with vpcsc
          &quot;metadata&quot;: { # TaskMetadata are attributes that are associated to every common Task we have. # Metadata inclueds the task name, author and so on.
            &quot;activeTaskName&quot;: &quot;A String&quot;, # The new task name to replace the current task if it is deprecated. Otherwise, it is the same as the current task name.
            &quot;admins&quot;: [
              { # Admins are owners of a Task, and have all permissions on a particular task identified by the task name. By default, Eventbus periodically scans all task metadata and syncs (adds) any new admins defined here to Zanzibar.
                &quot;googleGroupEmail&quot;: &quot;A String&quot;,
                &quot;userEmail&quot;: &quot;A String&quot;,
              },
            ],
            &quot;category&quot;: &quot;A String&quot;,
            &quot;codeSearchLink&quot;: &quot;A String&quot;, # The Code Search link to the Task Java file.
            &quot;defaultJsonValidationOption&quot;: &quot;A String&quot;, # Controls whether JSON workflow parameters are validated against provided schemas before and/or after this task&#x27;s execution.
            &quot;defaultSpec&quot;: &quot;A String&quot;, # Contains the initial configuration of the task with default values set. For now, The string should be compatible to an ASCII-proto format.
            &quot;description&quot;: &quot;A String&quot;, # In a few sentences, describe the purpose and usage of the task.
            &quot;descriptiveName&quot;: &quot;A String&quot;, # The string name to show on the task list on the Workflow editor screen. This should be a very short, one to two words name for the task. (e.g. &quot;Send Mail&quot;)
            &quot;docMarkdown&quot;: &quot;A String&quot;, # Snippet of markdown documentation to embed in the RHP for this task.
            &quot;externalCategory&quot;: &quot;A String&quot;,
            &quot;externalCategorySequence&quot;: 42, # Sequence with which the task in specific category to be displayed in task discovery panel for external users.
            &quot;externalDocHtml&quot;: &quot;A String&quot;, # External-facing documention embedded in the RHP for this task.
            &quot;externalDocLink&quot;: &quot;A String&quot;, # Doc link for external-facing documentation (separate from g3doc).
            &quot;externalDocMarkdown&quot;: &quot;A String&quot;, # DEPRECATED: Use external_doc_html.
            &quot;g3DocLink&quot;: &quot;A String&quot;, # URL to the associated G3 Doc for the task if available
            &quot;iconLink&quot;: &quot;A String&quot;, # URL to gstatic image icon for this task. This icon shows up on the task list panel along with the task name in the Workflow Editor screen. Use the 24p, 2x, gray color icon image format.
            &quot;isDeprecated&quot;: True or False, # The deprecation status of the current task. Default value is false;
            &quot;name&quot;: &quot;A String&quot;, # The actual class name or the annotated name of the task. Task Author should initialize this field with value from the getName() method of the Task class.
            &quot;standaloneExternalDocHtml&quot;: &quot;A String&quot;, # External-facing documention for standalone IP in pantheon embedded in the RHP for this task. Non null only if different from external_doc_html
            &quot;status&quot;: &quot;A String&quot;, # Allows author to indicate if the task is ready to use or not. If not set, then it will default to INACTIVE.
            &quot;system&quot;: &quot;A String&quot;,
            &quot;tags&quot;: [ # A set of tags that pertain to a particular task. This can be used to improve the searchability of tasks with several names (&quot;REST Caller&quot; vs. &quot;Call REST Endpoint&quot;) or to help users find tasks based on related words.
              &quot;A String&quot;,
            ],
          },
          &quot;paramSpecs&quot;: { # Declarations for inputs/outputs for a TypedTask. This is also associated with the METADATA mask.
            &quot;parameters&quot;: [
              { # Key-value pair of EventBus task parameters. Next id: 13
                &quot;className&quot;: &quot;A String&quot;, # The FQCN of the Java object this represents. A string, for example, would be &quot;java.lang.String&quot;. If this is &quot;java.lang.Object&quot;, the parameter can be of any type.
                &quot;collectionElementClassName&quot;: &quot;A String&quot;, # If it is a collection of objects, this would be the FCQN of every individual element in the collection. If this is &quot;java.lang.Object&quot;, the parameter is a collection of any type.
                &quot;config&quot;: { # Optional fields, such as help text and other useful info.
                  &quot;descriptivePhrase&quot;: &quot;A String&quot;, # A short phrase to describe what this parameter contains.
                  &quot;helpText&quot;: &quot;A String&quot;, # Detailed help text for this parameter containing information not provided elsewhere. For example, instructions on how to migrate from a deprecated parameter.
                  &quot;hideDefaultValue&quot;: True or False, # Whether the default value is hidden in the UI.
                  &quot;inputDisplayOption&quot;: &quot;A String&quot;,
                  &quot;isHidden&quot;: True or False, # Whether this field is hidden in the UI.
                  &quot;label&quot;: &quot;A String&quot;, # A user-friendly label for the parameter.
                  &quot;parameterNameOption&quot;: &quot;A String&quot;,
                  &quot;subSectionLabel&quot;: &quot;A String&quot;, # A user-friendly label for subSection under which the parameter will be displayed.
                  &quot;uiPlaceholderText&quot;: &quot;A String&quot;, # Placeholder text which will appear in the UI input form for this parameter.
                },
                &quot;dataType&quot;: &quot;A String&quot;, # The data type of the parameter.
                &quot;defaultValue&quot;: { # To support various types of parameter values. Next available id: 14 # Default values for the defined keys. Each value can either be string, int, double or any proto message or a serialized object.
                  &quot;booleanArray&quot;: {
                    &quot;booleanValues&quot;: [
                      True or False,
                    ],
                  },
                  &quot;booleanValue&quot;: True or False,
                  &quot;doubleArray&quot;: {
                    &quot;doubleValues&quot;: [
                      3.14,
                    ],
                  },
                  &quot;doubleValue&quot;: 3.14,
                  &quot;intArray&quot;: {
                    &quot;intValues&quot;: [
                      &quot;A String&quot;,
                    ],
                  },
                  &quot;intValue&quot;: &quot;A String&quot;,
                  &quot;jsonValue&quot;: &quot;A String&quot;,
                  &quot;protoArray&quot;: {
                    &quot;protoValues&quot;: [
                      {
                        &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
                      },
                    ],
                  },
                  &quot;protoValue&quot;: {
                    &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
                  },
                  &quot;serializedObjectValue&quot;: {
                    &quot;objectValue&quot;: &quot;A String&quot;,
                  },
                  &quot;stringArray&quot;: {
                    &quot;stringValues&quot;: [
                      &quot;A String&quot;,
                    ],
                  },
                  &quot;stringValue&quot;: &quot;A String&quot;,
                },
                &quot;isDeprecated&quot;: True or False, # If set, this entry is deprecated, so further use of this parameter should be prohibited.
                &quot;isOutput&quot;: True or False,
                &quot;jsonSchema&quot;: &quot;A String&quot;, # If the data_type is JSON_VALUE, then this will define its schema.
                &quot;key&quot;: &quot;A String&quot;, # Key is used to retrieve the corresponding parameter value. This should be unique for a given task. These parameters must be predefined in the workflow definition.
                &quot;protoDef&quot;: { # Populated if this represents a proto or proto array.
                  &quot;fullName&quot;: &quot;A String&quot;, # The fully-qualified proto name. This message, for example, would be &quot;enterprise.crm.eventbus.proto.ParamSpecEntry.ProtoDefinition&quot;.
                  &quot;path&quot;: &quot;A String&quot;, # Path to the proto file that contains the message type&#x27;s definition.
                },
                &quot;required&quot;: True or False, # If set, the user must provide an input value for this parameter.
                &quot;validationRule&quot;: { # Rule used to validate inputs (individual values and collection elements) for this parameter.
                  &quot;doubleRange&quot;: { # Range used to validate doubles and floats.
                    &quot;max&quot;: 3.14, # The inclusive maximum of the acceptable range.
                    &quot;min&quot;: 3.14, # The inclusive minimum of the acceptable range.
                  },
                  &quot;intRange&quot;: { # Range used to validate longs and ints.
                    &quot;max&quot;: &quot;A String&quot;, # The inclusive maximum of the acceptable range.
                    &quot;min&quot;: &quot;A String&quot;, # The inclusive minimum of the acceptable range.
                  },
                  &quot;stringRegex&quot;: { # Rule used to validate strings.
                    &quot;exclusive&quot;: True or False, # Whether the regex matcher is applied exclusively (if true, matching values will be rejected).
                    &quot;regex&quot;: &quot;A String&quot;, # The regex applied to the input value(s).
                  },
                },
              },
            ],
          },
          &quot;stats&quot;: { # Stats for the requested dimensions: QPS, duration, and error/warning rate # Deprecated - statistics from the Monarch query.
            &quot;dimensions&quot;: { # Dimensions that these stats have been aggregated on.
              &quot;clientId&quot;: &quot;A String&quot;,
              &quot;enumFilterType&quot;: &quot;A String&quot;, # Whether to include or exclude the enums matching the regex.
              &quot;errorEnumString&quot;: &quot;A String&quot;,
              &quot;retryAttempt&quot;: &quot;A String&quot;,
              &quot;taskName&quot;: &quot;A String&quot;,
              &quot;taskNumber&quot;: &quot;A String&quot;,
              &quot;triggerId&quot;: &quot;A String&quot;, # Stats have been or will be aggregated on set fields for any semantically-meaningful combination.
              &quot;warningEnumString&quot;: &quot;A String&quot;,
              &quot;workflowId&quot;: &quot;A String&quot;,
              &quot;workflowName&quot;: &quot;A String&quot;,
            },
            &quot;durationInSeconds&quot;: 3.14, # Average duration in seconds.
            &quot;errorRate&quot;: 3.14, # Average error rate.
            &quot;qps&quot;: 3.14, # Queries per second.
            &quot;warningRate&quot;: 3.14, # Average warning rate.
          },
          &quot;taskType&quot;: &quot;A String&quot;, # Defines the type of the task
          &quot;uiConfig&quot;: { # Task authors would use this type to configure the UI for a particular task by specifying what UI config modules should be included to compose the UI. Learn more about config module framework: # UI configuration for this task Also associated with the METADATA mask.
            &quot;taskUiModuleConfigs&quot;: [ # Configurations of included config modules.
              { # Task author would use this type to configure a config module.
                &quot;moduleId&quot;: &quot;A String&quot;, # ID of the config module.
              },
            ],
          },
        },
        &quot;taskExecutionStrategy&quot;: &quot;A String&quot;, # The policy dictating the execution strategy of this task.
        &quot;taskName&quot;: &quot;A String&quot;, # The name for the task.
        &quot;taskNumber&quot;: &quot;A String&quot;, # REQUIRED: the identifier of this task within its parent event config, specified by the client. This should be unique among all the tasks belong to the same event config. We use this field as the identifier to find next tasks (via field `next_tasks.task_number`).
        &quot;taskSpec&quot;: &quot;A String&quot;, # A string template that allows user to configure task parameters (with either literal default values or tokens which will be resolved at execution time) for the task. It will eventually replace the old &quot;parameters&quot; field.
        &quot;taskTemplateName&quot;: &quot;A String&quot;, # Used to define task-template name if task is of type task-template
        &quot;taskType&quot;: &quot;A String&quot;, # Defines the type of the task
      },
    ],
    &quot;teardown&quot;: { # Optional. Contains a graph of tasks that will be executed before putting the event in a terminal state (SUCCEEDED/FAILED/FATAL), regardless of success or failure, similar to &quot;finally&quot; in code.
      &quot;teardownTaskConfigs&quot;: [ # Required.
        {
          &quot;creatorEmail&quot;: &quot;A String&quot;, # The creator&#x27;s email address.
          &quot;name&quot;: &quot;A String&quot;, # Required. Unique identifier of the teardown task within this Config. We use this field as the identifier to find next teardown tasks.
          &quot;nextTeardownTask&quot;: { # The teardown task that is next in line to be executed. We support only sequential execution of teardown tasks (i.e. no branching).
            &quot;name&quot;: &quot;A String&quot;, # Required. Name of the next teardown task.
          },
          &quot;parameters&quot;: { # LINT.IfChange This message is used for processing and persisting (when applicable) key value pair parameters for each event in the event bus. Please see # The parameters the user can pass to this task.
            &quot;parameters&quot;: [ # Parameters are a part of Event and can be used to communicate between different tasks that are part of the same integration execution.
              { # Key-value pair of EventBus parameters.
                &quot;key&quot;: &quot;A String&quot;, # Key is used to retrieve the corresponding parameter value. This should be unique for a given fired event. These parameters must be predefined in the integration definition.
                &quot;masked&quot;: True or False, # True if this parameter should be masked in the logs
                &quot;value&quot;: { # LINT.IfChange To support various types of parameter values. Next available id: 14 # Values for the defined keys. Each value can either be string, int, double or any proto message.
                  &quot;booleanArray&quot;: {
                    &quot;booleanValues&quot;: [
                      True or False,
                    ],
                  },
                  &quot;booleanValue&quot;: True or False,
                  &quot;doubleArray&quot;: {
                    &quot;doubleValues&quot;: [
                      3.14,
                    ],
                  },
                  &quot;doubleValue&quot;: 3.14,
                  &quot;intArray&quot;: {
                    &quot;intValues&quot;: [
                      &quot;A String&quot;,
                    ],
                  },
                  &quot;intValue&quot;: &quot;A String&quot;,
                  &quot;protoArray&quot;: {
                    &quot;protoValues&quot;: [
                      {
                        &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
                      },
                    ],
                  },
                  &quot;protoValue&quot;: {
                    &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
                  },
                  &quot;serializedObjectValue&quot;: {
                    &quot;objectValue&quot;: &quot;A String&quot;,
                  },
                  &quot;stringArray&quot;: {
                    &quot;stringValues&quot;: [
                      &quot;A String&quot;,
                    ],
                  },
                  &quot;stringValue&quot;: &quot;A String&quot;,
                },
              },
            ],
          },
          &quot;properties&quot;: { # LINT.IfChange This message is used for storing key value pair properties for each Event / Task in the EventBus.
            &quot;properties&quot;: [ # An unordered list of property entries.
              { # Key-value pair of EventBus property.
                &quot;key&quot;: &quot;A String&quot;, # Key is used to retrieve the corresponding property value. This should be unique for a given fired event. The Tasks should be aware of the keys used while firing the events for them to be able to retrieve the values.
                &quot;value&quot;: { # Used for define type for values. Currently supported value types include int, string, double, array, and any proto message. # Values for the defined keys. Each value can either be string, int, double or any proto message.
                  &quot;booleanValue&quot;: True or False,
                  &quot;doubleArray&quot;: {
                    &quot;values&quot;: [
                      3.14,
                    ],
                  },
                  &quot;doubleValue&quot;: 3.14,
                  &quot;intArray&quot;: {
                    &quot;values&quot;: [
                      &quot;A String&quot;,
                    ],
                  },
                  &quot;intValue&quot;: &quot;A String&quot;,
                  &quot;protoValue&quot;: {
                    &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
                  },
                  &quot;stringArray&quot;: {
                    &quot;values&quot;: [
                      &quot;A String&quot;,
                    ],
                  },
                  &quot;stringValue&quot;: &quot;A String&quot;,
                },
              },
            ],
          },
          &quot;teardownTaskImplementationClassName&quot;: &quot;A String&quot;, # Required. Implementation class name.
        },
      ],
    },
    &quot;triggerConfigs&quot;: [ # Optional. Trigger configurations.
      { # Configuration detail of a trigger.
        &quot;alertConfig&quot;: [ # Optional. An alert threshold configuration for the [trigger + client + integration] tuple. If these values are not specified in the trigger config, default values will be populated by the system. Note that there must be exactly one alert threshold configured per [client + trigger + integration] when published.
          { # Message to be used to configure custom alerting in the {@code EventConfig} protos for an event.
            &quot;aggregationPeriod&quot;: &quot;A String&quot;, # The period over which the metric value should be aggregated and evaluated. Format is , where integer should be a positive integer and unit should be one of (s,m,h,d,w) meaning (second, minute, hour, day, week). For an EXPECTED_MIN threshold, this aggregation_period must be lesser than 24 hours.
            &quot;alertThreshold&quot;: 42, # For how many contiguous aggregation periods should the expected min or max be violated for the alert to be fired.
            &quot;disableAlert&quot;: True or False, # Set to false by default. When set to true, the metrics are not aggregated or pushed to Monarch for this integration alert.
            &quot;displayName&quot;: &quot;A String&quot;, # Name of the alert. This will be displayed in the alert subject. If set, this name should be unique within the scope of the integration.
            &quot;durationThreshold&quot;: &quot;A String&quot;, # Should be specified only for *AVERAGE_DURATION and *PERCENTILE_DURATION metrics. This member should be used to specify what duration value the metrics should exceed for the alert to trigger.
            &quot;metricType&quot;: &quot;A String&quot;, # The type of metric.
            &quot;onlyFinalAttempt&quot;: True or False, # For either events or tasks, depending on the type of alert, count only final attempts, not retries.
            &quot;thresholdType&quot;: &quot;A String&quot;, # The threshold type, whether lower(expected_min) or upper(expected_max), for which this alert is being configured. If value falls below expected_min or exceeds expected_max, an alert will be fired.
            &quot;thresholdValue&quot;: { # The threshold value of the metric, above or below which the alert should be triggered. See EventAlertConfig or TaskAlertConfig for the different alert metric types in each case. For the *RATE metrics, one or both of these fields may be set. Zero is the default value and can be left at that. For *PERCENTILE_DURATION metrics, one or both of these fields may be set, and also, the duration threshold value should be specified in the threshold_duration_ms member below. For *AVERAGE_DURATION metrics, these fields should not be set at all. A different member, threshold_duration_ms, must be set in the EventAlertConfig or the TaskAlertConfig. # The metric value, above or below which the alert should be triggered.
              &quot;absolute&quot;: &quot;A String&quot;, # Absolute value threshold.
              &quot;percentage&quot;: 42, # Percentage threshold.
            },
          },
        ],
        &quot;cloudSchedulerConfig&quot;: { # Cloud Scheduler Trigger configuration # Optional. Cloud Scheduler Trigger related metadata
          &quot;cronTab&quot;: &quot;A String&quot;, # Required. The cron tab of cloud scheduler trigger.
          &quot;errorMessage&quot;: &quot;A String&quot;, # Optional. When the job was deleted from Pantheon UI, error_message will be populated when Get/List integrations
          &quot;location&quot;: &quot;A String&quot;, # Required. The location where associated cloud scheduler job will be created
          &quot;serviceAccountEmail&quot;: &quot;A String&quot;, # Required. Service account used by Cloud Scheduler to trigger the integration at scheduled time
        },
        &quot;description&quot;: &quot;A String&quot;, # Optional. User-provided description intended to give additional business context about the task.
        &quot;errorCatcherId&quot;: &quot;A String&quot;, # Optional. Optional Error catcher id of the error catch flow which will be executed when execution error happens in the task
        &quot;inputVariables&quot;: { # Variables names mapped to api trigger. # Optional. List of input variables for the api trigger.
          &quot;names&quot;: [ # Optional. List of variable names.
            &quot;A String&quot;,
          ],
        },
        &quot;label&quot;: &quot;A String&quot;, # Optional. The user created label for a particular trigger.
        &quot;nextTasksExecutionPolicy&quot;: &quot;A String&quot;, # Optional. Dictates how next tasks will be executed.
        &quot;outputVariables&quot;: { # Variables names mapped to api trigger. # Optional. List of output variables for the api trigger.
          &quot;names&quot;: [ # Optional. List of variable names.
            &quot;A String&quot;,
          ],
        },
        &quot;position&quot;: { # Configuration detail of coordinate, it used for UI # Optional. Informs the front-end application where to draw this error catcher config on the UI.
          &quot;x&quot;: 42, # Required. X axis of the coordinate
          &quot;y&quot;: 42, # Required. Y axis of the coordinate
        },
        &quot;properties&quot;: { # Optional. Configurable properties of the trigger, not to be confused with integration parameters. E.g. &quot;name&quot; is a property for API triggers and &quot;subscription&quot; is a property for Pub/sub triggers.
          &quot;a_key&quot;: &quot;A String&quot;,
        },
        &quot;startTasks&quot;: [ # Optional. Set of tasks numbers from where the integration execution is started by this trigger. If this is empty, then integration is executed with default start tasks. In the list of start tasks, none of two tasks can have direct ancestor-descendant relationships (i.e. in a same integration execution graph).
          { # The task that is next in line to be executed, if the condition specified evaluated to true.
            &quot;condition&quot;: &quot;A String&quot;, # Standard filter expression for this task to become an eligible next task.
            &quot;description&quot;: &quot;A String&quot;, # User-provided description intended to give additional business context about the task.
            &quot;displayName&quot;: &quot;A String&quot;, # User-provided label that is attached to this edge in the UI.
            &quot;taskConfigId&quot;: &quot;A String&quot;, # ID of the next task.
            &quot;taskId&quot;: &quot;A String&quot;, # Task number of the next task.
          },
        ],
        &quot;trigger&quot;: &quot;A String&quot;, # Optional. Name of the trigger. Example: &quot;API Trigger&quot;, &quot;Cloud Pub Sub Trigger&quot; When set will be sent out to monitoring dashabord for tracking purpose.
        &quot;triggerId&quot;: &quot;A String&quot;, # Optional. Auto-generated trigger ID. The ID is based on the properties that you define in the trigger config. For example, for an API trigger, the trigger ID follows the format: api_trigger/TRIGGER_NAME Where trigger config has properties with value {&quot;Trigger name&quot;: TRIGGER_NAME}
        &quot;triggerNumber&quot;: &quot;A String&quot;, # Required. A number to uniquely identify each trigger config within the integration on UI.
        &quot;triggerType&quot;: &quot;A String&quot;, # Optional. Type of trigger
      },
    ],
    &quot;triggerConfigsInternal&quot;: [ # Optional. Trigger configurations.
      { # Configuration detail of a trigger. Next available id: 22
        &quot;alertConfig&quot;: [ # An alert threshold configuration for the [trigger + client + workflow] tuple. If these values are not specified in the trigger config, default values will be populated by the system. Note that there must be exactly one alert threshold configured per [client + trigger + workflow] when published.
          { # Message to be used to configure custom alerting in the {@code EventConfig} protos for an event.
            &quot;aggregationPeriod&quot;: &quot;A String&quot;, # For an EXPECTED_MIN threshold, this aggregation_period must be lesser than 24 hours.
            &quot;alertDisabled&quot;: True or False, # Set to false by default. When set to true, the metrics are not aggregated or pushed to Monarch for this workflow alert.
            &quot;alertName&quot;: &quot;A String&quot;, # A name to identify this alert. This will be displayed in the alert subject. If set, this name should be unique within the scope of the workflow.
            &quot;clientId&quot;: &quot;A String&quot;, # Client associated with this alert configuration.
            &quot;durationThresholdMs&quot;: &quot;A String&quot;, # Should be specified only for *AVERAGE_DURATION and *PERCENTILE_DURATION metrics. This member should be used to specify what duration value the metrics should exceed for the alert to trigger.
            &quot;errorEnumList&quot;: { # List of error enums for alerts.
              &quot;enumStrings&quot;: [
                &quot;A String&quot;,
              ],
              &quot;filterType&quot;: &quot;A String&quot;,
            },
            &quot;metricType&quot;: &quot;A String&quot;,
            &quot;numAggregationPeriods&quot;: 42, # For how many contiguous aggregation periods should the expected min or max be violated for the alert to be fired.
            &quot;onlyFinalAttempt&quot;: True or False, # For either events or tasks, depending on the type of alert, count only final attempts, not retries.
            &quot;playbookUrl&quot;: &quot;A String&quot;, # Link to a playbook for resolving the issue that triggered this alert.
            &quot;thresholdType&quot;: &quot;A String&quot;, # The threshold type, whether lower(expected_min) or upper(expected_max), for which this alert is being configured. If value falls below expected_min or exceeds expected_max, an alert will be fired.
            &quot;thresholdValue&quot;: { # The threshold value of the metric, above or below which the alert should be triggered. See EventAlertConfig or TaskAlertConfig for the different alert metric types in each case. For the *RATE metrics, one or both of these fields may be set. Zero is the default value and can be left at that. For *PERCENTILE_DURATION metrics, one or both of these fields may be set, and also, the duration threshold value should be specified in the threshold_duration_ms member below. For *AVERAGE_DURATION metrics, these fields should not be set at all. A different member, threshold_duration_ms, must be set in the EventAlertConfig or the TaskAlertConfig. # The metric value, above or below which the alert should be triggered.
              &quot;absolute&quot;: &quot;A String&quot;,
              &quot;percentage&quot;: 42,
            },
            &quot;warningEnumList&quot;: { # List of error enums for alerts.
              &quot;enumStrings&quot;: [
                &quot;A String&quot;,
              ],
              &quot;filterType&quot;: &quot;A String&quot;,
            },
          },
        ],
        &quot;cloudSchedulerConfig&quot;: { # Cloud Scheduler Trigger configuration
          &quot;cronTab&quot;: &quot;A String&quot;, # Required. The cron tab of cloud scheduler trigger.
          &quot;errorMessage&quot;: &quot;A String&quot;, # Optional. When the job was deleted from Pantheon UI, error_message will be populated when Get/List integrations
          &quot;location&quot;: &quot;A String&quot;, # Required. The location where associated cloud scheduler job will be created
          &quot;serviceAccountEmail&quot;: &quot;A String&quot;, # Required. Service account used by Cloud Scheduler to trigger the integration at scheduled time
        },
        &quot;description&quot;: &quot;A String&quot;, # User-provided description intended to give more business context about the task.
        &quot;enabledClients&quot;: [ # Required. The list of client ids which are enabled to execute the workflow using this trigger. In other words, these clients have the workflow execution privledges for this trigger. For API trigger, the client id in the incoming request is validated against the list of enabled clients. For non-API triggers, one workflow execution is triggered on behalf of each enabled client.
          &quot;A String&quot;,
        ],
        &quot;errorCatcherId&quot;: &quot;A String&quot;, # Optional Error catcher id of the error catch flow which will be executed when execution error happens in the task
        &quot;inputVariables&quot;: { # Variables names mapped to api trigger. # Optional. List of input variables for the api trigger.
          &quot;names&quot;: [ # Optional. List of variable names.
            &quot;A String&quot;,
          ],
        },
        &quot;label&quot;: &quot;A String&quot;, # The user created label for a particular trigger.
        &quot;nextTasksExecutionPolicy&quot;: &quot;A String&quot;, # Dictates how next tasks will be executed.
        &quot;outputVariables&quot;: { # Variables names mapped to api trigger. # Optional. List of output variables for the api trigger.
          &quot;names&quot;: [ # Optional. List of variable names.
            &quot;A String&quot;,
          ],
        },
        &quot;pauseWorkflowExecutions&quot;: True or False, # Optional. If set to true, any upcoming requests for this trigger config will be paused and the executions will be resumed later when the flag is reset. The workflow to which this trigger config belongs has to be in ACTIVE status for the executions to be paused or resumed.
        &quot;position&quot;: { # Represents two-dimensional positions. # Optional. Informs the front-end application where to draw this trigger config on the UI.
          &quot;x&quot;: 42,
          &quot;y&quot;: 42,
        },
        &quot;properties&quot;: { # Configurable properties of the trigger, not to be confused with workflow parameters. E.g. &quot;name&quot; is a property for API triggers and &quot;subscription&quot; is a property for Cloud Pubsub triggers.
          &quot;a_key&quot;: &quot;A String&quot;,
        },
        &quot;startTasks&quot;: [ # Set of tasks numbers from where the workflow execution is started by this trigger. If this is empty, then workflow is executed with default start tasks. In the list of start tasks, none of two tasks can have direct ancestor-descendant relationships (i.e. in a same workflow execution graph).
          { # The task that is next in line to be executed, if the condition specified evaluated to true.
            &quot;combinedConditions&quot;: [ # Combined condition for this task to become an eligible next task. Each of these combined_conditions are joined with logical OR. DEPRECATED: use `condition`
              { # This message recursively combines constituent conditions using logical AND.
                &quot;conditions&quot;: [ # A set of individual constituent conditions.
                  { # Condition that uses `operator` to evaluate the key against the value.
                    &quot;eventPropertyKey&quot;: &quot;A String&quot;, # Key that&#x27;s evaluated against the `value`. Please note the data type of the runtime value associated with the key should match the data type of `value`, else an IllegalArgumentException is thrown.
                    &quot;operator&quot;: &quot;A String&quot;, # Operator used to evaluate the condition. Please note that an operator with an inappropriate key/value operand will result in IllegalArgumentException, e.g. CONTAINS with boolean key/value pair.
                    &quot;value&quot;: { # Used for define type for values. Currently supported value types include int, string, double, array, and any proto message. # Value that&#x27;s checked for the key.
                      &quot;booleanValue&quot;: True or False,
                      &quot;doubleArray&quot;: {
                        &quot;values&quot;: [
                          3.14,
                        ],
                      },
                      &quot;doubleValue&quot;: 3.14,
                      &quot;intArray&quot;: {
                        &quot;values&quot;: [
                          &quot;A String&quot;,
                        ],
                      },
                      &quot;intValue&quot;: &quot;A String&quot;,
                      &quot;protoValue&quot;: {
                        &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
                      },
                      &quot;stringArray&quot;: {
                        &quot;values&quot;: [
                          &quot;A String&quot;,
                        ],
                      },
                      &quot;stringValue&quot;: &quot;A String&quot;,
                    },
                  },
                ],
              },
            ],
            &quot;condition&quot;: &quot;A String&quot;, # Standard filter expression for this task to become an eligible next task.
            &quot;description&quot;: &quot;A String&quot;, # User-provided description intended to give more business context about the next task edge or condition.
            &quot;label&quot;: &quot;A String&quot;, # User-provided label that is attached to this edge in the UI.
            &quot;taskConfigId&quot;: &quot;A String&quot;, # ID of the next task.
            &quot;taskNumber&quot;: &quot;A String&quot;, # Task number of the next task.
          },
        ],
        &quot;triggerCriteria&quot;: { # Optional. When set, Eventbus will run the task specified in the trigger_criteria and validate the result using the trigger_criteria.condition, and only execute the workflow when result is true.
          &quot;condition&quot;: &quot;A String&quot;, # Required. Standard filter expression, when true the workflow will be executed. If there&#x27;s no trigger_criteria_task_implementation_class_name specified, the condition will be validated directly.
          &quot;parameters&quot;: { # LINT.IfChange This message is used for processing and persisting (when applicable) key value pair parameters for each event in the event bus. Please see # Optional. To be used in TaskConfig for the implementation class.
            &quot;parameters&quot;: [ # Parameters are a part of Event and can be used to communicate between different tasks that are part of the same integration execution.
              { # Key-value pair of EventBus parameters.
                &quot;key&quot;: &quot;A String&quot;, # Key is used to retrieve the corresponding parameter value. This should be unique for a given fired event. These parameters must be predefined in the integration definition.
                &quot;masked&quot;: True or False, # True if this parameter should be masked in the logs
                &quot;value&quot;: { # LINT.IfChange To support various types of parameter values. Next available id: 14 # Values for the defined keys. Each value can either be string, int, double or any proto message.
                  &quot;booleanArray&quot;: {
                    &quot;booleanValues&quot;: [
                      True or False,
                    ],
                  },
                  &quot;booleanValue&quot;: True or False,
                  &quot;doubleArray&quot;: {
                    &quot;doubleValues&quot;: [
                      3.14,
                    ],
                  },
                  &quot;doubleValue&quot;: 3.14,
                  &quot;intArray&quot;: {
                    &quot;intValues&quot;: [
                      &quot;A String&quot;,
                    ],
                  },
                  &quot;intValue&quot;: &quot;A String&quot;,
                  &quot;protoArray&quot;: {
                    &quot;protoValues&quot;: [
                      {
                        &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
                      },
                    ],
                  },
                  &quot;protoValue&quot;: {
                    &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
                  },
                  &quot;serializedObjectValue&quot;: {
                    &quot;objectValue&quot;: &quot;A String&quot;,
                  },
                  &quot;stringArray&quot;: {
                    &quot;stringValues&quot;: [
                      &quot;A String&quot;,
                    ],
                  },
                  &quot;stringValue&quot;: &quot;A String&quot;,
                },
              },
            ],
          },
          &quot;triggerCriteriaTaskImplementationClassName&quot;: &quot;A String&quot;, # Optional. Implementation class name. The class should implement the “TypedTask” interface.
        },
        &quot;triggerId&quot;: &quot;A String&quot;, # The backend trigger ID.
        &quot;triggerName&quot;: &quot;A String&quot;, # Optional. Name of the trigger This is added to identify the type of trigger. This is avoid the logic on triggerId to identify the trigger_type and push the same to monitoring.
        &quot;triggerNumber&quot;: &quot;A String&quot;, # Required. A number to uniquely identify each trigger config within the workflow on UI.
        &quot;triggerType&quot;: &quot;A String&quot;,
      },
    ],
    &quot;updateTime&quot;: &quot;A String&quot;, # Output only. Auto-generated.
    &quot;userLabel&quot;: &quot;A String&quot;, # Optional. A user-defined label that annotates an integration version. Typically, this is only set when the integration version is created.
  },
  &quot;parameters&quot;: { # LINT.IfChange This message is used for processing and persisting (when applicable) key value pair parameters for each event in the event bus. Please see # Optional. Passed in as parameters to each integration execution.
    &quot;parameters&quot;: [ # Parameters are a part of Event and can be used to communicate between different tasks that are part of the same workflow execution.
      { # Key-value pair of EventBus parameters.
        &quot;dataType&quot;: &quot;A String&quot;, # Explicitly getting the type of the parameter.
        &quot;key&quot;: &quot;A String&quot;, # Key is used to retrieve the corresponding parameter value. This should be unique for a given fired event. These parameters must be predefined in the workflow definition.
        &quot;masked&quot;: True or False, # True if this parameter should be masked in the logs
        &quot;value&quot;: { # To support various types of parameter values. Next available id: 14 # Values for the defined keys. Each value can either be string, int, double or any proto message.
          &quot;booleanArray&quot;: {
            &quot;booleanValues&quot;: [
              True or False,
            ],
          },
          &quot;booleanValue&quot;: True or False,
          &quot;doubleArray&quot;: {
            &quot;doubleValues&quot;: [
              3.14,
            ],
          },
          &quot;doubleValue&quot;: 3.14,
          &quot;intArray&quot;: {
            &quot;intValues&quot;: [
              &quot;A String&quot;,
            ],
          },
          &quot;intValue&quot;: &quot;A String&quot;,
          &quot;jsonValue&quot;: &quot;A String&quot;,
          &quot;protoArray&quot;: {
            &quot;protoValues&quot;: [
              {
                &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
              },
            ],
          },
          &quot;protoValue&quot;: {
            &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
          },
          &quot;serializedObjectValue&quot;: {
            &quot;objectValue&quot;: &quot;A String&quot;,
          },
          &quot;stringArray&quot;: {
            &quot;stringValues&quot;: [
              &quot;A String&quot;,
            ],
          },
          &quot;stringValue&quot;: &quot;A String&quot;,
        },
      },
    ],
  },
  &quot;testMode&quot;: True or False, # Optional. Can be specified in the event request, otherwise false (default). If true, enables tasks with condition &quot;test_mode = true&quot;. If false, disables tasks with condition &quot;test_mode = true&quot; if global test mode (set by platform) is also false {@link EventBusConfig}.
  &quot;triggerId&quot;: &quot;A String&quot;, # Required. The trigger id of the integration trigger config. If both trigger_id and client_id is present, the integration is executed from the start tasks provided by the matching trigger config otherwise it is executed from the default start tasks.
}

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

Returns:
  An object of the form:

    { # The response for testing an integration.
  &quot;eventParameters&quot;: { # LINT.IfChange This message is used for processing and persisting (when applicable) key value pair parameters for each event in the event bus. Please see # Details for the integration that were executed.
    &quot;parameters&quot;: [ # Parameters are a part of Event and can be used to communicate between different tasks that are part of the same workflow execution.
      { # Key-value pair of EventBus parameters.
        &quot;dataType&quot;: &quot;A String&quot;, # Explicitly getting the type of the parameter.
        &quot;key&quot;: &quot;A String&quot;, # Key is used to retrieve the corresponding parameter value. This should be unique for a given fired event. These parameters must be predefined in the workflow definition.
        &quot;masked&quot;: True or False, # True if this parameter should be masked in the logs
        &quot;value&quot;: { # To support various types of parameter values. Next available id: 14 # Values for the defined keys. Each value can either be string, int, double or any proto message.
          &quot;booleanArray&quot;: {
            &quot;booleanValues&quot;: [
              True or False,
            ],
          },
          &quot;booleanValue&quot;: True or False,
          &quot;doubleArray&quot;: {
            &quot;doubleValues&quot;: [
              3.14,
            ],
          },
          &quot;doubleValue&quot;: 3.14,
          &quot;intArray&quot;: {
            &quot;intValues&quot;: [
              &quot;A String&quot;,
            ],
          },
          &quot;intValue&quot;: &quot;A String&quot;,
          &quot;jsonValue&quot;: &quot;A String&quot;,
          &quot;protoArray&quot;: {
            &quot;protoValues&quot;: [
              {
                &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
              },
            ],
          },
          &quot;protoValue&quot;: {
            &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
          },
          &quot;serializedObjectValue&quot;: {
            &quot;objectValue&quot;: &quot;A String&quot;,
          },
          &quot;stringArray&quot;: {
            &quot;stringValues&quot;: [
              &quot;A String&quot;,
            ],
          },
          &quot;stringValue&quot;: &quot;A String&quot;,
        },
      },
    ],
  },
  &quot;executionFailed&quot;: True or False, # Is true if any execution in the integration failed. False otherwise.
  &quot;executionId&quot;: &quot;A String&quot;, # The id of the execution corresponding to this run of integration.
  &quot;parameterEntries&quot;: [ # Parameters are a part of Event and can be used to communicate between different tasks that are part of the same integration execution.
    { # Key-value pair of EventBus parameters.
      &quot;dataType&quot;: &quot;A String&quot;, # Explicitly getting the type of the parameter.
      &quot;key&quot;: &quot;A String&quot;, # Key is used to retrieve the corresponding parameter value. This should be unique for a given fired event. These parameters must be predefined in the workflow definition.
      &quot;masked&quot;: True or False, # True if this parameter should be masked in the logs
      &quot;value&quot;: { # To support various types of parameter values. Next available id: 14 # Values for the defined keys. Each value can either be string, int, double or any proto message.
        &quot;booleanArray&quot;: {
          &quot;booleanValues&quot;: [
            True or False,
          ],
        },
        &quot;booleanValue&quot;: True or False,
        &quot;doubleArray&quot;: {
          &quot;doubleValues&quot;: [
            3.14,
          ],
        },
        &quot;doubleValue&quot;: 3.14,
        &quot;intArray&quot;: {
          &quot;intValues&quot;: [
            &quot;A String&quot;,
          ],
        },
        &quot;intValue&quot;: &quot;A String&quot;,
        &quot;jsonValue&quot;: &quot;A String&quot;,
        &quot;protoArray&quot;: {
          &quot;protoValues&quot;: [
            {
              &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
            },
          ],
        },
        &quot;protoValue&quot;: {
          &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
        },
        &quot;serializedObjectValue&quot;: {
          &quot;objectValue&quot;: &quot;A String&quot;,
        },
        &quot;stringArray&quot;: {
          &quot;stringValues&quot;: [
            &quot;A String&quot;,
          ],
        },
        &quot;stringValue&quot;: &quot;A String&quot;,
      },
    },
  ],
  &quot;parameters&quot;: { # Optional. Parameters are a part of Event and can be used to communicate between different tasks that are part of the same integration execution.
    &quot;a_key&quot;: { # The type of the parameter.
      &quot;booleanArray&quot;: { # This message only contains a field of boolean array. # Boolean Array.
        &quot;booleanValues&quot;: [ # Boolean array.
          True or False,
        ],
      },
      &quot;booleanValue&quot;: True or False, # Boolean.
      &quot;doubleArray&quot;: { # This message only contains a field of double number array. # Double Number Array.
        &quot;doubleValues&quot;: [ # Double number array.
          3.14,
        ],
      },
      &quot;doubleValue&quot;: 3.14, # Double Number.
      &quot;intArray&quot;: { # This message only contains a field of integer array. # Integer Array.
        &quot;intValues&quot;: [ # Integer array.
          &quot;A String&quot;,
        ],
      },
      &quot;intValue&quot;: &quot;A String&quot;, # Integer.
      &quot;jsonValue&quot;: &quot;A String&quot;, # Json.
      &quot;stringArray&quot;: { # This message only contains a field of string array. # String Array.
        &quot;stringValues&quot;: [ # String array.
          &quot;A String&quot;,
        ],
      },
      &quot;stringValue&quot;: &quot;A String&quot;, # String.
    },
  },
}</pre>
</div>

<div class="method">
    <code class="details" id="unpublish">unpublish(name, body=None, x__xgafv=None)</code>
  <pre>Sets the status of the ACTIVE integration to SNAPSHOT with a new tag &quot;PREVIOUSLY_PUBLISHED&quot; after validating it. The &quot;HEAD&quot; and &quot;PUBLISH_REQUESTED&quot; tags do not change. This RPC throws an exception if the version being snapshot is not ACTIVE. Audit fields added include action, action_by, action_timestamp.

Args:
  name: string, Required. The version to deactivate. Format: projects/{project}/locations/{location}/integrations/{integration}/versions/{version} (required)
  body: object, The request body.
    The object takes the form of:

{ # Request for UnpublishIntegrationVersion.
}

  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); }
}</pre>
</div>

<div class="method">
    <code class="details" id="upload">upload(parent, body=None, x__xgafv=None)</code>
  <pre>Uploads an integration. The content can be a previously downloaded integration. Performs the same function as CreateDraftIntegrationVersion, but accepts input in a string format, which holds the complete representation of the IntegrationVersion content.

Args:
  parent: string, Required. The version to upload. Format: projects/{project}/locations/{location}/integrations/{integration} (required)
  body: object, The request body.
    The object takes the form of:

{ # Request for UploadIntegrationVersion.
  &quot;content&quot;: &quot;A String&quot;, # The textproto of the IntegrationVersion.
  &quot;fileFormat&quot;: &quot;A String&quot;, # File format for upload request.
}

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

Returns:
  An object of the form:

    { # Response for UploadIntegrationVersion.
  &quot;integrationVersion&quot;: { # The integration version definition. # The uploaded integration.
    &quot;cloudKmsKey&quot;: &quot;A String&quot;, # Optional. Cloud KMS resource name for the CMEK encryption key.
    &quot;cloudLoggingDetails&quot;: { # Cloud Logging details for execution info # Optional. Cloud Logging details for the integration version
      &quot;cloudLoggingSeverity&quot;: &quot;A String&quot;, # Optional. Severity selected by the customer for the logs to be sent to Cloud Logging, for the integration version getting executed.
      &quot;enableCloudLogging&quot;: True or False, # Optional. Status of whether Cloud Logging is enabled or not for the integration version getting executed.
    },
    &quot;createTime&quot;: &quot;A String&quot;, # Output only. Auto-generated.
    &quot;createdFromTemplate&quot;: &quot;A String&quot;, # Optional. Optional. The resource name of the template from which the integration is created.
    &quot;databasePersistencePolicy&quot;: &quot;A String&quot;, # Optional. Flag to disable database persistence for execution data, including event execution info, execution export info, execution metadata index and execution param index.
    &quot;description&quot;: &quot;A String&quot;, # Optional. The integration description.
    &quot;enableVariableMasking&quot;: True or False, # Optional. True if variable masking feature should be turned on for this version
    &quot;errorCatcherConfigs&quot;: [ # Optional. Error Catch Task configuration for the integration. It&#x27;s optional.
      { # Configuration detail of a error catch task
        &quot;description&quot;: &quot;A String&quot;, # Optional. User-provided description intended to give more business context about the error catcher config.
        &quot;errorCatcherId&quot;: &quot;A String&quot;, # Required. An error catcher id is string representation for the error catcher config. Within a workflow, error_catcher_id uniquely identifies an error catcher config among all error catcher configs for the workflow
        &quot;errorCatcherNumber&quot;: &quot;A String&quot;, # Required. A number to uniquely identify each error catcher config within the workflow on UI.
        &quot;label&quot;: &quot;A String&quot;, # Optional. The user created label for a particular error catcher. Optional.
        &quot;position&quot;: { # Configuration detail of coordinate, it used for UI # Optional. Informs the front-end application where to draw this error catcher config on the UI.
          &quot;x&quot;: 42, # Required. X axis of the coordinate
          &quot;y&quot;: 42, # Required. Y axis of the coordinate
        },
        &quot;startErrorTasks&quot;: [ # Required. The set of start tasks that are to be executed for the error catch flow
          { # The task that is next in line to be executed, if the condition specified evaluated to true.
            &quot;condition&quot;: &quot;A String&quot;, # Standard filter expression for this task to become an eligible next task.
            &quot;description&quot;: &quot;A String&quot;, # User-provided description intended to give additional business context about the task.
            &quot;displayName&quot;: &quot;A String&quot;, # User-provided label that is attached to this edge in the UI.
            &quot;taskConfigId&quot;: &quot;A String&quot;, # ID of the next task.
            &quot;taskId&quot;: &quot;A String&quot;, # Task number of the next task.
          },
        ],
      },
    ],
    &quot;integrationConfigParameters&quot;: [ # Optional. Config Parameters that are expected to be passed to the integration when an integration is published. This consists of all the parameters that are expected to provide configuration in the integration execution. This gives the user the ability to provide default values, value, add information like connection url, project based configuration value and also provide data types of each parameter.
      { # Integration Config Parameter is defined in the integration config and are used to provide external configuration for integration. It provide information about data types of the expected parameters and provide any default values or value. They can also be used to add custom attributes.
        &quot;parameter&quot;: { # Integration Parameter is defined in the integration config and are used to provide information about data types of the expected parameters and provide any default values if needed. They can also be used to add custom attributes. These are static in nature and should not be used for dynamic event definition. # Optional. Integration Parameter to provide the default value, data type and attributes required for the Integration config variables.
          &quot;containsLargeData&quot;: True or False, # Indicates whether this variable contains large data and need to be uploaded to Cloud Storage.
          &quot;dataType&quot;: &quot;A String&quot;, # Type of the parameter.
          &quot;defaultValue&quot;: { # The type of the parameter. # Default values for the defined keys. Each value can either be string, int, double or any proto message or a serialized object.
            &quot;booleanArray&quot;: { # This message only contains a field of boolean array. # Boolean Array.
              &quot;booleanValues&quot;: [ # Boolean array.
                True or False,
              ],
            },
            &quot;booleanValue&quot;: True or False, # Boolean.
            &quot;doubleArray&quot;: { # This message only contains a field of double number array. # Double Number Array.
              &quot;doubleValues&quot;: [ # Double number array.
                3.14,
              ],
            },
            &quot;doubleValue&quot;: 3.14, # Double Number.
            &quot;intArray&quot;: { # This message only contains a field of integer array. # Integer Array.
              &quot;intValues&quot;: [ # Integer array.
                &quot;A String&quot;,
              ],
            },
            &quot;intValue&quot;: &quot;A String&quot;, # Integer.
            &quot;jsonValue&quot;: &quot;A String&quot;, # Json.
            &quot;stringArray&quot;: { # This message only contains a field of string array. # String Array.
              &quot;stringValues&quot;: [ # String array.
                &quot;A String&quot;,
              ],
            },
            &quot;stringValue&quot;: &quot;A String&quot;, # String.
          },
          &quot;description&quot;: &quot;A String&quot;, # Optional. Description of the parameter.
          &quot;displayName&quot;: &quot;A String&quot;, # The name (without prefix) to be displayed in the UI for this parameter. E.g. if the key is &quot;foo.bar.myName&quot;, then the name would be &quot;myName&quot;.
          &quot;inputOutputType&quot;: &quot;A String&quot;, # Specifies the input/output type for the parameter.
          &quot;isTransient&quot;: True or False, # Whether this parameter is a transient parameter.
          &quot;jsonSchema&quot;: &quot;A String&quot;, # This schema will be used to validate runtime JSON-typed values of this parameter.
          &quot;key&quot;: &quot;A String&quot;, # Key is used to retrieve the corresponding parameter value. This should be unique for a given fired event. These parameters must be predefined in the integration definition.
          &quot;masked&quot;: True or False, # True if this parameter should be masked in the logs
          &quot;producer&quot;: &quot;A String&quot;, # The identifier of the node (TaskConfig/TriggerConfig) this parameter was produced by, if it is a transient param or a copy of an input param.
          &quot;searchable&quot;: True or False, # Searchable in the execution log or not.
        },
        &quot;value&quot;: { # The type of the parameter. # Values for the defined keys. Each value can either be string, int, double or any proto message or a serialized object.
          &quot;booleanArray&quot;: { # This message only contains a field of boolean array. # Boolean Array.
            &quot;booleanValues&quot;: [ # Boolean array.
              True or False,
            ],
          },
          &quot;booleanValue&quot;: True or False, # Boolean.
          &quot;doubleArray&quot;: { # This message only contains a field of double number array. # Double Number Array.
            &quot;doubleValues&quot;: [ # Double number array.
              3.14,
            ],
          },
          &quot;doubleValue&quot;: 3.14, # Double Number.
          &quot;intArray&quot;: { # This message only contains a field of integer array. # Integer Array.
            &quot;intValues&quot;: [ # Integer array.
              &quot;A String&quot;,
            ],
          },
          &quot;intValue&quot;: &quot;A String&quot;, # Integer.
          &quot;jsonValue&quot;: &quot;A String&quot;, # Json.
          &quot;stringArray&quot;: { # This message only contains a field of string array. # String Array.
            &quot;stringValues&quot;: [ # String array.
              &quot;A String&quot;,
            ],
          },
          &quot;stringValue&quot;: &quot;A String&quot;, # String.
        },
      },
    ],
    &quot;integrationParameters&quot;: [ # Optional. Parameters that are expected to be passed to the integration when an event is triggered. This consists of all the parameters that are expected in the integration execution. This gives the user the ability to provide default values, add information like PII and also provide data types of each parameter.
      { # Integration Parameter is defined in the integration config and are used to provide information about data types of the expected parameters and provide any default values if needed. They can also be used to add custom attributes. These are static in nature and should not be used for dynamic event definition.
        &quot;containsLargeData&quot;: True or False, # Indicates whether this variable contains large data and need to be uploaded to Cloud Storage.
        &quot;dataType&quot;: &quot;A String&quot;, # Type of the parameter.
        &quot;defaultValue&quot;: { # The type of the parameter. # Default values for the defined keys. Each value can either be string, int, double or any proto message or a serialized object.
          &quot;booleanArray&quot;: { # This message only contains a field of boolean array. # Boolean Array.
            &quot;booleanValues&quot;: [ # Boolean array.
              True or False,
            ],
          },
          &quot;booleanValue&quot;: True or False, # Boolean.
          &quot;doubleArray&quot;: { # This message only contains a field of double number array. # Double Number Array.
            &quot;doubleValues&quot;: [ # Double number array.
              3.14,
            ],
          },
          &quot;doubleValue&quot;: 3.14, # Double Number.
          &quot;intArray&quot;: { # This message only contains a field of integer array. # Integer Array.
            &quot;intValues&quot;: [ # Integer array.
              &quot;A String&quot;,
            ],
          },
          &quot;intValue&quot;: &quot;A String&quot;, # Integer.
          &quot;jsonValue&quot;: &quot;A String&quot;, # Json.
          &quot;stringArray&quot;: { # This message only contains a field of string array. # String Array.
            &quot;stringValues&quot;: [ # String array.
              &quot;A String&quot;,
            ],
          },
          &quot;stringValue&quot;: &quot;A String&quot;, # String.
        },
        &quot;description&quot;: &quot;A String&quot;, # Optional. Description of the parameter.
        &quot;displayName&quot;: &quot;A String&quot;, # The name (without prefix) to be displayed in the UI for this parameter. E.g. if the key is &quot;foo.bar.myName&quot;, then the name would be &quot;myName&quot;.
        &quot;inputOutputType&quot;: &quot;A String&quot;, # Specifies the input/output type for the parameter.
        &quot;isTransient&quot;: True or False, # Whether this parameter is a transient parameter.
        &quot;jsonSchema&quot;: &quot;A String&quot;, # This schema will be used to validate runtime JSON-typed values of this parameter.
        &quot;key&quot;: &quot;A String&quot;, # Key is used to retrieve the corresponding parameter value. This should be unique for a given fired event. These parameters must be predefined in the integration definition.
        &quot;masked&quot;: True or False, # True if this parameter should be masked in the logs
        &quot;producer&quot;: &quot;A String&quot;, # The identifier of the node (TaskConfig/TriggerConfig) this parameter was produced by, if it is a transient param or a copy of an input param.
        &quot;searchable&quot;: True or False, # Searchable in the execution log or not.
      },
    ],
    &quot;integrationParametersInternal&quot;: { # LINT.IfChange This is the frontend version of WorkflowParameters. It&#x27;s exactly like the backend version except that instead of flattening protobuf parameters and treating every field and subfield of a protobuf parameter as a separate parameter, the fields/subfields of a protobuf parameter will be nested as &quot;children&quot; (see &#x27;children&#x27; field below) parameters of the parent parameter. Please refer to enterprise/crm/eventbus/proto/workflow_parameters.proto for more information about WorkflowParameters. # Optional. Parameters that are expected to be passed to the integration when an event is triggered. This consists of all the parameters that are expected in the integration execution. This gives the user the ability to provide default values, add information like PII and also provide data types of each parameter.
      &quot;parameters&quot;: [ # Parameters are a part of Event and can be used to communiticate between different tasks that are part of the same workflow execution.
        {
          &quot;attributes&quot;: { # Attributes are additional options that can be associated with each event property. For more information, see # Metadata information about the parameters.
            &quot;dataType&quot;: &quot;A String&quot;, # Things like URL, Email, Currency, Timestamp (rather than string, int64...)
            &quot;defaultValue&quot;: { # Used for define type for values. Currently supported value types include int, string, double, array, and any proto message. # Used to define defaults.
              &quot;booleanValue&quot;: True or False,
              &quot;doubleArray&quot;: {
                &quot;values&quot;: [
                  3.14,
                ],
              },
              &quot;doubleValue&quot;: 3.14,
              &quot;intArray&quot;: {
                &quot;values&quot;: [
                  &quot;A String&quot;,
                ],
              },
              &quot;intValue&quot;: &quot;A String&quot;,
              &quot;protoValue&quot;: {
                &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
              },
              &quot;stringArray&quot;: {
                &quot;values&quot;: [
                  &quot;A String&quot;,
                ],
              },
              &quot;stringValue&quot;: &quot;A String&quot;,
            },
            &quot;isRequired&quot;: True or False, # Required for event execution. The validation will be done by the event bus when the event is triggered.
            &quot;isSearchable&quot;: True or False, # Used to indicate if a ParameterEntry should be converted to ParamIndexes for ST-Spanner full-text search. DEPRECATED: use searchable.
            &quot;logSettings&quot;: { # The LogSettings define the logging attributes for an event property. These attributes are used to map the property to the parameter in the log proto. Also used to define scrubbing/truncation behavior and PII information. # See
              &quot;logFieldName&quot;: &quot;A String&quot;, # The name of corresponding logging field of the event property. If omitted, assumes the same name as the event property key.
              &quot;seedPeriod&quot;: &quot;A String&quot;,
              &quot;seedScope&quot;: &quot;A String&quot;,
            },
            &quot;masked&quot;: True or False, # True if this workflow parameter should be masked in the logs
            &quot;readOnly&quot;: True or False, # Used to indicate if the ParameterEntry is a read only field or not.
            &quot;searchable&quot;: &quot;A String&quot;,
            &quot;taskVisibility&quot;: [ # List of tasks that can view this property, if empty then all.
              &quot;A String&quot;,
            ],
          },
          &quot;children&quot;: [ # Child parameters nested within this parameter. This field only applies to protobuf parameters
            # Object with schema name: EnterpriseCrmFrontendsEventbusProtoWorkflowParameterEntry
          ],
          &quot;containsLargeData&quot;: True or False, # Indicates whether this variable contains large data and need to be uploaded to Cloud Storage.
          &quot;dataType&quot;: &quot;A String&quot;, # The data type of the parameter.
          &quot;defaultValue&quot;: { # To support various types of parameter values. Next available id: 14 # Default values for the defined keys. Each value can either be string, int, double or any proto message or a serialized object.
            &quot;booleanArray&quot;: {
              &quot;booleanValues&quot;: [
                True or False,
              ],
            },
            &quot;booleanValue&quot;: True or False,
            &quot;doubleArray&quot;: {
              &quot;doubleValues&quot;: [
                3.14,
              ],
            },
            &quot;doubleValue&quot;: 3.14,
            &quot;intArray&quot;: {
              &quot;intValues&quot;: [
                &quot;A String&quot;,
              ],
            },
            &quot;intValue&quot;: &quot;A String&quot;,
            &quot;jsonValue&quot;: &quot;A String&quot;,
            &quot;protoArray&quot;: {
              &quot;protoValues&quot;: [
                {
                  &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
                },
              ],
            },
            &quot;protoValue&quot;: {
              &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
            },
            &quot;serializedObjectValue&quot;: {
              &quot;objectValue&quot;: &quot;A String&quot;,
            },
            &quot;stringArray&quot;: {
              &quot;stringValues&quot;: [
                &quot;A String&quot;,
              ],
            },
            &quot;stringValue&quot;: &quot;A String&quot;,
          },
          &quot;description&quot;: &quot;A String&quot;, # Optional. The description about the parameter
          &quot;inOutType&quot;: &quot;A String&quot;, # Specifies the input/output type for the parameter.
          &quot;isTransient&quot;: True or False, # Whether this parameter is a transient parameter.
          &quot;jsonSchema&quot;: &quot;A String&quot;, # This schema will be used to validate runtime JSON-typed values of this parameter.
          &quot;key&quot;: &quot;A String&quot;, # Key is used to retrieve the corresponding parameter value. This should be unique for a given fired event. These parameters must be predefined in the workflow definition.
          &quot;name&quot;: &quot;A String&quot;, # The name (without prefix) to be displayed in the UI for this parameter. E.g. if the key is &quot;foo.bar.myName&quot;, then the name would be &quot;myName&quot;.
          &quot;producedBy&quot;: { # Represents a node identifier (type + id). Next highest id: 3 # The identifier of the node (TaskConfig/TriggerConfig) this parameter was produced by, if it is a transient param or a copy of an input param.
            &quot;elementIdentifier&quot;: &quot;A String&quot;, # Configuration of the edge.
            &quot;elementType&quot;: &quot;A String&quot;, # Destination node where the edge ends. It can only be a task config.
          },
          &quot;producer&quot;: &quot;A String&quot;,
          &quot;protoDefName&quot;: &quot;A String&quot;, # The name of the protobuf type if the parameter has a protobuf data type.
          &quot;protoDefPath&quot;: &quot;A String&quot;, # If the data type is of type proto or proto array, this field needs to be populated with the fully qualified proto name. This message, for example, would be &quot;enterprise.crm.frontends.eventbus.proto.WorkflowParameterEntry&quot;.
          &quot;required&quot;: True or False,
        },
      ],
    },
    &quot;lastModifierEmail&quot;: &quot;A String&quot;, # Optional. The last modifier&#x27;s email address. Generated based on the End User Credentials/LOAS role of the user making the call.
    &quot;lockHolder&quot;: &quot;A String&quot;, # Optional. The edit lock holder&#x27;s email address. Generated based on the End User Credentials/LOAS role of the user making the call.
    &quot;name&quot;: &quot;A String&quot;, # Output only. Auto-generated primary key.
    &quot;origin&quot;: &quot;A String&quot;, # Optional. The origin that indicates where this integration is coming from.
    &quot;parentTemplateId&quot;: &quot;A String&quot;, # Optional. The id of the template which was used to create this integration_version.
    &quot;runAsServiceAccount&quot;: &quot;A String&quot;, # Optional. The run-as service account email, if set and auth config is not configured, that will be used to generate auth token to be used in Connector task, Rest caller task and Cloud function task.
    &quot;snapshotNumber&quot;: &quot;A String&quot;, # Output only. An increasing sequence that is set when a new snapshot is created. The last created snapshot can be identified by [workflow_name, org_id latest(snapshot_number)]. However, last created snapshot need not be same as the HEAD. So users should always use &quot;HEAD&quot; tag to identify the head.
    &quot;state&quot;: &quot;A String&quot;, # Output only. User should not set it as an input.
    &quot;status&quot;: &quot;A String&quot;, # Output only. Generated by eventbus. User should not set it as an input.
    &quot;taskConfigs&quot;: [ # Optional. Task configuration for the integration. It&#x27;s optional, but the integration doesn&#x27;t do anything without task_configs.
      { # The task configuration details. This is not the implementation of Task. There might be multiple TaskConfigs for the same Task.
        &quot;conditionalFailurePolicies&quot;: { # Conditional task failur retry strategies # Optional. The list of conditional failure policies that will be applied to the task in order.
          &quot;defaultFailurePolicy&quot;: { # Policy that defines the task retry logic and failure type. If no FailurePolicy is defined for a task, all its dependent tasks will not be executed (i.e, a `retry_strategy` of NONE will be applied). # The default failure policy to be applied if no conditional failure policy matches.
            &quot;condition&quot;: &quot;A String&quot;, # Optional. The string condition that will be evaluated to determine if the task should be retried with this failure policy.
            &quot;intervalTime&quot;: &quot;A String&quot;, # Required if retry_strategy is FIXED_INTERVAL or LINEAR/EXPONENTIAL_BACKOFF/RESTART_INTEGRATION_WITH_BACKOFF. Defines the initial interval in seconds for backoff.
            &quot;maxRetries&quot;: 42, # Required if retry_strategy is FIXED_INTERVAL or LINEAR/EXPONENTIAL_BACKOFF/RESTART_INTEGRATION_WITH_BACKOFF. Defines the number of times the task will be retried if failed.
            &quot;retryStrategy&quot;: &quot;A String&quot;, # Defines what happens to the task upon failure.
          },
          &quot;failurePolicies&quot;: [ # The list of failure policies that will be applied to the task in order.
            { # Policy that defines the task retry logic and failure type. If no FailurePolicy is defined for a task, all its dependent tasks will not be executed (i.e, a `retry_strategy` of NONE will be applied).
              &quot;condition&quot;: &quot;A String&quot;, # Optional. The string condition that will be evaluated to determine if the task should be retried with this failure policy.
              &quot;intervalTime&quot;: &quot;A String&quot;, # Required if retry_strategy is FIXED_INTERVAL or LINEAR/EXPONENTIAL_BACKOFF/RESTART_INTEGRATION_WITH_BACKOFF. Defines the initial interval in seconds for backoff.
              &quot;maxRetries&quot;: 42, # Required if retry_strategy is FIXED_INTERVAL or LINEAR/EXPONENTIAL_BACKOFF/RESTART_INTEGRATION_WITH_BACKOFF. Defines the number of times the task will be retried if failed.
              &quot;retryStrategy&quot;: &quot;A String&quot;, # Defines what happens to the task upon failure.
            },
          ],
        },
        &quot;description&quot;: &quot;A String&quot;, # Optional. User-provided description intended to give additional business context about the task.
        &quot;displayName&quot;: &quot;A String&quot;, # Optional. User-provided label that is attached to this TaskConfig in the UI.
        &quot;errorCatcherId&quot;: &quot;A String&quot;, # Optional. Optional Error catcher id of the error catch flow which will be executed when execution error happens in the task
        &quot;externalTaskType&quot;: &quot;A String&quot;, # Optional. External task type of the task
        &quot;failurePolicy&quot;: { # Policy that defines the task retry logic and failure type. If no FailurePolicy is defined for a task, all its dependent tasks will not be executed (i.e, a `retry_strategy` of NONE will be applied). # Optional. Determines the number of times the task will be retried on failure and with what retry strategy. This is applicable for asynchronous calls to Eventbus alone (Post To Queue, Schedule etc.).
          &quot;condition&quot;: &quot;A String&quot;, # Optional. The string condition that will be evaluated to determine if the task should be retried with this failure policy.
          &quot;intervalTime&quot;: &quot;A String&quot;, # Required if retry_strategy is FIXED_INTERVAL or LINEAR/EXPONENTIAL_BACKOFF/RESTART_INTEGRATION_WITH_BACKOFF. Defines the initial interval in seconds for backoff.
          &quot;maxRetries&quot;: 42, # Required if retry_strategy is FIXED_INTERVAL or LINEAR/EXPONENTIAL_BACKOFF/RESTART_INTEGRATION_WITH_BACKOFF. Defines the number of times the task will be retried if failed.
          &quot;retryStrategy&quot;: &quot;A String&quot;, # Defines what happens to the task upon failure.
        },
        &quot;jsonValidationOption&quot;: &quot;A String&quot;, # Optional. If set, overrides the option configured in the Task implementation class.
        &quot;nextTasks&quot;: [ # Optional. The set of tasks that are next in line to be executed as per the execution graph defined for the parent event, specified by `event_config_id`. Each of these next tasks are executed only if the condition associated with them evaluates to true.
          { # The task that is next in line to be executed, if the condition specified evaluated to true.
            &quot;condition&quot;: &quot;A String&quot;, # Standard filter expression for this task to become an eligible next task.
            &quot;description&quot;: &quot;A String&quot;, # User-provided description intended to give additional business context about the task.
            &quot;displayName&quot;: &quot;A String&quot;, # User-provided label that is attached to this edge in the UI.
            &quot;taskConfigId&quot;: &quot;A String&quot;, # ID of the next task.
            &quot;taskId&quot;: &quot;A String&quot;, # Task number of the next task.
          },
        ],
        &quot;nextTasksExecutionPolicy&quot;: &quot;A String&quot;, # Optional. The policy dictating the execution of the next set of tasks for the current task.
        &quot;parameters&quot;: { # Optional. The customized parameters the user can pass to this task.
          &quot;a_key&quot;: { # This message is used for processing and persisting (when applicable) key value pair parameters for each event in the event bus. Next available id: 4
            &quot;key&quot;: &quot;A String&quot;, # Key is used to retrieve the corresponding parameter value. This should be unique for a given fired event. These parameters must be predefined in the integration definition.
            &quot;masked&quot;: True or False, # True if this parameter should be masked in the logs
            &quot;value&quot;: { # The type of the parameter. # Values for the defined keys. Each value can either be string, int, double or any proto message.
              &quot;booleanArray&quot;: { # This message only contains a field of boolean array. # Boolean Array.
                &quot;booleanValues&quot;: [ # Boolean array.
                  True or False,
                ],
              },
              &quot;booleanValue&quot;: True or False, # Boolean.
              &quot;doubleArray&quot;: { # This message only contains a field of double number array. # Double Number Array.
                &quot;doubleValues&quot;: [ # Double number array.
                  3.14,
                ],
              },
              &quot;doubleValue&quot;: 3.14, # Double Number.
              &quot;intArray&quot;: { # This message only contains a field of integer array. # Integer Array.
                &quot;intValues&quot;: [ # Integer array.
                  &quot;A String&quot;,
                ],
              },
              &quot;intValue&quot;: &quot;A String&quot;, # Integer.
              &quot;jsonValue&quot;: &quot;A String&quot;, # Json.
              &quot;stringArray&quot;: { # This message only contains a field of string array. # String Array.
                &quot;stringValues&quot;: [ # String array.
                  &quot;A String&quot;,
                ],
              },
              &quot;stringValue&quot;: &quot;A String&quot;, # String.
            },
          },
        },
        &quot;position&quot;: { # Configuration detail of coordinate, it used for UI # Optional. Informs the front-end application where to draw this error catcher config on the UI.
          &quot;x&quot;: 42, # Required. X axis of the coordinate
          &quot;y&quot;: 42, # Required. Y axis of the coordinate
        },
        &quot;successPolicy&quot;: { # Policy that dictates the behavior for the task after it completes successfully. # Optional. Determines what action to take upon successful task completion.
          &quot;finalState&quot;: &quot;A String&quot;, # State to which the execution snapshot status will be set if the task succeeds.
        },
        &quot;synchronousCallFailurePolicy&quot;: { # Policy that defines the task retry logic and failure type. If no FailurePolicy is defined for a task, all its dependent tasks will not be executed (i.e, a `retry_strategy` of NONE will be applied). # Optional. Determines the number of times the task will be retried on failure and with what retry strategy. This is applicable for synchronous calls to Eventbus alone (Post).
          &quot;condition&quot;: &quot;A String&quot;, # Optional. The string condition that will be evaluated to determine if the task should be retried with this failure policy.
          &quot;intervalTime&quot;: &quot;A String&quot;, # Required if retry_strategy is FIXED_INTERVAL or LINEAR/EXPONENTIAL_BACKOFF/RESTART_INTEGRATION_WITH_BACKOFF. Defines the initial interval in seconds for backoff.
          &quot;maxRetries&quot;: 42, # Required if retry_strategy is FIXED_INTERVAL or LINEAR/EXPONENTIAL_BACKOFF/RESTART_INTEGRATION_WITH_BACKOFF. Defines the number of times the task will be retried if failed.
          &quot;retryStrategy&quot;: &quot;A String&quot;, # Defines what happens to the task upon failure.
        },
        &quot;task&quot;: &quot;A String&quot;, # Optional. The name for the task.
        &quot;taskExecutionStrategy&quot;: &quot;A String&quot;, # Optional. The policy dictating the execution strategy of this task.
        &quot;taskId&quot;: &quot;A String&quot;, # Required. The identifier of this task within its parent event config, specified by the client. This should be unique among all the tasks belong to the same event config. We use this field as the identifier to find next tasks (via field `next_tasks.task_id`).
        &quot;taskTemplate&quot;: &quot;A String&quot;, # Optional. Used to define task-template name if task is of type task-template
      },
    ],
    &quot;taskConfigsInternal&quot;: [ # Optional. Task configuration for the integration. It&#x27;s optional, but the integration doesn&#x27;t do anything without task_configs.
      { # The task configuration details. This is not the implementation of Task. There might be multiple TaskConfigs for the same Task.
        &quot;alertConfigs&quot;: [ # Alert configurations on error rate, warning rate, number of runs, durations, etc.
          { # Message to be used to configure alerting in the {@code TaskConfig} protos for tasks in an event.
            &quot;aggregationPeriod&quot;: &quot;A String&quot;, # The period over which the metric value should be aggregated and evaluated. Format is , where integer should be a positive integer and unit should be one of (s,m,h,d,w) meaning (second, minute, hour, day, week).
            &quot;alertDisabled&quot;: True or False, # Set to false by default. When set to true, the metrics are not aggregated or pushed to Monarch for this workflow alert.
            &quot;alertName&quot;: &quot;A String&quot;, # A name to identify this alert. This will be displayed in the alert subject. If set, this name should be unique in within the scope of the containing workflow.
            &quot;clientId&quot;: &quot;A String&quot;, # Client associated with this alert configuration. Must be a client enabled in one of the containing workflow&#x27;s triggers.
            &quot;durationThresholdMs&quot;: &quot;A String&quot;, # Should be specified only for TASK_AVERAGE_DURATION and TASK_PERCENTILE_DURATION metrics. This member should be used to specify what duration value the metrics should exceed for the alert to trigger.
            &quot;errorEnumList&quot;: { # List of error enums for alerts.
              &quot;enumStrings&quot;: [
                &quot;A String&quot;,
              ],
              &quot;filterType&quot;: &quot;A String&quot;,
            },
            &quot;metricType&quot;: &quot;A String&quot;,
            &quot;numAggregationPeriods&quot;: 42, # For how many contiguous aggregation periods should the expected min or max be violated for the alert to be fired.
            &quot;onlyFinalAttempt&quot;: True or False, # Only count final task attempts, not retries.
            &quot;playbookUrl&quot;: &quot;A String&quot;, # Link to a playbook for resolving the issue that triggered this alert.
            &quot;thresholdType&quot;: &quot;A String&quot;, # The threshold type for which this alert is being configured. If value falls below expected_min or exceeds expected_max, an alert will be fired.
            &quot;thresholdValue&quot;: { # The threshold value of the metric, above or below which the alert should be triggered. See EventAlertConfig or TaskAlertConfig for the different alert metric types in each case. For the *RATE metrics, one or both of these fields may be set. Zero is the default value and can be left at that. For *PERCENTILE_DURATION metrics, one or both of these fields may be set, and also, the duration threshold value should be specified in the threshold_duration_ms member below. For *AVERAGE_DURATION metrics, these fields should not be set at all. A different member, threshold_duration_ms, must be set in the EventAlertConfig or the TaskAlertConfig. # The metric value, above or below which the alert should be triggered.
              &quot;absolute&quot;: &quot;A String&quot;,
              &quot;percentage&quot;: 42,
            },
            &quot;warningEnumList&quot;: { # List of error enums for alerts.
              &quot;enumStrings&quot;: [
                &quot;A String&quot;,
              ],
              &quot;filterType&quot;: &quot;A String&quot;,
            },
          },
        ],
        &quot;conditionalFailurePolicies&quot;: { # Optional. Determines the number of times the task will be retried on failure and with what retry strategy. This is applicable for synchronous calls to Eventbus alone (Post).
          &quot;defaultFailurePolicy&quot;: { # Policy that defines the task retry logic and failure type. If no FailurePolicy is defined for a task, all its dependent tasks will not be executed (i.e, a `retry_strategy` of NONE will be applied). # The default failure policy to be applied if no conditional failure policy matches
            &quot;intervalInSeconds&quot;: &quot;A String&quot;, # Required if retry_strategy is FIXED_INTERVAL or LINEAR/EXPONENTIAL_BACKOFF/RESTART_WORKFLOW_WITH_BACKOFF. Defines the initial interval for backoff.
            &quot;maxNumRetries&quot;: 42, # Required if retry_strategy is FIXED_INTERVAL or LINEAR/EXPONENTIAL_BACKOFF/RESTART_WORKFLOW_WITH_BACKOFF. Defines the number of times the task will be retried if failed.
            &quot;retryCondition&quot;: &quot;A String&quot;, # Optional. The retry condition that will be evaluated for this failure policy with the corresponding retry strategy.
            &quot;retryStrategy&quot;: &quot;A String&quot;, # Defines what happens to the task upon failure.
          },
          &quot;failurePolicies&quot;: [ # The list of failure policies that will be applied to the task in order.
            { # Policy that defines the task retry logic and failure type. If no FailurePolicy is defined for a task, all its dependent tasks will not be executed (i.e, a `retry_strategy` of NONE will be applied).
              &quot;intervalInSeconds&quot;: &quot;A String&quot;, # Required if retry_strategy is FIXED_INTERVAL or LINEAR/EXPONENTIAL_BACKOFF/RESTART_WORKFLOW_WITH_BACKOFF. Defines the initial interval for backoff.
              &quot;maxNumRetries&quot;: 42, # Required if retry_strategy is FIXED_INTERVAL or LINEAR/EXPONENTIAL_BACKOFF/RESTART_WORKFLOW_WITH_BACKOFF. Defines the number of times the task will be retried if failed.
              &quot;retryCondition&quot;: &quot;A String&quot;, # Optional. The retry condition that will be evaluated for this failure policy with the corresponding retry strategy.
              &quot;retryStrategy&quot;: &quot;A String&quot;, # Defines what happens to the task upon failure.
            },
          ],
        },
        &quot;createTime&quot;: &quot;A String&quot;, # Auto-generated.
        &quot;creatorEmail&quot;: &quot;A String&quot;, # The creator&#x27;s email address. Auto-generated from the user&#x27;s email.
        &quot;description&quot;: &quot;A String&quot;, # User-provided description intended to give more business context about the task.
        &quot;disableStrictTypeValidation&quot;: True or False, # If this config contains a TypedTask, allow validation to succeed if an input is read from the output of another TypedTask whose output type is declared as a superclass of the requested input type. For instance, if the previous task declares an output of type Message, any task with this flag enabled will pass validation when attempting to read any proto Message type from the resultant Event parameter.
        &quot;errorCatcherId&quot;: &quot;A String&quot;, # Optional Error catcher id of the error catch flow which will be executed when execution error happens in the task
        &quot;externalTaskType&quot;: &quot;A String&quot;,
        &quot;failurePolicy&quot;: { # Policy that defines the task retry logic and failure type. If no FailurePolicy is defined for a task, all its dependent tasks will not be executed (i.e, a `retry_strategy` of NONE will be applied). # Optional. Determines the number of times the task will be retried on failure and with what retry strategy. This is applicable for asynchronous calls to Eventbus alone (Post To Queue, Schedule etc.).
          &quot;intervalInSeconds&quot;: &quot;A String&quot;, # Required if retry_strategy is FIXED_INTERVAL or LINEAR/EXPONENTIAL_BACKOFF/RESTART_WORKFLOW_WITH_BACKOFF. Defines the initial interval for backoff.
          &quot;maxNumRetries&quot;: 42, # Required if retry_strategy is FIXED_INTERVAL or LINEAR/EXPONENTIAL_BACKOFF/RESTART_WORKFLOW_WITH_BACKOFF. Defines the number of times the task will be retried if failed.
          &quot;retryCondition&quot;: &quot;A String&quot;, # Optional. The retry condition that will be evaluated for this failure policy with the corresponding retry strategy.
          &quot;retryStrategy&quot;: &quot;A String&quot;, # Defines what happens to the task upon failure.
        },
        &quot;incomingEdgeCount&quot;: 42, # The number of edges leading into this TaskConfig.
        &quot;jsonValidationOption&quot;: &quot;A String&quot;, # If set, overrides the option configured in the Task implementation class.
        &quot;label&quot;: &quot;A String&quot;, # User-provided label that is attached to this TaskConfig in the UI.
        &quot;lastModifiedTime&quot;: &quot;A String&quot;, # Auto-generated.
        &quot;nextTasks&quot;: [ # The set of tasks that are next in line to be executed as per the execution graph defined for the parent event, specified by `event_config_id`. Each of these next tasks are executed only if the condition associated with them evaluates to true.
          { # The task that is next in line to be executed, if the condition specified evaluated to true.
            &quot;combinedConditions&quot;: [ # Combined condition for this task to become an eligible next task. Each of these combined_conditions are joined with logical OR. DEPRECATED: use `condition`
              { # This message recursively combines constituent conditions using logical AND.
                &quot;conditions&quot;: [ # A set of individual constituent conditions.
                  { # Condition that uses `operator` to evaluate the key against the value.
                    &quot;eventPropertyKey&quot;: &quot;A String&quot;, # Key that&#x27;s evaluated against the `value`. Please note the data type of the runtime value associated with the key should match the data type of `value`, else an IllegalArgumentException is thrown.
                    &quot;operator&quot;: &quot;A String&quot;, # Operator used to evaluate the condition. Please note that an operator with an inappropriate key/value operand will result in IllegalArgumentException, e.g. CONTAINS with boolean key/value pair.
                    &quot;value&quot;: { # Used for define type for values. Currently supported value types include int, string, double, array, and any proto message. # Value that&#x27;s checked for the key.
                      &quot;booleanValue&quot;: True or False,
                      &quot;doubleArray&quot;: {
                        &quot;values&quot;: [
                          3.14,
                        ],
                      },
                      &quot;doubleValue&quot;: 3.14,
                      &quot;intArray&quot;: {
                        &quot;values&quot;: [
                          &quot;A String&quot;,
                        ],
                      },
                      &quot;intValue&quot;: &quot;A String&quot;,
                      &quot;protoValue&quot;: {
                        &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
                      },
                      &quot;stringArray&quot;: {
                        &quot;values&quot;: [
                          &quot;A String&quot;,
                        ],
                      },
                      &quot;stringValue&quot;: &quot;A String&quot;,
                    },
                  },
                ],
              },
            ],
            &quot;condition&quot;: &quot;A String&quot;, # Standard filter expression for this task to become an eligible next task.
            &quot;description&quot;: &quot;A String&quot;, # User-provided description intended to give more business context about the next task edge or condition.
            &quot;label&quot;: &quot;A String&quot;, # User-provided label that is attached to this edge in the UI.
            &quot;taskConfigId&quot;: &quot;A String&quot;, # ID of the next task.
            &quot;taskNumber&quot;: &quot;A String&quot;, # Task number of the next task.
          },
        ],
        &quot;nextTasksExecutionPolicy&quot;: &quot;A String&quot;, # The policy dictating the execution of the next set of tasks for the current task.
        &quot;parameters&quot;: { # The customized parameters the user can pass to this task.
          &quot;a_key&quot;: { # Key-value pair of EventBus parameters.
            &quot;dataType&quot;: &quot;A String&quot;, # Explicitly getting the type of the parameter.
            &quot;key&quot;: &quot;A String&quot;, # Key is used to retrieve the corresponding parameter value. This should be unique for a given fired event. These parameters must be predefined in the workflow definition.
            &quot;masked&quot;: True or False, # True if this parameter should be masked in the logs
            &quot;value&quot;: { # To support various types of parameter values. Next available id: 14 # Values for the defined keys. Each value can either be string, int, double or any proto message.
              &quot;booleanArray&quot;: {
                &quot;booleanValues&quot;: [
                  True or False,
                ],
              },
              &quot;booleanValue&quot;: True or False,
              &quot;doubleArray&quot;: {
                &quot;doubleValues&quot;: [
                  3.14,
                ],
              },
              &quot;doubleValue&quot;: 3.14,
              &quot;intArray&quot;: {
                &quot;intValues&quot;: [
                  &quot;A String&quot;,
                ],
              },
              &quot;intValue&quot;: &quot;A String&quot;,
              &quot;jsonValue&quot;: &quot;A String&quot;,
              &quot;protoArray&quot;: {
                &quot;protoValues&quot;: [
                  {
                    &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
                  },
                ],
              },
              &quot;protoValue&quot;: {
                &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
              },
              &quot;serializedObjectValue&quot;: {
                &quot;objectValue&quot;: &quot;A String&quot;,
              },
              &quot;stringArray&quot;: {
                &quot;stringValues&quot;: [
                  &quot;A String&quot;,
                ],
              },
              &quot;stringValue&quot;: &quot;A String&quot;,
            },
          },
        },
        &quot;position&quot;: { # Represents two-dimensional positions. # Optional. Informs the front-end application where to draw this task config on the UI.
          &quot;x&quot;: 42,
          &quot;y&quot;: 42,
        },
        &quot;precondition&quot;: &quot;A String&quot;, # Optional. Standard filter expression evaluated before execution. Independent of other conditions and tasks. Can be used to enable rollout. e.g. &quot;rollout(5)&quot; will only allow 5% of incoming traffic to task.
        &quot;preconditionLabel&quot;: &quot;A String&quot;, # Optional. User-provided label that is attached to precondition in the UI.
        &quot;rollbackStrategy&quot;: { # Next available id: 4 # Optional. Contains information about what needs to be done upon failure (either a permanent error or after it has been retried too many times).
          &quot;parameters&quot;: { # LINT.IfChange This message is used for processing and persisting (when applicable) key value pair parameters for each event in the event bus. Please see # Optional. The customized parameters the user can pass to this task.
            &quot;parameters&quot;: [ # Parameters are a part of Event and can be used to communicate between different tasks that are part of the same workflow execution.
              { # Key-value pair of EventBus parameters.
                &quot;dataType&quot;: &quot;A String&quot;, # Explicitly getting the type of the parameter.
                &quot;key&quot;: &quot;A String&quot;, # Key is used to retrieve the corresponding parameter value. This should be unique for a given fired event. These parameters must be predefined in the workflow definition.
                &quot;masked&quot;: True or False, # True if this parameter should be masked in the logs
                &quot;value&quot;: { # To support various types of parameter values. Next available id: 14 # Values for the defined keys. Each value can either be string, int, double or any proto message.
                  &quot;booleanArray&quot;: {
                    &quot;booleanValues&quot;: [
                      True or False,
                    ],
                  },
                  &quot;booleanValue&quot;: True or False,
                  &quot;doubleArray&quot;: {
                    &quot;doubleValues&quot;: [
                      3.14,
                    ],
                  },
                  &quot;doubleValue&quot;: 3.14,
                  &quot;intArray&quot;: {
                    &quot;intValues&quot;: [
                      &quot;A String&quot;,
                    ],
                  },
                  &quot;intValue&quot;: &quot;A String&quot;,
                  &quot;jsonValue&quot;: &quot;A String&quot;,
                  &quot;protoArray&quot;: {
                    &quot;protoValues&quot;: [
                      {
                        &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
                      },
                    ],
                  },
                  &quot;protoValue&quot;: {
                    &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
                  },
                  &quot;serializedObjectValue&quot;: {
                    &quot;objectValue&quot;: &quot;A String&quot;,
                  },
                  &quot;stringArray&quot;: {
                    &quot;stringValues&quot;: [
                      &quot;A String&quot;,
                    ],
                  },
                  &quot;stringValue&quot;: &quot;A String&quot;,
                },
              },
            ],
          },
          &quot;rollbackTaskImplementationClassName&quot;: &quot;A String&quot;, # Required. This is the name of the task that needs to be executed upon rollback of this task.
          &quot;taskNumbersToRollback&quot;: [ # Required. These are the tasks numbers of the tasks whose `rollback_strategy.rollback_task_implementation_class_name` needs to be executed upon failure of this task.
            &quot;A String&quot;,
          ],
        },
        &quot;successPolicy&quot;: { # Policy that dictates the behavior for the task after it completes successfully. # Determines what action to take upon successful task completion.
          &quot;finalState&quot;: &quot;A String&quot;, # State to which the execution snapshot status will be set if the task succeeds.
        },
        &quot;synchronousCallFailurePolicy&quot;: { # Policy that defines the task retry logic and failure type. If no FailurePolicy is defined for a task, all its dependent tasks will not be executed (i.e, a `retry_strategy` of NONE will be applied). # Optional. Determines the number of times the task will be retried on failure and with what retry strategy. This is applicable for synchronous calls to Eventbus alone (Post).
          &quot;intervalInSeconds&quot;: &quot;A String&quot;, # Required if retry_strategy is FIXED_INTERVAL or LINEAR/EXPONENTIAL_BACKOFF/RESTART_WORKFLOW_WITH_BACKOFF. Defines the initial interval for backoff.
          &quot;maxNumRetries&quot;: 42, # Required if retry_strategy is FIXED_INTERVAL or LINEAR/EXPONENTIAL_BACKOFF/RESTART_WORKFLOW_WITH_BACKOFF. Defines the number of times the task will be retried if failed.
          &quot;retryCondition&quot;: &quot;A String&quot;, # Optional. The retry condition that will be evaluated for this failure policy with the corresponding retry strategy.
          &quot;retryStrategy&quot;: &quot;A String&quot;, # Defines what happens to the task upon failure.
        },
        &quot;taskEntity&quot;: { # Contains a task&#x27;s metadata and associated information. Next available id: 7 # Copy of the task entity that this task config is an instance of.
          &quot;disabledForVpcSc&quot;: True or False, # True if the task has conflict with vpcsc
          &quot;metadata&quot;: { # TaskMetadata are attributes that are associated to every common Task we have. # Metadata inclueds the task name, author and so on.
            &quot;activeTaskName&quot;: &quot;A String&quot;, # The new task name to replace the current task if it is deprecated. Otherwise, it is the same as the current task name.
            &quot;admins&quot;: [
              { # Admins are owners of a Task, and have all permissions on a particular task identified by the task name. By default, Eventbus periodically scans all task metadata and syncs (adds) any new admins defined here to Zanzibar.
                &quot;googleGroupEmail&quot;: &quot;A String&quot;,
                &quot;userEmail&quot;: &quot;A String&quot;,
              },
            ],
            &quot;category&quot;: &quot;A String&quot;,
            &quot;codeSearchLink&quot;: &quot;A String&quot;, # The Code Search link to the Task Java file.
            &quot;defaultJsonValidationOption&quot;: &quot;A String&quot;, # Controls whether JSON workflow parameters are validated against provided schemas before and/or after this task&#x27;s execution.
            &quot;defaultSpec&quot;: &quot;A String&quot;, # Contains the initial configuration of the task with default values set. For now, The string should be compatible to an ASCII-proto format.
            &quot;description&quot;: &quot;A String&quot;, # In a few sentences, describe the purpose and usage of the task.
            &quot;descriptiveName&quot;: &quot;A String&quot;, # The string name to show on the task list on the Workflow editor screen. This should be a very short, one to two words name for the task. (e.g. &quot;Send Mail&quot;)
            &quot;docMarkdown&quot;: &quot;A String&quot;, # Snippet of markdown documentation to embed in the RHP for this task.
            &quot;externalCategory&quot;: &quot;A String&quot;,
            &quot;externalCategorySequence&quot;: 42, # Sequence with which the task in specific category to be displayed in task discovery panel for external users.
            &quot;externalDocHtml&quot;: &quot;A String&quot;, # External-facing documention embedded in the RHP for this task.
            &quot;externalDocLink&quot;: &quot;A String&quot;, # Doc link for external-facing documentation (separate from g3doc).
            &quot;externalDocMarkdown&quot;: &quot;A String&quot;, # DEPRECATED: Use external_doc_html.
            &quot;g3DocLink&quot;: &quot;A String&quot;, # URL to the associated G3 Doc for the task if available
            &quot;iconLink&quot;: &quot;A String&quot;, # URL to gstatic image icon for this task. This icon shows up on the task list panel along with the task name in the Workflow Editor screen. Use the 24p, 2x, gray color icon image format.
            &quot;isDeprecated&quot;: True or False, # The deprecation status of the current task. Default value is false;
            &quot;name&quot;: &quot;A String&quot;, # The actual class name or the annotated name of the task. Task Author should initialize this field with value from the getName() method of the Task class.
            &quot;standaloneExternalDocHtml&quot;: &quot;A String&quot;, # External-facing documention for standalone IP in pantheon embedded in the RHP for this task. Non null only if different from external_doc_html
            &quot;status&quot;: &quot;A String&quot;, # Allows author to indicate if the task is ready to use or not. If not set, then it will default to INACTIVE.
            &quot;system&quot;: &quot;A String&quot;,
            &quot;tags&quot;: [ # A set of tags that pertain to a particular task. This can be used to improve the searchability of tasks with several names (&quot;REST Caller&quot; vs. &quot;Call REST Endpoint&quot;) or to help users find tasks based on related words.
              &quot;A String&quot;,
            ],
          },
          &quot;paramSpecs&quot;: { # Declarations for inputs/outputs for a TypedTask. This is also associated with the METADATA mask.
            &quot;parameters&quot;: [
              { # Key-value pair of EventBus task parameters. Next id: 13
                &quot;className&quot;: &quot;A String&quot;, # The FQCN of the Java object this represents. A string, for example, would be &quot;java.lang.String&quot;. If this is &quot;java.lang.Object&quot;, the parameter can be of any type.
                &quot;collectionElementClassName&quot;: &quot;A String&quot;, # If it is a collection of objects, this would be the FCQN of every individual element in the collection. If this is &quot;java.lang.Object&quot;, the parameter is a collection of any type.
                &quot;config&quot;: { # Optional fields, such as help text and other useful info.
                  &quot;descriptivePhrase&quot;: &quot;A String&quot;, # A short phrase to describe what this parameter contains.
                  &quot;helpText&quot;: &quot;A String&quot;, # Detailed help text for this parameter containing information not provided elsewhere. For example, instructions on how to migrate from a deprecated parameter.
                  &quot;hideDefaultValue&quot;: True or False, # Whether the default value is hidden in the UI.
                  &quot;inputDisplayOption&quot;: &quot;A String&quot;,
                  &quot;isHidden&quot;: True or False, # Whether this field is hidden in the UI.
                  &quot;label&quot;: &quot;A String&quot;, # A user-friendly label for the parameter.
                  &quot;parameterNameOption&quot;: &quot;A String&quot;,
                  &quot;subSectionLabel&quot;: &quot;A String&quot;, # A user-friendly label for subSection under which the parameter will be displayed.
                  &quot;uiPlaceholderText&quot;: &quot;A String&quot;, # Placeholder text which will appear in the UI input form for this parameter.
                },
                &quot;dataType&quot;: &quot;A String&quot;, # The data type of the parameter.
                &quot;defaultValue&quot;: { # To support various types of parameter values. Next available id: 14 # Default values for the defined keys. Each value can either be string, int, double or any proto message or a serialized object.
                  &quot;booleanArray&quot;: {
                    &quot;booleanValues&quot;: [
                      True or False,
                    ],
                  },
                  &quot;booleanValue&quot;: True or False,
                  &quot;doubleArray&quot;: {
                    &quot;doubleValues&quot;: [
                      3.14,
                    ],
                  },
                  &quot;doubleValue&quot;: 3.14,
                  &quot;intArray&quot;: {
                    &quot;intValues&quot;: [
                      &quot;A String&quot;,
                    ],
                  },
                  &quot;intValue&quot;: &quot;A String&quot;,
                  &quot;jsonValue&quot;: &quot;A String&quot;,
                  &quot;protoArray&quot;: {
                    &quot;protoValues&quot;: [
                      {
                        &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
                      },
                    ],
                  },
                  &quot;protoValue&quot;: {
                    &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
                  },
                  &quot;serializedObjectValue&quot;: {
                    &quot;objectValue&quot;: &quot;A String&quot;,
                  },
                  &quot;stringArray&quot;: {
                    &quot;stringValues&quot;: [
                      &quot;A String&quot;,
                    ],
                  },
                  &quot;stringValue&quot;: &quot;A String&quot;,
                },
                &quot;isDeprecated&quot;: True or False, # If set, this entry is deprecated, so further use of this parameter should be prohibited.
                &quot;isOutput&quot;: True or False,
                &quot;jsonSchema&quot;: &quot;A String&quot;, # If the data_type is JSON_VALUE, then this will define its schema.
                &quot;key&quot;: &quot;A String&quot;, # Key is used to retrieve the corresponding parameter value. This should be unique for a given task. These parameters must be predefined in the workflow definition.
                &quot;protoDef&quot;: { # Populated if this represents a proto or proto array.
                  &quot;fullName&quot;: &quot;A String&quot;, # The fully-qualified proto name. This message, for example, would be &quot;enterprise.crm.eventbus.proto.ParamSpecEntry.ProtoDefinition&quot;.
                  &quot;path&quot;: &quot;A String&quot;, # Path to the proto file that contains the message type&#x27;s definition.
                },
                &quot;required&quot;: True or False, # If set, the user must provide an input value for this parameter.
                &quot;validationRule&quot;: { # Rule used to validate inputs (individual values and collection elements) for this parameter.
                  &quot;doubleRange&quot;: { # Range used to validate doubles and floats.
                    &quot;max&quot;: 3.14, # The inclusive maximum of the acceptable range.
                    &quot;min&quot;: 3.14, # The inclusive minimum of the acceptable range.
                  },
                  &quot;intRange&quot;: { # Range used to validate longs and ints.
                    &quot;max&quot;: &quot;A String&quot;, # The inclusive maximum of the acceptable range.
                    &quot;min&quot;: &quot;A String&quot;, # The inclusive minimum of the acceptable range.
                  },
                  &quot;stringRegex&quot;: { # Rule used to validate strings.
                    &quot;exclusive&quot;: True or False, # Whether the regex matcher is applied exclusively (if true, matching values will be rejected).
                    &quot;regex&quot;: &quot;A String&quot;, # The regex applied to the input value(s).
                  },
                },
              },
            ],
          },
          &quot;stats&quot;: { # Stats for the requested dimensions: QPS, duration, and error/warning rate # Deprecated - statistics from the Monarch query.
            &quot;dimensions&quot;: { # Dimensions that these stats have been aggregated on.
              &quot;clientId&quot;: &quot;A String&quot;,
              &quot;enumFilterType&quot;: &quot;A String&quot;, # Whether to include or exclude the enums matching the regex.
              &quot;errorEnumString&quot;: &quot;A String&quot;,
              &quot;retryAttempt&quot;: &quot;A String&quot;,
              &quot;taskName&quot;: &quot;A String&quot;,
              &quot;taskNumber&quot;: &quot;A String&quot;,
              &quot;triggerId&quot;: &quot;A String&quot;, # Stats have been or will be aggregated on set fields for any semantically-meaningful combination.
              &quot;warningEnumString&quot;: &quot;A String&quot;,
              &quot;workflowId&quot;: &quot;A String&quot;,
              &quot;workflowName&quot;: &quot;A String&quot;,
            },
            &quot;durationInSeconds&quot;: 3.14, # Average duration in seconds.
            &quot;errorRate&quot;: 3.14, # Average error rate.
            &quot;qps&quot;: 3.14, # Queries per second.
            &quot;warningRate&quot;: 3.14, # Average warning rate.
          },
          &quot;taskType&quot;: &quot;A String&quot;, # Defines the type of the task
          &quot;uiConfig&quot;: { # Task authors would use this type to configure the UI for a particular task by specifying what UI config modules should be included to compose the UI. Learn more about config module framework: # UI configuration for this task Also associated with the METADATA mask.
            &quot;taskUiModuleConfigs&quot;: [ # Configurations of included config modules.
              { # Task author would use this type to configure a config module.
                &quot;moduleId&quot;: &quot;A String&quot;, # ID of the config module.
              },
            ],
          },
        },
        &quot;taskExecutionStrategy&quot;: &quot;A String&quot;, # The policy dictating the execution strategy of this task.
        &quot;taskName&quot;: &quot;A String&quot;, # The name for the task.
        &quot;taskNumber&quot;: &quot;A String&quot;, # REQUIRED: the identifier of this task within its parent event config, specified by the client. This should be unique among all the tasks belong to the same event config. We use this field as the identifier to find next tasks (via field `next_tasks.task_number`).
        &quot;taskSpec&quot;: &quot;A String&quot;, # A string template that allows user to configure task parameters (with either literal default values or tokens which will be resolved at execution time) for the task. It will eventually replace the old &quot;parameters&quot; field.
        &quot;taskTemplateName&quot;: &quot;A String&quot;, # Used to define task-template name if task is of type task-template
        &quot;taskType&quot;: &quot;A String&quot;, # Defines the type of the task
      },
    ],
    &quot;teardown&quot;: { # Optional. Contains a graph of tasks that will be executed before putting the event in a terminal state (SUCCEEDED/FAILED/FATAL), regardless of success or failure, similar to &quot;finally&quot; in code.
      &quot;teardownTaskConfigs&quot;: [ # Required.
        {
          &quot;creatorEmail&quot;: &quot;A String&quot;, # The creator&#x27;s email address.
          &quot;name&quot;: &quot;A String&quot;, # Required. Unique identifier of the teardown task within this Config. We use this field as the identifier to find next teardown tasks.
          &quot;nextTeardownTask&quot;: { # The teardown task that is next in line to be executed. We support only sequential execution of teardown tasks (i.e. no branching).
            &quot;name&quot;: &quot;A String&quot;, # Required. Name of the next teardown task.
          },
          &quot;parameters&quot;: { # LINT.IfChange This message is used for processing and persisting (when applicable) key value pair parameters for each event in the event bus. Please see # The parameters the user can pass to this task.
            &quot;parameters&quot;: [ # Parameters are a part of Event and can be used to communicate between different tasks that are part of the same integration execution.
              { # Key-value pair of EventBus parameters.
                &quot;key&quot;: &quot;A String&quot;, # Key is used to retrieve the corresponding parameter value. This should be unique for a given fired event. These parameters must be predefined in the integration definition.
                &quot;masked&quot;: True or False, # True if this parameter should be masked in the logs
                &quot;value&quot;: { # LINT.IfChange To support various types of parameter values. Next available id: 14 # Values for the defined keys. Each value can either be string, int, double or any proto message.
                  &quot;booleanArray&quot;: {
                    &quot;booleanValues&quot;: [
                      True or False,
                    ],
                  },
                  &quot;booleanValue&quot;: True or False,
                  &quot;doubleArray&quot;: {
                    &quot;doubleValues&quot;: [
                      3.14,
                    ],
                  },
                  &quot;doubleValue&quot;: 3.14,
                  &quot;intArray&quot;: {
                    &quot;intValues&quot;: [
                      &quot;A String&quot;,
                    ],
                  },
                  &quot;intValue&quot;: &quot;A String&quot;,
                  &quot;protoArray&quot;: {
                    &quot;protoValues&quot;: [
                      {
                        &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
                      },
                    ],
                  },
                  &quot;protoValue&quot;: {
                    &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
                  },
                  &quot;serializedObjectValue&quot;: {
                    &quot;objectValue&quot;: &quot;A String&quot;,
                  },
                  &quot;stringArray&quot;: {
                    &quot;stringValues&quot;: [
                      &quot;A String&quot;,
                    ],
                  },
                  &quot;stringValue&quot;: &quot;A String&quot;,
                },
              },
            ],
          },
          &quot;properties&quot;: { # LINT.IfChange This message is used for storing key value pair properties for each Event / Task in the EventBus.
            &quot;properties&quot;: [ # An unordered list of property entries.
              { # Key-value pair of EventBus property.
                &quot;key&quot;: &quot;A String&quot;, # Key is used to retrieve the corresponding property value. This should be unique for a given fired event. The Tasks should be aware of the keys used while firing the events for them to be able to retrieve the values.
                &quot;value&quot;: { # Used for define type for values. Currently supported value types include int, string, double, array, and any proto message. # Values for the defined keys. Each value can either be string, int, double or any proto message.
                  &quot;booleanValue&quot;: True or False,
                  &quot;doubleArray&quot;: {
                    &quot;values&quot;: [
                      3.14,
                    ],
                  },
                  &quot;doubleValue&quot;: 3.14,
                  &quot;intArray&quot;: {
                    &quot;values&quot;: [
                      &quot;A String&quot;,
                    ],
                  },
                  &quot;intValue&quot;: &quot;A String&quot;,
                  &quot;protoValue&quot;: {
                    &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
                  },
                  &quot;stringArray&quot;: {
                    &quot;values&quot;: [
                      &quot;A String&quot;,
                    ],
                  },
                  &quot;stringValue&quot;: &quot;A String&quot;,
                },
              },
            ],
          },
          &quot;teardownTaskImplementationClassName&quot;: &quot;A String&quot;, # Required. Implementation class name.
        },
      ],
    },
    &quot;triggerConfigs&quot;: [ # Optional. Trigger configurations.
      { # Configuration detail of a trigger.
        &quot;alertConfig&quot;: [ # Optional. An alert threshold configuration for the [trigger + client + integration] tuple. If these values are not specified in the trigger config, default values will be populated by the system. Note that there must be exactly one alert threshold configured per [client + trigger + integration] when published.
          { # Message to be used to configure custom alerting in the {@code EventConfig} protos for an event.
            &quot;aggregationPeriod&quot;: &quot;A String&quot;, # The period over which the metric value should be aggregated and evaluated. Format is , where integer should be a positive integer and unit should be one of (s,m,h,d,w) meaning (second, minute, hour, day, week). For an EXPECTED_MIN threshold, this aggregation_period must be lesser than 24 hours.
            &quot;alertThreshold&quot;: 42, # For how many contiguous aggregation periods should the expected min or max be violated for the alert to be fired.
            &quot;disableAlert&quot;: True or False, # Set to false by default. When set to true, the metrics are not aggregated or pushed to Monarch for this integration alert.
            &quot;displayName&quot;: &quot;A String&quot;, # Name of the alert. This will be displayed in the alert subject. If set, this name should be unique within the scope of the integration.
            &quot;durationThreshold&quot;: &quot;A String&quot;, # Should be specified only for *AVERAGE_DURATION and *PERCENTILE_DURATION metrics. This member should be used to specify what duration value the metrics should exceed for the alert to trigger.
            &quot;metricType&quot;: &quot;A String&quot;, # The type of metric.
            &quot;onlyFinalAttempt&quot;: True or False, # For either events or tasks, depending on the type of alert, count only final attempts, not retries.
            &quot;thresholdType&quot;: &quot;A String&quot;, # The threshold type, whether lower(expected_min) or upper(expected_max), for which this alert is being configured. If value falls below expected_min or exceeds expected_max, an alert will be fired.
            &quot;thresholdValue&quot;: { # The threshold value of the metric, above or below which the alert should be triggered. See EventAlertConfig or TaskAlertConfig for the different alert metric types in each case. For the *RATE metrics, one or both of these fields may be set. Zero is the default value and can be left at that. For *PERCENTILE_DURATION metrics, one or both of these fields may be set, and also, the duration threshold value should be specified in the threshold_duration_ms member below. For *AVERAGE_DURATION metrics, these fields should not be set at all. A different member, threshold_duration_ms, must be set in the EventAlertConfig or the TaskAlertConfig. # The metric value, above or below which the alert should be triggered.
              &quot;absolute&quot;: &quot;A String&quot;, # Absolute value threshold.
              &quot;percentage&quot;: 42, # Percentage threshold.
            },
          },
        ],
        &quot;cloudSchedulerConfig&quot;: { # Cloud Scheduler Trigger configuration # Optional. Cloud Scheduler Trigger related metadata
          &quot;cronTab&quot;: &quot;A String&quot;, # Required. The cron tab of cloud scheduler trigger.
          &quot;errorMessage&quot;: &quot;A String&quot;, # Optional. When the job was deleted from Pantheon UI, error_message will be populated when Get/List integrations
          &quot;location&quot;: &quot;A String&quot;, # Required. The location where associated cloud scheduler job will be created
          &quot;serviceAccountEmail&quot;: &quot;A String&quot;, # Required. Service account used by Cloud Scheduler to trigger the integration at scheduled time
        },
        &quot;description&quot;: &quot;A String&quot;, # Optional. User-provided description intended to give additional business context about the task.
        &quot;errorCatcherId&quot;: &quot;A String&quot;, # Optional. Optional Error catcher id of the error catch flow which will be executed when execution error happens in the task
        &quot;inputVariables&quot;: { # Variables names mapped to api trigger. # Optional. List of input variables for the api trigger.
          &quot;names&quot;: [ # Optional. List of variable names.
            &quot;A String&quot;,
          ],
        },
        &quot;label&quot;: &quot;A String&quot;, # Optional. The user created label for a particular trigger.
        &quot;nextTasksExecutionPolicy&quot;: &quot;A String&quot;, # Optional. Dictates how next tasks will be executed.
        &quot;outputVariables&quot;: { # Variables names mapped to api trigger. # Optional. List of output variables for the api trigger.
          &quot;names&quot;: [ # Optional. List of variable names.
            &quot;A String&quot;,
          ],
        },
        &quot;position&quot;: { # Configuration detail of coordinate, it used for UI # Optional. Informs the front-end application where to draw this error catcher config on the UI.
          &quot;x&quot;: 42, # Required. X axis of the coordinate
          &quot;y&quot;: 42, # Required. Y axis of the coordinate
        },
        &quot;properties&quot;: { # Optional. Configurable properties of the trigger, not to be confused with integration parameters. E.g. &quot;name&quot; is a property for API triggers and &quot;subscription&quot; is a property for Pub/sub triggers.
          &quot;a_key&quot;: &quot;A String&quot;,
        },
        &quot;startTasks&quot;: [ # Optional. Set of tasks numbers from where the integration execution is started by this trigger. If this is empty, then integration is executed with default start tasks. In the list of start tasks, none of two tasks can have direct ancestor-descendant relationships (i.e. in a same integration execution graph).
          { # The task that is next in line to be executed, if the condition specified evaluated to true.
            &quot;condition&quot;: &quot;A String&quot;, # Standard filter expression for this task to become an eligible next task.
            &quot;description&quot;: &quot;A String&quot;, # User-provided description intended to give additional business context about the task.
            &quot;displayName&quot;: &quot;A String&quot;, # User-provided label that is attached to this edge in the UI.
            &quot;taskConfigId&quot;: &quot;A String&quot;, # ID of the next task.
            &quot;taskId&quot;: &quot;A String&quot;, # Task number of the next task.
          },
        ],
        &quot;trigger&quot;: &quot;A String&quot;, # Optional. Name of the trigger. Example: &quot;API Trigger&quot;, &quot;Cloud Pub Sub Trigger&quot; When set will be sent out to monitoring dashabord for tracking purpose.
        &quot;triggerId&quot;: &quot;A String&quot;, # Optional. Auto-generated trigger ID. The ID is based on the properties that you define in the trigger config. For example, for an API trigger, the trigger ID follows the format: api_trigger/TRIGGER_NAME Where trigger config has properties with value {&quot;Trigger name&quot;: TRIGGER_NAME}
        &quot;triggerNumber&quot;: &quot;A String&quot;, # Required. A number to uniquely identify each trigger config within the integration on UI.
        &quot;triggerType&quot;: &quot;A String&quot;, # Optional. Type of trigger
      },
    ],
    &quot;triggerConfigsInternal&quot;: [ # Optional. Trigger configurations.
      { # Configuration detail of a trigger. Next available id: 22
        &quot;alertConfig&quot;: [ # An alert threshold configuration for the [trigger + client + workflow] tuple. If these values are not specified in the trigger config, default values will be populated by the system. Note that there must be exactly one alert threshold configured per [client + trigger + workflow] when published.
          { # Message to be used to configure custom alerting in the {@code EventConfig} protos for an event.
            &quot;aggregationPeriod&quot;: &quot;A String&quot;, # For an EXPECTED_MIN threshold, this aggregation_period must be lesser than 24 hours.
            &quot;alertDisabled&quot;: True or False, # Set to false by default. When set to true, the metrics are not aggregated or pushed to Monarch for this workflow alert.
            &quot;alertName&quot;: &quot;A String&quot;, # A name to identify this alert. This will be displayed in the alert subject. If set, this name should be unique within the scope of the workflow.
            &quot;clientId&quot;: &quot;A String&quot;, # Client associated with this alert configuration.
            &quot;durationThresholdMs&quot;: &quot;A String&quot;, # Should be specified only for *AVERAGE_DURATION and *PERCENTILE_DURATION metrics. This member should be used to specify what duration value the metrics should exceed for the alert to trigger.
            &quot;errorEnumList&quot;: { # List of error enums for alerts.
              &quot;enumStrings&quot;: [
                &quot;A String&quot;,
              ],
              &quot;filterType&quot;: &quot;A String&quot;,
            },
            &quot;metricType&quot;: &quot;A String&quot;,
            &quot;numAggregationPeriods&quot;: 42, # For how many contiguous aggregation periods should the expected min or max be violated for the alert to be fired.
            &quot;onlyFinalAttempt&quot;: True or False, # For either events or tasks, depending on the type of alert, count only final attempts, not retries.
            &quot;playbookUrl&quot;: &quot;A String&quot;, # Link to a playbook for resolving the issue that triggered this alert.
            &quot;thresholdType&quot;: &quot;A String&quot;, # The threshold type, whether lower(expected_min) or upper(expected_max), for which this alert is being configured. If value falls below expected_min or exceeds expected_max, an alert will be fired.
            &quot;thresholdValue&quot;: { # The threshold value of the metric, above or below which the alert should be triggered. See EventAlertConfig or TaskAlertConfig for the different alert metric types in each case. For the *RATE metrics, one or both of these fields may be set. Zero is the default value and can be left at that. For *PERCENTILE_DURATION metrics, one or both of these fields may be set, and also, the duration threshold value should be specified in the threshold_duration_ms member below. For *AVERAGE_DURATION metrics, these fields should not be set at all. A different member, threshold_duration_ms, must be set in the EventAlertConfig or the TaskAlertConfig. # The metric value, above or below which the alert should be triggered.
              &quot;absolute&quot;: &quot;A String&quot;,
              &quot;percentage&quot;: 42,
            },
            &quot;warningEnumList&quot;: { # List of error enums for alerts.
              &quot;enumStrings&quot;: [
                &quot;A String&quot;,
              ],
              &quot;filterType&quot;: &quot;A String&quot;,
            },
          },
        ],
        &quot;cloudSchedulerConfig&quot;: { # Cloud Scheduler Trigger configuration
          &quot;cronTab&quot;: &quot;A String&quot;, # Required. The cron tab of cloud scheduler trigger.
          &quot;errorMessage&quot;: &quot;A String&quot;, # Optional. When the job was deleted from Pantheon UI, error_message will be populated when Get/List integrations
          &quot;location&quot;: &quot;A String&quot;, # Required. The location where associated cloud scheduler job will be created
          &quot;serviceAccountEmail&quot;: &quot;A String&quot;, # Required. Service account used by Cloud Scheduler to trigger the integration at scheduled time
        },
        &quot;description&quot;: &quot;A String&quot;, # User-provided description intended to give more business context about the task.
        &quot;enabledClients&quot;: [ # Required. The list of client ids which are enabled to execute the workflow using this trigger. In other words, these clients have the workflow execution privledges for this trigger. For API trigger, the client id in the incoming request is validated against the list of enabled clients. For non-API triggers, one workflow execution is triggered on behalf of each enabled client.
          &quot;A String&quot;,
        ],
        &quot;errorCatcherId&quot;: &quot;A String&quot;, # Optional Error catcher id of the error catch flow which will be executed when execution error happens in the task
        &quot;inputVariables&quot;: { # Variables names mapped to api trigger. # Optional. List of input variables for the api trigger.
          &quot;names&quot;: [ # Optional. List of variable names.
            &quot;A String&quot;,
          ],
        },
        &quot;label&quot;: &quot;A String&quot;, # The user created label for a particular trigger.
        &quot;nextTasksExecutionPolicy&quot;: &quot;A String&quot;, # Dictates how next tasks will be executed.
        &quot;outputVariables&quot;: { # Variables names mapped to api trigger. # Optional. List of output variables for the api trigger.
          &quot;names&quot;: [ # Optional. List of variable names.
            &quot;A String&quot;,
          ],
        },
        &quot;pauseWorkflowExecutions&quot;: True or False, # Optional. If set to true, any upcoming requests for this trigger config will be paused and the executions will be resumed later when the flag is reset. The workflow to which this trigger config belongs has to be in ACTIVE status for the executions to be paused or resumed.
        &quot;position&quot;: { # Represents two-dimensional positions. # Optional. Informs the front-end application where to draw this trigger config on the UI.
          &quot;x&quot;: 42,
          &quot;y&quot;: 42,
        },
        &quot;properties&quot;: { # Configurable properties of the trigger, not to be confused with workflow parameters. E.g. &quot;name&quot; is a property for API triggers and &quot;subscription&quot; is a property for Cloud Pubsub triggers.
          &quot;a_key&quot;: &quot;A String&quot;,
        },
        &quot;startTasks&quot;: [ # Set of tasks numbers from where the workflow execution is started by this trigger. If this is empty, then workflow is executed with default start tasks. In the list of start tasks, none of two tasks can have direct ancestor-descendant relationships (i.e. in a same workflow execution graph).
          { # The task that is next in line to be executed, if the condition specified evaluated to true.
            &quot;combinedConditions&quot;: [ # Combined condition for this task to become an eligible next task. Each of these combined_conditions are joined with logical OR. DEPRECATED: use `condition`
              { # This message recursively combines constituent conditions using logical AND.
                &quot;conditions&quot;: [ # A set of individual constituent conditions.
                  { # Condition that uses `operator` to evaluate the key against the value.
                    &quot;eventPropertyKey&quot;: &quot;A String&quot;, # Key that&#x27;s evaluated against the `value`. Please note the data type of the runtime value associated with the key should match the data type of `value`, else an IllegalArgumentException is thrown.
                    &quot;operator&quot;: &quot;A String&quot;, # Operator used to evaluate the condition. Please note that an operator with an inappropriate key/value operand will result in IllegalArgumentException, e.g. CONTAINS with boolean key/value pair.
                    &quot;value&quot;: { # Used for define type for values. Currently supported value types include int, string, double, array, and any proto message. # Value that&#x27;s checked for the key.
                      &quot;booleanValue&quot;: True or False,
                      &quot;doubleArray&quot;: {
                        &quot;values&quot;: [
                          3.14,
                        ],
                      },
                      &quot;doubleValue&quot;: 3.14,
                      &quot;intArray&quot;: {
                        &quot;values&quot;: [
                          &quot;A String&quot;,
                        ],
                      },
                      &quot;intValue&quot;: &quot;A String&quot;,
                      &quot;protoValue&quot;: {
                        &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
                      },
                      &quot;stringArray&quot;: {
                        &quot;values&quot;: [
                          &quot;A String&quot;,
                        ],
                      },
                      &quot;stringValue&quot;: &quot;A String&quot;,
                    },
                  },
                ],
              },
            ],
            &quot;condition&quot;: &quot;A String&quot;, # Standard filter expression for this task to become an eligible next task.
            &quot;description&quot;: &quot;A String&quot;, # User-provided description intended to give more business context about the next task edge or condition.
            &quot;label&quot;: &quot;A String&quot;, # User-provided label that is attached to this edge in the UI.
            &quot;taskConfigId&quot;: &quot;A String&quot;, # ID of the next task.
            &quot;taskNumber&quot;: &quot;A String&quot;, # Task number of the next task.
          },
        ],
        &quot;triggerCriteria&quot;: { # Optional. When set, Eventbus will run the task specified in the trigger_criteria and validate the result using the trigger_criteria.condition, and only execute the workflow when result is true.
          &quot;condition&quot;: &quot;A String&quot;, # Required. Standard filter expression, when true the workflow will be executed. If there&#x27;s no trigger_criteria_task_implementation_class_name specified, the condition will be validated directly.
          &quot;parameters&quot;: { # LINT.IfChange This message is used for processing and persisting (when applicable) key value pair parameters for each event in the event bus. Please see # Optional. To be used in TaskConfig for the implementation class.
            &quot;parameters&quot;: [ # Parameters are a part of Event and can be used to communicate between different tasks that are part of the same integration execution.
              { # Key-value pair of EventBus parameters.
                &quot;key&quot;: &quot;A String&quot;, # Key is used to retrieve the corresponding parameter value. This should be unique for a given fired event. These parameters must be predefined in the integration definition.
                &quot;masked&quot;: True or False, # True if this parameter should be masked in the logs
                &quot;value&quot;: { # LINT.IfChange To support various types of parameter values. Next available id: 14 # Values for the defined keys. Each value can either be string, int, double or any proto message.
                  &quot;booleanArray&quot;: {
                    &quot;booleanValues&quot;: [
                      True or False,
                    ],
                  },
                  &quot;booleanValue&quot;: True or False,
                  &quot;doubleArray&quot;: {
                    &quot;doubleValues&quot;: [
                      3.14,
                    ],
                  },
                  &quot;doubleValue&quot;: 3.14,
                  &quot;intArray&quot;: {
                    &quot;intValues&quot;: [
                      &quot;A String&quot;,
                    ],
                  },
                  &quot;intValue&quot;: &quot;A String&quot;,
                  &quot;protoArray&quot;: {
                    &quot;protoValues&quot;: [
                      {
                        &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
                      },
                    ],
                  },
                  &quot;protoValue&quot;: {
                    &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
                  },
                  &quot;serializedObjectValue&quot;: {
                    &quot;objectValue&quot;: &quot;A String&quot;,
                  },
                  &quot;stringArray&quot;: {
                    &quot;stringValues&quot;: [
                      &quot;A String&quot;,
                    ],
                  },
                  &quot;stringValue&quot;: &quot;A String&quot;,
                },
              },
            ],
          },
          &quot;triggerCriteriaTaskImplementationClassName&quot;: &quot;A String&quot;, # Optional. Implementation class name. The class should implement the “TypedTask” interface.
        },
        &quot;triggerId&quot;: &quot;A String&quot;, # The backend trigger ID.
        &quot;triggerName&quot;: &quot;A String&quot;, # Optional. Name of the trigger This is added to identify the type of trigger. This is avoid the logic on triggerId to identify the trigger_type and push the same to monitoring.
        &quot;triggerNumber&quot;: &quot;A String&quot;, # Required. A number to uniquely identify each trigger config within the workflow on UI.
        &quot;triggerType&quot;: &quot;A String&quot;,
      },
    ],
    &quot;updateTime&quot;: &quot;A String&quot;, # Output only. Auto-generated.
    &quot;userLabel&quot;: &quot;A String&quot;, # Optional. A user-defined label that annotates an integration version. Typically, this is only set when the integration version is created.
  },
}</pre>
</div>

</body></html>