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|
+
+