airbyte-cdk 6.18.0.dev3__tar.gz → 6.18.2__tar.gz
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-6.18.0.dev3 → airbyte_cdk-6.18.2}/PKG-INFO +1 -1
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/declarative/auth/oauth.py +26 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/declarative/declarative_component_schema.yaml +52 -36
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/declarative/decoders/composite_raw_decoder.py +0 -43
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/declarative/models/declarative_component_schema.py +44 -20
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/declarative/parsers/model_to_component_factory.py +50 -58
- airbyte_cdk-6.18.2/airbyte_cdk/sources/declarative/requesters/README.md +57 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/declarative/requesters/http_job_repository.py +33 -4
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/file_based/config/abstract_file_based_spec.py +11 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/file_based/exceptions.py +34 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/file_based/file_based_source.py +28 -5
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/file_based/file_based_stream_reader.py +18 -4
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/file_based/file_types/unstructured_parser.py +25 -2
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/file_based/stream/default_file_based_stream.py +30 -2
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/streams/http/requests_native_auth/abstract_oauth.py +20 -4
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/streams/http/requests_native_auth/oauth.py +34 -4
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/types.py +3 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/pyproject.toml +1 -1
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/LICENSE.txt +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/README.md +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/__init__.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/cli/__init__.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/cli/source_declarative_manifest/__init__.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/cli/source_declarative_manifest/_run.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/cli/source_declarative_manifest/spec.json +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/config_observation.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/connector.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/connector_builder/README.md +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/connector_builder/__init__.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/connector_builder/connector_builder_handler.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/connector_builder/main.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/connector_builder/message_grouper.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/connector_builder/models.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/destinations/__init__.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/destinations/destination.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/destinations/vector_db_based/README.md +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/destinations/vector_db_based/__init__.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/destinations/vector_db_based/config.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/destinations/vector_db_based/document_processor.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/destinations/vector_db_based/embedder.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/destinations/vector_db_based/indexer.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/destinations/vector_db_based/test_utils.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/destinations/vector_db_based/utils.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/destinations/vector_db_based/writer.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/entrypoint.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/exception_handler.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/logger.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/models/__init__.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/models/airbyte_protocol.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/models/airbyte_protocol_serializers.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/models/file_transfer_record_message.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/models/well_known_types.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/py.typed +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/__init__.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/abstract_source.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/concurrent_source/__init__.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/concurrent_source/concurrent_read_processor.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/concurrent_source/concurrent_source.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/concurrent_source/concurrent_source_adapter.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/concurrent_source/partition_generation_completed_sentinel.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/concurrent_source/stream_thread_exception.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/concurrent_source/thread_pool_manager.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/config.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/connector_state_manager.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/declarative/__init__.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/declarative/async_job/__init__.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/declarative/async_job/job.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/declarative/async_job/job_orchestrator.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/declarative/async_job/job_tracker.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/declarative/async_job/repository.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/declarative/async_job/status.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/declarative/async_job/timer.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/declarative/auth/__init__.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/declarative/auth/declarative_authenticator.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/declarative/auth/jwt.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/declarative/auth/selective_authenticator.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/declarative/auth/token.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/declarative/auth/token_provider.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/declarative/checks/__init__.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/declarative/checks/check_stream.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/declarative/checks/connection_checker.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/declarative/concurrency_level/__init__.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/declarative/concurrency_level/concurrency_level.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/declarative/concurrent_declarative_source.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/declarative/datetime/__init__.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/declarative/datetime/datetime_parser.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/declarative/datetime/min_max_datetime.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/declarative/declarative_source.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/declarative/declarative_stream.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/declarative/decoders/__init__.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/declarative/decoders/decoder.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/declarative/decoders/json_decoder.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/declarative/decoders/noop_decoder.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/declarative/decoders/pagination_decoder_decorator.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/declarative/decoders/xml_decoder.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/declarative/exceptions.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/declarative/extractors/__init__.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/declarative/extractors/dpath_extractor.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/declarative/extractors/http_selector.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/declarative/extractors/record_extractor.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/declarative/extractors/record_filter.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/declarative/extractors/record_selector.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/declarative/extractors/response_to_file_extractor.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/declarative/extractors/type_transformer.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/declarative/incremental/__init__.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/declarative/incremental/datetime_based_cursor.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/declarative/incremental/declarative_cursor.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/declarative/incremental/global_substream_cursor.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/declarative/incremental/per_partition_cursor.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/declarative/incremental/per_partition_with_global.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/declarative/incremental/resumable_full_refresh_cursor.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/declarative/interpolation/__init__.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/declarative/interpolation/filters.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/declarative/interpolation/interpolated_boolean.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/declarative/interpolation/interpolated_mapping.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/declarative/interpolation/interpolated_nested_mapping.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/declarative/interpolation/interpolated_string.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/declarative/interpolation/interpolation.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/declarative/interpolation/jinja.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/declarative/interpolation/macros.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/declarative/manifest_declarative_source.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/declarative/migrations/__init__.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/declarative/migrations/legacy_to_per_partition_state_migration.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/declarative/migrations/state_migration.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/declarative/models/__init__.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/declarative/parsers/__init__.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/declarative/parsers/custom_exceptions.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/declarative/parsers/manifest_component_transformer.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/declarative/parsers/manifest_reference_resolver.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/declarative/partition_routers/__init__.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/declarative/partition_routers/async_job_partition_router.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/declarative/partition_routers/cartesian_product_stream_slicer.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/declarative/partition_routers/list_partition_router.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/declarative/partition_routers/partition_router.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/declarative/partition_routers/single_partition_router.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/declarative/partition_routers/substream_partition_router.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/declarative/requesters/__init__.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/declarative/requesters/error_handlers/__init__.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/__init__.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/constant_backoff_strategy.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/exponential_backoff_strategy.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/header_helper.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/wait_time_from_header_backoff_strategy.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/wait_until_time_from_header_backoff_strategy.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategy.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/declarative/requesters/error_handlers/composite_error_handler.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/declarative/requesters/error_handlers/default_error_handler.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/declarative/requesters/error_handlers/default_http_response_filter.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/declarative/requesters/error_handlers/error_handler.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/declarative/requesters/error_handlers/http_response_filter.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/declarative/requesters/http_requester.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/declarative/requesters/paginators/__init__.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/declarative/requesters/paginators/default_paginator.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/declarative/requesters/paginators/no_pagination.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/declarative/requesters/paginators/paginator.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/__init__.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/cursor_pagination_strategy.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/offset_increment.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/page_increment.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/pagination_strategy.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/stop_condition.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/declarative/requesters/request_option.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/declarative/requesters/request_options/__init__.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/declarative/requesters/request_options/datetime_based_request_options_provider.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/declarative/requesters/request_options/default_request_options_provider.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/declarative/requesters/request_options/interpolated_nested_request_input_provider.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/declarative/requesters/request_options/interpolated_request_input_provider.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/declarative/requesters/request_options/interpolated_request_options_provider.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/declarative/requesters/request_options/request_options_provider.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/declarative/requesters/request_path.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/declarative/requesters/requester.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/declarative/resolvers/__init__.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/declarative/resolvers/components_resolver.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/declarative/resolvers/config_components_resolver.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/declarative/resolvers/http_components_resolver.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/declarative/retrievers/__init__.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/declarative/retrievers/async_retriever.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/declarative/retrievers/retriever.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/declarative/retrievers/simple_retriever.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/declarative/schema/__init__.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/declarative/schema/default_schema_loader.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/declarative/schema/dynamic_schema_loader.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/declarative/schema/inline_schema_loader.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/declarative/schema/json_file_schema_loader.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/declarative/schema/schema_loader.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/declarative/spec/__init__.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/declarative/spec/spec.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/declarative/stream_slicers/__init__.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/declarative/stream_slicers/declarative_partition_generator.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/declarative/stream_slicers/stream_slicer.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/declarative/transformations/__init__.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/declarative/transformations/add_fields.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/declarative/transformations/flatten_fields.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/declarative/transformations/keys_replace_transformation.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/declarative/transformations/keys_to_lower_transformation.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/declarative/transformations/keys_to_snake_transformation.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/declarative/transformations/remove_fields.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/declarative/transformations/transformation.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/declarative/types.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/declarative/yaml_declarative_source.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/embedded/__init__.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/embedded/base_integration.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/embedded/catalog.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/embedded/runner.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/embedded/tools.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/file_based/README.md +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/file_based/__init__.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/file_based/availability_strategy/__init__.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/file_based/availability_strategy/abstract_file_based_availability_strategy.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/file_based/availability_strategy/default_file_based_availability_strategy.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/file_based/config/__init__.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/file_based/config/avro_format.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/file_based/config/csv_format.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/file_based/config/excel_format.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/file_based/config/file_based_stream_config.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/file_based/config/jsonl_format.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/file_based/config/parquet_format.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/file_based/config/unstructured_format.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/file_based/discovery_policy/__init__.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/file_based/discovery_policy/abstract_discovery_policy.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/file_based/discovery_policy/default_discovery_policy.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/file_based/file_types/__init__.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/file_based/file_types/avro_parser.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/file_based/file_types/csv_parser.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/file_based/file_types/excel_parser.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/file_based/file_types/file_transfer.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/file_based/file_types/file_type_parser.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/file_based/file_types/jsonl_parser.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/file_based/file_types/parquet_parser.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/file_based/remote_file.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/file_based/schema_helpers.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/file_based/schema_validation_policies/__init__.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/file_based/schema_validation_policies/abstract_schema_validation_policy.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/file_based/schema_validation_policies/default_schema_validation_policies.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/file_based/stream/__init__.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/file_based/stream/abstract_file_based_stream.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/file_based/stream/concurrent/__init__.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/file_based/stream/concurrent/adapters.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/file_based/stream/concurrent/cursor/__init__.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/file_based/stream/concurrent/cursor/abstract_concurrent_file_based_cursor.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/file_based/stream/concurrent/cursor/file_based_concurrent_cursor.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/file_based/stream/concurrent/cursor/file_based_final_state_cursor.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/file_based/stream/cursor/__init__.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/file_based/stream/cursor/abstract_file_based_cursor.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/file_based/stream/cursor/default_file_based_cursor.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/file_based/types.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/http_config.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/http_logger.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/message/__init__.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/message/repository.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/source.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/streams/__init__.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/streams/availability_strategy.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/streams/call_rate.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/streams/checkpoint/__init__.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/streams/checkpoint/checkpoint_reader.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/streams/checkpoint/cursor.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/streams/checkpoint/per_partition_key_serializer.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/streams/checkpoint/resumable_full_refresh_cursor.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/streams/checkpoint/substream_resumable_full_refresh_cursor.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/streams/concurrent/README.md +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/streams/concurrent/__init__.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/streams/concurrent/abstract_stream.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/streams/concurrent/abstract_stream_facade.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/streams/concurrent/adapters.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/streams/concurrent/availability_strategy.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/streams/concurrent/cursor.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/streams/concurrent/default_stream.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/streams/concurrent/exceptions.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/streams/concurrent/helpers.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/streams/concurrent/partition_enqueuer.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/streams/concurrent/partition_reader.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/streams/concurrent/partitions/__init__.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/streams/concurrent/partitions/partition.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/streams/concurrent/partitions/partition_generator.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/streams/concurrent/partitions/stream_slicer.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/streams/concurrent/partitions/types.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/streams/concurrent/state_converters/__init__.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/streams/concurrent/state_converters/abstract_stream_state_converter.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/streams/concurrent/state_converters/datetime_stream_state_converter.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/streams/core.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/streams/http/__init__.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/streams/http/availability_strategy.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/streams/http/error_handlers/__init__.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/streams/http/error_handlers/backoff_strategy.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/streams/http/error_handlers/default_backoff_strategy.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/streams/http/error_handlers/default_error_mapping.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/streams/http/error_handlers/error_handler.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/streams/http/error_handlers/error_message_parser.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/streams/http/error_handlers/http_status_error_handler.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/streams/http/error_handlers/json_error_message_parser.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/streams/http/error_handlers/response_models.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/streams/http/exceptions.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/streams/http/http.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/streams/http/http_client.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/streams/http/rate_limiting.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/streams/http/requests_native_auth/__init__.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/streams/http/requests_native_auth/abstract_token.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/streams/http/requests_native_auth/token.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/streams/utils/__init__.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/utils/__init__.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/utils/casing.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/utils/record_helper.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/utils/schema_helpers.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/utils/slice_logger.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/utils/transform.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/utils/types.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sql/__init__.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sql/_util/__init__.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sql/_util/hashing.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sql/_util/name_normalizers.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sql/constants.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sql/exceptions.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sql/secrets.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sql/shared/__init__.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sql/shared/catalog_providers.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sql/shared/sql_processor.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sql/types.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/test/__init__.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/test/catalog_builder.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/test/entrypoint_wrapper.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/test/mock_http/__init__.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/test/mock_http/matcher.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/test/mock_http/mocker.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/test/mock_http/request.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/test/mock_http/response.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/test/mock_http/response_builder.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/test/state_builder.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/test/utils/__init__.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/test/utils/data.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/test/utils/http_mocking.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/test/utils/manifest_only_fixtures.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/test/utils/reading.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/utils/__init__.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/utils/airbyte_secrets_utils.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/utils/analytics_message.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/utils/constants.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/utils/datetime_format_inferrer.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/utils/event_timing.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/utils/is_cloud_environment.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/utils/mapping_helpers.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/utils/message_utils.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/utils/oneof_option_config.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/utils/print_buffer.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/utils/schema_inferrer.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/utils/slice_hasher.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/utils/spec_schema_transformations.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/utils/stream_status_utils.py +0 -0
- {airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/utils/traced_exception.py +0 -0
{airbyte_cdk-6.18.0.dev3 → airbyte_cdk-6.18.2}/airbyte_cdk/sources/declarative/auth/oauth.py
RENAMED
@@ -56,8 +56,12 @@ class DeclarativeOauth2Authenticator(AbstractOauth2Authenticator, DeclarativeAut
|
|
56
56
|
token_expiry_is_time_of_expiration: bool = False
|
57
57
|
access_token_name: Union[InterpolatedString, str] = "access_token"
|
58
58
|
access_token_value: Optional[Union[InterpolatedString, str]] = None
|
59
|
+
client_id_name: Union[InterpolatedString, str] = "client_id"
|
60
|
+
client_secret_name: Union[InterpolatedString, str] = "client_secret"
|
59
61
|
expires_in_name: Union[InterpolatedString, str] = "expires_in"
|
62
|
+
refresh_token_name: Union[InterpolatedString, str] = "refresh_token"
|
60
63
|
refresh_request_body: Optional[Mapping[str, Any]] = None
|
64
|
+
grant_type_name: Union[InterpolatedString, str] = "grant_type"
|
61
65
|
grant_type: Union[InterpolatedString, str] = "refresh_token"
|
62
66
|
message_repository: MessageRepository = NoopMessageRepository()
|
63
67
|
|
@@ -69,8 +73,15 @@ class DeclarativeOauth2Authenticator(AbstractOauth2Authenticator, DeclarativeAut
|
|
69
73
|
)
|
70
74
|
else:
|
71
75
|
self._token_refresh_endpoint = None
|
76
|
+
self._client_id_name = InterpolatedString.create(self.client_id_name, parameters=parameters)
|
72
77
|
self._client_id = InterpolatedString.create(self.client_id, parameters=parameters)
|
78
|
+
self._client_secret_name = InterpolatedString.create(
|
79
|
+
self.client_secret_name, parameters=parameters
|
80
|
+
)
|
73
81
|
self._client_secret = InterpolatedString.create(self.client_secret, parameters=parameters)
|
82
|
+
self._refresh_token_name = InterpolatedString.create(
|
83
|
+
self.refresh_token_name, parameters=parameters
|
84
|
+
)
|
74
85
|
if self.refresh_token is not None:
|
75
86
|
self._refresh_token: Optional[InterpolatedString] = InterpolatedString.create(
|
76
87
|
self.refresh_token, parameters=parameters
|
@@ -83,6 +94,9 @@ class DeclarativeOauth2Authenticator(AbstractOauth2Authenticator, DeclarativeAut
|
|
83
94
|
self.expires_in_name = InterpolatedString.create(
|
84
95
|
self.expires_in_name, parameters=parameters
|
85
96
|
)
|
97
|
+
self.grant_type_name = InterpolatedString.create(
|
98
|
+
self.grant_type_name, parameters=parameters
|
99
|
+
)
|
86
100
|
self.grant_type = InterpolatedString.create(self.grant_type, parameters=parameters)
|
87
101
|
self._refresh_request_body = InterpolatedMapping(
|
88
102
|
self.refresh_request_body or {}, parameters=parameters
|
@@ -122,18 +136,27 @@ class DeclarativeOauth2Authenticator(AbstractOauth2Authenticator, DeclarativeAut
|
|
122
136
|
return refresh_token_endpoint
|
123
137
|
return None
|
124
138
|
|
139
|
+
def get_client_id_name(self) -> str:
|
140
|
+
return self._client_id_name.eval(self.config) # type: ignore # eval returns a string in this context
|
141
|
+
|
125
142
|
def get_client_id(self) -> str:
|
126
143
|
client_id: str = self._client_id.eval(self.config)
|
127
144
|
if not client_id:
|
128
145
|
raise ValueError("OAuthAuthenticator was unable to evaluate client_id parameter")
|
129
146
|
return client_id
|
130
147
|
|
148
|
+
def get_client_secret_name(self) -> str:
|
149
|
+
return self._client_secret_name.eval(self.config) # type: ignore # eval returns a string in this context
|
150
|
+
|
131
151
|
def get_client_secret(self) -> str:
|
132
152
|
client_secret: str = self._client_secret.eval(self.config)
|
133
153
|
if not client_secret:
|
134
154
|
raise ValueError("OAuthAuthenticator was unable to evaluate client_secret parameter")
|
135
155
|
return client_secret
|
136
156
|
|
157
|
+
def get_refresh_token_name(self) -> str:
|
158
|
+
return self._refresh_token_name.eval(self.config) # type: ignore # eval returns a string in this context
|
159
|
+
|
137
160
|
def get_refresh_token(self) -> Optional[str]:
|
138
161
|
return None if self._refresh_token is None else str(self._refresh_token.eval(self.config))
|
139
162
|
|
@@ -146,6 +169,9 @@ class DeclarativeOauth2Authenticator(AbstractOauth2Authenticator, DeclarativeAut
|
|
146
169
|
def get_expires_in_name(self) -> str:
|
147
170
|
return self.expires_in_name.eval(self.config) # type: ignore # eval returns a string in this context
|
148
171
|
|
172
|
+
def get_grant_type_name(self) -> str:
|
173
|
+
return self.grant_type_name.eval(self.config) # type: ignore # eval returns a string in this context
|
174
|
+
|
149
175
|
def get_grant_type(self) -> str:
|
150
176
|
return self.grant_type.eval(self.config) # type: ignore # eval returns a string in this context
|
151
177
|
|
@@ -678,7 +678,7 @@ definitions:
|
|
678
678
|
properties:
|
679
679
|
type:
|
680
680
|
type: string
|
681
|
-
enum: [CustomSchemaNormalization]
|
681
|
+
enum: [ CustomSchemaNormalization ]
|
682
682
|
class_name:
|
683
683
|
title: Class Name
|
684
684
|
description: Fully-qualified name of the class that will be implementing the custom normalization. The format is `source_<name>.<package>.<class_name>`.
|
@@ -1047,6 +1047,13 @@ definitions:
|
|
1047
1047
|
type:
|
1048
1048
|
type: string
|
1049
1049
|
enum: [OAuthAuthenticator]
|
1050
|
+
client_id_name:
|
1051
|
+
title: Client ID Property Name
|
1052
|
+
description: The name of the property to use to refresh the `access_token`.
|
1053
|
+
type: string
|
1054
|
+
default: "client_id"
|
1055
|
+
examples:
|
1056
|
+
- custom_app_id
|
1050
1057
|
client_id:
|
1051
1058
|
title: Client ID
|
1052
1059
|
description: The OAuth client ID. Fill it in the user inputs.
|
@@ -1054,6 +1061,13 @@ definitions:
|
|
1054
1061
|
examples:
|
1055
1062
|
- "{{ config['client_id }}"
|
1056
1063
|
- "{{ config['credentials']['client_id }}"
|
1064
|
+
client_secret_name:
|
1065
|
+
title: Client Secret Property Name
|
1066
|
+
description: The name of the property to use to refresh the `access_token`.
|
1067
|
+
type: string
|
1068
|
+
default: "client_secret"
|
1069
|
+
examples:
|
1070
|
+
- custom_app_secret
|
1057
1071
|
client_secret:
|
1058
1072
|
title: Client Secret
|
1059
1073
|
description: The OAuth client secret. Fill it in the user inputs.
|
@@ -1061,6 +1075,13 @@ definitions:
|
|
1061
1075
|
examples:
|
1062
1076
|
- "{{ config['client_secret }}"
|
1063
1077
|
- "{{ config['credentials']['client_secret }}"
|
1078
|
+
refresh_token_name:
|
1079
|
+
title: Refresh Token Property Name
|
1080
|
+
description: The name of the property to use to refresh the `access_token`.
|
1081
|
+
type: string
|
1082
|
+
default: "refresh_token"
|
1083
|
+
examples:
|
1084
|
+
- custom_app_refresh_value
|
1064
1085
|
refresh_token:
|
1065
1086
|
title: Refresh Token
|
1066
1087
|
description: Credential artifact used to get a new access token.
|
@@ -1094,6 +1115,13 @@ definitions:
|
|
1094
1115
|
default: "expires_in"
|
1095
1116
|
examples:
|
1096
1117
|
- expires_in
|
1118
|
+
grant_type_name:
|
1119
|
+
title: Grant Type Property Name
|
1120
|
+
description: The name of the property to use to refresh the `access_token`.
|
1121
|
+
type: string
|
1122
|
+
default: "grant_type"
|
1123
|
+
examples:
|
1124
|
+
- custom_grant_type
|
1097
1125
|
grant_type:
|
1098
1126
|
title: Grant Type
|
1099
1127
|
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.
|
@@ -2204,15 +2232,15 @@ definitions:
|
|
2204
2232
|
Pertains to the fields defined by the connector relating to the OAuth flow.
|
2205
2233
|
|
2206
2234
|
Interpolation capabilities:
|
2207
|
-
- The variables placeholders are declared as `{my_var}`.
|
2208
|
-
- The nested resolution variables like `{{my_nested_var}}` is allowed as well.
|
2235
|
+
- The variables placeholders are declared as `{{my_var}}`.
|
2236
|
+
- The nested resolution variables like `{{ {{my_nested_var}} }}` is allowed as well.
|
2209
2237
|
|
2210
2238
|
- The allowed interpolation context is:
|
2211
|
-
+ base64Encoder - encode to `base64`, {
|
2212
|
-
+ base64Decorer - decode from `base64` encoded string, {
|
2213
|
-
+ urlEncoder - encode the input string to URL-like format, {
|
2214
|
-
+ urlDecorer - decode the input url-encoded string into text format, {urlDecoder:https%3A%2F%2Fairbyte.io}
|
2215
|
-
+ codeChallengeS256 - get the `codeChallenge` encoded value to provide additional data-provider specific authorisation values, {
|
2239
|
+
+ base64Encoder - encode to `base64`, {{ {{my_var_a}}:{{my_var_b}} | base64Encoder }}
|
2240
|
+
+ base64Decorer - decode from `base64` encoded string, {{ {{my_string_variable_or_string_value}} | base64Decoder }}
|
2241
|
+
+ urlEncoder - encode the input string to URL-like format, {{ https://test.host.com/endpoint | urlEncoder}}
|
2242
|
+
+ urlDecorer - decode the input url-encoded string into text format, {{ urlDecoder:https%3A%2F%2Fairbyte.io | urlDecoder}}
|
2243
|
+
+ codeChallengeS256 - get the `codeChallenge` encoded value to provide additional data-provider specific authorisation values, {{ {{state_value}} | codeChallengeS256 }}
|
2216
2244
|
|
2217
2245
|
Examples:
|
2218
2246
|
- The TikTok Marketing DeclarativeOAuth spec:
|
@@ -2221,12 +2249,12 @@ definitions:
|
|
2221
2249
|
"type": "object",
|
2222
2250
|
"additionalProperties": false,
|
2223
2251
|
"properties": {
|
2224
|
-
"consent_url": "https://ads.tiktok.com/marketing_api/auth?{client_id_key}={{
|
2252
|
+
"consent_url": "https://ads.tiktok.com/marketing_api/auth?{{client_id_key}}={{client_id_value}}&{{redirect_uri_key}}={{ {{redirect_uri_value}} | urlEncoder}}&{{state_key}}={{state_value}}",
|
2225
2253
|
"access_token_url": "https://business-api.tiktok.com/open_api/v1.3/oauth2/access_token/",
|
2226
2254
|
"access_token_params": {
|
2227
|
-
"{auth_code_key}": "{{
|
2228
|
-
"{client_id_key}": "{{
|
2229
|
-
"{client_secret_key}": "{{
|
2255
|
+
"{{ auth_code_key }}": "{{ auth_code_value }}",
|
2256
|
+
"{{ client_id_key }}": "{{ client_id_value }}",
|
2257
|
+
"{{ client_secret_key }}": "{{ client_secret_value }}"
|
2230
2258
|
},
|
2231
2259
|
"access_token_headers": {
|
2232
2260
|
"Content-Type": "application/json",
|
@@ -2244,7 +2272,6 @@ definitions:
|
|
2244
2272
|
required:
|
2245
2273
|
- consent_url
|
2246
2274
|
- access_token_url
|
2247
|
-
- extract_output
|
2248
2275
|
properties:
|
2249
2276
|
consent_url:
|
2250
2277
|
title: Consent URL
|
@@ -2253,8 +2280,8 @@ definitions:
|
|
2253
2280
|
The DeclarativeOAuth Specific string URL string template to initiate the authentication.
|
2254
2281
|
The placeholders are replaced during the processing to provide neccessary values.
|
2255
2282
|
examples:
|
2256
|
-
- https://domain.host.com/marketing_api/auth?{client_id_key}={{
|
2257
|
-
- https://endpoint.host.com/oauth2/authorize?{client_id_key}={{
|
2283
|
+
- https://domain.host.com/marketing_api/auth?{{client_id_key}}={{client_id_value}}&{{redirect_uri_key}}={{{{redirect_uri_value}} | urlEncoder}}&{{state_key}}={{state_value}}
|
2284
|
+
- https://endpoint.host.com/oauth2/authorize?{{client_id_key}}={{client_id_value}}&{{redirect_uri_key}}={{{{redirect_uri_value}} | urlEncoder}}&{{scope_key}}={{{{scope_value}} | urlEncoder}}&{{state_key}}={{state_value}}&subdomain={{subdomain}}
|
2258
2285
|
scope:
|
2259
2286
|
title: Scopes
|
2260
2287
|
type: string
|
@@ -2269,7 +2296,7 @@ definitions:
|
|
2269
2296
|
The DeclarativeOAuth Specific URL templated string to obtain the `access_token`, `refresh_token` etc.
|
2270
2297
|
The placeholders are replaced during the processing to provide neccessary values.
|
2271
2298
|
examples:
|
2272
|
-
- https://auth.host.com/oauth2/token?{client_id_key}={{
|
2299
|
+
- https://auth.host.com/oauth2/token?{{client_id_key}}={{client_id_value}}&{{client_secret_key}}={{client_secret_value}}&{{auth_code_key}}={{auth_code_value}}&{{redirect_uri_key}}={{{{redirect_uri_value}} | urlEncoder}}
|
2273
2300
|
access_token_headers:
|
2274
2301
|
title: Access Token Headers
|
2275
2302
|
type: object
|
@@ -2278,7 +2305,7 @@ definitions:
|
|
2278
2305
|
The DeclarativeOAuth Specific optional headers to inject while exchanging the `auth_code` to `access_token` during `completeOAuthFlow` step.
|
2279
2306
|
examples:
|
2280
2307
|
- {
|
2281
|
-
"Authorization": "Basic {
|
2308
|
+
"Authorization": "Basic {{ {{ client_id_value }}:{{ client_secret_value }} | base64Encoder }}",
|
2282
2309
|
}
|
2283
2310
|
access_token_params:
|
2284
2311
|
title: Access Token Query Params (Json Encoded)
|
@@ -2289,9 +2316,9 @@ definitions:
|
|
2289
2316
|
When this property is provided, the query params will be encoded as `Json` and included in the outgoing API request.
|
2290
2317
|
examples:
|
2291
2318
|
- {
|
2292
|
-
"{auth_code_key}": "{{
|
2293
|
-
"{client_id_key}": "{{
|
2294
|
-
"{client_secret_key}": "{{
|
2319
|
+
"{{ auth_code_key }}": "{{ auth_code_value }}",
|
2320
|
+
"{{ client_id_key }}": "{{ client_id_value }}",
|
2321
|
+
"{{ client_secret_key }}": "{{ client_secret_value }}",
|
2295
2322
|
}
|
2296
2323
|
extract_output:
|
2297
2324
|
title: Extract Output
|
@@ -2859,7 +2886,6 @@ definitions:
|
|
2859
2886
|
parser:
|
2860
2887
|
anyOf:
|
2861
2888
|
- "$ref": "#/definitions/GzipParser"
|
2862
|
-
- "$ref": "#/definitions/JsonParser"
|
2863
2889
|
- "$ref": "#/definitions/JsonLineParser"
|
2864
2890
|
- "$ref": "#/definitions/CsvParser"
|
2865
2891
|
# PARSERS
|
@@ -2876,21 +2902,6 @@ definitions:
|
|
2876
2902
|
anyOf:
|
2877
2903
|
- "$ref": "#/definitions/JsonLineParser"
|
2878
2904
|
- "$ref": "#/definitions/CsvParser"
|
2879
|
-
- "$ref": "#/definitions/JsonParser"
|
2880
|
-
JsonParser:
|
2881
|
-
title: JsonParser
|
2882
|
-
description: Parser used for parsing str, bytes, or bytearray data and returning data in a dictionary format.
|
2883
|
-
type: object
|
2884
|
-
additionalProperties: true
|
2885
|
-
required:
|
2886
|
-
- type
|
2887
|
-
properties:
|
2888
|
-
type:
|
2889
|
-
type: string
|
2890
|
-
enum: [JsonParser]
|
2891
|
-
encoding:
|
2892
|
-
type: string
|
2893
|
-
default: utf-8
|
2894
2905
|
JsonLineParser:
|
2895
2906
|
type: object
|
2896
2907
|
required:
|
@@ -2993,6 +3004,11 @@ definitions:
|
|
2993
3004
|
anyOf:
|
2994
3005
|
- "$ref": "#/definitions/CustomRequester"
|
2995
3006
|
- "$ref": "#/definitions/HttpRequester"
|
3007
|
+
url_requester:
|
3008
|
+
description: Requester component that describes how to prepare HTTP requests to send to the source API to extract the url from polling response by the completed async job.
|
3009
|
+
anyOf:
|
3010
|
+
- "$ref": "#/definitions/CustomRequester"
|
3011
|
+
- "$ref": "#/definitions/HttpRequester"
|
2996
3012
|
download_requester:
|
2997
3013
|
description: Requester component that describes how to prepare HTTP requests to send to the source API to download the data provided by the completed async job.
|
2998
3014
|
anyOf:
|
@@ -7,12 +7,9 @@ from dataclasses import dataclass
|
|
7
7
|
from io import BufferedIOBase, TextIOWrapper
|
8
8
|
from typing import Any, Generator, MutableMapping, Optional
|
9
9
|
|
10
|
-
import orjson
|
11
10
|
import requests
|
12
11
|
|
13
|
-
from airbyte_cdk.models import FailureType
|
14
12
|
from airbyte_cdk.sources.declarative.decoders.decoder import Decoder
|
15
|
-
from airbyte_cdk.utils import AirbyteTracedException
|
16
13
|
|
17
14
|
logger = logging.getLogger("airbyte")
|
18
15
|
|
@@ -45,46 +42,6 @@ class GzipParser(Parser):
|
|
45
42
|
yield from self.inner_parser.parse(gzipobj)
|
46
43
|
|
47
44
|
|
48
|
-
@dataclass
|
49
|
-
class JsonParser(Parser):
|
50
|
-
encoding: str = "utf-8"
|
51
|
-
|
52
|
-
def parse(self, data: BufferedIOBase) -> Generator[MutableMapping[str, Any], None, None]:
|
53
|
-
"""
|
54
|
-
Attempts to deserialize data using orjson library. As an extra layer of safety we fallback on the json library to deserialize the data.
|
55
|
-
"""
|
56
|
-
raw_data = data.read()
|
57
|
-
body_json = self._parse_orjson(raw_data) or self._parse_json(raw_data)
|
58
|
-
|
59
|
-
if body_json is None:
|
60
|
-
raise AirbyteTracedException(
|
61
|
-
message="Response JSON data failed to be parsed. See logs for more information.",
|
62
|
-
internal_message=f"Response JSON data failed to be parsed.",
|
63
|
-
failure_type=FailureType.system_error,
|
64
|
-
)
|
65
|
-
|
66
|
-
if isinstance(body_json, list):
|
67
|
-
yield from body_json
|
68
|
-
else:
|
69
|
-
yield from [body_json]
|
70
|
-
|
71
|
-
def _parse_orjson(self, raw_data: bytes) -> Optional[Any]:
|
72
|
-
try:
|
73
|
-
return orjson.loads(raw_data.decode(self.encoding))
|
74
|
-
except Exception as exc:
|
75
|
-
logger.debug(
|
76
|
-
f"Failed to parse JSON data using orjson library. Falling back to json library. {exc}"
|
77
|
-
)
|
78
|
-
return None
|
79
|
-
|
80
|
-
def _parse_json(self, raw_data: bytes) -> Optional[Any]:
|
81
|
-
try:
|
82
|
-
return json.loads(raw_data.decode(self.encoding))
|
83
|
-
except Exception as exc:
|
84
|
-
logger.error(f"Failed to parse JSON data using json library. {exc}")
|
85
|
-
return None
|
86
|
-
|
87
|
-
|
88
45
|
@dataclass
|
89
46
|
class JsonLineParser(Parser):
|
90
47
|
encoding: Optional[str] = "utf-8"
|
@@ -481,12 +481,24 @@ class RefreshTokenUpdater(BaseModel):
|
|
481
481
|
|
482
482
|
class OAuthAuthenticator(BaseModel):
|
483
483
|
type: Literal["OAuthAuthenticator"]
|
484
|
+
client_id_name: Optional[str] = Field(
|
485
|
+
"client_id",
|
486
|
+
description="The name of the property to use to refresh the `access_token`.",
|
487
|
+
examples=["custom_app_id"],
|
488
|
+
title="Client ID Property Name",
|
489
|
+
)
|
484
490
|
client_id: str = Field(
|
485
491
|
...,
|
486
492
|
description="The OAuth client ID. Fill it in the user inputs.",
|
487
493
|
examples=["{{ config['client_id }}", "{{ config['credentials']['client_id }}"],
|
488
494
|
title="Client ID",
|
489
495
|
)
|
496
|
+
client_secret_name: Optional[str] = Field(
|
497
|
+
"client_secret",
|
498
|
+
description="The name of the property to use to refresh the `access_token`.",
|
499
|
+
examples=["custom_app_secret"],
|
500
|
+
title="Client Secret Property Name",
|
501
|
+
)
|
490
502
|
client_secret: str = Field(
|
491
503
|
...,
|
492
504
|
description="The OAuth client secret. Fill it in the user inputs.",
|
@@ -496,6 +508,12 @@ class OAuthAuthenticator(BaseModel):
|
|
496
508
|
],
|
497
509
|
title="Client Secret",
|
498
510
|
)
|
511
|
+
refresh_token_name: Optional[str] = Field(
|
512
|
+
"refresh_token",
|
513
|
+
description="The name of the property to use to refresh the `access_token`.",
|
514
|
+
examples=["custom_app_refresh_value"],
|
515
|
+
title="Refresh Token Property Name",
|
516
|
+
)
|
499
517
|
refresh_token: Optional[str] = Field(
|
500
518
|
None,
|
501
519
|
description="Credential artifact used to get a new access token.",
|
@@ -529,6 +547,12 @@ class OAuthAuthenticator(BaseModel):
|
|
529
547
|
examples=["expires_in"],
|
530
548
|
title="Token Expiry Property Name",
|
531
549
|
)
|
550
|
+
grant_type_name: Optional[str] = Field(
|
551
|
+
"grant_type",
|
552
|
+
description="The name of the property to use to refresh the `access_token`.",
|
553
|
+
examples=["custom_grant_type"],
|
554
|
+
title="Grant Type Property Name",
|
555
|
+
)
|
532
556
|
grant_type: Optional[str] = Field(
|
533
557
|
"refresh_token",
|
534
558
|
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.",
|
@@ -859,8 +883,8 @@ class OauthConnectorInputSpecification(BaseModel):
|
|
859
883
|
...,
|
860
884
|
description="The DeclarativeOAuth Specific string URL string template to initiate the authentication.\nThe placeholders are replaced during the processing to provide neccessary values.",
|
861
885
|
examples=[
|
862
|
-
"https://domain.host.com/marketing_api/auth?{client_id_key}={{
|
863
|
-
"https://endpoint.host.com/oauth2/authorize?{client_id_key}={{
|
886
|
+
"https://domain.host.com/marketing_api/auth?{{client_id_key}}={{client_id_value}}&{{redirect_uri_key}}={{{{redirect_uri_value}} | urlEncoder}}&{{state_key}}={{state_value}}",
|
887
|
+
"https://endpoint.host.com/oauth2/authorize?{{client_id_key}}={{client_id_value}}&{{redirect_uri_key}}={{{{redirect_uri_value}} | urlEncoder}}&{{scope_key}}={{{{scope_value}} | urlEncoder}}&{{state_key}}={{state_value}}&subdomain={{subdomain}}",
|
864
888
|
],
|
865
889
|
title="Consent URL",
|
866
890
|
)
|
@@ -874,14 +898,18 @@ class OauthConnectorInputSpecification(BaseModel):
|
|
874
898
|
...,
|
875
899
|
description="The DeclarativeOAuth Specific URL templated string to obtain the `access_token`, `refresh_token` etc.\nThe placeholders are replaced during the processing to provide neccessary values.",
|
876
900
|
examples=[
|
877
|
-
"https://auth.host.com/oauth2/token?{client_id_key}={{
|
901
|
+
"https://auth.host.com/oauth2/token?{{client_id_key}}={{client_id_value}}&{{client_secret_key}}={{client_secret_value}}&{{auth_code_key}}={{auth_code_value}}&{{redirect_uri_key}}={{{{redirect_uri_value}} | urlEncoder}}"
|
878
902
|
],
|
879
903
|
title="Access Token URL",
|
880
904
|
)
|
881
905
|
access_token_headers: Optional[Dict[str, Any]] = Field(
|
882
906
|
None,
|
883
907
|
description="The DeclarativeOAuth Specific optional headers to inject while exchanging the `auth_code` to `access_token` during `completeOAuthFlow` step.",
|
884
|
-
examples=[
|
908
|
+
examples=[
|
909
|
+
{
|
910
|
+
"Authorization": "Basic {{ {{ client_id_value }}:{{ client_secret_value }} | base64Encoder }}"
|
911
|
+
}
|
912
|
+
],
|
885
913
|
title="Access Token Headers",
|
886
914
|
)
|
887
915
|
access_token_params: Optional[Dict[str, Any]] = Field(
|
@@ -889,15 +917,15 @@ class OauthConnectorInputSpecification(BaseModel):
|
|
889
917
|
description="The DeclarativeOAuth Specific optional query parameters to inject while exchanging the `auth_code` to `access_token` during `completeOAuthFlow` step.\nWhen this property is provided, the query params will be encoded as `Json` and included in the outgoing API request.",
|
890
918
|
examples=[
|
891
919
|
{
|
892
|
-
"{auth_code_key}": "{{
|
893
|
-
"{client_id_key}": "{{
|
894
|
-
"{client_secret_key}": "{{
|
920
|
+
"{{ auth_code_key }}": "{{ auth_code_value }}",
|
921
|
+
"{{ client_id_key }}": "{{ client_id_value }}",
|
922
|
+
"{{ client_secret_key }}": "{{ client_secret_value }}",
|
895
923
|
}
|
896
924
|
],
|
897
925
|
title="Access Token Query Params (Json Encoded)",
|
898
926
|
)
|
899
|
-
extract_output: List[str] = Field(
|
900
|
-
|
927
|
+
extract_output: Optional[List[str]] = Field(
|
928
|
+
None,
|
901
929
|
description="The DeclarativeOAuth Specific list of strings to indicate which keys should be extracted and returned back to the input config.",
|
902
930
|
examples=[["access_token", "refresh_token", "other_field"]],
|
903
931
|
title="Extract Output",
|
@@ -966,7 +994,7 @@ class OAuthConfigSpecification(BaseModel):
|
|
966
994
|
)
|
967
995
|
oauth_connector_input_specification: Optional[OauthConnectorInputSpecification] = Field(
|
968
996
|
None,
|
969
|
-
description='The DeclarativeOAuth specific blob.\nPertains to the fields defined by the connector relating to the OAuth flow.\n\nInterpolation capabilities:\n- The variables placeholders are declared as `{my_var}`.\n- The nested resolution variables like `{{my_nested_var}}` is allowed as well.\n\n- The allowed interpolation context is:\n + base64Encoder - encode to `base64`, {
|
997
|
+
description='The DeclarativeOAuth specific blob.\nPertains to the fields defined by the connector relating to the OAuth flow.\n\nInterpolation capabilities:\n- The variables placeholders are declared as `{{my_var}}`.\n- The nested resolution variables like `{{ {{my_nested_var}} }}` is allowed as well.\n\n- The allowed interpolation context is:\n + base64Encoder - encode to `base64`, {{ {{my_var_a}}:{{my_var_b}} | base64Encoder }}\n + base64Decorer - decode from `base64` encoded string, {{ {{my_string_variable_or_string_value}} | base64Decoder }}\n + urlEncoder - encode the input string to URL-like format, {{ https://test.host.com/endpoint | urlEncoder}}\n + urlDecorer - decode the input url-encoded string into text format, {{ urlDecoder:https%3A%2F%2Fairbyte.io | urlDecoder}}\n + codeChallengeS256 - get the `codeChallenge` encoded value to provide additional data-provider specific authorisation values, {{ {{state_value}} | codeChallengeS256 }}\n\nExamples:\n - The TikTok Marketing DeclarativeOAuth spec:\n {\n "oauth_connector_input_specification": {\n "type": "object",\n "additionalProperties": false,\n "properties": {\n "consent_url": "https://ads.tiktok.com/marketing_api/auth?{{client_id_key}}={{client_id_value}}&{{redirect_uri_key}}={{ {{redirect_uri_value}} | urlEncoder}}&{{state_key}}={{state_value}}",\n "access_token_url": "https://business-api.tiktok.com/open_api/v1.3/oauth2/access_token/",\n "access_token_params": {\n "{{ auth_code_key }}": "{{ auth_code_value }}",\n "{{ client_id_key }}": "{{ client_id_value }}",\n "{{ client_secret_key }}": "{{ client_secret_value }}"\n },\n "access_token_headers": {\n "Content-Type": "application/json",\n "Accept": "application/json"\n },\n "extract_output": ["data.access_token"],\n "client_id_key": "app_id",\n "client_secret_key": "secret",\n "auth_code_key": "auth_code"\n }\n }\n }',
|
970
998
|
title="DeclarativeOAuth Connector Specification",
|
971
999
|
)
|
972
1000
|
complete_oauth_output_specification: Optional[Dict[str, Any]] = Field(
|
@@ -1173,14 +1201,6 @@ class LegacySessionTokenAuthenticator(BaseModel):
|
|
1173
1201
|
parameters: Optional[Dict[str, Any]] = Field(None, alias="$parameters")
|
1174
1202
|
|
1175
1203
|
|
1176
|
-
class JsonParser(BaseModel):
|
1177
|
-
class Config:
|
1178
|
-
extra = Extra.allow
|
1179
|
-
|
1180
|
-
type: Literal["JsonParser"]
|
1181
|
-
encoding: Optional[str] = "utf-8"
|
1182
|
-
|
1183
|
-
|
1184
1204
|
class JsonLineParser(BaseModel):
|
1185
1205
|
type: Literal["JsonLineParser"]
|
1186
1206
|
encoding: Optional[str] = "utf-8"
|
@@ -1579,7 +1599,7 @@ class RecordSelector(BaseModel):
|
|
1579
1599
|
|
1580
1600
|
class GzipParser(BaseModel):
|
1581
1601
|
type: Literal["GzipParser"]
|
1582
|
-
inner_parser: Union[JsonLineParser, CsvParser
|
1602
|
+
inner_parser: Union[JsonLineParser, CsvParser]
|
1583
1603
|
|
1584
1604
|
|
1585
1605
|
class Spec(BaseModel):
|
@@ -1614,7 +1634,7 @@ class CompositeErrorHandler(BaseModel):
|
|
1614
1634
|
|
1615
1635
|
class CompositeRawDecoder(BaseModel):
|
1616
1636
|
type: Literal["CompositeRawDecoder"]
|
1617
|
-
parser: Union[GzipParser,
|
1637
|
+
parser: Union[GzipParser, JsonLineParser, CsvParser]
|
1618
1638
|
|
1619
1639
|
|
1620
1640
|
class DeclarativeSource1(BaseModel):
|
@@ -2058,6 +2078,10 @@ class AsyncRetriever(BaseModel):
|
|
2058
2078
|
...,
|
2059
2079
|
description="Requester component that describes how to prepare HTTP requests to send to the source API to fetch the status of the running async job.",
|
2060
2080
|
)
|
2081
|
+
url_requester: Optional[Union[CustomRequester, HttpRequester]] = Field(
|
2082
|
+
None,
|
2083
|
+
description="Requester component that describes how to prepare HTTP requests to send to the source API to extract the url from polling response by the completed async job.",
|
2084
|
+
)
|
2061
2085
|
download_requester: Union[CustomRequester, HttpRequester] = Field(
|
2062
2086
|
...,
|
2063
2087
|
description="Requester component that describes how to prepare HTTP requests to send to the source API to download the data provided by the completed async job.",
|