<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 do not 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. 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).
  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>