<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(previous_request, previous_response)</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">Starts 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">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 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;mysqlIdentifier&quot;: { # Mysql data source object identifier. # Mysql data source object identifier.
      &quot;database&quot;: &quot;A String&quot;, # The database name.
      &quot;table&quot;: &quot;A String&quot;, # The table name.
    },
    &quot;oracleIdentifier&quot;: { # Oracle data source object identifier. # Oracle data source object identifier.
      &quot;schema&quot;: &quot;A String&quot;, # The schema name.
      &quot;table&quot;: &quot;A String&quot;, # 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 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;mysqlIdentifier&quot;: { # Mysql data source object identifier. # Mysql data source object identifier.
          &quot;database&quot;: &quot;A String&quot;, # The database name.
          &quot;table&quot;: &quot;A String&quot;, # The table name.
        },
        &quot;oracleIdentifier&quot;: { # Oracle data source object identifier. # Oracle data source object identifier.
          &quot;schema&quot;: &quot;A String&quot;, # The schema name.
          &quot;table&quot;: &quot;A String&quot;, # 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="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;mysqlIdentifier&quot;: { # Mysql data source object identifier. # Mysql data source object identifier.
      &quot;database&quot;: &quot;A String&quot;, # The database name.
      &quot;table&quot;: &quot;A String&quot;, # The table name.
    },
    &quot;oracleIdentifier&quot;: { # Oracle data source object identifier. # Oracle data source object identifier.
      &quot;schema&quot;: &quot;A String&quot;, # The schema name.
      &quot;table&quot;: &quot;A String&quot;, # 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;, # 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 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;mysqlIdentifier&quot;: { # Mysql data source object identifier. # Mysql data source object identifier.
      &quot;database&quot;: &quot;A String&quot;, # The database name.
      &quot;table&quot;: &quot;A String&quot;, # The table name.
    },
    &quot;oracleIdentifier&quot;: { # Oracle data source object identifier. # Oracle data source object identifier.
      &quot;schema&quot;: &quot;A String&quot;, # The schema name.
      &quot;table&quot;: &quot;A String&quot;, # 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>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)
  body: object, The request body.
    The object takes the form of:

{ # Request for manually initiating a 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 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 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;mysqlIdentifier&quot;: { # Mysql data source object identifier. # Mysql data source object identifier.
        &quot;database&quot;: &quot;A String&quot;, # The database name.
        &quot;table&quot;: &quot;A String&quot;, # The table name.
      },
      &quot;oracleIdentifier&quot;: { # Oracle data source object identifier. # Oracle data source object identifier.
        &quot;schema&quot;: &quot;A String&quot;, # The schema name.
        &quot;table&quot;: &quot;A String&quot;, # 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>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)
  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;, # 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 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;mysqlIdentifier&quot;: { # Mysql data source object identifier. # Mysql data source object identifier.
        &quot;database&quot;: &quot;A String&quot;, # The database name.
        &quot;table&quot;: &quot;A String&quot;, # The table name.
      },
      &quot;oracleIdentifier&quot;: { # Oracle data source object identifier. # Oracle data source object identifier.
        &quot;schema&quot;: &quot;A String&quot;, # The schema name.
        &quot;table&quot;: &quot;A String&quot;, # The table name.
      },
    },
    &quot;updateTime&quot;: &quot;A String&quot;, # Output only. The last update time of the object.
  },
}</pre>
</div>

</body></html>