<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_v1alpha1.html">Datastream API</a> . <a href="datastream_v1alpha1.projects.html">projects</a> . <a href="datastream_v1alpha1.projects.locations.html">locations</a> . <a href="datastream_v1alpha1.projects.locations.streams.html">streams</a> . <a href="datastream_v1alpha1.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(previous_request, previous_response)</a></code></p>
<p class="firstline">Retrieves the next page of results.</p>
<p class="toc_element">
  <code><a href="#startBackfillJob">startBackfillJob(object, x__xgafv=None)</a></code></p>
<p class="firstline">Starts backfill job for the specified stream object.</p>
<p class="toc_element">
  <code><a href="#stopBackfillJob">stopBackfillJob(object, x__xgafv=None)</a></code></p>
<p class="firstline">Stops the 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;, # 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. The object&#x27;s name.
  &quot;sourceObject&quot;: { # Represents an identifier of an object in the data source. # The object identifier in the data source.
    &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;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;, # 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. The object&#x27;s name.
      &quot;sourceObject&quot;: { # Represents an identifier of an object in the data source. # The object identifier in the data source.
        &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;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(previous_request, previous_response)</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="startBackfillJob">startBackfillJob(object, x__xgafv=None)</code>
  <pre>Starts 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)
  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;, # 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. The object&#x27;s name.
    &quot;sourceObject&quot;: { # Represents an identifier of an object in the data source. # The object identifier in the data source.
      &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;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, x__xgafv=None)</code>
  <pre>Stops the 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)
  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;, # 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. The object&#x27;s name.
    &quot;sourceObject&quot;: { # Represents an identifier of an object in the data source. # The object identifier in the data source.
      &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;updateTime&quot;: &quot;A String&quot;, # Output only. The last update time of the object.
  },
}</pre>
</div>

</body></html>