{"sourceDefinitionId": "decd338e-5647-4c0b-adf4-da0e75f5a750", "name": "Postgres", "dockerRepository": "airbyte/source-postgres", "dockerImageTag": "3.7.3-rc.1-preview.27f2f6f", "documentationUrl": "https://docs.airbyte.com/integrations/sources/postgres", "icon": "postgresql.svg", "iconUrl": "https://connectors.airbyte.com/files/metadata/airbyte/source-postgres/latest/icon.svg", "sourceType": "database", "spec": {"documentationUrl": "https://docs.airbyte.com/integrations/sources/postgres", "connectionSpecification": {"$schema": "http://json-schema.org/draft-07/schema#", "title": "Postgres Source Spec", "type": "object", "required": ["host", "port", "database", "username"], "properties": {"host": {"title": "Host", "description": "Hostname of the database.", "type": "string", "order": 0, "group": "db"}, "port": {"title": "Port", "description": "Port of the database.", "type": "integer", "minimum": 0, "maximum": 65536, "default": 5432, "examples": ["5432"], "order": 1, "group": "db"}, "database": {"title": "Database Name", "description": "Name of the database.", "type": "string", "order": 2, "group": "db"}, "schemas": {"title": "Schemas", "description": "The list of schemas (case sensitive) to sync from. Defaults to public.", "type": "array", "items": {"type": "string"}, "minItems": 0, "uniqueItems": true, "default": ["public"], "order": 3, "group": "db"}, "username": {"title": "Username", "description": "Username to access the database.", "type": "string", "order": 4, "group": "auth"}, "password": {"title": "Password", "description": "Password associated with the username.", "type": "string", "airbyte_secret": true, "order": 5, "group": "auth", "always_show": true}, "jdbc_url_params": {"description": "Additional properties to pass to the JDBC URL string when connecting to the database formatted as 'key=value' pairs separated by the symbol '&'. (Eg. key1=value1&key2=value2&key3=value3). For more information read about JDBC URL parameters.", "title": "JDBC URL Parameters (Advanced)", "type": "string", "order": 6, "group": "advanced", "pattern_descriptor": "key1=value1&key2=value2"}, "ssl_mode": {"title": "SSL Modes", "description": "SSL connection modes. \n Read more in the docs.", "type": "object", "order": 8, "group": "security", "oneOf": [{"title": "disable", "additionalProperties": true, "description": "Disables encryption of communication between Airbyte and source database.", "required": ["mode"], "properties": {"mode": {"type": "string", "const": "disable", "order": 0}}}, {"title": "allow", "additionalProperties": true, "description": "Enables encryption only when required by the source database.", "required": ["mode"], "properties": {"mode": {"type": "string", "const": "allow", "order": 0}}}, {"title": "prefer", "additionalProperties": true, "description": "Allows unencrypted connection only if the source database does not support encryption.", "required": ["mode"], "properties": {"mode": {"type": "string", "const": "prefer", "order": 0}}}, {"title": "require", "additionalProperties": true, "description": "Always require encryption. If the source database server does not support encryption, connection will fail.", "required": ["mode"], "properties": {"mode": {"type": "string", "const": "require", "order": 0}}}, {"title": "verify-ca", "additionalProperties": true, "description": "Always require encryption and verifies that the source database server has a valid SSL certificate.", "required": ["mode", "ca_certificate"], "properties": {"mode": {"type": "string", "const": "verify-ca", "order": 0}, "ca_certificate": {"type": "string", "title": "CA Certificate", "description": "CA certificate", "airbyte_secret": true, "multiline": true, "order": 1}, "client_certificate": {"type": "string", "title": "Client Certificate", "description": "Client certificate", "airbyte_secret": true, "multiline": true, "order": 2, "always_show": true}, "client_key": {"type": "string", "title": "Client Key", "description": "Client key", "airbyte_secret": true, "multiline": true, "order": 3, "always_show": true}, "client_key_password": {"type": "string", "title": "Client key password", "description": "Password for keystorage. If you do not add it - the password will be generated automatically.", "airbyte_secret": true, "order": 4}}}, {"title": "verify-full", "additionalProperties": true, "description": "This is the most secure mode. Always require encryption and verifies the identity of the source database server.", "required": ["mode", "ca_certificate"], "properties": {"mode": {"type": "string", "const": "verify-full", "order": 0}, "ca_certificate": {"type": "string", "title": "CA Certificate", "description": "CA certificate", "airbyte_secret": true, "multiline": true, "order": 1}, "client_certificate": {"type": "string", "title": "Client Certificate", "description": "Client certificate", "airbyte_secret": true, "multiline": true, "order": 2, "always_show": true}, "client_key": {"type": "string", "title": "Client Key", "description": "Client key", "airbyte_secret": true, "multiline": true, "order": 3, "always_show": true}, "client_key_password": {"type": "string", "title": "Client key password", "description": "Password for keystorage. If you do not add it - the password will be generated automatically.", "airbyte_secret": true, "order": 4}}}]}, "replication_method": {"type": "object", "title": "Update Method", "description": "Configures how data is extracted from the database.", "order": 9, "group": "advanced", "default": "CDC", "display_type": "radio", "oneOf": [{"title": "Read Changes using Write-Ahead Log (CDC)", "description": "Recommended - Incrementally reads new inserts, updates, and deletes using the Postgres write-ahead log (WAL). This needs to be configured on the source database itself. Recommended for tables of any size.", "required": ["method", "replication_slot", "publication"], "additionalProperties": true, "properties": {"method": {"type": "string", "const": "CDC", "order": 1}, "plugin": {"type": "string", "title": "Plugin", "description": "A logical decoding plugin installed on the PostgreSQL server.", "enum": ["pgoutput"], "default": "pgoutput", "order": 2}, "replication_slot": {"type": "string", "title": "Replication Slot", "description": "A plugin logical replication slot. Read about replication slots.", "order": 3}, "publication": {"type": "string", "title": "Publication", "description": "A Postgres publication used for consuming changes. Read about publications and replication identities.", "order": 4}, "initial_waiting_seconds": {"type": "integer", "title": "Initial Waiting Time in Seconds (Advanced)", "description": "The amount of time the connector will wait when it launches to determine if there is new data to sync or not. Defaults to 1200 seconds. Valid range: 120 seconds to 2400 seconds. Read about initial waiting time.", "default": 1200, "order": 5, "min": 120, "max": 2400}, "queue_size": {"type": "integer", "title": "Size of the queue (Advanced)", "description": "The size of the internal queue. This may interfere with memory consumption and efficiency of the connector, please be careful.", "default": 10000, "order": 6, "min": 1000, "max": 10000}, "lsn_commit_behaviour": {"type": "string", "title": "LSN commit behaviour", "description": "Determines when Airbyte should flush the LSN of processed WAL logs in the source database. `After loading Data in the destination` is default. If `While reading Data` is selected, in case of a downstream failure (while loading data into the destination), next sync would result in a full sync.", "enum": ["While reading Data", "After loading Data in the destination"], "default": "After loading Data in the destination", "order": 7}, "heartbeat_action_query": {"type": "string", "title": "Debezium heartbeat query (Advanced)", "description": "Specifies a query that the connector executes on the source database when the connector sends a heartbeat message. Please see the setup guide for how and when to configure this setting.", "default": "", "order": 8}, "invalid_cdc_cursor_position_behavior": {"type": "string", "title": "Invalid CDC position behavior (Advanced)", "description": "Determines whether Airbyte should fail or re-sync data in case of an stale/invalid cursor value into the WAL. If 'Fail sync' is chosen, a user will have to manually reset the connection before being able to continue syncing data. If 'Re-sync data' is chosen, Airbyte will automatically trigger a refresh but could lead to higher cloud costs and data loss.", "enum": ["Fail sync", "Re-sync data"], "default": "Fail sync", "order": 9}, "initial_load_timeout_hours": {"type": "integer", "title": "Initial Load Timeout in Hours (Advanced)", "description": "The amount of time an initial load is allowed to continue for before catching up on CDC logs.", "default": 8, "min": 4, "max": 24, "order": 10}}}, {"title": "Detect Changes with Xmin System Column", "description": "Recommended - Incrementally reads new inserts and updates via Postgres Xmin system column. Suitable for databases that have low transaction pressure.", "required": ["method"], "properties": {"method": {"type": "string", "const": "Xmin", "order": 0}}}, {"title": "Scan Changes with User Defined Cursor", "description": "Incrementally detects new inserts and updates using the cursor column chosen when configuring a connection (e.g. created_at, updated_at).", "required": ["method"], "properties": {"method": {"type": "string", "const": "Standard", "order": 8}}}]}, "entra_service_principal_auth": {"title": "Entra service principal authentication", "description": "Interpret password as a client secret for a Microsft Entra service principal", "type": "boolean", "group": "auth", "default": false}, "entra_tenant_id": {"title": "Entra tenant id", "description": "If using Entra service principal, the ID of the tenant", "type": "string", "group": "auth"}, "entra_client_id": {"title": "Entra client id", "description": "If using Entra service principal, the application ID of the service principal", "type": "string", "group": "auth"}, "tunnel_method": {"type": "object", "title": "SSH Tunnel Method", "description": "Whether to initiate an SSH tunnel before connecting to the database, and if so, which kind of authentication to use.", "oneOf": [{"title": "No Tunnel", "required": ["tunnel_method"], "properties": {"tunnel_method": {"description": "No ssh tunnel needed to connect to database", "type": "string", "const": "NO_TUNNEL", "order": 0}}}, {"title": "SSH Key Authentication", "required": ["tunnel_method", "tunnel_host", "tunnel_port", "tunnel_user", "ssh_key"], "properties": {"tunnel_method": {"description": "Connect through a jump server tunnel host using username and ssh key", "type": "string", "const": "SSH_KEY_AUTH", "order": 0}, "tunnel_host": {"title": "SSH Tunnel Jump Server Host", "description": "Hostname of the jump server host that allows inbound ssh tunnel.", "type": "string", "order": 1}, "tunnel_port": {"title": "SSH Connection Port", "description": "Port on the proxy/jump server that accepts inbound ssh connections.", "type": "integer", "minimum": 0, "maximum": 65536, "default": 22, "examples": ["22"], "order": 2}, "tunnel_user": {"title": "SSH Login Username", "description": "OS-level username for logging into the jump server host.", "type": "string", "order": 3}, "ssh_key": {"title": "SSH Private Key", "description": "OS-level user account ssh key credentials in RSA PEM format ( created with ssh-keygen -t rsa -m PEM -f myuser_rsa )", "type": "string", "airbyte_secret": true, "multiline": true, "order": 4}}}, {"title": "Password Authentication", "required": ["tunnel_method", "tunnel_host", "tunnel_port", "tunnel_user", "tunnel_user_password"], "properties": {"tunnel_method": {"description": "Connect through a jump server tunnel host using username and password authentication", "type": "string", "const": "SSH_PASSWORD_AUTH", "order": 0}, "tunnel_host": {"title": "SSH Tunnel Jump Server Host", "description": "Hostname of the jump server host that allows inbound ssh tunnel.", "type": "string", "order": 1}, "tunnel_port": {"title": "SSH Connection Port", "description": "Port on the proxy/jump server that accepts inbound ssh connections.", "type": "integer", "minimum": 0, "maximum": 65536, "default": 22, "examples": ["22"], "order": 2}, "tunnel_user": {"title": "SSH Login Username", "description": "OS-level username for logging into the jump server host", "type": "string", "order": 3}, "tunnel_user_password": {"title": "Password", "description": "OS-level password for logging into the jump server host", "type": "string", "airbyte_secret": true, "order": 4}}}], "group": "security"}}, "groups": [{"id": "db"}, {"id": "auth"}, {"id": "security", "title": "Security"}, {"id": "advanced", "title": "Advanced"}]}, "supportsNormalization": false, "supportsDBT": false, "supported_destination_sync_modes": []}, "tombstone": false, "public": true, "custom": false, "releaseStage": "generally_available", "supportLevel": "certified", "allowedHosts": {"hosts": ["${host}", "${tunnel_method.tunnel_host}"]}, "maxSecondsBetweenMessages": 7200, "releases": {"rolloutConfiguration": {"enableProgressiveRollout": true, "initialPercentage": 0, "maxPercentage": 50, "advanceDelayMinutes": 10}}, "ab_internal": {"sl": 300, "ql": 400, "isEnterprise": false, "requireVersionIncrementsInPullRequests": true}, "generated": {"git": {"commit_sha": "04d149abae284242220ed8433a6ace8ff571acdc", "commit_timestamp": "2026-02-26T13:19:35+00:00", "commit_author": "Devin AI", "commit_author_email": "158243242+devin-ai-integration[bot]@users.noreply.github.com"}, "source_file_info": {"metadata_file_path": "metadata/airbyte/source-postgres/3.7.3-rc.1-preview.27f2f6f/metadata.yaml", "metadata_bucket_name": "prod-airbyte-cloud-connector-metadata-service", "metadata_last_modified": "2026-02-26T15:13:35.521000+00:00", "registry_entry_generated_at": "2026-02-26T15:14:39.538981"}, "sbomUrl": "https://connectors.airbyte.com/files/sbom/airbyte/source-postgres/3.7.3-rc.1-preview.27f2f6f.spdx.json"}, "packageInfo": {}, "language": "java", "supportsFileTransfer": false, "supportsDataActivation": false, "connectorTestSuitesOptions": [{"suite": "unitTests"}, {"suite": "integrationTests", "testSecrets": [{"fileName": "config_cdc.json", "name": "SECRET_SOURCE-POSTGRES_CDC__CREDS", "secretStore": {"alias": "airbyte-connector-testing-secret-store", "type": "GSM"}}, {"fileName": "config.json", "name": "SECRET_SOURCE-POSTGRES__CREDS", "secretStore": {"alias": "airbyte-connector-testing-secret-store", "type": "GSM"}}, {"fileName": "performance-config.json", "name": "SECRET_SOURCE_POSTGRES_PERFORMANCE_TEST_CREDS", "secretStore": {"alias": "airbyte-connector-testing-secret-store", "type": "GSM"}}]}, {"suite": "acceptanceTests", "testSecrets": [{"fileName": "config_cdc.json", "name": "SECRET_SOURCE-POSTGRES_CDC__CREDS", "secretStore": {"alias": "airbyte-connector-testing-secret-store", "type": "GSM"}}, {"fileName": "config.json", "name": "SECRET_SOURCE-POSTGRES__CREDS", "secretStore": {"alias": "airbyte-connector-testing-secret-store", "type": "GSM"}}, {"fileName": "performance-config.json", "name": "SECRET_SOURCE_POSTGRES_PERFORMANCE_TEST_CREDS", "secretStore": {"alias": "airbyte-connector-testing-secret-store", "type": "GSM"}}]}], "githubIssueLabel": "source-postgres", "externalDocumentationUrls": [{"title": "PostgreSQL documentation", "type": "api_reference", "url": "https://www.postgresql.org/docs/"}, {"title": "Release Notes", "type": "api_release_history", "url": "https://www.postgresql.org/docs/release/"}, {"title": "PostgreSQL authentication", "type": "authentication_guide", "url": "https://www.postgresql.org/docs/current/auth-methods.html"}], "connectorBuildOptions": {"baseImage": "docker.io/airbyte/java-connector-base:2.0.4@sha256:5f343797cfcf021ca98ba9bdf5970ef66cbf6222d8cc17b0d61d13860a5bcc2b"}, "license": "ELv2", "tags": ["language:java"]}