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

<p class="toc_element">
  <code><a href="#cancel">cancel(name, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Cancellation of an execution and associated sub-executions. This will not cancel an IN_PROCESS or completed(SUCCESSFUL, FAILED or CANCELLED) executions.</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="#download">download(name, x__xgafv=None)</a></code></p>
<p class="firstline">Download the execution.</p>
<p class="toc_element">
  <code><a href="#get">get(name, x__xgafv=None)</a></code></p>
<p class="firstline">Get an execution in the specified project.</p>
<p class="toc_element">
  <code><a href="#list">list(parent, filter=None, filterParams_customFilter=None, filterParams_endTime=None, filterParams_eventStatuses=None, filterParams_executionId=None, filterParams_parameterKey=None, filterParams_parameterPairKey=None, filterParams_parameterPairValue=None, filterParams_parameterType=None, filterParams_parameterValue=None, filterParams_startTime=None, filterParams_taskStatuses=None, filterParams_workflowName=None, orderBy=None, pageSize=None, pageToken=None, readMask=None, refreshAcl=None, snapshotMetadataWithoutParams=None, truncateParams=None, x__xgafv=None)</a></code></p>
<p class="firstline">Lists the results of all the integration executions. The response includes the same information as the [execution log](https://cloud.google.com/application-integration/docs/viewing-logs) in the Integration UI.</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="#replay">replay(name, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Re-execute an existing execution, with same request parameters and execution strategy.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="cancel">cancel(name, body=None, x__xgafv=None)</code>
  <pre>Cancellation of an execution and associated sub-executions. This will not cancel an IN_PROCESS or completed(SUCCESSFUL, FAILED or CANCELLED) executions.

Args:
  name: string, Required. The execution resource name. Format: projects/{gcp_project_id}/locations/{location}/products/{product}/integrations/{integration_id}/executions/{execution_id} (required)
  body: object, The request body.
    The object takes the form of:

{ # Request for cancelling an execution.
  &quot;cancelReason&quot;: &quot;A String&quot;, # Required. Reason for cancelling the execution. This is provided by the client requesting the cancellation, and is not used by the Platform.
}

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

Returns:
  An object of the form:

    { # Response for cancelling an execution.
  &quot;isCanceled&quot;: True or False, # True if cancellation performed successfully.
}</pre>
</div>

<div class="method">
    <code class="details" id="close">close()</code>
  <pre>Close httplib2 connections.</pre>
</div>

<div class="method">
    <code class="details" id="download">download(name, x__xgafv=None)</code>
  <pre>Download the execution.

Args:
  name: string, Required. The execution resource name. Format: projects/{gcp_project_id}/locations/{location}/products/{product}/integrations/{integration_id}/executions/{execution_id} (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Response for downloading an execution.
  &quot;content&quot;: &quot;A String&quot;, # The content of downloaded execution.
}</pre>
</div>

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

Args:
  name: string, Required. The execution resource name. Format: projects/{gcp_project_id}/locations/{location}/products/{product}/integrations/{integration_id}/executions/{execution_id} (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # The Execution resource contains detailed information of an individual integration execution.
  &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 # 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. Created time of the execution.
  &quot;directSubExecutions&quot;: [ # Direct sub executions of the following Execution.
    # Object with schema name: GoogleCloudIntegrationsV1alphaExecution
  ],
  &quot;eventExecutionDetails&quot;: { # Contains the details of the execution info of this event: this includes the tasks execution details plus the event execution statistics. Next available id: 12 # The execution info about this event.
    &quot;cancelReason&quot;: &quot;A String&quot;, # If the execution is manually canceled, this field will contain the reason for cancellation.
    &quot;eventAttemptStats&quot;: [
      {
        &quot;endTime&quot;: &quot;A String&quot;, # The end time of the event execution for current attempt.
        &quot;startTime&quot;: &quot;A String&quot;, # The start time of the event execution for current attempt. This could be in the future if it&#x27;s been scheduled.
      },
    ],
    &quot;eventExecutionSnapshot&quot;: [
      { # Contains the snapshot of the event execution for a given checkpoint. Next available id: 15
        &quot;checkpointTaskNumber&quot;: &quot;A String&quot;, # Indicates &quot;right after which checkpoint task&#x27;s execution&quot; this snapshot is taken.
        &quot;clientId&quot;: &quot;A String&quot;, # Client that the execution snapshot is associated to.
        &quot;conditionResults&quot;: [ # All of the computed conditions that been calculated.
          { # Contains the combined condition calculation results.
            &quot;currentTaskNumber&quot;: &quot;A String&quot;, # the current task number.
            &quot;nextTaskNumber&quot;: &quot;A String&quot;, # the next task number.
            &quot;result&quot;: True or False, # the result comes out after evaluate the combined condition. True if there&#x27;s no combined condition specified.
          },
        ],
        &quot;diffParams&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 in Event object that differs from last snapshot.
          &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;eventExecutionInfoId&quot;: &quot;A String&quot;, # Points to the event execution info this snapshot belongs to.
        &quot;eventExecutionSnapshotId&quot;: &quot;A String&quot;, # Auto-generated. Used as primary key for EventExecutionSnapshots table.
        &quot;eventExecutionSnapshotMetadata&quot;: {
          &quot;ancestorIterationNumbers&quot;: [ # Ancestor iteration number for the task(it will only be non-empty if the task is under &#x27;private workflow&#x27;)
            &quot;A String&quot;,
          ],
          &quot;ancestorTaskNumbers&quot;: [ # Ancestor task number for the task(it will only be non-empty if the task is under &#x27;private workflow&#x27;)
            &quot;A String&quot;,
          ],
          &quot;eventAttemptNum&quot;: 42, # the event attempt number this snapshot belongs to.
          &quot;integrationName&quot;: &quot;A String&quot;, # The direct integration which the event execution snapshots belongs to
          &quot;taskAttemptNum&quot;: 42, # the task attempt number this snapshot belongs to. Could be empty.
          &quot;taskLabel&quot;: &quot;A String&quot;, # the task label associated with this snapshot. Could be empty.
          &quot;taskName&quot;: &quot;A String&quot;, # the task name associated with this snapshot. Could be empty.
          &quot;taskNumber&quot;: &quot;A String&quot;, # The task number associated with this snapshot. Could be empty.
        },
        &quot;eventParams&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 in Event object.
          &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;exceedMaxSize&quot;: True or False, # indicate whether snapshot exceeded maximum size before clean up
        &quot;snapshotTime&quot;: &quot;A String&quot;, # Indicates when this snapshot is taken.
        &quot;taskExecutionDetails&quot;: [ # All of the task execution details at the given point of time.
          { # Contains the details of the execution of this task. Next available id: 11
            &quot;skippedOnFailure&quot;: True or False, # Indicates whether the task was skipped on failure. Only relevant if the task is in SKIPPED state.
            &quot;taskAttemptStats&quot;: [
              {
                &quot;endTime&quot;: &quot;A String&quot;, # The end time of the task execution for current attempt.
                &quot;startTime&quot;: &quot;A String&quot;, # The start time of the task execution for current attempt. This could be in the future if it&#x27;s been scheduled.
              },
            ],
            &quot;taskExecutionState&quot;: &quot;A String&quot;,
            &quot;taskNumber&quot;: &quot;A String&quot;, # Pointer to the task config it used for execution.
          },
        ],
        &quot;taskName&quot;: &quot;A String&quot;, # The task name associated with this snapshot. Could be empty.
        &quot;workflowName&quot;: &quot;A String&quot;, # Name of the workflow this event execution snapshot belongs to.
      },
    ],
    &quot;eventExecutionSnapshotsSize&quot;: &quot;A String&quot;, # Total size of all event_execution_snapshots for an execution
    &quot;eventExecutionState&quot;: &quot;A String&quot;,
    &quot;eventRetriesFromBeginningCount&quot;: 42, # Indicates the number of times the execution has restarted from the beginning.
    &quot;logFilePath&quot;: &quot;A String&quot;, # The log file path (aka. cns address) for this event.
    &quot;networkAddress&quot;: &quot;A String&quot;, # The network address (aka. bns address) that indicates where the event executor is running.
    &quot;nextExecutionTime&quot;: &quot;A String&quot;, # Next scheduled execution time in case the execution status was RETRY_ON_HOLD.
    &quot;ryeLockUnheldCount&quot;: 42, # Used internally and shouldn&#x27;t be exposed to users. A counter for the cron job to record how many times this event is in in_process state but don&#x27;t have a lock consecutively/
  },
  &quot;executionDetails&quot;: { # Contains the details of the execution info: this includes the tasks execution details plus the event execution statistics. # Detailed info of this execution.
    &quot;attemptStats&quot;: [ # List of Start and end time of the execution attempts.
      { # Status for the execution attempt.
        &quot;endTime&quot;: &quot;A String&quot;, # The end time of the integration execution for current attempt.
        &quot;startTime&quot;: &quot;A String&quot;, # The start time of the integration execution for current attempt. This could be in the future if it&#x27;s been scheduled.
      },
    ],
    &quot;eventExecutionSnapshotsSize&quot;: &quot;A String&quot;, # Total size of all event_execution_snapshots for an execution
    &quot;executionSnapshots&quot;: [ # List of snapshots taken during the execution.
      { # Contains the snapshot of the execution for a given checkpoint.
        &quot;checkpointTaskNumber&quot;: &quot;A String&quot;, # Indicates &quot;after which checkpoint task&#x27;s execution&quot; this snapshot is taken.
        &quot;executionSnapshotMetadata&quot;: { # Metadata of the execution snapshot. # Metadata of the execution snapshot.
          &quot;ancestorIterationNumbers&quot;: [ # Ancestor iteration number for the task(it will only be non-empty if the task is under &#x27;private workflow&#x27;)
            &quot;A String&quot;,
          ],
          &quot;ancestorTaskNumbers&quot;: [ # Ancestor task number for the task(it will only be non-empty if the task is under &#x27;private workflow&#x27;)
            &quot;A String&quot;,
          ],
          &quot;executionAttempt&quot;: 42, # the execution attempt number this snapshot belongs to.
          &quot;integrationName&quot;: &quot;A String&quot;, # The direct integration which the event execution snapshots belongs to
          &quot;task&quot;: &quot;A String&quot;, # the task name associated with this snapshot.
          &quot;taskAttempt&quot;: 42, # the task attempt number this snapshot belongs to.
          &quot;taskLabel&quot;: &quot;A String&quot;, # the task label associated with this snapshot. Could be empty.
          &quot;taskNumber&quot;: &quot;A String&quot;, # The task number associated with this snapshot.
        },
        &quot;params&quot;: { # Parameters used during the 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;taskExecutionDetails&quot;: [ # All of the task execution details at the given point of time.
          { # Contains the details of the execution of this task.
            &quot;taskAttemptStats&quot;: [ # Status for the current task execution attempt.
              { # Status for the execution attempt.
                &quot;endTime&quot;: &quot;A String&quot;, # The end time of the integration execution for current attempt.
                &quot;startTime&quot;: &quot;A String&quot;, # The start time of the integration execution for current attempt. This could be in the future if it&#x27;s been scheduled.
              },
            ],
            &quot;taskExecutionState&quot;: &quot;A String&quot;, # The execution state of this task.
            &quot;taskNumber&quot;: &quot;A String&quot;, # Pointer to the task config it used for execution.
          },
        ],
      },
    ],
    &quot;state&quot;: &quot;A String&quot;, # Status of the execution.
  },
  &quot;executionMethod&quot;: &quot;A String&quot;, # The ways user posts this event.
  &quot;integrationVersionState&quot;: &quot;A String&quot;, # Output only. State of the integration version
  &quot;name&quot;: &quot;A String&quot;, # Auto-generated primary key.
  &quot;replayInfo&quot;: { # Contains the details of the execution info: this includes the replay reason and replay tree connecting executions in a parent-child relationship # Output only. Replay info for the execution
    &quot;originalExecutionInfoId&quot;: &quot;A String&quot;, # If this execution is a replay of another execution, then this field contains the original execution id.
    &quot;replayMode&quot;: &quot;A String&quot;, # Replay mode for the execution
    &quot;replayReason&quot;: &quot;A String&quot;, # reason for replay
    &quot;replayedExecutionInfoIds&quot;: [ # If this execution has been replayed, then this field contains the execution ids of the replayed executions.
      &quot;A String&quot;,
    ],
  },
  &quot;requestParameters&quot;: { # Event parameters come in as part of the request.
    &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;requestParams&quot;: [ # Event parameters come in as part of the request.
    { # 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;responseParameters&quot;: { # Event parameters returned as part of the response. In the case of error, the `ErrorInfo` field is returned in the following format: { &quot;ErrorInfo&quot;: { &quot;message&quot;: String, &quot;code&quot;: Number } }
    &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;responseParams&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;snapshotNumber&quot;: &quot;A String&quot;, # Output only. An increasing sequence that is set when a new snapshot is created
  &quot;triggerId&quot;: &quot;A String&quot;, # 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.
  &quot;updateTime&quot;: &quot;A String&quot;, # Output only. Last modified time of the execution.
}</pre>
</div>

<div class="method">
    <code class="details" id="list">list(parent, filter=None, filterParams_customFilter=None, filterParams_endTime=None, filterParams_eventStatuses=None, filterParams_executionId=None, filterParams_parameterKey=None, filterParams_parameterPairKey=None, filterParams_parameterPairValue=None, filterParams_parameterType=None, filterParams_parameterValue=None, filterParams_startTime=None, filterParams_taskStatuses=None, filterParams_workflowName=None, orderBy=None, pageSize=None, pageToken=None, readMask=None, refreshAcl=None, snapshotMetadataWithoutParams=None, truncateParams=None, x__xgafv=None)</code>
  <pre>Lists the results of all the integration executions. The response includes the same information as the [execution log](https://cloud.google.com/application-integration/docs/viewing-logs) in the Integration UI.

Args:
  parent: string, Required. The parent resource name of the integration execution. (required)
  filter: string, Optional. Standard filter field, we support filtering on following fields: workflow_name: the name of the integration. CreateTimestamp: the execution created time. event_execution_state: the state of the executions. execution_id: the id of the execution. trigger_id: the id of the trigger. parameter_type: the type of the parameters involved in the execution. All fields support for EQUALS, in additional: CreateTimestamp support for LESS_THAN, GREATER_THAN ParameterType support for HAS For example: &quot;parameter_type&quot; HAS \&quot;string\&quot; Also supports operators like AND, OR, NOT For example, trigger_id=\&quot;id1\&quot; AND workflow_name=\&quot;testWorkflow\&quot;
  filterParams_customFilter: string, Optional user-provided custom filter.
  filterParams_endTime: string, End timestamp.
  filterParams_eventStatuses: string, List of possible event statuses. (repeated)
  filterParams_executionId: string, Execution id.
  filterParams_parameterKey: string, Param key. DEPRECATED. User parameter_pair_key instead.
  filterParams_parameterPairKey: string, Param key in the key value pair filter.
  filterParams_parameterPairValue: string, Param value in the key value pair filter.
  filterParams_parameterType: string, Param type.
  filterParams_parameterValue: string, Param value. DEPRECATED. User parameter_pair_value instead.
  filterParams_startTime: string, Start timestamp.
  filterParams_taskStatuses: string, List of possible task statuses. (repeated)
  filterParams_workflowName: string, Workflow name.
  orderBy: string, Optional. The results would be returned in order you specified here. Currently supporting &quot;create_time&quot;.
  pageSize: integer, Optional. The size of entries in the response.
  pageToken: string, Optional. The token returned in the previous response.
  readMask: string, Optional. View mask for the response data. If set, only the field specified will be returned as part of the result. If not set, all fields in Execution will be filled and returned. Supported fields: trigger_id execution_method create_time update_time execution_details execution_details.state execution_details.execution_snapshots execution_details.attempt_stats execution_details.event_execution_snapshots_size request_parameters cloud_logging_details snapshot_number replay_info
  refreshAcl: boolean, Optional. If true, the service will use the most recent acl information to list event execution infos and renew the acl cache. Note that fetching the most recent acl is synchronous, so it will increase RPC call latency.
  snapshotMetadataWithoutParams: boolean, Optional. If true, the service will provide execution info with snapshot metadata only i.e. without event parameters.
  truncateParams: boolean, Optional. If true, the service will truncate the params to only keep the first 1000 characters of string params and empty the executions in order to make response smaller. Only works for UI and when the params fields are not filtered out.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Response for listing the integration execution data.
  &quot;executionInfos&quot;: [ # Required. The detailed information of requested executions.
    { # Contains all the execution details for a workflow instance. Next available id: 27
      &quot;clientId&quot;: &quot;A String&quot;, # The event data user sends as request.
      &quot;cloudLoggingDetails&quot;: { # Cloud Logging details, selected by the user for the integration version (workflow). This message field will be also used in ExecutionInfo, to indicate the CloudLoggingDetails config at the time of workflow (integration version) execution, since this field value can be changed for an unpublished workflow. # Cloud Logging details for execution info
        &quot;cloudLoggingSeverity&quot;: &quot;A String&quot;, # 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, # Status of whether Cloud Logging is enabled or not for the integration version getting executed.
      },
      &quot;createTime&quot;: &quot;A String&quot;, # Auto-generated.
      &quot;errorCode&quot;: { # Registered ids for errors, as &quot;oneof&quot; enums. Each task or logical grouping of tasks may share the same enum. # Final error-code if event failed.
        &quot;commonErrorCode&quot;: &quot;A String&quot;,
      },
      &quot;errors&quot;: [ # Errors, warnings, and informationals associated with the workflow/task. The order in which the errors were added by the workflow/task is maintained.
        { # An error, warning, or information message associated with a workflow.
          &quot;errorCode&quot;: { # Registered ids for errors, as &quot;oneof&quot; enums. Each task or logical grouping of tasks may share the same enum. # The associated error-code, which can be a common or internal code.
            &quot;commonErrorCode&quot;: &quot;A String&quot;,
          },
          &quot;errorMessage&quot;: &quot;A String&quot;, # The full text of the error message, including any parameters that were thrown along with the exception.
          &quot;severity&quot;: &quot;A String&quot;, # The severity of the error: ERROR|WARN|INFO.
          &quot;taskNumber&quot;: 42, # The task try-number, in which, the error occurred. If zero, the error happened at the event level.
        },
      ],
      &quot;eventExecutionDetails&quot;: { # Contains the details of the execution info of this event: this includes the tasks execution details plus the event execution statistics. Next available id: 12 # The execution info about this event.
        &quot;cancelReason&quot;: &quot;A String&quot;, # If the execution is manually canceled, this field will contain the reason for cancellation.
        &quot;eventAttemptStats&quot;: [
          {
            &quot;endTime&quot;: &quot;A String&quot;, # The end time of the event execution for current attempt.
            &quot;startTime&quot;: &quot;A String&quot;, # The start time of the event execution for current attempt. This could be in the future if it&#x27;s been scheduled.
          },
        ],
        &quot;eventExecutionSnapshot&quot;: [ # After snapshot migration, this field will no longer be populated, but old execution snapshots will still be accessible.
          {
            &quot;checkpointTaskNumber&quot;: &quot;A String&quot;, # Indicates &quot;right after which checkpoint task&#x27;s execution&quot; this snapshot is taken.
            &quot;conditionResults&quot;: [ # All of the computed conditions that been calculated.
              { # Contains the combined condition calculation results.
                &quot;currentTaskNumber&quot;: &quot;A String&quot;, # the current task number.
                &quot;nextTaskNumber&quot;: &quot;A String&quot;, # the next task number.
                &quot;result&quot;: True or False, # the result comes out after evaluate the combined condition. True if there&#x27;s no combined condition specified.
              },
            ],
            &quot;diffParams&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 in Event object that differs from last snapshot.
              &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;eventExecutionInfoId&quot;: &quot;A String&quot;, # Points to the event execution info this snapshot belongs to.
            &quot;eventExecutionSnapshotId&quot;: &quot;A String&quot;, # Auto-generated. Used as primary key for EventExecutionSnapshots table.
            &quot;eventExecutionSnapshotMetadata&quot;: {
              &quot;ancestorIterationNumbers&quot;: [ # Ancestor iteration number for the task(it will only be non-empty if the task is under &#x27;private workflow&#x27;)
                &quot;A String&quot;,
              ],
              &quot;ancestorTaskNumbers&quot;: [ # Ancestor task number for the task(it will only be non-empty if the task is under &#x27;private workflow&#x27;)
                &quot;A String&quot;,
              ],
              &quot;eventAttemptNum&quot;: 42, # the event attempt number this snapshot belongs to.
              &quot;integrationName&quot;: &quot;A String&quot;, # The direct integration which the event execution snapshots belongs to
              &quot;taskAttemptNum&quot;: 42, # the task attempt number this snapshot belongs to. Could be empty.
              &quot;taskLabel&quot;: &quot;A String&quot;, # the task label associated with this snapshot. Could be empty.
              &quot;taskName&quot;: &quot;A String&quot;, # the task name associated with this snapshot. Could be empty.
              &quot;taskNumber&quot;: &quot;A String&quot;, # The task number associated with this snapshot. Could be empty.
            },
            &quot;eventParams&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 in Event object.
              &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;snapshotTime&quot;: &quot;A String&quot;, # Indicates when this snapshot is taken.
            &quot;taskExecutionDetails&quot;: [ # All of the task execution details at the given point of time.
              { # Contains the details of the execution of this task. Next available id: 11
                &quot;skippedOnFailure&quot;: True or False, # Indicates whether the task was skipped on failure. Only relevant if the task is in SKIPPED state.
                &quot;taskAttemptStats&quot;: [
                  {
                    &quot;endTime&quot;: &quot;A String&quot;, # The end time of the task execution for current attempt.
                    &quot;startTime&quot;: &quot;A String&quot;, # The start time of the task execution for current attempt. This could be in the future if it&#x27;s been scheduled.
                  },
                ],
                &quot;taskExecutionState&quot;: &quot;A String&quot;,
                &quot;taskNumber&quot;: &quot;A String&quot;, # Pointer to the task config it used for execution.
              },
            ],
            &quot;taskName&quot;: &quot;A String&quot;, # The task name associated with this snapshot. Could be empty.
          },
        ],
        &quot;eventExecutionSnapshotsSize&quot;: &quot;A String&quot;, # Total size of all event_execution_snapshots for an execution
        &quot;eventExecutionState&quot;: &quot;A String&quot;, # The execution state of this event.
        &quot;eventRetriesFromBeginningCount&quot;: 42, # Indicates the number of times the execution has restarted from the beginning.
        &quot;logFilePath&quot;: &quot;A String&quot;, # The log file path (aka. cns address) for this event.
        &quot;networkAddress&quot;: &quot;A String&quot;, # The network address (aka. bns address) that indicates where the event executor is running.
        &quot;nextExecutionTime&quot;: &quot;A String&quot;, # Next scheduled execution time in case the execution status was RETRY_ON_HOLD.
        &quot;ryeLockUnheldCount&quot;: 42, # Used internally and shouldn&#x27;t be exposed to users. A counter for the cron job to record how many times this event is in in_process state but don&#x27;t have a lock consecutively/
      },
      &quot;eventExecutionInfoId&quot;: &quot;A String&quot;, # Auto-generated primary key.
      &quot;executionTraceInfo&quot;: { # Message that helps aggregate all sub-executions triggered by one execution and keeps track of child-parent relationships. # Execution trace info to aggregate parent-child executions.
        &quot;parentEventExecutionInfoId&quot;: &quot;A String&quot;, # Parent event execution info id that triggers the current execution through SubWorkflowExecutorTask.
        &quot;traceId&quot;: &quot;A String&quot;, # Used to aggregate ExecutionTraceInfo.
      },
      &quot;integrationVersionUserLabel&quot;: &quot;A String&quot;, # User-defined label that annotates the executed integration version.
      &quot;lastModifiedTime&quot;: &quot;A String&quot;, # Auto-generated.
      &quot;postMethod&quot;: &quot;A String&quot;, # The ways user posts this event.
      &quot;product&quot;: &quot;A String&quot;, # Which Google product the execution_info belongs to. If not set, the execution_info belongs to Integration Platform by default.
      &quot;replayInfo&quot;: { # Contains the details of the execution info: this includes the replay reason and replay tree connecting executions in a parent-child relationship # Replay info for the execution
        &quot;originalExecutionInfoId&quot;: &quot;A String&quot;, # If this execution is a replay of another execution, then this field contains the original execution id.
        &quot;replayMode&quot;: &quot;A String&quot;, # Replay mode for the execution
        &quot;replayReason&quot;: &quot;A String&quot;, # reason for replay
        &quot;replayedExecutionInfoIds&quot;: [ # If this execution has been replayed, then this field contains the execution ids of the replayed executions.
          &quot;A String&quot;,
        ],
      },
      &quot;requestId&quot;: &quot;A String&quot;, # Optional. This is used to de-dup incoming request.
      &quot;requestParams&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 # Event parameters come in as part of the request.
        &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;responseParams&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 # Event parameters come out as part of the response.
        &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;snapshotNumber&quot;: &quot;A String&quot;, # Workflow snapshot number.
      &quot;tenant&quot;: &quot;A String&quot;, # Tenant this event is created. Used to reschedule the event to correct tenant.
      &quot;triggerId&quot;: &quot;A String&quot;, # The trigger id of the workflow trigger config. If both trigger_id and client_id is present, the workflow is executed from the start tasks provided by the matching trigger config otherwise it is executed from the default start tasks.
      &quot;workflowId&quot;: &quot;A String&quot;, # Required. Pointer to the workflow it is executing.
      &quot;workflowName&quot;: &quot;A String&quot;, # Name of the workflow.
      &quot;workflowRetryBackoffIntervalSeconds&quot;: &quot;A String&quot;, # Time interval in seconds to schedule retry of workflow in manifold when workflow is already running
    },
  ],
  &quot;executions&quot;: [ # The detailed information of requested executions
    { # The Execution resource contains detailed information of an individual integration execution.
      &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 # 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. Created time of the execution.
      &quot;directSubExecutions&quot;: [ # Direct sub executions of the following Execution.
        # Object with schema name: GoogleCloudIntegrationsV1alphaExecution
      ],
      &quot;eventExecutionDetails&quot;: { # Contains the details of the execution info of this event: this includes the tasks execution details plus the event execution statistics. Next available id: 12 # The execution info about this event.
        &quot;cancelReason&quot;: &quot;A String&quot;, # If the execution is manually canceled, this field will contain the reason for cancellation.
        &quot;eventAttemptStats&quot;: [
          {
            &quot;endTime&quot;: &quot;A String&quot;, # The end time of the event execution for current attempt.
            &quot;startTime&quot;: &quot;A String&quot;, # The start time of the event execution for current attempt. This could be in the future if it&#x27;s been scheduled.
          },
        ],
        &quot;eventExecutionSnapshot&quot;: [
          { # Contains the snapshot of the event execution for a given checkpoint. Next available id: 15
            &quot;checkpointTaskNumber&quot;: &quot;A String&quot;, # Indicates &quot;right after which checkpoint task&#x27;s execution&quot; this snapshot is taken.
            &quot;clientId&quot;: &quot;A String&quot;, # Client that the execution snapshot is associated to.
            &quot;conditionResults&quot;: [ # All of the computed conditions that been calculated.
              { # Contains the combined condition calculation results.
                &quot;currentTaskNumber&quot;: &quot;A String&quot;, # the current task number.
                &quot;nextTaskNumber&quot;: &quot;A String&quot;, # the next task number.
                &quot;result&quot;: True or False, # the result comes out after evaluate the combined condition. True if there&#x27;s no combined condition specified.
              },
            ],
            &quot;diffParams&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 in Event object that differs from last snapshot.
              &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;eventExecutionInfoId&quot;: &quot;A String&quot;, # Points to the event execution info this snapshot belongs to.
            &quot;eventExecutionSnapshotId&quot;: &quot;A String&quot;, # Auto-generated. Used as primary key for EventExecutionSnapshots table.
            &quot;eventExecutionSnapshotMetadata&quot;: {
              &quot;ancestorIterationNumbers&quot;: [ # Ancestor iteration number for the task(it will only be non-empty if the task is under &#x27;private workflow&#x27;)
                &quot;A String&quot;,
              ],
              &quot;ancestorTaskNumbers&quot;: [ # Ancestor task number for the task(it will only be non-empty if the task is under &#x27;private workflow&#x27;)
                &quot;A String&quot;,
              ],
              &quot;eventAttemptNum&quot;: 42, # the event attempt number this snapshot belongs to.
              &quot;integrationName&quot;: &quot;A String&quot;, # The direct integration which the event execution snapshots belongs to
              &quot;taskAttemptNum&quot;: 42, # the task attempt number this snapshot belongs to. Could be empty.
              &quot;taskLabel&quot;: &quot;A String&quot;, # the task label associated with this snapshot. Could be empty.
              &quot;taskName&quot;: &quot;A String&quot;, # the task name associated with this snapshot. Could be empty.
              &quot;taskNumber&quot;: &quot;A String&quot;, # The task number associated with this snapshot. Could be empty.
            },
            &quot;eventParams&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 in Event object.
              &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;exceedMaxSize&quot;: True or False, # indicate whether snapshot exceeded maximum size before clean up
            &quot;snapshotTime&quot;: &quot;A String&quot;, # Indicates when this snapshot is taken.
            &quot;taskExecutionDetails&quot;: [ # All of the task execution details at the given point of time.
              { # Contains the details of the execution of this task. Next available id: 11
                &quot;skippedOnFailure&quot;: True or False, # Indicates whether the task was skipped on failure. Only relevant if the task is in SKIPPED state.
                &quot;taskAttemptStats&quot;: [
                  {
                    &quot;endTime&quot;: &quot;A String&quot;, # The end time of the task execution for current attempt.
                    &quot;startTime&quot;: &quot;A String&quot;, # The start time of the task execution for current attempt. This could be in the future if it&#x27;s been scheduled.
                  },
                ],
                &quot;taskExecutionState&quot;: &quot;A String&quot;,
                &quot;taskNumber&quot;: &quot;A String&quot;, # Pointer to the task config it used for execution.
              },
            ],
            &quot;taskName&quot;: &quot;A String&quot;, # The task name associated with this snapshot. Could be empty.
            &quot;workflowName&quot;: &quot;A String&quot;, # Name of the workflow this event execution snapshot belongs to.
          },
        ],
        &quot;eventExecutionSnapshotsSize&quot;: &quot;A String&quot;, # Total size of all event_execution_snapshots for an execution
        &quot;eventExecutionState&quot;: &quot;A String&quot;,
        &quot;eventRetriesFromBeginningCount&quot;: 42, # Indicates the number of times the execution has restarted from the beginning.
        &quot;logFilePath&quot;: &quot;A String&quot;, # The log file path (aka. cns address) for this event.
        &quot;networkAddress&quot;: &quot;A String&quot;, # The network address (aka. bns address) that indicates where the event executor is running.
        &quot;nextExecutionTime&quot;: &quot;A String&quot;, # Next scheduled execution time in case the execution status was RETRY_ON_HOLD.
        &quot;ryeLockUnheldCount&quot;: 42, # Used internally and shouldn&#x27;t be exposed to users. A counter for the cron job to record how many times this event is in in_process state but don&#x27;t have a lock consecutively/
      },
      &quot;executionDetails&quot;: { # Contains the details of the execution info: this includes the tasks execution details plus the event execution statistics. # Detailed info of this execution.
        &quot;attemptStats&quot;: [ # List of Start and end time of the execution attempts.
          { # Status for the execution attempt.
            &quot;endTime&quot;: &quot;A String&quot;, # The end time of the integration execution for current attempt.
            &quot;startTime&quot;: &quot;A String&quot;, # The start time of the integration execution for current attempt. This could be in the future if it&#x27;s been scheduled.
          },
        ],
        &quot;eventExecutionSnapshotsSize&quot;: &quot;A String&quot;, # Total size of all event_execution_snapshots for an execution
        &quot;executionSnapshots&quot;: [ # List of snapshots taken during the execution.
          { # Contains the snapshot of the execution for a given checkpoint.
            &quot;checkpointTaskNumber&quot;: &quot;A String&quot;, # Indicates &quot;after which checkpoint task&#x27;s execution&quot; this snapshot is taken.
            &quot;executionSnapshotMetadata&quot;: { # Metadata of the execution snapshot. # Metadata of the execution snapshot.
              &quot;ancestorIterationNumbers&quot;: [ # Ancestor iteration number for the task(it will only be non-empty if the task is under &#x27;private workflow&#x27;)
                &quot;A String&quot;,
              ],
              &quot;ancestorTaskNumbers&quot;: [ # Ancestor task number for the task(it will only be non-empty if the task is under &#x27;private workflow&#x27;)
                &quot;A String&quot;,
              ],
              &quot;executionAttempt&quot;: 42, # the execution attempt number this snapshot belongs to.
              &quot;integrationName&quot;: &quot;A String&quot;, # The direct integration which the event execution snapshots belongs to
              &quot;task&quot;: &quot;A String&quot;, # the task name associated with this snapshot.
              &quot;taskAttempt&quot;: 42, # the task attempt number this snapshot belongs to.
              &quot;taskLabel&quot;: &quot;A String&quot;, # the task label associated with this snapshot. Could be empty.
              &quot;taskNumber&quot;: &quot;A String&quot;, # The task number associated with this snapshot.
            },
            &quot;params&quot;: { # Parameters used during the 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;taskExecutionDetails&quot;: [ # All of the task execution details at the given point of time.
              { # Contains the details of the execution of this task.
                &quot;taskAttemptStats&quot;: [ # Status for the current task execution attempt.
                  { # Status for the execution attempt.
                    &quot;endTime&quot;: &quot;A String&quot;, # The end time of the integration execution for current attempt.
                    &quot;startTime&quot;: &quot;A String&quot;, # The start time of the integration execution for current attempt. This could be in the future if it&#x27;s been scheduled.
                  },
                ],
                &quot;taskExecutionState&quot;: &quot;A String&quot;, # The execution state of this task.
                &quot;taskNumber&quot;: &quot;A String&quot;, # Pointer to the task config it used for execution.
              },
            ],
          },
        ],
        &quot;state&quot;: &quot;A String&quot;, # Status of the execution.
      },
      &quot;executionMethod&quot;: &quot;A String&quot;, # The ways user posts this event.
      &quot;integrationVersionState&quot;: &quot;A String&quot;, # Output only. State of the integration version
      &quot;name&quot;: &quot;A String&quot;, # Auto-generated primary key.
      &quot;replayInfo&quot;: { # Contains the details of the execution info: this includes the replay reason and replay tree connecting executions in a parent-child relationship # Output only. Replay info for the execution
        &quot;originalExecutionInfoId&quot;: &quot;A String&quot;, # If this execution is a replay of another execution, then this field contains the original execution id.
        &quot;replayMode&quot;: &quot;A String&quot;, # Replay mode for the execution
        &quot;replayReason&quot;: &quot;A String&quot;, # reason for replay
        &quot;replayedExecutionInfoIds&quot;: [ # If this execution has been replayed, then this field contains the execution ids of the replayed executions.
          &quot;A String&quot;,
        ],
      },
      &quot;requestParameters&quot;: { # Event parameters come in as part of the request.
        &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;requestParams&quot;: [ # Event parameters come in as part of the request.
        { # 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;responseParameters&quot;: { # Event parameters returned as part of the response. In the case of error, the `ErrorInfo` field is returned in the following format: { &quot;ErrorInfo&quot;: { &quot;message&quot;: String, &quot;code&quot;: Number } }
        &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;responseParams&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;snapshotNumber&quot;: &quot;A String&quot;, # Output only. An increasing sequence that is set when a new snapshot is created
      &quot;triggerId&quot;: &quot;A String&quot;, # 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.
      &quot;updateTime&quot;: &quot;A String&quot;, # Output only. Last modified time of the execution.
    },
  ],
  &quot;nextPageToken&quot;: &quot;A String&quot;, # The token used to retrieve the next page results.
}</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="replay">replay(name, body=None, x__xgafv=None)</code>
  <pre>Re-execute an existing execution, with same request parameters and execution strategy.

Args:
  name: string, Required. Next ID: 6 The execution resource name. Format: projects/{gcp_project_id}/locations/{location}/integrations/{integration}/executions/{execution_id} (required)
  body: object, The request body.
    The object takes the form of:

{ # Request for replaying an execution.
  &quot;modifiedParameters&quot;: { # Optional. The modified input parameters for replay. - Provide values for all the fields in the &#x27;update_mask&#x27;. Any field not present in the &#x27;update_mask&#x27; will be ignored and its value will be taken from the original execution. - If the &#x27;update_mask&#x27; is not specified, all the parameters from original execution will be ignored and only the `modified_parameters` will be used.
    &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;replayMode&quot;: &quot;A String&quot;, # Optional. The mode of the replay.
  &quot;replayReason&quot;: &quot;A String&quot;, # Required. The user provided reason for replaying the execution.
  &quot;updateMask&quot;: &quot;A String&quot;, # Optional. The list of parameters to be updated. - If the `update_mask` is not specified, all the parameters from original execution will be ignored and only the `modified_parameters` will be used. - It is an error to include a parameter in `update_mask` but not in `modified_parameters`. - Updating nested fields in a JSON parameter is not supported, please provide the complete JSON in the `modified_parameters`.
}

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

Returns:
  An object of the form:

    { # Response for replaying an execution.
  &quot;executionId&quot;: &quot;A String&quot;, # Next ID: 4 The id of the execution corresponding to this run of the integration.
  &quot;outputParameters&quot;: { # OUTPUT parameters in format of Map. Where Key is the name of the parameter. The parameters would only be present in case of synchrounous execution. Note: Name of the system generated parameters are wrapped by backtick(`) to distinguish them from the user defined parameters.
    &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
  },
  &quot;replayedExecutionId&quot;: &quot;A String&quot;, # The execution id which is replayed.
}</pre>
</div>

</body></html>