332 lines
7.9 KiB
YAML
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"
|