{
  "auth": {
    "oauth2": {
      "scopes": {
        "https://www.googleapis.com/auth/cloud-platform": {
          "description": "See, edit, configure, and delete your Google Cloud data and see the email address for your Google Account."
        }
      }
    }
  },
  "discoveryVersion": "v1",
  "schemas": {
    "OracleScnPosition": {
      "description": "Oracle SCN position",
      "id": "OracleScnPosition",
      "properties": {
        "scn": {
          "type": "string",
          "format": "int64",
          "description": "Required. SCN number from where Logs will be read"
        }
      },
      "type": "object"
    },
    "SpannerTable": {
      "id": "SpannerTable",
      "properties": {
        "table": {
          "type": "string",
          "description": "Required. The table name."
        },
        "columns": {
          "description": "Optional. Spanner columns in the table.",
          "items": {
            "$ref": "SpannerColumn"
          },
          "type": "array"
        }
      },
      "description": "Spanner table.",
      "type": "object"
    },
    "AppendOnly": {
      "type": "object",
      "properties": {},
      "description": "AppendOnly mode defines that all changes to a table will be written to the destination table.",
      "id": "AppendOnly"
    },
    "SalesforceMarketingCloudSourceConfig": {
      "properties": {
        "includeObjects": {
          "description": "Optional. The objects to retrieve from the source.",
          "$ref": "SourceCatalog"
        },
        "excludeObjects": {
          "description": "Optional. The objects to exclude from the stream.",
          "$ref": "SourceCatalog"
        },
        "pollingInterval": {
          "format": "google-duration",
          "type": "string",
          "description": "Required. Incremental sync polling interval for all objects. If not set, a default value of `5 minutes` is used. The duration must be from `5 minutes` to `24 hours`, inclusive."
        },
        "fullRefreshPollingInterval": {
          "description": "Required. Specifies the polling interval for a full refresh of objects that do not support incremental sync. If not set, a default value of 24 hours is used. The duration must be between 1 and 24 hours, inclusive.",
          "type": "string",
          "format": "google-duration"
        }
      },
      "id": "SalesforceMarketingCloudSourceConfig",
      "description": "Configuration for syncing data from a Salesforce Marketing Cloud source.",
      "type": "object"
    },
    "PreconditionFailureViolation": {
      "properties": {
        "description": {
          "type": "string",
          "description": "A description of how the precondition failed. Developers can use this description to understand how to fix the failure. For example: \"Terms of service not accepted\"."
        },
        "subject": {
          "description": "The subject, relative to the type, that failed. For example, \"google.com/cloud\" relative to the \"TOS\" type would indicate which terms of service is being referenced.",
          "type": "string"
        },
        "type": {
          "description": "The type of PreconditionFailure. We recommend using a service-specific enum type to define the supported precondition violation subjects. For example, \"TOS\" for \"Terms of Service violation\".",
          "type": "string"
        }
      },
      "id": "PreconditionFailureViolation",
      "description": "A message type used to describe a single precondition failure.",
      "type": "object"
    },
    "MongodbDatabase": {
      "id": "MongodbDatabase",
      "type": "object",
      "properties": {
        "collections": {
          "type": "array",
          "items": {
            "$ref": "MongodbCollection"
          },
          "description": "Collections in the database."
        },
        "database": {
          "description": "The database name.",
          "type": "string"
        }
      },
      "description": "MongoDB Database."
    },
    "SourceConfig": {
      "description": "The configuration of the stream source.",
      "id": "SourceConfig",
      "type": "object",
      "properties": {
        "spannerSourceConfig": {
          "$ref": "SpannerSourceConfig",
          "description": "Spanner data source configuration."
        },
        "mongodbSourceConfig": {
          "description": "MongoDB data source configuration.",
          "$ref": "MongodbSourceConfig"
        },
        "dataverseSourceConfig": {
          "$ref": "DataverseSourceConfig",
          "description": "Dataverse data source configuration."
        },
        "oracleSourceConfig": {
          "description": "Oracle data source configuration.",
          "$ref": "OracleSourceConfig"
        },
        "mysqlSourceConfig": {
          "description": "MySQL data source configuration.",
          "$ref": "MysqlSourceConfig"
        },
        "postgresqlSourceConfig": {
          "description": "PostgreSQL data source configuration.",
          "$ref": "PostgresqlSourceConfig"
        },
        "serviceNowSourceConfig": {
          "$ref": "ServiceNowSourceConfig",
          "description": "ServiceNow data source configuration."
        },
        "sqlServerSourceConfig": {
          "description": "SQLServer data source configuration.",
          "$ref": "SqlServerSourceConfig"
        },
        "workdaySourceConfig": {
          "description": "Optional. Workday data source configuration.",
          "$ref": "WorkdaySourceConfig"
        },
        "salesforceMarketingCloudSourceConfig": {
          "description": "Salesforce Marketing Cloud data source configuration.",
          "$ref": "SalesforceMarketingCloudSourceConfig"
        },
        "salesforceSourceConfig": {
          "description": "Salesforce data source configuration.",
          "$ref": "SalesforceSourceConfig"
        },
        "sourceConnectionProfile": {
          "type": "string",
          "description": "Required. Source connection profile resource. Format: `projects/{project}/locations/{location}/connectionProfiles/{name}`"
        }
      }
    },
    "DataverseProfile": {
      "properties": {
        "oauthClientCredentials": {
          "$ref": "OauthClientCredentials",
          "description": "Required. Credentials for authenticating with the Dataverse API."
        },
        "tenantId": {
          "description": "Required. Tenant id of the Microsoft Dataverse instance.",
          "type": "string"
        },
        "environmentUrl": {
          "type": "string",
          "description": "Required. Environment URL of the Microsoft Dataverse instance. Example: `.crm.dynamics.com`"
        }
      },
      "description": "Profile for connecting to a Dataverse source.",
      "id": "DataverseProfile",
      "type": "object"
    },
    "Operation": {
      "type": "object",
      "id": "Operation",
      "description": "This resource represents a long-running operation that is the result of a network API call.",
      "properties": {
        "name": {
          "type": "string",
          "description": "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}`."
        },
        "done": {
          "type": "boolean",
          "description": "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."
        },
        "metadata": {
          "additionalProperties": {
            "type": "any",
            "description": "Properties of the object. Contains field @type with type URL."
          },
          "type": "object",
          "description": "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."
        },
        "response": {
          "description": "The normal, successful response of the operation. 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`.",
          "additionalProperties": {
            "description": "Properties of the object. Contains field @type with type URL.",
            "type": "any"
          },
          "type": "object"
        },
        "error": {
          "$ref": "Status",
          "description": "The error result of the operation in case of failure or cancellation."
        }
      }
    },
    "ListStreamsResponse": {
      "properties": {
        "nextPageToken": {
          "description": "A token, which can be sent as `page_token` to retrieve the next page. If this field is omitted, there are no subsequent pages.",
          "type": "string"
        },
        "unreachable": {
          "type": "array",
          "description": "Locations that could not be reached.",
          "items": {
            "type": "string"
          }
        },
        "streams": {
          "description": "List of streams",
          "items": {
            "$ref": "Stream"
          },
          "type": "array"
        }
      },
      "id": "ListStreamsResponse",
      "type": "object",
      "description": "Response message for listing streams."
    },
    "BigQueryPartitioning": {
      "properties": {
        "ingestionTimePartition": {
          "description": "Ingestion time partitioning.",
          "$ref": "IngestionTimePartition"
        },
        "integerRangePartition": {
          "$ref": "IntegerRangePartition",
          "description": "Integer range partitioning."
        },
        "timeUnitPartition": {
          "description": "Time unit column partitioning.",
          "$ref": "TimeUnitPartition"
        },
        "requirePartitionFilter": {
          "type": "boolean",
          "description": "Optional. If true, queries over the table require a partition filter."
        }
      },
      "id": "BigQueryPartitioning",
      "description": "BigQuery partitioning configuration.",
      "type": "object"
    },
    "AvroFileFormat": {
      "description": "AVRO file format configuration.",
      "properties": {},
      "type": "object",
      "id": "AvroFileFormat"
    },
    "BackfillNoneStrategy": {
      "properties": {},
      "description": "Backfill strategy to disable automatic backfill for the Stream's objects.",
      "id": "BackfillNoneStrategy",
      "type": "object"
    },
    "JsonFileFormat": {
      "id": "JsonFileFormat",
      "description": "JSON file format configuration.",
      "type": "object",
      "properties": {
        "schemaFileFormat": {
          "enum": [
            "SCHEMA_FILE_FORMAT_UNSPECIFIED",
            "NO_SCHEMA_FILE",
            "AVRO_SCHEMA_FILE"
          ],
          "enumDescriptions": [
            "Unspecified schema file format.",
            "Do not attach schema file.",
            "Avro schema format."
          ],
          "description": "The schema file format along JSON data files.",
          "type": "string"
        },
        "compression": {
          "type": "string",
          "enum": [
            "JSON_COMPRESSION_UNSPECIFIED",
            "NO_COMPRESSION",
            "GZIP"
          ],
          "enumDescriptions": [
            "Unspecified json file compression.",
            "Do not compress JSON file.",
            "Gzip compression."
          ],
          "description": "Compression of the loaded JSON file."
        }
      }
    },
    "EventFilter": {
      "id": "EventFilter",
      "type": "object",
      "description": "Represents a filter for included data on a stream object.",
      "properties": {
        "sqlWhereClause": {
          "type": "string",
          "description": "An SQL-query Where clause selecting which data should be included, not including the \"WHERE\" keyword. e.g., `t.key1 = 'value1' AND t.key2 = 'value2'`"
        }
      }
    },
    "MysqlDatabase": {
      "description": "MySQL database.",
      "properties": {
        "database": {
          "type": "string",
          "description": "The database name."
        },
        "mysqlTables": {
          "items": {
            "$ref": "MysqlTable"
          },
          "type": "array",
          "description": "Tables in the database."
        }
      },
      "id": "MysqlDatabase",
      "type": "object"
    },
    "CdcStrategy": {
      "properties": {
        "specificStartPosition": {
          "description": "Optional. Start replicating from a specific position in the source.",
          "$ref": "SpecificStartPosition"
        },
        "nextAvailableStartPosition": {
          "$ref": "NextAvailableStartPosition",
          "description": "Optional. Resume replication from the next available position in the source."
        },
        "mostRecentStartPosition": {
          "description": "Optional. Start replicating from the most recent position in the source.",
          "$ref": "MostRecentStartPosition"
        }
      },
      "description": "The strategy that the stream uses for CDC replication.",
      "id": "CdcStrategy",
      "type": "object"
    },
    "StreamObject": {
      "description": "A specific stream object (e.g a specific DB table).",
      "properties": {
        "name": {
          "description": "Output only. Identifier. The object resource's name.",
          "type": "string",
          "readOnly": true
        },
        "updateTime": {
          "description": "Output only. The last update time of the object.",
          "format": "google-datetime",
          "type": "string",
          "readOnly": true
        },
        "sourceObject": {
          "description": "The object identifier in the data source.",
          "$ref": "SourceObjectIdentifier"
        },
        "errors": {
          "type": "array",
          "items": {
            "$ref": "Error"
          },
          "description": "Output only. Active errors on the object.",
          "readOnly": true
        },
        "createTime": {
          "readOnly": true,
          "format": "google-datetime",
          "description": "Output only. The creation time of the object.",
          "type": "string"
        },
        "displayName": {
          "type": "string",
          "description": "Required. Display name."
        },
        "backfillJob": {
          "description": "The latest backfill job that was initiated for the stream object.",
          "$ref": "BackfillJob"
        },
        "customizationRules": {
          "description": "Output only. The customization rules for the object. These rules are derived from the parent Stream's `rule_sets` and represent the intended configuration for the object.",
          "items": {
            "$ref": "CustomizationRule"
          },
          "type": "array",
          "readOnly": true
        }
      },
      "id": "StreamObject",
      "type": "object"
    },
    "OracleAsmConfig": {
      "properties": {
        "password": {
          "type": "string",
          "description": "Optional. Password for the Oracle ASM connection. Mutually exclusive with the `secret_manager_stored_password` field."
        },
        "secretManagerStoredPassword": {
          "description": "Optional. A reference to a Secret Manager resource name storing the Oracle ASM connection password. Mutually exclusive with the `password` field.",
          "type": "string"
        },
        "username": {
          "description": "Required. Username for the Oracle ASM connection.",
          "type": "string"
        },
        "asmService": {
          "type": "string",
          "description": "Required. ASM service name for the Oracle ASM connection."
        },
        "oracleSslConfig": {
          "$ref": "OracleSslConfig",
          "description": "Optional. SSL configuration for the Oracle connection."
        },
        "connectionAttributes": {
          "type": "object",
          "description": "Optional. Connection string attributes",
          "additionalProperties": {
            "type": "string"
          }
        },
        "hostname": {
          "description": "Required. Hostname for the Oracle ASM connection.",
          "type": "string"
        },
        "port": {
          "format": "int32",
          "description": "Required. Port for the Oracle ASM connection.",
          "type": "integer"
        }
      },
      "description": "Configuration for Oracle Automatic Storage Management (ASM) connection.",
      "id": "OracleAsmConfig",
      "type": "object"
    },
    "IngestionTimePartition": {
      "type": "object",
      "properties": {
        "partitioningTimeGranularity": {
          "type": "string",
          "description": "Optional. Partition granularity",
          "enumDescriptions": [
            "Unspecified partitioing interval.",
            "Hourly partitioning.",
            "Daily partitioning.",
            "Monthly partitioning.",
            "Yearly partitioning."
          ],
          "enum": [
            "PARTITIONING_TIME_GRANULARITY_UNSPECIFIED",
            "PARTITIONING_TIME_GRANULARITY_HOUR",
            "PARTITIONING_TIME_GRANULARITY_DAY",
            "PARTITIONING_TIME_GRANULARITY_MONTH",
            "PARTITIONING_TIME_GRANULARITY_YEAR"
          ]
        }
      },
      "id": "IngestionTimePartition",
      "description": "Ingestion time partitioning. see https://cloud.google.com/bigquery/docs/partitioned-tables#ingestion_time"
    },
    "SalesforceMarketingCloudProfile": {
      "id": "SalesforceMarketingCloudProfile",
      "type": "object",
      "properties": {
        "subdomain": {
          "description": "Required. Subdomain for the Salesforce Marketing Cloud connection. Example: if your specific endpoint is `https://{your-specific-subdomain}.rest.marketingcloudapis.com/`, the subdomain is `{your-specific-subdomain}`. Must be 1-63 characters, start and end with an alphanumeric character, and contain only lowercase letters, numbers, and hyphens (-).",
          "type": "string"
        },
        "oauthClientCredentials": {
          "$ref": "OauthClientCredentials",
          "description": "Required. Input only. Credentials for authenticating with the Salesforce Marketing Cloud API."
        }
      },
      "description": "Profile for connecting to a Salesforce Marketing Cloud source."
    },
    "MysqlRdbms": {
      "description": "MySQL database structure",
      "type": "object",
      "properties": {
        "mysqlDatabases": {
          "items": {
            "$ref": "MysqlDatabase"
          },
          "type": "array",
          "description": "Mysql databases on the server"
        }
      },
      "id": "MysqlRdbms"
    },
    "SrvConnectionFormat": {
      "type": "object",
      "properties": {},
      "id": "SrvConnectionFormat",
      "description": "Srv connection format."
    },
    "SourceObjectIdentifier": {
      "description": "Represents an identifier of an object in the data source.",
      "id": "SourceObjectIdentifier",
      "type": "object",
      "properties": {
        "mysqlIdentifier": {
          "description": "Mysql data source object identifier.",
          "$ref": "MysqlObjectIdentifier"
        },
        "mongodbIdentifier": {
          "description": "MongoDB data source object identifier.",
          "$ref": "MongodbObjectIdentifier"
        },
        "sqlServerIdentifier": {
          "$ref": "SqlServerObjectIdentifier",
          "description": "SQLServer data source object identifier."
        },
        "salesforceIdentifier": {
          "description": "Salesforce data source object identifier.",
          "$ref": "SalesforceObjectIdentifier"
        },
        "spannerIdentifier": {
          "$ref": "SpannerObjectIdentifier",
          "description": "Spanner data source object identifier."
        },
        "oracleIdentifier": {
          "description": "Oracle data source object identifier.",
          "$ref": "OracleObjectIdentifier"
        },
        "postgresqlIdentifier": {
          "description": "PostgreSQL data source object identifier.",
          "$ref": "PostgresqlObjectIdentifier"
        }
      }
    },
    "IntegerRangePartition": {
      "id": "IntegerRangePartition",
      "type": "object",
      "description": "Integer range partitioning. see https://cloud.google.com/bigquery/docs/partitioned-tables#integer_range",
      "properties": {
        "interval": {
          "description": "Required. The interval of each range within the partition.",
          "format": "int64",
          "type": "string"
        },
        "start": {
          "format": "int64",
          "type": "string",
          "description": "Required. The starting value for range partitioning (inclusive)."
        },
        "column": {
          "description": "Required. The partitioning column.",
          "type": "string"
        },
        "end": {
          "format": "int64",
          "description": "Required. The ending value for range partitioning (exclusive).",
          "type": "string"
        }
      }
    },
    "Validation": {
      "description": "A validation to perform on a stream.",
      "properties": {
        "message": {
          "items": {
            "$ref": "ValidationMessage"
          },
          "description": "Messages reflecting the validation results.",
          "type": "array"
        },
        "code": {
          "description": "A custom code identifying this validation.",
          "type": "string"
        },
        "state": {
          "type": "string",
          "enum": [
            "STATE_UNSPECIFIED",
            "NOT_EXECUTED",
            "FAILED",
            "PASSED",
            "WARNING"
          ],
          "description": "Output only. Validation execution status.",
          "readOnly": true,
          "enumDescriptions": [
            "Unspecified state.",
            "Validation did not execute.",
            "Validation failed.",
            "Validation passed.",
            "Validation executed with warnings."
          ]
        },
        "description": {
          "description": "A short description of the validation.",
          "type": "string"
        }
      },
      "type": "object",
      "id": "Validation"
    },
    "OracleProfile": {
      "properties": {
        "databaseService": {
          "description": "Required. Database for the Oracle connection.",
          "type": "string"
        },
        "oracleSslConfig": {
          "$ref": "OracleSslConfig",
          "description": "Optional. SSL configuration for the Oracle connection."
        },
        "password": {
          "description": "Optional. Password for the Oracle connection. Mutually exclusive with the `secret_manager_stored_password` field.",
          "type": "string"
        },
        "connectionAttributes": {
          "description": "Connection string attributes",
          "additionalProperties": {
            "type": "string"
          },
          "type": "object"
        },
        "username": {
          "description": "Required. Username for the Oracle connection.",
          "type": "string"
        },
        "hostname": {
          "description": "Required. Hostname for the Oracle connection.",
          "type": "string"
        },
        "secretManagerStoredPassword": {
          "type": "string",
          "description": "Optional. A reference to a Secret Manager resource name storing the Oracle connection password. Mutually exclusive with the `password` field."
        },
        "oracleAsmConfig": {
          "description": "Optional. Configuration for Oracle ASM connection.",
          "$ref": "OracleAsmConfig"
        },
        "port": {
          "format": "int32",
          "description": "Port for the Oracle connection, default value is 1521.",
          "type": "integer"
        }
      },
      "id": "OracleProfile",
      "description": "Profile for connecting to an Oracle source.",
      "type": "object"
    },
    "BadRequest": {
      "id": "BadRequest",
      "type": "object",
      "description": "Describes violations in a client request. This error type focuses on the syntactic aspects of the request.",
      "properties": {
        "fieldViolations": {
          "description": "Describes all violations in a client request.",
          "items": {
            "$ref": "FieldViolation"
          },
          "type": "array"
        }
      }
    },
    "LogMiner": {
      "description": "Configuration to use LogMiner CDC method.",
      "id": "LogMiner",
      "properties": {},
      "type": "object"
    },
    "MysqlObjectIdentifier": {
      "description": "Mysql data source object identifier.",
      "properties": {
        "database": {
          "type": "string",
          "description": "Required. The database name."
        },
        "table": {
          "description": "Required. The table name.",
          "type": "string"
        }
      },
      "id": "MysqlObjectIdentifier",
      "type": "object"
    },
    "SalesforceObjectIdentifier": {
      "id": "SalesforceObjectIdentifier",
      "type": "object",
      "description": "Salesforce data source object identifier.",
      "properties": {
        "objectName": {
          "description": "Required. The object name.",
          "type": "string"
        }
      }
    },
    "CancelOperationRequest": {
      "id": "CancelOperationRequest",
      "type": "object",
      "properties": {},
      "description": "The request message for Operations.CancelOperation."
    },
    "SqlServerSslConfig": {
      "id": "SqlServerSslConfig",
      "description": "SQL Server SSL configuration information.",
      "properties": {
        "encryptionAndServerValidation": {
          "description": "If set, Datastream will enforce encryption and authenticate server identity.",
          "$ref": "EncryptionAndServerValidation"
        },
        "encryptionNotEnforced": {
          "description": "If set, Datastream will not enforce encryption. If the DB server mandates encryption, then connection will be encrypted but server identity will not be authenticated.",
          "$ref": "EncryptionNotEnforced"
        },
        "basicEncryption": {
          "description": "If set, Datastream will enforce encryption without authenticating server identity. Server certificates will be trusted by default.",
          "$ref": "BasicEncryption"
        }
      },
      "type": "object"
    },
    "GcsProfile": {
      "id": "GcsProfile",
      "description": "Profile for connecting to a Cloud Storage destination.",
      "type": "object",
      "properties": {
        "rootPath": {
          "type": "string",
          "description": "Optional. The root path inside the Cloud Storage bucket."
        },
        "bucket": {
          "type": "string",
          "description": "Required. The Cloud Storage bucket name."
        }
      }
    },
    "SqlServerChangeTables": {
      "type": "object",
      "id": "SqlServerChangeTables",
      "properties": {},
      "description": "Configuration to use Change Tables CDC read method."
    },
    "ValidationResult": {
      "properties": {
        "validations": {
          "items": {
            "$ref": "Validation"
          },
          "type": "array",
          "description": "A list of validations (includes both executed as well as not executed validations)."
        }
      },
      "description": "Contains the current validation results.",
      "id": "ValidationResult",
      "type": "object"
    },
    "StartBackfillJobResponse": {
      "type": "object",
      "id": "StartBackfillJobResponse",
      "properties": {
        "object": {
          "description": "The stream object resource a backfill job was started for.",
          "$ref": "StreamObject"
        }
      },
      "description": "Response for manually initiating a backfill job for a specific stream object."
    },
    "PostgresqlRdbms": {
      "type": "object",
      "properties": {
        "postgresqlSchemas": {
          "description": "PostgreSQL schemas in the database server.",
          "type": "array",
          "items": {
            "$ref": "PostgresqlSchema"
          }
        }
      },
      "id": "PostgresqlRdbms",
      "description": "PostgreSQL database structure."
    },
    "NextAvailableStartPosition": {
      "properties": {},
      "description": "CDC strategy to resume replication from the next available position in the source.",
      "type": "object",
      "id": "NextAvailableStartPosition"
    },
    "OracleSslConfig": {
      "description": "Oracle SSL configuration information.",
      "id": "OracleSslConfig",
      "properties": {
        "caCertificate": {
          "description": "Input only. PEM-encoded certificate of the CA that signed the source database server's certificate.",
          "type": "string"
        },
        "caCertificateSet": {
          "type": "boolean",
          "description": "Output only. Indicates whether the ca_certificate field has been set for this Connection-Profile.",
          "readOnly": true
        },
        "serverCertificateDistinguishedName": {
          "type": "string",
          "description": "Optional. The distinguished name (DN) mentioned in the server certificate. This corresponds to SSL_SERVER_CERT_DN sqlnet parameter. Refer https://docs.oracle.com/en/database/oracle/oracle-database/19/netrf/local-naming-parameters-in-tns-ora-file.html#GUID-70AB0695-A9AA-4A94-B141-4C605236EEB7 If this field is not provided, the DN matching is not enforced."
        }
      },
      "type": "object"
    },
    "ServerAndClientVerification": {
      "id": "ServerAndClientVerification",
      "properties": {
        "serverCertificateHostname": {
          "type": "string",
          "description": "Optional. The hostname mentioned in the Subject or SAN extension of the server certificate. If this field is not provided, the hostname in the server certificate is not validated."
        },
        "clientKey": {
          "type": "string",
          "description": "Optional. Input only. PEM-encoded private key associated with the client certificate. This value will be used during the SSL/TLS handshake, allowing the PostgreSQL server to authenticate the client's identity, i.e. identity of the Datastream."
        },
        "clientCertificate": {
          "description": "Required. Input only. PEM-encoded certificate used by the source database to authenticate the client identity (i.e., the Datastream's identity). This certificate is signed by either a root certificate trusted by the server or one or more intermediate certificates (which is stored with the leaf certificate) to link the this certificate to the trusted root certificate.",
          "type": "string"
        },
        "caCertificate": {
          "description": "Required. Input only. PEM-encoded server root CA certificate.",
          "type": "string"
        }
      },
      "type": "object",
      "description": "Message represents the option where Datastream will enforce the encryption and authenticate the server identity as well as the client identity. ca_certificate, client_certificate and client_key must be set if user selects this option."
    },
    "PostgresqlProfile": {
      "properties": {
        "username": {
          "type": "string",
          "description": "Required. Username for the PostgreSQL connection."
        },
        "hostname": {
          "description": "Required. Hostname for the PostgreSQL connection.",
          "type": "string"
        },
        "sslConfig": {
          "$ref": "PostgresqlSslConfig",
          "description": "Optional. SSL configuration for the PostgreSQL connection. In case PostgresqlSslConfig is not set, the connection will use the default SSL mode, which is `prefer` (i.e. this mode will only use encryption if enabled from database side, otherwise will use unencrypted communication)"
        },
        "password": {
          "description": "Optional. Password for the PostgreSQL connection. Mutually exclusive with the `secret_manager_stored_password` field.",
          "type": "string"
        },
        "database": {
          "type": "string",
          "description": "Required. Database for the PostgreSQL connection."
        },
        "secretManagerStoredPassword": {
          "type": "string",
          "description": "Optional. A reference to a Secret Manager resource name storing the PostgreSQL connection password. Mutually exclusive with the `password` field."
        },
        "port": {
          "format": "int32",
          "description": "Port for the PostgreSQL connection, default value is 5432.",
          "type": "integer"
        }
      },
      "id": "PostgresqlProfile",
      "type": "object",
      "description": "Profile for connecting to a PostgreSQL source."
    },
    "MysqlColumn": {
      "description": "MySQL Column.",
      "properties": {
        "length": {
          "format": "int32",
          "type": "integer",
          "description": "Column length."
        },
        "nullable": {
          "type": "boolean",
          "description": "Whether or not the column can accept a null value."
        },
        "primaryKey": {
          "type": "boolean",
          "description": "Whether or not the column represents a primary key."
        },
        "precision": {
          "format": "int32",
          "description": "Column precision.",
          "type": "integer"
        },
        "dataType": {
          "type": "string",
          "description": "The MySQL data type. Full data types list can be found here: https://dev.mysql.com/doc/refman/8.0/en/data-types.html"
        },
        "column": {
          "description": "The column name.",
          "type": "string"
        },
        "collation": {
          "description": "Column collation.",
          "type": "string"
        },
        "scale": {
          "format": "int32",
          "type": "integer",
          "description": "Column scale."
        },
        "ordinalPosition": {
          "type": "integer",
          "format": "int32",
          "description": "The ordinal position of the column in the table."
        }
      },
      "id": "MysqlColumn",
      "type": "object"
    },
    "ListPrivateConnectionsResponse": {
      "id": "ListPrivateConnectionsResponse",
      "description": "Response containing a list of private connection configurations.",
      "properties": {
        "privateConnections": {
          "description": "List of private connectivity configurations.",
          "type": "array",
          "items": {
            "$ref": "PrivateConnection"
          }
        },
        "unreachable": {
          "description": "Locations that could not be reached.",
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "nextPageToken": {
          "type": "string",
          "description": "A token, which can be sent as `page_token` to retrieve the next page. If this field is omitted, there are no subsequent pages."
        }
      },
      "type": "object"
    },
    "MongodbObjectIdentifier": {
      "type": "object",
      "properties": {
        "database": {
          "description": "Required. The database name.",
          "type": "string"
        },
        "collection": {
          "type": "string",
          "description": "Required. The collection name."
        }
      },
      "id": "MongodbObjectIdentifier",
      "description": "MongoDB data source object identifier."
    },
    "OauthRefreshTokenCredentials": {
      "id": "OauthRefreshTokenCredentials",
      "type": "object",
      "description": "OAuth Refresh Token Credentials.",
      "properties": {
        "oauthClientCredentials": {
          "description": "Required. Specifies the OAuth Client Credentials.",
          "$ref": "OauthClientCredentials"
        },
        "refreshToken": {
          "$ref": "Secret",
          "description": "Required. Specifies the OAuth Refresh Token."
        }
      }
    },
    "RuleSet": {
      "description": "A set of rules to apply to a set of objects.",
      "properties": {
        "customizationRules": {
          "description": "Required. List of customization rules to apply.",
          "type": "array",
          "items": {
            "$ref": "CustomizationRule"
          }
        },
        "objectFilter": {
          "description": "Required. Object filter to apply the customization rules to.",
          "$ref": "ObjectFilter"
        }
      },
      "type": "object",
      "id": "RuleSet"
    },
    "SqlServerLsnPosition": {
      "type": "object",
      "properties": {
        "lsn": {
          "description": "Required. Log sequence number (LSN) from where Logs will be read",
          "type": "string"
        }
      },
      "description": "SQL Server LSN position",
      "id": "SqlServerLsnPosition"
    },
    "MysqlLogPosition": {
      "type": "object",
      "description": "MySQL log position",
      "properties": {
        "logPosition": {
          "type": "integer",
          "description": "Optional. The position within the binary log file. Default is head of file.",
          "format": "int32"
        },
        "logFile": {
          "type": "string",
          "description": "Required. The binary log file name."
        }
      },
      "id": "MysqlLogPosition"
    },
    "Status": {
      "description": "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).",
      "type": "object",
      "properties": {
        "code": {
          "type": "integer",
          "format": "int32",
          "description": "The status code, which should be an enum value of google.rpc.Code."
        },
        "details": {
          "description": "A list of messages that carry the error details. There is a common set of message types for APIs to use.",
          "type": "array",
          "items": {
            "additionalProperties": {
              "description": "Properties of the object. Contains field @type with type URL.",
              "type": "any"
            },
            "type": "object"
          }
        },
        "message": {
          "description": "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.",
          "type": "string"
        }
      },
      "id": "Status"
    },
    "QuotaFailureViolation": {
      "id": "QuotaFailureViolation",
      "properties": {
        "quotaMetric": {
          "description": "The metric of the violated quota. A quota metric is a named counter to measure usage, such as API requests or CPUs. When an activity occurs in a service, such as Virtual Machine allocation, one or more quota metrics may be affected. For example, \"compute.googleapis.com/cpus_per_vm_family\", \"storage.googleapis.com/internet_egress_bandwidth\".",
          "type": "string"
        },
        "quotaId": {
          "type": "string",
          "description": "The id of the violated quota. Also know as \"limit name\", this is the unique identifier of a quota in the context of an API service. For example, \"CPUS-PER-VM-FAMILY-per-project-region\"."
        },
        "quotaDimensions": {
          "description": "The dimensions of the violated quota. Every non-global quota is enforced on a set of dimensions. While quota metric defines what to count, the dimensions specify for what aspects the counter should be increased. For example, the quota \"CPUs per region per VM family\" enforces a limit on the metric \"compute.googleapis.com/cpus_per_vm_family\" on dimensions \"region\" and \"vm_family\". And if the violation occurred in region \"us-central1\" and for VM family \"n1\", the quota_dimensions would be, { \"region\": \"us-central1\", \"vm_family\": \"n1\", } When a quota is enforced globally, the quota_dimensions would always be empty.",
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "subject": {
          "description": "The subject on which the quota check failed. For example, \"clientip:\" or \"project:\".",
          "type": "string"
        },
        "description": {
          "description": "A description of how the quota check failed. Clients can use this description to find more about the quota configuration in the service's public documentation, or find the relevant quota limit to adjust through developer console. For example: \"Service disabled\" or \"Daily Limit for read operations exceeded\".",
          "type": "string"
        },
        "futureQuotaValue": {
          "format": "int64",
          "description": "The new quota value being rolled out at the time of the violation. At the completion of the rollout, this value will be enforced in place of quota_value. If no rollout is in progress at the time of the violation, this field is not set. For example, if at the time of the violation a rollout is in progress changing the number of CPUs quota from 10 to 20, 20 would be the value of this field.",
          "type": "string"
        },
        "apiService": {
          "type": "string",
          "description": "The API Service from which the `QuotaFailure.Violation` originates. In some cases, Quota issues originate from an API Service other than the one that was called. In other words, a dependency of the called API Service could be the cause of the `QuotaFailure`, and this field would have the dependency API service name. For example, if the called API is Kubernetes Engine API (container.googleapis.com), and a quota violation occurs in the Kubernetes Engine API itself, this field would be \"container.googleapis.com\". On the other hand, if the quota violation occurs when the Kubernetes Engine API creates VMs in the Compute Engine API (compute.googleapis.com), this field would be \"compute.googleapis.com\"."
        },
        "quotaValue": {
          "format": "int64",
          "type": "string",
          "description": "The enforced quota value at the time of the `QuotaFailure`. For example, if the enforced quota value at the time of the `QuotaFailure` on the number of CPUs is \"10\", then the value of this field would reflect this quantity."
        }
      },
      "description": "A message type used to describe a single quota violation. For example, a daily quota or a custom quota that was exceeded.",
      "type": "object"
    },
    "MongodbSslConfig": {
      "description": "MongoDB SSL configuration information.",
      "id": "MongodbSslConfig",
      "type": "object",
      "properties": {
        "secretManagerStoredClientKey": {
          "description": "Optional. Input only. A reference to a Secret Manager resource name storing the PEM-encoded private key associated with the Client Certificate. If this field is used then the 'client_certificate' and the 'ca_certificate' fields are mandatory. Mutually exclusive with the `client_key` field.",
          "type": "string"
        },
        "clientKeySet": {
          "type": "boolean",
          "readOnly": true,
          "description": "Output only. Indicates whether the client_key field is set."
        },
        "clientCertificate": {
          "type": "string",
          "description": "Optional. Input only. PEM-encoded certificate that will be used by the replica to authenticate against the source database server. If this field is used then the 'client_key' and the 'ca_certificate' fields are mandatory."
        },
        "caCertificateSet": {
          "readOnly": true,
          "type": "boolean",
          "description": "Output only. Indicates whether the ca_certificate field is set."
        },
        "clientCertificateSet": {
          "readOnly": true,
          "description": "Output only. Indicates whether the client_certificate field is set.",
          "type": "boolean"
        },
        "clientKey": {
          "type": "string",
          "description": "Optional. Input only. PEM-encoded private key associated with the Client Certificate. If this field is used then the 'client_certificate' and the 'ca_certificate' fields are mandatory."
        },
        "caCertificate": {
          "type": "string",
          "description": "Optional. Input only. PEM-encoded certificate of the CA that signed the source database server's certificate."
        }
      }
    },
    "ServerVerification": {
      "id": "ServerVerification",
      "description": "Message represents the option where Datastream will enforce the encryption and authenticate the server identity. ca_certificate must be set if user selects this option.",
      "properties": {
        "caCertificate": {
          "description": "Required. Input only. PEM-encoded server root CA certificate.",
          "type": "string"
        },
        "serverCertificateHostname": {
          "type": "string",
          "description": "Optional. The hostname mentioned in the Subject or SAN extension of the server certificate. If this field is not provided, the hostname in the server certificate is not validated."
        }
      },
      "type": "object"
    },
    "Stream": {
      "type": "object",
      "description": "A resource representing streaming data from a source to a destination.",
      "id": "Stream",
      "properties": {
        "lastRecoveryTime": {
          "readOnly": true,
          "description": "Output only. If the stream was recovered, the time of the last recovery. Note: This field is currently experimental.",
          "format": "google-datetime",
          "type": "string"
        },
        "backfillNone": {
          "$ref": "BackfillNoneStrategy",
          "description": "Do not automatically backfill any objects."
        },
        "satisfiesPzi": {
          "type": "boolean",
          "description": "Output only. Reserved for future use.",
          "readOnly": true
        },
        "updateTime": {
          "format": "google-datetime",
          "readOnly": true,
          "description": "Output only. The last update time of the stream.",
          "type": "string"
        },
        "satisfiesPzs": {
          "readOnly": true,
          "type": "boolean",
          "description": "Output only. Reserved for future use."
        },
        "sourceConfig": {
          "description": "Required. Source connection profile configuration.",
          "$ref": "SourceConfig"
        },
        "name": {
          "readOnly": true,
          "type": "string",
          "description": "Output only. Identifier. The stream's name."
        },
        "displayName": {
          "description": "Required. Display name.",
          "type": "string"
        },
        "state": {
          "enumDescriptions": [
            "Unspecified stream state.",
            "The stream has been created but has not yet started streaming data.",
            "The stream is running.",
            "The stream is paused.",
            "The stream is in maintenance mode. Updates are rejected on the resource in this state.",
            "The stream is experiencing an error that is preventing data from being streamed.",
            "The stream has experienced a terminal failure.",
            "The stream is starting, but not yet running.",
            "The Stream is no longer reading new events, but still writing events in the buffer."
          ],
          "type": "string",
          "description": "The state of the stream.",
          "enum": [
            "STATE_UNSPECIFIED",
            "NOT_STARTED",
            "RUNNING",
            "PAUSED",
            "MAINTENANCE",
            "FAILED",
            "FAILED_PERMANENTLY",
            "STARTING",
            "DRAINING"
          ]
        },
        "errors": {
          "type": "array",
          "description": "Output only. Errors on the Stream.",
          "items": {
            "$ref": "Error"
          },
          "readOnly": true
        },
        "labels": {
          "description": "Labels.",
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "destinationConfig": {
          "$ref": "DestinationConfig",
          "description": "Required. Destination connection profile configuration."
        },
        "customerManagedEncryptionKey": {
          "type": "string",
          "description": "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."
        },
        "ruleSets": {
          "items": {
            "$ref": "RuleSet"
          },
          "type": "array",
          "description": "Optional. Rule sets to apply to the stream."
        },
        "backfillAll": {
          "$ref": "BackfillAllStrategy",
          "description": "Automatically backfill objects included in the stream source configuration. Specific objects can be excluded."
        },
        "createTime": {
          "format": "google-datetime",
          "description": "Output only. The creation time of the stream.",
          "readOnly": true,
          "type": "string"
        }
      }
    },
    "StopBackfillJobResponse": {
      "type": "object",
      "id": "StopBackfillJobResponse",
      "properties": {
        "object": {
          "$ref": "StreamObject",
          "description": "The stream object resource the backfill job was stopped for."
        }
      },
      "description": "Response for manually stop a backfill job for a specific stream object."
    },
    "SpannerChangeStreamPosition": {
      "id": "SpannerChangeStreamPosition",
      "description": "Represents a position in a Spanner change stream from which to start replicating.",
      "properties": {
        "startTime": {
          "description": "Required. The timestamp to start change stream queries from. The timestamp must be a positive value.",
          "format": "google-datetime",
          "type": "string"
        }
      },
      "type": "object"
    },
    "BlmtConfig": {
      "id": "BlmtConfig",
      "properties": {
        "connectionName": {
          "type": "string",
          "description": "Required. The bigquery connection. Format: `{project}.{location}.{name}`"
        },
        "bucket": {
          "type": "string",
          "description": "Required. The Cloud Storage bucket name."
        },
        "rootPath": {
          "type": "string",
          "description": "The root path inside the Cloud Storage bucket."
        },
        "tableFormat": {
          "type": "string",
          "enum": [
            "TABLE_FORMAT_UNSPECIFIED",
            "ICEBERG"
          ],
          "enumDescriptions": [
            "Default value.",
            "Iceberg table format."
          ],
          "description": "Required. The table format."
        },
        "fileFormat": {
          "description": "Required. The file format.",
          "enum": [
            "FILE_FORMAT_UNSPECIFIED",
            "PARQUET"
          ],
          "enumDescriptions": [
            "Default value.",
            "Parquet file format."
          ],
          "type": "string"
        }
      },
      "type": "object",
      "description": "The configuration for BLMT."
    },
    "SourceHierarchyDatasets": {
      "description": "Destination datasets are created so that hierarchy of the destination data objects matches the source hierarchy.",
      "properties": {
        "projectId": {
          "description": "Optional. The project id of the BigQuery dataset. If not specified, the project will be inferred from the stream resource.",
          "type": "string"
        },
        "datasetTemplate": {
          "$ref": "DatasetTemplate",
          "description": "The dataset template to use for dynamic dataset creation."
        }
      },
      "type": "object",
      "id": "SourceHierarchyDatasets"
    },
    "DatasetTemplate": {
      "type": "object",
      "id": "DatasetTemplate",
      "description": "Dataset template used for dynamic dataset creation.",
      "properties": {
        "datasetIdPrefix": {
          "description": "If supplied, every created dataset will have its name prefixed by the provided value. The prefix and name will be separated by an underscore. i.e. _.",
          "type": "string"
        },
        "kmsKeyName": {
          "description": "Describes the Cloud KMS encryption key that will be used to protect destination BigQuery table. The BigQuery Service Account associated with your project requires access to this encryption key. i.e. projects/{project}/locations/{location}/keyRings/{key_ring}/cryptoKeys/{cryptoKey}. See https://cloud.google.com/bigquery/docs/customer-managed-encryption for more information.",
          "type": "string"
        },
        "location": {
          "description": "Required. The geographic location where the dataset should reside. See https://cloud.google.com/bigquery/docs/locations for supported locations.",
          "type": "string"
        }
      }
    },
    "SqlServerTable": {
      "type": "object",
      "properties": {
        "columns": {
          "items": {
            "$ref": "SqlServerColumn"
          },
          "description": "SQLServer columns in the schema. When unspecified as part of include/exclude objects, includes/excludes everything.",
          "type": "array"
        },
        "table": {
          "description": "The table name.",
          "type": "string"
        }
      },
      "id": "SqlServerTable",
      "description": "SQLServer table."
    },
    "PrivateConnection": {
      "description": "The PrivateConnection resource is used to establish private connectivity between Datastream and a customer's network.",
      "type": "object",
      "id": "PrivateConnection",
      "properties": {
        "vpcPeeringConfig": {
          "description": "VPC Peering Config.",
          "$ref": "VpcPeeringConfig"
        },
        "error": {
          "description": "Output only. In case of error, the details of the error in a user-friendly format.",
          "readOnly": true,
          "$ref": "Error"
        },
        "name": {
          "readOnly": true,
          "type": "string",
          "description": "Output only. Identifier. The resource's name."
        },
        "updateTime": {
          "description": "Output only. The update time of the resource.",
          "readOnly": true,
          "type": "string",
          "format": "google-datetime"
        },
        "displayName": {
          "description": "Required. Display name.",
          "type": "string"
        },
        "satisfiesPzi": {
          "readOnly": true,
          "description": "Output only. Reserved for future use.",
          "type": "boolean"
        },
        "labels": {
          "type": "object",
          "description": "Labels.",
          "additionalProperties": {
            "type": "string"
          }
        },
        "satisfiesPzs": {
          "description": "Output only. Reserved for future use.",
          "type": "boolean",
          "readOnly": true
        },
        "pscInterfaceConfig": {
          "description": "PSC Interface Config.",
          "$ref": "PscInterfaceConfig"
        },
        "state": {
          "readOnly": true,
          "enumDescriptions": [
            "Unspecified state.",
            "The private connection is in creation state - creating resources.",
            "The private connection has been created with all of its resources.",
            "The private connection creation has failed.",
            "The private connection is being deleted.",
            "Delete request has failed, resource is in invalid state."
          ],
          "type": "string",
          "description": "Output only. The state of the Private Connection.",
          "enum": [
            "STATE_UNSPECIFIED",
            "CREATING",
            "CREATED",
            "FAILED",
            "DELETING",
            "FAILED_TO_DELETE"
          ]
        },
        "createTime": {
          "description": "Output only. The create time of the resource.",
          "type": "string",
          "readOnly": true,
          "format": "google-datetime"
        }
      }
    },
    "OracleSourceConfig": {
      "properties": {
        "maxConcurrentCdcTasks": {
          "format": "int32",
          "description": "Maximum number of concurrent CDC tasks. The number should be non-negative. If not set (or set to 0), the system's default value is used.",
          "type": "integer"
        },
        "dropLargeObjects": {
          "description": "Drop large object values.",
          "$ref": "DropLargeObjects"
        },
        "maxConcurrentBackfillTasks": {
          "description": "Maximum number of concurrent backfill tasks. The number should be non-negative. If not set (or set to 0), the system's default value is used.",
          "type": "integer",
          "format": "int32"
        },
        "includeObjects": {
          "$ref": "OracleRdbms",
          "description": "The Oracle objects to include in the stream."
        },
        "excludeObjects": {
          "$ref": "OracleRdbms",
          "description": "The Oracle objects to exclude from the stream."
        },
        "binaryLogParser": {
          "description": "Use Binary Log Parser.",
          "$ref": "BinaryLogParser"
        },
        "streamLargeObjects": {
          "description": "Stream large object values.",
          "$ref": "StreamLargeObjects"
        },
        "logMiner": {
          "$ref": "LogMiner",
          "description": "Use LogMiner."
        }
      },
      "id": "OracleSourceConfig",
      "description": "Configuration for syncing data from an Oracle source.",
      "type": "object"
    },
    "SalesforceSourceConfig": {
      "properties": {
        "pollingInterval": {
          "description": "Required. Salesforce objects polling interval. The interval at which new changes will be polled for each object. The duration must be from `5 minutes` to `24 hours`, inclusive.",
          "type": "string",
          "format": "google-duration"
        },
        "includeObjects": {
          "description": "The Salesforce objects to retrieve from the source.",
          "$ref": "SalesforceOrg"
        },
        "excludeObjects": {
          "description": "The Salesforce objects to exclude from the stream.",
          "$ref": "SalesforceOrg"
        }
      },
      "id": "SalesforceSourceConfig",
      "description": "Configuration for syncing data from a Salesforce source.",
      "type": "object"
    },
    "Location": {
      "description": "A resource that represents a Google Cloud location.",
      "properties": {
        "labels": {
          "type": "object",
          "description": "Cross-service attributes for the location. For example {\"cloud.googleapis.com/region\": \"us-east1\"}",
          "additionalProperties": {
            "type": "string"
          }
        },
        "name": {
          "description": "Resource name for the location, which may vary between implementations. For example: `\"projects/example-project/locations/us-east1\"`",
          "type": "string"
        },
        "locationId": {
          "description": "The canonical id for this location. For example: `\"us-east1\"`.",
          "type": "string"
        },
        "displayName": {
          "description": "The friendly name for this location, typically a nearby city name. For example, \"Tokyo\".",
          "type": "string"
        },
        "metadata": {
          "additionalProperties": {
            "description": "Properties of the object. Contains field @type with type URL.",
            "type": "any"
          },
          "description": "Service-specific metadata. For example the available capacity at the given location.",
          "type": "object"
        }
      },
      "type": "object",
      "id": "Location"
    },
    "SourceCatalog": {
      "id": "SourceCatalog",
      "properties": {
        "objects": {
          "description": "Optional. Source objects in the catalog.",
          "type": "array",
          "items": {
            "$ref": "SourceObject"
          }
        }
      },
      "type": "object",
      "description": "Source catalog."
    },
    "SourceProperty": {
      "properties": {
        "propertyName": {
          "description": "Required. The property name.",
          "type": "string"
        },
        "properties": {
          "items": {
            "$ref": "SourceProperty"
          },
          "description": "Optional. Source properties. When specified, it means that the current property contains nested properties of its own. When unspecified as part of include objects, includes everything, when unspecified as part of exclude objects, excludes nothing.",
          "type": "array"
        },
        "primaryKey": {
          "type": "boolean",
          "description": "Optional. Whether or not the property is a primary key."
        }
      },
      "description": "Source property.",
      "id": "SourceProperty",
      "type": "object"
    },
    "MongodbCollection": {
      "description": "MongoDB Collection.",
      "type": "object",
      "id": "MongodbCollection",
      "properties": {
        "collection": {
          "type": "string",
          "description": "The collection name."
        },
        "fields": {
          "description": "Fields in the collection.",
          "items": {
            "$ref": "MongodbField"
          },
          "type": "array"
        }
      }
    },
    "MysqlTable": {
      "properties": {
        "table": {
          "type": "string",
          "description": "The table name."
        },
        "mysqlColumns": {
          "description": "MySQL columns in the database. When unspecified as part of include/exclude objects, includes/excludes everything.",
          "items": {
            "$ref": "MysqlColumn"
          },
          "type": "array"
        }
      },
      "id": "MysqlTable",
      "description": "MySQL table.",
      "type": "object"
    },
    "SqlServerColumn": {
      "type": "object",
      "properties": {
        "precision": {
          "type": "integer",
          "format": "int32",
          "description": "Column precision."
        },
        "length": {
          "type": "integer",
          "format": "int32",
          "description": "Column length."
        },
        "ordinalPosition": {
          "description": "The ordinal position of the column in the table.",
          "format": "int32",
          "type": "integer"
        },
        "nullable": {
          "description": "Whether or not the column can accept a null value.",
          "type": "boolean"
        },
        "scale": {
          "type": "integer",
          "format": "int32",
          "description": "Column scale."
        },
        "column": {
          "description": "The column name.",
          "type": "string"
        },
        "primaryKey": {
          "type": "boolean",
          "description": "Whether or not the column represents a primary key."
        },
        "dataType": {
          "description": "The SQLServer data type.",
          "type": "string"
        }
      },
      "description": "SQLServer Column.",
      "id": "SqlServerColumn"
    },
    "UserPasswordCredentials": {
      "type": "object",
      "id": "UserPasswordCredentials",
      "description": "User-password credentials.",
      "properties": {
        "password": {
          "$ref": "Secret",
          "description": "Required. Password for the connection."
        },
        "username": {
          "description": "Required. Username for the connection.",
          "type": "string"
        }
      }
    },
    "SourceObject": {
      "description": "Source object.",
      "type": "object",
      "properties": {
        "objectName": {
          "description": "Required. The object name.",
          "type": "string"
        },
        "properties": {
          "items": {
            "$ref": "SourceProperty"
          },
          "type": "array",
          "description": "Optional. Source properties. When unspecified as part of include objects, includes everything, when unspecified as part of exclude objects, excludes nothing."
        }
      },
      "id": "SourceObject"
    },
    "MysqlProfile": {
      "type": "object",
      "id": "MysqlProfile",
      "description": "Profile for connecting to a MySQL source.",
      "properties": {
        "username": {
          "description": "Required. Username for the MySQL connection.",
          "type": "string"
        },
        "secretManagerStoredPassword": {
          "type": "string",
          "description": "Optional. A reference to a Secret Manager resource name storing the MySQL connection password. Mutually exclusive with the `password` field."
        },
        "hostname": {
          "description": "Required. Hostname for the MySQL connection.",
          "type": "string"
        },
        "sslConfig": {
          "description": "SSL configuration for the MySQL connection.",
          "$ref": "MysqlSslConfig"
        },
        "password": {
          "type": "string",
          "description": "Optional. Input only. Password for the MySQL connection. Mutually exclusive with the `secret_manager_stored_password` field."
        },
        "port": {
          "type": "integer",
          "description": "Port for the MySQL connection, default value is 3306.",
          "format": "int32"
        }
      }
    },
    "OracleRdbms": {
      "type": "object",
      "id": "OracleRdbms",
      "description": "Oracle database structure.",
      "properties": {
        "oracleSchemas": {
          "description": "Oracle schemas/databases in the database server.",
          "items": {
            "$ref": "OracleSchema"
          },
          "type": "array"
        }
      }
    },
    "SqlServerSourceConfig": {
      "id": "SqlServerSourceConfig",
      "description": "Configuration for syncing data from a SQLServer source.",
      "properties": {
        "maxConcurrentBackfillTasks": {
          "format": "int32",
          "description": "Max concurrent backfill tasks.",
          "type": "integer"
        },
        "includeObjects": {
          "$ref": "SqlServerRdbms",
          "description": "The SQLServer objects to include in the stream."
        },
        "excludeObjects": {
          "description": "The SQLServer objects to exclude from the stream.",
          "$ref": "SqlServerRdbms"
        },
        "transactionLogs": {
          "description": "CDC reader reads from transaction logs.",
          "$ref": "SqlServerTransactionLogs"
        },
        "maxConcurrentCdcTasks": {
          "description": "Max concurrent CDC tasks.",
          "type": "integer",
          "format": "int32"
        },
        "changeTables": {
          "$ref": "SqlServerChangeTables",
          "description": "CDC reader reads from change tables."
        }
      },
      "type": "object"
    },
    "StreamLargeObjects": {
      "id": "StreamLargeObjects",
      "properties": {},
      "description": "Configuration to stream large object values.",
      "type": "object"
    },
    "SalesforceOrg": {
      "type": "object",
      "description": "Salesforce organization structure.",
      "id": "SalesforceOrg",
      "properties": {
        "objects": {
          "type": "array",
          "items": {
            "$ref": "SalesforceObject"
          },
          "description": "Salesforce objects in the database server."
        }
      }
    },
    "MongodbCluster": {
      "properties": {
        "databases": {
          "description": "MongoDB databases in the cluster.",
          "type": "array",
          "items": {
            "$ref": "MongodbDatabase"
          }
        }
      },
      "description": "MongoDB Cluster structure.",
      "id": "MongodbCluster",
      "type": "object"
    },
    "OracleSchema": {
      "properties": {
        "schema": {
          "type": "string",
          "description": "The schema name."
        },
        "oracleTables": {
          "items": {
            "$ref": "OracleTable"
          },
          "type": "array",
          "description": "Tables in the schema."
        }
      },
      "type": "object",
      "id": "OracleSchema",
      "description": "Oracle schema."
    },
    "EncryptionAndServerValidation": {
      "description": "Message to represent the option where Datastream will enforce encryption and authenticate server identity. ca_certificate must be set if user selects this option.",
      "properties": {
        "caCertificate": {
          "type": "string",
          "description": "Optional. Input only. PEM-encoded certificate of the CA that signed the source database server's certificate."
        },
        "serverCertificateHostname": {
          "type": "string",
          "description": "Optional. The hostname mentioned in the Subject or SAN extension of the server certificate. This field is used for bypassing the hostname validation while verifying server certificate. This is required for scenarios where the host name that datastream connects to is different from the certificate's subject. This specifically happens for private connectivity. It could also happen when the customer provides a public IP in connection profile but the same is not present in the server certificate."
        }
      },
      "id": "EncryptionAndServerValidation",
      "type": "object"
    },
    "OperationMetadata": {
      "type": "object",
      "id": "OperationMetadata",
      "description": "Represents the metadata of the long-running operation.",
      "properties": {
        "apiVersion": {
          "description": "Output only. API version used to start the operation.",
          "type": "string",
          "readOnly": true
        },
        "validationResult": {
          "$ref": "ValidationResult",
          "description": "Output only. Results of executed validations if there are any.",
          "readOnly": true
        },
        "endTime": {
          "format": "google-datetime",
          "type": "string",
          "readOnly": true,
          "description": "Output only. The time the operation finished running."
        },
        "createTime": {
          "readOnly": true,
          "type": "string",
          "description": "Output only. The time the operation was created.",
          "format": "google-datetime"
        },
        "requestedCancellation": {
          "readOnly": true,
          "description": "Output only. Identifies whether the user has requested cancellation of the operation. Operations that have successfully been cancelled have google.longrunning.Operation.error value with a google.rpc.Status.code of 1, corresponding to `Code.CANCELLED`.",
          "type": "boolean"
        },
        "verb": {
          "type": "string",
          "description": "Output only. Name of the verb executed by the operation.",
          "readOnly": true
        },
        "statusMessage": {
          "readOnly": true,
          "description": "Output only. Human-readable status of the operation, if any.",
          "type": "string"
        },
        "target": {
          "description": "Output only. Server-defined resource path for the target of the operation.",
          "readOnly": true,
          "type": "string"
        }
      }
    },
    "BinaryLogParser": {
      "description": "Configuration to use Binary Log Parser CDC technique.",
      "properties": {
        "oracleAsmLogFileAccess": {
          "description": "Use Oracle ASM.",
          "$ref": "OracleAsmLogFileAccess"
        },
        "logFileDirectories": {
          "$ref": "LogFileDirectories",
          "description": "Use Oracle directories."
        }
      },
      "type": "object",
      "id": "BinaryLogParser"
    },
    "LogFileDirectories": {
      "description": "Configuration to specify the Oracle directories to access the log files.",
      "type": "object",
      "properties": {
        "archivedLogDirectory": {
          "type": "string",
          "description": "Required. Oracle directory for archived logs."
        },
        "onlineLogDirectory": {
          "type": "string",
          "description": "Required. Oracle directory for online logs."
        }
      },
      "id": "LogFileDirectories"
    },
    "OracleObjectIdentifier": {
      "id": "OracleObjectIdentifier",
      "properties": {
        "schema": {
          "type": "string",
          "description": "Required. The schema name."
        },
        "table": {
          "type": "string",
          "description": "Required. The table name."
        }
      },
      "description": "Oracle data source object identifier.",
      "type": "object"
    },
    "Route": {
      "type": "object",
      "properties": {
        "labels": {
          "description": "Labels.",
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "name": {
          "readOnly": true,
          "description": "Output only. Identifier. The resource's name.",
          "type": "string"
        },
        "destinationAddress": {
          "type": "string",
          "description": "Required. Destination address for connection"
        },
        "destinationPort": {
          "format": "int32",
          "type": "integer",
          "description": "Destination port for connection"
        },
        "displayName": {
          "type": "string",
          "description": "Required. Display name."
        },
        "createTime": {
          "type": "string",
          "readOnly": true,
          "format": "google-datetime",
          "description": "Output only. The create time of the resource."
        },
        "updateTime": {
          "description": "Output only. The update time of the resource.",
          "format": "google-datetime",
          "readOnly": true,
          "type": "string"
        }
      },
      "id": "Route",
      "description": "The route resource is the child of the private connection resource, used for defining a route for a private connection."
    },
    "LocalizedMessage": {
      "properties": {
        "message": {
          "type": "string",
          "description": "The localized error message in the above locale."
        },
        "locale": {
          "description": "The locale used following the specification defined at https://www.rfc-editor.org/rfc/bcp/bcp47.txt. Examples are: \"en-US\", \"fr-CH\", \"es-MX\"",
          "type": "string"
        }
      },
      "type": "object",
      "description": "Provides a localized error message that is safe to return to the user which can be attached to an RPC error.",
      "id": "LocalizedMessage"
    },
    "PreconditionFailure": {
      "type": "object",
      "properties": {
        "violations": {
          "items": {
            "$ref": "PreconditionFailureViolation"
          },
          "description": "Describes all precondition violations.",
          "type": "array"
        }
      },
      "description": "Describes what preconditions have failed. For example, if an RPC failed because it required the Terms of Service to be acknowledged, it could list the terms of service violation in the PreconditionFailure message.",
      "id": "PreconditionFailure"
    },
    "FieldViolation": {
      "type": "object",
      "properties": {
        "field": {
          "description": "A path that leads to a field in the request body. The value will be a sequence of dot-separated identifiers that identify a protocol buffer field. Consider the following: message CreateContactRequest { message EmailAddress { enum Type { TYPE_UNSPECIFIED = 0; HOME = 1; WORK = 2; } optional string email = 1; repeated EmailType type = 2; } string full_name = 1; repeated EmailAddress email_addresses = 2; } In this example, in proto `field` could take one of the following values: * `full_name` for a violation in the `full_name` value * `email_addresses[0].email` for a violation in the `email` field of the first `email_addresses` message * `email_addresses[2].type[1]` for a violation in the second `type` value in the third `email_addresses` message. In JSON, the same values are represented as: * `fullName` for a violation in the `fullName` value * `emailAddresses[0].email` for a violation in the `email` field of the first `emailAddresses` message * `emailAddresses[2].type[1]` for a violation in the second `type` value in the third `emailAddresses` message.",
          "type": "string"
        },
        "description": {
          "description": "A description of why the request element is bad.",
          "type": "string"
        },
        "reason": {
          "type": "string",
          "description": "The reason for the field-level error. This is a constant value that identifies the proximate cause of the field-level error. It should uniquely identify the type of the FieldViolation within the scope of the google.rpc.ErrorInfo.domain. This should be at most 63 characters and match a regular expression of `A-Z+[A-Z0-9]`, which represents UPPER_SNAKE_CASE."
        },
        "localizedMessage": {
          "$ref": "LocalizedMessage",
          "description": "Provides a localized error message for field-level errors that is safe to return to the API consumer."
        }
      },
      "id": "FieldViolation",
      "description": "A message type used to describe a single bad request field."
    },
    "BasicEncryption": {
      "type": "object",
      "properties": {},
      "id": "BasicEncryption",
      "description": "Message to represent the option where Datastream will enforce encryption without authenticating server identity. Server certificates will be trusted by default."
    },
    "GcsDestinationConfig": {
      "type": "object",
      "description": "Google Cloud Storage destination configuration",
      "id": "GcsDestinationConfig",
      "properties": {
        "avroFileFormat": {
          "$ref": "AvroFileFormat",
          "description": "AVRO file format configuration."
        },
        "fileRotationInterval": {
          "format": "google-duration",
          "type": "string",
          "description": "The maximum duration for which new events are added before a file is closed and a new file is created. Values within the range of 15-60 seconds are allowed."
        },
        "path": {
          "type": "string",
          "description": "Path inside the Cloud Storage bucket to write data to."
        },
        "fileRotationMb": {
          "type": "integer",
          "description": "The maximum file size to be saved in the bucket.",
          "format": "int32"
        },
        "jsonFileFormat": {
          "description": "JSON file format configuration.",
          "$ref": "JsonFileFormat"
        }
      }
    },
    "DropLargeObjects": {
      "id": "DropLargeObjects",
      "type": "object",
      "properties": {},
      "description": "Configuration to drop large object values."
    },
    "StaticServiceIpConnectivity": {
      "id": "StaticServiceIpConnectivity",
      "type": "object",
      "properties": {},
      "description": "Static IP address connectivity. Used when the source database is configured to allow incoming connections from the Datastream public IP addresses for the region specified in the connection profile."
    },
    "Oauth2ClientCredentials": {
      "id": "Oauth2ClientCredentials",
      "description": "OAuth2 Client Credentials.",
      "type": "object",
      "properties": {
        "secretManagerStoredClientSecret": {
          "type": "string",
          "description": "Optional. A reference to a Secret Manager resource name storing the Salesforce OAuth2 client_secret. Mutually exclusive with the `client_secret` field."
        },
        "clientSecret": {
          "type": "string",
          "description": "Optional. Client secret for Salesforce OAuth2 Client Credentials. Mutually exclusive with the `secret_manager_stored_client_secret` field."
        },
        "clientId": {
          "description": "Required. Client ID for Salesforce OAuth2 Client Credentials.",
          "type": "string"
        }
      }
    },
    "DataverseSourceConfig": {
      "type": "object",
      "properties": {
        "pollingInterval": {
          "format": "google-duration",
          "description": "Required. Incremental sync polling interval for all objects. If not set, a default value of `5 minutes` is used. The duration must be from `5 minutes` to `24 hours`, inclusive.",
          "type": "string"
        },
        "includeObjects": {
          "description": "Optional. The objects to retrieve from the source.",
          "$ref": "SourceCatalog"
        },
        "excludeObjects": {
          "description": "Optional. The objects to exclude from the stream.",
          "$ref": "SourceCatalog"
        }
      },
      "id": "DataverseSourceConfig",
      "description": "Configuration for syncing data from a Dataverse source."
    },
    "MostRecentStartPosition": {
      "properties": {},
      "id": "MostRecentStartPosition",
      "description": "CDC strategy to start replicating from the most recent position in the source.",
      "type": "object"
    },
    "SqlServerTransactionLogs": {
      "id": "SqlServerTransactionLogs",
      "description": "Configuration to use Transaction Logs CDC read method.",
      "properties": {},
      "type": "object"
    },
    "OracleTable": {
      "properties": {
        "oracleColumns": {
          "items": {
            "$ref": "OracleColumn"
          },
          "type": "array",
          "description": "Oracle columns in the schema. When unspecified as part of include/exclude objects, includes/excludes everything."
        },
        "table": {
          "type": "string",
          "description": "The table name."
        }
      },
      "id": "OracleTable",
      "description": "Oracle table.",
      "type": "object"
    },
    "TimeUnitPartition": {
      "description": "Time unit column partitioning. see https://cloud.google.com/bigquery/docs/partitioned-tables#date_timestamp_partitioned_tables",
      "properties": {
        "column": {
          "description": "Required. The partitioning column.",
          "type": "string"
        },
        "partitioningTimeGranularity": {
          "enum": [
            "PARTITIONING_TIME_GRANULARITY_UNSPECIFIED",
            "PARTITIONING_TIME_GRANULARITY_HOUR",
            "PARTITIONING_TIME_GRANULARITY_DAY",
            "PARTITIONING_TIME_GRANULARITY_MONTH",
            "PARTITIONING_TIME_GRANULARITY_YEAR"
          ],
          "description": "Optional. Partition granularity.",
          "enumDescriptions": [
            "Unspecified partitioing interval.",
            "Hourly partitioning.",
            "Daily partitioning.",
            "Monthly partitioning.",
            "Yearly partitioning."
          ],
          "type": "string"
        }
      },
      "id": "TimeUnitPartition",
      "type": "object"
    },
    "MongodbSourceConfig": {
      "type": "object",
      "properties": {
        "jsonMode": {
          "enum": [
            "MONGODB_JSON_MODE_UNSPECIFIED",
            "STRICT",
            "CANONICAL"
          ],
          "description": "Optional. MongoDB JSON mode to use for the stream.",
          "enumDescriptions": [
            "Unspecified JSON mode.",
            "Strict JSON mode.",
            "Canonical JSON mode."
          ],
          "type": "string"
        },
        "maxConcurrentBackfillTasks": {
          "type": "integer",
          "description": "Optional. Maximum number of concurrent backfill tasks. The number should be non-negative and less than or equal to 50. If not set (or set to 0), the system's default value is used",
          "format": "int32"
        },
        "includeObjects": {
          "description": "The MongoDB collections to include in the stream.",
          "$ref": "MongodbCluster"
        },
        "excludeObjects": {
          "description": "The MongoDB collections to exclude from the stream.",
          "$ref": "MongodbCluster"
        }
      },
      "id": "MongodbSourceConfig",
      "description": "Configuration for syncing data from a MongoDB source."
    },
    "SpannerColumn": {
      "description": "Spanner column.",
      "type": "object",
      "properties": {
        "ordinalPosition": {
          "format": "int64",
          "type": "string",
          "description": "Optional. The ordinal position of the column in the table."
        },
        "column": {
          "description": "Required. The column name.",
          "type": "string"
        },
        "isPrimaryKey": {
          "type": "boolean",
          "description": "Optional. Whether or not the column is a primary key."
        },
        "dataType": {
          "description": "Optional. Spanner data type.",
          "type": "string"
        }
      },
      "id": "SpannerColumn"
    },
    "BackfillJob": {
      "description": "Represents a backfill job on a specific stream object.",
      "type": "object",
      "properties": {
        "state": {
          "readOnly": true,
          "description": "Output only. Backfill job state.",
          "enum": [
            "STATE_UNSPECIFIED",
            "NOT_STARTED",
            "PENDING",
            "ACTIVE",
            "STOPPED",
            "FAILED",
            "COMPLETED",
            "UNSUPPORTED"
          ],
          "enumDescriptions": [
            "Default value.",
            "Backfill job was never started for the stream object (stream has backfill strategy defined as manual or object was explicitly excluded from automatic backfill).",
            "Backfill job will start pending available resources.",
            "Backfill job is running.",
            "Backfill job stopped (next job run will start from beginning).",
            "Backfill job failed (due to an error).",
            "Backfill completed successfully.",
            "Backfill job failed since the table structure is currently unsupported for backfill."
          ],
          "type": "string"
        },
        "errors": {
          "description": "Output only. Errors which caused the backfill job to fail.",
          "readOnly": true,
          "type": "array",
          "items": {
            "$ref": "Error"
          }
        },
        "lastStartTime": {
          "format": "google-datetime",
          "type": "string",
          "readOnly": true,
          "description": "Output only. Backfill job's start time."
        },
        "eventFilter": {
          "readOnly": true,
          "$ref": "EventFilter",
          "description": "Output only. The filter for performing a partial backfill."
        },
        "trigger": {
          "type": "string",
          "enumDescriptions": [
            "Default value.",
            "Object backfill job was triggered automatically according to the stream's backfill strategy.",
            "Object backfill job was triggered manually using the dedicated API."
          ],
          "description": "Backfill job's triggering reason.",
          "enum": [
            "TRIGGER_UNSPECIFIED",
            "AUTOMATIC",
            "MANUAL"
          ]
        },
        "lastEndTime": {
          "format": "google-datetime",
          "description": "Output only. Backfill job's end time.",
          "readOnly": true,
          "type": "string"
        }
      },
      "id": "BackfillJob"
    },
    "SpecificStartPosition": {
      "id": "SpecificStartPosition",
      "description": "CDC strategy to start replicating from a specific position in the source.",
      "type": "object",
      "properties": {
        "mongodbChangeStreamPosition": {
          "$ref": "MongodbChangeStreamPosition",
          "description": "MongoDB change stream position to start replicating from."
        },
        "sqlServerLsnPosition": {
          "$ref": "SqlServerLsnPosition",
          "description": "SqlServer LSN to start replicating from."
        },
        "mysqlLogPosition": {
          "$ref": "MysqlLogPosition",
          "description": "MySQL specific log position to start replicating from."
        },
        "mysqlGtidPosition": {
          "$ref": "MysqlGtidPosition",
          "description": "MySQL GTID set to start replicating from."
        },
        "oracleScnPosition": {
          "$ref": "OracleScnPosition",
          "description": "Oracle SCN to start replicating from."
        },
        "spannerChangeStreamPosition": {
          "$ref": "SpannerChangeStreamPosition",
          "description": "Optional. Spanner change stream position to start replicating from."
        }
      }
    },
    "OracleAsmLogFileAccess": {
      "description": "Configuration to use Oracle ASM to access the log files.",
      "properties": {},
      "type": "object",
      "id": "OracleAsmLogFileAccess"
    },
    "DiscoverConnectionProfileRequest": {
      "type": "object",
      "id": "DiscoverConnectionProfileRequest",
      "properties": {
        "fullHierarchy": {
          "description": "Optional. Whether to retrieve the full hierarchy of data objects (TRUE) or only the current level (FALSE).",
          "type": "boolean"
        },
        "connectionProfile": {
          "description": "Optional. An ad-hoc connection profile configuration.",
          "$ref": "ConnectionProfile"
        },
        "mysqlRdbms": {
          "description": "Optional. MySQL RDBMS to enrich with child data objects and metadata.",
          "$ref": "MysqlRdbms"
        },
        "spannerDatabase": {
          "description": "Optional. Spanner database to enrich with child data objects and metadata.",
          "$ref": "SpannerDatabase"
        },
        "hierarchyDepth": {
          "format": "int32",
          "description": "Optional. The number of hierarchy levels below the current level to be retrieved.",
          "type": "integer"
        },
        "oracleRdbms": {
          "description": "Optional. Oracle RDBMS to enrich with child data objects and metadata.",
          "$ref": "OracleRdbms"
        },
        "mongodbCluster": {
          "$ref": "MongodbCluster",
          "description": "Optional. MongoDB cluster to enrich with child data objects and metadata."
        },
        "sourceCatalog": {
          "description": "Optional. Source catalog to enrich with child data objects and metadata. This is mainly used to represent SaaS sources databases.",
          "$ref": "SourceCatalog"
        },
        "connectionProfileName": {
          "description": "Optional. A reference to an existing connection profile.",
          "type": "string"
        },
        "postgresqlRdbms": {
          "$ref": "PostgresqlRdbms",
          "description": "Optional. PostgreSQL RDBMS to enrich with child data objects and metadata."
        },
        "sqlServerRdbms": {
          "description": "Optional. SQLServer RDBMS to enrich with child data objects and metadata.",
          "$ref": "SqlServerRdbms"
        },
        "salesforceOrg": {
          "description": "Optional. Salesforce organization to enrich with child data objects and metadata.",
          "$ref": "SalesforceOrg"
        }
      },
      "description": "Request message for 'discover' ConnectionProfile request."
    },
    "ListStreamObjectsResponse": {
      "type": "object",
      "properties": {
        "nextPageToken": {
          "type": "string",
          "description": "A token, which can be sent as `page_token` to retrieve the next page."
        },
        "streamObjects": {
          "description": "List of stream objects.",
          "type": "array",
          "items": {
            "$ref": "StreamObject"
          }
        }
      },
      "id": "ListStreamObjectsResponse",
      "description": "Response containing the objects for a stream."
    },
    "ResourceInfo": {
      "properties": {
        "resourceName": {
          "description": "The name of the resource being accessed. For example, a shared calendar name: \"example.com_4fghdhgsrgh@group.calendar.google.com\", if the current error is google.rpc.Code.PERMISSION_DENIED.",
          "type": "string"
        },
        "description": {
          "type": "string",
          "description": "Describes what error is encountered when accessing this resource. For example, updating a cloud project may require the `writer` permission on the developer console project."
        },
        "resourceType": {
          "description": "A name for the type of resource being accessed, e.g. \"sql table\", \"cloud storage bucket\", \"file\", \"Google calendar\"; or the type URL of the resource: e.g. \"type.googleapis.com/google.pubsub.v1.Topic\".",
          "type": "string"
        },
        "owner": {
          "type": "string",
          "description": "The owner of the resource (optional). For example, \"user:\" or \"project:\"."
        }
      },
      "id": "ResourceInfo",
      "type": "object",
      "description": "Describes the resource that is being accessed."
    },
    "BigQueryClustering": {
      "properties": {
        "columns": {
          "description": "Required. Column names to set as clustering columns.",
          "items": {
            "type": "string"
          },
          "type": "array"
        }
      },
      "type": "object",
      "description": "BigQuery clustering configuration.",
      "id": "BigQueryClustering"
    },
    "RequestInfo": {
      "properties": {
        "requestId": {
          "description": "An opaque string that should only be interpreted by the service generating it. For example, it can be used to identify requests in the service's logs.",
          "type": "string"
        },
        "servingData": {
          "description": "Any data that was used to serve this request. For example, an encrypted stack trace that can be sent back to the service provider for debugging.",
          "type": "string"
        }
      },
      "id": "RequestInfo",
      "type": "object",
      "description": "Contains metadata about the request that clients can attach when filing a bug or providing other forms of feedback."
    },
    "SpannerProfile": {
      "properties": {
        "host": {
          "type": "string",
          "description": "Optional. The Spanner endpoint to connect to. Defaults to the global endpoint (https://spanner.googleapis.com). Must be in the format: https://spanner.{region}.rep.googleapis.com."
        },
        "database": {
          "type": "string",
          "description": "Required. Immutable. Cloud Spanner database resource. This field is immutable. Must be in the format: projects/{project}/instances/{instance}/databases/{database_id}."
        }
      },
      "id": "SpannerProfile",
      "description": "Profile for connecting to a Spanner source.",
      "type": "object"
    },
    "SalesforceField": {
      "description": "Salesforce field.",
      "id": "SalesforceField",
      "type": "object",
      "properties": {
        "nillable": {
          "description": "Indicates whether the field can accept nil values.",
          "type": "boolean"
        },
        "name": {
          "type": "string",
          "description": "The field name."
        },
        "dataType": {
          "type": "string",
          "description": "The data type."
        }
      }
    },
    "ForwardSshTunnelConnectivity": {
      "id": "ForwardSshTunnelConnectivity",
      "description": "Forward SSH Tunnel connectivity.",
      "type": "object",
      "properties": {
        "hostname": {
          "description": "Required. Hostname for the SSH tunnel.",
          "type": "string"
        },
        "port": {
          "description": "Port for the SSH tunnel, default value is 22.",
          "type": "integer",
          "format": "int32"
        },
        "privateKey": {
          "type": "string",
          "description": "Input only. SSH private key."
        },
        "username": {
          "description": "Required. Username for the SSH tunnel.",
          "type": "string"
        },
        "password": {
          "description": "Input only. SSH password.",
          "type": "string"
        }
      }
    },
    "SqlServerSchema": {
      "description": "SQLServer schema.",
      "type": "object",
      "properties": {
        "schema": {
          "description": "The schema name.",
          "type": "string"
        },
        "tables": {
          "description": "Tables in the schema.",
          "items": {
            "$ref": "SqlServerTable"
          },
          "type": "array"
        }
      },
      "id": "SqlServerSchema"
    },
    "UserCredentials": {
      "id": "UserCredentials",
      "properties": {
        "secretManagerStoredPassword": {
          "description": "Optional. A reference to a Secret Manager resource name storing the Salesforce connection's password. Mutually exclusive with the `password` field.",
          "type": "string"
        },
        "secretManagerStoredSecurityToken": {
          "type": "string",
          "description": "Optional. A reference to a Secret Manager resource name storing the Salesforce connection's security token. Mutually exclusive with the `security_token` field."
        },
        "username": {
          "type": "string",
          "description": "Required. Username for the Salesforce connection."
        },
        "securityToken": {
          "description": "Optional. Security token for the Salesforce connection. Mutually exclusive with the `secret_manager_stored_security_token` field.",
          "type": "string"
        },
        "password": {
          "description": "Optional. Password for the Salesforce connection. Mutually exclusive with the `secret_manager_stored_password` field.",
          "type": "string"
        }
      },
      "type": "object",
      "deprecated": true,
      "description": "Deprecated: Salesforce is retiring Username-Password authentication. Use `Oauth2ClientCredentials` instead."
    },
    "Gtid": {
      "type": "object",
      "id": "Gtid",
      "description": "Use GTID based replication.",
      "properties": {}
    },
    "PscInterfaceConfig": {
      "id": "PscInterfaceConfig",
      "description": "The PSC Interface configuration is used to create PSC Interface between Datastream and the consumer's PSC.",
      "properties": {
        "networkAttachment": {
          "type": "string",
          "description": "Required. Fully qualified name of the Network Attachment that Datastream will connect to. Format: `projects/{project}/regions/{region}/networkAttachments/{name}`"
        }
      },
      "type": "object"
    },
    "RunStreamRequest": {
      "description": "Request message for running a stream.",
      "properties": {
        "force": {
          "description": "Optional. Update the stream without validating it.",
          "type": "boolean"
        },
        "cdcStrategy": {
          "description": "Optional. The CDC strategy of the stream. If not set, the system's default value will be used.",
          "$ref": "CdcStrategy"
        }
      },
      "id": "RunStreamRequest",
      "type": "object"
    },
    "MysqlGtidPosition": {
      "type": "object",
      "description": "MySQL GTID position",
      "id": "MysqlGtidPosition",
      "properties": {
        "gtidSet": {
          "description": "Required. The gtid set to start replication from.",
          "type": "string"
        }
      }
    },
    "ListOperationsResponse": {
      "properties": {
        "operations": {
          "description": "A list of operations that matches the specified filter in the request.",
          "type": "array",
          "items": {
            "$ref": "Operation"
          }
        },
        "unreachable": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "description": "Unordered list. Unreachable resources. Populated when the request sets `ListOperationsRequest.return_partial_success` and reads across collections. For example, when attempting to list all resources across all supported locations."
        },
        "nextPageToken": {
          "type": "string",
          "description": "The standard List next-page token."
        }
      },
      "id": "ListOperationsResponse",
      "description": "The response message for Operations.ListOperations.",
      "type": "object"
    },
    "PostgresqlSourceConfig": {
      "id": "PostgresqlSourceConfig",
      "type": "object",
      "properties": {
        "replicationSlot": {
          "description": "Required. Immutable. The name of the logical replication slot that's configured with the pgoutput plugin.",
          "type": "string"
        },
        "includeObjects": {
          "description": "The PostgreSQL objects to include in the stream.",
          "$ref": "PostgresqlRdbms"
        },
        "excludeObjects": {
          "description": "The PostgreSQL objects to exclude from the stream.",
          "$ref": "PostgresqlRdbms"
        },
        "publication": {
          "description": "Required. The name of the publication that includes the set of all tables that are defined in the stream's include_objects.",
          "type": "string"
        },
        "maxConcurrentBackfillTasks": {
          "format": "int32",
          "description": "Maximum number of concurrent backfill tasks. The number should be non negative. If not set (or set to 0), the system's default value will be used.",
          "type": "integer"
        }
      },
      "description": "Configuration for syncing data from a PostgreSQL source."
    },
    "PostgresqlSslConfig": {
      "id": "PostgresqlSslConfig",
      "properties": {
        "serverAndClientVerification": {
          "description": "If this field is set, the communication will be encrypted with TLS encryption and both the server identity and the client identity will be authenticated.",
          "$ref": "ServerAndClientVerification"
        },
        "serverVerification": {
          "$ref": "ServerVerification",
          "description": " If this field is set, the communication will be encrypted with TLS encryption and the server identity will be authenticated."
        }
      },
      "description": "PostgreSQL SSL configuration information.",
      "type": "object"
    },
    "ListConnectionProfilesResponse": {
      "type": "object",
      "properties": {
        "unreachable": {
          "description": "Locations that could not be reached.",
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "connectionProfiles": {
          "type": "array",
          "items": {
            "$ref": "ConnectionProfile"
          },
          "description": "List of connection profiles."
        },
        "nextPageToken": {
          "description": "A token, which can be sent as `page_token` to retrieve the next page. If this field is omitted, there are no subsequent pages.",
          "type": "string"
        }
      },
      "id": "ListConnectionProfilesResponse",
      "description": "Response message for listing connection profiles."
    },
    "SqlServerObjectIdentifier": {
      "type": "object",
      "id": "SqlServerObjectIdentifier",
      "description": "SQLServer data source object identifier.",
      "properties": {
        "table": {
          "description": "Required. The table name.",
          "type": "string"
        },
        "schema": {
          "type": "string",
          "description": "Required. The schema name."
        }
      }
    },
    "ErrorInfo": {
      "description": "Describes the cause of the error with structured details. Example of an error when contacting the \"pubsub.googleapis.com\" API when it is not enabled: { \"reason\": \"API_DISABLED\" \"domain\": \"googleapis.com\" \"metadata\": { \"resource\": \"projects/123\", \"service\": \"pubsub.googleapis.com\" } } This response indicates that the pubsub.googleapis.com API is not enabled. Example of an error that is returned when attempting to create a Spanner instance in a region that is out of stock: { \"reason\": \"STOCKOUT\" \"domain\": \"spanner.googleapis.com\", \"metadata\": { \"availableRegions\": \"us-central1,us-east2\" } }",
      "properties": {
        "reason": {
          "description": "The reason for the error. This is a constant value that identifies the proximate cause of the error. Error reasons are unique within a particular domain of errors. This should be at most 63 characters and match a regular expression of `A-Z+[A-Z0-9]`, which represents UPPER_SNAKE_CASE.",
          "type": "string"
        },
        "domain": {
          "type": "string",
          "description": "The logical grouping to which the \"reason\" belongs. The error domain is typically the registered service name of the tool or product that generates the error. Example: \"pubsub.googleapis.com\". If the error is generated by some common infrastructure, the error domain must be a globally unique value that identifies the infrastructure. For Google API infrastructure, the error domain is \"googleapis.com\"."
        },
        "metadata": {
          "description": "Additional structured details about this error. Keys must match a regular expression of `a-z+` but should ideally be lowerCamelCase. Also, they must be limited to 64 characters in length. When identifying the current value of an exceeded limit, the units should be contained in the key, not the value. For example, rather than `{\"instanceLimit\": \"100/request\"}`, should be returned as, `{\"instanceLimitPerRequest\": \"100\"}`, if the client exceeds the number of instances that can be created in a single (batch) request.",
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        }
      },
      "id": "ErrorInfo",
      "type": "object"
    },
    "DestinationConfig": {
      "type": "object",
      "id": "DestinationConfig",
      "properties": {
        "bigqueryDestinationConfig": {
          "description": "BigQuery destination configuration.",
          "$ref": "BigQueryDestinationConfig"
        },
        "gcsDestinationConfig": {
          "$ref": "GcsDestinationConfig",
          "description": "A configuration for how data should be loaded to Cloud Storage."
        },
        "destinationConnectionProfile": {
          "type": "string",
          "description": "Required. Destination connection profile resource. Format: `projects/{project}/locations/{location}/connectionProfiles/{name}`"
        }
      },
      "description": "The configuration of the stream destination."
    },
    "QuotaFailure": {
      "type": "object",
      "id": "QuotaFailure",
      "description": "Describes how a quota check failed. For example if a daily limit was exceeded for the calling project, a service could respond with a QuotaFailure detail containing the project id and the description of the quota limit that was exceeded. If the calling project hasn't enabled the service in the developer console, then a service could respond with the project id and set `service_disabled` to true. Also see RetryInfo and Help types for other details about handling a quota failure.",
      "properties": {
        "violations": {
          "type": "array",
          "description": "Describes all quota violations.",
          "items": {
            "$ref": "QuotaFailureViolation"
          }
        }
      }
    },
    "HostAddress": {
      "description": "A HostAddress represents a transport end point, which is the combination of an IP address or hostname and a port number.",
      "type": "object",
      "properties": {
        "hostname": {
          "type": "string",
          "description": "Required. Hostname for the connection."
        },
        "port": {
          "type": "integer",
          "format": "int32",
          "description": "Optional. Port for the connection."
        }
      },
      "id": "HostAddress"
    },
    "BinaryLogPosition": {
      "description": "Use Binary log position based replication.",
      "properties": {},
      "id": "BinaryLogPosition",
      "type": "object"
    },
    "SqlServerProfile": {
      "properties": {
        "username": {
          "description": "Required. Username for the SQLServer connection.",
          "type": "string"
        },
        "hostname": {
          "type": "string",
          "description": "Required. Hostname for the SQLServer connection."
        },
        "port": {
          "format": "int32",
          "type": "integer",
          "description": "Port for the SQLServer connection, default value is 1433."
        },
        "secretManagerStoredPassword": {
          "type": "string",
          "description": "Optional. A reference to a Secret Manager resource name storing the SQLServer connection password. Mutually exclusive with the `password` field."
        },
        "sslConfig": {
          "$ref": "SqlServerSslConfig",
          "description": "Optional. SSL configuration for the SQLServer connection."
        },
        "password": {
          "description": "Optional. Password for the SQLServer connection. Mutually exclusive with the `secret_manager_stored_password` field.",
          "type": "string"
        },
        "database": {
          "description": "Required. Database for the SQLServer connection.",
          "type": "string"
        }
      },
      "id": "SqlServerProfile",
      "type": "object",
      "description": "Profile for connecting to a SQLServer source."
    },
    "DiscoverConnectionProfileResponse": {
      "properties": {
        "mysqlRdbms": {
          "description": "Enriched MySQL RDBMS object.",
          "$ref": "MysqlRdbms"
        },
        "sqlServerRdbms": {
          "description": "Enriched SQLServer RDBMS object.",
          "$ref": "SqlServerRdbms"
        },
        "oracleRdbms": {
          "$ref": "OracleRdbms",
          "description": "Enriched Oracle RDBMS object."
        },
        "salesforceOrg": {
          "$ref": "SalesforceOrg",
          "description": "Enriched Salesforce organization."
        },
        "postgresqlRdbms": {
          "$ref": "PostgresqlRdbms",
          "description": "Enriched PostgreSQL RDBMS object."
        },
        "spannerDatabase": {
          "description": "Enriched Spanner database.",
          "$ref": "SpannerDatabase"
        },
        "sourceCatalog": {
          "description": "Enriched source catalog. This is mainly used to represent SaaS sources databases.",
          "$ref": "SourceCatalog"
        },
        "mongodbCluster": {
          "$ref": "MongodbCluster",
          "description": "Enriched MongoDB cluster."
        }
      },
      "description": "Response from a discover request.",
      "type": "object",
      "id": "DiscoverConnectionProfileResponse"
    },
    "SpannerObjectIdentifier": {
      "description": "Spanner data source object identifier.",
      "id": "SpannerObjectIdentifier",
      "properties": {
        "table": {
          "type": "string",
          "description": "Required. The table name."
        },
        "schema": {
          "description": "Optional. The schema name.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "PrivateConnectivity": {
      "id": "PrivateConnectivity",
      "properties": {
        "privateConnection": {
          "description": "Required. A reference to a private connection resource. Format: `projects/{project}/locations/{location}/privateConnections/{name}`",
          "type": "string"
        }
      },
      "description": "Private Connectivity",
      "type": "object"
    },
    "ValidationMessage": {
      "properties": {
        "metadata": {
          "description": "Additional metadata related to the result.",
          "additionalProperties": {
            "type": "string"
          },
          "type": "object"
        },
        "level": {
          "enumDescriptions": [
            "Unspecified level.",
            "Potentially cause issues with the Stream.",
            "Definitely cause issues with the Stream."
          ],
          "type": "string",
          "description": "Message severity level (warning or error).",
          "enum": [
            "LEVEL_UNSPECIFIED",
            "WARNING",
            "ERROR"
          ]
        },
        "code": {
          "description": "A custom code identifying this specific message.",
          "type": "string"
        },
        "message": {
          "description": "The result of the validation.",
          "type": "string"
        }
      },
      "description": "Represent user-facing validation result message.",
      "id": "ValidationMessage",
      "type": "object"
    },
    "Secret": {
      "id": "Secret",
      "description": "A confidential piece of information where the actual value is either directly specified in the message as a raw string or stored in GCP secret manager.",
      "type": "object",
      "properties": {
        "secretVersion": {
          "description": "Optional. A Secret Manager resource name storing the actual value of the secret. Supported formats: * projects/{project}/locations/{location}/secrets/{secret}/versions/{version} * projects/{project}/secrets/{secret}/versions/{version}",
          "type": "string"
        },
        "rawValue": {
          "type": "string",
          "description": "Optional. Input only. The actual raw value of the secret as plain text."
        }
      }
    },
    "PostgresqlColumn": {
      "id": "PostgresqlColumn",
      "description": "PostgreSQL Column.",
      "type": "object",
      "properties": {
        "nullable": {
          "type": "boolean",
          "description": "Whether or not the column can accept a null value."
        },
        "scale": {
          "type": "integer",
          "format": "int32",
          "description": "Column scale."
        },
        "length": {
          "type": "integer",
          "description": "Column length.",
          "format": "int32"
        },
        "precision": {
          "type": "integer",
          "description": "Column precision.",
          "format": "int32"
        },
        "dataType": {
          "type": "string",
          "description": "The PostgreSQL data type."
        },
        "primaryKey": {
          "description": "Whether or not the column represents a primary key.",
          "type": "boolean"
        },
        "column": {
          "type": "string",
          "description": "The column name."
        },
        "ordinalPosition": {
          "type": "integer",
          "format": "int32",
          "description": "The ordinal position of the column in the table."
        }
      }
    },
    "RetryInfo": {
      "description": "Describes when the clients can retry a failed request. Clients could ignore the recommendation here or retry when this information is missing from error responses. It's always recommended that clients should use exponential backoff when retrying. Clients should wait until `retry_delay` amount of time has passed since receiving the error response before retrying. If retrying requests also fail, clients should use an exponential backoff scheme to gradually increase the delay between retries based on `retry_delay`, until either a maximum number of retries have been reached or a maximum retry delay cap has been reached.",
      "properties": {
        "retryDelay": {
          "description": "Clients should wait at least this long between retrying the same request.",
          "format": "google-duration",
          "type": "string"
        }
      },
      "id": "RetryInfo",
      "type": "object"
    },
    "WorkdayProfile": {
      "type": "object",
      "description": "Profile for connecting to a Workday source.",
      "id": "WorkdayProfile",
      "properties": {
        "oauthRefreshTokenCredentials": {
          "description": "Required. Credentials for authenticating with the Workday API. OAuth Refresh Token credentials for authenticating with the Workday API.",
          "$ref": "OauthRefreshTokenCredentials"
        },
        "host": {
          "type": "string",
          "description": "Required. Host for the Workday connection. Must be a valid hostname (e.g., `wd3-impl-services1.workday.com`)."
        },
        "tenant": {
          "type": "string",
          "description": "Required. Tenant for the Workday connection (e.g., `google12`)."
        }
      }
    },
    "SalesforceObject": {
      "type": "object",
      "id": "SalesforceObject",
      "description": "Salesforce object.",
      "properties": {
        "objectName": {
          "type": "string",
          "description": "The object name."
        },
        "fields": {
          "type": "array",
          "items": {
            "$ref": "SalesforceField"
          },
          "description": "Salesforce fields. When unspecified as part of include objects, includes everything, when unspecified as part of exclude objects, excludes nothing."
        }
      }
    },
    "PostgresqlTable": {
      "id": "PostgresqlTable",
      "properties": {
        "table": {
          "type": "string",
          "description": "The table name."
        },
        "postgresqlColumns": {
          "description": "PostgreSQL columns in the schema. When unspecified as part of include/exclude objects, includes/excludes everything.",
          "items": {
            "$ref": "PostgresqlColumn"
          },
          "type": "array"
        }
      },
      "type": "object",
      "description": "PostgreSQL table."
    },
    "SpannerSourceConfig": {
      "type": "object",
      "id": "SpannerSourceConfig",
      "properties": {
        "includeObjects": {
          "description": "Optional. The Spanner objects to retrieve from the data source. If some objects are both included and excluded, an error will be thrown.",
          "$ref": "SpannerDatabase"
        },
        "excludeObjects": {
          "description": "Optional. The Spanner objects to avoid retrieving. If some objects are both included and excluded, an error will be thrown.",
          "$ref": "SpannerDatabase"
        },
        "changeStreamName": {
          "type": "string",
          "description": "Required. Immutable. The change stream name to use for the stream."
        },
        "fgacRole": {
          "description": "Optional. The FGAC role to use for the stream.",
          "type": "string"
        },
        "maxConcurrentCdcTasks": {
          "description": "Optional. Maximum number of concurrent CDC tasks.",
          "type": "integer",
          "format": "int32"
        },
        "maxConcurrentBackfillTasks": {
          "type": "integer",
          "format": "int32",
          "description": "Optional. Maximum number of concurrent backfill tasks."
        },
        "backfillDataBoostEnabled": {
          "description": "Optional. Whether to use Data Boost for Spanner backfills. Defaults to false if not set.",
          "type": "boolean"
        },
        "spannerRpcPriority": {
          "type": "string",
          "enumDescriptions": [
            "Unspecified RPC priority.",
            "Low RPC priority.",
            "Medium RPC priority.",
            "High RPC priority."
          ],
          "description": "Optional. The RPC priority to use for the stream.",
          "enum": [
            "SPANNER_RPC_PRIORITY_UNSPECIFIED",
            "LOW",
            "MEDIUM",
            "HIGH"
          ]
        }
      },
      "description": "Configuration for syncing data from a Spanner source."
    },
    "ObjectFilter": {
      "id": "ObjectFilter",
      "description": "Object filter to apply the rules to.",
      "properties": {
        "sourceObjectIdentifier": {
          "$ref": "SourceObjectIdentifier",
          "description": "Specific source object identifier."
        }
      },
      "type": "object"
    },
    "StandardConnectionFormat": {
      "id": "StandardConnectionFormat",
      "type": "object",
      "description": "Standard connection format.",
      "properties": {
        "directConnection": {
          "type": "boolean",
          "description": "Optional. Deprecated: Use the `additional_options` map to specify the `directConnection` parameter instead. For example: `additional_options = {\"directConnection\": \"true\"}`. Specifies whether the client connects directly to the host[:port] in the connection URI.",
          "deprecated": true
        }
      }
    },
    "MongodbField": {
      "description": "MongoDB Field.",
      "properties": {
        "field": {
          "description": "The field name.",
          "type": "string"
        }
      },
      "id": "MongodbField",
      "type": "object"
    },
    "StopBackfillJobRequest": {
      "properties": {},
      "id": "StopBackfillJobRequest",
      "type": "object",
      "description": "Request for manually stopping a running backfill job for a specific stream object."
    },
    "SingleTargetDataset": {
      "type": "object",
      "properties": {
        "datasetId": {
          "description": "The dataset ID of the target dataset. DatasetIds allowed characters: https://cloud.google.com/bigquery/docs/reference/rest/v2/datasets#datasetreference.",
          "type": "string"
        }
      },
      "description": "A single target dataset to which all data will be streamed.",
      "id": "SingleTargetDataset"
    },
    "ServiceNowSourceConfig": {
      "description": "Configuration for syncing data from a ServiceNow source.",
      "id": "ServiceNowSourceConfig",
      "properties": {
        "pollingInterval": {
          "type": "string",
          "format": "google-duration",
          "description": "Required. Incremental sync polling interval for all objects. If not set, a default value of `5 minutes` is used. The duration must be from `5 minutes` to `24 hours`, inclusive."
        },
        "includeObjects": {
          "$ref": "SourceCatalog",
          "description": "Optional. The objects to retrieve from the source."
        },
        "excludeObjects": {
          "description": "Optional. The objects to exclude from the stream.",
          "$ref": "SourceCatalog"
        }
      },
      "type": "object"
    },
    "MysqlSourceConfig": {
      "properties": {
        "maxConcurrentBackfillTasks": {
          "description": "Maximum number of concurrent backfill tasks. The number should be non negative. If not set (or set to 0), the system's default value will be used.",
          "format": "int32",
          "type": "integer"
        },
        "gtid": {
          "$ref": "Gtid",
          "description": "Use GTID based replication."
        },
        "maxConcurrentCdcTasks": {
          "type": "integer",
          "format": "int32",
          "description": "Maximum number of concurrent CDC tasks. The number should be non negative. If not set (or set to 0), the system's default value will be used."
        },
        "includeObjects": {
          "description": "The MySQL objects to retrieve from the source.",
          "$ref": "MysqlRdbms"
        },
        "excludeObjects": {
          "$ref": "MysqlRdbms",
          "description": "The MySQL objects to exclude from the stream."
        },
        "binaryLogPosition": {
          "description": "Use Binary log position based replication.",
          "$ref": "BinaryLogPosition"
        }
      },
      "id": "MysqlSourceConfig",
      "description": "Configuration for syncing data from a MySQL source.",
      "type": "object"
    },
    "MongodbProfile": {
      "type": "object",
      "properties": {
        "password": {
          "type": "string",
          "description": "Optional. Password for the MongoDB connection. Mutually exclusive with the `secret_manager_stored_password` field."
        },
        "standardConnectionFormat": {
          "description": "Standard connection format.",
          "$ref": "StandardConnectionFormat"
        },
        "replicaSet": {
          "description": "Optional. Name of the replica set. Only needed for self hosted replica set type MongoDB cluster. For SRV connection format, this field must be empty. For Standard connection format, this field must be specified.",
          "type": "string"
        },
        "hostAddresses": {
          "items": {
            "$ref": "HostAddress"
          },
          "type": "array",
          "description": "Required. List of host addresses for a MongoDB cluster. For SRV connection format, this list must contain exactly one DNS host without a port. For Standard connection format, this list must contain all the required hosts in the cluster with their respective ports."
        },
        "sslConfig": {
          "description": "Optional. SSL configuration for the MongoDB connection.",
          "$ref": "MongodbSslConfig"
        },
        "additionalOptions": {
          "description": "Optional. Specifies additional options for the MongoDB connection. The options should be sent as key-value pairs, for example: `additional_options = {\"serverSelectionTimeoutMS\": \"10000\", \"directConnection\": \"true\"}`. Keys are case-sensitive and should match the official MongoDB connection string options: https://www.mongodb.com/docs/manual/reference/connection-string-options/ The server will not modify the values provided by the user.",
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "secretManagerStoredPassword": {
          "description": "Optional. A reference to a Secret Manager resource name storing the SQLServer connection password. Mutually exclusive with the `password` field.",
          "type": "string"
        },
        "srvConnectionFormat": {
          "$ref": "SrvConnectionFormat",
          "description": "Srv connection format."
        },
        "username": {
          "type": "string",
          "description": "Required. Username for the MongoDB connection."
        }
      },
      "id": "MongodbProfile",
      "description": "Profile for connecting to a MongoDB source."
    },
    "ConnectionProfile": {
      "properties": {
        "serviceNowProfile": {
          "description": "Profile for connecting to a ServiceNow source.",
          "$ref": "ServiceNowProfile"
        },
        "name": {
          "description": "Output only. Identifier. The resource's name.",
          "type": "string",
          "readOnly": true
        },
        "satisfiesPzs": {
          "type": "boolean",
          "readOnly": true,
          "description": "Output only. Reserved for future use."
        },
        "satisfiesPzi": {
          "type": "boolean",
          "readOnly": true,
          "description": "Output only. Reserved for future use."
        },
        "oracleProfile": {
          "$ref": "OracleProfile",
          "description": "Profile for connecting to an Oracle source."
        },
        "updateTime": {
          "format": "google-datetime",
          "description": "Output only. The update time of the resource.",
          "readOnly": true,
          "type": "string"
        },
        "mongodbProfile": {
          "$ref": "MongodbProfile",
          "description": "Profile for connecting to a MongoDB source."
        },
        "salesforceMarketingCloudProfile": {
          "$ref": "SalesforceMarketingCloudProfile",
          "description": "Profile for connecting to a Salesforce Marketing Cloud source."
        },
        "spannerProfile": {
          "description": "Profile for connecting to a Spanner source.",
          "$ref": "SpannerProfile"
        },
        "bigqueryProfile": {
          "$ref": "BigQueryProfile",
          "description": "Profile for connecting to a BigQuery destination."
        },
        "dataverseProfile": {
          "description": "Profile for connecting to a Dataverse source.",
          "$ref": "DataverseProfile"
        },
        "privateConnectivity": {
          "$ref": "PrivateConnectivity",
          "description": "Private connectivity."
        },
        "labels": {
          "type": "object",
          "description": "Labels.",
          "additionalProperties": {
            "type": "string"
          }
        },
        "salesforceProfile": {
          "$ref": "SalesforceProfile",
          "description": "Profile for connecting to a Salesforce source."
        },
        "workdayProfile": {
          "description": "Optional. Profile for connecting to a Workday source.",
          "$ref": "WorkdayProfile"
        },
        "displayName": {
          "description": "Required. Display name.",
          "type": "string"
        },
        "staticServiceIpConnectivity": {
          "$ref": "StaticServiceIpConnectivity",
          "description": "Static Service IP connectivity."
        },
        "forwardSshConnectivity": {
          "$ref": "ForwardSshTunnelConnectivity",
          "description": "Forward SSH tunnel connectivity."
        },
        "gcsProfile": {
          "$ref": "GcsProfile",
          "description": "Profile for connecting to a Cloud Storage destination."
        },
        "sqlServerProfile": {
          "$ref": "SqlServerProfile",
          "description": "Profile for connecting to a SQLServer source."
        },
        "mysqlProfile": {
          "$ref": "MysqlProfile",
          "description": "Profile for connecting to a MySQL source."
        },
        "createTime": {
          "readOnly": true,
          "type": "string",
          "description": "Output only. The create time of the resource.",
          "format": "google-datetime"
        },
        "postgresqlProfile": {
          "description": "Profile for connecting to a PostgreSQL source.",
          "$ref": "PostgresqlProfile"
        }
      },
      "type": "object",
      "description": "A set of reusable connection configurations to be used as a source or destination for a stream.",
      "id": "ConnectionProfile"
    },
    "Empty": {
      "description": "A generic empty message that you can re-use to avoid defining duplicated empty messages in your APIs. A typical example is to use it as the request or the response type of an API method. For instance: service Foo { rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty); }",
      "properties": {},
      "type": "object",
      "id": "Empty"
    },
    "BigQueryProfile": {
      "description": "Profile for connecting to a BigQuery destination.",
      "id": "BigQueryProfile",
      "type": "object",
      "properties": {}
    },
    "ListRoutesResponse": {
      "description": "Route list response.",
      "properties": {
        "nextPageToken": {
          "description": "A token, which can be sent as `page_token` to retrieve the next page. If this field is omitted, there are no subsequent pages.",
          "type": "string"
        },
        "routes": {
          "description": "List of Routes.",
          "type": "array",
          "items": {
            "$ref": "Route"
          }
        },
        "unreachable": {
          "description": "Locations that could not be reached.",
          "items": {
            "type": "string"
          },
          "type": "array"
        }
      },
      "id": "ListRoutesResponse",
      "type": "object"
    },
    "StartBackfillJobRequest": {
      "type": "object",
      "description": "Request for manually initiating a backfill job for a specific stream object.",
      "id": "StartBackfillJobRequest",
      "properties": {
        "eventFilter": {
          "description": "Optional. Optional event filter. If not set, or empty, the backfill will be performed on the entire object. This is currently used for partial backfill and only supported for SQL sources.",
          "$ref": "EventFilter"
        }
      }
    },
    "CustomizationRule": {
      "id": "CustomizationRule",
      "type": "object",
      "description": "A customization rule to apply to a set of objects.",
      "properties": {
        "bigqueryClustering": {
          "$ref": "BigQueryClustering",
          "description": "BigQuery clustering rule."
        },
        "bigqueryPartitioning": {
          "description": "BigQuery partitioning rule.",
          "$ref": "BigQueryPartitioning"
        }
      }
    },
    "EncryptionNotEnforced": {
      "type": "object",
      "id": "EncryptionNotEnforced",
      "description": "Message to represent the option where encryption is not enforced. An empty message right now to allow future extensibility.",
      "properties": {}
    },
    "OauthClientCredentials": {
      "type": "object",
      "id": "OauthClientCredentials",
      "description": "OAuth Client Credentials.",
      "properties": {
        "clientId": {
          "description": "Required. Client ID for OAuth Client Credentials.",
          "type": "string"
        },
        "clientSecret": {
          "$ref": "Secret",
          "description": "Required. Client secret for OAuth Client Credentials."
        }
      }
    },
    "BackfillAllStrategy": {
      "properties": {
        "saasExcludedObjects": {
          "description": "Source catalog data source objects to avoid backfilling. This is mainly used to represent SaaS applications objects.",
          "$ref": "SourceCatalog"
        },
        "spannerExcludedObjects": {
          "description": "Spanner data source objects to avoid backfilling.",
          "$ref": "SpannerDatabase"
        },
        "mongodbExcludedObjects": {
          "$ref": "MongodbCluster",
          "description": "MongoDB data source objects to avoid backfilling"
        },
        "sqlServerExcludedObjects": {
          "description": "SQLServer data source objects to avoid backfilling",
          "$ref": "SqlServerRdbms"
        },
        "mysqlExcludedObjects": {
          "$ref": "MysqlRdbms",
          "description": "MySQL data source objects to avoid backfilling."
        },
        "oracleExcludedObjects": {
          "$ref": "OracleRdbms",
          "description": "Oracle data source objects to avoid backfilling."
        },
        "postgresqlExcludedObjects": {
          "$ref": "PostgresqlRdbms",
          "description": "PostgreSQL data source objects to avoid backfilling."
        },
        "salesforceExcludedObjects": {
          "$ref": "SalesforceOrg",
          "description": "Salesforce data source objects to avoid backfilling"
        }
      },
      "id": "BackfillAllStrategy",
      "type": "object",
      "description": "Backfill strategy to automatically backfill the Stream's objects. Specific objects can be excluded."
    },
    "Merge": {
      "type": "object",
      "properties": {},
      "description": "Merge mode defines that all changes to a table will be merged at the destination table.",
      "id": "Merge"
    },
    "BigQueryDestinationConfig": {
      "type": "object",
      "id": "BigQueryDestinationConfig",
      "description": "BigQuery destination configuration",
      "properties": {
        "sourceHierarchyDatasets": {
          "description": "Source hierarchy datasets.",
          "$ref": "SourceHierarchyDatasets"
        },
        "blmtConfig": {
          "$ref": "BlmtConfig",
          "description": "Optional. Big Lake Managed Tables (BLMT) configuration."
        },
        "merge": {
          "description": "The standard mode",
          "$ref": "Merge"
        },
        "singleTargetDataset": {
          "description": "Single destination dataset.",
          "$ref": "SingleTargetDataset"
        },
        "appendOnly": {
          "description": "Append only mode",
          "$ref": "AppendOnly"
        },
        "dataFreshness": {
          "description": "The guaranteed data freshness (in seconds) when querying tables created by the stream. Editing this field will only affect new tables created in the future, but existing tables will not be impacted. Lower values mean that queries will return fresher data, but may result in higher cost.",
          "format": "google-duration",
          "type": "string"
        }
      }
    },
    "ServiceNowProfile": {
      "id": "ServiceNowProfile",
      "description": "Profile for connecting to a ServiceNow source.",
      "properties": {
        "userPasswordCredentials": {
          "$ref": "UserPasswordCredentials",
          "description": "User-password authentication."
        },
        "oauthClientCredentials": {
          "description": "Credentials for authenticating with the ServiceNow API.",
          "$ref": "OauthClientCredentials"
        },
        "instance": {
          "description": "Required. The instance of the ServiceNow account. This is the `` part of the URL `https://.service-now.com`.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "SpannerSchema": {
      "properties": {
        "schema": {
          "type": "string",
          "description": "Required. The schema name."
        },
        "tables": {
          "type": "array",
          "items": {
            "$ref": "SpannerTable"
          },
          "description": "Optional. Spanner tables in the schema."
        }
      },
      "description": "Spanner schema.",
      "id": "SpannerSchema",
      "type": "object"
    },
    "Link": {
      "description": "Describes a URL link.",
      "properties": {
        "description": {
          "type": "string",
          "description": "Describes what the link offers."
        },
        "url": {
          "description": "The URL of the link.",
          "type": "string"
        }
      },
      "id": "Link",
      "type": "object"
    },
    "MysqlSslConfig": {
      "id": "MysqlSslConfig",
      "type": "object",
      "description": "MySQL SSL configuration information.",
      "properties": {
        "caCertificate": {
          "description": "Input only. PEM-encoded certificate of the CA that signed the source database server's certificate.",
          "type": "string"
        },
        "clientKey": {
          "type": "string",
          "description": "Optional. Input only. PEM-encoded private key associated with the Client Certificate. If this field is used then the 'client_certificate' and the 'ca_certificate' fields are mandatory."
        },
        "clientCertificate": {
          "description": "Optional. Input only. PEM-encoded certificate that will be used by the replica to authenticate against the source database server. If this field is used then the 'client_key' and the 'ca_certificate' fields are mandatory.",
          "type": "string"
        },
        "clientCertificateSet": {
          "description": "Output only. Indicates whether the client_certificate field is set.",
          "readOnly": true,
          "type": "boolean"
        },
        "clientKeySet": {
          "description": "Output only. Indicates whether the client_key field is set.",
          "type": "boolean",
          "readOnly": true
        },
        "caCertificateSet": {
          "readOnly": true,
          "type": "boolean",
          "description": "Output only. Indicates whether the ca_certificate field is set."
        }
      }
    },
    "PostgresqlObjectIdentifier": {
      "description": "PostgreSQL data source object identifier.",
      "properties": {
        "schema": {
          "description": "Required. The schema name.",
          "type": "string"
        },
        "table": {
          "description": "Required. The table name.",
          "type": "string"
        }
      },
      "id": "PostgresqlObjectIdentifier",
      "type": "object"
    },
    "SalesforceProfile": {
      "id": "SalesforceProfile",
      "description": "Profile for connecting to a Salesforce source.",
      "properties": {
        "userCredentials": {
          "deprecated": true,
          "description": "Deprecated: Salesforce is retiring Username-Password authentication. Use `oauth2_client_credentials` instead.",
          "$ref": "UserCredentials"
        },
        "domain": {
          "description": "Required. Domain endpoint for the Salesforce connection.",
          "type": "string"
        },
        "oauth2ClientCredentials": {
          "$ref": "Oauth2ClientCredentials",
          "description": "Connected app authentication."
        }
      },
      "type": "object"
    },
    "OracleColumn": {
      "description": "Oracle Column.",
      "type": "object",
      "properties": {
        "dataType": {
          "type": "string",
          "description": "The Oracle data type."
        },
        "column": {
          "type": "string",
          "description": "The column name."
        },
        "nullable": {
          "description": "Whether or not the column can accept a null value.",
          "type": "boolean"
        },
        "ordinalPosition": {
          "format": "int32",
          "type": "integer",
          "description": "The ordinal position of the column in the table."
        },
        "primaryKey": {
          "type": "boolean",
          "description": "Whether or not the column represents a primary key."
        },
        "length": {
          "format": "int32",
          "type": "integer",
          "description": "Column length."
        },
        "encoding": {
          "description": "Column encoding.",
          "type": "string"
        },
        "precision": {
          "format": "int32",
          "type": "integer",
          "description": "Column precision."
        },
        "scale": {
          "format": "int32",
          "description": "Column scale.",
          "type": "integer"
        }
      },
      "id": "OracleColumn"
    },
    "VpcPeeringConfig": {
      "properties": {
        "subnet": {
          "type": "string",
          "description": "Required. A free subnet for peering. (CIDR of /29)"
        },
        "vpc": {
          "type": "string",
          "description": "Required. Fully qualified name of the VPC that Datastream will peer to. Format: `projects/{project}/global/{networks}/{name}`"
        }
      },
      "id": "VpcPeeringConfig",
      "type": "object",
      "description": "The VPC Peering configuration is used to create VPC peering between Datastream and the consumer's VPC."
    },
    "SqlServerRdbms": {
      "properties": {
        "schemas": {
          "type": "array",
          "description": "SQLServer schemas in the database server.",
          "items": {
            "$ref": "SqlServerSchema"
          }
        }
      },
      "description": "SQLServer database structure.",
      "type": "object",
      "id": "SqlServerRdbms"
    },
    "PostgresqlSchema": {
      "description": "PostgreSQL schema.",
      "id": "PostgresqlSchema",
      "properties": {
        "postgresqlTables": {
          "description": "Tables in the schema.",
          "type": "array",
          "items": {
            "$ref": "PostgresqlTable"
          }
        },
        "schema": {
          "description": "The schema name.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "SpannerDatabase": {
      "type": "object",
      "properties": {
        "schemas": {
          "description": "Optional. Spanner schemas in the database.",
          "type": "array",
          "items": {
            "$ref": "SpannerSchema"
          }
        }
      },
      "description": "Spanner database structure.",
      "id": "SpannerDatabase"
    },
    "Help": {
      "type": "object",
      "description": "Provides links to documentation or for performing an out of band action. For example, if a quota check failed with an error indicating the calling project hasn't enabled the accessed service, this can contain a URL pointing directly to the right place in the developer console to flip the bit.",
      "id": "Help",
      "properties": {
        "links": {
          "description": "URL(s) pointing to additional information on handling the current error.",
          "type": "array",
          "items": {
            "$ref": "Link"
          }
        }
      }
    },
    "ListLocationsResponse": {
      "type": "object",
      "id": "ListLocationsResponse",
      "properties": {
        "locations": {
          "description": "A list of locations that matches the specified filter in the request.",
          "items": {
            "$ref": "Location"
          },
          "type": "array"
        },
        "nextPageToken": {
          "type": "string",
          "description": "The standard List next-page token."
        }
      },
      "description": "The response message for Locations.ListLocations."
    },
    "MongodbChangeStreamPosition": {
      "type": "object",
      "id": "MongodbChangeStreamPosition",
      "description": "MongoDB change stream position",
      "properties": {
        "startTime": {
          "description": "Required. The timestamp to start change stream from.",
          "format": "google-datetime",
          "type": "string"
        }
      }
    },
    "DebugInfo": {
      "properties": {
        "stackEntries": {
          "items": {
            "type": "string"
          },
          "description": "The stack trace entries indicating where the error occurred.",
          "type": "array"
        },
        "detail": {
          "type": "string",
          "description": "Additional debugging information provided by the server."
        }
      },
      "description": "Describes additional debugging info.",
      "type": "object",
      "id": "DebugInfo"
    },
    "LookupStreamObjectRequest": {
      "id": "LookupStreamObjectRequest",
      "description": "Request for looking up a specific stream object by its source object identifier.",
      "properties": {
        "sourceObjectIdentifier": {
          "description": "Required. The source object identifier which maps to the stream object.",
          "$ref": "SourceObjectIdentifier"
        }
      },
      "type": "object"
    },
    "FetchStaticIpsResponse": {
      "type": "object",
      "properties": {
        "staticIps": {
          "description": "list of static ips by account",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "nextPageToken": {
          "type": "string",
          "description": "A token that can be sent as `page_token` to retrieve the next page. If this field is omitted, there are no subsequent pages."
        }
      },
      "description": "Response message for a 'FetchStaticIps' response.",
      "id": "FetchStaticIpsResponse"
    },
    "WorkdaySourceConfig": {
      "type": "object",
      "properties": {
        "includeObjects": {
          "description": "Optional. The objects to retrieve from the source.",
          "$ref": "SourceCatalog"
        },
        "excludeObjects": {
          "$ref": "SourceCatalog",
          "description": "Optional. The objects to exclude from the stream."
        },
        "pollingInterval": {
          "format": "google-duration",
          "description": "Required. Incremental sync polling interval for all objects. If not set, a default value of `5 minutes` is used. The duration must be from `5 minutes` to `24 hours`, inclusive.",
          "type": "string"
        }
      },
      "description": "Configuration for syncing data from a Workday source.",
      "id": "WorkdaySourceConfig"
    },
    "Error": {
      "type": "object",
      "description": "Represent a user-facing Error.",
      "id": "Error",
      "properties": {
        "details": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Additional information about the error."
        },
        "errorUuid": {
          "description": "A unique identifier for this specific error, allowing it to be traced throughout the system in logs and API responses.",
          "type": "string"
        },
        "message": {
          "description": "A message containing more information about the error that occurred.",
          "type": "string"
        },
        "errorTime": {
          "type": "string",
          "format": "google-datetime",
          "description": "The time when the error occurred."
        },
        "reason": {
          "type": "string",
          "description": "A title that explains the reason for the error."
        }
      }
    }
  },
  "fullyEncodeReservedExpansion": true,
  "protocol": "rest",
  "description": "",
  "revision": "20260902",
  "version": "v1",
  "parameters": {
    "key": {
      "type": "string",
      "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.",
      "location": "query"
    },
    "uploadType": {
      "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").",
      "type": "string",
      "location": "query"
    },
    "alt": {
      "type": "string",
      "location": "query",
      "enum": [
        "json",
        "media",
        "proto"
      ],
      "default": "json",
      "description": "Data format for response.",
      "enumDescriptions": [
        "Responses with Content-Type of application/json",
        "Media download with context-dependent Content-Type",
        "Responses with Content-Type of application/x-protobuf"
      ]
    },
    "callback": {
      "location": "query",
      "description": "JSONP",
      "type": "string"
    },
    "oauth_token": {
      "description": "OAuth 2.0 token for the current user.",
      "type": "string",
      "location": "query"
    },
    "quotaUser": {
      "description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.",
      "type": "string",
      "location": "query"
    },
    "prettyPrint": {
      "location": "query",
      "description": "Returns response with indentations and line breaks.",
      "default": "true",
      "type": "boolean"
    },
    "upload_protocol": {
      "type": "string",
      "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").",
      "location": "query"
    },
    "fields": {
      "location": "query",
      "type": "string",
      "description": "Selector specifying which fields to include in a partial response."
    },
    "access_token": {
      "location": "query",
      "description": "OAuth access token.",
      "type": "string"
    },
    "$.xgafv": {
      "description": "V1 error format.",
      "enumDescriptions": [
        "v1 error format",
        "v2 error format"
      ],
      "type": "string",
      "location": "query",
      "enum": [
        "1",
        "2"
      ]
    }
  },
  "canonicalName": "Datastream",
  "name": "datastream",
  "rootUrl": "https://datastream.googleapis.com/",
  "kind": "discovery#restDescription",
  "endpoints": [
    {
      "description": "Regional Endpoint",
      "endpointUrl": "https://datastream.africa-south1.rep.googleapis.com/",
      "location": "africa-south1"
    },
    {
      "location": "asia-east1",
      "endpointUrl": "https://datastream.asia-east1.rep.googleapis.com/",
      "description": "Regional Endpoint"
    },
    {
      "location": "asia-east2",
      "description": "Regional Endpoint",
      "endpointUrl": "https://datastream.asia-east2.rep.googleapis.com/"
    },
    {
      "endpointUrl": "https://datastream.asia-northeast1.rep.googleapis.com/",
      "description": "Regional Endpoint",
      "location": "asia-northeast1"
    },
    {
      "description": "Regional Endpoint",
      "location": "asia-northeast2",
      "endpointUrl": "https://datastream.asia-northeast2.rep.googleapis.com/"
    },
    {
      "location": "asia-northeast3",
      "description": "Regional Endpoint",
      "endpointUrl": "https://datastream.asia-northeast3.rep.googleapis.com/"
    },
    {
      "endpointUrl": "https://datastream.asia-south1.rep.googleapis.com/",
      "description": "Regional Endpoint",
      "location": "asia-south1"
    },
    {
      "location": "asia-south2",
      "endpointUrl": "https://datastream.asia-south2.rep.googleapis.com/",
      "description": "Regional Endpoint"
    },
    {
      "location": "asia-southeast1",
      "description": "Regional Endpoint",
      "endpointUrl": "https://datastream.asia-southeast1.rep.googleapis.com/"
    },
    {
      "location": "asia-southeast2",
      "endpointUrl": "https://datastream.asia-southeast2.rep.googleapis.com/",
      "description": "Regional Endpoint"
    },
    {
      "endpointUrl": "https://datastream.asia-southeast3.rep.googleapis.com/",
      "description": "Regional Endpoint",
      "location": "asia-southeast3"
    },
    {
      "description": "Regional Endpoint",
      "endpointUrl": "https://datastream.australia-southeast1.rep.googleapis.com/",
      "location": "australia-southeast1"
    },
    {
      "description": "Regional Endpoint",
      "endpointUrl": "https://datastream.australia-southeast2.rep.googleapis.com/",
      "location": "australia-southeast2"
    },
    {
      "description": "Regional Endpoint",
      "location": "europe-central2",
      "endpointUrl": "https://datastream.europe-central2.rep.googleapis.com/"
    },
    {
      "description": "Regional Endpoint",
      "location": "europe-north1",
      "endpointUrl": "https://datastream.europe-north1.rep.googleapis.com/"
    },
    {
      "location": "europe-north2",
      "description": "Regional Endpoint",
      "endpointUrl": "https://datastream.europe-north2.rep.googleapis.com/"
    },
    {
      "description": "Regional Endpoint",
      "endpointUrl": "https://datastream.europe-southwest1.rep.googleapis.com/",
      "location": "europe-southwest1"
    },
    {
      "description": "Regional Endpoint",
      "endpointUrl": "https://datastream.europe-west1.rep.googleapis.com/",
      "location": "europe-west1"
    },
    {
      "description": "Regional Endpoint",
      "endpointUrl": "https://datastream.europe-west10.rep.googleapis.com/",
      "location": "europe-west10"
    },
    {
      "description": "Regional Endpoint",
      "endpointUrl": "https://datastream.europe-west12.rep.googleapis.com/",
      "location": "europe-west12"
    },
    {
      "description": "Regional Endpoint",
      "location": "europe-west15",
      "endpointUrl": "https://datastream.europe-west15.rep.googleapis.com/"
    },
    {
      "location": "europe-west2",
      "endpointUrl": "https://datastream.europe-west2.rep.googleapis.com/",
      "description": "Regional Endpoint"
    },
    {
      "location": "europe-west3",
      "endpointUrl": "https://datastream.europe-west3.rep.googleapis.com/",
      "description": "Regional Endpoint"
    },
    {
      "endpointUrl": "https://datastream.europe-west4.rep.googleapis.com/",
      "description": "Regional Endpoint",
      "location": "europe-west4"
    },
    {
      "location": "europe-west6",
      "description": "Regional Endpoint",
      "endpointUrl": "https://datastream.europe-west6.rep.googleapis.com/"
    },
    {
      "description": "Regional Endpoint",
      "endpointUrl": "https://datastream.europe-west8.rep.googleapis.com/",
      "location": "europe-west8"
    },
    {
      "endpointUrl": "https://datastream.europe-west9.rep.googleapis.com/",
      "description": "Regional Endpoint",
      "location": "europe-west9"
    },
    {
      "endpointUrl": "https://datastream.me-central1.rep.googleapis.com/",
      "location": "me-central1",
      "description": "Regional Endpoint"
    },
    {
      "description": "Regional Endpoint",
      "location": "me-central2",
      "endpointUrl": "https://datastream.me-central2.rep.googleapis.com/"
    },
    {
      "endpointUrl": "https://datastream.me-west1.rep.googleapis.com/",
      "description": "Regional Endpoint",
      "location": "me-west1"
    },
    {
      "location": "northamerica-northeast1",
      "endpointUrl": "https://datastream.northamerica-northeast1.rep.googleapis.com/",
      "description": "Regional Endpoint"
    },
    {
      "location": "northamerica-northeast2",
      "endpointUrl": "https://datastream.northamerica-northeast2.rep.googleapis.com/",
      "description": "Regional Endpoint"
    },
    {
      "location": "northamerica-south1",
      "description": "Regional Endpoint",
      "endpointUrl": "https://datastream.northamerica-south1.rep.googleapis.com/"
    },
    {
      "location": "southamerica-east1",
      "description": "Regional Endpoint",
      "endpointUrl": "https://datastream.southamerica-east1.rep.googleapis.com/"
    },
    {
      "endpointUrl": "https://datastream.southamerica-west1.rep.googleapis.com/",
      "location": "southamerica-west1",
      "description": "Regional Endpoint"
    },
    {
      "location": "us-central1",
      "endpointUrl": "https://datastream.us-central1.rep.googleapis.com/",
      "description": "Regional Endpoint"
    },
    {
      "location": "us-east1",
      "description": "Regional Endpoint",
      "endpointUrl": "https://datastream.us-east1.rep.googleapis.com/"
    },
    {
      "location": "us-east4",
      "description": "Regional Endpoint",
      "endpointUrl": "https://datastream.us-east4.rep.googleapis.com/"
    },
    {
      "location": "us-east5",
      "endpointUrl": "https://datastream.us-east5.rep.googleapis.com/",
      "description": "Regional Endpoint"
    },
    {
      "endpointUrl": "https://datastream.us-east7.rep.googleapis.com/",
      "location": "us-east7",
      "description": "Regional Endpoint"
    },
    {
      "description": "Regional Endpoint",
      "location": "us-south1",
      "endpointUrl": "https://datastream.us-south1.rep.googleapis.com/"
    },
    {
      "description": "Regional Endpoint",
      "location": "us-west1",
      "endpointUrl": "https://datastream.us-west1.rep.googleapis.com/"
    },
    {
      "endpointUrl": "https://datastream.us-west2.rep.googleapis.com/",
      "location": "us-west2",
      "description": "Regional Endpoint"
    },
    {
      "endpointUrl": "https://datastream.us-west3.rep.googleapis.com/",
      "location": "us-west3",
      "description": "Regional Endpoint"
    },
    {
      "location": "us-west4",
      "description": "Regional Endpoint",
      "endpointUrl": "https://datastream.us-west4.rep.googleapis.com/"
    }
  ],
  "mtlsRootUrl": "https://datastream.mtls.googleapis.com/",
  "servicePath": "",
  "title": "Datastream API",
  "icons": {
    "x32": "http://www.google.com/images/icons/product/search-32.gif",
    "x16": "http://www.google.com/images/icons/product/search-16.gif"
  },
  "id": "datastream:v1",
  "ownerName": "Google",
  "documentationLink": "https://cloud.google.com/datastream/",
  "batchPath": "batch",
  "version_module": true,
  "basePath": "",
  "baseUrl": "https://datastream.googleapis.com/",
  "resources": {
    "projects": {
      "resources": {
        "locations": {
          "methods": {
            "list": {
              "httpMethod": "GET",
              "parameters": {
                "extraLocationTypes": {
                  "description": "Optional. Do not use this field unless explicitly documented otherwise. This is primarily for internal usage.",
                  "type": "string",
                  "location": "query",
                  "repeated": true
                },
                "filter": {
                  "location": "query",
                  "description": "A filter to narrow down results to a preferred subset. The filtering language accepts strings like `\"displayName=tokyo\"`, and is documented in more detail in [AIP-160](https://google.aip.dev/160).",
                  "type": "string"
                },
                "name": {
                  "type": "string",
                  "required": true,
                  "pattern": "^projects/[^/]+$",
                  "location": "path",
                  "description": "The resource that owns the locations collection, if applicable."
                },
                "pageToken": {
                  "type": "string",
                  "description": "A page token received from the `next_page_token` field in the response. Send that page token to receive the subsequent page.",
                  "location": "query"
                },
                "pageSize": {
                  "type": "integer",
                  "format": "int32",
                  "location": "query",
                  "description": "The maximum number of results to return. If not set, the service selects a default."
                }
              },
              "id": "datastream.projects.locations.list",
              "path": "v1/{+name}/locations",
              "flatPath": "v1/projects/{projectsId}/locations",
              "parameterOrder": [
                "name"
              ],
              "description": "Lists information about the supported locations for this service. This method lists locations based on the resource scope provided in the ListLocationsRequest.name field: * **Global locations**: If `name` is empty, the method lists the public locations available to all projects. * **Project-specific locations**: If `name` follows the format `projects/{project}`, the method lists locations visible to that specific project. This includes public, private, or other project-specific locations enabled for the project. For gRPC and client library implementations, the resource name is passed as the `name` field. For direct service calls, the resource name is incorporated into the request path based on the specific service implementation and version.",
              "response": {
                "$ref": "ListLocationsResponse"
              },
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform"
              ]
            },
            "fetchStaticIps": {
              "httpMethod": "GET",
              "parameters": {
                "pageSize": {
                  "location": "query",
                  "format": "int32",
                  "description": "Optional. Maximum number of Ips to return, will likely not be specified.",
                  "type": "integer"
                },
                "name": {
                  "location": "path",
                  "type": "string",
                  "description": "Required. The resource name for the location for which static IPs should be returned. Must be in the format `projects/*/locations/*`.",
                  "required": true,
                  "pattern": "^projects/[^/]+/locations/[^/]+$"
                },
                "pageToken": {
                  "description": "Optional. A page token, received from a previous `ListStaticIps` call. will likely not be specified.",
                  "type": "string",
                  "location": "query"
                }
              },
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform"
              ],
              "path": "v1/{+name}:fetchStaticIps",
              "response": {
                "$ref": "FetchStaticIpsResponse"
              },
              "description": "The FetchStaticIps API call exposes the static IP addresses used by Datastream.",
              "parameterOrder": [
                "name"
              ],
              "flatPath": "v1/projects/{projectsId}/locations/{locationsId}:fetchStaticIps",
              "id": "datastream.projects.locations.fetchStaticIps"
            },
            "get": {
              "parameters": {
                "name": {
                  "type": "string",
                  "required": true,
                  "location": "path",
                  "pattern": "^projects/[^/]+/locations/[^/]+$",
                  "description": "Resource name for the location."
                }
              },
              "flatPath": "v1/projects/{projectsId}/locations/{locationsId}",
              "httpMethod": "GET",
              "response": {
                "$ref": "Location"
              },
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform"
              ],
              "parameterOrder": [
                "name"
              ],
              "description": "Gets information about a location.",
              "id": "datastream.projects.locations.get",
              "path": "v1/{+name}"
            }
          },
          "resources": {
            "connectionProfiles": {
              "methods": {
                "list": {
                  "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/connectionProfiles",
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "parameterOrder": [
                    "parent"
                  ],
                  "response": {
                    "$ref": "ListConnectionProfilesResponse"
                  },
                  "path": "v1/{+parent}/connectionProfiles",
                  "httpMethod": "GET",
                  "description": "Use this method to list connection profiles created in a project and location.",
                  "parameters": {
                    "orderBy": {
                      "location": "query",
                      "type": "string",
                      "description": "Optional. Order by fields for the result."
                    },
                    "pageSize": {
                      "description": "Optional. Maximum number of connection profiles to return. If unspecified, at most 50 connection profiles will be returned. The maximum value is 1000; values above 1000 will be coerced to 1000.",
                      "location": "query",
                      "format": "int32",
                      "type": "integer"
                    },
                    "parent": {
                      "location": "path",
                      "pattern": "^projects/[^/]+/locations/[^/]+$",
                      "required": true,
                      "description": "Required. The parent that owns the collection of connection profiles.",
                      "type": "string"
                    },
                    "filter": {
                      "location": "query",
                      "type": "string",
                      "description": "Optional. Filter request."
                    },
                    "pageToken": {
                      "description": "Optional. Page token received from a previous `ListConnectionProfiles` call. Provide this to retrieve the subsequent page. When paginating, all other parameters provided to `ListConnectionProfiles` must match the call that provided the page token.",
                      "type": "string",
                      "location": "query"
                    }
                  },
                  "id": "datastream.projects.locations.connectionProfiles.list"
                },
                "delete": {
                  "parameters": {
                    "requestId": {
                      "type": "string",
                      "location": "query",
                      "description": "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)."
                    },
                    "name": {
                      "description": "Required. The name of the connection profile resource to delete.",
                      "type": "string",
                      "location": "path",
                      "required": true,
                      "pattern": "^projects/[^/]+/locations/[^/]+/connectionProfiles/[^/]+$"
                    }
                  },
                  "httpMethod": "DELETE",
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "parameterOrder": [
                    "name"
                  ],
                  "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/connectionProfiles/{connectionProfilesId}",
                  "id": "datastream.projects.locations.connectionProfiles.delete",
                  "path": "v1/{+name}",
                  "response": {
                    "$ref": "Operation"
                  },
                  "description": "Use this method to delete a connection profile."
                },
                "discover": {
                  "parameters": {
                    "parent": {
                      "pattern": "^projects/[^/]+/locations/[^/]+$",
                      "required": true,
                      "type": "string",
                      "location": "path",
                      "description": "Required. The parent resource of the connection profile type. Must be in the format `projects/*/locations/*`."
                    }
                  },
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "httpMethod": "POST",
                  "request": {
                    "$ref": "DiscoverConnectionProfileRequest"
                  },
                  "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/connectionProfiles:discover",
                  "description": "Use this method to discover a connection profile. The discover API call exposes the data objects and metadata belonging to the profile. Typically, a request returns children data objects of a parent data object that's optionally supplied in the request.",
                  "parameterOrder": [
                    "parent"
                  ],
                  "path": "v1/{+parent}/connectionProfiles:discover",
                  "response": {
                    "$ref": "DiscoverConnectionProfileResponse"
                  },
                  "id": "datastream.projects.locations.connectionProfiles.discover"
                },
                "patch": {
                  "path": "v1/{+name}",
                  "response": {
                    "$ref": "Operation"
                  },
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "id": "datastream.projects.locations.connectionProfiles.patch",
                  "parameters": {
                    "validateOnly": {
                      "location": "query",
                      "description": "Optional. Only validate the connection profile, but don't update any resources. The default is false.",
                      "type": "boolean"
                    },
                    "force": {
                      "location": "query",
                      "type": "boolean",
                      "description": "Optional. Update the connection profile without validating it."
                    },
                    "updateMask": {
                      "location": "query",
                      "description": "Optional. Field mask is used to specify the fields to be overwritten in the ConnectionProfile 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.",
                      "type": "string",
                      "format": "google-fieldmask"
                    },
                    "requestId": {
                      "type": "string",
                      "description": "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).",
                      "location": "query"
                    },
                    "name": {
                      "location": "path",
                      "description": "Output only. Identifier. The resource's name.",
                      "required": true,
                      "type": "string",
                      "pattern": "^projects/[^/]+/locations/[^/]+/connectionProfiles/[^/]+$"
                    }
                  },
                  "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/connectionProfiles/{connectionProfilesId}",
                  "httpMethod": "PATCH",
                  "description": "Use this method to update the parameters of a connection profile.",
                  "parameterOrder": [
                    "name"
                  ],
                  "request": {
                    "$ref": "ConnectionProfile"
                  }
                },
                "get": {
                  "response": {
                    "$ref": "ConnectionProfile"
                  },
                  "description": "Use this method to get details about a connection profile.",
                  "id": "datastream.projects.locations.connectionProfiles.get",
                  "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/connectionProfiles/{connectionProfilesId}",
                  "parameterOrder": [
                    "name"
                  ],
                  "parameters": {
                    "name": {
                      "required": true,
                      "type": "string",
                      "location": "path",
                      "pattern": "^projects/[^/]+/locations/[^/]+/connectionProfiles/[^/]+$",
                      "description": "Required. The name of the connection profile resource to get."
                    }
                  },
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "path": "v1/{+name}",
                  "httpMethod": "GET"
                },
                "create": {
                  "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/connectionProfiles",
                  "description": "Use this method to create a connection profile in a project and location.",
                  "path": "v1/{+parent}/connectionProfiles",
                  "parameterOrder": [
                    "parent"
                  ],
                  "response": {
                    "$ref": "Operation"
                  },
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "parameters": {
                    "requestId": {
                      "type": "string",
                      "location": "query",
                      "description": "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)."
                    },
                    "connectionProfileId": {
                      "location": "query",
                      "description": "Required. The connection profile identifier.",
                      "type": "string"
                    },
                    "parent": {
                      "type": "string",
                      "description": "Required. The parent that owns the collection of ConnectionProfiles.",
                      "location": "path",
                      "pattern": "^projects/[^/]+/locations/[^/]+$",
                      "required": true
                    },
                    "validateOnly": {
                      "type": "boolean",
                      "location": "query",
                      "description": "Optional. Only validate the connection profile, but don't create any resources. The default is false."
                    },
                    "force": {
                      "type": "boolean",
                      "description": "Optional. Create the connection profile without validating it.",
                      "location": "query"
                    }
                  },
                  "httpMethod": "POST",
                  "id": "datastream.projects.locations.connectionProfiles.create",
                  "request": {
                    "$ref": "ConnectionProfile"
                  }
                }
              }
            },
            "privateConnections": {
              "resources": {
                "routes": {
                  "methods": {
                    "create": {
                      "description": "Use this method to create a route for a private connectivity configuration in a project and location.",
                      "scopes": [
                        "https://www.googleapis.com/auth/cloud-platform"
                      ],
                      "response": {
                        "$ref": "Operation"
                      },
                      "request": {
                        "$ref": "Route"
                      },
                      "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/privateConnections/{privateConnectionsId}/routes",
                      "path": "v1/{+parent}/routes",
                      "id": "datastream.projects.locations.privateConnections.routes.create",
                      "parameterOrder": [
                        "parent"
                      ],
                      "parameters": {
                        "routeId": {
                          "type": "string",
                          "location": "query",
                          "description": "Required. The Route identifier."
                        },
                        "parent": {
                          "location": "path",
                          "required": true,
                          "description": "Required. The parent that owns the collection of Routes.",
                          "type": "string",
                          "pattern": "^projects/[^/]+/locations/[^/]+/privateConnections/[^/]+$"
                        },
                        "requestId": {
                          "type": "string",
                          "location": "query",
                          "description": "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)."
                        }
                      },
                      "httpMethod": "POST"
                    },
                    "list": {
                      "response": {
                        "$ref": "ListRoutesResponse"
                      },
                      "path": "v1/{+parent}/routes",
                      "scopes": [
                        "https://www.googleapis.com/auth/cloud-platform"
                      ],
                      "id": "datastream.projects.locations.privateConnections.routes.list",
                      "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/privateConnections/{privateConnectionsId}/routes",
                      "parameterOrder": [
                        "parent"
                      ],
                      "parameters": {
                        "parent": {
                          "required": true,
                          "pattern": "^projects/[^/]+/locations/[^/]+/privateConnections/[^/]+$",
                          "description": "Required. The parent that owns the collection of Routess.",
                          "location": "path",
                          "type": "string"
                        },
                        "orderBy": {
                          "type": "string",
                          "location": "query",
                          "description": "Optional. Order by fields for the result."
                        },
                        "pageToken": {
                          "location": "query",
                          "type": "string",
                          "description": "Optional. Page token received from a previous `ListRoutes` call. Provide this to retrieve the subsequent page. When paginating, all other parameters provided to `ListRoutes` must match the call that provided the page token."
                        },
                        "filter": {
                          "type": "string",
                          "description": "Optional. Filter request.",
                          "location": "query"
                        },
                        "pageSize": {
                          "type": "integer",
                          "location": "query",
                          "format": "int32",
                          "description": "Optional. Maximum number of Routes to return. The service may return fewer than this value. If unspecified, at most 50 Routes will be returned. The maximum value is 1000; values above 1000 will be coerced to 1000."
                        }
                      },
                      "httpMethod": "GET",
                      "description": "Use this method to list routes created for a private connectivity configuration in a project and location."
                    },
                    "delete": {
                      "id": "datastream.projects.locations.privateConnections.routes.delete",
                      "scopes": [
                        "https://www.googleapis.com/auth/cloud-platform"
                      ],
                      "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/privateConnections/{privateConnectionsId}/routes/{routesId}",
                      "response": {
                        "$ref": "Operation"
                      },
                      "httpMethod": "DELETE",
                      "description": "Use this method to delete a route.",
                      "parameterOrder": [
                        "name"
                      ],
                      "parameters": {
                        "name": {
                          "location": "path",
                          "pattern": "^projects/[^/]+/locations/[^/]+/privateConnections/[^/]+/routes/[^/]+$",
                          "type": "string",
                          "required": true,
                          "description": "Required. The name of the Route resource to delete."
                        },
                        "requestId": {
                          "description": "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).",
                          "type": "string",
                          "location": "query"
                        }
                      },
                      "path": "v1/{+name}"
                    },
                    "get": {
                      "description": "Use this method to get details about a route.",
                      "id": "datastream.projects.locations.privateConnections.routes.get",
                      "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/privateConnections/{privateConnectionsId}/routes/{routesId}",
                      "scopes": [
                        "https://www.googleapis.com/auth/cloud-platform"
                      ],
                      "httpMethod": "GET",
                      "path": "v1/{+name}",
                      "parameters": {
                        "name": {
                          "pattern": "^projects/[^/]+/locations/[^/]+/privateConnections/[^/]+/routes/[^/]+$",
                          "required": true,
                          "description": "Required. The name of the Route resource to get.",
                          "location": "path",
                          "type": "string"
                        }
                      },
                      "response": {
                        "$ref": "Route"
                      },
                      "parameterOrder": [
                        "name"
                      ]
                    }
                  }
                }
              },
              "methods": {
                "delete": {
                  "parameterOrder": [
                    "name"
                  ],
                  "path": "v1/{+name}",
                  "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/privateConnections/{privateConnectionsId}",
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "description": "Use this method to delete a private connectivity configuration.",
                  "response": {
                    "$ref": "Operation"
                  },
                  "parameters": {
                    "name": {
                      "description": "Required. The name of the private connectivity configuration to delete.",
                      "location": "path",
                      "pattern": "^projects/[^/]+/locations/[^/]+/privateConnections/[^/]+$",
                      "required": true,
                      "type": "string"
                    },
                    "requestId": {
                      "type": "string",
                      "description": "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).",
                      "location": "query"
                    },
                    "force": {
                      "description": "Optional. If set to true, any child routes that belong to this PrivateConnection will also be deleted.",
                      "location": "query",
                      "type": "boolean"
                    }
                  },
                  "id": "datastream.projects.locations.privateConnections.delete",
                  "httpMethod": "DELETE"
                },
                "list": {
                  "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/privateConnections",
                  "parameters": {
                    "pageSize": {
                      "location": "query",
                      "type": "integer",
                      "format": "int32",
                      "description": "Maximum number of private connectivity configurations to return. If unspecified, at most 50 private connectivity configurations that will be returned. The maximum value is 1000; values above 1000 will be coerced to 1000."
                    },
                    "parent": {
                      "required": true,
                      "type": "string",
                      "location": "path",
                      "pattern": "^projects/[^/]+/locations/[^/]+$",
                      "description": "Required. The parent that owns the collection of private connectivity configurations."
                    },
                    "pageToken": {
                      "type": "string",
                      "description": "Optional. Page token received from a previous `ListPrivateConnections` call. Provide this to retrieve the subsequent page. When paginating, all other parameters provided to `ListPrivateConnections` must match the call that provided the page token.",
                      "location": "query"
                    },
                    "orderBy": {
                      "description": "Optional. Order by fields for the result.",
                      "location": "query",
                      "type": "string"
                    },
                    "filter": {
                      "description": "Optional. Filter request.",
                      "location": "query",
                      "type": "string"
                    }
                  },
                  "id": "datastream.projects.locations.privateConnections.list",
                  "response": {
                    "$ref": "ListPrivateConnectionsResponse"
                  },
                  "httpMethod": "GET",
                  "path": "v1/{+parent}/privateConnections",
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "parameterOrder": [
                    "parent"
                  ],
                  "description": "Use this method to list private connectivity configurations in a project and location."
                },
                "get": {
                  "id": "datastream.projects.locations.privateConnections.get",
                  "parameterOrder": [
                    "name"
                  ],
                  "description": "Use this method to get details about a private connectivity configuration.",
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "httpMethod": "GET",
                  "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/privateConnections/{privateConnectionsId}",
                  "parameters": {
                    "name": {
                      "type": "string",
                      "location": "path",
                      "pattern": "^projects/[^/]+/locations/[^/]+/privateConnections/[^/]+$",
                      "description": "Required. The name of the private connectivity configuration to get.",
                      "required": true
                    }
                  },
                  "path": "v1/{+name}",
                  "response": {
                    "$ref": "PrivateConnection"
                  }
                },
                "create": {
                  "request": {
                    "$ref": "PrivateConnection"
                  },
                  "description": "Use this method to create a private connectivity configuration.",
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "parameterOrder": [
                    "parent"
                  ],
                  "path": "v1/{+parent}/privateConnections",
                  "parameters": {
                    "parent": {
                      "type": "string",
                      "pattern": "^projects/[^/]+/locations/[^/]+$",
                      "required": true,
                      "description": "Required. The parent that owns the collection of PrivateConnections.",
                      "location": "path"
                    },
                    "privateConnectionId": {
                      "type": "string",
                      "location": "query",
                      "description": "Required. The private connectivity identifier."
                    },
                    "requestId": {
                      "description": "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).",
                      "type": "string",
                      "location": "query"
                    },
                    "validateOnly": {
                      "location": "query",
                      "type": "boolean",
                      "description": "Optional. When supplied with PSC Interface config, will get/create the tenant project required for the customer to allow list and won't actually create the private connection."
                    },
                    "force": {
                      "description": "Optional. If set to true, will skip validations.",
                      "type": "boolean",
                      "location": "query"
                    }
                  },
                  "httpMethod": "POST",
                  "response": {
                    "$ref": "Operation"
                  },
                  "id": "datastream.projects.locations.privateConnections.create",
                  "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/privateConnections"
                }
              }
            },
            "operations": {
              "methods": {
                "cancel": {
                  "path": "v1/{+name}:cancel",
                  "response": {
                    "$ref": "Empty"
                  },
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/operations/{operationsId}:cancel",
                  "parameters": {
                    "name": {
                      "description": "The name of the operation resource to be cancelled.",
                      "pattern": "^projects/[^/]+/locations/[^/]+/operations/[^/]+$",
                      "required": true,
                      "location": "path",
                      "type": "string"
                    }
                  },
                  "request": {
                    "$ref": "CancelOperationRequest"
                  },
                  "httpMethod": "POST",
                  "description": "Starts asynchronous cancellation on a long-running operation. The server makes a best effort to cancel the operation, but success is not guaranteed. If the server doesn't support this method, it returns `google.rpc.Code.UNIMPLEMENTED`. Clients can use Operations.GetOperation or other methods to check whether the cancellation succeeded or whether the operation completed despite cancellation. On successful cancellation, the operation is not deleted; instead, it becomes an operation with an Operation.error value with a google.rpc.Status.code of `1`, corresponding to `Code.CANCELLED`.",
                  "parameterOrder": [
                    "name"
                  ],
                  "id": "datastream.projects.locations.operations.cancel"
                },
                "delete": {
                  "path": "v1/{+name}",
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "parameters": {
                    "name": {
                      "type": "string",
                      "location": "path",
                      "description": "The name of the operation resource to be deleted.",
                      "required": true,
                      "pattern": "^projects/[^/]+/locations/[^/]+/operations/[^/]+$"
                    }
                  },
                  "description": "Deletes a long-running operation. This method indicates that the client is no longer interested in the operation result. It does not cancel the operation. If the server doesn't support this method, it returns `google.rpc.Code.UNIMPLEMENTED`.",
                  "response": {
                    "$ref": "Empty"
                  },
                  "httpMethod": "DELETE",
                  "id": "datastream.projects.locations.operations.delete",
                  "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/operations/{operationsId}",
                  "parameterOrder": [
                    "name"
                  ]
                },
                "get": {
                  "id": "datastream.projects.locations.operations.get",
                  "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/operations/{operationsId}",
                  "path": "v1/{+name}",
                  "parameterOrder": [
                    "name"
                  ],
                  "response": {
                    "$ref": "Operation"
                  },
                  "description": "Gets the latest state of a long-running operation. Clients can use this method to poll the operation result at intervals as recommended by the API service.",
                  "httpMethod": "GET",
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "parameters": {
                    "name": {
                      "description": "The name of the operation resource.",
                      "pattern": "^projects/[^/]+/locations/[^/]+/operations/[^/]+$",
                      "required": true,
                      "type": "string",
                      "location": "path"
                    }
                  }
                },
                "list": {
                  "parameterOrder": [
                    "name"
                  ],
                  "id": "datastream.projects.locations.operations.list",
                  "response": {
                    "$ref": "ListOperationsResponse"
                  },
                  "path": "v1/{+name}/operations",
                  "httpMethod": "GET",
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "description": "Lists operations that match the specified filter in the request. If the server doesn't support this method, it returns `UNIMPLEMENTED`.",
                  "parameters": {
                    "name": {
                      "pattern": "^projects/[^/]+/locations/[^/]+$",
                      "type": "string",
                      "required": true,
                      "location": "path",
                      "description": "The name of the operation's parent resource."
                    },
                    "returnPartialSuccess": {
                      "description": "When set to `true`, operations that are reachable are returned as normal, and those that are unreachable are returned in the ListOperationsResponse.unreachable field. This can only be `true` when reading across collections. For example, when `parent` is set to `\"projects/example/locations/-\"`. This field is not supported by default and will result in an `UNIMPLEMENTED` error if set unless explicitly documented otherwise in service or product specific documentation.",
                      "type": "boolean",
                      "location": "query"
                    },
                    "pageToken": {
                      "location": "query",
                      "description": "The standard list page token.",
                      "type": "string"
                    },
                    "pageSize": {
                      "description": "The standard list page size.",
                      "format": "int32",
                      "type": "integer",
                      "location": "query"
                    },
                    "filter": {
                      "location": "query",
                      "description": "The standard list filter.",
                      "type": "string"
                    }
                  },
                  "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/operations"
                }
              }
            },
            "streams": {
              "methods": {
                "get": {
                  "path": "v1/{+name}",
                  "parameterOrder": [
                    "name"
                  ],
                  "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/streams/{streamsId}",
                  "parameters": {
                    "name": {
                      "description": "Required. The name of the stream resource to get.",
                      "pattern": "^projects/[^/]+/locations/[^/]+/streams/[^/]+$",
                      "required": true,
                      "location": "path",
                      "type": "string"
                    }
                  },
                  "httpMethod": "GET",
                  "id": "datastream.projects.locations.streams.get",
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "response": {
                    "$ref": "Stream"
                  },
                  "description": "Use this method to get details about a stream."
                },
                "delete": {
                  "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/streams/{streamsId}",
                  "parameterOrder": [
                    "name"
                  ],
                  "description": "Use this method to delete a stream.",
                  "response": {
                    "$ref": "Operation"
                  },
                  "parameters": {
                    "requestId": {
                      "description": "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).",
                      "location": "query",
                      "type": "string"
                    },
                    "name": {
                      "type": "string",
                      "pattern": "^projects/[^/]+/locations/[^/]+/streams/[^/]+$",
                      "description": "Required. The name of the stream resource to delete.",
                      "required": true,
                      "location": "path"
                    }
                  },
                  "id": "datastream.projects.locations.streams.delete",
                  "httpMethod": "DELETE",
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "path": "v1/{+name}"
                },
                "patch": {
                  "parameterOrder": [
                    "name"
                  ],
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/streams/{streamsId}",
                  "id": "datastream.projects.locations.streams.patch",
                  "parameters": {
                    "name": {
                      "type": "string",
                      "pattern": "^projects/[^/]+/locations/[^/]+/streams/[^/]+$",
                      "description": "Output only. Identifier. The stream's name.",
                      "location": "path",
                      "required": true
                    },
                    "requestId": {
                      "type": "string",
                      "location": "query",
                      "description": "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)."
                    },
                    "force": {
                      "description": "Optional. Update the stream without validating it.",
                      "location": "query",
                      "type": "boolean"
                    },
                    "validateOnly": {
                      "type": "boolean",
                      "description": "Optional. Only validate the stream with the changes, without actually updating it. The default is false.",
                      "location": "query"
                    },
                    "updateMask": {
                      "description": "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.",
                      "type": "string",
                      "location": "query",
                      "format": "google-fieldmask"
                    }
                  },
                  "response": {
                    "$ref": "Operation"
                  },
                  "httpMethod": "PATCH",
                  "path": "v1/{+name}",
                  "request": {
                    "$ref": "Stream"
                  },
                  "description": "Use this method to update the configuration of a stream."
                },
                "run": {
                  "id": "datastream.projects.locations.streams.run",
                  "httpMethod": "POST",
                  "parameters": {
                    "name": {
                      "pattern": "^projects/[^/]+/locations/[^/]+/streams/[^/]+$",
                      "required": true,
                      "description": "Required. Name of the stream resource to start, in the format: projects/{project_id}/locations/{location}/streams/{stream_name}",
                      "type": "string",
                      "location": "path"
                    }
                  },
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "path": "v1/{+name}:run",
                  "description": "Use this method to start, resume or recover a stream with a non default CDC strategy.",
                  "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/streams/{streamsId}:run",
                  "request": {
                    "$ref": "RunStreamRequest"
                  },
                  "response": {
                    "$ref": "Operation"
                  },
                  "parameterOrder": [
                    "name"
                  ]
                },
                "create": {
                  "httpMethod": "POST",
                  "response": {
                    "$ref": "Operation"
                  },
                  "request": {
                    "$ref": "Stream"
                  },
                  "parameters": {
                    "requestId": {
                      "type": "string",
                      "description": "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).",
                      "location": "query"
                    },
                    "parent": {
                      "pattern": "^projects/[^/]+/locations/[^/]+$",
                      "type": "string",
                      "required": true,
                      "description": "Required. The parent that owns the collection of streams.",
                      "location": "path"
                    },
                    "streamId": {
                      "location": "query",
                      "type": "string",
                      "description": "Required. The stream identifier."
                    },
                    "validateOnly": {
                      "location": "query",
                      "type": "boolean",
                      "description": "Optional. Only validate the stream, but don't create any resources. The default is false."
                    },
                    "force": {
                      "type": "boolean",
                      "location": "query",
                      "description": "Optional. Create the stream without validating it."
                    }
                  },
                  "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/streams",
                  "id": "datastream.projects.locations.streams.create",
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "path": "v1/{+parent}/streams",
                  "parameterOrder": [
                    "parent"
                  ],
                  "description": "Use this method to create a stream."
                },
                "list": {
                  "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/streams",
                  "description": "Use this method to list streams in a project and location.",
                  "parameters": {
                    "pageToken": {
                      "type": "string",
                      "location": "query",
                      "description": "Optional. 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."
                    },
                    "parent": {
                      "required": true,
                      "type": "string",
                      "pattern": "^projects/[^/]+/locations/[^/]+$",
                      "location": "path",
                      "description": "Required. The parent that owns the collection of streams."
                    },
                    "orderBy": {
                      "location": "query",
                      "description": "Optional. Order by fields for the result.",
                      "type": "string"
                    },
                    "filter": {
                      "location": "query",
                      "description": "Optional. Filter request.",
                      "type": "string"
                    },
                    "pageSize": {
                      "description": "Optional. 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.",
                      "location": "query",
                      "type": "integer",
                      "format": "int32"
                    }
                  },
                  "response": {
                    "$ref": "ListStreamsResponse"
                  },
                  "httpMethod": "GET",
                  "id": "datastream.projects.locations.streams.list",
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "path": "v1/{+parent}/streams",
                  "parameterOrder": [
                    "parent"
                  ]
                }
              },
              "resources": {
                "objects": {
                  "methods": {
                    "get": {
                      "httpMethod": "GET",
                      "path": "v1/{+name}",
                      "parameters": {
                        "name": {
                          "location": "path",
                          "pattern": "^projects/[^/]+/locations/[^/]+/streams/[^/]+/objects/[^/]+$",
                          "type": "string",
                          "required": true,
                          "description": "Required. The name of the stream object resource to get."
                        }
                      },
                      "scopes": [
                        "https://www.googleapis.com/auth/cloud-platform"
                      ],
                      "description": "Use this method to get details about a stream object.",
                      "id": "datastream.projects.locations.streams.objects.get",
                      "parameterOrder": [
                        "name"
                      ],
                      "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/streams/{streamsId}/objects/{objectsId}",
                      "response": {
                        "$ref": "StreamObject"
                      }
                    },
                    "lookup": {
                      "httpMethod": "POST",
                      "parameters": {
                        "parent": {
                          "location": "path",
                          "type": "string",
                          "required": true,
                          "description": "Required. The parent stream that owns the collection of objects.",
                          "pattern": "^projects/[^/]+/locations/[^/]+/streams/[^/]+$"
                        }
                      },
                      "description": "Use this method to look up a stream object by its source object identifier.",
                      "request": {
                        "$ref": "LookupStreamObjectRequest"
                      },
                      "scopes": [
                        "https://www.googleapis.com/auth/cloud-platform"
                      ],
                      "id": "datastream.projects.locations.streams.objects.lookup",
                      "parameterOrder": [
                        "parent"
                      ],
                      "response": {
                        "$ref": "StreamObject"
                      },
                      "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/streams/{streamsId}/objects:lookup",
                      "path": "v1/{+parent}/objects:lookup"
                    },
                    "stopBackfillJob": {
                      "id": "datastream.projects.locations.streams.objects.stopBackfillJob",
                      "request": {
                        "$ref": "StopBackfillJobRequest"
                      },
                      "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/streams/{streamsId}/objects/{objectsId}:stopBackfillJob",
                      "description": "Use this method to stop a backfill job for the specified stream object.",
                      "scopes": [
                        "https://www.googleapis.com/auth/cloud-platform"
                      ],
                      "response": {
                        "$ref": "StopBackfillJobResponse"
                      },
                      "parameterOrder": [
                        "object"
                      ],
                      "path": "v1/{+object}:stopBackfillJob",
                      "parameters": {
                        "object": {
                          "location": "path",
                          "required": true,
                          "description": "Required. The name of the stream object resource to stop the backfill job for.",
                          "pattern": "^projects/[^/]+/locations/[^/]+/streams/[^/]+/objects/[^/]+$",
                          "type": "string"
                        }
                      },
                      "httpMethod": "POST"
                    },
                    "startBackfillJob": {
                      "parameterOrder": [
                        "object"
                      ],
                      "parameters": {
                        "object": {
                          "required": true,
                          "pattern": "^projects/[^/]+/locations/[^/]+/streams/[^/]+/objects/[^/]+$",
                          "location": "path",
                          "type": "string",
                          "description": "Required. The name of the stream object resource to start a backfill job for."
                        }
                      },
                      "httpMethod": "POST",
                      "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/streams/{streamsId}/objects/{objectsId}:startBackfillJob",
                      "description": "Use this method to start a backfill job for the specified stream object.",
                      "response": {
                        "$ref": "StartBackfillJobResponse"
                      },
                      "request": {
                        "$ref": "StartBackfillJobRequest"
                      },
                      "scopes": [
                        "https://www.googleapis.com/auth/cloud-platform"
                      ],
                      "id": "datastream.projects.locations.streams.objects.startBackfillJob",
                      "path": "v1/{+object}:startBackfillJob"
                    },
                    "list": {
                      "description": "Use this method to list the objects of a specific stream.",
                      "parameters": {
                        "pageSize": {
                          "location": "query",
                          "format": "int32",
                          "type": "integer",
                          "description": "Optional. Maximum number of objects to return. Default is 50. The maximum value is 1000; values above 1000 will be coerced to 1000."
                        },
                        "parent": {
                          "pattern": "^projects/[^/]+/locations/[^/]+/streams/[^/]+$",
                          "description": "Required. The parent stream that owns the collection of objects.",
                          "location": "path",
                          "type": "string",
                          "required": true
                        },
                        "pageToken": {
                          "type": "string",
                          "location": "query",
                          "description": "Optional. Page token received from a previous `ListStreamObjectsRequest` call. Provide this to retrieve the subsequent page. When paginating, all other parameters provided to `ListStreamObjectsRequest` must match the call that provided the page token."
                        }
                      },
                      "parameterOrder": [
                        "parent"
                      ],
                      "httpMethod": "GET",
                      "id": "datastream.projects.locations.streams.objects.list",
                      "scopes": [
                        "https://www.googleapis.com/auth/cloud-platform"
                      ],
                      "path": "v1/{+parent}/objects",
                      "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/streams/{streamsId}/objects",
                      "response": {
                        "$ref": "ListStreamObjectsResponse"
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
  },
  "ownerDomain": "google.com"
}
