airbyte-cdk 6.18.0.dev2__tar.gz → 6.18.1__tar.gz
Sign up to get free protection for your applications and to get access to all the features.
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/PKG-INFO +1 -1
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/declarative/auth/oauth.py +26 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/declarative/declarative_component_schema.yaml +52 -36
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/declarative/decoders/composite_raw_decoder.py +0 -44
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/declarative/models/declarative_component_schema.py +44 -20
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/declarative/parsers/model_to_component_factory.py +25 -11
- airbyte_cdk-6.18.1/airbyte_cdk/sources/declarative/requesters/README.md +57 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/declarative/requesters/http_job_repository.py +33 -4
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/streams/http/requests_native_auth/abstract_oauth.py +20 -4
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/streams/http/requests_native_auth/oauth.py +34 -4
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/types.py +3 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/pyproject.toml +1 -1
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/LICENSE.txt +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/README.md +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/__init__.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/cli/__init__.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/cli/source_declarative_manifest/__init__.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/cli/source_declarative_manifest/_run.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/cli/source_declarative_manifest/spec.json +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/config_observation.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/connector.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/connector_builder/README.md +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/connector_builder/__init__.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/connector_builder/connector_builder_handler.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/connector_builder/main.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/connector_builder/message_grouper.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/connector_builder/models.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/destinations/__init__.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/destinations/destination.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/destinations/vector_db_based/README.md +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/destinations/vector_db_based/__init__.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/destinations/vector_db_based/config.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/destinations/vector_db_based/document_processor.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/destinations/vector_db_based/embedder.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/destinations/vector_db_based/indexer.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/destinations/vector_db_based/test_utils.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/destinations/vector_db_based/utils.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/destinations/vector_db_based/writer.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/entrypoint.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/exception_handler.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/logger.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/models/__init__.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/models/airbyte_protocol.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/models/airbyte_protocol_serializers.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/models/file_transfer_record_message.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/models/well_known_types.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/py.typed +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/__init__.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/abstract_source.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/concurrent_source/__init__.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/concurrent_source/concurrent_read_processor.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/concurrent_source/concurrent_source.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/concurrent_source/concurrent_source_adapter.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/concurrent_source/partition_generation_completed_sentinel.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/concurrent_source/stream_thread_exception.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/concurrent_source/thread_pool_manager.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/config.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/connector_state_manager.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/declarative/__init__.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/declarative/async_job/__init__.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/declarative/async_job/job.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/declarative/async_job/job_orchestrator.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/declarative/async_job/job_tracker.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/declarative/async_job/repository.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/declarative/async_job/status.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/declarative/async_job/timer.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/declarative/auth/__init__.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/declarative/auth/declarative_authenticator.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/declarative/auth/jwt.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/declarative/auth/selective_authenticator.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/declarative/auth/token.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/declarative/auth/token_provider.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/declarative/checks/__init__.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/declarative/checks/check_stream.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/declarative/checks/connection_checker.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/declarative/concurrency_level/__init__.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/declarative/concurrency_level/concurrency_level.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/declarative/concurrent_declarative_source.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/declarative/datetime/__init__.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/declarative/datetime/datetime_parser.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/declarative/datetime/min_max_datetime.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/declarative/declarative_source.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/declarative/declarative_stream.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/declarative/decoders/__init__.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/declarative/decoders/decoder.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/declarative/decoders/json_decoder.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/declarative/decoders/noop_decoder.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/declarative/decoders/pagination_decoder_decorator.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/declarative/decoders/xml_decoder.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/declarative/exceptions.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/declarative/extractors/__init__.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/declarative/extractors/dpath_extractor.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/declarative/extractors/http_selector.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/declarative/extractors/record_extractor.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/declarative/extractors/record_filter.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/declarative/extractors/record_selector.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/declarative/extractors/response_to_file_extractor.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/declarative/extractors/type_transformer.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/declarative/incremental/__init__.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/declarative/incremental/datetime_based_cursor.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/declarative/incremental/declarative_cursor.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/declarative/incremental/global_substream_cursor.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/declarative/incremental/per_partition_cursor.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/declarative/incremental/per_partition_with_global.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/declarative/incremental/resumable_full_refresh_cursor.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/declarative/interpolation/__init__.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/declarative/interpolation/filters.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/declarative/interpolation/interpolated_boolean.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/declarative/interpolation/interpolated_mapping.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/declarative/interpolation/interpolated_nested_mapping.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/declarative/interpolation/interpolated_string.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/declarative/interpolation/interpolation.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/declarative/interpolation/jinja.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/declarative/interpolation/macros.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/declarative/manifest_declarative_source.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/declarative/migrations/__init__.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/declarative/migrations/legacy_to_per_partition_state_migration.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/declarative/migrations/state_migration.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/declarative/models/__init__.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/declarative/parsers/__init__.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/declarative/parsers/custom_exceptions.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/declarative/parsers/manifest_component_transformer.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/declarative/parsers/manifest_reference_resolver.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/declarative/partition_routers/__init__.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/declarative/partition_routers/async_job_partition_router.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/declarative/partition_routers/cartesian_product_stream_slicer.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/declarative/partition_routers/list_partition_router.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/declarative/partition_routers/partition_router.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/declarative/partition_routers/single_partition_router.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/declarative/partition_routers/substream_partition_router.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/declarative/requesters/__init__.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/declarative/requesters/error_handlers/__init__.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/__init__.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/constant_backoff_strategy.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/exponential_backoff_strategy.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/header_helper.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/wait_time_from_header_backoff_strategy.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/wait_until_time_from_header_backoff_strategy.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategy.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/declarative/requesters/error_handlers/composite_error_handler.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/declarative/requesters/error_handlers/default_error_handler.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/declarative/requesters/error_handlers/default_http_response_filter.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/declarative/requesters/error_handlers/error_handler.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/declarative/requesters/error_handlers/http_response_filter.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/declarative/requesters/http_requester.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/declarative/requesters/paginators/__init__.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/declarative/requesters/paginators/default_paginator.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/declarative/requesters/paginators/no_pagination.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/declarative/requesters/paginators/paginator.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/__init__.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/cursor_pagination_strategy.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/offset_increment.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/page_increment.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/pagination_strategy.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/stop_condition.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/declarative/requesters/request_option.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/declarative/requesters/request_options/__init__.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/declarative/requesters/request_options/datetime_based_request_options_provider.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/declarative/requesters/request_options/default_request_options_provider.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/declarative/requesters/request_options/interpolated_nested_request_input_provider.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/declarative/requesters/request_options/interpolated_request_input_provider.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/declarative/requesters/request_options/interpolated_request_options_provider.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/declarative/requesters/request_options/request_options_provider.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/declarative/requesters/request_path.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/declarative/requesters/requester.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/declarative/resolvers/__init__.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/declarative/resolvers/components_resolver.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/declarative/resolvers/config_components_resolver.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/declarative/resolvers/http_components_resolver.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/declarative/retrievers/__init__.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/declarative/retrievers/async_retriever.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/declarative/retrievers/retriever.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/declarative/retrievers/simple_retriever.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/declarative/schema/__init__.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/declarative/schema/default_schema_loader.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/declarative/schema/dynamic_schema_loader.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/declarative/schema/inline_schema_loader.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/declarative/schema/json_file_schema_loader.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/declarative/schema/schema_loader.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/declarative/spec/__init__.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/declarative/spec/spec.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/declarative/stream_slicers/__init__.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/declarative/stream_slicers/declarative_partition_generator.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/declarative/stream_slicers/stream_slicer.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/declarative/transformations/__init__.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/declarative/transformations/add_fields.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/declarative/transformations/flatten_fields.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/declarative/transformations/keys_replace_transformation.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/declarative/transformations/keys_to_lower_transformation.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/declarative/transformations/keys_to_snake_transformation.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/declarative/transformations/remove_fields.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/declarative/transformations/transformation.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/declarative/types.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/declarative/yaml_declarative_source.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/embedded/__init__.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/embedded/base_integration.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/embedded/catalog.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/embedded/runner.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/embedded/tools.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/file_based/README.md +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/file_based/__init__.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/file_based/availability_strategy/__init__.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/file_based/availability_strategy/abstract_file_based_availability_strategy.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/file_based/availability_strategy/default_file_based_availability_strategy.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/file_based/config/__init__.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/file_based/config/abstract_file_based_spec.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/file_based/config/avro_format.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/file_based/config/csv_format.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/file_based/config/excel_format.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/file_based/config/file_based_stream_config.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/file_based/config/jsonl_format.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/file_based/config/parquet_format.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/file_based/config/unstructured_format.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/file_based/discovery_policy/__init__.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/file_based/discovery_policy/abstract_discovery_policy.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/file_based/discovery_policy/default_discovery_policy.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/file_based/exceptions.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/file_based/file_based_source.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/file_based/file_based_stream_reader.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/file_based/file_types/__init__.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/file_based/file_types/avro_parser.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/file_based/file_types/csv_parser.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/file_based/file_types/excel_parser.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/file_based/file_types/file_transfer.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/file_based/file_types/file_type_parser.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/file_based/file_types/jsonl_parser.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/file_based/file_types/parquet_parser.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/file_based/file_types/unstructured_parser.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/file_based/remote_file.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/file_based/schema_helpers.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/file_based/schema_validation_policies/__init__.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/file_based/schema_validation_policies/abstract_schema_validation_policy.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/file_based/schema_validation_policies/default_schema_validation_policies.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/file_based/stream/__init__.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/file_based/stream/abstract_file_based_stream.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/file_based/stream/concurrent/__init__.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/file_based/stream/concurrent/adapters.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/file_based/stream/concurrent/cursor/__init__.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/file_based/stream/concurrent/cursor/abstract_concurrent_file_based_cursor.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/file_based/stream/concurrent/cursor/file_based_concurrent_cursor.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/file_based/stream/concurrent/cursor/file_based_final_state_cursor.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/file_based/stream/cursor/__init__.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/file_based/stream/cursor/abstract_file_based_cursor.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/file_based/stream/cursor/default_file_based_cursor.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/file_based/stream/default_file_based_stream.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/file_based/types.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/http_config.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/http_logger.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/message/__init__.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/message/repository.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/source.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/streams/__init__.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/streams/availability_strategy.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/streams/call_rate.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/streams/checkpoint/__init__.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/streams/checkpoint/checkpoint_reader.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/streams/checkpoint/cursor.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/streams/checkpoint/per_partition_key_serializer.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/streams/checkpoint/resumable_full_refresh_cursor.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/streams/checkpoint/substream_resumable_full_refresh_cursor.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/streams/concurrent/README.md +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/streams/concurrent/__init__.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/streams/concurrent/abstract_stream.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/streams/concurrent/abstract_stream_facade.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/streams/concurrent/adapters.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/streams/concurrent/availability_strategy.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/streams/concurrent/cursor.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/streams/concurrent/default_stream.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/streams/concurrent/exceptions.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/streams/concurrent/helpers.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/streams/concurrent/partition_enqueuer.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/streams/concurrent/partition_reader.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/streams/concurrent/partitions/__init__.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/streams/concurrent/partitions/partition.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/streams/concurrent/partitions/partition_generator.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/streams/concurrent/partitions/stream_slicer.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/streams/concurrent/partitions/types.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/streams/concurrent/state_converters/__init__.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/streams/concurrent/state_converters/abstract_stream_state_converter.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/streams/concurrent/state_converters/datetime_stream_state_converter.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/streams/core.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/streams/http/__init__.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/streams/http/availability_strategy.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/streams/http/error_handlers/__init__.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/streams/http/error_handlers/backoff_strategy.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/streams/http/error_handlers/default_backoff_strategy.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/streams/http/error_handlers/default_error_mapping.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/streams/http/error_handlers/error_handler.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/streams/http/error_handlers/error_message_parser.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/streams/http/error_handlers/http_status_error_handler.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/streams/http/error_handlers/json_error_message_parser.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/streams/http/error_handlers/response_models.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/streams/http/exceptions.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/streams/http/http.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/streams/http/http_client.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/streams/http/rate_limiting.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/streams/http/requests_native_auth/__init__.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/streams/http/requests_native_auth/abstract_token.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/streams/http/requests_native_auth/token.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/streams/utils/__init__.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/utils/__init__.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/utils/casing.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/utils/record_helper.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/utils/schema_helpers.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/utils/slice_logger.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/utils/transform.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sources/utils/types.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sql/__init__.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sql/_util/__init__.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sql/_util/hashing.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sql/_util/name_normalizers.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sql/constants.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sql/exceptions.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sql/secrets.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sql/shared/__init__.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sql/shared/catalog_providers.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sql/shared/sql_processor.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/sql/types.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/test/__init__.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/test/catalog_builder.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/test/entrypoint_wrapper.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/test/mock_http/__init__.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/test/mock_http/matcher.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/test/mock_http/mocker.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/test/mock_http/request.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/test/mock_http/response.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/test/mock_http/response_builder.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/test/state_builder.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/test/utils/__init__.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/test/utils/data.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/test/utils/http_mocking.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/test/utils/manifest_only_fixtures.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/test/utils/reading.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/utils/__init__.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/utils/airbyte_secrets_utils.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/utils/analytics_message.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/utils/constants.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/utils/datetime_format_inferrer.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/utils/event_timing.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/utils/is_cloud_environment.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/utils/mapping_helpers.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/utils/message_utils.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/utils/oneof_option_config.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/utils/print_buffer.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/utils/schema_inferrer.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/utils/slice_hasher.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/utils/spec_schema_transformations.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/utils/stream_status_utils.py +0 -0
- {airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/airbyte_cdk/utils/traced_exception.py +0 -0
{airbyte_cdk-6.18.0.dev2 → airbyte_cdk-6.18.1}/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,47 +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
|
-
|
58
|
-
body_json = self._parse_orjson(raw_data) or self._parse_json(raw_data)
|
59
|
-
|
60
|
-
if body_json is None:
|
61
|
-
raise AirbyteTracedException(
|
62
|
-
message="Response JSON data failed to be parsed. See logs for more information.",
|
63
|
-
internal_message=f"Response JSON data failed to be parsed.",
|
64
|
-
failure_type=FailureType.system_error,
|
65
|
-
)
|
66
|
-
|
67
|
-
if isinstance(body_json, list):
|
68
|
-
yield from body_json
|
69
|
-
else:
|
70
|
-
yield from [body_json]
|
71
|
-
|
72
|
-
def _parse_orjson(self, raw_data: bytes) -> Optional[Any]:
|
73
|
-
try:
|
74
|
-
return orjson.loads(raw_data.decode(self.encoding))
|
75
|
-
except Exception as exc:
|
76
|
-
logger.warning(
|
77
|
-
f"Failed to parse JSON data using orjson library. Falling back to json library. {exc=}"
|
78
|
-
)
|
79
|
-
return None
|
80
|
-
|
81
|
-
def _parse_json(self, raw_data: bytes) -> Optional[Any]:
|
82
|
-
try:
|
83
|
-
return json.loads(raw_data.decode(self.encoding))
|
84
|
-
except Exception as exc:
|
85
|
-
logger.error(f"Failed to parse JSON data using json library. {exc=}")
|
86
|
-
return None
|
87
|
-
|
88
|
-
|
89
45
|
@dataclass
|
90
46
|
class JsonLineParser(Parser):
|
91
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.",
|
@@ -72,7 +72,6 @@ from airbyte_cdk.sources.declarative.decoders.composite_raw_decoder import (
|
|
72
72
|
CsvParser,
|
73
73
|
GzipParser,
|
74
74
|
JsonLineParser,
|
75
|
-
JsonParser,
|
76
75
|
)
|
77
76
|
from airbyte_cdk.sources.declarative.extractors import (
|
78
77
|
DpathExtractor,
|
@@ -248,9 +247,6 @@ from airbyte_cdk.sources.declarative.models.declarative_component_schema import
|
|
248
247
|
from airbyte_cdk.sources.declarative.models.declarative_component_schema import (
|
249
248
|
JsonLineParser as JsonLineParserModel,
|
250
249
|
)
|
251
|
-
from airbyte_cdk.sources.declarative.models.declarative_component_schema import (
|
252
|
-
JsonParser as JsonParserModel,
|
253
|
-
)
|
254
250
|
from airbyte_cdk.sources.declarative.models.declarative_component_schema import (
|
255
251
|
JwtAuthenticator as JwtAuthenticatorModel,
|
256
252
|
)
|
@@ -526,7 +522,6 @@ class ModelToComponentFactory:
|
|
526
522
|
JsonDecoderModel: self.create_json_decoder,
|
527
523
|
JsonlDecoderModel: self.create_jsonl_decoder,
|
528
524
|
JsonLineParserModel: self.create_json_line_parser,
|
529
|
-
JsonParserModel: self.create_json_parser,
|
530
525
|
GzipJsonDecoderModel: self.create_gzipjson_decoder,
|
531
526
|
GzipParserModel: self.create_gzip_parser,
|
532
527
|
KeysToLowerModel: self.create_keys_to_lower_transformation,
|
@@ -1753,11 +1748,6 @@ class ModelToComponentFactory:
|
|
1753
1748
|
def create_json_decoder(model: JsonDecoderModel, config: Config, **kwargs: Any) -> JsonDecoder:
|
1754
1749
|
return JsonDecoder(parameters={})
|
1755
1750
|
|
1756
|
-
@staticmethod
|
1757
|
-
def create_json_parser(model: JsonParserModel, config: Config, **kwargs: Any) -> JsonParser:
|
1758
|
-
encoding = model.encoding or "utf-8"
|
1759
|
-
return JsonParser(encoding=encoding)
|
1760
|
-
|
1761
1751
|
@staticmethod
|
1762
1752
|
def create_jsonl_decoder(
|
1763
1753
|
model: JsonlDecoderModel, config: Config, **kwargs: Any
|
@@ -1895,15 +1885,24 @@ class ModelToComponentFactory:
|
|
1895
1885
|
expires_in_name=InterpolatedString.create(
|
1896
1886
|
model.expires_in_name or "expires_in", parameters=model.parameters or {}
|
1897
1887
|
).eval(config),
|
1888
|
+
client_id_name=InterpolatedString.create(
|
1889
|
+
model.client_id_name or "client_id", parameters=model.parameters or {}
|
1890
|
+
).eval(config),
|
1898
1891
|
client_id=InterpolatedString.create(
|
1899
1892
|
model.client_id, parameters=model.parameters or {}
|
1900
1893
|
).eval(config),
|
1894
|
+
client_secret_name=InterpolatedString.create(
|
1895
|
+
model.client_secret_name or "client_secret", parameters=model.parameters or {}
|
1896
|
+
).eval(config),
|
1901
1897
|
client_secret=InterpolatedString.create(
|
1902
1898
|
model.client_secret, parameters=model.parameters or {}
|
1903
1899
|
).eval(config),
|
1904
1900
|
access_token_config_path=model.refresh_token_updater.access_token_config_path,
|
1905
1901
|
refresh_token_config_path=model.refresh_token_updater.refresh_token_config_path,
|
1906
1902
|
token_expiry_date_config_path=model.refresh_token_updater.token_expiry_date_config_path,
|
1903
|
+
grant_type_name=InterpolatedString.create(
|
1904
|
+
model.grant_type_name or "grant_type", parameters=model.parameters or {}
|
1905
|
+
).eval(config),
|
1907
1906
|
grant_type=InterpolatedString.create(
|
1908
1907
|
model.grant_type or "refresh_token", parameters=model.parameters or {}
|
1909
1908
|
).eval(config),
|
@@ -1921,11 +1920,15 @@ class ModelToComponentFactory:
|
|
1921
1920
|
return DeclarativeOauth2Authenticator( # type: ignore
|
1922
1921
|
access_token_name=model.access_token_name or "access_token",
|
1923
1922
|
access_token_value=model.access_token_value,
|
1923
|
+
client_id_name=model.client_id_name or "client_id",
|
1924
1924
|
client_id=model.client_id,
|
1925
|
+
client_secret_name=model.client_secret_name or "client_secret",
|
1925
1926
|
client_secret=model.client_secret,
|
1926
1927
|
expires_in_name=model.expires_in_name or "expires_in",
|
1928
|
+
grant_type_name=model.grant_type_name or "grant_type",
|
1927
1929
|
grant_type=model.grant_type or "refresh_token",
|
1928
1930
|
refresh_request_body=model.refresh_request_body,
|
1931
|
+
refresh_token_name=model.refresh_token_name or "refresh_token",
|
1929
1932
|
refresh_token=model.refresh_token,
|
1930
1933
|
scopes=model.scopes,
|
1931
1934
|
token_expiry_date=model.token_expiry_date,
|
@@ -2297,7 +2300,7 @@ class ModelToComponentFactory:
|
|
2297
2300
|
extractor=download_extractor,
|
2298
2301
|
name=name,
|
2299
2302
|
record_filter=None,
|
2300
|
-
transformations=
|
2303
|
+
transformations=transformations,
|
2301
2304
|
schema_normalization=TypeTransformer(TransformConfig.NoTransform),
|
2302
2305
|
config=config,
|
2303
2306
|
parameters={},
|
@@ -2334,6 +2337,16 @@ class ModelToComponentFactory:
|
|
2334
2337
|
if model.delete_requester
|
2335
2338
|
else None
|
2336
2339
|
)
|
2340
|
+
url_requester = (
|
2341
|
+
self._create_component_from_model(
|
2342
|
+
model=model.url_requester,
|
2343
|
+
decoder=decoder,
|
2344
|
+
config=config,
|
2345
|
+
name=f"job extract_url - {name}",
|
2346
|
+
)
|
2347
|
+
if model.url_requester
|
2348
|
+
else None
|
2349
|
+
)
|
2337
2350
|
status_extractor = self._create_component_from_model(
|
2338
2351
|
model=model.status_extractor, decoder=decoder, config=config, name=name
|
2339
2352
|
)
|
@@ -2344,6 +2357,7 @@ class ModelToComponentFactory:
|
|
2344
2357
|
creation_requester=creation_requester,
|
2345
2358
|
polling_requester=polling_requester,
|
2346
2359
|
download_retriever=download_retriever,
|
2360
|
+
url_requester=url_requester,
|
2347
2361
|
abort_requester=abort_requester,
|
2348
2362
|
delete_requester=delete_requester,
|
2349
2363
|
status_extractor=status_extractor,
|