* capitalize title of request_authentication field * Automated Commit - Formatting Changes --------- Co-authored-by: lmossman <lmossman@users.noreply.github.com>
2180 lines
81 KiB
YAML
2180 lines
81 KiB
YAML
"$schema": http://json-schema.org/draft-07/schema#
|
|
"$id": https://github.com/airbytehq/airbyte/blob/master/airbyte-cdk/python/airbyte_cdk/sources/declarative/declarative_component_schema.yaml
|
|
title: DeclarativeSource
|
|
type: object
|
|
description: An API source that extracts data according to its declarative components.
|
|
version: 1.0.0
|
|
required:
|
|
- type
|
|
- check
|
|
- streams
|
|
- version
|
|
properties:
|
|
type:
|
|
type: string
|
|
enum: [DeclarativeSource]
|
|
check:
|
|
"$ref": "#/definitions/CheckStream"
|
|
streams:
|
|
type: array
|
|
items:
|
|
"$ref": "#/definitions/DeclarativeStream"
|
|
version:
|
|
type: string
|
|
schemas:
|
|
"$ref": "#/definitions/Schemas"
|
|
definitions:
|
|
type: object
|
|
spec:
|
|
"$ref": "#/definitions/Spec"
|
|
metadata:
|
|
type: object
|
|
description: For internal Airbyte use only - DO NOT modify manually. Used by consumers of declarative manifests for storing related metadata.
|
|
additionalProperties: true
|
|
additionalProperties: false
|
|
definitions:
|
|
AddedFieldDefinition:
|
|
title: Definition Of Field To Add
|
|
description: Defines the field to add on a record.
|
|
type: object
|
|
required:
|
|
- type
|
|
- path
|
|
- value
|
|
properties:
|
|
type:
|
|
type: string
|
|
enum: [AddedFieldDefinition]
|
|
path:
|
|
title: Path
|
|
description: List of strings defining the path where to add the value on the record.
|
|
type: array
|
|
items:
|
|
type: string
|
|
examples:
|
|
- ["segment_id"]
|
|
- ["metadata", "segment_id"]
|
|
value:
|
|
title: Value
|
|
description: Value of the new field. Use {{ record['existing_field'] }} syntax to refer to other fields in the record.
|
|
type: string
|
|
interpolation_context:
|
|
- config
|
|
- record
|
|
- stream_interval
|
|
- stream_partition
|
|
- stream_slice
|
|
- stream_state
|
|
examples:
|
|
- "{{ record['updates'] }}"
|
|
- "{{ record['MetaData']['LastUpdatedTime'] }}"
|
|
- "{{ stream_partition['segment_id'] }}"
|
|
$parameters:
|
|
type: object
|
|
additionalProperties: true
|
|
AddFields:
|
|
title: Add Fields
|
|
description: Transformation which adds field to an output record. The path of the added field can be nested.
|
|
type: object
|
|
required:
|
|
- type
|
|
- fields
|
|
properties:
|
|
type:
|
|
type: string
|
|
enum: [AddFields]
|
|
fields:
|
|
title: Fields
|
|
description: List of transformations (path and corresponding value) that will be added to the record.
|
|
type: array
|
|
items:
|
|
- "$ref": "#/definitions/AddedFieldDefinition"
|
|
$parameters:
|
|
type: object
|
|
additionalProperties: true
|
|
ApiKeyAuthenticator:
|
|
title: API Key Authenticator
|
|
description: Authenticator for requests authenticated with an API token injected as an HTTP request header.
|
|
type: object
|
|
required:
|
|
- type
|
|
properties:
|
|
type:
|
|
type: string
|
|
enum: [ApiKeyAuthenticator]
|
|
api_token:
|
|
title: API Key
|
|
description: The API key to inject in the request. Fill it in the user inputs.
|
|
type: string
|
|
interpolation_context:
|
|
- config
|
|
examples:
|
|
- "{{ config['api_key'] }}"
|
|
- "Token token={{ config['api_key'] }}"
|
|
header:
|
|
title: Header Name
|
|
description: The name of the HTTP header that will be set to the API key. This setting is deprecated, use inject_into instead. Header and inject_into can not be defined at the same time.
|
|
type: string
|
|
interpolation_context:
|
|
- config
|
|
examples:
|
|
- Authorization
|
|
- Api-Token
|
|
- X-Auth-Token
|
|
inject_into:
|
|
title: Inject API Key Into Outgoing HTTP Request
|
|
description: Configure how the API Key will be sent in requests to the source API. Either inject_into or header has to be defined.
|
|
"$ref": "#/definitions/RequestOption"
|
|
examples:
|
|
- inject_into: header
|
|
field_name: Authorization
|
|
- inject_into: request_parameter
|
|
field_name: authKey
|
|
$parameters:
|
|
type: object
|
|
additionalProperties: true
|
|
AuthFlow:
|
|
title: "Auth flow"
|
|
description: |-
|
|
Additional and optional specification object to describe what an 'advanced' Auth flow would need to function.
|
|
- A connector should be able to fully function with the configuration as described by the ConnectorSpecification in a 'basic' mode.
|
|
- The 'advanced' mode provides easier UX for the user with UI improvements and automations. However, this requires further setup on the
|
|
server side by instance or workspace admins beforehand. The trade-off is that the user does not have to provide as many technical
|
|
inputs anymore and the auth process is faster and easier to complete.
|
|
type: object
|
|
properties:
|
|
auth_flow_type:
|
|
title: "Auth flow type"
|
|
description: "The type of auth to use"
|
|
type: string
|
|
enum: ["oauth2.0", "oauth1.0"] # Future auth types should be added here
|
|
predicate_key:
|
|
title: "Predicate key"
|
|
description: JSON path to a field in the connectorSpecification that should exist for the advanced auth to be applicable.
|
|
type: array
|
|
items:
|
|
type: string
|
|
examples:
|
|
- ["credentials", "auth_type"]
|
|
predicate_value:
|
|
title: "Predicate value"
|
|
description: Value of the predicate_key fields for the advanced auth to be applicable.
|
|
type: string
|
|
examples:
|
|
- "Oauth"
|
|
oauth_config_specification:
|
|
"$ref": "#/definitions/OAuthConfigSpecification"
|
|
BasicHttpAuthenticator:
|
|
title: Basic HTTP Authenticator
|
|
description: Authenticator for requests authenticated with the Basic HTTP authentication scheme, which encodes a username and an optional password in the Authorization request header.
|
|
type: object
|
|
required:
|
|
- type
|
|
- username
|
|
properties:
|
|
type:
|
|
type: string
|
|
enum: [BasicHttpAuthenticator]
|
|
username:
|
|
title: Username
|
|
description: The username that will be combined with the password, base64 encoded and used to make requests. Fill it in the user inputs.
|
|
type: string
|
|
interpolation_context:
|
|
- config
|
|
examples:
|
|
- "{{ config['username'] }}"
|
|
- "{{ config['api_key'] }}"
|
|
password:
|
|
title: Password
|
|
description: The password that will be combined with the username, base64 encoded and used to make requests. Fill it in the user inputs.
|
|
type: string
|
|
default: ""
|
|
interpolation_context:
|
|
- config
|
|
examples:
|
|
- "{{ config['password'] }}"
|
|
- ""
|
|
$parameters:
|
|
type: object
|
|
additionalProperties: true
|
|
BearerAuthenticator:
|
|
title: Bearer Token Authenticator
|
|
description: "Authenticator for requests authenticated with a bearer token injected as a request header of the form `Authorization: Bearer <token>`."
|
|
type: object
|
|
required:
|
|
- type
|
|
- api_token
|
|
properties:
|
|
type:
|
|
type: string
|
|
enum: [BearerAuthenticator]
|
|
api_token:
|
|
title: Bearer Token
|
|
description: Token to inject as request header for authenticating with the API.
|
|
type: string
|
|
interpolation_context:
|
|
- config
|
|
examples:
|
|
- "{{ config['api_key'] }}"
|
|
- "{{ config['token'] }}"
|
|
$parameters:
|
|
type: object
|
|
additionalProperties: true
|
|
CheckStream:
|
|
title: Streams to Check
|
|
description: Defines the streams to try reading when running a check operation.
|
|
type: object
|
|
required:
|
|
- type
|
|
- stream_names
|
|
properties:
|
|
type:
|
|
type: string
|
|
enum: [CheckStream]
|
|
stream_names:
|
|
title: Stream Names
|
|
description: Names of the streams to try reading from when running a check operation.
|
|
type: array
|
|
items:
|
|
type: string
|
|
examples:
|
|
- ["users"]
|
|
- ["users", "contacts"]
|
|
CompositeErrorHandler:
|
|
title: Composite Error Handler
|
|
description: Error handler that sequentially iterates over a list of error handlers.
|
|
type: object
|
|
required:
|
|
- type
|
|
- error_handlers
|
|
properties:
|
|
type:
|
|
type: string
|
|
enum: [CompositeErrorHandler]
|
|
error_handlers:
|
|
title: Error Handlers
|
|
description: List of error handlers to iterate on to determine how to handle a failed response.
|
|
type: array
|
|
items:
|
|
anyOf:
|
|
- "$ref": "#/definitions/CompositeErrorHandler"
|
|
- "$ref": "#/definitions/DefaultErrorHandler"
|
|
$parameters:
|
|
type: object
|
|
additionalProperties: true
|
|
ConstantBackoffStrategy:
|
|
title: Constant Backoff
|
|
description: Backoff strategy with a constant backoff interval.
|
|
type: object
|
|
required:
|
|
- type
|
|
- backoff_time_in_seconds
|
|
properties:
|
|
type:
|
|
type: string
|
|
enum: [ConstantBackoffStrategy]
|
|
backoff_time_in_seconds:
|
|
title: Backoff Time
|
|
description: Backoff time in seconds.
|
|
anyOf:
|
|
- type: number
|
|
- type: string
|
|
interpolation_context:
|
|
- config
|
|
examples:
|
|
- 30
|
|
- 30.5
|
|
- "{{ config['backoff_time'] }}"
|
|
$parameters:
|
|
type: object
|
|
additionalProperties: true
|
|
CursorPagination:
|
|
title: Cursor Pagination
|
|
description: Pagination strategy that evaluates an interpolated string to define the next page to fetch.
|
|
type: object
|
|
required:
|
|
- type
|
|
- cursor_value
|
|
properties:
|
|
type:
|
|
type: string
|
|
enum: [CursorPagination]
|
|
cursor_value:
|
|
title: Cursor Value
|
|
description: Value of the cursor defining the next page to fetch.
|
|
type: string
|
|
interpolation_context:
|
|
- config
|
|
- headers
|
|
- last_records
|
|
- response
|
|
examples:
|
|
- "{{ headers.link.next.cursor }}"
|
|
- "{{ last_records[-1]['key'] }}"
|
|
- "{{ response['nextPage'] }}"
|
|
page_size:
|
|
title: Page Size
|
|
description: The number of records to include in each pages.
|
|
type: integer
|
|
examples:
|
|
- 100
|
|
stop_condition:
|
|
title: Stop Condition
|
|
description: Template string evaluating when to stop paginating.
|
|
type: string
|
|
interpolation_context:
|
|
- config
|
|
- headers
|
|
- last_records
|
|
- response
|
|
examples:
|
|
- "{{ response.data.has_more is false }}"
|
|
- "{{ 'next' not in headers['link'] }}"
|
|
decoder:
|
|
title: Decoder
|
|
description: Component decoding the response so records can be extracted.
|
|
"$ref": "#/definitions/JsonDecoder"
|
|
$parameters:
|
|
type: object
|
|
additionalProperties: true
|
|
CustomAuthenticator:
|
|
title: Custom Authenticator
|
|
description: Authenticator component whose behavior is derived from a custom code implementation of the connector.
|
|
type: object
|
|
additionalProperties: true
|
|
required:
|
|
- type
|
|
- class_name
|
|
properties:
|
|
type:
|
|
type: string
|
|
enum: [CustomAuthenticator]
|
|
class_name:
|
|
title: Class Name
|
|
description: Fully-qualified name of the class that will be implementing the custom authentication strategy. Has to be a sub class of DeclarativeAuthenticator. The format is `source_<name>.<package>.<class_name>`.
|
|
type: string
|
|
additionalProperties: true
|
|
examples:
|
|
- "source_railz.components.ShortLivedTokenAuthenticator"
|
|
$parameters:
|
|
type: object
|
|
additionalProperties: true
|
|
CustomBackoffStrategy:
|
|
title: Custom Backoff Strategy
|
|
description: Backoff strategy component whose behavior is derived from a custom code implementation of the connector.
|
|
type: object
|
|
additionalProperties: true
|
|
required:
|
|
- type
|
|
- class_name
|
|
properties:
|
|
type:
|
|
type: string
|
|
enum: [CustomBackoffStrategy]
|
|
class_name:
|
|
title: Class Name
|
|
description: Fully-qualified name of the class that will be implementing the custom backoff strategy. The format is `source_<name>.<package>.<class_name>`.
|
|
type: string
|
|
examples:
|
|
- "source_railz.components.MyCustomBackoffStrategy"
|
|
$parameters:
|
|
type: object
|
|
additionalProperties: true
|
|
CustomErrorHandler:
|
|
title: Custom Error Handler
|
|
description: Error handler component whose behavior is derived from a custom code implementation of the connector.
|
|
type: object
|
|
additionalProperties: true
|
|
required:
|
|
- type
|
|
- class_name
|
|
properties:
|
|
type:
|
|
type: string
|
|
enum: [CustomErrorHandler]
|
|
class_name:
|
|
title: Class Name
|
|
description: Fully-qualified name of the class that will be implementing the custom error handler. The format is `source_<name>.<package>.<class_name>`.
|
|
type: string
|
|
examples:
|
|
- "source_railz.components.MyCustomErrorHandler"
|
|
$parameters:
|
|
type: object
|
|
additionalProperties: true
|
|
CustomIncrementalSync:
|
|
title: Custom Incremental Sync
|
|
description: Incremental component whose behavior is derived from a custom code implementation of the connector.
|
|
type: object
|
|
additionalProperties: true
|
|
required:
|
|
- type
|
|
- class_name
|
|
- cursor_field
|
|
properties:
|
|
type:
|
|
type: string
|
|
enum: [CustomIncrementalSync]
|
|
class_name:
|
|
title: Class Name
|
|
description: Fully-qualified name of the class that will be implementing the custom incremental sync. The format is `source_<name>.<package>.<class_name>`.
|
|
type: string
|
|
additionalProperties: true
|
|
examples:
|
|
- "source_railz.components.MyCustomIncrementalSync"
|
|
cursor_field:
|
|
description: The location of the value on a record that will be used as a bookmark during sync.
|
|
type: string
|
|
$parameters:
|
|
type: object
|
|
additionalProperties: true
|
|
CustomPaginationStrategy:
|
|
title: Custom Pagination Strategy
|
|
description: Pagination strategy component whose behavior is derived from a custom code implementation of the connector.
|
|
type: object
|
|
additionalProperties: true
|
|
required:
|
|
- type
|
|
- class_name
|
|
properties:
|
|
type:
|
|
type: string
|
|
enum: [CustomPaginationStrategy]
|
|
class_name:
|
|
title: Class Name
|
|
description: Fully-qualified name of the class that will be implementing the custom pagination strategy. The format is `source_<name>.<package>.<class_name>`.
|
|
type: string
|
|
examples:
|
|
- "source_railz.components.MyCustomPaginationStrategy"
|
|
$parameters:
|
|
type: object
|
|
additionalProperties: true
|
|
CustomRecordExtractor:
|
|
title: Custom Record Extractor
|
|
description: Record extractor component whose behavior is derived from a custom code implementation of the connector.
|
|
type: object
|
|
additionalProperties: true
|
|
required:
|
|
- type
|
|
- class_name
|
|
properties:
|
|
type:
|
|
type: string
|
|
enum: [CustomRecordExtractor]
|
|
class_name:
|
|
title: Class Name
|
|
description: Fully-qualified name of the class that will be implementing the custom record extraction strategy. The format is `source_<name>.<package>.<class_name>`.
|
|
type: string
|
|
examples:
|
|
- "source_railz.components.MyCustomRecordExtractor"
|
|
$parameters:
|
|
type: object
|
|
additionalProperties: true
|
|
CustomRequester:
|
|
title: Custom Requester
|
|
description: Requester component whose behavior is derived from a custom code implementation of the connector.
|
|
type: object
|
|
additionalProperties: true
|
|
required:
|
|
- type
|
|
- class_name
|
|
properties:
|
|
type:
|
|
type: string
|
|
enum: [CustomRequester]
|
|
class_name:
|
|
title: Class Name
|
|
description: Fully-qualified name of the class that will be implementing the custom requester strategy. The format is `source_<name>.<package>.<class_name>`.
|
|
type: string
|
|
additionalProperties: true
|
|
examples:
|
|
- "source_railz.components.MyCustomRecordExtractor"
|
|
$parameters:
|
|
type: object
|
|
additionalProperties: true
|
|
CustomRetriever:
|
|
title: Custom Retriever
|
|
description: Retriever component whose behavior is derived from a custom code implementation of the connector.
|
|
type: object
|
|
additionalProperties: true
|
|
required:
|
|
- type
|
|
- class_name
|
|
properties:
|
|
type:
|
|
type: string
|
|
enum: [CustomRetriever]
|
|
class_name:
|
|
title: Class Name
|
|
description: Fully-qualified name of the class that will be implementing the custom retriever strategy. The format is `source_<name>.<package>.<class_name>`.
|
|
type: string
|
|
additionalProperties: true
|
|
examples:
|
|
- "source_railz.components.MyCustomRetriever"
|
|
$parameters:
|
|
type: object
|
|
additionalProperties: true
|
|
CustomPartitionRouter:
|
|
title: Custom Partition Router
|
|
description: Partition router component whose behavior is derived from a custom code implementation of the connector.
|
|
type: object
|
|
additionalProperties: true
|
|
required:
|
|
- type
|
|
- class_name
|
|
properties:
|
|
type:
|
|
type: string
|
|
enum: [CustomPartitionRouter]
|
|
class_name:
|
|
title: Class Name
|
|
description: Fully-qualified name of the class that will be implementing the custom partition router. The format is `source_<name>.<package>.<class_name>`.
|
|
type: string
|
|
examples:
|
|
- "source_railz.components.MyCustomPartitionRouter"
|
|
$parameters:
|
|
type: object
|
|
additionalProperties: true
|
|
CustomTransformation:
|
|
title: Custom Transformation
|
|
description: Transformation component whose behavior is derived from a custom code implementation of the connector.
|
|
type: object
|
|
additionalProperties: true
|
|
required:
|
|
- type
|
|
- class_name
|
|
properties:
|
|
type:
|
|
type: string
|
|
enum: [CustomTransformation]
|
|
class_name:
|
|
title: Class Name
|
|
description: Fully-qualified name of the class that will be implementing the custom transformation. The format is `source_<name>.<package>.<class_name>`.
|
|
type: string
|
|
examples:
|
|
- "source_railz.components.MyCustomTransformation"
|
|
$parameters:
|
|
type: object
|
|
additionalProperties: true
|
|
DatetimeBasedCursor:
|
|
title: Datetime Based Cursor
|
|
description: Cursor to provide incremental capabilities over datetime.
|
|
type: object
|
|
required:
|
|
- type
|
|
- cursor_field
|
|
- datetime_format
|
|
- start_datetime
|
|
properties:
|
|
type:
|
|
type: string
|
|
enum: [DatetimeBasedCursor]
|
|
cursor_field:
|
|
title: Cursor Field
|
|
description: The location of the value on a record that will be used as a bookmark during sync. To ensure no data loss, the API must return records in ascending order based on the cursor field. Nested fields are not supported, so the field must be at the top level of the record. You can use a combination of Add Field and Remove Field transformations to move the nested field to the top.
|
|
type: string
|
|
interpolation_context:
|
|
- config
|
|
examples:
|
|
- "created_at"
|
|
- "{{ config['record_cursor'] }}"
|
|
datetime_format:
|
|
title: Cursor Field Datetime Format
|
|
description: |
|
|
The datetime format of the Cursor Field. Use placeholders starting with "%" to describe the format the API is using. The following placeholders are available:
|
|
* **%s**: Epoch unix timestamp - `1686218963`
|
|
* **%a**: Weekday (abbreviated) - `Sun`
|
|
* **%A**: Weekday (full) - `Sunday`
|
|
* **%w**: Weekday (decimal) - `0` (Sunday), `6` (Saturday)
|
|
* **%d**: Day of the month (zero-padded) - `01`, `02`, ..., `31`
|
|
* **%b**: Month (abbreviated) - `Jan`
|
|
* **%B**: Month (full) - `January`
|
|
* **%m**: Month (zero-padded) - `01`, `02`, ..., `12`
|
|
* **%y**: Year (without century, zero-padded) - `00`, `01`, ..., `99`
|
|
* **%Y**: Year (with century) - `0001`, `0002`, ..., `9999`
|
|
* **%H**: Hour (24-hour, zero-padded) - `00`, `01`, ..., `23`
|
|
* **%I**: Hour (12-hour, zero-padded) - `01`, `02`, ..., `12`
|
|
* **%p**: AM/PM indicator
|
|
* **%M**: Minute (zero-padded) - `00`, `01`, ..., `59`
|
|
* **%S**: Second (zero-padded) - `00`, `01`, ..., `59`
|
|
* **%f**: Microsecond (zero-padded to 6 digits) - `000000`
|
|
* **%z**: UTC offset - `(empty)`, `+0000`, `-04:00`
|
|
* **%Z**: Time zone name - `(empty)`, `UTC`, `GMT`
|
|
* **%j**: Day of the year (zero-padded) - `001`, `002`, ..., `366`
|
|
* **%U**: Week number of the year (starting Sunday) - `00`, ..., `53`
|
|
* **%W**: Week number of the year (starting Monday) - `00`, ..., `53`
|
|
* **%c**: Date and time - `Tue Aug 16 21:30:00 1988`
|
|
* **%x**: Date standard format - `08/16/1988`
|
|
* **%X**: Time standard format - `21:30:00`
|
|
* **%%**: Literal '%' character
|
|
|
|
Some placeholders depend on the locale of the underlying system - in most cases this locale is configured as en/US. For more information see the [Python documentation](https://docs.python.org/3/library/datetime.html#strftime-and-strptime-format-codes).
|
|
type: string
|
|
examples:
|
|
- "%Y-%m-%dT%H:%M:%S.%f%z"
|
|
- "%Y-%m-%d"
|
|
- "%s"
|
|
start_datetime:
|
|
title: Start Datetime
|
|
description: The datetime that determines the earliest record that should be synced.
|
|
anyOf:
|
|
- type: string
|
|
- "$ref": "#/definitions/MinMaxDatetime"
|
|
interpolation_context:
|
|
- config
|
|
examples:
|
|
- "2020-01-1T00:00:00Z"
|
|
- "{{ config['start_time'] }}"
|
|
cursor_granularity:
|
|
title: Cursor Granularity
|
|
description:
|
|
Smallest increment the datetime_format has (ISO 8601 duration) that is used to ensure the start of a slice does not overlap with the end of the previous one, e.g. for %Y-%m-%d the granularity should
|
|
be P1D, for %Y-%m-%dT%H:%M:%SZ the granularity should be PT1S. Given this field is provided, `step` needs to be provided as well.
|
|
type: string
|
|
examples:
|
|
- "PT1S"
|
|
end_datetime:
|
|
title: End Datetime
|
|
description: The datetime that determines the last record that should be synced. If not provided, `{{ now_utc() }}` will be used.
|
|
anyOf:
|
|
- type: string
|
|
- "$ref": "#/definitions/MinMaxDatetime"
|
|
interpolation_context:
|
|
- config
|
|
examples:
|
|
- "2021-01-1T00:00:00Z"
|
|
- "{{ now_utc() }}"
|
|
- "{{ day_delta(-1) }}"
|
|
end_time_option:
|
|
title: Inject End Time Into Outgoing HTTP Request
|
|
description: Optionally configures how the end datetime will be sent in requests to the source API.
|
|
"$ref": "#/definitions/RequestOption"
|
|
is_data_feed:
|
|
title: Whether the target API is formatted as a data feed
|
|
description: A data feed API is an API that does not allow filtering and paginates the content from the most recent to the least recent. Given this, the CDK needs to know when to stop paginating and this field will generate a stop condition for pagination.
|
|
type: boolean
|
|
lookback_window:
|
|
title: Lookback Window
|
|
description: Time interval before the start_datetime to read data for, e.g. P1M for looking back one month.
|
|
type: string
|
|
interpolation_context:
|
|
- config
|
|
examples:
|
|
- "P1D"
|
|
- "P{{ config['lookback_days'] }}D"
|
|
partition_field_end:
|
|
title: Partition Field End
|
|
description: Name of the partition start time field.
|
|
type: string
|
|
examples:
|
|
- "ending_time"
|
|
partition_field_start:
|
|
title: Partition Field Start
|
|
description: Name of the partition end time field.
|
|
type: string
|
|
examples:
|
|
- "starting_time"
|
|
start_time_option:
|
|
title: Inject Start Time Into Outgoing HTTP Request
|
|
description: Optionally configures how the start datetime will be sent in requests to the source API.
|
|
"$ref": "#/definitions/RequestOption"
|
|
step:
|
|
title: Step
|
|
description: The size of the time window (ISO8601 duration). Given this field is provided, `cursor_granularity` needs to be provided as well.
|
|
type: string
|
|
examples:
|
|
- "P1W"
|
|
- "{{ config['step_increment'] }}"
|
|
$parameters:
|
|
type: object
|
|
additionalProperties: true
|
|
OAuthAuthenticator:
|
|
title: OAuth2
|
|
description: Authenticator for requests using OAuth 2.0 authorization flow.
|
|
type: object
|
|
required:
|
|
- type
|
|
- client_id
|
|
- client_secret
|
|
- token_refresh_endpoint
|
|
properties:
|
|
type:
|
|
type: string
|
|
enum: [OAuthAuthenticator]
|
|
client_id:
|
|
title: Client ID
|
|
description: The OAuth client ID. Fill it in the user inputs.
|
|
type: string
|
|
examples:
|
|
- "{{ config['client_id }}"
|
|
- "{{ config['credentials']['client_id }}"
|
|
client_secret:
|
|
title: Client Secret
|
|
description: The OAuth client secret. Fill it in the user inputs.
|
|
type: string
|
|
examples:
|
|
- "{{ config['client_secret }}"
|
|
- "{{ config['credentials']['client_secret }}"
|
|
refresh_token:
|
|
title: Refresh Token
|
|
description: Credential artifact used to get a new access token.
|
|
type: string
|
|
examples:
|
|
- "{{ config['refresh_token'] }}"
|
|
- "{{ config['credentials]['refresh_token'] }}"
|
|
token_refresh_endpoint:
|
|
title: Token Refresh Endpoint
|
|
description: The full URL to call to obtain a new access token.
|
|
type: string
|
|
examples:
|
|
- https://connect.squareup.com/oauth2/token
|
|
access_token_name:
|
|
title: Access Token Property Name
|
|
description: The name of the property which contains the access token in the response from the token refresh endpoint.
|
|
type: string
|
|
default: "access_token"
|
|
examples:
|
|
- access_token
|
|
expires_in_name:
|
|
title: Token Expiry Property Name
|
|
description: The name of the property which contains the expiry date in the response from the token refresh endpoint.
|
|
type: string
|
|
default: "expires_in"
|
|
examples:
|
|
- expires_in
|
|
grant_type:
|
|
title: Grant Type
|
|
description: Specifies the OAuth2 grant type. If set to refresh_token, the refresh_token needs to be provided as well. For client_credentials, only client id and secret are required. Other grant types are not officially supported.
|
|
type: string
|
|
default: "refresh_token"
|
|
examples:
|
|
- refresh_token
|
|
- client_credentials
|
|
refresh_request_body:
|
|
title: Refresh Request Body
|
|
description: Body of the request sent to get a new access token.
|
|
type: object
|
|
additionalProperties: true
|
|
examples:
|
|
- applicationId: "{{ config['application_id'] }}"
|
|
applicationSecret: "{{ config['application_secret'] }}"
|
|
token: "{{ config['token'] }}"
|
|
scopes:
|
|
title: Scopes
|
|
description: List of scopes that should be granted to the access token.
|
|
type: array
|
|
items:
|
|
type: string
|
|
examples:
|
|
- [
|
|
"crm.list.read",
|
|
"crm.objects.contacts.read",
|
|
"crm.schema.contacts.read",
|
|
]
|
|
token_expiry_date:
|
|
title: Token Expiry Date
|
|
description: The access token expiry date.
|
|
type: string
|
|
examples:
|
|
- 2023-04-06T07:12:10.421833+00:00
|
|
- 1680842386
|
|
token_expiry_date_format:
|
|
title: Token Expiry Date Format
|
|
description: The format of the time to expiration datetime. Provide it if the time is returned as a date-time string instead of seconds.
|
|
type: string
|
|
examples:
|
|
- "%Y-%m-%d %H:%M:%S.%f+00:00"
|
|
refresh_token_updater:
|
|
title: Token Updater
|
|
description: When the token updater is defined, new refresh tokens, access tokens and the access token expiry date are written back from the authentication response to the config object. This is important if the refresh token can only used once.
|
|
properties:
|
|
refresh_token_name:
|
|
title: Refresh Token Property Name
|
|
description: The name of the property which contains the updated refresh token in the response from the token refresh endpoint.
|
|
type: string
|
|
default: "refresh_token"
|
|
examples:
|
|
- "refresh_token"
|
|
access_token_config_path:
|
|
title: Config Path To Access Token
|
|
description: Config path to the access token. Make sure the field actually exists in the config.
|
|
type: array
|
|
items:
|
|
type: string
|
|
default: ["credentials", "access_token"]
|
|
examples:
|
|
- ["credentials", "access_token"]
|
|
- ["access_token"]
|
|
refresh_token_config_path:
|
|
title: Config Path To Refresh Token
|
|
description: Config path to the access token. Make sure the field actually exists in the config.
|
|
type: array
|
|
items:
|
|
type: string
|
|
default: ["credentials", "refresh_token"]
|
|
examples:
|
|
- ["credentials", "refresh_token"]
|
|
- ["refresh_token"]
|
|
token_expiry_date_config_path:
|
|
title: Config Path To Expiry Date
|
|
description: Config path to the expiry date. Make sure actually exists in the config.
|
|
type: array
|
|
items:
|
|
type: string
|
|
default: ["credentials", "token_expiry_date"]
|
|
examples:
|
|
- ["credentials", "token_expiry_date"]
|
|
$parameters:
|
|
type: object
|
|
additionalProperties: true
|
|
DeclarativeStream:
|
|
title: Declarative Stream
|
|
description: A stream whose behavior is described by a set of declarative low code components.
|
|
type: object
|
|
additionalProperties: true
|
|
required:
|
|
- type
|
|
- retriever
|
|
properties:
|
|
type:
|
|
type: string
|
|
enum: [DeclarativeStream]
|
|
retriever:
|
|
title: Retriever
|
|
description: Component used to coordinate how records are extracted across stream slices and request pages.
|
|
anyOf:
|
|
- "$ref": "#/definitions/CustomRetriever"
|
|
- "$ref": "#/definitions/SimpleRetriever"
|
|
incremental_sync:
|
|
title: Incremental Sync
|
|
description: Component used to fetch data incrementally based on a time field in the data.
|
|
anyOf:
|
|
- "$ref": "#/definitions/CustomIncrementalSync"
|
|
- "$ref": "#/definitions/DatetimeBasedCursor"
|
|
name:
|
|
title: Name
|
|
description: The stream name.
|
|
type: string
|
|
default: ""
|
|
example:
|
|
- "Users"
|
|
primary_key:
|
|
title: Primary Key
|
|
description: The primary key of the stream.
|
|
"$ref": "#/definitions/PrimaryKey"
|
|
default: ""
|
|
schema_loader:
|
|
title: Schema Loader
|
|
description: Component used to retrieve the schema for the current stream.
|
|
anyOf:
|
|
- "$ref": "#/definitions/InlineSchemaLoader"
|
|
- "$ref": "#/definitions/JsonFileSchemaLoader"
|
|
# TODO we have move the transformation to the RecordSelector level in the code but kept this here for
|
|
# compatibility reason. We should eventually move this to align with the code.
|
|
transformations:
|
|
title: Transformations
|
|
description: A list of transformations to be applied to each output record.
|
|
type: array
|
|
items:
|
|
anyOf:
|
|
- "$ref": "#/definitions/AddFields"
|
|
- "$ref": "#/definitions/CustomTransformation"
|
|
- "$ref": "#/definitions/RemoveFields"
|
|
$parameters:
|
|
type: object
|
|
additional_properties: true
|
|
DefaultErrorHandler:
|
|
title: Default Error Handler
|
|
description: Component defining how to handle errors. Default behavior includes only retrying server errors (HTTP 5XX) and too many requests (HTTP 429) with an exponential backoff.
|
|
type: object
|
|
required:
|
|
- type
|
|
properties:
|
|
type:
|
|
type: string
|
|
enum: [DefaultErrorHandler]
|
|
backoff_strategies:
|
|
title: Backoff Strategies
|
|
description: List of backoff strategies to use to determine how long to wait before retrying a retryable request.
|
|
type: array
|
|
items:
|
|
anyOf:
|
|
- "$ref": "#/definitions/ConstantBackoffStrategy"
|
|
- "$ref": "#/definitions/CustomBackoffStrategy"
|
|
- "$ref": "#/definitions/ExponentialBackoffStrategy"
|
|
- "$ref": "#/definitions/WaitTimeFromHeader"
|
|
- "$ref": "#/definitions/WaitUntilTimeFromHeader"
|
|
max_retries:
|
|
title: Max Retry Count
|
|
description: The maximum number of time to retry a retryable request before giving up and failing.
|
|
type: integer
|
|
default: 5
|
|
examples:
|
|
- 5
|
|
- 0
|
|
- 10
|
|
response_filters:
|
|
title: Response Filters
|
|
description: List of response filters to iterate on when deciding how to handle an error. When using an array of multiple filters, the filters will be applied sequentially and the response will be selected if it matches any of the filter's predicate.
|
|
type: array
|
|
items:
|
|
"$ref": "#/definitions/HttpResponseFilter"
|
|
$parameters:
|
|
type: object
|
|
additional_properties: true
|
|
DefaultPaginator:
|
|
title: Default Paginator
|
|
description: Default pagination implementation to request pages of results with a fixed size until the pagination strategy no longer returns a next_page_token.
|
|
type: object
|
|
required:
|
|
- type
|
|
- pagination_strategy
|
|
properties:
|
|
type:
|
|
type: string
|
|
enum: [DefaultPaginator]
|
|
pagination_strategy:
|
|
title: Pagination Strategy
|
|
description: Strategy defining how records are paginated.
|
|
anyOf:
|
|
- "$ref": "#/definitions/CursorPagination"
|
|
- "$ref": "#/definitions/CustomPaginationStrategy"
|
|
- "$ref": "#/definitions/OffsetIncrement"
|
|
- "$ref": "#/definitions/PageIncrement"
|
|
decoder:
|
|
title: Decoder
|
|
description: Component decoding the response so records can be extracted.
|
|
"$ref": "#/definitions/JsonDecoder"
|
|
page_size_option:
|
|
"$ref": "#/definitions/RequestOption"
|
|
page_token_option:
|
|
anyOf:
|
|
- "$ref": "#/definitions/RequestOption"
|
|
- "$ref": "#/definitions/RequestPath"
|
|
$parameters:
|
|
type: object
|
|
additionalProperties: true
|
|
DpathExtractor:
|
|
title: Dpath Extractor
|
|
description: Record extractor that searches a decoded response over a path defined as an array of fields.
|
|
type: object
|
|
required:
|
|
- type
|
|
- field_path
|
|
properties:
|
|
type:
|
|
type: string
|
|
enum: [DpathExtractor]
|
|
field_path:
|
|
title: Field Path
|
|
description: List of potentially nested fields describing the full path of the field to extract. Use "*" to extract all values from an array. See more info in the [docs](https://docs.airbyte.com/connector-development/config-based/understanding-the-yaml-file/record-selector).
|
|
type: array
|
|
items:
|
|
- type: string
|
|
interpolation_content:
|
|
- config
|
|
examples:
|
|
- ["data"]
|
|
- ["data", "records"]
|
|
- ["data", "{{ parameters.name }}"]
|
|
- ["data", "*", "record"]
|
|
decoder:
|
|
title: Decoder
|
|
description: Component decoding the response so records can be extracted.
|
|
"$ref": "#/definitions/JsonDecoder"
|
|
$parameters:
|
|
type: object
|
|
additionalProperties: true
|
|
ExponentialBackoffStrategy:
|
|
title: Exponential Backoff
|
|
description: Backoff strategy with an exponential backoff interval. The interval is defined as factor * 2^attempt_count.
|
|
type: object
|
|
required:
|
|
- type
|
|
properties:
|
|
type:
|
|
type: string
|
|
enum: [ExponentialBackoffStrategy]
|
|
factor:
|
|
title: Factor
|
|
description: Multiplicative constant applied on each retry.
|
|
anyOf:
|
|
- type: number
|
|
- type: string
|
|
default: 5
|
|
interpolation_context:
|
|
- config
|
|
examples:
|
|
- 5
|
|
- 5.5
|
|
- "10"
|
|
$parameters:
|
|
type: object
|
|
additionalProperties: true
|
|
SessionTokenAuthenticator:
|
|
type: object
|
|
required:
|
|
- type
|
|
- login_requester
|
|
- session_token_path
|
|
- request_authentication
|
|
properties:
|
|
type:
|
|
type: string
|
|
enum: [SessionTokenAuthenticator]
|
|
login_requester:
|
|
title: Login Requester
|
|
description: Description of the request to perform to obtain a session token to perform data requests. The response body is expected to be a JSON object with a session token property.
|
|
"$ref": "#/definitions/HttpRequester"
|
|
examples:
|
|
- type: HttpRequester
|
|
url_base: "https://my_api.com"
|
|
path: "/login"
|
|
authenticator:
|
|
type: BasicHttpAuthenticator
|
|
username: "{{ config.username }}"
|
|
password: "{{ config.password }}"
|
|
session_token_path:
|
|
title: Session Token Path
|
|
description: The path in the response body returned from the login requester to the session token.
|
|
examples:
|
|
- ["access_token"]
|
|
- ["result", "token"]
|
|
type: array
|
|
items:
|
|
type: string
|
|
expiration_duration:
|
|
title: Expiration Duration
|
|
description: The duration in ISO 8601 duration notation after which the session token expires, starting from the time it was obtained. Omitting it will result in the session token being refreshed for every request.
|
|
type: string
|
|
examples:
|
|
- "PT1H"
|
|
- "P1D"
|
|
request_authentication:
|
|
title: Data Request Authentication
|
|
description: Authentication method to use for requests sent to the API, specifying how to inject the session token.
|
|
anyOf:
|
|
- "$ref": "#/definitions/SessionTokenRequestApiKeyAuthenticator"
|
|
- "$ref": "#/definitions/SessionTokenRequestBearerAuthenticator"
|
|
$parameters:
|
|
type: object
|
|
additionalProperties: true
|
|
SessionTokenRequestApiKeyAuthenticator:
|
|
type: object
|
|
title: API Key Authenticator
|
|
description: Authenticator for requests using the session token as an API key that's injected into the request.
|
|
required:
|
|
- type
|
|
- inject_into
|
|
properties:
|
|
type:
|
|
enum: [ApiKey]
|
|
inject_into:
|
|
title: Inject API Key Into Outgoing HTTP Request
|
|
description: Configure how the API Key will be sent in requests to the source API.
|
|
"$ref": "#/definitions/RequestOption"
|
|
examples:
|
|
- inject_into: header
|
|
field_name: Authorization
|
|
- inject_into: request_parameter
|
|
field_name: authKey
|
|
SessionTokenRequestBearerAuthenticator:
|
|
title: Bearer Authenticator
|
|
description: Authenticator for requests using the session token as a standard bearer token.
|
|
required:
|
|
- type
|
|
properties:
|
|
type:
|
|
enum: [Bearer]
|
|
HttpRequester:
|
|
title: HTTP Requester
|
|
description: Requester submitting HTTP requests and extracting records from the response.
|
|
type: object
|
|
required:
|
|
- type
|
|
- path
|
|
- url_base
|
|
properties:
|
|
type:
|
|
type: string
|
|
enum: [HttpRequester]
|
|
url_base:
|
|
title: API Base URL
|
|
description: Base URL of the API source. Do not put sensitive information (e.g. API tokens) into this field - Use the Authentication component for this.
|
|
type: string
|
|
interpolation_context:
|
|
- config
|
|
examples:
|
|
- "https://connect.squareup.com/v2"
|
|
- "{{ config['base_url'] or 'https://app.posthog.com'}}/api/"
|
|
path:
|
|
title: URL Path
|
|
description: Path the specific API endpoint that this stream represents. Do not put sensitive information (e.g. API tokens) into this field - Use the Authentication component for this.
|
|
type: string
|
|
interpolation_context:
|
|
- config
|
|
- next_page_token
|
|
- stream_interval
|
|
- stream_partition
|
|
- stream_slice
|
|
- stream_state
|
|
examples:
|
|
- "/products"
|
|
- "/quotes/{{ stream_partition['id'] }}/quote_line_groups"
|
|
- "/trades/{{ config['symbol_id'] }}/history"
|
|
authenticator:
|
|
title: Authenticator
|
|
description: Authentication method to use for requests sent to the API.
|
|
anyOf:
|
|
- "$ref": "#/definitions/ApiKeyAuthenticator"
|
|
- "$ref": "#/definitions/BasicHttpAuthenticator"
|
|
- "$ref": "#/definitions/BearerAuthenticator"
|
|
- "$ref": "#/definitions/CustomAuthenticator"
|
|
- "$ref": "#/definitions/OAuthAuthenticator"
|
|
- "$ref": "#/definitions/NoAuth"
|
|
- "$ref": "#/definitions/SessionTokenAuthenticator"
|
|
- "$ref": "#/definitions/LegacySessionTokenAuthenticator"
|
|
error_handler:
|
|
title: Error Handler
|
|
description: Error handler component that defines how to handle errors.
|
|
anyOf:
|
|
- "$ref": "#/definitions/DefaultErrorHandler"
|
|
- "$ref": "#/definitions/CustomErrorHandler"
|
|
- "$ref": "#/definitions/CompositeErrorHandler"
|
|
http_method:
|
|
title: HTTP Method
|
|
description: The HTTP method used to fetch data from the source (can be GET or POST).
|
|
anyOf:
|
|
- type: string
|
|
- type: string
|
|
enum:
|
|
- GET
|
|
- POST
|
|
default: GET
|
|
examples:
|
|
- GET
|
|
- POST
|
|
request_body_data:
|
|
title: Request Body Payload (Non-JSON)
|
|
description: Specifies how to populate the body of the request with a non-JSON payload. Plain text will be sent as is, whereas objects will be converted to a urlencoded form.
|
|
anyOf:
|
|
- type: string
|
|
- type: object
|
|
additionalProperties:
|
|
type: string
|
|
interpolation_context:
|
|
- next_page_token
|
|
- stream_interval
|
|
- stream_partition
|
|
- stream_slice
|
|
- stream_state
|
|
examples:
|
|
- |
|
|
[{"clause": {"type": "timestamp", "operator": 10, "parameters":
|
|
[{"value": {{ stream_interval['start_time'] | int * 1000 }} }]
|
|
}, "orderBy": 1, "columnName": "Timestamp"}]/
|
|
request_body_json:
|
|
title: Request Body JSON Payload
|
|
description: Specifies how to populate the body of the request with a JSON payload. Can contain nested objects.
|
|
anyOf:
|
|
- type: string
|
|
- type: object
|
|
additionalProperties: true
|
|
interpolation_context:
|
|
- next_page_token
|
|
- stream_interval
|
|
- stream_partition
|
|
- stream_slice
|
|
- stream_state
|
|
examples:
|
|
- sort_order: "ASC"
|
|
sort_field: "CREATED_AT"
|
|
- key: "{{ config['value'] }}"
|
|
- sort:
|
|
field: "updated_at"
|
|
order: "ascending"
|
|
request_headers:
|
|
title: Request Headers
|
|
description: Return any non-auth headers. Authentication headers will overwrite any overlapping headers returned from this method.
|
|
anyOf:
|
|
- type: string
|
|
- type: object
|
|
additionalProperties:
|
|
type: string
|
|
interpolation_context:
|
|
- next_page_token
|
|
- stream_interval
|
|
- stream_partition
|
|
- stream_slice
|
|
- stream_state
|
|
examples:
|
|
- Output-Format: JSON
|
|
- Version: "{{ config['version'] }}"
|
|
request_parameters:
|
|
title: Query Parameters
|
|
description: Specifies the query parameters that should be set on an outgoing HTTP request given the inputs.
|
|
anyOf:
|
|
- type: string
|
|
- type: object
|
|
additionalProperties:
|
|
type: string
|
|
interpolation_context:
|
|
- next_page_token
|
|
- stream_interval
|
|
- stream_partition
|
|
- stream_slice
|
|
- stream_state
|
|
examples:
|
|
- unit: "day"
|
|
- query: 'last_event_time BETWEEN TIMESTAMP "{{ stream_interval.start_time }}" AND TIMESTAMP "{{ stream_interval.end_time }}"'
|
|
- searchIn: "{{ ','.join(config.get('search_in', [])) }}"
|
|
- sort_by[asc]: updated_at
|
|
$parameters:
|
|
type: object
|
|
additionalProperties: true
|
|
HttpResponseFilter:
|
|
description: A filter that is used to select on properties of the HTTP response received. When used with additional filters, a response will be selected if it matches any of the filter's criteria.
|
|
type: object
|
|
required:
|
|
- type
|
|
- action
|
|
properties:
|
|
type:
|
|
type: string
|
|
enum: [HttpResponseFilter]
|
|
action:
|
|
title: Action
|
|
description: Action to execute if a response matches the filter.
|
|
type: string
|
|
enum:
|
|
- SUCCESS
|
|
- FAIL
|
|
- RETRY
|
|
- IGNORE
|
|
examples:
|
|
- SUCCESS
|
|
- FAIL
|
|
- RETRY
|
|
- IGNORE
|
|
error_message:
|
|
title: Error Message
|
|
description: Error Message to display if the response matches the filter.
|
|
type: string
|
|
interpolation_context:
|
|
- config
|
|
- response
|
|
- headers
|
|
error_message_contains:
|
|
title: Error Message Substring
|
|
description: Match the response if its error message contains the substring.
|
|
type: string
|
|
example:
|
|
- This API operation is not enabled for this site
|
|
http_codes:
|
|
title: HTTP Codes
|
|
description: Match the response if its HTTP code is included in this list.
|
|
type: array
|
|
items:
|
|
type: integer
|
|
uniqueItems: true
|
|
examples:
|
|
- [420, 429]
|
|
- [500]
|
|
predicate:
|
|
title: Predicate
|
|
description: Match the response if the predicate evaluates to true.
|
|
type: string
|
|
interpolation_context:
|
|
- response
|
|
- headers
|
|
examples:
|
|
- "{{ 'Too much requests' in response }}"
|
|
- "{{ 'error_code' in response and response['error_code'] == 'ComplexityException' }}"
|
|
$parameters:
|
|
type: object
|
|
additionalProperties: true
|
|
InlineSchemaLoader:
|
|
title: Inline Schema Loader
|
|
description: Loads a schema that is defined directly in the manifest file.
|
|
type: object
|
|
required:
|
|
- type
|
|
properties:
|
|
type:
|
|
type: string
|
|
enum: [InlineSchemaLoader]
|
|
schema:
|
|
title: Schema
|
|
description: Describes a streams' schema. Refer to the <a href="https://docs.airbyte.com/understanding-airbyte/supported-data-types/">Data Types documentation</a> for more details on which types are valid.
|
|
type: object
|
|
JsonFileSchemaLoader:
|
|
title: Json File Schema Loader
|
|
description: Loads the schema from a json file.
|
|
type: object
|
|
required:
|
|
- type
|
|
properties:
|
|
type:
|
|
type: string
|
|
enum: [JsonFileSchemaLoader]
|
|
file_path:
|
|
title: File Path
|
|
description: Path to the JSON file defining the schema. The path is relative to the connector module's root.
|
|
type: string
|
|
interpolation_context:
|
|
- config
|
|
example:
|
|
- "./schemas/users.json"
|
|
$parameters:
|
|
type: object
|
|
additionalProperties: true
|
|
JsonDecoder:
|
|
title: Json Decoder
|
|
type: object
|
|
required:
|
|
- type
|
|
properties:
|
|
type:
|
|
type: string
|
|
enum: [JsonDecoder]
|
|
ListPartitionRouter:
|
|
title: List Partition Router
|
|
description: A Partition router that specifies a list of attributes where each attribute describes a portion of the complete data set for a stream. During a sync, each value is iterated over and can be used as input to outbound API requests.
|
|
type: object
|
|
required:
|
|
- type
|
|
- cursor_field
|
|
- values
|
|
properties:
|
|
type:
|
|
type: string
|
|
enum: [ListPartitionRouter]
|
|
cursor_field:
|
|
title: Current Partition Value Identifier
|
|
description: While iterating over list values, the name of field used to reference a list value. The partition value can be accessed with string interpolation. e.g. "{{ stream_partition['my_key'] }}" where "my_key" is the value of the cursor_field.
|
|
type: string
|
|
interpolation_context:
|
|
- config
|
|
examples:
|
|
- "section"
|
|
- "{{ config['section_key'] }}"
|
|
values:
|
|
title: Partition Values
|
|
description: The list of attributes being iterated over and used as input for the requests made to the source API.
|
|
anyOf:
|
|
- type: string
|
|
- type: array
|
|
items:
|
|
type: string
|
|
interpolation_context:
|
|
- config
|
|
examples:
|
|
- ["section_a", "section_b", "section_c"]
|
|
- "{{ config['sections'] }}"
|
|
request_option:
|
|
title: Inject Partition Value Into Outgoing HTTP Request
|
|
description: A request option describing where the list value should be injected into and under what field name if applicable.
|
|
"$ref": "#/definitions/RequestOption"
|
|
$parameters:
|
|
type: object
|
|
additionalProperties: true
|
|
MinMaxDatetime:
|
|
title: Min-Max Datetime
|
|
description: Compares the provided date against optional minimum or maximum times. The max_datetime serves as the ceiling and will be returned when datetime exceeds it. The min_datetime serves as the floor.
|
|
type: object
|
|
required:
|
|
- type
|
|
- datetime
|
|
properties:
|
|
type:
|
|
type: string
|
|
enum: [MinMaxDatetime]
|
|
datetime:
|
|
title: Datetime
|
|
description: Datetime value.
|
|
type: string
|
|
interpolation_context:
|
|
- config
|
|
examples:
|
|
- 2021-01-01
|
|
- 2021-01-01T00:00:00Z
|
|
- "{{ config['start_time'] }}"
|
|
datetime_format:
|
|
title: Datetime Format
|
|
description: |
|
|
Format of the datetime value. Defaults to "%Y-%m-%dT%H:%M:%S.%f%z" if left empty. Use placeholders starting with "%" to describe the format the API is using. The following placeholders are available:
|
|
* **%s**: Epoch unix timestamp - `1686218963`
|
|
* **%a**: Weekday (abbreviated) - `Sun`
|
|
* **%A**: Weekday (full) - `Sunday`
|
|
* **%w**: Weekday (decimal) - `0` (Sunday), `6` (Saturday)
|
|
* **%d**: Day of the month (zero-padded) - `01`, `02`, ..., `31`
|
|
* **%b**: Month (abbreviated) - `Jan`
|
|
* **%B**: Month (full) - `January`
|
|
* **%m**: Month (zero-padded) - `01`, `02`, ..., `12`
|
|
* **%y**: Year (without century, zero-padded) - `00`, `01`, ..., `99`
|
|
* **%Y**: Year (with century) - `0001`, `0002`, ..., `9999`
|
|
* **%H**: Hour (24-hour, zero-padded) - `00`, `01`, ..., `23`
|
|
* **%I**: Hour (12-hour, zero-padded) - `01`, `02`, ..., `12`
|
|
* **%p**: AM/PM indicator
|
|
* **%M**: Minute (zero-padded) - `00`, `01`, ..., `59`
|
|
* **%S**: Second (zero-padded) - `00`, `01`, ..., `59`
|
|
* **%f**: Microsecond (zero-padded to 6 digits) - `000000`, `000001`, ..., `999999`
|
|
* **%z**: UTC offset - `(empty)`, `+0000`, `-04:00`
|
|
* **%Z**: Time zone name - `(empty)`, `UTC`, `GMT`
|
|
* **%j**: Day of the year (zero-padded) - `001`, `002`, ..., `366`
|
|
* **%U**: Week number of the year (Sunday as first day) - `00`, `01`, ..., `53`
|
|
* **%W**: Week number of the year (Monday as first day) - `00`, `01`, ..., `53`
|
|
* **%c**: Date and time representation - `Tue Aug 16 21:30:00 1988`
|
|
* **%x**: Date representation - `08/16/1988`
|
|
* **%X**: Time representation - `21:30:00`
|
|
* **%%**: Literal '%' character
|
|
|
|
Some placeholders depend on the locale of the underlying system - in most cases this locale is configured as en/US. For more information see the [Python documentation](https://docs.python.org/3/library/datetime.html#strftime-and-strptime-format-codes).
|
|
type: string
|
|
default: ""
|
|
examples:
|
|
- "%Y-%m-%dT%H:%M:%S.%f%z"
|
|
- "%Y-%m-%d"
|
|
- "%s"
|
|
max_datetime:
|
|
title: Max Datetime
|
|
description: Ceiling applied on the datetime value. Must be formatted with the datetime_format field.
|
|
type: string
|
|
interpolation_context:
|
|
- config
|
|
examples:
|
|
- "2021-01-01T00:00:00Z"
|
|
- "2021-01-01"
|
|
min_datetime:
|
|
title: Min Datetime
|
|
description: Floor applied on the datetime value. Must be formatted with the datetime_format field.
|
|
type: string
|
|
interpolation_context:
|
|
- config
|
|
examples:
|
|
- "2010-01-01T00:00:00Z"
|
|
- "2010-01-01"
|
|
$parameters:
|
|
type: object
|
|
additionalProperties: true
|
|
NoAuth:
|
|
title: No Authentication
|
|
description: Authenticator for requests requiring no authentication.
|
|
type: object
|
|
required:
|
|
- type
|
|
properties:
|
|
type:
|
|
type: string
|
|
enum: [NoAuth]
|
|
$parameters:
|
|
type: object
|
|
additionalProperties: true
|
|
NoPagination:
|
|
title: No Pagination
|
|
description: Pagination implementation that never returns a next page.
|
|
type: object
|
|
required:
|
|
- type
|
|
properties:
|
|
type:
|
|
type: string
|
|
enum: [NoPagination]
|
|
OAuthConfigSpecification:
|
|
title: OAuth Config Specification
|
|
description: Specification describing how an 'advanced' Auth flow would need to function.
|
|
type: object
|
|
additionalProperties: true
|
|
properties:
|
|
oauth_user_input_from_connector_config_specification:
|
|
title: "OAuth user input"
|
|
description: |-
|
|
OAuth specific blob. This is a Json Schema used to validate Json configurations used as input to OAuth.
|
|
Must be a valid non-nested JSON that refers to properties from ConnectorSpecification.connectionSpecification
|
|
using special annotation 'path_in_connector_config'.
|
|
These are input values the user is entering through the UI to authenticate to the connector, that might also shared
|
|
as inputs for syncing data via the connector.
|
|
Examples:
|
|
if no connector values is shared during oauth flow, oauth_user_input_from_connector_config_specification=[]
|
|
if connector values such as 'app_id' inside the top level are used to generate the API url for the oauth flow,
|
|
oauth_user_input_from_connector_config_specification={
|
|
app_id: {
|
|
type: string
|
|
path_in_connector_config: ['app_id']
|
|
}
|
|
}
|
|
if connector values such as 'info.app_id' nested inside another object are used to generate the API url for the oauth flow,
|
|
oauth_user_input_from_connector_config_specification={
|
|
app_id: {
|
|
type: string
|
|
path_in_connector_config: ['info', 'app_id']
|
|
}
|
|
}
|
|
type: object
|
|
examples:
|
|
- app_id:
|
|
type: string
|
|
path_in_connector_config: ["app_id"]
|
|
- app_id:
|
|
type: string
|
|
path_in_connector_config: ["info", "app_id"]
|
|
complete_oauth_output_specification:
|
|
title: "OAuth output specification"
|
|
description: |-
|
|
OAuth specific blob. This is a Json Schema used to validate Json configurations produced by the OAuth flows as they are
|
|
returned by the distant OAuth APIs.
|
|
Must be a valid JSON describing the fields to merge back to `ConnectorSpecification.connectionSpecification`.
|
|
For each field, a special annotation `path_in_connector_config` can be specified to determine where to merge it,
|
|
Examples:
|
|
complete_oauth_output_specification={
|
|
refresh_token: {
|
|
type: string,
|
|
path_in_connector_config: ['credentials', 'refresh_token']
|
|
}
|
|
}
|
|
type: object
|
|
additionalProperties: true
|
|
examples:
|
|
- refresh_token:
|
|
type: string,
|
|
path_in_connector_config: ["credentials", "refresh_token"]
|
|
complete_oauth_server_input_specification:
|
|
title: "OAuth input specification"
|
|
description: |-
|
|
OAuth specific blob. This is a Json Schema used to validate Json configurations persisted as Airbyte Server configurations.
|
|
Must be a valid non-nested JSON describing additional fields configured by the Airbyte Instance or Workspace Admins to be used by the
|
|
server when completing an OAuth flow (typically exchanging an auth code for refresh token).
|
|
Examples:
|
|
complete_oauth_server_input_specification={
|
|
client_id: {
|
|
type: string
|
|
},
|
|
client_secret: {
|
|
type: string
|
|
}
|
|
}
|
|
type: object
|
|
additionalProperties: true
|
|
examples:
|
|
- client_id:
|
|
type: string
|
|
client_secret:
|
|
type: string
|
|
complete_oauth_server_output_specification:
|
|
title: "OAuth server output specification"
|
|
description: |-
|
|
OAuth specific blob. This is a Json Schema used to validate Json configurations persisted as Airbyte Server configurations that
|
|
also need to be merged back into the connector configuration at runtime.
|
|
This is a subset configuration of `complete_oauth_server_input_specification` that filters fields out to retain only the ones that
|
|
are necessary for the connector to function with OAuth. (some fields could be used during oauth flows but not needed afterwards, therefore
|
|
they would be listed in the `complete_oauth_server_input_specification` but not `complete_oauth_server_output_specification`)
|
|
Must be a valid non-nested JSON describing additional fields configured by the Airbyte Instance or Workspace Admins to be used by the
|
|
connector when using OAuth flow APIs.
|
|
These fields are to be merged back to `ConnectorSpecification.connectionSpecification`.
|
|
For each field, a special annotation `path_in_connector_config` can be specified to determine where to merge it,
|
|
Examples:
|
|
complete_oauth_server_output_specification={
|
|
client_id: {
|
|
type: string,
|
|
path_in_connector_config: ['credentials', 'client_id']
|
|
},
|
|
client_secret: {
|
|
type: string,
|
|
path_in_connector_config: ['credentials', 'client_secret']
|
|
}
|
|
}
|
|
type: object
|
|
additionalProperties: true
|
|
examples:
|
|
- client_id:
|
|
type: string,
|
|
path_in_connector_config: ["credentials", "client_id"]
|
|
client_secret:
|
|
type: string,
|
|
path_in_connector_config: ["credentials", "client_secret"]
|
|
OffsetIncrement:
|
|
title: Offset Increment
|
|
description: Pagination strategy that returns the number of records reads so far and returns it as the next page token.
|
|
type: object
|
|
required:
|
|
- type
|
|
properties:
|
|
type:
|
|
type: string
|
|
enum: [OffsetIncrement]
|
|
page_size:
|
|
title: Limit
|
|
description: The number of records to include in each pages.
|
|
anyOf:
|
|
- type: integer
|
|
- type: string
|
|
interpolation_context:
|
|
- config
|
|
- response
|
|
examples:
|
|
- 100
|
|
- "{{ config['page_size'] }}"
|
|
$parameters:
|
|
type: object
|
|
additionalProperties: true
|
|
PageIncrement:
|
|
title: Page Increment
|
|
description: Pagination strategy that returns the number of pages reads so far and returns it as the next page token.
|
|
type: object
|
|
required:
|
|
- type
|
|
properties:
|
|
type:
|
|
type: string
|
|
enum: [PageIncrement]
|
|
page_size:
|
|
title: Page Size
|
|
description: The number of records to include in each pages.
|
|
type: integer
|
|
examples:
|
|
- 100
|
|
- "100"
|
|
start_from_page:
|
|
title: Start From Page
|
|
description: Index of the first page to request.
|
|
type: integer
|
|
default: 0
|
|
examples:
|
|
- 0
|
|
- 1
|
|
$parameters:
|
|
type: object
|
|
additionalProperties: true
|
|
ParentStreamConfig:
|
|
title: Parent Stream Config
|
|
description: Describes how to construct partitions from the records retrieved from the parent stream..
|
|
type: object
|
|
required:
|
|
- type
|
|
- parent_key
|
|
- partition_field
|
|
- stream
|
|
properties:
|
|
type:
|
|
type: string
|
|
enum: [ParentStreamConfig]
|
|
parent_key:
|
|
title: Parent Key
|
|
description: The primary key of records from the parent stream that will be used during the retrieval of records for the current substream. This parent identifier field is typically a characteristic of the child records being extracted from the source API.
|
|
type: string
|
|
examples:
|
|
- "id"
|
|
- "{{ config['parent_record_id'] }}"
|
|
stream:
|
|
title: Parent Stream
|
|
description: Reference to the parent stream.
|
|
"$ref": "#/definitions/DeclarativeStream"
|
|
partition_field:
|
|
title: Current Parent Key Value Identifier
|
|
description: While iterating over parent records during a sync, the parent_key value can be referenced by using this field.
|
|
type: string
|
|
examples:
|
|
- "parent_id"
|
|
- "{{ config['parent_partition_field'] }}"
|
|
request_option:
|
|
title: Request Option
|
|
description: A request option describing where the parent key value should be injected into and under what field name if applicable.
|
|
"$ref": "#/definitions/RequestOption"
|
|
$parameters:
|
|
type: object
|
|
additionalProperties: true
|
|
PrimaryKey:
|
|
title: Primary Key
|
|
description: The stream field to be used to distinguish unique records. Can either be a single field, an array of fields representing a composite key, or an array of arrays representing a composite key where the fields are nested fields.
|
|
anyOf:
|
|
- type: string
|
|
- type: array
|
|
items:
|
|
type: string
|
|
- type: array
|
|
items:
|
|
type: array
|
|
items:
|
|
type: string
|
|
default: ""
|
|
examples:
|
|
- id
|
|
- ["code", "type"]
|
|
RecordFilter:
|
|
title: Record Filter
|
|
description: Filter applied on a list of records.
|
|
type: object
|
|
required:
|
|
- type
|
|
properties:
|
|
type:
|
|
type: string
|
|
enum: [RecordFilter]
|
|
condition:
|
|
description: The predicate to filter a record. Records will be removed if evaluated to False.
|
|
type: string
|
|
default: ""
|
|
interpolation_context:
|
|
- config
|
|
- next_page_token
|
|
- record
|
|
- stream_interval
|
|
- stream_partition
|
|
- stream_slice
|
|
- stream_state
|
|
examples:
|
|
- "{{ record['created_at'] >= stream_interval['start_time'] }}"
|
|
- "{{ record.status in ['active', 'expired'] }}"
|
|
$parameters:
|
|
type: object
|
|
additionalProperties: true
|
|
RecordSelector:
|
|
title: Record Selector
|
|
description: Responsible for translating an HTTP response into a list of records by extracting records from the response and optionally filtering records based on a heuristic.
|
|
type: object
|
|
required:
|
|
- type
|
|
- extractor
|
|
properties:
|
|
type:
|
|
type: string
|
|
enum: [RecordSelector]
|
|
extractor:
|
|
anyOf:
|
|
- "$ref": "#/definitions/CustomRecordExtractor"
|
|
- "$ref": "#/definitions/DpathExtractor"
|
|
record_filter:
|
|
title: Record Filter
|
|
description: Responsible for filtering records to be emitted by the Source.
|
|
"$ref": "#/definitions/RecordFilter"
|
|
$parameters:
|
|
type: object
|
|
additionalProperties: true
|
|
RemoveFields:
|
|
title: Remove Fields
|
|
description: A transformation which removes fields from a record. The fields removed are designated using FieldPointers. During transformation, if a field or any of its parents does not exist in the record, no error is thrown.
|
|
type: object
|
|
required:
|
|
- type
|
|
- field_pointers
|
|
properties:
|
|
type:
|
|
type: string
|
|
enum: [RemoveFields]
|
|
field_pointers:
|
|
title: Field Paths
|
|
description: Array of paths defining the field to remove. Each item is an array whose field describe the path of a field to remove.
|
|
type: array
|
|
items:
|
|
items:
|
|
type: string
|
|
examples:
|
|
- ["tags"]
|
|
- [["content", "html"], ["content", "plain_text"]]
|
|
RequestPath:
|
|
title: Request Path
|
|
description: Specifies where in the request path a component's value should be inserted.
|
|
type: object
|
|
required:
|
|
- type
|
|
properties:
|
|
type:
|
|
type: string
|
|
enum: [RequestPath]
|
|
RequestOption:
|
|
title: Request Option
|
|
description: Specifies the key field and where in the request a component's value should be injected.
|
|
type: object
|
|
required:
|
|
- type
|
|
- field_name
|
|
- inject_into
|
|
properties:
|
|
type:
|
|
type: string
|
|
enum: [RequestOption]
|
|
field_name:
|
|
title: Request Option
|
|
description: Configures which key should be used in the location that the descriptor is being injected into
|
|
type: string
|
|
examples:
|
|
- segment_id
|
|
inject_into:
|
|
title: Inject Into
|
|
description: Configures where the descriptor should be set on the HTTP requests. Note that request parameters that are already encoded in the URL path will not be duplicated.
|
|
enum:
|
|
- request_parameter
|
|
- header
|
|
- body_data
|
|
- body_json
|
|
examples:
|
|
- request_parameter
|
|
- header
|
|
- body_data
|
|
- body_json
|
|
Schemas:
|
|
title: Schemas
|
|
description: The stream schemas representing the shape of the data emitted by the stream.
|
|
type: object
|
|
additionalProperties: true
|
|
LegacySessionTokenAuthenticator:
|
|
title: Session Token Authenticator
|
|
description: Deprecated - use SessionTokenAuthenticator instead. Authenticator for requests authenticated using session tokens. A session token is a random value generated by a server to identify a specific user for the duration of one interaction session.
|
|
type: object
|
|
required:
|
|
- type
|
|
- header
|
|
- login_url
|
|
- session_token_response_key
|
|
- validate_session_url
|
|
properties:
|
|
type:
|
|
type: string
|
|
enum: [LegacySessionTokenAuthenticator]
|
|
header:
|
|
title: Session Request Header
|
|
description: The name of the session token header that will be injected in the request
|
|
type: string
|
|
examples:
|
|
- "X-Session"
|
|
login_url:
|
|
title: Login Path
|
|
description: Path of the login URL (do not include the base URL)
|
|
type: string
|
|
examples:
|
|
- session
|
|
session_token:
|
|
title: Session Token
|
|
description: Session token to use if using a pre-defined token. Not needed if authenticating with username + password pair
|
|
type: string
|
|
example:
|
|
- "{{ config['session_token'] }}"
|
|
session_token_response_key:
|
|
title: Response Token Response Key
|
|
description: Name of the key of the session token to be extracted from the response
|
|
type: string
|
|
examples:
|
|
- id
|
|
username:
|
|
title: Username
|
|
description: Username used to authenticate and obtain a session token
|
|
type: string
|
|
examples:
|
|
- " {{ config['username'] }}"
|
|
password:
|
|
title: Password
|
|
description: Password used to authenticate and obtain a session token
|
|
type: string
|
|
default: ""
|
|
examples:
|
|
- "{{ config['password'] }}"
|
|
- ""
|
|
validate_session_url:
|
|
title: Validate Session Path
|
|
description: Path of the URL to use to validate that the session token is valid (do not include the base URL)
|
|
type: string
|
|
examples:
|
|
- "user/current"
|
|
$parameters:
|
|
type: object
|
|
additionalProperties: true
|
|
SimpleRetriever:
|
|
description: Retrieves records by synchronously sending requests to fetch records. The retriever acts as an orchestrator between the requester, the record selector, the paginator, and the partition router.
|
|
type: object
|
|
required:
|
|
- type
|
|
- record_selector
|
|
- requester
|
|
properties:
|
|
type:
|
|
type: string
|
|
enum: [SimpleRetriever]
|
|
record_selector:
|
|
description: Component that describes how to extract records from a HTTP response.
|
|
"$ref": "#/definitions/RecordSelector"
|
|
requester:
|
|
description: Requester component that describes how to prepare HTTP requests to send to the source API.
|
|
anyOf:
|
|
- "$ref": "#/definitions/CustomRequester"
|
|
- "$ref": "#/definitions/HttpRequester"
|
|
paginator:
|
|
description: Paginator component that describes how to navigate through the API's pages.
|
|
anyOf:
|
|
- "$ref": "#/definitions/DefaultPaginator"
|
|
- "$ref": "#/definitions/NoPagination"
|
|
partition_router:
|
|
title: Partition Router
|
|
description: PartitionRouter component that describes how to partition the stream, enabling incremental syncs and checkpointing.
|
|
default: []
|
|
anyOf:
|
|
- "$ref": "#/definitions/CustomPartitionRouter"
|
|
- "$ref": "#/definitions/ListPartitionRouter"
|
|
- "$ref": "#/definitions/SubstreamPartitionRouter"
|
|
- type: array
|
|
items:
|
|
anyOf:
|
|
- "$ref": "#/definitions/CustomPartitionRouter"
|
|
- "$ref": "#/definitions/ListPartitionRouter"
|
|
- "$ref": "#/definitions/SubstreamPartitionRouter"
|
|
$parameters:
|
|
type: object
|
|
additionalProperties: true
|
|
Spec:
|
|
title: Spec
|
|
description: A source specification made up of connector metadata and how it can be configured.
|
|
type: object
|
|
required:
|
|
- type
|
|
- connection_specification
|
|
properties:
|
|
type:
|
|
type: string
|
|
enum: [Spec]
|
|
connection_specification:
|
|
title: Connection Specification
|
|
description: A connection specification describing how a the connector can be configured.
|
|
type: object
|
|
additionalProperties: true
|
|
documentation_url:
|
|
title: Documentation URL
|
|
description: URL of the connector's documentation page.
|
|
type: string
|
|
examples:
|
|
- "https://docs.airbyte.com/integrations/sources/dremio"
|
|
advanced_auth:
|
|
title: Advanced Auth
|
|
description: Advanced specification for configuring the authentication flow.
|
|
"$ref": "#/definitions/AuthFlow"
|
|
SubstreamPartitionRouter:
|
|
title: Substream Partition Router
|
|
description: Partition router that is used to retrieve records that have been partitioned according to records from the specified parent streams. An example of a parent stream is automobile brands and the substream would be the various car models associated with each branch.
|
|
type: object
|
|
required:
|
|
- type
|
|
- parent_stream_configs
|
|
properties:
|
|
type:
|
|
type: string
|
|
enum: [SubstreamPartitionRouter]
|
|
parent_stream_configs:
|
|
title: Parent Stream Configs
|
|
description: Specifies which parent streams are being iterated over and how parent records should be used to partition the child stream data set.
|
|
type: array
|
|
items:
|
|
"$ref": "#/definitions/ParentStreamConfig"
|
|
$parameters:
|
|
type: object
|
|
additionalProperties: true
|
|
WaitTimeFromHeader:
|
|
title: Wait Time Extracted From Response Header
|
|
description: Extract wait time from a HTTP header in the response.
|
|
type: object
|
|
required:
|
|
- type
|
|
- header
|
|
properties:
|
|
type:
|
|
type: string
|
|
enum: [WaitTimeFromHeader]
|
|
header:
|
|
title: Response Header Name
|
|
description: The name of the response header defining how long to wait before retrying.
|
|
type: string
|
|
interpolation_context:
|
|
- config
|
|
examples:
|
|
- "Retry-After"
|
|
regex:
|
|
title: Extraction Regex
|
|
description: Optional regex to apply on the header to extract its value. The regex should define a capture group defining the wait time.
|
|
type: string
|
|
examples:
|
|
- "([-+]?\\d+)"
|
|
$parameters:
|
|
type: object
|
|
additionalProperties: true
|
|
WaitUntilTimeFromHeader:
|
|
title: Wait Until Time Defined In Response Header
|
|
description: Extract time at which we can retry the request from response header and wait for the difference between now and that time.
|
|
type: object
|
|
required:
|
|
- type
|
|
- header
|
|
properties:
|
|
type:
|
|
type: string
|
|
enum: [WaitUntilTimeFromHeader]
|
|
header:
|
|
title: Response Header
|
|
description: The name of the response header defining how long to wait before retrying.
|
|
type: string
|
|
interpolation_context:
|
|
- config
|
|
examples:
|
|
- wait_time
|
|
min_wait:
|
|
title: Minimum Wait Time
|
|
description: Minimum time to wait before retrying.
|
|
anyOf:
|
|
- type: number
|
|
- type: string
|
|
interpolation_context:
|
|
- config
|
|
examples:
|
|
- 10
|
|
- "60"
|
|
regex:
|
|
title: Extraction Regex
|
|
description: Optional regex to apply on the header to extract its value. The regex should define a capture group defining the wait time.
|
|
type: string
|
|
interpolation_context:
|
|
- config
|
|
examples:
|
|
- "([-+]?\\d+)"
|
|
$parameters:
|
|
type: object
|
|
additionalProperties: true
|
|
interpolation:
|
|
variables:
|
|
- title: config
|
|
description: The connector configuration. The object's keys are the same as the the keys defined in the connection specification.
|
|
type: object
|
|
examples:
|
|
- start_date: 2010-01-01
|
|
api_key: "*****"
|
|
- title: headers
|
|
description: The HTTP headers from the last response received from the API. The object's keys are the header names from the response.
|
|
type: object
|
|
examples:
|
|
- Server: nginx
|
|
Date: Mon, 24 Apr 2023 20:17:21 GMT
|
|
Content-Type: application/json
|
|
Content-Length: "420"
|
|
Connection: keep-alive
|
|
referrer-policy: strict-origin-when-cross-origin
|
|
x-content-type-options: nosniff
|
|
x-ratelimit-limit: "600"
|
|
x-ratelimit-remaining: "598"
|
|
x-ratelimit-reset: "39"
|
|
- title: last_records
|
|
description: List of records extracted from the last response received from the API.
|
|
type: list
|
|
examples:
|
|
- - name: "Test List: 19"
|
|
id: 0236d6d2
|
|
contact_count: 20
|
|
_metadata:
|
|
self: https://api.sendgrid.com/v3/marketing/lists/0236d6d2
|
|
- name: List for CI tests, number 30
|
|
id: 041ee031
|
|
contact_count: 0
|
|
_metadata:
|
|
self: https://api.sendgrid.com/v3/marketing/lists/041ee031
|
|
- title: next_page_token
|
|
description: Object describing the token to fetch the next page of records. The object has a single key "next_page_token".
|
|
type: object
|
|
examples:
|
|
- next_page_token: 3
|
|
- next_page_token: https://api.sendgrid.com/v3/marketing/lists/0236d6d2-75d2-42c5-962d-603e0deaf8d1
|
|
- title: record
|
|
description: The record being processed. The object's keys are the same keys as the records produced by the RecordSelector.
|
|
type: object
|
|
- title: response
|
|
description: The body of the last response received from the API. The object's keys are the same keys as the response body's.
|
|
type: object
|
|
examples:
|
|
- result:
|
|
- name: "Test List: 19"
|
|
id: 0236d6d2-75d2-42c5-962d-603e0deaf8d1
|
|
contact_count: 20
|
|
_metadata:
|
|
self: https://api.sendgrid.com/v3/marketing/lists/0236d6d2
|
|
_metadata:
|
|
self: https://api.sendgrid.com/v3/marketing/lists?page_size=1&page_token=
|
|
next: https://api.sendgrid.com/v3/marketing/lists?page_size=1&page_token=0236d6d2
|
|
count: 82
|
|
- title: stream_interval
|
|
description: The current stream interval being processed. The keys are defined by the incremental sync component. Default keys are `start_time` and `end_time`.
|
|
type: object
|
|
examples:
|
|
- start_time: "2020-01-01 00:00:00.000+00:00"
|
|
end_time: "2020-01-02 00:00:00.000+00:00"
|
|
- title: stream_partition
|
|
description: The current stream partition being processed. The keys are defined by the partition router component.
|
|
type: object
|
|
examples:
|
|
- survey_id: 1234
|
|
- strategy: DESKTOP
|
|
- survey_id: 1234
|
|
strategy: MOBILE
|
|
- title: stream_slice
|
|
description: This variable is deprecated. Use stream_interval or stream_partition instead.
|
|
type: object
|
|
- title: stream_state
|
|
description: The current state of the stream. The object's keys are defined by the incremental sync's cursor_field the and partition router's values.
|
|
type: object
|
|
examples:
|
|
- created_at: "2020-01-01 00:00:00.000+00:00"
|
|
- updated_at: "2020-01-02 00:00:00.000+00:00"
|
|
macros:
|
|
- title: Now (UTC)
|
|
description: Returns the current date and time in the UTC timezone.
|
|
arguments: {}
|
|
return_type: Datetime
|
|
examples:
|
|
- "'{{ now_utc() }}' -> '2021-09-01 00:00:00+00:00'"
|
|
- "'{{ now_utc().strftime('%Y-%m-%d') }}' -> '2021-09-01'"
|
|
- title: Today (UTC)
|
|
description: Returns the current date in UTC timezone. The output is a date object.
|
|
arguments: {}
|
|
return_type: Date
|
|
examples:
|
|
- "'{{ today_utc() }}' -> '2021-09-01'"
|
|
- "'{{ today_utc().strftime('%Y/%m/%d')}}' -> '2021/09/01'"
|
|
- title: Timestamp
|
|
description: Converts a number or a string representing a datetime (formatted as ISO8601) to a timestamp. If the input is a number, it is converted to an int. If no timezone is specified, the string is interpreted as UTC.
|
|
arguments:
|
|
datetime: A string formatted as ISO8601 or an integer representing a unix timestamp
|
|
return_type: int
|
|
examples:
|
|
- "'{{ timestamp(1646006400) }}' -> 1646006400"
|
|
- "'{{ timestamp('2022-02-28') }}' -> 1646006400"
|
|
- "'{{ timestamp('2022-02-28T00:00:00Z') }}' -> 1646006400"
|
|
- "'{{ timestamp('2022-02-28 00:00:00Z') }}' -> 1646006400"
|
|
- "'{{ timestamp('2022-02-28T00:00:00-08:00') }}' -> 1646035200"
|
|
- title: Max
|
|
description: Returns the largest object of a iterable, or or two or more arguments.
|
|
arguments:
|
|
args: iterable or a sequence of two or more arguments
|
|
return_type: Any
|
|
examples:
|
|
- "'{{ max(2, 3) }}' -> 3"
|
|
- "'{{ max([2, 3]) }}' -> 3"
|
|
- title: Day Delta
|
|
description: Returns the datetime of now() + num_days.
|
|
arguments:
|
|
num_days: The number of days to add to now
|
|
format: How to format the output string
|
|
return_type: str
|
|
examples:
|
|
- "'{{ day_delta(1) }}' -> '2021-09-02T00:00:00.000000+0000'"
|
|
- "'{{ day_delta(-1) }}' -> '2021-08-31:00:00.000000+0000'"
|
|
- "'{{ day_delta(25, format='%Y-%m-%d') }}' -> '2021-09-02'"
|
|
- title: Duration
|
|
description: Converts an ISO8601 duratioin to datetime.timedelta.
|
|
arguments:
|
|
duration_string: "A string representing an ISO8601 duration. See https://www.digi.com/resources/documentation/digidocs//90001488-13/reference/r_iso_8601_duration_format.htm for more details."
|
|
return_type: datetime.timedelta
|
|
examples:
|
|
- "'{{ duration('P1D') }}' -> '1 day, 0:00:00'"
|
|
- "'{{ duration('P6DT23H') }}' -> '6 days, 23:00:00'"
|
|
- "'{{ (now_utc() - duration('P1D')).strftime('%Y-%m-%dT%H:%M:%SZ') }}' -> '2021-08-31T00:00:00Z'"
|
|
- title: Format Datetime
|
|
description: Converts a datetime or a datetime-string to the specified format.
|
|
arguments:
|
|
datetime: The datetime object or a string to convert. If datetime is a string, it must be formatted as ISO8601.
|
|
format: The datetime format
|
|
return_type: str
|
|
examples:
|
|
- "{{ format_datetime(config['start_time'], '%Y-%m-%d') }}"
|
|
- "{{ format_datetime(config['start_date'], '%Y-%m-%dT%H:%M:%S.%fZ') }}"
|