Skip to content
182 changes: 181 additions & 1 deletion airbyte-config-oss/init-oss/src/main/resources/seed/oss_catalog.json
Original file line number Diff line number Diff line change
Expand Up @@ -11059,7 +11059,7 @@
"sourceDefinitionId": "44f3002f-2df9-4f6d-b21c-02cd3b47d0dc",
"name": "Copper",
"dockerRepository": "airbyte/source-copper",
"dockerImageTag": "0.1.0",
"dockerImageTag": "0.2.0",
"documentationUrl": "https://docs.airbyte.com/integrations/sources/copper",
"icon": "copper.svg",
"sourceType": "api",
Expand Down Expand Up @@ -24875,6 +24875,186 @@
"allowedHosts": {
"hosts": [ "api.tempo.io" ]
}
}, {
"sourceDefinitionId": "aa8ba6fd-4875-d94e-fc8d-4e1e09aa2503",
"name": "Teradata",
"dockerRepository": "airbyte/source-teradata",
"dockerImageTag": "0.1.0",
"documentationUrl": "https://docs.airbyte.com/integrations/sources/teradata",
"icon": "teradata.svg",
"sourceType": "database",
"spec": {
"documentationUrl": "https://docs.airbyte.com/integrations/sources/teradata",
"connectionSpecification": {
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "Teradata Source Spec",
"type": "object",
"required": [ "host", "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": 3306,
"examples": [ "3306" ],
"order": 1
},
"database": {
"title": "Database",
"description": "Name of the database.",
"type": "string",
"order": 2
},
"username": {
"title": "Username",
"description": "Username to use to access the database.",
"type": "string",
"order": 3
},
"password": {
"title": "Password",
"description": "Password associated with the username.",
"type": "string",
"airbyte_secret": true,
"order": 4
},
"jdbc_url_params": {
"title": "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 '&'. (example: key1=value1&key2=value2&key3=value3)",
"type": "string",
"order": 5
},
"replication_method": {
"title": "Replication method",
"description": "Replication method to use for extracting data from the database. STANDARD replication requires no setup on the DB side but will not be able to represent deletions incrementally. CDC uses the Binlog to detect inserts, updates, and deletes. This needs to be configured on the source database itself.",
"type": "string",
"order": 6,
"default": "STANDARD",
"enum": [ "STANDARD", "CDC" ]
},
"ssl": {
"title": "SSL Connection",
"description": "Encrypt data using SSL. When activating SSL, please select one of the connection modes.",
"type": "boolean",
"default": false,
"order": 7
},
"ssl_mode": {
"title": "SSL Modes",
"description": "SSL connection modes. \n <b>disable</b> - Chose this mode to disable encryption of communication between Airbyte and destination database\n <b>allow</b> - Chose this mode to enable encryption only when required by the destination database\n <b>prefer</b> - Chose this mode to allow unencrypted connection only if the destination database does not support encryption\n <b>require</b> - Chose this mode to always require encryption. If the destination database server does not support encryption, connection will fail\n <b>verify-ca</b> - Chose this mode to always require encryption and to verify that the destination database server has a valid SSL certificate\n <b>verify-full</b> - This is the most secure mode. Chose this mode to always require encryption and to verify the identity of the destination database server\n See more information - <a href=\"https://teradata-docs.s3.amazonaws.com/doc/connectivity/jdbc/reference/current/jdbcug_chapter_2.html#URL_SSLMODE\"> in the docs</a>.",
"type": "object",
"order": 8,
"oneOf": [ {
"title": "disable",
"additionalProperties": true,
"description": "Disable SSL.",
"required": [ "mode" ],
"properties": {
"mode": {
"type": "string",
"const": "disable",
"order": 0
}
}
}, {
"title": "allow",
"additionalProperties": true,
"description": "Allow SSL mode.",
"required": [ "mode" ],
"properties": {
"mode": {
"type": "string",
"const": "allow",
"order": 0
}
}
}, {
"title": "prefer",
"additionalProperties": true,
"description": "Prefer SSL mode.",
"required": [ "mode" ],
"properties": {
"mode": {
"type": "string",
"const": "prefer",
"order": 0
}
}
}, {
"title": "require",
"additionalProperties": true,
"description": "Require SSL mode.",
"required": [ "mode" ],
"properties": {
"mode": {
"type": "string",
"const": "require",
"order": 0
}
}
}, {
"title": "verify-ca",
"additionalProperties": true,
"description": "Verify-ca SSL mode.",
"required": [ "mode", "ssl_ca_certificate" ],
"properties": {
"mode": {
"type": "string",
"const": "verify-ca",
"order": 0
},
"ssl_ca_certificate": {
"type": "string",
"title": "CA certificate",
"description": "Specifies the file name of a PEM file that contains Certificate Authority (CA) certificates for use with SSLMODE=verify-ca.\n See more information - <a href=\"https://teradata-docs.s3.amazonaws.com/doc/connectivity/jdbc/reference/current/jdbcug_chapter_2.html#URL_SSLCA\"> in the docs</a>.",
"airbyte_secret": true,
"multiline": true,
"order": 1
}
}
}, {
"title": "verify-full",
"additionalProperties": true,
"description": "Verify-full SSL mode.",
"required": [ "mode", "ssl_ca_certificate" ],
"properties": {
"mode": {
"type": "string",
"const": "verify-full",
"order": 0
},
"ssl_ca_certificate": {
"type": "string",
"title": "CA certificate",
"description": "Specifies the file name of a PEM file that contains Certificate Authority (CA) certificates for use with SSLMODE=verify-full.\n See more information - <a href=\"https://teradata-docs.s3.amazonaws.com/doc/connectivity/jdbc/reference/current/jdbcug_chapter_2.html#URL_SSLCA\"> in the docs</a>.",
"airbyte_secret": true,
"multiline": true,
"order": 1
}
}
} ]
}
}
},
"supportsNormalization": false,
"supportsDBT": false,
"supported_destination_sync_modes": [ ]
},
"tombstone": false,
"public": true,
"custom": false,
"releaseStage": "alpha",
"allowedHosts": {
"hosts": [ "${host}" ]
}
}, {
"sourceDefinitionId": "0dad1a35-ccf8-4d03-b73e-6788c00b13ae",
"name": "TiDB",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -405,7 +405,7 @@
- name: Copper
sourceDefinitionId: 44f3002f-2df9-4f6d-b21c-02cd3b47d0dc
dockerRepository: airbyte/source-copper
dockerImageTag: 0.1.0
dockerImageTag: 0.2.0
documentationUrl: https://docs.airbyte.com/integrations/sources/copper
icon: copper.svg
sourceType: api
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3072,7 +3072,7 @@
supportsNormalization: false
supportsDBT: false
supported_destination_sync_modes: []
- dockerImage: "airbyte/source-copper:0.1.0"
- dockerImage: "airbyte/source-copper:0.2.0"
spec:
documentationUrl: "https://docs.airbyte.com/integrations/sources/copper"
connectionSpecification:
Expand Down
2 changes: 1 addition & 1 deletion airbyte-integrations/connectors/source-copper/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -34,5 +34,5 @@ COPY source_copper ./source_copper
ENV AIRBYTE_ENTRYPOINT "python /airbyte/integration_code/main.py"
ENTRYPOINT ["python", "/airbyte/integration_code/main.py"]

LABEL io.airbyte.version=0.1.0
LABEL io.airbyte.version=0.2.0
LABEL io.airbyte.name=airbyte/source-copper
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"additionalProperties": true,
"properties": {
"id": {
"type": ["null", "integer"]
},
"name": {
"type": ["null", "string"]
},
"assignee_id": {
"type": ["null", "number"]
},
"close_date": {
"type": ["null", "string"]
},
"company_id" : {
"type" : ["null", "string"]
},
"company_name" : {
"type" : ["null", "string"]
},
"customer_source_id" : {
"type" : ["null", "string"]
},
"details" : {
"type" : ["null", "string"]
},
"loss_reason_id" : {
"type" : ["null", "string"]
},
"monetary_value" : {
"type" : ["null", "integer"]
},
"pipeline_id" : {
"type" : ["null", "string"]
},
"primary_contact_id" : {
"type" : ["null", "string"]
},
"priority" : {
"type" : ["null", "string"]
},
"pipeline_stage_id" : {
"type" : ["null", "string"]
},
"status" : {
"type" : ["null", "string"]
},
"tags": {
"type": ["null", "array"],
"items": {}
},
"win_probability" : {
"type" : ["null", "number"]
},
"date_created": {
"type": ["null", "integer"]
},
"date_modified": {
"type": ["null", "integer"]
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -91,6 +91,15 @@ def path(
return "companies/search"


class Opportunities(CopperStream):
primary_key = "id"

def path(
self, stream_state: Mapping[str, Any] = None, stream_slice: Mapping[str, Any] = None, next_page_token: Mapping[str, Any] = None
) -> str:
return "opportunities/search"


# Source
class SourceCopper(AbstractSource):
def check_connection(self, logger, config) -> Tuple[bool, any]:
Expand All @@ -102,4 +111,4 @@ def check_connection(self, logger, config) -> Tuple[bool, any]:
return False, f"Unable to connect to Copper API with the provided credentials - {repr(error)}"

def streams(self, config: Mapping[str, Any]) -> List[Stream]:
return [People(**config), Companies(**config), Projects(**config)]
return [People(**config), Companies(**config), Projects(**config), Opportunities(**config)]
Original file line number Diff line number Diff line change
Expand Up @@ -22,5 +22,5 @@ def test_streams(mocker):
config_mock = MagicMock()
streams = source.streams(config_mock)
# TODO: replace this with your streams number
expected_streams_number = 3
expected_streams_number = 4
assert len(streams) == expected_streams_number
Loading