airbyte-cdk 6.48.6__py3-none-any.whl → 6.48.7__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- airbyte_cdk/cli/airbyte_cdk/_connector.py +3 -3
- airbyte_cdk/sources/declarative/declarative_component_schema.yaml +62 -57
- airbyte_cdk/sources/declarative/models/base_model_with_deprecations.py +6 -1
- airbyte_cdk/sources/declarative/models/declarative_component_schema.py +35 -37
- {airbyte_cdk-6.48.6.dist-info → airbyte_cdk-6.48.7.dist-info}/METADATA +1 -1
- {airbyte_cdk-6.48.6.dist-info → airbyte_cdk-6.48.7.dist-info}/RECORD +10 -10
- {airbyte_cdk-6.48.6.dist-info → airbyte_cdk-6.48.7.dist-info}/LICENSE.txt +0 -0
- {airbyte_cdk-6.48.6.dist-info → airbyte_cdk-6.48.7.dist-info}/LICENSE_SHORT +0 -0
- {airbyte_cdk-6.48.6.dist-info → airbyte_cdk-6.48.7.dist-info}/WHEEL +0 -0
- {airbyte_cdk-6.48.6.dist-info → airbyte_cdk-6.48.7.dist-info}/entry_points.txt +0 -0
@@ -63,7 +63,7 @@ except ImportError:
|
|
63
63
|
|
64
64
|
TEST_FILE_TEMPLATE = '''
|
65
65
|
# Copyright (c) 2025 Airbyte, Inc., all rights reserved.
|
66
|
-
"""FAST Airbyte Standard Tests for the
|
66
|
+
"""FAST Airbyte Standard Tests for the {connector_name} source."""
|
67
67
|
|
68
68
|
#from airbyte_cdk.test.standard_tests import {base_class_name}
|
69
69
|
from airbyte_cdk.test.standard_tests.util import create_connector_test_suite
|
@@ -78,7 +78,7 @@ TestSuite = create_connector_test_suite(
|
|
78
78
|
)
|
79
79
|
|
80
80
|
# class TestSuite({base_class_name}):
|
81
|
-
# """Test suite for the
|
81
|
+
# """Test suite for the {connector_name} source.
|
82
82
|
|
83
83
|
# This class inherits from SourceTestSuiteBase and implements all of the tests in the suite.
|
84
84
|
|
@@ -152,7 +152,7 @@ def test(
|
|
152
152
|
|
153
153
|
file_text = TEST_FILE_TEMPLATE.format(
|
154
154
|
base_class_name=connector_test_suite.__bases__[0].__name__,
|
155
|
-
|
155
|
+
connector_name=connector_name,
|
156
156
|
)
|
157
157
|
test_file_path = Path() / ".tmp" / "integration_tests/test_airbyte_standards.py"
|
158
158
|
test_file_path = test_file_path.resolve().absolute()
|
@@ -299,8 +299,8 @@ definitions:
|
|
299
299
|
- "$ref": "#/definitions/CustomAuthenticator"
|
300
300
|
- "$ref": "#/definitions/OAuthAuthenticator"
|
301
301
|
- "$ref": "#/definitions/JwtAuthenticator"
|
302
|
-
- "$ref": "#/definitions/NoAuth"
|
303
302
|
- "$ref": "#/definitions/SessionTokenAuthenticator"
|
303
|
+
- "$ref": "#/definitions/NoAuth"
|
304
304
|
- "$ref": "#/definitions/LegacySessionTokenAuthenticator"
|
305
305
|
examples:
|
306
306
|
- authenticators:
|
@@ -1417,7 +1417,6 @@ definitions:
|
|
1417
1417
|
- "$ref": "#/definitions/CustomIncrementalSync"
|
1418
1418
|
primary_key:
|
1419
1419
|
title: Primary Key
|
1420
|
-
description: The primary key of the stream.
|
1421
1420
|
"$ref": "#/definitions/PrimaryKey"
|
1422
1421
|
default: ""
|
1423
1422
|
schema_loader:
|
@@ -1468,18 +1467,18 @@ definitions:
|
|
1468
1467
|
requester:
|
1469
1468
|
description: Requester component that describes how to prepare HTTP requests to send to the source API.
|
1470
1469
|
anyOf:
|
1471
|
-
- "$ref": "#/definitions/CustomRequester"
|
1472
1470
|
- "$ref": "#/definitions/HttpRequester"
|
1471
|
+
- "$ref": "#/definitions/CustomRequester"
|
1473
1472
|
download_target_extractor:
|
1474
1473
|
description: Responsible for fetching the url where the file is located. This is applied on each records and not on the HTTP response
|
1475
1474
|
anyOf:
|
1476
|
-
- "$ref": "#/definitions/CustomRecordExtractor"
|
1477
1475
|
- "$ref": "#/definitions/DpathExtractor"
|
1476
|
+
- "$ref": "#/definitions/CustomRecordExtractor"
|
1478
1477
|
file_extractor:
|
1479
1478
|
description: Responsible for fetching the content of the file. If not defined, the assumption is that the whole response body is the file content
|
1480
1479
|
anyOf:
|
1481
|
-
- "$ref": "#/definitions/CustomRecordExtractor"
|
1482
1480
|
- "$ref": "#/definitions/DpathExtractor"
|
1481
|
+
- "$ref": "#/definitions/CustomRecordExtractor"
|
1483
1482
|
filename_extractor:
|
1484
1483
|
description: Defines the name to store the file. Stream name is automatically added to the file path. File unique ID can be used to avoid overwriting files. Random UUID will be used if the extractor is not provided.
|
1485
1484
|
type: string
|
@@ -1919,7 +1918,7 @@ definitions:
|
|
1919
1918
|
deprecated: true
|
1920
1919
|
deprecation_message: "Use `url` field instead."
|
1921
1920
|
title: API Base URL
|
1922
|
-
description: Deprecated, use the `url` instead. Base URL of the API source. Do not put sensitive information (e.g. API tokens) into this field - Use the
|
1921
|
+
description: Deprecated, use the `url` instead. Base URL of the API source. Do not put sensitive information (e.g. API tokens) into this field - Use the Authenticator component for this.
|
1923
1922
|
linkable: true
|
1924
1923
|
type: string
|
1925
1924
|
interpolation_context:
|
@@ -1937,8 +1936,8 @@ definitions:
|
|
1937
1936
|
- "https://connect.squareup.com/v2/quotes/{{ stream_partition['id'] }}/quote_line_groups"
|
1938
1937
|
- "https://example.com/api/v1/resource/{{ next_page_token['id'] }}"
|
1939
1938
|
url:
|
1940
|
-
title:
|
1941
|
-
description: The URL of the API
|
1939
|
+
title: API Endpoint URL
|
1940
|
+
description: The URL of the source API endpoint. Do not put sensitive information (e.g. API tokens) into this field - Use the Authenticator component for this.
|
1942
1941
|
type: string
|
1943
1942
|
interpolation_context:
|
1944
1943
|
- config
|
@@ -1958,7 +1957,7 @@ definitions:
|
|
1958
1957
|
deprecated: true
|
1959
1958
|
deprecation_message: "Use `url` field instead."
|
1960
1959
|
title: URL Path
|
1961
|
-
description: Deprecated, use the `url` instead. Path the specific API endpoint that this stream represents. Do not put sensitive information (e.g. API tokens) into this field - Use the
|
1960
|
+
description: Deprecated, use the `url` instead. 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.
|
1962
1961
|
type: string
|
1963
1962
|
interpolation_context:
|
1964
1963
|
- config
|
@@ -1989,7 +1988,6 @@ definitions:
|
|
1989
1988
|
linkable: true
|
1990
1989
|
description: Authentication method to use for requests sent to the API.
|
1991
1990
|
anyOf:
|
1992
|
-
- "$ref": "#/definitions/NoAuth"
|
1993
1991
|
- "$ref": "#/definitions/ApiKeyAuthenticator"
|
1994
1992
|
- "$ref": "#/definitions/BasicHttpAuthenticator"
|
1995
1993
|
- "$ref": "#/definitions/BearerAuthenticator"
|
@@ -1998,11 +1996,52 @@ definitions:
|
|
1998
1996
|
- "$ref": "#/definitions/SessionTokenAuthenticator"
|
1999
1997
|
- "$ref": "#/definitions/SelectiveAuthenticator"
|
2000
1998
|
- "$ref": "#/definitions/CustomAuthenticator"
|
1999
|
+
- "$ref": "#/definitions/NoAuth"
|
2001
2000
|
- "$ref": "#/definitions/LegacySessionTokenAuthenticator"
|
2002
2001
|
fetch_properties_from_endpoint:
|
2003
2002
|
title: Fetch Properties from Endpoint
|
2004
2003
|
description: Allows for retrieving a dynamic set of properties from an API endpoint which can be injected into outbound request using the stream_partition.extra_fields.
|
2005
2004
|
"$ref": "#/definitions/PropertiesFromEndpoint"
|
2005
|
+
request_parameters:
|
2006
|
+
title: Query Parameters
|
2007
|
+
description: Specifies the query parameters that should be set on an outgoing HTTP request given the inputs.
|
2008
|
+
anyOf:
|
2009
|
+
- type: object
|
2010
|
+
title: Key/Value Pairs
|
2011
|
+
additionalProperties:
|
2012
|
+
anyOf:
|
2013
|
+
- type: string
|
2014
|
+
- $ref: "#/definitions/QueryProperties"
|
2015
|
+
- type: string
|
2016
|
+
title: Interpolated Value
|
2017
|
+
interpolation_context:
|
2018
|
+
- next_page_token
|
2019
|
+
- stream_interval
|
2020
|
+
- stream_partition
|
2021
|
+
- stream_slice
|
2022
|
+
examples:
|
2023
|
+
- unit: "day"
|
2024
|
+
- query: 'last_event_time BETWEEN TIMESTAMP "{{ stream_interval.start_time }}" AND TIMESTAMP "{{ stream_interval.end_time }}"'
|
2025
|
+
- searchIn: "{{ ','.join(config.get('search_in', [])) }}"
|
2026
|
+
- sort_by[asc]: updated_at
|
2027
|
+
request_headers:
|
2028
|
+
title: Request Headers
|
2029
|
+
description: Return any non-auth headers. Authentication headers will overwrite any overlapping headers returned from this method.
|
2030
|
+
anyOf:
|
2031
|
+
- type: object
|
2032
|
+
title: Key/Value Pairs
|
2033
|
+
additionalProperties:
|
2034
|
+
type: string
|
2035
|
+
- type: string
|
2036
|
+
title: Interpolated Value
|
2037
|
+
interpolation_context:
|
2038
|
+
- next_page_token
|
2039
|
+
- stream_interval
|
2040
|
+
- stream_partition
|
2041
|
+
- stream_slice
|
2042
|
+
examples:
|
2043
|
+
- Output-Format: JSON
|
2044
|
+
- Version: "{{ config['version'] }}"
|
2006
2045
|
request_body_data:
|
2007
2046
|
deprecated: true
|
2008
2047
|
deprecation_message: "Use `request_body` field instead."
|
@@ -2045,7 +2084,7 @@ definitions:
|
|
2045
2084
|
field: "updated_at"
|
2046
2085
|
order: "ascending"
|
2047
2086
|
request_body:
|
2048
|
-
title: Request Body
|
2087
|
+
title: Request Body
|
2049
2088
|
description: Specifies how to populate the body of the request with a payload. Can contain nested objects.
|
2050
2089
|
anyOf:
|
2051
2090
|
- "$ref": "#/definitions/RequestBodyPlainText"
|
@@ -2081,46 +2120,6 @@ definitions:
|
|
2081
2120
|
query:
|
2082
2121
|
param1: "value1"
|
2083
2122
|
param2: "{{ config['param2_value'] }}"
|
2084
|
-
request_headers:
|
2085
|
-
title: Request Headers
|
2086
|
-
description: Return any non-auth headers. Authentication headers will overwrite any overlapping headers returned from this method.
|
2087
|
-
anyOf:
|
2088
|
-
- type: object
|
2089
|
-
title: Key/Value Pairs
|
2090
|
-
additionalProperties:
|
2091
|
-
type: string
|
2092
|
-
- type: string
|
2093
|
-
title: Interpolated Value
|
2094
|
-
interpolation_context:
|
2095
|
-
- next_page_token
|
2096
|
-
- stream_interval
|
2097
|
-
- stream_partition
|
2098
|
-
- stream_slice
|
2099
|
-
examples:
|
2100
|
-
- Output-Format: JSON
|
2101
|
-
- Version: "{{ config['version'] }}"
|
2102
|
-
request_parameters:
|
2103
|
-
title: Query Parameters
|
2104
|
-
description: Specifies the query parameters that should be set on an outgoing HTTP request given the inputs.
|
2105
|
-
anyOf:
|
2106
|
-
- type: object
|
2107
|
-
title: Key/Value Pairs
|
2108
|
-
additionalProperties:
|
2109
|
-
anyOf:
|
2110
|
-
- type: string
|
2111
|
-
- $ref: "#/definitions/QueryProperties"
|
2112
|
-
- type: string
|
2113
|
-
title: Interpolated Value
|
2114
|
-
interpolation_context:
|
2115
|
-
- next_page_token
|
2116
|
-
- stream_interval
|
2117
|
-
- stream_partition
|
2118
|
-
- stream_slice
|
2119
|
-
examples:
|
2120
|
-
- unit: "day"
|
2121
|
-
- query: 'last_event_time BETWEEN TIMESTAMP "{{ stream_interval.start_time }}" AND TIMESTAMP "{{ stream_interval.end_time }}"'
|
2122
|
-
- searchIn: "{{ ','.join(config.get('search_in', [])) }}"
|
2123
|
-
- sort_by[asc]: updated_at
|
2124
2123
|
error_handler:
|
2125
2124
|
title: Error Handler
|
2126
2125
|
description: Error handler component that defines how to handle errors.
|
@@ -3100,7 +3099,7 @@ definitions:
|
|
3100
3099
|
type: array
|
3101
3100
|
default: []
|
3102
3101
|
items:
|
3103
|
-
|
3102
|
+
type: string
|
3104
3103
|
interpolation_context:
|
3105
3104
|
- config
|
3106
3105
|
parent_key:
|
@@ -3155,14 +3154,19 @@ definitions:
|
|
3155
3154
|
anyOf:
|
3156
3155
|
- type: string
|
3157
3156
|
title: Single Key
|
3157
|
+
description: The single top-level field to use as the primary key.
|
3158
3158
|
- type: array
|
3159
3159
|
title: Composite Key
|
3160
|
+
description: An array of top-level fields representing a composite primary key.
|
3160
3161
|
items:
|
3161
3162
|
type: string
|
3162
3163
|
- type: array
|
3163
3164
|
title: Composite Key of Nested Fields
|
3165
|
+
description: An array of arrays representing a composite primary key where the fields are nested fields.
|
3164
3166
|
items:
|
3165
3167
|
type: array
|
3168
|
+
title: Nested Field Path
|
3169
|
+
description: Path to the nested field in the record.
|
3166
3170
|
items:
|
3167
3171
|
type: string
|
3168
3172
|
default: ""
|
@@ -3194,8 +3198,8 @@ definitions:
|
|
3194
3198
|
retriever:
|
3195
3199
|
description: Requester component that describes how to fetch the properties to query from a remote API endpoint.
|
3196
3200
|
anyOf:
|
3197
|
-
- "$ref": "#/definitions/CustomRetriever"
|
3198
3201
|
- "$ref": "#/definitions/SimpleRetriever"
|
3202
|
+
- "$ref": "#/definitions/CustomRetriever"
|
3199
3203
|
$parameters:
|
3200
3204
|
type: object
|
3201
3205
|
additionalProperties: true
|
@@ -3426,6 +3430,7 @@ definitions:
|
|
3426
3430
|
additionalProperties: true
|
3427
3431
|
LegacySessionTokenAuthenticator:
|
3428
3432
|
title: Session Token Authenticator
|
3433
|
+
deprecated: true
|
3429
3434
|
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.
|
3430
3435
|
type: object
|
3431
3436
|
required:
|
@@ -3534,15 +3539,15 @@ definitions:
|
|
3534
3539
|
- "$ref": "#/definitions/HttpRequester"
|
3535
3540
|
- "$ref": "#/definitions/CustomRequester"
|
3536
3541
|
decoder:
|
3537
|
-
title:
|
3542
|
+
title: HTTP Response Format
|
3538
3543
|
description: Component decoding the response so records can be extracted.
|
3539
3544
|
anyOf:
|
3540
|
-
- "$ref": "#/definitions/CsvDecoder"
|
3541
|
-
- "$ref": "#/definitions/GzipDecoder"
|
3542
3545
|
- "$ref": "#/definitions/JsonDecoder"
|
3546
|
+
- "$ref": "#/definitions/XmlDecoder"
|
3547
|
+
- "$ref": "#/definitions/CsvDecoder"
|
3543
3548
|
- "$ref": "#/definitions/JsonlDecoder"
|
3549
|
+
- "$ref": "#/definitions/GzipDecoder"
|
3544
3550
|
- "$ref": "#/definitions/IterableDecoder"
|
3545
|
-
- "$ref": "#/definitions/XmlDecoder"
|
3546
3551
|
- "$ref": "#/definitions/ZipfileDecoder"
|
3547
3552
|
- "$ref": "#/definitions/CustomDecoder"
|
3548
3553
|
record_selector:
|
@@ -4,6 +4,10 @@
|
|
4
4
|
# WHEN DEPRECATED FIELDS ARE ACCESSED
|
5
5
|
|
6
6
|
import warnings
|
7
|
+
|
8
|
+
# ignore the SyntaxWarning in the Airbyte log messages, during the string evaluation
|
9
|
+
warnings.filterwarnings("ignore", category=SyntaxWarning)
|
10
|
+
|
7
11
|
from typing import Any, List
|
8
12
|
|
9
13
|
from pydantic.v1 import BaseModel
|
@@ -12,9 +16,10 @@ from airbyte_cdk.connector_builder.models import LogMessage as ConnectorBuilderL
|
|
12
16
|
|
13
17
|
# format the warning message
|
14
18
|
warnings.formatwarning = (
|
15
|
-
lambda message, category, *args, **kwargs: f"{category.__name__}: {message}"
|
19
|
+
lambda message, category, *args, **kwargs: f"{category.__name__}: {message}\n"
|
16
20
|
)
|
17
21
|
|
22
|
+
|
18
23
|
FIELDS_TAG = "__fields__"
|
19
24
|
DEPRECATED = "deprecated"
|
20
25
|
DEPRECATION_MESSAGE = "deprecation_message"
|
@@ -2080,8 +2080,8 @@ class SelectiveAuthenticator(BaseModel):
|
|
2080
2080
|
CustomAuthenticator,
|
2081
2081
|
OAuthAuthenticator,
|
2082
2082
|
JwtAuthenticator,
|
2083
|
-
NoAuth,
|
2084
2083
|
SessionTokenAuthenticator,
|
2084
|
+
NoAuth,
|
2085
2085
|
LegacySessionTokenAuthenticator,
|
2086
2086
|
],
|
2087
2087
|
] = Field(
|
@@ -2103,15 +2103,15 @@ class SelectiveAuthenticator(BaseModel):
|
|
2103
2103
|
|
2104
2104
|
class FileUploader(BaseModel):
|
2105
2105
|
type: Literal["FileUploader"]
|
2106
|
-
requester: Union[
|
2106
|
+
requester: Union[HttpRequester, CustomRequester] = Field(
|
2107
2107
|
...,
|
2108
2108
|
description="Requester component that describes how to prepare HTTP requests to send to the source API.",
|
2109
2109
|
)
|
2110
|
-
download_target_extractor: Union[
|
2110
|
+
download_target_extractor: Union[DpathExtractor, CustomRecordExtractor] = Field(
|
2111
2111
|
...,
|
2112
2112
|
description="Responsible for fetching the url where the file is located. This is applied on each records and not on the HTTP response",
|
2113
2113
|
)
|
2114
|
-
file_extractor: Optional[Union[
|
2114
|
+
file_extractor: Optional[Union[DpathExtractor, CustomRecordExtractor]] = Field(
|
2115
2115
|
None,
|
2116
2116
|
description="Responsible for fetching the content of the file. If not defined, the assumption is that the whole response body is the file content",
|
2117
2117
|
)
|
@@ -2144,9 +2144,7 @@ class DeclarativeStream(BaseModel):
|
|
2144
2144
|
description="Component used to fetch data incrementally based on a time field in the data.",
|
2145
2145
|
title="Incremental Sync",
|
2146
2146
|
)
|
2147
|
-
primary_key: Optional[PrimaryKey] = Field(
|
2148
|
-
"", description="The primary key of the stream.", title="Primary Key"
|
2149
|
-
)
|
2147
|
+
primary_key: Optional[PrimaryKey] = Field("", title="Primary Key")
|
2150
2148
|
schema_loader: Optional[
|
2151
2149
|
Union[
|
2152
2150
|
InlineSchemaLoader,
|
@@ -2242,7 +2240,7 @@ class HttpRequester(BaseModelWithDeprecations):
|
|
2242
2240
|
None,
|
2243
2241
|
deprecated=True,
|
2244
2242
|
deprecation_message="Use `url` field instead.",
|
2245
|
-
description="Deprecated, use the `url` instead. Base URL of the API source. Do not put sensitive information (e.g. API tokens) into this field - Use the
|
2243
|
+
description="Deprecated, use the `url` instead. Base URL of the API source. Do not put sensitive information (e.g. API tokens) into this field - Use the Authenticator component for this.",
|
2246
2244
|
examples=[
|
2247
2245
|
"https://connect.squareup.com/v2",
|
2248
2246
|
"{{ config['base_url'] or 'https://app.posthog.com'}}/api",
|
@@ -2253,20 +2251,20 @@ class HttpRequester(BaseModelWithDeprecations):
|
|
2253
2251
|
)
|
2254
2252
|
url: Optional[str] = Field(
|
2255
2253
|
None,
|
2256
|
-
description="The URL of the API
|
2254
|
+
description="The URL of the source API endpoint. Do not put sensitive information (e.g. API tokens) into this field - Use the Authenticator component for this.",
|
2257
2255
|
examples=[
|
2258
2256
|
"https://connect.squareup.com/v2",
|
2259
2257
|
"{{ config['url'] or 'https://app.posthog.com'}}/api",
|
2260
2258
|
"https://connect.squareup.com/v2/quotes/{{ stream_partition['id'] }}/quote_line_groups",
|
2261
2259
|
"https://example.com/api/v1/resource/{{ next_page_token['id'] }}",
|
2262
2260
|
],
|
2263
|
-
title="
|
2261
|
+
title="API Endpoint URL",
|
2264
2262
|
)
|
2265
2263
|
path: Optional[str] = Field(
|
2266
2264
|
None,
|
2267
2265
|
deprecated=True,
|
2268
2266
|
deprecation_message="Use `url` field instead.",
|
2269
|
-
description="Deprecated, use the `url` instead. Path the specific API endpoint that this stream represents. Do not put sensitive information (e.g. API tokens) into this field - Use the
|
2267
|
+
description="Deprecated, use the `url` instead. 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.",
|
2270
2268
|
examples=[
|
2271
2269
|
"/products",
|
2272
2270
|
"/quotes/{{ stream_partition['id'] }}/quote_line_groups",
|
@@ -2282,7 +2280,6 @@ class HttpRequester(BaseModelWithDeprecations):
|
|
2282
2280
|
)
|
2283
2281
|
authenticator: Optional[
|
2284
2282
|
Union[
|
2285
|
-
NoAuth,
|
2286
2283
|
ApiKeyAuthenticator,
|
2287
2284
|
BasicHttpAuthenticator,
|
2288
2285
|
BearerAuthenticator,
|
@@ -2291,6 +2288,7 @@ class HttpRequester(BaseModelWithDeprecations):
|
|
2291
2288
|
SessionTokenAuthenticator,
|
2292
2289
|
SelectiveAuthenticator,
|
2293
2290
|
CustomAuthenticator,
|
2291
|
+
NoAuth,
|
2294
2292
|
LegacySessionTokenAuthenticator,
|
2295
2293
|
]
|
2296
2294
|
] = Field(
|
@@ -2303,6 +2301,25 @@ class HttpRequester(BaseModelWithDeprecations):
|
|
2303
2301
|
description="Allows for retrieving a dynamic set of properties from an API endpoint which can be injected into outbound request using the stream_partition.extra_fields.",
|
2304
2302
|
title="Fetch Properties from Endpoint",
|
2305
2303
|
)
|
2304
|
+
request_parameters: Optional[Union[Dict[str, Union[str, QueryProperties]], str]] = Field(
|
2305
|
+
None,
|
2306
|
+
description="Specifies the query parameters that should be set on an outgoing HTTP request given the inputs.",
|
2307
|
+
examples=[
|
2308
|
+
{"unit": "day"},
|
2309
|
+
{
|
2310
|
+
"query": 'last_event_time BETWEEN TIMESTAMP "{{ stream_interval.start_time }}" AND TIMESTAMP "{{ stream_interval.end_time }}"'
|
2311
|
+
},
|
2312
|
+
{"searchIn": "{{ ','.join(config.get('search_in', [])) }}"},
|
2313
|
+
{"sort_by[asc]": "updated_at"},
|
2314
|
+
],
|
2315
|
+
title="Query Parameters",
|
2316
|
+
)
|
2317
|
+
request_headers: Optional[Union[Dict[str, str], str]] = Field(
|
2318
|
+
None,
|
2319
|
+
description="Return any non-auth headers. Authentication headers will overwrite any overlapping headers returned from this method.",
|
2320
|
+
examples=[{"Output-Format": "JSON"}, {"Version": "{{ config['version'] }}"}],
|
2321
|
+
title="Request Headers",
|
2322
|
+
)
|
2306
2323
|
request_body_data: Optional[Union[Dict[str, str], str]] = Field(
|
2307
2324
|
None,
|
2308
2325
|
deprecated=True,
|
@@ -2363,26 +2380,7 @@ class HttpRequester(BaseModelWithDeprecations):
|
|
2363
2380
|
},
|
2364
2381
|
},
|
2365
2382
|
],
|
2366
|
-
title="Request Body
|
2367
|
-
)
|
2368
|
-
request_headers: Optional[Union[Dict[str, str], str]] = Field(
|
2369
|
-
None,
|
2370
|
-
description="Return any non-auth headers. Authentication headers will overwrite any overlapping headers returned from this method.",
|
2371
|
-
examples=[{"Output-Format": "JSON"}, {"Version": "{{ config['version'] }}"}],
|
2372
|
-
title="Request Headers",
|
2373
|
-
)
|
2374
|
-
request_parameters: Optional[Union[Dict[str, Union[str, QueryProperties]], str]] = Field(
|
2375
|
-
None,
|
2376
|
-
description="Specifies the query parameters that should be set on an outgoing HTTP request given the inputs.",
|
2377
|
-
examples=[
|
2378
|
-
{"unit": "day"},
|
2379
|
-
{
|
2380
|
-
"query": 'last_event_time BETWEEN TIMESTAMP "{{ stream_interval.start_time }}" AND TIMESTAMP "{{ stream_interval.end_time }}"'
|
2381
|
-
},
|
2382
|
-
{"searchIn": "{{ ','.join(config.get('search_in', [])) }}"},
|
2383
|
-
{"sort_by[asc]": "updated_at"},
|
2384
|
-
],
|
2385
|
-
title="Query Parameters",
|
2383
|
+
title="Request Body",
|
2386
2384
|
)
|
2387
2385
|
error_handler: Optional[
|
2388
2386
|
Union[DefaultErrorHandler, CompositeErrorHandler, CustomErrorHandler]
|
@@ -2475,7 +2473,7 @@ class PropertiesFromEndpoint(BaseModel):
|
|
2475
2473
|
description="Describes the path to the field that should be extracted",
|
2476
2474
|
examples=[["name"]],
|
2477
2475
|
)
|
2478
|
-
retriever: Union[
|
2476
|
+
retriever: Union[SimpleRetriever, CustomRetriever] = Field(
|
2479
2477
|
...,
|
2480
2478
|
description="Requester component that describes how to fetch the properties to query from a remote API endpoint.",
|
2481
2479
|
)
|
@@ -2526,19 +2524,19 @@ class SimpleRetriever(BaseModel):
|
|
2526
2524
|
)
|
2527
2525
|
decoder: Optional[
|
2528
2526
|
Union[
|
2529
|
-
CsvDecoder,
|
2530
|
-
GzipDecoder,
|
2531
2527
|
JsonDecoder,
|
2528
|
+
XmlDecoder,
|
2529
|
+
CsvDecoder,
|
2532
2530
|
JsonlDecoder,
|
2531
|
+
GzipDecoder,
|
2533
2532
|
IterableDecoder,
|
2534
|
-
XmlDecoder,
|
2535
2533
|
ZipfileDecoder,
|
2536
2534
|
CustomDecoder,
|
2537
2535
|
]
|
2538
2536
|
] = Field(
|
2539
2537
|
None,
|
2540
2538
|
description="Component decoding the response so records can be extracted.",
|
2541
|
-
title="
|
2539
|
+
title="HTTP Response Format",
|
2542
2540
|
)
|
2543
2541
|
record_selector: RecordSelector = Field(
|
2544
2542
|
...,
|
@@ -1,7 +1,7 @@
|
|
1
1
|
airbyte_cdk/__init__.py,sha256=52uncJvDQNHvwKxaqzXgnMYTptIl65LDJr2fvlk8-DU,11707
|
2
2
|
airbyte_cdk/cli/__init__.py,sha256=CXsai3MYMLZ_sqi2vPAIVcKDun8VRqlv0cKffBI0iSY,346
|
3
3
|
airbyte_cdk/cli/airbyte_cdk/__init__.py,sha256=8IoEcbdYr7CMAh97Xut5__uHH9vV4LKUtSBNTk3qEWY,2031
|
4
|
-
airbyte_cdk/cli/airbyte_cdk/_connector.py,sha256=
|
4
|
+
airbyte_cdk/cli/airbyte_cdk/_connector.py,sha256=wXwt7tbO-9qFYDDK4P8wbKJX43kbeoRZvK5SNX-Wnfs,5300
|
5
5
|
airbyte_cdk/cli/airbyte_cdk/_image.py,sha256=F0XtvR2CyFi1EPIUBiEnDia9NfCuM7T_itdNj9yyb2E,2907
|
6
6
|
airbyte_cdk/cli/airbyte_cdk/_manifest.py,sha256=aFdeeWgek7oXR3YfZPxk7kBZ64Blmsr0dAXN6BVGiIA,482
|
7
7
|
airbyte_cdk/cli/airbyte_cdk/_secrets.py,sha256=iRA8435sYDcWe6IBv4VAo-3yTIAFqySbDvmUsgpEInA,14712
|
@@ -89,7 +89,7 @@ airbyte_cdk/sources/declarative/concurrent_declarative_source.py,sha256=GoZJ8Oxb
|
|
89
89
|
airbyte_cdk/sources/declarative/datetime/__init__.py,sha256=4Hw-PX1-VgESLF16cDdvuYCzGJtHntThLF4qIiULWeo,61
|
90
90
|
airbyte_cdk/sources/declarative/datetime/datetime_parser.py,sha256=_zGNGq31RNy_0QBLt_EcTvgPyhj7urPdx6oA3M5-r3o,3150
|
91
91
|
airbyte_cdk/sources/declarative/datetime/min_max_datetime.py,sha256=0BHBtDNQZfvwM45-tY5pNlTcKAFSGGNxemoi0Jic-0E,5785
|
92
|
-
airbyte_cdk/sources/declarative/declarative_component_schema.yaml,sha256=
|
92
|
+
airbyte_cdk/sources/declarative/declarative_component_schema.yaml,sha256=iWOtZ5staQtx0FZ4CSruEqyxdSO3-4SfwIQ1nw_bY_w,166744
|
93
93
|
airbyte_cdk/sources/declarative/declarative_source.py,sha256=qmyMnnet92eGc3C22yBtpvD5UZjqdhsAafP_zxI5wp8,1814
|
94
94
|
airbyte_cdk/sources/declarative/declarative_stream.py,sha256=dCRlddBUSaJmBNBz1pSO1r2rTw8AP5d2_vlmIeGs2gg,10767
|
95
95
|
airbyte_cdk/sources/declarative/decoders/__init__.py,sha256=JHb_0d3SE6kNY10mxA5YBEKPeSbsWYjByq1gUQxepoE,953
|
@@ -132,8 +132,8 @@ airbyte_cdk/sources/declarative/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW
|
|
132
132
|
airbyte_cdk/sources/declarative/migrations/legacy_to_per_partition_state_migration.py,sha256=iemy3fKLczcU0-Aor7tx5jcT6DRedKMqyK7kCOp01hg,3924
|
133
133
|
airbyte_cdk/sources/declarative/migrations/state_migration.py,sha256=KWPjealMLKSMtajXgkdGgKg7EmTLR-CqqD7UIh0-eDU,794
|
134
134
|
airbyte_cdk/sources/declarative/models/__init__.py,sha256=nUFxNCiKeYRVXuZEKA7GD-lTHxsiKcQ8FitZjKhPIvE,100
|
135
|
-
airbyte_cdk/sources/declarative/models/base_model_with_deprecations.py,sha256=
|
136
|
-
airbyte_cdk/sources/declarative/models/declarative_component_schema.py,sha256=
|
135
|
+
airbyte_cdk/sources/declarative/models/base_model_with_deprecations.py,sha256=Imnj3yef0aqRdLfaUxkIYISUb8YkiPrRH_wBd-x8HjM,5999
|
136
|
+
airbyte_cdk/sources/declarative/models/declarative_component_schema.py,sha256=P0l-NiKm873uBZ0x6vRJK2u4P-XPTGeTWMnhafKryRw,117940
|
137
137
|
airbyte_cdk/sources/declarative/parsers/__init__.py,sha256=ZnqYNxHsKCgO38IwB34RQyRMXTs4GTvlRi3ImKnIioo,61
|
138
138
|
airbyte_cdk/sources/declarative/parsers/custom_code_compiler.py,sha256=nlVvHC511NUyDEEIRBkoeDTAvLqKNp-hRy8D19z8tdk,5941
|
139
139
|
airbyte_cdk/sources/declarative/parsers/custom_exceptions.py,sha256=wnRUP0Xeru9Rbu5OexXSDN9QWDo8YU4tT9M2LDVOgGA,802
|
@@ -408,9 +408,9 @@ airbyte_cdk/utils/slice_hasher.py,sha256=EDxgROHDbfG-QKQb59m7h_7crN1tRiawdf5uU7G
|
|
408
408
|
airbyte_cdk/utils/spec_schema_transformations.py,sha256=-5HTuNsnDBAhj-oLeQXwpTGA0HdcjFOf2zTEMUTTg_Y,816
|
409
409
|
airbyte_cdk/utils/stream_status_utils.py,sha256=ZmBoiy5HVbUEHAMrUONxZvxnvfV9CesmQJLDTAIWnWw,1171
|
410
410
|
airbyte_cdk/utils/traced_exception.py,sha256=C8uIBuCL_E4WnBAOPSxBicD06JAldoN9fGsQDp463OY,6292
|
411
|
-
airbyte_cdk-6.48.
|
412
|
-
airbyte_cdk-6.48.
|
413
|
-
airbyte_cdk-6.48.
|
414
|
-
airbyte_cdk-6.48.
|
415
|
-
airbyte_cdk-6.48.
|
416
|
-
airbyte_cdk-6.48.
|
411
|
+
airbyte_cdk-6.48.7.dist-info/LICENSE.txt,sha256=Wfe61S4BaGPj404v8lrAbvhjYR68SHlkzeYrg3_bbuM,1051
|
412
|
+
airbyte_cdk-6.48.7.dist-info/LICENSE_SHORT,sha256=aqF6D1NcESmpn-cqsxBtszTEnHKnlsp8L4x9wAh3Nxg,55
|
413
|
+
airbyte_cdk-6.48.7.dist-info/METADATA,sha256=wDGb1Arvgo0iKsx3MhfwfIA6_kGgUaQe2GoJcvwM8ZU,6343
|
414
|
+
airbyte_cdk-6.48.7.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
|
415
|
+
airbyte_cdk-6.48.7.dist-info/entry_points.txt,sha256=AKWbEkHfpzzk9nF9tqBUaw1MbvTM4mGtEzmZQm0ZWvM,139
|
416
|
+
airbyte_cdk-6.48.7.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|