// Copyright 2026 Google LLC
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//     http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

syntax = "proto3";

package google.cloud.oracledatabase.v1;

import "google/api/field_behavior.proto";
import "google/api/field_info.proto";
import "google/api/resource.proto";
import "google/protobuf/timestamp.proto";

option csharp_namespace = "Google.Cloud.OracleDatabase.V1";
option go_package = "cloud.google.com/go/oracledatabase/apiv1/oracledatabasepb;oracledatabasepb";
option java_multiple_files = true;
option java_outer_classname = "GoldengateConnectionProto";
option java_package = "com.google.cloud.oracledatabase.v1";
option php_namespace = "Google\\Cloud\\OracleDatabase\\V1";
option ruby_package = "Google::Cloud::OracleDatabase::V1";

// Details of the GoldengateConnection resource.
message GoldengateConnection {
  option (google.api.resource) = {
    type: "oracledatabase.googleapis.com/GoldengateConnection"
    pattern: "projects/{project}/locations/{location}/goldengateConnections/{goldengate_connection}"
    plural: "goldengateConnections"
    singular: "goldengateConnection"
  };

  // Identifier. The name of the GoldengateConnection resource in the following
  // format:
  // projects/{project}/locations/{region}/goldengateConnections/{goldengate_connection}
  string name = 1 [(google.api.field_behavior) = IDENTIFIER];

  // Required. The properties of the GoldengateConnection.
  GoldengateConnectionProperties properties = 2
      [(google.api.field_behavior) = REQUIRED];

  // Optional. The GCP Oracle zone where Oracle GoldengateConnection is hosted.
  // Example: us-east4-b-r2.
  // If not specified, the system will pick a zone based on availability.
  string gcp_oracle_zone = 3 [(google.api.field_behavior) = OPTIONAL];

  // Optional. The labels or tags associated with the GoldengateConnection.
  map<string, string> labels = 4 [(google.api.field_behavior) = OPTIONAL];

  // Optional. The name of the OdbNetwork associated with the
  // GoldengateConnection. The format is
  // projects/{project}/locations/{location}/odbNetworks/{odb_network}.
  // It is optional but if specified, this should match the parent ODBNetwork
  // of the OdbSubnet.
  string odb_network = 5 [
    (google.api.field_behavior) = OPTIONAL,
    (google.api.resource_reference) = {
      type: "oracledatabase.googleapis.com/OdbNetwork"
    }
  ];

  // Optional. The name of the OdbSubnet associated with the
  // GoldengateConnection for IP allocation. Format:
  // projects/{project}/locations/{location}/odbNetworks/{odb_network}/odbSubnets/{odb_subnet}
  string odb_subnet = 6 [
    (google.api.field_behavior) = OPTIONAL,
    (google.api.resource_reference) = {
      type: "oracledatabase.googleapis.com/OdbSubnet"
    }
  ];

  // Output only. The ID of the subscription entitlement associated with the
  // GoldengateConnection.
  string entitlement_id = 7 [(google.api.field_behavior) = OUTPUT_ONLY];

  // Output only. The date and time that the GoldengateConnection was created.
  google.protobuf.Timestamp create_time = 8
      [(google.api.field_behavior) = OUTPUT_ONLY];

  // Output only. HTTPS link to OCI resources exposed to Customer via UI
  // Interface.
  string oci_url = 9 [(google.api.field_behavior) = OUTPUT_ONLY];
}

// The properties of a GoldengateConnection.
message GoldengateConnectionProperties {
  // Enum for Connection type.
  enum GoldengateConnectionType {
    // Connection type unspecified.
    GOLDENGATE_CONNECTION_TYPE_UNSPECIFIED = 0;

    // Goldengate connection type.
    GOLDENGATE = 1;

    // Kafka connection type.
    KAFKA = 2;

    // Kafka schema registry connection type.
    KAFKA_SCHEMA_REGISTRY = 3;

    // MySQL connection type.
    MYSQL = 4;

    // Java message service connection type.
    JAVA_MESSAGE_SERVICE = 5;

    // Microsoft SQL Server connection type.
    MICROSOFT_SQLSERVER = 6;

    // OCI object storage connection type.
    OCI_OBJECT_STORAGE = 7;

    // Oracle connection type.
    ORACLE = 8;

    // Azure data lake storage connection type.
    AZURE_DATA_LAKE_STORAGE = 9;

    // PostgreSQL connection type.
    POSTGRESQL = 10;

    // Azure synapse analytics connection type.
    AZURE_SYNAPSE_ANALYTICS = 11;

    // Snowflake connection type.
    SNOWFLAKE = 12;

    // Amazon S3 connection type.
    AMAZON_S3 = 13;

    // HDFS connection type.
    HDFS = 14;

    // Oracle AI data platform connection type.
    ORACLE_AI_DATA_PLATFORM = 15;

    // Oracle NoSQL connection type.
    ORACLE_NOSQL = 16;

    // MongoDB connection type.
    MONGODB = 17;

    // Amazon Kinesis connection type.
    AMAZON_KINESIS = 18;

    // Amazon Redshift connection type.
    AMAZON_REDSHIFT = 19;

    // DB2 connection type.
    DB2 = 20;

    // Redis connection type.
    REDIS = 21;

    // Elasticsearch connection type.
    ELASTICSEARCH = 22;

    // Generic connection type.
    GENERIC = 23;

    // Google Cloud Storage connection type.
    GOOGLE_CLOUD_STORAGE = 24;

    // Google BigQuery connection type.
    GOOGLE_BIGQUERY = 25;

    // Databricks connection type.
    DATABRICKS = 26;

    // Google Pub/Sub connection type.
    GOOGLE_PUBSUB = 27;

    // Microsoft Fabric connection type.
    MICROSOFT_FABRIC = 28;

    // Iceberg connection type.
    ICEBERG = 29;
  }

  // Possible lifecycle states for connection.
  enum GoldengateConnectionLifecycleState {
    // Default unspecified value.
    GOLDENGATE_CONNECTION_LIFECYCLE_STATE_UNSPECIFIED = 0;

    // Indicates that the resource is in provisioning state.
    CREATING = 1;

    // Indicates that the resource is in active state.
    ACTIVE = 2;

    // Indicates that the resource is in updating state.
    UPDATING = 3;

    // Indicates that the resource is in deleting state.
    DELETING = 4;

    // Indicates that the resource is in deleted state.
    DELETED = 5;

    // Indicates that the resource is in failed state.
    FAILED = 6;
  }

  // The various routing methods of the GoldengateConnection.
  enum GoldengateConnectionRoutingMethod {
    // Default unspecified value.
    GOLDENGATE_CONNECTION_ROUTING_METHOD_UNSPECIFIED = 0;

    // Network traffic flows from the assigned deployment's private endpoint
    // through the deployment's subnet.
    SHARED_DEPLOYMENT_ENDPOINT = 1;

    // A dedicated private endpoint is created in the target VCN subnet for
    // the connection.
    DEDICATED_ENDPOINT = 2;
  }

  // The connection details.
  oneof connection_details {
    // Properties for an Oracle Database Connection.
    GoldengateOracleConnectionProperties oracle_connection_properties = 9;

    // Properties for a Goldengate Connection.
    GoldengateGoldengateConnectionProperties goldengate_connection_properties =
        10;

    // Properties for a Generic Connection.
    GoldengateGenericConnectionProperties generic_connection_properties = 11;

    // Properties for a Google Cloud Storage Connection.
    GoldengateGoogleCloudStorageConnectionProperties
        google_cloud_storage_connection_properties = 12;

    // Properties for a Google BigQuery Connection.
    GoldengateGoogleBigQueryConnectionProperties
        google_big_query_connection_properties = 13;

    // Properties for a Mysql Connection.
    GoldengateMysqlConnectionProperties mysql_connection_properties = 14;

    // Properties for a Kafka Connection.
    GoldengateKafkaConnectionProperties kafka_connection_properties = 15;

    // Properties for a Kafka Schema Registry Connection.
    GoldengateKafkaSchemaRegistryConnectionProperties
        kafka_schema_registry_connection_properties = 16;

    // Properties for an OCI Object Storage Connection.
    GoldengateOciObjectStorageConnectionProperties
        oci_object_storage_connection_properties = 17;

    // Properties for an Azure Data Lake Storage Connection.
    GoldengateAzureDataLakeStorageConnectionProperties
        azure_data_lake_storage_connection_properties = 18;

    // Properties for an Azure Synapse Analytics connection.
    GoldengateAzureSynapseAnalyticsConnectionProperties
        azure_synapse_analytics_connection_properties = 19;

    // Properties for a PostgreSQL connection.
    GoldengatePostgresqlConnectionProperties postgresql_connection_properties =
        20;

    // Properties for a Microsoft SQL Server connection.
    GoldengateMicrosoftSqlserverConnectionProperties
        microsoft_sqlserver_connection_properties = 21;

    // Properties for an Amazon S3 connection.
    GoldengateAmazonS3ConnectionProperties amazon_s3_connection_properties = 22;

    // Properties for an HDFS connection.
    GoldengateHdfsConnectionProperties hdfs_connection_properties = 23;

    // Properties for a Java Message Service connection.
    GoldengateJavaMessageServiceConnectionProperties
        java_message_service_connection_properties = 24;

    // Properties for a MongoDB connection.
    GoldengateMongodbConnectionProperties mongodb_connection_properties = 25;

    // Properties for an Oracle NoSQL connection.
    GoldengateOracleNosqlConnectionProperties
        oracle_nosql_connection_properties = 26;

    // Properties for a Snowflake connection.
    GoldengateSnowflakeConnectionProperties snowflake_connection_properties =
        27;

    // Properties for an Amazon Redshift connection.
    GoldengateAmazonRedshiftConnectionProperties
        amazon_redshift_connection_properties = 28;

    // Properties for an Elasticsearch connection.
    GoldengateElasticsearchConnectionProperties
        elasticsearch_connection_properties = 29;

    // Properties for an Amazon Kinesis connection.
    GoldengateAmazonKinesisConnectionProperties
        amazon_kinesis_connection_properties = 31;

    // Properties for a DB2 connection.
    GoldengateDb2ConnectionProperties db2_connection_properties = 32;

    // Properties for a Redis connection.
    GoldengateRedisConnectionProperties redis_connection_properties = 33;

    // Properties for a Databricks connection.
    GoldengateDatabricksConnectionProperties databricks_connection_properties =
        34;

    // Properties for a Google Pub/Sub connection.
    GoldengateGooglePubsubConnectionProperties
        google_pubsub_connection_properties = 35;

    // Properties for a Microsoft Fabric connection.
    GoldengateMicrosoftFabricConnectionProperties
        microsoft_fabric_connection_properties = 36;

    // Properties for an Oracle AI Data Platform connection.
    GoldengateOracleAIDataPlatformConnectionProperties
        oracle_ai_data_platform_connection_properties = 37;

    // Properties for an Iceberg connection.
    GoldengateIcebergConnectionProperties iceberg_connection_properties = 38;
  }

  // Required. The connection type.
  GoldengateConnectionType connection_type = 1
      [(google.api.field_behavior) = REQUIRED];

  // Output only. The [OCID] of the connection being
  // referenced.
  string ocid = 2 [(google.api.field_behavior) = OUTPUT_ONLY];

  // Required. An object's Display Name.
  string display_name = 3 [(google.api.field_behavior) = REQUIRED];

  // Optional. Metadata about this specific object.
  string description = 4 [(google.api.field_behavior) = OPTIONAL];

  // Output only. The lifecycle state of the connection.
  GoldengateConnectionLifecycleState lifecycle_state = 5
      [(google.api.field_behavior) = OUTPUT_ONLY];

  // Output only. Describes the object's current state in detail. For example,
  // it can be used to provide actionable information for a resource in a Failed
  // state.
  string lifecycle_details = 6 [(google.api.field_behavior) = OUTPUT_ONLY];

  // Output only. The time the resource was last updated.
  google.protobuf.Timestamp update_time = 7
      [(google.api.field_behavior) = OUTPUT_ONLY];

  // Optional. The routing method for the GoldengateConnection.
  GoldengateConnectionRoutingMethod routing_method = 8
      [(google.api.field_behavior) = OPTIONAL];

  // Output only. The Ingress IPs of the GoldengateConnection.
  repeated string ingress_ip_addresses = 39
      [(google.api.field_behavior) = OUTPUT_ONLY];
}

// The properties of Goldengate Oracle Database Connection.
message GoldengateOracleConnectionProperties {
  // Enum for Authentication mode.
  enum OracleAuthenticationMode {
    // Authentication mode not specified.
    ORACLE_AUTHENTICATION_MODE_UNSPECIFIED = 0;

    // TLS authentication mode.
    TLS = 1;

    // MTLS authentication mode.
    MTLS = 2;
  }

  // The various session modes of the GoldengateConnection.
  enum SessionMode {
    // Default unspecified value.
    SESSION_MODE_UNSPECIFIED = 0;

    // Indicates that the resource is using direct session mode.
    DIRECT = 1;

    // Indicates that the resource is using redirect session mode.
    REDIRECT = 2;
  }

  // The password Oracle Goldengate uses to connect the associated system of the
  // given technology. It must conform to the specific security requirements
  // including length, case sensitivity, and so on.
  oneof connection_password_options {
    // Optional. Input only. The password Oracle Goldengate uses in plain text.
    string password = 10 [
      (google.api.field_behavior) = OPTIONAL,
      (google.api.field_behavior) = INPUT_ONLY
    ];

    // Optional. Input only. The resource name of a secret version in Secret
    // Manager which contains the password Oracle Goldengate uses. Format:
    // projects/{project}/secrets/{secret}/versions/{version}.
    string password_secret_version = 11 [
      (google.api.field_behavior) = OPTIONAL,
      (google.api.field_behavior) = INPUT_ONLY,
      (google.api.resource_reference) = {
        type: "secretmanager.googleapis.com/SecretVersion"
      }
    ];
  }

  // Optional. The technology type.
  string technology_type = 1 [(google.api.field_behavior) = OPTIONAL];

  // Optional. The username Oracle Goldengate uses to connect.
  string username = 2 [(google.api.field_behavior) = OPTIONAL];

  // Optional. Authentication mode.
  OracleAuthenticationMode authentication_mode = 3
      [(google.api.field_behavior) = OPTIONAL];

  // Optional. Connect descriptor or Easy Connect Naming method used to connect
  // to a database.
  string connection_string = 4 [(google.api.field_behavior) = OPTIONAL];

  // Optional. The mode of the database connection session to be established by
  // the data client.
  SessionMode session_mode = 5 [(google.api.field_behavior) = OPTIONAL];

  // Optional. Autonomous AI Database instance id of database in Oracle Database
  // @ Google Cloud. If gcp_oracle_database_id is provided, connection_string
  // must be empty. Format:
  // projects/{project}/locations/{location}/autonomousDatabases/{autonomous_database}
  string gcp_oracle_database_id = 6 [(google.api.field_behavior) = OPTIONAL];

  // Optional. The wallet contents Oracle Goldengate uses to make connections to
  // a database. This attribute is expected to be base64 encoded.
  string wallet_file = 9 [(google.api.field_behavior) = OPTIONAL];
}

// The properties of GoldengateGoldengateConnectionProperties.
message GoldengateGoldengateConnectionProperties {
  // The password used to connect to the Oracle Goldengate accessed through this
  // connection.
  oneof connection_password_options {
    // Optional. Input only. The password used to connect to the Oracle
    // Goldengate in plain text.
    string password = 7 [
      (google.api.field_behavior) = OPTIONAL,
      (google.api.field_behavior) = INPUT_ONLY
    ];

    // Optional. Input only. The resource name of a secret version in Secret
    // Manager which contains the password used to connect to the Oracle
    // Goldengate. Format:
    // projects/{project}/secrets/{secret}/versions/{version}.
    string password_secret_version = 8 [
      (google.api.field_behavior) = OPTIONAL,
      (google.api.field_behavior) = INPUT_ONLY,
      (google.api.resource_reference) = {
        type: "secretmanager.googleapis.com/SecretVersion"
      }
    ];
  }

  // Optional. The technology type.
  string technology_type = 1 [(google.api.field_behavior) = OPTIONAL];

  // Optional. The name of the GoldengateDeployment associated with the
  // GoldengateConnection.
  // Format:
  // projects/{project}/locations/{location}/goldengateDeployments/{goldengate_deployment}
  string goldengate_deployment_id = 2 [
    (google.api.field_behavior) = OPTIONAL,
    (google.api.resource_reference) = {
      type: "oracledatabase.googleapis.com/GoldengateDeployment"
    }
  ];

  // Optional. The host of the GoldengateConnection.
  string host = 3 [(google.api.field_behavior) = OPTIONAL];

  // Optional. The port of the GoldengateConnection.
  int32 port = 4 [(google.api.field_behavior) = OPTIONAL];

  // Optional. The username credential.
  string username = 5 [(google.api.field_behavior) = OPTIONAL];
}

// The properties of GoldengateGenericConnectionProperties.
message GoldengateGenericConnectionProperties {
  // Optional. The technology type.
  string technology_type = 1 [(google.api.field_behavior) = OPTIONAL];

  // Optional. The host of the GenericConnection.
  string host = 2 [(google.api.field_behavior) = OPTIONAL];
}

// The properties of GoldengateGoogleCloudStorageConnectionProperties.
message GoldengateGoogleCloudStorageConnectionProperties {
  // Optional. The technology type.
  string technology_type = 1 [(google.api.field_behavior) = OPTIONAL];

  // Optional. The base64 encoded content of the service account key file
  // containing the credentials required to use Google Cloud Storage.
  string service_account_key_file = 3 [(google.api.field_behavior) = OPTIONAL];
}

// The properties of GoldengateGoogleBigQueryConnectionProperties.
message GoldengateGoogleBigQueryConnectionProperties {
  // Optional. The technology type.
  string technology_type = 1 [(google.api.field_behavior) = OPTIONAL];

  // Optional. The base64 encoded content of the service account key file
  // containing the credentials required to use Google BigQuery.
  string service_account_key_file = 3 [(google.api.field_behavior) = OPTIONAL];
}

// Properties of GoldengateMysqlConnection.
message GoldengateMysqlConnectionProperties {
  // Enum for Security Type for MySQL.
  enum MysqlSecurityProtocol {
    // Security type not specified.
    MYSQL_SECURITY_PROTOCOL_UNSPECIFIED = 0;

    // Plain text communication.
    PLAIN = 1;

    // Transport Layer Security.
    TLS = 2;

    // Mutual Transport Layer Security.
    MTLS = 3;
  }

  // Enum for SSL modes for MySQL.
  enum SSLMode {
    // SSL mode not specified.
    SSL_MODE_UNSPECIFIED = 0;

    // SSL is disabled.
    DISABLED = 1;

    // SSL is preferred.
    PREFERRED = 2;

    // SSL is required.
    REQUIRED = 3;

    // SSL is required and certificate is verified.
    VERIFY_CA = 4;

    // SSL is required and certificate and hostname are verified.
    VERIFY_IDENTITY = 5;
  }

  // The password Oracle Goldengate uses to connect the associated system of
  // the given technology. It must conform to the specific security
  // requirements including length, case sensitivity, and so on.
  oneof connection_password_options {
    // Optional. Input only. The password Oracle Goldengate uses to connect to
    // MySQL in plain text.
    string password = 15 [
      (google.api.field_behavior) = OPTIONAL,
      (google.api.field_behavior) = INPUT_ONLY
    ];

    // Optional. Input only. The resource name of a secret version in Secret
    // Manager which contains the password Oracle Goldengate uses to connect to
    // MySQL. Format: projects/{project}/secrets/{secret}/versions/{version}.
    string password_secret_version = 16 [
      (google.api.field_behavior) = OPTIONAL,
      (google.api.field_behavior) = INPUT_ONLY,
      (google.api.resource_reference) = {
        type: "secretmanager.googleapis.com/SecretVersion"
      }
    ];
  }

  // Optional. The technology type of MysqlConnection.
  string technology_type = 1 [(google.api.field_behavior) = OPTIONAL];

  // Optional. The username Oracle Goldengate uses to connect the associated
  // system of the given technology.
  string username = 2 [(google.api.field_behavior) = OPTIONAL];

  // Optional. The name or address of a host.
  string host = 4 [(google.api.field_behavior) = OPTIONAL];

  // Optional. The port of an endpoint usually specified for a connection.
  int32 port = 5 [(google.api.field_behavior) = OPTIONAL];

  // Optional. The name of the database.
  string database = 6 [(google.api.field_behavior) = OPTIONAL];

  // Optional. Security Type for MySQL.
  MysqlSecurityProtocol security_protocol = 7
      [(google.api.field_behavior) = OPTIONAL];

  // Optional. SSL modes for MySQL.
  SSLMode ssl_mode = 8 [(google.api.field_behavior) = OPTIONAL];

  // Optional. Database Certificate - The base64 encoded content of a .pem or
  // .crt file containing the server public key (for 1 and 2-way SSL).
  string ssl_ca_file = 9 [(google.api.field_behavior) = OPTIONAL];

  // Optional. The base64 encoded list of certificates revoked by the trusted
  // certificate authorities (Trusted CA).
  string ssl_crl_file = 10 [(google.api.field_behavior) = OPTIONAL];

  // Optional. Client Certificate - The base64 encoded content of a .pem or .crt
  // file containing the client public key (for 2-way SSL).
  string ssl_cert_file = 11 [(google.api.field_behavior) = OPTIONAL];

  // Optional. Client Key - The base64 encoded content of a .pem or .crt file
  // containing the client private key (for 2-way SSL).
  string ssl_key_file = 12 [(google.api.field_behavior) = OPTIONAL];

  // Optional. An array of name-value pair attribute entries.
  // Used as additional parameters in connection string.
  repeated NameValuePair additional_attributes = 13
      [(google.api.field_behavior) = OPTIONAL];

  // Optional. The OCID of the database system being referenced.
  string db_system_id = 14 [(google.api.field_behavior) = OPTIONAL];
}

// The properties of GoldengateKafkaConnection.
message GoldengateKafkaConnectionProperties {
  // Enum for Security Type for Kafka.
  enum KafkaSecurityProtocol {
    // Security type not specified.
    KAFKA_SECURITY_PROTOCOL_UNSPECIFIED = 0;

    // SSL security protocol.
    SSL = 1;

    // SASL SSL security protocol.
    SASL_SSL = 2;

    // Plaintext security protocol.
    PLAINTEXT = 3;

    // SASL Plaintext security protocol.
    SASL_PLAINTEXT = 4;
  }

  // The password for Kafka basic/SASL auth.
  oneof connection_password_options {
    // Optional. Input only. The password for Kafka basic/SASL auth in plain
    // text.
    string password = 16 [
      (google.api.field_behavior) = OPTIONAL,
      (google.api.field_behavior) = INPUT_ONLY
    ];

    // Optional. Input only. The resource name of a secret version in Secret
    // Manager which contains the password for Kafka basic/SASL auth. Format:
    // projects/{project}/secrets/{secret}/versions/{version}.
    string password_secret_version = 20 [
      (google.api.field_behavior) = OPTIONAL,
      (google.api.field_behavior) = INPUT_ONLY,
      (google.api.resource_reference) = {
        type: "secretmanager.googleapis.com/SecretVersion"
      }
    ];
  }

  // The TrustStore password.
  oneof trust_store_password_options {
    // Optional. Input only. The TrustStore password in plain text.
    string trust_store_password = 17 [
      (google.api.field_behavior) = OPTIONAL,
      (google.api.field_behavior) = INPUT_ONLY
    ];

    // Optional. Input only. The resource name of a secret version in Secret
    // Manager which contains the TrustStore password. Format:
    // projects/{project}/secrets/{secret}/versions/{version}.
    string trust_store_password_secret_version = 21 [
      (google.api.field_behavior) = OPTIONAL,
      (google.api.field_behavior) = INPUT_ONLY,
      (google.api.resource_reference) = {
        type: "secretmanager.googleapis.com/SecretVersion"
      }
    ];
  }

  // The KeyStore password.
  oneof key_store_password_options {
    // Optional. Input only. The KeyStore password in plain text.
    string key_store_password = 18 [
      (google.api.field_behavior) = OPTIONAL,
      (google.api.field_behavior) = INPUT_ONLY
    ];

    // Optional. Input only. The resource name of a secret version in Secret
    // Manager which contains the KeyStore password. Format:
    // projects/{project}/secrets/{secret}/versions/{version}.
    string key_store_password_secret_version = 22 [
      (google.api.field_behavior) = OPTIONAL,
      (google.api.field_behavior) = INPUT_ONLY,
      (google.api.resource_reference) = {
        type: "secretmanager.googleapis.com/SecretVersion"
      }
    ];
  }

  // The password for the cert inside of the KeyStore.
  // In case it differs from the KeyStore password, it should be provided.
  oneof ssl_key_password_options {
    // Optional. Input only. The password for the cert inside of the KeyStore in
    // plain text.
    string ssl_key_password = 19 [
      (google.api.field_behavior) = OPTIONAL,
      (google.api.field_behavior) = INPUT_ONLY
    ];

    // Optional. Input only. The resource name of a secret version in Secret
    // Manager which contains the password for the cert inside of the KeyStore.
    // Format: projects/{project}/secrets/{secret}/versions/{version}.
    string ssl_key_password_secret_version = 23 [
      (google.api.field_behavior) = OPTIONAL,
      (google.api.field_behavior) = INPUT_ONLY,
      (google.api.resource_reference) = {
        type: "secretmanager.googleapis.com/SecretVersion"
      }
    ];
  }

  // Optional. The technology type of KafkaConnection.
  string technology_type = 1 [(google.api.field_behavior) = OPTIONAL];

  // Optional. The OCID of the stream pool being referenced.
  string stream_pool_id = 2 [(google.api.field_behavior) = OPTIONAL];

  // Optional. The OCID of the Kafka cluster being referenced from OCI Streaming
  // with Apache Kafka.
  string cluster_id = 3 [(google.api.field_behavior) = OPTIONAL];

  // Optional. Kafka bootstrap. Equivalent of bootstrap.servers configuration
  // property in Kafka: list of KafkaBootstrapServer objects specified by
  // host/port. Used for establishing the initial connection to the Kafka
  // cluster. Example: "server1.example.com:9092,server2.example.com:9092"
  repeated KafkaBootstrapServer bootstrap_servers = 4
      [(google.api.field_behavior) = OPTIONAL];

  // Optional. Security Type for Kafka.
  KafkaSecurityProtocol security_protocol = 5
      [(google.api.field_behavior) = OPTIONAL];

  // Optional. The username Oracle Goldengate uses to connect the associated
  // system of the given technology.
  string username = 6 [(google.api.field_behavior) = OPTIONAL];

  // Optional. The base64 encoded content of the TrustStore file.
  string trust_store_file = 8 [(google.api.field_behavior) = OPTIONAL];

  // Optional. The base64 encoded content of the KeyStore file.
  string key_store_file = 10 [(google.api.field_behavior) = OPTIONAL];

  // Optional. The base64 encoded content of the consumer.properties file.
  string consumer_properties_file = 13 [(google.api.field_behavior) = OPTIONAL];

  // Optional. The base64 encoded content of the producer.properties file.
  string producer_properties_file = 14 [(google.api.field_behavior) = OPTIONAL];

  // Optional. Specifies that the user intends to authenticate to the instance
  // using a resource principal. Applicable only for OCI Streaming connections.
  bool use_resource_principal = 15 [(google.api.field_behavior) = OPTIONAL];
}

// The properties of GoldengateKafkaSchemaRegistryConnection.
message GoldengateKafkaSchemaRegistryConnectionProperties {
  // Enum for authentication mechanism to access Schema Registry.
  enum AuthenticationType {
    // Authentication type not specified.
    AUTHENTICATION_TYPE_UNSPECIFIED = 0;

    // No authentication.
    NONE = 1;

    // Basic authentication.
    BASIC = 2;

    // Mutual authentication.
    MUTUAL = 3;
  }

  // The password to access Schema Registry using basic authentication.
  oneof connection_password_options {
    // Optional. Input only. The password to access Schema Registry in plain
    // text.
    string password = 11 [
      (google.api.field_behavior) = OPTIONAL,
      (google.api.field_behavior) = INPUT_ONLY
    ];

    // Optional. Input only. The resource name of a secret version in Secret
    // Manager which contains the password to access Schema Registry using basic
    // authentication. Format:
    // projects/{project}/secrets/{secret}/versions/{version}.
    string password_secret_version = 15 [
      (google.api.field_behavior) = OPTIONAL,
      (google.api.field_behavior) = INPUT_ONLY,
      (google.api.resource_reference) = {
        type: "secretmanager.googleapis.com/SecretVersion"
      }
    ];
  }

  // The TrustStore password.
  oneof trust_store_password_options {
    // Optional. Input only. The TrustStore password in plain text.
    string trust_store_password = 12 [
      (google.api.field_behavior) = OPTIONAL,
      (google.api.field_behavior) = INPUT_ONLY
    ];

    // Optional. Input only. The resource name of a secret version in Secret
    // Manager which contains the TrustStore password. Format:
    // projects/{project}/secrets/{secret}/versions/{version}.
    string trust_store_password_secret_version = 16 [
      (google.api.field_behavior) = OPTIONAL,
      (google.api.field_behavior) = INPUT_ONLY,
      (google.api.resource_reference) = {
        type: "secretmanager.googleapis.com/SecretVersion"
      }
    ];
  }

  // The KeyStore password.
  oneof key_store_password_options {
    // Optional. Input only. The KeyStore password in plain text.
    string key_store_password = 13 [
      (google.api.field_behavior) = OPTIONAL,
      (google.api.field_behavior) = INPUT_ONLY
    ];

    // Optional. Input only. The resource name of a secret version in Secret
    // Manager which contains the KeyStore password. Format:
    // projects/{project}/secrets/{secret}/versions/{version}.
    string key_store_password_secret_version = 17 [
      (google.api.field_behavior) = OPTIONAL,
      (google.api.field_behavior) = INPUT_ONLY,
      (google.api.resource_reference) = {
        type: "secretmanager.googleapis.com/SecretVersion"
      }
    ];
  }

  // The password for the cert inside the KeyStore.
  oneof ssl_key_password_options {
    // Optional. Input only. The password for the cert inside the KeyStore in
    // plain text.
    string ssl_key_password = 14 [
      (google.api.field_behavior) = OPTIONAL,
      (google.api.field_behavior) = INPUT_ONLY
    ];

    // Optional. Input only. The resource name of a secret version in Secret
    // Manager which contains the password for the cert inside the KeyStore.
    // Format: projects/{project}/secrets/{secret}/versions/{version}.
    string ssl_key_password_secret_version = 18 [
      (google.api.field_behavior) = OPTIONAL,
      (google.api.field_behavior) = INPUT_ONLY,
      (google.api.resource_reference) = {
        type: "secretmanager.googleapis.com/SecretVersion"
      }
    ];
  }

  // Optional. The technology type of KafkaSchemaRegistryConnection.
  string technology_type = 1 [(google.api.field_behavior) = OPTIONAL];

  // Optional. Kafka Schema Registry URL.
  // e.g.: 'https://server1.us.oracle.com:8081'
  string url = 2 [(google.api.field_behavior) = OPTIONAL];

  // Optional. Used authentication mechanism to access Schema Registry.
  AuthenticationType authentication_type = 3
      [(google.api.field_behavior) = OPTIONAL];

  // Optional. The username to access Schema Registry using basic
  // authentication. This value is injected into
  // 'schema.registry.basic.auth.user.info=user:password' configuration
  // property.
  string username = 4 [(google.api.field_behavior) = OPTIONAL];

  // Optional. The base64 encoded content of the TrustStore file.
  string trust_store_file = 6 [(google.api.field_behavior) = OPTIONAL];

  // Optional. The base64 encoded content of the KeyStore file.
  string key_store_file = 8 [(google.api.field_behavior) = OPTIONAL];
}

// The properties of GoldengateOciObjectStorageConnection.
message GoldengateOciObjectStorageConnectionProperties {
  // Optional. The technology type of OciObjectStorageConnection.
  string technology_type = 1 [(google.api.field_behavior) = OPTIONAL];

  // Optional. The OCID of the related OCI tenancy.
  string tenancy_id = 2 [(google.api.field_behavior) = OPTIONAL];

  // Optional. The name of the region of OCI Object Storage. e.g.: us-ashburn-1
  // If the region is not provided, backend will default to the default region.
  string region = 3 [(google.api.field_behavior) = OPTIONAL];

  // Optional. The OCID of the OCI user who will access the Object Storage.
  // The user must have write access to the bucket they want to connect to.
  string user_id = 4 [(google.api.field_behavior) = OPTIONAL];

  // Optional. The content of the private key file (PEM file)
  // corresponding to the API key of the fingerprint.
  string private_key_file = 5 [(google.api.field_behavior) = OPTIONAL];

  // Optional. The passphrase of the private key.
  string private_key_passphrase_secret = 6
      [(google.api.field_behavior) = OPTIONAL];

  // Optional. The fingerprint of the API Key of the user specified by the
  // userId.
  string public_key_fingerprint = 7 [(google.api.field_behavior) = OPTIONAL];

  // Optional. Specifies that the user intends to authenticate to the instance
  // using a resource principal.
  bool use_resource_principal = 8 [(google.api.field_behavior) = OPTIONAL];
}

// The properties of GoldengateAzureDataLakeStorageConnection.
message GoldengateAzureDataLakeStorageConnectionProperties {
  // Enum for authentication mechanism to access Azure Data Lake Storage.
  enum AuthenticationType {
    // Authentication type not specified.
    AUTHENTICATION_TYPE_UNSPECIFIED = 0;

    // Shared key authentication.
    SHARED_KEY = 1;

    // Shared access signature authentication.
    SHARED_ACCESS_SIGNATURE = 2;

    // Azure active directory authentication.
    AZURE_ACTIVE_DIRECTORY = 3;
  }

  // Optional. The technology type of AzureDataLakeStorageConnection.
  string technology_type = 1 [(google.api.field_behavior) = OPTIONAL];

  // Optional. Authentication mechanism to access Azure Data Lake Storage.
  AuthenticationType authentication_type = 2
      [(google.api.field_behavior) = OPTIONAL];

  // Optional. Sets the Azure storage account name.
  string account = 3 [(google.api.field_behavior) = OPTIONAL];

  // Optional. Azure storage account key. This property is required when
  // 'authentication_type' is set to 'SHARED_KEY'.
  string account_key_secret = 4 [(google.api.field_behavior) = OPTIONAL];

  // Optional. Credential that uses a shared access signature (SAS) to
  // authenticate to an Azure Service.
  string sas_token_secret = 5 [(google.api.field_behavior) = OPTIONAL];

  // Optional. Azure tenant ID of the application. This property is required
  // when 'authentication_type' is set to 'AZURE_ACTIVE_DIRECTORY'.
  string azure_tenant_id = 6 [(google.api.field_behavior) = OPTIONAL];

  // Optional. Azure client ID of the application. This property is required
  // when 'authentication_type' is set to 'AZURE_ACTIVE_DIRECTORY'.
  string client_id = 7 [(google.api.field_behavior) = OPTIONAL];

  // Optional. Azure client secret (aka application password) for
  // authentication.
  string client_secret = 8 [(google.api.field_behavior) = OPTIONAL];

  // Optional. Azure Storage service endpoint.
  // e.g: https://test.blob.core.windows.net
  string endpoint = 9 [(google.api.field_behavior) = OPTIONAL];

  // Optional. The endpoint used for authentication with Microsoft Entra ID
  // (formerly Azure Active Directory). Default value:
  // https://login.microsoftonline.com
  string azure_authority_host = 10 [(google.api.field_behavior) = OPTIONAL];
}

// The properties of GoldengateAzureSynapseAnalyticsConnection.
message GoldengateAzureSynapseAnalyticsConnectionProperties {
  // The password Oracle Goldengate uses to connect the associated system of
  // the given technology.
  oneof connection_password_options {
    // Optional. Input only. The password Oracle Goldengate uses for Azure
    // Synapse Analytics connection in plain text.
    string password = 5 [
      (google.api.field_behavior) = OPTIONAL,
      (google.api.field_behavior) = INPUT_ONLY
    ];

    // Optional. Input only. The resource name of a secret version in Secret
    // Manager which contains the password Oracle Goldengate uses for Azure
    // Synapse Analytics connection. Format:
    // projects/{project}/secrets/{secret}/versions/{version}.
    string password_secret_version = 6 [
      (google.api.field_behavior) = OPTIONAL,
      (google.api.field_behavior) = INPUT_ONLY,
      (google.api.resource_reference) = {
        type: "secretmanager.googleapis.com/SecretVersion"
      }
    ];
  }

  // Optional. The technology type of AzureSynapseAnalyticsConnection.
  string technology_type = 1 [(google.api.field_behavior) = OPTIONAL];

  // Optional. JDBC connection string.
  // e.g.:
  // 'jdbc:sqlserver://<synapse-workspace>.sql.azuresynapse.net:1433;database=<db-name>;encrypt=true;trustServerCertificate=false;hostNameInCertificate=*.sql.azuresynapse.net;loginTimeout=300;'
  string connection_string = 2 [(google.api.field_behavior) = OPTIONAL];

  // Optional. The username Oracle Goldengate uses to connect the associated
  // system of the given technology.
  string username = 3 [(google.api.field_behavior) = OPTIONAL];
}

// The properties of GoldengatePostgresqlConnection.
message GoldengatePostgresqlConnectionProperties {
  // Enum for Security protocol for PostgreSQL.
  enum PostgresqlSecurityProtocol {
    // Security protocol not specified.
    POSTGRESQL_SECURITY_PROTOCOL_UNSPECIFIED = 0;

    // Plain text communication.
    PLAIN = 1;

    // Transport Layer Security.
    TLS = 2;

    // Mutual Transport Layer Security.
    MTLS = 3;
  }

  // Enum for SSL modes for PostgreSQL.
  enum PostgresqlSslMode {
    // SSL mode not specified.
    POSTGRESQL_SSL_MODE_UNSPECIFIED = 0;

    // Prefer SSL.
    PREFER = 1;

    // Require SSL.
    REQUIRE = 2;

    // Verify Certificate Authority.
    VERIFY_CA = 3;

    // Verify Full.
    VERIFY_FULL = 4;
  }

  // The password Oracle Goldengate uses to connect the associated system of
  // the given technology.
  oneof connection_password_options {
    // Optional. Input only. The password Oracle Goldengate uses for PostgreSQL
    // connection in plain text.
    string password = 15 [
      (google.api.field_behavior) = OPTIONAL,
      (google.api.field_behavior) = INPUT_ONLY
    ];

    // Optional. Input only. The resource name of a secret version in Secret
    // Manager which contains the password Oracle Goldengate uses for PostgreSQL
    // connection. Format:
    // projects/{project}/secrets/{secret}/versions/{version}.
    string password_secret_version = 16 [
      (google.api.field_behavior) = OPTIONAL,
      (google.api.field_behavior) = INPUT_ONLY,
      (google.api.resource_reference) = {
        type: "secretmanager.googleapis.com/SecretVersion"
      }
    ];
  }

  // Optional. The technology type of PostgresqlConnection.
  string technology_type = 1 [(google.api.field_behavior) = OPTIONAL];

  // Optional. The name of the database.
  string database = 2 [(google.api.field_behavior) = OPTIONAL];

  // Optional. The name or address of a host.
  string host = 3 [(google.api.field_behavior) = OPTIONAL];

  // Optional. The port of an endpoint usually specified for a connection.
  int32 port = 4 [(google.api.field_behavior) = OPTIONAL];

  // Optional. The username Oracle Goldengate uses to connect the associated
  // system of the given technology.
  string username = 5 [(google.api.field_behavior) = OPTIONAL];

  // Optional. An array of name-value pair attribute entries.
  // Used as additional parameters in connection string.
  repeated NameValuePair additional_attributes = 7
      [(google.api.field_behavior) = OPTIONAL];

  // Optional. Security protocol for PostgreSQL.
  PostgresqlSecurityProtocol security_protocol = 8
      [(google.api.field_behavior) = OPTIONAL];

  // Optional. SSL modes for PostgreSQL.
  PostgresqlSslMode ssl_mode = 9 [(google.api.field_behavior) = OPTIONAL];

  // Optional. The base64 encoded certificate of the trusted certificate
  // authorities (Trusted CA) for PostgreSQL.
  string ssl_ca_file = 10 [(google.api.field_behavior) = OPTIONAL];

  // Optional. The base64 encoded list of certificates revoked by the trusted
  // certificate authorities (Trusted CA).
  string ssl_crl_file = 11 [(google.api.field_behavior) = OPTIONAL];

  // Optional. The base64 encoded certificate of the PostgreSQL server.
  string ssl_cert_file = 12 [(google.api.field_behavior) = OPTIONAL];

  // Optional. The base64 encoded private key of the PostgreSQL server.
  string ssl_key_file = 13 [(google.api.field_behavior) = OPTIONAL];

  // Optional. The OCID of the database system being referenced.
  string db_system_id = 14 [(google.api.field_behavior) = OPTIONAL];
}

// The properties of GoldengateMicrosoftSqlserverConnection.
message GoldengateMicrosoftSqlserverConnectionProperties {
  // Enum for Security Type for Microsoft SQL Server.
  enum MicrosoftSqlserverSecurityProtocol {
    // Security type not specified.
    MICROSOFT_SQLSERVER_SECURITY_PROTOCOL_UNSPECIFIED = 0;

    // Plain text communication.
    PLAIN = 1;

    // Transport Layer Security.
    TLS = 2;
  }

  // The password Oracle Goldengate uses to connect the associated Microsoft
  // SQL Server.
  oneof connection_password_options {
    // Optional. Input only. The password Oracle Goldengate uses for Microsoft
    // SQL Server connection in plain text.
    string password = 11 [
      (google.api.field_behavior) = OPTIONAL,
      (google.api.field_behavior) = INPUT_ONLY
    ];

    // Optional. Input only. The resource name of a secret version in Secret
    // Manager which contains the password Oracle Goldengate uses for Microsoft
    // SQL Server connection. Format:
    // projects/{project}/secrets/{secret}/versions/{version}.
    string password_secret_version = 12 [
      (google.api.field_behavior) = OPTIONAL,
      (google.api.field_behavior) = INPUT_ONLY,
      (google.api.resource_reference) = {
        type: "secretmanager.googleapis.com/SecretVersion"
      }
    ];
  }

  // Optional. The technology type of MicrosoftSqlserverConnection.
  string technology_type = 1 [(google.api.field_behavior) = OPTIONAL];

  // Optional. The name of the database.
  string database = 2 [(google.api.field_behavior) = OPTIONAL];

  // Optional. The name or address of a host.
  string host = 3 [(google.api.field_behavior) = OPTIONAL];

  // Optional. The port of an endpoint usually specified for a connection.
  int32 port = 4 [(google.api.field_behavior) = OPTIONAL];

  // Optional. The username Oracle Goldengate uses to connect to the Microsoft
  // SQL Server.
  string username = 5 [(google.api.field_behavior) = OPTIONAL];

  // Optional. An array of name-value pair attribute entries.
  // Used as additional parameters in connection string.
  repeated NameValuePair additional_attributes = 7
      [(google.api.field_behavior) = OPTIONAL];

  // Optional. Security Type for Microsoft SQL Server.
  MicrosoftSqlserverSecurityProtocol security_protocol = 8
      [(google.api.field_behavior) = OPTIONAL];

  // Optional. Database Certificate - The base64 encoded content of a .pem or
  // .crt file containing the server public key (for 1-way SSL).
  string ssl_ca_file = 9 [(google.api.field_behavior) = OPTIONAL];

  // Optional. If set to true, the driver validates the certificate that is sent
  // by the database server.
  bool server_certificate_validation_required = 10
      [(google.api.field_behavior) = OPTIONAL];
}

// The properties of GoldengateAmazonS3Connection.
message GoldengateAmazonS3ConnectionProperties {
  // Optional. The technology type of AmazonS3Connection.
  string technology_type = 1 [(google.api.field_behavior) = OPTIONAL];

  // Optional. Access key ID to access the Amazon S3 bucket.
  string access_key_id = 2 [(google.api.field_behavior) = OPTIONAL];

  // Optional. Secret access key to access the Amazon S3 bucket.
  string secret_access_key_secret = 3 [(google.api.field_behavior) = OPTIONAL];

  // Optional. The Amazon Endpoint for S3.
  string endpoint = 4 [(google.api.field_behavior) = OPTIONAL];

  // Optional. The name of the AWS region where the bucket is created.
  string region = 5 [(google.api.field_behavior) = OPTIONAL];
}

// The properties of GoldengateHdfsConnection.
message GoldengateHdfsConnectionProperties {
  // Optional. The technology type of HdfsConnection.
  string technology_type = 1 [(google.api.field_behavior) = OPTIONAL];

  // Optional. The content of the Hadoop Distributed File System
  // configuration file (core-site.xml).
  string core_site_xml = 2 [(google.api.field_behavior) = OPTIONAL];
}

// The properties of GoldengateJavaMessageServiceConnection.
message GoldengateJavaMessageServiceConnectionProperties {
  // Enum for Security protocol for Java Message Service.
  enum JmsSecurityProtocol {
    // Security protocol not specified.
    JMS_SECURITY_PROTOCOL_UNSPECIFIED = 0;

    // Plain text communication.
    PLAIN = 1;

    // Transport Layer Security.
    TLS = 2;

    // Mutual Transport Layer Security.
    MTLS = 3;
  }

  // Enum for Authentication type for Java Message Service.
  enum JmsAuthenticationType {
    // Authentication type not specified.
    JMS_AUTHENTICATION_TYPE_UNSPECIFIED = 0;

    // No authentication.
    NONE = 1;

    // Basic authentication.
    BASIC = 2;
  }

  // The password Oracle Goldengate uses to connect the associated Java Message
  // Service.
  oneof connection_password_options {
    // Optional. Input only. The password Oracle Goldengate uses to connect the
    // Java Message Service in plain text.
    string password = 19 [
      (google.api.field_behavior) = OPTIONAL,
      (google.api.field_behavior) = INPUT_ONLY
    ];

    // Optional. Input only. The resource name of a secret version in Secret
    // Manager which contains the password Oracle Goldengate uses to connect the
    // associated Java Message Service. Format:
    // projects/{project}/secrets/{secret}/versions/{version}.
    string password_secret_version = 23 [
      (google.api.field_behavior) = OPTIONAL,
      (google.api.field_behavior) = INPUT_ONLY,
      (google.api.resource_reference) = {
        type: "secretmanager.googleapis.com/SecretVersion"
      }
    ];
  }

  // The TrustStore password.
  oneof trust_store_password_options {
    // Optional. Input only. The TrustStore password in plain text.
    string trust_store_password = 20 [
      (google.api.field_behavior) = OPTIONAL,
      (google.api.field_behavior) = INPUT_ONLY
    ];

    // Optional. Input only. The resource name of a secret version in Secret
    // Manager which contains the TrustStore password. Format:
    // projects/{project}/secrets/{secret}/versions/{version}.
    string trust_store_password_secret_version = 24 [
      (google.api.field_behavior) = OPTIONAL,
      (google.api.field_behavior) = INPUT_ONLY,
      (google.api.resource_reference) = {
        type: "secretmanager.googleapis.com/SecretVersion"
      }
    ];
  }

  // The KeyStore password.
  oneof key_store_password_options {
    // Optional. Input only. The KeyStore password in plain text.
    string key_store_password = 21 [
      (google.api.field_behavior) = OPTIONAL,
      (google.api.field_behavior) = INPUT_ONLY
    ];

    // Optional. Input only. The resource name of a secret version in Secret
    // Manager which contains the KeyStore password. Format:
    // projects/{project}/secrets/{secret}/versions/{version}.
    string key_store_password_secret_version = 25 [
      (google.api.field_behavior) = OPTIONAL,
      (google.api.field_behavior) = INPUT_ONLY,
      (google.api.resource_reference) = {
        type: "secretmanager.googleapis.com/SecretVersion"
      }
    ];
  }

  // The password for the cert inside of the KeyStore.
  // In case it differs from the KeyStore password, it should be provided.
  oneof ssl_key_password_options {
    // Optional. Input only. The password for the cert inside of the KeyStore in
    // plain text.
    string ssl_key_password = 22 [
      (google.api.field_behavior) = OPTIONAL,
      (google.api.field_behavior) = INPUT_ONLY
    ];

    // Optional. Input only. The resource name of a secret version in Secret
    // Manager which contains the password for the cert inside of the KeyStore.
    // Format: projects/{project}/secrets/{secret}/versions/{version}.
    string ssl_key_password_secret_version = 26 [
      (google.api.field_behavior) = OPTIONAL,
      (google.api.field_behavior) = INPUT_ONLY,
      (google.api.resource_reference) = {
        type: "secretmanager.googleapis.com/SecretVersion"
      }
    ];
  }

  // Optional. The technology type of JavaMessageServiceConnection.
  string technology_type = 1 [(google.api.field_behavior) = OPTIONAL];

  // Optional. If set to true, Java Naming and Directory Interface (JNDI)
  // properties should be provided.
  bool use_jndi = 2 [(google.api.field_behavior) = OPTIONAL];

  // Optional. The Connection Factory can be looked up using this name.
  // e.g.: 'ConnectionFactory'
  string jndi_connection_factory = 3 [(google.api.field_behavior) = OPTIONAL];

  // Optional. The URL that Java Message Service will use to contact the JNDI
  // provider. e.g.: 'tcp://myjms.host.domain:61616?jms.prefetchPolicy.all=1000'
  string jndi_provider_url = 4 [(google.api.field_behavior) = OPTIONAL];

  // Optional. The implementation of javax.naming.spi.InitialContextFactory
  // interface used to obtain initial naming context.
  string jndi_initial_context_factory = 5
      [(google.api.field_behavior) = OPTIONAL];

  // Optional. Specifies the identity of the principal (user) to be
  // authenticated.
  string jndi_security_principal = 6 [(google.api.field_behavior) = OPTIONAL];

  // Optional. The password associated to the principal.
  string jndi_security_credentials_secret = 7
      [(google.api.field_behavior) = OPTIONAL];

  // Optional. Connection URL of the Java Message Service, specifying the
  // protocol, host, and port. e.g.: 'mq://myjms.host.domain:7676'
  string connection_url = 8 [(google.api.field_behavior) = OPTIONAL];

  // Optional. The Java class implementing javax.jms.ConnectionFactory interface
  // supplied by the JMS provider.
  string connection_factory = 9 [(google.api.field_behavior) = OPTIONAL];

  // Optional. The username Oracle Goldengate uses to connect to the Java
  // Message Service.
  string username = 10 [(google.api.field_behavior) = OPTIONAL];

  // Optional. Security protocol for Java Message Service.
  JmsSecurityProtocol security_protocol = 12
      [(google.api.field_behavior) = OPTIONAL];

  // Optional. Authentication type for Java Message Service.
  JmsAuthenticationType authentication_type = 13
      [(google.api.field_behavior) = OPTIONAL];

  // Optional. The base64 encoded content of the TrustStore file.
  string trust_store_file = 14 [(google.api.field_behavior) = OPTIONAL];

  // Optional. The base64 encoded content of the KeyStore file.
  string key_store_file = 16 [(google.api.field_behavior) = OPTIONAL];
}

// The properties of GoldengateMongodbConnection.
message GoldengateMongodbConnectionProperties {
  // Enum for Security Type for MongoDB.
  enum MongodbSecurityProtocol {
    // Security type not specified.
    MONGODB_SECURITY_PROTOCOL_UNSPECIFIED = 0;

    // Plain text communication.
    PLAIN = 1;

    // Transport Layer Security.
    TLS = 2;

    // Mutual Transport Layer Security.
    MTLS = 3;
  }

  // The password Oracle Goldengate uses to connect the associated database.
  oneof connection_password_options {
    // Optional. Input only. The password Oracle Goldengate uses to connect the
    // Mongodb connection in plain text.
    string password = 10 [
      (google.api.field_behavior) = OPTIONAL,
      (google.api.field_behavior) = INPUT_ONLY
    ];

    // Optional. Input only. The resource name of a secret version in Secret
    // Manager which contains the password Oracle Goldengate uses to connect the
    // Mongodb connection. Format:
    // projects/{project}/secrets/{secret}/versions/{version}.
    string password_secret_version = 12 [
      (google.api.field_behavior) = OPTIONAL,
      (google.api.field_behavior) = INPUT_ONLY,
      (google.api.resource_reference) = {
        type: "secretmanager.googleapis.com/SecretVersion"
      }
    ];
  }

  // Client Certificate key file password.
  oneof tls_certificate_key_file_password_options {
    // Optional. Input only. The Client Certificate key file password in plain
    // text.
    string tls_certificate_key_file_password = 11 [
      (google.api.field_behavior) = OPTIONAL,
      (google.api.field_behavior) = INPUT_ONLY
    ];

    // Optional. Input only. The resource name of a secret version in Secret
    // Manager which contains the Client Certificate key file password in Secret
    // Manager. Format: projects/{project}/secrets/{secret}/versions/{version}.
    string tls_certificate_key_file_password_secret_version = 13 [
      (google.api.field_behavior) = OPTIONAL,
      (google.api.field_behavior) = INPUT_ONLY,
      (google.api.resource_reference) = {
        type: "secretmanager.googleapis.com/SecretVersion"
      }
    ];
  }

  // Optional. The technology type of MongodbConnection.
  string technology_type = 1 [(google.api.field_behavior) = OPTIONAL];

  // Optional. MongoDB connection string.
  // e.g.: 'mongodb://mongodb0.example.com:27017/recordsrecords'
  string connection_string = 2 [(google.api.field_behavior) = OPTIONAL];

  // Optional. The username Oracle Goldengate uses to connect to the database.
  string username = 3 [(google.api.field_behavior) = OPTIONAL];

  // Optional. The OCID of the Oracle Autonomous Json Database.
  string database_id = 5 [(google.api.field_behavior) = OPTIONAL];

  // Optional. Security Type for MongoDB.
  MongodbSecurityProtocol security_protocol = 6
      [(google.api.field_behavior) = OPTIONAL];

  // Optional. Database Certificate - The base64 encoded content of a .pem file,
  // containing the server public key (for 1 and 2-way SSL).
  string tls_ca_file = 7 [(google.api.field_behavior) = OPTIONAL];

  // Optional. Client Certificate - The base64 encoded content of a .pem file,
  // containing the client public key (for 2-way SSL).
  string tls_certificate_key_file = 8 [(google.api.field_behavior) = OPTIONAL];
}

// The properties of GoldengateOracleNosqlConnection.
message GoldengateOracleNosqlConnectionProperties {
  // Optional. The technology type of OracleNosqlConnection.
  string technology_type = 1 [(google.api.field_behavior) = OPTIONAL];

  // Optional. The OCID of the OCI tenancy.
  string tenancy_id = 2 [(google.api.field_behavior) = OPTIONAL];

  // Optional. The name of the region. e.g.: us-ashburn-1
  string region = 3 [(google.api.field_behavior) = OPTIONAL];

  // Optional. The OCID of the OCI user who will access the Oracle NoSQL
  // database.
  string user_id = 4 [(google.api.field_behavior) = OPTIONAL];

  // Optional. The content of the private key file (PEM file)
  // corresponding to the API key of the fingerprint.
  string private_key_file = 5 [(google.api.field_behavior) = OPTIONAL];

  // Optional. The passphrase of the private key.
  string private_key_passphrase_secret = 6
      [(google.api.field_behavior) = OPTIONAL];

  // Optional. The fingerprint of the API Key of the user specified by the
  // userId.
  string public_key_fingerprint = 7 [(google.api.field_behavior) = OPTIONAL];

  // Optional. Specifies that the user intends to authenticate to the instance
  // using a resource principal.
  bool use_resource_principal = 8 [(google.api.field_behavior) = OPTIONAL];
}

// The properties of GoldengateSnowflakeConnection.
message GoldengateSnowflakeConnectionProperties {
  // Enum for authentication mechanism to access Snowflake.
  enum AuthenticationType {
    // Authentication type not specified.
    AUTHENTICATION_TYPE_UNSPECIFIED = 0;

    // Basic authentication.
    BASIC = 1;

    // Key pair authentication.
    KEY_PAIR = 2;
  }

  // The password Oracle Goldengate uses to connect to Snowflake platform.
  oneof connection_password_options {
    // Optional. Input only. The password Oracle Goldengate uses to connect to
    // Snowflake platform in plain text.
    string password = 8 [
      (google.api.field_behavior) = OPTIONAL,
      (google.api.field_behavior) = INPUT_ONLY
    ];

    // Optional. Input only. The resource name of a secret version in Secret
    // Manager which contains the password Oracle Goldengate uses to connect to
    // Snowflake platform. Format:
    // projects/{project}/secrets/{secret}/versions/{version}.
    string password_secret_version = 9 [
      (google.api.field_behavior) = OPTIONAL,
      (google.api.field_behavior) = INPUT_ONLY,
      (google.api.resource_reference) = {
        type: "secretmanager.googleapis.com/SecretVersion"
      }
    ];
  }

  // Optional. The technology type of SnowflakeConnection.
  string technology_type = 1 [(google.api.field_behavior) = OPTIONAL];

  // Optional. JDBC connection URL.
  // e.g.:
  // 'jdbc:snowflake://<account_name>.snowflakecomputing.com/?warehouse=<warehouse-name>&db=<db-name>'
  string connection_url = 2 [(google.api.field_behavior) = OPTIONAL];

  // Optional. Used authentication mechanism to access Snowflake.
  AuthenticationType authentication_type = 3
      [(google.api.field_behavior) = OPTIONAL];

  // Optional. The username Oracle Goldengate uses to connect to Snowflake.
  string username = 4 [(google.api.field_behavior) = OPTIONAL];

  // Optional. The content of private key file in PEM format.
  string private_key_file = 6 [(google.api.field_behavior) = OPTIONAL];

  // Optional. Password if the private key file is encrypted.
  string private_key_passphrase_secret = 7
      [(google.api.field_behavior) = OPTIONAL];
}

// The properties of GoldengateAmazonRedshiftConnection.
message GoldengateAmazonRedshiftConnectionProperties {
  // The password Oracle Goldengate uses to connect the associated system of
  // the given technology.
  oneof connection_password_options {
    // Optional. Input only. The password Oracle Goldengate uses for Amazon
    // Redshift connection in plain text.
    string password = 5 [
      (google.api.field_behavior) = OPTIONAL,
      (google.api.field_behavior) = INPUT_ONLY
    ];

    // Optional. Input only. The resource name of a secret version in Secret
    // Manager which contains the password Oracle Goldengate uses for Amazon
    // Redshift connection. Format:
    // projects/{project}/secrets/{secret}/versions/{version}.
    string password_secret_version = 6 [
      (google.api.field_behavior) = OPTIONAL,
      (google.api.field_behavior) = INPUT_ONLY,
      (google.api.resource_reference) = {
        type: "secretmanager.googleapis.com/SecretVersion"
      }
    ];
  }

  // Optional. The technology type of AmazonRedshiftConnection.
  string technology_type = 1 [(google.api.field_behavior) = OPTIONAL];

  // Optional. Connection URL.
  // e.g.:
  // 'jdbc:redshift://aws-redshift-instance.aaaaaaaaaaaa.us-east-2.redshift.amazonaws.com:5439/mydb'
  string connection_url = 2 [(google.api.field_behavior) = OPTIONAL];

  // Optional. The username Oracle Goldengate uses to connect the associated
  // system of the given technology.
  string username = 3 [(google.api.field_behavior) = OPTIONAL];
}

// The properties of GoldengateElasticsearchConnection.
message GoldengateElasticsearchConnectionProperties {
  // Enum for Security protocol for Elasticsearch.
  enum ElasticsearchSecurityProtocol {
    // Security protocol not specified.
    ELASTICSEARCH_SECURITY_PROTOCOL_UNSPECIFIED = 0;

    // Plain text communication.
    PLAIN = 1;

    // Transport Layer Security.
    TLS = 2;
  }

  // Enum for Authentication type for Elasticsearch.
  enum ElasticsearchAuthenticationType {
    // Authentication type not specified.
    ELASTICSEARCH_AUTHENTICATION_TYPE_UNSPECIFIED = 0;

    // No authentication.
    NONE = 1;

    // Basic authentication.
    BASIC = 2;
  }

  // The password Oracle Goldengate uses to connect the associated system of
  // the given technology.
  oneof connection_password_options {
    // Optional. Input only. The password Oracle Goldengate uses for Elastic
    // Search connection in plain text.
    string password = 8 [
      (google.api.field_behavior) = OPTIONAL,
      (google.api.field_behavior) = INPUT_ONLY
    ];

    // Optional. Input only. The resource name of a secret version in Secret
    // Manager which contains the password Oracle Goldengate uses for Elastic
    // Search connection. Format:
    // projects/{project}/secrets/{secret}/versions/{version}.
    string password_secret_version = 9 [
      (google.api.field_behavior) = OPTIONAL,
      (google.api.field_behavior) = INPUT_ONLY,
      (google.api.resource_reference) = {
        type: "secretmanager.googleapis.com/SecretVersion"
      }
    ];
  }

  // Optional. The technology type of ElasticsearchConnection.
  string technology_type = 1 [(google.api.field_behavior) = OPTIONAL];

  // Optional. Comma separated list of Elasticsearch server addresses, specified
  // as host:port entries, where :port is optional. If port is not specified, it
  // defaults to 9200. Example:
  // "server1.example.com:4000,server2.example.com:4000"
  string servers = 2 [(google.api.field_behavior) = OPTIONAL];

  // Optional. Security protocol for Elasticsearch.
  ElasticsearchSecurityProtocol security_protocol = 3
      [(google.api.field_behavior) = OPTIONAL];

  // Optional. Authentication type for Elasticsearch.
  ElasticsearchAuthenticationType authentication_type = 4
      [(google.api.field_behavior) = OPTIONAL];

  // Optional. The username Oracle Goldengate uses to connect the associated
  // system of the given technology.
  string username = 5 [(google.api.field_behavior) = OPTIONAL];

  // Optional. Fingerprint required by TLS security protocol.
  // Eg.: '6152b2dfbff200f973c5074a5b91d06ab3b472c07c09a1ea57bb7fd406cdce9c'
  string fingerprint = 7 [(google.api.field_behavior) = OPTIONAL];
}

// The properties of GoldengateAmazonKinesisConnection.
message GoldengateAmazonKinesisConnectionProperties {
  // Optional. The technology type of AmazonKinesisConnection.
  string technology_type = 1 [(google.api.field_behavior) = OPTIONAL];

  // Optional. Access key ID to access the Amazon Kinesis.
  string access_key_id = 2 [(google.api.field_behavior) = OPTIONAL];

  // Optional. Secret access key to access the Amazon Kinesis.
  string secret_access_key_secret = 3 [(google.api.field_behavior) = OPTIONAL];

  // Optional. The endpoint URL of the Amazon Kinesis service.
  // e.g.: 'https://kinesis.us-east-1.amazonaws.com'
  // If not provided, Goldengate will default to
  // 'https://kinesis.<region>.amazonaws.com'.
  string endpoint = 4 [(google.api.field_behavior) = OPTIONAL];

  // Optional. The name of the AWS region.
  // If not provided, Goldengate will default to 'us-west-1'.
  string aws_region = 5 [(google.api.field_behavior) = OPTIONAL];
}

// The properties of GoldengateDb2Connection.
message GoldengateDb2ConnectionProperties {
  // Enum for Security protocol for the DB2 database.
  enum Db2SecurityProtocol {
    // Security protocol not specified.
    DB2_SECURITY_PROTOCOL_UNSPECIFIED = 0;

    // Plain text communication.
    PLAIN = 1;

    // Transport Layer Security.
    TLS = 2;
  }

  // The password Oracle Goldengate uses to connect to the associated DB2
  // database.
  oneof connection_password_options {
    // Optional. Input only. The password Oracle Goldengate uses for Db2
    // connection in plain text.
    string password = 12 [
      (google.api.field_behavior) = OPTIONAL,
      (google.api.field_behavior) = INPUT_ONLY
    ];

    // Optional. Input only. The resource name of a secret version in Secret
    // Manager which contains the password Oracle Goldengate uses for Db2
    // connection. Format:
    // projects/{project}/secrets/{secret}/versions/{version}.
    string password_secret_version = 13 [
      (google.api.field_behavior) = OPTIONAL,
      (google.api.field_behavior) = INPUT_ONLY,
      (google.api.resource_reference) = {
        type: "secretmanager.googleapis.com/SecretVersion"
      }
    ];
  }

  // Optional. The technology type of Db2Connection.
  string technology_type = 1 [(google.api.field_behavior) = OPTIONAL];

  // Optional. The name or address of a host.
  string host = 2 [(google.api.field_behavior) = OPTIONAL];

  // Optional. The port of an endpoint usually specified for a connection.
  int32 port = 3 [(google.api.field_behavior) = OPTIONAL];

  // Optional. The name of the database.
  string database = 4 [(google.api.field_behavior) = OPTIONAL];

  // Optional. The username Oracle Goldengate uses to connect to the DB2
  // database.
  string username = 5 [(google.api.field_behavior) = OPTIONAL];

  // Optional. Security protocol for the DB2 database.
  Db2SecurityProtocol security_protocol = 6
      [(google.api.field_behavior) = OPTIONAL];

  // Optional. An array of name-value pair attribute entries.
  // Used as additional parameters in connection string.
  repeated NameValuePair additional_attributes = 8
      [(google.api.field_behavior) = OPTIONAL];

  // Optional. The keystore file created at the client containing the
  // server certificate / CA root certificate. Not supported for IBM Db2 for i.
  string ssl_client_keystoredb_file = 9
      [(google.api.field_behavior) = OPTIONAL];

  // Optional. The keystash file which contains the encrypted password to
  // the key database file. Not supported for IBM Db2 for i.
  string ssl_client_keystash_file = 10 [(google.api.field_behavior) = OPTIONAL];

  // Optional. The file which contains the self-signed server certificate
  // / Certificate Authority (CA) certificate.
  string ssl_server_certificate_file = 11
      [(google.api.field_behavior) = OPTIONAL];
}

// The properties of GoldengateRedisConnection.
message GoldengateRedisConnectionProperties {
  // Enum for Security protocol for Redis.
  enum RedisSecurityProtocol {
    // Security protocol not specified.
    REDIS_SECURITY_PROTOCOL_UNSPECIFIED = 0;

    // Plain text communication.
    PLAIN = 1;

    // Transport Layer Security.
    TLS = 2;

    // Mutual Transport Layer Security.
    MTLS = 3;
  }

  // Enum for Authentication type for Redis.
  enum RedisAuthenticationType {
    // Authentication type not specified.
    REDIS_AUTHENTICATION_TYPE_UNSPECIFIED = 0;

    // No authentication.
    NONE = 1;

    // Basic authentication.
    BASIC = 2;
  }

  // The password Oracle Goldengate uses to connect the associated system of
  // the given technology.
  oneof connection_password_options {
    // Optional. Input only. The password Oracle Goldengate uses for Redis
    // connection in plain text.
    string password = 12 [
      (google.api.field_behavior) = OPTIONAL,
      (google.api.field_behavior) = INPUT_ONLY
    ];

    // Optional. Input only. The resource name of a secret version in Secret
    // Manager which contains the password Oracle Goldengate uses for Redis
    // connection. Format:
    // projects/{project}/secrets/{secret}/versions/{version}.
    string password_secret_version = 15 [
      (google.api.field_behavior) = OPTIONAL,
      (google.api.field_behavior) = INPUT_ONLY,
      (google.api.resource_reference) = {
        type: "secretmanager.googleapis.com/SecretVersion"
      }
    ];
  }

  // The TrustStore password.
  oneof trust_store_password_options {
    // Optional. Input only. The TrustStore password in plain text.
    string trust_store_password = 13 [
      (google.api.field_behavior) = OPTIONAL,
      (google.api.field_behavior) = INPUT_ONLY
    ];

    // Optional. Input only. The resource name of a secret version in Secret
    // Manager which contains the TrustStore password. Format:
    // projects/{project}/secrets/{secret}/versions/{version}.
    string trust_store_password_secret_version = 16 [
      (google.api.field_behavior) = OPTIONAL,
      (google.api.field_behavior) = INPUT_ONLY,
      (google.api.resource_reference) = {
        type: "secretmanager.googleapis.com/SecretVersion"
      }
    ];
  }

  // The KeyStore password.
  oneof key_store_password_options {
    // Optional. Input only. The KeyStore password in plain text.
    string key_store_password = 14 [
      (google.api.field_behavior) = OPTIONAL,
      (google.api.field_behavior) = INPUT_ONLY
    ];

    // Optional. Input only. The resource name of a secret version in Secret
    // Manager which contains the KeyStore password. Format:
    // projects/{project}/secrets/{secret}/versions/{version}.
    string key_store_password_secret_version = 17 [
      (google.api.field_behavior) = OPTIONAL,
      (google.api.field_behavior) = INPUT_ONLY,
      (google.api.resource_reference) = {
        type: "secretmanager.googleapis.com/SecretVersion"
      }
    ];
  }

  // Optional. The technology type of RedisConnection.
  string technology_type = 1 [(google.api.field_behavior) = OPTIONAL];

  // Optional. Comma separated list of Redis server addresses, specified as
  // host:port entries, where :port is optional. If port is not specified, it
  // defaults to 6379. Example:
  // "server1.example.com:6379,server2.example.com:6379"
  string servers = 2 [(google.api.field_behavior) = OPTIONAL];

  // Optional. Security protocol for Redis.
  RedisSecurityProtocol security_protocol = 3
      [(google.api.field_behavior) = OPTIONAL];

  // Optional. Authentication type for Redis.
  RedisAuthenticationType authentication_type = 4
      [(google.api.field_behavior) = OPTIONAL];

  // Optional. The username Oracle Goldengate uses to connect the associated
  // system of the given technology.
  string username = 5 [(google.api.field_behavior) = OPTIONAL];

  // Optional. The OCID of the Redis cluster.
  string redis_cluster_id = 7 [(google.api.field_behavior) = OPTIONAL];

  // Optional. The base64 encoded content of the TrustStore file.
  string trust_store_file = 8 [(google.api.field_behavior) = OPTIONAL];

  // Optional. The base64 encoded content of the KeyStore file.
  string key_store_file = 10 [(google.api.field_behavior) = OPTIONAL];
}

// The properties of GoldengateDatabricksConnection.
message GoldengateDatabricksConnectionProperties {
  // Enum for authentication type for Databricks.
  enum DatabricksAuthenticationType {
    // Authentication type not specified.
    DATABRICKS_AUTHENTICATION_TYPE_UNSPECIFIED = 0;

    // Personal access token authentication.
    PERSONAL_ACCESS_TOKEN = 1;

    // OAuth M2M authentication.
    OAUTH_M2M = 2;
  }

  // The password used to connect to Databricks.
  // Only applicable for authentication_type == PERSONAL_ACCESS_TOKEN.
  oneof connection_password_options {
    // Optional. Input only. The password used to connect to Databricks in plain
    // text.
    string password = 8 [
      (google.api.field_behavior) = OPTIONAL,
      (google.api.field_behavior) = INPUT_ONLY
    ];

    // Optional. Input only. The resource name of a secret version in Secret
    // Manager which contains the password used to connect to Databricks.
    // Format: projects/{project}/secrets/{secret}/versions/{version}.
    string password_secret_version = 9 [
      (google.api.field_behavior) = OPTIONAL,
      (google.api.field_behavior) = INPUT_ONLY,
      (google.api.resource_reference) = {
        type: "secretmanager.googleapis.com/SecretVersion"
      }
    ];
  }

  // Optional. The technology type of DatabricksConnection.
  string technology_type = 1 [(google.api.field_behavior) = OPTIONAL];

  // Optional. Authentication type for Databricks.
  DatabricksAuthenticationType authentication_type = 2
      [(google.api.field_behavior) = OPTIONAL];

  // Optional. Connection URL.
  // e.g.:
  // 'jdbc:databricks://adb-33934.4.azuredatabricks.net:443/default;transportMode=http;ssl=1;httpPath=sql/protocolv1/o/3393########44/0##3-7-hlrb'
  string connection_url = 3 [(google.api.field_behavior) = OPTIONAL];

  // Optional. OAuth client id, only applicable for authentication_type ==
  // OAUTH_M2M
  string client_id = 5 [(google.api.field_behavior) = OPTIONAL];

  // Optional. OAuth client secret, only applicable for authentication_type ==
  // OAUTH_M2M
  string client_secret = 6 [(google.api.field_behavior) = OPTIONAL];

  // Optional. External storage credential name to access files on object
  // storage such as ADLS Gen2, S3 or Cloud Storage.
  string storage_credential = 7 [(google.api.field_behavior) = OPTIONAL];
}

// The properties of GoldengateGooglePubsubConnection.
message GoldengateGooglePubsubConnectionProperties {
  // Optional. The technology type of GooglePubsubConnection.
  string technology_type = 1 [(google.api.field_behavior) = OPTIONAL];

  // Optional. The base64 encoded content of the service account key file
  // containing the credentials required to use Google Pub/Sub.
  string service_account_key_file = 2 [(google.api.field_behavior) = OPTIONAL];
}

// The properties of GoldengateMicrosoftFabricConnection.
message GoldengateMicrosoftFabricConnectionProperties {
  // Optional. The technology type of MicrosoftFabricConnection.
  string technology_type = 1 [(google.api.field_behavior) = OPTIONAL];

  // Optional. Azure tenant ID of the application.
  string tenant_id = 2 [(google.api.field_behavior) = OPTIONAL];

  // Optional. Azure client ID of the application.
  string client_id = 3 [(google.api.field_behavior) = OPTIONAL];

  // Optional. Client secret associated with the client id.
  string client_secret = 4 [(google.api.field_behavior) = OPTIONAL];

  // Optional. Optional Microsoft Fabric service endpoint.
  // Default value: https://onelake.dfs.fabric.microsoft.com
  string endpoint = 5 [(google.api.field_behavior) = OPTIONAL];
}

// The properties of GoldengateOracleAIDataPlatformConnection.
message GoldengateOracleAIDataPlatformConnectionProperties {
  // Optional. The technology type of OracleAiDataPlatformConnection.
  string technology_type = 1 [(google.api.field_behavior) = OPTIONAL];

  // Optional. Connection URL. It must start with 'jdbc:spark://'
  string connection_url = 2 [(google.api.field_behavior) = OPTIONAL];

  // Optional. The OCID of the related OCI tenancy.
  string tenancy_id = 3 [(google.api.field_behavior) = OPTIONAL];

  // Optional. The name of the region. e.g.: us-ashburn-1
  string region = 4 [(google.api.field_behavior) = OPTIONAL];

  // Optional. The OCID of the OCI user who will access.
  string user_id = 5 [(google.api.field_behavior) = OPTIONAL];

  // Optional. The content of the private key file (PEM file)
  // corresponding to the API key of the fingerprint.
  string private_key_file = 6 [(google.api.field_behavior) = OPTIONAL];

  // Optional. The passphrase of the private key.
  string private_key_passphrase_secret = 7
      [(google.api.field_behavior) = OPTIONAL];

  // Optional. The fingerprint of the API Key of the user specified by the
  // user_id.
  string public_key_fingerprint = 8 [(google.api.field_behavior) = OPTIONAL];

  // Optional. Specifies that the user intends to authenticate to the instance
  // using a resource principal.
  bool use_resource_principal = 9 [(google.api.field_behavior) = OPTIONAL];
}

// The Glue Iceberg catalog.
message GlueIcebergCatalog {
  // Required. The catalog ID of Glue.
  string glue_id = 1 [(google.api.field_behavior) = REQUIRED];
}

// The Nessie Iceberg catalog.
message NessieIcebergCatalog {
  // Required. The Nessie uri.
  string uri = 1 [(google.api.field_behavior) = REQUIRED];

  // Required. The Nessie branch.
  string branch = 2 [(google.api.field_behavior) = REQUIRED];
}

// The Polaris Iceberg catalog.
message PolarisIcebergCatalog {
  // Required. The Polaris uri.
  string uri = 1 [(google.api.field_behavior) = REQUIRED];

  // Required. The catalog name within Polaris.
  string polaris_catalog = 2 [(google.api.field_behavior) = REQUIRED];

  // Required. The Polaris client ID.
  string client_id = 3 [(google.api.field_behavior) = REQUIRED];

  // Required. The Polaris principal role.
  string principal_role = 4 [(google.api.field_behavior) = REQUIRED];

  // Optional. The Polaris client secret.
  string client_secret = 5 [(google.api.field_behavior) = OPTIONAL];
}

// The REST Iceberg catalog.
message RestIcebergCatalog {
  // Required. The REST uri.
  string uri = 1 [(google.api.field_behavior) = REQUIRED];

  // Optional. The base64 encoded content of the configuration file containing
  // additional properties for the REST catalog.
  string properties = 2 [(google.api.field_behavior) = OPTIONAL];
}

// The Iceberg catalog details.
message IcebergCatalog {
  // The type of Iceberg catalog.
  enum CatalogType {
    // Catalog type not specified.
    CATALOG_TYPE_UNSPECIFIED = 0;

    // Glue catalog.
    GLUE = 1;

    // Hadoop catalog.
    HADOOP = 2;

    // Nessie catalog.
    NESSIE = 3;

    // Polaris catalog.
    POLARIS = 4;

    // REST catalog.
    REST = 5;
  }

  // The type of Iceberg catalog.
  oneof catalog_details {
    // The Glue Iceberg catalog.
    GlueIcebergCatalog glue_iceberg_catalog = 1;

    // The Nessie Iceberg catalog.
    NessieIcebergCatalog nessie_iceberg_catalog = 3;

    // The Polaris Iceberg catalog.
    PolarisIcebergCatalog polaris_iceberg_catalog = 4;

    // The REST Iceberg catalog.
    RestIcebergCatalog rest_iceberg_catalog = 5;
  }

  // Required. The type of Iceberg catalog.
  CatalogType catalog_type = 6 [(google.api.field_behavior) = REQUIRED];
}

// The Amazon S3 Iceberg storage.
message AmazonS3IcebergStorage {
  // Enum for scheme type of Amazon S3.
  enum SchemeType {
    // Scheme type not specified.
    SCHEME_TYPE_UNSPECIFIED = 0;

    // S3 scheme.
    S3 = 1;

    // S3A scheme.
    S3A = 2;
  }

  // Required. The scheme type of Amazon S3.
  SchemeType scheme_type = 1 [(google.api.field_behavior) = REQUIRED];

  // Required. The access key ID of Amazon S3.
  string access_key_id = 2 [(google.api.field_behavior) = REQUIRED];

  // Required. The region of Amazon S3.
  string region = 3 [(google.api.field_behavior) = REQUIRED];

  // Required. The bucket of Amazon S3.
  string bucket = 4 [(google.api.field_behavior) = REQUIRED];

  // Optional. The endpoint of Amazon S3.
  string endpoint = 5 [(google.api.field_behavior) = OPTIONAL];

  // Optional. The secret access key of Amazon S3.
  string secret_access_key_secret = 6 [(google.api.field_behavior) = OPTIONAL];
}

// The Google Cloud Storage Iceberg storage.
message GoogleCloudStorageIcebergStorage {
  // Required. The bucket of Google Cloud Storage.
  string bucket = 1 [(google.api.field_behavior) = REQUIRED];

  // Required. The project ID of Google Cloud Storage.
  string project_id = 2 [(google.api.field_behavior) = REQUIRED];

  // Optional. The base64 encoded content of the service account key file of
  // Google Cloud Storage.
  string service_account_key_file = 3 [(google.api.field_behavior) = OPTIONAL];
}

// The Azure Data Lake Storage Iceberg storage.
message AzureDataLakeStorageIcebergStorage {
  // Required. The account of Azure Data Lake Storage.
  string azure_account = 1 [(google.api.field_behavior) = REQUIRED];

  // Required. The container of Azure Data Lake Storage.
  string container = 2 [(google.api.field_behavior) = REQUIRED];

  // Optional. The account key of Azure Data Lake Storage.
  string account_key_secret = 3 [(google.api.field_behavior) = OPTIONAL];

  // Optional. The endpoint of Azure Data Lake Storage.
  string endpoint = 4 [(google.api.field_behavior) = OPTIONAL];
}

// The Iceberg storage details.
message IcebergStorage {
  // The type of Iceberg storage.
  enum StorageType {
    // Storage type not specified.
    STORAGE_TYPE_UNSPECIFIED = 0;

    // Amazon S3 storage.
    AMAZON_S3 = 1;

    // Google Cloud Storage storage.
    GOOGLE_CLOUD_STORAGE = 2;

    // Azure Data Lake Storage storage.
    AZURE_DATA_LAKE_STORAGE = 3;
  }

  // The type of Iceberg storage.
  oneof storage_details {
    // The Amazon S3 Iceberg storage.
    AmazonS3IcebergStorage amazon_s3_iceberg_storage = 1;

    // The Google Cloud Storage Iceberg storage.
    GoogleCloudStorageIcebergStorage google_cloud_storage_iceberg_storage = 2;

    // The Azure Data Lake Storage Iceberg storage.
    AzureDataLakeStorageIcebergStorage azure_data_lake_storage_iceberg_storage =
        3;
  }

  // Required. The type of Iceberg storage.
  StorageType storage_type = 4 [(google.api.field_behavior) = REQUIRED];
}

// The properties of GoldengateIcebergConnection.
message GoldengateIcebergConnectionProperties {
  // Required. The technology type of Iceberg connection.
  string technology_type = 1 [(google.api.field_behavior) = REQUIRED];

  // Required. The Iceberg catalog.
  IcebergCatalog catalog = 2 [(google.api.field_behavior) = REQUIRED];

  // Required. The Iceberg storage.
  IcebergStorage storage = 3 [(google.api.field_behavior) = REQUIRED];
}

// The request for `GoldengateConnection.Create`.
message CreateGoldengateConnectionRequest {
  // Required. The value for parent of the GoldengateConnection in the following
  // format: projects/{project}/locations/{location}.
  string parent = 1 [
    (google.api.field_behavior) = REQUIRED,
    (google.api.resource_reference) = {
      child_type: "oracledatabase.googleapis.com/GoldengateConnection"
    }
  ];

  // Required. The ID of the GoldengateConnection to create. This value is
  // restricted to (^[a-z]([a-z0-9-]{0,61}[a-z0-9])?$) and must be a maximum of
  // 63 characters in length. The value must start with a letter and end with a
  // letter or a number.
  string goldengate_connection_id = 2 [(google.api.field_behavior) = REQUIRED];

  // Required. The resource being created.
  GoldengateConnection goldengate_connection = 3
      [(google.api.field_behavior) = REQUIRED];

  // Optional. An optional 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).
  string request_id = 4 [
    (google.api.field_info).format = UUID4,
    (google.api.field_behavior) = OPTIONAL
  ];
}

// The request for `GoldengateConnection.Delete`.
message DeleteGoldengateConnectionRequest {
  // Required. The name of the GoldengateConnection in the following format:
  // projects/{project}/locations/{location}/goldengateConnections/{goldengate_connection}.
  string name = 1 [
    (google.api.field_behavior) = REQUIRED,
    (google.api.resource_reference) = {
      type: "oracledatabase.googleapis.com/GoldengateConnection"
    }
  ];

  // Optional. An optional ID to identify the request. This value is used to
  // identify duplicate requests. If you make a request with the same request ID
  // and the original request is still in progress or completed, the server
  // ignores 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).
  string request_id = 2 [
    (google.api.field_info).format = UUID4,
    (google.api.field_behavior) = OPTIONAL
  ];
}

// The request for `GoldengateConnection.Get`.
message GetGoldengateConnectionRequest {
  // Required. The name of the GoldengateConnection in the following format:
  // projects/{project}/locations/{location}/goldengateConnections/{goldengate_connection}.
  string name = 1 [
    (google.api.field_behavior) = REQUIRED,
    (google.api.resource_reference) = {
      type: "oracledatabase.googleapis.com/GoldengateConnection"
    }
  ];
}

// The request for `GoldengateConnection.List`.
message ListGoldengateConnectionsRequest {
  // Required. The parent value for GoldengateConnections in the following
  // format: projects/{project}/locations/{location}.
  string parent = 1 [
    (google.api.field_behavior) = REQUIRED,
    (google.api.resource_reference) = {
      child_type: "oracledatabase.googleapis.com/GoldengateConnection"
    }
  ];

  // Optional. The maximum number of items to return.
  // If unspecified, at most 50 GoldengateConnections will be returned.
  // The maximum value is 1000; values above 1000 will be coerced to 1000.
  int32 page_size = 2 [(google.api.field_behavior) = OPTIONAL];

  // Optional. A page token, received from a previous ListGoldengateConnections
  // call. Provide this to retrieve the subsequent page.
  string page_token = 3 [(google.api.field_behavior) = OPTIONAL];

  // Optional. An expression for filtering the results of the request.
  string filter = 4 [(google.api.field_behavior) = OPTIONAL];

  // Optional. An expression for ordering the results of the request.
  string order_by = 5 [(google.api.field_behavior) = OPTIONAL];
}

// The response for `GoldengateConnection.List`.
message ListGoldengateConnectionsResponse {
  // The list of GoldengateConnections.
  repeated GoldengateConnection goldengate_connections = 1;

  // A token identifying a page of results the server should return.
  string next_page_token = 2;

  // Optional. Locations that could not be reached.
  repeated string unreachable = 3 [(google.api.field_behavior) = OPTIONAL];
}

// A name-value pair representing an attribute entry usable in a list of
// attributes.
message NameValuePair {
  // Required. The name of the property entry.
  string key = 1 [(google.api.field_behavior) = REQUIRED];

  // Required. The value of the property entry.
  string value = 2 [(google.api.field_behavior) = REQUIRED];
}

// Represents a Kafka bootstrap server with host name, optional port defaults to
// 9092, and an optional private ip.
message KafkaBootstrapServer {
  // Required. The name or address of a host.
  string host = 1 [(google.api.field_behavior) = REQUIRED];

  // Optional. The port of an endpoint usually specified for a connection.
  int32 port = 2 [(google.api.field_behavior) = OPTIONAL];

  // Optional. The private IP address of the connection's endpoint in the
  // customer's VCN, typically a database endpoint or a big data endpoint (e.g.
  // Kafka bootstrap server). In case the privateIp is provided, the subnetId
  // must also be provided. In case the privateIp (and the subnetId) is not
  // provided it is assumed the datasource is publicly accessible. In case the
  // connection is accessible only privately, the lack of privateIp will result
  // in not being able to access the connection.
  string private_ip_address = 3 [
    (google.api.field_info).format = IPV4_OR_IPV6,
    (google.api.field_behavior) = OPTIONAL
  ];
}
