diff --git a/airbyte-integrations/connectors/source-chift/README.md b/airbyte-integrations/connectors/source-chift/README.md new file mode 100644 index 000000000000..e5212cf144d1 --- /dev/null +++ b/airbyte-integrations/connectors/source-chift/README.md @@ -0,0 +1,32 @@ +# Chift +This directory contains the manifest-only connector for `source-chift`. + +Chift is a tool that allows for the integration of financial data into SaaS products. + +## Usage +There are multiple ways to use this connector: +- You can use this connector as any other connector in Airbyte Marketplace. +- You can load this connector in `pyairbyte` using `get_source`! +- You can open this connector in Connector Builder, edit it, and publish to your workspaces. + +Please refer to the manifest-only connector documentation for more details. + +## Local Development +We recommend you use the Connector Builder to edit this connector. + +But, if you want to develop this connector locally, you can use the following steps. + +### Environment Setup +You will need `airbyte-ci` installed. You can find the documentation [here](airbyte-ci). + +### Build +This will create a dev image (`source-chift:dev`) that you can use to test the connector locally. +```bash +airbyte-ci connectors --name=source-chift build +``` + +### Test +This will run the acceptance tests for the connector. +```bash +airbyte-ci connectors --name=source-chift test +``` \ No newline at end of file diff --git a/airbyte-integrations/connectors/source-chift/acceptance-test-config.yml b/airbyte-integrations/connectors/source-chift/acceptance-test-config.yml new file mode 100644 index 000000000000..8bf4f4f5a118 --- /dev/null +++ b/airbyte-integrations/connectors/source-chift/acceptance-test-config.yml @@ -0,0 +1,17 @@ +# See [Connector Acceptance Tests](https://docs.airbyte.com/connector-development/testing-connectors/connector-acceptance-tests-reference) +# for more information about how to configure these tests +connector_image: airbyte/source-chift:dev +acceptance_tests: + spec: + tests: + - spec_path: "manifest.yaml" + connection: + bypass_reason: "This is a builder contribution, and we do not have secrets at this time" + discovery: + bypass_reason: "This is a builder contribution, and we do not have secrets at this time" + basic_read: + bypass_reason: "This is a builder contribution, and we do not have secrets at this time" + incremental: + bypass_reason: "This is a builder contribution, and we do not have secrets at this time" + full_refresh: + bypass_reason: "This is a builder contribution, and we do not have secrets at this time" \ No newline at end of file diff --git a/airbyte-integrations/connectors/source-chift/icon.svg b/airbyte-integrations/connectors/source-chift/icon.svg new file mode 100644 index 000000000000..ca53cf7d9091 --- /dev/null +++ b/airbyte-integrations/connectors/source-chift/icon.svg @@ -0,0 +1,25 @@ + + + + + + + + diff --git a/airbyte-integrations/connectors/source-chift/manifest.yaml b/airbyte-integrations/connectors/source-chift/manifest.yaml new file mode 100644 index 000000000000..df4674852399 --- /dev/null +++ b/airbyte-integrations/connectors/source-chift/manifest.yaml @@ -0,0 +1,567 @@ +version: 6.48.15 + +type: DeclarativeSource + +description: >- + Chift is a tool that allows for the integration of financial data into SaaS + products. +check: + type: CheckStream + stream_names: + - consumers + +definitions: + streams: + syncs: + type: DeclarativeStream + name: syncs + retriever: + type: SimpleRetriever + decoder: + type: JsonDecoder + requester: + $ref: "#/definitions/base_requester" + path: /syncs + http_method: GET + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: [] + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/syncs" + consumers: + type: DeclarativeStream + name: consumers + retriever: + type: SimpleRetriever + decoder: + type: JsonDecoder + requester: + $ref: "#/definitions/base_requester" + path: /consumers + http_method: GET + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: [] + primary_key: + - consumerid + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/consumers" + connections: + type: DeclarativeStream + name: connections + retriever: + type: SimpleRetriever + decoder: + type: JsonDecoder + requester: + $ref: "#/definitions/base_requester" + path: /consumers/{{ stream_partition.parent_id }}/connections + http_method: GET + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: [] + partition_router: + type: SubstreamPartitionRouter + parent_stream_configs: + - type: ParentStreamConfig + stream: + $ref: "#/definitions/streams/consumers" + parent_key: consumerid + partition_field: parent_id + primary_key: + - connectionid + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/connections" + base_requester: + type: HttpRequester + url_base: https://api.chift.eu + authenticator: + type: SessionTokenAuthenticator + login_requester: + type: HttpRequester + url_base: https://api.chift.eu/token + http_method: POST + authenticator: + type: NoAuth + request_headers: {} + request_body_json: + clientId: "\"{{ config['client_id'] }}\"" + accountId: "\"{{ config['account_id'] }}\"" + clientSecret: "\"{{ config['client_secret'] }}\"" + request_parameters: {} + session_token_path: + - access_token + request_authentication: + type: Bearer + +streams: + - $ref: "#/definitions/streams/consumers" + - $ref: "#/definitions/streams/connections" + - $ref: "#/definitions/streams/syncs" + +spec: + type: Spec + connection_specification: + type: object + $schema: http://json-schema.org/draft-07/schema# + required: + - client_id + - client_secret + - account_id + properties: + client_id: + type: string + order: 0 + title: Client Id + airbyte_secret: true + account_id: + type: string + order: 2 + title: Account Id + airbyte_secret: true + client_secret: + type: string + order: 1 + title: Client Secret + airbyte_secret: true + additionalProperties: true + +metadata: + assist: {} + testedStreams: + syncs: + hasRecords: true + streamHash: 9ab33623df884c15f3c8e6fe91c1ba67ada79310 + hasResponse: true + primaryKeysAreUnique: true + primaryKeysArePresent: true + responsesAreSuccessful: true + consumers: + hasRecords: true + streamHash: 6a213c13e09695fd2f474616f8eee417f48c4cfd + hasResponse: true + primaryKeysAreUnique: true + primaryKeysArePresent: true + responsesAreSuccessful: true + connections: + hasRecords: true + streamHash: a3b802343a0df039fc4e7d1b4c8dc99ec69a1c6d + hasResponse: true + primaryKeysAreUnique: true + primaryKeysArePresent: true + responsesAreSuccessful: true + autoImportSchema: + syncs: true + consumers: true + connections: true + +schemas: + syncs: + type: object + $schema: http://json-schema.org/schema# + properties: + name: + type: + - string + - "null" + flows: + type: + - array + - "null" + items: + type: + - object + - "null" + properties: + description: + type: + - string + - "null" + id: + type: + - string + - "null" + name: + type: + - string + - "null" + config: + type: + - object + - "null" + properties: + datastores: + type: + - array + - "null" + items: + type: + - object + - "null" + properties: + id: + type: + - string + - "null" + name: + type: + - string + - "null" + status: + type: + - string + - "null" + definition: + type: + - object + - "null" + properties: + columns: + type: + - array + - "null" + items: + type: + - object + - "null" + properties: + type: + type: + - string + - "null" + name: + type: + - string + - "null" + title: + type: + - string + - "null" + optional: + type: + - boolean + - "null" + search_column: + type: + - string + - "null" + customFields: + type: + - array + - "null" + items: + type: + - object + - "null" + properties: + type: + type: + - string + - "null" + value: + type: + - string + - "null" + definitionFields: + type: + - array + - "null" + items: + type: + - object + - "null" + properties: + type: + type: + - string + - "null" + data: + type: + - array + - "null" + items: + type: + - object + - "null" + properties: + title: + type: + - string + - "null" + value: + type: + - string + - "null" + name: + type: + - string + - "null" + title: + type: + - string + - "null" + default: + type: + - string + - "null" + optional: + type: + - boolean + - "null" + triggers: + type: + - array + - "null" + items: + type: + - object + - "null" + properties: + type: + type: + - string + - "null" + id: + type: + - string + - "null" + visible: + type: + - boolean + - "null" + priority: + type: + - string + - "null" + cronschedules: + type: + - array + - "null" + items: + type: + - string + - "null" + syncid: + type: + - string + - "null" + mappings: + type: + - array + - "null" + items: + type: + - object + - "null" + properties: + description: + type: + - string + - "null" + name: + type: + - string + - "null" + sub_mappings: + type: + - array + - "null" + items: + type: + - object + - "null" + properties: + name: + type: + - string + - "null" + source_field: + type: + - object + - "null" + properties: + type: + type: + - string + - "null" + name: + type: + - string + - "null" + values: + type: + - array + - "null" + items: + type: + - object + - "null" + properties: + id: + type: + - string + - "null" + label: + type: + - string + - "null" + target_field: + type: + - object + - "null" + properties: + type: + type: + - string + - "null" + name: + type: + - string + - "null" + api_route: + type: + - string + - "null" + display_condition: + type: + - object + - "null" + properties: + in: + type: + - array + - "null" + items: + anyOf: + - type: object + properties: + var: + type: string + - type: array + items: + type: string + display_order: + type: + - number + - "null" + display_delete: + type: + - boolean + - "null" + display_order: + type: + - number + - "null" + consumers: + type: + - array + - "null" + items: + type: + - string + - "null" + connections: + type: + - array + - "null" + items: + type: + - object + - "null" + properties: + one_api: + type: + - number + - "null" + display_order: + type: + - number + - "null" + display_hidden: + type: + - boolean + - "null" + connection_type: + type: + - number + - "null" + additionalProperties: true + consumers: + type: object + $schema: http://json-schema.org/schema# + required: + - consumerid + properties: + name: + type: + - string + - "null" + email: + type: + - string + - "null" + consumerid: + type: string + redirect_url: + type: + - string + - "null" + internal_reference: + type: + - string + - "null" + additionalProperties: true + connections: + type: object + $schema: http://json-schema.org/schema# + required: + - connectionid + properties: + api: + type: + - string + - "null" + data: + type: + - object + - "null" + name: + type: + - string + - "null" + agent: + type: + - object + - "null" + properties: + status: + type: + - string + - "null" + status: + type: + - string + - "null" + integration: + type: + - string + - "null" + connectionid: + type: string + integrationid: + type: + - number + - "null" + additionalProperties: true \ No newline at end of file diff --git a/airbyte-integrations/connectors/source-chift/metadata.yaml b/airbyte-integrations/connectors/source-chift/metadata.yaml new file mode 100644 index 000000000000..6577afc3a08e --- /dev/null +++ b/airbyte-integrations/connectors/source-chift/metadata.yaml @@ -0,0 +1,35 @@ +metadataSpecVersion: "1.0" +data: + allowedHosts: + hosts: + - "api.chift.eu" + registryOverrides: + oss: + enabled: true + cloud: + enabled: true + remoteRegistries: + pypi: + enabled: false + packageName: airbyte-source-chift + connectorBuildOptions: + baseImage: docker.io/airbyte/source-declarative-manifest:6.61.6@sha256:a86098c6af1cf9d0b4484f33c973981a4d4f16740924ce9325b01ee4c8ca33df + connectorSubtype: api + connectorType: source + definitionId: d03aa64c-21a9-4edc-97b9-5590600ee3d6 + dockerImageTag: 0.0.1 + dockerRepository: airbyte/source-chift + githubIssueLabel: source-chift + icon: icon.svg + license: ELv2 + name: Chift + releaseDate: 2025-10-13 + releaseStage: alpha + supportLevel: community + documentationUrl: https://docs.airbyte.com/integrations/sources/chift + tags: + - language:manifest-only + - cdk:low-code + ab_internal: + ql: 100 + sl: 100 \ No newline at end of file diff --git a/docs/integrations/sources/chift.md b/docs/integrations/sources/chift.md new file mode 100644 index 000000000000..25c5b27d1d65 --- /dev/null +++ b/docs/integrations/sources/chift.md @@ -0,0 +1,28 @@ +# Chift +Chift is a tool that allows for the integration of financial data into SaaS products. + +## Configuration + +| Input | Type | Description | Default Value | +|-------|------|-------------|---------------| +| `client_id` | `string` | Client Id. | | +| `account_id` | `string` | Account Id. | | +| `client_secret` | `string` | Client Secret. | | + +## Streams +| Stream Name | Primary Key | Pagination | Supports Full Sync | Supports Incremental | +|-------------|-------------|------------|---------------------|----------------------| +| consumers | consumerid | No pagination | ✅ | ❌ | +| connections | connectionid | No pagination | ✅ | ❌ | +| syncs | | No pagination | ✅ | ❌ | + +## Changelog + +
+ Expand to review + +| Version | Date | Pull Request | Subject | +|------------------|-------------------|--------------|----------------| +| 0.0.1 | 2025-10-13 | | Initial release by [@FVidalCarneiro](https://github.com/FVidalCarneiro) via Connector Builder | + +
\ No newline at end of file