diff --git a/airbyte-config/init/src/main/resources/seed/source_definitions.yaml b/airbyte-config/init/src/main/resources/seed/source_definitions.yaml
index 9401676cf27c..9e6055d874be 100644
--- a/airbyte-config/init/src/main/resources/seed/source_definitions.yaml
+++ b/airbyte-config/init/src/main/resources/seed/source_definitions.yaml
@@ -691,7 +691,7 @@
- name: GitHub
sourceDefinitionId: ef69ef6e-aa7f-4af1-a01d-ef775033524e
dockerRepository: airbyte/source-github
- dockerImageTag: 0.4.3
+ dockerImageTag: 0.4.4
documentationUrl: https://docs.airbyte.com/integrations/sources/github
icon: github.svg
sourceType: api
@@ -1565,7 +1565,7 @@
- name: Postgres
sourceDefinitionId: decd338e-5647-4c0b-adf4-da0e75f5a750
dockerRepository: airbyte/source-postgres
- dockerImageTag: 2.0.7
+ dockerImageTag: 2.0.8
documentationUrl: https://docs.airbyte.com/integrations/sources/postgres
icon: postgresql.svg
sourceType: database
diff --git a/airbyte-config/init/src/main/resources/seed/source_specs.yaml b/airbyte-config/init/src/main/resources/seed/source_specs.yaml
index ba5945e8fe5c..41469fa8b78e 100644
--- a/airbyte-config/init/src/main/resources/seed/source_specs.yaml
+++ b/airbyte-config/init/src/main/resources/seed/source_specs.yaml
@@ -4938,7 +4938,7 @@
supportsNormalization: false
supportsDBT: false
supported_destination_sync_modes: []
-- dockerImage: "airbyte/source-github:0.4.3"
+- dockerImage: "airbyte/source-github:0.4.4"
spec:
documentationUrl: "https://docs.airbyte.com/integrations/sources/github"
connectionSpecification:
@@ -4955,6 +4955,7 @@
description: "Choose how to authenticate to GitHub"
type: "object"
order: 0
+ group: "auth"
oneOf:
- type: "object"
title: "OAuth"
@@ -11911,7 +11912,7 @@
supportsNormalization: false
supportsDBT: false
supported_destination_sync_modes: []
-- dockerImage: "airbyte/source-postgres:2.0.7"
+- dockerImage: "airbyte/source-postgres:2.0.8"
spec:
documentationUrl: "https://docs.airbyte.com/integrations/sources/postgres"
connectionSpecification:
@@ -11929,6 +11930,7 @@
description: "Hostname of the database."
type: "string"
order: 0
+ group: "db"
port:
title: "Port"
description: "Port of the database."
@@ -11939,11 +11941,13 @@
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\
@@ -11956,17 +11960,21 @@
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\
@@ -11976,6 +11984,7 @@
title: "JDBC URL Parameters (Advanced)"
type: "string"
order: 6
+ group: "advanced"
ssl:
title: "Connect using SSL"
description: "Encrypt data using SSL. When activating SSL, please select\
@@ -11983,12 +11992,15 @@
type: "boolean"
default: false
order: 7
+ group: "security"
+ always_show: true
ssl_mode:
title: "SSL Modes"
description: "SSL connection modes. \n Read more in the docs."
type: "object"
- order: 7
+ order: 8
+ group: "security"
oneOf:
- title: "disable"
additionalProperties: true
@@ -12117,7 +12129,8 @@
type: "object"
title: "Replication Method"
description: "Replication method for extracting data from the database."
- order: 8
+ order: 9
+ group: "advanced"
oneOf:
- title: "Standard"
description: "Standard replication requires no setup on the DB side but\
@@ -12294,6 +12307,14 @@
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: []
diff --git a/airbyte-integrations/bases/base-java/src/main/java/io/airbyte/integrations/base/ssh/SshHelpers.java b/airbyte-integrations/bases/base-java/src/main/java/io/airbyte/integrations/base/ssh/SshHelpers.java
index 91069091fd68..39957ef99051 100644
--- a/airbyte-integrations/bases/base-java/src/main/java/io/airbyte/integrations/base/ssh/SshHelpers.java
+++ b/airbyte-integrations/bases/base-java/src/main/java/io/airbyte/integrations/base/ssh/SshHelpers.java
@@ -9,18 +9,32 @@
import io.airbyte.commons.resources.MoreResources;
import io.airbyte.protocol.models.v0.ConnectorSpecification;
import java.io.IOException;
+import java.util.Optional;
public class SshHelpers {
public static ConnectorSpecification getSpecAndInjectSsh() throws IOException {
+ return getSpecAndInjectSsh(Optional.empty());
+ }
+
+ public static ConnectorSpecification getSpecAndInjectSsh(final Optional group) throws IOException {
final ConnectorSpecification originalSpec = Jsons.deserialize(MoreResources.readResource("spec.json"), ConnectorSpecification.class);
- return injectSshIntoSpec(originalSpec);
+ return injectSshIntoSpec(originalSpec, group);
}
public static ConnectorSpecification injectSshIntoSpec(final ConnectorSpecification connectorSpecification) throws IOException {
+ return injectSshIntoSpec(connectorSpecification, Optional.empty());
+ }
+
+ public static ConnectorSpecification injectSshIntoSpec(final ConnectorSpecification connectorSpecification, final Optional group)
+ throws IOException {
final ConnectorSpecification originalSpec = Jsons.clone(connectorSpecification);
final ObjectNode propNode = (ObjectNode) originalSpec.getConnectionSpecification().get("properties");
- propNode.set("tunnel_method", Jsons.deserialize(MoreResources.readResource("ssh-tunnel-spec.json")));
+ final ObjectNode tunnelMethod = (ObjectNode) Jsons.deserialize(MoreResources.readResource("ssh-tunnel-spec.json"));
+ if (group.isPresent()) {
+ tunnelMethod.put("group", group.get());
+ }
+ propNode.set("tunnel_method", tunnelMethod);
return originalSpec;
}
diff --git a/airbyte-integrations/bases/base-java/src/main/java/io/airbyte/integrations/base/ssh/SshWrappedSource.java b/airbyte-integrations/bases/base-java/src/main/java/io/airbyte/integrations/base/ssh/SshWrappedSource.java
index dfda8879b93a..bb3b7de21fe2 100644
--- a/airbyte-integrations/bases/base-java/src/main/java/io/airbyte/integrations/base/ssh/SshWrappedSource.java
+++ b/airbyte-integrations/bases/base-java/src/main/java/io/airbyte/integrations/base/ssh/SshWrappedSource.java
@@ -16,6 +16,7 @@
import io.airbyte.protocol.models.v0.ConfiguredAirbyteCatalog;
import io.airbyte.protocol.models.v0.ConnectorSpecification;
import java.util.List;
+import java.util.Optional;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -25,16 +26,25 @@ public class SshWrappedSource implements Source {
private final Source delegate;
private final List hostKey;
private final List portKey;
+ private final Optional sshGroup;
public SshWrappedSource(final Source delegate, final List hostKey, final List portKey) {
this.delegate = delegate;
this.hostKey = hostKey;
this.portKey = portKey;
+ this.sshGroup = Optional.empty();
+ }
+
+ public SshWrappedSource(final Source delegate, final List hostKey, final List portKey, final String sshGroup) {
+ this.delegate = delegate;
+ this.hostKey = hostKey;
+ this.portKey = portKey;
+ this.sshGroup = Optional.of(sshGroup);
}
@Override
public ConnectorSpecification spec() throws Exception {
- return SshHelpers.injectSshIntoSpec(delegate.spec());
+ return SshHelpers.injectSshIntoSpec(delegate.spec(), sshGroup);
}
@Override
diff --git a/airbyte-integrations/connectors/source-github/Dockerfile b/airbyte-integrations/connectors/source-github/Dockerfile
index f92bd0ceadd1..5508c860a883 100644
--- a/airbyte-integrations/connectors/source-github/Dockerfile
+++ b/airbyte-integrations/connectors/source-github/Dockerfile
@@ -12,5 +12,5 @@ RUN pip install .
ENV AIRBYTE_ENTRYPOINT "python /airbyte/integration_code/main.py"
ENTRYPOINT ["python", "/airbyte/integration_code/main.py"]
-LABEL io.airbyte.version=0.4.3
+LABEL io.airbyte.version=0.4.4
LABEL io.airbyte.name=airbyte/source-github
diff --git a/airbyte-integrations/connectors/source-github/source_github/spec.json b/airbyte-integrations/connectors/source-github/source_github/spec.json
index 419bcdd42bc7..3e4f72e0aeff 100644
--- a/airbyte-integrations/connectors/source-github/source_github/spec.json
+++ b/airbyte-integrations/connectors/source-github/source_github/spec.json
@@ -12,6 +12,7 @@
"description": "Choose how to authenticate to GitHub",
"type": "object",
"order": 0,
+ "group": "auth",
"oneOf": [
{
"type": "object",
diff --git a/airbyte-integrations/connectors/source-postgres-strict-encrypt/Dockerfile b/airbyte-integrations/connectors/source-postgres-strict-encrypt/Dockerfile
index fa12e6f12af2..9fb1be84a92c 100644
--- a/airbyte-integrations/connectors/source-postgres-strict-encrypt/Dockerfile
+++ b/airbyte-integrations/connectors/source-postgres-strict-encrypt/Dockerfile
@@ -16,5 +16,5 @@ ENV APPLICATION source-postgres-strict-encrypt
COPY --from=build /airbyte /airbyte
-LABEL io.airbyte.version=2.0.7
+LABEL io.airbyte.version=2.0.8
LABEL io.airbyte.name=airbyte/source-postgres-strict-encrypt
diff --git a/airbyte-integrations/connectors/source-postgres/Dockerfile b/airbyte-integrations/connectors/source-postgres/Dockerfile
index 5fe7d004122d..783fa6f2b8dd 100644
--- a/airbyte-integrations/connectors/source-postgres/Dockerfile
+++ b/airbyte-integrations/connectors/source-postgres/Dockerfile
@@ -16,5 +16,5 @@ ENV APPLICATION source-postgres
COPY --from=build /airbyte /airbyte
-LABEL io.airbyte.version=2.0.7
+LABEL io.airbyte.version=2.0.8
LABEL io.airbyte.name=airbyte/source-postgres
diff --git a/airbyte-integrations/connectors/source-postgres/src/main/java/io/airbyte/integrations/source/postgres/PostgresSource.java b/airbyte-integrations/connectors/source-postgres/src/main/java/io/airbyte/integrations/source/postgres/PostgresSource.java
index 2329f99610cb..29236eef54f3 100644
--- a/airbyte-integrations/connectors/source-postgres/src/main/java/io/airbyte/integrations/source/postgres/PostgresSource.java
+++ b/airbyte-integrations/connectors/source-postgres/src/main/java/io/airbyte/integrations/source/postgres/PostgresSource.java
@@ -117,7 +117,7 @@ public class PostgresSource extends AbstractJdbcSource implements
private static final Set INVALID_CDC_SSL_MODES = ImmutableSet.of("allow", "prefer");
public static Source sshWrappedSource() {
- return new SshWrappedSource(new PostgresSource(), JdbcUtils.HOST_LIST_KEY, JdbcUtils.PORT_LIST_KEY);
+ return new SshWrappedSource(new PostgresSource(), JdbcUtils.HOST_LIST_KEY, JdbcUtils.PORT_LIST_KEY, "security");
}
PostgresSource() {
diff --git a/airbyte-integrations/connectors/source-postgres/src/main/resources/spec.json b/airbyte-integrations/connectors/source-postgres/src/main/resources/spec.json
index 3f2c05c974b1..930ab5cc1cd1 100644
--- a/airbyte-integrations/connectors/source-postgres/src/main/resources/spec.json
+++ b/airbyte-integrations/connectors/source-postgres/src/main/resources/spec.json
@@ -10,7 +10,8 @@
"title": "Host",
"description": "Hostname of the database.",
"type": "string",
- "order": 0
+ "order": 0,
+ "group": "db"
},
"port": {
"title": "Port",
@@ -20,13 +21,15 @@
"maximum": 65536,
"default": 5432,
"examples": ["5432"],
- "order": 1
+ "order": 1,
+ "group": "db"
},
"database": {
"title": "Database Name",
"description": "Name of the database.",
"type": "string",
- "order": 2
+ "order": 2,
+ "group": "db"
},
"schemas": {
"title": "Schemas",
@@ -38,39 +41,47 @@
"minItems": 0,
"uniqueItems": true,
"default": ["public"],
- "order": 3
+ "order": 3,
+ "group": "db"
},
"username": {
"title": "Username",
"description": "Username to access the database.",
"type": "string",
- "order": 4
+ "order": 4,
+ "group": "auth"
},
"password": {
"title": "Password",
"description": "Password associated with the username.",
"type": "string",
"airbyte_secret": true,
- "order": 5
+ "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
+ "order": 6,
+ "group": "advanced"
},
"ssl": {
"title": "Connect using SSL",
"description": "Encrypt data using SSL. When activating SSL, please select one of the connection modes.",
"type": "boolean",
"default": false,
- "order": 7
+ "order": 7,
+ "group": "security",
+ "always_show": true
},
"ssl_mode": {
"title": "SSL Modes",
"description": "SSL connection modes. \n Read more in the docs.",
"type": "object",
- "order": 7,
+ "order": 8,
+ "group": "security",
"oneOf": [
{
"title": "disable",
@@ -218,7 +229,8 @@
"type": "object",
"title": "Replication Method",
"description": "Replication method for extracting data from the database.",
- "order": 8,
+ "order": 9,
+ "group": "advanced",
"oneOf": [
{
"title": "Standard",
@@ -276,7 +288,10 @@
"type": "string",
"title": "LSN commit behaviour",
"description": "Determines when Airbtye 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"],
+ "enum": [
+ "While reading Data",
+ "After loading Data in the destination"
+ ],
"default": "After loading Data in the destination",
"order": 6
}
@@ -284,6 +299,22 @@
}
]
}
- }
+ },
+ "groups": [
+ {
+ "id": "db"
+ },
+ {
+ "id": "auth"
+ },
+ {
+ "id": "security",
+ "title": "Security"
+ },
+ {
+ "id": "advanced",
+ "title": "Advanced"
+ }
+ ]
}
}
diff --git a/airbyte-integrations/connectors/source-postgres/src/test-integration/java/io/airbyte/integrations/io/airbyte/integration_tests/sources/AbstractPostgresSourceAcceptanceTest.java b/airbyte-integrations/connectors/source-postgres/src/test-integration/java/io/airbyte/integrations/io/airbyte/integration_tests/sources/AbstractPostgresSourceAcceptanceTest.java
new file mode 100644
index 000000000000..3b9b024d5fc4
--- /dev/null
+++ b/airbyte-integrations/connectors/source-postgres/src/test-integration/java/io/airbyte/integrations/io/airbyte/integration_tests/sources/AbstractPostgresSourceAcceptanceTest.java
@@ -0,0 +1,18 @@
+package io.airbyte.integrations.io.airbyte.integration_tests.sources;
+
+import io.airbyte.integrations.base.ssh.SshHelpers;
+import io.airbyte.integrations.standardtest.source.SourceAcceptanceTest;
+import io.airbyte.protocol.models.v0.ConnectorSpecification;
+import java.util.Optional;
+
+public abstract class AbstractPostgresSourceAcceptanceTest extends SourceAcceptanceTest {
+ @Override
+ protected String getImageName() {
+ return "airbyte/source-postgres:dev";
+ }
+
+ @Override
+ protected ConnectorSpecification getSpec() throws Exception {
+ return SshHelpers.getSpecAndInjectSsh(Optional.of("security"));
+ }
+}
diff --git a/airbyte-integrations/connectors/source-postgres/src/test-integration/java/io/airbyte/integrations/io/airbyte/integration_tests/sources/AbstractPostgresSourceSSLCertificateAcceptanceTest.java b/airbyte-integrations/connectors/source-postgres/src/test-integration/java/io/airbyte/integrations/io/airbyte/integration_tests/sources/AbstractPostgresSourceSSLCertificateAcceptanceTest.java
index e02d4621f76c..077828075dd4 100644
--- a/airbyte-integrations/connectors/source-postgres/src/test-integration/java/io/airbyte/integrations/io/airbyte/integration_tests/sources/AbstractPostgresSourceSSLCertificateAcceptanceTest.java
+++ b/airbyte-integrations/connectors/source-postgres/src/test-integration/java/io/airbyte/integrations/io/airbyte/integration_tests/sources/AbstractPostgresSourceSSLCertificateAcceptanceTest.java
@@ -38,7 +38,7 @@
import uk.org.webcompere.systemstubs.jupiter.SystemStubsExtension;
@ExtendWith(SystemStubsExtension.class)
-public abstract class AbstractPostgresSourceSSLCertificateAcceptanceTest extends SourceAcceptanceTest {
+public abstract class AbstractPostgresSourceSSLCertificateAcceptanceTest extends AbstractPostgresSourceAcceptanceTest {
private static final String STREAM_NAME = "id_and_name";
private static final String STREAM_NAME2 = "starships";
@@ -103,16 +103,6 @@ protected void tearDown(final TestDestinationEnv testEnv) {
container.close();
}
- @Override
- protected String getImageName() {
- return "airbyte/source-postgres:dev";
- }
-
- @Override
- protected ConnectorSpecification getSpec() throws Exception {
- return SshHelpers.getSpecAndInjectSsh();
- }
-
@Override
protected JsonNode getConfig() {
return config;
diff --git a/airbyte-integrations/connectors/source-postgres/src/test-integration/java/io/airbyte/integrations/io/airbyte/integration_tests/sources/AbstractSshPostgresSourceAcceptanceTest.java b/airbyte-integrations/connectors/source-postgres/src/test-integration/java/io/airbyte/integrations/io/airbyte/integration_tests/sources/AbstractSshPostgresSourceAcceptanceTest.java
index 31c07378bd23..ae4ba25e1f75 100644
--- a/airbyte-integrations/connectors/source-postgres/src/test-integration/java/io/airbyte/integrations/io/airbyte/integration_tests/sources/AbstractSshPostgresSourceAcceptanceTest.java
+++ b/airbyte-integrations/connectors/source-postgres/src/test-integration/java/io/airbyte/integrations/io/airbyte/integration_tests/sources/AbstractSshPostgresSourceAcceptanceTest.java
@@ -37,7 +37,7 @@
import uk.org.webcompere.systemstubs.jupiter.SystemStubsExtension;
@ExtendWith(SystemStubsExtension.class)
-public abstract class AbstractSshPostgresSourceAcceptanceTest extends SourceAcceptanceTest {
+public abstract class AbstractSshPostgresSourceAcceptanceTest extends AbstractPostgresSourceAcceptanceTest {
private static final String STREAM_NAME = "id_and_name";
private static final String STREAM_NAME2 = "starships";
@@ -105,16 +105,6 @@ protected void tearDown(final TestDestinationEnv testEnv) {
bastion.stopAndCloseContainers(db);
}
- @Override
- protected String getImageName() {
- return "airbyte/source-postgres:dev";
- }
-
- @Override
- protected ConnectorSpecification getSpec() throws Exception {
- return SshHelpers.getSpecAndInjectSsh();
- }
-
@Override
protected JsonNode getConfig() {
return config;
diff --git a/airbyte-integrations/connectors/source-postgres/src/test-integration/java/io/airbyte/integrations/io/airbyte/integration_tests/sources/CdcPostgresSourceAcceptanceTest.java b/airbyte-integrations/connectors/source-postgres/src/test-integration/java/io/airbyte/integrations/io/airbyte/integration_tests/sources/CdcPostgresSourceAcceptanceTest.java
index 50ec2de2b5dd..6bb5c4a1c69d 100644
--- a/airbyte-integrations/connectors/source-postgres/src/test-integration/java/io/airbyte/integrations/io/airbyte/integration_tests/sources/CdcPostgresSourceAcceptanceTest.java
+++ b/airbyte-integrations/connectors/source-postgres/src/test-integration/java/io/airbyte/integrations/io/airbyte/integration_tests/sources/CdcPostgresSourceAcceptanceTest.java
@@ -41,7 +41,7 @@
// todo (cgardens) - Sanity check that when configured for CDC that postgres performs like any other
// incremental source. As we have more sources support CDC we will find a more reusable way of doing
// this, but for now this is a solid sanity check.
-public class CdcPostgresSourceAcceptanceTest extends SourceAcceptanceTest {
+public class CdcPostgresSourceAcceptanceTest extends AbstractPostgresSourceAcceptanceTest {
protected static final String SLOT_NAME_BASE = "debezium_slot";
protected static final String NAMESPACE = "public";
@@ -106,16 +106,6 @@ protected void tearDown(final TestDestinationEnv testEnv) {
container.close();
}
- @Override
- protected String getImageName() {
- return "airbyte/source-postgres:dev";
- }
-
- @Override
- protected ConnectorSpecification getSpec() throws Exception {
- return SshHelpers.getSpecAndInjectSsh();
- }
-
@Override
protected JsonNode getConfig() {
return config;
diff --git a/airbyte-integrations/connectors/source-postgres/src/test-integration/java/io/airbyte/integrations/io/airbyte/integration_tests/sources/PostgresSourceAcceptanceTest.java b/airbyte-integrations/connectors/source-postgres/src/test-integration/java/io/airbyte/integrations/io/airbyte/integration_tests/sources/PostgresSourceAcceptanceTest.java
index d232fb0e389f..160686d16f09 100644
--- a/airbyte-integrations/connectors/source-postgres/src/test-integration/java/io/airbyte/integrations/io/airbyte/integration_tests/sources/PostgresSourceAcceptanceTest.java
+++ b/airbyte-integrations/connectors/source-postgres/src/test-integration/java/io/airbyte/integrations/io/airbyte/integration_tests/sources/PostgresSourceAcceptanceTest.java
@@ -33,6 +33,7 @@
import java.sql.SQLException;
import java.util.HashMap;
import java.util.List;
+import java.util.Optional;
import org.jooq.DSLContext;
import org.jooq.SQLDialect;
import org.junit.jupiter.api.Test;
@@ -43,7 +44,7 @@
import uk.org.webcompere.systemstubs.jupiter.SystemStubsExtension;
@ExtendWith(SystemStubsExtension.class)
-public class PostgresSourceAcceptanceTest extends SourceAcceptanceTest {
+public class PostgresSourceAcceptanceTest extends AbstractPostgresSourceAcceptanceTest {
private static final String STREAM_NAME = "id_and_name";
private static final String STREAM_NAME2 = "starships";
@@ -114,16 +115,6 @@ protected void tearDown(final TestDestinationEnv testEnv) {
container.close();
}
- @Override
- protected String getImageName() {
- return "airbyte/source-postgres:dev";
- }
-
- @Override
- protected ConnectorSpecification getSpec() throws Exception {
- return SshHelpers.getSpecAndInjectSsh();
- }
-
@Override
protected JsonNode getConfig() {
return config;
diff --git a/airbyte-integrations/connectors/source-postgres/src/test-integration/java/io/airbyte/integrations/io/airbyte/integration_tests/sources/PostgresSourceStrictEncryptAcceptanceTest.java b/airbyte-integrations/connectors/source-postgres/src/test-integration/java/io/airbyte/integrations/io/airbyte/integration_tests/sources/PostgresSourceStrictEncryptAcceptanceTest.java
index 87c6e533b898..2a83b300b73a 100644
--- a/airbyte-integrations/connectors/source-postgres/src/test-integration/java/io/airbyte/integrations/io/airbyte/integration_tests/sources/PostgresSourceStrictEncryptAcceptanceTest.java
+++ b/airbyte-integrations/connectors/source-postgres/src/test-integration/java/io/airbyte/integrations/io/airbyte/integration_tests/sources/PostgresSourceStrictEncryptAcceptanceTest.java
@@ -30,6 +30,7 @@
import io.airbyte.protocol.models.v0.SyncMode;
import java.util.HashMap;
import java.util.List;
+import java.util.Optional;
import org.jooq.DSLContext;
import org.jooq.SQLDialect;
import org.junit.jupiter.api.extension.ExtendWith;
@@ -44,7 +45,7 @@
* completely once the migration of multi-variant connector is done.
*/
@ExtendWith(SystemStubsExtension.class)
-public class PostgresSourceStrictEncryptAcceptanceTest extends SourceAcceptanceTest {
+public class PostgresSourceStrictEncryptAcceptanceTest extends AbstractPostgresSourceAcceptanceTest {
private static final String STREAM_NAME = "id_and_name";
private static final String STREAM_NAME2 = "starships";
@@ -110,15 +111,11 @@ protected void tearDown(final TestDestinationEnv testEnv) {
container.close();
}
- @Override
- protected String getImageName() {
- return "airbyte/source-postgres:dev";
- }
-
@Override
protected ConnectorSpecification getSpec() throws Exception {
- return SshHelpers
- .injectSshIntoSpec(Jsons.deserialize(MoreResources.readResource("expected_strict_encrypt_spec.json"), ConnectorSpecification.class));
+ return SshHelpers.injectSshIntoSpec(
+ Jsons.deserialize(MoreResources.readResource("expected_strict_encrypt_spec.json"), ConnectorSpecification.class),
+ Optional.of("security"));
}
@Override
diff --git a/airbyte-integrations/connectors/source-postgres/src/test-integration/resources/expected_spec.json b/airbyte-integrations/connectors/source-postgres/src/test-integration/resources/expected_spec.json
index b585f6ca2b1d..e1a092a2bff1 100644
--- a/airbyte-integrations/connectors/source-postgres/src/test-integration/resources/expected_spec.json
+++ b/airbyte-integrations/connectors/source-postgres/src/test-integration/resources/expected_spec.json
@@ -10,7 +10,8 @@
"title": "Host",
"description": "Hostname of the database.",
"type": "string",
- "order": 0
+ "order": 0,
+ "group": "db"
},
"port": {
"title": "Port",
@@ -20,13 +21,15 @@
"maximum": 65536,
"default": 5432,
"examples": ["5432"],
- "order": 1
+ "order": 1,
+ "group": "db"
},
"database": {
"title": "Database Name",
"description": "Name of the database.",
"type": "string",
- "order": 2
+ "order": 2,
+ "group": "db"
},
"schemas": {
"title": "Schemas",
@@ -38,39 +41,47 @@
"minItems": 0,
"uniqueItems": true,
"default": ["public"],
- "order": 3
+ "order": 3,
+ "group": "db"
},
"username": {
"title": "Username",
"description": "Username to access the database.",
"type": "string",
- "order": 4
+ "order": 4,
+ "group": "auth"
},
"password": {
"title": "Password",
"description": "Password associated with the username.",
"type": "string",
"airbyte_secret": true,
- "order": 5
+ "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
+ "order": 6,
+ "group": "advanced"
},
"ssl": {
"title": "Connect using SSL",
"description": "Encrypt data using SSL. When activating SSL, please select one of the connection modes.",
"type": "boolean",
"default": false,
- "order": 7
+ "order": 7,
+ "group": "security",
+ "always_show": true
},
"ssl_mode": {
"title": "SSL Modes",
"description": "SSL connection modes. \n Read more in the docs.",
"type": "object",
- "order": 7,
+ "order": 8,
+ "group": "security",
"oneOf": [
{
"title": "disable",
@@ -218,7 +229,8 @@
"type": "object",
"title": "Replication Method",
"description": "Replication method for extracting data from the database.",
- "order": 8,
+ "order": 9,
+ "group": "advanced",
"oneOf": [
{
"title": "Standard",
@@ -276,7 +288,10 @@
"type": "string",
"title": "LSN commit behaviour",
"description": "Determines when Airbtye 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"],
+ "enum": [
+ "While reading Data",
+ "After loading Data in the destination"
+ ],
"default": "After loading Data in the destination",
"order": 6
}
@@ -288,6 +303,7 @@
"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.",
+ "group": "security",
"oneOf": [
{
"title": "No Tunnel",
@@ -398,7 +414,23 @@
}
]
}
- }
+ },
+ "groups": [
+ {
+ "id": "db"
+ },
+ {
+ "id": "auth"
+ },
+ {
+ "id": "security",
+ "title": "Security"
+ },
+ {
+ "id": "advanced",
+ "title": "Advanced"
+ }
+ ]
},
"supported_destination_sync_modes": []
}
diff --git a/airbyte-integrations/connectors/source-postgres/src/test-integration/resources/expected_strict_encrypt_spec.json b/airbyte-integrations/connectors/source-postgres/src/test-integration/resources/expected_strict_encrypt_spec.json
index 564c05f7d2f3..ef69abd725d9 100644
--- a/airbyte-integrations/connectors/source-postgres/src/test-integration/resources/expected_strict_encrypt_spec.json
+++ b/airbyte-integrations/connectors/source-postgres/src/test-integration/resources/expected_strict_encrypt_spec.json
@@ -10,7 +10,8 @@
"title": "Host",
"description": "Hostname of the database.",
"type": "string",
- "order": 0
+ "order": 0,
+ "group": "db"
},
"port": {
"title": "Port",
@@ -20,13 +21,15 @@
"maximum": 65536,
"default": 5432,
"examples": ["5432"],
- "order": 1
+ "order": 1,
+ "group": "db"
},
"database": {
"title": "Database Name",
"description": "Name of the database.",
"type": "string",
- "order": 2
+ "order": 2,
+ "group": "db"
},
"schemas": {
"title": "Schemas",
@@ -38,32 +41,38 @@
"minItems": 0,
"uniqueItems": true,
"default": ["public"],
- "order": 3
+ "order": 3,
+ "group": "db"
},
"username": {
"title": "Username",
"description": "Username to access the database.",
"type": "string",
- "order": 4
+ "order": 4,
+ "group": "auth"
},
"password": {
"title": "Password",
"description": "Password associated with the username.",
"type": "string",
"airbyte_secret": true,
- "order": 5
+ "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
+ "order": 6,
+ "group": "advanced"
},
"ssl_mode": {
"title": "SSL Modes",
"description": "SSL connection modes. \n Read more in the docs.",
"type": "object",
- "order": 7,
+ "order": 8,
+ "group": "security",
"oneOf": [
{
"title": "allow",
@@ -198,7 +207,8 @@
"type": "object",
"title": "Replication Method",
"description": "Replication method for extracting data from the database.",
- "order": 8,
+ "order": 9,
+ "group": "advanced",
"oneOf": [
{
"title": "Standard",
@@ -256,7 +266,10 @@
"type": "string",
"title": "LSN commit behaviour",
"description": "Determines when Airbtye 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"],
+ "enum": [
+ "While reading Data",
+ "After loading Data in the destination"
+ ],
"default": "After loading Data in the destination",
"order": 6
}
@@ -378,7 +391,23 @@
}
]
}
- }
+ },
+ "groups": [
+ {
+ "id": "db"
+ },
+ {
+ "id": "auth"
+ },
+ {
+ "id": "security",
+ "title": "Security"
+ },
+ {
+ "id": "advanced",
+ "title": "Advanced"
+ }
+ ]
},
"supported_destination_sync_modes": []
}
diff --git a/airbyte-integrations/connectors/source-postgres/src/test/resources/expected_spec.json b/airbyte-integrations/connectors/source-postgres/src/test/resources/expected_spec.json
deleted file mode 100644
index 2425013ebe14..000000000000
--- a/airbyte-integrations/connectors/source-postgres/src/test/resources/expected_spec.json
+++ /dev/null
@@ -1,383 +0,0 @@
-{
- "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
- },
- "port": {
- "title": "Port",
- "description": "Port of the database.",
- "type": "integer",
- "minimum": 0,
- "maximum": 65536,
- "default": 5432,
- "examples": ["5432"],
- "order": 1
- },
- "database": {
- "title": "Database Name",
- "description": "Name of the database.",
- "type": "string",
- "order": 2
- },
- "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
- },
- "username": {
- "title": "Username",
- "description": "Username to access the database.",
- "type": "string",
- "order": 4
- },
- "password": {
- "title": "Password",
- "description": "Password associated with the username.",
- "type": "string",
- "airbyte_secret": true,
- "order": 5
- },
- "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
- },
- "ssl_mode": {
- "title": "SSL Modes",
- "description": "SSL connection modes. \n Read more in the docs.",
- "type": "object",
- "order": 7,
- "oneOf": [
- {
- "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
- },
- "client_key": {
- "type": "string",
- "title": "Client Key",
- "description": "Client key",
- "airbyte_secret": true,
- "multiline": true,
- "order": 3
- },
- "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
- },
- "client_key": {
- "type": "string",
- "title": "Client Key",
- "description": "Client key",
- "airbyte_secret": true,
- "multiline": true,
- "order": 3
- },
- "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": "Replication Method",
- "description": "Replication method for extracting data from the database.",
- "order": 8,
- "oneOf": [
- {
- "title": "Standard",
- "description": "Standard replication requires no setup on the DB side but will not be able to represent deletions incrementally.",
- "required": ["method"],
- "properties": {
- "method": {
- "type": "string",
- "const": "Standard",
- "order": 0
- }
- }
- },
- {
- "title": "Logical Replication (CDC)",
- "description": "Logical replication uses the Postgres write-ahead log (WAL) to detect inserts, updates, and deletes. This needs to be configured on the source database itself. Only available on Postgres 10 and above. Read the docs.",
- "required": ["method", "replication_slot", "publication"],
- "properties": {
- "method": {
- "type": "string",
- "const": "CDC",
- "order": 1
- },
- "plugin": {
- "type": "string",
- "title": "Plugin",
- "description": "A logical decoding plugin installed on the PostgreSQL server. The `pgoutput` plugin is used by default. The `wal2json` plugin is deprecated and will soon be removed so it's not recommended to use. Read more about selecting replication plugins.",
- "enum": ["pgoutput", "wal2json"],
- "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 300 seconds. Valid range: 120 seconds to 1200 seconds. Read about initial waiting time.",
- "default": 300,
- "order": 5,
- "min": 120,
- "max": 1200
- },
- "lsn_commit_behaviour": {
- "type": "string",
- "title": "LSN commit behaviour",
- "description": "Determines when Airbtye 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": 6
- }
- }
- }
- ]
- },
- "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
- }
- }
- }
- ]
- }
- }
- },
- "supported_destination_sync_modes": []
-}
diff --git a/connectors.md b/connectors.md
index aaee91ba2a01..7ae6aae72427 100644
--- a/connectors.md
+++ b/connectors.md
@@ -83,7 +83,7 @@
| **GNews** | | Source | airbyte/source-gnews:0.1.3 | alpha | [link](https://docs.airbyte.com/integrations/sources/gnews) | [code](https://github.com/airbytehq/airbyte/tree/master/airbyte-integrations/connectors/source-gnews) | `ce38aec4-5a77-439a-be29-9ca44fd4e811` |
| **Genesys** | | Source | airbyte/source-genesys:0.1.0 | unknown | [link](https://docs.airbyte.com/integrations/sources/genesys) | [code](https://github.com/airbytehq/airbyte/tree/master/airbyte-integrations/connectors/source-genesys) | `5ea4459a-8f1a-452a-830f-a65c38cc438d` |
| **GetLago** | | Source | airbyte/source-getlago:0.1.0 | alpha | [link](https://docs.airbyte.com/integrations/sources/getlago) | [code](https://github.com/airbytehq/airbyte/tree/master/airbyte-integrations/connectors/source-getlago) | `e1a3866b-d3b2-43b6-b6d7-8c1ee4d7f53f` |
-| **GitHub** | | Source | airbyte/source-github:0.4.3 | generally_available | [link](https://docs.airbyte.com/integrations/sources/github) | [code](https://github.com/airbytehq/airbyte/tree/master/airbyte-integrations/connectors/source-github) | `ef69ef6e-aa7f-4af1-a01d-ef775033524e` |
+| **GitHub** | | Source | airbyte/source-github:0.4.4 | generally_available | [link](https://docs.airbyte.com/integrations/sources/github) | [code](https://github.com/airbytehq/airbyte/tree/master/airbyte-integrations/connectors/source-github) | `ef69ef6e-aa7f-4af1-a01d-ef775033524e` |
| **Gitlab** | | Source | airbyte/source-gitlab:1.0.3 | beta | [link](https://docs.airbyte.com/integrations/sources/gitlab) | [code](https://github.com/airbytehq/airbyte/tree/master/airbyte-integrations/connectors/source-gitlab) | `5e6175e5-68e1-4c17-bff9-56103bbb0d80` |
| **Glassfrog** | | Source | airbyte/source-glassfrog:0.1.0 | alpha | [link](https://docs.airbyte.com/integrations/sources/glassfrog) | [code](https://github.com/airbytehq/airbyte/tree/master/airbyte-integrations/connectors/source-glassfrog) | `cf8ff320-6272-4faa-89e6-4402dc17e5d5` |
| **GoCardless** | | Source | airbyte/source-gocardless:0.1.0 | alpha | [link](https://docs.airbyte.com/integrations/sources/gocardless) | [code](https://github.com/airbytehq/airbyte/tree/master/airbyte-integrations/connectors/source-gocardless) | `ba15ac82-5c6a-4fb2-bf24-925c23a1180c` |
@@ -178,7 +178,7 @@
| **PokeAPI** | | Source | airbyte/source-pokeapi:0.1.5 | alpha | [link](https://docs.airbyte.com/integrations/sources/pokeapi) | [code](https://github.com/airbytehq/airbyte/tree/master/airbyte-integrations/connectors/source-pokeapi) | `6371b14b-bc68-4236-bfbd-468e8df8e968` |
| **Polygon Stock API** | | Source | airbyte/source-polygon-stock-api:0.1.1 | alpha | [link](https://docs.airbyte.com/integrations/sources/polygon-stock-api) | [code](https://github.com/airbytehq/airbyte/tree/master/airbyte-integrations/connectors/source-polygon-stock-api) | `5807d72f-0abc-49f9-8fa5-ae820007032b` |
| **PostHog** | | Source | airbyte/source-posthog:0.1.8 | beta | [link](https://docs.airbyte.com/integrations/sources/posthog) | [code](https://github.com/airbytehq/airbyte/tree/master/airbyte-integrations/connectors/source-posthog) | `af6d50ee-dddf-4126-a8ee-7faee990774f` |
-| **Postgres** | | Source | airbyte/source-postgres:2.0.7 | generally_available | [link](https://docs.airbyte.com/integrations/sources/postgres) | [code](https://github.com/airbytehq/airbyte/tree/master/airbyte-integrations/connectors/source-postgres) | `decd338e-5647-4c0b-adf4-da0e75f5a750` |
+| **Postgres** | | Source | airbyte/source-postgres:2.0.8 | generally_available | [link](https://docs.airbyte.com/integrations/sources/postgres) | [code](https://github.com/airbytehq/airbyte/tree/master/airbyte-integrations/connectors/source-postgres) | `decd338e-5647-4c0b-adf4-da0e75f5a750` |
| **Postmark App** | | Source | airbyte/source-postmarkapp:0.1.0 | alpha | [link](https://docs.airbyte.com/integrations/sources/postmarkapp) | [code](https://github.com/airbytehq/airbyte/tree/master/airbyte-integrations/connectors/source-postmarkapp) | `cde75ca1-1e28-4a0f-85bb-90c546de9f1f` |
| **PrestaShop** | | Source | airbyte/source-prestashop:0.3.1 | beta | [link](https://docs.airbyte.com/integrations/sources/prestashop) | [code](https://github.com/airbytehq/airbyte/tree/master/airbyte-integrations/connectors/source-prestashop) | `d60a46d4-709f-4092-a6b7-2457f7d455f5` |
| **Primetric** | | Source | airbyte/source-primetric:0.1.0 | alpha | [link](https://docs.airbyte.com/integrations/sources/primetric) | [code](https://github.com/airbytehq/airbyte/tree/master/airbyte-integrations/connectors/source-primetric) | `f636c3c6-4077-45ac-b109-19fc62a283c1` |
diff --git a/docs/integrations/sources/github.md b/docs/integrations/sources/github.md
index fb9317dc1ca3..231f49d1735c 100644
--- a/docs/integrations/sources/github.md
+++ b/docs/integrations/sources/github.md
@@ -163,6 +163,7 @@ The GitHub connector should not run into GitHub API limitations under normal usa
| Version | Date | Pull Request | Subject |
|:--------|:-----------|:------------------------------------------------------------------------------------------------------------------|:--------------------------------------------------------------------------------------------------------------------------------------------------------------------|
+| 0.4.4 | 2023-03-17 | [24255](https://github.com/airbytehq/airbyte/pull/24255) | Add field groups and titles to improve display of connector setup form |
| 0.4.3 | 2023-03-04 | [22993](https://github.com/airbytehq/airbyte/pull/22993) | Specified date formatting in specification | | |
| 0.4.2 | 2023-03-03 | [23467](https://github.com/airbytehq/airbyte/pull/23467) | added user friendly messages, added AirbyteTracedException config_error, updated SAT | | |
| 0.4.1 | 2023-01-27 | [22039](https://github.com/airbytehq/airbyte/pull/22039) | Set `AvailabilityStrategy` for streams explicitly to `None` | | |
diff --git a/docs/integrations/sources/postgres.md b/docs/integrations/sources/postgres.md
index d12aa3e15c16..c342acbf4a4f 100644
--- a/docs/integrations/sources/postgres.md
+++ b/docs/integrations/sources/postgres.md
@@ -396,6 +396,7 @@ The root causes is that the WALs needed for the incremental sync has been remove
| Version | Date | Pull Request | Subject |
|:--------|:-----------|:---------------------------------------------------------|:---------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
+| 2.0.8 | 2023-03-22 | [24255](https://github.com/airbytehq/airbyte/pull/24255) | Add field groups and titles to improve display of connector setup form |
| 2.0.7 | 2022-03-21 | [24207](https://github.com/airbytehq/airbyte/pull/24207) | Fix incorrect schema change warning in CDC mode |
| 2.0.6 | 2022-03-21 | [24271](https://github.com/airbytehq/airbyte/pull/24271) | Fix NPE in CDC mode |
| 2.0.5 | 2022-03-21 | [21533](https://github.com/airbytehq/airbyte/pull/21533) | Add integration with datadog |