diff --git a/airbyte-integrations/connectors/source-coassemble/README.md b/airbyte-integrations/connectors/source-coassemble/README.md new file mode 100644 index 0000000000000..028852e282149 --- /dev/null +++ b/airbyte-integrations/connectors/source-coassemble/README.md @@ -0,0 +1,33 @@ +# Coassemble +This directory contains the manifest-only connector for `source-coassemble`. + +Coassemble is an online training tool that connects people with the information they need - anytime, anyplace. + +## 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-coassemble:dev`) that you can use to test the connector locally. +```bash +airbyte-ci connectors --name=source-coassemble build +``` + +### Test +This will run the acceptance tests for the connector. +```bash +airbyte-ci connectors --name=source-coassemble test +``` + diff --git a/airbyte-integrations/connectors/source-coassemble/acceptance-test-config.yml b/airbyte-integrations/connectors/source-coassemble/acceptance-test-config.yml new file mode 100644 index 0000000000000..afaf690e60edc --- /dev/null +++ b/airbyte-integrations/connectors/source-coassemble/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-coassemble: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-coassemble/icon.svg b/airbyte-integrations/connectors/source-coassemble/icon.svg new file mode 100644 index 0000000000000..d0f5fe463a3a1 --- /dev/null +++ b/airbyte-integrations/connectors/source-coassemble/icon.svg @@ -0,0 +1 @@ + diff --git a/airbyte-integrations/connectors/source-coassemble/manifest.yaml b/airbyte-integrations/connectors/source-coassemble/manifest.yaml new file mode 100644 index 0000000000000..aae666b16a34f --- /dev/null +++ b/airbyte-integrations/connectors/source-coassemble/manifest.yaml @@ -0,0 +1,493 @@ +version: 5.7.3 + +type: DeclarativeSource + +description: >- + Coassemble is an online training tool that connects people with the + information they need - anytime, anyplace. + +check: + type: CheckStream + stream_names: + - courses + +definitions: + streams: + courses: + type: DeclarativeStream + name: courses + primary_key: + - id + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: /api/v1/headless/courses + http_method: GET + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: [] + paginator: + type: DefaultPaginator + page_token_option: + type: RequestOption + inject_into: request_parameter + field_name: page + page_size_option: + type: RequestOption + field_name: length + inject_into: request_parameter + pagination_strategy: + type: PageIncrement + page_size: 20 + start_from_page: 1 + inject_on_first_request: true + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/courses" + screen_types: + type: DeclarativeStream + name: screen_types + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: /api/v1/headless/screen/types + http_method: GET + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: [] + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/screen_types" + trackings: + type: DeclarativeStream + name: trackings + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: /api/v1/headless/trackings + http_method: GET + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: [] + paginator: + type: DefaultPaginator + page_token_option: + type: RequestOption + inject_into: request_parameter + field_name: page + page_size_option: + type: RequestOption + field_name: length + inject_into: request_parameter + pagination_strategy: + type: PageIncrement + page_size: 20 + start_from_page: 1 + inject_on_first_request: true + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/trackings" + base_requester: + type: HttpRequester + url_base: https://api.coassemble.com + authenticator: + type: ApiKeyAuthenticator + api_token: >- + COASSEMBLE-V1-SHA256 UserId={{ config["user_id"] }}, UserToken={{ + config["user_token"] }} + inject_into: + type: RequestOption + field_name: Authorization + inject_into: header + +streams: + - $ref: "#/definitions/streams/courses" + - $ref: "#/definitions/streams/screen_types" + - $ref: "#/definitions/streams/trackings" + +spec: + type: Spec + connection_specification: + type: object + $schema: http://json-schema.org/draft-07/schema# + required: + - user_token + - user_id + properties: + user_token: + type: string + name: api_key + order: 0 + title: User Token + airbyte_secret: true + user_id: + type: string + order: 1 + title: User ID + airbyte_secret: true + additionalProperties: true + +metadata: + autoImportSchema: + courses: true + screen_types: false + trackings: false + yamlComponents: + global: + - authenticator + testedStreams: + courses: + hasRecords: true + streamHash: e525c6075f62d30a2f08bf4f97fe3eada75513cd + hasResponse: true + primaryKeysAreUnique: true + primaryKeysArePresent: true + responsesAreSuccessful: true + screen_types: + streamHash: null + trackings: + streamHash: null + assist: + docsUrl: https://developers.coassemble.com/ + +schemas: + courses: + type: object + $schema: http://json-schema.org/schema# + additionalProperties: true + properties: + description: + type: + - string + - "null" + active: + type: + - boolean + - "null" + emails: + type: + - array + - "null" + finish: + anyOf: + - type: array + - type: object + properties: + description: + type: string + bg_colour: + type: "null" + button_label: + type: string + button_style: + type: string + confetti_style: + type: string + display_button: + type: boolean + display_confetti: + type: boolean + display_description: + type: boolean + display_feedback: + type: boolean + display_pattern: + type: boolean + display_title: + type: boolean + finish: + type: boolean + layout: + type: string + legacy: + type: boolean + link_type: + type: string + link_url: + type: string + mode: + type: string + overlay: + type: number + text_alignment: + type: string + title: + type: string + title_colour: + type: "null" + id: + type: number + identified: + type: + - boolean + - "null" + image: + type: + - string + - "null" + is_sharable: + type: + - boolean + - "null" + key: + type: + - string + - "null" + paid: + type: + - boolean + - "null" + private: + type: + - boolean + - "null" + screens: + type: + - array + - "null" + items: + type: + - object + - "null" + properties: + type: + type: + - object + - "null" + properties: + completable: + type: + - number + - "null" + icon: + type: + - string + - "null" + id: + type: + - number + - "null" + name: + type: + - string + - "null" + premium: + type: + - boolean + - "null" + title: + type: + - string + - "null" + description: + type: + - string + - "null" + asset: + type: + - string + - "null" + id: + type: + - number + - "null" + object: + type: + - object + - "null" + properties: + display_button: + type: + - boolean + - "null" + display_description: + type: + - boolean + - "null" + display_duration: + type: + - boolean + - "null" + display_title: + type: + - boolean + - "null" + drag_index: + type: + - number + - "null" + layout: + type: + - string + - "null" + legacy: + type: + - boolean + - "null" + mode: + type: + - string + - "null" + text_alignment: + type: + - string + - "null" + passing_grade: + type: + - number + - "null" + questions: + type: + - array + - "null" + scored: + type: + - boolean + - "null" + sequence: + type: + - number + - "null" + title: + type: + - string + - "null" + start: + type: + - object + - "null" + properties: + button_label: + type: + - string + - "null" + button_style: + type: + - string + - "null" + display_button: + type: + - boolean + - "null" + display_description: + type: + - boolean + - "null" + display_duration: + type: + - boolean + - "null" + display_pattern: + type: + - boolean + - "null" + drag_index: + type: + - number + - "null" + finish: + type: + - boolean + - "null" + layout: + type: + - string + - "null" + legacy: + type: + - boolean + - "null" + link_type: + type: + - string + - "null" + mode: + type: + - string + - "null" + overlay: + type: + - number + - "null" + start: + type: + - boolean + - "null" + text_alignment: + type: + - string + - "null" + text_colour: + type: + - string + - "null" + title_size: + type: + - string + - "null" + theme: + anyOf: + - type: array + - type: object + properties: + colours: + type: object + properties: + cover: + type: object + properties: + background: + type: string + headings: + type: string + pattern: + type: string + primary: + type: string + standard: + type: object + properties: + background: + type: string + headings: + type: string + primary: + type: string + font: + type: string + logo: + type: array + preset: + type: string + thumbnail: + type: + - string + - "null" + title: + type: + - string + - "null" + required: + - id + screen_types: + type: object + $schema: http://json-schema.org/draft-07/schema# + additionalProperties: true + properties: {} + trackings: + type: object + $schema: http://json-schema.org/draft-07/schema# + additionalProperties: true + properties: {} diff --git a/airbyte-integrations/connectors/source-coassemble/metadata.yaml b/airbyte-integrations/connectors/source-coassemble/metadata.yaml new file mode 100644 index 0000000000000..26edc782b7d8e --- /dev/null +++ b/airbyte-integrations/connectors/source-coassemble/metadata.yaml @@ -0,0 +1,35 @@ +metadataSpecVersion: "1.0" +data: + allowedHosts: + hosts: + - "api.coassemble.com" + registryOverrides: + oss: + enabled: true + cloud: + enabled: true + remoteRegistries: + pypi: + enabled: false + packageName: airbyte-source-coassemble + connectorBuildOptions: + baseImage: docker.io/airbyte/source-declarative-manifest:4.6.2@sha256:f5fcd3d4703b7590b6166a7853c5ed1686731607cd30a159a8c24e2fe2c1ee98 + connectorSubtype: api + connectorType: source + definitionId: 85999b05-fae0-4312-a3ae-f4987f50d434 + dockerImageTag: 0.0.1 + dockerRepository: airbyte/source-coassemble + githubIssueLabel: source-coassemble + icon: icon.svg + license: MIT + name: Coassemble + releaseDate: 2024-09-19 + releaseStage: alpha + supportLevel: community + documentationUrl: https://docs.airbyte.com/integrations/sources/coassemble + tags: + - language:manifest-only + - cdk:low-code + ab_internal: + ql: 100 + sl: 100 diff --git a/docs/integrations/sources/coassemble.md b/docs/integrations/sources/coassemble.md new file mode 100644 index 0000000000000..195af1a426435 --- /dev/null +++ b/docs/integrations/sources/coassemble.md @@ -0,0 +1,31 @@ +# Coassemble +Coassemble is an online training tool that connects people with the information they need - anytime, anyplace. + +## Configuration + +| Input | Type | Description | Default Value | +|-------|------|-------------|---------------| +| `user_token` | `string` | User Token. | | +| `user_id` | `string` | User ID. | | + +See the [Coassemble API docs](https://developers.coassemble.com/get-started) for more information to get started and generate API credentials. + +## Streams +| Stream Name | Primary Key | Pagination | Supports Full Sync | Supports Incremental | +|-------------|-------------|------------|---------------------|----------------------| +| courses | id | DefaultPaginator | ✅ | ❌ | +| screen_types | - | NoPaginator | ✅ | ❌ | +| trackings | - | DefaultPaginator | ✅ | ❌ | + +⚠️⚠️ Note: The `screen_types` and `trackings` streams are **Available on request only** as per the [API docs](https://developers.coassemble.com/get-started). Hence, enabling them without having them enabled on the API side would result in errors. ⚠️⚠️ + +## Changelog + +
+ Expand to review + +| Version | Date | Subject | +|------------------|------------|----------------| +| 0.0.1 | 2024-09-19 | Initial release by [@topefolorunso](https://github.com/topefolorunso) via Connector Builder| + +