diff --git a/airbyte-integrations/connectors/source-chameleon/README.md b/airbyte-integrations/connectors/source-chameleon/README.md new file mode 100644 index 000000000000..cd0e89a03f4a --- /dev/null +++ b/airbyte-integrations/connectors/source-chameleon/README.md @@ -0,0 +1,33 @@ +# Chameleon +This directory contains the manifest-only connector for `source-chameleon`. + +Chameleon connector + +## 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-chameleon:dev`) that you can use to test the connector locally. +```bash +airbyte-ci connectors --name=source-chameleon build +``` + +### Test +This will run the acceptance tests for the connector. +```bash +airbyte-ci connectors --name=source-chameleon test +``` + diff --git a/airbyte-integrations/connectors/source-chameleon/acceptance-test-config.yml b/airbyte-integrations/connectors/source-chameleon/acceptance-test-config.yml new file mode 100644 index 000000000000..a037146b01a7 --- /dev/null +++ b/airbyte-integrations/connectors/source-chameleon/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-chameleon: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" diff --git a/airbyte-integrations/connectors/source-chameleon/icon.svg b/airbyte-integrations/connectors/source-chameleon/icon.svg new file mode 100644 index 000000000000..cf5618012c9a --- /dev/null +++ b/airbyte-integrations/connectors/source-chameleon/icon.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/airbyte-integrations/connectors/source-chameleon/manifest.yaml b/airbyte-integrations/connectors/source-chameleon/manifest.yaml new file mode 100644 index 000000000000..e8357345ab51 --- /dev/null +++ b/airbyte-integrations/connectors/source-chameleon/manifest.yaml @@ -0,0 +1,380 @@ +version: 4.6.2 + +type: DeclarativeSource + +description: "Chameleon connector " + +check: + type: CheckStream + stream_names: + - tours + +definitions: + streams: + tours: + type: DeclarativeStream + name: tours + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: /edit/tours + http_method: GET + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - tours + paginator: + type: DefaultPaginator + pagination_strategy: + type: PageIncrement + page_size: 1 + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/tours" + microsurveys: + type: DeclarativeStream + name: microsurveys + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: /edit/surveys + http_method: GET + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - surveys + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/microsurveys" + tooltips: + type: DeclarativeStream + name: tooltips + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: /edit/tooltips + http_method: GET + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - tooltips + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/tooltips" + launchers: + type: DeclarativeStream + name: launchers + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: /edit/launchers + http_method: GET + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - launchers + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/launchers" + base_requester: + type: HttpRequester + url_base: https://api.chameleon.io/v3 + authenticator: + type: ApiKeyAuthenticator + api_token: "{{ config[\"api_key\"] }}" + inject_into: + type: RequestOption + field_name: X-Account-Secret + inject_into: header + +streams: + - $ref: "#/definitions/streams/tours" + - $ref: "#/definitions/streams/microsurveys" + - $ref: "#/definitions/streams/tooltips" + - $ref: "#/definitions/streams/launchers" + +spec: + type: Spec + connection_specification: + type: object + $schema: http://json-schema.org/draft-07/schema# + required: + - api_key + properties: + api_key: + type: string + order: 0 + title: API Key + airbyte_secret: true + additionalProperties: true + +metadata: + autoImportSchema: + tours: false + microsurveys: false + tooltips: true + launchers: true + testedStreams: + tours: + hasRecords: true + streamHash: 8fbccfe7d0aba8ab9cf4960121797f34624a861a + hasResponse: true + primaryKeysAreUnique: true + primaryKeysArePresent: true + responsesAreSuccessful: true + microsurveys: + hasRecords: true + streamHash: db79196dba54f616d7206c4e3c02bfe7a9a3e698 + hasResponse: true + primaryKeysAreUnique: true + primaryKeysArePresent: true + responsesAreSuccessful: true + tooltips: + hasRecords: true + streamHash: 1eb6c3fe16678e3d2fee0582f67291f73d4c3c33 + hasResponse: true + primaryKeysAreUnique: true + primaryKeysArePresent: true + responsesAreSuccessful: true + launchers: + hasRecords: true + streamHash: 9dea0aabe1b99521a768895fca99b3e4475b24b0 + hasResponse: true + primaryKeysAreUnique: true + primaryKeysArePresent: true + responsesAreSuccessful: true + assist: + docsUrl: https://developers.chameleon.io/#/apis/tours + +schemas: + tours: + type: object + $schema: http://json-schema.org/draft-07/schema# + additionalProperties: true + properties: {} + microsurveys: + type: object + $schema: http://json-schema.org/draft-07/schema# + additionalProperties: true + properties: {} + tooltips: + type: object + $schema: http://json-schema.org/schema# + additionalProperties: true + properties: + created_at: + type: + - string + - "null" + id: + type: + - string + - "null" + name: + type: + - string + - "null" + position: + type: + - number + - "null" + tag_ids: + type: + - array + - "null" + updated_at: + type: + - string + - "null" + launchers: + type: object + $schema: http://json-schema.org/schema# + additionalProperties: true + properties: + created_at: + type: + - string + - "null" + empty_state_content: + type: + - string + - "null" + excluded_segment_ids: + type: + - array + - "null" + icon_size: + type: + - string + - "null" + id: + type: + - string + - "null" + items: + type: + - array + - "null" + items: + type: + - object + - "null" + properties: + description: + type: + - string + - "null" + campaign_id: + type: + - string + - "null" + created_at: + type: + - string + - "null" + hide: + type: + - boolean + - "null" + id: + type: + - string + - "null" + kind: + type: + - string + - "null" + script: + type: + - string + - "null" + segment_id: + type: + - string + - "null" + title: + type: + - string + - "null" + updated_at: + type: + - string + - "null" + url: + type: + - string + - "null" + list_type: + type: + - string + - "null" + name: + type: + - string + - "null" + position_type: + type: + - string + - "null" + quantifier_urls: + type: + - array + - "null" + items: + type: + - object + - "null" + properties: + id: + type: + - string + - "null" + match_type: + type: + - string + - "null" + url: + type: + - string + - "null" + screen_position: + type: + - string + - "null" + segment_id: + type: + - string + - "null" + segment_ids: + type: + - array + - "null" + items: + type: + - string + - "null" + segments_op: + type: + - string + - "null" + stats: + type: + - object + - "null" + properties: + displayed_count: + type: + - number + - "null" + last_displayed_at: + type: + - string + - "null" + last_started_at: + type: + - string + - "null" + started_count: + type: + - number + - "null" + tag_ids: + type: + - array + - "null" + title: + type: + - string + - "null" + trigger: + type: + - string + - "null" + trigger_text: + type: + - string + - "null" + trigger_type: + type: + - string + - "null" + updated_at: + type: + - string + - "null" diff --git a/airbyte-integrations/connectors/source-chameleon/metadata.yaml b/airbyte-integrations/connectors/source-chameleon/metadata.yaml new file mode 100644 index 000000000000..9c748ab5cfc1 --- /dev/null +++ b/airbyte-integrations/connectors/source-chameleon/metadata.yaml @@ -0,0 +1,35 @@ +metadataSpecVersion: "1.0" +data: + allowedHosts: + hosts: + - "*" + registryOverrides: + oss: + enabled: true + cloud: + enabled: true + remoteRegistries: + pypi: + enabled: false + packageName: airbyte-source-chameleon + connectorBuildOptions: + baseImage: docker.io/airbyte/source-declarative-manifest:4.6.2@sha256:f5fcd3d4703b7590b6166a7853c5ed1686731607cd30a159a8c24e2fe2c1ee98 + connectorSubtype: api + connectorType: source + definitionId: 827042e9-ee44-49cd-8126-ebf24203aa99 + dockerImageTag: 0.0.1 + dockerRepository: airbyte/source-chameleon + githubIssueLabel: source-chameleon + icon: icon.svg + license: MIT + name: Chameleon + releaseDate: 2024-09-18 + releaseStage: alpha + supportLevel: community + documentationUrl: https://docs.airbyte.com/integrations/sources/chameleon + tags: + - language:manifest-only + - cdk:low-code + ab_internal: + ql: 100 + sl: 100 diff --git a/docs/integrations/sources/chameleon.md b/docs/integrations/sources/chameleon.md new file mode 100644 index 000000000000..4d0f9b993af4 --- /dev/null +++ b/docs/integrations/sources/chameleon.md @@ -0,0 +1,27 @@ +# Chameleon +Chameleon connector + +## Configuration + +| Input | Type | Description | Default Value | +|-------|------|-------------|---------------| +| `api_key` | `string` | API Key. | | + +## Streams +| Stream Name | Primary Key | Pagination | Supports Full Sync | Supports Incremental | +|-------------|-------------|------------|---------------------|----------------------| +| tours | | DefaultPaginator | ✅ | ❌ | +| microsurveys | | No pagination | ✅ | ❌ | +| tooltips | | No pagination | ✅ | ❌ | +| launchers | | No pagination | ✅ | ❌ | + +## Changelog + +
+ Expand to review + +| Version | Date | Subject | +|------------------|------------|----------------| +| 0.0.1 | 2024-09-18 | Initial release by [@nataliekwong](https://github.com/nataliekwong) via Connector Builder| + +
\ No newline at end of file