<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 objects, 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 include/exclude objects, 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 objects, 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 objects, 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 include/exclude objects, 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 include/exclude objects, 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 objects, 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 include/exclude objects, 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 objects, 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 objects, 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 include/exclude objects, 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 include/exclude objects, 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 objects, 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 include/exclude objects, 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 objects, 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 objects, 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 include/exclude objects, 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 include/exclude objects, 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 objects, 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 include/exclude objects, 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 objects, 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 objects, 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 include/exclude objects, 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 include/exclude objects, 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>