1
0
mirror of synced 2025-12-23 11:57:55 -05:00
Files
airbyte/airbyte-integrations/connectors/source-thinkific-courses/manifest.yaml
2025-02-27 02:25:56 +02:00

332 lines
7.9 KiB
YAML

version: 6.34.0
type: DeclarativeSource
description: Getting Course information from thinkific
check:
type: CheckStream
stream_names:
- Courses
definitions:
streams:
Courses:
type: DeclarativeStream
name: Courses
retriever:
type: SimpleRetriever
requester:
$ref: "#/definitions/base_requester"
path: courses
http_method: GET
request_headers:
X-Auth-Subdomain: "{{config['X-Auth-Subdomain']}}"
record_selector:
type: RecordSelector
extractor:
type: DpathExtractor
field_path:
- items
paginator:
type: DefaultPaginator
page_token_option:
type: RequestOption
field_name: page
inject_into: request_parameter
page_size_option:
type: RequestOption
field_name: limit
inject_into: request_parameter
pagination_strategy:
type: PageIncrement
page_size: 250
start_from_page: 1
inject_on_first_request: true
schema_loader:
type: InlineSchemaLoader
schema:
$ref: "#/schemas/Courses"
Courses Chapters:
type: DeclarativeStream
name: Courses Chapters
retriever:
type: SimpleRetriever
requester:
$ref: "#/definitions/base_requester"
path: courses/{{ stream_partition['course_id'] }}/chapters
http_method: GET
request_headers:
X-Auth-Subdomain: "{{config['X-Auth-Subdomain']}}"
record_selector:
type: RecordSelector
extractor:
type: DpathExtractor
field_path:
- items
paginator:
type: DefaultPaginator
page_token_option:
type: RequestOption
inject_into: request_parameter
field_name: page
page_size_option:
type: RequestOption
inject_into: request_parameter
field_name: limit
pagination_strategy:
type: OffsetIncrement
page_size: 250
inject_on_first_request: true
partition_router:
type: SubstreamPartitionRouter
parent_stream_configs:
- type: ParentStreamConfig
parent_key: id
partition_field: course_id
stream:
$ref: "#/definitions/streams/Courses"
schema_loader:
type: InlineSchemaLoader
schema:
$ref: "#/schemas/Courses Chapters"
Contents:
type: DeclarativeStream
name: Contents
retriever:
type: SimpleRetriever
requester:
$ref: "#/definitions/base_requester"
path: /chapters/{{ stream_partition['chapter_id'] }}/contents
http_method: GET
request_headers:
X-Auth-Subdomain: "{{config['X-Auth-Subdomain']}}"
record_selector:
type: RecordSelector
extractor:
type: DpathExtractor
field_path:
- items
paginator:
type: DefaultPaginator
page_token_option:
type: RequestOption
inject_into: request_parameter
field_name: page
page_size_option:
type: RequestOption
inject_into: request_parameter
field_name: limit
pagination_strategy:
type: OffsetIncrement
page_size: 250
inject_on_first_request: true
partition_router:
type: SubstreamPartitionRouter
parent_stream_configs:
- type: ParentStreamConfig
parent_key: id
partition_field: chapter_id
stream:
$ref: "#/definitions/streams/Courses Chapters"
schema_loader:
type: InlineSchemaLoader
schema:
$ref: "#/schemas/Contents"
base_requester:
type: HttpRequester
url_base: https://api.thinkific.com/api/public/v1/
authenticator:
type: ApiKeyAuthenticator
api_token: "{{ config[\"api_key\"] }}"
inject_into:
type: RequestOption
field_name: X-Auth-API-Key
inject_into: header
streams:
- $ref: "#/definitions/streams/Courses"
- $ref: "#/definitions/streams/Courses Chapters"
- $ref: "#/definitions/streams/Contents"
spec:
type: Spec
connection_specification:
type: object
$schema: http://json-schema.org/draft-07/schema#
required:
- api_key
- X-Auth-Subdomain
properties:
api_key:
type: string
order: 0
title: API Key
airbyte_secret: true
X-Auth-Subdomain:
type: string
order: 1
title: subdomain
additionalProperties: true
metadata:
autoImportSchema:
Courses: true
Courses Chapters: true
Contents: true
yamlComponents:
global:
- authenticator
testedStreams:
Courses:
streamHash: 502c97d516c0cc742f9284ee1036ba428400769f
hasResponse: true
responsesAreSuccessful: true
hasRecords: true
primaryKeysArePresent: true
primaryKeysAreUnique: true
Courses Chapters:
streamHash: 5eaff284c21c79afedd7c176e8be15bb6d972145
hasResponse: true
responsesAreSuccessful: true
hasRecords: true
primaryKeysArePresent: true
primaryKeysAreUnique: true
Contents:
streamHash: 6827e7bd3857e8469a75c6a43a94cfc5d3b14edf
hasResponse: true
responsesAreSuccessful: true
hasRecords: true
primaryKeysArePresent: true
primaryKeysAreUnique: true
assist: {}
schemas:
Courses:
type: object
$schema: http://json-schema.org/schema#
additionalProperties: true
properties:
description:
type:
- string
- "null"
administrator_user_ids:
type:
- array
- "null"
items:
type:
- number
- "null"
banner_image_url:
type:
- string
- "null"
chapter_ids:
type:
- array
- "null"
items:
type:
- number
- "null"
contact_information:
type:
- string
- "null"
course_card_image_url:
type:
- string
- "null"
id:
type:
- number
- "null"
instructor_id:
type:
- number
- "null"
name:
type:
- string
- "null"
product_id:
type:
- number
- "null"
reviews_enabled:
type:
- boolean
- "null"
slug:
type:
- string
- "null"
user_id:
type:
- number
- "null"
Courses Chapters:
type: object
$schema: http://json-schema.org/schema#
additionalProperties: true
properties:
content_ids:
type:
- array
- "null"
items:
type:
- number
- "null"
duration_in_seconds:
type:
- number
- "null"
id:
type:
- number
- "null"
name:
type:
- string
- "null"
position:
type:
- number
- "null"
Contents:
type: object
$schema: http://json-schema.org/schema#
additionalProperties: true
properties:
chapter_id:
type:
- number
- "null"
contentable_type:
type:
- string
- "null"
free:
type:
- boolean
- "null"
id:
type:
- number
- "null"
name:
type:
- string
- "null"
position:
type:
- number
- "null"
take_url:
type:
- string
- "null"