<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="datastream_v1.html">Datastream API</a> . <a href="datastream_v1.projects.html">projects</a> . <a href="datastream_v1.projects.locations.html">locations</a> . <a href="datastream_v1.projects.locations.streams.html">streams</a> . <a href="datastream_v1.projects.locations.streams.objects.html">objects</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#close">close()</a></code></p>
<p class="firstline">Close httplib2 connections.</p>
<p class="toc_element">
  <code><a href="#get">get(name, x__xgafv=None)</a></code></p>
<p class="firstline">Use this method to get details about a stream object.</p>
<p class="toc_element">
  <code><a href="#list">list(parent, pageSize=None, pageToken=None, x__xgafv=None)</a></code></p>
<p class="firstline">Use this method to list the objects of a specific stream.</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="#lookup">lookup(parent, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Use this method to look up a stream object by its source object identifier.</p>
<p class="toc_element">
  <code><a href="#startBackfillJob">startBackfillJob(object, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Use this method to start a backfill job for the specified stream object.</p>
<p class="toc_element">
  <code><a href="#stopBackfillJob">stopBackfillJob(object, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Use this method to stop a backfill job for the specified stream object.</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="get">get(name, x__xgafv=None)</code>
  <pre>Use this method to get details about a stream object.

Args:
  name: string, Required. The name of the stream object resource to get. (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # A specific stream object (e.g a specific DB table).
  &quot;backfillJob&quot;: { # Represents a backfill job on a specific stream object. # The latest backfill job that was initiated for the stream object.
    &quot;errors&quot;: [ # Output only. Errors which caused the backfill job to fail.
      { # Represent a user-facing Error.
        &quot;details&quot;: { # Additional information about the error.
          &quot;a_key&quot;: &quot;A String&quot;,
        },
        &quot;errorTime&quot;: &quot;A String&quot;, # The time when the error occurred.
        &quot;errorUuid&quot;: &quot;A String&quot;, # A unique identifier for this specific error, allowing it to be traced throughout the system in logs and API responses.
        &quot;message&quot;: &quot;A String&quot;, # A message containing more information about the error that occurred.
        &quot;reason&quot;: &quot;A String&quot;, # A title that explains the reason for the error.
      },
    ],
    &quot;lastEndTime&quot;: &quot;A String&quot;, # Output only. Backfill job&#x27;s end time.
    &quot;lastStartTime&quot;: &quot;A String&quot;, # Output only. Backfill job&#x27;s start time.
    &quot;state&quot;: &quot;A String&quot;, # Output only. Backfill job state.
    &quot;trigger&quot;: &quot;A String&quot;, # Backfill job&#x27;s triggering reason.
  },
  &quot;createTime&quot;: &quot;A String&quot;, # Output only. The creation time of the object.
  &quot;displayName&quot;: &quot;A String&quot;, # Required. Display name.
  &quot;errors&quot;: [ # Output only. Active errors on the object.
    { # Represent a user-facing Error.
      &quot;details&quot;: { # Additional information about the error.
        &quot;a_key&quot;: &quot;A String&quot;,
      },
      &quot;errorTime&quot;: &quot;A String&quot;, # The time when the error occurred.
      &quot;errorUuid&quot;: &quot;A String&quot;, # A unique identifier for this specific error, allowing it to be traced throughout the system in logs and API responses.
      &quot;message&quot;: &quot;A String&quot;, # A message containing more information about the error that occurred.
      &quot;reason&quot;: &quot;A String&quot;, # A title that explains the reason for the error.
    },
  ],
  &quot;name&quot;: &quot;A String&quot;, # Output only. Identifier. The object resource&#x27;s name.
  &quot;sourceObject&quot;: { # Represents an identifier of an object in the data source. # The object identifier in the data source.
    &quot;mongodbIdentifier&quot;: { # MongoDB data source object identifier. # MongoDB data source object identifier.
      &quot;collection&quot;: &quot;A String&quot;, # Required. The collection name.
      &quot;database&quot;: &quot;A String&quot;, # Required. The database name.
    },
    &quot;mysqlIdentifier&quot;: { # Mysql data source object identifier. # Mysql data source object identifier.
      &quot;database&quot;: &quot;A String&quot;, # Required. The database name.
      &quot;table&quot;: &quot;A String&quot;, # Required. The table name.
    },
    &quot;oracleIdentifier&quot;: { # Oracle data source object identifier. # Oracle data source object identifier.
      &quot;schema&quot;: &quot;A String&quot;, # Required. The schema name.
      &quot;table&quot;: &quot;A String&quot;, # Required. The table name.
    },
    &quot;postgresqlIdentifier&quot;: { # PostgreSQL data source object identifier. # PostgreSQL data source object identifier.
      &quot;schema&quot;: &quot;A String&quot;, # Required. The schema name.
      &quot;table&quot;: &quot;A String&quot;, # Required. The table name.
    },
    &quot;salesforceIdentifier&quot;: { # Salesforce data source object identifier. # Salesforce data source object identifier.
      &quot;objectName&quot;: &quot;A String&quot;, # Required. The object name.
    },
    &quot;sqlServerIdentifier&quot;: { # SQLServer data source object identifier. # SQLServer data source object identifier.
      &quot;schema&quot;: &quot;A String&quot;, # Required. The schema name.
      &quot;table&quot;: &quot;A String&quot;, # Required. The table name.
    },
  },
  &quot;updateTime&quot;: &quot;A String&quot;, # Output only. The last update time of the object.
}</pre>
</div>

<div class="method">
    <code class="details" id="list">list(parent, pageSize=None, pageToken=None, x__xgafv=None)</code>
  <pre>Use this method to list the objects of a specific stream.

Args:
  parent: string, Required. The parent stream that owns the collection of objects. (required)
  pageSize: integer, Maximum number of objects to return. Default is 50. The maximum value is 1000; values above 1000 will be coerced to 1000.
  pageToken: string, Page token received from a previous `ListStreamObjectsRequest` call. Provide this to retrieve the subsequent page. When paginating, all other parameters provided to `ListStreamObjectsRequest` 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 containing the objects for a stream.
  &quot;nextPageToken&quot;: &quot;A String&quot;, # A token, which can be sent as `page_token` to retrieve the next page.
  &quot;streamObjects&quot;: [ # List of stream objects.
    { # A specific stream object (e.g a specific DB table).
      &quot;backfillJob&quot;: { # Represents a backfill job on a specific stream object. # The latest backfill job that was initiated for the stream object.
        &quot;errors&quot;: [ # Output only. Errors which caused the backfill job to fail.
          { # Represent a user-facing Error.
            &quot;details&quot;: { # Additional information about the error.
              &quot;a_key&quot;: &quot;A String&quot;,
            },
            &quot;errorTime&quot;: &quot;A String&quot;, # The time when the error occurred.
            &quot;errorUuid&quot;: &quot;A String&quot;, # A unique identifier for this specific error, allowing it to be traced throughout the system in logs and API responses.
            &quot;message&quot;: &quot;A String&quot;, # A message containing more information about the error that occurred.
            &quot;reason&quot;: &quot;A String&quot;, # A title that explains the reason for the error.
          },
        ],
        &quot;lastEndTime&quot;: &quot;A String&quot;, # Output only. Backfill job&#x27;s end time.
        &quot;lastStartTime&quot;: &quot;A String&quot;, # Output only. Backfill job&#x27;s start time.
        &quot;state&quot;: &quot;A String&quot;, # Output only. Backfill job state.
        &quot;trigger&quot;: &quot;A String&quot;, # Backfill job&#x27;s triggering reason.
      },
      &quot;createTime&quot;: &quot;A String&quot;, # Output only. The creation time of the object.
      &quot;displayName&quot;: &quot;A String&quot;, # Required. Display name.
      &quot;errors&quot;: [ # Output only. Active errors on the object.
        { # Represent a user-facing Error.
          &quot;details&quot;: { # Additional information about the error.
            &quot;a_key&quot;: &quot;A String&quot;,
          },
          &quot;errorTime&quot;: &quot;A String&quot;, # The time when the error occurred.
          &quot;errorUuid&quot;: &quot;A String&quot;, # A unique identifier for this specific error, allowing it to be traced throughout the system in logs and API responses.
          &quot;message&quot;: &quot;A String&quot;, # A message containing more information about the error that occurred.
          &quot;reason&quot;: &quot;A String&quot;, # A title that explains the reason for the error.
        },
      ],
      &quot;name&quot;: &quot;A String&quot;, # Output only. Identifier. The object resource&#x27;s name.
      &quot;sourceObject&quot;: { # Represents an identifier of an object in the data source. # The object identifier in the data source.
        &quot;mongodbIdentifier&quot;: { # MongoDB data source object identifier. # MongoDB data source object identifier.
          &quot;collection&quot;: &quot;A String&quot;, # Required. The collection name.
          &quot;database&quot;: &quot;A String&quot;, # Required. The database name.
        },
        &quot;mysqlIdentifier&quot;: { # Mysql data source object identifier. # Mysql data source object identifier.
          &quot;database&quot;: &quot;A String&quot;, # Required. The database name.
          &quot;table&quot;: &quot;A String&quot;, # Required. The table name.
        },
        &quot;oracleIdentifier&quot;: { # Oracle data source object identifier. # Oracle data source object identifier.
          &quot;schema&quot;: &quot;A String&quot;, # Required. The schema name.
          &quot;table&quot;: &quot;A String&quot;, # Required. The table name.
        },
        &quot;postgresqlIdentifier&quot;: { # PostgreSQL data source object identifier. # PostgreSQL data source object identifier.
          &quot;schema&quot;: &quot;A String&quot;, # Required. The schema name.
          &quot;table&quot;: &quot;A String&quot;, # Required. The table name.
        },
        &quot;salesforceIdentifier&quot;: { # Salesforce data source object identifier. # Salesforce data source object identifier.
          &quot;objectName&quot;: &quot;A String&quot;, # Required. The object name.
        },
        &quot;sqlServerIdentifier&quot;: { # SQLServer data source object identifier. # SQLServer data source object identifier.
          &quot;schema&quot;: &quot;A String&quot;, # Required. The schema name.
          &quot;table&quot;: &quot;A String&quot;, # Required. The table name.
        },
      },
      &quot;updateTime&quot;: &quot;A String&quot;, # Output only. The last update time of the object.
    },
  ],
}</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="lookup">lookup(parent, body=None, x__xgafv=None)</code>
  <pre>Use this method to look up a stream object by its source object identifier.

Args:
  parent: string, Required. The parent stream that owns the collection of objects. (required)
  body: object, The request body.
    The object takes the form of:

{ # Request for looking up a specific stream object by its source object identifier.
  &quot;sourceObjectIdentifier&quot;: { # Represents an identifier of an object in the data source. # Required. The source object identifier which maps to the stream object.
    &quot;mongodbIdentifier&quot;: { # MongoDB data source object identifier. # MongoDB data source object identifier.
      &quot;collection&quot;: &quot;A String&quot;, # Required. The collection name.
      &quot;database&quot;: &quot;A String&quot;, # Required. The database name.
    },
    &quot;mysqlIdentifier&quot;: { # Mysql data source object identifier. # Mysql data source object identifier.
      &quot;database&quot;: &quot;A String&quot;, # Required. The database name.
      &quot;table&quot;: &quot;A String&quot;, # Required. The table name.
    },
    &quot;oracleIdentifier&quot;: { # Oracle data source object identifier. # Oracle data source object identifier.
      &quot;schema&quot;: &quot;A String&quot;, # Required. The schema name.
      &quot;table&quot;: &quot;A String&quot;, # Required. The table name.
    },
    &quot;postgresqlIdentifier&quot;: { # PostgreSQL data source object identifier. # PostgreSQL data source object identifier.
      &quot;schema&quot;: &quot;A String&quot;, # Required. The schema name.
      &quot;table&quot;: &quot;A String&quot;, # Required. The table name.
    },
    &quot;salesforceIdentifier&quot;: { # Salesforce data source object identifier. # Salesforce data source object identifier.
      &quot;objectName&quot;: &quot;A String&quot;, # Required. The object name.
    },
    &quot;sqlServerIdentifier&quot;: { # SQLServer data source object identifier. # SQLServer data source object identifier.
      &quot;schema&quot;: &quot;A String&quot;, # Required. The schema name.
      &quot;table&quot;: &quot;A String&quot;, # Required. The table name.
    },
  },
}

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

Returns:
  An object of the form:

    { # A specific stream object (e.g a specific DB table).
  &quot;backfillJob&quot;: { # Represents a backfill job on a specific stream object. # The latest backfill job that was initiated for the stream object.
    &quot;errors&quot;: [ # Output only. Errors which caused the backfill job to fail.
      { # Represent a user-facing Error.
        &quot;details&quot;: { # Additional information about the error.
          &quot;a_key&quot;: &quot;A String&quot;,
        },
        &quot;errorTime&quot;: &quot;A String&quot;, # The time when the error occurred.
        &quot;errorUuid&quot;: &quot;A String&quot;, # A unique identifier for this specific error, allowing it to be traced throughout the system in logs and API responses.
        &quot;message&quot;: &quot;A String&quot;, # A message containing more information about the error that occurred.
        &quot;reason&quot;: &quot;A String&quot;, # A title that explains the reason for the error.
      },
    ],
    &quot;lastEndTime&quot;: &quot;A String&quot;, # Output only. Backfill job&#x27;s end time.
    &quot;lastStartTime&quot;: &quot;A String&quot;, # Output only. Backfill job&#x27;s start time.
    &quot;state&quot;: &quot;A String&quot;, # Output only. Backfill job state.
    &quot;trigger&quot;: &quot;A String&quot;, # Backfill job&#x27;s triggering reason.
  },
  &quot;createTime&quot;: &quot;A String&quot;, # Output only. The creation time of the object.
  &quot;displayName&quot;: &quot;A String&quot;, # Required. Display name.
  &quot;errors&quot;: [ # Output only. Active errors on the object.
    { # Represent a user-facing Error.
      &quot;details&quot;: { # Additional information about the error.
        &quot;a_key&quot;: &quot;A String&quot;,
      },
      &quot;errorTime&quot;: &quot;A String&quot;, # The time when the error occurred.
      &quot;errorUuid&quot;: &quot;A String&quot;, # A unique identifier for this specific error, allowing it to be traced throughout the system in logs and API responses.
      &quot;message&quot;: &quot;A String&quot;, # A message containing more information about the error that occurred.
      &quot;reason&quot;: &quot;A String&quot;, # A title that explains the reason for the error.
    },
  ],
  &quot;name&quot;: &quot;A String&quot;, # Output only. Identifier. The object resource&#x27;s name.
  &quot;sourceObject&quot;: { # Represents an identifier of an object in the data source. # The object identifier in the data source.
    &quot;mongodbIdentifier&quot;: { # MongoDB data source object identifier. # MongoDB data source object identifier.
      &quot;collection&quot;: &quot;A String&quot;, # Required. The collection name.
      &quot;database&quot;: &quot;A String&quot;, # Required. The database name.
    },
    &quot;mysqlIdentifier&quot;: { # Mysql data source object identifier. # Mysql data source object identifier.
      &quot;database&quot;: &quot;A String&quot;, # Required. The database name.
      &quot;table&quot;: &quot;A String&quot;, # Required. The table name.
    },
    &quot;oracleIdentifier&quot;: { # Oracle data source object identifier. # Oracle data source object identifier.
      &quot;schema&quot;: &quot;A String&quot;, # Required. The schema name.
      &quot;table&quot;: &quot;A String&quot;, # Required. The table name.
    },
    &quot;postgresqlIdentifier&quot;: { # PostgreSQL data source object identifier. # PostgreSQL data source object identifier.
      &quot;schema&quot;: &quot;A String&quot;, # Required. The schema name.
      &quot;table&quot;: &quot;A String&quot;, # Required. The table name.
    },
    &quot;salesforceIdentifier&quot;: { # Salesforce data source object identifier. # Salesforce data source object identifier.
      &quot;objectName&quot;: &quot;A String&quot;, # Required. The object name.
    },
    &quot;sqlServerIdentifier&quot;: { # SQLServer data source object identifier. # SQLServer data source object identifier.
      &quot;schema&quot;: &quot;A String&quot;, # Required. The schema name.
      &quot;table&quot;: &quot;A String&quot;, # Required. The table name.
    },
  },
  &quot;updateTime&quot;: &quot;A String&quot;, # Output only. The last update time of the object.
}</pre>
</div>

<div class="method">
    <code class="details" id="startBackfillJob">startBackfillJob(object, body=None, x__xgafv=None)</code>
  <pre>Use this method to start a backfill job for the specified stream object.

Args:
  object: string, Required. The name of the stream object resource to start a backfill job for. (required)
  body: object, The request body.
    The object takes the form of:

{ # Request for manually initiating a backfill job for a specific stream object.
  &quot;eventFilter&quot;: { # Represents a filter for included data on a stream object. # Optional. Optional event filter. If not set, or empty, the backfill will be performed on the entire object. This is currently used for partial backfill and only supported for SQL Server sources.
    &quot;sqlWhereClause&quot;: &quot;A String&quot;, # An SQL-query Where clause selecting which data should be included, not including the &quot;WHERE&quot; keyword. E.g., &quot;t.key1 = &#x27;value1&#x27; AND t.key2 = &#x27;value2&#x27;&quot;.
  },
}

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

Returns:
  An object of the form:

    { # Response for manually initiating a backfill job for a specific stream object.
  &quot;object&quot;: { # A specific stream object (e.g a specific DB table). # The stream object resource a backfill job was started for.
    &quot;backfillJob&quot;: { # Represents a backfill job on a specific stream object. # The latest backfill job that was initiated for the stream object.
      &quot;errors&quot;: [ # Output only. Errors which caused the backfill job to fail.
        { # Represent a user-facing Error.
          &quot;details&quot;: { # Additional information about the error.
            &quot;a_key&quot;: &quot;A String&quot;,
          },
          &quot;errorTime&quot;: &quot;A String&quot;, # The time when the error occurred.
          &quot;errorUuid&quot;: &quot;A String&quot;, # A unique identifier for this specific error, allowing it to be traced throughout the system in logs and API responses.
          &quot;message&quot;: &quot;A String&quot;, # A message containing more information about the error that occurred.
          &quot;reason&quot;: &quot;A String&quot;, # A title that explains the reason for the error.
        },
      ],
      &quot;lastEndTime&quot;: &quot;A String&quot;, # Output only. Backfill job&#x27;s end time.
      &quot;lastStartTime&quot;: &quot;A String&quot;, # Output only. Backfill job&#x27;s start time.
      &quot;state&quot;: &quot;A String&quot;, # Output only. Backfill job state.
      &quot;trigger&quot;: &quot;A String&quot;, # Backfill job&#x27;s triggering reason.
    },
    &quot;createTime&quot;: &quot;A String&quot;, # Output only. The creation time of the object.
    &quot;displayName&quot;: &quot;A String&quot;, # Required. Display name.
    &quot;errors&quot;: [ # Output only. Active errors on the object.
      { # Represent a user-facing Error.
        &quot;details&quot;: { # Additional information about the error.
          &quot;a_key&quot;: &quot;A String&quot;,
        },
        &quot;errorTime&quot;: &quot;A String&quot;, # The time when the error occurred.
        &quot;errorUuid&quot;: &quot;A String&quot;, # A unique identifier for this specific error, allowing it to be traced throughout the system in logs and API responses.
        &quot;message&quot;: &quot;A String&quot;, # A message containing more information about the error that occurred.
        &quot;reason&quot;: &quot;A String&quot;, # A title that explains the reason for the error.
      },
    ],
    &quot;name&quot;: &quot;A String&quot;, # Output only. Identifier. The object resource&#x27;s name.
    &quot;sourceObject&quot;: { # Represents an identifier of an object in the data source. # The object identifier in the data source.
      &quot;mongodbIdentifier&quot;: { # MongoDB data source object identifier. # MongoDB data source object identifier.
        &quot;collection&quot;: &quot;A String&quot;, # Required. The collection name.
        &quot;database&quot;: &quot;A String&quot;, # Required. The database name.
      },
      &quot;mysqlIdentifier&quot;: { # Mysql data source object identifier. # Mysql data source object identifier.
        &quot;database&quot;: &quot;A String&quot;, # Required. The database name.
        &quot;table&quot;: &quot;A String&quot;, # Required. The table name.
      },
      &quot;oracleIdentifier&quot;: { # Oracle data source object identifier. # Oracle data source object identifier.
        &quot;schema&quot;: &quot;A String&quot;, # Required. The schema name.
        &quot;table&quot;: &quot;A String&quot;, # Required. The table name.
      },
      &quot;postgresqlIdentifier&quot;: { # PostgreSQL data source object identifier. # PostgreSQL data source object identifier.
        &quot;schema&quot;: &quot;A String&quot;, # Required. The schema name.
        &quot;table&quot;: &quot;A String&quot;, # Required. The table name.
      },
      &quot;salesforceIdentifier&quot;: { # Salesforce data source object identifier. # Salesforce data source object identifier.
        &quot;objectName&quot;: &quot;A String&quot;, # Required. The object name.
      },
      &quot;sqlServerIdentifier&quot;: { # SQLServer data source object identifier. # SQLServer data source object identifier.
        &quot;schema&quot;: &quot;A String&quot;, # Required. The schema name.
        &quot;table&quot;: &quot;A String&quot;, # Required. The table name.
      },
    },
    &quot;updateTime&quot;: &quot;A String&quot;, # Output only. The last update time of the object.
  },
}</pre>
</div>

<div class="method">
    <code class="details" id="stopBackfillJob">stopBackfillJob(object, body=None, x__xgafv=None)</code>
  <pre>Use this method to stop a backfill job for the specified stream object.

Args:
  object: string, Required. The name of the stream object resource to stop the backfill job for. (required)
  body: object, The request body.
    The object takes the form of:

{ # Request for manually stopping a running backfill job for a specific stream 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 manually stop a backfill job for a specific stream object.
  &quot;object&quot;: { # A specific stream object (e.g a specific DB table). # The stream object resource the backfill job was stopped for.
    &quot;backfillJob&quot;: { # Represents a backfill job on a specific stream object. # The latest backfill job that was initiated for the stream object.
      &quot;errors&quot;: [ # Output only. Errors which caused the backfill job to fail.
        { # Represent a user-facing Error.
          &quot;details&quot;: { # Additional information about the error.
            &quot;a_key&quot;: &quot;A String&quot;,
          },
          &quot;errorTime&quot;: &quot;A String&quot;, # The time when the error occurred.
          &quot;errorUuid&quot;: &quot;A String&quot;, # A unique identifier for this specific error, allowing it to be traced throughout the system in logs and API responses.
          &quot;message&quot;: &quot;A String&quot;, # A message containing more information about the error that occurred.
          &quot;reason&quot;: &quot;A String&quot;, # A title that explains the reason for the error.
        },
      ],
      &quot;lastEndTime&quot;: &quot;A String&quot;, # Output only. Backfill job&#x27;s end time.
      &quot;lastStartTime&quot;: &quot;A String&quot;, # Output only. Backfill job&#x27;s start time.
      &quot;state&quot;: &quot;A String&quot;, # Output only. Backfill job state.
      &quot;trigger&quot;: &quot;A String&quot;, # Backfill job&#x27;s triggering reason.
    },
    &quot;createTime&quot;: &quot;A String&quot;, # Output only. The creation time of the object.
    &quot;displayName&quot;: &quot;A String&quot;, # Required. Display name.
    &quot;errors&quot;: [ # Output only. Active errors on the object.
      { # Represent a user-facing Error.
        &quot;details&quot;: { # Additional information about the error.
          &quot;a_key&quot;: &quot;A String&quot;,
        },
        &quot;errorTime&quot;: &quot;A String&quot;, # The time when the error occurred.
        &quot;errorUuid&quot;: &quot;A String&quot;, # A unique identifier for this specific error, allowing it to be traced throughout the system in logs and API responses.
        &quot;message&quot;: &quot;A String&quot;, # A message containing more information about the error that occurred.
        &quot;reason&quot;: &quot;A String&quot;, # A title that explains the reason for the error.
      },
    ],
    &quot;name&quot;: &quot;A String&quot;, # Output only. Identifier. The object resource&#x27;s name.
    &quot;sourceObject&quot;: { # Represents an identifier of an object in the data source. # The object identifier in the data source.
      &quot;mongodbIdentifier&quot;: { # MongoDB data source object identifier. # MongoDB data source object identifier.
        &quot;collection&quot;: &quot;A String&quot;, # Required. The collection name.
        &quot;database&quot;: &quot;A String&quot;, # Required. The database name.
      },
      &quot;mysqlIdentifier&quot;: { # Mysql data source object identifier. # Mysql data source object identifier.
        &quot;database&quot;: &quot;A String&quot;, # Required. The database name.
        &quot;table&quot;: &quot;A String&quot;, # Required. The table name.
      },
      &quot;oracleIdentifier&quot;: { # Oracle data source object identifier. # Oracle data source object identifier.
        &quot;schema&quot;: &quot;A String&quot;, # Required. The schema name.
        &quot;table&quot;: &quot;A String&quot;, # Required. The table name.
      },
      &quot;postgresqlIdentifier&quot;: { # PostgreSQL data source object identifier. # PostgreSQL data source object identifier.
        &quot;schema&quot;: &quot;A String&quot;, # Required. The schema name.
        &quot;table&quot;: &quot;A String&quot;, # Required. The table name.
      },
      &quot;salesforceIdentifier&quot;: { # Salesforce data source object identifier. # Salesforce data source object identifier.
        &quot;objectName&quot;: &quot;A String&quot;, # Required. The object name.
      },
      &quot;sqlServerIdentifier&quot;: { # SQLServer data source object identifier. # SQLServer data source object identifier.
        &quot;schema&quot;: &quot;A String&quot;, # Required. The schema name.
        &quot;table&quot;: &quot;A String&quot;, # Required. The table name.
      },
    },
    &quot;updateTime&quot;: &quot;A String&quot;, # Output only. The last update time of the object.
  },
}</pre>
</div>

</body></html>