From 6fca239f56775aac2c9f49d0bde4264a2a802da5 Mon Sep 17 00:00:00 2001 From: Natalie Kwong <38087517+nataliekwong@users.noreply.github.com> Date: Tue, 17 Sep 2024 18:29:27 -0700 Subject: [PATCH] Submission for source-front-app from Connector Builder --- .../connectors/source-front-app/README.md | 33 +++ .../acceptance-test-config.yml | 17 ++ .../connectors/source-front-app/icon.svg | 3 + .../connectors/source-front-app/manifest.yaml | 207 ++++++++++++++++++ .../connectors/source-front-app/metadata.yaml | 35 +++ docs/integrations/sources/front-app.md | 25 +++ 6 files changed, 320 insertions(+) create mode 100644 airbyte-integrations/connectors/source-front-app/README.md create mode 100644 airbyte-integrations/connectors/source-front-app/acceptance-test-config.yml create mode 100644 airbyte-integrations/connectors/source-front-app/icon.svg create mode 100644 airbyte-integrations/connectors/source-front-app/manifest.yaml create mode 100644 airbyte-integrations/connectors/source-front-app/metadata.yaml create mode 100644 docs/integrations/sources/front-app.md diff --git a/airbyte-integrations/connectors/source-front-app/README.md b/airbyte-integrations/connectors/source-front-app/README.md new file mode 100644 index 000000000000..b6217c3687f7 --- /dev/null +++ b/airbyte-integrations/connectors/source-front-app/README.md @@ -0,0 +1,33 @@ +# Front App +This directory contains the manifest-only connector for `source-front-app`. + +New Front app 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-front-app:dev`) that you can use to test the connector locally. +```bash +airbyte-ci connectors --name=source-front-app build +``` + +### Test +This will run the acceptance tests for the connector. +```bash +airbyte-ci connectors --name=source-front-app test +``` + diff --git a/airbyte-integrations/connectors/source-front-app/acceptance-test-config.yml b/airbyte-integrations/connectors/source-front-app/acceptance-test-config.yml new file mode 100644 index 000000000000..34e1b5ce3529 --- /dev/null +++ b/airbyte-integrations/connectors/source-front-app/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-front-app: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-front-app/icon.svg b/airbyte-integrations/connectors/source-front-app/icon.svg new file mode 100644 index 000000000000..cf5618012c9a --- /dev/null +++ b/airbyte-integrations/connectors/source-front-app/icon.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/airbyte-integrations/connectors/source-front-app/manifest.yaml b/airbyte-integrations/connectors/source-front-app/manifest.yaml new file mode 100644 index 000000000000..e171675f7e56 --- /dev/null +++ b/airbyte-integrations/connectors/source-front-app/manifest.yaml @@ -0,0 +1,207 @@ +version: 4.6.2 + +type: DeclarativeSource + +description: "New Front app connector " + +check: + type: CheckStream + stream_names: + - teammates + +definitions: + streams: + teammates: + type: DeclarativeStream + name: teammates + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: /teammates + http_method: GET + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: [] + paginator: + type: DefaultPaginator + page_token_option: + type: RequestPath + pagination_strategy: + type: CursorPagination + cursor_value: "{{ response.get('_pagination', {}).get('next') }}" + stop_condition: "{{ response.get('_pagination', {}).get('next') is none }}" + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/teammates" + messages: + type: DeclarativeStream + name: messages + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: /conversations + http_method: GET + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: [] + paginator: + type: DefaultPaginator + page_token_option: + type: RequestPath + pagination_strategy: + type: CursorPagination + cursor_value: "{{ response.get('_pagination', {}).get('next') }}" + stop_condition: "{{ response.get('_pagination', {}).get('next') is none }}" + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/messages" + base_requester: + type: HttpRequester + url_base: https://api2.frontapp.com + authenticator: + type: BearerAuthenticator + api_token: "{{ config[\"api_key\"] }}" + +streams: + - $ref: "#/definitions/streams/teammates" + - $ref: "#/definitions/streams/messages" + +spec: + type: Spec + connection_specification: + type: object + $schema: http://json-schema.org/draft-07/schema# + required: + - api_key + properties: + api_key: + type: string + description: API key or access token + name: api_key + title: API Key + airbyte_secret: true + order: 0 + additionalProperties: true + +metadata: + autoImportSchema: + teammates: true + messages: false + testedStreams: + teammates: + streamHash: a2da219c6a4224290a33562655a385fc6a203647 + hasResponse: true + responsesAreSuccessful: true + hasRecords: true + primaryKeysArePresent: true + primaryKeysAreUnique: true + messages: + streamHash: 6dab013976f0a971a5bc1ec1c657af05c366facd + hasResponse: true + responsesAreSuccessful: true + hasRecords: true + primaryKeysArePresent: true + primaryKeysAreUnique: true + assist: + docsUrl: https://dev.frontapp.com/docs/welcome + +schemas: + teammates: + type: object + $schema: http://json-schema.org/schema# + additionalProperties: true + properties: + _links: + type: + - object + - "null" + properties: + self: + type: + - string + - "null" + _pagination: + type: + - object + - "null" + properties: {} + _results: + type: + - array + - "null" + items: + type: + - object + - "null" + properties: + _links: + type: + - object + - "null" + properties: + related: + type: + - object + - "null" + properties: + conversations: + type: + - string + - "null" + inboxes: + type: + - string + - "null" + self: + type: + - string + - "null" + custom_fields: + type: + - object + - "null" + email: + type: + - string + - "null" + first_name: + type: + - string + - "null" + id: + type: + - string + - "null" + is_admin: + type: + - boolean + - "null" + is_available: + type: + - boolean + - "null" + is_blocked: + type: + - boolean + - "null" + last_name: + type: + - string + - "null" + username: + type: + - string + - "null" + messages: + type: object + $schema: http://json-schema.org/draft-07/schema# + additionalProperties: true + properties: {} diff --git a/airbyte-integrations/connectors/source-front-app/metadata.yaml b/airbyte-integrations/connectors/source-front-app/metadata.yaml new file mode 100644 index 000000000000..0d408cdecb3c --- /dev/null +++ b/airbyte-integrations/connectors/source-front-app/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-front-app + connectorBuildOptions: + baseImage: docker.io/airbyte/source-declarative-manifest:4.6.2@sha256:f5fcd3d4703b7590b6166a7853c5ed1686731607cd30a159a8c24e2fe2c1ee98 + connectorSubtype: api + connectorType: source + definitionId: ea896179-b4be-4ea3-8b16-4111d6df038b + dockerImageTag: 0.0.1 + dockerRepository: airbyte/source-front-app + githubIssueLabel: source-front-app + icon: icon.svg + license: MIT + name: Front App + releaseDate: 2024-09-18 + releaseStage: alpha + supportLevel: community + documentationUrl: https://docs.airbyte.com/integrations/sources/front-app + tags: + - language:manifest-only + - cdk:low-code + ab_internal: + ql: 100 + sl: 100 diff --git a/docs/integrations/sources/front-app.md b/docs/integrations/sources/front-app.md new file mode 100644 index 000000000000..b5a478caa679 --- /dev/null +++ b/docs/integrations/sources/front-app.md @@ -0,0 +1,25 @@ +# Front App +New Front app connector + +## Configuration + +| Input | Type | Description | Default Value | +|-------|------|-------------|---------------| +| `api_key` | `string` | API Key. API key or access token | | + +## Streams +| Stream Name | Primary Key | Pagination | Supports Full Sync | Supports Incremental | +|-------------|-------------|------------|---------------------|----------------------| +| teammates | | DefaultPaginator | ✅ | ❌ | +| messages | | DefaultPaginator | ✅ | ❌ | + +## 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