YAML Reference
This page lists all components, interpolation variables and interpolation macros that can be used when defining a low code YAML file.
For the technical JSON schema definition that low code manifests are validated against, see here.
Components
DeclarativeSource object
An API source that extracts data according to its declarative components.
Properties:check
Type:streams
arraydynamic_streams
array#/definitions/DynamicDeclarativeStreamversion
stringThe version of the Airbyte CDK used to build and test the source.
schemas
#/definitions/Schemasspec
#/definitions/Specconcurrency_level
#/definitions/ConcurrencyLevelapi_budget
#/definitions/HTTPAPIBudgetmax_concurrent_async_job_count
integerstringMaximum number of concurrent asynchronous jobs to run. This property is only relevant for sources/streams that support asynchronous job execution through the AsyncRetriever (e.g. a report-based stream that initiates a job, polls the job status, and then fetches the job results). This is often set by the API's maximum number of concurrent jobs on the account level. Refer to the API's documentation for this information.
Examples:3
{{ config['max_concurrent_async_job_count'] }}metadata
objectFor internal Airbyte use only - DO NOT modify manually. Used by consumers of declarative manifests for storing related metadata.
description
stringA description of the connector. It will be presented on the Source documentation page.
AddedFieldDefinition object
Defines the field to add on a record.
Properties:path
arrayList of strings defining the path where to add the value on the record.
Examples:[ "segment_id" ]
[ "metadata", "segment_id" ]
value
stringValue of the new field. Use {{ record['existing_field'] }} syntax to refer to other fields in the record.
Available variables:
Examples:{{ record['updates'] }}{{ record['MetaData']['LastUpdatedTime'] }}{{ stream_partition['segment_id'] }}value_type
#/definitions/ValueTypeType of the value. If not specified, the type will be inferred from the value.
$parameters
objectSet parameters that are inherited to all children. See the section in the advanced topics for more details.
AddFields object
Transformation which adds field to an output record. The path of the added field can be nested.
Properties:fields
array#/definitions/AddedFieldDefinitionList of transformations (path and corresponding value) that will be added to the record.
condition
stringFields will be added if expression is evaluated to True.
Available variables:
Examples:{{ property|string == '' }}{{ property is integer }}{{ property|length > 5 }}{{ property == 'some_string_to_match' }}$parameters
objectSet parameters that are inherited to all children. See the section in the advanced topics for more details.
ApiKeyAuthenticator object
Authenticator for requests authenticated with an API token injected as an HTTP request header.
Properties:api_token
stringThe API key to inject in the request. Fill it in the user inputs.
Available variables:
Examples:{{ config['api_key'] }}Token token={{ config['api_key'] }}header
stringThe 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.
Available variables:
Examples:Authorization
Api-Token
X-Auth-Token
inject_into
#/definitions/RequestOptionConfigure how the API Key will be sent in requests to the source API. Either inject_into or header has to be defined.
Examples:{ "inject_into": "header", "field_name": "Authorization" }{ "inject_into": "request_parameter", "field_name": "authKey" }$parameters
objectSet parameters that are inherited to all children. See the section in the advanced topics for more details.
AuthFlow object
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.
auth_flow_type
stringThe type of auth to use
predicate_key
arrayJSON path to a field in the connectorSpecification that should exist for the advanced auth to be applicable.
Example:[ "credentials", "auth_type" ]
predicate_value
stringValue of the predicate_key fields for the advanced auth to be applicable.
Example:Oauth
oauth_config_specification
#/definitions/OAuthConfigSpecification
BasicHttpAuthenticator object
Authenticator for requests authenticated with the Basic HTTP authentication scheme, which encodes a username and an optional password in the Authorization request header.
Properties:username
stringThe username that will be combined with the password, base64 encoded and used to make requests. Fill it in the user inputs.
Available variables:
Examples:{{ config['username'] }}{{ config['api_key'] }}password
stringThe password that will be combined with the username, base64 encoded and used to make requests. Fill it in the user inputs.
Available variables:
Examples:{{ config['password'] }}$parameters
objectSet parameters that are inherited to all children. See the section in the advanced topics for more details.
BearerAuthenticator object
Authenticator for requests authenticated with a bearer token injected as a request header of the form Authorization: Bearer <token>.
api_token
stringToken to inject as request header for authenticating with the API.
Available variables:
Examples:{{ config['api_key'] }}{{ config['token'] }}$parameters
objectSet parameters that are inherited to all children. See the section in the advanced topics for more details.
SelectiveAuthenticator object
Authenticator that selects concrete authenticator based on config property.
Properties:authenticator_selection_path
arrayPath of the field in config with selected authenticator name
Examples:[ "auth" ]
[ "auth", "type" ]
authenticators
objectAuthenticators to select from.
Example:{ "authenticators": { "token": "#/definitions/ApiKeyAuthenticator", "oauth": "#/definitions/OAuthAuthenticator", "jwt": "#/definitions/JwtAuthenticator" } }$parameters
objectSet parameters that are inherited to all children. See the section in the advanced topics for more details.
CheckStream object
Defines the streams to try reading when running a check operation.
Properties:stream_names
arrayNames of the streams to try reading from when running a check operation.
Examples:[ "users" ]
[ "users", "contacts" ]
dynamic_streams_check_configs
array#/definitions/DynamicStreamCheckConfig
DynamicStreamCheckConfig object
Properties:dynamic_stream_name
stringThe dynamic stream name.
stream_count
integerThe number of streams to attempt reading from during a check operation. If
stream_countexceeds the total number of available streams, the minimum of the two values will be used.
CheckDynamicStream object
(This component is experimental. Use at your own risk.) Defines the dynamic streams to try reading when running a check operation.
Properties:stream_count
integerNumbers of the streams to try reading from when running a check operation.
use_check_availability
booleanEnables stream check availability. This field is automatically set by the CDK.
CompositeErrorHandler object
Error handler that sequentially iterates over a list of error handlers.
Properties:error_handlers
arrayList of error handlers to iterate on to determine how to handle a failed response.
$parameters
objectSet parameters that are inherited to all children. See the section in the advanced topics for more details.
ConcurrencyLevel object
Defines the amount of parallelization for the streams that are being synced. The factor of parallelization is how many partitions or streams are synced at the same time. For example, with a concurrency_level of 10, ten streams or partitions of data will processed at the same time. Note that a value of 1 could create deadlock if a stream has a very high number of partitions.
Properties:default_concurrency
The amount of concurrency that will applied during a sync. This value can be hardcoded or user-defined in the config if different users have varying volume thresholds in the target API.
Type:integerstring
Available variables:
Examples:10
{{ config['num_workers'] or 10 }}max_concurrency
integerThe maximum level of concurrency that will be used during a sync. This becomes a required field when the default_concurrency derives from the config, because it serves as a safeguard against a user-defined threshold that is too high.
Examples:20
100
$parameters
objectSet parameters that are inherited to all children. See the section in the advanced topics for more details.
ConstantBackoffStrategy object
Backoff strategy with a constant backoff interval.
Properties:backoff_time_in_seconds
Backoff time in seconds.
Type:numberstring
Available variables:
Examples:30
30.5
{{ config['backoff_time'] }}$parameters
objectSet parameters that are inherited to all children. See the section in the advanced topics for more details.
CursorPagination object
Pagination strategy that evaluates an interpolated string to define the next page to fetch.
Properties:cursor_value
stringValue of the cursor defining the next page to fetch.
Available variables:
Examples:{{ headers.link.next.cursor }}{{ last_record['key'] }}{{ response['nextPage'] }}page_size
integerThe number of records to include in each pages.
Example:100
stop_condition
stringTemplate string evaluating when to stop paginating.
Available variables:
Examples:{{ response.data.has_more is false }}{{ 'next' not in headers['link'] }}$parameters
objectSet parameters that are inherited to all children. See the section in the advanced topics for more details.
CustomAuthenticator object
Authenticator component whose behavior is derived from a custom code implementation of the connector.
Properties:class_name
stringFully-qualified name of the class that will be implementing the custom authentication strategy. Has to be a sub class of DeclarativeAuthenticator. The format is
Example:source_<name>.<package>.<class_name>.source_railz.components.ShortLivedTokenAuthenticator
$parameters
objectSet parameters that are inherited to all children. See the section in the advanced topics for more details.
CustomBackoffStrategy object
Backoff strategy component whose behavior is derived from a custom code implementation of the connector.
Properties:class_name
stringFully-qualified name of the class that will be implementing the custom backoff strategy. The format is
Example:source_<name>.<package>.<class_name>.source_railz.components.MyCustomBackoffStrategy
$parameters
objectSet parameters that are inherited to all children. See the section in the advanced topics for more details.
CustomErrorHandler object
Error handler component whose behavior is derived from a custom code implementation of the connector.
Properties:class_name
stringFully-qualified name of the class that will be implementing the custom error handler. The format is
Example:source_<name>.<package>.<class_name>.source_railz.components.MyCustomErrorHandler
$parameters
objectSet parameters that are inherited to all children. See the section in the advanced topics for more details.
CustomIncrementalSync object
Incremental component whose behavior is derived from a custom code implementation of the connector.
Properties:class_name
stringFully-qualified name of the class that will be implementing the custom incremental sync. The format is
Example:source_<name>.<package>.<class_name>.source_railz.components.MyCustomIncrementalSync
cursor_field
stringThe location of the value on a record that will be used as a bookmark during sync.
$parameters
objectSet parameters that are inherited to all children. See the section in the advanced topics for more details.
CustomPaginationStrategy object
Pagination strategy component whose behavior is derived from a custom code implementation of the connector.
Properties:class_name
stringFully-qualified name of the class that will be implementing the custom pagination strategy. The format is
Example:source_<name>.<package>.<class_name>.source_railz.components.MyCustomPaginationStrategy
$parameters
objectSet parameters that are inherited to all children. See the section in the advanced topics for more details.
CustomRecordExtractor object
Record extractor component whose behavior is derived from a custom code implementation of the connector.
Properties:class_name
stringFully-qualified name of the class that will be implementing the custom record extraction strategy. The format is
Example:source_<name>.<package>.<class_name>.source_railz.components.MyCustomRecordExtractor
$parameters
objectSet parameters that are inherited to all children. See the section in the advanced topics for more details.
CustomRecordFilter object
Record filter component whose behavior is derived from a custom code implementation of the connector.
Properties:class_name
stringFully-qualified name of the class that will be implementing the custom record filter strategy. The format is
Example:source_<name>.<package>.<class_name>.source_railz.components.MyCustomCustomRecordFilter
$parameters
objectSet parameters that are inherited to all children. See the section in the advanced topics for more details.
CustomRequester object
Requester component whose behavior is derived from a custom code implementation of the connector.
Properties:class_name
stringFully-qualified name of the class that will be implementing the custom requester strategy. The format is
Example:source_<name>.<package>.<class_name>.source_railz.components.MyCustomRecordExtractor
$parameters
objectSet parameters that are inherited to all children. See the section in the advanced topics for more details.
CustomRetriever object
Retriever component whose behavior is derived from a custom code implementation of the connector.
Properties:class_name
stringFully-qualified name of the class that will be implementing the custom retriever strategy. The format is
Example:source_<name>.<package>.<class_name>.source_railz.components.MyCustomRetriever
$parameters
objectSet parameters that are inherited to all children. See the section in the advanced topics for more details.
CustomPartitionRouter object
Partition router component whose behavior is derived from a custom code implementation of the connector.
Properties:class_name
stringFully-qualified name of the class that will be implementing the custom partition router. The format is
Example:source_<name>.<package>.<class_name>.source_railz.components.MyCustomPartitionRouter
$parameters
objectSet parameters that are inherited to all children. See the section in the advanced topics for more details.
CustomSchemaLoader object
Schema Loader component whose behavior is derived from a custom code implementation of the connector.
Properties:class_name
stringFully-qualified name of the class that will be implementing the custom schema loader. The format is
Example:source_<name>.<package>.<class_name>.source_railz.components.MyCustomSchemaLoader
$parameters
objectSet parameters that are inherited to all children. See the section in the advanced topics for more details.
CustomSchemaNormalization object
Schema normalization component whose behavior is derived from a custom code implementation of the connector.
Properties:class_name
stringFully-qualified name of the class that will be implementing the custom normalization. The format is
Example:source_<name>.<package>.<class_name>.source_amazon_seller_partner.components.LedgerDetailedViewReportsTypeTransformer
$parameters
objectSet parameters that are inherited to all children. See the section in the advanced topics for more details.
CustomStateMigration object
Apply a custom transformation on the input state.
Properties:class_name
stringFully-qualified name of the class that will be implementing the custom state migration. The format is
Example:source_<name>.<package>.<class_name>.source_railz.components.MyCustomStateMigration
$parameters
objectSet parameters that are inherited to all children. See the section in the advanced topics for more details.
CustomTransformation object
Transformation component whose behavior is derived from a custom code implementation of the connector.
Properties:class_name
stringFully-qualified name of the class that will be implementing the custom transformation. The format is
Example:source_<name>.<package>.<class_name>.source_railz.components.MyCustomTransformation
$parameters
objectSet parameters that are inherited to all children. See the section in the advanced topics for more details.
LegacyToPerPartitionStateMigration object
Transforms the input state for per-partitioned streams from the legacy format to the low-code format. The cursor field and partition ID fields are automatically extracted from the stream's DatetimebasedCursor and SubstreamPartitionRouter. Example input state: { "13506132": { "last_changed": "2022-12-27T08:34:39+00:00" } Example output state: { "partition": {"id": "13506132"}, "cursor": {"last_changed": "2022-12-27T08:34:39+00:00"} }
Properties:IncrementingCountCursor object
Cursor that allows for incremental sync according to a continuously increasing integer.
Properties:cursor_field
stringThe 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.
Available variables:
Examples:created_at
{{ config['record_cursor'] }}start_value
The value that determines the earliest record that should be synced.
Type:stringinteger
Available variables:
Examples:0
{{ config['start_value'] }}start_value_option
#/definitions/RequestOptionOptionally configures how the start value will be sent in requests to the source API.
$parameters
objectSet parameters that are inherited to all children. See the section in the advanced topics for more details.
DatetimeBasedCursor object
Cursor to provide incremental capabilities over datetime.
Properties:clamping
objectThis option is used to adjust the upper and lower boundaries of each datetime window to beginning and end of the provided target period (day, week, month)
cursor_field
stringThe 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.
Available variables:
Examples:created_at
{{ config['record_cursor'] }}datetime_format
stringThe datetime format used to format the datetime values that are sent in outgoing requests to the API. Use placeholders starting with "%" to describe the format the API is using. The following placeholders are available:
- %s: Epoch unix timestamp -
1686218963 - %s_as_float: Epoch unix timestamp in seconds as float with microsecond precision -
1686218963.123456 - %ms: Epoch unix timestamp (milliseconds) -
1686218963123 - %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 - %_ms: Millisecond (zero-padded to 3 digits) -
000 - %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.
Examples:%Y-%m-%dT%H:%M:%S.%f%z
%Y-%m-%d
%s
%ms
%s_as_float
- %s: Epoch unix timestamp -
start_datetime
The datetime that determines the earliest record that should be synced.
Type:
Available variables:
Examples:2020-01-1T00:00:00Z
{{ config['start_time'] }}cursor_datetime_formats
arrayThe possible formats for the cursor field, in order of preference. The first format that matches the cursor field value will be used to parse it. If not provided, the
datetime_formatwill be used.cursor_granularity
stringSmallest 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,
Example:stepneeds to be provided as well.PT1S
end_datetime
The datetime that determines the last record that should be synced. If not provided,
Type:{{ now_utc() }}will be used.
Available variables:
Examples:2021-01-1T00:00:00Z
{{ now_utc() }}{{ day_delta(-1) }}end_time_option
#/definitions/RequestOptionOptionally configures how the end datetime will be sent in requests to the source API.
is_data_feed
booleanA 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.
is_client_side_incremental
booleanIf the target API endpoint does not take cursor values to filter records and returns all records anyway, the connector with this cursor will filter out records locally, and only emit new records from the last sync, hence incremental. This means that all records would be read from the API, but only new records will be emitted to the destination.
is_compare_strictly
booleanSet to True if the target API does not accept queries where the start time equal the end time.
global_substream_cursor
booleanThis setting optimizes performance when the parent stream has thousands of partitions by storing the cursor as a single value rather than per partition. Notably, the substream state is updated only at the end of the sync, which helps prevent data loss in case of a sync failure. See more info in the docs.
lookback_window
stringTime interval before the start_datetime to read data for, e.g. P1M for looking back one month.
Available variables:
Examples:P1D
P{{ config['lookback_days'] }}Dpartition_field_end
stringName of the partition start time field.
Example:ending_time
partition_field_start
stringName of the partition end time field.
Example:starting_time
start_time_option
#/definitions/RequestOptionOptionally configures how the start datetime will be sent in requests to the source API.
step
stringThe size of the time window (ISO8601 duration). Given this field is provided,
Examples:cursor_granularityneeds to be provided as well.P1W
{{ config['step_increment'] }}$parameters
objectSet parameters that are inherited to all children. See the section in the advanced topics for more details.
JwtAuthenticator object
Authenticator for requests using JWT authentication flow.
Properties:secret_key
stringSecret used to sign the JSON web token.
Example:{{ config['secret_key'] }}base64_encode_secret_key
booleanWhen set to true, the secret key will be base64 encoded prior to being encoded as part of the JWT. Only set to "true" when required by the API.
algorithm
stringAlgorithm used to sign the JSON web token.
Examples:ES256
HS256
RS256
{{ config['algorithm'] }}token_duration
integerThe amount of time in seconds a JWT token can be valid after being issued.
Examples:1200
3600
header_prefix
stringThe prefix to be used within the Authentication header.
Examples:Bearer
Basic
jwt_headers
objectJWT headers used when signing JSON web token.
additional_jwt_headers
objectAdditional headers to be included with the JWT headers object.
jwt_payload
objectJWT Payload used when signing JSON web token.
additional_jwt_payload
objectAdditional properties to be added to the JWT payload.
$parameters
objectSet parameters that are inherited to all children. See the section in the advanced topics for more details.
OAuthAuthenticator object
Authenticator for requests using OAuth 2.0 authorization flow.
Properties:client_id_name
stringThe name of the property to use to refresh the
Example:access_token.custom_app_id
client_id
stringThe OAuth client ID. Fill it in the user inputs.
Examples:{{ config['client_id }}{{ config['credentials']['client_id }}client_secret_name
stringThe name of the property to use to refresh the
Example:access_token.custom_app_secret
client_secret
stringThe OAuth client secret. Fill it in the user inputs.
Examples:{{ config['client_secret }}{{ config['credentials']['client_secret }}refresh_token_name
stringThe name of the property to use to refresh the
Example:access_token.custom_app_refresh_value
refresh_token
stringCredential artifact used to get a new access token.
Examples:{{ config['refresh_token'] }}{{ config['credentials]['refresh_token'] }}token_refresh_endpoint
stringThe full URL to call to obtain a new access token.
Example:https://connect.squareup.com/oauth2/token
access_token_name
stringThe name of the property which contains the access token in the response from the token refresh endpoint.
Example:access_token
access_token_value
stringThe value of the access_token to bypass the token refreshing using
Example:refresh_token.secret_access_token_value
expires_in_name
stringThe name of the property which contains the expiry date in the response from the token refresh endpoint.
Example:expires_in
grant_type_name
stringThe name of the property to use to refresh the
Example:access_token.custom_grant_type
grant_type
stringSpecifies 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.
Examples:refresh_token
client_credentials
refresh_request_body
objectBody of the request sent to get a new access token.
Example:{ "applicationId": "{{ config['application_id'] }}", "applicationSecret": "{{ config['application_secret'] }}", "token": "{{ config['token'] }}" }refresh_request_headers
objectHeaders of the request sent to get a new access token.
Example:{ "Authorization": "<AUTH_TOKEN>", "Content-Type": "application/x-www-form-urlencoded" }scopes
arrayList of scopes that should be granted to the access token.
Example:[ "crm.list.read", "crm.objects.contacts.read", "crm.schema.contacts.read" ]
token_expiry_date
stringThe access token expiry date.
Examples:2023-04-06T07:12:10.421833+00:00
1680842386
token_expiry_date_format
stringThe format of the time to expiration datetime. Provide it if the time is returned as a date-time string instead of seconds.
Example:%Y-%m-%d %H:%M:%S.%f+00:00
refresh_token_updater
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.
profile_assertion
#/definitions/JwtAuthenticatorThe authenticator being used to authenticate the client authenticator.
use_profile_assertion
booleanEnable using profile assertion as a flow for OAuth authorization.
$parameters
objectSet parameters that are inherited to all children. See the section in the advanced topics for more details.
DeclarativeStream object
A stream whose behavior is described by a set of declarative low code components.
Properties:name
stringThe stream name.
retriever
Component used to coordinate how records are extracted across stream slices and request pages.
Type:incremental_sync
Component used to fetch data incrementally based on a time field in the data.
Type:#/definitions/DatetimeBasedCursor#/definitions/IncrementingCountCursor#/definitions/CustomIncrementalSync
primary_key
#/definitions/PrimaryKeyschema_loader
One or many schema loaders can be used to retrieve the schema for the current stream. When multiple schema loaders are defined, schema properties will be merged together. Schema loaders defined first taking precedence in the event of a conflict.
Type:#/definitions/InlineSchemaLoader#/definitions/DynamicSchemaLoader#/definitions/JsonFileSchemaLoader#/definitions/CustomSchemaLoaderarray
transformations
arrayA list of transformations to be applied to each output record.
state_migrations
arrayArray of state migrations to be applied on the input state
file_uploader
object(experimental) Describes how to fetch a file
$parameters
objectSet parameters that are inherited to all children. See the section in the advanced topics for more details.
HTTPAPIBudget object
Defines how many requests can be made to the API in a given time frame. HTTPAPIBudget extracts the remaining call count and the reset time from HTTP response headers using the header names provided by ratelimit_remaining_header and ratelimit_reset_header. Only requests using HttpRequester are rate-limited; custom components that bypass HttpRequester are not covered by this budget.
policies
arrayList of call rate policies that define how many calls are allowed.
ratelimit_reset_header
stringThe HTTP response header name that indicates when the rate limit resets.
ratelimit_remaining_header
stringThe HTTP response header name that indicates the number of remaining allowed calls.
status_codes_for_ratelimit_hit
arrayList of HTTP status codes that indicate a rate limit has been hit.
FixedWindowCallRatePolicy object
A policy that allows a fixed number of calls within a specific time window.
Properties:period
stringThe time interval for the rate limit window.
call_limit
integerThe maximum number of calls allowed within the period.
matchers
array#/definitions/HttpRequestRegexMatcherList of matchers that define which requests this policy applies to.
MovingWindowCallRatePolicy object
A policy that allows a fixed number of calls within a moving time window.
Properties:rates
array#/definitions/RateList of rates that define the call limits for different time intervals.
matchers
array#/definitions/HttpRequestRegexMatcherList of matchers that define which requests this policy applies to.
UnlimitedCallRatePolicy object
A policy that allows unlimited calls for specific requests.
Properties:matchers
array#/definitions/HttpRequestRegexMatcherList of matchers that define which requests this policy applies to.
Rate object
Defines a rate limit with a specific number of calls allowed within a time interval.
Properties:limit
The maximum number of calls allowed within the interval.
Type:integerstring
Available variables:interval
stringThe time interval for the rate limit.
Examples:PT1H
P1D
HttpRequestRegexMatcher object
Matches HTTP requests based on method, base URL, URL path pattern, query parameters, and headers. Use url_base to specify the scheme and host (without trailing slash) and url_path_pattern to apply a regex to the request path.
method
stringThe HTTP method to match (e.g., GET, POST).
url_base
stringThe base URL (scheme and host, e.g. "https://api.example.com") to match.
url_path_pattern
stringA regular expression pattern to match the URL path.
params
objectThe query parameters to match.
headers
objectThe headers to match.
DefaultErrorHandler object
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.
Properties:backoff_strategies
arrayList of backoff strategies to use to determine how long to wait before retrying a retryable request.
max_retries
integerThe maximum number of time to retry a retryable request before giving up and failing.
Examples:5
0
10
response_filters
array#/definitions/HttpResponseFilterList 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.
$parameters
objectSet parameters that are inherited to all children. See the section in the advanced topics for more details.
DefaultPaginator object
Default pagination implementation to request pages of results with a fixed size until the pagination strategy no longer returns a next_page_token.
Properties:pagination_strategy
Strategy defining how records are paginated.
Type:#/definitions/PageIncrement#/definitions/OffsetIncrement#/definitions/CursorPagination#/definitions/CustomPaginationStrategy
page_size_option
#/definitions/RequestOptionpage_token_option
Type:$parameters
objectSet parameters that are inherited to all children. See the section in the advanced topics for more details.
DpathExtractor object
Record extractor that searches a decoded response over a path defined as an array of fields.
Properties:field_path
arrayList 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.
Available variables:
Examples:[ "data" ]
[ "data", "records" ]
[ "data", "{{ parameters.name }}" ][ "data", "*", "record" ]
$parameters
objectSet parameters that are inherited to all children. See the section in the advanced topics for more details.
ResponseToFileExtractor object
A record extractor designed for handling large responses that may exceed memory limits (to prevent OOM issues). It downloads a CSV file to disk, reads the data from disk, and deletes the file once it has been fully processed.
Properties:$parameters
objectSet parameters that are inherited to all children. See the section in the advanced topics for more details.
ExponentialBackoffStrategy object
Backoff strategy with an exponential backoff interval. The interval is defined as factor * 2^attempt_count.
Properties:factor
Multiplicative constant applied on each retry.
Type:numberstring
Available variables:
Examples:5
5.5
10
$parameters
objectSet parameters that are inherited to all children. See the section in the advanced topics for more details.
GroupByKeyMergeStrategy
Record merge strategy that combines records according to fields on the record.
Properties:key
The name of the field on the record whose value will be used to group properties that were retrieved through multiple API requests.
Type:stringarray
Examples:id
[ "parent_id", "end_date" ]
$parameters
objectSet parameters that are inherited to all children. See the section in the advanced topics for more details.
SessionTokenAuthenticator object
Authenticator for requests using the session token as an API key that's injected into the request.
Properties:login_requester
#/definitions/HttpRequesterDescription 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.
Example:{ "type": "HttpRequester", "url_base": "https://my_api.com", "path": "/login", "authenticator": { "type": "BasicHttpAuthenticator", "username": "{{ config.username }}", "password": "{{ config.password }}" } }session_token_path
arrayThe path in the response body returned from the login requester to the session token.
Examples:[ "access_token" ]
[ "result", "token" ]
expiration_duration
stringThe 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.
Examples:PT1H
P1D
request_authentication
Authentication method to use for requests sent to the API, specifying how to inject the session token.
Type:#/definitions/SessionTokenRequestApiKeyAuthenticator#/definitions/SessionTokenRequestBearerAuthenticator
decoder
Component used to decode the response.
Type:$parameters
objectSet parameters that are inherited to all children. See the section in the advanced topics for more details.
SessionTokenRequestApiKeyAuthenticator object
Authenticator for requests using the session token as an API key that's injected into the request.
Properties:inject_into
#/definitions/RequestOptionConfigure how the API Key will be sent in requests to the source API.
Examples:{ "inject_into": "header", "field_name": "Authorization" }{ "inject_into": "request_parameter", "field_name": "authKey" }
SessionTokenRequestBearerAuthenticator
Authenticator for requests using the session token as a standard bearer token.
Properties:HttpRequester object
Requester submitting HTTP requests and extracting records from the response.
Properties:url_base
stringDeprecated, use the
Available variables:urlinstead. Base URL of the API source. Do not put sensitive information (e.g. API tokens) into this field - Use the Authenticator component for this.- config
- next_page_token
- stream_interval
- stream_partition
- stream_slice
- creation_response
- polling_response
- download_target
Examples:https://connect.squareup.com/v2
{{ config['base_url'] or 'https://app.posthog.com'}}/apihttps://connect.squareup.com/v2/quotes/{{ stream_partition['id'] }}/quote_line_groupshttps://example.com/api/v1/resource/{{ next_page_token['id'] }}url
stringThe URL of the source API endpoint. Do not put sensitive information (e.g. API tokens) into this field - Use the Authenticator component for this.
Available variables:- config
- next_page_token
- stream_interval
- stream_partition
- stream_slice
- creation_response
- polling_response
- download_target
Examples:https://connect.squareup.com/v2
{{ config['url'] or 'https://app.posthog.com'}}/apihttps://connect.squareup.com/v2/quotes/{{ stream_partition['id'] }}/quote_line_groupshttps://example.com/api/v1/resource/{{ next_page_token['id'] }}path
stringDeprecated, use the
Available variables:urlinstead. Path the specific API endpoint that this stream represents. Do not put sensitive information (e.g. API tokens) into this field - Use the Authenticator component for this.- config
- next_page_token
- stream_interval
- stream_partition
- stream_slice
- creation_response
- polling_response
- download_target
Examples:/products
/quotes/{{ stream_partition['id'] }}/quote_line_groups/trades/{{ config['symbol_id'] }}/historyhttp_method
stringThe HTTP method used to fetch data from the source (can be GET or POST).
Examples:GET
POST
authenticator
Authentication method to use for requests sent to the API.
Type:#/definitions/ApiKeyAuthenticator#/definitions/BasicHttpAuthenticator#/definitions/BearerAuthenticator#/definitions/OAuthAuthenticator#/definitions/JwtAuthenticator#/definitions/SessionTokenAuthenticator#/definitions/SelectiveAuthenticator#/definitions/CustomAuthenticator#/definitions/NoAuth#/definitions/LegacySessionTokenAuthenticator
fetch_properties_from_endpoint
#/definitions/PropertiesFromEndpointAllows for retrieving a dynamic set of properties from an API endpoint which can be injected into outbound request using the stream_partition.extra_fields.
request_parameters
Specifies the query parameters that should be set on an outgoing HTTP request given the inputs.
Type:objectstring
Available variables:
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" }request_headers
Return any non-auth headers. Authentication headers will overwrite any overlapping headers returned from this method.
Type:objectstring
Available variables:
Examples:{ "Output-Format": "JSON" }{ "Version": "{{ config['version'] }}" }request_body_data
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.
Type:objectstring
Available variables:
Example:[{"clause": {"type": "timestamp", "operator": 10, "parameters": [{"value": {{ stream_interval['start_time'] | int * 1000 }} }] }, "orderBy": 1, "columnName": "Timestamp"}]/request_body_json
Specifies how to populate the body of the request with a JSON payload. Can contain nested objects.
Type:objectstring
Available variables:
Examples:{ "sort_order": "ASC", "sort_field": "CREATED_AT" }{ "key": "{{ config['value'] }}" }{ "sort": { "field": "updated_at", "order": "ascending" } }request_body
Specifies how to populate the body of the request with a payload. Can contain nested objects.
Type:#/definitions/RequestBodyPlainText#/definitions/RequestBodyUrlEncodedForm#/definitions/RequestBodyJsonObject#/definitions/RequestBodyGraphQL
Available variables:
Examples:{ "type": "RequestBodyJsonObject", "value": { "sort_order": "ASC", "sort_field": "CREATED_AT" } }{ "type": "RequestBodyJsonObject", "value": { "key": "{{ config['value'] }}" } }{ "type": "RequestBodyJsonObject", "value": { "sort": { "field": "updated_at", "order": "ascending" } } }{ "type": "RequestBodyPlainText", "value": "plain_text_body" }{ "type": "RequestBodyUrlEncodedForm", "value": { "param1": "value1", "param2": "{{ config['param2_value'] }}" } }{ "type": "RequestBodyGraphQL", "value": { "query": { "param1": "value1", "param2": "{{ config['param2_value'] }}" } } }error_handler
Error handler component that defines how to handle errors.
Type:#/definitions/DefaultErrorHandler#/definitions/CompositeErrorHandler#/definitions/CustomErrorHandler
use_cache
booleanEnables stream requests caching. This field is automatically set by the CDK.
$parameters
objectSet parameters that are inherited to all children. See the section in the advanced topics for more details.
HttpResponseFilter object
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.
Properties:action
stringAction to execute if a response matches the filter.
Examples:SUCCESS
FAIL
RETRY
IGNORE
RATE_LIMITED
failure_type
stringFailure type of traced exception if a response matches the filter.
Examples:system_error
config_error
transient_error
error_message
stringError Message to display if the response matches the filter.
Available variables:error_message_contains
stringMatch the response if its error message contains the substring.
http_codes
arrayMatch the response if its HTTP code is included in this list.
Examples:[ 420, 429 ]
[ 500 ]
predicate
stringMatch the response if the predicate evaluates to true.
Available variables:
Examples:{{ 'Too much requests' in response }}{{ 'error_code' in response and response['error_code'] == 'ComplexityException' }}$parameters
objectSet parameters that are inherited to all children. See the section in the advanced topics for more details.
ComplexFieldType object
(This component is experimental. Use at your own risk.) Represents a complex field type.
Properties:field_type
stringitems
Type:
TypesMap object
(This component is experimental. Use at your own risk.) Represents a mapping between a current type and its corresponding target type.
Properties:target_type
Type:stringarray#/definitions/ComplexFieldType
current_type
Type:stringarray
condition
Available variables:string
SchemaTypeIdentifier object
(This component is experimental. Use at your own risk.) Identifies schema details for dynamic schema extraction and processing.
Properties:schema_pointer
arrayList of nested fields defining the schema field path to extract. Defaults to [].
Available variables:key_pointer
arrayList of potentially nested fields describing the full path of the field key to extract.
Available variables:type_pointer
arrayList of potentially nested fields describing the full path of the field type to extract.
Available variables:types_mapping
array#/definitions/TypesMap$parameters
objectSet parameters that are inherited to all children. See the section in the advanced topics for more details.
DynamicSchemaLoader object
(This component is experimental. Use at your own risk.) Loads a schema by extracting data from retrieved records.
Properties:retriever
Component used to coordinate how records are extracted across stream slices and request pages.
Type:schema_filter
Responsible for filtering fields to be added to json schema.
Type:schema_transformations
arrayA list of transformations to be applied to the schema.
schema_type_identifier
#/definitions/SchemaTypeIdentifier$parameters
objectSet parameters that are inherited to all children. See the section in the advanced topics for more details.
InlineSchemaLoader object
Loads a schema that is defined directly in the manifest file.
Properties:schema
objectDescribes 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.
JsonFileSchemaLoader object
Loads the schema from a json file.
Properties:file_path
stringPath to the JSON file defining the schema. The path is relative to the connector module's root.
Available variables:$parameters
objectSet parameters that are inherited to all children. See the section in the advanced topics for more details.
JsonDecoder object
Select 'JSON' if the response is formatted as a JSON object.
Properties:JsonlDecoder object
Select 'JSON Lines' if the response consists of JSON objects separated by new lines ('\n') in JSONL format.
Properties:KeysToLower object
A transformation that renames all keys to lower case.
Properties:$parameters
objectSet parameters that are inherited to all children. See the section in the advanced topics for more details.
KeysToSnakeCase object
A transformation that renames all keys to snake case.
Properties:$parameters
objectSet parameters that are inherited to all children. See the section in the advanced topics for more details.
FlattenFields object
A transformation that flatten record to single level format.
Properties:flatten_lists
booleanWhether to flatten lists or leave it as is. Default is True.
$parameters
objectSet parameters that are inherited to all children. See the section in the advanced topics for more details.
KeyTransformation object
Properties:prefix
stringPrefix to add for object keys. If not provided original keys remain unchanged.
Example:flattened_
suffix
stringSuffix to add for object keys. If not provided original keys remain unchanged.
Example:_flattened
DpathFlattenFields object
A transformation that flatten field values to the to top of the record.
Properties:field_path
arrayA path to field that needs to be flattened.
Examples:[ "data" ]
[ "data", "*", "field" ]
delete_origin_value
booleanWhether to delete the origin value or keep it. Default is False.
replace_record
booleanWhether to replace the origin record or not. Default is False.
key_transformation
object#/definitions/KeyTransformationTransformation for object keys. If not provided, original key will be used.
$parameters
objectSet parameters that are inherited to all children. See the section in the advanced topics for more details.
KeysReplace object
A transformation that replaces symbols in keys.
Properties:old
stringOld value to replace.
Available variables:
Examples:{{ record.id }}{{ config['id'] }}{{ stream_slice['id'] }}new
stringNew value to set.
Available variables:
Examples:_
{{ record.id }}{{ config['id'] }}{{ stream_slice['id'] }}$parameters
objectSet parameters that are inherited to all children. See the section in the advanced topics for more details.
IterableDecoder object
Select 'Iterable' if the response consists of strings separated by new lines (\n). The string will then be wrapped into a JSON object with the record key.
XmlDecoder object
Select 'XML' if the response consists of XML-formatted data.
Properties:CustomDecoder object
Use this to implement custom decoder logic.
Properties:class_name
stringFully-qualified name of the class that will be implementing the custom decoding. Has to be a sub class of Decoder. The format is
Example:source_<name>.<package>.<class_name>.source_amazon_ads.components.GzipJsonlDecoder
$parameters
objectSet parameters that are inherited to all children. See the section in the advanced topics for more details.
ZipfileDecoder object
Select 'ZIP file' for response data that is returned as a zipfile. Requires specifying an inner data type/decoder to parse the unzipped data.
Properties:decoder
Parser to parse the decompressed data from the zipfile(s).
Type:#/definitions/CsvDecoder#/definitions/GzipDecoder#/definitions/JsonDecoder#/definitions/JsonlDecoder
ListPartitionRouter object
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.
Properties:cursor_field
stringWhile 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.
Available variables:
Examples:section
{{ config['section_key'] }}values
The list of attributes being iterated over and used as input for the requests made to the source API.
Type:stringarray
Available variables:
Examples:[ "section_a", "section_b", "section_c" ]
{{ config['sections'] }}request_option
#/definitions/RequestOptionA request option describing where the list value should be injected into and under what field name if applicable.
$parameters
objectSet parameters that are inherited to all children. See the section in the advanced topics for more details.
MinMaxDatetime object
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.
Properties:datetime
stringDatetime value.
Available variables:
Examples:2021-01-01
2021-01-01T00:00:00Z
{{ config['start_time'] }}datetime_format
stringFormat 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 - %s_as_float: Epoch unix timestamp in seconds as float with microsecond precision -
1686218963.123456 - %ms: Epoch unix timestamp -
1686218963123 - %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 - %_ms: Millisecond (zero-padded to 3 digits) -
000,001, ...,999 - %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.
Examples:%Y-%m-%dT%H:%M:%S.%f%z
%Y-%m-%d
%s
- %s: Epoch unix timestamp -
max_datetime
stringCeiling applied on the datetime value. Must be formatted with the datetime_format field.
Available variables:
Examples:2021-01-01T00:00:00Z
2021-01-01
min_datetime
stringFloor applied on the datetime value. Must be formatted with the datetime_format field.
Available variables:
Examples:2010-01-01T00:00:00Z
2010-01-01
$parameters
objectSet parameters that are inherited to all children. See the section in the advanced topics for more details.
NoAuth object
Authenticator for requests requiring no authentication.
Properties:$parameters
objectSet parameters that are inherited to all children. See the section in the advanced topics for more details.
NoPagination object
Pagination implementation that never returns a next page.
Properties: