632 lines
15 KiB
YAML
632 lines
15 KiB
YAML
---
|
|
"$schema": "http://json-schema.org/draft-06/schema#"
|
|
title: Connector Builder #TODO
|
|
type: object
|
|
description: Connector Builder structs #TODO
|
|
properties:
|
|
version:
|
|
"$ref": "#/definitions/Version"
|
|
streams:
|
|
"$ref": "#/definitions/Streams"
|
|
check:
|
|
"$ref": "#/definitions/ConnectionChecker"
|
|
definitions:
|
|
"$options":
|
|
type: object
|
|
additionalProperties: true
|
|
ConnectionChecker:
|
|
type: object
|
|
anyOf:
|
|
- "$ref": "#/definitions/CheckStream"
|
|
CheckStream:
|
|
type: object
|
|
additionalProperties: true
|
|
required:
|
|
- stream_names
|
|
properties:
|
|
"$options":
|
|
"$ref": "#/definitions/$options"
|
|
stream_names:
|
|
type: array
|
|
items:
|
|
type: string
|
|
Version:
|
|
type: string
|
|
description: "connector definition version"
|
|
Streams:
|
|
type: array
|
|
items:
|
|
"$ref": "#/definitions/Stream"
|
|
Stream:
|
|
type: object
|
|
additionalProperties: true
|
|
required:
|
|
- name
|
|
- retriever
|
|
properties:
|
|
"$options":
|
|
"$ref": "#/definitions/$options"
|
|
name:
|
|
type: string
|
|
primary_key:
|
|
"$ref": "#/definitions/PrimaryKey"
|
|
retriever:
|
|
"$ref": "#/definitions/Retriever"
|
|
stream_cursor_field:
|
|
type: string
|
|
transformations:
|
|
"$ref": "#/definitions/RecordTransformation"
|
|
checkpoint_interval:
|
|
type: integer
|
|
PrimaryKey:
|
|
type: string
|
|
Retriever:
|
|
type: object
|
|
anyOf:
|
|
- "$ref": "#/definitions/SimpleRetriever"
|
|
SimpleRetriever:
|
|
type: object
|
|
additionalProperties: true
|
|
required:
|
|
- name
|
|
- requester
|
|
- record_selector
|
|
properties:
|
|
"$options":
|
|
"$ref": "#/definitions/$options"
|
|
name:
|
|
type: string
|
|
primary_key:
|
|
"$ref": "#/definitions/PrimaryKey"
|
|
requester:
|
|
"$ref": "#/definitions/Requester"
|
|
record_selector:
|
|
"$ref": "#/definitions/HttpSelector"
|
|
paginator:
|
|
"$ref": "#/definitions/Paginator"
|
|
stream_slicer:
|
|
"$ref": "#/definitions/StreamSlicer"
|
|
Requester:
|
|
type: object
|
|
anyOf:
|
|
- "$ref": "#/definitions/HttpRequester"
|
|
HttpRequester:
|
|
type: object
|
|
additionalProperties: true
|
|
required:
|
|
- name
|
|
- url_base
|
|
- path
|
|
properties:
|
|
"$options":
|
|
"$ref": "#/definitions/$options"
|
|
name:
|
|
type: string
|
|
url_base:
|
|
type: string
|
|
description: "base url"
|
|
path:
|
|
type: string
|
|
description: "path"
|
|
http_method:
|
|
"$ref": "#/definitions/HttpMethod"
|
|
default: "GET"
|
|
request_options_provider:
|
|
"$ref": "#/definitions/RequestOptionsProvider"
|
|
authenticator:
|
|
"$ref": "#/definitions/Authenticator"
|
|
error_handler:
|
|
"$ref": "#/definitions/ErrorHandler"
|
|
HttpMethod:
|
|
type: string
|
|
enum:
|
|
- GET
|
|
- POST
|
|
RequestOptionsProvider:
|
|
type: object
|
|
anyOf:
|
|
- "$ref": "#/definitions/InterpolatedRequestOptionsProvider"
|
|
InterpolatedRequestOptionsProvider:
|
|
type: object
|
|
additionalProperties: true
|
|
properties:
|
|
"$options":
|
|
"$ref": "#/definitions/$options"
|
|
request_parameters:
|
|
"$ref": "#/definitions/RequestInput"
|
|
request_headers:
|
|
"$ref": "#/definitions/RequestInput"
|
|
request_body_data:
|
|
"$ref": "#/definitions/RequestInput"
|
|
request_body_json:
|
|
"$ref": "#/definitions/RequestInput"
|
|
RequestInput:
|
|
type: object
|
|
additionalProperties: true
|
|
Authenticator:
|
|
type: object
|
|
description: "Authenticator type"
|
|
anyOf:
|
|
- "$ref": "#/definitions/OAuth"
|
|
- "$ref": "#/definitions/ApiKeyAuthenticator"
|
|
- "$ref": "#/definitions/BearerAuthenticator"
|
|
- "$ref": "#/definitions/BasicHttpAuthenticator"
|
|
ApiKeyAuthenticator:
|
|
type: object
|
|
additionalProperties: true
|
|
required:
|
|
- header
|
|
- api_token
|
|
properties:
|
|
"$options":
|
|
"$ref": "#/definitions/$options"
|
|
header:
|
|
type: string
|
|
api_token:
|
|
type: string
|
|
BearerAuthenticator:
|
|
type: object
|
|
additionalProperties: true
|
|
required:
|
|
- api_token
|
|
properties:
|
|
"$options":
|
|
"$ref": "#/definitions/$options"
|
|
api_token:
|
|
type: string
|
|
BasicHttpAuthenticator:
|
|
type: object
|
|
additionalProperties: true
|
|
required:
|
|
- username
|
|
properties:
|
|
"$options":
|
|
"$ref": "#/definitions/$options"
|
|
username:
|
|
type: string
|
|
password:
|
|
type: string
|
|
OAuth:
|
|
type: object
|
|
additionalProperties: true
|
|
required:
|
|
- token_refresh_endpoint
|
|
- client_id
|
|
- client_secret
|
|
- refresh_token
|
|
- access_token_name
|
|
- expires_in_name
|
|
properties:
|
|
"$options":
|
|
"$ref": "#/definitions/$options"
|
|
token_refresh_endpoint:
|
|
type: string
|
|
client_id:
|
|
type: string
|
|
client_secret:
|
|
type: string
|
|
refresh_token:
|
|
type: string
|
|
scopes:
|
|
type: array
|
|
items:
|
|
type: string
|
|
default: []
|
|
token_expiry_date:
|
|
type: string
|
|
access_token_name:
|
|
type: string
|
|
default: "access_token"
|
|
expires_in_name:
|
|
type: string
|
|
default: "expires_in"
|
|
refresh_request_body:
|
|
type: object
|
|
grant_type:
|
|
type: string
|
|
default: "refresh_token"
|
|
Paginator:
|
|
type: object
|
|
anyOf:
|
|
- "$ref": "#/definitions/DefaultPaginator"
|
|
- "$ref": "#/definitions/NoPagination"
|
|
DefaultPaginator:
|
|
type: object
|
|
additionalProperties: true
|
|
required:
|
|
- page_token_option
|
|
- pagination_strategy
|
|
- url_base
|
|
properties:
|
|
"$options":
|
|
"$ref": "#/definitions/$options"
|
|
page_size:
|
|
type: integer
|
|
page_size_option:
|
|
"$ref": "#/definitions/RequestOption"
|
|
page_token_option:
|
|
"$ref": "#/definitions/RequestOption"
|
|
pagination_strategy:
|
|
"$ref": "#/definitions/PaginationStrategy"
|
|
url_base:
|
|
type: string
|
|
NoPagination:
|
|
type: object
|
|
additionalProperties: true
|
|
RequestOption:
|
|
type: object
|
|
additionalProperties: true
|
|
required:
|
|
- inject_into
|
|
properties:
|
|
inject_into:
|
|
"$ref": "#/definitions/RequestOptionType"
|
|
field_name:
|
|
type: string
|
|
RequestOptionType:
|
|
type: string
|
|
enum:
|
|
- request_parameter
|
|
- header
|
|
- path
|
|
- body_data
|
|
- body_json
|
|
PaginationStrategy:
|
|
type: object
|
|
anyOf:
|
|
- "$ref": "#/definitions/CursorPagination"
|
|
- "$ref": "#/definitions/OffsetIncrement"
|
|
- "$ref": "#/definitions/PageIncrement"
|
|
CursorPagination:
|
|
type: object
|
|
additionalProperties: true
|
|
required:
|
|
- cursor_value
|
|
properties:
|
|
"$options":
|
|
"$ref": "#/definitions/$options"
|
|
cursor_value:
|
|
type: string
|
|
stop_condition:
|
|
type: string
|
|
page_size:
|
|
type: integer
|
|
OffsetIncrement:
|
|
type: object
|
|
additionalProperties: true
|
|
required:
|
|
- page_size
|
|
properties:
|
|
"$options":
|
|
"$ref": "#/definitions/$options"
|
|
page_size:
|
|
type: integer
|
|
PageIncrement:
|
|
type: object
|
|
additionalProperties: true
|
|
required:
|
|
- page_size
|
|
properties:
|
|
"$options":
|
|
"$ref": "#/definitions/$options"
|
|
page_size:
|
|
type: integer
|
|
HttpSelector:
|
|
type: object
|
|
anyOf:
|
|
- "$ref": "#/definitions/RecordSelector"
|
|
RecordSelector:
|
|
type: object
|
|
required:
|
|
- extractor
|
|
properties:
|
|
"$options":
|
|
"$ref": "#/definitions/$options"
|
|
extractor:
|
|
"$ref": "#/definitions/RecordExtractor"
|
|
record_filter:
|
|
"$ref": "#/definitions/RecordFilter"
|
|
RecordExtractor:
|
|
type: object
|
|
anyOf:
|
|
- "$ref": "#/definitions/DpathExtractor"
|
|
DpathExtractor:
|
|
type: object
|
|
additionalProperties: true
|
|
required:
|
|
- field_pointer
|
|
properties:
|
|
"$options":
|
|
"$ref": "#/definitions/$options"
|
|
field_pointer:
|
|
type: array
|
|
items:
|
|
type: string
|
|
RecordFilter:
|
|
type: object
|
|
additionalProperties: true
|
|
properties:
|
|
"$options":
|
|
"$ref": "#/definitions/$options"
|
|
condition:
|
|
type: string
|
|
StreamSlicer:
|
|
type: object
|
|
anyOf:
|
|
- "$ref": "#/definitions/DatetimeStreamSlicer"
|
|
- "$ref": "#/definitions/ListStreamSlicer"
|
|
- "$ref": "#/definitions/CartesianProductStreamSlicer"
|
|
- "$ref": "#/definitions/SubstreamSlicer"
|
|
- "$ref": "#/definitions/SingleSlice"
|
|
SingleSlice:
|
|
type: object
|
|
additionalProperties: true
|
|
SubstreamSlicer:
|
|
type: object
|
|
required:
|
|
- parent_stream_configs
|
|
additionalProperties: true
|
|
properties:
|
|
"$options":
|
|
"$ref": "#/definitions/$options"
|
|
parent_stream_configs:
|
|
type: array
|
|
items:
|
|
"$ref": "#/definitions/ParentStreamConfig"
|
|
ParentStreamConfig:
|
|
type: object
|
|
required:
|
|
- stream
|
|
- parent_key
|
|
- stream_slice_field
|
|
additionalProperties: true
|
|
properties:
|
|
"$options":
|
|
"$ref": "#/definitions/$options"
|
|
stream:
|
|
"$ref": "#/definitions/Stream"
|
|
parent_key:
|
|
type: string
|
|
stream_slice_field:
|
|
type: string
|
|
request_option:
|
|
"$ref": "#/definitions/RequestOption"
|
|
CartesianProductStreamSlicer:
|
|
type: object
|
|
required:
|
|
- stream_slicers
|
|
additionalProperties: true
|
|
properties:
|
|
"$options":
|
|
"$ref": "#/definitions/$options"
|
|
stream_slicers:
|
|
type: array
|
|
items:
|
|
"$ref": "#/definitions/StreamSlicer"
|
|
ListStreamSlicer:
|
|
type: object
|
|
required:
|
|
- slice_values
|
|
- cursor_field
|
|
additionalProperties: true
|
|
properties:
|
|
"$options":
|
|
"$ref": "#/definitions/$options"
|
|
slice_values:
|
|
type: array
|
|
items:
|
|
type: string
|
|
cursor_field:
|
|
type: string
|
|
request_option:
|
|
"$ref": "#/definitions/RequestOption"
|
|
DatetimeStreamSlicer:
|
|
type: object
|
|
required:
|
|
- start_datetime
|
|
- end_datetime
|
|
- step
|
|
- cursor_field
|
|
- datetime_format
|
|
additional_properties: false
|
|
properties:
|
|
"$options":
|
|
"$ref": "#/definitions/$options"
|
|
start_datetime:
|
|
"$ref": "#/definitions/MinMaxDatetime"
|
|
end_datetime:
|
|
"$ref": "#/definitions/MinMaxDatetime"
|
|
step:
|
|
type: string
|
|
cursor_field:
|
|
type: string
|
|
datetime_format:
|
|
type: string
|
|
start_time_option:
|
|
"$ref": "#/definitions/RequestOption"
|
|
end_time_option:
|
|
"$ref": "#/definitions/RequestOption"
|
|
stream_state_field_start:
|
|
type: string
|
|
stream_state_field_end:
|
|
type: string
|
|
lookback_window:
|
|
type: string
|
|
MinMaxDatetime:
|
|
type: object
|
|
required:
|
|
- datetime
|
|
additionalProperties: true
|
|
properties:
|
|
"$options":
|
|
"$ref": "#/definitions/$options"
|
|
datetime:
|
|
type: string
|
|
datetime_format:
|
|
type: string
|
|
min_datetime:
|
|
type: string
|
|
max_datetime:
|
|
type: string
|
|
ErrorHandler:
|
|
type: object
|
|
description: "Error handler"
|
|
anyOf:
|
|
- "$ref": "#/definitions/DefaultErrorHandler"
|
|
- "$ref": "#/definitions/CompositeErrorHandler"
|
|
DefaultErrorHandler:
|
|
type: object
|
|
required:
|
|
- max_retries
|
|
additionalProperties: true
|
|
properties:
|
|
"$options":
|
|
"$ref": "#/definitions/$options"
|
|
response_filters:
|
|
type: array
|
|
items:
|
|
"$ref": "#/definitions/HttpResponseFilter"
|
|
max_retries:
|
|
type: integer
|
|
default: 5
|
|
backoff_strategies:
|
|
type: array
|
|
items:
|
|
"$ref": "#/definitions/BackoffStrategy"
|
|
default: []
|
|
CompositeErrorHandler:
|
|
type: object
|
|
required:
|
|
- error_handlers
|
|
additionalProperties:
|
|
"$options":
|
|
"$ref": "#/definitions/$options"
|
|
error_handlers:
|
|
type: array
|
|
items:
|
|
"$ref": "#/definitions/ErrorHandler"
|
|
HttpResponseFilter:
|
|
type: object
|
|
required:
|
|
- action
|
|
additionalProperties: true
|
|
properties:
|
|
"$options":
|
|
"$ref": "#/definitions/$options"
|
|
action:
|
|
"$ref": "#/definitions/ResponseAction"
|
|
http_codes:
|
|
type: array
|
|
items:
|
|
type: integer
|
|
default: []
|
|
error_message_contains:
|
|
type: string
|
|
predicate:
|
|
type: string
|
|
ResponseAction:
|
|
type: string
|
|
enum:
|
|
- SUCCESS
|
|
- FAIL
|
|
- IGNORE
|
|
- RETRY
|
|
BackoffStrategy:
|
|
type: object
|
|
anyOf:
|
|
- "$ref": "#/definitions/ExponentialBackoff"
|
|
- "$ref": "#/definitions/ConstantBackoff"
|
|
- "$ref": "#/definitions/WaitTimeFromHeader"
|
|
- "$ref": "#/definitions/WaitUntilTimeFromHeader"
|
|
ExponentialBackoff:
|
|
type: object
|
|
additionalProperties: true
|
|
properties:
|
|
"$options":
|
|
"$ref": "#/definitions/$options"
|
|
factor:
|
|
type: integer
|
|
default: 5
|
|
ConstantBackoff:
|
|
type: object
|
|
additionalProperties: true
|
|
required:
|
|
- backoff_time_in_seconds
|
|
properties:
|
|
"$options":
|
|
"$ref": "#/definitions/$options"
|
|
backoff_time_in_seconds:
|
|
type: number
|
|
WaitTimeFromHeader:
|
|
type: object
|
|
additionalProperties: true
|
|
required:
|
|
- header
|
|
properties:
|
|
"$options":
|
|
"$ref": "#/definitions/$options"
|
|
header:
|
|
type: string
|
|
regex:
|
|
type: string
|
|
WaitUntilTimeFromHeader:
|
|
type: object
|
|
additionalProperties: true
|
|
required:
|
|
- header
|
|
properties:
|
|
"$options":
|
|
"$ref": "#/definitions/$options"
|
|
header:
|
|
type: string
|
|
regex:
|
|
type: string
|
|
min_wait:
|
|
type: number
|
|
RecordTransformation:
|
|
type: object
|
|
anyOf:
|
|
- "$ref": "#/definitions/AddFields"
|
|
- "$ref": "#/definitions/RemoveFields"
|
|
AddFields:
|
|
type: object
|
|
required:
|
|
- fields
|
|
additionalProperties: true
|
|
properties:
|
|
"$options":
|
|
"$ref": "#/definitions/$options"
|
|
fields:
|
|
type: array
|
|
items:
|
|
"$ref": "#/definitions/AddedFieldDefinition"
|
|
AddedFieldDefinition:
|
|
type: object
|
|
required:
|
|
- path
|
|
- value
|
|
additionalProperties: true
|
|
properties:
|
|
"$options":
|
|
"$ref": "#/definitions/$options"
|
|
path:
|
|
"$ref": "#/definitions/FieldPointer"
|
|
value:
|
|
type: string
|
|
FieldPointer:
|
|
type: array
|
|
items:
|
|
type: string
|
|
RemoveFields:
|
|
type: object
|
|
required:
|
|
- field_pointers
|
|
additionalProperties: true
|
|
properties:
|
|
"$options":
|
|
"$ref": "#/definitions/$options"
|
|
field_pointers:
|
|
type: array
|
|
items:
|
|
"$ref": "#/definitions/FieldPointer"
|