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

<p class="toc_element">
  <code><a href="#close">close()</a></code></p>
<p class="firstline">Close httplib2 connections.</p>
<p class="toc_element">
  <code><a href="#create">create(parent, body=None, force=None, requestId=None, streamId=None, validateOnly=None, x__xgafv=None)</a></code></p>
<p class="firstline">Use this method to create a stream.</p>
<p class="toc_element">
  <code><a href="#delete">delete(name, requestId=None, x__xgafv=None)</a></code></p>
<p class="firstline">Use this method to delete a stream.</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.</p>
<p class="toc_element">
  <code><a href="#list">list(parent, filter=None, orderBy=None, pageSize=None, pageToken=None, x__xgafv=None)</a></code></p>
<p class="firstline">Use this method to list streams in a project and location.</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="#patch">patch(name, body=None, force=None, requestId=None, updateMask=None, validateOnly=None, x__xgafv=None)</a></code></p>
<p class="firstline">Use this method to update the configuration of a stream.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="close">close()</code>
  <pre>Close httplib2 connections.</pre>
</div>

<div class="method">
    <code class="details" id="create">create(parent, body=None, force=None, requestId=None, streamId=None, validateOnly=None, x__xgafv=None)</code>
  <pre>Use this method to create a stream.

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

{ # A resource representing streaming data from a source to a destination.
  &quot;backfillAll&quot;: { # Backfill strategy to automatically backfill the Stream&#x27;s objects. Specific objects can be excluded. # Automatically backfill objects included in the stream source configuration. Specific objects can be excluded.
    &quot;mysqlExcludedObjects&quot;: { # MySQL database structure # MySQL data source objects to avoid backfilling.
      &quot;mysqlDatabases&quot;: [ # Mysql databases on the server
        { # MySQL database.
          &quot;database&quot;: &quot;A String&quot;, # Database name.
          &quot;mysqlTables&quot;: [ # Tables in the database.
            { # MySQL table.
              &quot;mysqlColumns&quot;: [ # MySQL columns in the database. When unspecified as part of include/exclude lists, includes/excludes everything.
                { # MySQL Column.
                  &quot;collation&quot;: &quot;A String&quot;, # Column collation.
                  &quot;column&quot;: &quot;A String&quot;, # Column name.
                  &quot;dataType&quot;: &quot;A String&quot;, # The MySQL data type. Full data types list can be found here: https://dev.mysql.com/doc/refman/8.0/en/data-types.html
                  &quot;length&quot;: 42, # Column length.
                  &quot;nullable&quot;: True or False, # Whether or not the column can accept a null value.
                  &quot;ordinalPosition&quot;: 42, # The ordinal position of the column in the table.
                  &quot;primaryKey&quot;: True or False, # Whether or not the column represents a primary key.
                },
              ],
              &quot;table&quot;: &quot;A String&quot;, # Table name.
            },
          ],
        },
      ],
    },
    &quot;oracleExcludedObjects&quot;: { # Oracle database structure. # Oracle data source objects to avoid backfilling.
      &quot;oracleSchemas&quot;: [ # Oracle schemas/databases in the database server.
        { # Oracle schema.
          &quot;oracleTables&quot;: [ # Tables in the schema.
            { # Oracle table.
              &quot;oracleColumns&quot;: [ # Oracle columns in the schema. When unspecified as part of inclue/exclude lists, includes/excludes everything.
                { # Oracle Column.
                  &quot;column&quot;: &quot;A String&quot;, # Column name.
                  &quot;dataType&quot;: &quot;A String&quot;, # The Oracle data type.
                  &quot;encoding&quot;: &quot;A String&quot;, # Column encoding.
                  &quot;length&quot;: 42, # Column length.
                  &quot;nullable&quot;: True or False, # Whether or not the column can accept a null value.
                  &quot;ordinalPosition&quot;: 42, # The ordinal position of the column in the table.
                  &quot;precision&quot;: 42, # Column precision.
                  &quot;primaryKey&quot;: True or False, # Whether or not the column represents a primary key.
                  &quot;scale&quot;: 42, # Column scale.
                },
              ],
              &quot;table&quot;: &quot;A String&quot;, # Table name.
            },
          ],
          &quot;schema&quot;: &quot;A String&quot;, # Schema name.
        },
      ],
    },
  },
  &quot;backfillNone&quot;: { # Backfill strategy to disable automatic backfill for the Stream&#x27;s objects. # Do not automatically backfill any objects.
  },
  &quot;createTime&quot;: &quot;A String&quot;, # Output only. The creation time of the stream.
  &quot;customerManagedEncryptionKey&quot;: &quot;A String&quot;, # Immutable. A reference to a KMS encryption key. If provided, it will be used to encrypt the data. If left blank, data will be encrypted using an internal Stream-specific encryption key provisioned through KMS.
  &quot;destinationConfig&quot;: { # The configuration of the stream destination. # Required. Destination connection profile configuration.
    &quot;destinationConnectionProfile&quot;: &quot;A String&quot;, # Required. Destination connection profile resource. Format: `projects/{project}/locations/{location}/connectionProfiles/{name}`
    &quot;gcsDestinationConfig&quot;: { # Google Cloud Storage destination configuration # A configuration for how data should be loaded to Cloud Storage.
      &quot;avroFileFormat&quot;: { # AVRO file format configuration. # AVRO file format configuration.
      },
      &quot;fileRotationInterval&quot;: &quot;A String&quot;, # The maximum duration for which new events are added before a file is closed and a new file is created.
      &quot;fileRotationMb&quot;: 42, # The maximum file size to be saved in the bucket.
      &quot;jsonFileFormat&quot;: { # JSON file format configuration. # JSON file format configuration.
        &quot;compression&quot;: &quot;A String&quot;, # Compression of the loaded JSON file.
        &quot;schemaFileFormat&quot;: &quot;A String&quot;, # The schema file format along JSON data files.
      },
      &quot;path&quot;: &quot;A String&quot;, # Path inside the Cloud Storage bucket to write data to.
    },
  },
  &quot;displayName&quot;: &quot;A String&quot;, # Required. Display name.
  &quot;errors&quot;: [ # Output only. Errors on the Stream.
    { # 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;labels&quot;: { # Labels.
    &quot;a_key&quot;: &quot;A String&quot;,
  },
  &quot;name&quot;: &quot;A String&quot;, # Output only. The stream&#x27;s name.
  &quot;sourceConfig&quot;: { # The configuration of the stream source. # Required. Source connection profile configuration.
    &quot;mysqlSourceConfig&quot;: { # MySQL source configuration # MySQL data source configuration
      &quot;excludeObjects&quot;: { # MySQL database structure # MySQL objects to exclude from the stream.
        &quot;mysqlDatabases&quot;: [ # Mysql databases on the server
          { # MySQL database.
            &quot;database&quot;: &quot;A String&quot;, # Database name.
            &quot;mysqlTables&quot;: [ # Tables in the database.
              { # MySQL table.
                &quot;mysqlColumns&quot;: [ # MySQL columns in the database. When unspecified as part of include/exclude lists, includes/excludes everything.
                  { # MySQL Column.
                    &quot;collation&quot;: &quot;A String&quot;, # Column collation.
                    &quot;column&quot;: &quot;A String&quot;, # Column name.
                    &quot;dataType&quot;: &quot;A String&quot;, # The MySQL data type. Full data types list can be found here: https://dev.mysql.com/doc/refman/8.0/en/data-types.html
                    &quot;length&quot;: 42, # Column length.
                    &quot;nullable&quot;: True or False, # Whether or not the column can accept a null value.
                    &quot;ordinalPosition&quot;: 42, # The ordinal position of the column in the table.
                    &quot;primaryKey&quot;: True or False, # Whether or not the column represents a primary key.
                  },
                ],
                &quot;table&quot;: &quot;A String&quot;, # Table name.
              },
            ],
          },
        ],
      },
      &quot;includeObjects&quot;: { # MySQL database structure # MySQL objects to retrieve from the source.
        &quot;mysqlDatabases&quot;: [ # Mysql databases on the server
          { # MySQL database.
            &quot;database&quot;: &quot;A String&quot;, # Database name.
            &quot;mysqlTables&quot;: [ # Tables in the database.
              { # MySQL table.
                &quot;mysqlColumns&quot;: [ # MySQL columns in the database. When unspecified as part of include/exclude lists, includes/excludes everything.
                  { # MySQL Column.
                    &quot;collation&quot;: &quot;A String&quot;, # Column collation.
                    &quot;column&quot;: &quot;A String&quot;, # Column name.
                    &quot;dataType&quot;: &quot;A String&quot;, # The MySQL data type. Full data types list can be found here: https://dev.mysql.com/doc/refman/8.0/en/data-types.html
                    &quot;length&quot;: 42, # Column length.
                    &quot;nullable&quot;: True or False, # Whether or not the column can accept a null value.
                    &quot;ordinalPosition&quot;: 42, # The ordinal position of the column in the table.
                    &quot;primaryKey&quot;: True or False, # Whether or not the column represents a primary key.
                  },
                ],
                &quot;table&quot;: &quot;A String&quot;, # Table name.
              },
            ],
          },
        ],
      },
    },
    &quot;oracleSourceConfig&quot;: { # Oracle data source configuration # Oracle data source configuration
      &quot;excludeObjects&quot;: { # Oracle database structure. # Oracle objects to exclude from the stream.
        &quot;oracleSchemas&quot;: [ # Oracle schemas/databases in the database server.
          { # Oracle schema.
            &quot;oracleTables&quot;: [ # Tables in the schema.
              { # Oracle table.
                &quot;oracleColumns&quot;: [ # Oracle columns in the schema. When unspecified as part of inclue/exclude lists, includes/excludes everything.
                  { # Oracle Column.
                    &quot;column&quot;: &quot;A String&quot;, # Column name.
                    &quot;dataType&quot;: &quot;A String&quot;, # The Oracle data type.
                    &quot;encoding&quot;: &quot;A String&quot;, # Column encoding.
                    &quot;length&quot;: 42, # Column length.
                    &quot;nullable&quot;: True or False, # Whether or not the column can accept a null value.
                    &quot;ordinalPosition&quot;: 42, # The ordinal position of the column in the table.
                    &quot;precision&quot;: 42, # Column precision.
                    &quot;primaryKey&quot;: True or False, # Whether or not the column represents a primary key.
                    &quot;scale&quot;: 42, # Column scale.
                  },
                ],
                &quot;table&quot;: &quot;A String&quot;, # Table name.
              },
            ],
            &quot;schema&quot;: &quot;A String&quot;, # Schema name.
          },
        ],
      },
      &quot;includeObjects&quot;: { # Oracle database structure. # Oracle objects to include in the stream.
        &quot;oracleSchemas&quot;: [ # Oracle schemas/databases in the database server.
          { # Oracle schema.
            &quot;oracleTables&quot;: [ # Tables in the schema.
              { # Oracle table.
                &quot;oracleColumns&quot;: [ # Oracle columns in the schema. When unspecified as part of inclue/exclude lists, includes/excludes everything.
                  { # Oracle Column.
                    &quot;column&quot;: &quot;A String&quot;, # Column name.
                    &quot;dataType&quot;: &quot;A String&quot;, # The Oracle data type.
                    &quot;encoding&quot;: &quot;A String&quot;, # Column encoding.
                    &quot;length&quot;: 42, # Column length.
                    &quot;nullable&quot;: True or False, # Whether or not the column can accept a null value.
                    &quot;ordinalPosition&quot;: 42, # The ordinal position of the column in the table.
                    &quot;precision&quot;: 42, # Column precision.
                    &quot;primaryKey&quot;: True or False, # Whether or not the column represents a primary key.
                    &quot;scale&quot;: 42, # Column scale.
                  },
                ],
                &quot;table&quot;: &quot;A String&quot;, # Table name.
              },
            ],
            &quot;schema&quot;: &quot;A String&quot;, # Schema name.
          },
        ],
      },
    },
    &quot;sourceConnectionProfile&quot;: &quot;A String&quot;, # Required. Source connection profile resoource. Format: `projects/{project}/locations/{location}/connectionProfiles/{name}`
  },
  &quot;state&quot;: &quot;A String&quot;, # The state of the stream.
  &quot;updateTime&quot;: &quot;A String&quot;, # Output only. The last update time of the stream.
}

  force: boolean, Optional. Create the stream without validating it.
  requestId: string, Optional. A request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).
  streamId: string, Required. The stream identifier.
  validateOnly: boolean, Optional. Only validate the stream, but don&#x27;t create any resources. The default is false.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # This resource represents a long-running operation that is the result of a network API call.
  &quot;done&quot;: True or False, # If the value is `false`, it means the operation is still in progress. If `true`, the operation is completed, and either `error` or `response` is available.
  &quot;error&quot;: { # The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors). # The error result of the operation in case of failure or cancellation.
    &quot;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
    &quot;details&quot;: [ # A list of messages that carry the error details. There is a common set of message types for APIs to use.
      {
        &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
      },
    ],
    &quot;message&quot;: &quot;A String&quot;, # A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.
  },
  &quot;metadata&quot;: { # Service-specific metadata associated with the operation. It typically contains progress information and common metadata such as create time. Some services might not provide such metadata. Any method that returns a long-running operation should document the metadata type, if any.
    &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
  },
  &quot;name&quot;: &quot;A String&quot;, # The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the `name` should be a resource name ending with `operations/{unique_id}`.
  &quot;response&quot;: { # The normal response of the operation in case of success. If the original method returns no data on success, such as `Delete`, the response is `google.protobuf.Empty`. If the original method is standard `Get`/`Create`/`Update`, the response should be the resource. For other methods, the response should have the type `XxxResponse`, where `Xxx` is the original method name. For example, if the original method name is `TakeSnapshot()`, the inferred response type is `TakeSnapshotResponse`.
    &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
  },
}</pre>
</div>

<div class="method">
    <code class="details" id="delete">delete(name, requestId=None, x__xgafv=None)</code>
  <pre>Use this method to delete a stream.

Args:
  name: string, Required. The name of the stream resource to delete. (required)
  requestId: string, Optional. A request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes after the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # This resource represents a long-running operation that is the result of a network API call.
  &quot;done&quot;: True or False, # If the value is `false`, it means the operation is still in progress. If `true`, the operation is completed, and either `error` or `response` is available.
  &quot;error&quot;: { # The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors). # The error result of the operation in case of failure or cancellation.
    &quot;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
    &quot;details&quot;: [ # A list of messages that carry the error details. There is a common set of message types for APIs to use.
      {
        &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
      },
    ],
    &quot;message&quot;: &quot;A String&quot;, # A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.
  },
  &quot;metadata&quot;: { # Service-specific metadata associated with the operation. It typically contains progress information and common metadata such as create time. Some services might not provide such metadata. Any method that returns a long-running operation should document the metadata type, if any.
    &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
  },
  &quot;name&quot;: &quot;A String&quot;, # The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the `name` should be a resource name ending with `operations/{unique_id}`.
  &quot;response&quot;: { # The normal response of the operation in case of success. If the original method returns no data on success, such as `Delete`, the response is `google.protobuf.Empty`. If the original method is standard `Get`/`Create`/`Update`, the response should be the resource. For other methods, the response should have the type `XxxResponse`, where `Xxx` is the original method name. For example, if the original method name is `TakeSnapshot()`, the inferred response type is `TakeSnapshotResponse`.
    &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
  },
}</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.

Args:
  name: string, Required. The name of the stream 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 resource representing streaming data from a source to a destination.
  &quot;backfillAll&quot;: { # Backfill strategy to automatically backfill the Stream&#x27;s objects. Specific objects can be excluded. # Automatically backfill objects included in the stream source configuration. Specific objects can be excluded.
    &quot;mysqlExcludedObjects&quot;: { # MySQL database structure # MySQL data source objects to avoid backfilling.
      &quot;mysqlDatabases&quot;: [ # Mysql databases on the server
        { # MySQL database.
          &quot;database&quot;: &quot;A String&quot;, # Database name.
          &quot;mysqlTables&quot;: [ # Tables in the database.
            { # MySQL table.
              &quot;mysqlColumns&quot;: [ # MySQL columns in the database. When unspecified as part of include/exclude lists, includes/excludes everything.
                { # MySQL Column.
                  &quot;collation&quot;: &quot;A String&quot;, # Column collation.
                  &quot;column&quot;: &quot;A String&quot;, # Column name.
                  &quot;dataType&quot;: &quot;A String&quot;, # The MySQL data type. Full data types list can be found here: https://dev.mysql.com/doc/refman/8.0/en/data-types.html
                  &quot;length&quot;: 42, # Column length.
                  &quot;nullable&quot;: True or False, # Whether or not the column can accept a null value.
                  &quot;ordinalPosition&quot;: 42, # The ordinal position of the column in the table.
                  &quot;primaryKey&quot;: True or False, # Whether or not the column represents a primary key.
                },
              ],
              &quot;table&quot;: &quot;A String&quot;, # Table name.
            },
          ],
        },
      ],
    },
    &quot;oracleExcludedObjects&quot;: { # Oracle database structure. # Oracle data source objects to avoid backfilling.
      &quot;oracleSchemas&quot;: [ # Oracle schemas/databases in the database server.
        { # Oracle schema.
          &quot;oracleTables&quot;: [ # Tables in the schema.
            { # Oracle table.
              &quot;oracleColumns&quot;: [ # Oracle columns in the schema. When unspecified as part of inclue/exclude lists, includes/excludes everything.
                { # Oracle Column.
                  &quot;column&quot;: &quot;A String&quot;, # Column name.
                  &quot;dataType&quot;: &quot;A String&quot;, # The Oracle data type.
                  &quot;encoding&quot;: &quot;A String&quot;, # Column encoding.
                  &quot;length&quot;: 42, # Column length.
                  &quot;nullable&quot;: True or False, # Whether or not the column can accept a null value.
                  &quot;ordinalPosition&quot;: 42, # The ordinal position of the column in the table.
                  &quot;precision&quot;: 42, # Column precision.
                  &quot;primaryKey&quot;: True or False, # Whether or not the column represents a primary key.
                  &quot;scale&quot;: 42, # Column scale.
                },
              ],
              &quot;table&quot;: &quot;A String&quot;, # Table name.
            },
          ],
          &quot;schema&quot;: &quot;A String&quot;, # Schema name.
        },
      ],
    },
  },
  &quot;backfillNone&quot;: { # Backfill strategy to disable automatic backfill for the Stream&#x27;s objects. # Do not automatically backfill any objects.
  },
  &quot;createTime&quot;: &quot;A String&quot;, # Output only. The creation time of the stream.
  &quot;customerManagedEncryptionKey&quot;: &quot;A String&quot;, # Immutable. A reference to a KMS encryption key. If provided, it will be used to encrypt the data. If left blank, data will be encrypted using an internal Stream-specific encryption key provisioned through KMS.
  &quot;destinationConfig&quot;: { # The configuration of the stream destination. # Required. Destination connection profile configuration.
    &quot;destinationConnectionProfile&quot;: &quot;A String&quot;, # Required. Destination connection profile resource. Format: `projects/{project}/locations/{location}/connectionProfiles/{name}`
    &quot;gcsDestinationConfig&quot;: { # Google Cloud Storage destination configuration # A configuration for how data should be loaded to Cloud Storage.
      &quot;avroFileFormat&quot;: { # AVRO file format configuration. # AVRO file format configuration.
      },
      &quot;fileRotationInterval&quot;: &quot;A String&quot;, # The maximum duration for which new events are added before a file is closed and a new file is created.
      &quot;fileRotationMb&quot;: 42, # The maximum file size to be saved in the bucket.
      &quot;jsonFileFormat&quot;: { # JSON file format configuration. # JSON file format configuration.
        &quot;compression&quot;: &quot;A String&quot;, # Compression of the loaded JSON file.
        &quot;schemaFileFormat&quot;: &quot;A String&quot;, # The schema file format along JSON data files.
      },
      &quot;path&quot;: &quot;A String&quot;, # Path inside the Cloud Storage bucket to write data to.
    },
  },
  &quot;displayName&quot;: &quot;A String&quot;, # Required. Display name.
  &quot;errors&quot;: [ # Output only. Errors on the Stream.
    { # 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;labels&quot;: { # Labels.
    &quot;a_key&quot;: &quot;A String&quot;,
  },
  &quot;name&quot;: &quot;A String&quot;, # Output only. The stream&#x27;s name.
  &quot;sourceConfig&quot;: { # The configuration of the stream source. # Required. Source connection profile configuration.
    &quot;mysqlSourceConfig&quot;: { # MySQL source configuration # MySQL data source configuration
      &quot;excludeObjects&quot;: { # MySQL database structure # MySQL objects to exclude from the stream.
        &quot;mysqlDatabases&quot;: [ # Mysql databases on the server
          { # MySQL database.
            &quot;database&quot;: &quot;A String&quot;, # Database name.
            &quot;mysqlTables&quot;: [ # Tables in the database.
              { # MySQL table.
                &quot;mysqlColumns&quot;: [ # MySQL columns in the database. When unspecified as part of include/exclude lists, includes/excludes everything.
                  { # MySQL Column.
                    &quot;collation&quot;: &quot;A String&quot;, # Column collation.
                    &quot;column&quot;: &quot;A String&quot;, # Column name.
                    &quot;dataType&quot;: &quot;A String&quot;, # The MySQL data type. Full data types list can be found here: https://dev.mysql.com/doc/refman/8.0/en/data-types.html
                    &quot;length&quot;: 42, # Column length.
                    &quot;nullable&quot;: True or False, # Whether or not the column can accept a null value.
                    &quot;ordinalPosition&quot;: 42, # The ordinal position of the column in the table.
                    &quot;primaryKey&quot;: True or False, # Whether or not the column represents a primary key.
                  },
                ],
                &quot;table&quot;: &quot;A String&quot;, # Table name.
              },
            ],
          },
        ],
      },
      &quot;includeObjects&quot;: { # MySQL database structure # MySQL objects to retrieve from the source.
        &quot;mysqlDatabases&quot;: [ # Mysql databases on the server
          { # MySQL database.
            &quot;database&quot;: &quot;A String&quot;, # Database name.
            &quot;mysqlTables&quot;: [ # Tables in the database.
              { # MySQL table.
                &quot;mysqlColumns&quot;: [ # MySQL columns in the database. When unspecified as part of include/exclude lists, includes/excludes everything.
                  { # MySQL Column.
                    &quot;collation&quot;: &quot;A String&quot;, # Column collation.
                    &quot;column&quot;: &quot;A String&quot;, # Column name.
                    &quot;dataType&quot;: &quot;A String&quot;, # The MySQL data type. Full data types list can be found here: https://dev.mysql.com/doc/refman/8.0/en/data-types.html
                    &quot;length&quot;: 42, # Column length.
                    &quot;nullable&quot;: True or False, # Whether or not the column can accept a null value.
                    &quot;ordinalPosition&quot;: 42, # The ordinal position of the column in the table.
                    &quot;primaryKey&quot;: True or False, # Whether or not the column represents a primary key.
                  },
                ],
                &quot;table&quot;: &quot;A String&quot;, # Table name.
              },
            ],
          },
        ],
      },
    },
    &quot;oracleSourceConfig&quot;: { # Oracle data source configuration # Oracle data source configuration
      &quot;excludeObjects&quot;: { # Oracle database structure. # Oracle objects to exclude from the stream.
        &quot;oracleSchemas&quot;: [ # Oracle schemas/databases in the database server.
          { # Oracle schema.
            &quot;oracleTables&quot;: [ # Tables in the schema.
              { # Oracle table.
                &quot;oracleColumns&quot;: [ # Oracle columns in the schema. When unspecified as part of inclue/exclude lists, includes/excludes everything.
                  { # Oracle Column.
                    &quot;column&quot;: &quot;A String&quot;, # Column name.
                    &quot;dataType&quot;: &quot;A String&quot;, # The Oracle data type.
                    &quot;encoding&quot;: &quot;A String&quot;, # Column encoding.
                    &quot;length&quot;: 42, # Column length.
                    &quot;nullable&quot;: True or False, # Whether or not the column can accept a null value.
                    &quot;ordinalPosition&quot;: 42, # The ordinal position of the column in the table.
                    &quot;precision&quot;: 42, # Column precision.
                    &quot;primaryKey&quot;: True or False, # Whether or not the column represents a primary key.
                    &quot;scale&quot;: 42, # Column scale.
                  },
                ],
                &quot;table&quot;: &quot;A String&quot;, # Table name.
              },
            ],
            &quot;schema&quot;: &quot;A String&quot;, # Schema name.
          },
        ],
      },
      &quot;includeObjects&quot;: { # Oracle database structure. # Oracle objects to include in the stream.
        &quot;oracleSchemas&quot;: [ # Oracle schemas/databases in the database server.
          { # Oracle schema.
            &quot;oracleTables&quot;: [ # Tables in the schema.
              { # Oracle table.
                &quot;oracleColumns&quot;: [ # Oracle columns in the schema. When unspecified as part of inclue/exclude lists, includes/excludes everything.
                  { # Oracle Column.
                    &quot;column&quot;: &quot;A String&quot;, # Column name.
                    &quot;dataType&quot;: &quot;A String&quot;, # The Oracle data type.
                    &quot;encoding&quot;: &quot;A String&quot;, # Column encoding.
                    &quot;length&quot;: 42, # Column length.
                    &quot;nullable&quot;: True or False, # Whether or not the column can accept a null value.
                    &quot;ordinalPosition&quot;: 42, # The ordinal position of the column in the table.
                    &quot;precision&quot;: 42, # Column precision.
                    &quot;primaryKey&quot;: True or False, # Whether or not the column represents a primary key.
                    &quot;scale&quot;: 42, # Column scale.
                  },
                ],
                &quot;table&quot;: &quot;A String&quot;, # Table name.
              },
            ],
            &quot;schema&quot;: &quot;A String&quot;, # Schema name.
          },
        ],
      },
    },
    &quot;sourceConnectionProfile&quot;: &quot;A String&quot;, # Required. Source connection profile resoource. Format: `projects/{project}/locations/{location}/connectionProfiles/{name}`
  },
  &quot;state&quot;: &quot;A String&quot;, # The state of the stream.
  &quot;updateTime&quot;: &quot;A String&quot;, # Output only. The last update time of the stream.
}</pre>
</div>

<div class="method">
    <code class="details" id="list">list(parent, filter=None, orderBy=None, pageSize=None, pageToken=None, x__xgafv=None)</code>
  <pre>Use this method to list streams in a project and location.

Args:
  parent: string, Required. The parent that owns the collection of streams. (required)
  filter: string, Filter request.
  orderBy: string, Order by fields for the result.
  pageSize: integer, Maximum number of streams to return. If unspecified, at most 50 streams will be returned. The maximum value is 1000; values above 1000 will be coerced to 1000.
  pageToken: string, Page token received from a previous `ListStreams` call. Provide this to retrieve the subsequent page. When paginating, all other parameters provided to `ListStreams` 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 message for listing streams.
  &quot;nextPageToken&quot;: &quot;A String&quot;, # A token, which can be sent as `page_token` to retrieve the next page. If this field is omitted, there are no subsequent pages.
  &quot;streams&quot;: [ # List of streams
    { # A resource representing streaming data from a source to a destination.
      &quot;backfillAll&quot;: { # Backfill strategy to automatically backfill the Stream&#x27;s objects. Specific objects can be excluded. # Automatically backfill objects included in the stream source configuration. Specific objects can be excluded.
        &quot;mysqlExcludedObjects&quot;: { # MySQL database structure # MySQL data source objects to avoid backfilling.
          &quot;mysqlDatabases&quot;: [ # Mysql databases on the server
            { # MySQL database.
              &quot;database&quot;: &quot;A String&quot;, # Database name.
              &quot;mysqlTables&quot;: [ # Tables in the database.
                { # MySQL table.
                  &quot;mysqlColumns&quot;: [ # MySQL columns in the database. When unspecified as part of include/exclude lists, includes/excludes everything.
                    { # MySQL Column.
                      &quot;collation&quot;: &quot;A String&quot;, # Column collation.
                      &quot;column&quot;: &quot;A String&quot;, # Column name.
                      &quot;dataType&quot;: &quot;A String&quot;, # The MySQL data type. Full data types list can be found here: https://dev.mysql.com/doc/refman/8.0/en/data-types.html
                      &quot;length&quot;: 42, # Column length.
                      &quot;nullable&quot;: True or False, # Whether or not the column can accept a null value.
                      &quot;ordinalPosition&quot;: 42, # The ordinal position of the column in the table.
                      &quot;primaryKey&quot;: True or False, # Whether or not the column represents a primary key.
                    },
                  ],
                  &quot;table&quot;: &quot;A String&quot;, # Table name.
                },
              ],
            },
          ],
        },
        &quot;oracleExcludedObjects&quot;: { # Oracle database structure. # Oracle data source objects to avoid backfilling.
          &quot;oracleSchemas&quot;: [ # Oracle schemas/databases in the database server.
            { # Oracle schema.
              &quot;oracleTables&quot;: [ # Tables in the schema.
                { # Oracle table.
                  &quot;oracleColumns&quot;: [ # Oracle columns in the schema. When unspecified as part of inclue/exclude lists, includes/excludes everything.
                    { # Oracle Column.
                      &quot;column&quot;: &quot;A String&quot;, # Column name.
                      &quot;dataType&quot;: &quot;A String&quot;, # The Oracle data type.
                      &quot;encoding&quot;: &quot;A String&quot;, # Column encoding.
                      &quot;length&quot;: 42, # Column length.
                      &quot;nullable&quot;: True or False, # Whether or not the column can accept a null value.
                      &quot;ordinalPosition&quot;: 42, # The ordinal position of the column in the table.
                      &quot;precision&quot;: 42, # Column precision.
                      &quot;primaryKey&quot;: True or False, # Whether or not the column represents a primary key.
                      &quot;scale&quot;: 42, # Column scale.
                    },
                  ],
                  &quot;table&quot;: &quot;A String&quot;, # Table name.
                },
              ],
              &quot;schema&quot;: &quot;A String&quot;, # Schema name.
            },
          ],
        },
      },
      &quot;backfillNone&quot;: { # Backfill strategy to disable automatic backfill for the Stream&#x27;s objects. # Do not automatically backfill any objects.
      },
      &quot;createTime&quot;: &quot;A String&quot;, # Output only. The creation time of the stream.
      &quot;customerManagedEncryptionKey&quot;: &quot;A String&quot;, # Immutable. A reference to a KMS encryption key. If provided, it will be used to encrypt the data. If left blank, data will be encrypted using an internal Stream-specific encryption key provisioned through KMS.
      &quot;destinationConfig&quot;: { # The configuration of the stream destination. # Required. Destination connection profile configuration.
        &quot;destinationConnectionProfile&quot;: &quot;A String&quot;, # Required. Destination connection profile resource. Format: `projects/{project}/locations/{location}/connectionProfiles/{name}`
        &quot;gcsDestinationConfig&quot;: { # Google Cloud Storage destination configuration # A configuration for how data should be loaded to Cloud Storage.
          &quot;avroFileFormat&quot;: { # AVRO file format configuration. # AVRO file format configuration.
          },
          &quot;fileRotationInterval&quot;: &quot;A String&quot;, # The maximum duration for which new events are added before a file is closed and a new file is created.
          &quot;fileRotationMb&quot;: 42, # The maximum file size to be saved in the bucket.
          &quot;jsonFileFormat&quot;: { # JSON file format configuration. # JSON file format configuration.
            &quot;compression&quot;: &quot;A String&quot;, # Compression of the loaded JSON file.
            &quot;schemaFileFormat&quot;: &quot;A String&quot;, # The schema file format along JSON data files.
          },
          &quot;path&quot;: &quot;A String&quot;, # Path inside the Cloud Storage bucket to write data to.
        },
      },
      &quot;displayName&quot;: &quot;A String&quot;, # Required. Display name.
      &quot;errors&quot;: [ # Output only. Errors on the Stream.
        { # 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;labels&quot;: { # Labels.
        &quot;a_key&quot;: &quot;A String&quot;,
      },
      &quot;name&quot;: &quot;A String&quot;, # Output only. The stream&#x27;s name.
      &quot;sourceConfig&quot;: { # The configuration of the stream source. # Required. Source connection profile configuration.
        &quot;mysqlSourceConfig&quot;: { # MySQL source configuration # MySQL data source configuration
          &quot;excludeObjects&quot;: { # MySQL database structure # MySQL objects to exclude from the stream.
            &quot;mysqlDatabases&quot;: [ # Mysql databases on the server
              { # MySQL database.
                &quot;database&quot;: &quot;A String&quot;, # Database name.
                &quot;mysqlTables&quot;: [ # Tables in the database.
                  { # MySQL table.
                    &quot;mysqlColumns&quot;: [ # MySQL columns in the database. When unspecified as part of include/exclude lists, includes/excludes everything.
                      { # MySQL Column.
                        &quot;collation&quot;: &quot;A String&quot;, # Column collation.
                        &quot;column&quot;: &quot;A String&quot;, # Column name.
                        &quot;dataType&quot;: &quot;A String&quot;, # The MySQL data type. Full data types list can be found here: https://dev.mysql.com/doc/refman/8.0/en/data-types.html
                        &quot;length&quot;: 42, # Column length.
                        &quot;nullable&quot;: True or False, # Whether or not the column can accept a null value.
                        &quot;ordinalPosition&quot;: 42, # The ordinal position of the column in the table.
                        &quot;primaryKey&quot;: True or False, # Whether or not the column represents a primary key.
                      },
                    ],
                    &quot;table&quot;: &quot;A String&quot;, # Table name.
                  },
                ],
              },
            ],
          },
          &quot;includeObjects&quot;: { # MySQL database structure # MySQL objects to retrieve from the source.
            &quot;mysqlDatabases&quot;: [ # Mysql databases on the server
              { # MySQL database.
                &quot;database&quot;: &quot;A String&quot;, # Database name.
                &quot;mysqlTables&quot;: [ # Tables in the database.
                  { # MySQL table.
                    &quot;mysqlColumns&quot;: [ # MySQL columns in the database. When unspecified as part of include/exclude lists, includes/excludes everything.
                      { # MySQL Column.
                        &quot;collation&quot;: &quot;A String&quot;, # Column collation.
                        &quot;column&quot;: &quot;A String&quot;, # Column name.
                        &quot;dataType&quot;: &quot;A String&quot;, # The MySQL data type. Full data types list can be found here: https://dev.mysql.com/doc/refman/8.0/en/data-types.html
                        &quot;length&quot;: 42, # Column length.
                        &quot;nullable&quot;: True or False, # Whether or not the column can accept a null value.
                        &quot;ordinalPosition&quot;: 42, # The ordinal position of the column in the table.
                        &quot;primaryKey&quot;: True or False, # Whether or not the column represents a primary key.
                      },
                    ],
                    &quot;table&quot;: &quot;A String&quot;, # Table name.
                  },
                ],
              },
            ],
          },
        },
        &quot;oracleSourceConfig&quot;: { # Oracle data source configuration # Oracle data source configuration
          &quot;excludeObjects&quot;: { # Oracle database structure. # Oracle objects to exclude from the stream.
            &quot;oracleSchemas&quot;: [ # Oracle schemas/databases in the database server.
              { # Oracle schema.
                &quot;oracleTables&quot;: [ # Tables in the schema.
                  { # Oracle table.
                    &quot;oracleColumns&quot;: [ # Oracle columns in the schema. When unspecified as part of inclue/exclude lists, includes/excludes everything.
                      { # Oracle Column.
                        &quot;column&quot;: &quot;A String&quot;, # Column name.
                        &quot;dataType&quot;: &quot;A String&quot;, # The Oracle data type.
                        &quot;encoding&quot;: &quot;A String&quot;, # Column encoding.
                        &quot;length&quot;: 42, # Column length.
                        &quot;nullable&quot;: True or False, # Whether or not the column can accept a null value.
                        &quot;ordinalPosition&quot;: 42, # The ordinal position of the column in the table.
                        &quot;precision&quot;: 42, # Column precision.
                        &quot;primaryKey&quot;: True or False, # Whether or not the column represents a primary key.
                        &quot;scale&quot;: 42, # Column scale.
                      },
                    ],
                    &quot;table&quot;: &quot;A String&quot;, # Table name.
                  },
                ],
                &quot;schema&quot;: &quot;A String&quot;, # Schema name.
              },
            ],
          },
          &quot;includeObjects&quot;: { # Oracle database structure. # Oracle objects to include in the stream.
            &quot;oracleSchemas&quot;: [ # Oracle schemas/databases in the database server.
              { # Oracle schema.
                &quot;oracleTables&quot;: [ # Tables in the schema.
                  { # Oracle table.
                    &quot;oracleColumns&quot;: [ # Oracle columns in the schema. When unspecified as part of inclue/exclude lists, includes/excludes everything.
                      { # Oracle Column.
                        &quot;column&quot;: &quot;A String&quot;, # Column name.
                        &quot;dataType&quot;: &quot;A String&quot;, # The Oracle data type.
                        &quot;encoding&quot;: &quot;A String&quot;, # Column encoding.
                        &quot;length&quot;: 42, # Column length.
                        &quot;nullable&quot;: True or False, # Whether or not the column can accept a null value.
                        &quot;ordinalPosition&quot;: 42, # The ordinal position of the column in the table.
                        &quot;precision&quot;: 42, # Column precision.
                        &quot;primaryKey&quot;: True or False, # Whether or not the column represents a primary key.
                        &quot;scale&quot;: 42, # Column scale.
                      },
                    ],
                    &quot;table&quot;: &quot;A String&quot;, # Table name.
                  },
                ],
                &quot;schema&quot;: &quot;A String&quot;, # Schema name.
              },
            ],
          },
        },
        &quot;sourceConnectionProfile&quot;: &quot;A String&quot;, # Required. Source connection profile resoource. Format: `projects/{project}/locations/{location}/connectionProfiles/{name}`
      },
      &quot;state&quot;: &quot;A String&quot;, # The state of the stream.
      &quot;updateTime&quot;: &quot;A String&quot;, # Output only. The last update time of the stream.
    },
  ],
  &quot;unreachable&quot;: [ # Locations that could not be reached.
    &quot;A String&quot;,
  ],
}</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="patch">patch(name, body=None, force=None, requestId=None, updateMask=None, validateOnly=None, x__xgafv=None)</code>
  <pre>Use this method to update the configuration of a stream.

Args:
  name: string, Output only. The stream&#x27;s name. (required)
  body: object, The request body.
    The object takes the form of:

{ # A resource representing streaming data from a source to a destination.
  &quot;backfillAll&quot;: { # Backfill strategy to automatically backfill the Stream&#x27;s objects. Specific objects can be excluded. # Automatically backfill objects included in the stream source configuration. Specific objects can be excluded.
    &quot;mysqlExcludedObjects&quot;: { # MySQL database structure # MySQL data source objects to avoid backfilling.
      &quot;mysqlDatabases&quot;: [ # Mysql databases on the server
        { # MySQL database.
          &quot;database&quot;: &quot;A String&quot;, # Database name.
          &quot;mysqlTables&quot;: [ # Tables in the database.
            { # MySQL table.
              &quot;mysqlColumns&quot;: [ # MySQL columns in the database. When unspecified as part of include/exclude lists, includes/excludes everything.
                { # MySQL Column.
                  &quot;collation&quot;: &quot;A String&quot;, # Column collation.
                  &quot;column&quot;: &quot;A String&quot;, # Column name.
                  &quot;dataType&quot;: &quot;A String&quot;, # The MySQL data type. Full data types list can be found here: https://dev.mysql.com/doc/refman/8.0/en/data-types.html
                  &quot;length&quot;: 42, # Column length.
                  &quot;nullable&quot;: True or False, # Whether or not the column can accept a null value.
                  &quot;ordinalPosition&quot;: 42, # The ordinal position of the column in the table.
                  &quot;primaryKey&quot;: True or False, # Whether or not the column represents a primary key.
                },
              ],
              &quot;table&quot;: &quot;A String&quot;, # Table name.
            },
          ],
        },
      ],
    },
    &quot;oracleExcludedObjects&quot;: { # Oracle database structure. # Oracle data source objects to avoid backfilling.
      &quot;oracleSchemas&quot;: [ # Oracle schemas/databases in the database server.
        { # Oracle schema.
          &quot;oracleTables&quot;: [ # Tables in the schema.
            { # Oracle table.
              &quot;oracleColumns&quot;: [ # Oracle columns in the schema. When unspecified as part of inclue/exclude lists, includes/excludes everything.
                { # Oracle Column.
                  &quot;column&quot;: &quot;A String&quot;, # Column name.
                  &quot;dataType&quot;: &quot;A String&quot;, # The Oracle data type.
                  &quot;encoding&quot;: &quot;A String&quot;, # Column encoding.
                  &quot;length&quot;: 42, # Column length.
                  &quot;nullable&quot;: True or False, # Whether or not the column can accept a null value.
                  &quot;ordinalPosition&quot;: 42, # The ordinal position of the column in the table.
                  &quot;precision&quot;: 42, # Column precision.
                  &quot;primaryKey&quot;: True or False, # Whether or not the column represents a primary key.
                  &quot;scale&quot;: 42, # Column scale.
                },
              ],
              &quot;table&quot;: &quot;A String&quot;, # Table name.
            },
          ],
          &quot;schema&quot;: &quot;A String&quot;, # Schema name.
        },
      ],
    },
  },
  &quot;backfillNone&quot;: { # Backfill strategy to disable automatic backfill for the Stream&#x27;s objects. # Do not automatically backfill any objects.
  },
  &quot;createTime&quot;: &quot;A String&quot;, # Output only. The creation time of the stream.
  &quot;customerManagedEncryptionKey&quot;: &quot;A String&quot;, # Immutable. A reference to a KMS encryption key. If provided, it will be used to encrypt the data. If left blank, data will be encrypted using an internal Stream-specific encryption key provisioned through KMS.
  &quot;destinationConfig&quot;: { # The configuration of the stream destination. # Required. Destination connection profile configuration.
    &quot;destinationConnectionProfile&quot;: &quot;A String&quot;, # Required. Destination connection profile resource. Format: `projects/{project}/locations/{location}/connectionProfiles/{name}`
    &quot;gcsDestinationConfig&quot;: { # Google Cloud Storage destination configuration # A configuration for how data should be loaded to Cloud Storage.
      &quot;avroFileFormat&quot;: { # AVRO file format configuration. # AVRO file format configuration.
      },
      &quot;fileRotationInterval&quot;: &quot;A String&quot;, # The maximum duration for which new events are added before a file is closed and a new file is created.
      &quot;fileRotationMb&quot;: 42, # The maximum file size to be saved in the bucket.
      &quot;jsonFileFormat&quot;: { # JSON file format configuration. # JSON file format configuration.
        &quot;compression&quot;: &quot;A String&quot;, # Compression of the loaded JSON file.
        &quot;schemaFileFormat&quot;: &quot;A String&quot;, # The schema file format along JSON data files.
      },
      &quot;path&quot;: &quot;A String&quot;, # Path inside the Cloud Storage bucket to write data to.
    },
  },
  &quot;displayName&quot;: &quot;A String&quot;, # Required. Display name.
  &quot;errors&quot;: [ # Output only. Errors on the Stream.
    { # 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;labels&quot;: { # Labels.
    &quot;a_key&quot;: &quot;A String&quot;,
  },
  &quot;name&quot;: &quot;A String&quot;, # Output only. The stream&#x27;s name.
  &quot;sourceConfig&quot;: { # The configuration of the stream source. # Required. Source connection profile configuration.
    &quot;mysqlSourceConfig&quot;: { # MySQL source configuration # MySQL data source configuration
      &quot;excludeObjects&quot;: { # MySQL database structure # MySQL objects to exclude from the stream.
        &quot;mysqlDatabases&quot;: [ # Mysql databases on the server
          { # MySQL database.
            &quot;database&quot;: &quot;A String&quot;, # Database name.
            &quot;mysqlTables&quot;: [ # Tables in the database.
              { # MySQL table.
                &quot;mysqlColumns&quot;: [ # MySQL columns in the database. When unspecified as part of include/exclude lists, includes/excludes everything.
                  { # MySQL Column.
                    &quot;collation&quot;: &quot;A String&quot;, # Column collation.
                    &quot;column&quot;: &quot;A String&quot;, # Column name.
                    &quot;dataType&quot;: &quot;A String&quot;, # The MySQL data type. Full data types list can be found here: https://dev.mysql.com/doc/refman/8.0/en/data-types.html
                    &quot;length&quot;: 42, # Column length.
                    &quot;nullable&quot;: True or False, # Whether or not the column can accept a null value.
                    &quot;ordinalPosition&quot;: 42, # The ordinal position of the column in the table.
                    &quot;primaryKey&quot;: True or False, # Whether or not the column represents a primary key.
                  },
                ],
                &quot;table&quot;: &quot;A String&quot;, # Table name.
              },
            ],
          },
        ],
      },
      &quot;includeObjects&quot;: { # MySQL database structure # MySQL objects to retrieve from the source.
        &quot;mysqlDatabases&quot;: [ # Mysql databases on the server
          { # MySQL database.
            &quot;database&quot;: &quot;A String&quot;, # Database name.
            &quot;mysqlTables&quot;: [ # Tables in the database.
              { # MySQL table.
                &quot;mysqlColumns&quot;: [ # MySQL columns in the database. When unspecified as part of include/exclude lists, includes/excludes everything.
                  { # MySQL Column.
                    &quot;collation&quot;: &quot;A String&quot;, # Column collation.
                    &quot;column&quot;: &quot;A String&quot;, # Column name.
                    &quot;dataType&quot;: &quot;A String&quot;, # The MySQL data type. Full data types list can be found here: https://dev.mysql.com/doc/refman/8.0/en/data-types.html
                    &quot;length&quot;: 42, # Column length.
                    &quot;nullable&quot;: True or False, # Whether or not the column can accept a null value.
                    &quot;ordinalPosition&quot;: 42, # The ordinal position of the column in the table.
                    &quot;primaryKey&quot;: True or False, # Whether or not the column represents a primary key.
                  },
                ],
                &quot;table&quot;: &quot;A String&quot;, # Table name.
              },
            ],
          },
        ],
      },
    },
    &quot;oracleSourceConfig&quot;: { # Oracle data source configuration # Oracle data source configuration
      &quot;excludeObjects&quot;: { # Oracle database structure. # Oracle objects to exclude from the stream.
        &quot;oracleSchemas&quot;: [ # Oracle schemas/databases in the database server.
          { # Oracle schema.
            &quot;oracleTables&quot;: [ # Tables in the schema.
              { # Oracle table.
                &quot;oracleColumns&quot;: [ # Oracle columns in the schema. When unspecified as part of inclue/exclude lists, includes/excludes everything.
                  { # Oracle Column.
                    &quot;column&quot;: &quot;A String&quot;, # Column name.
                    &quot;dataType&quot;: &quot;A String&quot;, # The Oracle data type.
                    &quot;encoding&quot;: &quot;A String&quot;, # Column encoding.
                    &quot;length&quot;: 42, # Column length.
                    &quot;nullable&quot;: True or False, # Whether or not the column can accept a null value.
                    &quot;ordinalPosition&quot;: 42, # The ordinal position of the column in the table.
                    &quot;precision&quot;: 42, # Column precision.
                    &quot;primaryKey&quot;: True or False, # Whether or not the column represents a primary key.
                    &quot;scale&quot;: 42, # Column scale.
                  },
                ],
                &quot;table&quot;: &quot;A String&quot;, # Table name.
              },
            ],
            &quot;schema&quot;: &quot;A String&quot;, # Schema name.
          },
        ],
      },
      &quot;includeObjects&quot;: { # Oracle database structure. # Oracle objects to include in the stream.
        &quot;oracleSchemas&quot;: [ # Oracle schemas/databases in the database server.
          { # Oracle schema.
            &quot;oracleTables&quot;: [ # Tables in the schema.
              { # Oracle table.
                &quot;oracleColumns&quot;: [ # Oracle columns in the schema. When unspecified as part of inclue/exclude lists, includes/excludes everything.
                  { # Oracle Column.
                    &quot;column&quot;: &quot;A String&quot;, # Column name.
                    &quot;dataType&quot;: &quot;A String&quot;, # The Oracle data type.
                    &quot;encoding&quot;: &quot;A String&quot;, # Column encoding.
                    &quot;length&quot;: 42, # Column length.
                    &quot;nullable&quot;: True or False, # Whether or not the column can accept a null value.
                    &quot;ordinalPosition&quot;: 42, # The ordinal position of the column in the table.
                    &quot;precision&quot;: 42, # Column precision.
                    &quot;primaryKey&quot;: True or False, # Whether or not the column represents a primary key.
                    &quot;scale&quot;: 42, # Column scale.
                  },
                ],
                &quot;table&quot;: &quot;A String&quot;, # Table name.
              },
            ],
            &quot;schema&quot;: &quot;A String&quot;, # Schema name.
          },
        ],
      },
    },
    &quot;sourceConnectionProfile&quot;: &quot;A String&quot;, # Required. Source connection profile resoource. Format: `projects/{project}/locations/{location}/connectionProfiles/{name}`
  },
  &quot;state&quot;: &quot;A String&quot;, # The state of the stream.
  &quot;updateTime&quot;: &quot;A String&quot;, # Output only. The last update time of the stream.
}

  force: boolean, Optional. Update the stream without validating it.
  requestId: string, Optional. A request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).
  updateMask: string, Optional. Field mask is used to specify the fields to be overwritten in the stream resource by the update. The fields specified in the update_mask are relative to the resource, not the full request. A field will be overwritten if it is in the mask. If the user does not provide a mask then all fields will be overwritten.
  validateOnly: boolean, Optional. Only validate the stream with the changes, without actually updating it. The default is false.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # This resource represents a long-running operation that is the result of a network API call.
  &quot;done&quot;: True or False, # If the value is `false`, it means the operation is still in progress. If `true`, the operation is completed, and either `error` or `response` is available.
  &quot;error&quot;: { # The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors). # The error result of the operation in case of failure or cancellation.
    &quot;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
    &quot;details&quot;: [ # A list of messages that carry the error details. There is a common set of message types for APIs to use.
      {
        &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
      },
    ],
    &quot;message&quot;: &quot;A String&quot;, # A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.
  },
  &quot;metadata&quot;: { # Service-specific metadata associated with the operation. It typically contains progress information and common metadata such as create time. Some services might not provide such metadata. Any method that returns a long-running operation should document the metadata type, if any.
    &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
  },
  &quot;name&quot;: &quot;A String&quot;, # The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the `name` should be a resource name ending with `operations/{unique_id}`.
  &quot;response&quot;: { # The normal response of the operation in case of success. If the original method returns no data on success, such as `Delete`, the response is `google.protobuf.Empty`. If the original method is standard `Get`/`Create`/`Update`, the response should be the resource. For other methods, the response should have the type `XxxResponse`, where `Xxx` is the original method name. For example, if the original method name is `TakeSnapshot()`, the inferred response type is `TakeSnapshotResponse`.
    &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
  },
}</pre>
</div>

</body></html>