diff --git a/.bumpversion.cfg b/.bumpversion.cfg index b097b34357dca..79831350e0eec 100644 --- a/.bumpversion.cfg +++ b/.bumpversion.cfg @@ -1,5 +1,5 @@ [bumpversion] -current_version = 0.44.1 +current_version = 0.44.2 commit = False tag = False parse = (?P\d+)\.(?P\d+)\.(?P\d+)(\-[a-z]+)? diff --git a/.github/workflows/publish_connectors.yml b/.github/workflows/publish_connectors.yml index 7a3f27c9a1a82..8f46d78267883 100644 --- a/.github/workflows/publish_connectors.yml +++ b/.github/workflows/publish_connectors.yml @@ -26,9 +26,9 @@ jobs: DOCKER_HUB_PASSWORD: ${{ secrets.DOCKER_HUB_PASSWORD }} DOCKER_HUB_USERNAME: ${{ secrets.DOCKER_HUB_USERNAME }} GCP_GSM_CREDENTIALS: ${{ secrets.GCP_GSM_CREDENTIALS }} - GCS_CREDENTIALS: ${{ secrets.METADATA_SERVICE_DEV_GCS_CREDENTIALS }} - METADATA_SERVICE_ACCOUNT_KEY: ${{ secrets.METADATA_SERVICE_DEV_GCS_CREDENTIALS }} - METADATA_SERVICE_BUCKET_NAME: dev-airbyte-cloud-connector-metadata-service + GCS_CREDENTIALS: ${{ secrets.METADATA_SERVICE_PROD_GCS_CREDENTIALS }} + METADATA_SERVICE_ACCOUNT_KEY: ${{ secrets.METADATA_SERVICE_PROD_GCS_CREDENTIALS }} + METADATA_SERVICE_BUCKET_NAME: prod-airbyte-cloud-connector-metadata-service SPEC_CACHE_BUCKET_NAME: io-airbyte-cloud-spec-cache SPEC_CACHE_SERVICE_ACCOUNT_KEY: ${{ secrets.SPEC_CACHE_SERVICE_ACCOUNT_KEY_PUBLISH }} TEST_REPORTS_BUCKET_NAME: "airbyte-connector-build-status" diff --git a/airbyte-cdk/python/.bumpversion.cfg b/airbyte-cdk/python/.bumpversion.cfg index e84133925086d..ee1ae1220901d 100644 --- a/airbyte-cdk/python/.bumpversion.cfg +++ b/airbyte-cdk/python/.bumpversion.cfg @@ -1,5 +1,5 @@ [bumpversion] -current_version = 0.35.4 +current_version = 0.36.1 commit = False [bumpversion:file:setup.py] diff --git a/airbyte-cdk/python/CHANGELOG.md b/airbyte-cdk/python/CHANGELOG.md index 0a959c9364954..5ae1ff7f9146d 100644 --- a/airbyte-cdk/python/CHANGELOG.md +++ b/airbyte-cdk/python/CHANGELOG.md @@ -1,5 +1,11 @@ # Changelog +## 0.36.1 +low-code: fix add field transformation when running from the connector builder + +## 0.36.0 +Emit stream status messages + ## 0.35.4 low-code: remove now_local() macro because it's too unpredictable diff --git a/airbyte-cdk/python/Dockerfile b/airbyte-cdk/python/Dockerfile index cb83377119fb9..b93f9f205f611 100644 --- a/airbyte-cdk/python/Dockerfile +++ b/airbyte-cdk/python/Dockerfile @@ -10,7 +10,7 @@ RUN apk --no-cache upgrade \ && apk --no-cache add tzdata build-base # install airbyte-cdk -RUN pip install --prefix=/install airbyte-cdk==0.35.4 +RUN pip install --prefix=/install airbyte-cdk==0.36.1 # build a clean environment FROM base @@ -32,5 +32,5 @@ ENV AIRBYTE_ENTRYPOINT "python /airbyte/integration_code/main.py" ENTRYPOINT ["python", "/airbyte/integration_code/main.py"] # needs to be the same as CDK -LABEL io.airbyte.version=0.35.4 +LABEL io.airbyte.version=0.36.1 LABEL io.airbyte.name=airbyte/source-declarative-manifest diff --git a/airbyte-cdk/python/airbyte_cdk/connector_builder/README.md b/airbyte-cdk/python/airbyte_cdk/connector_builder/README.md index d661d2b31a148..91045414a8643 100644 --- a/airbyte-cdk/python/airbyte_cdk/connector_builder/README.md +++ b/airbyte-cdk/python/airbyte_cdk/connector_builder/README.md @@ -1,6 +1,6 @@ # Connector Builder Backend -This is the backend for requests from the [Connector Builder](https://docs.airbyte.com/connector-development/config-based/connector-builder-ui/). +This is the backend for requests from the [Connector Builder](https://docs.airbyte.com/connector-development/connector-builder-ui/overview/). ## Local development diff --git a/airbyte-cdk/python/airbyte_cdk/connector_builder/connector_builder_handler.py b/airbyte-cdk/python/airbyte_cdk/connector_builder/connector_builder_handler.py index 5637b0955e34b..1a89f2f647ba7 100644 --- a/airbyte-cdk/python/airbyte_cdk/connector_builder/connector_builder_handler.py +++ b/airbyte-cdk/python/airbyte_cdk/connector_builder/connector_builder_handler.py @@ -50,7 +50,9 @@ def create_source(config: Mapping[str, Any], limits: TestReadLimits) -> Manifest component_factory=ModelToComponentFactory( emit_connector_builder_messages=True, limit_pages_fetched_per_slice=limits.max_pages_per_slice, - limit_slices_fetched=limits.max_slices) + limit_slices_fetched=limits.max_slices, + disable_retries=True + ) ) diff --git a/airbyte-cdk/python/airbyte_cdk/sources/abstract_source.py b/airbyte-cdk/python/airbyte_cdk/sources/abstract_source.py index 8cfcb0b5beaa4..c6fc000b149d8 100644 --- a/airbyte-cdk/python/airbyte_cdk/sources/abstract_source.py +++ b/airbyte-cdk/python/airbyte_cdk/sources/abstract_source.py @@ -13,6 +13,7 @@ AirbyteLogMessage, AirbyteMessage, AirbyteStateMessage, + AirbyteStreamStatus, ConfiguredAirbyteCatalog, ConfiguredAirbyteStream, Level, @@ -28,6 +29,7 @@ from airbyte_cdk.sources.utils.record_helper import stream_data_to_airbyte_message from airbyte_cdk.sources.utils.schema_helpers import InternalConfig, split_config from airbyte_cdk.utils.event_timing import create_timer +from airbyte_cdk.utils.stream_status_utils import as_airbyte_message as stream_status_as_airbyte_message from airbyte_cdk.utils.traced_exception import AirbyteTracedException @@ -113,6 +115,8 @@ def read( continue try: timer.start_event(f"Syncing stream {configured_stream.stream.name}") + logger.info(f"Marking stream {configured_stream.stream.name} as STARTED") + yield stream_status_as_airbyte_message(configured_stream, AirbyteStreamStatus.STARTED) yield from self._read_stream( logger=logger, stream_instance=stream_instance, @@ -120,10 +124,15 @@ def read( state_manager=state_manager, internal_config=internal_config, ) + logger.info(f"Marking stream {configured_stream.stream.name} as STOPPED") + yield stream_status_as_airbyte_message(configured_stream, AirbyteStreamStatus.COMPLETE) except AirbyteTracedException as e: + yield stream_status_as_airbyte_message(configured_stream, AirbyteStreamStatus.INCOMPLETE) raise e except Exception as e: logger.exception(f"Encountered an exception while reading stream {configured_stream.stream.name}") + logger.info(f"Marking stream {configured_stream.stream.name} as STOPPED") + yield stream_status_as_airbyte_message(configured_stream, AirbyteStreamStatus.INCOMPLETE) display_message = stream_instance.get_error_display_message(e) if display_message: raise AirbyteTracedException.from_exception(e, message=display_message) from e @@ -185,6 +194,10 @@ def _read_stream( for record in record_iterator: if record.type == MessageType.RECORD: record_counter += 1 + if record_counter == 1: + logger.info(f"Marking stream {stream_name} as RUNNING") + # If we just read the first record of the stream, emit the transition to the RUNNING state + yield stream_status_as_airbyte_message(configured_stream, AirbyteStreamStatus.RUNNING) yield record logger.info(f"Read {record_counter} records from {stream_name} stream") diff --git a/airbyte-cdk/python/airbyte_cdk/sources/declarative/declarative_stream.py b/airbyte-cdk/python/airbyte_cdk/sources/declarative/declarative_stream.py index 4abf21988775e..2a10e64e3fb70 100644 --- a/airbyte-cdk/python/airbyte_cdk/sources/declarative/declarative_stream.py +++ b/airbyte-cdk/python/airbyte_cdk/sources/declarative/declarative_stream.py @@ -5,14 +5,14 @@ from dataclasses import InitVar, dataclass, field from typing import Any, Iterable, List, Mapping, MutableMapping, Optional, Union -from airbyte_cdk.models import AirbyteLogMessage, AirbyteMessage, AirbyteTraceMessage, SyncMode +from airbyte_cdk.models import AirbyteMessage, SyncMode from airbyte_cdk.sources.declarative.interpolation import InterpolatedString from airbyte_cdk.sources.declarative.retrievers.retriever import Retriever from airbyte_cdk.sources.declarative.schema import DefaultSchemaLoader from airbyte_cdk.sources.declarative.schema.schema_loader import SchemaLoader from airbyte_cdk.sources.declarative.transformations import RecordTransformation from airbyte_cdk.sources.declarative.types import Config, StreamSlice -from airbyte_cdk.sources.streams.core import Stream +from airbyte_cdk.sources.streams.core import Stream, StreamData @dataclass @@ -102,17 +102,27 @@ def read_records( def _apply_transformations( self, - message_or_record_data: Union[AirbyteMessage, AirbyteLogMessage, AirbyteTraceMessage, Mapping[str, Any]], + message_or_record_data: StreamData, config: Config, stream_slice: StreamSlice, ): - # If the input is an AirbyteRecord, transform the record's data - # If the input is another type of Airbyte Message, return it as is + # If the input is an AirbyteMessage with a record, transform the record's data + # If the input is another type of AirbyteMessage, return it as is # If the input is a dict, transform it - if isinstance(message_or_record_data, AirbyteLogMessage) or isinstance(message_or_record_data, AirbyteTraceMessage): - return message_or_record_data + if isinstance(message_or_record_data, AirbyteMessage): + if message_or_record_data.record: + record = message_or_record_data.record.data + else: + return message_or_record_data + elif isinstance(message_or_record_data, dict): + record = message_or_record_data + else: + # Raise an error because this is unexpected and indicative of a typing problem in the CDK + raise ValueError( + f"Unexpected record type. Expected {StreamData}. Got {type(message_or_record_data)}. This is probably due to a bug in the CDK." + ) for transformation in self.transformations: - transformation.transform(message_or_record_data, config=config, stream_state=self.state, stream_slice=stream_slice) + transformation.transform(record, config=config, stream_state=self.state, stream_slice=stream_slice) return message_or_record_data diff --git a/airbyte-cdk/python/airbyte_cdk/sources/declarative/parsers/model_to_component_factory.py b/airbyte-cdk/python/airbyte_cdk/sources/declarative/parsers/model_to_component_factory.py index 8ab9fe802b27a..02e84c555e724 100644 --- a/airbyte-cdk/python/airbyte_cdk/sources/declarative/parsers/model_to_component_factory.py +++ b/airbyte-cdk/python/airbyte_cdk/sources/declarative/parsers/model_to_component_factory.py @@ -112,12 +112,17 @@ class ModelToComponentFactory: def __init__( - self, limit_pages_fetched_per_slice: int = None, limit_slices_fetched: int = None, emit_connector_builder_messages: bool = False + self, + limit_pages_fetched_per_slice: int = None, + limit_slices_fetched: int = None, + emit_connector_builder_messages: bool = False, + disable_retries=False, ): self._init_mappings() self._limit_pages_fetched_per_slice = limit_pages_fetched_per_slice self._limit_slices_fetched = limit_slices_fetched self._emit_connector_builder_messages = emit_connector_builder_messages + self._disable_retries = disable_retries def _init_mappings(self): self.PYDANTIC_MODEL_TO_CONSTRUCTOR: [Type[BaseModel], Callable] = { @@ -779,6 +784,7 @@ def create_simple_retriever( config=config, maximum_number_of_slices=self._limit_slices_fetched, parameters=model.parameters, + disable_retries=self._disable_retries, ) return SimpleRetriever( name=name, @@ -789,6 +795,7 @@ def create_simple_retriever( stream_slicer=stream_slicer or SinglePartitionRouter(parameters={}), config=config, parameters=model.parameters, + disable_retries=self._disable_retries, ) @staticmethod diff --git a/airbyte-cdk/python/airbyte_cdk/sources/declarative/retrievers/simple_retriever.py b/airbyte-cdk/python/airbyte_cdk/sources/declarative/retrievers/simple_retriever.py index 5847316b8e80d..c58414127b5a3 100644 --- a/airbyte-cdk/python/airbyte_cdk/sources/declarative/retrievers/simple_retriever.py +++ b/airbyte-cdk/python/airbyte_cdk/sources/declarative/retrievers/simple_retriever.py @@ -50,6 +50,8 @@ class SimpleRetriever(Retriever, HttpStream): parameters (Mapping[str, Any]): Additional runtime parameters to be used for string interpolation """ + _DEFAULT_MAX_RETRY = 5 + requester: Requester record_selector: HttpSelector config: Config @@ -61,6 +63,7 @@ class SimpleRetriever(Retriever, HttpStream): paginator: Optional[Paginator] = None stream_slicer: Optional[StreamSlicer] = SinglePartitionRouter(parameters={}) emit_connector_builder_messages: bool = False + disable_retries: bool = False def __post_init__(self, parameters: Mapping[str, Any]): self.paginator = self.paginator or NoPagination(parameters=parameters) @@ -95,6 +98,14 @@ def raise_on_http_errors(self) -> bool: # never raise on http_errors because this overrides the error handler logic... return False + @property + def max_retries(self) -> Union[int, None]: + if self.disable_retries: + return 0 + if hasattr(self.requester.error_handler, "max_retries"): + return self.requester.error_handler.max_retries + return self._DEFAULT_MAX_RETRY + def should_retry(self, response: requests.Response) -> bool: """ Specifies conditions for backoff based on the response from the server. diff --git a/airbyte-cdk/python/airbyte_cdk/sources/streams/core.py b/airbyte-cdk/python/airbyte_cdk/sources/streams/core.py index 17c0076c3cf57..9dacdb6c216e0 100644 --- a/airbyte-cdk/python/airbyte_cdk/sources/streams/core.py +++ b/airbyte-cdk/python/airbyte_cdk/sources/streams/core.py @@ -11,7 +11,7 @@ from typing import Any, Iterable, List, Mapping, MutableMapping, Optional, Tuple, Union import airbyte_cdk.sources.utils.casing as casing -from airbyte_cdk.models import AirbyteLogMessage, AirbyteStream, AirbyteTraceMessage, SyncMode +from airbyte_cdk.models import AirbyteMessage, AirbyteStream, SyncMode # list of all possible HTTP methods which can be used for sending of request bodies from airbyte_cdk.sources.utils.schema_helpers import ResourceSchemaLoader @@ -24,10 +24,8 @@ # A stream's read method can return one of the following types: # Mapping[str, Any]: The content of an AirbyteRecordMessage -# AirbyteRecordMessage: An AirbyteRecordMessage -# AirbyteLogMessage: A log message -# AirbyteTraceMessage: A trace message -StreamData = Union[Mapping[str, Any], AirbyteLogMessage, AirbyteTraceMessage] +# AirbyteMessage: An AirbyteMessage. Could be of any type +StreamData = Union[Mapping[str, Any], AirbyteMessage] def package_name_from_class(cls: object) -> str: diff --git a/airbyte-cdk/python/airbyte_cdk/utils/stream_status_utils.py b/airbyte-cdk/python/airbyte_cdk/utils/stream_status_utils.py new file mode 100644 index 0000000000000..cd9e4527688d0 --- /dev/null +++ b/airbyte-cdk/python/airbyte_cdk/utils/stream_status_utils.py @@ -0,0 +1,36 @@ +# +# Copyright (c) 2023 Airbyte, Inc., all rights reserved. +# + + +from datetime import datetime + +from airbyte_cdk.models import ( + AirbyteMessage, + AirbyteStreamStatus, + AirbyteStreamStatusTraceMessage, + AirbyteTraceMessage, + ConfiguredAirbyteStream, + StreamDescriptor, + TraceType, +) +from airbyte_cdk.models import Type as MessageType + + +def as_airbyte_message(stream: ConfiguredAirbyteStream, current_status: AirbyteStreamStatus) -> AirbyteMessage: + """ + Builds an AirbyteStreamStatusTraceMessage for the provided stream + """ + + now_millis = datetime.now().timestamp() * 1000.0 + + trace_message = AirbyteTraceMessage( + type=TraceType.STREAM_STATUS, + emitted_at=now_millis, + stream_status=AirbyteStreamStatusTraceMessage( + stream_descriptor=StreamDescriptor(name=stream.stream.name, namespace=stream.stream.namespace), + status=current_status, + ), + ) + + return AirbyteMessage(type=MessageType.TRACE, trace=trace_message) diff --git a/airbyte-cdk/python/setup.py b/airbyte-cdk/python/setup.py index 8731a2d3ad7c5..ca97e8ed5c05d 100644 --- a/airbyte-cdk/python/setup.py +++ b/airbyte-cdk/python/setup.py @@ -17,7 +17,7 @@ name="airbyte-cdk", # The version of the airbyte-cdk package is used at runtime to validate manifests. That validation must be # updated if our semver format changes such as using release candidate versions. - version="0.35.4", + version="0.36.1", description="A framework for writing Airbyte Connectors.", long_description=README, long_description_content_type="text/markdown", @@ -46,7 +46,7 @@ packages=find_packages(exclude=("unit_tests",)), package_data={"airbyte_cdk": ["py.typed", "sources/declarative/declarative_component_schema.yaml"]}, install_requires=[ - "airbyte-protocol-models==1.0.0", + "airbyte-protocol-models==0.3.6", "backoff", "dpath~=2.0.1", "isodate~=0.6.1", diff --git a/airbyte-cdk/python/unit_tests/connector_builder/test_connector_builder_handler.py b/airbyte-cdk/python/unit_tests/connector_builder/test_connector_builder_handler.py index eb767fc06a263..795bec8fa8e96 100644 --- a/airbyte-cdk/python/unit_tests/connector_builder/test_connector_builder_handler.py +++ b/airbyte-cdk/python/unit_tests/connector_builder/test_connector_builder_handler.py @@ -566,6 +566,7 @@ def test_create_source(): assert isinstance(source, ManifestDeclarativeSource) assert source._constructor._limit_pages_fetched_per_slice == limits.max_pages_per_slice assert source._constructor._limit_slices_fetched == limits.max_slices + assert source.streams(config={})[0].retriever.max_retries == 0 def request_log_message(request: dict) -> AirbyteMessage: diff --git a/airbyte-cdk/python/unit_tests/sources/declarative/parsers/test_model_to_component_factory.py b/airbyte-cdk/python/unit_tests/sources/declarative/parsers/test_model_to_component_factory.py index 88da142e8e761..398ed1f49cc4e 100644 --- a/airbyte-cdk/python/unit_tests/sources/declarative/parsers/test_model_to_component_factory.py +++ b/airbyte-cdk/python/unit_tests/sources/declarative/parsers/test_model_to_component_factory.py @@ -1360,3 +1360,29 @@ def test_simple_retriever_emit_log_messages(): ) assert isinstance(retriever, SimpleRetrieverTestReadDecorator) + + +def test_ignore_retry(): + requester_model = { + "type": "SimpleRetriever", + "record_selector": { + "type": "RecordSelector", + "extractor": { + "type": "DpathExtractor", + "field_path": [], + }, + }, + "requester": {"type": "HttpRequester", "name": "list", "url_base": "orange.com", "path": "/v1/api"}, + } + + connector_builder_factory = ModelToComponentFactory(disable_retries=True) + retriever = connector_builder_factory.create_component( + model_type=SimpleRetrieverModel, + component_definition=requester_model, + config={}, + name="Test", + primary_key="id", + stream_slicer=None, + ) + + assert retriever.max_retries == 0 diff --git a/airbyte-cdk/python/unit_tests/sources/declarative/retrievers/test_simple_retriever.py b/airbyte-cdk/python/unit_tests/sources/declarative/retrievers/test_simple_retriever.py index 3f8c13a1484b0..c767a6989705d 100644 --- a/airbyte-cdk/python/unit_tests/sources/declarative/retrievers/test_simple_retriever.py +++ b/airbyte-cdk/python/unit_tests/sources/declarative/retrievers/test_simple_retriever.py @@ -256,6 +256,48 @@ def test_parse_response(test_name, status_code, response_status, len_expected_re assert len(records) == len_expected_records +def test_max_retries_given_error_handler_has_max_retries(): + requester = MagicMock() + requester.error_handler = MagicMock() + requester.error_handler.max_retries = 10 + retriever = SimpleRetriever( + name="stream_name", + primary_key=primary_key, + requester=requester, + record_selector=MagicMock(), + parameters={}, + config={} + ) + assert retriever.max_retries == 10 + + +def test_max_retries_given_error_handler_without_max_retries(): + requester = MagicMock() + requester.error_handler = MagicMock(spec=[u'without_max_retries_attribute']) + retriever = SimpleRetriever( + name="stream_name", + primary_key=primary_key, + requester=requester, + record_selector=MagicMock(), + parameters={}, + config={} + ) + assert retriever.max_retries == 5 + + +def test_max_retries_given_disable_retries(): + retriever = SimpleRetriever( + name="stream_name", + primary_key=primary_key, + requester=MagicMock(), + record_selector=MagicMock(), + disable_retries=True, + parameters={}, + config={} + ) + assert retriever.max_retries == 0 + + @pytest.mark.parametrize( "test_name, response_action, retry_in, expected_backoff_time", [ diff --git a/airbyte-cdk/python/unit_tests/sources/declarative/test_declarative_stream.py b/airbyte-cdk/python/unit_tests/sources/declarative/test_declarative_stream.py index 553cb0dcff2dd..62e52eaf0e447 100644 --- a/airbyte-cdk/python/unit_tests/sources/declarative/test_declarative_stream.py +++ b/airbyte-cdk/python/unit_tests/sources/declarative/test_declarative_stream.py @@ -5,7 +5,16 @@ from unittest import mock from unittest.mock import MagicMock, call -from airbyte_cdk.models import AirbyteLogMessage, AirbyteTraceMessage, Level, SyncMode, TraceType +from airbyte_cdk.models import ( + AirbyteLogMessage, + AirbyteMessage, + AirbyteRecordMessage, + AirbyteTraceMessage, + Level, + SyncMode, + TraceType, + Type, +) from airbyte_cdk.sources.declarative.declarative_stream import DeclarativeStream from airbyte_cdk.sources.declarative.transformations import AddFields, RecordTransformation from airbyte_cdk.sources.declarative.transformations.add_fields import AddedFieldDefinition @@ -24,8 +33,8 @@ def test_declarative_stream(): records = [ {"pk": 1234, "field": "value"}, {"pk": 4567, "field": "different_value"}, - AirbyteLogMessage(level=Level.INFO, message="This is a log message"), - AirbyteTraceMessage(type=TraceType.ERROR, emitted_at=12345), + AirbyteMessage(type=Type.LOG, log=AirbyteLogMessage(level=Level.INFO, message="This is a log message")), + AirbyteMessage(type=Type.TRACE, trace=AirbyteTraceMessage(type=TraceType.ERROR, emitted_at=12345)), ] stream_slices = [ {"date": "2021-01-01"}, @@ -84,15 +93,17 @@ def test_declarative_stream_with_add_fields_transform(): retriever_records = [ {"pk": 1234, "field": "value"}, {"pk": 4567, "field": "different_value"}, - AirbyteLogMessage(level=Level.INFO, message="This is a log message"), - AirbyteTraceMessage(type=TraceType.ERROR, emitted_at=12345), + AirbyteMessage(type=Type.RECORD, record=AirbyteRecordMessage(data={"pk": 1357, "field": "a_value"}, emitted_at=12344, stream="stream")), + AirbyteMessage(type=Type.LOG, log=AirbyteLogMessage(level=Level.INFO, message="This is a log message")), + AirbyteMessage(type=Type.TRACE, trace=AirbyteTraceMessage(type=TraceType.ERROR, emitted_at=12345)), ] expected_records = [ {"pk": 1234, "field": "value", "added_key": "added_value"}, {"pk": 4567, "field": "different_value", "added_key": "added_value"}, - AirbyteLogMessage(level=Level.INFO, message="This is a log message"), - AirbyteTraceMessage(type=TraceType.ERROR, emitted_at=12345), + AirbyteMessage(type=Type.RECORD, record=AirbyteRecordMessage(data={"pk": 1357, "field": "a_value", "added_key": "added_value"}, emitted_at=12344, stream="stream")), + AirbyteMessage(type=Type.LOG, log=AirbyteLogMessage(level=Level.INFO, message="This is a log message")), + AirbyteMessage(type=Type.TRACE, trace=AirbyteTraceMessage(type=TraceType.ERROR, emitted_at=12345)), ] stream_slices = [ {"date": "2021-01-01"}, diff --git a/airbyte-cdk/python/unit_tests/sources/declarative/test_manifest_declarative_source.py b/airbyte-cdk/python/unit_tests/sources/declarative/test_manifest_declarative_source.py index 3358f7baf035b..9c28997e917e4 100644 --- a/airbyte-cdk/python/unit_tests/sources/declarative/test_manifest_declarative_source.py +++ b/airbyte-cdk/python/unit_tests/sources/declarative/test_manifest_declarative_source.py @@ -1242,7 +1242,7 @@ def _create_page(response_body): def test_read_manifest_declarative_source(test_name, manifest, pages, expected_records, expected_calls): _stream_name = "Rates" with patch.object(HttpStream, "_fetch_next_page", side_effect=pages) as mock_http_stream: - output_data = [message.record.data for message in _run_read(manifest, _stream_name)] + output_data = [message.record.data for message in _run_read(manifest, _stream_name) if message.record] assert expected_records == output_data mock_http_stream.assert_has_calls(expected_calls) diff --git a/airbyte-cdk/python/unit_tests/sources/test_abstract_source.py b/airbyte-cdk/python/unit_tests/sources/test_abstract_source.py index e9af077f02e88..aaa347ed351e3 100644 --- a/airbyte-cdk/python/unit_tests/sources/test_abstract_source.py +++ b/airbyte-cdk/python/unit_tests/sources/test_abstract_source.py @@ -21,6 +21,9 @@ AirbyteStateType, AirbyteStream, AirbyteStreamState, + AirbyteStreamStatus, + AirbyteStreamStatusTraceMessage, + AirbyteTraceMessage, ConfiguredAirbyteCatalog, ConfiguredAirbyteStream, DestinationSyncMode, @@ -28,8 +31,10 @@ Status, StreamDescriptor, SyncMode, - Type, + TraceType, ) +from airbyte_cdk.models import Type +from airbyte_cdk.models import Type as MessageType from airbyte_cdk.sources import AbstractSource from airbyte_cdk.sources.connector_state_manager import ConnectorStateManager from airbyte_cdk.sources.streams import IncrementalMixin, Stream @@ -250,6 +255,19 @@ def _as_records(stream: str, data: List[Dict[str, Any]]) -> List[AirbyteMessage] return [_as_record(stream, datum) for datum in data] +def _as_stream_status(stream: str, status: AirbyteStreamStatus) -> AirbyteMessage: + trace_message = AirbyteTraceMessage( + emitted_at=datetime.datetime.now().timestamp() * 1000.0, + type=TraceType.STREAM_STATUS, + stream_status=AirbyteStreamStatusTraceMessage( + stream_descriptor=StreamDescriptor(name=stream), + status=status, + ), + ) + + return AirbyteMessage(type=MessageType.TRACE, trace=trace_message) + + def _as_state(state_data: Dict[str, Any], stream_name: str = "", per_stream_state: Dict[str, Any] = None): if per_stream_state: return AirbyteMessage( @@ -277,6 +295,8 @@ def _fix_emitted_at(messages: List[AirbyteMessage]) -> List[AirbyteMessage]: for msg in messages: if msg.type == Type.RECORD and msg.record: msg.record.emitted_at = GLOBAL_EMITTED_AT + if msg.type == Type.TRACE and msg.trace: + msg.trace.emitted_at = GLOBAL_EMITTED_AT return messages @@ -296,7 +316,17 @@ def test_valid_full_refresh_read_no_slices(mocker): ] ) - expected = _as_records("s1", stream_output) + _as_records("s2", stream_output) + expected = _fix_emitted_at( + [ + _as_stream_status("s1", AirbyteStreamStatus.STARTED), + _as_stream_status("s1", AirbyteStreamStatus.RUNNING), + *_as_records("s1", stream_output), + _as_stream_status("s1", AirbyteStreamStatus.COMPLETE), + _as_stream_status("s2", AirbyteStreamStatus.STARTED), + _as_stream_status("s2", AirbyteStreamStatus.RUNNING), + *_as_records("s2", stream_output), + _as_stream_status("s2", AirbyteStreamStatus.COMPLETE) + ]) messages = _fix_emitted_at(list(src.read(logger, {}, catalog))) assert expected == messages @@ -326,7 +356,17 @@ def test_valid_full_refresh_read_with_slices(mocker): ] ) - expected = [*_as_records("s1", slices), *_as_records("s2", slices)] + expected = _fix_emitted_at( + [ + _as_stream_status("s1", AirbyteStreamStatus.STARTED), + _as_stream_status("s1", AirbyteStreamStatus.RUNNING), + *_as_records("s1", slices), + _as_stream_status("s1", AirbyteStreamStatus.COMPLETE), + _as_stream_status("s2", AirbyteStreamStatus.STARTED), + _as_stream_status("s2", AirbyteStreamStatus.RUNNING), + *_as_records("s2", slices), + _as_stream_status("s2", AirbyteStreamStatus.COMPLETE) + ]) messages = _fix_emitted_at(list(src.read(logger, {}, catalog))) @@ -448,18 +488,24 @@ def test_with_state_attribute(self, mocker, use_legacy, per_stream_enabled): ] ) - expected = [ + expected = _fix_emitted_at([ + _as_stream_status("s1", AirbyteStreamStatus.STARTED), + _as_stream_status("s1", AirbyteStreamStatus.RUNNING), _as_record("s1", stream_output[0]), _as_record("s1", stream_output[1]), _as_state({"s1": new_state_from_connector}, "s1", new_state_from_connector) if per_stream_enabled else _as_state({"s1": new_state_from_connector}), + _as_stream_status("s1", AirbyteStreamStatus.COMPLETE), + _as_stream_status("s2", AirbyteStreamStatus.STARTED), + _as_stream_status("s2", AirbyteStreamStatus.RUNNING), _as_record("s2", stream_output[0]), _as_record("s2", stream_output[1]), _as_state({"s1": new_state_from_connector, "s2": new_state_from_connector}, "s2", new_state_from_connector) if per_stream_enabled else _as_state({"s1": new_state_from_connector, "s2": new_state_from_connector}), - ] + _as_stream_status("s2", AirbyteStreamStatus.COMPLETE), + ]) messages = _fix_emitted_at(list(src.read(logger, {}, catalog, state=input_state))) assert messages == expected @@ -521,18 +567,24 @@ def test_with_checkpoint_interval(self, mocker, use_legacy, per_stream_enabled): ] ) - expected = [ + expected = _fix_emitted_at([ + _as_stream_status("s1", AirbyteStreamStatus.STARTED), + _as_stream_status("s1", AirbyteStreamStatus.RUNNING), _as_record("s1", stream_output[0]), _as_state({"s1": state}, "s1", state) if per_stream_enabled else _as_state({"s1": state}), _as_record("s1", stream_output[1]), _as_state({"s1": state}, "s1", state) if per_stream_enabled else _as_state({"s1": state}), _as_state({"s1": state}, "s1", state) if per_stream_enabled else _as_state({"s1": state}), + _as_stream_status("s1", AirbyteStreamStatus.COMPLETE), + _as_stream_status("s2", AirbyteStreamStatus.STARTED), + _as_stream_status("s2", AirbyteStreamStatus.RUNNING), _as_record("s2", stream_output[0]), _as_state({"s1": state, "s2": state}, "s2", state) if per_stream_enabled else _as_state({"s1": state, "s2": state}), _as_record("s2", stream_output[1]), _as_state({"s1": state, "s2": state}, "s2", state) if per_stream_enabled else _as_state({"s1": state, "s2": state}), _as_state({"s1": state, "s2": state}, "s2", state) if per_stream_enabled else _as_state({"s1": state, "s2": state}), - ] + _as_stream_status("s2", AirbyteStreamStatus.COMPLETE), + ]) messages = _fix_emitted_at(list(src.read(logger, {}, catalog, state=input_state))) assert expected == messages @@ -582,12 +634,18 @@ def test_with_no_interval(self, mocker, use_legacy, per_stream_enabled): ] ) - expected = [ + expected = _fix_emitted_at([ + _as_stream_status("s1", AirbyteStreamStatus.STARTED), + _as_stream_status("s1", AirbyteStreamStatus.RUNNING), *_as_records("s1", stream_output), _as_state({"s1": state}, "s1", state) if per_stream_enabled else _as_state({"s1": state}), + _as_stream_status("s1", AirbyteStreamStatus.COMPLETE), + _as_stream_status("s2", AirbyteStreamStatus.STARTED), + _as_stream_status("s2", AirbyteStreamStatus.RUNNING), *_as_records("s2", stream_output), _as_state({"s1": state, "s2": state}, "s2", state) if per_stream_enabled else _as_state({"s1": state, "s2": state}), - ] + _as_stream_status("s2", AirbyteStreamStatus.COMPLETE), + ]) messages = _fix_emitted_at(list(src.read(logger, {}, catalog, state=input_state))) @@ -658,20 +716,26 @@ def test_with_slices(self, mocker, use_legacy, per_stream_enabled): ] ) - expected = [ + expected = _fix_emitted_at([ + _as_stream_status("s1", AirbyteStreamStatus.STARTED), + _as_stream_status("s1", AirbyteStreamStatus.RUNNING), # stream 1 slice 1 *_as_records("s1", stream_output), _as_state({"s1": state}, "s1", state) if per_stream_enabled else _as_state({"s1": state}), # stream 1 slice 2 *_as_records("s1", stream_output), _as_state({"s1": state}, "s1", state) if per_stream_enabled else _as_state({"s1": state}), + _as_stream_status("s1", AirbyteStreamStatus.COMPLETE), + _as_stream_status("s2", AirbyteStreamStatus.STARTED), + _as_stream_status("s2", AirbyteStreamStatus.RUNNING), # stream 2 slice 1 *_as_records("s2", stream_output), _as_state({"s1": state, "s2": state}, "s2", state) if per_stream_enabled else _as_state({"s1": state, "s2": state}), # stream 2 slice 2 *_as_records("s2", stream_output), _as_state({"s1": state, "s2": state}, "s2", state) if per_stream_enabled else _as_state({"s1": state, "s2": state}), - ] + _as_stream_status("s2", AirbyteStreamStatus.COMPLETE), + ]) messages = _fix_emitted_at(list(src.read(logger, {}, catalog, state=input_state))) @@ -753,10 +817,14 @@ def test_no_slices(self, mocker, use_legacy, per_stream_enabled, slices): ] ) - expected = [ + expected = _fix_emitted_at([ + _as_stream_status("s1", AirbyteStreamStatus.STARTED), _as_state({"s1": state}, "s1", state) if per_stream_enabled else _as_state({"s1": state}), + _as_stream_status("s1", AirbyteStreamStatus.COMPLETE), + _as_stream_status("s2", AirbyteStreamStatus.STARTED), _as_state({"s1": state, "s2": state}, "s2", state) if per_stream_enabled else _as_state({"s1": state, "s2": state}), - ] + _as_stream_status("s2", AirbyteStreamStatus.COMPLETE), + ]) messages = _fix_emitted_at(list(src.read(logger, {}, catalog, state=input_state))) @@ -837,8 +905,10 @@ def test_with_slices_and_interval(self, mocker, use_legacy, per_stream_enabled): ] ) - expected = [ + expected = _fix_emitted_at([ # stream 1 slice 1 + _as_stream_status("s1", AirbyteStreamStatus.STARTED), + _as_stream_status("s1", AirbyteStreamStatus.RUNNING), _as_record("s1", stream_output[0]), _as_record("s1", stream_output[1]), _as_state({"s1": state}, "s1", state) if per_stream_enabled else _as_state({"s1": state}), @@ -850,7 +920,10 @@ def test_with_slices_and_interval(self, mocker, use_legacy, per_stream_enabled): _as_state({"s1": state}, "s1", state) if per_stream_enabled else _as_state({"s1": state}), _as_record("s1", stream_output[2]), _as_state({"s1": state}, "s1", state) if per_stream_enabled else _as_state({"s1": state}), + _as_stream_status("s1", AirbyteStreamStatus.COMPLETE), # stream 2 slice 1 + _as_stream_status("s2", AirbyteStreamStatus.STARTED), + _as_stream_status("s2", AirbyteStreamStatus.RUNNING), _as_record("s2", stream_output[0]), _as_record("s2", stream_output[1]), _as_state({"s1": state, "s2": state}, "s2", state) if per_stream_enabled else _as_state({"s1": state, "s2": state}), @@ -862,7 +935,8 @@ def test_with_slices_and_interval(self, mocker, use_legacy, per_stream_enabled): _as_state({"s1": state, "s2": state}, "s2", state) if per_stream_enabled else _as_state({"s1": state, "s2": state}), _as_record("s2", stream_output[2]), _as_state({"s1": state, "s2": state}, "s2", state) if per_stream_enabled else _as_state({"s1": state, "s2": state}), - ] + _as_stream_status("s2", AirbyteStreamStatus.COMPLETE), + ]) messages = _fix_emitted_at(list(src.read(logger, {}, catalog, state=input_state))) @@ -942,6 +1016,8 @@ def test_emit_non_records(self, mocker, per_stream_enabled): expected = _fix_emitted_at( [ + _as_stream_status("s1", AirbyteStreamStatus.STARTED), + _as_stream_status("s1", AirbyteStreamStatus.RUNNING), # stream 1 slice 1 stream_data_to_airbyte_message("s1", stream_output[0]), stream_data_to_airbyte_message("s1", stream_output[1]), @@ -956,7 +1032,10 @@ def test_emit_non_records(self, mocker, per_stream_enabled): _as_state({"s1": state}, "s1", state) if per_stream_enabled else _as_state({"s1": state}), stream_data_to_airbyte_message("s1", stream_output[3]), _as_state({"s1": state}, "s1", state) if per_stream_enabled else _as_state({"s1": state}), + _as_stream_status("s1", AirbyteStreamStatus.COMPLETE), # stream 2 slice 1 + _as_stream_status("s2", AirbyteStreamStatus.STARTED), + _as_stream_status("s2", AirbyteStreamStatus.RUNNING), stream_data_to_airbyte_message("s2", stream_output[0]), stream_data_to_airbyte_message("s2", stream_output[1]), stream_data_to_airbyte_message("s2", stream_output[2]), @@ -970,6 +1049,7 @@ def test_emit_non_records(self, mocker, per_stream_enabled): _as_state({"s1": state, "s2": state}, "s2", state) if per_stream_enabled else _as_state({"s1": state, "s2": state}), stream_data_to_airbyte_message("s2", stream_output[3]), _as_state({"s1": state, "s2": state}, "s2", state) if per_stream_enabled else _as_state({"s1": state, "s2": state}), + _as_stream_status("s2", AirbyteStreamStatus.COMPLETE), ] ) diff --git a/airbyte-cdk/python/unit_tests/sources/test_source.py b/airbyte-cdk/python/unit_tests/sources/test_source.py index f57956a878941..5237c81f87eff 100644 --- a/airbyte-cdk/python/unit_tests/sources/test_source.py +++ b/airbyte-cdk/python/unit_tests/sources/test_source.py @@ -365,8 +365,8 @@ def test_internal_config(abstract_source, catalog): # Test with empty config logger = logging.getLogger(f"airbyte.{getattr(abstract_source, 'name', '')}") records = [r for r in abstract_source.read(logger=logger, config={}, catalog=catalog, state={})] - # 3 for http stream and 3 for non http stream - assert len(records) == 3 + 3 + # 3 for http stream, 3 for non http stream and 3 for stream status messages for each stream (2x) + assert len(records) == 3 + 3 + 3 + 3 assert http_stream.read_records.called assert non_http_stream.read_records.called # Make sure page_size havent been set @@ -375,21 +375,21 @@ def test_internal_config(abstract_source, catalog): # Test with records limit set to 1 internal_config = {"some_config": 100, "_limit": 1} records = [r for r in abstract_source.read(logger=logger, config=internal_config, catalog=catalog, state={})] - # 1 from http stream + 1 from non http stream - assert len(records) == 1 + 1 + # 1 from http stream + 1 from non http stream and 3 for stream status messages for each stream (2x) + assert len(records) == 1 + 1 + 3 + 3 assert "_limit" not in abstract_source.streams_config assert "some_config" in abstract_source.streams_config # Test with records limit set to number that exceeds expceted records internal_config = {"some_config": 100, "_limit": 20} records = [r for r in abstract_source.read(logger=logger, config=internal_config, catalog=catalog, state={})] - assert len(records) == 3 + 3 + assert len(records) == 3 + 3 + 3 + 3 # Check if page_size paramter is set to http instance only internal_config = {"some_config": 100, "_page_size": 2} records = [r for r in abstract_source.read(logger=logger, config=internal_config, catalog=catalog, state={})] assert "_page_size" not in abstract_source.streams_config assert "some_config" in abstract_source.streams_config - assert len(records) == 3 + 3 + assert len(records) == 3 + 3 + 3 + 3 assert http_stream.page_size == 2 # Make sure page_size havent been set for non http streams assert not non_http_stream.page_size @@ -402,6 +402,7 @@ def test_internal_config_limit(mocker, abstract_source, catalog): STREAM_LIMIT = 2 SLICE_DEBUG_LOG_COUNT = 1 FULL_RECORDS_NUMBER = 3 + TRACE_STATUS_COUNT = 3 streams = abstract_source.streams(None) http_stream = streams[0] http_stream.read_records.return_value = [{}] * FULL_RECORDS_NUMBER @@ -409,7 +410,7 @@ def test_internal_config_limit(mocker, abstract_source, catalog): catalog.streams[0].sync_mode = SyncMode.full_refresh records = [r for r in abstract_source.read(logger=logger_mock, config=internal_config, catalog=catalog, state={})] - assert len(records) == STREAM_LIMIT + SLICE_DEBUG_LOG_COUNT + assert len(records) == STREAM_LIMIT + SLICE_DEBUG_LOG_COUNT + TRACE_STATUS_COUNT logger_info_args = [call[0][0] for call in logger_mock.info.call_args_list] # Check if log line matches number of limit read_log_record = [_l for _l in logger_info_args if _l.startswith("Read")] @@ -418,14 +419,16 @@ def test_internal_config_limit(mocker, abstract_source, catalog): # No limit, check if state record produced for incremental stream catalog.streams[0].sync_mode = SyncMode.incremental records = [r for r in abstract_source.read(logger=logger_mock, config={}, catalog=catalog, state={})] - assert len(records) == FULL_RECORDS_NUMBER + SLICE_DEBUG_LOG_COUNT + 1 - assert records[-1].type == Type.STATE + assert len(records) == FULL_RECORDS_NUMBER + SLICE_DEBUG_LOG_COUNT + TRACE_STATUS_COUNT + 1 + assert records[-2].type == Type.STATE + assert records[-1].type == Type.TRACE # Set limit and check if state is produced when limit is set for incremental stream logger_mock.reset_mock() records = [r for r in abstract_source.read(logger=logger_mock, config=internal_config, catalog=catalog, state={})] - assert len(records) == STREAM_LIMIT + SLICE_DEBUG_LOG_COUNT + 1 - assert records[-1].type == Type.STATE + assert len(records) == STREAM_LIMIT + SLICE_DEBUG_LOG_COUNT + TRACE_STATUS_COUNT + 1 + assert records[-2].type == Type.STATE + assert records[-1].type == Type.TRACE logger_info_args = [call[0][0] for call in logger_mock.info.call_args_list] read_log_record = [_l for _l in logger_info_args if _l.startswith("Read")] assert read_log_record[0].startswith(f"Read {STREAM_LIMIT} ") @@ -436,6 +439,7 @@ def test_internal_config_limit(mocker, abstract_source, catalog): def test_source_config_no_transform(mocker, abstract_source, catalog): SLICE_DEBUG_LOG_COUNT = 1 + TRACE_STATUS_COUNT = 3 logger_mock = mocker.MagicMock() logger_mock.level = logging.DEBUG streams = abstract_source.streams(None) @@ -443,7 +447,7 @@ def test_source_config_no_transform(mocker, abstract_source, catalog): http_stream.get_json_schema.return_value = non_http_stream.get_json_schema.return_value = SCHEMA http_stream.read_records.return_value, non_http_stream.read_records.return_value = [[{"value": 23}] * 5] * 2 records = [r for r in abstract_source.read(logger=logger_mock, config={}, catalog=catalog, state={})] - assert len(records) == 2 * (5 + SLICE_DEBUG_LOG_COUNT) + assert len(records) == 2 * (5 + SLICE_DEBUG_LOG_COUNT + TRACE_STATUS_COUNT) assert [r.record.data for r in records if r.type == Type.RECORD] == [{"value": 23}] * 2 * 5 assert http_stream.get_json_schema.call_count == 5 assert non_http_stream.get_json_schema.call_count == 5 @@ -453,6 +457,7 @@ def test_source_config_transform(mocker, abstract_source, catalog): logger_mock = mocker.MagicMock() logger_mock.level = logging.DEBUG SLICE_DEBUG_LOG_COUNT = 2 + TRACE_STATUS_COUNT = 6 streams = abstract_source.streams(None) http_stream, non_http_stream = streams http_stream.transformer = TypeTransformer(TransformConfig.DefaultSchemaNormalization) @@ -460,7 +465,7 @@ def test_source_config_transform(mocker, abstract_source, catalog): http_stream.get_json_schema.return_value = non_http_stream.get_json_schema.return_value = SCHEMA http_stream.read_records.return_value, non_http_stream.read_records.return_value = [{"value": 23}], [{"value": 23}] records = [r for r in abstract_source.read(logger=logger_mock, config={}, catalog=catalog, state={})] - assert len(records) == 2 + SLICE_DEBUG_LOG_COUNT + assert len(records) == 2 + SLICE_DEBUG_LOG_COUNT + TRACE_STATUS_COUNT assert [r.record.data for r in records if r.type == Type.RECORD] == [{"value": "23"}] * 2 @@ -468,13 +473,14 @@ def test_source_config_transform_and_no_transform(mocker, abstract_source, catal logger_mock = mocker.MagicMock() logger_mock.level = logging.DEBUG SLICE_DEBUG_LOG_COUNT = 2 + TRACE_STATUS_COUNT = 6 streams = abstract_source.streams(None) http_stream, non_http_stream = streams http_stream.transformer = TypeTransformer(TransformConfig.DefaultSchemaNormalization) http_stream.get_json_schema.return_value = non_http_stream.get_json_schema.return_value = SCHEMA http_stream.read_records.return_value, non_http_stream.read_records.return_value = [{"value": 23}], [{"value": 23}] records = [r for r in abstract_source.read(logger=logger_mock, config={}, catalog=catalog, state={})] - assert len(records) == 2 + SLICE_DEBUG_LOG_COUNT + assert len(records) == 2 + SLICE_DEBUG_LOG_COUNT + TRACE_STATUS_COUNT assert [r.record.data for r in records if r.type == Type.RECORD] == [{"value": "23"}, {"value": 23}] @@ -520,8 +526,8 @@ def __init__(self, *args, **kvargs): source = MockAbstractSource(streams=streams) logger = logging.getLogger(f"airbyte.{getattr(abstract_source, 'name', '')}") records = [r for r in source.read(logger=logger, config={}, catalog=catalog, state={})] - # 3 for http stream and 3 for non http stream - assert len(records) == 3 + 3 + # 3 for http stream, 3 for non http stream and 3 for stream status messages for each stream (2x) + assert len(records) == 3 + 3 + 3 + 3 assert http_stream.read_records.called assert non_http_stream.read_records.called @@ -578,8 +584,8 @@ def __init__(self, *args, **kvargs): with caplog.at_level(logging.WARNING): records = [r for r in source.read(logger=logger, config={}, catalog=catalog, state={})] - # 0 for http stream and 3 for non http stream - assert len(records) == 0 + 3 + # 0 for http stream, 3 for non http stream and 3 status trace meessages + assert len(records) == 0 + 3 + 3 assert non_http_stream.read_records.called expected_logs = [ f"Skipped syncing stream '{http_stream.name}' because it was unavailable.", diff --git a/airbyte-cdk/python/unit_tests/utils/test_stream_status_utils.py b/airbyte-cdk/python/unit_tests/utils/test_stream_status_utils.py new file mode 100644 index 0000000000000..d89a400d8f449 --- /dev/null +++ b/airbyte-cdk/python/unit_tests/utils/test_stream_status_utils.py @@ -0,0 +1,70 @@ +# +# Copyright (c) 2023 Airbyte, Inc., all rights reserved. +# + +from airbyte_cdk.models import ( + AirbyteMessage, + AirbyteStream, + AirbyteStreamStatus, + ConfiguredAirbyteStream, + DestinationSyncMode, + SyncMode, + TraceType, +) +from airbyte_cdk.models import Type as MessageType +from airbyte_cdk.utils.stream_status_utils import as_airbyte_message as stream_status_as_airbyte_message + +stream = AirbyteStream(name="name", namespace="namespace", json_schema={}, supported_sync_modes=[SyncMode.full_refresh]) +configured_stream = ConfiguredAirbyteStream(stream=stream, sync_mode=SyncMode.full_refresh, destination_sync_mode=DestinationSyncMode.overwrite) + + +def test_started_as_message(): + stream_status = AirbyteStreamStatus.STARTED + airbyte_message = stream_status_as_airbyte_message(configured_stream, stream_status) + + assert type(airbyte_message) == AirbyteMessage + assert airbyte_message.type == MessageType.TRACE + assert airbyte_message.trace.type == TraceType.STREAM_STATUS + assert airbyte_message.trace.emitted_at > 0 + assert airbyte_message.trace.stream_status.stream_descriptor.name == configured_stream.stream.name + assert airbyte_message.trace.stream_status.stream_descriptor.namespace == configured_stream.stream.namespace + assert airbyte_message.trace.stream_status.status == stream_status + + +def test_running_as_message(): + stream_status = AirbyteStreamStatus.RUNNING + airbyte_message = stream_status_as_airbyte_message(configured_stream, stream_status) + + assert type(airbyte_message) == AirbyteMessage + assert airbyte_message.type == MessageType.TRACE + assert airbyte_message.trace.type == TraceType.STREAM_STATUS + assert airbyte_message.trace.emitted_at > 0 + assert airbyte_message.trace.stream_status.stream_descriptor.name == configured_stream.stream.name + assert airbyte_message.trace.stream_status.stream_descriptor.namespace == configured_stream.stream.namespace + assert airbyte_message.trace.stream_status.status == stream_status + + +def test_complete_as_message(): + stream_status = AirbyteStreamStatus.COMPLETE + airbyte_message = stream_status_as_airbyte_message(configured_stream, stream_status) + + assert type(airbyte_message) == AirbyteMessage + assert airbyte_message.type == MessageType.TRACE + assert airbyte_message.trace.type == TraceType.STREAM_STATUS + assert airbyte_message.trace.emitted_at > 0 + assert airbyte_message.trace.stream_status.stream_descriptor.name == configured_stream.stream.name + assert airbyte_message.trace.stream_status.stream_descriptor.namespace == configured_stream.stream.namespace + assert airbyte_message.trace.stream_status.status == stream_status + + +def test_incomplete_failed_as_message(): + stream_status = AirbyteStreamStatus.INCOMPLETE + airbyte_message = stream_status_as_airbyte_message(configured_stream, stream_status) + + assert type(airbyte_message) == AirbyteMessage + assert airbyte_message.type == MessageType.TRACE + assert airbyte_message.trace.type == TraceType.STREAM_STATUS + assert airbyte_message.trace.emitted_at > 0 + assert airbyte_message.trace.stream_status.stream_descriptor.name == configured_stream.stream.name + assert airbyte_message.trace.stream_status.stream_descriptor.namespace == configured_stream.stream.namespace + assert airbyte_message.trace.stream_status.status == stream_status diff --git a/airbyte-ci/connectors/metadata_service/orchestrator/orchestrator/assets/registry.py b/airbyte-ci/connectors/metadata_service/orchestrator/orchestrator/assets/registry.py index 062d58dd60983..319e175cbfb68 100644 --- a/airbyte-ci/connectors/metadata_service/orchestrator/orchestrator/assets/registry.py +++ b/airbyte-ci/connectors/metadata_service/orchestrator/orchestrator/assets/registry.py @@ -155,7 +155,7 @@ def construct_registry_with_spec_from_registry(registry: dict, cached_specs: Out else: registry_with_specs["destinations"].append(entry_with_spec) except KeyError: - raise MissingCachedSpecError(f"No cached spec found for {entry['dockerRepository']:{entry['dockerImageTag']}}") + raise MissingCachedSpecError(f"No cached spec found for {entry['dockerRepository']}:{entry['dockerImageTag']}") return registry_with_specs diff --git a/airbyte-ci/connectors/metadata_service/orchestrator/orchestrator/jobs/registry.py b/airbyte-ci/connectors/metadata_service/orchestrator/orchestrator/jobs/registry.py index b18fa6f962ea5..1abbb563c7b21 100644 --- a/airbyte-ci/connectors/metadata_service/orchestrator/orchestrator/jobs/registry.py +++ b/airbyte-ci/connectors/metadata_service/orchestrator/orchestrator/jobs/registry.py @@ -1,13 +1,12 @@ from dagster import define_asset_job, AssetSelection registries_inclusive = AssetSelection.keys( - "metadata_directory_report", "cloud_registry_from_metadata", "oss_registry_from_metadata" + "metadata_directory_report", "cloud_registry_from_metadata", "oss_registry_from_metadata", "specs_secrets_mask_yaml" ).upstream() -registry_reports_inclusive = AssetSelection.keys("connector_registry_report").upstream() - generate_registry = define_asset_job(name="generate_registry", selection=registries_inclusive) + +registry_reports_inclusive = AssetSelection.keys("connector_registry_report").upstream() generate_registry_reports = define_asset_job(name="generate_registry_reports", selection=registry_reports_inclusive) -# TODO Change to a Asset selection -generate_local_metadata_files = define_asset_job(name="generate_local_metadata_files", selection=["persist_metadata_definitions"]) -generate_specs_secrets_mask_file = define_asset_job(name="generate_specs_secrets_mask_file", selection=["persist_specs_secrets_mask"]) +metadata_inclusive = AssetSelection.keys("persist_metadata_definitions").upstream() +generate_local_metadata_files = define_asset_job(name="generate_local_metadata_files", selection=metadata_inclusive) diff --git a/airbyte-commons/build.gradle b/airbyte-commons/build.gradle index 3c4c0f9e19617..4a2dd07625ac0 100644 --- a/airbyte-commons/build.gradle +++ b/airbyte-commons/build.gradle @@ -4,6 +4,7 @@ plugins { dependencies { // Dependencies for this module should be specified in the top-level build.gradle. See readme for more explanation. + implementation libs.airbyte.protocol // this dependency is an exception to the above rule because it is only used INTERNALLY to the commons library. implementation 'com.jayway.jsonpath:json-path:2.7.0' diff --git a/airbyte-commons/src/main/java/io/airbyte/commons/stream/AirbyteStreamStatusHolder.java b/airbyte-commons/src/main/java/io/airbyte/commons/stream/AirbyteStreamStatusHolder.java new file mode 100644 index 0000000000000..4aa3eb55e666f --- /dev/null +++ b/airbyte-commons/src/main/java/io/airbyte/commons/stream/AirbyteStreamStatusHolder.java @@ -0,0 +1,38 @@ +/* + * Copyright (c) 2023 Airbyte, Inc., all rights reserved. + */ + +package io.airbyte.commons.stream; + +import io.airbyte.protocol.models.AirbyteStreamNameNamespacePair; +import io.airbyte.protocol.models.v0.AirbyteStreamStatusTraceMessage; +import io.airbyte.protocol.models.v0.AirbyteStreamStatusTraceMessage.AirbyteStreamStatus; +import io.airbyte.protocol.models.v0.AirbyteTraceMessage; +import io.airbyte.protocol.models.v0.StreamDescriptor; + +/** + * Represents the current status of a stream provided by a source. + */ +public class AirbyteStreamStatusHolder { + + private final AirbyteStreamNameNamespacePair airbyteStream; + + private final AirbyteStreamStatus airbyteStreamStatus; + + public AirbyteStreamStatusHolder(final AirbyteStreamNameNamespacePair airbyteStream, + final AirbyteStreamStatus airbyteStreamStatus) { + this.airbyteStream = airbyteStream; + this.airbyteStreamStatus = airbyteStreamStatus; + } + + public AirbyteTraceMessage toTraceMessage() { + final AirbyteTraceMessage traceMessage = new AirbyteTraceMessage(); + final AirbyteStreamStatusTraceMessage streamStatusTraceMessage = new AirbyteStreamStatusTraceMessage() + .withStreamDescriptor(new StreamDescriptor().withName(airbyteStream.getName()).withNamespace(airbyteStream.getNamespace())) + .withStatus(airbyteStreamStatus); + return traceMessage.withEmittedAt(Long.valueOf(System.currentTimeMillis()).doubleValue()) + .withStreamStatus(streamStatusTraceMessage) + .withType(AirbyteTraceMessage.Type.STREAM_STATUS); + } + +} diff --git a/airbyte-commons/src/main/java/io/airbyte/commons/stream/AirbyteStreamUtils.java b/airbyte-commons/src/main/java/io/airbyte/commons/stream/AirbyteStreamUtils.java new file mode 100644 index 0000000000000..edddb37be98ef --- /dev/null +++ b/airbyte-commons/src/main/java/io/airbyte/commons/stream/AirbyteStreamUtils.java @@ -0,0 +1,37 @@ +/* + * Copyright (c) 2023 Airbyte, Inc., all rights reserved. + */ + +package io.airbyte.commons.stream; + +import io.airbyte.protocol.models.AirbyteStreamNameNamespacePair; +import io.airbyte.protocol.models.v0.AirbyteStream; + +/** + * Collection of utility methods used to convert objects to {@link AirbyteStreamNameNamespacePair} + * objects. + */ +public class AirbyteStreamUtils { + + /** + * Converts an {@link AirbyteStream} to a {@link AirbyteStreamNameNamespacePair}. + * + * @param airbyteStream The {@link AirbyteStream} to convert. + * @return The {@link AirbyteStreamNameNamespacePair}. + */ + public static AirbyteStreamNameNamespacePair convertFromAirbyteStream(final AirbyteStream airbyteStream) { + return new AirbyteStreamNameNamespacePair(airbyteStream.getName(), airbyteStream.getNamespace()); + } + + /** + * Converts a stream name and namespace into a {@link AirbyteStreamNameNamespacePair}. + * + * @param name The name of the stream. + * @param namespace The namespace of the stream. + * @return The {@link AirbyteStreamNameNamespacePair}. + */ + public static AirbyteStreamNameNamespacePair convertFromNameAndNamespace(final String name, final String namespace) { + return new AirbyteStreamNameNamespacePair(name, namespace); + } + +} diff --git a/airbyte-commons/src/main/java/io/airbyte/commons/util/AirbyteStreamAware.java b/airbyte-commons/src/main/java/io/airbyte/commons/util/AirbyteStreamAware.java new file mode 100644 index 0000000000000..4fb6efd6c4ee6 --- /dev/null +++ b/airbyte-commons/src/main/java/io/airbyte/commons/util/AirbyteStreamAware.java @@ -0,0 +1,25 @@ +/* + * Copyright (c) 2023 Airbyte, Inc., all rights reserved. + */ + +package io.airbyte.commons.util; + +import io.airbyte.protocol.models.AirbyteStreamNameNamespacePair; +import java.util.Optional; + +/** + * Interface that indicates that an object exposes information used to identify an Airbyte stream. + */ +public interface AirbyteStreamAware { + + /** + * Returns the {@link AirbyteStreamNameNamespacePair} identifying the Airbyte stream associated with + * the object. + * + * @return The {@link AirbyteStreamNameNamespacePair} identifying the Airbyte stream (may be empty). + */ + default Optional getAirbyteStream() { + return Optional.empty(); + } + +} diff --git a/airbyte-commons/src/main/java/io/airbyte/commons/util/AutoCloseableIterators.java b/airbyte-commons/src/main/java/io/airbyte/commons/util/AutoCloseableIterators.java index c411a7dfa4227..26152d9624797 100644 --- a/airbyte-commons/src/main/java/io/airbyte/commons/util/AutoCloseableIterators.java +++ b/airbyte-commons/src/main/java/io/airbyte/commons/util/AutoCloseableIterators.java @@ -6,8 +6,11 @@ import com.google.common.collect.Iterators; import io.airbyte.commons.concurrency.VoidCallable; +import io.airbyte.commons.stream.AirbyteStreamStatusHolder; +import io.airbyte.protocol.models.AirbyteStreamNameNamespacePair; import java.util.Iterator; import java.util.List; +import java.util.function.Consumer; import java.util.function.Function; import java.util.function.Supplier; import java.util.stream.Stream; @@ -23,7 +26,19 @@ public class AutoCloseableIterators { * @return closeable iterator */ public static AutoCloseableIterator fromIterator(final Iterator iterator) { - return new DefaultAutoCloseableIterator<>(iterator, VoidCallable.NOOP); + return new DefaultAutoCloseableIterator<>(iterator, VoidCallable.NOOP, null); + } + + /** + * Coerces a vanilla {@link Iterator} into a {@link AutoCloseableIterator} by adding a no op close + * function. + * + * @param iterator iterator to convert + * @param type + * @return closeable iterator + */ + public static AutoCloseableIterator fromIterator(final Iterator iterator, final AirbyteStreamNameNamespacePair airbyteStream) { + return new DefaultAutoCloseableIterator<>(iterator, VoidCallable.NOOP, airbyteStream); } /** @@ -35,8 +50,10 @@ public static AutoCloseableIterator fromIterator(final Iterator iterat * @param type * @return new autocloseable iterator with the close function appended */ - public static AutoCloseableIterator fromIterator(final Iterator iterator, final VoidCallable onClose) { - return new DefaultAutoCloseableIterator<>(iterator, onClose::call); + public static AutoCloseableIterator fromIterator(final Iterator iterator, + final VoidCallable onClose, + final AirbyteStreamNameNamespacePair airbyteStream) { + return new DefaultAutoCloseableIterator<>(iterator, onClose::call, airbyteStream); } /** @@ -48,8 +65,8 @@ public static AutoCloseableIterator fromIterator(final Iterator iterat * @param type * @return autocloseable iterator */ - public static AutoCloseableIterator fromStream(final Stream stream) { - return new DefaultAutoCloseableIterator<>(stream.iterator(), stream::close); + public static AutoCloseableIterator fromStream(final Stream stream, final AirbyteStreamNameNamespacePair airbyteStream) { + return new DefaultAutoCloseableIterator<>(stream.iterator(), stream::close, airbyteStream); } /** @@ -71,8 +88,9 @@ public static List toListAndClose(final AutoCloseableIterator iterator * @param type * @return autocloseable iterator */ - public static AutoCloseableIterator lazyIterator(final Supplier> iteratorSupplier) { - return new LazyAutoCloseableIterator<>(iteratorSupplier); + public static AutoCloseableIterator lazyIterator(final Supplier> iteratorSupplier, + final AirbyteStreamNameNamespacePair airbyteStream) { + return new LazyAutoCloseableIterator<>(iteratorSupplier, airbyteStream); } /** @@ -87,7 +105,25 @@ public static AutoCloseableIterator appendOnClose(final AutoCloseableIter return new DefaultAutoCloseableIterator<>(autoCloseableIterator, () -> { autoCloseableIterator.close(); voidCallable.call(); - }); + }, null); + } + + /** + * Append a function to be called on {@link AutoCloseableIterator#close}. + * + * @param autoCloseableIterator autocloseable iterator to add another close to + * @param voidCallable the function that will be called on close + * @param type + * @return new autocloseable iterator with the close function appended + */ + public static AutoCloseableIterator appendOnClose(final AutoCloseableIterator autoCloseableIterator, + final VoidCallable voidCallable, + final AirbyteStreamNameNamespacePair airbyteStream) { + return new DefaultAutoCloseableIterator<>(autoCloseableIterator, () -> { + autoCloseableIterator.close(); + voidCallable.call(); + }, + airbyteStream); } /** @@ -102,7 +138,23 @@ public static AutoCloseableIterator appendOnClose(final AutoCloseableIter */ public static AutoCloseableIterator transform(final AutoCloseableIterator fromIterator, final Function function) { - return new DefaultAutoCloseableIterator<>(Iterators.transform(fromIterator, function::apply), fromIterator::close); + return new DefaultAutoCloseableIterator<>(Iterators.transform(fromIterator, function::apply), fromIterator::close, null); + } + + /** + * Lift and shift of Guava's {@link Iterators#transform} using the {@link AutoCloseableIterator} + * interface. + * + * @param fromIterator input autocloseable iterator + * @param function map function + * @param input type + * @param output type + * @return mapped autocloseable iterator + */ + public static AutoCloseableIterator transform(final AutoCloseableIterator fromIterator, + final AirbyteStreamNameNamespacePair airbyteStream, + final Function function) { + return new DefaultAutoCloseableIterator<>(Iterators.transform(fromIterator, function::apply), fromIterator::close, airbyteStream); } /** @@ -117,17 +169,29 @@ public static AutoCloseableIterator transform(final AutoCloseableItera * iterator but is transformed by the iterator output by the iteratorCreator */ public static AutoCloseableIterator transform(final Function, Iterator> iteratorCreator, - final AutoCloseableIterator autoCloseableIterator) { - return new DefaultAutoCloseableIterator<>(iteratorCreator.apply(autoCloseableIterator), autoCloseableIterator::close); + final AutoCloseableIterator autoCloseableIterator, + final AirbyteStreamNameNamespacePair airbyteStream) { + return new DefaultAutoCloseableIterator<>(iteratorCreator.apply(autoCloseableIterator), autoCloseableIterator::close, airbyteStream); + } + + @SafeVarargs + public static CompositeIterator concatWithEagerClose(final Consumer airbyteStreamStatusConsumer, + final AutoCloseableIterator... iterators) { + return concatWithEagerClose(List.of(iterators), airbyteStreamStatusConsumer); } @SafeVarargs public static CompositeIterator concatWithEagerClose(final AutoCloseableIterator... iterators) { - return concatWithEagerClose(List.of(iterators)); + return concatWithEagerClose(List.of(iterators), null); + } + + public static CompositeIterator concatWithEagerClose(final List> iterators, + final Consumer airbyteStreamStatusConsumer) { + return new CompositeIterator<>(iterators, airbyteStreamStatusConsumer); } public static CompositeIterator concatWithEagerClose(final List> iterators) { - return new CompositeIterator<>(iterators); + return concatWithEagerClose(iterators, null); } } diff --git a/airbyte-commons/src/main/java/io/airbyte/commons/util/CompositeIterator.java b/airbyte-commons/src/main/java/io/airbyte/commons/util/CompositeIterator.java index 7f1382f1b25fd..2f92c1b68e92f 100644 --- a/airbyte-commons/src/main/java/io/airbyte/commons/util/CompositeIterator.java +++ b/airbyte-commons/src/main/java/io/airbyte/commons/util/CompositeIterator.java @@ -6,9 +6,14 @@ import com.google.common.base.Preconditions; import com.google.common.collect.AbstractIterator; +import io.airbyte.commons.stream.AirbyteStreamStatusHolder; +import io.airbyte.protocol.models.AirbyteStreamNameNamespacePair; +import io.airbyte.protocol.models.v0.AirbyteStreamStatusTraceMessage.AirbyteStreamStatus; import java.util.ArrayList; import java.util.Iterator; import java.util.List; +import java.util.Optional; +import java.util.function.Consumer; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -32,20 +37,24 @@ * * @param type */ -public final class CompositeIterator extends AbstractIterator implements AutoCloseableIterator { +public final class CompositeIterator extends AbstractIterator implements AutoCloseableIterator, AirbyteStreamAware { private static final Logger LOGGER = LoggerFactory.getLogger(CompositeIterator.class); + private final Optional> airbyteStreamStatusConsumer; private final List> iterators; private int i; + private boolean firstRead; private boolean hasClosed; - CompositeIterator(final List> iterators) { + CompositeIterator(final List> iterators, final Consumer airbyteStreamStatusConsumer) { Preconditions.checkNotNull(iterators); + this.airbyteStreamStatusConsumer = Optional.ofNullable(airbyteStreamStatusConsumer); this.iterators = iterators; this.i = 0; + this.firstRead = true; this.hasClosed = false; } @@ -63,24 +72,45 @@ protected T computeNext() { while (!currentIterator().hasNext()) { try { currentIterator().close(); + emitCompleteStreamStatus(getAirbyteStream()); } catch (final Exception e) { + emitIncompleteStreamStatus(getAirbyteStream()); throw new RuntimeException(e); } if (i + 1 < iterators.size()) { i++; + emitStartStreamStatus(getAirbyteStream()); + firstRead = true; } else { return endOfData(); } } - return currentIterator().next(); + try { + if (isFirstStream()) { + emitStartStreamStatus(getAirbyteStream()); + } + return currentIterator().next(); + } catch (final RuntimeException e) { + emitIncompleteStreamStatus(getAirbyteStream()); + throw e; + } finally { + if (firstRead) { + emitRunningStreamStatus(getAirbyteStream()); + firstRead = false; + } + } } private AutoCloseableIterator currentIterator() { return iterators.get(i); } + private boolean isFirstStream() { + return i == 0 && firstRead; + } + @Override public void close() throws Exception { hasClosed = true; @@ -100,8 +130,50 @@ public void close() throws Exception { } } + @Override + public Optional getAirbyteStream() { + if (currentIterator() instanceof AirbyteStreamAware) { + return AirbyteStreamAware.class.cast(currentIterator()).getAirbyteStream(); + } else { + return Optional.empty(); + } + } + private void assertHasNotClosed() { Preconditions.checkState(!hasClosed); } + private void emitRunningStreamStatus(final Optional airbyteStream) { + airbyteStream.ifPresent(s -> { + LOGGER.info("RUNNING -> {}", s); + emitStreamStatus(s, AirbyteStreamStatus.RUNNING); + }); + } + + private void emitStartStreamStatus(final Optional airbyteStream) { + airbyteStream.ifPresent(s -> { + LOGGER.info("STARTING -> {}", s); + emitStreamStatus(s, AirbyteStreamStatus.STARTED); + }); + } + + private void emitCompleteStreamStatus(final Optional airbyteStream) { + airbyteStream.ifPresent(s -> { + LOGGER.info("COMPLETE -> {}", s); + emitStreamStatus(s, AirbyteStreamStatus.COMPLETE); + }); + } + + private void emitIncompleteStreamStatus(final Optional airbyteStream) { + airbyteStream.ifPresent(s -> { + LOGGER.info("COMPLETE -> {}", s); + emitStreamStatus(s, AirbyteStreamStatus.INCOMPLETE); + }); + } + + private void emitStreamStatus(final AirbyteStreamNameNamespacePair airbyteStreamNameNamespacePair, + final AirbyteStreamStatus airbyteStreamStatus) { + airbyteStreamStatusConsumer.ifPresent(c -> c.accept(new AirbyteStreamStatusHolder(airbyteStreamNameNamespacePair, airbyteStreamStatus))); + } + } diff --git a/airbyte-commons/src/main/java/io/airbyte/commons/util/DefaultAutoCloseableIterator.java b/airbyte-commons/src/main/java/io/airbyte/commons/util/DefaultAutoCloseableIterator.java index 31d9346b4ca89..e6051910c023b 100644 --- a/airbyte-commons/src/main/java/io/airbyte/commons/util/DefaultAutoCloseableIterator.java +++ b/airbyte-commons/src/main/java/io/airbyte/commons/util/DefaultAutoCloseableIterator.java @@ -7,7 +7,9 @@ import com.google.common.base.Preconditions; import com.google.common.collect.AbstractIterator; import io.airbyte.commons.concurrency.VoidCallable; +import io.airbyte.protocol.models.AirbyteStreamNameNamespacePair; import java.util.Iterator; +import java.util.Optional; /** * The canonical {@link AutoCloseableIterator}. The default behavior guarantees that the provided @@ -15,17 +17,19 @@ * * @param type */ -class DefaultAutoCloseableIterator extends AbstractIterator implements AutoCloseableIterator { +class DefaultAutoCloseableIterator extends AbstractIterator implements AutoCloseableIterator, AirbyteStreamAware { + private final AirbyteStreamNameNamespacePair airbyteStream; private final Iterator iterator; private final VoidCallable onClose; private boolean hasClosed; - public DefaultAutoCloseableIterator(final Iterator iterator, final VoidCallable onClose) { + public DefaultAutoCloseableIterator(final Iterator iterator, final VoidCallable onClose, final AirbyteStreamNameNamespacePair airbyteStream) { Preconditions.checkNotNull(iterator); Preconditions.checkNotNull(onClose); + this.airbyteStream = airbyteStream; this.iterator = iterator; this.onClose = onClose; this.hasClosed = false; @@ -50,6 +54,11 @@ public void close() throws Exception { } } + @Override + public Optional getAirbyteStream() { + return Optional.ofNullable(airbyteStream); + } + private void assertHasNotClosed() { Preconditions.checkState(!hasClosed); } diff --git a/airbyte-commons/src/main/java/io/airbyte/commons/util/LazyAutoCloseableIterator.java b/airbyte-commons/src/main/java/io/airbyte/commons/util/LazyAutoCloseableIterator.java index 29637f741e7ae..5479e63ac333c 100644 --- a/airbyte-commons/src/main/java/io/airbyte/commons/util/LazyAutoCloseableIterator.java +++ b/airbyte-commons/src/main/java/io/airbyte/commons/util/LazyAutoCloseableIterator.java @@ -6,6 +6,8 @@ import com.google.common.base.Preconditions; import com.google.common.collect.AbstractIterator; +import io.airbyte.protocol.models.AirbyteStreamNameNamespacePair; +import java.util.Optional; import java.util.function.Supplier; /** @@ -18,15 +20,17 @@ * * @param type */ -class LazyAutoCloseableIterator extends AbstractIterator implements AutoCloseableIterator { +class LazyAutoCloseableIterator extends AbstractIterator implements AutoCloseableIterator, AirbyteStreamAware { private final Supplier> iteratorSupplier; + private final AirbyteStreamNameNamespacePair airbyteStream; private boolean hasSupplied; private AutoCloseableIterator internalIterator; - public LazyAutoCloseableIterator(final Supplier> iteratorSupplier) { + public LazyAutoCloseableIterator(final Supplier> iteratorSupplier, final AirbyteStreamNameNamespacePair airbyteStream) { Preconditions.checkNotNull(iteratorSupplier); + this.airbyteStream = airbyteStream; this.iteratorSupplier = iteratorSupplier; this.hasSupplied = false; } @@ -53,4 +57,9 @@ public void close() throws Exception { } } + @Override + public Optional getAirbyteStream() { + return Optional.ofNullable(airbyteStream); + } + } diff --git a/airbyte-commons/src/main/java/io/airbyte/commons/yaml/Yamls.java b/airbyte-commons/src/main/java/io/airbyte/commons/yaml/Yamls.java index 052de1bc046fb..a8c930d9a54b7 100644 --- a/airbyte-commons/src/main/java/io/airbyte/commons/yaml/Yamls.java +++ b/airbyte-commons/src/main/java/io/airbyte/commons/yaml/Yamls.java @@ -110,7 +110,7 @@ protected JsonNode computeNext() { }; - return AutoCloseableIterators.fromIterator(iterator, parser::close); + return AutoCloseableIterators.fromIterator(iterator, parser::close, null); } catch (final IOException e) { throw new RuntimeException(e); diff --git a/airbyte-commons/src/test/java/io/airbyte/commons/stream/AirbyteStreamStatusHolderTest.java b/airbyte-commons/src/test/java/io/airbyte/commons/stream/AirbyteStreamStatusHolderTest.java new file mode 100644 index 0000000000000..756d4fa42a261 --- /dev/null +++ b/airbyte-commons/src/test/java/io/airbyte/commons/stream/AirbyteStreamStatusHolderTest.java @@ -0,0 +1,54 @@ +/* + * Copyright (c) 2023 Airbyte, Inc., all rights reserved. + */ + +package io.airbyte.commons.stream; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertTrue; + +import io.airbyte.protocol.models.AirbyteStreamNameNamespacePair; +import io.airbyte.protocol.models.v0.AirbyteStreamStatusTraceMessage.AirbyteStreamStatus; +import io.airbyte.protocol.models.v0.AirbyteTraceMessage; +import io.airbyte.protocol.models.v0.AirbyteTraceMessage.Type; +import io.airbyte.protocol.models.v0.StreamDescriptor; +import org.junit.jupiter.api.Test; + +/** + * Test suite for the {@link AirbyteStreamStatusHolder} class. + */ +class AirbyteStreamStatusHolderTest { + + @Test + void testToTraceMessage() { + final Double startTime = Long.valueOf(System.currentTimeMillis()).doubleValue(); + final AirbyteStreamNameNamespacePair airbyteStreamNameAndNamespacePair = new AirbyteStreamNameNamespacePair("name", "namespace"); + final AirbyteStreamStatus streamStatus = AirbyteStreamStatus.RUNNING; + final AirbyteStreamStatusHolder holder = new AirbyteStreamStatusHolder(airbyteStreamNameAndNamespacePair, streamStatus); + + final AirbyteTraceMessage traceMessage = holder.toTraceMessage(); + assertTrue(traceMessage.getEmittedAt() >= startTime); + assertEquals(Type.STREAM_STATUS, traceMessage.getType()); + assertEquals(streamStatus, traceMessage.getStreamStatus().getStatus()); + assertEquals(new StreamDescriptor() + .withName(airbyteStreamNameAndNamespacePair.getName()) + .withNamespace(airbyteStreamNameAndNamespacePair.getNamespace()), traceMessage.getStreamStatus().getStreamDescriptor()); + } + + @Test + void testToTraceMessageWithOptionalData() { + final Double startTime = Long.valueOf(System.currentTimeMillis()).doubleValue(); + final AirbyteStreamNameNamespacePair airbyteStreamNameAndNamespacePair = new AirbyteStreamNameNamespacePair("name", "namespace"); + final AirbyteStreamStatus streamStatus = AirbyteStreamStatus.COMPLETE; + final AirbyteStreamStatusHolder holder = new AirbyteStreamStatusHolder(airbyteStreamNameAndNamespacePair, streamStatus); + + final AirbyteTraceMessage traceMessage = holder.toTraceMessage(); + assertTrue(traceMessage.getEmittedAt() >= startTime); + assertEquals(Type.STREAM_STATUS, traceMessage.getType()); + assertEquals(streamStatus, traceMessage.getStreamStatus().getStatus()); + assertEquals(new StreamDescriptor() + .withName(airbyteStreamNameAndNamespacePair.getName()) + .withNamespace(airbyteStreamNameAndNamespacePair.getNamespace()), traceMessage.getStreamStatus().getStreamDescriptor()); + } + +} diff --git a/airbyte-commons/src/test/java/io/airbyte/commons/util/AutoCloseableIteratorsTest.java b/airbyte-commons/src/test/java/io/airbyte/commons/util/AutoCloseableIteratorsTest.java index b5ef780cd2afc..bc4661282d417 100644 --- a/airbyte-commons/src/test/java/io/airbyte/commons/util/AutoCloseableIteratorsTest.java +++ b/airbyte-commons/src/test/java/io/airbyte/commons/util/AutoCloseableIteratorsTest.java @@ -26,7 +26,7 @@ class AutoCloseableIteratorsTest { @Test void testFromIterator() throws Exception { final VoidCallable onClose = mock(VoidCallable.class); - final AutoCloseableIterator iterator = AutoCloseableIterators.fromIterator(MoreIterators.of("a", "b", "c"), onClose); + final AutoCloseableIterator iterator = AutoCloseableIterators.fromIterator(MoreIterators.of("a", "b", "c"), onClose, null); assertNext(iterator, "a"); assertNext(iterator, "b"); @@ -42,7 +42,7 @@ void testFromStream() throws Exception { final Stream stream = Stream.of("a", "b", "c"); stream.onClose(() -> isClosed.set(true)); - final AutoCloseableIterator iterator = AutoCloseableIterators.fromStream(stream); + final AutoCloseableIterator iterator = AutoCloseableIterators.fromStream(stream, null); assertNext(iterator, "a"); assertNext(iterator, "b"); @@ -62,7 +62,7 @@ void testAppendOnClose() throws Exception { final VoidCallable onClose1 = mock(VoidCallable.class); final VoidCallable onClose2 = mock(VoidCallable.class); - final AutoCloseableIterator iterator = AutoCloseableIterators.fromIterator(MoreIterators.of(1, 2, 3), onClose1); + final AutoCloseableIterator iterator = AutoCloseableIterators.fromIterator(MoreIterators.of(1, 2, 3), onClose1, null); final AutoCloseableIterator iteratorWithExtraClose = AutoCloseableIterators.appendOnClose(iterator, onClose2); iteratorWithExtraClose.close(); @@ -82,8 +82,8 @@ void testConcatWithEagerClose() throws Exception { final VoidCallable onClose2 = mock(VoidCallable.class); final AutoCloseableIterator iterator = new CompositeIterator<>(ImmutableList.of( - AutoCloseableIterators.fromIterator(MoreIterators.of("a", "b"), onClose1), - AutoCloseableIterators.fromIterator(MoreIterators.of("d"), onClose2))); + AutoCloseableIterators.fromIterator(MoreIterators.of("a", "b"), onClose1, null), + AutoCloseableIterators.fromIterator(MoreIterators.of("d"), onClose2, null)), null); assertOnCloseInvocations(ImmutableList.of(), ImmutableList.of(onClose1, onClose2)); assertNext(iterator, "a"); diff --git a/airbyte-commons/src/test/java/io/airbyte/commons/util/CompositeIteratorTest.java b/airbyte-commons/src/test/java/io/airbyte/commons/util/CompositeIteratorTest.java index 946b573ca1b1c..478c4a499305f 100644 --- a/airbyte-commons/src/test/java/io/airbyte/commons/util/CompositeIteratorTest.java +++ b/airbyte-commons/src/test/java/io/airbyte/commons/util/CompositeIteratorTest.java @@ -8,6 +8,7 @@ import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertThrows; import static org.junit.jupiter.api.Assertions.assertTrue; +import static org.mockito.ArgumentMatchers.any; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.never; import static org.mockito.Mockito.times; @@ -15,9 +16,11 @@ import com.google.common.collect.ImmutableList; import io.airbyte.commons.concurrency.VoidCallable; +import io.airbyte.protocol.models.AirbyteStreamNameNamespacePair; import java.util.Collections; import java.util.Iterator; import java.util.List; +import java.util.function.Consumer; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -26,31 +29,41 @@ class CompositeIteratorTest { private VoidCallable onClose1; private VoidCallable onClose2; private VoidCallable onClose3; + private Consumer airbyteStreamStatusConsumer; + private AirbyteStreamNameNamespacePair airbyteStream1; + private AirbyteStreamNameNamespacePair airbyteStream2; + private AirbyteStreamNameNamespacePair airbyteStream3; @BeforeEach void setup() { onClose1 = mock(VoidCallable.class); onClose2 = mock(VoidCallable.class); onClose3 = mock(VoidCallable.class); + airbyteStreamStatusConsumer = mock(Consumer.class); + airbyteStream1 = new AirbyteStreamNameNamespacePair("stream1", "namespace"); + airbyteStream2 = new AirbyteStreamNameNamespacePair("stream2", "namespace"); + airbyteStream3 = new AirbyteStreamNameNamespacePair("stream3", "namespace"); } @Test void testNullInput() { - assertThrows(NullPointerException.class, () -> new CompositeIterator<>(null)); + assertThrows(NullPointerException.class, () -> new CompositeIterator<>(null, airbyteStreamStatusConsumer)); + verify(airbyteStreamStatusConsumer, times(0)).accept(any()); } @Test void testEmptyInput() { - final AutoCloseableIterator iterator = new CompositeIterator<>(Collections.emptyList()); + final AutoCloseableIterator iterator = new CompositeIterator<>(Collections.emptyList(), airbyteStreamStatusConsumer); assertFalse(iterator.hasNext()); + verify(airbyteStreamStatusConsumer, times(0)).accept(any()); } @Test void testMultipleIterators() throws Exception { final AutoCloseableIterator iterator = new CompositeIterator<>(ImmutableList.of( - AutoCloseableIterators.fromIterator(MoreIterators.of("a", "b", "c"), onClose1), - AutoCloseableIterators.fromIterator(MoreIterators.of("d", "e", "f"), onClose2), - AutoCloseableIterators.fromIterator(MoreIterators.of("g", "h", "i"), onClose3))); + AutoCloseableIterators.fromIterator(MoreIterators.of("a", "b", "c"), onClose1, airbyteStream1), + AutoCloseableIterators.fromIterator(MoreIterators.of("d", "e", "f"), onClose2, airbyteStream2), + AutoCloseableIterators.fromIterator(MoreIterators.of("g", "h", "i"), onClose3, airbyteStream3)), airbyteStreamStatusConsumer); assertOnCloseInvocations(ImmutableList.of(), ImmutableList.of(onClose1, onClose2, onClose3)); assertNext(iterator, "a"); @@ -73,14 +86,15 @@ void testMultipleIterators() throws Exception { verify(onClose1, times(1)).call(); verify(onClose2, times(1)).call(); verify(onClose3, times(1)).call(); + verify(airbyteStreamStatusConsumer, times(9)).accept(any()); } @Test void testWithEmptyIterators() throws Exception { final AutoCloseableIterator iterator = new CompositeIterator<>(ImmutableList.of( - AutoCloseableIterators.fromIterator(MoreIterators.of("a", "b", "c"), onClose1), - AutoCloseableIterators.fromIterator(MoreIterators.of(), onClose2), - AutoCloseableIterators.fromIterator(MoreIterators.of("g", "h", "i"), onClose3))); + AutoCloseableIterators.fromIterator(MoreIterators.of("a", "b", "c"), onClose1, airbyteStream1), + AutoCloseableIterators.fromIterator(MoreIterators.of(), onClose2, airbyteStream2), + AutoCloseableIterators.fromIterator(MoreIterators.of("g", "h", "i"), onClose3, airbyteStream3)), airbyteStreamStatusConsumer); assertOnCloseInvocations(ImmutableList.of(), ImmutableList.of(onClose1, onClose2, onClose3)); assertNext(iterator, "a"); @@ -92,12 +106,13 @@ void testWithEmptyIterators() throws Exception { assertNext(iterator, "i"); assertFalse(iterator.hasNext()); assertOnCloseInvocations(ImmutableList.of(onClose1, onClose2, onClose3), ImmutableList.of()); + verify(airbyteStreamStatusConsumer, times(8)).accept(any()); } @Test void testCloseBeforeUsingItUp() throws Exception { final AutoCloseableIterator iterator = new CompositeIterator<>(ImmutableList.of( - AutoCloseableIterators.fromIterator(MoreIterators.of("a", "b", "c"), onClose1))); + AutoCloseableIterators.fromIterator(MoreIterators.of("a", "b", "c"), onClose1, airbyteStream1)), airbyteStreamStatusConsumer); assertOnCloseInvocations(ImmutableList.of(), ImmutableList.of(onClose1)); assertNext(iterator, "a"); @@ -105,13 +120,14 @@ void testCloseBeforeUsingItUp() throws Exception { assertOnCloseInvocations(ImmutableList.of(), ImmutableList.of(onClose1)); iterator.close(); assertOnCloseInvocations(ImmutableList.of(onClose1), ImmutableList.of()); + verify(airbyteStreamStatusConsumer, times(2)).accept(any()); } @SuppressWarnings("ResultOfMethodCallIgnored") @Test void testCannotOperateAfterClosing() throws Exception { final AutoCloseableIterator iterator = new CompositeIterator<>(ImmutableList.of( - AutoCloseableIterators.fromIterator(MoreIterators.of("a", "b", "c"), onClose1))); + AutoCloseableIterators.fromIterator(MoreIterators.of("a", "b", "c"), onClose1, airbyteStream1)), airbyteStreamStatusConsumer); assertOnCloseInvocations(ImmutableList.of(), ImmutableList.of(onClose1)); assertNext(iterator, "a"); @@ -120,6 +136,7 @@ void testCannotOperateAfterClosing() throws Exception { assertThrows(IllegalStateException.class, iterator::hasNext); assertThrows(IllegalStateException.class, iterator::next); iterator.close(); // still allowed to close again. + verify(airbyteStreamStatusConsumer, times(2)).accept(any()); } private void assertNext(final Iterator iterator, final String value) { diff --git a/airbyte-commons/src/test/java/io/airbyte/commons/util/DefaultAutoCloseableIteratorTest.java b/airbyte-commons/src/test/java/io/airbyte/commons/util/DefaultAutoCloseableIteratorTest.java index 1dc346bad81d7..18d1046ebff80 100644 --- a/airbyte-commons/src/test/java/io/airbyte/commons/util/DefaultAutoCloseableIteratorTest.java +++ b/airbyte-commons/src/test/java/io/airbyte/commons/util/DefaultAutoCloseableIteratorTest.java @@ -21,15 +21,15 @@ class DefaultAutoCloseableIteratorTest { @Test void testNullInput() { final VoidCallable onClose = mock(VoidCallable.class); - assertThrows(NullPointerException.class, () -> new DefaultAutoCloseableIterator<>(null, onClose)); - assertThrows(NullPointerException.class, () -> new DefaultAutoCloseableIterator<>(Collections.emptyIterator(), null)); - assertThrows(NullPointerException.class, () -> new DefaultAutoCloseableIterator<>(null, null)); + assertThrows(NullPointerException.class, () -> new DefaultAutoCloseableIterator<>(null, onClose, null)); + assertThrows(NullPointerException.class, () -> new DefaultAutoCloseableIterator<>(Collections.emptyIterator(), null, null)); + assertThrows(NullPointerException.class, () -> new DefaultAutoCloseableIterator<>(null, null, null)); } @Test void testEmptyInput() throws Exception { final VoidCallable onClose = mock(VoidCallable.class); - final AutoCloseableIterator iterator = new DefaultAutoCloseableIterator<>(Collections.emptyIterator(), onClose); + final AutoCloseableIterator iterator = new DefaultAutoCloseableIterator<>(Collections.emptyIterator(), onClose, null); assertFalse(iterator.hasNext()); iterator.close(); verify(onClose).call(); @@ -38,7 +38,7 @@ void testEmptyInput() throws Exception { @Test void test() throws Exception { final VoidCallable onClose = mock(VoidCallable.class); - final AutoCloseableIterator iterator = new DefaultAutoCloseableIterator<>(MoreIterators.of("a", "b", "c"), onClose); + final AutoCloseableIterator iterator = new DefaultAutoCloseableIterator<>(MoreIterators.of("a", "b", "c"), onClose, null); assertNext(iterator, "a"); assertNext(iterator, "b"); @@ -51,7 +51,7 @@ void test() throws Exception { @Test void testCannotOperateAfterClosing() throws Exception { final VoidCallable onClose = mock(VoidCallable.class); - final AutoCloseableIterator iterator = new DefaultAutoCloseableIterator<>(MoreIterators.of("a", "b", "c"), onClose); + final AutoCloseableIterator iterator = new DefaultAutoCloseableIterator<>(MoreIterators.of("a", "b", "c"), onClose, null); assertNext(iterator, "a"); assertNext(iterator, "b"); diff --git a/airbyte-commons/src/test/java/io/airbyte/commons/util/LazyAutoCloseableIteratorTest.java b/airbyte-commons/src/test/java/io/airbyte/commons/util/LazyAutoCloseableIteratorTest.java index d8bf15486aa6a..cf3c431b57259 100644 --- a/airbyte-commons/src/test/java/io/airbyte/commons/util/LazyAutoCloseableIteratorTest.java +++ b/airbyte-commons/src/test/java/io/airbyte/commons/util/LazyAutoCloseableIteratorTest.java @@ -35,15 +35,15 @@ void setup() { @Test void testNullInput() { - assertThrows(NullPointerException.class, () -> new LazyAutoCloseableIterator<>(null)); - final AutoCloseableIterator iteratorWithNullSupplier = new LazyAutoCloseableIterator<>(() -> null); + assertThrows(NullPointerException.class, () -> new LazyAutoCloseableIterator<>(null, null)); + final AutoCloseableIterator iteratorWithNullSupplier = new LazyAutoCloseableIterator<>(() -> null, null); assertThrows(NullPointerException.class, iteratorWithNullSupplier::next); } @Test void testEmptyInput() throws Exception { mockInternalIteratorWith(Collections.emptyIterator()); - final AutoCloseableIterator iterator = new LazyAutoCloseableIterator<>(iteratorSupplier); + final AutoCloseableIterator iterator = new LazyAutoCloseableIterator<>(iteratorSupplier, null); assertFalse(iterator.hasNext()); iterator.close(); @@ -54,7 +54,7 @@ void testEmptyInput() throws Exception { void test() throws Exception { mockInternalIteratorWith(MoreIterators.of("a", "b", "c")); - final AutoCloseableIterator iterator = new LazyAutoCloseableIterator<>(iteratorSupplier); + final AutoCloseableIterator iterator = new LazyAutoCloseableIterator<>(iteratorSupplier, null); verify(iteratorSupplier, never()).get(); assertNext(iterator, "a"); verify(iteratorSupplier).get(); @@ -68,7 +68,7 @@ void test() throws Exception { @Test void testCloseBeforeSupply() throws Exception { mockInternalIteratorWith(MoreIterators.of("a", "b", "c")); - final AutoCloseableIterator iterator = new LazyAutoCloseableIterator<>(iteratorSupplier); + final AutoCloseableIterator iterator = new LazyAutoCloseableIterator<>(iteratorSupplier, null); iterator.close(); verify(iteratorSupplier, never()).get(); } diff --git a/airbyte-config-oss/config-models-oss/src/test/java/io/airbyte/configoss/DataTypeEnumTest.java b/airbyte-config-oss/config-models-oss/src/test/java/io/airbyte/configoss/DataTypeEnumTest.java index d80109050443d..9bd09dc411c36 100644 --- a/airbyte-config-oss/config-models-oss/src/test/java/io/airbyte/configoss/DataTypeEnumTest.java +++ b/airbyte-config-oss/config-models-oss/src/test/java/io/airbyte/configoss/DataTypeEnumTest.java @@ -18,7 +18,7 @@ class DataTypeEnumTest { @Test void testConversionFromJsonSchemaPrimitiveToDataType() { assertEquals(5, DataType.class.getEnumConstants().length); - assertEquals(16, JsonSchemaPrimitive.class.getEnumConstants().length); + assertEquals(17, JsonSchemaPrimitive.class.getEnumConstants().length); assertEquals(DataType.STRING, DataType.fromValue(JsonSchemaPrimitive.STRING.toString().toLowerCase())); assertEquals(DataType.NUMBER, DataType.fromValue(JsonSchemaPrimitive.NUMBER.toString().toLowerCase())); diff --git a/airbyte-config-oss/init-oss/src/main/resources/seed/oss_catalog.json b/airbyte-config-oss/init-oss/src/main/resources/seed/oss_catalog.json index cebc3bd3857fd..dc50e30df659f 100644 --- a/airbyte-config-oss/init-oss/src/main/resources/seed/oss_catalog.json +++ b/airbyte-config-oss/init-oss/src/main/resources/seed/oss_catalog.json @@ -15045,7 +15045,7 @@ "sourceDefinitionId": "59f1e50a-331f-4f09-b3e8-2e8d4d355f44", "name": "Greenhouse", "dockerRepository": "airbyte/source-greenhouse", - "dockerImageTag": "0.3.1", + "dockerImageTag": "0.4.0", "documentationUrl": "https://docs.airbyte.com/integrations/sources/greenhouse", "icon": "greenhouse.svg", "sourceType": "api", @@ -17415,7 +17415,7 @@ "sourceDefinitionId": "9e0556f4-69df-4522-a3fb-03264d36b348", "name": "Marketo", "dockerRepository": "airbyte/source-marketo", - "dockerImageTag": "1.0.3", + "dockerImageTag": "1.0.4", "documentationUrl": "https://docs.airbyte.com/integrations/sources/marketo", "icon": "marketo.svg", "sourceType": "api", @@ -20376,7 +20376,7 @@ "sourceDefinitionId": "d913b0f2-cc51-4e55-a44c-8ba1697b9239", "name": "Paypal Transaction", "dockerRepository": "airbyte/source-paypal-transaction", - "dockerImageTag": "0.1.12", + "dockerImageTag": "0.1.13", "documentationUrl": "https://docs.airbyte.com/integrations/sources/paypal-transaction", "icon": "paypal.svg", "sourceType": "api", @@ -20411,8 +20411,9 @@ "type": "string", "title": "Start Date", "description": "Start Date for data extraction in ISO format. Date must be in range from 3 years till 12 hrs before present time.", - "examples": [ "2021-06-11T23:59:59-00:00" ], - "pattern": "^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}[+-][0-9]{2}:[0-9]{2}$" + "examples": [ "2021-06-11T23:59:59", "2021-06-11T23:59:59+00:00" ], + "pattern": "^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}(|Z|[+-][0-9]{2}:[0-9]{2})$", + "format": "date-time" }, "is_sandbox": { "title": "Sandbox", @@ -20615,7 +20616,7 @@ "sourceDefinitionId": "5cb7e5fe-38c2-11ec-8d3d-0242ac130003", "name": "Pinterest", "dockerRepository": "airbyte/source-pinterest", - "dockerImageTag": "0.2.5", + "dockerImageTag": "0.2.6", "documentationUrl": "https://docs.airbyte.com/integrations/sources/pinterest", "icon": "pinterest.svg", "sourceType": "api", @@ -21220,7 +21221,7 @@ "sourceDefinitionId": "decd338e-5647-4c0b-adf4-da0e75f5a750", "name": "Postgres", "dockerRepository": "airbyte/source-postgres", - "dockerImageTag": "2.0.25", + "dockerImageTag": "2.0.27", "documentationUrl": "https://docs.airbyte.com/integrations/sources/postgres", "icon": "postgresql.svg", "sourceType": "database", @@ -24905,7 +24906,7 @@ "sourceDefinitionId": "badc5925-0485-42be-8caa-b34096cb71b5", "name": "SurveyMonkey", "dockerRepository": "airbyte/source-surveymonkey", - "dockerImageTag": "0.1.16", + "dockerImageTag": "0.2.0", "documentationUrl": "https://docs.airbyte.com/integrations/sources/surveymonkey", "icon": "surveymonkey.svg", "sourceType": "api", diff --git a/airbyte-config-oss/init-oss/src/main/resources/seed/source_definitions.yaml b/airbyte-config-oss/init-oss/src/main/resources/seed/source_definitions.yaml index 865eaa11a6fa9..40b0e46cabb25 100644 --- a/airbyte-config-oss/init-oss/src/main/resources/seed/source_definitions.yaml +++ b/airbyte-config-oss/init-oss/src/main/resources/seed/source_definitions.yaml @@ -890,7 +890,7 @@ - name: Greenhouse sourceDefinitionId: 59f1e50a-331f-4f09-b3e8-2e8d4d355f44 dockerRepository: airbyte/source-greenhouse - dockerImageTag: 0.3.1 + dockerImageTag: 0.4.0 documentationUrl: https://docs.airbyte.com/integrations/sources/greenhouse icon: greenhouse.svg sourceType: api @@ -1213,7 +1213,7 @@ - name: Marketo sourceDefinitionId: 9e0556f4-69df-4522-a3fb-03264d36b348 dockerRepository: airbyte/source-marketo - dockerImageTag: 1.0.3 + dockerImageTag: 1.0.4 documentationUrl: https://docs.airbyte.com/integrations/sources/marketo icon: marketo.svg sourceType: api @@ -1487,7 +1487,7 @@ - name: Paypal Transaction sourceDefinitionId: d913b0f2-cc51-4e55-a44c-8ba1697b9239 dockerRepository: airbyte/source-paypal-transaction - dockerImageTag: 0.1.12 + dockerImageTag: 0.1.13 documentationUrl: https://docs.airbyte.com/integrations/sources/paypal-transaction icon: paypal.svg sourceType: api @@ -1534,7 +1534,7 @@ - name: Pinterest sourceDefinitionId: 5cb7e5fe-38c2-11ec-8d3d-0242ac130003 dockerRepository: airbyte/source-pinterest - dockerImageTag: 0.2.5 + dockerImageTag: 0.2.6 documentationUrl: https://docs.airbyte.com/integrations/sources/pinterest icon: pinterest.svg sourceType: api @@ -1619,7 +1619,7 @@ - name: Postgres sourceDefinitionId: decd338e-5647-4c0b-adf4-da0e75f5a750 dockerRepository: airbyte/source-postgres - dockerImageTag: 2.0.25 + dockerImageTag: 2.0.27 documentationUrl: https://docs.airbyte.com/integrations/sources/postgres icon: postgresql.svg sourceType: database @@ -2044,7 +2044,7 @@ - name: SurveyMonkey sourceDefinitionId: badc5925-0485-42be-8caa-b34096cb71b5 dockerRepository: airbyte/source-surveymonkey - dockerImageTag: 0.1.16 + dockerImageTag: 0.2.0 documentationUrl: https://docs.airbyte.com/integrations/sources/surveymonkey icon: surveymonkey.svg sourceType: api diff --git a/airbyte-config-oss/init-oss/src/main/resources/seed/source_specs.yaml b/airbyte-config-oss/init-oss/src/main/resources/seed/source_specs.yaml index 1460cb16f9a71..ca5706add01cf 100644 --- a/airbyte-config-oss/init-oss/src/main/resources/seed/source_specs.yaml +++ b/airbyte-config-oss/init-oss/src/main/resources/seed/source_specs.yaml @@ -6638,7 +6638,7 @@ supportsNormalization: false supportsDBT: false supported_destination_sync_modes: [] -- dockerImage: "airbyte/source-greenhouse:0.3.1" +- dockerImage: "airbyte/source-greenhouse:0.4.0" spec: documentationUrl: "https://docs.airbyte.com/integrations/sources/greenhouse" connectionSpecification: @@ -8586,7 +8586,7 @@ supportsNormalization: false supportsDBT: false supported_destination_sync_modes: [] -- dockerImage: "airbyte/source-marketo:1.0.3" +- dockerImage: "airbyte/source-marketo:1.0.4" spec: documentationUrl: "https://docs.airbyte.com/integrations/sources/marketo" connectionSpecification: @@ -11465,7 +11465,7 @@ supportsNormalization: false supportsDBT: false supported_destination_sync_modes: [] -- dockerImage: "airbyte/source-paypal-transaction:0.1.12" +- dockerImage: "airbyte/source-paypal-transaction:0.1.13" spec: documentationUrl: "https://docs.airbyte.com/integrations/sources/paypal-transactions" connectionSpecification: @@ -11499,8 +11499,10 @@ >ISO format. Date must be in range from 3 years till 12 hrs before\ \ present time." examples: - - "2021-06-11T23:59:59-00:00" - pattern: "^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}[+-][0-9]{2}:[0-9]{2}$" + - "2021-06-11T23:59:59" + - "2021-06-11T23:59:59+00:00" + pattern: "^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}(|Z|[+-][0-9]{2}:[0-9]{2})$" + format: "date-time" is_sandbox: title: "Sandbox" description: "Determines whether to use the sandbox or production environment." @@ -11651,7 +11653,7 @@ supportsNormalization: false supportsDBT: false supported_destination_sync_modes: [] -- dockerImage: "airbyte/source-pinterest:0.2.5" +- dockerImage: "airbyte/source-pinterest:0.2.6" spec: documentationUrl: "https://docs.airbyte.com/integrations/sources/pinterest" connectionSpecification: @@ -12152,7 +12154,7 @@ supportsNormalization: false supportsDBT: false supported_destination_sync_modes: [] -- dockerImage: "airbyte/source-postgres:2.0.25" +- dockerImage: "airbyte/source-postgres:2.0.27" spec: documentationUrl: "https://docs.airbyte.com/integrations/sources/postgres" connectionSpecification: @@ -15293,7 +15295,7 @@ supportsNormalization: false supportsDBT: false supported_destination_sync_modes: [] -- dockerImage: "airbyte/source-surveymonkey:0.1.16" +- dockerImage: "airbyte/source-surveymonkey:0.2.0" spec: documentationUrl: "https://docs.airbyte.com/integrations/sources/surveymonkey" connectionSpecification: diff --git a/airbyte-db/db-lib/src/main/java/io/airbyte/db/jdbc/JdbcUtils.java b/airbyte-db/db-lib/src/main/java/io/airbyte/db/jdbc/JdbcUtils.java index 60c74758144fe..6be3576e095ff 100644 --- a/airbyte-db/db-lib/src/main/java/io/airbyte/db/jdbc/JdbcUtils.java +++ b/airbyte-db/db-lib/src/main/java/io/airbyte/db/jdbc/JdbcUtils.java @@ -25,8 +25,6 @@ import com.fasterxml.jackson.databind.JsonNode; import com.google.common.collect.Maps; import java.sql.JDBCType; -import java.text.CharacterIterator; -import java.text.StringCharacterIterator; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -137,41 +135,4 @@ public static boolean useSsl(final JsonNode config) { return config.get(SSL_KEY).asBoolean(); } - /** - * Helper method for logging bytes in a human-readable format. This method logs in SI units - * (B/kB/MB/GB) - */ - public static String humanReadableByteCountSI(final long bytes) { - if (-1000 < bytes && bytes < 1000) { - return bytes + " B"; - } - final CharacterIterator ci = new StringCharacterIterator("kMGTPE"); - long formattedBytes = bytes; - while (bytes <= -999_950 || bytes >= 999_950) { - formattedBytes /= 1000; - ci.next(); - } - return String.format("%.1f %cB", formattedBytes / 1000.0, ci.current()); - } - - /** - * Helper method for logging bytes in a human-readable format. This method logs in Binary units - * (B/KiB/MiB/GiB) - */ - public static String humanReadableByteCountBin(final long bytes) { - final long absB = bytes == Long.MIN_VALUE ? Long.MAX_VALUE : Math.abs(bytes); - final int bytePrefixCount = 1024; - if (absB < bytePrefixCount) { - return bytes + " B"; - } - long value = absB; - final CharacterIterator ci = new StringCharacterIterator("KMGTPE"); - for (int i = 40; i >= 0 && absB > 0xfffccccccccccccL >> i; i -= 10) { - value >>= 10; - ci.next(); - } - value *= Long.signum(bytes); - return String.format("%.1f %ciB", value / 1024.0, ci.current()); - } - } diff --git a/airbyte-integrations/bases/base-java/src/main/java/io/airbyte/integrations/base/AirbyteTraceMessageUtility.java b/airbyte-integrations/bases/base-java/src/main/java/io/airbyte/integrations/base/AirbyteTraceMessageUtility.java index e81f73e8e8af3..d7e1e524bd134 100644 --- a/airbyte-integrations/bases/base-java/src/main/java/io/airbyte/integrations/base/AirbyteTraceMessageUtility.java +++ b/airbyte-integrations/bases/base-java/src/main/java/io/airbyte/integrations/base/AirbyteTraceMessageUtility.java @@ -4,6 +4,7 @@ package io.airbyte.integrations.base; +import io.airbyte.commons.stream.AirbyteStreamStatusHolder; import io.airbyte.protocol.models.v0.AirbyteErrorTraceMessage; import io.airbyte.protocol.models.v0.AirbyteErrorTraceMessage.FailureType; import io.airbyte.protocol.models.v0.AirbyteEstimateTraceMessage; @@ -44,6 +45,10 @@ public static void emitErrorTrace(final Throwable e, final String displayMessage emitMessage(makeErrorTraceAirbyteMessage(e, displayMessage, failureType)); } + public static void emitStreamStatusTrace(final AirbyteStreamStatusHolder airbyteStreamStatusHolder) { + emitMessage(makeStreamStatusTraceAirbyteMessage(airbyteStreamStatusHolder)); + } + // todo: handle the other types of trace message we'll expect in the future, see // io.airbyte.protocol.models.v0.AirbyteTraceMessage // & the tech spec: @@ -72,6 +77,10 @@ private static AirbyteMessage makeErrorTraceAirbyteMessage( .withStackTrace(ExceptionUtils.getStackTrace(e)))); } + private static AirbyteMessage makeStreamStatusTraceAirbyteMessage(final AirbyteStreamStatusHolder airbyteStreamStatusHolder) { + return makeAirbyteMessageFromTraceMessage(airbyteStreamStatusHolder.toTraceMessage()); + } + private static AirbyteMessage makeAirbyteMessageFromTraceMessage(final AirbyteTraceMessage airbyteTraceMessage) { return new AirbyteMessage().withType(Type.TRACE).withTrace(airbyteTraceMessage); } diff --git a/airbyte-integrations/bases/base-normalization/Dockerfile b/airbyte-integrations/bases/base-normalization/Dockerfile index e1d50e40307a5..5efc4606234ff 100644 --- a/airbyte-integrations/bases/base-normalization/Dockerfile +++ b/airbyte-integrations/bases/base-normalization/Dockerfile @@ -28,5 +28,5 @@ WORKDIR /airbyte ENV AIRBYTE_ENTRYPOINT "/airbyte/entrypoint.sh" ENTRYPOINT ["/airbyte/entrypoint.sh"] -LABEL io.airbyte.version=0.4.0 +LABEL io.airbyte.version=0.4.1 LABEL io.airbyte.name=airbyte/normalization diff --git a/airbyte-integrations/bases/base-normalization/oracle.Dockerfile b/airbyte-integrations/bases/base-normalization/oracle.Dockerfile index bf245e2078124..971338980e099 100644 --- a/airbyte-integrations/bases/base-normalization/oracle.Dockerfile +++ b/airbyte-integrations/bases/base-normalization/oracle.Dockerfile @@ -42,6 +42,11 @@ RUN pip install . RUN pip install dbt-oracle==0.4.3 WORKDIR /airbyte/normalization_code/dbt-template/ + +# Pin MarkupSafe to 2.0.1 per this issue for dbt +# https://github.com/dbt-labs/dbt-core/issues/4745#issuecomment-1044165591 +RUN pip install --force-reinstall MarkupSafe==2.0.1 + # Download external dbt dependencies RUN dbt deps diff --git a/airbyte-integrations/connectors/source-azure-blob-storage/build.gradle b/airbyte-integrations/connectors/source-azure-blob-storage/build.gradle index 2fcb2b92483f7..bc2e8f3730a7a 100644 --- a/airbyte-integrations/connectors/source-azure-blob-storage/build.gradle +++ b/airbyte-integrations/connectors/source-azure-blob-storage/build.gradle @@ -11,7 +11,6 @@ application { dependencies { implementation project(':airbyte-integrations:bases:base-java') - //implementation project(':airbyte-protocol:protocol-models') implementation libs.airbyte.protocol implementation project(':airbyte-integrations:connectors:source-relational-db') implementation project(':airbyte-config-oss:config-models-oss') diff --git a/airbyte-integrations/connectors/source-azure-blob-storage/src/main/java/io/airbyte/integrations/source/azureblobstorage/AzureBlobStorageSource.java b/airbyte-integrations/connectors/source-azure-blob-storage/src/main/java/io/airbyte/integrations/source/azureblobstorage/AzureBlobStorageSource.java index 820c0b5b6ee22..0b6fb64d46731 100644 --- a/airbyte-integrations/connectors/source-azure-blob-storage/src/main/java/io/airbyte/integrations/source/azureblobstorage/AzureBlobStorageSource.java +++ b/airbyte-integrations/connectors/source-azure-blob-storage/src/main/java/io/airbyte/integrations/source/azureblobstorage/AzureBlobStorageSource.java @@ -1,12 +1,17 @@ +/* + * Copyright (c) 2023 Airbyte, Inc., all rights reserved. + */ + package io.airbyte.integrations.source.azureblobstorage; import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.ObjectMapper; import io.airbyte.commons.features.EnvVariableFeatureFlags; import io.airbyte.commons.features.FeatureFlags; +import io.airbyte.commons.stream.AirbyteStreamUtils; import io.airbyte.commons.util.AutoCloseableIterator; import io.airbyte.commons.util.AutoCloseableIterators; import io.airbyte.integrations.BaseConnector; +import io.airbyte.integrations.base.AirbyteTraceMessageUtility; import io.airbyte.integrations.base.IntegrationRunner; import io.airbyte.integrations.base.Source; import io.airbyte.integrations.source.azureblobstorage.format.JsonlAzureBlobStorageOperations; @@ -32,129 +37,137 @@ public class AzureBlobStorageSource extends BaseConnector implements Source { - private static final Logger LOGGER = LoggerFactory.getLogger(AzureBlobStorageSource.class); - - private final FeatureFlags featureFlags = new EnvVariableFeatureFlags(); - - public static void main(final String[] args) throws Exception { - final Source source = new AzureBlobStorageSource(); - LOGGER.info("starting Source: {}", AzureBlobStorageSource.class); - new IntegrationRunner(source).run(args); - LOGGER.info("completed Source: {}", AzureBlobStorageSource.class); - } - - @Override - public AirbyteConnectionStatus check(JsonNode config) { - var azureBlobStorageConfig = AzureBlobStorageConfig.createAzureBlobStorageConfig(config); - try { - var azureBlobStorageOperations = switch (azureBlobStorageConfig.formatConfig().format()) { - case JSONL -> new JsonlAzureBlobStorageOperations(azureBlobStorageConfig); - }; - azureBlobStorageOperations.listBlobs(); - - return new AirbyteConnectionStatus() - .withStatus(AirbyteConnectionStatus.Status.SUCCEEDED); - } catch (Exception e) { - LOGGER.error("Error while listing Azure Blob Storage blobs with reason: ", e); - return new AirbyteConnectionStatus() - .withStatus(AirbyteConnectionStatus.Status.FAILED); - } - - } - - @Override - public AirbyteCatalog discover(JsonNode config) { - var azureBlobStorageConfig = AzureBlobStorageConfig.createAzureBlobStorageConfig(config); - - var azureBlobStorageOperations = switch (azureBlobStorageConfig.formatConfig().format()) { - case JSONL -> new JsonlAzureBlobStorageOperations(azureBlobStorageConfig); - }; - - JsonNode schema = azureBlobStorageOperations.inferSchema(); - - return new AirbyteCatalog() - .withStreams(List.of(new AirbyteStream() - .withName(azureBlobStorageConfig.containerName()) - .withJsonSchema(schema) - .withSourceDefinedCursor(true) - .withDefaultCursorField(List.of(AzureBlobAdditionalProperties.LAST_MODIFIED)) - .withSupportedSyncModes(List.of(SyncMode.INCREMENTAL, SyncMode.FULL_REFRESH)))); + private static final Logger LOGGER = LoggerFactory.getLogger(AzureBlobStorageSource.class); + + private final FeatureFlags featureFlags = new EnvVariableFeatureFlags(); + + public static void main(final String[] args) throws Exception { + final Source source = new AzureBlobStorageSource(); + LOGGER.info("starting Source: {}", AzureBlobStorageSource.class); + new IntegrationRunner(source).run(args); + LOGGER.info("completed Source: {}", AzureBlobStorageSource.class); + } + + @Override + public AirbyteConnectionStatus check(JsonNode config) { + var azureBlobStorageConfig = AzureBlobStorageConfig.createAzureBlobStorageConfig(config); + try { + var azureBlobStorageOperations = switch (azureBlobStorageConfig.formatConfig().format()) { + case JSONL -> new JsonlAzureBlobStorageOperations(azureBlobStorageConfig); + }; + azureBlobStorageOperations.listBlobs(); + + return new AirbyteConnectionStatus() + .withStatus(AirbyteConnectionStatus.Status.SUCCEEDED); + } catch (Exception e) { + LOGGER.error("Error while listing Azure Blob Storage blobs with reason: ", e); + return new AirbyteConnectionStatus() + .withStatus(AirbyteConnectionStatus.Status.FAILED); } - @Override - public AutoCloseableIterator read(JsonNode config, ConfiguredAirbyteCatalog catalog, JsonNode state) { + } + + @Override + public AirbyteCatalog discover(JsonNode config) { + var azureBlobStorageConfig = AzureBlobStorageConfig.createAzureBlobStorageConfig(config); + + var azureBlobStorageOperations = switch (azureBlobStorageConfig.formatConfig().format()) { + case JSONL -> new JsonlAzureBlobStorageOperations(azureBlobStorageConfig); + }; + + JsonNode schema = azureBlobStorageOperations.inferSchema(); + + return new AirbyteCatalog() + .withStreams(List.of(new AirbyteStream() + .withName(azureBlobStorageConfig.containerName()) + .withJsonSchema(schema) + .withSourceDefinedCursor(true) + .withDefaultCursorField(List.of(AzureBlobAdditionalProperties.LAST_MODIFIED)) + .withSupportedSyncModes(List.of(SyncMode.INCREMENTAL, SyncMode.FULL_REFRESH)))); + } + + @Override + public AutoCloseableIterator read(JsonNode config, ConfiguredAirbyteCatalog catalog, JsonNode state) { + + final var streamState = + AzureBlobStorageStateManager.deserializeStreamState(state, featureFlags.useStreamCapableState()); + + final StateManager stateManager = StateManagerFactory + .createStateManager(streamState.airbyteStateType(), streamState.airbyteStateMessages(), catalog); + + var azureBlobStorageConfig = AzureBlobStorageConfig.createAzureBlobStorageConfig(config); + var azureBlobStorageOperations = switch (azureBlobStorageConfig.formatConfig().format()) { + case JSONL -> new JsonlAzureBlobStorageOperations(azureBlobStorageConfig); + }; + + // only one stream per connection + var streamIterators = catalog.getStreams().stream() + .map(cas -> switch (cas.getSyncMode()) { + case INCREMENTAL -> readIncremental(azureBlobStorageOperations, cas.getStream(), cas.getCursorField().get(0), + stateManager); + case FULL_REFRESH -> readFullRefresh(azureBlobStorageOperations, cas.getStream()); + }) + .toList(); + + return AutoCloseableIterators.concatWithEagerClose(streamIterators, AirbyteTraceMessageUtility::emitStreamStatusTrace); + + } + + private AutoCloseableIterator readIncremental(AzureBlobStorageOperations azureBlobStorageOperations, + AirbyteStream airbyteStream, + String cursorField, + StateManager stateManager) { + var streamPair = new AirbyteStreamNameNamespacePair(airbyteStream.getName(), airbyteStream.getNamespace()); + + Optional cursorInfo = stateManager.getCursorInfo(streamPair); + + var messageStream = cursorInfo + .map(cursor -> { + var offsetDateTime = cursor.getCursor() != null ? OffsetDateTime.parse(cursor.getCursor()) : null; + return azureBlobStorageOperations.readBlobs(offsetDateTime); + }) + .orElse(azureBlobStorageOperations.readBlobs(null)) + .stream() + .map(jn -> new AirbyteMessage() + .withType(AirbyteMessage.Type.RECORD) + .withRecord(new AirbyteRecordMessage() + .withStream(airbyteStream.getName()) + .withEmittedAt(Instant.now().toEpochMilli()) + .withData(jn))); + + final io.airbyte.protocol.models.AirbyteStreamNameNamespacePair airbyteStreamNameNamespacePair = + AirbyteStreamUtils.convertFromAirbyteStream(airbyteStream); + + return AutoCloseableIterators.transform(autoCloseableIterator -> new StateDecoratingIterator( + autoCloseableIterator, + stateManager, + streamPair, + cursorField, + cursorInfo.map(CursorInfo::getCursor).orElse(null), + JsonSchemaPrimitiveUtil.JsonSchemaPrimitive.TIMESTAMP_WITH_TIMEZONE_V1, + // TODO (itaseski) emit state after every record/blob since they can be sorted in increasing order + 0), + AutoCloseableIterators.fromStream(messageStream, airbyteStreamNameNamespacePair), + airbyteStreamNameNamespacePair); + } + + private AutoCloseableIterator readFullRefresh(AzureBlobStorageOperations azureBlobStorageOperations, + AirbyteStream airbyteStream) { + + final io.airbyte.protocol.models.AirbyteStreamNameNamespacePair airbyteStreamNameNamespacePair = + AirbyteStreamUtils.convertFromAirbyteStream(airbyteStream); + + var messageStream = azureBlobStorageOperations + .readBlobs(null) + .stream() + .map(jn -> new AirbyteMessage() + .withType(AirbyteMessage.Type.RECORD) + .withRecord(new AirbyteRecordMessage() + .withStream(airbyteStream.getName()) + .withEmittedAt(Instant.now().toEpochMilli()) + .withData(jn))); + + return AutoCloseableIterators.fromStream(messageStream, airbyteStreamNameNamespacePair); + } - final var streamState = - AzureBlobStorageStateManager.deserializeStreamState(state, featureFlags.useStreamCapableState()); - - final StateManager stateManager = StateManagerFactory - .createStateManager(streamState.airbyteStateType(), streamState.airbyteStateMessages(), catalog); - - var azureBlobStorageConfig = AzureBlobStorageConfig.createAzureBlobStorageConfig(config); - var azureBlobStorageOperations = switch (azureBlobStorageConfig.formatConfig().format()) { - case JSONL -> new JsonlAzureBlobStorageOperations(azureBlobStorageConfig); - }; - - // only one stream per connection - var streamIterators = catalog.getStreams().stream() - .map(cas -> switch (cas.getSyncMode()) { - case INCREMENTAL -> - readIncremental(azureBlobStorageOperations, cas.getStream(), cas.getCursorField().get(0), - stateManager); - case FULL_REFRESH -> readFullRefresh(azureBlobStorageOperations, cas.getStream()); - }) - .toList(); - - return AutoCloseableIterators.concatWithEagerClose(streamIterators); - - } - - private AutoCloseableIterator readIncremental(AzureBlobStorageOperations azureBlobStorageOperations, - AirbyteStream airbyteStream, - String cursorField, - StateManager stateManager) { - var streamPair = new AirbyteStreamNameNamespacePair(airbyteStream.getName(), airbyteStream.getNamespace()); - - Optional cursorInfo = stateManager.getCursorInfo(streamPair); - - var messageStream = cursorInfo - .map(cursor -> { - var offsetDateTime = cursor.getCursor() != null ? OffsetDateTime.parse(cursor.getCursor()) : null; - return azureBlobStorageOperations.readBlobs(offsetDateTime); - }) - .orElse(azureBlobStorageOperations.readBlobs(null)) - .stream() - .map(jn -> new AirbyteMessage() - .withType(AirbyteMessage.Type.RECORD) - .withRecord(new AirbyteRecordMessage() - .withStream(airbyteStream.getName()) - .withEmittedAt(Instant.now().toEpochMilli()) - .withData(jn))); - - return AutoCloseableIterators.transform(autoCloseableIterator -> new StateDecoratingIterator( - autoCloseableIterator, - stateManager, - streamPair, - cursorField, - cursorInfo.map(CursorInfo::getCursor).orElse(null), - JsonSchemaPrimitiveUtil.JsonSchemaPrimitive.TIMESTAMP_WITH_TIMEZONE_V1, - // TODO (itaseski) emit state after every record/blob since they can be sorted in increasing order - 0), - AutoCloseableIterators.fromStream(messageStream)); - } - - private AutoCloseableIterator readFullRefresh(AzureBlobStorageOperations azureBlobStorageOperations, - AirbyteStream airbyteStream) { - var messageStream = azureBlobStorageOperations - .readBlobs(null) - .stream() - .map(jn -> new AirbyteMessage() - .withType(AirbyteMessage.Type.RECORD) - .withRecord(new AirbyteRecordMessage() - .withStream(airbyteStream.getName()) - .withEmittedAt(Instant.now().toEpochMilli()) - .withData(jn))); - - return AutoCloseableIterators.fromStream(messageStream); - } } diff --git a/airbyte-integrations/connectors/source-bigquery/src/main/java/io/airbyte/integrations/source/bigquery/BigQuerySource.java b/airbyte-integrations/connectors/source-bigquery/src/main/java/io/airbyte/integrations/source/bigquery/BigQuerySource.java index 31056c0fe5427..32fdaab9c3c5e 100644 --- a/airbyte-integrations/connectors/source-bigquery/src/main/java/io/airbyte/integrations/source/bigquery/BigQuerySource.java +++ b/airbyte-integrations/connectors/source-bigquery/src/main/java/io/airbyte/integrations/source/bigquery/BigQuerySource.java @@ -15,6 +15,7 @@ import com.google.common.collect.ImmutableMap; import io.airbyte.commons.functional.CheckedConsumer; import io.airbyte.commons.json.Jsons; +import io.airbyte.commons.stream.AirbyteStreamUtils; import io.airbyte.commons.util.AutoCloseableIterator; import io.airbyte.commons.util.AutoCloseableIterators; import io.airbyte.db.SqlDatabase; @@ -26,6 +27,7 @@ import io.airbyte.integrations.source.relationaldb.CursorInfo; import io.airbyte.integrations.source.relationaldb.RelationalDbQueryUtils; import io.airbyte.integrations.source.relationaldb.TableInfo; +import io.airbyte.protocol.models.AirbyteStreamNameNamespacePair; import io.airbyte.protocol.models.CommonField; import io.airbyte.protocol.models.JsonSchemaType; import io.airbyte.protocol.models.v0.SyncMode; @@ -153,6 +155,8 @@ public AutoCloseableIterator queryTableIncremental(final BigQueryDatab RelationalDbQueryUtils.enquoteIdentifierList(columnNames, getQuoteString()), getFullyQualifiedTableNameWithQuoting(schemaName, tableName, getQuoteString()), cursorInfo.getCursorField()), + schemaName, + tableName, sourceOperations.getQueryParameter(cursorFieldType, cursorInfo.getCursor())); } @@ -166,7 +170,8 @@ protected AutoCloseableIterator queryTableFullRefresh(final BigQueryDa LOGGER.info("Queueing query for table: {}", tableName); return queryTable(database, String.format("SELECT %s FROM %s", enquoteIdentifierList(columnNames, getQuoteString()), - getFullyQualifiedTableNameWithQuoting(schemaName, tableName, getQuoteString()))); + getFullyQualifiedTableNameWithQuoting(schemaName, tableName, getQuoteString())), + tableName, schemaName); } @Override @@ -176,15 +181,18 @@ public boolean isCursorType(final StandardSQLTypeName standardSQLTypeName) { private AutoCloseableIterator queryTableWithParams(final BigQueryDatabase database, final String sqlQuery, + final String schemaName, + final String tableName, final QueryParameterValue... params) { + final AirbyteStreamNameNamespacePair airbyteStream = AirbyteStreamUtils.convertFromNameAndNamespace(tableName, schemaName); return AutoCloseableIterators.lazyIterator(() -> { try { final Stream stream = database.query(sqlQuery, params); - return AutoCloseableIterators.fromStream(stream); + return AutoCloseableIterators.fromStream(stream, airbyteStream); } catch (final Exception e) { throw new RuntimeException(e); } - }); + }, airbyteStream); } private boolean isDatasetConfigured(final SqlDatabase database) { diff --git a/airbyte-integrations/connectors/source-dynamodb/src/main/java/io/airbyte/integrations/source/dynamodb/DynamodbSource.java b/airbyte-integrations/connectors/source-dynamodb/src/main/java/io/airbyte/integrations/source/dynamodb/DynamodbSource.java index 8e22709e73f21..987aedd4a7d74 100644 --- a/airbyte-integrations/connectors/source-dynamodb/src/main/java/io/airbyte/integrations/source/dynamodb/DynamodbSource.java +++ b/airbyte-integrations/connectors/source-dynamodb/src/main/java/io/airbyte/integrations/source/dynamodb/DynamodbSource.java @@ -14,6 +14,7 @@ import io.airbyte.commons.util.AutoCloseableIterator; import io.airbyte.commons.util.AutoCloseableIterators; import io.airbyte.integrations.BaseConnector; +import io.airbyte.integrations.base.AirbyteTraceMessageUtility; import io.airbyte.integrations.base.IntegrationRunner; import io.airbyte.integrations.base.Source; import io.airbyte.integrations.source.relationaldb.CursorInfo; @@ -112,7 +113,7 @@ public AutoCloseableIterator read(final JsonNode config, }) .toList(); - return AutoCloseableIterators.concatWithEagerClose(streamIterators); + return AutoCloseableIterators.concatWithEagerClose(streamIterators, AirbyteTraceMessageUtility::emitStreamStatusTrace); } } diff --git a/airbyte-integrations/connectors/source-elasticsearch/src/main/java/io/airbyte/integrations/source/elasticsearch/ElasticsearchSource.java b/airbyte-integrations/connectors/source-elasticsearch/src/main/java/io/airbyte/integrations/source/elasticsearch/ElasticsearchSource.java index da3be276e462a..286c62c17f2c0 100644 --- a/airbyte-integrations/connectors/source-elasticsearch/src/main/java/io/airbyte/integrations/source/elasticsearch/ElasticsearchSource.java +++ b/airbyte-integrations/connectors/source-elasticsearch/src/main/java/io/airbyte/integrations/source/elasticsearch/ElasticsearchSource.java @@ -11,6 +11,7 @@ import io.airbyte.commons.util.AutoCloseableIterator; import io.airbyte.commons.util.AutoCloseableIterators; import io.airbyte.integrations.BaseConnector; +import io.airbyte.integrations.base.AirbyteTraceMessageUtility; import io.airbyte.integrations.base.IntegrationRunner; import io.airbyte.integrations.base.Source; import io.airbyte.protocol.models.v0.AirbyteCatalog; @@ -100,11 +101,12 @@ public AutoCloseableIterator read(JsonNode config, ConfiguredAir .map(ConfiguredAirbyteStream::getStream) .forEach(stream -> { AutoCloseableIterator data = ElasticsearchUtils.getDataIterator(connection, stream); - AutoCloseableIterator messageIterator = ElasticsearchUtils.getMessageIterator(data, stream.getName()); + AutoCloseableIterator messageIterator = + ElasticsearchUtils.getMessageIterator(data, stream.getName(), stream.getNamespace()); iteratorList.add(messageIterator); }); return AutoCloseableIterators - .appendOnClose(AutoCloseableIterators.concatWithEagerClose(iteratorList), () -> { + .appendOnClose(AutoCloseableIterators.concatWithEagerClose(iteratorList, AirbyteTraceMessageUtility::emitStreamStatusTrace), () -> { LOGGER.info("Closing server connection."); connection.close(); LOGGER.info("Closed server connection."); diff --git a/airbyte-integrations/connectors/source-elasticsearch/src/main/java/io/airbyte/integrations/source/elasticsearch/ElasticsearchUtils.java b/airbyte-integrations/connectors/source-elasticsearch/src/main/java/io/airbyte/integrations/source/elasticsearch/ElasticsearchUtils.java index 7d89f76ee6b54..de8caa9e66cff 100644 --- a/airbyte-integrations/connectors/source-elasticsearch/src/main/java/io/airbyte/integrations/source/elasticsearch/ElasticsearchUtils.java +++ b/airbyte-integrations/connectors/source-elasticsearch/src/main/java/io/airbyte/integrations/source/elasticsearch/ElasticsearchUtils.java @@ -5,8 +5,10 @@ package io.airbyte.integrations.source.elasticsearch; import com.fasterxml.jackson.databind.JsonNode; +import io.airbyte.commons.stream.AirbyteStreamUtils; import io.airbyte.commons.util.AutoCloseableIterator; import io.airbyte.commons.util.AutoCloseableIterators; +import io.airbyte.protocol.models.AirbyteStreamNameNamespacePair; import io.airbyte.protocol.models.v0.AirbyteMessage; import io.airbyte.protocol.models.v0.AirbyteRecordMessage; import io.airbyte.protocol.models.v0.AirbyteStream; @@ -17,24 +19,28 @@ public class ElasticsearchUtils { public static AutoCloseableIterator getDataIterator(final ElasticsearchConnection connection, final AirbyteStream stream) { + final AirbyteStreamNameNamespacePair airbyteStream = AirbyteStreamUtils.convertFromAirbyteStream(stream); return AutoCloseableIterators.lazyIterator(() -> { try { List data = connection.getRecords(stream.getName()); - return AutoCloseableIterators.fromIterator(data.iterator()); + return AutoCloseableIterators.fromIterator(data.iterator(), airbyteStream); } catch (final Exception e) { throw new RuntimeException(e); } - }); + }, airbyteStream); } public static AutoCloseableIterator getMessageIterator(final AutoCloseableIterator recordIterator, - final String streamName) { - return AutoCloseableIterators.transform(recordIterator, r -> new AirbyteMessage() - .withType(AirbyteMessage.Type.RECORD) - .withRecord(new AirbyteRecordMessage() - .withStream(streamName) - .withEmittedAt(Instant.now().toEpochMilli()) - .withData(r))); + final String streamName, + final String streamNamespace) { + return AutoCloseableIterators.transform(recordIterator, + AirbyteStreamUtils.convertFromNameAndNamespace(streamName, streamNamespace), + r -> new AirbyteMessage() + .withType(AirbyteMessage.Type.RECORD) + .withRecord(new AirbyteRecordMessage() + .withStream(streamName) + .withEmittedAt(Instant.now().toEpochMilli()) + .withData(r))); } } diff --git a/airbyte-integrations/connectors/source-file/metadata.yaml b/airbyte-integrations/connectors/source-file/metadata.yaml index d6fc7a5f7876c..ef03f951dcb66 100644 --- a/airbyte-integrations/connectors/source-file/metadata.yaml +++ b/airbyte-integrations/connectors/source-file/metadata.yaml @@ -11,7 +11,7 @@ data: connectorSubtype: file connectorType: source definitionId: 778daa7c-feaf-4db6-96f3-70fd645acc77 - dockerImageTag: 0.3.O + dockerImageTag: 0.3.0 dockerRepository: airbyte/source-file githubIssueLabel: source-file icon: file.svg diff --git a/airbyte-integrations/connectors/source-gitlab/integration_tests/expected_records.jsonl b/airbyte-integrations/connectors/source-gitlab/integration_tests/expected_records.jsonl index 373c9ec1d3265..e24f5444bbdb8 100644 --- a/airbyte-integrations/connectors/source-gitlab/integration_tests/expected_records.jsonl +++ b/airbyte-integrations/connectors/source-gitlab/integration_tests/expected_records.jsonl @@ -1,132 +1,101 @@ -{"stream": "groups", "data": {"id": 11329647, "web_url": "https://gitlab.com/groups/new-group-airbute", "name": "New Group Airbute", "path": "new-group-airbute", "description": "", "visibility": "public", "share_with_group_lock": false, "require_two_factor_authentication": false, "two_factor_grace_period": 48, "project_creation_level": "developer", "auto_devops_enabled": null, "subgroup_creation_level": "maintainer", "emails_disabled": null, "mentions_disabled": null, "lfs_enabled": true, "default_branch_protection": 2, "avatar_url": null, "request_access_enabled": true, "full_name": "New Group Airbute", "full_path": "new-group-airbute", "created_at": "2021-03-15T15:55:53.613Z", "parent_id": null, "ldap_cn": null, "ldap_access": null, "wiki_access_level": "enabled", "shared_with_groups": [], "runners_token": "GR1348941-PhosPap-Sf1UxL1g6m4", "prevent_sharing_groups_outside_hierarchy": false, "shared_projects": [], "shared_runners_minutes_limit": null, "extra_shared_runners_minutes_limit": null, "prevent_forking_outside_group": null, "membership_lock": false, "projects": [{"id": 25157276, "path_with_namespace": "new-group-airbute/new-ci-test-project"}]}, "emitted_at": 1674055483187} -{"stream": "groups", "data": {"id": 61014882, "web_url": "https://gitlab.com/groups/new-group-airbute/test-subgroup-airbyte/test-private-sg", "name": "Test Private SG", "path": "test-private-sg", "description": "", "visibility": "private", "share_with_group_lock": false, "require_two_factor_authentication": false, "two_factor_grace_period": 48, "project_creation_level": "developer", "auto_devops_enabled": null, "subgroup_creation_level": "maintainer", "emails_disabled": null, "mentions_disabled": null, "lfs_enabled": true, "default_branch_protection": 2, "avatar_url": null, "request_access_enabled": true, "full_name": "New Group Airbute / Test Subgroup Airbyte / Test Private SG", "full_path": "new-group-airbute/test-subgroup-airbyte/test-private-sg", "created_at": "2022-12-02T08:46:22.648Z", "parent_id": 61014863, "ldap_cn": null, "ldap_access": null, "wiki_access_level": "enabled", "shared_with_groups": [], "runners_token": "GR1348941bjUaJQy2zzar-JmNBjfq", "shared_projects": [], "shared_runners_minutes_limit": null, "extra_shared_runners_minutes_limit": null, "prevent_forking_outside_group": null, "membership_lock": false, "projects": []}, "emitted_at": 1674055483596} -{"stream": "groups", "data": {"id": 61015181, "web_url": "https://gitlab.com/groups/new-group-airbute/test-public-sg/test-sg-public-2/test-private-subsubg-1", "name": "Test Private SubSubG 1", "path": "test-private-subsubg-1", "description": "", "visibility": "private", "share_with_group_lock": false, "require_two_factor_authentication": false, "two_factor_grace_period": 48, "project_creation_level": "developer", "auto_devops_enabled": null, "subgroup_creation_level": "maintainer", "emails_disabled": null, "mentions_disabled": null, "lfs_enabled": true, "default_branch_protection": 2, "avatar_url": null, "request_access_enabled": true, "full_name": "New Group Airbute / Test Public SG / Test SG Public 2 / Test Private SubSubG 1", "full_path": "new-group-airbute/test-public-sg/test-sg-public-2/test-private-subsubg-1", "created_at": "2022-12-02T08:54:42.252Z", "parent_id": 61014943, "ldap_cn": null, "ldap_access": null, "wiki_access_level": "enabled", "shared_with_groups": [], "runners_token": "GR1348941x8xQf6K-UvnnyJ-bcut4", "shared_projects": [], "shared_runners_minutes_limit": null, "extra_shared_runners_minutes_limit": null, "prevent_forking_outside_group": null, "membership_lock": false, "projects": [{"id": 41551658, "path_with_namespace": "new-group-airbute/test-public-sg/test-sg-public-2/test-private-subsubg-1/test_project_in_nested_subgroup"}]}, "emitted_at": 1674055484432} -{"stream": "projects", "data": {"id": 41541906, "description": "Project description", "name": "Test Public Project 1", "name_with_namespace": "New Group Airbute / Test Public SG / Test Public Project 1", "path": "test-public-project-1", "path_with_namespace": "new-group-airbute/test-public-sg/test-public-project-1", "created_at": "2022-12-02T08:52:11.319Z", "default_branch": "master", "tag_list": [], "topics": [], "ssh_url_to_repo": "git@gitlab.com:new-group-airbute/test-public-sg/test-public-project-1.git", "http_url_to_repo": "https://gitlab.com/new-group-airbute/test-public-sg/test-public-project-1.git", "web_url": "https://gitlab.com/new-group-airbute/test-public-sg/test-public-project-1", "readme_url": "https://gitlab.com/new-group-airbute/test-public-sg/test-public-project-1/-/blob/master/README.md", "forks_count": 0, "avatar_url": null, "star_count": 0, "last_activity_at": "2022-12-02T08:52:11.319Z", "namespace": {"id": 61014902, "name": "Test Public SG", "path": "test-public-sg", "kind": "group", "full_path": "new-group-airbute/test-public-sg", "parent_id": 11329647, "avatar_url": null, "web_url": "https://gitlab.com/groups/new-group-airbute/test-public-sg"}, "container_registry_image_prefix": "registry.gitlab.com/new-group-airbute/test-public-sg/test-public-project-1", "_links": {"self": "https://gitlab.com/api/v4/projects/41541906", "issues": "https://gitlab.com/api/v4/projects/41541906/issues", "merge_requests": "https://gitlab.com/api/v4/projects/41541906/merge_requests", "repo_branches": "https://gitlab.com/api/v4/projects/41541906/repository/branches", "labels": "https://gitlab.com/api/v4/projects/41541906/labels", "events": "https://gitlab.com/api/v4/projects/41541906/events", "members": "https://gitlab.com/api/v4/projects/41541906/members", "cluster_agents": "https://gitlab.com/api/v4/projects/41541906/cluster_agents"}, "packages_enabled": true, "empty_repo": false, "archived": false, "visibility": "public", "resolve_outdated_diff_discussions": false, "container_expiration_policy": {"cadence": "1d", "enabled": false, "keep_n": 10, "older_than": "90d", "name_regex": ".*", "name_regex_keep": null, "next_run_at": "2022-12-03T08:52:11.354Z"}, "issues_enabled": true, "merge_requests_enabled": true, "wiki_enabled": true, "jobs_enabled": true, "snippets_enabled": true, "container_registry_enabled": true, "service_desk_enabled": false, "service_desk_address": "contact-project+new-group-airbute-test-public-sg-test-public-project-1-41541906-issue-@incoming.gitlab.com", "can_create_merge_request_in": true, "issues_access_level": "enabled", "repository_access_level": "enabled", "merge_requests_access_level": "enabled", "forking_access_level": "enabled", "wiki_access_level": "enabled", "builds_access_level": "enabled", "snippets_access_level": "enabled", "pages_access_level": "private", "operations_access_level": "enabled", "analytics_access_level": "enabled", "container_registry_access_level": "enabled", "security_and_compliance_access_level": "private", "releases_access_level": "enabled", "environments_access_level": "enabled", "feature_flags_access_level": "enabled", "infrastructure_access_level": "enabled", "monitor_access_level": "enabled", "emails_disabled": null, "shared_runners_enabled": true, "group_runners_enabled": true, "lfs_enabled": true, "creator_id": 8375961, "import_url": null, "import_type": "gitlab_project", "import_status": "finished", "import_error": null, "open_issues_count": 0, "runners_token": "GR1348941Ni12De_sRyL6anY2uhzP", "ci_default_git_depth": 20, "ci_forward_deployment_enabled": true, "ci_job_token_scope_enabled": false, "ci_separated_caches": true, "ci_opt_in_jwt": false, "ci_allow_fork_pipelines_to_run_in_parent_project": true, "public_jobs": true, "build_git_strategy": "fetch", "build_timeout": 3600, "auto_cancel_pending_pipelines": "enabled", "ci_config_path": "", "shared_with_groups": [], "only_allow_merge_if_pipeline_succeeds": false, "allow_merge_on_skipped_pipeline": null, "restrict_user_defined_variables": false, "request_access_enabled": true, "only_allow_merge_if_all_discussions_are_resolved": false, "remove_source_branch_after_merge": true, "printing_merge_request_link_enabled": true, "merge_method": "merge", "squash_option": "default_off", "enforce_auth_checks_on_uploads": true, "suggestion_commit_message": null, "merge_commit_template": null, "squash_commit_template": null, "issue_branch_template": null, "statistics": {"commit_count": 1, "storage_size": 209715, "repository_size": 209715, "wiki_size": 0, "lfs_objects_size": 0, "job_artifacts_size": 0, "pipeline_artifacts_size": 0, "packages_size": 0, "snippets_size": 0, "uploads_size": 0}, "auto_devops_enabled": false, "auto_devops_deploy_strategy": "continuous", "autoclose_referenced_issues": true, "keep_latest_artifact": true, "runner_token_expiration_interval": null, "external_authorization_classification_label": "", "requirements_enabled": false, "requirements_access_level": "enabled", "security_and_compliance_enabled": true, "compliance_frameworks": [], "permissions": {"project_access": {"access_level": 40, "notification_level": 3}, "group_access": {"access_level": 50, "notification_level": 3}}}, "emitted_at": 1677702052715} -{"stream": "projects", "data": {"id": 41551658, "description": null, "name": "Test_project_in_nested_subgroup", "name_with_namespace": "New Group Airbute / Test Public SG / Test SG Public 2 / Test Private SubSubG 1 / Test_project_in_nested_subgroup", "path": "test_project_in_nested_subgroup", "path_with_namespace": "new-group-airbute/test-public-sg/test-sg-public-2/test-private-subsubg-1/test_project_in_nested_subgroup", "created_at": "2022-12-02T14:26:55.282Z", "default_branch": "main", "tag_list": [], "topics": [], "ssh_url_to_repo": "git@gitlab.com:new-group-airbute/test-public-sg/test-sg-public-2/test-private-subsubg-1/test_project_in_nested_subgroup.git", "http_url_to_repo": "https://gitlab.com/new-group-airbute/test-public-sg/test-sg-public-2/test-private-subsubg-1/test_project_in_nested_subgroup.git", "web_url": "https://gitlab.com/new-group-airbute/test-public-sg/test-sg-public-2/test-private-subsubg-1/test_project_in_nested_subgroup", "readme_url": "https://gitlab.com/new-group-airbute/test-public-sg/test-sg-public-2/test-private-subsubg-1/test_project_in_nested_subgroup/-/blob/main/README.md", "forks_count": 0, "avatar_url": null, "star_count": 0, "last_activity_at": "2022-12-02T14:26:55.282Z", "namespace": {"id": 61015181, "name": "Test Private SubSubG 1", "path": "test-private-subsubg-1", "kind": "group", "full_path": "new-group-airbute/test-public-sg/test-sg-public-2/test-private-subsubg-1", "parent_id": 61014943, "avatar_url": null, "web_url": "https://gitlab.com/groups/new-group-airbute/test-public-sg/test-sg-public-2/test-private-subsubg-1"}, "container_registry_image_prefix": "registry.gitlab.com/new-group-airbute/test-public-sg/test-sg-public-2/test-private-subsubg-1/test_project_in_nested_subgroup", "_links": {"self": "https://gitlab.com/api/v4/projects/41551658", "issues": "https://gitlab.com/api/v4/projects/41551658/issues", "merge_requests": "https://gitlab.com/api/v4/projects/41551658/merge_requests", "repo_branches": "https://gitlab.com/api/v4/projects/41551658/repository/branches", "labels": "https://gitlab.com/api/v4/projects/41551658/labels", "events": "https://gitlab.com/api/v4/projects/41551658/events", "members": "https://gitlab.com/api/v4/projects/41551658/members", "cluster_agents": "https://gitlab.com/api/v4/projects/41551658/cluster_agents"}, "packages_enabled": true, "empty_repo": false, "archived": false, "visibility": "private", "resolve_outdated_diff_discussions": false, "container_expiration_policy": {"cadence": "1d", "enabled": false, "keep_n": 10, "older_than": "90d", "name_regex": ".*", "name_regex_keep": null, "next_run_at": "2022-12-03T14:26:55.314Z"}, "issues_enabled": true, "merge_requests_enabled": true, "wiki_enabled": true, "jobs_enabled": true, "snippets_enabled": true, "container_registry_enabled": true, "service_desk_enabled": true, "service_desk_address": "contact-project+new-group-airbute-test-public-sg-test-sg-public-2-test-private-41551658-issue-@incoming.gitlab.com", "can_create_merge_request_in": true, "issues_access_level": "enabled", "repository_access_level": "enabled", "merge_requests_access_level": "enabled", "forking_access_level": "enabled", "wiki_access_level": "enabled", "builds_access_level": "enabled", "snippets_access_level": "enabled", "pages_access_level": "private", "operations_access_level": "enabled", "analytics_access_level": "enabled", "container_registry_access_level": "enabled", "security_and_compliance_access_level": "private", "releases_access_level": "enabled", "environments_access_level": "enabled", "feature_flags_access_level": "enabled", "infrastructure_access_level": "enabled", "monitor_access_level": "enabled", "emails_disabled": null, "shared_runners_enabled": true, "group_runners_enabled": true, "lfs_enabled": true, "creator_id": 8375961, "import_url": null, "import_type": null, "import_status": "none", "import_error": null, "open_issues_count": 0, "runners_token": "GR1348941hyrJGkPgfF9b5KARxqHr", "ci_default_git_depth": 20, "ci_forward_deployment_enabled": true, "ci_job_token_scope_enabled": false, "ci_separated_caches": true, "ci_opt_in_jwt": false, "ci_allow_fork_pipelines_to_run_in_parent_project": true, "public_jobs": true, "build_git_strategy": "fetch", "build_timeout": 3600, "auto_cancel_pending_pipelines": "enabled", "ci_config_path": "", "shared_with_groups": [], "only_allow_merge_if_pipeline_succeeds": false, "allow_merge_on_skipped_pipeline": null, "restrict_user_defined_variables": false, "request_access_enabled": true, "only_allow_merge_if_all_discussions_are_resolved": false, "remove_source_branch_after_merge": true, "printing_merge_request_link_enabled": true, "merge_method": "merge", "squash_option": "default_off", "enforce_auth_checks_on_uploads": true, "suggestion_commit_message": null, "merge_commit_template": null, "squash_commit_template": null, "issue_branch_template": null, "statistics": {"commit_count": 1, "storage_size": 73400, "repository_size": 73400, "wiki_size": 0, "lfs_objects_size": 0, "job_artifacts_size": 0, "pipeline_artifacts_size": 0, "packages_size": 0, "snippets_size": 0, "uploads_size": 0}, "auto_devops_enabled": false, "auto_devops_deploy_strategy": "continuous", "autoclose_referenced_issues": true, "keep_latest_artifact": true, "runner_token_expiration_interval": null, "external_authorization_classification_label": "", "requirements_enabled": false, "requirements_access_level": "enabled", "security_and_compliance_enabled": true, "compliance_frameworks": [], "permissions": {"project_access": null, "group_access": {"access_level": 50, "notification_level": 3}}}, "emitted_at": 1677702053028} -{"stream": "branches", "data": {"name": "31-fake-issue-30", "merged": true, "protected": false, "developers_can_push": false, "developers_can_merge": false, "can_push": true, "default": false, "web_url": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/tree/31-fake-issue-30", "commit_id": "2831d897ba0214f8d3168647e8ad4232b83987ef", "project_id": 25157276}, "emitted_at": 1674055494854} -{"stream": "branches", "data": {"name": "master", "merged": false, "protected": true, "developers_can_push": false, "developers_can_merge": false, "can_push": true, "default": true, "web_url": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/tree/master", "commit_id": "6ad3dd49539391774db738c9e7b7d69f2d872c98", "project_id": 25157276}, "emitted_at": 1674055494855} -{"stream": "branches", "data": {"name": "new-test-branch", "merged": true, "protected": false, "developers_can_push": false, "developers_can_merge": false, "can_push": true, "default": false, "web_url": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/tree/new-test-branch", "commit_id": "2831d897ba0214f8d3168647e8ad4232b83987ef", "project_id": 25157276}, "emitted_at": 1674055494855} -{"stream": "branches", "data": {"name": "new-test-branch-1", "merged": true, "protected": false, "developers_can_push": false, "developers_can_merge": false, "can_push": true, "default": false, "web_url": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/tree/new-test-branch-1", "commit_id": "2831d897ba0214f8d3168647e8ad4232b83987ef", "project_id": 25157276}, "emitted_at": 1674055494856} -{"stream": "branches", "data": {"name": "new-test-branch-10", "merged": true, "protected": false, "developers_can_push": false, "developers_can_merge": false, "can_push": true, "default": false, "web_url": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/tree/new-test-branch-10", "commit_id": "2831d897ba0214f8d3168647e8ad4232b83987ef", "project_id": 25157276}, "emitted_at": 1674055494857} -{"stream": "branches", "data": {"name": "new-test-branch-11", "merged": true, "protected": false, "developers_can_push": false, "developers_can_merge": false, "can_push": true, "default": false, "web_url": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/tree/new-test-branch-11", "commit_id": "2831d897ba0214f8d3168647e8ad4232b83987ef", "project_id": 25157276}, "emitted_at": 1674055494857} -{"stream": "branches", "data": {"name": "new-test-branch-12", "merged": true, "protected": false, "developers_can_push": false, "developers_can_merge": false, "can_push": true, "default": false, "web_url": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/tree/new-test-branch-12", "commit_id": "2831d897ba0214f8d3168647e8ad4232b83987ef", "project_id": 25157276}, "emitted_at": 1674055494857} -{"stream": "branches", "data": {"name": "new-test-branch-13", "merged": true, "protected": false, "developers_can_push": false, "developers_can_merge": false, "can_push": true, "default": false, "web_url": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/tree/new-test-branch-13", "commit_id": "2831d897ba0214f8d3168647e8ad4232b83987ef", "project_id": 25157276}, "emitted_at": 1674055494857} -{"stream": "branches", "data": {"name": "new-test-branch-14", "merged": true, "protected": false, "developers_can_push": false, "developers_can_merge": false, "can_push": true, "default": false, "web_url": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/tree/new-test-branch-14", "commit_id": "2831d897ba0214f8d3168647e8ad4232b83987ef", "project_id": 25157276}, "emitted_at": 1674055494857} -{"stream": "branches", "data": {"name": "new-test-branch-15", "merged": true, "protected": false, "developers_can_push": false, "developers_can_merge": false, "can_push": true, "default": false, "web_url": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/tree/new-test-branch-15", "commit_id": "2831d897ba0214f8d3168647e8ad4232b83987ef", "project_id": 25157276}, "emitted_at": 1674055494857} -{"stream": "commits", "data": {"id": "6ad3dd49539391774db738c9e7b7d69f2d872c98", "short_id": "6ad3dd49", "created_at": "2021-03-18T12:51:05.000+00:00", "parent_ids": ["2831d897ba0214f8d3168647e8ad4232b83987ef", "028c02d96f40afe9b4d1173c1d0f712dd6d07302"], "title": "Merge branch 'ykurochkin/add-fake-CI-config' into 'master'", "message": "Merge branch 'ykurochkin/add-fake-CI-config' into 'master'\n\nadd fake CI config\n\nSee merge request new-group-airbute/new-ci-test-project!3", "author_name": "Alexander Arhipenko", "author_email": "integration-test@airbyte.io", "authored_date": "2021-03-18T12:51:05.000+00:00", "committer_name": "Alexander Arhipenko", "committer_email": "integration-test@airbyte.io", "committed_date": "2021-03-18T12:51:05.000+00:00", "trailers": {}, "web_url": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/commit/6ad3dd49539391774db738c9e7b7d69f2d872c98", "stats": {"additions": 14, "deletions": 0, "total": 14}, "project_id": 25157276}, "emitted_at": 1674055498755} -{"stream": "commits", "data": {"id": "028c02d96f40afe9b4d1173c1d0f712dd6d07302", "short_id": "028c02d9", "created_at": "2021-03-18T14:48:41.000+02:00", "parent_ids": ["2831d897ba0214f8d3168647e8ad4232b83987ef"], "title": "add fake CI config", "message": "add fake CI config\n", "author_name": "ykurochkin", "author_email": "zhenia.kurochkin@gmail.com", "authored_date": "2021-03-18T14:48:41.000+02:00", "committer_name": "ykurochkin", "committer_email": "zhenia.kurochkin@gmail.com", "committed_date": "2021-03-18T14:48:41.000+02:00", "trailers": {}, "web_url": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/commit/028c02d96f40afe9b4d1173c1d0f712dd6d07302", "stats": {"additions": 14, "deletions": 0, "total": 14}, "project_id": 25157276}, "emitted_at": 1674055498756} -{"stream": "commits", "data": {"id": "2831d897ba0214f8d3168647e8ad4232b83987ef", "short_id": "2831d897", "created_at": "2021-03-15T15:08:36.000+00:00", "parent_ids": [], "title": "Initial commit", "message": "Initial commit", "author_name": "Alexander Arhipenko", "author_email": "integration-test@airbyte.io", "authored_date": "2021-03-15T15:08:36.000+00:00", "committer_name": "Alexander Arhipenko", "committer_email": "integration-test@airbyte.io", "committed_date": "2021-03-15T15:08:36.000+00:00", "trailers": {}, "web_url": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/commit/2831d897ba0214f8d3168647e8ad4232b83987ef", "stats": {"additions": 2, "deletions": 0, "total": 2}, "project_id": 25157276}, "emitted_at": 1674055498757} -{"stream": "commits", "data": {"id": "27329d3afac51fbf2762428e12f2635d1137c549", "short_id": "27329d3a", "created_at": "2021-02-15T15:52:52.000+00:00", "parent_ids": ["b362ea7aa65515dc35ff3a93423478b2143e771d"], "title": "Update README.md", "message": "Update README.md", "author_name": "Administrator", "author_email": "admin@example.com", "authored_date": "2021-02-15T15:52:52.000+00:00", "committer_name": "Administrator", "committer_email": "admin@example.com", "committed_date": "2021-02-15T15:52:52.000+00:00", "trailers": {}, "web_url": "https://gitlab.com/airbyte.io/ci-test-project/-/commit/27329d3afac51fbf2762428e12f2635d1137c549", "stats": {"additions": 6, "deletions": 0, "total": 6}, "project_id": 25156633}, "emitted_at": 1674055500862} -{"stream": "commits", "data": {"id": "b362ea7aa65515dc35ff3a93423478b2143e771d", "short_id": "b362ea7a", "created_at": "2021-02-15T15:52:03.000+00:00", "parent_ids": [], "title": "Initial commit", "message": "Initial commit", "author_name": "Administrator", "author_email": "admin@example.com", "authored_date": "2021-02-15T15:52:03.000+00:00", "committer_name": "Administrator", "committer_email": "admin@example.com", "committed_date": "2021-02-15T15:52:03.000+00:00", "trailers": {}, "web_url": "https://gitlab.com/airbyte.io/ci-test-project/-/commit/b362ea7aa65515dc35ff3a93423478b2143e771d", "stats": {"additions": 2, "deletions": 0, "total": 2}, "project_id": 25156633}, "emitted_at": 1674055500863} -{"stream": "commits", "data": {"id": "fb24e6736b3a959a59e49b56d2d83a28ea3ae15b", "short_id": "fb24e673", "created_at": "2022-12-02T14:26:55.000+00:00", "parent_ids": [], "title": "Initial commit", "message": "Initial commit", "author_name": "Alexander Arhipenko", "author_email": "integration-test@airbyte.io", "authored_date": "2022-12-02T14:26:55.000+00:00", "committer_name": "Alexander Arhipenko", "committer_email": "integration-test@airbyte.io", "committed_date": "2022-12-02T14:26:55.000+00:00", "trailers": {}, "web_url": "https://gitlab.com/new-group-airbute/test-public-sg/test-sg-public-2/test-private-subsubg-1/test_project_in_nested_subgroup/-/commit/fb24e6736b3a959a59e49b56d2d83a28ea3ae15b", "stats": {"additions": 92, "deletions": 0, "total": 92}, "project_id": 41551658}, "emitted_at": 1674055501275} -{"stream": "group_issue_boards", "data": {"id": 5099065, "name": "Development", "hide_backlog_list": false, "hide_closed_list": false, "project": null, "lists": [], "group": {"id": 11329647, "web_url": "https://gitlab.com/groups/new-group-airbute", "name": "New Group Airbute"}, "group_id": 11329647}, "emitted_at": 1674055501717} -{"stream": "issues", "data": {"id": 80943819, "iid": 32, "project_id": 25157276, "title": "Fake Issue 31", "description": null, "state": "opened", "created_at": "2021-03-15T15:22:42.206Z", "updated_at": "2021-03-15T15:22:42.206Z", "closed_at": null, "labels": ["bug"], "assignees": [], "type": "ISSUE", "user_notes_count": 0, "merge_requests_count": 0, "upvotes": 0, "downvotes": 0, "due_date": null, "confidential": false, "discussion_locked": null, "issue_type": "issue", "web_url": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/issues/32", "time_stats": {"time_estimate": 0, "total_time_spent": 0, "human_time_estimate": null, "human_total_time_spent": null}, "task_completion_status": {"count": 0, "completed_count": 0}, "blocking_issues_count": 0, "has_tasks": true, "task_status": "", "_links": {"self": "https://gitlab.com/api/v4/projects/25157276/issues/32", "notes": "https://gitlab.com/api/v4/projects/25157276/issues/32/notes", "award_emoji": "https://gitlab.com/api/v4/projects/25157276/issues/32/award_emoji", "project": "https://gitlab.com/api/v4/projects/25157276", "closed_as_duplicate_of": null}, "references": {"short": "#32", "relative": "#32", "full": "new-group-airbute/new-ci-test-project#32"}, "severity": "UNKNOWN", "moved_to_id": null, "service_desk_reply_to": null, "author_id": 8375961, "assignee_id": null, "closed_by_id": null, "milestone_id": null}, "emitted_at": 1677702539151} -{"stream": "issues", "data": {"id": 80943818, "iid": 31, "project_id": 25157276, "title": "Fake Issue 30", "description": null, "state": "opened", "created_at": "2021-03-15T15:22:41.337Z", "updated_at": "2021-03-15T16:08:06.041Z", "closed_at": null, "labels": ["bug"], "assignees": [], "type": "ISSUE", "user_notes_count": 0, "merge_requests_count": 1, "upvotes": 0, "downvotes": 0, "due_date": null, "confidential": false, "discussion_locked": null, "issue_type": "issue", "web_url": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/issues/31", "time_stats": {"time_estimate": 0, "total_time_spent": 0, "human_time_estimate": null, "human_total_time_spent": null}, "task_completion_status": {"count": 0, "completed_count": 0}, "blocking_issues_count": 0, "has_tasks": true, "task_status": "", "_links": {"self": "https://gitlab.com/api/v4/projects/25157276/issues/31", "notes": "https://gitlab.com/api/v4/projects/25157276/issues/31/notes", "award_emoji": "https://gitlab.com/api/v4/projects/25157276/issues/31/award_emoji", "project": "https://gitlab.com/api/v4/projects/25157276", "closed_as_duplicate_of": null}, "references": {"short": "#31", "relative": "#31", "full": "new-group-airbute/new-ci-test-project#31"}, "severity": "UNKNOWN", "moved_to_id": null, "service_desk_reply_to": null, "author_id": 8375961, "assignee_id": null, "closed_by_id": null, "milestone_id": null}, "emitted_at": 1677702539152} -{"stream": "issues", "data": {"id": 80943817, "iid": 30, "project_id": 25157276, "title": "Fake Issue 29", "description": null, "state": "opened", "created_at": "2021-03-15T15:22:40.529Z", "updated_at": "2021-03-15T15:22:40.529Z", "closed_at": null, "labels": ["bug"], "assignees": [], "type": "ISSUE", "user_notes_count": 0, "merge_requests_count": 0, "upvotes": 0, "downvotes": 0, "due_date": null, "confidential": false, "discussion_locked": null, "issue_type": "issue", "web_url": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/issues/30", "time_stats": {"time_estimate": 0, "total_time_spent": 0, "human_time_estimate": null, "human_total_time_spent": null}, "task_completion_status": {"count": 0, "completed_count": 0}, "blocking_issues_count": 0, "has_tasks": true, "task_status": "", "_links": {"self": "https://gitlab.com/api/v4/projects/25157276/issues/30", "notes": "https://gitlab.com/api/v4/projects/25157276/issues/30/notes", "award_emoji": "https://gitlab.com/api/v4/projects/25157276/issues/30/award_emoji", "project": "https://gitlab.com/api/v4/projects/25157276", "closed_as_duplicate_of": null}, "references": {"short": "#30", "relative": "#30", "full": "new-group-airbute/new-ci-test-project#30"}, "severity": "UNKNOWN", "moved_to_id": null, "service_desk_reply_to": null, "author_id": 8375961, "assignee_id": null, "closed_by_id": null, "milestone_id": null}, "emitted_at": 1677702539153} -{"stream": "jobs", "data": {"id": 1108959782, "status": "failed", "stage": "test", "name": "test-code-job2", "ref": "master", "tag": false, "coverage": null, "allow_failure": false, "created_at": "2021-03-18T12:51:06.294Z", "started_at": "2021-03-18T12:51:07.646Z", "finished_at": "2021-03-18T12:51:51.309Z", "erased_at": null, "duration": 43.662407, "queued_duration": 1.180926, "failure_reason": "script_failure", "web_url": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/jobs/1108959782", "project": {"ci_job_token_scope_enabled": false}, "artifacts": [{"file_type": "trace", "size": 2200, "filename": "job.log", "file_format": null}], "artifacts_expire_at": null, "tag_list": [], "user_id": 8375961, "pipeline_id": 272632767, "runner_id": 380986, "commit_id": "6ad3dd49539391774db738c9e7b7d69f2d872c98", "project_id": 25157276}, "emitted_at": 1675091412074} -{"stream": "jobs", "data": {"id": 1108959779, "status": "failed", "stage": "test", "name": "test-code-job1", "ref": "master", "tag": false, "coverage": null, "allow_failure": false, "created_at": "2021-03-18T12:51:06.279Z", "started_at": "2021-03-18T12:51:07.943Z", "finished_at": "2021-03-18T12:51:50.943Z", "erased_at": null, "duration": 42.999853, "queued_duration": 1.349274, "failure_reason": "script_failure", "web_url": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/jobs/1108959779", "project": {"ci_job_token_scope_enabled": false}, "artifacts": [{"file_type": "trace", "size": 2182, "filename": "job.log", "file_format": null}], "artifacts_expire_at": null, "tag_list": [], "user_id": 8375961, "pipeline_id": 272632767, "runner_id": 380987, "commit_id": "6ad3dd49539391774db738c9e7b7d69f2d872c98", "project_id": 25157276}, "emitted_at": 1675091412074} -{"stream": "jobs", "data": {"id": 1108952832, "status": "failed", "stage": "test", "name": "test-code-job2", "ref": "ykurochkin/add-fake-CI-config", "tag": false, "coverage": null, "allow_failure": false, "created_at": "2021-03-18T12:48:49.222Z", "started_at": "2021-03-18T12:48:50.732Z", "finished_at": "2021-03-18T12:49:37.961Z", "erased_at": null, "duration": 47.229034, "queued_duration": 1.422541, "failure_reason": "script_failure", "web_url": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/jobs/1108952832", "project": {"ci_job_token_scope_enabled": false}, "artifacts": [{"file_type": "trace", "size": 2223, "filename": "job.log", "file_format": null}], "artifacts_expire_at": null, "tag_list": [], "user_id": 8375961, "pipeline_id": 272631271, "runner_id": 44949, "commit_id": "028c02d96f40afe9b4d1173c1d0f712dd6d07302", "project_id": 25157276}, "emitted_at": 1675091412686} -{"stream": "jobs", "data": {"id": 1108952831, "status": "failed", "stage": "test", "name": "test-code-job1", "ref": "ykurochkin/add-fake-CI-config", "tag": false, "coverage": null, "allow_failure": false, "created_at": "2021-03-18T12:48:49.199Z", "started_at": "2021-03-18T12:48:50.064Z", "finished_at": "2021-03-18T12:49:34.277Z", "erased_at": null, "duration": 44.212296, "queued_duration": 0.735172, "failure_reason": "script_failure", "web_url": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/jobs/1108952831", "project": {"ci_job_token_scope_enabled": false}, "artifacts": [{"file_type": "trace", "size": 2205, "filename": "job.log", "file_format": null}], "artifacts_expire_at": null, "tag_list": [], "user_id": 8375961, "pipeline_id": 272631271, "runner_id": 380987, "commit_id": "028c02d96f40afe9b4d1173c1d0f712dd6d07302", "project_id": 25157276}, "emitted_at": 1675091412687} -{"stream": "project_milestones", "data": {"id": 1943705, "iid": 51, "project_id": 25157276, "title": "Project Milestone 51", "description": null, "state": "active", "created_at": "2021-03-15T15:33:16.915Z", "updated_at": "2021-03-15T15:33:16.915Z", "due_date": null, "start_date": null, "expired": false, "web_url": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/milestones/51"}, "emitted_at": 1674055515241} -{"stream": "project_milestones", "data": {"id": 1943704, "iid": 50, "project_id": 25157276, "title": "Project Milestone 50", "description": null, "state": "active", "created_at": "2021-03-15T15:33:16.329Z", "updated_at": "2021-03-15T15:33:16.329Z", "due_date": null, "start_date": null, "expired": false, "web_url": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/milestones/50"}, "emitted_at": 1674055515242} -{"stream": "project_milestones", "data": {"id": 1943703, "iid": 49, "project_id": 25157276, "title": "Project Milestone 49", "description": null, "state": "active", "created_at": "2021-03-15T15:33:15.960Z", "updated_at": "2021-03-15T15:33:15.960Z", "due_date": null, "start_date": null, "expired": false, "web_url": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/milestones/49"}, "emitted_at": 1674055515242} -{"stream": "project_milestones", "data": {"id": 1943702, "iid": 48, "project_id": 25157276, "title": "Project Milestone 48", "description": null, "state": "active", "created_at": "2021-03-15T15:33:15.604Z", "updated_at": "2021-03-15T15:33:15.604Z", "due_date": null, "start_date": null, "expired": false, "web_url": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/milestones/48"}, "emitted_at": 1674055515243} -{"stream": "project_milestones", "data": {"id": 1943701, "iid": 47, "project_id": 25157276, "title": "Project Milestone 47", "description": null, "state": "active", "created_at": "2021-03-15T15:33:15.232Z", "updated_at": "2021-03-15T15:33:15.232Z", "due_date": null, "start_date": null, "expired": false, "web_url": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/milestones/47"}, "emitted_at": 1674055515244} -{"stream": "project_milestones", "data": {"id": 1943700, "iid": 46, "project_id": 25157276, "title": "Project Milestone 46", "description": null, "state": "active", "created_at": "2021-03-15T15:33:14.860Z", "updated_at": "2021-03-15T15:33:14.860Z", "due_date": null, "start_date": null, "expired": false, "web_url": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/milestones/46"}, "emitted_at": 1674055515244} -{"stream": "project_milestones", "data": {"id": 1943699, "iid": 45, "project_id": 25157276, "title": "Project Milestone 45", "description": null, "state": "active", "created_at": "2021-03-15T15:33:14.450Z", "updated_at": "2021-03-15T15:33:14.450Z", "due_date": null, "start_date": null, "expired": false, "web_url": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/milestones/45"}, "emitted_at": 1674055515244} -{"stream": "project_milestones", "data": {"id": 1943698, "iid": 44, "project_id": 25157276, "title": "Project Milestone 44", "description": null, "state": "active", "created_at": "2021-03-15T15:33:14.042Z", "updated_at": "2021-03-15T15:33:14.042Z", "due_date": null, "start_date": null, "expired": false, "web_url": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/milestones/44"}, "emitted_at": 1674055515244} -{"stream": "project_milestones", "data": {"id": 1943697, "iid": 43, "project_id": 25157276, "title": "Project Milestone 43", "description": null, "state": "active", "created_at": "2021-03-15T15:33:13.668Z", "updated_at": "2021-03-15T15:33:13.668Z", "due_date": null, "start_date": null, "expired": false, "web_url": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/milestones/43"}, "emitted_at": 1674055515244} -{"stream": "project_milestones", "data": {"id": 1943696, "iid": 42, "project_id": 25157276, "title": "Project Milestone 42", "description": null, "state": "active", "created_at": "2021-03-15T15:33:13.240Z", "updated_at": "2021-03-15T15:33:13.240Z", "due_date": null, "start_date": null, "expired": false, "web_url": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/milestones/42"}, "emitted_at": 1674055515245} -{"stream": "group_milestones", "data": {"id": 1943775, "iid": 21, "group_id": 11329647, "title": "Group Milestone 21", "description": null, "state": "active", "created_at": "2021-03-15T16:01:02.125Z", "updated_at": "2021-03-15T16:01:02.125Z", "due_date": null, "start_date": null, "expired": false, "web_url": "https://gitlab.com/groups/new-group-airbute/-/milestones/21"}, "emitted_at": 1674055518409} -{"stream": "group_milestones", "data": {"id": 1943774, "iid": 20, "group_id": 11329647, "title": "Group Milestone 20", "description": null, "state": "active", "created_at": "2021-03-15T16:01:01.682Z", "updated_at": "2021-03-15T16:01:01.682Z", "due_date": null, "start_date": null, "expired": false, "web_url": "https://gitlab.com/groups/new-group-airbute/-/milestones/20"}, "emitted_at": 1674055518409} -{"stream": "group_milestones", "data": {"id": 1943773, "iid": 19, "group_id": 11329647, "title": "Group Milestone 19", "description": null, "state": "active", "created_at": "2021-03-15T16:01:01.067Z", "updated_at": "2021-03-15T16:01:01.067Z", "due_date": null, "start_date": null, "expired": false, "web_url": "https://gitlab.com/groups/new-group-airbute/-/milestones/19"}, "emitted_at": 1674055518409} -{"stream": "group_milestones", "data": {"id": 1943772, "iid": 18, "group_id": 11329647, "title": "Group Milestone 18", "description": null, "state": "active", "created_at": "2021-03-15T16:01:00.572Z", "updated_at": "2021-03-15T16:01:00.572Z", "due_date": null, "start_date": null, "expired": false, "web_url": "https://gitlab.com/groups/new-group-airbute/-/milestones/18"}, "emitted_at": 1674055518409} -{"stream": "group_milestones", "data": {"id": 1943771, "iid": 17, "group_id": 11329647, "title": "Group Milestone 17", "description": null, "state": "active", "created_at": "2021-03-15T16:01:00.136Z", "updated_at": "2021-03-15T16:01:00.136Z", "due_date": null, "start_date": null, "expired": false, "web_url": "https://gitlab.com/groups/new-group-airbute/-/milestones/17"}, "emitted_at": 1674055518410} -{"stream": "group_milestones", "data": {"id": 1943770, "iid": 16, "group_id": 11329647, "title": "Group Milestone 16", "description": null, "state": "active", "created_at": "2021-03-15T16:00:59.507Z", "updated_at": "2021-03-15T16:00:59.507Z", "due_date": null, "start_date": null, "expired": false, "web_url": "https://gitlab.com/groups/new-group-airbute/-/milestones/16"}, "emitted_at": 1674055518410} -{"stream": "group_milestones", "data": {"id": 1943769, "iid": 15, "group_id": 11329647, "title": "Group Milestone 15", "description": null, "state": "active", "created_at": "2021-03-15T16:00:59.133Z", "updated_at": "2021-03-15T16:00:59.133Z", "due_date": null, "start_date": null, "expired": false, "web_url": "https://gitlab.com/groups/new-group-airbute/-/milestones/15"}, "emitted_at": 1674055518410} -{"stream": "group_milestones", "data": {"id": 1943768, "iid": 14, "group_id": 11329647, "title": "Group Milestone 14", "description": null, "state": "active", "created_at": "2021-03-15T16:00:58.763Z", "updated_at": "2021-03-15T16:00:58.763Z", "due_date": null, "start_date": null, "expired": false, "web_url": "https://gitlab.com/groups/new-group-airbute/-/milestones/14"}, "emitted_at": 1674055518410} -{"stream": "group_milestones", "data": {"id": 1943767, "iid": 13, "group_id": 11329647, "title": "Group Milestone 13", "description": null, "state": "active", "created_at": "2021-03-15T16:00:58.315Z", "updated_at": "2021-03-15T16:00:58.315Z", "due_date": null, "start_date": null, "expired": false, "web_url": "https://gitlab.com/groups/new-group-airbute/-/milestones/13"}, "emitted_at": 1674055518410} -{"stream": "group_milestones", "data": {"id": 1943766, "iid": 12, "group_id": 11329647, "title": "Group Milestone 12", "description": null, "state": "active", "created_at": "2021-03-15T16:00:57.929Z", "updated_at": "2021-03-15T16:00:57.929Z", "due_date": null, "start_date": null, "expired": false, "web_url": "https://gitlab.com/groups/new-group-airbute/-/milestones/12"}, "emitted_at": 1674055518411} -{"stream": "project_members", "data": {"access_level": 40, "created_at": "2021-03-15T15:08:36.746Z", "created_by": {"id": 8375961, "username": "airbyte", "name": "Airbyte Team", "state": "active", "avatar_url": "https://secure.gravatar.com/avatar/0a7841feac7218131ce7b427283c24ef?s=80&d=identicon", "web_url": "https://gitlab.com/airbyte"}, "expires_at": null, "id": 8375961, "username": "airbyte", "name": "Airbyte Team", "state": "active", "avatar_url": "https://secure.gravatar.com/avatar/0a7841feac7218131ce7b427283c24ef?s=80&d=identicon", "web_url": "https://gitlab.com/airbyte", "membership_state": "active", "project_id": 25157276}, "emitted_at": 1674055522658} -{"stream": "project_members", "data": {"access_level": 40, "created_at": "2022-12-02T08:50:10.348Z", "expires_at": null, "id": 8375961, "username": "airbyte", "name": "Airbyte Team", "state": "active", "avatar_url": "https://secure.gravatar.com/avatar/0a7841feac7218131ce7b427283c24ef?s=80&d=identicon", "web_url": "https://gitlab.com/airbyte", "membership_state": "active", "project_id": 41541858}, "emitted_at": 1674055523259} -{"stream": "project_members", "data": {"access_level": 40, "created_at": "2022-12-02T08:51:28.434Z", "expires_at": null, "id": 8375961, "username": "airbyte", "name": "Airbyte Team", "state": "active", "avatar_url": "https://secure.gravatar.com/avatar/0a7841feac7218131ce7b427283c24ef?s=80&d=identicon", "web_url": "https://gitlab.com/airbyte", "membership_state": "active", "project_id": 41541892}, "emitted_at": 1674055523706} -{"stream": "project_members", "data": {"access_level": 40, "created_at": "2021-03-10T17:16:54.405Z", "expires_at": null, "id": 8375961, "username": "airbyte", "name": "Airbyte Team", "state": "active", "avatar_url": "https://secure.gravatar.com/avatar/0a7841feac7218131ce7b427283c24ef?s=80&d=identicon", "web_url": "https://gitlab.com/airbyte", "membership_state": "active", "project_id": 25032440}, "emitted_at": 1674055524068} -{"stream": "project_members", "data": {"access_level": 40, "created_at": "2022-12-02T08:52:12.187Z", "expires_at": null, "id": 8375961, "username": "airbyte", "name": "Airbyte Team", "state": "active", "avatar_url": "https://secure.gravatar.com/avatar/0a7841feac7218131ce7b427283c24ef?s=80&d=identicon", "web_url": "https://gitlab.com/airbyte", "membership_state": "active", "project_id": 41541906}, "emitted_at": 1674055524413} -{"stream": "project_members", "data": {"access_level": 40, "created_at": "2021-03-15T14:46:31.550Z", "expires_at": null, "id": 8375961, "username": "airbyte", "name": "Airbyte Team", "state": "active", "avatar_url": "https://secure.gravatar.com/avatar/0a7841feac7218131ce7b427283c24ef?s=80&d=identicon", "web_url": "https://gitlab.com/airbyte", "membership_state": "active", "project_id": 25156633}, "emitted_at": 1674055524825} -{"stream": "group_members", "data": {"access_level": 50, "created_at": "2021-03-15T15:55:53.658Z", "expires_at": null, "id": 8375961, "username": "airbyte", "name": "Airbyte Team", "state": "active", "avatar_url": "https://secure.gravatar.com/avatar/0a7841feac7218131ce7b427283c24ef?s=80&d=identicon", "web_url": "https://gitlab.com/airbyte", "membership_state": "active", "group_id": 11329647}, "emitted_at": 1674055525607} -{"stream": "group_members", "data": {"access_level": 30, "created_at": "2021-03-15T15:55:53.998Z", "created_by": {"id": 8375961, "username": "airbyte", "name": "Airbyte Team", "state": "active", "avatar_url": "https://secure.gravatar.com/avatar/0a7841feac7218131ce7b427283c24ef?s=80&d=identicon", "web_url": "https://gitlab.com/airbyte"}, "expires_at": null, "id": 7904355, "username": "y.kurochkin", "name": "Yevhenii Kurochkin", "state": "active", "avatar_url": "https://secure.gravatar.com/avatar/760fcac88680c724a6b19c6bfd5b6718?s=80&d=identicon", "web_url": "https://gitlab.com/y.kurochkin", "membership_state": "active", "group_id": 11329647}, "emitted_at": 1674055525607} -{"stream": "group_members", "data": {"access_level": 50, "created_at": "2022-12-02T08:46:22.834Z", "expires_at": null, "id": 8375961, "username": "airbyte", "name": "Airbyte Team", "state": "active", "avatar_url": "https://secure.gravatar.com/avatar/0a7841feac7218131ce7b427283c24ef?s=80&d=identicon", "web_url": "https://gitlab.com/airbyte", "membership_state": "active", "group_id": 61014882}, "emitted_at": 1674055525949} -{"stream": "group_members", "data": {"access_level": 50, "created_at": "2022-12-02T08:54:42.303Z", "expires_at": null, "id": 8375961, "username": "airbyte", "name": "Airbyte Team", "state": "active", "avatar_url": "https://secure.gravatar.com/avatar/0a7841feac7218131ce7b427283c24ef?s=80&d=identicon", "web_url": "https://gitlab.com/airbyte", "membership_state": "active", "group_id": 61015181}, "emitted_at": 1674055526461} -{"stream": "group_members", "data": {"access_level": 50, "created_at": "2022-12-02T08:56:21.862Z", "expires_at": null, "id": 8375961, "username": "airbyte", "name": "Airbyte Team", "state": "active", "avatar_url": "https://secure.gravatar.com/avatar/0a7841feac7218131ce7b427283c24ef?s=80&d=identicon", "web_url": "https://gitlab.com/airbyte", "membership_state": "active", "group_id": 61015232}, "emitted_at": 1674055526871} -{"stream": "group_members", "data": {"access_level": 50, "created_at": "2022-12-02T08:56:34.266Z", "expires_at": null, "id": 8375961, "username": "airbyte", "name": "Airbyte Team", "state": "active", "avatar_url": "https://secure.gravatar.com/avatar/0a7841feac7218131ce7b427283c24ef?s=80&d=identicon", "web_url": "https://gitlab.com/airbyte", "membership_state": "active", "group_id": 61015239}, "emitted_at": 1674055527281} -{"stream": "group_members", "data": {"access_level": 50, "created_at": "2022-12-02T08:47:02.469Z", "expires_at": null, "id": 8375961, "username": "airbyte", "name": "Airbyte Team", "state": "active", "avatar_url": "https://secure.gravatar.com/avatar/0a7841feac7218131ce7b427283c24ef?s=80&d=identicon", "web_url": "https://gitlab.com/airbyte", "membership_state": "active", "group_id": 61014902}, "emitted_at": 1674055527690} -{"stream": "group_members", "data": {"access_level": 50, "created_at": "2022-12-02T08:55:27.120Z", "expires_at": null, "id": 8375961, "username": "airbyte", "name": "Airbyte Team", "state": "active", "avatar_url": "https://secure.gravatar.com/avatar/0a7841feac7218131ce7b427283c24ef?s=80&d=identicon", "web_url": "https://gitlab.com/airbyte", "membership_state": "active", "group_id": 61015202}, "emitted_at": 1674055527968} -{"stream": "group_members", "data": {"access_level": 50, "created_at": "2022-12-02T08:48:04.786Z", "expires_at": null, "id": 8375961, "username": "airbyte", "name": "Airbyte Team", "state": "active", "avatar_url": "https://secure.gravatar.com/avatar/0a7841feac7218131ce7b427283c24ef?s=80&d=identicon", "web_url": "https://gitlab.com/airbyte", "membership_state": "active", "group_id": 61014943}, "emitted_at": 1674055528307} -{"stream": "group_members", "data": {"access_level": 50, "created_at": "2022-12-02T08:45:53.544Z", "expires_at": null, "id": 8375961, "username": "airbyte", "name": "Airbyte Team", "state": "active", "avatar_url": "https://secure.gravatar.com/avatar/0a7841feac7218131ce7b427283c24ef?s=80&d=identicon", "web_url": "https://gitlab.com/airbyte", "membership_state": "active", "group_id": 61014863}, "emitted_at": 1674055528777} -{"stream": "project_labels", "data": {"id": 19116944, "name": "Label 1", "description": null, "description_html": "", "text_color": "#333333", "color": "#ffff00", "subscribed": false, "priority": null, "is_project_label": true, "project_id": 25157276}, "emitted_at": 1674055530162} -{"stream": "project_labels", "data": {"id": 19117004, "name": "Label 1", "description": null, "description_html": "", "text_color": "#FFFFFF", "color": "#008000", "subscribed": false, "priority": null, "is_project_label": false, "project_id": 25157276}, "emitted_at": 1674055530162} -{"stream": "project_labels", "data": {"id": 19116954, "name": "Label 10", "description": null, "description_html": "", "text_color": "#333333", "color": "#ff00ff", "subscribed": false, "priority": null, "is_project_label": true, "project_id": 25157276}, "emitted_at": 1674055530163} -{"stream": "project_labels", "data": {"id": 19117017, "name": "Label 10", "description": null, "description_html": "", "text_color": "#FFFFFF", "color": "#000080", "subscribed": false, "priority": null, "is_project_label": false, "project_id": 25157276}, "emitted_at": 1674055530163} -{"stream": "project_labels", "data": {"id": 19116955, "name": "Label 11", "description": null, "description_html": "", "text_color": "#FFFFFF", "color": "#808000", "subscribed": false, "priority": null, "is_project_label": true, "project_id": 25157276}, "emitted_at": 1674055530164} -{"stream": "project_labels", "data": {"id": 19117018, "name": "Label 11", "description": null, "description_html": "", "text_color": "#FFFFFF", "color": "#808080", "subscribed": false, "priority": null, "is_project_label": false, "project_id": 25157276}, "emitted_at": 1674055530164} -{"stream": "project_labels", "data": {"id": 19116956, "name": "Label 12", "description": null, "description_html": "", "text_color": "#FFFFFF", "color": "#ff0000", "subscribed": false, "priority": null, "is_project_label": true, "project_id": 25157276}, "emitted_at": 1674055530165} -{"stream": "project_labels", "data": {"id": 19117019, "name": "Label 12", "description": null, "description_html": "", "text_color": "#FFFFFF", "color": "#000000", "subscribed": false, "priority": null, "is_project_label": false, "project_id": 25157276}, "emitted_at": 1674055530165} -{"stream": "project_labels", "data": {"id": 19117020, "name": "Label 13", "description": null, "description_html": "", "text_color": "#FFFFFF", "color": "#000000", "subscribed": false, "priority": null, "is_project_label": false, "project_id": 25157276}, "emitted_at": 1674055530165} -{"stream": "project_labels", "data": {"id": 19116957, "name": "Label 13", "description": null, "description_html": "", "text_color": "#FFFFFF", "color": "#808000", "subscribed": false, "priority": null, "is_project_label": true, "project_id": 25157276}, "emitted_at": 1674055530165} -{"stream": "group_labels", "data": {"id": 19117004, "name": "Label 1", "description": null, "description_html": "", "text_color": "#FFFFFF", "color": "#008000", "subscribed": false, "group_id": 11329647}, "emitted_at": 1674055538152} -{"stream": "group_labels", "data": {"id": 19117017, "name": "Label 10", "description": null, "description_html": "", "text_color": "#FFFFFF", "color": "#000080", "subscribed": false, "group_id": 11329647}, "emitted_at": 1674055538152} -{"stream": "group_labels", "data": {"id": 19117018, "name": "Label 11", "description": null, "description_html": "", "text_color": "#FFFFFF", "color": "#808080", "subscribed": false, "group_id": 11329647}, "emitted_at": 1674055538153} -{"stream": "group_labels", "data": {"id": 19117019, "name": "Label 12", "description": null, "description_html": "", "text_color": "#FFFFFF", "color": "#000000", "subscribed": false, "group_id": 11329647}, "emitted_at": 1674055538154} -{"stream": "group_labels", "data": {"id": 19117020, "name": "Label 13", "description": null, "description_html": "", "text_color": "#FFFFFF", "color": "#000000", "subscribed": false, "group_id": 11329647}, "emitted_at": 1674055538154} -{"stream": "group_labels", "data": {"id": 19117021, "name": "Label 14", "description": null, "description_html": "", "text_color": "#FFFFFF", "color": "#808080", "subscribed": false, "group_id": 11329647}, "emitted_at": 1674055538155} -{"stream": "group_labels", "data": {"id": 19117022, "name": "Label 15", "description": null, "description_html": "", "text_color": "#FFFFFF", "color": "#0000ff", "subscribed": false, "group_id": 11329647}, "emitted_at": 1674055538155} -{"stream": "group_labels", "data": {"id": 19117023, "name": "Label 16", "description": null, "description_html": "", "text_color": "#333333", "color": "#ffffff", "subscribed": false, "group_id": 11329647}, "emitted_at": 1674055538155} -{"stream": "group_labels", "data": {"id": 19117024, "name": "Label 17", "description": null, "description_html": "", "text_color": "#FFFFFF", "color": "#008000", "subscribed": false, "group_id": 11329647}, "emitted_at": 1674055538156} -{"stream": "group_labels", "data": {"id": 19117025, "name": "Label 18", "description": null, "description_html": "", "text_color": "#333333", "color": "#ffffff", "subscribed": false, "group_id": 11329647}, "emitted_at": 1674055538156} -{"stream": "merge_requests", "data": {"id": 92098762, "iid": 30, "project_id": 25156633, "title": "Id blanditiis consequatur ut.", "description": "##### Voluptatum\nPorro et quo. Laborum molestias ducimus. Labore dolorum adipisci. Quisquam est quis. Sint accusamus maxime.\n* Veritatis. \n* Eos. \n* Adipisci. \n* Quibusdam. \n* Sint. \n* Consequuntur. \n* Hic. \n* Voluptate. \n* Velit.", "state": "opened", "created_at": "2021-02-15T15:55:38.117Z", "updated_at": "2021-02-15T15:55:38.117Z", "merge_user": null, "merged_at": null, "closed_at": null, "target_branch": "master", "source_branch": "laudantium-unde-et-iste-et", "user_notes_count": 15, "upvotes": 0, "downvotes": 0, "assignees": [], "reviewers": [], "source_project_id": 25156633, "target_project_id": 25156633, "labels": ["asperiores-ex", "quidem-labore", "sed-consequuntur"], "draft": false, "work_in_progress": false, "merge_when_pipeline_succeeds": false, "merge_status": "can_be_merged", "detailed_merge_status": "mergeable", "sha": "d49703b85913ee7a8c85e1893057ef4cdb06ff85", "merge_commit_sha": null, "squash_commit_sha": null, "discussion_locked": null, "should_remove_source_branch": null, "force_remove_source_branch": null, "reference": "!30", "references": {"short": "!30", "relative": "!30", "full": "airbyte.io/ci-test-project!30"}, "web_url": "https://gitlab.com/airbyte.io/ci-test-project/-/merge_requests/30", "time_stats": {"time_estimate": 0, "total_time_spent": 0, "human_time_estimate": null, "human_total_time_spent": null}, "squash": false, "squash_on_merge": false, "task_completion_status": {"count": 0, "completed_count": 0}, "has_conflicts": false, "blocking_discussions_resolved": true, "approvals_before_merge": null, "author_id": 8375961, "assignee_id": null, "closed_by_id": null, "milestone_id": null, "merged_by_id": null}, "emitted_at": 1675092078941} -{"stream": "merge_requests", "data": {"id": 92098761, "iid": 29, "project_id": 25156633, "title": "Fugiat aut voluptatem voluptas.", "description": "###### Unde\nEligendi nemo quam. Veritatis delectus iure. Placeat ut odit. Officiis accusantium sit. Eos sequi cupiditate.\n# Eum", "state": "opened", "created_at": "2021-02-15T15:55:34.534Z", "updated_at": "2021-02-15T15:55:34.534Z", "merge_user": null, "merged_at": null, "closed_at": null, "target_branch": "master", "source_branch": "ea-dolor-quia-et-sint", "user_notes_count": 4, "upvotes": 0, "downvotes": 0, "assignees": [], "reviewers": [], "source_project_id": 25156633, "target_project_id": 25156633, "labels": ["earum-eaque", "nisi-et", "sed-voluptatem"], "draft": false, "work_in_progress": false, "merge_when_pipeline_succeeds": false, "merge_status": "can_be_merged", "detailed_merge_status": "mergeable", "sha": "45afadfbf4eb1a9d6468950b23e8557bf72445fa", "merge_commit_sha": null, "squash_commit_sha": null, "discussion_locked": null, "should_remove_source_branch": null, "force_remove_source_branch": null, "reference": "!29", "references": {"short": "!29", "relative": "!29", "full": "airbyte.io/ci-test-project!29"}, "web_url": "https://gitlab.com/airbyte.io/ci-test-project/-/merge_requests/29", "time_stats": {"time_estimate": 0, "total_time_spent": 0, "human_time_estimate": null, "human_total_time_spent": null}, "squash": false, "squash_on_merge": false, "task_completion_status": {"count": 0, "completed_count": 0}, "has_conflicts": false, "blocking_discussions_resolved": true, "approvals_before_merge": null, "author_id": 8375961, "assignee_id": null, "closed_by_id": null, "milestone_id": null, "merged_by_id": null}, "emitted_at": 1675092078942} -{"stream": "merge_requests", "data": {"id": 92098758, "iid": 28, "project_id": 25156633, "title": "Delectus sit quod repellendus.", "description": "###### Corporis\nMolestias eius corrupti. Est maiores ut. Deleniti itaque deserunt. Perspiciatis quis et. Non et quia.\n### Dolorum\nNihil at et. Eligendi recusandae omnis. Eaque ratione dolorem.\n### Quam\nRem ad vel. Officiis sint voluptatem. Asperiores odit non.\n0. Hic. \n1. Labore. \n2. Voluptates. \n3. Dolores. \n4. Laborum. \n5. Non. \n6. Odit.", "state": "opened", "created_at": "2021-02-15T15:55:31.164Z", "updated_at": "2021-02-15T15:55:31.164Z", "merge_user": null, "merged_at": null, "closed_at": null, "target_branch": "master", "source_branch": "ipsum-consequatur-et-in-et", "user_notes_count": 19, "upvotes": 0, "downvotes": 0, "assignees": [], "reviewers": [], "source_project_id": 25156633, "target_project_id": 25156633, "labels": ["nisi-et", "omnis-assumenda", "ut-incidunt"], "draft": false, "work_in_progress": false, "merge_when_pipeline_succeeds": false, "merge_status": "can_be_merged", "detailed_merge_status": "mergeable", "sha": "5b8695fe02d2856fa9e3249d757aea89832b8d2e", "merge_commit_sha": null, "squash_commit_sha": null, "discussion_locked": null, "should_remove_source_branch": null, "force_remove_source_branch": null, "reference": "!28", "references": {"short": "!28", "relative": "!28", "full": "airbyte.io/ci-test-project!28"}, "web_url": "https://gitlab.com/airbyte.io/ci-test-project/-/merge_requests/28", "time_stats": {"time_estimate": 0, "total_time_spent": 0, "human_time_estimate": null, "human_total_time_spent": null}, "squash": false, "squash_on_merge": false, "task_completion_status": {"count": 0, "completed_count": 0}, "has_conflicts": false, "blocking_discussions_resolved": true, "approvals_before_merge": null, "author_id": 8375961, "assignee_id": null, "closed_by_id": null, "milestone_id": null, "merged_by_id": null}, "emitted_at": 1675092078943} -{"stream": "merge_requests", "data": {"id": 92098756, "iid": 27, "project_id": 25156633, "title": "Odio aut et rerum.", "description": "##### Aut\nNon labore nemo. Architecto ullam ut. Consequatur sit aut. Qui officia consequatur. Blanditiis facilis consequatur.\n```ruby\nError.\n```", "state": "opened", "created_at": "2021-02-15T15:55:27.534Z", "updated_at": "2021-02-15T15:55:27.534Z", "merge_user": null, "merged_at": null, "closed_at": null, "target_branch": "master", "source_branch": "sapiente-et-possimus-neque-est", "user_notes_count": 14, "upvotes": 0, "downvotes": 0, "assignees": [], "reviewers": [], "source_project_id": 25156633, "target_project_id": 25156633, "labels": ["animi-exercitationem", "ex-commodi", "voluptas-officiis"], "draft": false, "work_in_progress": false, "merge_when_pipeline_succeeds": false, "merge_status": "can_be_merged", "detailed_merge_status": "mergeable", "sha": "e604947173cd56863979030ed39bcdf7dcf8727a", "merge_commit_sha": null, "squash_commit_sha": null, "discussion_locked": null, "should_remove_source_branch": null, "force_remove_source_branch": null, "reference": "!27", "references": {"short": "!27", "relative": "!27", "full": "airbyte.io/ci-test-project!27"}, "web_url": "https://gitlab.com/airbyte.io/ci-test-project/-/merge_requests/27", "time_stats": {"time_estimate": 0, "total_time_spent": 0, "human_time_estimate": null, "human_total_time_spent": null}, "squash": false, "squash_on_merge": false, "task_completion_status": {"count": 0, "completed_count": 0}, "has_conflicts": false, "blocking_discussions_resolved": true, "approvals_before_merge": null, "author_id": 8375961, "assignee_id": null, "closed_by_id": null, "milestone_id": null, "merged_by_id": null}, "emitted_at": 1675092078944} -{"stream": "merge_requests", "data": {"id": 92098753, "iid": 26, "project_id": 25156633, "title": "Nihil possimus et nulla.", "description": "##### Eveniet\nVeritatis incidunt impedit. Sunt voluptas nisi. Ut quia et. Optio nihil recusandae. Eum ipsam illo.\n~Odio~ sed repudiandae. Cum consequuntur id. Quas molestias magnam.", "state": "opened", "created_at": "2021-02-15T15:55:24.768Z", "updated_at": "2021-02-15T15:55:24.768Z", "merge_user": null, "merged_at": null, "closed_at": null, "target_branch": "master", "source_branch": "qui-in-quod-nam-voluptatem", "user_notes_count": 9, "upvotes": 0, "downvotes": 0, "assignees": [], "reviewers": [], "source_project_id": 25156633, "target_project_id": 25156633, "labels": ["architecto-vel", "in-qui", "voluptatem-saepe"], "draft": false, "work_in_progress": false, "merge_when_pipeline_succeeds": false, "merge_status": "can_be_merged", "detailed_merge_status": "mergeable", "sha": "6d473efbe556db92e5319591f393df63a3b4fa34", "merge_commit_sha": null, "squash_commit_sha": null, "discussion_locked": null, "should_remove_source_branch": null, "force_remove_source_branch": null, "reference": "!26", "references": {"short": "!26", "relative": "!26", "full": "airbyte.io/ci-test-project!26"}, "web_url": "https://gitlab.com/airbyte.io/ci-test-project/-/merge_requests/26", "time_stats": {"time_estimate": 0, "total_time_spent": 0, "human_time_estimate": null, "human_total_time_spent": null}, "squash": false, "squash_on_merge": false, "task_completion_status": {"count": 0, "completed_count": 0}, "has_conflicts": false, "blocking_discussions_resolved": true, "approvals_before_merge": null, "author_id": 8375961, "assignee_id": null, "closed_by_id": null, "milestone_id": null, "merged_by_id": null}, "emitted_at": 1675092078945} -{"stream": "merge_requests", "data": {"id": 92098751, "iid": 25, "project_id": 25156633, "title": "Cum non sint explicabo.", "description": "### Et\nAd omnis ab. Sint eveniet explicabo. Ut voluptatum velit. Corrupti dignissimos ipsa. Ad commodi consequatur.\n## Tenetur", "state": "opened", "created_at": "2021-02-15T15:55:21.303Z", "updated_at": "2021-02-15T15:55:21.303Z", "merge_user": null, "merged_at": null, "closed_at": null, "target_branch": "master", "source_branch": "aut-deleniti-est-voluptatum-repellat", "user_notes_count": 7, "upvotes": 0, "downvotes": 0, "assignees": [], "reviewers": [], "source_project_id": 25156633, "target_project_id": 25156633, "labels": ["animi-exercitationem", "ex-commodi", "nisi-et"], "draft": false, "work_in_progress": false, "merge_when_pipeline_succeeds": false, "merge_status": "can_be_merged", "detailed_merge_status": "mergeable", "sha": "01a2afda641dec50caf71ec92f898f9243e357f8", "merge_commit_sha": null, "squash_commit_sha": null, "discussion_locked": null, "should_remove_source_branch": null, "force_remove_source_branch": null, "reference": "!25", "references": {"short": "!25", "relative": "!25", "full": "airbyte.io/ci-test-project!25"}, "web_url": "https://gitlab.com/airbyte.io/ci-test-project/-/merge_requests/25", "time_stats": {"time_estimate": 0, "total_time_spent": 0, "human_time_estimate": null, "human_total_time_spent": null}, "squash": false, "squash_on_merge": false, "task_completion_status": {"count": 0, "completed_count": 0}, "has_conflicts": false, "blocking_discussions_resolved": true, "approvals_before_merge": null, "author_id": 8375961, "assignee_id": null, "closed_by_id": null, "milestone_id": null, "merged_by_id": null}, "emitted_at": 1675092078946} -{"stream": "merge_requests", "data": {"id": 92098745, "iid": 24, "project_id": 25156633, "title": "Dolores et cumque fuga.", "description": "###### Et\nVoluptates quo modi. Ut nihil autem. Enim id sint. Reiciendis quia molestiae. Nobis sit autem.\n### Occaecati\nEt exercitationem quam. Dolor nam quia. Eius consequatur corporis.\n* Sunt. \n* Doloremque. \n* Itaque. \n* Odit. \n* Aliquam.", "state": "opened", "created_at": "2021-02-15T15:55:18.655Z", "updated_at": "2021-02-15T15:55:18.655Z", "merge_user": null, "merged_at": null, "closed_at": null, "target_branch": "master", "source_branch": "modi-et-quam-sunt-consequatur", "user_notes_count": 15, "upvotes": 0, "downvotes": 0, "assignees": [], "reviewers": [], "source_project_id": 25156633, "target_project_id": 25156633, "labels": ["architecto-vel", "ex-commodi", "odio-ut"], "draft": false, "work_in_progress": false, "merge_when_pipeline_succeeds": false, "merge_status": "can_be_merged", "detailed_merge_status": "mergeable", "sha": "98e5e7c52ceeb55fd04d3f35bb461361770a3e79", "merge_commit_sha": null, "squash_commit_sha": null, "discussion_locked": null, "should_remove_source_branch": null, "force_remove_source_branch": null, "reference": "!24", "references": {"short": "!24", "relative": "!24", "full": "airbyte.io/ci-test-project!24"}, "web_url": "https://gitlab.com/airbyte.io/ci-test-project/-/merge_requests/24", "time_stats": {"time_estimate": 0, "total_time_spent": 0, "human_time_estimate": null, "human_total_time_spent": null}, "squash": false, "squash_on_merge": false, "task_completion_status": {"count": 0, "completed_count": 0}, "has_conflicts": false, "blocking_discussions_resolved": true, "approvals_before_merge": null, "author_id": 8375961, "assignee_id": null, "closed_by_id": null, "milestone_id": null, "merged_by_id": null}, "emitted_at": 1675092078947} -{"stream": "merge_requests", "data": {"id": 92098744, "iid": 23, "project_id": 25156633, "title": "Rerum nam et qui.", "description": "# Vel\nRerum et at. Quo sed ullam. Modi nemo laudantium. Natus aliquam deleniti. Et ea facilis.\n**Earum** doloremque voluptates. Et doloribus rerum. Cum quaerat et.", "state": "opened", "created_at": "2021-02-15T15:55:15.772Z", "updated_at": "2021-02-15T15:55:15.772Z", "merge_user": null, "merged_at": null, "closed_at": null, "target_branch": "master", "source_branch": "et-laudantium-voluptas-quos-pariatur", "user_notes_count": 2, "upvotes": 0, "downvotes": 0, "assignees": [], "reviewers": [], "source_project_id": 25156633, "target_project_id": 25156633, "labels": ["asperiores-ex", "illo-sit", "suscipit-consectetur"], "draft": false, "work_in_progress": false, "merge_when_pipeline_succeeds": false, "merge_status": "can_be_merged", "detailed_merge_status": "mergeable", "sha": "e7e71ea3b5df48fb2b43d9a48c147a852eab84bd", "merge_commit_sha": null, "squash_commit_sha": null, "discussion_locked": null, "should_remove_source_branch": null, "force_remove_source_branch": null, "reference": "!23", "references": {"short": "!23", "relative": "!23", "full": "airbyte.io/ci-test-project!23"}, "web_url": "https://gitlab.com/airbyte.io/ci-test-project/-/merge_requests/23", "time_stats": {"time_estimate": 0, "total_time_spent": 0, "human_time_estimate": null, "human_total_time_spent": null}, "squash": false, "squash_on_merge": false, "task_completion_status": {"count": 0, "completed_count": 0}, "has_conflicts": false, "blocking_discussions_resolved": true, "approvals_before_merge": null, "author_id": 8375961, "assignee_id": null, "closed_by_id": null, "milestone_id": null, "merged_by_id": null}, "emitted_at": 1675092078948} -{"stream": "merge_requests", "data": {"id": 92098737, "iid": 22, "project_id": 25156633, "title": "Est nam quis consequatur.", "description": "# Voluptas\nOmnis vitae magni. Et et dolores. Ab itaque assumenda. Modi rerum sit. Molestiae iusto ut.\n* Atque. \n* Reprehenderit. \n* Provident. \n* Quas. \n* Ut. \n* Excepturi. \n* Nostrum. \n* Saepe.", "state": "opened", "created_at": "2021-02-15T15:55:12.477Z", "updated_at": "2021-02-15T15:55:12.477Z", "merge_user": null, "merged_at": null, "closed_at": null, "target_branch": "master", "source_branch": "voluptatem-quia-fugit-ut-perferendis", "user_notes_count": 20, "upvotes": 0, "downvotes": 0, "assignees": [], "reviewers": [], "source_project_id": 25156633, "target_project_id": 25156633, "labels": ["et-facere", "iste-est", "odio-ut"], "draft": false, "work_in_progress": false, "merge_when_pipeline_succeeds": false, "merge_status": "can_be_merged", "detailed_merge_status": "mergeable", "sha": "079e34f4fe00c2b0b298ad633b854ae35edece80", "merge_commit_sha": null, "squash_commit_sha": null, "discussion_locked": null, "should_remove_source_branch": null, "force_remove_source_branch": null, "reference": "!22", "references": {"short": "!22", "relative": "!22", "full": "airbyte.io/ci-test-project!22"}, "web_url": "https://gitlab.com/airbyte.io/ci-test-project/-/merge_requests/22", "time_stats": {"time_estimate": 0, "total_time_spent": 0, "human_time_estimate": null, "human_total_time_spent": null}, "squash": false, "squash_on_merge": false, "task_completion_status": {"count": 0, "completed_count": 0}, "has_conflicts": false, "blocking_discussions_resolved": true, "approvals_before_merge": null, "author_id": 8375961, "assignee_id": null, "closed_by_id": null, "milestone_id": null, "merged_by_id": null}, "emitted_at": 1675092078949} -{"stream": "merge_requests", "data": {"id": 92098736, "iid": 21, "project_id": 25156633, "title": "Accusantium cumque rerum nulla.", "description": "# Voluptatum\nExercitationem aut in. Nisi fugiat similique. Sit sunt quos. Recusandae velit facere. Accusantium et sapiente.\n```ruby\nQuod.\n```", "state": "opened", "created_at": "2021-02-15T15:55:09.179Z", "updated_at": "2021-02-15T15:55:09.179Z", "merge_user": null, "merged_at": null, "closed_at": null, "target_branch": "master", "source_branch": "at-adipisci-ducimus-qui-nihil", "user_notes_count": 3, "upvotes": 0, "downvotes": 0, "assignees": [], "reviewers": [], "source_project_id": 25156633, "target_project_id": 25156633, "labels": ["animi-exercitationem", "asperiores-ex", "odit-omnis"], "draft": false, "work_in_progress": false, "merge_when_pipeline_succeeds": false, "merge_status": "can_be_merged", "detailed_merge_status": "mergeable", "sha": "e10493c095260599a73a32def40249a4c389e354", "merge_commit_sha": null, "squash_commit_sha": null, "discussion_locked": null, "should_remove_source_branch": null, "force_remove_source_branch": null, "reference": "!21", "references": {"short": "!21", "relative": "!21", "full": "airbyte.io/ci-test-project!21"}, "web_url": "https://gitlab.com/airbyte.io/ci-test-project/-/merge_requests/21", "time_stats": {"time_estimate": 0, "total_time_spent": 0, "human_time_estimate": null, "human_total_time_spent": null}, "squash": false, "squash_on_merge": false, "task_completion_status": {"count": 0, "completed_count": 0}, "has_conflicts": false, "blocking_discussions_resolved": true, "approvals_before_merge": null, "author_id": 8375961, "assignee_id": null, "closed_by_id": null, "milestone_id": null, "merged_by_id": null}, "emitted_at": 1675092078950} -{"stream": "merge_request_commits", "data": {"id": 92098762, "iid": 30, "project_id": 25156633, "title": "Id blanditiis consequatur ut.", "description": "##### Voluptatum\nPorro et quo. Laborum molestias ducimus. Labore dolorum adipisci. Quisquam est quis. Sint accusamus maxime.\n* Veritatis. \n* Eos. \n* Adipisci. \n* Quibusdam. \n* Sint. \n* Consequuntur. \n* Hic. \n* Voluptate. \n* Velit.", "state": "opened", "created_at": "2021-02-15T15:55:38.117Z", "updated_at": "2021-02-15T15:55:38.117Z", "merged_by": null, "merge_user": null, "merged_at": null, "closed_by": null, "closed_at": null, "target_branch": "master", "source_branch": "laudantium-unde-et-iste-et", "user_notes_count": 15, "upvotes": 0, "downvotes": 0, "author": {"id": 8375961, "username": "airbyte", "name": "Airbyte Team", "state": "active", "avatar_url": "https://secure.gravatar.com/avatar/0a7841feac7218131ce7b427283c24ef?s=80&d=identicon", "web_url": "https://gitlab.com/airbyte"}, "assignees": [], "assignee": null, "reviewers": [], "source_project_id": 25156633, "target_project_id": 25156633, "labels": ["asperiores-ex", "quidem-labore", "sed-consequuntur"], "draft": false, "work_in_progress": false, "milestone": null, "merge_when_pipeline_succeeds": false, "merge_status": "can_be_merged", "detailed_merge_status": "mergeable", "sha": "d49703b85913ee7a8c85e1893057ef4cdb06ff85", "merge_commit_sha": null, "squash_commit_sha": null, "discussion_locked": null, "should_remove_source_branch": null, "force_remove_source_branch": null, "reference": "!30", "references": {"short": "!30", "relative": "!30", "full": "airbyte.io/ci-test-project!30"}, "web_url": "https://gitlab.com/airbyte.io/ci-test-project/-/merge_requests/30", "time_stats": {"time_estimate": 0, "total_time_spent": 0, "human_time_estimate": null, "human_total_time_spent": null}, "squash": false, "squash_on_merge": false, "task_completion_status": {"count": 0, "completed_count": 0}, "has_conflicts": false, "blocking_discussions_resolved": true, "approvals_before_merge": null, "subscribed": true, "changes_count": "18", "latest_build_started_at": null, "latest_build_finished_at": null, "first_deployed_to_production_at": null, "pipeline": null, "head_pipeline": null, "diff_refs": {"base_sha": "27329d3afac51fbf2762428e12f2635d1137c549", "head_sha": "d49703b85913ee7a8c85e1893057ef4cdb06ff85", "start_sha": "27329d3afac51fbf2762428e12f2635d1137c549"}, "merge_error": null, "first_contribution": false, "user": {"can_merge": true}, "merge_request_iid": 30}, "emitted_at": 1675092568303} -{"stream": "merge_request_commits", "data": {"id": 92098761, "iid": 29, "project_id": 25156633, "title": "Fugiat aut voluptatem voluptas.", "description": "###### Unde\nEligendi nemo quam. Veritatis delectus iure. Placeat ut odit. Officiis accusantium sit. Eos sequi cupiditate.\n# Eum", "state": "opened", "created_at": "2021-02-15T15:55:34.534Z", "updated_at": "2021-02-15T15:55:34.534Z", "merged_by": null, "merge_user": null, "merged_at": null, "closed_by": null, "closed_at": null, "target_branch": "master", "source_branch": "ea-dolor-quia-et-sint", "user_notes_count": 4, "upvotes": 0, "downvotes": 0, "author": {"id": 8375961, "username": "airbyte", "name": "Airbyte Team", "state": "active", "avatar_url": "https://secure.gravatar.com/avatar/0a7841feac7218131ce7b427283c24ef?s=80&d=identicon", "web_url": "https://gitlab.com/airbyte"}, "assignees": [], "assignee": null, "reviewers": [], "source_project_id": 25156633, "target_project_id": 25156633, "labels": ["earum-eaque", "nisi-et", "sed-voluptatem"], "draft": false, "work_in_progress": false, "milestone": null, "merge_when_pipeline_succeeds": false, "merge_status": "can_be_merged", "detailed_merge_status": "mergeable", "sha": "45afadfbf4eb1a9d6468950b23e8557bf72445fa", "merge_commit_sha": null, "squash_commit_sha": null, "discussion_locked": null, "should_remove_source_branch": null, "force_remove_source_branch": null, "reference": "!29", "references": {"short": "!29", "relative": "!29", "full": "airbyte.io/ci-test-project!29"}, "web_url": "https://gitlab.com/airbyte.io/ci-test-project/-/merge_requests/29", "time_stats": {"time_estimate": 0, "total_time_spent": 0, "human_time_estimate": null, "human_total_time_spent": null}, "squash": false, "squash_on_merge": false, "task_completion_status": {"count": 0, "completed_count": 0}, "has_conflicts": false, "blocking_discussions_resolved": true, "approvals_before_merge": null, "subscribed": true, "changes_count": "17", "latest_build_started_at": null, "latest_build_finished_at": null, "first_deployed_to_production_at": null, "pipeline": null, "head_pipeline": null, "diff_refs": {"base_sha": "27329d3afac51fbf2762428e12f2635d1137c549", "head_sha": "45afadfbf4eb1a9d6468950b23e8557bf72445fa", "start_sha": "27329d3afac51fbf2762428e12f2635d1137c549"}, "merge_error": null, "first_contribution": false, "user": {"can_merge": true}, "merge_request_iid": 29}, "emitted_at": 1675092568683} -{"stream": "merge_request_commits", "data": {"id": 92098758, "iid": 28, "project_id": 25156633, "title": "Delectus sit quod repellendus.", "description": "###### Corporis\nMolestias eius corrupti. Est maiores ut. Deleniti itaque deserunt. Perspiciatis quis et. Non et quia.\n### Dolorum\nNihil at et. Eligendi recusandae omnis. Eaque ratione dolorem.\n### Quam\nRem ad vel. Officiis sint voluptatem. Asperiores odit non.\n0. Hic. \n1. Labore. \n2. Voluptates. \n3. Dolores. \n4. Laborum. \n5. Non. \n6. Odit.", "state": "opened", "created_at": "2021-02-15T15:55:31.164Z", "updated_at": "2021-02-15T15:55:31.164Z", "merged_by": null, "merge_user": null, "merged_at": null, "closed_by": null, "closed_at": null, "target_branch": "master", "source_branch": "ipsum-consequatur-et-in-et", "user_notes_count": 19, "upvotes": 0, "downvotes": 0, "author": {"id": 8375961, "username": "airbyte", "name": "Airbyte Team", "state": "active", "avatar_url": "https://secure.gravatar.com/avatar/0a7841feac7218131ce7b427283c24ef?s=80&d=identicon", "web_url": "https://gitlab.com/airbyte"}, "assignees": [], "assignee": null, "reviewers": [], "source_project_id": 25156633, "target_project_id": 25156633, "labels": ["nisi-et", "omnis-assumenda", "ut-incidunt"], "draft": false, "work_in_progress": false, "milestone": null, "merge_when_pipeline_succeeds": false, "merge_status": "can_be_merged", "detailed_merge_status": "mergeable", "sha": "5b8695fe02d2856fa9e3249d757aea89832b8d2e", "merge_commit_sha": null, "squash_commit_sha": null, "discussion_locked": null, "should_remove_source_branch": null, "force_remove_source_branch": null, "reference": "!28", "references": {"short": "!28", "relative": "!28", "full": "airbyte.io/ci-test-project!28"}, "web_url": "https://gitlab.com/airbyte.io/ci-test-project/-/merge_requests/28", "time_stats": {"time_estimate": 0, "total_time_spent": 0, "human_time_estimate": null, "human_total_time_spent": null}, "squash": false, "squash_on_merge": false, "task_completion_status": {"count": 0, "completed_count": 0}, "has_conflicts": false, "blocking_discussions_resolved": true, "approvals_before_merge": null, "subscribed": true, "changes_count": "15", "latest_build_started_at": null, "latest_build_finished_at": null, "first_deployed_to_production_at": null, "pipeline": null, "head_pipeline": null, "diff_refs": {"base_sha": "27329d3afac51fbf2762428e12f2635d1137c549", "head_sha": "5b8695fe02d2856fa9e3249d757aea89832b8d2e", "start_sha": "27329d3afac51fbf2762428e12f2635d1137c549"}, "merge_error": null, "first_contribution": false, "user": {"can_merge": true}, "merge_request_iid": 28}, "emitted_at": 1675092569053} -{"stream": "merge_request_commits", "data": {"id": 92098756, "iid": 27, "project_id": 25156633, "title": "Odio aut et rerum.", "description": "##### Aut\nNon labore nemo. Architecto ullam ut. Consequatur sit aut. Qui officia consequatur. Blanditiis facilis consequatur.\n```ruby\nError.\n```", "state": "opened", "created_at": "2021-02-15T15:55:27.534Z", "updated_at": "2021-02-15T15:55:27.534Z", "merged_by": null, "merge_user": null, "merged_at": null, "closed_by": null, "closed_at": null, "target_branch": "master", "source_branch": "sapiente-et-possimus-neque-est", "user_notes_count": 14, "upvotes": 0, "downvotes": 0, "author": {"id": 8375961, "username": "airbyte", "name": "Airbyte Team", "state": "active", "avatar_url": "https://secure.gravatar.com/avatar/0a7841feac7218131ce7b427283c24ef?s=80&d=identicon", "web_url": "https://gitlab.com/airbyte"}, "assignees": [], "assignee": null, "reviewers": [], "source_project_id": 25156633, "target_project_id": 25156633, "labels": ["animi-exercitationem", "ex-commodi", "voluptas-officiis"], "draft": false, "work_in_progress": false, "milestone": null, "merge_when_pipeline_succeeds": false, "merge_status": "can_be_merged", "detailed_merge_status": "mergeable", "sha": "e604947173cd56863979030ed39bcdf7dcf8727a", "merge_commit_sha": null, "squash_commit_sha": null, "discussion_locked": null, "should_remove_source_branch": null, "force_remove_source_branch": null, "reference": "!27", "references": {"short": "!27", "relative": "!27", "full": "airbyte.io/ci-test-project!27"}, "web_url": "https://gitlab.com/airbyte.io/ci-test-project/-/merge_requests/27", "time_stats": {"time_estimate": 0, "total_time_spent": 0, "human_time_estimate": null, "human_total_time_spent": null}, "squash": false, "squash_on_merge": false, "task_completion_status": {"count": 0, "completed_count": 0}, "has_conflicts": false, "blocking_discussions_resolved": true, "approvals_before_merge": null, "subscribed": true, "changes_count": "5", "latest_build_started_at": null, "latest_build_finished_at": null, "first_deployed_to_production_at": null, "pipeline": null, "head_pipeline": null, "diff_refs": {"base_sha": "27329d3afac51fbf2762428e12f2635d1137c549", "head_sha": "e604947173cd56863979030ed39bcdf7dcf8727a", "start_sha": "27329d3afac51fbf2762428e12f2635d1137c549"}, "merge_error": null, "first_contribution": false, "user": {"can_merge": true}, "merge_request_iid": 27}, "emitted_at": 1675092569496} -{"stream": "merge_request_commits", "data": {"id": 92098753, "iid": 26, "project_id": 25156633, "title": "Nihil possimus et nulla.", "description": "##### Eveniet\nVeritatis incidunt impedit. Sunt voluptas nisi. Ut quia et. Optio nihil recusandae. Eum ipsam illo.\n~Odio~ sed repudiandae. Cum consequuntur id. Quas molestias magnam.", "state": "opened", "created_at": "2021-02-15T15:55:24.768Z", "updated_at": "2021-02-15T15:55:24.768Z", "merged_by": null, "merge_user": null, "merged_at": null, "closed_by": null, "closed_at": null, "target_branch": "master", "source_branch": "qui-in-quod-nam-voluptatem", "user_notes_count": 9, "upvotes": 0, "downvotes": 0, "author": {"id": 8375961, "username": "airbyte", "name": "Airbyte Team", "state": "active", "avatar_url": "https://secure.gravatar.com/avatar/0a7841feac7218131ce7b427283c24ef?s=80&d=identicon", "web_url": "https://gitlab.com/airbyte"}, "assignees": [], "assignee": null, "reviewers": [], "source_project_id": 25156633, "target_project_id": 25156633, "labels": ["architecto-vel", "in-qui", "voluptatem-saepe"], "draft": false, "work_in_progress": false, "milestone": null, "merge_when_pipeline_succeeds": false, "merge_status": "can_be_merged", "detailed_merge_status": "mergeable", "sha": "6d473efbe556db92e5319591f393df63a3b4fa34", "merge_commit_sha": null, "squash_commit_sha": null, "discussion_locked": null, "should_remove_source_branch": null, "force_remove_source_branch": null, "reference": "!26", "references": {"short": "!26", "relative": "!26", "full": "airbyte.io/ci-test-project!26"}, "web_url": "https://gitlab.com/airbyte.io/ci-test-project/-/merge_requests/26", "time_stats": {"time_estimate": 0, "total_time_spent": 0, "human_time_estimate": null, "human_total_time_spent": null}, "squash": false, "squash_on_merge": false, "task_completion_status": {"count": 0, "completed_count": 0}, "has_conflicts": false, "blocking_discussions_resolved": true, "approvals_before_merge": null, "subscribed": true, "changes_count": "18", "latest_build_started_at": null, "latest_build_finished_at": null, "first_deployed_to_production_at": null, "pipeline": null, "head_pipeline": null, "diff_refs": {"base_sha": "27329d3afac51fbf2762428e12f2635d1137c549", "head_sha": "6d473efbe556db92e5319591f393df63a3b4fa34", "start_sha": "27329d3afac51fbf2762428e12f2635d1137c549"}, "merge_error": null, "first_contribution": false, "user": {"can_merge": true}, "merge_request_iid": 26}, "emitted_at": 1675092569917} -{"stream": "merge_request_commits", "data": {"id": 92098751, "iid": 25, "project_id": 25156633, "title": "Cum non sint explicabo.", "description": "### Et\nAd omnis ab. Sint eveniet explicabo. Ut voluptatum velit. Corrupti dignissimos ipsa. Ad commodi consequatur.\n## Tenetur", "state": "opened", "created_at": "2021-02-15T15:55:21.303Z", "updated_at": "2021-02-15T15:55:21.303Z", "merged_by": null, "merge_user": null, "merged_at": null, "closed_by": null, "closed_at": null, "target_branch": "master", "source_branch": "aut-deleniti-est-voluptatum-repellat", "user_notes_count": 7, "upvotes": 0, "downvotes": 0, "author": {"id": 8375961, "username": "airbyte", "name": "Airbyte Team", "state": "active", "avatar_url": "https://secure.gravatar.com/avatar/0a7841feac7218131ce7b427283c24ef?s=80&d=identicon", "web_url": "https://gitlab.com/airbyte"}, "assignees": [], "assignee": null, "reviewers": [], "source_project_id": 25156633, "target_project_id": 25156633, "labels": ["animi-exercitationem", "ex-commodi", "nisi-et"], "draft": false, "work_in_progress": false, "milestone": null, "merge_when_pipeline_succeeds": false, "merge_status": "can_be_merged", "detailed_merge_status": "mergeable", "sha": "01a2afda641dec50caf71ec92f898f9243e357f8", "merge_commit_sha": null, "squash_commit_sha": null, "discussion_locked": null, "should_remove_source_branch": null, "force_remove_source_branch": null, "reference": "!25", "references": {"short": "!25", "relative": "!25", "full": "airbyte.io/ci-test-project!25"}, "web_url": "https://gitlab.com/airbyte.io/ci-test-project/-/merge_requests/25", "time_stats": {"time_estimate": 0, "total_time_spent": 0, "human_time_estimate": null, "human_total_time_spent": null}, "squash": false, "squash_on_merge": false, "task_completion_status": {"count": 0, "completed_count": 0}, "has_conflicts": false, "blocking_discussions_resolved": true, "approvals_before_merge": null, "subscribed": true, "changes_count": "5", "latest_build_started_at": null, "latest_build_finished_at": null, "first_deployed_to_production_at": null, "pipeline": null, "head_pipeline": null, "diff_refs": {"base_sha": "27329d3afac51fbf2762428e12f2635d1137c549", "head_sha": "01a2afda641dec50caf71ec92f898f9243e357f8", "start_sha": "27329d3afac51fbf2762428e12f2635d1137c549"}, "merge_error": null, "first_contribution": false, "user": {"can_merge": true}, "merge_request_iid": 25}, "emitted_at": 1675092570321} -{"stream": "merge_request_commits", "data": {"id": 92098745, "iid": 24, "project_id": 25156633, "title": "Dolores et cumque fuga.", "description": "###### Et\nVoluptates quo modi. Ut nihil autem. Enim id sint. Reiciendis quia molestiae. Nobis sit autem.\n### Occaecati\nEt exercitationem quam. Dolor nam quia. Eius consequatur corporis.\n* Sunt. \n* Doloremque. \n* Itaque. \n* Odit. \n* Aliquam.", "state": "opened", "created_at": "2021-02-15T15:55:18.655Z", "updated_at": "2021-02-15T15:55:18.655Z", "merged_by": null, "merge_user": null, "merged_at": null, "closed_by": null, "closed_at": null, "target_branch": "master", "source_branch": "modi-et-quam-sunt-consequatur", "user_notes_count": 15, "upvotes": 0, "downvotes": 0, "author": {"id": 8375961, "username": "airbyte", "name": "Airbyte Team", "state": "active", "avatar_url": "https://secure.gravatar.com/avatar/0a7841feac7218131ce7b427283c24ef?s=80&d=identicon", "web_url": "https://gitlab.com/airbyte"}, "assignees": [], "assignee": null, "reviewers": [], "source_project_id": 25156633, "target_project_id": 25156633, "labels": ["architecto-vel", "ex-commodi", "odio-ut"], "draft": false, "work_in_progress": false, "milestone": null, "merge_when_pipeline_succeeds": false, "merge_status": "can_be_merged", "detailed_merge_status": "mergeable", "sha": "98e5e7c52ceeb55fd04d3f35bb461361770a3e79", "merge_commit_sha": null, "squash_commit_sha": null, "discussion_locked": null, "should_remove_source_branch": null, "force_remove_source_branch": null, "reference": "!24", "references": {"short": "!24", "relative": "!24", "full": "airbyte.io/ci-test-project!24"}, "web_url": "https://gitlab.com/airbyte.io/ci-test-project/-/merge_requests/24", "time_stats": {"time_estimate": 0, "total_time_spent": 0, "human_time_estimate": null, "human_total_time_spent": null}, "squash": false, "squash_on_merge": false, "task_completion_status": {"count": 0, "completed_count": 0}, "has_conflicts": false, "blocking_discussions_resolved": true, "approvals_before_merge": null, "subscribed": true, "changes_count": "6", "latest_build_started_at": null, "latest_build_finished_at": null, "first_deployed_to_production_at": null, "pipeline": null, "head_pipeline": null, "diff_refs": {"base_sha": "27329d3afac51fbf2762428e12f2635d1137c549", "head_sha": "98e5e7c52ceeb55fd04d3f35bb461361770a3e79", "start_sha": "27329d3afac51fbf2762428e12f2635d1137c549"}, "merge_error": null, "first_contribution": false, "user": {"can_merge": true}, "merge_request_iid": 24}, "emitted_at": 1675092570806} -{"stream": "merge_request_commits", "data": {"id": 92098744, "iid": 23, "project_id": 25156633, "title": "Rerum nam et qui.", "description": "# Vel\nRerum et at. Quo sed ullam. Modi nemo laudantium. Natus aliquam deleniti. Et ea facilis.\n**Earum** doloremque voluptates. Et doloribus rerum. Cum quaerat et.", "state": "opened", "created_at": "2021-02-15T15:55:15.772Z", "updated_at": "2021-02-15T15:55:15.772Z", "merged_by": null, "merge_user": null, "merged_at": null, "closed_by": null, "closed_at": null, "target_branch": "master", "source_branch": "et-laudantium-voluptas-quos-pariatur", "user_notes_count": 2, "upvotes": 0, "downvotes": 0, "author": {"id": 8375961, "username": "airbyte", "name": "Airbyte Team", "state": "active", "avatar_url": "https://secure.gravatar.com/avatar/0a7841feac7218131ce7b427283c24ef?s=80&d=identicon", "web_url": "https://gitlab.com/airbyte"}, "assignees": [], "assignee": null, "reviewers": [], "source_project_id": 25156633, "target_project_id": 25156633, "labels": ["asperiores-ex", "illo-sit", "suscipit-consectetur"], "draft": false, "work_in_progress": false, "milestone": null, "merge_when_pipeline_succeeds": false, "merge_status": "can_be_merged", "detailed_merge_status": "mergeable", "sha": "e7e71ea3b5df48fb2b43d9a48c147a852eab84bd", "merge_commit_sha": null, "squash_commit_sha": null, "discussion_locked": null, "should_remove_source_branch": null, "force_remove_source_branch": null, "reference": "!23", "references": {"short": "!23", "relative": "!23", "full": "airbyte.io/ci-test-project!23"}, "web_url": "https://gitlab.com/airbyte.io/ci-test-project/-/merge_requests/23", "time_stats": {"time_estimate": 0, "total_time_spent": 0, "human_time_estimate": null, "human_total_time_spent": null}, "squash": false, "squash_on_merge": false, "task_completion_status": {"count": 0, "completed_count": 0}, "has_conflicts": false, "blocking_discussions_resolved": true, "approvals_before_merge": null, "subscribed": true, "changes_count": "10", "latest_build_started_at": null, "latest_build_finished_at": null, "first_deployed_to_production_at": null, "pipeline": null, "head_pipeline": null, "diff_refs": {"base_sha": "27329d3afac51fbf2762428e12f2635d1137c549", "head_sha": "e7e71ea3b5df48fb2b43d9a48c147a852eab84bd", "start_sha": "27329d3afac51fbf2762428e12f2635d1137c549"}, "merge_error": null, "first_contribution": false, "user": {"can_merge": true}, "merge_request_iid": 23}, "emitted_at": 1675092571243} -{"stream": "merge_request_commits", "data": {"id": 92098737, "iid": 22, "project_id": 25156633, "title": "Est nam quis consequatur.", "description": "# Voluptas\nOmnis vitae magni. Et et dolores. Ab itaque assumenda. Modi rerum sit. Molestiae iusto ut.\n* Atque. \n* Reprehenderit. \n* Provident. \n* Quas. \n* Ut. \n* Excepturi. \n* Nostrum. \n* Saepe.", "state": "opened", "created_at": "2021-02-15T15:55:12.477Z", "updated_at": "2021-02-15T15:55:12.477Z", "merged_by": null, "merge_user": null, "merged_at": null, "closed_by": null, "closed_at": null, "target_branch": "master", "source_branch": "voluptatem-quia-fugit-ut-perferendis", "user_notes_count": 20, "upvotes": 0, "downvotes": 0, "author": {"id": 8375961, "username": "airbyte", "name": "Airbyte Team", "state": "active", "avatar_url": "https://secure.gravatar.com/avatar/0a7841feac7218131ce7b427283c24ef?s=80&d=identicon", "web_url": "https://gitlab.com/airbyte"}, "assignees": [], "assignee": null, "reviewers": [], "source_project_id": 25156633, "target_project_id": 25156633, "labels": ["et-facere", "iste-est", "odio-ut"], "draft": false, "work_in_progress": false, "milestone": null, "merge_when_pipeline_succeeds": false, "merge_status": "can_be_merged", "detailed_merge_status": "mergeable", "sha": "079e34f4fe00c2b0b298ad633b854ae35edece80", "merge_commit_sha": null, "squash_commit_sha": null, "discussion_locked": null, "should_remove_source_branch": null, "force_remove_source_branch": null, "reference": "!22", "references": {"short": "!22", "relative": "!22", "full": "airbyte.io/ci-test-project!22"}, "web_url": "https://gitlab.com/airbyte.io/ci-test-project/-/merge_requests/22", "time_stats": {"time_estimate": 0, "total_time_spent": 0, "human_time_estimate": null, "human_total_time_spent": null}, "squash": false, "squash_on_merge": false, "task_completion_status": {"count": 0, "completed_count": 0}, "has_conflicts": false, "blocking_discussions_resolved": true, "approvals_before_merge": null, "subscribed": true, "changes_count": "12", "latest_build_started_at": null, "latest_build_finished_at": null, "first_deployed_to_production_at": null, "pipeline": null, "head_pipeline": null, "diff_refs": {"base_sha": "27329d3afac51fbf2762428e12f2635d1137c549", "head_sha": "079e34f4fe00c2b0b298ad633b854ae35edece80", "start_sha": "27329d3afac51fbf2762428e12f2635d1137c549"}, "merge_error": null, "first_contribution": false, "user": {"can_merge": true}, "merge_request_iid": 22}, "emitted_at": 1675092571724} -{"stream": "merge_request_commits", "data": {"id": 92098736, "iid": 21, "project_id": 25156633, "title": "Accusantium cumque rerum nulla.", "description": "# Voluptatum\nExercitationem aut in. Nisi fugiat similique. Sit sunt quos. Recusandae velit facere. Accusantium et sapiente.\n```ruby\nQuod.\n```", "state": "opened", "created_at": "2021-02-15T15:55:09.179Z", "updated_at": "2021-02-15T15:55:09.179Z", "merged_by": null, "merge_user": null, "merged_at": null, "closed_by": null, "closed_at": null, "target_branch": "master", "source_branch": "at-adipisci-ducimus-qui-nihil", "user_notes_count": 3, "upvotes": 0, "downvotes": 0, "author": {"id": 8375961, "username": "airbyte", "name": "Airbyte Team", "state": "active", "avatar_url": "https://secure.gravatar.com/avatar/0a7841feac7218131ce7b427283c24ef?s=80&d=identicon", "web_url": "https://gitlab.com/airbyte"}, "assignees": [], "assignee": null, "reviewers": [], "source_project_id": 25156633, "target_project_id": 25156633, "labels": ["animi-exercitationem", "asperiores-ex", "odit-omnis"], "draft": false, "work_in_progress": false, "milestone": null, "merge_when_pipeline_succeeds": false, "merge_status": "can_be_merged", "detailed_merge_status": "mergeable", "sha": "e10493c095260599a73a32def40249a4c389e354", "merge_commit_sha": null, "squash_commit_sha": null, "discussion_locked": null, "should_remove_source_branch": null, "force_remove_source_branch": null, "reference": "!21", "references": {"short": "!21", "relative": "!21", "full": "airbyte.io/ci-test-project!21"}, "web_url": "https://gitlab.com/airbyte.io/ci-test-project/-/merge_requests/21", "time_stats": {"time_estimate": 0, "total_time_spent": 0, "human_time_estimate": null, "human_total_time_spent": null}, "squash": false, "squash_on_merge": false, "task_completion_status": {"count": 0, "completed_count": 0}, "has_conflicts": false, "blocking_discussions_resolved": true, "approvals_before_merge": null, "subscribed": true, "changes_count": "6", "latest_build_started_at": null, "latest_build_finished_at": null, "first_deployed_to_production_at": null, "pipeline": null, "head_pipeline": null, "diff_refs": {"base_sha": "27329d3afac51fbf2762428e12f2635d1137c549", "head_sha": "e10493c095260599a73a32def40249a4c389e354", "start_sha": "27329d3afac51fbf2762428e12f2635d1137c549"}, "merge_error": null, "first_contribution": false, "user": {"can_merge": true}, "merge_request_iid": 21}, "emitted_at": 1675092572130} -{"stream": "releases", "data": {"name": "First release", "tag_name": "fake-tag-6", "description": "Test Release", "created_at": "2021-03-18T12:44:12.497Z", "released_at": "2021-03-18T12:44:12.497Z", "upcoming_release": false, "milestones": [1943704], "commit_path": "/new-group-airbute/new-ci-test-project/-/commit/2831d897ba0214f8d3168647e8ad4232b83987ef", "tag_path": "/new-group-airbute/new-ci-test-project/-/tags/fake-tag-6", "assets": {"count": 4, "sources": [{"format": "zip", "url": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/archive/fake-tag-6/new-ci-test-project-fake-tag-6.zip"}, {"format": "tar.gz", "url": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/archive/fake-tag-6/new-ci-test-project-fake-tag-6.tar.gz"}, {"format": "tar.bz2", "url": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/archive/fake-tag-6/new-ci-test-project-fake-tag-6.tar.bz2"}, {"format": "tar", "url": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/archive/fake-tag-6/new-ci-test-project-fake-tag-6.tar"}], "links": []}, "evidences": [{"sha": "a616fdca9312ca5aa451bc1060ce91a672fd24cc0f4d", "filepath": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/releases/fake-tag-6/evidences/855895.json", "collected_at": "2021-03-18T12:44:12.650Z"}], "_links": {"closed_issues_url": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/issues?release_tag=fake-tag-6&scope=all&state=closed", "closed_merge_requests_url": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/merge_requests?release_tag=fake-tag-6&scope=all&state=closed", "edit_url": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/releases/fake-tag-6/edit", "merged_merge_requests_url": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/merge_requests?release_tag=fake-tag-6&scope=all&state=merged", "opened_issues_url": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/issues?release_tag=fake-tag-6&scope=all&state=opened", "opened_merge_requests_url": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/merge_requests?release_tag=fake-tag-6&scope=all&state=opened", "self": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/releases/fake-tag-6"}, "author_id": 8375961, "commit_id": "2831d897ba0214f8d3168647e8ad4232b83987ef", "project_id": 25157276}, "emitted_at": 1675093087545} -{"stream": "tags", "data": {"name": "fake-tag-1", "message": "", "target": "2831d897ba0214f8d3168647e8ad4232b83987ef", "release": null, "protected": false, "commit_id": "2831d897ba0214f8d3168647e8ad4232b83987ef", "project_id": 25157276}, "emitted_at": 1674055576457} -{"stream": "tags", "data": {"name": "fake-tag-10", "message": "", "target": "2831d897ba0214f8d3168647e8ad4232b83987ef", "release": null, "protected": false, "commit_id": "2831d897ba0214f8d3168647e8ad4232b83987ef", "project_id": 25157276}, "emitted_at": 1674055576457} -{"stream": "tags", "data": {"name": "fake-tag-11", "message": "", "target": "2831d897ba0214f8d3168647e8ad4232b83987ef", "release": null, "protected": false, "commit_id": "2831d897ba0214f8d3168647e8ad4232b83987ef", "project_id": 25157276}, "emitted_at": 1674055576458} -{"stream": "tags", "data": {"name": "fake-tag-12", "message": "", "target": "2831d897ba0214f8d3168647e8ad4232b83987ef", "release": null, "protected": false, "commit_id": "2831d897ba0214f8d3168647e8ad4232b83987ef", "project_id": 25157276}, "emitted_at": 1674055576458} -{"stream": "tags", "data": {"name": "fake-tag-13", "message": "", "target": "2831d897ba0214f8d3168647e8ad4232b83987ef", "release": null, "protected": false, "commit_id": "2831d897ba0214f8d3168647e8ad4232b83987ef", "project_id": 25157276}, "emitted_at": 1674055576459} -{"stream": "tags", "data": {"name": "fake-tag-14", "message": "", "target": "2831d897ba0214f8d3168647e8ad4232b83987ef", "release": null, "protected": false, "commit_id": "2831d897ba0214f8d3168647e8ad4232b83987ef", "project_id": 25157276}, "emitted_at": 1674055576459} -{"stream": "tags", "data": {"name": "fake-tag-15", "message": "", "target": "2831d897ba0214f8d3168647e8ad4232b83987ef", "release": null, "protected": false, "commit_id": "2831d897ba0214f8d3168647e8ad4232b83987ef", "project_id": 25157276}, "emitted_at": 1674055576460} -{"stream": "tags", "data": {"name": "fake-tag-16", "message": "", "target": "2831d897ba0214f8d3168647e8ad4232b83987ef", "release": null, "protected": false, "commit_id": "2831d897ba0214f8d3168647e8ad4232b83987ef", "project_id": 25157276}, "emitted_at": 1674055576460} -{"stream": "tags", "data": {"name": "fake-tag-17", "message": "", "target": "2831d897ba0214f8d3168647e8ad4232b83987ef", "release": null, "protected": false, "commit_id": "2831d897ba0214f8d3168647e8ad4232b83987ef", "project_id": 25157276}, "emitted_at": 1674055576461} -{"stream": "tags", "data": {"name": "fake-tag-18", "message": "", "target": "2831d897ba0214f8d3168647e8ad4232b83987ef", "release": null, "protected": false, "commit_id": "2831d897ba0214f8d3168647e8ad4232b83987ef", "project_id": 25157276}, "emitted_at": 1674055576461} -{"stream": "pipelines", "data": {"id": 272632767, "iid": 2, "project_id": 25157276, "sha": "6ad3dd49539391774db738c9e7b7d69f2d872c98", "ref": "master", "status": "failed", "source": "push", "created_at": "2021-03-18T12:51:06.262Z", "updated_at": "2021-03-18T12:51:52.007Z", "web_url": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/pipelines/272632767"}, "emitted_at": 1674055581056} -{"stream": "pipelines", "data": {"id": 272631271, "iid": 1, "project_id": 25157276, "sha": "028c02d96f40afe9b4d1173c1d0f712dd6d07302", "ref": "ykurochkin/add-fake-CI-config", "status": "failed", "source": "push", "created_at": "2021-03-18T12:48:49.174Z", "updated_at": "2021-03-18T12:49:38.092Z", "web_url": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/pipelines/272631271"}, "emitted_at": 1674055581056} -{"stream": "pipelines_extended", "data": {"id": 272632767, "iid": 2, "project_id": 25157276, "sha": "6ad3dd49539391774db738c9e7b7d69f2d872c98", "ref": "master", "status": "failed", "source": "push", "created_at": "2021-03-18T12:51:06.262Z", "updated_at": "2021-03-18T12:51:52.007Z", "web_url": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/pipelines/272632767", "before_sha": "2831d897ba0214f8d3168647e8ad4232b83987ef", "tag": false, "yaml_errors": null, "user": {"id": 8375961, "username": "airbyte", "name": "Airbyte Team", "state": "active", "avatar_url": "https://secure.gravatar.com/avatar/0a7841feac7218131ce7b427283c24ef?s=80&d=identicon", "web_url": "https://gitlab.com/airbyte"}, "started_at": "2021-03-18T12:51:07.816Z", "finished_at": "2021-03-18T12:51:52.000Z", "committed_at": null, "duration": 43, "queued_duration": 1, "coverage": null, "detailed_status": {"icon": "status_failed", "text": "failed", "label": "failed", "group": "failed", "tooltip": "failed", "has_details": false, "details_path": "/new-group-airbute/new-ci-test-project/-/pipelines/272632767", "illustration": null, "favicon": "/assets/ci_favicons/favicon_status_failed-41304d7f7e3828808b0c26771f0309e55296819a9beea3ea9fbf6689d9857c12.png"}}, "emitted_at": 1674055584403} -{"stream": "pipelines_extended", "data": {"id": 272631271, "iid": 1, "project_id": 25157276, "sha": "028c02d96f40afe9b4d1173c1d0f712dd6d07302", "ref": "ykurochkin/add-fake-CI-config", "status": "failed", "source": "push", "created_at": "2021-03-18T12:48:49.174Z", "updated_at": "2021-03-18T12:49:38.092Z", "web_url": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/pipelines/272631271", "before_sha": "0000000000000000000000000000000000000000", "tag": false, "yaml_errors": null, "user": {"id": 8375961, "username": "airbyte", "name": "Airbyte Team", "state": "active", "avatar_url": "https://secure.gravatar.com/avatar/0a7841feac7218131ce7b427283c24ef?s=80&d=identicon", "web_url": "https://gitlab.com/airbyte"}, "started_at": "2021-03-18T12:48:50.166Z", "finished_at": "2021-03-18T12:49:38.084Z", "committed_at": null, "duration": 47, "queued_duration": null, "coverage": null, "detailed_status": {"icon": "status_failed", "text": "failed", "label": "failed", "group": "failed", "tooltip": "failed", "has_details": false, "details_path": "/new-group-airbute/new-ci-test-project/-/pipelines/272631271", "illustration": null, "favicon": "/assets/ci_favicons/favicon_status_failed-41304d7f7e3828808b0c26771f0309e55296819a9beea3ea9fbf6689d9857c12.png"}}, "emitted_at": 1674055584730} -{"stream": "users", "data": {"id": 7904355, "username": "y.kurochkin", "name": "Yevhenii Kurochkin", "state": "active", "avatar_url": "https://secure.gravatar.com/avatar/760fcac88680c724a6b19c6bfd5b6718?s=80&d=identicon", "web_url": "https://gitlab.com/y.kurochkin"}, "emitted_at": 1674055588242} -{"stream": "users", "data": {"id": 8375961, "username": "airbyte", "name": "Airbyte Team", "state": "active", "avatar_url": "https://secure.gravatar.com/avatar/0a7841feac7218131ce7b427283c24ef?s=80&d=identicon", "web_url": "https://gitlab.com/airbyte"}, "emitted_at": 1674055588243} -{"stream": "users", "data": {"id": 8375961, "username": "airbyte", "name": "Airbyte Team", "state": "active", "avatar_url": "https://secure.gravatar.com/avatar/0a7841feac7218131ce7b427283c24ef?s=80&d=identicon", "web_url": "https://gitlab.com/airbyte"}, "emitted_at": 1674055588543} -{"stream": "users", "data": {"id": 7904355, "username": "y.kurochkin", "name": "Yevhenii Kurochkin", "state": "active", "avatar_url": "https://secure.gravatar.com/avatar/760fcac88680c724a6b19c6bfd5b6718?s=80&d=identicon", "web_url": "https://gitlab.com/y.kurochkin"}, "emitted_at": 1674055588944} -{"stream": "users", "data": {"id": 8375961, "username": "airbyte", "name": "Airbyte Team", "state": "active", "avatar_url": "https://secure.gravatar.com/avatar/0a7841feac7218131ce7b427283c24ef?s=80&d=identicon", "web_url": "https://gitlab.com/airbyte"}, "emitted_at": 1674055588944} -{"stream": "users", "data": {"id": 7904355, "username": "y.kurochkin", "name": "Yevhenii Kurochkin", "state": "active", "avatar_url": "https://secure.gravatar.com/avatar/760fcac88680c724a6b19c6bfd5b6718?s=80&d=identicon", "web_url": "https://gitlab.com/y.kurochkin"}, "emitted_at": 1674055589446} -{"stream": "users", "data": {"id": 8375961, "username": "airbyte", "name": "Airbyte Team", "state": "active", "avatar_url": "https://secure.gravatar.com/avatar/0a7841feac7218131ce7b427283c24ef?s=80&d=identicon", "web_url": "https://gitlab.com/airbyte"}, "emitted_at": 1674055589447} -{"stream": "users", "data": {"id": 8375961, "username": "airbyte", "name": "Airbyte Team", "state": "active", "avatar_url": "https://secure.gravatar.com/avatar/0a7841feac7218131ce7b427283c24ef?s=80&d=identicon", "web_url": "https://gitlab.com/airbyte"}, "emitted_at": 1674055589844} -{"stream": "users", "data": {"id": 7904355, "username": "y.kurochkin", "name": "Yevhenii Kurochkin", "state": "active", "avatar_url": "https://secure.gravatar.com/avatar/760fcac88680c724a6b19c6bfd5b6718?s=80&d=identicon", "web_url": "https://gitlab.com/y.kurochkin"}, "emitted_at": 1674055590157} -{"stream": "users", "data": {"id": 8375961, "username": "airbyte", "name": "Airbyte Team", "state": "active", "avatar_url": "https://secure.gravatar.com/avatar/0a7841feac7218131ce7b427283c24ef?s=80&d=identicon", "web_url": "https://gitlab.com/airbyte"}, "emitted_at": 1674055590158} -{"stream": "epics", "data": {"id": 678569, "iid": 1, "color": "#1068bf", "text_color": "#FFFFFF", "group_id": 11266951, "parent_id": null, "parent_iid": null, "title": "Source Gitlab: certify to Beta", "description": "Lorem ipsum", "confidential": false, "start_date": "2022-12-11", "start_date_is_fixed": true, "start_date_fixed": "2022-12-11", "start_date_from_inherited_source": null, "start_date_from_milestones": null, "end_date": "2022-12-30", "due_date": "2022-12-30", "due_date_is_fixed": true, "due_date_fixed": "2022-12-30", "due_date_from_inherited_source": null, "due_date_from_milestones": null, "state": "opened", "web_edit_url": "/groups/airbyte.io/-/epics/1", "web_url": "https://gitlab.com/groups/airbyte.io/-/epics/1", "references": {"short": "&1", "relative": "&1", "full": "airbyte.io&1"}, "created_at": "2022-12-11T10:50:04.280Z", "updated_at": "2022-12-11T10:50:26.276Z", "closed_at": null, "labels": [], "upvotes": 1, "downvotes": 0, "_links": {"self": "https://gitlab.com/api/v4/groups/11266951/epics/1", "epic_issues": "https://gitlab.com/api/v4/groups/11266951/epics/1/issues", "group": "https://gitlab.com/api/v4/groups/11266951", "parent": null}, "author_id": 8375961}, "emitted_at": 1674055595073} -{"stream": "epic_issues", "data": {"id": 120214448, "iid": 31, "project_id": 25156633, "title": "Unit tests", "description": null, "state": "opened", "created_at": "2022-12-11T10:50:25.940Z", "updated_at": "2022-12-11T10:50:25.940Z", "closed_at": null, "closed_by": null, "labels": [], "assignees": [], "type": "ISSUE", "user_notes_count": 0, "merge_requests_count": 0, "upvotes": 0, "downvotes": 0, "due_date": null, "confidential": false, "discussion_locked": null, "issue_type": "issue", "web_url": "https://gitlab.com/airbyte.io/ci-test-project/-/issues/31", "time_stats": {"time_estimate": 0, "total_time_spent": 0, "human_time_estimate": null, "human_total_time_spent": null}, "task_completion_status": {"count": 0, "completed_count": 0}, "weight": null, "blocking_issues_count": 0, "has_tasks": true, "task_status": "", "_links": {"self": "https://gitlab.com/api/v4/projects/25156633/issues/31", "notes": "https://gitlab.com/api/v4/projects/25156633/issues/31/notes", "award_emoji": "https://gitlab.com/api/v4/projects/25156633/issues/31/award_emoji", "project": "https://gitlab.com/api/v4/projects/25156633", "closed_as_duplicate_of": null}, "references": {"short": "#31", "relative": "#31", "full": "airbyte.io/ci-test-project#31"}, "severity": "UNKNOWN", "moved_to_id": null, "service_desk_reply_to": null, "epic_iid": 1, "epic": {"id": 678569, "iid": 1, "title": "Source Gitlab: certify to Beta", "url": "/groups/airbyte.io/-/epics/1", "group_id": 11266951, "human_readable_end_date": "Dec 30, 2022", "human_readable_timestamp": "Past due"}, "iteration": null, "epic_issue_id": 1899479, "relative_position": 0, "milestone_id": null, "assignee_id": null, "author_id": 8375961}, "emitted_at": 1674055599613} +{"stream": "groups", "data": {"id": 61015202, "web_url": "https://gitlab.com/groups/new-group-airbute/test-public-sg/test-sg-public-2/test-public-subsubg-1", "name": "Test Public SubSubG 1", "path": "test-public-subsubg-1", "description": "", "visibility": "public", "share_with_group_lock": false, "require_two_factor_authentication": false, "two_factor_grace_period": 48, "project_creation_level": "developer", "auto_devops_enabled": null, "subgroup_creation_level": "maintainer", "emails_disabled": null, "mentions_disabled": null, "lfs_enabled": true, "default_branch_protection": 2, "avatar_url": null, "request_access_enabled": true, "full_name": "New Group Airbute / Test Public SG / Test SG Public 2 / Test Public SubSubG 1", "full_path": "new-group-airbute/test-public-sg/test-sg-public-2/test-public-subsubg-1", "created_at": "2022-12-02T08:55:27.046Z", "parent_id": 61014943, "ldap_cn": null, "ldap_access": null, "wiki_access_level": "enabled", "shared_with_groups": [], "runners_token": "GR1348941K9JsRDnw2J5ZQxgCDr6d", "shared_projects": [], "shared_runners_minutes_limit": null, "extra_shared_runners_minutes_limit": null, "prevent_forking_outside_group": null, "membership_lock": false, "projects": []}, "emitted_at": 1682502625281} +{"stream": "groups", "data": {"id": 61014943, "web_url": "https://gitlab.com/groups/new-group-airbute/test-public-sg/test-sg-public-2", "name": "Test SG Public 2", "path": "test-sg-public-2", "description": "", "visibility": "public", "share_with_group_lock": false, "require_two_factor_authentication": false, "two_factor_grace_period": 48, "project_creation_level": "developer", "auto_devops_enabled": null, "subgroup_creation_level": "maintainer", "emails_disabled": null, "mentions_disabled": null, "lfs_enabled": true, "default_branch_protection": 2, "avatar_url": null, "request_access_enabled": true, "full_name": "New Group Airbute / Test Public SG / Test SG Public 2", "full_path": "new-group-airbute/test-public-sg/test-sg-public-2", "created_at": "2022-12-02T08:48:04.727Z", "parent_id": 61014902, "ldap_cn": null, "ldap_access": null, "wiki_access_level": "enabled", "shared_with_groups": [], "runners_token": "GR1348941eGbxua89EPU8uu4snVuj", "shared_projects": [], "shared_runners_minutes_limit": null, "extra_shared_runners_minutes_limit": null, "prevent_forking_outside_group": null, "membership_lock": false, "projects": [{"id": 41541858, "path_with_namespace": "new-group-airbute/test-public-sg/test-sg-public-2/test-project-1"}]}, "emitted_at": 1682502625830} +{"stream": "groups", "data": {"id": 61014863, "web_url": "https://gitlab.com/groups/new-group-airbute/test-subgroup-airbyte", "name": "Test Subgroup Airbyte", "path": "test-subgroup-airbyte", "description": "", "visibility": "private", "share_with_group_lock": false, "require_two_factor_authentication": false, "two_factor_grace_period": 48, "project_creation_level": "developer", "auto_devops_enabled": null, "subgroup_creation_level": "maintainer", "emails_disabled": null, "mentions_disabled": null, "lfs_enabled": true, "default_branch_protection": 2, "avatar_url": null, "request_access_enabled": true, "full_name": "New Group Airbute / Test Subgroup Airbyte", "full_path": "new-group-airbute/test-subgroup-airbyte", "created_at": "2022-12-02T08:45:53.479Z", "parent_id": 11329647, "ldap_cn": null, "ldap_access": null, "wiki_access_level": "enabled", "shared_with_groups": [], "runners_token": "GR1348941yL2Jtfwss88thzmUPZv5", "shared_projects": [], "shared_runners_minutes_limit": null, "extra_shared_runners_minutes_limit": null, "prevent_forking_outside_group": null, "membership_lock": false, "projects": [{"id": 41541892, "path_with_namespace": "new-group-airbute/test-subgroup-airbyte/test-project-2"}]}, "emitted_at": 1682502626342} +{"stream": "groups", "data": {"id": 11266951, "web_url": "https://gitlab.com/groups/airbyte.io", "name": "airbyte.io", "path": "airbyte.io", "description": "", "visibility": "private", "share_with_group_lock": false, "require_two_factor_authentication": false, "two_factor_grace_period": 48, "project_creation_level": "developer", "auto_devops_enabled": null, "subgroup_creation_level": "maintainer", "emails_disabled": null, "mentions_disabled": null, "lfs_enabled": true, "default_branch_protection": 2, "avatar_url": null, "request_access_enabled": true, "full_name": "airbyte.io", "full_path": "airbyte.io", "created_at": "2021-03-10T17:16:37.549Z", "parent_id": null, "ldap_cn": null, "ldap_access": null, "marked_for_deletion_on": null, "wiki_access_level": "enabled", "shared_with_groups": [], "runners_token": "GR1348941bzmDjXx-Cz48snUcJfK8", "prevent_sharing_groups_outside_hierarchy": false, "shared_projects": [], "shared_runners_minutes_limit": 10000, "extra_shared_runners_minutes_limit": null, "prevent_forking_outside_group": false, "membership_lock": false, "ip_restriction_ranges": null, "projects": [{"id": 25156633, "path_with_namespace": "airbyte.io/ci-test-project"}, {"id": 25032440, "path_with_namespace": "airbyte.io/learn-gitlab"}, {"id": 25032439, "path_with_namespace": "airbyte.io/documentation"}]}, "emitted_at": 1682502626854} +{"stream": "projects", "data": {"id": 25032439, "description": null, "name": "documentation", "name_with_namespace": "airbyte.io / documentation", "path": "documentation", "path_with_namespace": "airbyte.io/documentation", "created_at": "2021-03-10T17:16:53.200Z", "default_branch": "main", "tag_list": [], "topics": [], "ssh_url_to_repo": "git@gitlab.com:airbyte.io/documentation.git", "http_url_to_repo": "https://gitlab.com/airbyte.io/documentation.git", "web_url": "https://gitlab.com/airbyte.io/documentation", "readme_url": null, "forks_count": 0, "avatar_url": null, "star_count": 0, "last_activity_at": "2021-03-10T17:16:53.200Z", "namespace": {"id": 11266951, "name": "airbyte.io", "path": "airbyte.io", "kind": "group", "full_path": "airbyte.io", "parent_id": null, "avatar_url": null, "web_url": "https://gitlab.com/groups/airbyte.io"}, "container_registry_image_prefix": "registry.gitlab.com/airbyte.io/documentation", "_links": {"self": "https://gitlab.com/api/v4/projects/25032439", "issues": "https://gitlab.com/api/v4/projects/25032439/issues", "merge_requests": "https://gitlab.com/api/v4/projects/25032439/merge_requests", "repo_branches": "https://gitlab.com/api/v4/projects/25032439/repository/branches", "labels": "https://gitlab.com/api/v4/projects/25032439/labels", "events": "https://gitlab.com/api/v4/projects/25032439/events", "members": "https://gitlab.com/api/v4/projects/25032439/members", "cluster_agents": "https://gitlab.com/api/v4/projects/25032439/cluster_agents"}, "packages_enabled": true, "empty_repo": true, "archived": false, "visibility": "private", "resolve_outdated_diff_discussions": false, "container_expiration_policy": {"cadence": "1d", "enabled": false, "keep_n": 10, "older_than": "90d", "name_regex": ".*", "name_regex_keep": null, "next_run_at": "2021-03-11T17:16:53.215Z"}, "issues_enabled": true, "merge_requests_enabled": true, "wiki_enabled": true, "jobs_enabled": true, "snippets_enabled": true, "container_registry_enabled": true, "service_desk_enabled": true, "service_desk_address": "contact-project+airbyte-io-documentation-25032439-issue-@incoming.gitlab.com", "can_create_merge_request_in": true, "issues_access_level": "enabled", "repository_access_level": "enabled", "merge_requests_access_level": "enabled", "forking_access_level": "enabled", "wiki_access_level": "enabled", "builds_access_level": "enabled", "snippets_access_level": "enabled", "pages_access_level": "private", "analytics_access_level": "enabled", "container_registry_access_level": "enabled", "security_and_compliance_access_level": "private", "releases_access_level": "enabled", "environments_access_level": "enabled", "feature_flags_access_level": "enabled", "infrastructure_access_level": "enabled", "monitor_access_level": "enabled", "emails_disabled": null, "shared_runners_enabled": true, "lfs_enabled": true, "creator_id": 8375961, "import_url": null, "import_type": null, "import_status": "none", "import_error": null, "open_issues_count": 0, "ci_default_git_depth": 50, "ci_forward_deployment_enabled": true, "ci_job_token_scope_enabled": false, "ci_separated_caches": true, "ci_opt_in_jwt": false, "ci_allow_fork_pipelines_to_run_in_parent_project": true, "build_git_strategy": "fetch", "keep_latest_artifact": true, "restrict_user_defined_variables": false, "runners_token": "GR1348941iwELAs9x3hqVbY3Bo_q4", "runner_token_expiration_interval": null, "group_runners_enabled": true, "auto_cancel_pending_pipelines": "enabled", "build_timeout": 3600, "auto_devops_enabled": false, "auto_devops_deploy_strategy": "continuous", "ci_config_path": "", "public_jobs": true, "shared_with_groups": [], "only_allow_merge_if_pipeline_succeeds": false, "allow_merge_on_skipped_pipeline": null, "request_access_enabled": true, "only_allow_merge_if_all_discussions_are_resolved": false, "remove_source_branch_after_merge": true, "printing_merge_request_link_enabled": true, "merge_method": "merge", "squash_option": "default_off", "enforce_auth_checks_on_uploads": true, "suggestion_commit_message": null, "merge_commit_template": null, "squash_commit_template": null, "issue_branch_template": null, "statistics": {"commit_count": 0, "storage_size": 0, "repository_size": 0, "wiki_size": 0, "lfs_objects_size": 0, "job_artifacts_size": 0, "pipeline_artifacts_size": 0, "packages_size": 0, "snippets_size": 0, "uploads_size": 0}, "autoclose_referenced_issues": true, "approvals_before_merge": 0, "mirror": false, "external_authorization_classification_label": "", "marked_for_deletion_at": null, "marked_for_deletion_on": null, "requirements_enabled": false, "requirements_access_level": "enabled", "security_and_compliance_enabled": true, "compliance_frameworks": [], "issues_template": null, "merge_requests_template": null, "merge_pipelines_enabled": false, "merge_trains_enabled": false, "allow_pipeline_trigger_approve_deployment": false, "permissions": {"project_access": null, "group_access": {"access_level": 50, "notification_level": 3}}}, "emitted_at": 1682502629267} +{"stream": "projects", "data": {"id": 25032440, "description": "Learn how to use GitLab to support your software development life cycle.", "name": "Learn GitLab", "name_with_namespace": "airbyte.io / Learn GitLab", "path": "learn-gitlab", "path_with_namespace": "airbyte.io/learn-gitlab", "created_at": "2021-03-10T17:16:53.553Z", "default_branch": "master", "tag_list": [], "topics": [], "ssh_url_to_repo": "git@gitlab.com:airbyte.io/learn-gitlab.git", "http_url_to_repo": "https://gitlab.com/airbyte.io/learn-gitlab.git", "web_url": "https://gitlab.com/airbyte.io/learn-gitlab", "readme_url": "https://gitlab.com/airbyte.io/learn-gitlab/-/blob/master/README.md", "forks_count": 0, "avatar_url": "https://gitlab.com/uploads/-/system/project/avatar/25032440/Artboard.jpg", "star_count": 0, "last_activity_at": "2021-03-10T17:16:53.553Z", "namespace": {"id": 11266951, "name": "airbyte.io", "path": "airbyte.io", "kind": "group", "full_path": "airbyte.io", "parent_id": null, "avatar_url": null, "web_url": "https://gitlab.com/groups/airbyte.io"}, "container_registry_image_prefix": "registry.gitlab.com/airbyte.io/learn-gitlab", "_links": {"self": "https://gitlab.com/api/v4/projects/25032440", "issues": "https://gitlab.com/api/v4/projects/25032440/issues", "merge_requests": "https://gitlab.com/api/v4/projects/25032440/merge_requests", "repo_branches": "https://gitlab.com/api/v4/projects/25032440/repository/branches", "labels": "https://gitlab.com/api/v4/projects/25032440/labels", "events": "https://gitlab.com/api/v4/projects/25032440/events", "members": "https://gitlab.com/api/v4/projects/25032440/members", "cluster_agents": "https://gitlab.com/api/v4/projects/25032440/cluster_agents"}, "packages_enabled": true, "empty_repo": false, "archived": false, "visibility": "private", "resolve_outdated_diff_discussions": false, "container_expiration_policy": {"cadence": "1d", "enabled": false, "keep_n": 10, "older_than": "90d", "name_regex": ".*", "name_regex_keep": null, "next_run_at": "2021-03-11T17:16:53.565Z"}, "issues_enabled": true, "merge_requests_enabled": true, "wiki_enabled": true, "jobs_enabled": true, "snippets_enabled": true, "container_registry_enabled": true, "service_desk_enabled": true, "service_desk_address": "contact-project+airbyte-io-learn-gitlab-25032440-issue-@incoming.gitlab.com", "can_create_merge_request_in": true, "issues_access_level": "enabled", "repository_access_level": "enabled", "merge_requests_access_level": "enabled", "forking_access_level": "enabled", "wiki_access_level": "enabled", "builds_access_level": "enabled", "snippets_access_level": "enabled", "pages_access_level": "private", "analytics_access_level": "enabled", "container_registry_access_level": "enabled", "security_and_compliance_access_level": "private", "releases_access_level": "enabled", "environments_access_level": "enabled", "feature_flags_access_level": "enabled", "infrastructure_access_level": "enabled", "monitor_access_level": "enabled", "emails_disabled": null, "shared_runners_enabled": true, "lfs_enabled": true, "creator_id": 8375961, "import_url": null, "import_type": "gitlab_project", "import_status": "finished", "import_error": null, "open_issues_count": 12, "ci_default_git_depth": 50, "ci_forward_deployment_enabled": true, "ci_job_token_scope_enabled": false, "ci_separated_caches": true, "ci_opt_in_jwt": false, "ci_allow_fork_pipelines_to_run_in_parent_project": true, "build_git_strategy": "fetch", "keep_latest_artifact": true, "restrict_user_defined_variables": false, "runners_token": "GR1348941zm9PmsyMxiKjiwpGxKtf", "runner_token_expiration_interval": null, "group_runners_enabled": true, "auto_cancel_pending_pipelines": "enabled", "build_timeout": 3600, "auto_devops_enabled": false, "auto_devops_deploy_strategy": "continuous", "ci_config_path": "", "public_jobs": true, "shared_with_groups": [], "only_allow_merge_if_pipeline_succeeds": false, "allow_merge_on_skipped_pipeline": null, "request_access_enabled": true, "only_allow_merge_if_all_discussions_are_resolved": false, "remove_source_branch_after_merge": true, "printing_merge_request_link_enabled": true, "merge_method": "merge", "squash_option": "default_off", "enforce_auth_checks_on_uploads": true, "suggestion_commit_message": null, "merge_commit_template": null, "squash_commit_template": null, "issue_branch_template": null, "statistics": {"commit_count": 1, "storage_size": 251658, "repository_size": 251658, "wiki_size": 0, "lfs_objects_size": 0, "job_artifacts_size": 0, "pipeline_artifacts_size": 0, "packages_size": 0, "snippets_size": 0, "uploads_size": 3088}, "autoclose_referenced_issues": true, "approvals_before_merge": 0, "mirror": false, "external_authorization_classification_label": "", "marked_for_deletion_at": null, "marked_for_deletion_on": null, "requirements_enabled": false, "requirements_access_level": "enabled", "security_and_compliance_enabled": true, "compliance_frameworks": [], "issues_template": null, "merge_requests_template": null, "merge_pipelines_enabled": false, "merge_trains_enabled": false, "allow_pipeline_trigger_approve_deployment": false, "permissions": {"project_access": {"access_level": 40, "notification_level": 3}, "group_access": {"access_level": 50, "notification_level": 3}}}, "emitted_at": 1682502629716} +{"stream": "projects", "data": {"id": 25157276, "description": "", "name": "New CI Test Project ", "name_with_namespace": "New Group Airbute / New CI Test Project ", "path": "new-ci-test-project", "path_with_namespace": "new-group-airbute/new-ci-test-project", "created_at": "2021-03-15T15:08:36.498Z", "default_branch": "master", "tag_list": [], "topics": [], "ssh_url_to_repo": "git@gitlab.com:new-group-airbute/new-ci-test-project.git", "http_url_to_repo": "https://gitlab.com/new-group-airbute/new-ci-test-project.git", "web_url": "https://gitlab.com/new-group-airbute/new-ci-test-project", "readme_url": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/blob/master/README.md", "forks_count": 0, "avatar_url": null, "star_count": 0, "last_activity_at": "2022-12-13T09:39:47.235Z", "namespace": {"id": 11329647, "name": "New Group Airbute", "path": "new-group-airbute", "kind": "group", "full_path": "new-group-airbute", "parent_id": null, "avatar_url": null, "web_url": "https://gitlab.com/groups/new-group-airbute"}, "container_registry_image_prefix": "registry.gitlab.com/new-group-airbute/new-ci-test-project", "_links": {"self": "https://gitlab.com/api/v4/projects/25157276", "issues": "https://gitlab.com/api/v4/projects/25157276/issues", "merge_requests": "https://gitlab.com/api/v4/projects/25157276/merge_requests", "repo_branches": "https://gitlab.com/api/v4/projects/25157276/repository/branches", "labels": "https://gitlab.com/api/v4/projects/25157276/labels", "events": "https://gitlab.com/api/v4/projects/25157276/events", "members": "https://gitlab.com/api/v4/projects/25157276/members", "cluster_agents": "https://gitlab.com/api/v4/projects/25157276/cluster_agents"}, "packages_enabled": true, "empty_repo": false, "archived": false, "visibility": "private", "resolve_outdated_diff_discussions": false, "container_expiration_policy": {"cadence": "1d", "enabled": false, "keep_n": 10, "older_than": "90d", "name_regex": ".*", "name_regex_keep": null, "next_run_at": "2021-03-16T15:08:36.518Z"}, "issues_enabled": true, "merge_requests_enabled": true, "wiki_enabled": true, "jobs_enabled": true, "snippets_enabled": true, "container_registry_enabled": true, "service_desk_enabled": true, "service_desk_address": "contact-project+new-group-airbute-new-ci-test-project-25157276-issue-@incoming.gitlab.com", "can_create_merge_request_in": true, "issues_access_level": "enabled", "repository_access_level": "enabled", "merge_requests_access_level": "enabled", "forking_access_level": "enabled", "wiki_access_level": "enabled", "builds_access_level": "enabled", "snippets_access_level": "enabled", "pages_access_level": "private", "analytics_access_level": "enabled", "container_registry_access_level": "enabled", "security_and_compliance_access_level": "private", "releases_access_level": "enabled", "environments_access_level": "enabled", "feature_flags_access_level": "enabled", "infrastructure_access_level": "enabled", "monitor_access_level": "enabled", "emails_disabled": null, "shared_runners_enabled": true, "lfs_enabled": true, "creator_id": 8375961, "import_url": null, "import_type": null, "import_status": "none", "import_error": null, "open_issues_count": 31, "ci_default_git_depth": 50, "ci_forward_deployment_enabled": true, "ci_job_token_scope_enabled": false, "ci_separated_caches": true, "ci_opt_in_jwt": false, "ci_allow_fork_pipelines_to_run_in_parent_project": true, "build_git_strategy": "fetch", "keep_latest_artifact": true, "restrict_user_defined_variables": false, "runners_token": "GR1348941eMJgWDU69xyyshaNsaTZ", "runner_token_expiration_interval": null, "group_runners_enabled": true, "auto_cancel_pending_pipelines": "enabled", "build_timeout": 3600, "auto_devops_enabled": false, "auto_devops_deploy_strategy": "continuous", "ci_config_path": "", "public_jobs": true, "shared_with_groups": [], "only_allow_merge_if_pipeline_succeeds": false, "allow_merge_on_skipped_pipeline": null, "request_access_enabled": true, "only_allow_merge_if_all_discussions_are_resolved": false, "remove_source_branch_after_merge": true, "printing_merge_request_link_enabled": true, "merge_method": "merge", "squash_option": "default_off", "enforce_auth_checks_on_uploads": true, "suggestion_commit_message": null, "merge_commit_template": null, "squash_commit_template": null, "issue_branch_template": null, "statistics": {"commit_count": 3, "storage_size": 291925, "repository_size": 283115, "wiki_size": 0, "lfs_objects_size": 0, "job_artifacts_size": 8810, "pipeline_artifacts_size": 0, "packages_size": 0, "snippets_size": 0, "uploads_size": 0}, "autoclose_referenced_issues": true, "external_authorization_classification_label": "", "requirements_enabled": false, "requirements_access_level": "enabled", "security_and_compliance_enabled": true, "compliance_frameworks": [], "permissions": {"project_access": {"access_level": 40, "notification_level": 3}, "group_access": {"access_level": 50, "notification_level": 3}}}, "emitted_at": 1682502630270} +{"stream": "projects", "data": {"id": 41541858, "description": "Project description", "name": "Test Project 1", "name_with_namespace": "New Group Airbute / Test Public SG / Test SG Public 2 / Test Project 1", "path": "test-project-1", "path_with_namespace": "new-group-airbute/test-public-sg/test-sg-public-2/test-project-1", "created_at": "2022-12-02T08:50:08.842Z", "default_branch": "master", "tag_list": [], "topics": [], "ssh_url_to_repo": "git@gitlab.com:new-group-airbute/test-public-sg/test-sg-public-2/test-project-1.git", "http_url_to_repo": "https://gitlab.com/new-group-airbute/test-public-sg/test-sg-public-2/test-project-1.git", "web_url": "https://gitlab.com/new-group-airbute/test-public-sg/test-sg-public-2/test-project-1", "readme_url": "https://gitlab.com/new-group-airbute/test-public-sg/test-sg-public-2/test-project-1/-/blob/master/README.md", "forks_count": 0, "avatar_url": null, "star_count": 0, "last_activity_at": "2022-12-02T08:50:08.842Z", "namespace": {"id": 61014943, "name": "Test SG Public 2", "path": "test-sg-public-2", "kind": "group", "full_path": "new-group-airbute/test-public-sg/test-sg-public-2", "parent_id": 61014902, "avatar_url": null, "web_url": "https://gitlab.com/groups/new-group-airbute/test-public-sg/test-sg-public-2"}, "container_registry_image_prefix": "registry.gitlab.com/new-group-airbute/test-public-sg/test-sg-public-2/test-project-1", "_links": {"self": "https://gitlab.com/api/v4/projects/41541858", "issues": "https://gitlab.com/api/v4/projects/41541858/issues", "merge_requests": "https://gitlab.com/api/v4/projects/41541858/merge_requests", "repo_branches": "https://gitlab.com/api/v4/projects/41541858/repository/branches", "labels": "https://gitlab.com/api/v4/projects/41541858/labels", "events": "https://gitlab.com/api/v4/projects/41541858/events", "members": "https://gitlab.com/api/v4/projects/41541858/members", "cluster_agents": "https://gitlab.com/api/v4/projects/41541858/cluster_agents"}, "packages_enabled": true, "empty_repo": false, "archived": false, "visibility": "private", "resolve_outdated_diff_discussions": false, "container_expiration_policy": {"cadence": "1d", "enabled": false, "keep_n": 10, "older_than": "90d", "name_regex": ".*", "name_regex_keep": null, "next_run_at": "2022-12-03T08:50:08.883Z"}, "issues_enabled": true, "merge_requests_enabled": true, "wiki_enabled": true, "jobs_enabled": true, "snippets_enabled": true, "container_registry_enabled": true, "service_desk_enabled": true, "service_desk_address": "contact-project+new-group-airbute-test-public-sg-test-sg-public-2-test-project-41541858-issue-@incoming.gitlab.com", "can_create_merge_request_in": true, "issues_access_level": "enabled", "repository_access_level": "enabled", "merge_requests_access_level": "enabled", "forking_access_level": "enabled", "wiki_access_level": "enabled", "builds_access_level": "enabled", "snippets_access_level": "enabled", "pages_access_level": "private", "analytics_access_level": "enabled", "container_registry_access_level": "enabled", "security_and_compliance_access_level": "private", "releases_access_level": "enabled", "environments_access_level": "enabled", "feature_flags_access_level": "enabled", "infrastructure_access_level": "enabled", "monitor_access_level": "enabled", "emails_disabled": null, "shared_runners_enabled": true, "lfs_enabled": true, "creator_id": 8375961, "import_url": null, "import_type": "gitlab_project", "import_status": "finished", "import_error": null, "open_issues_count": 0, "ci_default_git_depth": 20, "ci_forward_deployment_enabled": true, "ci_job_token_scope_enabled": false, "ci_separated_caches": true, "ci_opt_in_jwt": false, "ci_allow_fork_pipelines_to_run_in_parent_project": true, "build_git_strategy": "fetch", "keep_latest_artifact": true, "restrict_user_defined_variables": false, "runners_token": "GR1348941JLqwDRN64-__uzBXcgc5", "runner_token_expiration_interval": null, "group_runners_enabled": true, "auto_cancel_pending_pipelines": "enabled", "build_timeout": 3600, "auto_devops_enabled": false, "auto_devops_deploy_strategy": "continuous", "ci_config_path": "", "public_jobs": true, "shared_with_groups": [], "only_allow_merge_if_pipeline_succeeds": false, "allow_merge_on_skipped_pipeline": null, "request_access_enabled": false, "only_allow_merge_if_all_discussions_are_resolved": false, "remove_source_branch_after_merge": true, "printing_merge_request_link_enabled": true, "merge_method": "merge", "squash_option": "default_off", "enforce_auth_checks_on_uploads": true, "suggestion_commit_message": null, "merge_commit_template": null, "squash_commit_template": null, "issue_branch_template": null, "statistics": {"commit_count": 1, "storage_size": 125829, "repository_size": 125829, "wiki_size": 0, "lfs_objects_size": 0, "job_artifacts_size": 0, "pipeline_artifacts_size": 0, "packages_size": 0, "snippets_size": 0, "uploads_size": 0}, "autoclose_referenced_issues": true, "external_authorization_classification_label": "", "requirements_enabled": false, "requirements_access_level": "enabled", "security_and_compliance_enabled": true, "compliance_frameworks": [], "permissions": {"project_access": {"access_level": 40, "notification_level": 3}, "group_access": {"access_level": 50, "notification_level": 3}}}, "emitted_at": 1682502630746} +{"stream": "branches", "data": {"name": "test-branch-number-6", "merged": true, "protected": false, "developers_can_push": false, "developers_can_merge": false, "can_push": true, "default": false, "web_url": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/tree/test-branch-number-6", "commit_id": "2831d897ba0214f8d3168647e8ad4232b83987ef", "project_id": 25157276}, "emitted_at": 1682502634854} +{"stream": "branches", "data": {"name": "test-branch-number-7", "merged": true, "protected": false, "developers_can_push": false, "developers_can_merge": false, "can_push": true, "default": false, "web_url": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/tree/test-branch-number-7", "commit_id": "2831d897ba0214f8d3168647e8ad4232b83987ef", "project_id": 25157276}, "emitted_at": 1682502634854} +{"stream": "branches", "data": {"name": "test-branch-number-8", "merged": true, "protected": false, "developers_can_push": false, "developers_can_merge": false, "can_push": true, "default": false, "web_url": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/tree/test-branch-number-8", "commit_id": "2831d897ba0214f8d3168647e8ad4232b83987ef", "project_id": 25157276}, "emitted_at": 1682502634854} +{"stream": "branches", "data": {"name": "test-branch-number-9", "merged": true, "protected": false, "developers_can_push": false, "developers_can_merge": false, "can_push": true, "default": false, "web_url": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/tree/test-branch-number-9", "commit_id": "2831d897ba0214f8d3168647e8ad4232b83987ef", "project_id": 25157276}, "emitted_at": 1682502634854} +{"stream": "branches", "data": {"name": "ykurochkin/test-branch", "merged": false, "protected": false, "developers_can_push": false, "developers_can_merge": false, "can_push": true, "default": false, "web_url": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/tree/ykurochkin/test-branch", "commit_id": "9b0c5cf345f0ca1a3fb3ae253e74e0616abf8129", "project_id": 25157276}, "emitted_at": 1682502634855} +{"stream": "branches", "data": {"name": "master", "merged": false, "protected": true, "developers_can_push": false, "developers_can_merge": false, "can_push": true, "default": true, "web_url": "https://gitlab.com/new-group-airbute/test-public-sg/test-sg-public-2/test-project-1/-/tree/master", "commit_id": "bcdfbfd57c8f3cd6cd65998464bb71a562d49948", "project_id": 41541858}, "emitted_at": 1682502635250} +{"stream": "commits", "data": {"id": "fb24e6736b3a959a59e49b56d2d83a28ea3ae15b", "short_id": "fb24e673", "created_at": "2022-12-02T14:26:55.000+00:00", "parent_ids": [], "title": "Initial commit", "message": "Initial commit", "author_name": "Alexander Arhipenko", "author_email": "integration-test@airbyte.io", "authored_date": "2022-12-02T14:26:55.000+00:00", "committer_name": "Alexander Arhipenko", "committer_email": "integration-test@airbyte.io", "committed_date": "2022-12-02T14:26:55.000+00:00", "trailers": {}, "web_url": "https://gitlab.com/new-group-airbute/test-public-sg/test-sg-public-2/test-private-subsubg-1/test_project_in_nested_subgroup/-/commit/fb24e6736b3a959a59e49b56d2d83a28ea3ae15b", "stats": {"additions": 92, "deletions": 0, "total": 92}, "project_id": 41551658}, "emitted_at": 1682502638854} +{"stream": "commits", "data": {"id": "27329d3afac51fbf2762428e12f2635d1137c549", "short_id": "27329d3a", "created_at": "2021-02-15T15:52:52.000+00:00", "parent_ids": ["b362ea7aa65515dc35ff3a93423478b2143e771d"], "title": "Update README.md", "message": "Update README.md", "author_name": "Administrator", "author_email": "admin@example.com", "authored_date": "2021-02-15T15:52:52.000+00:00", "committer_name": "Administrator", "committer_email": "admin@example.com", "committed_date": "2021-02-15T15:52:52.000+00:00", "trailers": {}, "web_url": "https://gitlab.com/airbyte.io/ci-test-project/-/commit/27329d3afac51fbf2762428e12f2635d1137c549", "stats": {"additions": 6, "deletions": 0, "total": 6}, "project_id": 25156633}, "emitted_at": 1682502641805} +{"stream": "commits", "data": {"id": "b362ea7aa65515dc35ff3a93423478b2143e771d", "short_id": "b362ea7a", "created_at": "2021-02-15T15:52:03.000+00:00", "parent_ids": [], "title": "Initial commit", "message": "Initial commit", "author_name": "Administrator", "author_email": "admin@example.com", "authored_date": "2021-02-15T15:52:03.000+00:00", "committer_name": "Administrator", "committer_email": "admin@example.com", "committed_date": "2021-02-15T15:52:03.000+00:00", "trailers": {}, "web_url": "https://gitlab.com/airbyte.io/ci-test-project/-/commit/b362ea7aa65515dc35ff3a93423478b2143e771d", "stats": {"additions": 2, "deletions": 0, "total": 2}, "project_id": 25156633}, "emitted_at": 1682502641806} +{"stream": "commits", "data": {"id": "6ad3dd49539391774db738c9e7b7d69f2d872c98", "short_id": "6ad3dd49", "created_at": "2021-03-18T12:51:05.000+00:00", "parent_ids": ["2831d897ba0214f8d3168647e8ad4232b83987ef", "028c02d96f40afe9b4d1173c1d0f712dd6d07302"], "title": "Merge branch 'ykurochkin/add-fake-CI-config' into 'master'", "message": "Merge branch 'ykurochkin/add-fake-CI-config' into 'master'\n\nadd fake CI config\n\nSee merge request new-group-airbute/new-ci-test-project!3", "author_name": "Alexander Arhipenko", "author_email": "integration-test@airbyte.io", "authored_date": "2021-03-18T12:51:05.000+00:00", "committer_name": "Alexander Arhipenko", "committer_email": "integration-test@airbyte.io", "committed_date": "2021-03-18T12:51:05.000+00:00", "trailers": {}, "web_url": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/commit/6ad3dd49539391774db738c9e7b7d69f2d872c98", "stats": {"additions": 14, "deletions": 0, "total": 14}, "project_id": 25157276}, "emitted_at": 1682502647168} +{"stream": "commits", "data": {"id": "028c02d96f40afe9b4d1173c1d0f712dd6d07302", "short_id": "028c02d9", "created_at": "2021-03-18T14:48:41.000+02:00", "parent_ids": ["2831d897ba0214f8d3168647e8ad4232b83987ef"], "title": "add fake CI config", "message": "add fake CI config\n", "author_name": "ykurochkin", "author_email": "zhenia.kurochkin@gmail.com", "authored_date": "2021-03-18T14:48:41.000+02:00", "committer_name": "ykurochkin", "committer_email": "zhenia.kurochkin@gmail.com", "committed_date": "2021-03-18T14:48:41.000+02:00", "trailers": {}, "web_url": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/commit/028c02d96f40afe9b4d1173c1d0f712dd6d07302", "stats": {"additions": 14, "deletions": 0, "total": 14}, "project_id": 25157276}, "emitted_at": 1682502647168} +{"stream": "commits", "data": {"id": "2831d897ba0214f8d3168647e8ad4232b83987ef", "short_id": "2831d897", "created_at": "2021-03-15T15:08:36.000+00:00", "parent_ids": [], "title": "Initial commit", "message": "Initial commit", "author_name": "Alexander Arhipenko", "author_email": "integration-test@airbyte.io", "authored_date": "2021-03-15T15:08:36.000+00:00", "committer_name": "Alexander Arhipenko", "committer_email": "integration-test@airbyte.io", "committed_date": "2021-03-15T15:08:36.000+00:00", "trailers": {}, "web_url": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/commit/2831d897ba0214f8d3168647e8ad4232b83987ef", "stats": {"additions": 2, "deletions": 0, "total": 2}, "project_id": 25157276}, "emitted_at": 1682502647169} +{"stream": "group_issue_boards", "data": {"id": 5099065, "name": "Development", "hide_backlog_list": false, "hide_closed_list": false, "project": null, "lists": [], "group": {"id": 11329647, "web_url": "https://gitlab.com/groups/new-group-airbute", "name": "New Group Airbute"}, "group_id": 11329647}, "emitted_at": 1682502651329} +{"stream": "issues", "data": {"id": 80943780, "iid": 5, "project_id": 25157276, "title": "Fake Issue 4", "description": null, "state": "opened", "created_at": "2021-03-15T15:22:24.193Z", "updated_at": "2021-03-15T15:22:24.193Z", "closed_at": null, "labels": ["bug"], "assignees": [], "type": "ISSUE", "user_notes_count": 0, "merge_requests_count": 0, "upvotes": 0, "downvotes": 0, "due_date": null, "confidential": false, "discussion_locked": null, "issue_type": "issue", "web_url": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/issues/5", "time_stats": {"time_estimate": 0, "total_time_spent": 0, "human_time_estimate": null, "human_total_time_spent": null}, "task_completion_status": {"count": 0, "completed_count": 0}, "blocking_issues_count": 0, "has_tasks": true, "task_status": "", "_links": {"self": "https://gitlab.com/api/v4/projects/25157276/issues/5", "notes": "https://gitlab.com/api/v4/projects/25157276/issues/5/notes", "award_emoji": "https://gitlab.com/api/v4/projects/25157276/issues/5/award_emoji", "project": "https://gitlab.com/api/v4/projects/25157276", "closed_as_duplicate_of": null}, "references": {"short": "#5", "relative": "#5", "full": "new-group-airbute/new-ci-test-project#5"}, "severity": "UNKNOWN", "moved_to_id": null, "service_desk_reply_to": null, "author_id": 8375961, "assignee_id": null, "closed_by_id": null, "milestone_id": null}, "emitted_at": 1682502666115} +{"stream": "issues", "data": {"id": 80943779, "iid": 4, "project_id": 25157276, "title": "Fake Issue 3", "description": null, "state": "opened", "created_at": "2021-03-15T15:22:23.597Z", "updated_at": "2021-03-15T15:22:23.597Z", "closed_at": null, "labels": ["bug"], "assignees": [], "type": "ISSUE", "user_notes_count": 0, "merge_requests_count": 0, "upvotes": 0, "downvotes": 0, "due_date": null, "confidential": false, "discussion_locked": null, "issue_type": "issue", "web_url": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/issues/4", "time_stats": {"time_estimate": 0, "total_time_spent": 0, "human_time_estimate": null, "human_total_time_spent": null}, "task_completion_status": {"count": 0, "completed_count": 0}, "blocking_issues_count": 0, "has_tasks": true, "task_status": "", "_links": {"self": "https://gitlab.com/api/v4/projects/25157276/issues/4", "notes": "https://gitlab.com/api/v4/projects/25157276/issues/4/notes", "award_emoji": "https://gitlab.com/api/v4/projects/25157276/issues/4/award_emoji", "project": "https://gitlab.com/api/v4/projects/25157276", "closed_as_duplicate_of": null}, "references": {"short": "#4", "relative": "#4", "full": "new-group-airbute/new-ci-test-project#4"}, "severity": "UNKNOWN", "moved_to_id": null, "service_desk_reply_to": null, "author_id": 8375961, "assignee_id": null, "closed_by_id": null, "milestone_id": null}, "emitted_at": 1682502666116} +{"stream": "issues", "data": {"id": 80943777, "iid": 3, "project_id": 25157276, "title": "Fake Issue 2", "description": null, "state": "opened", "created_at": "2021-03-15T15:22:23.081Z", "updated_at": "2021-03-15T15:22:23.081Z", "closed_at": null, "labels": ["bug"], "assignees": [], "type": "ISSUE", "user_notes_count": 0, "merge_requests_count": 0, "upvotes": 0, "downvotes": 0, "due_date": null, "confidential": false, "discussion_locked": null, "issue_type": "issue", "web_url": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/issues/3", "time_stats": {"time_estimate": 0, "total_time_spent": 0, "human_time_estimate": null, "human_total_time_spent": null}, "task_completion_status": {"count": 0, "completed_count": 0}, "blocking_issues_count": 0, "has_tasks": true, "task_status": "", "_links": {"self": "https://gitlab.com/api/v4/projects/25157276/issues/3", "notes": "https://gitlab.com/api/v4/projects/25157276/issues/3/notes", "award_emoji": "https://gitlab.com/api/v4/projects/25157276/issues/3/award_emoji", "project": "https://gitlab.com/api/v4/projects/25157276", "closed_as_duplicate_of": null}, "references": {"short": "#3", "relative": "#3", "full": "new-group-airbute/new-ci-test-project#3"}, "severity": "UNKNOWN", "moved_to_id": null, "service_desk_reply_to": null, "author_id": 8375961, "assignee_id": null, "closed_by_id": null, "milestone_id": null}, "emitted_at": 1682502666116} +{"stream": "issues", "data": {"id": 80943769, "iid": 2, "project_id": 25157276, "title": "Fake Issue 1", "description": null, "state": "opened", "created_at": "2021-03-15T15:22:14.281Z", "updated_at": "2021-03-15T15:22:14.281Z", "closed_at": null, "labels": ["bug"], "assignees": [], "type": "ISSUE", "user_notes_count": 0, "merge_requests_count": 0, "upvotes": 0, "downvotes": 0, "due_date": null, "confidential": false, "discussion_locked": null, "issue_type": "issue", "web_url": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/issues/2", "time_stats": {"time_estimate": 0, "total_time_spent": 0, "human_time_estimate": null, "human_total_time_spent": null}, "task_completion_status": {"count": 0, "completed_count": 0}, "blocking_issues_count": 0, "has_tasks": true, "task_status": "", "_links": {"self": "https://gitlab.com/api/v4/projects/25157276/issues/2", "notes": "https://gitlab.com/api/v4/projects/25157276/issues/2/notes", "award_emoji": "https://gitlab.com/api/v4/projects/25157276/issues/2/award_emoji", "project": "https://gitlab.com/api/v4/projects/25157276", "closed_as_duplicate_of": null}, "references": {"short": "#2", "relative": "#2", "full": "new-group-airbute/new-ci-test-project#2"}, "severity": "UNKNOWN", "moved_to_id": null, "service_desk_reply_to": null, "author_id": 8375961, "assignee_id": null, "closed_by_id": null, "milestone_id": null}, "emitted_at": 1682502666117} +{"stream": "issues", "data": {"id": 80943452, "iid": 1, "project_id": 25157276, "title": "Issues with auth", "description": null, "state": "opened", "created_at": "2021-03-15T15:18:53.167Z", "updated_at": "2021-03-15T15:18:53.167Z", "closed_at": null, "labels": ["bug"], "assignees": [], "type": "ISSUE", "user_notes_count": 0, "merge_requests_count": 0, "upvotes": 0, "downvotes": 0, "due_date": null, "confidential": false, "discussion_locked": null, "issue_type": "issue", "web_url": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/issues/1", "time_stats": {"time_estimate": 0, "total_time_spent": 0, "human_time_estimate": null, "human_total_time_spent": null}, "task_completion_status": {"count": 0, "completed_count": 0}, "blocking_issues_count": 0, "has_tasks": true, "task_status": "", "_links": {"self": "https://gitlab.com/api/v4/projects/25157276/issues/1", "notes": "https://gitlab.com/api/v4/projects/25157276/issues/1/notes", "award_emoji": "https://gitlab.com/api/v4/projects/25157276/issues/1/award_emoji", "project": "https://gitlab.com/api/v4/projects/25157276", "closed_as_duplicate_of": null}, "references": {"short": "#1", "relative": "#1", "full": "new-group-airbute/new-ci-test-project#1"}, "severity": "UNKNOWN", "moved_to_id": null, "service_desk_reply_to": null, "author_id": 8375961, "assignee_id": null, "closed_by_id": null, "milestone_id": null}, "emitted_at": 1682502666117} +{"stream": "issues", "data": {"id": 80943786, "iid": 9, "project_id": 25157276, "title": "Fake Issue 8", "description": null, "state": "closed", "created_at": "2021-03-15T15:22:26.564Z", "updated_at": "2022-12-13T09:39:47.330Z", "closed_at": "2022-12-13T09:39:47.151Z", "labels": ["bug"], "assignees": [], "type": "ISSUE", "user_notes_count": 0, "merge_requests_count": 0, "upvotes": 0, "downvotes": 0, "due_date": null, "confidential": false, "discussion_locked": null, "issue_type": "issue", "web_url": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/issues/9", "time_stats": {"time_estimate": 0, "total_time_spent": 0, "human_time_estimate": null, "human_total_time_spent": null}, "task_completion_status": {"count": 0, "completed_count": 0}, "blocking_issues_count": 0, "has_tasks": true, "task_status": "", "_links": {"self": "https://gitlab.com/api/v4/projects/25157276/issues/9", "notes": "https://gitlab.com/api/v4/projects/25157276/issues/9/notes", "award_emoji": "https://gitlab.com/api/v4/projects/25157276/issues/9/award_emoji", "project": "https://gitlab.com/api/v4/projects/25157276", "closed_as_duplicate_of": null}, "references": {"short": "#9", "relative": "#9", "full": "new-group-airbute/new-ci-test-project#9"}, "severity": "UNKNOWN", "moved_to_id": null, "service_desk_reply_to": null, "author_id": 8375961, "assignee_id": null, "closed_by_id": 8375961, "milestone_id": null}, "emitted_at": 1682502667156} +{"stream": "jobs", "data": {"id": 1108959782, "status": "failed", "stage": "test", "name": "test-code-job2", "ref": "master", "tag": false, "coverage": null, "allow_failure": false, "created_at": "2021-03-18T12:51:06.294Z", "started_at": "2021-03-18T12:51:07.646Z", "finished_at": "2021-03-18T12:51:51.309Z", "erased_at": null, "duration": 43.662407, "queued_duration": 1.180926, "failure_reason": "script_failure", "web_url": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/jobs/1108959782", "project": {"ci_job_token_scope_enabled": false}, "artifacts": [{"file_type": "trace", "size": 2200, "filename": "job.log", "file_format": null}], "artifacts_expire_at": null, "tag_list": [], "user_id": 8375961, "pipeline_id": 272632767, "runner_id": 380986, "commit_id": "6ad3dd49539391774db738c9e7b7d69f2d872c98", "project_id": 25157276}, "emitted_at": 1682502680299} +{"stream": "jobs", "data": {"id": 1108959779, "status": "failed", "stage": "test", "name": "test-code-job1", "ref": "master", "tag": false, "coverage": null, "allow_failure": false, "created_at": "2021-03-18T12:51:06.279Z", "started_at": "2021-03-18T12:51:07.943Z", "finished_at": "2021-03-18T12:51:50.943Z", "erased_at": null, "duration": 42.999853, "queued_duration": 1.349274, "failure_reason": "script_failure", "web_url": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/jobs/1108959779", "project": {"ci_job_token_scope_enabled": false}, "artifacts": [{"file_type": "trace", "size": 2182, "filename": "job.log", "file_format": null}], "artifacts_expire_at": null, "tag_list": [], "user_id": 8375961, "pipeline_id": 272632767, "runner_id": 380987, "commit_id": "6ad3dd49539391774db738c9e7b7d69f2d872c98", "project_id": 25157276}, "emitted_at": 1682502680300} +{"stream": "jobs", "data": {"id": 1108952832, "status": "failed", "stage": "test", "name": "test-code-job2", "ref": "ykurochkin/add-fake-CI-config", "tag": false, "coverage": null, "allow_failure": false, "created_at": "2021-03-18T12:48:49.222Z", "started_at": "2021-03-18T12:48:50.732Z", "finished_at": "2021-03-18T12:49:37.961Z", "erased_at": null, "duration": 47.229034, "queued_duration": 1.422541, "failure_reason": "script_failure", "web_url": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/jobs/1108952832", "project": {"ci_job_token_scope_enabled": false}, "artifacts": [{"file_type": "trace", "size": 2223, "filename": "job.log", "file_format": null}], "artifacts_expire_at": null, "tag_list": [], "user_id": 8375961, "pipeline_id": 272631271, "runner_id": 44949, "commit_id": "028c02d96f40afe9b4d1173c1d0f712dd6d07302", "project_id": 25157276}, "emitted_at": 1682502680713} +{"stream": "jobs", "data": {"id": 1108952831, "status": "failed", "stage": "test", "name": "test-code-job1", "ref": "ykurochkin/add-fake-CI-config", "tag": false, "coverage": null, "allow_failure": false, "created_at": "2021-03-18T12:48:49.199Z", "started_at": "2021-03-18T12:48:50.064Z", "finished_at": "2021-03-18T12:49:34.277Z", "erased_at": null, "duration": 44.212296, "queued_duration": 0.735172, "failure_reason": "script_failure", "web_url": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/jobs/1108952831", "project": {"ci_job_token_scope_enabled": false}, "artifacts": [{"file_type": "trace", "size": 2205, "filename": "job.log", "file_format": null}], "artifacts_expire_at": null, "tag_list": [], "user_id": 8375961, "pipeline_id": 272631271, "runner_id": 380987, "commit_id": "028c02d96f40afe9b4d1173c1d0f712dd6d07302", "project_id": 25157276}, "emitted_at": 1682502680714} +{"stream": "project_milestones", "data": {"id": 1943660, "iid": 7, "project_id": 25157276, "title": "Project Milestone 7", "description": null, "state": "active", "created_at": "2021-03-15T15:32:58.234Z", "updated_at": "2021-03-15T15:32:58.234Z", "due_date": null, "start_date": null, "expired": false, "web_url": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/milestones/7"}, "emitted_at": 1682502686336} +{"stream": "project_milestones", "data": {"id": 1943659, "iid": 6, "project_id": 25157276, "title": "Project Milestone 6", "description": null, "state": "active", "created_at": "2021-03-15T15:32:57.814Z", "updated_at": "2021-03-15T15:32:57.814Z", "due_date": null, "start_date": null, "expired": false, "web_url": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/milestones/6"}, "emitted_at": 1682502686336} +{"stream": "project_milestones", "data": {"id": 1943658, "iid": 5, "project_id": 25157276, "title": "Project Milestone 5", "description": null, "state": "active", "created_at": "2021-03-15T15:32:57.412Z", "updated_at": "2021-03-15T15:32:57.412Z", "due_date": null, "start_date": null, "expired": false, "web_url": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/milestones/5"}, "emitted_at": 1682502686336} +{"stream": "project_milestones", "data": {"id": 1943657, "iid": 4, "project_id": 25157276, "title": "Project Milestone 4", "description": null, "state": "active", "created_at": "2021-03-15T15:32:57.023Z", "updated_at": "2021-03-15T15:32:57.023Z", "due_date": null, "start_date": null, "expired": false, "web_url": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/milestones/4"}, "emitted_at": 1682502686336} +{"stream": "project_milestones", "data": {"id": 1943655, "iid": 3, "project_id": 25157276, "title": "Project Milestone 3", "description": null, "state": "active", "created_at": "2021-03-15T15:32:49.897Z", "updated_at": "2021-03-15T15:32:49.897Z", "due_date": null, "start_date": null, "expired": false, "web_url": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/milestones/3"}, "emitted_at": 1682502686336} +{"stream": "project_milestones", "data": {"id": 1943649, "iid": 2, "project_id": 25157276, "title": "Project Milestone 2", "description": null, "state": "active", "created_at": "2021-03-15T15:31:25.134Z", "updated_at": "2021-03-15T15:31:25.134Z", "due_date": null, "start_date": null, "expired": false, "web_url": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/milestones/2"}, "emitted_at": 1682502686337} +{"stream": "project_milestones", "data": {"id": 1943648, "iid": 1, "project_id": 25157276, "title": "Project Milestone 1", "description": null, "state": "active", "created_at": "2021-03-15T15:30:02.691Z", "updated_at": "2021-03-15T15:30:02.691Z", "due_date": null, "start_date": null, "expired": false, "web_url": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/milestones/1"}, "emitted_at": 1682502686859} +{"stream": "group_milestones", "data": {"id": 1943761, "iid": 7, "group_id": 11329647, "title": "Group Milestone 7", "description": null, "state": "active", "created_at": "2021-03-15T16:00:55.461Z", "updated_at": "2021-03-15T16:00:55.461Z", "due_date": null, "start_date": null, "expired": false, "web_url": "https://gitlab.com/groups/new-group-airbute/-/milestones/7"}, "emitted_at": 1682502687655} +{"stream": "group_milestones", "data": {"id": 1943760, "iid": 6, "group_id": 11329647, "title": "Group Milestone 6", "description": null, "state": "active", "created_at": "2021-03-15T16:00:55.054Z", "updated_at": "2021-03-15T16:00:55.054Z", "due_date": null, "start_date": null, "expired": false, "web_url": "https://gitlab.com/groups/new-group-airbute/-/milestones/6"}, "emitted_at": 1682502687655} +{"stream": "group_milestones", "data": {"id": 1943759, "iid": 5, "group_id": 11329647, "title": "Group Milestone 5", "description": null, "state": "active", "created_at": "2021-03-15T16:00:54.349Z", "updated_at": "2021-03-15T16:00:54.349Z", "due_date": null, "start_date": null, "expired": false, "web_url": "https://gitlab.com/groups/new-group-airbute/-/milestones/5"}, "emitted_at": 1682502687655} +{"stream": "group_milestones", "data": {"id": 1943758, "iid": 4, "group_id": 11329647, "title": "Group Milestone 4", "description": null, "state": "active", "created_at": "2021-03-15T16:00:53.875Z", "updated_at": "2021-03-15T16:00:53.875Z", "due_date": null, "start_date": null, "expired": false, "web_url": "https://gitlab.com/groups/new-group-airbute/-/milestones/4"}, "emitted_at": 1682502687655} +{"stream": "group_milestones", "data": {"id": 1943757, "iid": 3, "group_id": 11329647, "title": "Group Milestone 3", "description": null, "state": "active", "created_at": "2021-03-15T16:00:52.498Z", "updated_at": "2021-03-15T16:00:52.498Z", "due_date": null, "start_date": null, "expired": false, "web_url": "https://gitlab.com/groups/new-group-airbute/-/milestones/3"}, "emitted_at": 1682502687655} +{"stream": "group_milestones", "data": {"id": 1943756, "iid": 2, "group_id": 11329647, "title": "Group Milestone 2", "description": null, "state": "active", "created_at": "2021-03-15T16:00:52.138Z", "updated_at": "2021-03-15T16:00:52.138Z", "due_date": null, "start_date": null, "expired": false, "web_url": "https://gitlab.com/groups/new-group-airbute/-/milestones/2"}, "emitted_at": 1682502687656} +{"stream": "group_milestones", "data": {"id": 1943755, "iid": 1, "group_id": 11329647, "title": "Group Milestone 1", "description": null, "state": "active", "created_at": "2021-03-15T16:00:51.775Z", "updated_at": "2021-03-15T16:00:51.775Z", "due_date": null, "start_date": null, "expired": false, "web_url": "https://gitlab.com/groups/new-group-airbute/-/milestones/1"}, "emitted_at": 1682502687656} +{"stream": "project_members", "data": {"access_level": 40, "created_at": "2022-12-02T08:52:12.187Z", "expires_at": null, "id": 8375961, "username": "airbyte", "name": "Airbyte Team", "state": "active", "avatar_url": "https://secure.gravatar.com/avatar/0a7841feac7218131ce7b427283c24ef?s=80&d=identicon", "web_url": "https://gitlab.com/airbyte", "membership_state": "active", "project_id": 41541906}, "emitted_at": 1682502691470} +{"stream": "project_members", "data": {"access_level": 40, "created_at": "2022-12-02T08:51:28.434Z", "expires_at": null, "id": 8375961, "username": "airbyte", "name": "Airbyte Team", "state": "active", "avatar_url": "https://secure.gravatar.com/avatar/0a7841feac7218131ce7b427283c24ef?s=80&d=identicon", "web_url": "https://gitlab.com/airbyte", "membership_state": "active", "project_id": 41541892}, "emitted_at": 1682502692114} +{"stream": "project_members", "data": {"access_level": 40, "created_at": "2021-03-15T14:46:31.550Z", "expires_at": null, "id": 8375961, "username": "airbyte", "name": "Airbyte Team", "state": "active", "avatar_url": "https://secure.gravatar.com/avatar/0a7841feac7218131ce7b427283c24ef?s=80&d=identicon", "web_url": "https://gitlab.com/airbyte", "membership_state": "active", "project_id": 25156633}, "emitted_at": 1682502692393} +{"stream": "project_members", "data": {"access_level": 40, "created_at": "2021-03-10T17:16:54.405Z", "expires_at": null, "id": 8375961, "username": "airbyte", "name": "Airbyte Team", "state": "active", "avatar_url": "https://secure.gravatar.com/avatar/0a7841feac7218131ce7b427283c24ef?s=80&d=identicon", "web_url": "https://gitlab.com/airbyte", "membership_state": "active", "project_id": 25032440}, "emitted_at": 1682502693003} +{"stream": "project_members", "data": {"access_level": 40, "created_at": "2021-03-15T15:08:36.746Z", "created_by": {"id": 8375961, "username": "airbyte", "name": "Airbyte Team", "state": "active", "avatar_url": "https://secure.gravatar.com/avatar/0a7841feac7218131ce7b427283c24ef?s=80&d=identicon", "web_url": "https://gitlab.com/airbyte"}, "expires_at": null, "id": 8375961, "username": "airbyte", "name": "Airbyte Team", "state": "active", "avatar_url": "https://secure.gravatar.com/avatar/0a7841feac7218131ce7b427283c24ef?s=80&d=identicon", "web_url": "https://gitlab.com/airbyte", "membership_state": "active", "project_id": 25157276}, "emitted_at": 1682502693310} +{"stream": "project_members", "data": {"access_level": 40, "created_at": "2022-12-02T08:50:10.348Z", "expires_at": null, "id": 8375961, "username": "airbyte", "name": "Airbyte Team", "state": "active", "avatar_url": "https://secure.gravatar.com/avatar/0a7841feac7218131ce7b427283c24ef?s=80&d=identicon", "web_url": "https://gitlab.com/airbyte", "membership_state": "active", "project_id": 41541858}, "emitted_at": 1682502693584} +{"stream": "group_members", "data": {"access_level": 50, "created_at": "2022-12-02T08:56:34.266Z", "expires_at": null, "id": 8375961, "username": "airbyte", "name": "Airbyte Team", "state": "active", "avatar_url": "https://secure.gravatar.com/avatar/0a7841feac7218131ce7b427283c24ef?s=80&d=identicon", "web_url": "https://gitlab.com/airbyte", "membership_state": "active", "group_id": 61015239}, "emitted_at": 1682502695665} +{"stream": "group_members", "data": {"access_level": 50, "created_at": "2022-12-02T08:47:02.469Z", "expires_at": null, "id": 8375961, "username": "airbyte", "name": "Airbyte Team", "state": "active", "avatar_url": "https://secure.gravatar.com/avatar/0a7841feac7218131ce7b427283c24ef?s=80&d=identicon", "web_url": "https://gitlab.com/airbyte", "membership_state": "active", "group_id": 61014902}, "emitted_at": 1682502695957} +{"stream": "group_members", "data": {"access_level": 50, "created_at": "2022-12-02T08:55:27.120Z", "expires_at": null, "id": 8375961, "username": "airbyte", "name": "Airbyte Team", "state": "active", "avatar_url": "https://secure.gravatar.com/avatar/0a7841feac7218131ce7b427283c24ef?s=80&d=identicon", "web_url": "https://gitlab.com/airbyte", "membership_state": "active", "group_id": 61015202}, "emitted_at": 1682502696281} +{"stream": "group_members", "data": {"access_level": 50, "created_at": "2022-12-02T08:48:04.786Z", "expires_at": null, "id": 8375961, "username": "airbyte", "name": "Airbyte Team", "state": "active", "avatar_url": "https://secure.gravatar.com/avatar/0a7841feac7218131ce7b427283c24ef?s=80&d=identicon", "web_url": "https://gitlab.com/airbyte", "membership_state": "active", "group_id": 61014943}, "emitted_at": 1682502696552} +{"stream": "group_members", "data": {"access_level": 50, "created_at": "2022-12-02T08:45:53.544Z", "expires_at": null, "id": 8375961, "username": "airbyte", "name": "Airbyte Team", "state": "active", "avatar_url": "https://secure.gravatar.com/avatar/0a7841feac7218131ce7b427283c24ef?s=80&d=identicon", "web_url": "https://gitlab.com/airbyte", "membership_state": "active", "group_id": 61014863}, "emitted_at": 1682502696893} +{"stream": "group_members", "data": {"access_level": 50, "created_at": "2021-03-10T17:16:37.575Z", "expires_at": null, "id": 8375961, "username": "airbyte", "name": "Airbyte Team", "state": "active", "avatar_url": "https://secure.gravatar.com/avatar/0a7841feac7218131ce7b427283c24ef?s=80&d=identicon", "web_url": "https://gitlab.com/airbyte", "membership_state": "active", "group_id": 11266951}, "emitted_at": 1682502697174} +{"stream": "project_labels", "data": {"id": 19117057, "name": "Label 50", "description": null, "description_html": "", "text_color": "#FFFFFF", "color": "#800080", "subscribed": false, "priority": null, "is_project_label": false, "project_id": 41541858}, "emitted_at": 1682502704238} +{"stream": "project_labels", "data": {"id": 19117058, "name": "Label 51", "description": null, "description_html": "", "text_color": "#FFFFFF", "color": "#808000", "subscribed": false, "priority": null, "is_project_label": false, "project_id": 41541858}, "emitted_at": 1682502704238} +{"stream": "project_labels", "data": {"id": 19117013, "name": "Label 6", "description": null, "description_html": "", "text_color": "#FFFFFF", "color": "#800000", "subscribed": false, "priority": null, "is_project_label": false, "project_id": 41541858}, "emitted_at": 1682502704239} +{"stream": "project_labels", "data": {"id": 19117014, "name": "Label 7", "description": null, "description_html": "", "text_color": "#333333", "color": "#00ffff", "subscribed": false, "priority": null, "is_project_label": false, "project_id": 41541858}, "emitted_at": 1682502704239} +{"stream": "project_labels", "data": {"id": 19117015, "name": "Label 8", "description": null, "description_html": "", "text_color": "#FFFFFF", "color": "#808080", "subscribed": false, "priority": null, "is_project_label": false, "project_id": 41541858}, "emitted_at": 1682502704239} +{"stream": "project_labels", "data": {"id": 19117016, "name": "Label 9", "description": null, "description_html": "", "text_color": "#333333", "color": "#00ffff", "subscribed": false, "priority": null, "is_project_label": false, "project_id": 41541858}, "emitted_at": 1682502704779} +{"stream": "group_labels", "data": {"id": 19117011, "name": "Label 5", "description": null, "description_html": "", "text_color": "#FFFFFF", "color": "#008080", "subscribed": false, "group_id": 61014863}, "emitted_at": 1682502712291} +{"stream": "group_labels", "data": {"id": 19117057, "name": "Label 50", "description": null, "description_html": "", "text_color": "#FFFFFF", "color": "#800080", "subscribed": false, "group_id": 61014863}, "emitted_at": 1682502712292} +{"stream": "group_labels", "data": {"id": 19117058, "name": "Label 51", "description": null, "description_html": "", "text_color": "#FFFFFF", "color": "#808000", "subscribed": false, "group_id": 61014863}, "emitted_at": 1682502712292} +{"stream": "group_labels", "data": {"id": 19117013, "name": "Label 6", "description": null, "description_html": "", "text_color": "#FFFFFF", "color": "#800000", "subscribed": false, "group_id": 61014863}, "emitted_at": 1682502712292} +{"stream": "group_labels", "data": {"id": 19117014, "name": "Label 7", "description": null, "description_html": "", "text_color": "#333333", "color": "#00ffff", "subscribed": false, "group_id": 61014863}, "emitted_at": 1682502712292} +{"stream": "group_labels", "data": {"id": 19117015, "name": "Label 8", "description": null, "description_html": "", "text_color": "#FFFFFF", "color": "#808080", "subscribed": false, "group_id": 61014863}, "emitted_at": 1682502712292} +{"stream": "group_labels", "data": {"id": 19117016, "name": "Label 9", "description": null, "description_html": "", "text_color": "#333333", "color": "#00ffff", "subscribed": false, "group_id": 61014863}, "emitted_at": 1682502712615} +{"stream": "group_labels", "data": {"id": 28269532, "name": "team/connectors-python", "description": null, "description_html": "", "text_color": "#FFFFFF", "color": "#3cb371", "subscribed": false, "group_id": 11266951}, "emitted_at": 1682502712967} +{"stream": "merge_requests", "data": {"id": 92098667, "iid": 3, "project_id": 25156633, "title": "Et recusandae inventore optio.", "description": "##### Dolore\nMinus ad rem. Eos est nihil. Qui debitis cupiditate. Quibusdam modi voluptatibus. Nihil iure hic.\n## Aut", "state": "opened", "created_at": "2021-02-15T15:54:12.046Z", "updated_at": "2021-02-15T15:55:40.055Z", "merge_user": null, "merged_at": null, "closed_at": null, "target_branch": "master", "source_branch": "autem-vitae-sequi-commodi-velit", "user_notes_count": 2, "upvotes": 0, "downvotes": 0, "assignees": [], "reviewers": [], "source_project_id": 25156633, "target_project_id": 25156633, "labels": ["sit-neque", "suscipit-consectetur", "voluptas-officiis"], "draft": false, "work_in_progress": false, "merge_when_pipeline_succeeds": false, "merge_status": "can_be_merged", "detailed_merge_status": "mergeable", "sha": "42fdf7fcc17afcca1f770a1727f3e998c7ff18b9", "merge_commit_sha": null, "squash_commit_sha": null, "discussion_locked": null, "should_remove_source_branch": null, "force_remove_source_branch": null, "reference": "!3", "references": {"short": "!3", "relative": "!3", "full": "airbyte.io/ci-test-project!3"}, "web_url": "https://gitlab.com/airbyte.io/ci-test-project/-/merge_requests/3", "time_stats": {"time_estimate": 0, "total_time_spent": 0, "human_time_estimate": null, "human_total_time_spent": null}, "squash": false, "squash_on_merge": false, "task_completion_status": {"count": 0, "completed_count": 0}, "has_conflicts": false, "blocking_discussions_resolved": true, "approvals_before_merge": null, "author_id": 8375961, "assignee_id": null, "closed_by_id": null, "milestone_id": null, "merged_by_id": null}, "emitted_at": 1682502718773} +{"stream": "merge_requests", "data": {"id": 92098666, "iid": 2, "project_id": 25156633, "title": "Commodi iure in officiis.", "description": "###### Accusantium\nSed consequatur nulla. Repellendus ipsa animi. Et quam deserunt. Architecto aut provident. Et quasi tempora.\n###### Iste\nDistinctio non repudiandae. Et cum sit. Facilis consequuntur nam.\n0. Occaecati. \n1. Iure. \n2. Voluptatibus. \n3. Rerum. \n4. Earum. \n5. Qui.", "state": "opened", "created_at": "2021-02-15T15:54:08.452Z", "updated_at": "2021-02-15T15:55:39.974Z", "merge_user": null, "merged_at": null, "closed_at": null, "target_branch": "master", "source_branch": "fugiat-libero-sit-magnam-ad", "user_notes_count": 1, "upvotes": 0, "downvotes": 0, "assignees": [], "reviewers": [], "source_project_id": 25156633, "target_project_id": 25156633, "labels": ["dicta-esse", "iste-est", "odio-ut"], "draft": false, "work_in_progress": false, "merge_when_pipeline_succeeds": false, "merge_status": "can_be_merged", "detailed_merge_status": "mergeable", "sha": "24b535ee18a2eb3a072aadb405832ff82f68ac28", "merge_commit_sha": null, "squash_commit_sha": null, "discussion_locked": null, "should_remove_source_branch": null, "force_remove_source_branch": null, "reference": "!2", "references": {"short": "!2", "relative": "!2", "full": "airbyte.io/ci-test-project!2"}, "web_url": "https://gitlab.com/airbyte.io/ci-test-project/-/merge_requests/2", "time_stats": {"time_estimate": 0, "total_time_spent": 0, "human_time_estimate": null, "human_total_time_spent": null}, "squash": false, "squash_on_merge": false, "task_completion_status": {"count": 0, "completed_count": 0}, "has_conflicts": false, "blocking_discussions_resolved": true, "approvals_before_merge": null, "author_id": 8375961, "assignee_id": null, "closed_by_id": null, "milestone_id": null, "merged_by_id": null}, "emitted_at": 1682502718773} +{"stream": "merge_requests", "data": {"id": 92098664, "iid": 1, "project_id": 25156633, "title": "Cumque vero et et.", "description": "### Blanditiis\nLaboriosam dolorem ut. Quam voluptate corrupti. Velit esse est. Rem reprehenderit omnis. Molestiae laudantium veritatis.\n0. Laboriosam. \n1. Voluptates. \n2. Quasi. \n3. Pariatur. \n4. Vel. \n5. Accusamus. \n6. Soluta. \n7. Eius. \n8. Similique.", "state": "opened", "created_at": "2021-02-15T15:54:05.412Z", "updated_at": "2021-02-15T15:55:38.403Z", "merge_user": null, "merged_at": null, "closed_at": null, "target_branch": "master", "source_branch": "possimus-pariatur-autem-magni-animi", "user_notes_count": 19, "upvotes": 0, "downvotes": 0, "assignees": [], "reviewers": [], "source_project_id": 25156633, "target_project_id": 25156633, "labels": ["in-qui", "sit-neque", "sunt-ea"], "draft": false, "work_in_progress": false, "merge_when_pipeline_succeeds": false, "merge_status": "can_be_merged", "detailed_merge_status": "mergeable", "sha": "068e939bd604bd7df84413a855a1aece68e132dd", "merge_commit_sha": null, "squash_commit_sha": null, "discussion_locked": null, "should_remove_source_branch": null, "force_remove_source_branch": null, "reference": "!1", "references": {"short": "!1", "relative": "!1", "full": "airbyte.io/ci-test-project!1"}, "web_url": "https://gitlab.com/airbyte.io/ci-test-project/-/merge_requests/1", "time_stats": {"time_estimate": 0, "total_time_spent": 0, "human_time_estimate": null, "human_total_time_spent": null}, "squash": false, "squash_on_merge": false, "task_completion_status": {"count": 0, "completed_count": 0}, "has_conflicts": false, "blocking_discussions_resolved": true, "approvals_before_merge": null, "author_id": 8375961, "assignee_id": null, "closed_by_id": null, "milestone_id": null, "merged_by_id": null}, "emitted_at": 1682502718774} +{"stream": "merge_requests", "data": {"id": 92594931, "iid": 3, "project_id": 25157276, "title": "add fake CI config", "description": "", "state": "merged", "created_at": "2021-03-18T12:49:13.091Z", "updated_at": "2021-03-18T12:51:06.319Z", "merge_user": {"id": 8375961, "username": "airbyte", "name": "Airbyte Team", "state": "active", "avatar_url": "https://secure.gravatar.com/avatar/0a7841feac7218131ce7b427283c24ef?s=80&d=identicon", "web_url": "https://gitlab.com/airbyte"}, "merged_at": "2021-03-18T12:51:06.470Z", "closed_at": null, "target_branch": "master", "source_branch": "ykurochkin/add-fake-CI-config", "user_notes_count": 0, "upvotes": 0, "downvotes": 0, "assignees": [], "reviewers": [], "source_project_id": 25157276, "target_project_id": 25157276, "labels": [], "draft": false, "work_in_progress": false, "merge_when_pipeline_succeeds": false, "merge_status": "can_be_merged", "detailed_merge_status": "not_open", "sha": "028c02d96f40afe9b4d1173c1d0f712dd6d07302", "merge_commit_sha": "6ad3dd49539391774db738c9e7b7d69f2d872c98", "squash_commit_sha": null, "discussion_locked": null, "should_remove_source_branch": null, "force_remove_source_branch": true, "reference": "!3", "references": {"short": "!3", "relative": "!3", "full": "new-group-airbute/new-ci-test-project!3"}, "web_url": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/merge_requests/3", "time_stats": {"time_estimate": 0, "total_time_spent": 0, "human_time_estimate": null, "human_total_time_spent": null}, "squash": false, "squash_on_merge": false, "task_completion_status": {"count": 0, "completed_count": 0}, "has_conflicts": false, "blocking_discussions_resolved": true, "approvals_before_merge": null, "author_id": 8375961, "assignee_id": null, "closed_by_id": null, "milestone_id": null, "merged_by_id": 8375961}, "emitted_at": 1682502724473} +{"stream": "merge_requests", "data": {"id": 92593913, "iid": 2, "project_id": 25157276, "title": "update readme.md", "description": "", "state": "opened", "created_at": "2021-03-18T12:42:30.200Z", "updated_at": "2021-03-18T12:42:30.200Z", "merge_user": null, "merged_at": null, "closed_at": null, "target_branch": "master", "source_branch": "ykurochkin/test-branch", "user_notes_count": 0, "upvotes": 0, "downvotes": 0, "assignees": [], "reviewers": [], "source_project_id": 25157276, "target_project_id": 25157276, "labels": [], "draft": false, "work_in_progress": false, "merge_when_pipeline_succeeds": false, "merge_status": "can_be_merged", "detailed_merge_status": "mergeable", "sha": "9b0c5cf345f0ca1a3fb3ae253e74e0616abf8129", "merge_commit_sha": null, "squash_commit_sha": null, "discussion_locked": null, "should_remove_source_branch": null, "force_remove_source_branch": true, "reference": "!2", "references": {"short": "!2", "relative": "!2", "full": "new-group-airbute/new-ci-test-project!2"}, "web_url": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/merge_requests/2", "time_stats": {"time_estimate": 0, "total_time_spent": 0, "human_time_estimate": null, "human_total_time_spent": null}, "squash": false, "squash_on_merge": false, "task_completion_status": {"count": 0, "completed_count": 0}, "has_conflicts": false, "blocking_discussions_resolved": true, "approvals_before_merge": null, "author_id": 8375961, "assignee_id": null, "closed_by_id": null, "milestone_id": null, "merged_by_id": null}, "emitted_at": 1682502724473} +{"stream": "merge_requests", "data": {"id": 92111504, "iid": 1, "project_id": 25157276, "title": "Draft: Resolve \"Fake Issue 30\"", "description": "Closes #31", "state": "opened", "created_at": "2021-03-15T16:08:05.071Z", "updated_at": "2021-03-15T16:08:05.071Z", "merge_user": null, "merged_at": null, "closed_at": null, "target_branch": "master", "source_branch": "31-fake-issue-30", "user_notes_count": 0, "upvotes": 0, "downvotes": 0, "assignees": [8375961], "reviewers": [], "source_project_id": 25157276, "target_project_id": 25157276, "labels": ["bug"], "draft": true, "work_in_progress": true, "merge_when_pipeline_succeeds": false, "merge_status": "cannot_be_merged", "detailed_merge_status": "draft_status", "sha": "2831d897ba0214f8d3168647e8ad4232b83987ef", "merge_commit_sha": null, "squash_commit_sha": null, "discussion_locked": null, "should_remove_source_branch": null, "force_remove_source_branch": true, "reference": "!1", "references": {"short": "!1", "relative": "!1", "full": "new-group-airbute/new-ci-test-project!1"}, "web_url": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/merge_requests/1", "time_stats": {"time_estimate": 0, "total_time_spent": 0, "human_time_estimate": null, "human_total_time_spent": null}, "squash": false, "squash_on_merge": false, "task_completion_status": {"count": 0, "completed_count": 0}, "has_conflicts": true, "blocking_discussions_resolved": true, "approvals_before_merge": null, "author_id": 8375961, "assignee_id": 8375961, "closed_by_id": null, "milestone_id": null, "merged_by_id": null}, "emitted_at": 1682502724474} +{"stream": "merge_request_commits", "data": {"id": 92098667, "iid": 3, "project_id": 25156633, "title": "Et recusandae inventore optio.", "description": "##### Dolore\nMinus ad rem. Eos est nihil. Qui debitis cupiditate. Quibusdam modi voluptatibus. Nihil iure hic.\n## Aut", "state": "opened", "created_at": "2021-02-15T15:54:12.046Z", "updated_at": "2021-02-15T15:55:40.055Z", "merged_by": null, "merge_user": null, "merged_at": null, "closed_by": null, "closed_at": null, "target_branch": "master", "source_branch": "autem-vitae-sequi-commodi-velit", "user_notes_count": 2, "upvotes": 0, "downvotes": 0, "author": {"id": 8375961, "username": "airbyte", "name": "Airbyte Team", "state": "active", "avatar_url": "https://secure.gravatar.com/avatar/0a7841feac7218131ce7b427283c24ef?s=80&d=identicon", "web_url": "https://gitlab.com/airbyte"}, "assignees": [], "assignee": null, "reviewers": [], "source_project_id": 25156633, "target_project_id": 25156633, "labels": ["sit-neque", "suscipit-consectetur", "voluptas-officiis"], "draft": false, "work_in_progress": false, "milestone": null, "merge_when_pipeline_succeeds": false, "merge_status": "can_be_merged", "detailed_merge_status": "mergeable", "sha": "42fdf7fcc17afcca1f770a1727f3e998c7ff18b9", "merge_commit_sha": null, "squash_commit_sha": null, "discussion_locked": null, "should_remove_source_branch": null, "force_remove_source_branch": null, "reference": "!3", "references": {"short": "!3", "relative": "!3", "full": "airbyte.io/ci-test-project!3"}, "web_url": "https://gitlab.com/airbyte.io/ci-test-project/-/merge_requests/3", "time_stats": {"time_estimate": 0, "total_time_spent": 0, "human_time_estimate": null, "human_total_time_spent": null}, "squash": false, "squash_on_merge": false, "task_completion_status": {"count": 0, "completed_count": 0}, "has_conflicts": false, "blocking_discussions_resolved": true, "approvals_before_merge": null, "subscribed": true, "changes_count": "19", "latest_build_started_at": null, "latest_build_finished_at": null, "first_deployed_to_production_at": null, "pipeline": null, "head_pipeline": null, "diff_refs": {"base_sha": "27329d3afac51fbf2762428e12f2635d1137c549", "head_sha": "42fdf7fcc17afcca1f770a1727f3e998c7ff18b9", "start_sha": "27329d3afac51fbf2762428e12f2635d1137c549"}, "merge_error": null, "first_contribution": false, "user": {"can_merge": true}, "merge_request_iid": 3}, "emitted_at": 1682502745798} +{"stream": "merge_request_commits", "data": {"id": 92098666, "iid": 2, "project_id": 25156633, "title": "Commodi iure in officiis.", "description": "###### Accusantium\nSed consequatur nulla. Repellendus ipsa animi. Et quam deserunt. Architecto aut provident. Et quasi tempora.\n###### Iste\nDistinctio non repudiandae. Et cum sit. Facilis consequuntur nam.\n0. Occaecati. \n1. Iure. \n2. Voluptatibus. \n3. Rerum. \n4. Earum. \n5. Qui.", "state": "opened", "created_at": "2021-02-15T15:54:08.452Z", "updated_at": "2021-02-15T15:55:39.974Z", "merged_by": null, "merge_user": null, "merged_at": null, "closed_by": null, "closed_at": null, "target_branch": "master", "source_branch": "fugiat-libero-sit-magnam-ad", "user_notes_count": 1, "upvotes": 0, "downvotes": 0, "author": {"id": 8375961, "username": "airbyte", "name": "Airbyte Team", "state": "active", "avatar_url": "https://secure.gravatar.com/avatar/0a7841feac7218131ce7b427283c24ef?s=80&d=identicon", "web_url": "https://gitlab.com/airbyte"}, "assignees": [], "assignee": null, "reviewers": [], "source_project_id": 25156633, "target_project_id": 25156633, "labels": ["dicta-esse", "iste-est", "odio-ut"], "draft": false, "work_in_progress": false, "milestone": null, "merge_when_pipeline_succeeds": false, "merge_status": "can_be_merged", "detailed_merge_status": "mergeable", "sha": "24b535ee18a2eb3a072aadb405832ff82f68ac28", "merge_commit_sha": null, "squash_commit_sha": null, "discussion_locked": null, "should_remove_source_branch": null, "force_remove_source_branch": null, "reference": "!2", "references": {"short": "!2", "relative": "!2", "full": "airbyte.io/ci-test-project!2"}, "web_url": "https://gitlab.com/airbyte.io/ci-test-project/-/merge_requests/2", "time_stats": {"time_estimate": 0, "total_time_spent": 0, "human_time_estimate": null, "human_total_time_spent": null}, "squash": false, "squash_on_merge": false, "task_completion_status": {"count": 0, "completed_count": 0}, "has_conflicts": false, "blocking_discussions_resolved": true, "approvals_before_merge": null, "subscribed": true, "changes_count": "6", "latest_build_started_at": null, "latest_build_finished_at": null, "first_deployed_to_production_at": null, "pipeline": null, "head_pipeline": null, "diff_refs": {"base_sha": "27329d3afac51fbf2762428e12f2635d1137c549", "head_sha": "24b535ee18a2eb3a072aadb405832ff82f68ac28", "start_sha": "27329d3afac51fbf2762428e12f2635d1137c549"}, "merge_error": null, "first_contribution": false, "user": {"can_merge": true}, "merge_request_iid": 2}, "emitted_at": 1682502746238} +{"stream": "merge_request_commits", "data": {"id": 92098664, "iid": 1, "project_id": 25156633, "title": "Cumque vero et et.", "description": "### Blanditiis\nLaboriosam dolorem ut. Quam voluptate corrupti. Velit esse est. Rem reprehenderit omnis. Molestiae laudantium veritatis.\n0. Laboriosam. \n1. Voluptates. \n2. Quasi. \n3. Pariatur. \n4. Vel. \n5. Accusamus. \n6. Soluta. \n7. Eius. \n8. Similique.", "state": "opened", "created_at": "2021-02-15T15:54:05.412Z", "updated_at": "2021-02-15T15:55:38.403Z", "merged_by": null, "merge_user": null, "merged_at": null, "closed_by": null, "closed_at": null, "target_branch": "master", "source_branch": "possimus-pariatur-autem-magni-animi", "user_notes_count": 19, "upvotes": 0, "downvotes": 0, "author": {"id": 8375961, "username": "airbyte", "name": "Airbyte Team", "state": "active", "avatar_url": "https://secure.gravatar.com/avatar/0a7841feac7218131ce7b427283c24ef?s=80&d=identicon", "web_url": "https://gitlab.com/airbyte"}, "assignees": [], "assignee": null, "reviewers": [], "source_project_id": 25156633, "target_project_id": 25156633, "labels": ["in-qui", "sit-neque", "sunt-ea"], "draft": false, "work_in_progress": false, "milestone": null, "merge_when_pipeline_succeeds": false, "merge_status": "can_be_merged", "detailed_merge_status": "mergeable", "sha": "068e939bd604bd7df84413a855a1aece68e132dd", "merge_commit_sha": null, "squash_commit_sha": null, "discussion_locked": null, "should_remove_source_branch": null, "force_remove_source_branch": null, "reference": "!1", "references": {"short": "!1", "relative": "!1", "full": "airbyte.io/ci-test-project!1"}, "web_url": "https://gitlab.com/airbyte.io/ci-test-project/-/merge_requests/1", "time_stats": {"time_estimate": 0, "total_time_spent": 0, "human_time_estimate": null, "human_total_time_spent": null}, "squash": false, "squash_on_merge": false, "task_completion_status": {"count": 0, "completed_count": 0}, "has_conflicts": false, "blocking_discussions_resolved": true, "approvals_before_merge": null, "subscribed": true, "changes_count": "4", "latest_build_started_at": null, "latest_build_finished_at": null, "first_deployed_to_production_at": null, "pipeline": null, "head_pipeline": null, "diff_refs": {"base_sha": "27329d3afac51fbf2762428e12f2635d1137c549", "head_sha": "068e939bd604bd7df84413a855a1aece68e132dd", "start_sha": "27329d3afac51fbf2762428e12f2635d1137c549"}, "merge_error": null, "first_contribution": false, "user": {"can_merge": true}, "merge_request_iid": 1}, "emitted_at": 1682502746694} +{"stream": "merge_request_commits", "data": {"id": 92594931, "iid": 3, "project_id": 25157276, "title": "add fake CI config", "description": "", "state": "merged", "created_at": "2021-03-18T12:49:13.091Z", "updated_at": "2021-03-18T12:51:06.319Z", "merged_by": {"id": 8375961, "username": "airbyte", "name": "Airbyte Team", "state": "active", "avatar_url": "https://secure.gravatar.com/avatar/0a7841feac7218131ce7b427283c24ef?s=80&d=identicon", "web_url": "https://gitlab.com/airbyte"}, "merge_user": {"id": 8375961, "username": "airbyte", "name": "Airbyte Team", "state": "active", "avatar_url": "https://secure.gravatar.com/avatar/0a7841feac7218131ce7b427283c24ef?s=80&d=identicon", "web_url": "https://gitlab.com/airbyte"}, "merged_at": "2021-03-18T12:51:06.470Z", "closed_by": null, "closed_at": null, "target_branch": "master", "source_branch": "ykurochkin/add-fake-CI-config", "user_notes_count": 0, "upvotes": 0, "downvotes": 0, "author": {"id": 8375961, "username": "airbyte", "name": "Airbyte Team", "state": "active", "avatar_url": "https://secure.gravatar.com/avatar/0a7841feac7218131ce7b427283c24ef?s=80&d=identicon", "web_url": "https://gitlab.com/airbyte"}, "assignees": [], "assignee": null, "reviewers": [], "source_project_id": 25157276, "target_project_id": 25157276, "labels": [], "draft": false, "work_in_progress": false, "milestone": null, "merge_when_pipeline_succeeds": false, "merge_status": "can_be_merged", "detailed_merge_status": "not_open", "sha": "028c02d96f40afe9b4d1173c1d0f712dd6d07302", "merge_commit_sha": "6ad3dd49539391774db738c9e7b7d69f2d872c98", "squash_commit_sha": null, "discussion_locked": null, "should_remove_source_branch": null, "force_remove_source_branch": true, "reference": "!3", "references": {"short": "!3", "relative": "!3", "full": "new-group-airbute/new-ci-test-project!3"}, "web_url": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/merge_requests/3", "time_stats": {"time_estimate": 0, "total_time_spent": 0, "human_time_estimate": null, "human_total_time_spent": null}, "squash": false, "squash_on_merge": false, "task_completion_status": {"count": 0, "completed_count": 0}, "has_conflicts": false, "blocking_discussions_resolved": true, "approvals_before_merge": null, "subscribed": true, "changes_count": "1", "latest_build_started_at": null, "latest_build_finished_at": null, "first_deployed_to_production_at": null, "pipeline": null, "head_pipeline": {"id": 272631271, "iid": 1, "project_id": 25157276, "sha": "028c02d96f40afe9b4d1173c1d0f712dd6d07302", "ref": "ykurochkin/add-fake-CI-config", "status": "failed", "source": "push", "created_at": "2021-03-18T12:48:49.174Z", "updated_at": "2021-03-18T12:49:38.092Z", "web_url": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/pipelines/272631271", "before_sha": "0000000000000000000000000000000000000000", "tag": false, "yaml_errors": null, "user": {"id": 8375961, "username": "airbyte", "name": "Airbyte Team", "state": "active", "avatar_url": "https://secure.gravatar.com/avatar/0a7841feac7218131ce7b427283c24ef?s=80&d=identicon", "web_url": "https://gitlab.com/airbyte"}, "started_at": "2021-03-18T12:48:50.166Z", "finished_at": "2021-03-18T12:49:38.084Z", "committed_at": null, "duration": 47, "queued_duration": null, "coverage": null, "detailed_status": {"icon": "status_failed", "text": "failed", "label": "failed", "group": "failed", "tooltip": "failed", "has_details": true, "details_path": "/new-group-airbute/new-ci-test-project/-/pipelines/272631271", "illustration": null, "favicon": "/assets/ci_favicons/favicon_status_failed-41304d7f7e3828808b0c26771f0309e55296819a9beea3ea9fbf6689d9857c12.png"}}, "diff_refs": {"base_sha": "2831d897ba0214f8d3168647e8ad4232b83987ef", "head_sha": "028c02d96f40afe9b4d1173c1d0f712dd6d07302", "start_sha": "2831d897ba0214f8d3168647e8ad4232b83987ef"}, "merge_error": null, "first_contribution": false, "user": {"can_merge": true}, "merge_request_iid": 3}, "emitted_at": 1682502752148} +{"stream": "merge_request_commits", "data": {"id": 92593913, "iid": 2, "project_id": 25157276, "title": "update readme.md", "description": "", "state": "opened", "created_at": "2021-03-18T12:42:30.200Z", "updated_at": "2021-03-18T12:42:30.200Z", "merged_by": null, "merge_user": null, "merged_at": null, "closed_by": null, "closed_at": null, "target_branch": "master", "source_branch": "ykurochkin/test-branch", "user_notes_count": 0, "upvotes": 0, "downvotes": 0, "author": {"id": 8375961, "username": "airbyte", "name": "Airbyte Team", "state": "active", "avatar_url": "https://secure.gravatar.com/avatar/0a7841feac7218131ce7b427283c24ef?s=80&d=identicon", "web_url": "https://gitlab.com/airbyte"}, "assignees": [], "assignee": null, "reviewers": [], "source_project_id": 25157276, "target_project_id": 25157276, "labels": [], "draft": false, "work_in_progress": false, "milestone": null, "merge_when_pipeline_succeeds": false, "merge_status": "can_be_merged", "detailed_merge_status": "mergeable", "sha": "9b0c5cf345f0ca1a3fb3ae253e74e0616abf8129", "merge_commit_sha": null, "squash_commit_sha": null, "discussion_locked": null, "should_remove_source_branch": null, "force_remove_source_branch": true, "reference": "!2", "references": {"short": "!2", "relative": "!2", "full": "new-group-airbute/new-ci-test-project!2"}, "web_url": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/merge_requests/2", "time_stats": {"time_estimate": 0, "total_time_spent": 0, "human_time_estimate": null, "human_total_time_spent": null}, "squash": false, "squash_on_merge": false, "task_completion_status": {"count": 0, "completed_count": 0}, "has_conflicts": false, "blocking_discussions_resolved": true, "approvals_before_merge": null, "subscribed": true, "changes_count": "1", "latest_build_started_at": null, "latest_build_finished_at": null, "first_deployed_to_production_at": null, "pipeline": null, "head_pipeline": null, "diff_refs": {"base_sha": "2831d897ba0214f8d3168647e8ad4232b83987ef", "head_sha": "9b0c5cf345f0ca1a3fb3ae253e74e0616abf8129", "start_sha": "2831d897ba0214f8d3168647e8ad4232b83987ef"}, "merge_error": null, "first_contribution": false, "user": {"can_merge": true}, "merge_request_iid": 2}, "emitted_at": 1682502752599} +{"stream": "merge_request_commits", "data": {"id": 92111504, "iid": 1, "project_id": 25157276, "title": "Draft: Resolve \"Fake Issue 30\"", "description": "Closes #31", "state": "opened", "created_at": "2021-03-15T16:08:05.071Z", "updated_at": "2021-03-15T16:08:05.071Z", "merged_by": null, "merge_user": null, "merged_at": null, "closed_by": null, "closed_at": null, "target_branch": "master", "source_branch": "31-fake-issue-30", "user_notes_count": 0, "upvotes": 0, "downvotes": 0, "author": {"id": 8375961, "username": "airbyte", "name": "Airbyte Team", "state": "active", "avatar_url": "https://secure.gravatar.com/avatar/0a7841feac7218131ce7b427283c24ef?s=80&d=identicon", "web_url": "https://gitlab.com/airbyte"}, "assignees": [{"id": 8375961, "username": "airbyte", "name": "Airbyte Team", "state": "active", "avatar_url": "https://secure.gravatar.com/avatar/0a7841feac7218131ce7b427283c24ef?s=80&d=identicon", "web_url": "https://gitlab.com/airbyte"}], "assignee": {"id": 8375961, "username": "airbyte", "name": "Airbyte Team", "state": "active", "avatar_url": "https://secure.gravatar.com/avatar/0a7841feac7218131ce7b427283c24ef?s=80&d=identicon", "web_url": "https://gitlab.com/airbyte"}, "reviewers": [], "source_project_id": 25157276, "target_project_id": 25157276, "labels": ["bug"], "draft": true, "work_in_progress": true, "milestone": null, "merge_when_pipeline_succeeds": false, "merge_status": "cannot_be_merged", "detailed_merge_status": "draft_status", "sha": "2831d897ba0214f8d3168647e8ad4232b83987ef", "merge_commit_sha": null, "squash_commit_sha": null, "discussion_locked": null, "should_remove_source_branch": null, "force_remove_source_branch": true, "reference": "!1", "references": {"short": "!1", "relative": "!1", "full": "new-group-airbute/new-ci-test-project!1"}, "web_url": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/merge_requests/1", "time_stats": {"time_estimate": 0, "total_time_spent": 0, "human_time_estimate": null, "human_total_time_spent": null}, "squash": false, "squash_on_merge": false, "task_completion_status": {"count": 0, "completed_count": 0}, "has_conflicts": true, "blocking_discussions_resolved": true, "approvals_before_merge": null, "subscribed": true, "changes_count": null, "latest_build_started_at": null, "latest_build_finished_at": null, "first_deployed_to_production_at": null, "pipeline": null, "head_pipeline": null, "diff_refs": {"base_sha": "2831d897ba0214f8d3168647e8ad4232b83987ef", "head_sha": "2831d897ba0214f8d3168647e8ad4232b83987ef", "start_sha": "2831d897ba0214f8d3168647e8ad4232b83987ef"}, "merge_error": null, "first_contribution": false, "user": {"can_merge": true}, "merge_request_iid": 1}, "emitted_at": 1682502753012} +{"stream": "releases", "data": {"name": "First release", "tag_name": "fake-tag-6", "description": "Test Release", "created_at": "2021-03-18T12:44:12.497Z", "released_at": "2021-03-18T12:44:12.497Z", "upcoming_release": false, "milestones": [1943704], "commit_path": "/new-group-airbute/new-ci-test-project/-/commit/2831d897ba0214f8d3168647e8ad4232b83987ef", "tag_path": "/new-group-airbute/new-ci-test-project/-/tags/fake-tag-6", "assets": {"count": 4, "sources": [{"format": "zip", "url": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/archive/fake-tag-6/new-ci-test-project-fake-tag-6.zip"}, {"format": "tar.gz", "url": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/archive/fake-tag-6/new-ci-test-project-fake-tag-6.tar.gz"}, {"format": "tar.bz2", "url": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/archive/fake-tag-6/new-ci-test-project-fake-tag-6.tar.bz2"}, {"format": "tar", "url": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/archive/fake-tag-6/new-ci-test-project-fake-tag-6.tar"}], "links": []}, "evidences": [{"sha": "a616fdca9312ca5aa451bc1060ce91a672fd24cc0f4d", "filepath": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/releases/fake-tag-6/evidences/855895.json", "collected_at": "2021-03-18T12:44:12.650Z"}], "_links": {"closed_issues_url": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/issues?release_tag=fake-tag-6&scope=all&state=closed", "closed_merge_requests_url": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/merge_requests?release_tag=fake-tag-6&scope=all&state=closed", "edit_url": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/releases/fake-tag-6/edit", "merged_merge_requests_url": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/merge_requests?release_tag=fake-tag-6&scope=all&state=merged", "opened_issues_url": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/issues?release_tag=fake-tag-6&scope=all&state=opened", "opened_merge_requests_url": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/merge_requests?release_tag=fake-tag-6&scope=all&state=opened", "self": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/releases/fake-tag-6"}, "author_id": 8375961, "commit_id": "2831d897ba0214f8d3168647e8ad4232b83987ef", "project_id": 25157276}, "emitted_at": 1682502758487} +{"stream": "tags", "data": {"name": "fake-tag-5", "message": "", "target": "2831d897ba0214f8d3168647e8ad4232b83987ef", "release": null, "protected": false, "commit_id": "2831d897ba0214f8d3168647e8ad4232b83987ef", "project_id": 25157276}, "emitted_at": 1682502761313} +{"stream": "tags", "data": {"name": "fake-tag-50", "message": "", "target": "2831d897ba0214f8d3168647e8ad4232b83987ef", "release": null, "protected": false, "commit_id": "2831d897ba0214f8d3168647e8ad4232b83987ef", "project_id": 25157276}, "emitted_at": 1682502761313} +{"stream": "tags", "data": {"name": "fake-tag-51", "message": "", "target": "2831d897ba0214f8d3168647e8ad4232b83987ef", "release": null, "protected": false, "commit_id": "2831d897ba0214f8d3168647e8ad4232b83987ef", "project_id": 25157276}, "emitted_at": 1682502761313} +{"stream": "tags", "data": {"name": "fake-tag-6", "message": "", "target": "2831d897ba0214f8d3168647e8ad4232b83987ef", "release": {"tag_name": "fake-tag-6", "description": "Test Release"}, "protected": false, "commit_id": "2831d897ba0214f8d3168647e8ad4232b83987ef", "project_id": 25157276}, "emitted_at": 1682502761313} +{"stream": "tags", "data": {"name": "fake-tag-7", "message": "", "target": "2831d897ba0214f8d3168647e8ad4232b83987ef", "release": null, "protected": false, "commit_id": "2831d897ba0214f8d3168647e8ad4232b83987ef", "project_id": 25157276}, "emitted_at": 1682502761314} +{"stream": "tags", "data": {"name": "fake-tag-8", "message": "", "target": "2831d897ba0214f8d3168647e8ad4232b83987ef", "release": null, "protected": false, "commit_id": "2831d897ba0214f8d3168647e8ad4232b83987ef", "project_id": 25157276}, "emitted_at": 1682502761314} +{"stream": "tags", "data": {"name": "fake-tag-9", "message": "", "target": "2831d897ba0214f8d3168647e8ad4232b83987ef", "release": null, "protected": false, "commit_id": "2831d897ba0214f8d3168647e8ad4232b83987ef", "project_id": 25157276}, "emitted_at": 1682502761665} +{"stream": "pipelines", "data": {"id": 272632767, "iid": 2, "project_id": 25157276, "sha": "6ad3dd49539391774db738c9e7b7d69f2d872c98", "ref": "master", "status": "failed", "source": "push", "created_at": "2021-03-18T12:51:06.262Z", "updated_at": "2021-03-18T12:51:52.007Z", "web_url": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/pipelines/272632767"}, "emitted_at": 1682502772774} +{"stream": "pipelines", "data": {"id": 272631271, "iid": 1, "project_id": 25157276, "sha": "028c02d96f40afe9b4d1173c1d0f712dd6d07302", "ref": "ykurochkin/add-fake-CI-config", "status": "failed", "source": "push", "created_at": "2021-03-18T12:48:49.174Z", "updated_at": "2021-03-18T12:49:38.092Z", "web_url": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/pipelines/272631271"}, "emitted_at": 1682502772774} +{"stream": "pipelines_extended", "data": {"id": 272632767, "iid": 2, "project_id": 25157276, "sha": "6ad3dd49539391774db738c9e7b7d69f2d872c98", "ref": "master", "status": "failed", "source": "push", "created_at": "2021-03-18T12:51:06.262Z", "updated_at": "2021-03-18T12:51:52.007Z", "web_url": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/pipelines/272632767", "before_sha": "2831d897ba0214f8d3168647e8ad4232b83987ef", "tag": false, "yaml_errors": null, "user": {"id": 8375961, "username": "airbyte", "name": "Airbyte Team", "state": "active", "avatar_url": "https://secure.gravatar.com/avatar/0a7841feac7218131ce7b427283c24ef?s=80&d=identicon", "web_url": "https://gitlab.com/airbyte"}, "started_at": "2021-03-18T12:51:07.816Z", "finished_at": "2021-03-18T12:51:52.000Z", "committed_at": null, "duration": 43, "queued_duration": 1, "coverage": null, "detailed_status": {"icon": "status_failed", "text": "failed", "label": "failed", "group": "failed", "tooltip": "failed", "has_details": false, "details_path": "/new-group-airbute/new-ci-test-project/-/pipelines/272632767", "illustration": null, "favicon": "/assets/ci_favicons/favicon_status_failed-41304d7f7e3828808b0c26771f0309e55296819a9beea3ea9fbf6689d9857c12.png"}}, "emitted_at": 1682502786382} +{"stream": "pipelines_extended", "data": {"id": 272631271, "iid": 1, "project_id": 25157276, "sha": "028c02d96f40afe9b4d1173c1d0f712dd6d07302", "ref": "ykurochkin/add-fake-CI-config", "status": "failed", "source": "push", "created_at": "2021-03-18T12:48:49.174Z", "updated_at": "2021-03-18T12:49:38.092Z", "web_url": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/pipelines/272631271", "before_sha": "0000000000000000000000000000000000000000", "tag": false, "yaml_errors": null, "user": {"id": 8375961, "username": "airbyte", "name": "Airbyte Team", "state": "active", "avatar_url": "https://secure.gravatar.com/avatar/0a7841feac7218131ce7b427283c24ef?s=80&d=identicon", "web_url": "https://gitlab.com/airbyte"}, "started_at": "2021-03-18T12:48:50.166Z", "finished_at": "2021-03-18T12:49:38.084Z", "committed_at": null, "duration": 47, "queued_duration": null, "coverage": null, "detailed_status": {"icon": "status_failed", "text": "failed", "label": "failed", "group": "failed", "tooltip": "failed", "has_details": false, "details_path": "/new-group-airbute/new-ci-test-project/-/pipelines/272631271", "illustration": null, "favicon": "/assets/ci_favicons/favicon_status_failed-41304d7f7e3828808b0c26771f0309e55296819a9beea3ea9fbf6689d9857c12.png"}}, "emitted_at": 1682502786699} +{"stream": "users", "data": {"id": 7904355, "username": "y.kurochkin", "name": "Yevhenii Kurochkin", "state": "active", "avatar_url": "https://secure.gravatar.com/avatar/760fcac88680c724a6b19c6bfd5b6718?s=80&d=identicon", "web_url": "https://gitlab.com/y.kurochkin"}, "emitted_at": 1682502792538} +{"stream": "users", "data": {"id": 8375961, "username": "airbyte", "name": "Airbyte Team", "state": "active", "avatar_url": "https://secure.gravatar.com/avatar/0a7841feac7218131ce7b427283c24ef?s=80&d=identicon", "web_url": "https://gitlab.com/airbyte"}, "emitted_at": 1682502792538} +{"stream": "users", "data": {"id": 7904355, "username": "y.kurochkin", "name": "Yevhenii Kurochkin", "state": "active", "avatar_url": "https://secure.gravatar.com/avatar/760fcac88680c724a6b19c6bfd5b6718?s=80&d=identicon", "web_url": "https://gitlab.com/y.kurochkin"}, "emitted_at": 1682502792869} +{"stream": "users", "data": {"id": 8375961, "username": "airbyte", "name": "Airbyte Team", "state": "active", "avatar_url": "https://secure.gravatar.com/avatar/0a7841feac7218131ce7b427283c24ef?s=80&d=identicon", "web_url": "https://gitlab.com/airbyte"}, "emitted_at": 1682502792870} +{"stream": "epics", "data": {"id": 678569, "iid": 1, "color": "#1068bf", "text_color": "#FFFFFF", "group_id": 11266951, "parent_id": null, "parent_iid": null, "title": "Source Gitlab: certify to Beta", "description": "Lorem ipsum", "confidential": false, "start_date": "2022-12-11", "start_date_is_fixed": true, "start_date_fixed": "2022-12-11", "start_date_from_inherited_source": null, "start_date_from_milestones": null, "end_date": "2022-12-30", "due_date": "2022-12-30", "due_date_is_fixed": true, "due_date_fixed": "2022-12-30", "due_date_from_inherited_source": null, "due_date_from_milestones": null, "state": "opened", "web_edit_url": "/groups/airbyte.io/-/epics/1", "web_url": "https://gitlab.com/groups/airbyte.io/-/epics/1", "references": {"short": "&1", "relative": "&1", "full": "airbyte.io&1"}, "created_at": "2022-12-11T10:50:04.280Z", "updated_at": "2022-12-11T10:50:26.276Z", "closed_at": null, "labels": [], "upvotes": 1, "downvotes": 0, "_links": {"self": "https://gitlab.com/api/v4/groups/11266951/epics/1", "epic_issues": "https://gitlab.com/api/v4/groups/11266951/epics/1/issues", "group": "https://gitlab.com/api/v4/groups/11266951", "parent": null}, "author_id": 8375961}, "emitted_at": 1682502796273} +{"stream": "epic_issues", "data": {"id": 120214448, "iid": 31, "project_id": 25156633, "title": "Unit tests", "description": null, "state": "opened", "created_at": "2022-12-11T10:50:25.940Z", "updated_at": "2022-12-11T10:50:25.940Z", "closed_at": null, "closed_by": null, "labels": [], "assignees": [], "type": "ISSUE", "user_notes_count": 0, "merge_requests_count": 0, "upvotes": 0, "downvotes": 0, "due_date": null, "confidential": false, "discussion_locked": null, "issue_type": "issue", "web_url": "https://gitlab.com/airbyte.io/ci-test-project/-/issues/31", "time_stats": {"time_estimate": 0, "total_time_spent": 0, "human_time_estimate": null, "human_total_time_spent": null}, "task_completion_status": {"count": 0, "completed_count": 0}, "weight": null, "blocking_issues_count": 0, "has_tasks": true, "task_status": "", "_links": {"self": "https://gitlab.com/api/v4/projects/25156633/issues/31", "notes": "https://gitlab.com/api/v4/projects/25156633/issues/31/notes", "award_emoji": "https://gitlab.com/api/v4/projects/25156633/issues/31/award_emoji", "project": "https://gitlab.com/api/v4/projects/25156633", "closed_as_duplicate_of": null}, "references": {"short": "#31", "relative": "#31", "full": "airbyte.io/ci-test-project#31"}, "severity": "UNKNOWN", "moved_to_id": null, "service_desk_reply_to": null, "epic_iid": 1, "epic": {"id": 678569, "iid": 1, "title": "Source Gitlab: certify to Beta", "url": "/groups/airbyte.io/-/epics/1", "group_id": 11266951, "human_readable_end_date": "Dec 30, 2022", "human_readable_timestamp": "Past due"}, "iteration": null, "epic_issue_id": 1899479, "relative_position": 0, "milestone_id": null, "assignee_id": null, "author_id": 8375961}, "emitted_at": 1682502799914} diff --git a/airbyte-integrations/connectors/source-gitlab/integration_tests/expected_records_with_ids.jsonl b/airbyte-integrations/connectors/source-gitlab/integration_tests/expected_records_with_ids.jsonl index a2673229593b4..b51098bc3afe1 100644 --- a/airbyte-integrations/connectors/source-gitlab/integration_tests/expected_records_with_ids.jsonl +++ b/airbyte-integrations/connectors/source-gitlab/integration_tests/expected_records_with_ids.jsonl @@ -1,106 +1,87 @@ -{"stream": "groups", "data": {"id": 11329647, "web_url": "https://gitlab.com/groups/new-group-airbute", "name": "New Group Airbute", "path": "new-group-airbute", "description": "", "visibility": "public", "share_with_group_lock": false, "require_two_factor_authentication": false, "two_factor_grace_period": 48, "project_creation_level": "developer", "auto_devops_enabled": null, "subgroup_creation_level": "maintainer", "emails_disabled": null, "mentions_disabled": null, "lfs_enabled": true, "default_branch_protection": 2, "avatar_url": null, "request_access_enabled": true, "full_name": "New Group Airbute", "full_path": "new-group-airbute", "created_at": "2021-03-15T15:55:53.613Z", "parent_id": null, "ldap_cn": null, "ldap_access": null, "wiki_access_level": "enabled", "shared_with_groups": [], "runners_token": "GR1348941-PhosPap-Sf1UxL1g6m4", "prevent_sharing_groups_outside_hierarchy": false, "shared_projects": [], "shared_runners_minutes_limit": null, "extra_shared_runners_minutes_limit": null, "prevent_forking_outside_group": null, "membership_lock": false, "projects": [{"id": 25157276, "path_with_namespace": "new-group-airbute/new-ci-test-project"}]}, "emitted_at": 1674055483187} -{"stream": "groups", "data": {"id": 61014882, "web_url": "https://gitlab.com/groups/new-group-airbute/test-subgroup-airbyte/test-private-sg", "name": "Test Private SG", "path": "test-private-sg", "description": "", "visibility": "private", "share_with_group_lock": false, "require_two_factor_authentication": false, "two_factor_grace_period": 48, "project_creation_level": "developer", "auto_devops_enabled": null, "subgroup_creation_level": "maintainer", "emails_disabled": null, "mentions_disabled": null, "lfs_enabled": true, "default_branch_protection": 2, "avatar_url": null, "request_access_enabled": true, "full_name": "New Group Airbute / Test Subgroup Airbyte / Test Private SG", "full_path": "new-group-airbute/test-subgroup-airbyte/test-private-sg", "created_at": "2022-12-02T08:46:22.648Z", "parent_id": 61014863, "ldap_cn": null, "ldap_access": null, "wiki_access_level": "enabled", "shared_with_groups": [], "runners_token": "GR1348941bjUaJQy2zzar-JmNBjfq", "shared_projects": [], "shared_runners_minutes_limit": null, "extra_shared_runners_minutes_limit": null, "prevent_forking_outside_group": null, "membership_lock": false, "projects": []}, "emitted_at": 1674055483596} -{"stream": "groups", "data": {"id": 61015181, "web_url": "https://gitlab.com/groups/new-group-airbute/test-public-sg/test-sg-public-2/test-private-subsubg-1", "name": "Test Private SubSubG 1", "path": "test-private-subsubg-1", "description": "", "visibility": "private", "share_with_group_lock": false, "require_two_factor_authentication": false, "two_factor_grace_period": 48, "project_creation_level": "developer", "auto_devops_enabled": null, "subgroup_creation_level": "maintainer", "emails_disabled": null, "mentions_disabled": null, "lfs_enabled": true, "default_branch_protection": 2, "avatar_url": null, "request_access_enabled": true, "full_name": "New Group Airbute / Test Public SG / Test SG Public 2 / Test Private SubSubG 1", "full_path": "new-group-airbute/test-public-sg/test-sg-public-2/test-private-subsubg-1", "created_at": "2022-12-02T08:54:42.252Z", "parent_id": 61014943, "ldap_cn": null, "ldap_access": null, "wiki_access_level": "enabled", "shared_with_groups": [], "runners_token": "GR1348941x8xQf6K-UvnnyJ-bcut4", "shared_projects": [], "shared_runners_minutes_limit": null, "extra_shared_runners_minutes_limit": null, "prevent_forking_outside_group": null, "membership_lock": false, "projects": [{"id": 41551658, "path_with_namespace": "new-group-airbute/test-public-sg/test-sg-public-2/test-private-subsubg-1/test_project_in_nested_subgroup"}]}, "emitted_at": 1674055484432} -{"stream": "projects", "data": {"id": 25157276, "description": "", "name": "New CI Test Project ", "name_with_namespace": "New Group Airbute / New CI Test Project ", "path": "new-ci-test-project", "path_with_namespace": "new-group-airbute/new-ci-test-project", "created_at": "2021-03-15T15:08:36.498Z", "default_branch": "master", "tag_list": [], "topics": [], "ssh_url_to_repo": "git@gitlab.com:new-group-airbute/new-ci-test-project.git", "http_url_to_repo": "https://gitlab.com/new-group-airbute/new-ci-test-project.git", "web_url": "https://gitlab.com/new-group-airbute/new-ci-test-project", "readme_url": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/blob/master/README.md", "forks_count": 0, "avatar_url": null, "star_count": 0, "last_activity_at": "2022-12-13T09:39:47.235Z", "namespace": {"id": 11329647, "name": "New Group Airbute", "path": "new-group-airbute", "kind": "group", "full_path": "new-group-airbute", "parent_id": null, "avatar_url": null, "web_url": "https://gitlab.com/groups/new-group-airbute"}, "container_registry_image_prefix": "registry.gitlab.com/new-group-airbute/new-ci-test-project", "_links": {"self": "https://gitlab.com/api/v4/projects/25157276", "issues": "https://gitlab.com/api/v4/projects/25157276/issues", "merge_requests": "https://gitlab.com/api/v4/projects/25157276/merge_requests", "repo_branches": "https://gitlab.com/api/v4/projects/25157276/repository/branches", "labels": "https://gitlab.com/api/v4/projects/25157276/labels", "events": "https://gitlab.com/api/v4/projects/25157276/events", "members": "https://gitlab.com/api/v4/projects/25157276/members", "cluster_agents": "https://gitlab.com/api/v4/projects/25157276/cluster_agents"}, "packages_enabled": true, "empty_repo": false, "archived": false, "visibility": "private", "resolve_outdated_diff_discussions": false, "container_expiration_policy": {"cadence": "1d", "enabled": false, "keep_n": 10, "older_than": "90d", "name_regex": ".*", "name_regex_keep": null, "next_run_at": "2021-03-16T15:08:36.518Z"}, "issues_enabled": true, "merge_requests_enabled": true, "wiki_enabled": true, "jobs_enabled": true, "snippets_enabled": true, "container_registry_enabled": true, "service_desk_enabled": true, "service_desk_address": "contact-project+new-group-airbute-new-ci-test-project-25157276-issue-@incoming.gitlab.com", "can_create_merge_request_in": true, "issues_access_level": "enabled", "repository_access_level": "enabled", "merge_requests_access_level": "enabled", "forking_access_level": "enabled", "wiki_access_level": "enabled", "builds_access_level": "enabled", "snippets_access_level": "enabled", "pages_access_level": "private", "operations_access_level": "enabled", "analytics_access_level": "enabled", "container_registry_access_level": "enabled", "security_and_compliance_access_level": "private", "releases_access_level": "enabled", "environments_access_level": "enabled", "feature_flags_access_level": "enabled", "infrastructure_access_level": "enabled", "monitor_access_level": "enabled", "emails_disabled": null, "shared_runners_enabled": true, "group_runners_enabled": true, "lfs_enabled": true, "creator_id": 8375961, "import_url": null, "import_type": null, "import_status": "none", "import_error": null, "open_issues_count": 31, "runners_token": "GR1348941eMJgWDU69xyyshaNsaTZ", "ci_default_git_depth": 50, "ci_forward_deployment_enabled": true, "ci_job_token_scope_enabled": false, "ci_separated_caches": true, "ci_opt_in_jwt": false, "ci_allow_fork_pipelines_to_run_in_parent_project": true, "public_jobs": true, "build_git_strategy": "fetch", "build_timeout": 3600, "auto_cancel_pending_pipelines": "enabled", "ci_config_path": "", "shared_with_groups": [], "only_allow_merge_if_pipeline_succeeds": false, "allow_merge_on_skipped_pipeline": null, "restrict_user_defined_variables": false, "request_access_enabled": true, "only_allow_merge_if_all_discussions_are_resolved": false, "remove_source_branch_after_merge": true, "printing_merge_request_link_enabled": true, "merge_method": "merge", "squash_option": "default_off", "enforce_auth_checks_on_uploads": true, "suggestion_commit_message": null, "merge_commit_template": null, "squash_commit_template": null, "issue_branch_template": null, "statistics": {"commit_count": 3, "storage_size": 291925, "repository_size": 283115, "wiki_size": 0, "lfs_objects_size": 0, "job_artifacts_size": 8810, "pipeline_artifacts_size": 0, "packages_size": 0, "snippets_size": 0, "uploads_size": 0}, "auto_devops_enabled": false, "auto_devops_deploy_strategy": "continuous", "autoclose_referenced_issues": true, "keep_latest_artifact": true, "runner_token_expiration_interval": null, "external_authorization_classification_label": "", "requirements_enabled": false, "requirements_access_level": "enabled", "security_and_compliance_enabled": true, "compliance_frameworks": [], "permissions": {"project_access": {"access_level": 40, "notification_level": 3}, "group_access": {"access_level": 50, "notification_level": 3}}}, "emitted_at": 1674055638197} -{"stream": "branches", "data": {"name": "31-fake-issue-30", "merged": true, "protected": false, "developers_can_push": false, "developers_can_merge": false, "can_push": true, "default": false, "web_url": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/tree/31-fake-issue-30", "commit_id": "2831d897ba0214f8d3168647e8ad4232b83987ef", "project_id": 25157276}, "emitted_at": 1674055638810} -{"stream": "branches", "data": {"name": "master", "merged": false, "protected": true, "developers_can_push": false, "developers_can_merge": false, "can_push": true, "default": true, "web_url": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/tree/master", "commit_id": "6ad3dd49539391774db738c9e7b7d69f2d872c98", "project_id": 25157276}, "emitted_at": 1674055638811} -{"stream": "branches", "data": {"name": "new-test-branch", "merged": true, "protected": false, "developers_can_push": false, "developers_can_merge": false, "can_push": true, "default": false, "web_url": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/tree/new-test-branch", "commit_id": "2831d897ba0214f8d3168647e8ad4232b83987ef", "project_id": 25157276}, "emitted_at": 1674055638812} -{"stream": "branches", "data": {"name": "new-test-branch-1", "merged": true, "protected": false, "developers_can_push": false, "developers_can_merge": false, "can_push": true, "default": false, "web_url": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/tree/new-test-branch-1", "commit_id": "2831d897ba0214f8d3168647e8ad4232b83987ef", "project_id": 25157276}, "emitted_at": 1674055638812} -{"stream": "branches", "data": {"name": "new-test-branch-10", "merged": true, "protected": false, "developers_can_push": false, "developers_can_merge": false, "can_push": true, "default": false, "web_url": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/tree/new-test-branch-10", "commit_id": "2831d897ba0214f8d3168647e8ad4232b83987ef", "project_id": 25157276}, "emitted_at": 1674055638813} -{"stream": "branches", "data": {"name": "new-test-branch-11", "merged": true, "protected": false, "developers_can_push": false, "developers_can_merge": false, "can_push": true, "default": false, "web_url": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/tree/new-test-branch-11", "commit_id": "2831d897ba0214f8d3168647e8ad4232b83987ef", "project_id": 25157276}, "emitted_at": 1674055638814} -{"stream": "branches", "data": {"name": "new-test-branch-12", "merged": true, "protected": false, "developers_can_push": false, "developers_can_merge": false, "can_push": true, "default": false, "web_url": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/tree/new-test-branch-12", "commit_id": "2831d897ba0214f8d3168647e8ad4232b83987ef", "project_id": 25157276}, "emitted_at": 1674055638814} -{"stream": "branches", "data": {"name": "new-test-branch-13", "merged": true, "protected": false, "developers_can_push": false, "developers_can_merge": false, "can_push": true, "default": false, "web_url": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/tree/new-test-branch-13", "commit_id": "2831d897ba0214f8d3168647e8ad4232b83987ef", "project_id": 25157276}, "emitted_at": 1674055638815} -{"stream": "branches", "data": {"name": "new-test-branch-14", "merged": true, "protected": false, "developers_can_push": false, "developers_can_merge": false, "can_push": true, "default": false, "web_url": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/tree/new-test-branch-14", "commit_id": "2831d897ba0214f8d3168647e8ad4232b83987ef", "project_id": 25157276}, "emitted_at": 1674055638815} -{"stream": "branches", "data": {"name": "new-test-branch-15", "merged": true, "protected": false, "developers_can_push": false, "developers_can_merge": false, "can_push": true, "default": false, "web_url": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/tree/new-test-branch-15", "commit_id": "2831d897ba0214f8d3168647e8ad4232b83987ef", "project_id": 25157276}, "emitted_at": 1674055638816} -{"stream": "commits", "data": {"id": "6ad3dd49539391774db738c9e7b7d69f2d872c98", "short_id": "6ad3dd49", "created_at": "2021-03-18T12:51:05.000+00:00", "parent_ids": ["2831d897ba0214f8d3168647e8ad4232b83987ef", "028c02d96f40afe9b4d1173c1d0f712dd6d07302"], "title": "Merge branch 'ykurochkin/add-fake-CI-config' into 'master'", "message": "Merge branch 'ykurochkin/add-fake-CI-config' into 'master'\n\nadd fake CI config\n\nSee merge request new-group-airbute/new-ci-test-project!3", "author_name": "Alexander Arhipenko", "author_email": "integration-test@airbyte.io", "authored_date": "2021-03-18T12:51:05.000+00:00", "committer_name": "Alexander Arhipenko", "committer_email": "integration-test@airbyte.io", "committed_date": "2021-03-18T12:51:05.000+00:00", "trailers": {}, "web_url": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/commit/6ad3dd49539391774db738c9e7b7d69f2d872c98", "stats": {"additions": 14, "deletions": 0, "total": 14}, "project_id": 25157276}, "emitted_at": 1674055640264} -{"stream": "commits", "data": {"id": "028c02d96f40afe9b4d1173c1d0f712dd6d07302", "short_id": "028c02d9", "created_at": "2021-03-18T14:48:41.000+02:00", "parent_ids": ["2831d897ba0214f8d3168647e8ad4232b83987ef"], "title": "add fake CI config", "message": "add fake CI config\n", "author_name": "ykurochkin", "author_email": "zhenia.kurochkin@gmail.com", "authored_date": "2021-03-18T14:48:41.000+02:00", "committer_name": "ykurochkin", "committer_email": "zhenia.kurochkin@gmail.com", "committed_date": "2021-03-18T14:48:41.000+02:00", "trailers": {}, "web_url": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/commit/028c02d96f40afe9b4d1173c1d0f712dd6d07302", "stats": {"additions": 14, "deletions": 0, "total": 14}, "project_id": 25157276}, "emitted_at": 1674055640265} -{"stream": "commits", "data": {"id": "2831d897ba0214f8d3168647e8ad4232b83987ef", "short_id": "2831d897", "created_at": "2021-03-15T15:08:36.000+00:00", "parent_ids": [], "title": "Initial commit", "message": "Initial commit", "author_name": "Alexander Arhipenko", "author_email": "integration-test@airbyte.io", "authored_date": "2021-03-15T15:08:36.000+00:00", "committer_name": "Alexander Arhipenko", "committer_email": "integration-test@airbyte.io", "committed_date": "2021-03-15T15:08:36.000+00:00", "trailers": {}, "web_url": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/commit/2831d897ba0214f8d3168647e8ad4232b83987ef", "stats": {"additions": 2, "deletions": 0, "total": 2}, "project_id": 25157276}, "emitted_at": 1674055640266} -{"stream": "group_issue_boards", "data": {"id": 5099065, "name": "Development", "hide_backlog_list": false, "hide_closed_list": false, "project": null, "lists": [], "group": {"id": 11329647, "web_url": "https://gitlab.com/groups/new-group-airbute", "name": "New Group Airbute"}, "group_id": 11329647}, "emitted_at": 1674055640946} -{"stream": "issues", "data": {"id": 80943819, "iid": 32, "project_id": 25157276, "title": "Fake Issue 31", "description": null, "state": "opened", "created_at": "2021-03-15T15:22:42.206Z", "updated_at": "2021-03-15T15:22:42.206Z", "closed_at": null, "labels": ["bug"], "assignees": [], "type": "ISSUE", "user_notes_count": 0, "merge_requests_count": 0, "upvotes": 0, "downvotes": 0, "due_date": null, "confidential": false, "discussion_locked": null, "issue_type": "issue", "web_url": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/issues/32", "time_stats": {"time_estimate": 0, "total_time_spent": 0, "human_time_estimate": null, "human_total_time_spent": null}, "task_completion_status": {"count": 0, "completed_count": 0}, "blocking_issues_count": 0, "has_tasks": true, "task_status": "", "_links": {"self": "https://gitlab.com/api/v4/projects/25157276/issues/32", "notes": "https://gitlab.com/api/v4/projects/25157276/issues/32/notes", "award_emoji": "https://gitlab.com/api/v4/projects/25157276/issues/32/award_emoji", "project": "https://gitlab.com/api/v4/projects/25157276", "closed_as_duplicate_of": null}, "references": {"short": "#32", "relative": "#32", "full": "new-group-airbute/new-ci-test-project#32"}, "severity": "UNKNOWN", "moved_to_id": null, "service_desk_reply_to": null, "author_id": 8375961, "assignee_id": null, "closed_by_id": null, "milestone_id": null}, "emitted_at": 1674055644946} -{"stream": "issues", "data": {"id": 80943818, "iid": 31, "project_id": 25157276, "title": "Fake Issue 30", "description": null, "state": "opened", "created_at": "2021-03-15T15:22:41.337Z", "updated_at": "2021-03-15T16:08:06.041Z", "closed_at": null, "labels": ["bug"], "assignees": [], "type": "ISSUE", "user_notes_count": 0, "merge_requests_count": 1, "upvotes": 0, "downvotes": 0, "due_date": null, "confidential": false, "discussion_locked": null, "issue_type": "issue", "web_url": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/issues/31", "time_stats": {"time_estimate": 0, "total_time_spent": 0, "human_time_estimate": null, "human_total_time_spent": null}, "task_completion_status": {"count": 0, "completed_count": 0}, "blocking_issues_count": 0, "has_tasks": true, "task_status": "", "_links": {"self": "https://gitlab.com/api/v4/projects/25157276/issues/31", "notes": "https://gitlab.com/api/v4/projects/25157276/issues/31/notes", "award_emoji": "https://gitlab.com/api/v4/projects/25157276/issues/31/award_emoji", "project": "https://gitlab.com/api/v4/projects/25157276", "closed_as_duplicate_of": null}, "references": {"short": "#31", "relative": "#31", "full": "new-group-airbute/new-ci-test-project#31"}, "severity": "UNKNOWN", "moved_to_id": null, "service_desk_reply_to": null, "author_id": 8375961, "assignee_id": null, "closed_by_id": null, "milestone_id": null}, "emitted_at": 1674055644947} -{"stream": "issues", "data": {"id": 80943817, "iid": 30, "project_id": 25157276, "title": "Fake Issue 29", "description": null, "state": "opened", "created_at": "2021-03-15T15:22:40.529Z", "updated_at": "2021-03-15T15:22:40.529Z", "closed_at": null, "labels": ["bug"], "assignees": [], "type": "ISSUE", "user_notes_count": 0, "merge_requests_count": 0, "upvotes": 0, "downvotes": 0, "due_date": null, "confidential": false, "discussion_locked": null, "issue_type": "issue", "web_url": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/issues/30", "time_stats": {"time_estimate": 0, "total_time_spent": 0, "human_time_estimate": null, "human_total_time_spent": null}, "task_completion_status": {"count": 0, "completed_count": 0}, "blocking_issues_count": 0, "has_tasks": true, "task_status": "", "_links": {"self": "https://gitlab.com/api/v4/projects/25157276/issues/30", "notes": "https://gitlab.com/api/v4/projects/25157276/issues/30/notes", "award_emoji": "https://gitlab.com/api/v4/projects/25157276/issues/30/award_emoji", "project": "https://gitlab.com/api/v4/projects/25157276", "closed_as_duplicate_of": null}, "references": {"short": "#30", "relative": "#30", "full": "new-group-airbute/new-ci-test-project#30"}, "severity": "UNKNOWN", "moved_to_id": null, "service_desk_reply_to": null, "author_id": 8375961, "assignee_id": null, "closed_by_id": null, "milestone_id": null}, "emitted_at": 1674055644947} -{"stream": "issues", "data": {"id": 80943816, "iid": 29, "project_id": 25157276, "title": "Fake Issue 28", "description": null, "state": "opened", "created_at": "2021-03-15T15:22:39.860Z", "updated_at": "2021-03-15T15:22:39.860Z", "closed_at": null, "labels": ["bug"], "assignees": [], "type": "ISSUE", "user_notes_count": 0, "merge_requests_count": 0, "upvotes": 0, "downvotes": 0, "due_date": null, "confidential": false, "discussion_locked": null, "issue_type": "issue", "web_url": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/issues/29", "time_stats": {"time_estimate": 0, "total_time_spent": 0, "human_time_estimate": null, "human_total_time_spent": null}, "task_completion_status": {"count": 0, "completed_count": 0}, "blocking_issues_count": 0, "has_tasks": true, "task_status": "", "_links": {"self": "https://gitlab.com/api/v4/projects/25157276/issues/29", "notes": "https://gitlab.com/api/v4/projects/25157276/issues/29/notes", "award_emoji": "https://gitlab.com/api/v4/projects/25157276/issues/29/award_emoji", "project": "https://gitlab.com/api/v4/projects/25157276", "closed_as_duplicate_of": null}, "references": {"short": "#29", "relative": "#29", "full": "new-group-airbute/new-ci-test-project#29"}, "severity": "UNKNOWN", "moved_to_id": null, "service_desk_reply_to": null, "author_id": 8375961, "assignee_id": null, "closed_by_id": null, "milestone_id": null}, "emitted_at": 1674055644947} -{"stream": "issues", "data": {"id": 80943815, "iid": 28, "project_id": 25157276, "title": "Fake Issue 27", "description": null, "state": "opened", "created_at": "2021-03-15T15:22:39.204Z", "updated_at": "2021-03-15T15:22:39.204Z", "closed_at": null, "labels": ["bug"], "assignees": [], "type": "ISSUE", "user_notes_count": 0, "merge_requests_count": 0, "upvotes": 0, "downvotes": 0, "due_date": null, "confidential": false, "discussion_locked": null, "issue_type": "issue", "web_url": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/issues/28", "time_stats": {"time_estimate": 0, "total_time_spent": 0, "human_time_estimate": null, "human_total_time_spent": null}, "task_completion_status": {"count": 0, "completed_count": 0}, "blocking_issues_count": 0, "has_tasks": true, "task_status": "", "_links": {"self": "https://gitlab.com/api/v4/projects/25157276/issues/28", "notes": "https://gitlab.com/api/v4/projects/25157276/issues/28/notes", "award_emoji": "https://gitlab.com/api/v4/projects/25157276/issues/28/award_emoji", "project": "https://gitlab.com/api/v4/projects/25157276", "closed_as_duplicate_of": null}, "references": {"short": "#28", "relative": "#28", "full": "new-group-airbute/new-ci-test-project#28"}, "severity": "UNKNOWN", "moved_to_id": null, "service_desk_reply_to": null, "author_id": 8375961, "assignee_id": null, "closed_by_id": null, "milestone_id": null}, "emitted_at": 1674055644948} -{"stream": "issues", "data": {"id": 80943813, "iid": 27, "project_id": 25157276, "title": "Fake Issue 26", "description": null, "state": "opened", "created_at": "2021-03-15T15:22:38.528Z", "updated_at": "2021-03-15T15:22:38.528Z", "closed_at": null, "labels": ["bug"], "assignees": [], "type": "ISSUE", "user_notes_count": 0, "merge_requests_count": 0, "upvotes": 0, "downvotes": 0, "due_date": null, "confidential": false, "discussion_locked": null, "issue_type": "issue", "web_url": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/issues/27", "time_stats": {"time_estimate": 0, "total_time_spent": 0, "human_time_estimate": null, "human_total_time_spent": null}, "task_completion_status": {"count": 0, "completed_count": 0}, "blocking_issues_count": 0, "has_tasks": true, "task_status": "", "_links": {"self": "https://gitlab.com/api/v4/projects/25157276/issues/27", "notes": "https://gitlab.com/api/v4/projects/25157276/issues/27/notes", "award_emoji": "https://gitlab.com/api/v4/projects/25157276/issues/27/award_emoji", "project": "https://gitlab.com/api/v4/projects/25157276", "closed_as_duplicate_of": null}, "references": {"short": "#27", "relative": "#27", "full": "new-group-airbute/new-ci-test-project#27"}, "severity": "UNKNOWN", "moved_to_id": null, "service_desk_reply_to": null, "author_id": 8375961, "assignee_id": null, "closed_by_id": null, "milestone_id": null}, "emitted_at": 1674055644948} -{"stream": "issues", "data": {"id": 80943812, "iid": 26, "project_id": 25157276, "title": "Fake Issue 25", "description": null, "state": "opened", "created_at": "2021-03-15T15:22:37.864Z", "updated_at": "2021-03-15T15:22:37.864Z", "closed_at": null, "labels": ["bug"], "assignees": [], "type": "ISSUE", "user_notes_count": 0, "merge_requests_count": 0, "upvotes": 0, "downvotes": 0, "due_date": null, "confidential": false, "discussion_locked": null, "issue_type": "issue", "web_url": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/issues/26", "time_stats": {"time_estimate": 0, "total_time_spent": 0, "human_time_estimate": null, "human_total_time_spent": null}, "task_completion_status": {"count": 0, "completed_count": 0}, "blocking_issues_count": 0, "has_tasks": true, "task_status": "", "_links": {"self": "https://gitlab.com/api/v4/projects/25157276/issues/26", "notes": "https://gitlab.com/api/v4/projects/25157276/issues/26/notes", "award_emoji": "https://gitlab.com/api/v4/projects/25157276/issues/26/award_emoji", "project": "https://gitlab.com/api/v4/projects/25157276", "closed_as_duplicate_of": null}, "references": {"short": "#26", "relative": "#26", "full": "new-group-airbute/new-ci-test-project#26"}, "severity": "UNKNOWN", "moved_to_id": null, "service_desk_reply_to": null, "author_id": 8375961, "assignee_id": null, "closed_by_id": null, "milestone_id": null}, "emitted_at": 1674055644948} -{"stream": "issues", "data": {"id": 80943811, "iid": 25, "project_id": 25157276, "title": "Fake Issue 24", "description": null, "state": "opened", "created_at": "2021-03-15T15:22:37.282Z", "updated_at": "2021-03-15T15:22:37.282Z", "closed_at": null, "labels": ["bug"], "assignees": [], "type": "ISSUE", "user_notes_count": 0, "merge_requests_count": 0, "upvotes": 0, "downvotes": 0, "due_date": null, "confidential": false, "discussion_locked": null, "issue_type": "issue", "web_url": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/issues/25", "time_stats": {"time_estimate": 0, "total_time_spent": 0, "human_time_estimate": null, "human_total_time_spent": null}, "task_completion_status": {"count": 0, "completed_count": 0}, "blocking_issues_count": 0, "has_tasks": true, "task_status": "", "_links": {"self": "https://gitlab.com/api/v4/projects/25157276/issues/25", "notes": "https://gitlab.com/api/v4/projects/25157276/issues/25/notes", "award_emoji": "https://gitlab.com/api/v4/projects/25157276/issues/25/award_emoji", "project": "https://gitlab.com/api/v4/projects/25157276", "closed_as_duplicate_of": null}, "references": {"short": "#25", "relative": "#25", "full": "new-group-airbute/new-ci-test-project#25"}, "severity": "UNKNOWN", "moved_to_id": null, "service_desk_reply_to": null, "author_id": 8375961, "assignee_id": null, "closed_by_id": null, "milestone_id": null}, "emitted_at": 1674055644949} -{"stream": "issues", "data": {"id": 80943809, "iid": 24, "project_id": 25157276, "title": "Fake Issue 23", "description": null, "state": "opened", "created_at": "2021-03-15T15:22:36.708Z", "updated_at": "2021-03-15T15:22:36.708Z", "closed_at": null, "labels": ["bug"], "assignees": [], "type": "ISSUE", "user_notes_count": 0, "merge_requests_count": 0, "upvotes": 0, "downvotes": 0, "due_date": null, "confidential": false, "discussion_locked": null, "issue_type": "issue", "web_url": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/issues/24", "time_stats": {"time_estimate": 0, "total_time_spent": 0, "human_time_estimate": null, "human_total_time_spent": null}, "task_completion_status": {"count": 0, "completed_count": 0}, "blocking_issues_count": 0, "has_tasks": true, "task_status": "", "_links": {"self": "https://gitlab.com/api/v4/projects/25157276/issues/24", "notes": "https://gitlab.com/api/v4/projects/25157276/issues/24/notes", "award_emoji": "https://gitlab.com/api/v4/projects/25157276/issues/24/award_emoji", "project": "https://gitlab.com/api/v4/projects/25157276", "closed_as_duplicate_of": null}, "references": {"short": "#24", "relative": "#24", "full": "new-group-airbute/new-ci-test-project#24"}, "severity": "UNKNOWN", "moved_to_id": null, "service_desk_reply_to": null, "author_id": 8375961, "assignee_id": null, "closed_by_id": null, "milestone_id": null}, "emitted_at": 1674055644949} -{"stream": "issues", "data": {"id": 80943805, "iid": 23, "project_id": 25157276, "title": "Fake Issue 22", "description": null, "state": "opened", "created_at": "2021-03-15T15:22:36.131Z", "updated_at": "2021-03-15T15:22:36.131Z", "closed_at": null, "labels": ["bug"], "assignees": [], "type": "ISSUE", "user_notes_count": 0, "merge_requests_count": 0, "upvotes": 0, "downvotes": 0, "due_date": null, "confidential": false, "discussion_locked": null, "issue_type": "issue", "web_url": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/issues/23", "time_stats": {"time_estimate": 0, "total_time_spent": 0, "human_time_estimate": null, "human_total_time_spent": null}, "task_completion_status": {"count": 0, "completed_count": 0}, "blocking_issues_count": 0, "has_tasks": true, "task_status": "", "_links": {"self": "https://gitlab.com/api/v4/projects/25157276/issues/23", "notes": "https://gitlab.com/api/v4/projects/25157276/issues/23/notes", "award_emoji": "https://gitlab.com/api/v4/projects/25157276/issues/23/award_emoji", "project": "https://gitlab.com/api/v4/projects/25157276", "closed_as_duplicate_of": null}, "references": {"short": "#23", "relative": "#23", "full": "new-group-airbute/new-ci-test-project#23"}, "severity": "UNKNOWN", "moved_to_id": null, "service_desk_reply_to": null, "author_id": 8375961, "assignee_id": null, "closed_by_id": null, "milestone_id": null}, "emitted_at": 1674055644949} -{"stream": "jobs", "data": {"id": 1108959782, "status": "failed", "stage": "test", "name": "test-code-job2", "ref": "master", "tag": false, "coverage": null, "allow_failure": false, "created_at": "2021-03-18T12:51:06.294Z", "started_at": "2021-03-18T12:51:07.646Z", "finished_at": "2021-03-18T12:51:51.309Z", "erased_at": null, "duration": 43.662407, "queued_duration": 1.180926, "failure_reason": "script_failure", "web_url": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/jobs/1108959782", "project": {"ci_job_token_scope_enabled": false}, "artifacts": [{"file_type": "trace", "size": 2200, "filename": "job.log", "file_format": null}], "artifacts_expire_at": null, "tag_list": [], "user_id": 8375961, "pipeline_id": 272632767, "runner_id": 380986, "commit_id": "6ad3dd49539391774db738c9e7b7d69f2d872c98", "project_id": 25157276}, "emitted_at": 1675091412074} -{"stream": "jobs", "data": {"id": 1108959779, "status": "failed", "stage": "test", "name": "test-code-job1", "ref": "master", "tag": false, "coverage": null, "allow_failure": false, "created_at": "2021-03-18T12:51:06.279Z", "started_at": "2021-03-18T12:51:07.943Z", "finished_at": "2021-03-18T12:51:50.943Z", "erased_at": null, "duration": 42.999853, "queued_duration": 1.349274, "failure_reason": "script_failure", "web_url": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/jobs/1108959779", "project": {"ci_job_token_scope_enabled": false}, "artifacts": [{"file_type": "trace", "size": 2182, "filename": "job.log", "file_format": null}], "artifacts_expire_at": null, "tag_list": [], "user_id": 8375961, "pipeline_id": 272632767, "runner_id": 380987, "commit_id": "6ad3dd49539391774db738c9e7b7d69f2d872c98", "project_id": 25157276}, "emitted_at": 1675091412074} -{"stream": "jobs", "data": {"id": 1108952832, "status": "failed", "stage": "test", "name": "test-code-job2", "ref": "ykurochkin/add-fake-CI-config", "tag": false, "coverage": null, "allow_failure": false, "created_at": "2021-03-18T12:48:49.222Z", "started_at": "2021-03-18T12:48:50.732Z", "finished_at": "2021-03-18T12:49:37.961Z", "erased_at": null, "duration": 47.229034, "queued_duration": 1.422541, "failure_reason": "script_failure", "web_url": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/jobs/1108952832", "project": {"ci_job_token_scope_enabled": false}, "artifacts": [{"file_type": "trace", "size": 2223, "filename": "job.log", "file_format": null}], "artifacts_expire_at": null, "tag_list": [], "user_id": 8375961, "pipeline_id": 272631271, "runner_id": 44949, "commit_id": "028c02d96f40afe9b4d1173c1d0f712dd6d07302", "project_id": 25157276}, "emitted_at": 1675091412686} -{"stream": "jobs", "data": {"id": 1108952831, "status": "failed", "stage": "test", "name": "test-code-job1", "ref": "ykurochkin/add-fake-CI-config", "tag": false, "coverage": null, "allow_failure": false, "created_at": "2021-03-18T12:48:49.199Z", "started_at": "2021-03-18T12:48:50.064Z", "finished_at": "2021-03-18T12:49:34.277Z", "erased_at": null, "duration": 44.212296, "queued_duration": 0.735172, "failure_reason": "script_failure", "web_url": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/jobs/1108952831", "project": {"ci_job_token_scope_enabled": false}, "artifacts": [{"file_type": "trace", "size": 2205, "filename": "job.log", "file_format": null}], "artifacts_expire_at": null, "tag_list": [], "user_id": 8375961, "pipeline_id": 272631271, "runner_id": 380987, "commit_id": "028c02d96f40afe9b4d1173c1d0f712dd6d07302", "project_id": 25157276}, "emitted_at": 1675091412687} -{"stream": "project_milestones", "data": {"id": 1943705, "iid": 51, "project_id": 25157276, "title": "Project Milestone 51", "description": null, "state": "active", "created_at": "2021-03-15T15:33:16.915Z", "updated_at": "2021-03-15T15:33:16.915Z", "due_date": null, "start_date": null, "expired": false, "web_url": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/milestones/51"}, "emitted_at": 1674055647267} -{"stream": "project_milestones", "data": {"id": 1943704, "iid": 50, "project_id": 25157276, "title": "Project Milestone 50", "description": null, "state": "active", "created_at": "2021-03-15T15:33:16.329Z", "updated_at": "2021-03-15T15:33:16.329Z", "due_date": null, "start_date": null, "expired": false, "web_url": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/milestones/50"}, "emitted_at": 1674055647268} -{"stream": "project_milestones", "data": {"id": 1943703, "iid": 49, "project_id": 25157276, "title": "Project Milestone 49", "description": null, "state": "active", "created_at": "2021-03-15T15:33:15.960Z", "updated_at": "2021-03-15T15:33:15.960Z", "due_date": null, "start_date": null, "expired": false, "web_url": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/milestones/49"}, "emitted_at": 1674055647268} -{"stream": "project_milestones", "data": {"id": 1943702, "iid": 48, "project_id": 25157276, "title": "Project Milestone 48", "description": null, "state": "active", "created_at": "2021-03-15T15:33:15.604Z", "updated_at": "2021-03-15T15:33:15.604Z", "due_date": null, "start_date": null, "expired": false, "web_url": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/milestones/48"}, "emitted_at": 1674055647269} -{"stream": "project_milestones", "data": {"id": 1943701, "iid": 47, "project_id": 25157276, "title": "Project Milestone 47", "description": null, "state": "active", "created_at": "2021-03-15T15:33:15.232Z", "updated_at": "2021-03-15T15:33:15.232Z", "due_date": null, "start_date": null, "expired": false, "web_url": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/milestones/47"}, "emitted_at": 1674055647270} -{"stream": "project_milestones", "data": {"id": 1943700, "iid": 46, "project_id": 25157276, "title": "Project Milestone 46", "description": null, "state": "active", "created_at": "2021-03-15T15:33:14.860Z", "updated_at": "2021-03-15T15:33:14.860Z", "due_date": null, "start_date": null, "expired": false, "web_url": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/milestones/46"}, "emitted_at": 1674055647270} -{"stream": "project_milestones", "data": {"id": 1943699, "iid": 45, "project_id": 25157276, "title": "Project Milestone 45", "description": null, "state": "active", "created_at": "2021-03-15T15:33:14.450Z", "updated_at": "2021-03-15T15:33:14.450Z", "due_date": null, "start_date": null, "expired": false, "web_url": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/milestones/45"}, "emitted_at": 1674055647271} -{"stream": "project_milestones", "data": {"id": 1943698, "iid": 44, "project_id": 25157276, "title": "Project Milestone 44", "description": null, "state": "active", "created_at": "2021-03-15T15:33:14.042Z", "updated_at": "2021-03-15T15:33:14.042Z", "due_date": null, "start_date": null, "expired": false, "web_url": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/milestones/44"}, "emitted_at": 1674055647271} -{"stream": "project_milestones", "data": {"id": 1943697, "iid": 43, "project_id": 25157276, "title": "Project Milestone 43", "description": null, "state": "active", "created_at": "2021-03-15T15:33:13.668Z", "updated_at": "2021-03-15T15:33:13.668Z", "due_date": null, "start_date": null, "expired": false, "web_url": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/milestones/43"}, "emitted_at": 1674055647272} -{"stream": "project_milestones", "data": {"id": 1943696, "iid": 42, "project_id": 25157276, "title": "Project Milestone 42", "description": null, "state": "active", "created_at": "2021-03-15T15:33:13.240Z", "updated_at": "2021-03-15T15:33:13.240Z", "due_date": null, "start_date": null, "expired": false, "web_url": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/milestones/42"}, "emitted_at": 1674055647273} -{"stream": "group_milestones", "data": {"id": 1943775, "iid": 21, "group_id": 11329647, "title": "Group Milestone 21", "description": null, "state": "active", "created_at": "2021-03-15T16:01:02.125Z", "updated_at": "2021-03-15T16:01:02.125Z", "due_date": null, "start_date": null, "expired": false, "web_url": "https://gitlab.com/groups/new-group-airbute/-/milestones/21"}, "emitted_at": 1674055648934} -{"stream": "group_milestones", "data": {"id": 1943774, "iid": 20, "group_id": 11329647, "title": "Group Milestone 20", "description": null, "state": "active", "created_at": "2021-03-15T16:01:01.682Z", "updated_at": "2021-03-15T16:01:01.682Z", "due_date": null, "start_date": null, "expired": false, "web_url": "https://gitlab.com/groups/new-group-airbute/-/milestones/20"}, "emitted_at": 1674055648934} -{"stream": "group_milestones", "data": {"id": 1943773, "iid": 19, "group_id": 11329647, "title": "Group Milestone 19", "description": null, "state": "active", "created_at": "2021-03-15T16:01:01.067Z", "updated_at": "2021-03-15T16:01:01.067Z", "due_date": null, "start_date": null, "expired": false, "web_url": "https://gitlab.com/groups/new-group-airbute/-/milestones/19"}, "emitted_at": 1674055648935} -{"stream": "group_milestones", "data": {"id": 1943772, "iid": 18, "group_id": 11329647, "title": "Group Milestone 18", "description": null, "state": "active", "created_at": "2021-03-15T16:01:00.572Z", "updated_at": "2021-03-15T16:01:00.572Z", "due_date": null, "start_date": null, "expired": false, "web_url": "https://gitlab.com/groups/new-group-airbute/-/milestones/18"}, "emitted_at": 1674055648935} -{"stream": "group_milestones", "data": {"id": 1943771, "iid": 17, "group_id": 11329647, "title": "Group Milestone 17", "description": null, "state": "active", "created_at": "2021-03-15T16:01:00.136Z", "updated_at": "2021-03-15T16:01:00.136Z", "due_date": null, "start_date": null, "expired": false, "web_url": "https://gitlab.com/groups/new-group-airbute/-/milestones/17"}, "emitted_at": 1674055648935} -{"stream": "group_milestones", "data": {"id": 1943770, "iid": 16, "group_id": 11329647, "title": "Group Milestone 16", "description": null, "state": "active", "created_at": "2021-03-15T16:00:59.507Z", "updated_at": "2021-03-15T16:00:59.507Z", "due_date": null, "start_date": null, "expired": false, "web_url": "https://gitlab.com/groups/new-group-airbute/-/milestones/16"}, "emitted_at": 1674055648935} -{"stream": "group_milestones", "data": {"id": 1943769, "iid": 15, "group_id": 11329647, "title": "Group Milestone 15", "description": null, "state": "active", "created_at": "2021-03-15T16:00:59.133Z", "updated_at": "2021-03-15T16:00:59.133Z", "due_date": null, "start_date": null, "expired": false, "web_url": "https://gitlab.com/groups/new-group-airbute/-/milestones/15"}, "emitted_at": 1674055648935} -{"stream": "group_milestones", "data": {"id": 1943768, "iid": 14, "group_id": 11329647, "title": "Group Milestone 14", "description": null, "state": "active", "created_at": "2021-03-15T16:00:58.763Z", "updated_at": "2021-03-15T16:00:58.763Z", "due_date": null, "start_date": null, "expired": false, "web_url": "https://gitlab.com/groups/new-group-airbute/-/milestones/14"}, "emitted_at": 1674055648935} -{"stream": "group_milestones", "data": {"id": 1943767, "iid": 13, "group_id": 11329647, "title": "Group Milestone 13", "description": null, "state": "active", "created_at": "2021-03-15T16:00:58.315Z", "updated_at": "2021-03-15T16:00:58.315Z", "due_date": null, "start_date": null, "expired": false, "web_url": "https://gitlab.com/groups/new-group-airbute/-/milestones/13"}, "emitted_at": 1674055648935} -{"stream": "group_milestones", "data": {"id": 1943766, "iid": 12, "group_id": 11329647, "title": "Group Milestone 12", "description": null, "state": "active", "created_at": "2021-03-15T16:00:57.929Z", "updated_at": "2021-03-15T16:00:57.929Z", "due_date": null, "start_date": null, "expired": false, "web_url": "https://gitlab.com/groups/new-group-airbute/-/milestones/12"}, "emitted_at": 1674055648935} -{"stream": "project_members", "data": {"access_level": 40, "created_at": "2021-03-15T15:08:36.746Z", "created_by": {"id": 8375961, "username": "airbyte", "name": "Airbyte Team", "state": "active", "avatar_url": "https://secure.gravatar.com/avatar/0a7841feac7218131ce7b427283c24ef?s=80&d=identicon", "web_url": "https://gitlab.com/airbyte"}, "expires_at": null, "id": 8375961, "username": "airbyte", "name": "Airbyte Team", "state": "active", "avatar_url": "https://secure.gravatar.com/avatar/0a7841feac7218131ce7b427283c24ef?s=80&d=identicon", "web_url": "https://gitlab.com/airbyte", "membership_state": "active", "project_id": 25157276}, "emitted_at": 1674055652666} -{"stream": "group_members", "data": {"access_level": 50, "created_at": "2021-03-15T15:55:53.658Z", "expires_at": null, "id": 8375961, "username": "airbyte", "name": "Airbyte Team", "state": "active", "avatar_url": "https://secure.gravatar.com/avatar/0a7841feac7218131ce7b427283c24ef?s=80&d=identicon", "web_url": "https://gitlab.com/airbyte", "membership_state": "active", "group_id": 11329647}, "emitted_at": 1674055653132} -{"stream": "group_members", "data": {"access_level": 30, "created_at": "2021-03-15T15:55:53.998Z", "created_by": {"id": 8375961, "username": "airbyte", "name": "Airbyte Team", "state": "active", "avatar_url": "https://secure.gravatar.com/avatar/0a7841feac7218131ce7b427283c24ef?s=80&d=identicon", "web_url": "https://gitlab.com/airbyte"}, "expires_at": null, "id": 7904355, "username": "y.kurochkin", "name": "Yevhenii Kurochkin", "state": "active", "avatar_url": "https://secure.gravatar.com/avatar/760fcac88680c724a6b19c6bfd5b6718?s=80&d=identicon", "web_url": "https://gitlab.com/y.kurochkin", "membership_state": "active", "group_id": 11329647}, "emitted_at": 1674055653133} -{"stream": "group_members", "data": {"access_level": 50, "created_at": "2022-12-02T08:46:22.834Z", "expires_at": null, "id": 8375961, "username": "airbyte", "name": "Airbyte Team", "state": "active", "avatar_url": "https://secure.gravatar.com/avatar/0a7841feac7218131ce7b427283c24ef?s=80&d=identicon", "web_url": "https://gitlab.com/airbyte", "membership_state": "active", "group_id": 61014882}, "emitted_at": 1674055653538} -{"stream": "group_members", "data": {"access_level": 50, "created_at": "2022-12-02T08:54:42.303Z", "expires_at": null, "id": 8375961, "username": "airbyte", "name": "Airbyte Team", "state": "active", "avatar_url": "https://secure.gravatar.com/avatar/0a7841feac7218131ce7b427283c24ef?s=80&d=identicon", "web_url": "https://gitlab.com/airbyte", "membership_state": "active", "group_id": 61015181}, "emitted_at": 1674055654050} -{"stream": "group_members", "data": {"access_level": 50, "created_at": "2022-12-02T08:56:21.862Z", "expires_at": null, "id": 8375961, "username": "airbyte", "name": "Airbyte Team", "state": "active", "avatar_url": "https://secure.gravatar.com/avatar/0a7841feac7218131ce7b427283c24ef?s=80&d=identicon", "web_url": "https://gitlab.com/airbyte", "membership_state": "active", "group_id": 61015232}, "emitted_at": 1674055654459} -{"stream": "group_members", "data": {"access_level": 50, "created_at": "2022-12-02T08:56:34.266Z", "expires_at": null, "id": 8375961, "username": "airbyte", "name": "Airbyte Team", "state": "active", "avatar_url": "https://secure.gravatar.com/avatar/0a7841feac7218131ce7b427283c24ef?s=80&d=identicon", "web_url": "https://gitlab.com/airbyte", "membership_state": "active", "group_id": 61015239}, "emitted_at": 1674055654768} -{"stream": "group_members", "data": {"access_level": 50, "created_at": "2022-12-02T08:47:02.469Z", "expires_at": null, "id": 8375961, "username": "airbyte", "name": "Airbyte Team", "state": "active", "avatar_url": "https://secure.gravatar.com/avatar/0a7841feac7218131ce7b427283c24ef?s=80&d=identicon", "web_url": "https://gitlab.com/airbyte", "membership_state": "active", "group_id": 61014902}, "emitted_at": 1674055655381} -{"stream": "group_members", "data": {"access_level": 50, "created_at": "2022-12-02T08:55:27.120Z", "expires_at": null, "id": 8375961, "username": "airbyte", "name": "Airbyte Team", "state": "active", "avatar_url": "https://secure.gravatar.com/avatar/0a7841feac7218131ce7b427283c24ef?s=80&d=identicon", "web_url": "https://gitlab.com/airbyte", "membership_state": "active", "group_id": 61015202}, "emitted_at": 1674055655789} -{"stream": "group_members", "data": {"access_level": 50, "created_at": "2022-12-02T08:48:04.786Z", "expires_at": null, "id": 8375961, "username": "airbyte", "name": "Airbyte Team", "state": "active", "avatar_url": "https://secure.gravatar.com/avatar/0a7841feac7218131ce7b427283c24ef?s=80&d=identicon", "web_url": "https://gitlab.com/airbyte", "membership_state": "active", "group_id": 61014943}, "emitted_at": 1674055656200} -{"stream": "group_members", "data": {"access_level": 50, "created_at": "2022-12-02T08:45:53.544Z", "expires_at": null, "id": 8375961, "username": "airbyte", "name": "Airbyte Team", "state": "active", "avatar_url": "https://secure.gravatar.com/avatar/0a7841feac7218131ce7b427283c24ef?s=80&d=identicon", "web_url": "https://gitlab.com/airbyte", "membership_state": "active", "group_id": 61014863}, "emitted_at": 1674055656610} -{"stream": "project_labels", "data": {"id": 19116944, "name": "Label 1", "description": null, "description_html": "", "text_color": "#333333", "color": "#ffff00", "subscribed": false, "priority": null, "is_project_label": true, "project_id": 25157276}, "emitted_at": 1674055657501} -{"stream": "project_labels", "data": {"id": 19117004, "name": "Label 1", "description": null, "description_html": "", "text_color": "#FFFFFF", "color": "#008000", "subscribed": false, "priority": null, "is_project_label": false, "project_id": 25157276}, "emitted_at": 1674055657501} -{"stream": "project_labels", "data": {"id": 19116954, "name": "Label 10", "description": null, "description_html": "", "text_color": "#333333", "color": "#ff00ff", "subscribed": false, "priority": null, "is_project_label": true, "project_id": 25157276}, "emitted_at": 1674055657502} -{"stream": "project_labels", "data": {"id": 19117017, "name": "Label 10", "description": null, "description_html": "", "text_color": "#FFFFFF", "color": "#000080", "subscribed": false, "priority": null, "is_project_label": false, "project_id": 25157276}, "emitted_at": 1674055657502} -{"stream": "project_labels", "data": {"id": 19116955, "name": "Label 11", "description": null, "description_html": "", "text_color": "#FFFFFF", "color": "#808000", "subscribed": false, "priority": null, "is_project_label": true, "project_id": 25157276}, "emitted_at": 1674055657502} -{"stream": "project_labels", "data": {"id": 19117018, "name": "Label 11", "description": null, "description_html": "", "text_color": "#FFFFFF", "color": "#808080", "subscribed": false, "priority": null, "is_project_label": false, "project_id": 25157276}, "emitted_at": 1674055657502} -{"stream": "project_labels", "data": {"id": 19116956, "name": "Label 12", "description": null, "description_html": "", "text_color": "#FFFFFF", "color": "#ff0000", "subscribed": false, "priority": null, "is_project_label": true, "project_id": 25157276}, "emitted_at": 1674055657502} -{"stream": "project_labels", "data": {"id": 19117019, "name": "Label 12", "description": null, "description_html": "", "text_color": "#FFFFFF", "color": "#000000", "subscribed": false, "priority": null, "is_project_label": false, "project_id": 25157276}, "emitted_at": 1674055657502} -{"stream": "project_labels", "data": {"id": 19117020, "name": "Label 13", "description": null, "description_html": "", "text_color": "#FFFFFF", "color": "#000000", "subscribed": false, "priority": null, "is_project_label": false, "project_id": 25157276}, "emitted_at": 1674055657502} -{"stream": "project_labels", "data": {"id": 19116957, "name": "Label 13", "description": null, "description_html": "", "text_color": "#FFFFFF", "color": "#808000", "subscribed": false, "priority": null, "is_project_label": true, "project_id": 25157276}, "emitted_at": 1674055657502} -{"stream": "group_labels", "data": {"id": 19117004, "name": "Label 1", "description": null, "description_html": "", "text_color": "#FFFFFF", "color": "#008000", "subscribed": false, "group_id": 11329647}, "emitted_at": 1674055659253} -{"stream": "group_labels", "data": {"id": 19117017, "name": "Label 10", "description": null, "description_html": "", "text_color": "#FFFFFF", "color": "#000080", "subscribed": false, "group_id": 11329647}, "emitted_at": 1674055659254} -{"stream": "group_labels", "data": {"id": 19117018, "name": "Label 11", "description": null, "description_html": "", "text_color": "#FFFFFF", "color": "#808080", "subscribed": false, "group_id": 11329647}, "emitted_at": 1674055659255} -{"stream": "group_labels", "data": {"id": 19117019, "name": "Label 12", "description": null, "description_html": "", "text_color": "#FFFFFF", "color": "#000000", "subscribed": false, "group_id": 11329647}, "emitted_at": 1674055659255} -{"stream": "group_labels", "data": {"id": 19117020, "name": "Label 13", "description": null, "description_html": "", "text_color": "#FFFFFF", "color": "#000000", "subscribed": false, "group_id": 11329647}, "emitted_at": 1674055659256} -{"stream": "group_labels", "data": {"id": 19117021, "name": "Label 14", "description": null, "description_html": "", "text_color": "#FFFFFF", "color": "#808080", "subscribed": false, "group_id": 11329647}, "emitted_at": 1674055659256} -{"stream": "group_labels", "data": {"id": 19117022, "name": "Label 15", "description": null, "description_html": "", "text_color": "#FFFFFF", "color": "#0000ff", "subscribed": false, "group_id": 11329647}, "emitted_at": 1674055659257} -{"stream": "group_labels", "data": {"id": 19117023, "name": "Label 16", "description": null, "description_html": "", "text_color": "#333333", "color": "#ffffff", "subscribed": false, "group_id": 11329647}, "emitted_at": 1674055659257} -{"stream": "group_labels", "data": {"id": 19117024, "name": "Label 17", "description": null, "description_html": "", "text_color": "#FFFFFF", "color": "#008000", "subscribed": false, "group_id": 11329647}, "emitted_at": 1674055659258} -{"stream": "group_labels", "data": {"id": 19117025, "name": "Label 18", "description": null, "description_html": "", "text_color": "#333333", "color": "#ffffff", "subscribed": false, "group_id": 11329647}, "emitted_at": 1674055659258} -{"stream": "merge_requests", "data": {"id": 92594931, "iid": 3, "project_id": 25157276, "title": "add fake CI config", "description": "", "state": "merged", "created_at": "2021-03-18T12:49:13.091Z", "updated_at": "2021-03-18T12:51:06.319Z", "merge_user": {"id": 8375961, "username": "airbyte", "name": "Airbyte Team", "state": "active", "avatar_url": "https://secure.gravatar.com/avatar/0a7841feac7218131ce7b427283c24ef?s=80&d=identicon", "web_url": "https://gitlab.com/airbyte"}, "merged_at": "2021-03-18T12:51:06.470Z", "closed_at": null, "target_branch": "master", "source_branch": "ykurochkin/add-fake-CI-config", "user_notes_count": 0, "upvotes": 0, "downvotes": 0, "assignees": [], "reviewers": [], "source_project_id": 25157276, "target_project_id": 25157276, "labels": [], "draft": false, "work_in_progress": false, "merge_when_pipeline_succeeds": false, "merge_status": "can_be_merged", "detailed_merge_status": "not_open", "sha": "028c02d96f40afe9b4d1173c1d0f712dd6d07302", "merge_commit_sha": "6ad3dd49539391774db738c9e7b7d69f2d872c98", "squash_commit_sha": null, "discussion_locked": null, "should_remove_source_branch": null, "force_remove_source_branch": true, "reference": "!3", "references": {"short": "!3", "relative": "!3", "full": "new-group-airbute/new-ci-test-project!3"}, "web_url": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/merge_requests/3", "time_stats": {"time_estimate": 0, "total_time_spent": 0, "human_time_estimate": null, "human_total_time_spent": null}, "squash": false, "squash_on_merge": false, "task_completion_status": {"count": 0, "completed_count": 0}, "has_conflicts": false, "blocking_discussions_resolved": true, "approvals_before_merge": null, "author_id": 8375961, "assignee_id": null, "closed_by_id": null, "milestone_id": null, "merged_by_id": 8375961}, "emitted_at": 1675094960089} -{"stream": "merge_requests", "data": {"id": 92593913, "iid": 2, "project_id": 25157276, "title": "update readme.md", "description": "", "state": "opened", "created_at": "2021-03-18T12:42:30.200Z", "updated_at": "2021-03-18T12:42:30.200Z", "merge_user": null, "merged_at": null, "closed_at": null, "target_branch": "master", "source_branch": "ykurochkin/test-branch", "user_notes_count": 0, "upvotes": 0, "downvotes": 0, "assignees": [], "reviewers": [], "source_project_id": 25157276, "target_project_id": 25157276, "labels": [], "draft": false, "work_in_progress": false, "merge_when_pipeline_succeeds": false, "merge_status": "can_be_merged", "detailed_merge_status": "mergeable", "sha": "9b0c5cf345f0ca1a3fb3ae253e74e0616abf8129", "merge_commit_sha": null, "squash_commit_sha": null, "discussion_locked": null, "should_remove_source_branch": null, "force_remove_source_branch": true, "reference": "!2", "references": {"short": "!2", "relative": "!2", "full": "new-group-airbute/new-ci-test-project!2"}, "web_url": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/merge_requests/2", "time_stats": {"time_estimate": 0, "total_time_spent": 0, "human_time_estimate": null, "human_total_time_spent": null}, "squash": false, "squash_on_merge": false, "task_completion_status": {"count": 0, "completed_count": 0}, "has_conflicts": false, "blocking_discussions_resolved": true, "approvals_before_merge": null, "author_id": 8375961, "assignee_id": null, "closed_by_id": null, "milestone_id": null, "merged_by_id": null}, "emitted_at": 1675094960089} -{"stream": "merge_requests", "data": {"id": 92111504, "iid": 1, "project_id": 25157276, "title": "Draft: Resolve \"Fake Issue 30\"", "description": "Closes #31", "state": "opened", "created_at": "2021-03-15T16:08:05.071Z", "updated_at": "2021-03-15T16:08:05.071Z", "merge_user": null, "merged_at": null, "closed_at": null, "target_branch": "master", "source_branch": "31-fake-issue-30", "user_notes_count": 0, "upvotes": 0, "downvotes": 0, "assignees": [8375961], "reviewers": [], "source_project_id": 25157276, "target_project_id": 25157276, "labels": ["bug"], "draft": true, "work_in_progress": true, "merge_when_pipeline_succeeds": false, "merge_status": "cannot_be_merged", "detailed_merge_status": "draft_status", "sha": "2831d897ba0214f8d3168647e8ad4232b83987ef", "merge_commit_sha": null, "squash_commit_sha": null, "discussion_locked": null, "should_remove_source_branch": null, "force_remove_source_branch": true, "reference": "!1", "references": {"short": "!1", "relative": "!1", "full": "new-group-airbute/new-ci-test-project!1"}, "web_url": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/merge_requests/1", "time_stats": {"time_estimate": 0, "total_time_spent": 0, "human_time_estimate": null, "human_total_time_spent": null}, "squash": false, "squash_on_merge": false, "task_completion_status": {"count": 0, "completed_count": 0}, "has_conflicts": true, "blocking_discussions_resolved": true, "approvals_before_merge": null, "author_id": 8375961, "assignee_id": 8375961, "closed_by_id": null, "milestone_id": null, "merged_by_id": null}, "emitted_at": 1675094960090} -{"stream": "merge_request_commits", "data": {"id": 92594931, "iid": 3, "project_id": 25157276, "title": "add fake CI config", "description": "", "state": "merged", "created_at": "2021-03-18T12:49:13.091Z", "updated_at": "2021-03-18T12:51:06.319Z", "merged_by": {"id": 8375961, "username": "airbyte", "name": "Airbyte Team", "state": "active", "avatar_url": "https://secure.gravatar.com/avatar/0a7841feac7218131ce7b427283c24ef?s=80&d=identicon", "web_url": "https://gitlab.com/airbyte"}, "merge_user": {"id": 8375961, "username": "airbyte", "name": "Airbyte Team", "state": "active", "avatar_url": "https://secure.gravatar.com/avatar/0a7841feac7218131ce7b427283c24ef?s=80&d=identicon", "web_url": "https://gitlab.com/airbyte"}, "merged_at": "2021-03-18T12:51:06.470Z", "closed_by": null, "closed_at": null, "target_branch": "master", "source_branch": "ykurochkin/add-fake-CI-config", "user_notes_count": 0, "upvotes": 0, "downvotes": 0, "author": {"id": 8375961, "username": "airbyte", "name": "Airbyte Team", "state": "active", "avatar_url": "https://secure.gravatar.com/avatar/0a7841feac7218131ce7b427283c24ef?s=80&d=identicon", "web_url": "https://gitlab.com/airbyte"}, "assignees": [], "assignee": null, "reviewers": [], "source_project_id": 25157276, "target_project_id": 25157276, "labels": [], "draft": false, "work_in_progress": false, "milestone": null, "merge_when_pipeline_succeeds": false, "merge_status": "can_be_merged", "detailed_merge_status": "not_open", "sha": "028c02d96f40afe9b4d1173c1d0f712dd6d07302", "merge_commit_sha": "6ad3dd49539391774db738c9e7b7d69f2d872c98", "squash_commit_sha": null, "discussion_locked": null, "should_remove_source_branch": null, "force_remove_source_branch": true, "reference": "!3", "references": {"short": "!3", "relative": "!3", "full": "new-group-airbute/new-ci-test-project!3"}, "web_url": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/merge_requests/3", "time_stats": {"time_estimate": 0, "total_time_spent": 0, "human_time_estimate": null, "human_total_time_spent": null}, "squash": false, "squash_on_merge": false, "task_completion_status": {"count": 0, "completed_count": 0}, "has_conflicts": false, "blocking_discussions_resolved": true, "approvals_before_merge": null, "subscribed": true, "changes_count": "1", "latest_build_started_at": null, "latest_build_finished_at": null, "first_deployed_to_production_at": null, "pipeline": null, "head_pipeline": {"id": 272631271, "iid": 1, "project_id": 25157276, "sha": "028c02d96f40afe9b4d1173c1d0f712dd6d07302", "ref": "ykurochkin/add-fake-CI-config", "status": "failed", "source": "push", "created_at": "2021-03-18T12:48:49.174Z", "updated_at": "2021-03-18T12:49:38.092Z", "web_url": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/pipelines/272631271", "before_sha": "0000000000000000000000000000000000000000", "tag": false, "yaml_errors": null, "user": {"id": 8375961, "username": "airbyte", "name": "Airbyte Team", "state": "active", "avatar_url": "https://secure.gravatar.com/avatar/0a7841feac7218131ce7b427283c24ef?s=80&d=identicon", "web_url": "https://gitlab.com/airbyte"}, "started_at": "2021-03-18T12:48:50.166Z", "finished_at": "2021-03-18T12:49:38.084Z", "committed_at": null, "duration": 47, "queued_duration": null, "coverage": null, "detailed_status": {"icon": "status_failed", "text": "failed", "label": "failed", "group": "failed", "tooltip": "failed", "has_details": true, "details_path": "/new-group-airbute/new-ci-test-project/-/pipelines/272631271", "illustration": null, "favicon": "/assets/ci_favicons/favicon_status_failed-41304d7f7e3828808b0c26771f0309e55296819a9beea3ea9fbf6689d9857c12.png"}}, "diff_refs": {"base_sha": "2831d897ba0214f8d3168647e8ad4232b83987ef", "head_sha": "028c02d96f40afe9b4d1173c1d0f712dd6d07302", "start_sha": "2831d897ba0214f8d3168647e8ad4232b83987ef"}, "merge_error": null, "first_contribution": false, "user": {"can_merge": true}, "merge_request_iid": 3}, "emitted_at": 1675095425561} -{"stream": "merge_request_commits", "data": {"id": 92593913, "iid": 2, "project_id": 25157276, "title": "update readme.md", "description": "", "state": "opened", "created_at": "2021-03-18T12:42:30.200Z", "updated_at": "2021-03-18T12:42:30.200Z", "merged_by": null, "merge_user": null, "merged_at": null, "closed_by": null, "closed_at": null, "target_branch": "master", "source_branch": "ykurochkin/test-branch", "user_notes_count": 0, "upvotes": 0, "downvotes": 0, "author": {"id": 8375961, "username": "airbyte", "name": "Airbyte Team", "state": "active", "avatar_url": "https://secure.gravatar.com/avatar/0a7841feac7218131ce7b427283c24ef?s=80&d=identicon", "web_url": "https://gitlab.com/airbyte"}, "assignees": [], "assignee": null, "reviewers": [], "source_project_id": 25157276, "target_project_id": 25157276, "labels": [], "draft": false, "work_in_progress": false, "milestone": null, "merge_when_pipeline_succeeds": false, "merge_status": "can_be_merged", "detailed_merge_status": "mergeable", "sha": "9b0c5cf345f0ca1a3fb3ae253e74e0616abf8129", "merge_commit_sha": null, "squash_commit_sha": null, "discussion_locked": null, "should_remove_source_branch": null, "force_remove_source_branch": true, "reference": "!2", "references": {"short": "!2", "relative": "!2", "full": "new-group-airbute/new-ci-test-project!2"}, "web_url": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/merge_requests/2", "time_stats": {"time_estimate": 0, "total_time_spent": 0, "human_time_estimate": null, "human_total_time_spent": null}, "squash": false, "squash_on_merge": false, "task_completion_status": {"count": 0, "completed_count": 0}, "has_conflicts": false, "blocking_discussions_resolved": true, "approvals_before_merge": null, "subscribed": true, "changes_count": "1", "latest_build_started_at": null, "latest_build_finished_at": null, "first_deployed_to_production_at": null, "pipeline": null, "head_pipeline": null, "diff_refs": {"base_sha": "2831d897ba0214f8d3168647e8ad4232b83987ef", "head_sha": "9b0c5cf345f0ca1a3fb3ae253e74e0616abf8129", "start_sha": "2831d897ba0214f8d3168647e8ad4232b83987ef"}, "merge_error": null, "first_contribution": false, "user": {"can_merge": true}, "merge_request_iid": 2}, "emitted_at": 1675095426197} -{"stream": "merge_request_commits", "data": {"id": 92111504, "iid": 1, "project_id": 25157276, "title": "Draft: Resolve \"Fake Issue 30\"", "description": "Closes #31", "state": "opened", "created_at": "2021-03-15T16:08:05.071Z", "updated_at": "2021-03-15T16:08:05.071Z", "merged_by": null, "merge_user": null, "merged_at": null, "closed_by": null, "closed_at": null, "target_branch": "master", "source_branch": "31-fake-issue-30", "user_notes_count": 0, "upvotes": 0, "downvotes": 0, "author": {"id": 8375961, "username": "airbyte", "name": "Airbyte Team", "state": "active", "avatar_url": "https://secure.gravatar.com/avatar/0a7841feac7218131ce7b427283c24ef?s=80&d=identicon", "web_url": "https://gitlab.com/airbyte"}, "assignees": [{"id": 8375961, "username": "airbyte", "name": "Airbyte Team", "state": "active", "avatar_url": "https://secure.gravatar.com/avatar/0a7841feac7218131ce7b427283c24ef?s=80&d=identicon", "web_url": "https://gitlab.com/airbyte"}], "assignee": {"id": 8375961, "username": "airbyte", "name": "Airbyte Team", "state": "active", "avatar_url": "https://secure.gravatar.com/avatar/0a7841feac7218131ce7b427283c24ef?s=80&d=identicon", "web_url": "https://gitlab.com/airbyte"}, "reviewers": [], "source_project_id": 25157276, "target_project_id": 25157276, "labels": ["bug"], "draft": true, "work_in_progress": true, "milestone": null, "merge_when_pipeline_succeeds": false, "merge_status": "cannot_be_merged", "detailed_merge_status": "draft_status", "sha": "2831d897ba0214f8d3168647e8ad4232b83987ef", "merge_commit_sha": null, "squash_commit_sha": null, "discussion_locked": null, "should_remove_source_branch": null, "force_remove_source_branch": true, "reference": "!1", "references": {"short": "!1", "relative": "!1", "full": "new-group-airbute/new-ci-test-project!1"}, "web_url": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/merge_requests/1", "time_stats": {"time_estimate": 0, "total_time_spent": 0, "human_time_estimate": null, "human_total_time_spent": null}, "squash": false, "squash_on_merge": false, "task_completion_status": {"count": 0, "completed_count": 0}, "has_conflicts": true, "blocking_discussions_resolved": true, "approvals_before_merge": null, "subscribed": true, "changes_count": null, "latest_build_started_at": null, "latest_build_finished_at": null, "first_deployed_to_production_at": null, "pipeline": null, "head_pipeline": null, "diff_refs": {"base_sha": "2831d897ba0214f8d3168647e8ad4232b83987ef", "head_sha": "2831d897ba0214f8d3168647e8ad4232b83987ef", "start_sha": "2831d897ba0214f8d3168647e8ad4232b83987ef"}, "merge_error": null, "first_contribution": false, "user": {"can_merge": true}, "merge_request_iid": 1}, "emitted_at": 1675095426681} -{"stream": "releases", "data": {"name": "First release", "tag_name": "fake-tag-6", "description": "Test Release", "created_at": "2021-03-18T12:44:12.497Z", "released_at": "2021-03-18T12:44:12.497Z", "upcoming_release": false, "milestones": [1943704], "commit_path": "/new-group-airbute/new-ci-test-project/-/commit/2831d897ba0214f8d3168647e8ad4232b83987ef", "tag_path": "/new-group-airbute/new-ci-test-project/-/tags/fake-tag-6", "assets": {"count": 4, "sources": [{"format": "zip", "url": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/archive/fake-tag-6/new-ci-test-project-fake-tag-6.zip"}, {"format": "tar.gz", "url": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/archive/fake-tag-6/new-ci-test-project-fake-tag-6.tar.gz"}, {"format": "tar.bz2", "url": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/archive/fake-tag-6/new-ci-test-project-fake-tag-6.tar.bz2"}, {"format": "tar", "url": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/archive/fake-tag-6/new-ci-test-project-fake-tag-6.tar"}], "links": []}, "evidences": [{"sha": "a616fdca9312ca5aa451bc1060ce91a672fd24cc0f4d", "filepath": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/releases/fake-tag-6/evidences/855895.json", "collected_at": "2021-03-18T12:44:12.650Z"}], "_links": {"closed_issues_url": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/issues?release_tag=fake-tag-6&scope=all&state=closed", "closed_merge_requests_url": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/merge_requests?release_tag=fake-tag-6&scope=all&state=closed", "edit_url": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/releases/fake-tag-6/edit", "merged_merge_requests_url": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/merge_requests?release_tag=fake-tag-6&scope=all&state=merged", "opened_issues_url": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/issues?release_tag=fake-tag-6&scope=all&state=opened", "opened_merge_requests_url": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/merge_requests?release_tag=fake-tag-6&scope=all&state=opened", "self": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/releases/fake-tag-6"}, "author_id": 8375961, "commit_id": "2831d897ba0214f8d3168647e8ad4232b83987ef", "project_id": 25157276}, "emitted_at": 1675095887264} -{"stream": "tags", "data": {"name": "fake-tag-1", "message": "", "target": "2831d897ba0214f8d3168647e8ad4232b83987ef", "release": null, "protected": false, "commit_id": "2831d897ba0214f8d3168647e8ad4232b83987ef", "project_id": 25157276}, "emitted_at": 1674055671066} -{"stream": "tags", "data": {"name": "fake-tag-10", "message": "", "target": "2831d897ba0214f8d3168647e8ad4232b83987ef", "release": null, "protected": false, "commit_id": "2831d897ba0214f8d3168647e8ad4232b83987ef", "project_id": 25157276}, "emitted_at": 1674055671066} -{"stream": "tags", "data": {"name": "fake-tag-11", "message": "", "target": "2831d897ba0214f8d3168647e8ad4232b83987ef", "release": null, "protected": false, "commit_id": "2831d897ba0214f8d3168647e8ad4232b83987ef", "project_id": 25157276}, "emitted_at": 1674055671067} -{"stream": "tags", "data": {"name": "fake-tag-12", "message": "", "target": "2831d897ba0214f8d3168647e8ad4232b83987ef", "release": null, "protected": false, "commit_id": "2831d897ba0214f8d3168647e8ad4232b83987ef", "project_id": 25157276}, "emitted_at": 1674055671068} -{"stream": "tags", "data": {"name": "fake-tag-13", "message": "", "target": "2831d897ba0214f8d3168647e8ad4232b83987ef", "release": null, "protected": false, "commit_id": "2831d897ba0214f8d3168647e8ad4232b83987ef", "project_id": 25157276}, "emitted_at": 1674055671068} -{"stream": "tags", "data": {"name": "fake-tag-14", "message": "", "target": "2831d897ba0214f8d3168647e8ad4232b83987ef", "release": null, "protected": false, "commit_id": "2831d897ba0214f8d3168647e8ad4232b83987ef", "project_id": 25157276}, "emitted_at": 1674055671069} -{"stream": "tags", "data": {"name": "fake-tag-15", "message": "", "target": "2831d897ba0214f8d3168647e8ad4232b83987ef", "release": null, "protected": false, "commit_id": "2831d897ba0214f8d3168647e8ad4232b83987ef", "project_id": 25157276}, "emitted_at": 1674055671069} -{"stream": "tags", "data": {"name": "fake-tag-16", "message": "", "target": "2831d897ba0214f8d3168647e8ad4232b83987ef", "release": null, "protected": false, "commit_id": "2831d897ba0214f8d3168647e8ad4232b83987ef", "project_id": 25157276}, "emitted_at": 1674055671070} -{"stream": "tags", "data": {"name": "fake-tag-17", "message": "", "target": "2831d897ba0214f8d3168647e8ad4232b83987ef", "release": null, "protected": false, "commit_id": "2831d897ba0214f8d3168647e8ad4232b83987ef", "project_id": 25157276}, "emitted_at": 1674055671070} -{"stream": "tags", "data": {"name": "fake-tag-18", "message": "", "target": "2831d897ba0214f8d3168647e8ad4232b83987ef", "release": null, "protected": false, "commit_id": "2831d897ba0214f8d3168647e8ad4232b83987ef", "project_id": 25157276}, "emitted_at": 1674055671070} -{"stream": "pipelines", "data": {"id": 272632767, "iid": 2, "project_id": 25157276, "sha": "6ad3dd49539391774db738c9e7b7d69f2d872c98", "ref": "master", "status": "failed", "source": "push", "created_at": "2021-03-18T12:51:06.262Z", "updated_at": "2021-03-18T12:51:52.007Z", "web_url": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/pipelines/272632767"}, "emitted_at": 1674055671865} -{"stream": "pipelines", "data": {"id": 272631271, "iid": 1, "project_id": 25157276, "sha": "028c02d96f40afe9b4d1173c1d0f712dd6d07302", "ref": "ykurochkin/add-fake-CI-config", "status": "failed", "source": "push", "created_at": "2021-03-18T12:48:49.174Z", "updated_at": "2021-03-18T12:49:38.092Z", "web_url": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/pipelines/272631271"}, "emitted_at": 1674055671866} -{"stream": "pipelines_extended", "data": {"id": 272632767, "iid": 2, "project_id": 25157276, "sha": "6ad3dd49539391774db738c9e7b7d69f2d872c98", "ref": "master", "status": "failed", "source": "push", "created_at": "2021-03-18T12:51:06.262Z", "updated_at": "2021-03-18T12:51:52.007Z", "web_url": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/pipelines/272632767", "before_sha": "2831d897ba0214f8d3168647e8ad4232b83987ef", "tag": false, "yaml_errors": null, "user": {"id": 8375961, "username": "airbyte", "name": "Airbyte Team", "state": "active", "avatar_url": "https://secure.gravatar.com/avatar/0a7841feac7218131ce7b427283c24ef?s=80&d=identicon", "web_url": "https://gitlab.com/airbyte"}, "started_at": "2021-03-18T12:51:07.816Z", "finished_at": "2021-03-18T12:51:52.000Z", "committed_at": null, "duration": 43, "queued_duration": 1, "coverage": null, "detailed_status": {"icon": "status_failed", "text": "failed", "label": "failed", "group": "failed", "tooltip": "failed", "has_details": false, "details_path": "/new-group-airbute/new-ci-test-project/-/pipelines/272632767", "illustration": null, "favicon": "/assets/ci_favicons/favicon_status_failed-41304d7f7e3828808b0c26771f0309e55296819a9beea3ea9fbf6689d9857c12.png"}}, "emitted_at": 1674055672683} -{"stream": "pipelines_extended", "data": {"id": 272631271, "iid": 1, "project_id": 25157276, "sha": "028c02d96f40afe9b4d1173c1d0f712dd6d07302", "ref": "ykurochkin/add-fake-CI-config", "status": "failed", "source": "push", "created_at": "2021-03-18T12:48:49.174Z", "updated_at": "2021-03-18T12:49:38.092Z", "web_url": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/pipelines/272631271", "before_sha": "0000000000000000000000000000000000000000", "tag": false, "yaml_errors": null, "user": {"id": 8375961, "username": "airbyte", "name": "Airbyte Team", "state": "active", "avatar_url": "https://secure.gravatar.com/avatar/0a7841feac7218131ce7b427283c24ef?s=80&d=identicon", "web_url": "https://gitlab.com/airbyte"}, "started_at": "2021-03-18T12:48:50.166Z", "finished_at": "2021-03-18T12:49:38.084Z", "committed_at": null, "duration": 47, "queued_duration": null, "coverage": null, "detailed_status": {"icon": "status_failed", "text": "failed", "label": "failed", "group": "failed", "tooltip": "failed", "has_details": false, "details_path": "/new-group-airbute/new-ci-test-project/-/pipelines/272631271", "illustration": null, "favicon": "/assets/ci_favicons/favicon_status_failed-41304d7f7e3828808b0c26771f0309e55296819a9beea3ea9fbf6689d9857c12.png"}}, "emitted_at": 1674055673094} -{"stream": "users", "data": {"id": 7904355, "username": "y.kurochkin", "name": "Yevhenii Kurochkin", "state": "active", "avatar_url": "https://secure.gravatar.com/avatar/760fcac88680c724a6b19c6bfd5b6718?s=80&d=identicon", "web_url": "https://gitlab.com/y.kurochkin"}, "emitted_at": 1674055673713} -{"stream": "users", "data": {"id": 8375961, "username": "airbyte", "name": "Airbyte Team", "state": "active", "avatar_url": "https://secure.gravatar.com/avatar/0a7841feac7218131ce7b427283c24ef?s=80&d=identicon", "web_url": "https://gitlab.com/airbyte"}, "emitted_at": 1674055673713} +{"stream": "groups", "data": {"id": 11329647, "web_url": "https://gitlab.com/groups/new-group-airbute", "name": "New Group Airbute", "path": "new-group-airbute", "description": "", "visibility": "public", "share_with_group_lock": false, "require_two_factor_authentication": false, "two_factor_grace_period": 48, "project_creation_level": "developer", "auto_devops_enabled": null, "subgroup_creation_level": "maintainer", "emails_disabled": null, "mentions_disabled": null, "lfs_enabled": true, "default_branch_protection": 2, "avatar_url": null, "request_access_enabled": true, "full_name": "New Group Airbute", "full_path": "new-group-airbute", "created_at": "2021-03-15T15:55:53.613Z", "parent_id": null, "ldap_cn": null, "ldap_access": null, "wiki_access_level": "enabled", "shared_with_groups": [], "runners_token": "GR1348941-PhosPap-Sf1UxL1g6m4", "prevent_sharing_groups_outside_hierarchy": false, "shared_projects": [], "shared_runners_minutes_limit": null, "extra_shared_runners_minutes_limit": null, "prevent_forking_outside_group": null, "membership_lock": false, "projects": [{"id": 25157276, "path_with_namespace": "new-group-airbute/new-ci-test-project"}]}, "emitted_at": 1682502999681} +{"stream": "groups", "data": {"id": 61014882, "web_url": "https://gitlab.com/groups/new-group-airbute/test-subgroup-airbyte/test-private-sg", "name": "Test Private SG", "path": "test-private-sg", "description": "", "visibility": "private", "share_with_group_lock": false, "require_two_factor_authentication": false, "two_factor_grace_period": 48, "project_creation_level": "developer", "auto_devops_enabled": null, "subgroup_creation_level": "maintainer", "emails_disabled": null, "mentions_disabled": null, "lfs_enabled": true, "default_branch_protection": 2, "avatar_url": null, "request_access_enabled": true, "full_name": "New Group Airbute / Test Subgroup Airbyte / Test Private SG", "full_path": "new-group-airbute/test-subgroup-airbyte/test-private-sg", "created_at": "2022-12-02T08:46:22.648Z", "parent_id": 61014863, "ldap_cn": null, "ldap_access": null, "wiki_access_level": "enabled", "shared_with_groups": [], "runners_token": "GR1348941bjUaJQy2zzar-JmNBjfq", "shared_projects": [], "shared_runners_minutes_limit": null, "extra_shared_runners_minutes_limit": null, "prevent_forking_outside_group": null, "membership_lock": false, "projects": []}, "emitted_at": 1682503000105} +{"stream": "groups", "data": {"id": 61015181, "web_url": "https://gitlab.com/groups/new-group-airbute/test-public-sg/test-sg-public-2/test-private-subsubg-1", "name": "Test Private SubSubG 1", "path": "test-private-subsubg-1", "description": "", "visibility": "private", "share_with_group_lock": false, "require_two_factor_authentication": false, "two_factor_grace_period": 48, "project_creation_level": "developer", "auto_devops_enabled": null, "subgroup_creation_level": "maintainer", "emails_disabled": null, "mentions_disabled": null, "lfs_enabled": true, "default_branch_protection": 2, "avatar_url": null, "request_access_enabled": true, "full_name": "New Group Airbute / Test Public SG / Test SG Public 2 / Test Private SubSubG 1", "full_path": "new-group-airbute/test-public-sg/test-sg-public-2/test-private-subsubg-1", "created_at": "2022-12-02T08:54:42.252Z", "parent_id": 61014943, "ldap_cn": null, "ldap_access": null, "wiki_access_level": "enabled", "shared_with_groups": [], "runners_token": "GR1348941x8xQf6K-UvnnyJ-bcut4", "shared_projects": [], "shared_runners_minutes_limit": null, "extra_shared_runners_minutes_limit": null, "prevent_forking_outside_group": null, "membership_lock": false, "projects": [{"id": 41551658, "path_with_namespace": "new-group-airbute/test-public-sg/test-sg-public-2/test-private-subsubg-1/test_project_in_nested_subgroup"}]}, "emitted_at": 1682503000477} +{"stream": "groups", "data": {"id": 61015232, "web_url": "https://gitlab.com/groups/new-group-airbute/test-subgroup-airbyte/test-private-sg/test-private-subsubg-2", "name": "Test Private SubSubG 2", "path": "test-private-subsubg-2", "description": "", "visibility": "private", "share_with_group_lock": false, "require_two_factor_authentication": false, "two_factor_grace_period": 48, "project_creation_level": "developer", "auto_devops_enabled": null, "subgroup_creation_level": "maintainer", "emails_disabled": null, "mentions_disabled": null, "lfs_enabled": true, "default_branch_protection": 2, "avatar_url": null, "request_access_enabled": true, "full_name": "New Group Airbute / Test Subgroup Airbyte / Test Private SG / Test Private SubSubG 2", "full_path": "new-group-airbute/test-subgroup-airbyte/test-private-sg/test-private-subsubg-2", "created_at": "2022-12-02T08:56:21.783Z", "parent_id": 61014882, "ldap_cn": null, "ldap_access": null, "wiki_access_level": "enabled", "shared_with_groups": [], "runners_token": "GR1348941bnTmxzY-5zek69yJ7s4r", "shared_projects": [], "shared_runners_minutes_limit": null, "extra_shared_runners_minutes_limit": null, "prevent_forking_outside_group": null, "membership_lock": false, "projects": []}, "emitted_at": 1682503000853} +{"stream": "groups", "data": {"id": 61015239, "web_url": "https://gitlab.com/groups/new-group-airbute/test-subgroup-airbyte/test-private-sg/test-private-subsubg-2/test-private-subsubg-3", "name": "Test Private SubSubG 3", "path": "test-private-subsubg-3", "description": "", "visibility": "private", "share_with_group_lock": false, "require_two_factor_authentication": false, "two_factor_grace_period": 48, "project_creation_level": "developer", "auto_devops_enabled": null, "subgroup_creation_level": "maintainer", "emails_disabled": null, "mentions_disabled": null, "lfs_enabled": true, "default_branch_protection": 2, "avatar_url": null, "request_access_enabled": true, "full_name": "New Group Airbute / Test Subgroup Airbyte / Test Private SG / Test Private SubSubG 2 / Test Private SubSubG 3", "full_path": "new-group-airbute/test-subgroup-airbyte/test-private-sg/test-private-subsubg-2/test-private-subsubg-3", "created_at": "2022-12-02T08:56:34.202Z", "parent_id": 61015232, "ldap_cn": null, "ldap_access": null, "wiki_access_level": "enabled", "shared_with_groups": [], "runners_token": "GR1348941fxQ648-7Mt4f2K11VUwm", "shared_projects": [], "shared_runners_minutes_limit": null, "extra_shared_runners_minutes_limit": null, "prevent_forking_outside_group": null, "membership_lock": false, "projects": []}, "emitted_at": 1682503001167} +{"stream": "groups", "data": {"id": 61014902, "web_url": "https://gitlab.com/groups/new-group-airbute/test-public-sg", "name": "Test Public SG", "path": "test-public-sg", "description": "", "visibility": "public", "share_with_group_lock": false, "require_two_factor_authentication": false, "two_factor_grace_period": 48, "project_creation_level": "developer", "auto_devops_enabled": null, "subgroup_creation_level": "maintainer", "emails_disabled": null, "mentions_disabled": null, "lfs_enabled": true, "default_branch_protection": 2, "avatar_url": null, "request_access_enabled": true, "full_name": "New Group Airbute / Test Public SG", "full_path": "new-group-airbute/test-public-sg", "created_at": "2022-12-02T08:47:02.412Z", "parent_id": 11329647, "ldap_cn": null, "ldap_access": null, "wiki_access_level": "enabled", "shared_with_groups": [], "runners_token": "GR1348941iDo59yBXTTUMQUQztr_x", "shared_projects": [], "shared_runners_minutes_limit": null, "extra_shared_runners_minutes_limit": null, "prevent_forking_outside_group": null, "membership_lock": false, "projects": [{"id": 41541906, "path_with_namespace": "new-group-airbute/test-public-sg/test-public-project-1"}]}, "emitted_at": 1682503001846} +{"stream": "groups", "data": {"id": 61015202, "web_url": "https://gitlab.com/groups/new-group-airbute/test-public-sg/test-sg-public-2/test-public-subsubg-1", "name": "Test Public SubSubG 1", "path": "test-public-subsubg-1", "description": "", "visibility": "public", "share_with_group_lock": false, "require_two_factor_authentication": false, "two_factor_grace_period": 48, "project_creation_level": "developer", "auto_devops_enabled": null, "subgroup_creation_level": "maintainer", "emails_disabled": null, "mentions_disabled": null, "lfs_enabled": true, "default_branch_protection": 2, "avatar_url": null, "request_access_enabled": true, "full_name": "New Group Airbute / Test Public SG / Test SG Public 2 / Test Public SubSubG 1", "full_path": "new-group-airbute/test-public-sg/test-sg-public-2/test-public-subsubg-1", "created_at": "2022-12-02T08:55:27.046Z", "parent_id": 61014943, "ldap_cn": null, "ldap_access": null, "wiki_access_level": "enabled", "shared_with_groups": [], "runners_token": "GR1348941K9JsRDnw2J5ZQxgCDr6d", "shared_projects": [], "shared_runners_minutes_limit": null, "extra_shared_runners_minutes_limit": null, "prevent_forking_outside_group": null, "membership_lock": false, "projects": []}, "emitted_at": 1682503002173} +{"stream": "groups", "data": {"id": 61014943, "web_url": "https://gitlab.com/groups/new-group-airbute/test-public-sg/test-sg-public-2", "name": "Test SG Public 2", "path": "test-sg-public-2", "description": "", "visibility": "public", "share_with_group_lock": false, "require_two_factor_authentication": false, "two_factor_grace_period": 48, "project_creation_level": "developer", "auto_devops_enabled": null, "subgroup_creation_level": "maintainer", "emails_disabled": null, "mentions_disabled": null, "lfs_enabled": true, "default_branch_protection": 2, "avatar_url": null, "request_access_enabled": true, "full_name": "New Group Airbute / Test Public SG / Test SG Public 2", "full_path": "new-group-airbute/test-public-sg/test-sg-public-2", "created_at": "2022-12-02T08:48:04.727Z", "parent_id": 61014902, "ldap_cn": null, "ldap_access": null, "wiki_access_level": "enabled", "shared_with_groups": [], "runners_token": "GR1348941eGbxua89EPU8uu4snVuj", "shared_projects": [], "shared_runners_minutes_limit": null, "extra_shared_runners_minutes_limit": null, "prevent_forking_outside_group": null, "membership_lock": false, "projects": [{"id": 41541858, "path_with_namespace": "new-group-airbute/test-public-sg/test-sg-public-2/test-project-1"}]}, "emitted_at": 1682503002561} +{"stream": "groups", "data": {"id": 61014863, "web_url": "https://gitlab.com/groups/new-group-airbute/test-subgroup-airbyte", "name": "Test Subgroup Airbyte", "path": "test-subgroup-airbyte", "description": "", "visibility": "private", "share_with_group_lock": false, "require_two_factor_authentication": false, "two_factor_grace_period": 48, "project_creation_level": "developer", "auto_devops_enabled": null, "subgroup_creation_level": "maintainer", "emails_disabled": null, "mentions_disabled": null, "lfs_enabled": true, "default_branch_protection": 2, "avatar_url": null, "request_access_enabled": true, "full_name": "New Group Airbute / Test Subgroup Airbyte", "full_path": "new-group-airbute/test-subgroup-airbyte", "created_at": "2022-12-02T08:45:53.479Z", "parent_id": 11329647, "ldap_cn": null, "ldap_access": null, "wiki_access_level": "enabled", "shared_with_groups": [], "runners_token": "GR1348941yL2Jtfwss88thzmUPZv5", "shared_projects": [], "shared_runners_minutes_limit": null, "extra_shared_runners_minutes_limit": null, "prevent_forking_outside_group": null, "membership_lock": false, "projects": [{"id": 41541892, "path_with_namespace": "new-group-airbute/test-subgroup-airbyte/test-project-2"}]}, "emitted_at": 1682503003074} +{"stream": "projects", "data": {"id": 25157276, "description": "", "name": "New CI Test Project ", "name_with_namespace": "New Group Airbute / New CI Test Project ", "path": "new-ci-test-project", "path_with_namespace": "new-group-airbute/new-ci-test-project", "created_at": "2021-03-15T15:08:36.498Z", "default_branch": "master", "tag_list": [], "topics": [], "ssh_url_to_repo": "git@gitlab.com:new-group-airbute/new-ci-test-project.git", "http_url_to_repo": "https://gitlab.com/new-group-airbute/new-ci-test-project.git", "web_url": "https://gitlab.com/new-group-airbute/new-ci-test-project", "readme_url": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/blob/master/README.md", "forks_count": 0, "avatar_url": null, "star_count": 0, "last_activity_at": "2022-12-13T09:39:47.235Z", "namespace": {"id": 11329647, "name": "New Group Airbute", "path": "new-group-airbute", "kind": "group", "full_path": "new-group-airbute", "parent_id": null, "avatar_url": null, "web_url": "https://gitlab.com/groups/new-group-airbute"}, "container_registry_image_prefix": "registry.gitlab.com/new-group-airbute/new-ci-test-project", "_links": {"self": "https://gitlab.com/api/v4/projects/25157276", "issues": "https://gitlab.com/api/v4/projects/25157276/issues", "merge_requests": "https://gitlab.com/api/v4/projects/25157276/merge_requests", "repo_branches": "https://gitlab.com/api/v4/projects/25157276/repository/branches", "labels": "https://gitlab.com/api/v4/projects/25157276/labels", "events": "https://gitlab.com/api/v4/projects/25157276/events", "members": "https://gitlab.com/api/v4/projects/25157276/members", "cluster_agents": "https://gitlab.com/api/v4/projects/25157276/cluster_agents"}, "packages_enabled": true, "empty_repo": false, "archived": false, "visibility": "private", "resolve_outdated_diff_discussions": false, "container_expiration_policy": {"cadence": "1d", "enabled": false, "keep_n": 10, "older_than": "90d", "name_regex": ".*", "name_regex_keep": null, "next_run_at": "2021-03-16T15:08:36.518Z"}, "issues_enabled": true, "merge_requests_enabled": true, "wiki_enabled": true, "jobs_enabled": true, "snippets_enabled": true, "container_registry_enabled": true, "service_desk_enabled": true, "service_desk_address": "contact-project+new-group-airbute-new-ci-test-project-25157276-issue-@incoming.gitlab.com", "can_create_merge_request_in": true, "issues_access_level": "enabled", "repository_access_level": "enabled", "merge_requests_access_level": "enabled", "forking_access_level": "enabled", "wiki_access_level": "enabled", "builds_access_level": "enabled", "snippets_access_level": "enabled", "pages_access_level": "private", "analytics_access_level": "enabled", "container_registry_access_level": "enabled", "security_and_compliance_access_level": "private", "releases_access_level": "enabled", "environments_access_level": "enabled", "feature_flags_access_level": "enabled", "infrastructure_access_level": "enabled", "monitor_access_level": "enabled", "emails_disabled": null, "shared_runners_enabled": true, "lfs_enabled": true, "creator_id": 8375961, "import_url": null, "import_type": null, "import_status": "none", "import_error": null, "open_issues_count": 31, "ci_default_git_depth": 50, "ci_forward_deployment_enabled": true, "ci_job_token_scope_enabled": false, "ci_separated_caches": true, "ci_opt_in_jwt": false, "ci_allow_fork_pipelines_to_run_in_parent_project": true, "build_git_strategy": "fetch", "keep_latest_artifact": true, "restrict_user_defined_variables": false, "runners_token": "GR1348941eMJgWDU69xyyshaNsaTZ", "runner_token_expiration_interval": null, "group_runners_enabled": true, "auto_cancel_pending_pipelines": "enabled", "build_timeout": 3600, "auto_devops_enabled": false, "auto_devops_deploy_strategy": "continuous", "ci_config_path": "", "public_jobs": true, "shared_with_groups": [], "only_allow_merge_if_pipeline_succeeds": false, "allow_merge_on_skipped_pipeline": null, "request_access_enabled": true, "only_allow_merge_if_all_discussions_are_resolved": false, "remove_source_branch_after_merge": true, "printing_merge_request_link_enabled": true, "merge_method": "merge", "squash_option": "default_off", "enforce_auth_checks_on_uploads": true, "suggestion_commit_message": null, "merge_commit_template": null, "squash_commit_template": null, "issue_branch_template": null, "statistics": {"commit_count": 3, "storage_size": 291925, "repository_size": 283115, "wiki_size": 0, "lfs_objects_size": 0, "job_artifacts_size": 8810, "pipeline_artifacts_size": 0, "packages_size": 0, "snippets_size": 0, "uploads_size": 0}, "autoclose_referenced_issues": true, "external_authorization_classification_label": "", "requirements_enabled": false, "requirements_access_level": "enabled", "security_and_compliance_enabled": true, "compliance_frameworks": [], "permissions": {"project_access": {"access_level": 40, "notification_level": 3}, "group_access": {"access_level": 50, "notification_level": 3}}}, "emitted_at": 1682503003588} +{"stream": "branches", "data": {"name": "test-branch-number-49", "merged": true, "protected": false, "developers_can_push": false, "developers_can_merge": false, "can_push": true, "default": false, "web_url": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/tree/test-branch-number-49", "commit_id": "2831d897ba0214f8d3168647e8ad4232b83987ef", "project_id": 25157276}, "emitted_at": 1682503004418} +{"stream": "branches", "data": {"name": "test-branch-number-5", "merged": true, "protected": false, "developers_can_push": false, "developers_can_merge": false, "can_push": true, "default": false, "web_url": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/tree/test-branch-number-5", "commit_id": "2831d897ba0214f8d3168647e8ad4232b83987ef", "project_id": 25157276}, "emitted_at": 1682503004418} +{"stream": "branches", "data": {"name": "test-branch-number-50", "merged": true, "protected": false, "developers_can_push": false, "developers_can_merge": false, "can_push": true, "default": false, "web_url": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/tree/test-branch-number-50", "commit_id": "2831d897ba0214f8d3168647e8ad4232b83987ef", "project_id": 25157276}, "emitted_at": 1682503004418} +{"stream": "branches", "data": {"name": "test-branch-number-6", "merged": true, "protected": false, "developers_can_push": false, "developers_can_merge": false, "can_push": true, "default": false, "web_url": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/tree/test-branch-number-6", "commit_id": "2831d897ba0214f8d3168647e8ad4232b83987ef", "project_id": 25157276}, "emitted_at": 1682503004418} +{"stream": "branches", "data": {"name": "test-branch-number-7", "merged": true, "protected": false, "developers_can_push": false, "developers_can_merge": false, "can_push": true, "default": false, "web_url": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/tree/test-branch-number-7", "commit_id": "2831d897ba0214f8d3168647e8ad4232b83987ef", "project_id": 25157276}, "emitted_at": 1682503004418} +{"stream": "branches", "data": {"name": "test-branch-number-8", "merged": true, "protected": false, "developers_can_push": false, "developers_can_merge": false, "can_push": true, "default": false, "web_url": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/tree/test-branch-number-8", "commit_id": "2831d897ba0214f8d3168647e8ad4232b83987ef", "project_id": 25157276}, "emitted_at": 1682503004419} +{"stream": "branches", "data": {"name": "test-branch-number-9", "merged": true, "protected": false, "developers_can_push": false, "developers_can_merge": false, "can_push": true, "default": false, "web_url": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/tree/test-branch-number-9", "commit_id": "2831d897ba0214f8d3168647e8ad4232b83987ef", "project_id": 25157276}, "emitted_at": 1682503004419} +{"stream": "branches", "data": {"name": "ykurochkin/test-branch", "merged": false, "protected": false, "developers_can_push": false, "developers_can_merge": false, "can_push": true, "default": false, "web_url": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/tree/ykurochkin/test-branch", "commit_id": "9b0c5cf345f0ca1a3fb3ae253e74e0616abf8129", "project_id": 25157276}, "emitted_at": 1682503004419} +{"stream": "commits", "data": {"id": "6ad3dd49539391774db738c9e7b7d69f2d872c98", "short_id": "6ad3dd49", "created_at": "2021-03-18T12:51:05.000+00:00", "parent_ids": ["2831d897ba0214f8d3168647e8ad4232b83987ef", "028c02d96f40afe9b4d1173c1d0f712dd6d07302"], "title": "Merge branch 'ykurochkin/add-fake-CI-config' into 'master'", "message": "Merge branch 'ykurochkin/add-fake-CI-config' into 'master'\n\nadd fake CI config\n\nSee merge request new-group-airbute/new-ci-test-project!3", "author_name": "Alexander Arhipenko", "author_email": "integration-test@airbyte.io", "authored_date": "2021-03-18T12:51:05.000+00:00", "committer_name": "Alexander Arhipenko", "committer_email": "integration-test@airbyte.io", "committed_date": "2021-03-18T12:51:05.000+00:00", "trailers": {}, "web_url": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/commit/6ad3dd49539391774db738c9e7b7d69f2d872c98", "stats": {"additions": 14, "deletions": 0, "total": 14}, "project_id": 25157276}, "emitted_at": 1682503004915} +{"stream": "commits", "data": {"id": "028c02d96f40afe9b4d1173c1d0f712dd6d07302", "short_id": "028c02d9", "created_at": "2021-03-18T14:48:41.000+02:00", "parent_ids": ["2831d897ba0214f8d3168647e8ad4232b83987ef"], "title": "add fake CI config", "message": "add fake CI config\n", "author_name": "ykurochkin", "author_email": "zhenia.kurochkin@gmail.com", "authored_date": "2021-03-18T14:48:41.000+02:00", "committer_name": "ykurochkin", "committer_email": "zhenia.kurochkin@gmail.com", "committed_date": "2021-03-18T14:48:41.000+02:00", "trailers": {}, "web_url": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/commit/028c02d96f40afe9b4d1173c1d0f712dd6d07302", "stats": {"additions": 14, "deletions": 0, "total": 14}, "project_id": 25157276}, "emitted_at": 1682503004916} +{"stream": "commits", "data": {"id": "2831d897ba0214f8d3168647e8ad4232b83987ef", "short_id": "2831d897", "created_at": "2021-03-15T15:08:36.000+00:00", "parent_ids": [], "title": "Initial commit", "message": "Initial commit", "author_name": "Alexander Arhipenko", "author_email": "integration-test@airbyte.io", "authored_date": "2021-03-15T15:08:36.000+00:00", "committer_name": "Alexander Arhipenko", "committer_email": "integration-test@airbyte.io", "committed_date": "2021-03-15T15:08:36.000+00:00", "trailers": {}, "web_url": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/commit/2831d897ba0214f8d3168647e8ad4232b83987ef", "stats": {"additions": 2, "deletions": 0, "total": 2}, "project_id": 25157276}, "emitted_at": 1682503004916} +{"stream": "group_issue_boards", "data": {"id": 5099065, "name": "Development", "hide_backlog_list": false, "hide_closed_list": false, "project": null, "lists": [], "group": {"id": 11329647, "web_url": "https://gitlab.com/groups/new-group-airbute", "name": "New Group Airbute"}, "group_id": 11329647}, "emitted_at": 1682503006813} +{"stream": "issues", "data": {"id": 80943781, "iid": 6, "project_id": 25157276, "title": "Fake Issue 5", "description": null, "state": "opened", "created_at": "2021-03-15T15:22:24.788Z", "updated_at": "2021-03-15T15:22:24.788Z", "closed_at": null, "labels": ["bug"], "assignees": [], "type": "ISSUE", "user_notes_count": 0, "merge_requests_count": 0, "upvotes": 0, "downvotes": 0, "due_date": null, "confidential": false, "discussion_locked": null, "issue_type": "issue", "web_url": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/issues/6", "time_stats": {"time_estimate": 0, "total_time_spent": 0, "human_time_estimate": null, "human_total_time_spent": null}, "task_completion_status": {"count": 0, "completed_count": 0}, "blocking_issues_count": 0, "has_tasks": true, "task_status": "", "_links": {"self": "https://gitlab.com/api/v4/projects/25157276/issues/6", "notes": "https://gitlab.com/api/v4/projects/25157276/issues/6/notes", "award_emoji": "https://gitlab.com/api/v4/projects/25157276/issues/6/award_emoji", "project": "https://gitlab.com/api/v4/projects/25157276", "closed_as_duplicate_of": null}, "references": {"short": "#6", "relative": "#6", "full": "new-group-airbute/new-ci-test-project#6"}, "severity": "UNKNOWN", "moved_to_id": null, "service_desk_reply_to": null, "author_id": 8375961, "assignee_id": null, "closed_by_id": null, "milestone_id": null}, "emitted_at": 1682503010867} +{"stream": "issues", "data": {"id": 80943780, "iid": 5, "project_id": 25157276, "title": "Fake Issue 4", "description": null, "state": "opened", "created_at": "2021-03-15T15:22:24.193Z", "updated_at": "2021-03-15T15:22:24.193Z", "closed_at": null, "labels": ["bug"], "assignees": [], "type": "ISSUE", "user_notes_count": 0, "merge_requests_count": 0, "upvotes": 0, "downvotes": 0, "due_date": null, "confidential": false, "discussion_locked": null, "issue_type": "issue", "web_url": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/issues/5", "time_stats": {"time_estimate": 0, "total_time_spent": 0, "human_time_estimate": null, "human_total_time_spent": null}, "task_completion_status": {"count": 0, "completed_count": 0}, "blocking_issues_count": 0, "has_tasks": true, "task_status": "", "_links": {"self": "https://gitlab.com/api/v4/projects/25157276/issues/5", "notes": "https://gitlab.com/api/v4/projects/25157276/issues/5/notes", "award_emoji": "https://gitlab.com/api/v4/projects/25157276/issues/5/award_emoji", "project": "https://gitlab.com/api/v4/projects/25157276", "closed_as_duplicate_of": null}, "references": {"short": "#5", "relative": "#5", "full": "new-group-airbute/new-ci-test-project#5"}, "severity": "UNKNOWN", "moved_to_id": null, "service_desk_reply_to": null, "author_id": 8375961, "assignee_id": null, "closed_by_id": null, "milestone_id": null}, "emitted_at": 1682503010867} +{"stream": "issues", "data": {"id": 80943779, "iid": 4, "project_id": 25157276, "title": "Fake Issue 3", "description": null, "state": "opened", "created_at": "2021-03-15T15:22:23.597Z", "updated_at": "2021-03-15T15:22:23.597Z", "closed_at": null, "labels": ["bug"], "assignees": [], "type": "ISSUE", "user_notes_count": 0, "merge_requests_count": 0, "upvotes": 0, "downvotes": 0, "due_date": null, "confidential": false, "discussion_locked": null, "issue_type": "issue", "web_url": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/issues/4", "time_stats": {"time_estimate": 0, "total_time_spent": 0, "human_time_estimate": null, "human_total_time_spent": null}, "task_completion_status": {"count": 0, "completed_count": 0}, "blocking_issues_count": 0, "has_tasks": true, "task_status": "", "_links": {"self": "https://gitlab.com/api/v4/projects/25157276/issues/4", "notes": "https://gitlab.com/api/v4/projects/25157276/issues/4/notes", "award_emoji": "https://gitlab.com/api/v4/projects/25157276/issues/4/award_emoji", "project": "https://gitlab.com/api/v4/projects/25157276", "closed_as_duplicate_of": null}, "references": {"short": "#4", "relative": "#4", "full": "new-group-airbute/new-ci-test-project#4"}, "severity": "UNKNOWN", "moved_to_id": null, "service_desk_reply_to": null, "author_id": 8375961, "assignee_id": null, "closed_by_id": null, "milestone_id": null}, "emitted_at": 1682503010867} +{"stream": "issues", "data": {"id": 80943777, "iid": 3, "project_id": 25157276, "title": "Fake Issue 2", "description": null, "state": "opened", "created_at": "2021-03-15T15:22:23.081Z", "updated_at": "2021-03-15T15:22:23.081Z", "closed_at": null, "labels": ["bug"], "assignees": [], "type": "ISSUE", "user_notes_count": 0, "merge_requests_count": 0, "upvotes": 0, "downvotes": 0, "due_date": null, "confidential": false, "discussion_locked": null, "issue_type": "issue", "web_url": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/issues/3", "time_stats": {"time_estimate": 0, "total_time_spent": 0, "human_time_estimate": null, "human_total_time_spent": null}, "task_completion_status": {"count": 0, "completed_count": 0}, "blocking_issues_count": 0, "has_tasks": true, "task_status": "", "_links": {"self": "https://gitlab.com/api/v4/projects/25157276/issues/3", "notes": "https://gitlab.com/api/v4/projects/25157276/issues/3/notes", "award_emoji": "https://gitlab.com/api/v4/projects/25157276/issues/3/award_emoji", "project": "https://gitlab.com/api/v4/projects/25157276", "closed_as_duplicate_of": null}, "references": {"short": "#3", "relative": "#3", "full": "new-group-airbute/new-ci-test-project#3"}, "severity": "UNKNOWN", "moved_to_id": null, "service_desk_reply_to": null, "author_id": 8375961, "assignee_id": null, "closed_by_id": null, "milestone_id": null}, "emitted_at": 1682503010868} +{"stream": "issues", "data": {"id": 80943769, "iid": 2, "project_id": 25157276, "title": "Fake Issue 1", "description": null, "state": "opened", "created_at": "2021-03-15T15:22:14.281Z", "updated_at": "2021-03-15T15:22:14.281Z", "closed_at": null, "labels": ["bug"], "assignees": [], "type": "ISSUE", "user_notes_count": 0, "merge_requests_count": 0, "upvotes": 0, "downvotes": 0, "due_date": null, "confidential": false, "discussion_locked": null, "issue_type": "issue", "web_url": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/issues/2", "time_stats": {"time_estimate": 0, "total_time_spent": 0, "human_time_estimate": null, "human_total_time_spent": null}, "task_completion_status": {"count": 0, "completed_count": 0}, "blocking_issues_count": 0, "has_tasks": true, "task_status": "", "_links": {"self": "https://gitlab.com/api/v4/projects/25157276/issues/2", "notes": "https://gitlab.com/api/v4/projects/25157276/issues/2/notes", "award_emoji": "https://gitlab.com/api/v4/projects/25157276/issues/2/award_emoji", "project": "https://gitlab.com/api/v4/projects/25157276", "closed_as_duplicate_of": null}, "references": {"short": "#2", "relative": "#2", "full": "new-group-airbute/new-ci-test-project#2"}, "severity": "UNKNOWN", "moved_to_id": null, "service_desk_reply_to": null, "author_id": 8375961, "assignee_id": null, "closed_by_id": null, "milestone_id": null}, "emitted_at": 1682503010868} +{"stream": "issues", "data": {"id": 80943452, "iid": 1, "project_id": 25157276, "title": "Issues with auth", "description": null, "state": "opened", "created_at": "2021-03-15T15:18:53.167Z", "updated_at": "2021-03-15T15:18:53.167Z", "closed_at": null, "labels": ["bug"], "assignees": [], "type": "ISSUE", "user_notes_count": 0, "merge_requests_count": 0, "upvotes": 0, "downvotes": 0, "due_date": null, "confidential": false, "discussion_locked": null, "issue_type": "issue", "web_url": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/issues/1", "time_stats": {"time_estimate": 0, "total_time_spent": 0, "human_time_estimate": null, "human_total_time_spent": null}, "task_completion_status": {"count": 0, "completed_count": 0}, "blocking_issues_count": 0, "has_tasks": true, "task_status": "", "_links": {"self": "https://gitlab.com/api/v4/projects/25157276/issues/1", "notes": "https://gitlab.com/api/v4/projects/25157276/issues/1/notes", "award_emoji": "https://gitlab.com/api/v4/projects/25157276/issues/1/award_emoji", "project": "https://gitlab.com/api/v4/projects/25157276", "closed_as_duplicate_of": null}, "references": {"short": "#1", "relative": "#1", "full": "new-group-airbute/new-ci-test-project#1"}, "severity": "UNKNOWN", "moved_to_id": null, "service_desk_reply_to": null, "author_id": 8375961, "assignee_id": null, "closed_by_id": null, "milestone_id": null}, "emitted_at": 1682503010869} +{"stream": "issues", "data": {"id": 80943786, "iid": 9, "project_id": 25157276, "title": "Fake Issue 8", "description": null, "state": "closed", "created_at": "2021-03-15T15:22:26.564Z", "updated_at": "2022-12-13T09:39:47.330Z", "closed_at": "2022-12-13T09:39:47.151Z", "labels": ["bug"], "assignees": [], "type": "ISSUE", "user_notes_count": 0, "merge_requests_count": 0, "upvotes": 0, "downvotes": 0, "due_date": null, "confidential": false, "discussion_locked": null, "issue_type": "issue", "web_url": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/issues/9", "time_stats": {"time_estimate": 0, "total_time_spent": 0, "human_time_estimate": null, "human_total_time_spent": null}, "task_completion_status": {"count": 0, "completed_count": 0}, "blocking_issues_count": 0, "has_tasks": true, "task_status": "", "_links": {"self": "https://gitlab.com/api/v4/projects/25157276/issues/9", "notes": "https://gitlab.com/api/v4/projects/25157276/issues/9/notes", "award_emoji": "https://gitlab.com/api/v4/projects/25157276/issues/9/award_emoji", "project": "https://gitlab.com/api/v4/projects/25157276", "closed_as_duplicate_of": null}, "references": {"short": "#9", "relative": "#9", "full": "new-group-airbute/new-ci-test-project#9"}, "severity": "UNKNOWN", "moved_to_id": null, "service_desk_reply_to": null, "author_id": 8375961, "assignee_id": null, "closed_by_id": 8375961, "milestone_id": null}, "emitted_at": 1682503011877} +{"stream": "jobs", "data": {"id": 1108959782, "status": "failed", "stage": "test", "name": "test-code-job2", "ref": "master", "tag": false, "coverage": null, "allow_failure": false, "created_at": "2021-03-18T12:51:06.294Z", "started_at": "2021-03-18T12:51:07.646Z", "finished_at": "2021-03-18T12:51:51.309Z", "erased_at": null, "duration": 43.662407, "queued_duration": 1.180926, "failure_reason": "script_failure", "web_url": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/jobs/1108959782", "project": {"ci_job_token_scope_enabled": false}, "artifacts": [{"file_type": "trace", "size": 2200, "filename": "job.log", "file_format": null}], "artifacts_expire_at": null, "tag_list": [], "user_id": 8375961, "pipeline_id": 272632767, "runner_id": 380986, "commit_id": "6ad3dd49539391774db738c9e7b7d69f2d872c98", "project_id": 25157276}, "emitted_at": 1682503013364} +{"stream": "jobs", "data": {"id": 1108959779, "status": "failed", "stage": "test", "name": "test-code-job1", "ref": "master", "tag": false, "coverage": null, "allow_failure": false, "created_at": "2021-03-18T12:51:06.279Z", "started_at": "2021-03-18T12:51:07.943Z", "finished_at": "2021-03-18T12:51:50.943Z", "erased_at": null, "duration": 42.999853, "queued_duration": 1.349274, "failure_reason": "script_failure", "web_url": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/jobs/1108959779", "project": {"ci_job_token_scope_enabled": false}, "artifacts": [{"file_type": "trace", "size": 2182, "filename": "job.log", "file_format": null}], "artifacts_expire_at": null, "tag_list": [], "user_id": 8375961, "pipeline_id": 272632767, "runner_id": 380987, "commit_id": "6ad3dd49539391774db738c9e7b7d69f2d872c98", "project_id": 25157276}, "emitted_at": 1682503013364} +{"stream": "jobs", "data": {"id": 1108952832, "status": "failed", "stage": "test", "name": "test-code-job2", "ref": "ykurochkin/add-fake-CI-config", "tag": false, "coverage": null, "allow_failure": false, "created_at": "2021-03-18T12:48:49.222Z", "started_at": "2021-03-18T12:48:50.732Z", "finished_at": "2021-03-18T12:49:37.961Z", "erased_at": null, "duration": 47.229034, "queued_duration": 1.422541, "failure_reason": "script_failure", "web_url": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/jobs/1108952832", "project": {"ci_job_token_scope_enabled": false}, "artifacts": [{"file_type": "trace", "size": 2223, "filename": "job.log", "file_format": null}], "artifacts_expire_at": null, "tag_list": [], "user_id": 8375961, "pipeline_id": 272631271, "runner_id": 44949, "commit_id": "028c02d96f40afe9b4d1173c1d0f712dd6d07302", "project_id": 25157276}, "emitted_at": 1682503013912} +{"stream": "jobs", "data": {"id": 1108952831, "status": "failed", "stage": "test", "name": "test-code-job1", "ref": "ykurochkin/add-fake-CI-config", "tag": false, "coverage": null, "allow_failure": false, "created_at": "2021-03-18T12:48:49.199Z", "started_at": "2021-03-18T12:48:50.064Z", "finished_at": "2021-03-18T12:49:34.277Z", "erased_at": null, "duration": 44.212296, "queued_duration": 0.735172, "failure_reason": "script_failure", "web_url": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/jobs/1108952831", "project": {"ci_job_token_scope_enabled": false}, "artifacts": [{"file_type": "trace", "size": 2205, "filename": "job.log", "file_format": null}], "artifacts_expire_at": null, "tag_list": [], "user_id": 8375961, "pipeline_id": 272631271, "runner_id": 380987, "commit_id": "028c02d96f40afe9b4d1173c1d0f712dd6d07302", "project_id": 25157276}, "emitted_at": 1682503013912} +{"stream": "project_milestones", "data": {"id": 1943661, "iid": 8, "project_id": 25157276, "title": "Project Milestone 8", "description": null, "state": "active", "created_at": "2021-03-15T15:32:58.605Z", "updated_at": "2021-03-15T15:32:58.605Z", "due_date": null, "start_date": null, "expired": false, "web_url": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/milestones/8"}, "emitted_at": 1682503015963} +{"stream": "project_milestones", "data": {"id": 1943660, "iid": 7, "project_id": 25157276, "title": "Project Milestone 7", "description": null, "state": "active", "created_at": "2021-03-15T15:32:58.234Z", "updated_at": "2021-03-15T15:32:58.234Z", "due_date": null, "start_date": null, "expired": false, "web_url": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/milestones/7"}, "emitted_at": 1682503015963} +{"stream": "project_milestones", "data": {"id": 1943659, "iid": 6, "project_id": 25157276, "title": "Project Milestone 6", "description": null, "state": "active", "created_at": "2021-03-15T15:32:57.814Z", "updated_at": "2021-03-15T15:32:57.814Z", "due_date": null, "start_date": null, "expired": false, "web_url": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/milestones/6"}, "emitted_at": 1682503015963} +{"stream": "project_milestones", "data": {"id": 1943658, "iid": 5, "project_id": 25157276, "title": "Project Milestone 5", "description": null, "state": "active", "created_at": "2021-03-15T15:32:57.412Z", "updated_at": "2021-03-15T15:32:57.412Z", "due_date": null, "start_date": null, "expired": false, "web_url": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/milestones/5"}, "emitted_at": 1682503015963} +{"stream": "project_milestones", "data": {"id": 1943657, "iid": 4, "project_id": 25157276, "title": "Project Milestone 4", "description": null, "state": "active", "created_at": "2021-03-15T15:32:57.023Z", "updated_at": "2021-03-15T15:32:57.023Z", "due_date": null, "start_date": null, "expired": false, "web_url": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/milestones/4"}, "emitted_at": 1682503015964} +{"stream": "project_milestones", "data": {"id": 1943655, "iid": 3, "project_id": 25157276, "title": "Project Milestone 3", "description": null, "state": "active", "created_at": "2021-03-15T15:32:49.897Z", "updated_at": "2021-03-15T15:32:49.897Z", "due_date": null, "start_date": null, "expired": false, "web_url": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/milestones/3"}, "emitted_at": 1682503015964} +{"stream": "project_milestones", "data": {"id": 1943649, "iid": 2, "project_id": 25157276, "title": "Project Milestone 2", "description": null, "state": "active", "created_at": "2021-03-15T15:31:25.134Z", "updated_at": "2021-03-15T15:31:25.134Z", "due_date": null, "start_date": null, "expired": false, "web_url": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/milestones/2"}, "emitted_at": 1682503015964} +{"stream": "project_milestones", "data": {"id": 1943648, "iid": 1, "project_id": 25157276, "title": "Project Milestone 1", "description": null, "state": "active", "created_at": "2021-03-15T15:30:02.691Z", "updated_at": "2021-03-15T15:30:02.691Z", "due_date": null, "start_date": null, "expired": false, "web_url": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/milestones/1"}, "emitted_at": 1682503016286} +{"stream": "group_milestones", "data": {"id": 1943760, "iid": 6, "group_id": 11329647, "title": "Group Milestone 6", "description": null, "state": "active", "created_at": "2021-03-15T16:00:55.054Z", "updated_at": "2021-03-15T16:00:55.054Z", "due_date": null, "start_date": null, "expired": false, "web_url": "https://gitlab.com/groups/new-group-airbute/-/milestones/6"}, "emitted_at": 1682503016799} +{"stream": "group_milestones", "data": {"id": 1943759, "iid": 5, "group_id": 11329647, "title": "Group Milestone 5", "description": null, "state": "active", "created_at": "2021-03-15T16:00:54.349Z", "updated_at": "2021-03-15T16:00:54.349Z", "due_date": null, "start_date": null, "expired": false, "web_url": "https://gitlab.com/groups/new-group-airbute/-/milestones/5"}, "emitted_at": 1682503016800} +{"stream": "group_milestones", "data": {"id": 1943758, "iid": 4, "group_id": 11329647, "title": "Group Milestone 4", "description": null, "state": "active", "created_at": "2021-03-15T16:00:53.875Z", "updated_at": "2021-03-15T16:00:53.875Z", "due_date": null, "start_date": null, "expired": false, "web_url": "https://gitlab.com/groups/new-group-airbute/-/milestones/4"}, "emitted_at": 1682503016800} +{"stream": "group_milestones", "data": {"id": 1943757, "iid": 3, "group_id": 11329647, "title": "Group Milestone 3", "description": null, "state": "active", "created_at": "2021-03-15T16:00:52.498Z", "updated_at": "2021-03-15T16:00:52.498Z", "due_date": null, "start_date": null, "expired": false, "web_url": "https://gitlab.com/groups/new-group-airbute/-/milestones/3"}, "emitted_at": 1682503016800} +{"stream": "group_milestones", "data": {"id": 1943756, "iid": 2, "group_id": 11329647, "title": "Group Milestone 2", "description": null, "state": "active", "created_at": "2021-03-15T16:00:52.138Z", "updated_at": "2021-03-15T16:00:52.138Z", "due_date": null, "start_date": null, "expired": false, "web_url": "https://gitlab.com/groups/new-group-airbute/-/milestones/2"}, "emitted_at": 1682503016800} +{"stream": "group_milestones", "data": {"id": 1943755, "iid": 1, "group_id": 11329647, "title": "Group Milestone 1", "description": null, "state": "active", "created_at": "2021-03-15T16:00:51.775Z", "updated_at": "2021-03-15T16:00:51.775Z", "due_date": null, "start_date": null, "expired": false, "web_url": "https://gitlab.com/groups/new-group-airbute/-/milestones/1"}, "emitted_at": 1682503016800} +{"stream": "project_members", "data": {"access_level": 40, "created_at": "2021-03-15T15:08:36.746Z", "created_by": {"id": 8375961, "username": "airbyte", "name": "Airbyte Team", "state": "active", "avatar_url": "https://secure.gravatar.com/avatar/0a7841feac7218131ce7b427283c24ef?s=80&d=identicon", "web_url": "https://gitlab.com/airbyte"}, "expires_at": null, "id": 8375961, "username": "airbyte", "name": "Airbyte Team", "state": "active", "avatar_url": "https://secure.gravatar.com/avatar/0a7841feac7218131ce7b427283c24ef?s=80&d=identicon", "web_url": "https://gitlab.com/airbyte", "membership_state": "active", "project_id": 25157276}, "emitted_at": 1682503020071} +{"stream": "group_members", "data": {"access_level": 50, "created_at": "2022-12-02T08:56:21.862Z", "expires_at": null, "id": 8375961, "username": "airbyte", "name": "Airbyte Team", "state": "active", "avatar_url": "https://secure.gravatar.com/avatar/0a7841feac7218131ce7b427283c24ef?s=80&d=identicon", "web_url": "https://gitlab.com/airbyte", "membership_state": "active", "group_id": 61015232}, "emitted_at": 1682503021607} +{"stream": "group_members", "data": {"access_level": 50, "created_at": "2022-12-02T08:56:34.266Z", "expires_at": null, "id": 8375961, "username": "airbyte", "name": "Airbyte Team", "state": "active", "avatar_url": "https://secure.gravatar.com/avatar/0a7841feac7218131ce7b427283c24ef?s=80&d=identicon", "web_url": "https://gitlab.com/airbyte", "membership_state": "active", "group_id": 61015239}, "emitted_at": 1682503022050} +{"stream": "group_members", "data": {"access_level": 50, "created_at": "2022-12-02T08:47:02.469Z", "expires_at": null, "id": 8375961, "username": "airbyte", "name": "Airbyte Team", "state": "active", "avatar_url": "https://secure.gravatar.com/avatar/0a7841feac7218131ce7b427283c24ef?s=80&d=identicon", "web_url": "https://gitlab.com/airbyte", "membership_state": "active", "group_id": 61014902}, "emitted_at": 1682503022397} +{"stream": "group_members", "data": {"access_level": 50, "created_at": "2022-12-02T08:55:27.120Z", "expires_at": null, "id": 8375961, "username": "airbyte", "name": "Airbyte Team", "state": "active", "avatar_url": "https://secure.gravatar.com/avatar/0a7841feac7218131ce7b427283c24ef?s=80&d=identicon", "web_url": "https://gitlab.com/airbyte", "membership_state": "active", "group_id": 61015202}, "emitted_at": 1682503022687} +{"stream": "group_members", "data": {"access_level": 50, "created_at": "2022-12-02T08:48:04.786Z", "expires_at": null, "id": 8375961, "username": "airbyte", "name": "Airbyte Team", "state": "active", "avatar_url": "https://secure.gravatar.com/avatar/0a7841feac7218131ce7b427283c24ef?s=80&d=identicon", "web_url": "https://gitlab.com/airbyte", "membership_state": "active", "group_id": 61014943}, "emitted_at": 1682503023039} +{"stream": "group_members", "data": {"access_level": 50, "created_at": "2022-12-02T08:45:53.544Z", "expires_at": null, "id": 8375961, "username": "airbyte", "name": "Airbyte Team", "state": "active", "avatar_url": "https://secure.gravatar.com/avatar/0a7841feac7218131ce7b427283c24ef?s=80&d=identicon", "web_url": "https://gitlab.com/airbyte", "membership_state": "active", "group_id": 61014863}, "emitted_at": 1682503023334} +{"stream": "project_labels", "data": {"id": 19117014, "name": "Label 7", "description": null, "description_html": "", "text_color": "#333333", "color": "#00ffff", "subscribed": false, "priority": null, "is_project_label": false, "project_id": 25157276}, "emitted_at": 1682503024789} +{"stream": "project_labels", "data": {"id": 19116951, "name": "Label 7", "description": null, "description_html": "", "text_color": "#333333", "color": "#c0c0c0", "subscribed": false, "priority": null, "is_project_label": true, "project_id": 25157276}, "emitted_at": 1682503024790} +{"stream": "project_labels", "data": {"id": 19116952, "name": "Label 8", "description": null, "description_html": "", "text_color": "#FFFFFF", "color": "#00ff00", "subscribed": false, "priority": null, "is_project_label": true, "project_id": 25157276}, "emitted_at": 1682503024790} +{"stream": "project_labels", "data": {"id": 19117015, "name": "Label 8", "description": null, "description_html": "", "text_color": "#FFFFFF", "color": "#808080", "subscribed": false, "priority": null, "is_project_label": false, "project_id": 25157276}, "emitted_at": 1682503024790} +{"stream": "project_labels", "data": {"id": 19116953, "name": "Label 9", "description": null, "description_html": "", "text_color": "#FFFFFF", "color": "#008000", "subscribed": false, "priority": null, "is_project_label": true, "project_id": 25157276}, "emitted_at": 1682503025157} +{"stream": "project_labels", "data": {"id": 19117016, "name": "Label 9", "description": null, "description_html": "", "text_color": "#333333", "color": "#00ffff", "subscribed": false, "priority": null, "is_project_label": false, "project_id": 25157276}, "emitted_at": 1682503025157} +{"stream": "project_labels", "data": {"id": 19116154, "name": "bug", "description": null, "description_html": "", "text_color": "#FFFFFF", "color": "#6699cc", "subscribed": false, "priority": null, "is_project_label": true, "project_id": 25157276}, "emitted_at": 1682503025157} +{"stream": "group_labels", "data": {"id": 19117057, "name": "Label 50", "description": null, "description_html": "", "text_color": "#FFFFFF", "color": "#800080", "subscribed": false, "group_id": 61014863}, "emitted_at": 1682503033725} +{"stream": "group_labels", "data": {"id": 19117058, "name": "Label 51", "description": null, "description_html": "", "text_color": "#FFFFFF", "color": "#808000", "subscribed": false, "group_id": 61014863}, "emitted_at": 1682503033725} +{"stream": "group_labels", "data": {"id": 19117013, "name": "Label 6", "description": null, "description_html": "", "text_color": "#FFFFFF", "color": "#800000", "subscribed": false, "group_id": 61014863}, "emitted_at": 1682503033726} +{"stream": "group_labels", "data": {"id": 19117014, "name": "Label 7", "description": null, "description_html": "", "text_color": "#333333", "color": "#00ffff", "subscribed": false, "group_id": 61014863}, "emitted_at": 1682503033726} +{"stream": "group_labels", "data": {"id": 19117015, "name": "Label 8", "description": null, "description_html": "", "text_color": "#FFFFFF", "color": "#808080", "subscribed": false, "group_id": 61014863}, "emitted_at": 1682503033726} +{"stream": "group_labels", "data": {"id": 19117016, "name": "Label 9", "description": null, "description_html": "", "text_color": "#333333", "color": "#00ffff", "subscribed": false, "group_id": 61014863}, "emitted_at": 1682503034023} +{"stream": "merge_requests", "data": {"id": 92594931, "iid": 3, "project_id": 25157276, "title": "add fake CI config", "description": "", "state": "merged", "created_at": "2021-03-18T12:49:13.091Z", "updated_at": "2021-03-18T12:51:06.319Z", "merge_user": {"id": 8375961, "username": "airbyte", "name": "Airbyte Team", "state": "active", "avatar_url": "https://secure.gravatar.com/avatar/0a7841feac7218131ce7b427283c24ef?s=80&d=identicon", "web_url": "https://gitlab.com/airbyte"}, "merged_at": "2021-03-18T12:51:06.470Z", "closed_at": null, "target_branch": "master", "source_branch": "ykurochkin/add-fake-CI-config", "user_notes_count": 0, "upvotes": 0, "downvotes": 0, "assignees": [], "reviewers": [], "source_project_id": 25157276, "target_project_id": 25157276, "labels": [], "draft": false, "work_in_progress": false, "merge_when_pipeline_succeeds": false, "merge_status": "can_be_merged", "detailed_merge_status": "not_open", "sha": "028c02d96f40afe9b4d1173c1d0f712dd6d07302", "merge_commit_sha": "6ad3dd49539391774db738c9e7b7d69f2d872c98", "squash_commit_sha": null, "discussion_locked": null, "should_remove_source_branch": null, "force_remove_source_branch": true, "reference": "!3", "references": {"short": "!3", "relative": "!3", "full": "new-group-airbute/new-ci-test-project!3"}, "web_url": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/merge_requests/3", "time_stats": {"time_estimate": 0, "total_time_spent": 0, "human_time_estimate": null, "human_total_time_spent": null}, "squash": false, "squash_on_merge": false, "task_completion_status": {"count": 0, "completed_count": 0}, "has_conflicts": false, "blocking_discussions_resolved": true, "approvals_before_merge": null, "author_id": 8375961, "assignee_id": null, "closed_by_id": null, "milestone_id": null, "merged_by_id": 8375961}, "emitted_at": 1682503034551} +{"stream": "merge_requests", "data": {"id": 92593913, "iid": 2, "project_id": 25157276, "title": "update readme.md", "description": "", "state": "opened", "created_at": "2021-03-18T12:42:30.200Z", "updated_at": "2021-03-18T12:42:30.200Z", "merge_user": null, "merged_at": null, "closed_at": null, "target_branch": "master", "source_branch": "ykurochkin/test-branch", "user_notes_count": 0, "upvotes": 0, "downvotes": 0, "assignees": [], "reviewers": [], "source_project_id": 25157276, "target_project_id": 25157276, "labels": [], "draft": false, "work_in_progress": false, "merge_when_pipeline_succeeds": false, "merge_status": "can_be_merged", "detailed_merge_status": "mergeable", "sha": "9b0c5cf345f0ca1a3fb3ae253e74e0616abf8129", "merge_commit_sha": null, "squash_commit_sha": null, "discussion_locked": null, "should_remove_source_branch": null, "force_remove_source_branch": true, "reference": "!2", "references": {"short": "!2", "relative": "!2", "full": "new-group-airbute/new-ci-test-project!2"}, "web_url": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/merge_requests/2", "time_stats": {"time_estimate": 0, "total_time_spent": 0, "human_time_estimate": null, "human_total_time_spent": null}, "squash": false, "squash_on_merge": false, "task_completion_status": {"count": 0, "completed_count": 0}, "has_conflicts": false, "blocking_discussions_resolved": true, "approvals_before_merge": null, "author_id": 8375961, "assignee_id": null, "closed_by_id": null, "milestone_id": null, "merged_by_id": null}, "emitted_at": 1682503034551} +{"stream": "merge_requests", "data": {"id": 92111504, "iid": 1, "project_id": 25157276, "title": "Draft: Resolve \"Fake Issue 30\"", "description": "Closes #31", "state": "opened", "created_at": "2021-03-15T16:08:05.071Z", "updated_at": "2021-03-15T16:08:05.071Z", "merge_user": null, "merged_at": null, "closed_at": null, "target_branch": "master", "source_branch": "31-fake-issue-30", "user_notes_count": 0, "upvotes": 0, "downvotes": 0, "assignees": [8375961], "reviewers": [], "source_project_id": 25157276, "target_project_id": 25157276, "labels": ["bug"], "draft": true, "work_in_progress": true, "merge_when_pipeline_succeeds": false, "merge_status": "cannot_be_merged", "detailed_merge_status": "draft_status", "sha": "2831d897ba0214f8d3168647e8ad4232b83987ef", "merge_commit_sha": null, "squash_commit_sha": null, "discussion_locked": null, "should_remove_source_branch": null, "force_remove_source_branch": true, "reference": "!1", "references": {"short": "!1", "relative": "!1", "full": "new-group-airbute/new-ci-test-project!1"}, "web_url": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/merge_requests/1", "time_stats": {"time_estimate": 0, "total_time_spent": 0, "human_time_estimate": null, "human_total_time_spent": null}, "squash": false, "squash_on_merge": false, "task_completion_status": {"count": 0, "completed_count": 0}, "has_conflicts": true, "blocking_discussions_resolved": true, "approvals_before_merge": null, "author_id": 8375961, "assignee_id": 8375961, "closed_by_id": null, "milestone_id": null, "merged_by_id": null}, "emitted_at": 1682503034552} +{"stream": "merge_request_commits", "data": {"id": 92594931, "iid": 3, "project_id": 25157276, "title": "add fake CI config", "description": "", "state": "merged", "created_at": "2021-03-18T12:49:13.091Z", "updated_at": "2021-03-18T12:51:06.319Z", "merged_by": {"id": 8375961, "username": "airbyte", "name": "Airbyte Team", "state": "active", "avatar_url": "https://secure.gravatar.com/avatar/0a7841feac7218131ce7b427283c24ef?s=80&d=identicon", "web_url": "https://gitlab.com/airbyte"}, "merge_user": {"id": 8375961, "username": "airbyte", "name": "Airbyte Team", "state": "active", "avatar_url": "https://secure.gravatar.com/avatar/0a7841feac7218131ce7b427283c24ef?s=80&d=identicon", "web_url": "https://gitlab.com/airbyte"}, "merged_at": "2021-03-18T12:51:06.470Z", "closed_by": null, "closed_at": null, "target_branch": "master", "source_branch": "ykurochkin/add-fake-CI-config", "user_notes_count": 0, "upvotes": 0, "downvotes": 0, "author": {"id": 8375961, "username": "airbyte", "name": "Airbyte Team", "state": "active", "avatar_url": "https://secure.gravatar.com/avatar/0a7841feac7218131ce7b427283c24ef?s=80&d=identicon", "web_url": "https://gitlab.com/airbyte"}, "assignees": [], "assignee": null, "reviewers": [], "source_project_id": 25157276, "target_project_id": 25157276, "labels": [], "draft": false, "work_in_progress": false, "milestone": null, "merge_when_pipeline_succeeds": false, "merge_status": "can_be_merged", "detailed_merge_status": "not_open", "sha": "028c02d96f40afe9b4d1173c1d0f712dd6d07302", "merge_commit_sha": "6ad3dd49539391774db738c9e7b7d69f2d872c98", "squash_commit_sha": null, "discussion_locked": null, "should_remove_source_branch": null, "force_remove_source_branch": true, "reference": "!3", "references": {"short": "!3", "relative": "!3", "full": "new-group-airbute/new-ci-test-project!3"}, "web_url": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/merge_requests/3", "time_stats": {"time_estimate": 0, "total_time_spent": 0, "human_time_estimate": null, "human_total_time_spent": null}, "squash": false, "squash_on_merge": false, "task_completion_status": {"count": 0, "completed_count": 0}, "has_conflicts": false, "blocking_discussions_resolved": true, "approvals_before_merge": null, "subscribed": true, "changes_count": "1", "latest_build_started_at": null, "latest_build_finished_at": null, "first_deployed_to_production_at": null, "pipeline": null, "head_pipeline": {"id": 272631271, "iid": 1, "project_id": 25157276, "sha": "028c02d96f40afe9b4d1173c1d0f712dd6d07302", "ref": "ykurochkin/add-fake-CI-config", "status": "failed", "source": "push", "created_at": "2021-03-18T12:48:49.174Z", "updated_at": "2021-03-18T12:49:38.092Z", "web_url": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/pipelines/272631271", "before_sha": "0000000000000000000000000000000000000000", "tag": false, "yaml_errors": null, "user": {"id": 8375961, "username": "airbyte", "name": "Airbyte Team", "state": "active", "avatar_url": "https://secure.gravatar.com/avatar/0a7841feac7218131ce7b427283c24ef?s=80&d=identicon", "web_url": "https://gitlab.com/airbyte"}, "started_at": "2021-03-18T12:48:50.166Z", "finished_at": "2021-03-18T12:49:38.084Z", "committed_at": null, "duration": 47, "queued_duration": null, "coverage": null, "detailed_status": {"icon": "status_failed", "text": "failed", "label": "failed", "group": "failed", "tooltip": "failed", "has_details": true, "details_path": "/new-group-airbute/new-ci-test-project/-/pipelines/272631271", "illustration": null, "favicon": "/assets/ci_favicons/favicon_status_failed-41304d7f7e3828808b0c26771f0309e55296819a9beea3ea9fbf6689d9857c12.png"}}, "diff_refs": {"base_sha": "2831d897ba0214f8d3168647e8ad4232b83987ef", "head_sha": "028c02d96f40afe9b4d1173c1d0f712dd6d07302", "start_sha": "2831d897ba0214f8d3168647e8ad4232b83987ef"}, "merge_error": null, "first_contribution": false, "user": {"can_merge": true}, "merge_request_iid": 3}, "emitted_at": 1682503037253} +{"stream": "merge_request_commits", "data": {"id": 92593913, "iid": 2, "project_id": 25157276, "title": "update readme.md", "description": "", "state": "opened", "created_at": "2021-03-18T12:42:30.200Z", "updated_at": "2021-03-18T12:42:30.200Z", "merged_by": null, "merge_user": null, "merged_at": null, "closed_by": null, "closed_at": null, "target_branch": "master", "source_branch": "ykurochkin/test-branch", "user_notes_count": 0, "upvotes": 0, "downvotes": 0, "author": {"id": 8375961, "username": "airbyte", "name": "Airbyte Team", "state": "active", "avatar_url": "https://secure.gravatar.com/avatar/0a7841feac7218131ce7b427283c24ef?s=80&d=identicon", "web_url": "https://gitlab.com/airbyte"}, "assignees": [], "assignee": null, "reviewers": [], "source_project_id": 25157276, "target_project_id": 25157276, "labels": [], "draft": false, "work_in_progress": false, "milestone": null, "merge_when_pipeline_succeeds": false, "merge_status": "can_be_merged", "detailed_merge_status": "mergeable", "sha": "9b0c5cf345f0ca1a3fb3ae253e74e0616abf8129", "merge_commit_sha": null, "squash_commit_sha": null, "discussion_locked": null, "should_remove_source_branch": null, "force_remove_source_branch": true, "reference": "!2", "references": {"short": "!2", "relative": "!2", "full": "new-group-airbute/new-ci-test-project!2"}, "web_url": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/merge_requests/2", "time_stats": {"time_estimate": 0, "total_time_spent": 0, "human_time_estimate": null, "human_total_time_spent": null}, "squash": false, "squash_on_merge": false, "task_completion_status": {"count": 0, "completed_count": 0}, "has_conflicts": false, "blocking_discussions_resolved": true, "approvals_before_merge": null, "subscribed": true, "changes_count": "1", "latest_build_started_at": null, "latest_build_finished_at": null, "first_deployed_to_production_at": null, "pipeline": null, "head_pipeline": null, "diff_refs": {"base_sha": "2831d897ba0214f8d3168647e8ad4232b83987ef", "head_sha": "9b0c5cf345f0ca1a3fb3ae253e74e0616abf8129", "start_sha": "2831d897ba0214f8d3168647e8ad4232b83987ef"}, "merge_error": null, "first_contribution": false, "user": {"can_merge": true}, "merge_request_iid": 2}, "emitted_at": 1682503037612} +{"stream": "merge_request_commits", "data": {"id": 92111504, "iid": 1, "project_id": 25157276, "title": "Draft: Resolve \"Fake Issue 30\"", "description": "Closes #31", "state": "opened", "created_at": "2021-03-15T16:08:05.071Z", "updated_at": "2021-03-15T16:08:05.071Z", "merged_by": null, "merge_user": null, "merged_at": null, "closed_by": null, "closed_at": null, "target_branch": "master", "source_branch": "31-fake-issue-30", "user_notes_count": 0, "upvotes": 0, "downvotes": 0, "author": {"id": 8375961, "username": "airbyte", "name": "Airbyte Team", "state": "active", "avatar_url": "https://secure.gravatar.com/avatar/0a7841feac7218131ce7b427283c24ef?s=80&d=identicon", "web_url": "https://gitlab.com/airbyte"}, "assignees": [{"id": 8375961, "username": "airbyte", "name": "Airbyte Team", "state": "active", "avatar_url": "https://secure.gravatar.com/avatar/0a7841feac7218131ce7b427283c24ef?s=80&d=identicon", "web_url": "https://gitlab.com/airbyte"}], "assignee": {"id": 8375961, "username": "airbyte", "name": "Airbyte Team", "state": "active", "avatar_url": "https://secure.gravatar.com/avatar/0a7841feac7218131ce7b427283c24ef?s=80&d=identicon", "web_url": "https://gitlab.com/airbyte"}, "reviewers": [], "source_project_id": 25157276, "target_project_id": 25157276, "labels": ["bug"], "draft": true, "work_in_progress": true, "milestone": null, "merge_when_pipeline_succeeds": false, "merge_status": "cannot_be_merged", "detailed_merge_status": "draft_status", "sha": "2831d897ba0214f8d3168647e8ad4232b83987ef", "merge_commit_sha": null, "squash_commit_sha": null, "discussion_locked": null, "should_remove_source_branch": null, "force_remove_source_branch": true, "reference": "!1", "references": {"short": "!1", "relative": "!1", "full": "new-group-airbute/new-ci-test-project!1"}, "web_url": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/merge_requests/1", "time_stats": {"time_estimate": 0, "total_time_spent": 0, "human_time_estimate": null, "human_total_time_spent": null}, "squash": false, "squash_on_merge": false, "task_completion_status": {"count": 0, "completed_count": 0}, "has_conflicts": true, "blocking_discussions_resolved": true, "approvals_before_merge": null, "subscribed": true, "changes_count": null, "latest_build_started_at": null, "latest_build_finished_at": null, "first_deployed_to_production_at": null, "pipeline": null, "head_pipeline": null, "diff_refs": {"base_sha": "2831d897ba0214f8d3168647e8ad4232b83987ef", "head_sha": "2831d897ba0214f8d3168647e8ad4232b83987ef", "start_sha": "2831d897ba0214f8d3168647e8ad4232b83987ef"}, "merge_error": null, "first_contribution": false, "user": {"can_merge": true}, "merge_request_iid": 1}, "emitted_at": 1682503037967} +{"stream": "releases", "data": {"name": "First release", "tag_name": "fake-tag-6", "description": "Test Release", "created_at": "2021-03-18T12:44:12.497Z", "released_at": "2021-03-18T12:44:12.497Z", "upcoming_release": false, "milestones": [1943704], "commit_path": "/new-group-airbute/new-ci-test-project/-/commit/2831d897ba0214f8d3168647e8ad4232b83987ef", "tag_path": "/new-group-airbute/new-ci-test-project/-/tags/fake-tag-6", "assets": {"count": 4, "sources": [{"format": "zip", "url": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/archive/fake-tag-6/new-ci-test-project-fake-tag-6.zip"}, {"format": "tar.gz", "url": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/archive/fake-tag-6/new-ci-test-project-fake-tag-6.tar.gz"}, {"format": "tar.bz2", "url": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/archive/fake-tag-6/new-ci-test-project-fake-tag-6.tar.bz2"}, {"format": "tar", "url": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/archive/fake-tag-6/new-ci-test-project-fake-tag-6.tar"}], "links": []}, "evidences": [{"sha": "a616fdca9312ca5aa451bc1060ce91a672fd24cc0f4d", "filepath": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/releases/fake-tag-6/evidences/855895.json", "collected_at": "2021-03-18T12:44:12.650Z"}], "_links": {"closed_issues_url": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/issues?release_tag=fake-tag-6&scope=all&state=closed", "closed_merge_requests_url": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/merge_requests?release_tag=fake-tag-6&scope=all&state=closed", "edit_url": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/releases/fake-tag-6/edit", "merged_merge_requests_url": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/merge_requests?release_tag=fake-tag-6&scope=all&state=merged", "opened_issues_url": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/issues?release_tag=fake-tag-6&scope=all&state=opened", "opened_merge_requests_url": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/merge_requests?release_tag=fake-tag-6&scope=all&state=opened", "self": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/releases/fake-tag-6"}, "author_id": 8375961, "commit_id": "2831d897ba0214f8d3168647e8ad4232b83987ef", "project_id": 25157276}, "emitted_at": 1682503039734} +{"stream": "tags", "data": {"name": "fake-tag-5", "message": "", "target": "2831d897ba0214f8d3168647e8ad4232b83987ef", "release": null, "protected": false, "commit_id": "2831d897ba0214f8d3168647e8ad4232b83987ef", "project_id": 25157276}, "emitted_at": 1682503040589} +{"stream": "tags", "data": {"name": "fake-tag-50", "message": "", "target": "2831d897ba0214f8d3168647e8ad4232b83987ef", "release": null, "protected": false, "commit_id": "2831d897ba0214f8d3168647e8ad4232b83987ef", "project_id": 25157276}, "emitted_at": 1682503040589} +{"stream": "tags", "data": {"name": "fake-tag-51", "message": "", "target": "2831d897ba0214f8d3168647e8ad4232b83987ef", "release": null, "protected": false, "commit_id": "2831d897ba0214f8d3168647e8ad4232b83987ef", "project_id": 25157276}, "emitted_at": 1682503040590} +{"stream": "tags", "data": {"name": "fake-tag-6", "message": "", "target": "2831d897ba0214f8d3168647e8ad4232b83987ef", "release": {"tag_name": "fake-tag-6", "description": "Test Release"}, "protected": false, "commit_id": "2831d897ba0214f8d3168647e8ad4232b83987ef", "project_id": 25157276}, "emitted_at": 1682503040590} +{"stream": "tags", "data": {"name": "fake-tag-7", "message": "", "target": "2831d897ba0214f8d3168647e8ad4232b83987ef", "release": null, "protected": false, "commit_id": "2831d897ba0214f8d3168647e8ad4232b83987ef", "project_id": 25157276}, "emitted_at": 1682503040590} +{"stream": "tags", "data": {"name": "fake-tag-8", "message": "", "target": "2831d897ba0214f8d3168647e8ad4232b83987ef", "release": null, "protected": false, "commit_id": "2831d897ba0214f8d3168647e8ad4232b83987ef", "project_id": 25157276}, "emitted_at": 1682503040590} +{"stream": "tags", "data": {"name": "fake-tag-9", "message": "", "target": "2831d897ba0214f8d3168647e8ad4232b83987ef", "release": null, "protected": false, "commit_id": "2831d897ba0214f8d3168647e8ad4232b83987ef", "project_id": 25157276}, "emitted_at": 1682503040917} +{"stream": "pipelines", "data": {"id": 272632767, "iid": 2, "project_id": 25157276, "sha": "6ad3dd49539391774db738c9e7b7d69f2d872c98", "ref": "master", "status": "failed", "source": "push", "created_at": "2021-03-18T12:51:06.262Z", "updated_at": "2021-03-18T12:51:52.007Z", "web_url": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/pipelines/272632767"}, "emitted_at": 1682503041218} +{"stream": "pipelines", "data": {"id": 272631271, "iid": 1, "project_id": 25157276, "sha": "028c02d96f40afe9b4d1173c1d0f712dd6d07302", "ref": "ykurochkin/add-fake-CI-config", "status": "failed", "source": "push", "created_at": "2021-03-18T12:48:49.174Z", "updated_at": "2021-03-18T12:49:38.092Z", "web_url": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/pipelines/272631271"}, "emitted_at": 1682503041218} +{"stream": "pipelines_extended", "data": {"id": 272632767, "iid": 2, "project_id": 25157276, "sha": "6ad3dd49539391774db738c9e7b7d69f2d872c98", "ref": "master", "status": "failed", "source": "push", "created_at": "2021-03-18T12:51:06.262Z", "updated_at": "2021-03-18T12:51:52.007Z", "web_url": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/pipelines/272632767", "before_sha": "2831d897ba0214f8d3168647e8ad4232b83987ef", "tag": false, "yaml_errors": null, "user": {"id": 8375961, "username": "airbyte", "name": "Airbyte Team", "state": "active", "avatar_url": "https://secure.gravatar.com/avatar/0a7841feac7218131ce7b427283c24ef?s=80&d=identicon", "web_url": "https://gitlab.com/airbyte"}, "started_at": "2021-03-18T12:51:07.816Z", "finished_at": "2021-03-18T12:51:52.000Z", "committed_at": null, "duration": 43, "queued_duration": 1, "coverage": null, "detailed_status": {"icon": "status_failed", "text": "failed", "label": "failed", "group": "failed", "tooltip": "failed", "has_details": false, "details_path": "/new-group-airbute/new-ci-test-project/-/pipelines/272632767", "illustration": null, "favicon": "/assets/ci_favicons/favicon_status_failed-41304d7f7e3828808b0c26771f0309e55296819a9beea3ea9fbf6689d9857c12.png"}}, "emitted_at": 1682503043349} +{"stream": "pipelines_extended", "data": {"id": 272631271, "iid": 1, "project_id": 25157276, "sha": "028c02d96f40afe9b4d1173c1d0f712dd6d07302", "ref": "ykurochkin/add-fake-CI-config", "status": "failed", "source": "push", "created_at": "2021-03-18T12:48:49.174Z", "updated_at": "2021-03-18T12:49:38.092Z", "web_url": "https://gitlab.com/new-group-airbute/new-ci-test-project/-/pipelines/272631271", "before_sha": "0000000000000000000000000000000000000000", "tag": false, "yaml_errors": null, "user": {"id": 8375961, "username": "airbyte", "name": "Airbyte Team", "state": "active", "avatar_url": "https://secure.gravatar.com/avatar/0a7841feac7218131ce7b427283c24ef?s=80&d=identicon", "web_url": "https://gitlab.com/airbyte"}, "started_at": "2021-03-18T12:48:50.166Z", "finished_at": "2021-03-18T12:49:38.084Z", "committed_at": null, "duration": 47, "queued_duration": null, "coverage": null, "detailed_status": {"icon": "status_failed", "text": "failed", "label": "failed", "group": "failed", "tooltip": "failed", "has_details": false, "details_path": "/new-group-airbute/new-ci-test-project/-/pipelines/272631271", "illustration": null, "favicon": "/assets/ci_favicons/favicon_status_failed-41304d7f7e3828808b0c26771f0309e55296819a9beea3ea9fbf6689d9857c12.png"}}, "emitted_at": 1682503043647} +{"stream": "users", "data": {"id": 7904355, "username": "y.kurochkin", "name": "Yevhenii Kurochkin", "state": "active", "avatar_url": "https://secure.gravatar.com/avatar/760fcac88680c724a6b19c6bfd5b6718?s=80&d=identicon", "web_url": "https://gitlab.com/y.kurochkin"}, "emitted_at": 1682503045230} +{"stream": "users", "data": {"id": 8375961, "username": "airbyte", "name": "Airbyte Team", "state": "active", "avatar_url": "https://secure.gravatar.com/avatar/0a7841feac7218131ce7b427283c24ef?s=80&d=identicon", "web_url": "https://gitlab.com/airbyte"}, "emitted_at": 1682503045230} diff --git a/airbyte-integrations/connectors/source-greenhouse/Dockerfile b/airbyte-integrations/connectors/source-greenhouse/Dockerfile index 1d5583cf9c48e..ec6cae2a94d30 100644 --- a/airbyte-integrations/connectors/source-greenhouse/Dockerfile +++ b/airbyte-integrations/connectors/source-greenhouse/Dockerfile @@ -12,5 +12,5 @@ COPY main.py ./ ENV AIRBYTE_ENTRYPOINT "python /airbyte/integration_code/main.py" ENTRYPOINT ["python", "/airbyte/integration_code/main.py"] -LABEL io.airbyte.version=0.3.1 +LABEL io.airbyte.version=0.4.0 LABEL io.airbyte.name=airbyte/source-greenhouse diff --git a/airbyte-integrations/connectors/source-greenhouse/acceptance-test-config.yml b/airbyte-integrations/connectors/source-greenhouse/acceptance-test-config.yml index d3de7f307282c..71f170151611e 100644 --- a/airbyte-integrations/connectors/source-greenhouse/acceptance-test-config.yml +++ b/airbyte-integrations/connectors/source-greenhouse/acceptance-test-config.yml @@ -5,36 +5,45 @@ test_strictness_level: "high" acceptance_tests: spec: tests: - - spec_path: "source_greenhouse/spec.json" + - spec_path: "source_greenhouse/spec.json" connection: tests: - - config_path: "secrets/config.json" - status: "succeed" - - config_path: "integration_tests/config_invalid.json" - status: "failed" + - config_path: "secrets/config.json" + status: "succeed" + - config_path: "integration_tests/config_invalid.json" + status: "failed" discovery: tests: - - config_path: "secrets/config_users_only.json" - - config_path: "secrets/config.json" + - config_path: "secrets/config_users_only.json" + - config_path: "secrets/config.json" basic_read: tests: - - config_path: "secrets/config.json" - expect_records: - path: "integration_tests/expected_records.jsonl" - fail_on_extra_columns: false - ignored_fields: - users: - - name: updated_at - bypass_reason: "Updated when you login to account" + - config_path: "secrets/config.json" + expect_records: + path: "integration_tests/expected_records.jsonl" + fail_on_extra_columns: false + empty_streams: + - name: eeoc + bypass_reason: "No data" + - name: prospect_pools + bypass_reason: "No data" + - name: tags + bypass_reason: "No data" + - name: user_permissions + bypass_reason: "No Data" + ignored_fields: + users: + - name: updated_at + bypass_reason: "Updated when you login to account" full_refresh: tests: - - config_path: "secrets/config.json" - configured_catalog_path: "integration_tests/configured_catalog.json" - - config_path: "secrets/config_users_only.json" - configured_catalog_path: "integration_tests/configured_catalog_users_only.json" + - config_path: "secrets/config.json" + configured_catalog_path: "integration_tests/configured_catalog.json" + - config_path: "secrets/config_users_only.json" + configured_catalog_path: "integration_tests/configured_catalog_users_only.json" incremental: tests: - - config_path: "secrets/config.json" - configured_catalog_path: "integration_tests/incremental_configured_catalog.json" - future_state: - future_state_path: "integration_tests/abnormal_state.json" + - config_path: "secrets/config.json" + configured_catalog_path: "integration_tests/incremental_configured_catalog.json" + future_state: + future_state_path: "integration_tests/abnormal_state.json" diff --git a/airbyte-integrations/connectors/source-greenhouse/integration_tests/configured_catalog.json b/airbyte-integrations/connectors/source-greenhouse/integration_tests/configured_catalog.json index 510dfda96156f..3042f13e5a4b4 100644 --- a/airbyte-integrations/connectors/source-greenhouse/integration_tests/configured_catalog.json +++ b/airbyte-integrations/connectors/source-greenhouse/integration_tests/configured_catalog.json @@ -325,6 +325,90 @@ "primary_key": [["id"]], "cursor_field": ["updated_at"], "destination_sync_mode": "overwrite" + }, + { + "stream": { + "name": "activity_feed", + "json_schema": {}, + "supported_sync_modes": ["full_refresh"], + "source_defined_cursor": false + }, + "sync_mode": "full_refresh", + "destination_sync_mode": "overwrite" + }, + { + "stream": { + "name": "approvals", + "json_schema": {}, + "supported_sync_modes": ["full_refresh"], + "source_defined_cursor": false, + "source_defined_primary_key": [["id"]] + }, + "sync_mode": "full_refresh", + "primary_key": [["id"]], + "destination_sync_mode": "overwrite" + }, + { + "stream": { + "name": "disciplines", + "json_schema": {}, + "supported_sync_modes": ["full_refresh"], + "source_defined_cursor": false, + "source_defined_primary_key": [["id"]] + }, + "sync_mode": "full_refresh", + "primary_key": [["id"]], + "destination_sync_mode": "overwrite" + }, + { + "stream": { + "name": "schools", + "json_schema": {}, + "supported_sync_modes": ["full_refresh"], + "source_defined_cursor": false, + "source_defined_primary_key": [["id"]] + }, + "sync_mode": "full_refresh", + "primary_key": [["id"]], + "destination_sync_mode": "overwrite" + }, + { + "stream": { + "name": "email_templates", + "json_schema": {}, + "supported_sync_modes": ["full_refresh", "incremental"], + "source_defined_cursor": true, + "default_cursor_field": ["updated_at"], + "source_defined_primary_key": [["id"]] + }, + "sync_mode": "full_refresh", + "primary_key": [["id"]], + "cursor_field": ["updated_at"], + "destination_sync_mode": "overwrite" + }, + { + "stream": { + "name": "offices", + "json_schema": {}, + "supported_sync_modes": ["full_refresh"], + "source_defined_cursor": false, + "source_defined_primary_key": [["id"]] + }, + "sync_mode": "full_refresh", + "primary_key": [["id"]], + "destination_sync_mode": "overwrite" + }, + { + "stream": { + "name": "user_roles", + "json_schema": {}, + "supported_sync_modes": ["full_refresh"], + "source_defined_cursor": false, + "source_defined_primary_key": [["id"]] + }, + "sync_mode": "full_refresh", + "primary_key": [["id"]], + "destination_sync_mode": "overwrite" } ] } diff --git a/airbyte-integrations/connectors/source-greenhouse/integration_tests/expected_records.jsonl b/airbyte-integrations/connectors/source-greenhouse/integration_tests/expected_records.jsonl index 4e6cea5885282..b101bd61de516 100644 --- a/airbyte-integrations/connectors/source-greenhouse/integration_tests/expected_records.jsonl +++ b/airbyte-integrations/connectors/source-greenhouse/integration_tests/expected_records.jsonl @@ -64,3 +64,210 @@ {"stream": "jobs_stages", "data": {"id": 5245804003, "name": "Preliminary Phone Screen", "created_at": "2020-11-24T23:27:11.756Z", "updated_at": "2020-11-24T23:27:11.756Z", "active": true, "job_id": 4177046003, "priority": 1, "interviews": [{"id": 5628615003, "name": "Preliminary Screening Call", "schedulable": true, "interview_kit": {"id": 5628610003, "content": null, "questions": []}, "estimated_minutes": 20, "default_interviewer_users": []}]}, "emitted_at": 1671104737185} {"stream": "jobs_stages", "data": {"id": 5245805003, "name": "Phone Interview", "created_at": "2020-11-24T23:27:11.756Z", "updated_at": "2020-11-24T23:27:11.756Z", "active": true, "job_id": 4177046003, "priority": 2, "interviews": [{"id": 5628616003, "name": "Behavioral Phone Interview", "schedulable": true, "interview_kit": {"id": 5628611003, "content": null, "questions": []}, "estimated_minutes": 30, "default_interviewer_users": []}]}, "emitted_at": 1671104737187} {"stream":"demographics_question_sets_questions","data":{"translations":[{"name":"q1","language":"en"}],"required":false,"name":"q1","id":4000714003,"demographic_question_set_id":4000197003,"answer_type":"multi_value_single_select","active":true},"emitted_at":1674591295418} +{"stream": "approvals", "data": {"id": 5217303003, "offer_id": null, "sequential": true, "version": 1, "approval_type": "open_job", "approval_status": "approved", "job_id": 4177048003, "requested_by_user_id": null, "approver_groups": []}, "emitted_at": 1681933619451} +{"stream": "approvals", "data": {"id": 5217304003, "offer_id": null, "sequential": true, "version": 1, "approval_type": "offer_job", "approval_status": "approved", "job_id": 4177048003, "requested_by_user_id": null, "approver_groups": []}, "emitted_at": 1681933619454} +{"stream": "approvals", "data": {"id": 5217305003, "offer_id": null, "sequential": true, "version": 1, "approval_type": "offer_candidate", "approval_status": "approved", "job_id": 4177048003, "requested_by_user_id": null, "approver_groups": []}, "emitted_at": 1681933619457} +{"stream": "schools", "data": {"id": 10845822003, "name": "Abraham Baldwin Agricultural College", "priority": 0, "external_id": null}, "emitted_at": 1681933683603} +{"stream": "schools", "data": {"id": 10845823003, "name": "Academy of Art University", "priority": 1, "external_id": null}, "emitted_at": 1681933683605} +{"stream": "schools", "data": {"id": 10845824003, "name": "Acadia University", "priority": 2, "external_id": null}, "emitted_at": 1681933683607} +{"stream": "schools", "data": {"id": 10845825003, "name": "Adams State University", "priority": 3, "external_id": null}, "emitted_at": 1681933683608} +{"stream": "schools", "data": {"id": 10845826003, "name": "Adelphi University", "priority": 4, "external_id": null}, "emitted_at": 1681933683610} +{"stream": "schools", "data": {"id": 10845827003, "name": "Adrian College", "priority": 5, "external_id": null}, "emitted_at": 1681933683611} +{"stream": "schools", "data": {"id": 10845828003, "name": "Adventist University of Health Sciences", "priority": 6, "external_id": null}, "emitted_at": 1681933683612} +{"stream": "schools", "data": {"id": 10845829003, "name": "Agnes Scott College", "priority": 7, "external_id": null}, "emitted_at": 1681933683613} +{"stream": "schools", "data": {"id": 10845830003, "name": "AIB College of Business", "priority": 8, "external_id": null}, "emitted_at": 1681933683614} +{"stream": "schools", "data": {"id": 10845831003, "name": "Alaska Pacific University", "priority": 9, "external_id": null}, "emitted_at": 1681933683615} +{"stream": "schools", "data": {"id": 10845832003, "name": "Albany College of Pharmacy and Health Sciences", "priority": 10, "external_id": null}, "emitted_at": 1681933683617} +{"stream": "schools", "data": {"id": 10845833003, "name": "Albany State University", "priority": 11, "external_id": null}, "emitted_at": 1681933683618} +{"stream": "schools", "data": {"id": 10845834003, "name": "Albertus Magnus College", "priority": 12, "external_id": null}, "emitted_at": 1681933683619} +{"stream": "schools", "data": {"id": 10845835003, "name": "Albion College", "priority": 13, "external_id": null}, "emitted_at": 1681933683620} +{"stream": "schools", "data": {"id": 10845836003, "name": "Albright College", "priority": 14, "external_id": null}, "emitted_at": 1681933683621} +{"stream": "schools", "data": {"id": 10845837003, "name": "Alderson Broaddus University", "priority": 15, "external_id": null}, "emitted_at": 1681933683622} +{"stream": "schools", "data": {"id": 10845838003, "name": "Alfred University", "priority": 16, "external_id": null}, "emitted_at": 1681933683624} +{"stream": "schools", "data": {"id": 10845839003, "name": "Alice Lloyd College", "priority": 17, "external_id": null}, "emitted_at": 1681933683625} +{"stream": "schools", "data": {"id": 10845840003, "name": "Allegheny College", "priority": 18, "external_id": null}, "emitted_at": 1681933683626} +{"stream": "schools", "data": {"id": 10845841003, "name": "Allen College", "priority": 19, "external_id": null}, "emitted_at": 1681933683627} +{"stream": "schools", "data": {"id": 10845842003, "name": "Allen University", "priority": 20, "external_id": null}, "emitted_at": 1681933683628} +{"stream": "schools", "data": {"id": 10845843003, "name": "Alliant International University", "priority": 21, "external_id": null}, "emitted_at": 1681933683629} +{"stream": "schools", "data": {"id": 10845844003, "name": "Alma College", "priority": 22, "external_id": null}, "emitted_at": 1681933683630} +{"stream": "schools", "data": {"id": 10845845003, "name": "Alvernia University", "priority": 23, "external_id": null}, "emitted_at": 1681933683632} +{"stream": "schools", "data": {"id": 10845846003, "name": "Alverno College", "priority": 24, "external_id": null}, "emitted_at": 1681933683633} +{"stream": "schools", "data": {"id": 10845847003, "name": "Amberton University", "priority": 25, "external_id": null}, "emitted_at": 1681933683634} +{"stream": "schools", "data": {"id": 10845848003, "name": "American Academy of Art", "priority": 26, "external_id": null}, "emitted_at": 1681933683635} +{"stream": "schools", "data": {"id": 10845849003, "name": "American Indian College of the Assemblies of God", "priority": 27, "external_id": null}, "emitted_at": 1681933683636} +{"stream": "schools", "data": {"id": 10845850003, "name": "American InterContinental University", "priority": 28, "external_id": null}, "emitted_at": 1681933683637} +{"stream": "schools", "data": {"id": 10845851003, "name": "American International College", "priority": 29, "external_id": null}, "emitted_at": 1681933683638} +{"stream": "schools", "data": {"id": 10845852003, "name": "American Jewish University", "priority": 30, "external_id": null}, "emitted_at": 1681933683639} +{"stream": "schools", "data": {"id": 10845853003, "name": "American Public University System", "priority": 31, "external_id": null}, "emitted_at": 1681933683640} +{"stream": "schools", "data": {"id": 10845854003, "name": "American University", "priority": 32, "external_id": null}, "emitted_at": 1681933683641} +{"stream": "schools", "data": {"id": 10845855003, "name": "American University in Bulgaria", "priority": 33, "external_id": null}, "emitted_at": 1681933683643} +{"stream": "schools", "data": {"id": 10845856003, "name": "American University in Cairo", "priority": 34, "external_id": null}, "emitted_at": 1681933683644} +{"stream": "schools", "data": {"id": 10845857003, "name": "American University of Beirut", "priority": 35, "external_id": null}, "emitted_at": 1681933683645} +{"stream": "schools", "data": {"id": 10845858003, "name": "American University of Paris", "priority": 36, "external_id": null}, "emitted_at": 1681933683646} +{"stream": "schools", "data": {"id": 10845859003, "name": "American University of Puerto Rico", "priority": 37, "external_id": null}, "emitted_at": 1681933683647} +{"stream": "schools", "data": {"id": 10845860003, "name": "Amherst College", "priority": 38, "external_id": null}, "emitted_at": 1681933683648} +{"stream": "schools", "data": {"id": 10845861003, "name": "Amridge University", "priority": 39, "external_id": null}, "emitted_at": 1681933683649} +{"stream": "schools", "data": {"id": 10845862003, "name": "Anderson University", "priority": 40, "external_id": null}, "emitted_at": 1681933683650} +{"stream": "schools", "data": {"id": 10845863003, "name": "Andrews University", "priority": 41, "external_id": null}, "emitted_at": 1681933683651} +{"stream": "schools", "data": {"id": 10845864003, "name": "Angelo State University", "priority": 42, "external_id": null}, "emitted_at": 1681933683652} +{"stream": "schools", "data": {"id": 10845865003, "name": "Anna Maria College", "priority": 43, "external_id": null}, "emitted_at": 1681933683653} +{"stream": "schools", "data": {"id": 10845866003, "name": "Antioch University", "priority": 44, "external_id": null}, "emitted_at": 1681933683653} +{"stream": "schools", "data": {"id": 10845867003, "name": "Appalachian Bible College", "priority": 45, "external_id": null}, "emitted_at": 1681933683654} +{"stream": "schools", "data": {"id": 10845868003, "name": "Aquinas College", "priority": 46, "external_id": null}, "emitted_at": 1681933683655} +{"stream": "schools", "data": {"id": 10845869003, "name": "Arcadia University", "priority": 47, "external_id": null}, "emitted_at": 1681933683656} +{"stream": "schools", "data": {"id": 10845870003, "name": "Argosy University", "priority": 48, "external_id": null}, "emitted_at": 1681933683657} +{"stream": "schools", "data": {"id": 10845871003, "name": "Arizona Christian University", "priority": 49, "external_id": null}, "emitted_at": 1681933683658} +{"stream": "schools", "data": {"id": 10845872003, "name": "Arizona State University - West", "priority": 50, "external_id": null}, "emitted_at": 1681933683659} +{"stream": "schools", "data": {"id": 10845873003, "name": "Arkansas Baptist College", "priority": 51, "external_id": null}, "emitted_at": 1681933683659} +{"stream": "schools", "data": {"id": 10845874003, "name": "Arkansas Tech University", "priority": 52, "external_id": null}, "emitted_at": 1681933683660} +{"stream": "schools", "data": {"id": 10845875003, "name": "Armstrong Atlantic State University", "priority": 53, "external_id": null}, "emitted_at": 1681933683661} +{"stream": "schools", "data": {"id": 10845876003, "name": "Art Academy of Cincinnati", "priority": 54, "external_id": null}, "emitted_at": 1681933683662} +{"stream": "schools", "data": {"id": 10845877003, "name": "Art Center College of Design", "priority": 55, "external_id": null}, "emitted_at": 1681933683663} +{"stream": "schools", "data": {"id": 10845878003, "name": "Art Institute of Atlanta", "priority": 56, "external_id": null}, "emitted_at": 1681933683664} +{"stream": "schools", "data": {"id": 10845879003, "name": "Art Institute of Colorado", "priority": 57, "external_id": null}, "emitted_at": 1681933683665} +{"stream": "schools", "data": {"id": 10845880003, "name": "Art Institute of Houston", "priority": 58, "external_id": null}, "emitted_at": 1681933683665} +{"stream": "schools", "data": {"id": 10845881003, "name": "Art Institute of Pittsburgh", "priority": 59, "external_id": null}, "emitted_at": 1681933683666} +{"stream": "schools", "data": {"id": 10845882003, "name": "Art Institute of Portland", "priority": 60, "external_id": null}, "emitted_at": 1681933683667} +{"stream": "schools", "data": {"id": 10845883003, "name": "Art Institute of Seattle", "priority": 61, "external_id": null}, "emitted_at": 1681933683668} +{"stream": "schools", "data": {"id": 10845884003, "name": "Asbury University", "priority": 62, "external_id": null}, "emitted_at": 1681933683669} +{"stream": "schools", "data": {"id": 10845885003, "name": "Ashford University", "priority": 63, "external_id": null}, "emitted_at": 1681933683670} +{"stream": "schools", "data": {"id": 10845886003, "name": "Ashland University", "priority": 64, "external_id": null}, "emitted_at": 1681933683670} +{"stream": "schools", "data": {"id": 10845887003, "name": "Assumption College", "priority": 65, "external_id": null}, "emitted_at": 1681933683671} +{"stream": "schools", "data": {"id": 10845888003, "name": "Athens State University", "priority": 66, "external_id": null}, "emitted_at": 1681933683672} +{"stream": "schools", "data": {"id": 10845889003, "name": "Auburn University - Montgomery", "priority": 67, "external_id": null}, "emitted_at": 1681933683673} +{"stream": "schools", "data": {"id": 10845890003, "name": "Augsburg College", "priority": 68, "external_id": null}, "emitted_at": 1681933683674} +{"stream": "schools", "data": {"id": 10845891003, "name": "Augustana College", "priority": 69, "external_id": null}, "emitted_at": 1681933683675} +{"stream": "schools", "data": {"id": 10845892003, "name": "Aurora University", "priority": 70, "external_id": null}, "emitted_at": 1681933683676} +{"stream": "schools", "data": {"id": 10845893003, "name": "Austin College", "priority": 71, "external_id": null}, "emitted_at": 1681933683676} +{"stream": "schools", "data": {"id": 10845894003, "name": "Alcorn State University", "priority": 72, "external_id": null}, "emitted_at": 1681933683677} +{"stream": "schools", "data": {"id": 10845895003, "name": "Ave Maria University", "priority": 73, "external_id": null}, "emitted_at": 1681933683678} +{"stream": "schools", "data": {"id": 10845896003, "name": "Averett University", "priority": 74, "external_id": null}, "emitted_at": 1681933683679} +{"stream": "schools", "data": {"id": 10845897003, "name": "Avila University", "priority": 75, "external_id": null}, "emitted_at": 1681933683680} +{"stream": "schools", "data": {"id": 10845898003, "name": "Azusa Pacific University", "priority": 76, "external_id": null}, "emitted_at": 1681933683681} +{"stream": "schools", "data": {"id": 10845899003, "name": "Babson College", "priority": 77, "external_id": null}, "emitted_at": 1681933683681} +{"stream": "schools", "data": {"id": 10845900003, "name": "Bacone College", "priority": 78, "external_id": null}, "emitted_at": 1681933683682} +{"stream": "schools", "data": {"id": 10845901003, "name": "Baker College of Flint", "priority": 79, "external_id": null}, "emitted_at": 1681933683683} +{"stream": "schools", "data": {"id": 10845902003, "name": "Baker University", "priority": 80, "external_id": null}, "emitted_at": 1681933683684} +{"stream": "schools", "data": {"id": 10845903003, "name": "Baldwin Wallace University", "priority": 81, "external_id": null}, "emitted_at": 1681933683685} +{"stream": "schools", "data": {"id": 10845904003, "name": "Christian Brothers University", "priority": 82, "external_id": null}, "emitted_at": 1681933683686} +{"stream": "schools", "data": {"id": 10845905003, "name": "Abilene Christian University", "priority": 83, "external_id": null}, "emitted_at": 1681933683687} +{"stream": "schools", "data": {"id": 10845906003, "name": "Arizona State University", "priority": 84, "external_id": null}, "emitted_at": 1681933683687} +{"stream": "schools", "data": {"id": 10845907003, "name": "Auburn University", "priority": 85, "external_id": null}, "emitted_at": 1681933683688} +{"stream": "schools", "data": {"id": 10845908003, "name": "Alabama A&M University", "priority": 86, "external_id": null}, "emitted_at": 1681933683689} +{"stream": "schools", "data": {"id": 10845909003, "name": "Alabama State University", "priority": 87, "external_id": null}, "emitted_at": 1681933683690} +{"stream": "schools", "data": {"id": 10845910003, "name": "Arkansas State University", "priority": 88, "external_id": null}, "emitted_at": 1681933683691} +{"stream": "schools", "data": {"id": 10845911003, "name": "Baptist Bible College", "priority": 89, "external_id": null}, "emitted_at": 1681933683692} +{"stream": "schools", "data": {"id": 10845912003, "name": "Baptist Bible College and Seminary", "priority": 90, "external_id": null}, "emitted_at": 1681933683692} +{"stream": "schools", "data": {"id": 10845913003, "name": "Baptist College of Florida", "priority": 91, "external_id": null}, "emitted_at": 1681933683693} +{"stream": "schools", "data": {"id": 10845914003, "name": "Baptist Memorial College of Health Sciences", "priority": 92, "external_id": null}, "emitted_at": 1681933683694} +{"stream": "schools", "data": {"id": 10845915003, "name": "Baptist Missionary Association Theological Seminary", "priority": 93, "external_id": null}, "emitted_at": 1681933683695} +{"stream": "schools", "data": {"id": 10845916003, "name": "Bard College", "priority": 94, "external_id": null}, "emitted_at": 1681933683696} +{"stream": "schools", "data": {"id": 10845917003, "name": "Bard College at Simon's Rock", "priority": 95, "external_id": null}, "emitted_at": 1681933683697} +{"stream": "schools", "data": {"id": 10845918003, "name": "Barnard College", "priority": 96, "external_id": null}, "emitted_at": 1681933683698} +{"stream": "schools", "data": {"id": 10845919003, "name": "Barry University", "priority": 97, "external_id": null}, "emitted_at": 1681933683698} +{"stream": "schools", "data": {"id": 10845920003, "name": "Barton College", "priority": 98, "external_id": null}, "emitted_at": 1681933683699} +{"stream": "schools", "data": {"id": 10845921003, "name": "Bastyr University", "priority": 99, "external_id": null}, "emitted_at": 1681933683700} +{"stream": "offices", "data": {"id": 4019854003, "name": "Test office", "location": {"name": null}, "primary_contact_user_id": 4218086003, "parent_id": null, "parent_office_external_id": null, "child_ids": [], "child_office_external_ids": [], "external_id": null}, "emitted_at": 1681933973520} +{"stream": "disciplines", "data": {"id": 10848297003, "name": "Accounting", "priority": 0, "external_id": null}, "emitted_at": 1681934694438} +{"stream": "disciplines", "data": {"id": 10848298003, "name": "African Studies", "priority": 1, "external_id": null}, "emitted_at": 1681934694442} +{"stream": "disciplines", "data": {"id": 10848299003, "name": "Agriculture", "priority": 2, "external_id": null}, "emitted_at": 1681934694445} +{"stream": "disciplines", "data": {"id": 10848300003, "name": "Anthropology", "priority": 3, "external_id": null}, "emitted_at": 1681934694447} +{"stream": "disciplines", "data": {"id": 10848301003, "name": "Applied Health Services", "priority": 4, "external_id": null}, "emitted_at": 1681934694449} +{"stream": "disciplines", "data": {"id": 10848302003, "name": "Architecture", "priority": 5, "external_id": null}, "emitted_at": 1681934694452} +{"stream": "disciplines", "data": {"id": 10848303003, "name": "Art", "priority": 6, "external_id": null}, "emitted_at": 1681934694454} +{"stream": "disciplines", "data": {"id": 10848304003, "name": "Asian Studies", "priority": 7, "external_id": null}, "emitted_at": 1681934694457} +{"stream": "disciplines", "data": {"id": 10848305003, "name": "Biology", "priority": 8, "external_id": null}, "emitted_at": 1681934694458} +{"stream": "disciplines", "data": {"id": 10848306003, "name": "Business", "priority": 9, "external_id": null}, "emitted_at": 1681934694461} +{"stream": "disciplines", "data": {"id": 10848307003, "name": "Business Administration", "priority": 10, "external_id": null}, "emitted_at": 1681934694462} +{"stream": "disciplines", "data": {"id": 10848308003, "name": "Chemistry", "priority": 11, "external_id": null}, "emitted_at": 1681934694464} +{"stream": "disciplines", "data": {"id": 10848309003, "name": "Classical Languages", "priority": 12, "external_id": null}, "emitted_at": 1681934694467} +{"stream": "disciplines", "data": {"id": 10848310003, "name": "Communications & Film", "priority": 13, "external_id": null}, "emitted_at": 1681934694469} +{"stream": "disciplines", "data": {"id": 10848311003, "name": "Computer Science", "priority": 14, "external_id": null}, "emitted_at": 1681934694472} +{"stream": "disciplines", "data": {"id": 10848312003, "name": "Dentistry", "priority": 15, "external_id": null}, "emitted_at": 1681934694475} +{"stream": "disciplines", "data": {"id": 10848313003, "name": "Developing Nations", "priority": 16, "external_id": null}, "emitted_at": 1681934694477} +{"stream": "disciplines", "data": {"id": 10848314003, "name": "Discipline Unknown", "priority": 17, "external_id": null}, "emitted_at": 1681934694480} +{"stream": "disciplines", "data": {"id": 10848315003, "name": "Earth Sciences", "priority": 18, "external_id": null}, "emitted_at": 1681934694481} +{"stream": "disciplines", "data": {"id": 10848316003, "name": "Economics", "priority": 19, "external_id": null}, "emitted_at": 1681934694483} +{"stream": "disciplines", "data": {"id": 10848317003, "name": "Education", "priority": 20, "external_id": null}, "emitted_at": 1681934694485} +{"stream": "disciplines", "data": {"id": 10848318003, "name": "Electronics", "priority": 21, "external_id": null}, "emitted_at": 1681934694487} +{"stream": "disciplines", "data": {"id": 10848319003, "name": "Engineering", "priority": 22, "external_id": null}, "emitted_at": 1681934694489} +{"stream": "disciplines", "data": {"id": 10848320003, "name": "English Studies", "priority": 23, "external_id": null}, "emitted_at": 1681934694492} +{"stream": "disciplines", "data": {"id": 10848321003, "name": "Environmental Studies", "priority": 24, "external_id": null}, "emitted_at": 1681934694493} +{"stream": "disciplines", "data": {"id": 10848322003, "name": "European Studies", "priority": 25, "external_id": null}, "emitted_at": 1681934694495} +{"stream": "disciplines", "data": {"id": 10848323003, "name": "Fashion", "priority": 26, "external_id": null}, "emitted_at": 1681934694496} +{"stream": "disciplines", "data": {"id": 10848324003, "name": "Finance", "priority": 27, "external_id": null}, "emitted_at": 1681934694498} +{"stream": "disciplines", "data": {"id": 10848325003, "name": "Fine Arts", "priority": 28, "external_id": null}, "emitted_at": 1681934694499} +{"stream": "disciplines", "data": {"id": 10848326003, "name": "General Studies", "priority": 29, "external_id": null}, "emitted_at": 1681934694501} +{"stream": "disciplines", "data": {"id": 10848327003, "name": "Health Services", "priority": 30, "external_id": null}, "emitted_at": 1681934694503} +{"stream": "disciplines", "data": {"id": 10848328003, "name": "History", "priority": 31, "external_id": null}, "emitted_at": 1681934694504} +{"stream": "disciplines", "data": {"id": 10848329003, "name": "Human Resources Management", "priority": 32, "external_id": null}, "emitted_at": 1681934694506} +{"stream": "disciplines", "data": {"id": 10848330003, "name": "Humanities", "priority": 33, "external_id": null}, "emitted_at": 1681934694508} +{"stream": "disciplines", "data": {"id": 10848331003, "name": "Industrial Arts & Carpentry", "priority": 34, "external_id": null}, "emitted_at": 1681934694510} +{"stream": "disciplines", "data": {"id": 10848332003, "name": "Information Systems", "priority": 35, "external_id": null}, "emitted_at": 1681934694511} +{"stream": "disciplines", "data": {"id": 10848333003, "name": "International Relations", "priority": 36, "external_id": null}, "emitted_at": 1681934694512} +{"stream": "disciplines", "data": {"id": 10848334003, "name": "Journalism", "priority": 37, "external_id": null}, "emitted_at": 1681934694514} +{"stream": "disciplines", "data": {"id": 10848335003, "name": "Languages", "priority": 38, "external_id": null}, "emitted_at": 1681934694515} +{"stream": "disciplines", "data": {"id": 10848336003, "name": "Latin American Studies", "priority": 39, "external_id": null}, "emitted_at": 1681934694516} +{"stream": "disciplines", "data": {"id": 10848337003, "name": "Law", "priority": 40, "external_id": null}, "emitted_at": 1681934694517} +{"stream": "disciplines", "data": {"id": 10848338003, "name": "Linguistics", "priority": 41, "external_id": null}, "emitted_at": 1681934694519} +{"stream": "disciplines", "data": {"id": 10848339003, "name": "Manufacturing & Mechanics", "priority": 42, "external_id": null}, "emitted_at": 1681934694521} +{"stream": "disciplines", "data": {"id": 10848340003, "name": "Mathematics", "priority": 43, "external_id": null}, "emitted_at": 1681934694523} +{"stream": "disciplines", "data": {"id": 10848341003, "name": "Medicine", "priority": 44, "external_id": null}, "emitted_at": 1681934694525} +{"stream": "disciplines", "data": {"id": 10848342003, "name": "Middle Eastern Studies", "priority": 45, "external_id": null}, "emitted_at": 1681934694526} +{"stream": "disciplines", "data": {"id": 10848343003, "name": "Naval Science", "priority": 46, "external_id": null}, "emitted_at": 1681934694527} +{"stream": "disciplines", "data": {"id": 10848344003, "name": "North American Studies", "priority": 47, "external_id": null}, "emitted_at": 1681934694529} +{"stream": "disciplines", "data": {"id": 10848345003, "name": "Nuclear Technics", "priority": 48, "external_id": null}, "emitted_at": 1681934694530} +{"stream": "disciplines", "data": {"id": 10848346003, "name": "Operations Research & Strategy", "priority": 49, "external_id": null}, "emitted_at": 1681934694531} +{"stream": "disciplines", "data": {"id": 10848347003, "name": "Organizational Theory", "priority": 50, "external_id": null}, "emitted_at": 1681934694533} +{"stream": "disciplines", "data": {"id": 10848348003, "name": "Philosophy", "priority": 51, "external_id": null}, "emitted_at": 1681934694534} +{"stream": "disciplines", "data": {"id": 10848349003, "name": "Physical Education", "priority": 52, "external_id": null}, "emitted_at": 1681934694536} +{"stream": "disciplines", "data": {"id": 10848350003, "name": "Physical Sciences", "priority": 53, "external_id": null}, "emitted_at": 1681934694537} +{"stream": "disciplines", "data": {"id": 10848351003, "name": "Physics", "priority": 54, "external_id": null}, "emitted_at": 1681934694540} +{"stream": "disciplines", "data": {"id": 10848352003, "name": "Political Science", "priority": 55, "external_id": null}, "emitted_at": 1681934694541} +{"stream": "disciplines", "data": {"id": 10848353003, "name": "Psychology", "priority": 56, "external_id": null}, "emitted_at": 1681934694543} +{"stream": "disciplines", "data": {"id": 10848354003, "name": "Public Policy", "priority": 57, "external_id": null}, "emitted_at": 1681934694544} +{"stream": "disciplines", "data": {"id": 10848355003, "name": "Public Service", "priority": 58, "external_id": null}, "emitted_at": 1681934694545} +{"stream": "disciplines", "data": {"id": 10848356003, "name": "Religious Studies", "priority": 59, "external_id": null}, "emitted_at": 1681934694547} +{"stream": "disciplines", "data": {"id": 10848357003, "name": "Russian & Soviet Studies", "priority": 60, "external_id": null}, "emitted_at": 1681934694548} +{"stream": "disciplines", "data": {"id": 10848358003, "name": "Scandinavian Studies", "priority": 61, "external_id": null}, "emitted_at": 1681934694549} +{"stream": "disciplines", "data": {"id": 10848359003, "name": "Science", "priority": 62, "external_id": null}, "emitted_at": 1681934694550} +{"stream": "disciplines", "data": {"id": 10848360003, "name": "Slavic Studies", "priority": 63, "external_id": null}, "emitted_at": 1681934694552} +{"stream": "disciplines", "data": {"id": 10848361003, "name": "Social Science", "priority": 64, "external_id": null}, "emitted_at": 1681934694553} +{"stream": "disciplines", "data": {"id": 10848362003, "name": "Social Sciences", "priority": 65, "external_id": null}, "emitted_at": 1681934694554} +{"stream": "disciplines", "data": {"id": 10848363003, "name": "Sociology", "priority": 66, "external_id": null}, "emitted_at": 1681934694556} +{"stream": "disciplines", "data": {"id": 10848364003, "name": "Speech", "priority": 67, "external_id": null}, "emitted_at": 1681934694557} +{"stream": "disciplines", "data": {"id": 10848365003, "name": "Statistics & Decision Theory", "priority": 68, "external_id": null}, "emitted_at": 1681934694559} +{"stream": "disciplines", "data": {"id": 10848366003, "name": "Urban Studies", "priority": 69, "external_id": null}, "emitted_at": 1681934694560} +{"stream": "disciplines", "data": {"id": 10848367003, "name": "Veterinary Medicine", "priority": 70, "external_id": null}, "emitted_at": 1681934694561} +{"stream": "disciplines", "data": {"id": 10848368003, "name": "Other", "priority": 71, "external_id": null}, "emitted_at": 1681934694562} +{"stream": "activity_feed", "data": {"emails": [], "notes": [], "activities": [{"id": 68322855003, "created_at": "2020-11-24T23:24:37.047Z", "subject": null, "body": "John Lafleur added Test Test through Greenhouse.", "user": null}], "linkedin_notes": [], "linkedin_inmails": []}, "emitted_at": 1681936729321} +{"stream": "activity_feed", "data": {"emails": [], "notes": [], "activities": [{"id": 68323000003, "created_at": "2020-11-24T23:25:13.802Z", "subject": null, "body": "John Lafleur added Test2 Test2 through Greenhouse.", "user": null}], "linkedin_notes": [], "linkedin_inmails": []}, "emitted_at": 1681936729557} +{"stream": "activity_feed", "data": {"emails": [], "notes": [], "activities": [{"id": 68323687003, "created_at": "2020-11-24T23:28:19.777Z", "subject": null, "body": "John Lafleur added Name Lastname through Greenhouse.", "user": null}], "linkedin_notes": [], "linkedin_inmails": []}, "emitted_at": 1681936729844} +{"stream": "activity_feed", "data": {"emails": [], "notes": [], "activities": [{"id": 68324733003, "created_at": "2020-11-24T23:32:25.778Z", "subject": null, "body": "John Lafleur created an offer for Jack D.", "user": {"id": 4218086003, "first_name": "Airbyte", "last_name": "Team", "name": "Airbyte Team", "employee_id": null}}, {"id": 68324702003, "created_at": "2020-11-24T23:32:12.116Z", "subject": null, "body": "Jack D was moved into Offer for Test Job 2 by John Lafleur.", "user": null}, {"id": 68324227003, "created_at": "2020-11-24T23:30:14.622Z", "subject": null, "body": "John Lafleur added Jack D through Greenhouse.", "user": null}], "linkedin_notes": [], "linkedin_inmails": []}, "emitted_at": 1681936730097} +{"stream": "activity_feed", "data": {"emails": [], "notes": [], "activities": [{"id": 188328519003, "created_at": "2021-09-29T16:38:03.617Z", "subject": "Rejected from Test job by John Lafleur", "body": "Reason: Other (add notes below)\n\nRejection reasons", "user": {"id": 4218086003, "first_name": "Airbyte", "last_name": "Team", "name": "Airbyte Team", "employee_id": null}}, {"id": 188328222003, "created_at": "2021-09-29T16:37:27.657Z", "subject": null, "body": "John Lafleur added Test User through Greenhouse.", "user": null}], "linkedin_notes": [], "linkedin_inmails": []}, "emitted_at": 1681936730375} +{"stream": "activity_feed", "data": {"emails": [{"id": 191580377003, "created_at": "2021-10-08T08:18:36.301Z", "subject": "Information Request for Airbyte Integration Sandbox", "body": "Test,\n\nThanks for your interest in the Test job position at Airbyte Integration Sandbox. Since we do not have a formal application from you on file, we have a few outstanding questions for you.\n\nPlease use this link to submit additional information: https://grnh.se/r/bc1d8b994d7e9895d733d77ce40483us\n\nRegards,\nJohn", "to": "vadym.hevlich@zazmic.com", "from": "\"John Lafleur\" ", "cc": [], "user": {"id": 4218086003, "first_name": "Airbyte", "last_name": "Team", "name": "Airbyte Team", "employee_id": null}}], "notes": [], "activities": [{"id": 192035490003, "created_at": "2021-10-10T16:21:44.211Z", "subject": null, "body": "Test Scheduled Interview was moved into Preliminary Phone Screen for Test job by Greenhouse Admin.", "user": null}, {"id": 188353359003, "created_at": "2021-09-29T17:20:36.122Z", "subject": null, "body": "John Lafleur added Test Scheduled Interview through Greenhouse.", "user": null}], "linkedin_notes": [], "linkedin_inmails": []}, "emitted_at": 1681936730635} +{"stream": "activity_feed", "data": {"emails": [{"id": 200928610003, "created_at": "2021-11-03T19:53:26.769Z", "subject": "Information Request for Airbyte Integration Sandbox", "body": "Test,\n\nThanks for your interest in the Test job 3 position at Airbyte Integration Sandbox. Since we do not have a formal application from you on file, we have a few outstanding questions for you.\n\nPlease use this link to submit additional information: https://grnh.se/r/b5d6c1c2aeefc20290006449efc093us\n\nRegards,\nJohn", "to": "vadym.hevlich@zazmic.com", "from": "\"John Lafleur\" ", "cc": [], "user": {"id": 4218086003, "first_name": "Airbyte", "last_name": "Team", "name": "Airbyte Team", "employee_id": null}}], "notes": [], "activities": [{"id": 200932536003, "created_at": "2021-11-03T19:56:07.399Z", "subject": null, "body": "Test Candidate submitted a job post for Test job 3.", "user": null}, {"id": 200925541003, "created_at": "2021-11-03T19:51:14.699Z", "subject": null, "body": "John Lafleur added Test Candidate through Greenhouse.", "user": null}], "linkedin_notes": [], "linkedin_inmails": []}, "emitted_at": 1681936730891} +{"stream": "activity_feed", "data": {"emails": [], "notes": [], "activities": [{"id": 207104666003, "created_at": "2021-11-22T08:41:55.711Z", "subject": null, "body": "John Lafleur added Yurii Cherniaev through Greenhouse.", "user": null}], "linkedin_notes": [], "linkedin_inmails": []}, "emitted_at": 1681936731132} +{"stream": "email_templates", "data": {"id": 4071597003, "name": "Default Eeoc Data Request", "default": true, "updated_at": "2021-12-20T18:37:50.451Z", "created_at": "2020-11-18T14:09:07.631Z", "description": "This template is used for requesting EEOC data from the candidate.", "type": "eeoc_data_request", "from": "no-reply@us.greenhouse-mail.io", "cc": [], "body": null, "html_body": "

Thank you for your interest in {{JOB_NAME}} at {{COMPANY}}.

\n\n

For government reporting purposes, we ask candidates to respond to the below self-identification survey.\nCompletion of the form is entirely voluntary. Whatever your decision, it will not be considered in the hiring\nprocess or thereafter. Any information that you do provide will be recorded and maintained in a\nconfidential file.

\n\n

As set forth in {{COMPANY}}\u2019s Equal Employment Opportunity policy,\nwe do not discriminate on the basis of any protected group status under any applicable law.

\n\n

Thank You

", "user": null}, "emitted_at": 1681936906593} +{"stream": "email_templates", "data": {"id": 4112339003, "name": "Default Candidate Self-Schedule request", "default": true, "updated_at": "2021-07-15T20:09:31.345Z", "created_at": "2021-07-15T20:09:31.345Z", "description": "This template is used when sending a request for a candidate to self-schedule.", "type": "candidate_self_schedule_request", "from": "{{MY_EMAIL_ADDRESS}}", "cc": [], "body": null, "html_body": "

Hi {{CANDIDATE_FIRST_NAME}},

\n\n

Please use this link to schedule your interview: {{INTERVIEW_REQUEST_LINK}}

\n\n

\n Regards,\n
\n {{MY_FIRST_NAME}}\n

", "user": null}, "emitted_at": 1681936906595} +{"stream": "email_templates", "data": {"id": 4071603003, "name": "Default Agency Job Assignment Notification", "default": true, "updated_at": "2020-11-18T14:09:07.667Z", "created_at": "2020-11-18T14:09:07.667Z", "description": "This template is used when an agency recruiter is added to a job", "type": "agency_recruiter_assigned", "from": "no-reply@us.greenhouse-mail.io", "cc": [], "body": null, "html_body": "

Hi,

\n\n

{{MY_FULL_NAME}} from {{COMPANY}} has assigned you to the {{JOB_NAME}} job. You can now view this job and submit candidates to it via the agency portal.

\n\n

\n Log in here to get started: app.greenhouse.io\n

\n\n

\n The Greenhouse Team
\n app.greenhouse.io\n

\n\n

\n \u00a9 2020 Greenhouse / 18 West 18th Street, 11th Floor, New York, NY 10011, USA\n

", "user": null}, "emitted_at": 1681936906596} +{"stream": "email_templates", "data": {"id": 4071602003, "name": "Default GDPR Consent Extension", "default": true, "updated_at": "2020-11-18T14:09:07.661Z", "created_at": "2020-11-18T14:09:07.661Z", "description": "This template is used when requesting consent to extend data retention", "type": "gdpr_consent_extension", "from": "no-reply@us.greenhouse-mail.io", "cc": [], "body": null, "html_body": "

Use this template to draft language that will automatically be sent to candidates whose data you would like to keep for an additional retention period. Consider consulting with your legal department on this copy.

", "user": null}, "emitted_at": 1681936906598} +{"stream": "email_templates", "data": {"id": 4071601003, "name": "Default Request Interview with Calendly", "default": true, "updated_at": "2020-11-18T14:09:07.655Z", "created_at": "2020-11-18T14:09:07.655Z", "description": "This template is used when sending a Calendly link to a candidate.", "type": "calendly_request", "from": "{{MY_EMAIL_ADDRESS}}", "cc": [], "body": null, "html_body": "

\n {{CANDIDATE_FIRST_NAME}},\n

\n\n

\n Thanks for your interest in the {{JOB_NAME}} position at {{COMPANY}}. We're excited to move forward with\n the interview process.\n

\n\n

\n To help us schedule your next interview(s), please select a time through the Calendly link below.\n

\n\n

\n Regards,\n
\n {{MY_FIRST_NAME}}\n

", "user": null}, "emitted_at": 1681936906600} +{"stream": "email_templates", "data": {"id": 4071600003, "name": "Default Rejection Notification For Followers", "default": true, "updated_at": "2020-11-18T14:09:07.649Z", "created_at": "2020-11-18T14:09:07.649Z", "description": "This template is sent to all followers of a candidate when they are marked as rejected.", "type": "rejection_for_followers", "from": "no-reply@us.greenhouse-mail.io", "cc": [], "body": null, "html_body": "

This is an automated message to alert you to a status change of {{CANDIDATE_NAME}},\na candidate whom you are following in Greenhouse. Please know that the hiring team\nhas decided not to move forward with this candidate's application for {{JOB_NAME}}.\nPlease be mindful that the candidate may not have been notified yet or could still\nbe active on other roles. We recommend reaching out to the hiring team with any\nquestions.

", "user": null}, "emitted_at": 1681936906602} +{"stream": "email_templates", "data": {"id": 4071599003, "name": "Default Stage Change Notification For Followers", "default": true, "updated_at": "2020-11-18T14:09:07.643Z", "created_at": "2020-11-18T14:09:07.643Z", "description": "This template is sent to all followers of a candidate when they are moved to a different stage in the\ninterview process.\n", "type": "stage_change_for_followers", "from": "no-reply@us.greenhouse-mail.io", "cc": [], "body": null, "html_body": "

{{CANDIDATE_NAME}}, whom you are following in Greenhouse, was moved into {{STAGE_NAME}}\nfor {{JOB_NAME}} by {{ACTING_USER}}.

", "user": null}, "emitted_at": 1681936906604} +{"stream": "email_templates", "data": {"id": 4071598003, "name": "Default Event Prospect Auto Reply", "default": true, "updated_at": "2020-11-18T14:09:07.637Z", "created_at": "2020-11-18T14:09:07.637Z", "description": "This template is sent automatically to prospects after your recruiting event.", "type": "event_prospect_auto_reply", "from": "no-reply@us.greenhouse-mail.io", "cc": [], "body": null, "html_body": "

{{CANDIDATE_FIRST_NAME}},

\n\n

Thank you for attending {{EVENT_NAME}}. If you haven't already submitted a resume or would like to upload a high resolution version of your resume, you can do so here: {{RESUME_UPLOAD_LINK}}.

\n\n

Regards,
\n{{COMPANY}}

\n\n

** Please note: Do not reply to this email. This email is sent from an unattended mailbox. Replies will not be read.

", "user": null}, "emitted_at": 1681936906605} +{"stream": "email_templates", "data": {"id": 4071596003, "name": "Default Candidate Interview Confirmation Message", "default": true, "updated_at": "2020-11-18T14:09:07.624Z", "created_at": "2020-11-18T14:09:07.624Z", "description": "This template is used for confirming candidate interviews.", "type": "candidate_availability_confirmation", "from": "{{MY_EMAIL_ADDRESS}}", "cc": [], "body": null, "html_body": "

{{CANDIDATE_FIRST_NAME}},

\n\n

Thanks for submitting your availability for the {{JOB_NAME}} position.

\n\n

You're confirmed for your interview on:

\n\n{{INTERVIEW_SCHEDULE}}\n\n

Let us know if you have any other questions before your interview.

\n\n

Thanks,
\n{{MY_FIRST_NAME}}

", "user": null}, "emitted_at": 1681936906607} +{"stream": "email_templates", "data": {"id": 4071595003, "name": "Default GDPR Notification", "default": true, "updated_at": "2020-11-18T14:09:07.619Z", "created_at": "2020-11-18T14:09:07.619Z", "description": "This template is used when sending a GDPR notification.", "type": "gdpr_notification", "from": "no-reply@us.greenhouse-mail.io", "cc": [], "body": null, "html_body": "

Use this template to draft language that will automatically be sent to candidates whose data you are collecting from other sources (not the candidates themselves) to comply with Art. 14 of GDPR. For more information, please visit our help center: https://support.greenhouse.io/hc/en-us/articles/360002038211

", "user": null}, "emitted_at": 1681936906609} +{"stream": "email_templates", "data": {"id": 4071594003, "name": "Default Job Post Request", "default": true, "updated_at": "2020-11-18T14:09:07.613Z", "created_at": "2020-11-18T14:09:07.613Z", "description": "This template is used when sending a job post for a candidate to complete.", "type": "job_post_request", "from": "{{MY_EMAIL_ADDRESS}}", "cc": [], "body": null, "html_body": "

{{CANDIDATE_FIRST_NAME}},

\n

Thanks for your interest in the {{JOB_NAME}} position at {{COMPANY}}. Since we do not have a formal application from you on file, we have a few outstanding questions for you.

\n\n

Please use this link to submit additional information: {{SUBMISSION_LINK}}

\n\n

Regards,
\n{{MY_FIRST_NAME}}

", "user": null}, "emitted_at": 1681936906611} +{"stream": "email_templates", "data": {"id": 4071593003, "name": "Default Candidate Availability Request Message", "default": true, "updated_at": "2020-11-18T14:09:07.607Z", "created_at": "2020-11-18T14:09:07.607Z", "description": "This template is used for requesting interview availability from the candidate.", "type": "candidate_availability_request", "from": "{{MY_EMAIL_ADDRESS}}", "cc": [], "body": null, "html_body": "

{{CANDIDATE_FIRST_NAME}},

\n\n

Thanks for your interest in the {{JOB_NAME}} position at {{COMPANY}}. We're excited to move forward with the interview process.

\n\n

To help us schedule your next interview(s), please let us know when you're available by selecting the online calendar link below.

\n\n

We'll coordinate with our team and confirm a time with you.

\n\n

Regards,
\n{{MY_FIRST_NAME}}

", "user": null}, "emitted_at": 1681936906612} +{"stream": "email_templates", "data": {"id": 4071592003, "name": "Default Prospect Referral Receipt", "default": true, "updated_at": "2020-11-18T14:09:07.601Z", "created_at": "2020-11-18T14:09:07.601Z", "description": "This template is used for letting users know their referral has been received.", "type": "prospect_referral_receipt", "from": "no-reply@us.greenhouse-mail.io", "cc": [], "body": null, "html_body": "

{{CANDIDATE_NAME}} has been submitted as a prospect.

\n

{{DUPLICATE_WARNING}}

\n

Click here to see all your referrals: {{MY_REFERRALS_URL}}

", "user": null}, "emitted_at": 1681936906614} +{"stream": "email_templates", "data": {"id": 4071591003, "name": "Default Candidate Referral Receipt", "default": true, "updated_at": "2020-11-18T14:09:07.595Z", "created_at": "2020-11-18T14:09:07.595Z", "description": "This template is used for letting users know their referral has been received.", "type": "candidate_referral_receipt", "from": "no-reply@us.greenhouse-mail.io", "cc": [], "body": null, "html_body": "

{{CANDIDATE_NAME}} has been submitted to {{JOB_NAME}}.

\n

\nRecruiter: {{RECRUITER}}
\nCoordinator: {{COORDINATOR}}\n

\n

{{DUPLICATE_WARNING}}

\n

Click here to see all your referrals: {{MY_REFERRALS_URL}}

", "user": null}, "emitted_at": 1681936906616} +{"stream": "email_templates", "data": {"id": 4071590003, "name": "Default Non Admin Welcome Message", "default": true, "updated_at": "2020-11-18T14:09:07.589Z", "created_at": "2020-11-18T14:09:07.589Z", "description": "This template is used for inviting new users to Greenhouse.", "type": "non_admin_welcome", "from": "no-reply@us.greenhouse-mail.io", "cc": [], "body": null, "html_body": "

Hi,

\n

{{MY_FULL_NAME}} has invited you to join Greenhouse!

\n\n

\n Greenhouse is the new recruiting software that {{COMPANY}} is using to be great at hiring.\n\n Specifically, we'll help prepare you for your interviews and make sure they're quick and easy.\n

\n\n

Click here to get started: {{INVITATION_LINK}}

\n\n

\n The Greenhouse Team
\n app.greenhouse.io\n

\n\n

\n Questions? Email us at support@greenhouse.io
\n \u00a9 2020 Greenhouse / 18 West 18th Street, 11th Floor, New York, NY 10011, USA\n

", "user": null}, "emitted_at": 1681936906618} +{"stream": "email_templates", "data": {"id": 4071589003, "name": "Default Job Admin Welcome Message", "default": true, "updated_at": "2020-11-18T14:09:07.582Z", "created_at": "2020-11-18T14:09:07.582Z", "description": "This template is used for inviting new users to Greenhouse.", "type": "job_admin_welcome", "from": "no-reply@us.greenhouse-mail.io", "cc": [], "body": null, "html_body": "

Hi,

\n

{{MY_FULL_NAME}} has invited you to join Greenhouse!

\n\n

\n Greenhouse is the new recruiting software that {{COMPANY}} is using to be great at hiring.\n\n Namely, we'll help you find and hire better people more quickly.\n

\n\n

Click here to get started: {{INVITATION_LINK}}

\n\n

\n The Greenhouse Team
\n app.greenhouse.io\n

\n\n

\n Questions? Email us at support@greenhouse.io
\n \u00a9 2020 Greenhouse / 18 West 18th Street, 11th Floor, New York, NY 10011, USA\n

", "user": null}, "emitted_at": 1681936906620} +{"stream": "email_templates", "data": {"id": 4071588003, "name": "Default Site Admin Welcome Message", "default": true, "updated_at": "2020-11-18T14:09:07.576Z", "created_at": "2020-11-18T14:09:07.576Z", "description": "This template is used for inviting new users to Greenhouse.", "type": "site_admin_welcome", "from": "no-reply@us.greenhouse-mail.io", "cc": [], "body": null, "html_body": "

Hi,

\n

{{MY_FULL_NAME}} has invited you to join Greenhouse!

\n\n

\n Greenhouse is the new recruiting software that {{COMPANY}} is using to be great at hiring.\n\n We'll make it easy for you to build and execute a world-class hiring plan.\n

\n\n

Click here to get started: {{INVITATION_LINK}}

\n\n

Sincerely,

\n\n

\n The Greenhouse Team
\n app.greenhouse.io\n

\n\n

\n Questions? Email us at support@greenhouse.io
\n \u00a9 2020 Greenhouse / 18 West 18th Street, 11th Floor, New York, NY 10011, USA\n

", "user": null}, "emitted_at": 1681936906622} +{"stream": "email_templates", "data": {"id": 4071587003, "name": "Default Interviewer Invite", "default": true, "updated_at": "2020-11-18T14:09:07.570Z", "created_at": "2020-11-18T14:09:07.570Z", "description": "This template is sent to interviewers when you schedule an interview.", "type": "interviewer_invite", "from": null, "cc": [], "body": "Please interview {{CANDIDATE_NAME}}.\n\nInterview type: {{INTERVIEW_NAME}}\n\nHere is a link to the interview kit, where you can view instructions and a scorecard:\n\n{{INTERVIEW_KIT_LINK}}", "html_body": null, "user": null}, "emitted_at": 1681936906624} +{"stream": "email_templates", "data": {"id": 4071586003, "name": "Default Scorecard Reminder", "default": true, "updated_at": "2020-11-18T14:09:07.563Z", "created_at": "2020-11-18T14:09:07.563Z", "description": "This template is sent to users when they have a scorecard due.", "type": "scorecard_reminder", "from": null, "cc": [], "body": null, "html_body": "

Hello,

\n\n

It's been {{TIME_SINCE_INTERVIEWED}} since you completed your interview with {{CANDIDATE_NAME}}.

\n\n

We know that feedback quality gets worse the longer you wait to submit. In fact, one hour after the event, memory recall declines to 44%.

\n\n

Submit your feedback now to help us make the right hiring decision \u2013 {{SCORECARD_LINK}}

\n\n

Your feedback is important! Thanks for your help.

", "user": null}, "emitted_at": 1681936906625} +{"stream": "email_templates", "data": {"id": 4071585003, "name": "Default Candidate Rejection", "default": true, "updated_at": "2020-11-18T14:09:07.557Z", "created_at": "2020-11-18T14:09:07.557Z", "description": "This template is sent to candidates when you reject them from a job. You will always have the ability to preview, edit and customize this email before sending, or choose not to send it at all.", "type": "candidate_rejection", "from": "{{MY_EMAIL_ADDRESS}}", "cc": [], "body": null, "html_body": "

{{CANDIDATE_FIRST_NAME}},

\n\n

Unfortunately, we have decided not to proceed with your candidacy for the current opening at {{COMPANY}}.

\n\n

We received many qualified applicants and have decided to move ahead with another candidate who we feel is a better match for this particular position.

\n\n

Thanks again for your interest in {{COMPANY}} and we wish you luck in your search.

\n\n

Regards,
\n{{COMPANY}}

", "user": null}, "emitted_at": 1681936906627} +{"stream": "email_templates", "data": {"id": 4071584003, "name": "Default Candidate Auto Reply", "default": true, "updated_at": "2020-11-18T14:09:07.549Z", "created_at": "2020-11-18T14:09:07.549Z", "description": "This template is sent automatically to candidates when they complete your online job application, letting them know that you've received their application.", "type": "candidate_auto_reply", "from": "no-reply@us.greenhouse-mail.io", "cc": [], "body": null, "html_body": "

{{CANDIDATE_FIRST_NAME}},

\n\n

Thanks for applying to {{COMPANY}}. Your application has been received and we will review it right away.

\n\n

If your application seems like a good fit for the position we will contact you soon.

\n\n

Regards,
\n{{COMPANY}}

\n\n

** Please note: Do not reply to this email. This email is sent from an unattended mailbox. Replies will not be read.

", "user": null}, "emitted_at": 1681936906629} +{"stream": "user_roles", "data": {"id": 4011623003, "type": "job_admin", "name": "Private"}, "emitted_at": 1681937618735} +{"stream": "user_roles", "data": {"id": 4011622003, "type": "job_admin", "name": "Standard"}, "emitted_at": 1681937618737} diff --git a/airbyte-integrations/connectors/source-greenhouse/integration_tests/minimal.json b/airbyte-integrations/connectors/source-greenhouse/integration_tests/minimal.json new file mode 100644 index 0000000000000..a0f2fcb3695f0 --- /dev/null +++ b/airbyte-integrations/connectors/source-greenhouse/integration_tests/minimal.json @@ -0,0 +1,16 @@ +{ + "streams": [ + { + "stream": { + "name": "user_roles", + "json_schema": {}, + "supported_sync_modes": ["full_refresh"], + "source_defined_cursor": false, + "source_defined_primary_key": [["id"]] + }, + "sync_mode": "full_refresh", + "primary_key": [["id"]], + "destination_sync_mode": "overwrite" + } + ] +} diff --git a/airbyte-integrations/connectors/source-greenhouse/setup.py b/airbyte-integrations/connectors/source-greenhouse/setup.py index 5338dab377c42..320b5c10eea0b 100644 --- a/airbyte-integrations/connectors/source-greenhouse/setup.py +++ b/airbyte-integrations/connectors/source-greenhouse/setup.py @@ -16,7 +16,7 @@ author="Airbyte", author_email="contact@airbyte.io", packages=find_packages(), - install_requires=["airbyte-cdk~=0.1", "dataclasses-jsonschema==2.15.1"], + install_requires=["airbyte-cdk", "dataclasses-jsonschema==2.15.1"], package_data={"": ["*.json", "*.yaml", "schemas/*.json"]}, extras_require={ "tests": TEST_REQUIREMENTS, diff --git a/airbyte-integrations/connectors/source-greenhouse/source_greenhouse/manifest.yaml b/airbyte-integrations/connectors/source-greenhouse/source_greenhouse/manifest.yaml index 822aa8a86a92c..f3fc8f6b5c77a 100644 --- a/airbyte-integrations/connectors/source-greenhouse/source_greenhouse/manifest.yaml +++ b/airbyte-integrations/connectors/source-greenhouse/source_greenhouse/manifest.yaml @@ -41,6 +41,14 @@ definitions: inject_into: "request_parameter" page_token_option: type: RequestPath + no_pagination_retriever: + type: SimpleRetriever + name: "{{ options['name'] }}" + primary_key: "{{ options['primary_key'] }}" + record_selector: + $ref: "#/definitions/selector" + paginator: + type: NoPagination base_stream: type: DeclarativeStream $parameters: @@ -259,6 +267,28 @@ definitions: $parameters: name: "users" path: "users" + user_roles_stream: + $ref: "#/definitions/base_stream" + $parameters: + name: "user_roles" + path: "user_roles" + user_permissions_stream: + $parameters: + name: "user_permissions" + primary_key: "id" + schema_loader: + $ref: "#/definitions/schema_loader" + retriever: + $ref: "#/definitions/no_pagination_retriever" + requester: + $ref: "#/definitions/requester" + path: "users/{{ stream_slice.parent_id }}/permissions/jobs" + partition_router: + type: SubstreamPartitionRouter + parent_stream_configs: + - stream: "#/definitions/users_stream" + parent_key: "id" + partition_field: "parent_id" demographics_answers_stream: $ref: "#/definitions/base_incremental_stream" $parameters: @@ -269,6 +299,97 @@ definitions: $parameters: name: "demographics_answer_options" path: "demographics/answer_options" + activity_feed_stream: + $parameters: + name: "activity_feed" + schema_loader: + $ref: "#/definitions/schema_loader" + retriever: + $ref: "#/definitions/no_pagination_retriever" + requester: + $ref: "#/definitions/requester" + path: "candidates/{{ stream_slice.parent_id }}/activity_feed" + partition_router: + type: SubstreamPartitionRouter + parent_stream_configs: + - stream: "#/definitions/candidates_stream" + parent_key: "id" + partition_field: "parent_id" + approvals_stream: + $parameters: + name: "approvals" + primary_key: "id" + schema_loader: + $ref: "#/definitions/schema_loader" + retriever: + $ref: "#/definitions/no_pagination_retriever" + requester: + $ref: "#/definitions/requester" + path: "jobs/{{ stream_slice.parent_id }}/approval_flows" + partition_router: + type: SubstreamPartitionRouter + parent_stream_configs: + - stream: "#/definitions/jobs_stream" + parent_key: "id" + partition_field: "parent_id" + disciplines_stream: + $ref: "#/definitions/base_stream" + $parameters: + name: "disciplines" + path: "disciplines" + retriever: + $ref: "#/definitions/no_pagination_retriever" + requester: "#/definitions/requester" + schools_stream: + $ref: "#/definitions/base_stream" + $parameters: + name: "schools" + path: "schools" + retriever: + $ref: "#/definitions/no_pagination_retriever" + requester: "#/definitions/requester" + eeoc_stream: + $ref: "#/definitions/base_incremental_stream" + $parameters: + name: "eeoc" + path: "eeoc" + primary_key: "application_id" + retriever: + $ref: "#/definitions/retriever" + requester: "#/definitions/requester" + stream_slicer: + request_cursor_field: "submitted_after" + cursor_field: "submitted_at" + class_name: source_greenhouse.components.GreenHouseSlicer + incremental_sync: + type: CustomIncrementalSync + class_name: source_greenhouse.components.GreenHouseSlicer + request_cursor_field: "submitted_after" + cursor_field: "submitted_at" + email_templates_stream: + $ref: "#/definitions/base_incremental_stream" + $parameters: + name: "email_templates" + path: "email_templates" + offices_stream: + $ref: "#/definitions/base_stream" + $parameters: + name: "offices" + path: "offices" + prospect_pools_stream: + $ref: "#/definitions/base_stream" + $parameters: + name: "prospect_pools" + path: "prospect_pools" + tags_stream: + $ref: "#/definitions/base_stream" + $parameters: + name: "tags" + path: "tags/candidate" + retriever: + $ref: "#/definitions/no_pagination_retriever" + requester: "#/definitions/requester" + streams: - "#/definitions/applications_stream" - "#/definitions/applications_demographics_answers_stream" @@ -295,6 +416,17 @@ streams: - "#/definitions/scorecards_stream" - "#/definitions/sources_stream" - "#/definitions/users_stream" + - "#/definitions/activity_feed_stream" + - "#/definitions/approvals_stream" + - "#/definitions/disciplines_stream" + - "#/definitions/schools_stream" + - "#/definitions/eeoc_stream" + - "#/definitions/email_templates_stream" + - "#/definitions/offices_stream" + - "#/definitions/prospect_pools_stream" + - "#/definitions/tags_stream" + - "#/definitions/user_roles_stream" + - "#/definitions/user_permissions_stream" check: type: CheckStream diff --git a/airbyte-integrations/connectors/source-greenhouse/source_greenhouse/schemas/activity_feed.json b/airbyte-integrations/connectors/source-greenhouse/source_greenhouse/schemas/activity_feed.json new file mode 100644 index 0000000000000..77911035ddaa5 --- /dev/null +++ b/airbyte-integrations/connectors/source-greenhouse/source_greenhouse/schemas/activity_feed.json @@ -0,0 +1,145 @@ +{ + "$schema": "https://json-schema.org/draft-07/schema", + "type": "object", + "additionalProperties": true, + "properties": { + "notes": { + "type": ["null", "array"], + "items": { + "type": ["null", "object"], + "properties": { + "id": { + "type": ["null", "integer"] + }, + "created_at": { + "type": ["null", "string"] + }, + "body": { + "type": ["null", "string"] + }, + "user": { + "type": ["null", "object"], + "properties": { + "id": { + "type": ["null", "integer"] + }, + "first_name": { + "type": ["null", "string"] + }, + "last_name": { + "type": ["null", "string"] + }, + "name": { + "type": ["null", "string"] + }, + "employee_id": { + "type": ["null", "string"] + } + } + }, + "private": { + "type": ["null", "boolean"] + }, + "visiblity": { + "type": ["null", "string"] + }, + "visibility": { + "type": ["null", "string"] + } + } + } + }, + "emails": { + "type": ["null", "array"], + "items": { + "type": ["null", "object"], + "properties": { + "id": { + "type": ["null", "integer"] + }, + "created_at": { + "type": ["null", "string"] + }, + "subject": { + "type": ["null", "string"] + }, + "body": { + "type": ["null", "string"] + }, + "to": { + "type": ["null", "string"] + }, + "from": { + "type": ["null", "string"] + }, + "cc": { + "type": ["null", "array"], + "items": { + "type": ["null", "string"] + } + }, + "user": { + "type": ["null", "object"], + "properties": { + "id": { + "type": ["null", "integer"] + }, + "first_name": { + "type": ["null", "string"] + }, + "last_name": { + "type": ["null", "string"] + }, + "name": { + "type": ["null", "string"] + }, + "employee_id": { + "type": ["null", "string"] + } + } + } + } + } + }, + "activities": { + "type": ["null", "array"], + "items": { + "type": ["null", "object"], + "properties": { + "id": { + "type": ["null", "integer"] + }, + "created_at": { + "type": ["null", "string"] + }, + "subject": { + "type": ["null", "string"] + }, + "body": { + "type": ["null", "string"] + }, + "user": { + "type": ["null", "object"], + "properties": { + "id": { + "type": ["null", "integer"] + }, + "first_name": { + "type": ["null", "string"] + }, + "last_name": { + "type": ["null", "string"] + }, + "name": { + "type": ["null", "string"] + }, + "employee_id": { + "type": ["null", "string"] + } + } + } + } + } + } + } +} diff --git a/airbyte-integrations/connectors/source-greenhouse/source_greenhouse/schemas/approvals.json b/airbyte-integrations/connectors/source-greenhouse/source_greenhouse/schemas/approvals.json new file mode 100644 index 0000000000000..e59115777d1d9 --- /dev/null +++ b/airbyte-integrations/connectors/source-greenhouse/source_greenhouse/schemas/approvals.json @@ -0,0 +1,83 @@ +{ + "$schema": "https://json-schema.org/draft-07/schema", + "type": ["null", "object"], + "additionalProperties": true, + "properties": { + "id": { + "type": ["null", "integer"] + }, + "offer_id": { + "type": ["null", "integer"] + }, + "sequential": { + "type": "boolean" + }, + "version": { + "type": ["null", "integer"] + }, + "approval_type": { + "type": ["null", "string"] + }, + "approval_status": { + "type": ["null", "string"] + }, + "job_id": { + "type": ["null", "integer"] + }, + "requested_by_user_id": { + "type": ["null", "integer"] + }, + "approver_groups": { + "type": ["null", "array"], + "items": { + "type": ["null", "object"], + "properties": { + "id": { + "type": ["null", "integer"] + }, + "approvals_required": { + "type": ["null", "integer"] + }, + "created_at": { + "type": ["null", "string"] + }, + "resolved_at": { + "type": ["null", "string"] + }, + "priority": { + "type": ["null", "integer"] + }, + "job_id": { + "type": ["null", "integer"] + }, + "offer_id": { + "type": ["integer", "null"] + }, + "approvers": { + "type": ["null", "array"], + "items": { + "type": ["null", "object"], + "properties": { + "id": { + "type": ["null", "integer"] + }, + "name": { + "type": ["null", "string"] + }, + "employee_id": { + "type": ["null", "string"] + }, + "email_addresses": { + "type": ["null", "array"], + "items": { + "type": ["null", "string"] + } + } + } + } + } + } + } + } + } +} diff --git a/airbyte-integrations/connectors/source-greenhouse/source_greenhouse/schemas/disciplines.json b/airbyte-integrations/connectors/source-greenhouse/source_greenhouse/schemas/disciplines.json new file mode 100644 index 0000000000000..20611796487b3 --- /dev/null +++ b/airbyte-integrations/connectors/source-greenhouse/source_greenhouse/schemas/disciplines.json @@ -0,0 +1,16 @@ +{ + "$schema": "https://json-schema.org/draft-07/schema", + "type": "object", + "additionalProperties": true, + "properties": { + "id": { + "type": ["null", "integer"] + }, + "name": { + "type": ["null", "string"] + }, + "priority": { + "type": ["null", "integer"] + } + } +} diff --git a/airbyte-integrations/connectors/source-greenhouse/source_greenhouse/schemas/eeoc.json b/airbyte-integrations/connectors/source-greenhouse/source_greenhouse/schemas/eeoc.json new file mode 100644 index 0000000000000..f1bad95a9a75b --- /dev/null +++ b/airbyte-integrations/connectors/source-greenhouse/source_greenhouse/schemas/eeoc.json @@ -0,0 +1,60 @@ +{ + "$schema": "https://json-schema.org/draft-07/schema", + "type": ["null", "object"], + "additionalProperties": true, + "properties": { + "application_id": { + "type": ["null", "integer"] + }, + "candidate_id": { + "type": ["null", "integer"] + }, + "race": { + "type": ["null", "object"], + "properties": { + "id": { + "type": ["null", "integer"] + }, + "description": { + "type": ["null", "string"] + } + } + }, + "gender": { + "type": ["null", "object"], + "properties": { + "id": { + "type": ["null", "integer"] + }, + "description": { + "type": ["null", "string"] + } + } + }, + "veteran_status": { + "type": ["null", "object"], + "properties": { + "id": { + "type": ["null", "integer"] + }, + "message": { + "type": ["null", "string"] + } + } + }, + "disability_status": { + "type": ["null", "object"], + "properties": { + "id": { + "type": ["null", "integer"] + }, + "description": { + "type": ["null", "string"] + } + } + }, + "submitted_at": { + "type": ["null", "string"] + } + } +} diff --git a/airbyte-integrations/connectors/source-greenhouse/source_greenhouse/schemas/email_templates.json b/airbyte-integrations/connectors/source-greenhouse/source_greenhouse/schemas/email_templates.json new file mode 100644 index 0000000000000..a9c0bb3e1e159 --- /dev/null +++ b/airbyte-integrations/connectors/source-greenhouse/source_greenhouse/schemas/email_templates.json @@ -0,0 +1,46 @@ +{ + "$schema": "https://json-schema.org/draft-07/schema", + "type": "object", + "additionalProperties": true, + "properties": { + "id": { + "type": ["null", "integer"] + }, + "name": { + "type": ["null", "string"] + }, + "description": { + "type": ["null", "string"] + }, + "default": { + "type": ["null", "boolean"] + }, + "updated_at": { + "type": ["null", "string"] + }, + "created_at": { + "type": ["null", "string"] + }, + "type": { + "type": ["null", "string"] + }, + "from": { + "type": ["null", "string"] + }, + "cc": { + "type": ["null", "array"], + "items": { + "type": ["null", "string"] + } + }, + "body": { + "type": ["null", "string"] + }, + "html_body": { + "type": ["null", "string"] + }, + "user": { + "type": ["null", "string"] + } + } +} diff --git a/airbyte-integrations/connectors/source-greenhouse/source_greenhouse/schemas/offices.json b/airbyte-integrations/connectors/source-greenhouse/source_greenhouse/schemas/offices.json new file mode 100644 index 0000000000000..344c3c76f50dd --- /dev/null +++ b/airbyte-integrations/connectors/source-greenhouse/source_greenhouse/schemas/offices.json @@ -0,0 +1,45 @@ +{ + "$schema": "https://json-schema.org/draft-07/schema", + "type": ["null", "object"], + "additionalProperties": true, + "properties": { + "id": { + "type": ["null", "integer"] + }, + "name": { + "type": ["null", "string"] + }, + "location": { + "type": ["null", "object"], + "properties": { + "name": { + "type": ["null", "string"] + } + } + }, + "primary_contact_user_id": { + "type": ["null", "integer"] + }, + "parent_id": { + "type": ["null", "integer"] + }, + "parent_office_external_id": { + "type": ["null", "string"] + }, + "child_ids": { + "type": ["null", "array"], + "items": { + "type": ["null", "integer"] + } + }, + "child_office_external_ids": { + "type": ["null", "array"], + "items": { + "type": ["null", "string"] + } + }, + "external_id": { + "type": ["null", "string"] + } + } +} diff --git a/airbyte-integrations/connectors/source-greenhouse/source_greenhouse/schemas/prospect_pools.json b/airbyte-integrations/connectors/source-greenhouse/source_greenhouse/schemas/prospect_pools.json new file mode 100644 index 0000000000000..4099770b23d40 --- /dev/null +++ b/airbyte-integrations/connectors/source-greenhouse/source_greenhouse/schemas/prospect_pools.json @@ -0,0 +1,29 @@ +{ + "$schema": "https://json-schema.org/draft-07/schema", + "type": "object", + "properties": { + "id": { + "type": ["null", "integer"] + }, + "name": { + "type": ["null", "string"] + }, + "active": { + "type": ["null", "boolean"] + }, + "prospect_stages": { + "type": ["null", "array"], + "items": { + "type": ["null", "object"], + "properties": { + "id": { + "type": ["null", "integer"] + }, + "name": { + "type": ["null", "string"] + } + } + } + } + } +} diff --git a/airbyte-integrations/connectors/source-greenhouse/source_greenhouse/schemas/schools.json b/airbyte-integrations/connectors/source-greenhouse/source_greenhouse/schemas/schools.json new file mode 100644 index 0000000000000..20611796487b3 --- /dev/null +++ b/airbyte-integrations/connectors/source-greenhouse/source_greenhouse/schemas/schools.json @@ -0,0 +1,16 @@ +{ + "$schema": "https://json-schema.org/draft-07/schema", + "type": "object", + "additionalProperties": true, + "properties": { + "id": { + "type": ["null", "integer"] + }, + "name": { + "type": ["null", "string"] + }, + "priority": { + "type": ["null", "integer"] + } + } +} diff --git a/airbyte-integrations/connectors/source-greenhouse/source_greenhouse/schemas/tags.json b/airbyte-integrations/connectors/source-greenhouse/source_greenhouse/schemas/tags.json new file mode 100644 index 0000000000000..f513a678375e1 --- /dev/null +++ b/airbyte-integrations/connectors/source-greenhouse/source_greenhouse/schemas/tags.json @@ -0,0 +1,13 @@ +{ + "$schema": "https://json-schema.org/draft-07/schema", + "type": "object", + "additionalProperties": true, + "properties": { + "id": { + "type": ["null", "integer"] + }, + "name": { + "type": ["null", "string"] + } + } +} diff --git a/airbyte-integrations/connectors/source-greenhouse/source_greenhouse/schemas/user_permissions.json b/airbyte-integrations/connectors/source-greenhouse/source_greenhouse/schemas/user_permissions.json new file mode 100644 index 0000000000000..d864552a9a388 --- /dev/null +++ b/airbyte-integrations/connectors/source-greenhouse/source_greenhouse/schemas/user_permissions.json @@ -0,0 +1,15 @@ +{ + "$schema": "https://json-schema.org/draft-07/schema", + "type": "object", + "properties": { + "id": { + "type": ["null", "integer"] + }, + "job_id": { + "type": ["null", "integer"] + }, + "user_role_id": { + "type": ["null", "integer"] + } + } +} diff --git a/airbyte-integrations/connectors/source-greenhouse/source_greenhouse/schemas/user_roles.json b/airbyte-integrations/connectors/source-greenhouse/source_greenhouse/schemas/user_roles.json new file mode 100644 index 0000000000000..a8827916c53a2 --- /dev/null +++ b/airbyte-integrations/connectors/source-greenhouse/source_greenhouse/schemas/user_roles.json @@ -0,0 +1,15 @@ +{ + "$schema": "https://json-schema.org/draft-07/schema", + "type": "object", + "properties": { + "id": { + "type": ["null", "integer"] + }, + "type": { + "type": ["null", "string"] + }, + "name": { + "type": ["null", "string"] + } + } +} diff --git a/airbyte-integrations/connectors/source-greenhouse/unit_tests/test_streams.py b/airbyte-integrations/connectors/source-greenhouse/unit_tests/test_streams.py index cdce7528b87aa..7c86d38ecc256 100644 --- a/airbyte-integrations/connectors/source-greenhouse/unit_tests/test_streams.py +++ b/airbyte-integrations/connectors/source-greenhouse/unit_tests/test_streams.py @@ -154,6 +154,12 @@ def test_parse_response_empty_content(applications_stream): assert records == [] +def test_number_of_streams(): + source = SourceGreenhouse() + streams = source.streams({}) + assert len(streams) == 36 + + def test_ignore_403(applications_stream): response = requests.Response() response.status_code = 403 diff --git a/airbyte-integrations/connectors/source-jdbc/src/main/java/io/airbyte/integrations/source/jdbc/AbstractJdbcSource.java b/airbyte-integrations/connectors/source-jdbc/src/main/java/io/airbyte/integrations/source/jdbc/AbstractJdbcSource.java index 5235e45824f50..1cb2575b081eb 100644 --- a/airbyte-integrations/connectors/source-jdbc/src/main/java/io/airbyte/integrations/source/jdbc/AbstractJdbcSource.java +++ b/airbyte-integrations/connectors/source-jdbc/src/main/java/io/airbyte/integrations/source/jdbc/AbstractJdbcSource.java @@ -33,6 +33,7 @@ import datadog.trace.api.Trace; import io.airbyte.commons.functional.CheckedConsumer; import io.airbyte.commons.json.Jsons; +import io.airbyte.commons.stream.AirbyteStreamUtils; import io.airbyte.commons.util.AutoCloseableIterator; import io.airbyte.commons.util.AutoCloseableIterators; import io.airbyte.db.JdbcCompatibleSourceOperations; @@ -114,12 +115,13 @@ protected AutoCloseableIterator queryTableFullRefresh(final JdbcDataba final String quotedCursorField = enquoteIdentifier(cursorField.get(), getQuoteString()); return queryTable(database, String.format("SELECT %s FROM %s ORDER BY %s ASC", enquoteIdentifierList(columnNames, getQuoteString()), - getFullyQualifiedTableNameWithQuoting(schemaName, tableName, getQuoteString()), quotedCursorField)); + getFullyQualifiedTableNameWithQuoting(schemaName, tableName, getQuoteString()), quotedCursorField), + tableName, schemaName); } else { // If we are in FULL_REFRESH mode, state messages are never emitted, so we don't care about ordering of the records. return queryTable(database, String.format("SELECT %s FROM %s", enquoteIdentifierList(columnNames, getQuoteString()), - getFullyQualifiedTableNameWithQuoting(schemaName, tableName, getQuoteString()))); + getFullyQualifiedTableNameWithQuoting(schemaName, tableName, getQuoteString())), tableName, schemaName); } } @@ -311,6 +313,8 @@ public AutoCloseableIterator queryTableIncremental(final JdbcDatabase final CursorInfo cursorInfo, final Datatype cursorFieldType) { LOGGER.info("Queueing query for table: {}", tableName); + final io.airbyte.protocol.models.AirbyteStreamNameNamespacePair airbyteStream = + AirbyteStreamUtils.convertFromNameAndNamespace(tableName, schemaName); return AutoCloseableIterators.lazyIterator(() -> { try { final Stream stream = database.unsafeQuery( @@ -351,11 +355,11 @@ public AutoCloseableIterator queryTableIncremental(final JdbcDatabase return preparedStatement; }, sourceOperations::rowToJson); - return AutoCloseableIterators.fromStream(stream); + return AutoCloseableIterators.fromStream(stream, airbyteStream); } catch (final SQLException e) { throw new RuntimeException(e); } - }); + }, airbyteStream); } /** @@ -442,24 +446,21 @@ protected void logPreSyncDebugData(final JdbcDatabase database, final Configured database.getMetaData().getDatabaseProductVersion()); for (final ConfiguredAirbyteStream stream : catalog.getStreams()) { - if (stream.getSyncMode().equals(SyncMode.INCREMENTAL)) { - final String streamName = stream.getStream().getName(); - final String schemaName = stream.getStream().getNamespace(); - final String cursorFieldName = stream.getCursorField() != null && stream.getCursorField().size() != 0 ? stream.getCursorField().get(0) : ""; - final ResultSet indexInfo = database.getMetaData().getIndexInfo(null, - schemaName, - streamName, - false, - false); - LOGGER.info("Discovering indexes for schema \"{}\", table \"{}\", with cursor field \"{}\"", schemaName, streamName, cursorFieldName); - while (indexInfo.next()) { - LOGGER.info("Index name: {}, Column: {}, Unique: {}", - indexInfo.getString(JDBC_INDEX_NAME), - indexInfo.getString(JDBC_COLUMN_COLUMN_NAME), - !indexInfo.getBoolean(JDBC_INDEX_NON_UNIQUE)); - } - indexInfo.close(); + final String streamName = stream.getStream().getName(); + final String schemaName = stream.getStream().getNamespace(); + final ResultSet indexInfo = database.getMetaData().getIndexInfo(null, + schemaName, + streamName, + false, + false); + LOGGER.info("Discovering indexes for schema \"{}\", table \"{}\"", schemaName, streamName); + while (indexInfo.next()) { + LOGGER.info("Index name: {}, Column: {}, Unique: {}", + indexInfo.getString(JDBC_INDEX_NAME), + indexInfo.getString(JDBC_COLUMN_COLUMN_NAME), + !indexInfo.getBoolean(JDBC_INDEX_NON_UNIQUE)); } + indexInfo.close(); } } diff --git a/airbyte-integrations/connectors/source-marketo/Dockerfile b/airbyte-integrations/connectors/source-marketo/Dockerfile index 738e1a2e8e5ee..89fb339906a0a 100644 --- a/airbyte-integrations/connectors/source-marketo/Dockerfile +++ b/airbyte-integrations/connectors/source-marketo/Dockerfile @@ -34,5 +34,5 @@ COPY source_marketo ./source_marketo ENV AIRBYTE_ENTRYPOINT "python /airbyte/integration_code/main.py" ENTRYPOINT ["python", "/airbyte/integration_code/main.py"] -LABEL io.airbyte.version=1.0.3 +LABEL io.airbyte.version=1.0.4 LABEL io.airbyte.name=airbyte/source-marketo diff --git a/airbyte-integrations/connectors/source-marketo/README.md b/airbyte-integrations/connectors/source-marketo/README.md index 9ffe00e4c19ba..b7d14aed736fe 100644 --- a/airbyte-integrations/connectors/source-marketo/README.md +++ b/airbyte-integrations/connectors/source-marketo/README.md @@ -101,7 +101,8 @@ Customize `acceptance-test-config.yml` file to configure tests. See [Connector A If your connector requires to create or destroy resources for use during acceptance tests create fixtures for it and place them inside integration_tests/acceptance.py. To run your integration tests with acceptance tests, from the connector root, run ``` -python -m pytest integration_tests -p integration_tests.acceptance +docker build . --no-cache -t airbyte/source-marketo:dev \ +&& python -m pytest -p connector_acceptance_test.plugin ``` To run your integration tests with docker diff --git a/airbyte-integrations/connectors/source-marketo/integration_tests/expected_records.jsonl b/airbyte-integrations/connectors/source-marketo/integration_tests/expected_records.jsonl index 65679d5d22df9..b45e311fb69d2 100644 --- a/airbyte-integrations/connectors/source-marketo/integration_tests/expected_records.jsonl +++ b/airbyte-integrations/connectors/source-marketo/integration_tests/expected_records.jsonl @@ -1,153 +1,179 @@ -{"stream": "programs", "data": {"id": 1016, "name": "123", "description": "", "createdAt": "2021-09-01T16:02:30Z", "updatedAt": "2023-01-17T12:36:46Z", "url": "https://app-sj32.marketo.com/#EBP1016A1", "type": "Email", "channel": "Email Send", "folder": {"type": "Program", "value": 1003, "folderName": "API Test Program"}, "status": "completed", "workspace": "Default", "headStart": false}, "emitted_at": 1681112292804} -{"stream": "programs", "data": {"id": 1017, "name": "air", "description": "", "createdAt": "2021-09-01T16:09:23Z", "updatedAt": "2023-01-17T12:31:23Z", "url": "https://app-sj32.marketo.com/#EBP1017A1", "type": "Email", "channel": "Email Send", "folder": {"type": "Program", "value": 1003, "folderName": "API Test Program"}, "status": "completed", "workspace": "Default", "headStart": false}, "emitted_at": 1681112292805} -{"stream": "programs", "data": {"id": 1003, "name": "API Test Program", "description": "Sample API Program", "createdAt": "2021-01-18T13:55:44Z", "updatedAt": "2023-01-20T13:02:44Z", "url": "https://app-sj32.marketo.com/#PG1003A1", "type": "Default", "channel": "Email Blast", "folder": {"type": "Folder", "value": 45, "folderName": "Active Marketing Programs"}, "status": "", "workspace": "Default"}, "emitted_at": 1681112292805} -{"stream": "programs", "data": {"id": 1004, "name": "API Test Program 1", "description": "Sample API Program 1", "createdAt": "2021-01-18T13:57:37Z", "updatedAt": "2023-01-24T11:20:05Z", "url": "https://app-sj32.marketo.com/#PG1004A1", "type": "Default", "channel": "Online Advertising", "folder": {"type": "Folder", "value": 45, "folderName": "Active Marketing Programs"}, "status": "", "workspace": "Default"}, "emitted_at": 1681112292805} -{"stream": "programs", "data": {"id": 1013, "name": "API Test Program 10", "description": "Sample API Program 10", "createdAt": "2021-01-18T13:57:46Z", "updatedAt": "2023-01-20T16:27:11Z", "url": "https://app-sj32.marketo.com/#PG1013A1", "type": "Default", "channel": "Online Advertising", "folder": {"type": "Folder", "value": 45, "folderName": "Active Marketing Programs"}, "status": "", "workspace": "Default"}, "emitted_at": 1681112292806} -{"stream": "programs", "data": {"id": 1012, "name": "API Test Program 9", "description": "Sample API Program 9", "createdAt": "2021-01-18T13:57:45Z", "updatedAt": "2023-01-20T16:14:21Z", "url": "https://app-sj32.marketo.com/#PG1012A1", "type": "Default", "channel": "Online Advertising", "folder": {"type": "Folder", "value": 50, "folderName": "Nurture"}, "status": "", "workspace": "Default"}, "emitted_at": 1681112292806} -{"stream": "programs", "data": {"id": 1028, "name": "BP-ES-YYYY-MM-DD Email Send v3", "description": "Quick and easy Email Send Program for sending one single email, with or without A/B test. Channel: \"Email Send\". \nNOTE: Don't forget to activate the \"01-Influenced\" Campaign for tracking Success!", "createdAt": "2023-01-23T08:02:31Z", "updatedAt": "2023-01-23T08:03:04Z", "url": "https://app-sj32.marketo.com/#EBP1028A1", "type": "Email", "channel": "Email Send", "folder": {"type": "Folder", "value": 54, "folderName": "Data Management"}, "status": "unlocked", "workspace": "Default", "headStart": false}, "emitted_at": 1681112292807} -{"stream": "programs", "data": {"id": 1026, "name": "BP-LE-YYYY-MM-DD Live Event v3", "description": "Live Event Program, with registration page, three invitation emails, and follow-up emails. This is suitable for all events where you require registrations, including roadshows, lunches, dinners, or presentations at trade show events. Use the Marketo Events App for check-in and attendance tracking on your iPad or Android tablet.\nNOTE: Before the event, download the registration information to your iPad/Adroid Tablet. Then check-in visitors, and synchronize the attendance information back to Marketo. If you don't have a tablet, you can import attendees after under the Program's \"Members\" tab before sending your follow-up emails.", "createdAt": "2023-01-20T13:08:36Z", "updatedAt": "2023-01-20T16:32:34Z", "url": "https://app-sj32.marketo.com/#ME1026A1", "type": "Event", "channel": "Live Event", "folder": {"type": "Folder", "value": 48, "folderName": "Emails"}, "status": "", "workspace": "Default"}, "emitted_at": 1681112292807} -{"stream": "programs", "data": {"id": 1027, "name": "BP-LI-YYYY-MM-DD List Import v3", "description": "Program to manage imports of new target lists and record Acquisition Program at the same time. Go to the \"Members\" tab, and click on \"Import Members\". Follow the on-screen instructions, In Step 3, assign the Member Status \"On List\". \nNOTE: List Import Programs do not track \"Influence\", or \"Success\", because they do not communicate with anyone. Their sole purpose is to record Acquisition Program for First-Touch Attribution and other Analytics.", "createdAt": "2023-01-23T07:58:14Z", "updatedAt": "2023-01-23T07:58:59Z", "url": "https://app-sj32.marketo.com/#PG1027A1", "type": "Default", "channel": "List Import", "folder": {"type": "Folder", "value": 51, "folderName": "Web Content"}, "status": "", "workspace": "Default"}, "emitted_at": 1681112292808} -{"stream": "programs", "data": {"id": 1018, "name": "John Doe", "description": "", "createdAt": "2021-09-08T12:49:49Z", "updatedAt": "2023-01-17T12:29:10Z", "url": "https://app-sj32.marketo.com/#PG1018A1", "type": "Default", "channel": "Online Advertising", "folder": {"type": "Folder", "value": 52, "folderName": "Web Forms"}, "status": "", "workspace": "Default"}, "emitted_at": 1681112292808} -{"stream": "programs", "data": {"id": 1023, "name": "My Test Program 1", "description": "Test", "createdAt": "2023-01-17T12:38:35Z", "updatedAt": "2023-01-17T12:39:38Z", "url": "https://app-sj32.marketo.com/#EBP1023A1", "type": "Email", "channel": "Newsletter", "folder": {"type": "Folder", "value": 49, "folderName": "Newsletters"}, "status": "unlocked", "workspace": "Default"}, "emitted_at": 1681112292808} -{"stream": "programs", "data": {"id": 1024, "name": "Test Event 1", "description": "Test", "createdAt": "2023-01-20T09:29:38Z", "updatedAt": "2023-01-20T09:30:59Z", "url": "https://app-sj32.marketo.com/#ME1024A1", "type": "Event", "channel": "Live Event", "folder": {"type": "Program", "value": 1003, "folderName": "API Test Program"}, "status": "", "workspace": "Default"}, "emitted_at": 1681112292808} -{"stream": "programs", "data": {"id": 1025, "name": "Test Nurture", "description": "Test", "createdAt": "2023-01-20T09:51:39Z", "updatedAt": "2023-01-23T08:27:01Z", "url": "https://app-sj32.marketo.com/#NP1025A1", "type": "Engagement", "channel": "Nurture", "folder": {"type": "Folder", "value": 50, "folderName": "Nurture"}, "status": "on", "workspace": "Default"}, "emitted_at": 1681112292809} -{"stream": "campaigns", "data": {"id": 1053, "name": "Test Campaign 2", "description": "Description of the Test Campaign 2", "type": "batch", "workspaceName": "Default", "createdAt": "2023-01-17T10:53:35Z", "updatedAt": "2023-01-17T10:56:52Z", "active": false}, "emitted_at": 1674502101566} -{"stream": "campaigns", "data": {"id": 1054, "name": "Test Campaign 3", "description": "Description of the Test Campaign 3", "type": "batch", "workspaceName": "Default", "createdAt": "2023-01-17T10:54:04Z", "updatedAt": "2023-01-17T10:57:12Z", "active": false}, "emitted_at": 1674502101567} -{"stream": "campaigns", "data": {"id": 1055, "name": "Test Campaign 4", "description": "Description of the Test Campaign 4", "type": "batch", "workspaceName": "Default", "createdAt": "2023-01-17T10:54:24Z", "updatedAt": "2023-01-17T10:53:37Z", "active": false}, "emitted_at": 1674502101567} -{"stream": "campaigns", "data": {"id": 1056, "name": "Test Campaign 5", "description": "Description of the Test Campaign 5", "type": "trigger", "workspaceName": "Default", "createdAt": "2023-01-17T10:54:45Z", "updatedAt": "2023-01-20T16:25:04Z", "active": false}, "emitted_at": 1674502101568} -{"stream": "campaigns", "data": {"id": 1124, "name": "Test Smart Campaign", "description": "Test", "type": "batch", "programName": "API Test Program", "programId": 1003, "workspaceName": "Default", "createdAt": "2023-01-20T12:46:51Z", "updatedAt": "2023-01-23T08:24:16Z", "active": false}, "emitted_at": 1674502101569} -{"stream": "campaigns", "data": {"id": 1130, "name": "01-Process Registrations", "description": "This campaign must be activated BEFORE the registration URL is published. It sets the program status to \"Registered\", which makes the registrant's information available to the Marketo's mobile event app. Then the registrant gets a confirmation email with a calendar link.", "type": "trigger", "programName": "BP-LE-YYYY-MM-DD Live Event v3", "programId": 1026, "workspaceName": "Default", "createdAt": "2023-01-20T13:08:56Z", "updatedAt": "2023-01-20T13:09:53Z", "active": false}, "emitted_at": 1674502101569} -{"stream": "campaigns", "data": {"id": 1131, "name": "02a-Send Invitation", "description": "This campaign sends the initial invitation for the event. It should only include marketable leads, which have checked the proper subscription option.", "type": "batch", "programName": "BP-LE-YYYY-MM-DD Live Event v3", "programId": 1026, "workspaceName": "Default", "createdAt": "2023-01-20T13:08:56Z", "updatedAt": "2023-01-20T13:08:58Z", "active": false}, "emitted_at": 1674502101570} -{"stream": "campaigns", "data": {"id": 1132, "name": "04-Send Follow-up Emails", "description": "This campaign assumes that all registrants have been updated to a new program status of \"Attended\" or \"No Show\". You can do this by using the Marketo mobile event app for checking-in attendees, or you can import lists of attendees and no shows under the Program's Members tab. This campaign will then send follow-up emails that you can use to further engage your audience.", "type": "batch", "programName": "BP-LE-YYYY-MM-DD Live Event v3", "programId": 1026, "workspaceName": "Default", "createdAt": "2023-01-20T13:08:56Z", "updatedAt": "2023-01-20T13:08:58Z", "active": false}, "emitted_at": 1674502101570} -{"stream": "campaigns", "data": {"id": 1133, "name": "02b-Send Invitation Reminder", "description": "This campaign sends a reminder to people who received the original invitation, but have not registered, yet.", "type": "batch", "programName": "BP-LE-YYYY-MM-DD Live Event v3", "programId": 1026, "workspaceName": "Default", "createdAt": "2023-01-20T13:08:56Z", "updatedAt": "2023-01-20T13:08:57Z", "active": false}, "emitted_at": 1674502101571} -{"stream": "campaigns", "data": {"id": 1134, "name": "02c-Send Invitation Last Chance", "description": "This campaign sends a last reminder to people who received the original invitation, but have not registered, yet.", "type": "batch", "programName": "BP-LE-YYYY-MM-DD Live Event v3", "programId": 1026, "workspaceName": "Default", "createdAt": "2023-01-20T13:08:56Z", "updatedAt": "2023-01-20T13:08:57Z", "active": false}, "emitted_at": 1674502101571} -{"stream": "lists", "data": {"id": 1016, "name": "List 1", "description": "Test", "programName": "API Test Program", "workspaceId": 1, "workspaceName": "Default", "createdAt": "2023-01-17T12:43:09Z", "updatedAt": "2023-01-20T13:11:03Z"}, "emitted_at": 1674502102513} -{"stream": "lists", "data": {"id": 1017, "name": "List 2", "description": "Test", "programName": "API Test Program", "workspaceId": 1, "workspaceName": "Default", "createdAt": "2023-01-17T12:43:41Z", "updatedAt": "2023-01-17T12:43:43Z"}, "emitted_at": 1674502102514} -{"stream": "lists", "data": {"id": 1018, "name": "List 3", "description": "Test", "programName": "API Test Program", "workspaceId": 1, "workspaceName": "Default", "createdAt": "2023-01-17T12:43:59Z", "updatedAt": "2023-01-17T12:44:00Z"}, "emitted_at": 1674502102515} -{"stream": "lists", "data": {"id": 1019, "name": "List 4", "description": "Test", "programName": "API Test Program", "workspaceId": 1, "workspaceName": "Default", "createdAt": "2023-01-17T12:44:15Z", "updatedAt": "2023-01-17T12:44:16Z"}, "emitted_at": 1674502102515} -{"stream": "lists", "data": {"id": 1020, "name": "List 5", "description": "Test", "programName": "API Test Program", "workspaceId": 1, "workspaceName": "Default", "createdAt": "2023-01-17T12:44:28Z", "updatedAt": "2023-01-17T12:44:30Z"}, "emitted_at": 1674502102516} -{"stream": "leads", "data": {"company": "Test Company", "site": null, "billingStreet": null, "billingCity": null, "billingState": null, "billingCountry": null, "billingPostalCode": null, "website": null, "mainPhone": null, "annualRevenue": null, "numberOfEmployees": null, "industry": null, "sicCode": null, "mktoCompanyNotes": null, "externalCompanyId": null, "id": 885, "mktoName": "Test Person 1 All People", "personType": "contact", "mktoIsPartner": false, "isLead": true, "mktoIsCustomer": false, "isAnonymous": false, "salutation": null, "firstName": "Test Person 1", "middleName": null, "lastName": "All People", "email": "0M996mK4pH@ttt.com", "phone": null, "mobilePhone": null, "fax": null, "title": null, "contactCompany": "89", "dateOfBirth": null, "address": null, "city": null, "state": null, "country": null, "postalCode": null, "personTimeZone": null, "originalSourceType": "New lead", "originalSourceInfo": null, "registrationSourceType": "New lead", "registrationSourceInfo": null, "originalSearchEngine": null, "originalSearchPhrase": null, "originalReferrer": null, "emailInvalid": false, "emailInvalidCause": null, "unsubscribed": false, "unsubscribedReason": null, "doNotCall": false, "mktoDoNotCallCause": null, "doNotCallReason": null, "marketingSuspended": false, "marketingSuspendedCause": null, "blackListed": false, "blackListedCause": null, "mktoPersonNotes": null, "anonymousIP": null, "inferredCompany": null, "inferredCountry": null, "inferredCity": null, "inferredStateRegion": null, "inferredPostalCode": null, "inferredMetropolitanArea": null, "inferredPhoneAreaCode": null, "emailSuspended": null, "emailSuspendedCause": null, "emailSuspendedAt": null, "department": null, "createdAt": "2023-01-17T11:00:58Z", "updatedAt": "2023-01-24T11:10:51Z", "cookies": null, "externalSalesPersonId": null, "leadPerson": "885", "leadRole": null, "leadSource": null, "leadStatus": null, "leadScore": null, "urgency": null, "priority": null, "relativeScore": null, "relativeUrgency": null, "rating": null, "personPrimaryLeadInterest": "885", "leadPartitionId": "1", "leadRevenueCycleModelId": null, "leadRevenueStageId": null, "acquisitionProgramId": null, "mktoAcquisitionDate": null}, "emitted_at": 1674760920165} -{"stream": "leads", "data": {"company": null, "site": null, "billingStreet": null, "billingCity": null, "billingState": null, "billingCountry": null, "billingPostalCode": null, "website": "airbyte.io", "mainPhone": null, "annualRevenue": null, "numberOfEmployees": null, "industry": null, "sicCode": null, "mktoCompanyNotes": null, "externalCompanyId": null, "id": 888, "mktoName": "[Sample]Name Surname", "personType": "contact", "mktoIsPartner": false, "isLead": true, "mktoIsCustomer": false, "isAnonymous": false, "salutation": null, "firstName": "[Sample]Name", "middleName": null, "lastName": "Surname", "email": "i.g@example.io", "phone": null, "mobilePhone": null, "fax": null, "title": null, "contactCompany": "90", "dateOfBirth": null, "address": null, "city": null, "state": null, "country": null, "postalCode": null, "personTimeZone": "Asia/Riyadh", "originalSourceType": "Web form fillout", "originalSourceInfo": "Form: API Test Program.123.airbyte", "registrationSourceType": "Web form fillout", "registrationSourceInfo": "Form: API Test Program.123.airbyte", "originalSearchEngine": null, "originalSearchPhrase": null, "originalReferrer": "http://602-euo-598.mktoweb.com/lp/602-EUO-598/Landing-Page-2.html", "emailInvalid": false, "emailInvalidCause": null, "unsubscribed": false, "unsubscribedReason": null, "doNotCall": false, "mktoDoNotCallCause": null, "doNotCallReason": null, "marketingSuspended": false, "marketingSuspendedCause": null, "blackListed": false, "blackListedCause": null, "mktoPersonNotes": null, "anonymousIP": "85.209.47.207", "inferredCompany": "Arabic Computer System Co.", "inferredCountry": "Saudi Arabia", "inferredCity": null, "inferredStateRegion": null, "inferredPostalCode": null, "inferredMetropolitanArea": null, "inferredPhoneAreaCode": null, "emailSuspended": null, "emailSuspendedCause": null, "emailSuspendedAt": null, "department": null, "createdAt": "2023-01-17T12:29:38Z", "updatedAt": "2023-01-24T11:10:51Z", "cookies": null, "externalSalesPersonId": null, "leadPerson": "888", "leadRole": null, "leadSource": null, "leadStatus": null, "leadScore": null, "urgency": null, "priority": null, "relativeScore": null, "relativeUrgency": null, "rating": null, "personPrimaryLeadInterest": "888", "leadPartitionId": "1", "leadRevenueCycleModelId": null, "leadRevenueStageId": null, "acquisitionProgramId": null, "mktoAcquisitionDate": null}, "emitted_at": 1674760920169} -{"stream": "leads", "data": {"company": null, "site": null, "billingStreet": null, "billingCity": null, "billingState": null, "billingCountry": null, "billingPostalCode": null, "website": "globallogic.com", "mainPhone": null, "annualRevenue": null, "numberOfEmployees": null, "industry": null, "sicCode": null, "mktoCompanyNotes": null, "externalCompanyId": null, "id": 889, "mktoName": "[Sample] sample", "personType": "contact", "mktoIsPartner": false, "isLead": true, "mktoIsCustomer": false, "isAnonymous": false, "salutation": null, "firstName": "[Sample]", "middleName": null, "lastName": "sample", "email": "i.g@example.io", "phone": null, "mobilePhone": null, "fax": null, "title": null, "contactCompany": "91", "dateOfBirth": null, "address": null, "city": null, "state": null, "country": null, "postalCode": null, "personTimeZone": "Asia/Riyadh", "originalSourceType": "Web form fillout", "originalSourceInfo": "Form: API Test Program.123.airbyte", "registrationSourceType": "Web form fillout", "registrationSourceInfo": "Form: API Test Program.123.airbyte", "originalSearchEngine": null, "originalSearchPhrase": null, "originalReferrer": "http://602-euo-598.mktoweb.com/lp/602-EUO-598/Landing-Page-3.html", "emailInvalid": false, "emailInvalidCause": null, "unsubscribed": false, "unsubscribedReason": null, "doNotCall": false, "mktoDoNotCallCause": null, "doNotCallReason": null, "marketingSuspended": false, "marketingSuspendedCause": null, "blackListed": false, "blackListedCause": null, "mktoPersonNotes": null, "anonymousIP": "85.209.47.207", "inferredCompany": "Arabic Computer System Co.", "inferredCountry": "Saudi Arabia", "inferredCity": null, "inferredStateRegion": null, "inferredPostalCode": null, "inferredMetropolitanArea": null, "inferredPhoneAreaCode": null, "emailSuspended": null, "emailSuspendedCause": null, "emailSuspendedAt": null, "department": null, "createdAt": "2023-01-17T12:30:09Z", "updatedAt": "2023-01-24T11:10:51Z", "cookies": "_mch-mktoweb.com-1673954921699-88079", "externalSalesPersonId": null, "leadPerson": "889", "leadRole": null, "leadSource": null, "leadStatus": null, "leadScore": null, "urgency": null, "priority": null, "relativeScore": null, "relativeUrgency": null, "rating": null, "personPrimaryLeadInterest": "889", "leadPartitionId": "1", "leadRevenueCycleModelId": null, "leadRevenueStageId": null, "acquisitionProgramId": null, "mktoAcquisitionDate": null}, "emitted_at": 1674760920170} -{"stream": "leads", "data": {"company": "Test Company Org 5", "site": null, "billingStreet": null, "billingCity": null, "billingState": null, "billingCountry": null, "billingPostalCode": null, "website": null, "mainPhone": null, "annualRevenue": null, "numberOfEmployees": null, "industry": null, "sicCode": null, "mktoCompanyNotes": null, "externalCompanyId": null, "id": 890, "mktoName": "Test Person 10 Test 10", "personType": "contact", "mktoIsPartner": false, "isLead": true, "mktoIsCustomer": false, "isAnonymous": false, "salutation": null, "firstName": "Test Person 10", "middleName": null, "lastName": "Test 10", "email": "name10@example.com", "phone": null, "mobilePhone": null, "fax": null, "title": null, "contactCompany": "92", "dateOfBirth": null, "address": null, "city": null, "state": null, "country": "US", "postalCode": null, "personTimeZone": "America/Chicago", "originalSourceType": "New lead", "originalSourceInfo": null, "registrationSourceType": "New lead", "registrationSourceInfo": null, "originalSearchEngine": null, "originalSearchPhrase": null, "originalReferrer": null, "emailInvalid": false, "emailInvalidCause": null, "unsubscribed": false, "unsubscribedReason": null, "doNotCall": false, "mktoDoNotCallCause": null, "doNotCallReason": null, "marketingSuspended": false, "marketingSuspendedCause": null, "blackListed": false, "blackListedCause": null, "mktoPersonNotes": null, "anonymousIP": null, "inferredCompany": null, "inferredCountry": null, "inferredCity": null, "inferredStateRegion": null, "inferredPostalCode": null, "inferredMetropolitanArea": null, "inferredPhoneAreaCode": null, "emailSuspended": null, "emailSuspendedCause": null, "emailSuspendedAt": null, "department": null, "createdAt": "2023-01-19T15:07:51Z", "updatedAt": "2023-01-24T11:10:51Z", "cookies": null, "externalSalesPersonId": null, "leadPerson": "890", "leadRole": null, "leadSource": null, "leadStatus": null, "leadScore": null, "urgency": null, "priority": null, "relativeScore": null, "relativeUrgency": null, "rating": null, "personPrimaryLeadInterest": "890", "leadPartitionId": "1", "leadRevenueCycleModelId": null, "leadRevenueStageId": null, "acquisitionProgramId": null, "mktoAcquisitionDate": null}, "emitted_at": 1674760920171} -{"stream": "leads", "data": {"company": "Test Company Org 11", "site": null, "billingStreet": null, "billingCity": null, "billingState": null, "billingCountry": null, "billingPostalCode": null, "website": null, "mainPhone": null, "annualRevenue": null, "numberOfEmployees": null, "industry": null, "sicCode": null, "mktoCompanyNotes": null, "externalCompanyId": null, "id": 891, "mktoName": "Name11 Surname11", "personType": "contact", "mktoIsPartner": false, "isLead": true, "mktoIsCustomer": false, "isAnonymous": false, "salutation": null, "firstName": "Name11", "middleName": null, "lastName": "Surname11", "email": "name11@example.com", "phone": null, "mobilePhone": null, "fax": null, "title": null, "contactCompany": "93", "dateOfBirth": null, "address": null, "city": null, "state": null, "country": "US", "postalCode": null, "personTimeZone": "America/Chicago", "originalSourceType": "New lead", "originalSourceInfo": null, "registrationSourceType": "New lead", "registrationSourceInfo": null, "originalSearchEngine": null, "originalSearchPhrase": null, "originalReferrer": null, "emailInvalid": false, "emailInvalidCause": null, "unsubscribed": false, "unsubscribedReason": null, "doNotCall": false, "mktoDoNotCallCause": null, "doNotCallReason": null, "marketingSuspended": false, "marketingSuspendedCause": null, "blackListed": false, "blackListedCause": null, "mktoPersonNotes": null, "anonymousIP": null, "inferredCompany": null, "inferredCountry": null, "inferredCity": null, "inferredStateRegion": null, "inferredPostalCode": null, "inferredMetropolitanArea": null, "inferredPhoneAreaCode": null, "emailSuspended": null, "emailSuspendedCause": null, "emailSuspendedAt": null, "department": null, "createdAt": "2023-01-19T15:25:17Z", "updatedAt": "2023-01-19T15:27:44Z", "cookies": null, "externalSalesPersonId": null, "leadPerson": "891", "leadRole": null, "leadSource": null, "leadStatus": null, "leadScore": null, "urgency": null, "priority": null, "relativeScore": null, "relativeUrgency": null, "rating": null, "personPrimaryLeadInterest": "891", "leadPartitionId": "3", "leadRevenueCycleModelId": null, "leadRevenueStageId": null, "acquisitionProgramId": null, "mktoAcquisitionDate": null}, "emitted_at": 1674760920173} -{"stream": "leads", "data": {"company": "Test Company Org 2", "site": null, "billingStreet": null, "billingCity": null, "billingState": null, "billingCountry": null, "billingPostalCode": null, "website": null, "mainPhone": null, "annualRevenue": null, "numberOfEmployees": null, "industry": null, "sicCode": null, "mktoCompanyNotes": null, "externalCompanyId": null, "id": 895, "mktoName": "Test 2", "personType": "contact", "mktoIsPartner": false, "isLead": true, "mktoIsCustomer": false, "isAnonymous": false, "salutation": null, "firstName": "Test", "middleName": null, "lastName": "2", "email": "name5@example.com", "phone": null, "mobilePhone": null, "fax": null, "title": null, "contactCompany": "94", "dateOfBirth": null, "address": null, "city": null, "state": null, "country": null, "postalCode": null, "personTimeZone": null, "originalSourceType": "New lead", "originalSourceInfo": null, "registrationSourceType": "New lead", "registrationSourceInfo": null, "originalSearchEngine": null, "originalSearchPhrase": null, "originalReferrer": null, "emailInvalid": false, "emailInvalidCause": null, "unsubscribed": false, "unsubscribedReason": null, "doNotCall": false, "mktoDoNotCallCause": null, "doNotCallReason": null, "marketingSuspended": false, "marketingSuspendedCause": null, "blackListed": false, "blackListedCause": null, "mktoPersonNotes": null, "anonymousIP": null, "inferredCompany": null, "inferredCountry": null, "inferredCity": null, "inferredStateRegion": null, "inferredPostalCode": null, "inferredMetropolitanArea": null, "inferredPhoneAreaCode": null, "emailSuspended": null, "emailSuspendedCause": null, "emailSuspendedAt": null, "department": null, "createdAt": "2023-01-20T11:56:00Z", "updatedAt": "2023-01-24T11:10:51Z", "cookies": null, "externalSalesPersonId": null, "leadPerson": "895", "leadRole": null, "leadSource": null, "leadStatus": null, "leadScore": null, "urgency": null, "priority": null, "relativeScore": null, "relativeUrgency": null, "rating": null, "personPrimaryLeadInterest": "895", "leadPartitionId": "1", "leadRevenueCycleModelId": null, "leadRevenueStageId": null, "acquisitionProgramId": null, "mktoAcquisitionDate": null}, "emitted_at": 1674760920174} -{"stream": "leads", "data": {"company": "Test Company Org 5", "site": null, "billingStreet": null, "billingCity": null, "billingState": null, "billingCountry": null, "billingPostalCode": null, "website": null, "mainPhone": null, "annualRevenue": null, "numberOfEmployees": null, "industry": null, "sicCode": null, "mktoCompanyNotes": null, "externalCompanyId": null, "id": 897, "mktoName": "Test test", "personType": "contact", "mktoIsPartner": false, "isLead": true, "mktoIsCustomer": false, "isAnonymous": false, "salutation": null, "firstName": "Test", "middleName": null, "lastName": "test", "email": "name8@example.com", "phone": null, "mobilePhone": null, "fax": null, "title": null, "contactCompany": "95", "dateOfBirth": null, "address": null, "city": null, "state": null, "country": null, "postalCode": null, "personTimeZone": null, "originalSourceType": "New lead", "originalSourceInfo": null, "registrationSourceType": "New lead", "registrationSourceInfo": null, "originalSearchEngine": null, "originalSearchPhrase": null, "originalReferrer": null, "emailInvalid": false, "emailInvalidCause": null, "unsubscribed": false, "unsubscribedReason": null, "doNotCall": false, "mktoDoNotCallCause": null, "doNotCallReason": null, "marketingSuspended": false, "marketingSuspendedCause": null, "blackListed": false, "blackListedCause": null, "mktoPersonNotes": null, "anonymousIP": null, "inferredCompany": null, "inferredCountry": null, "inferredCity": null, "inferredStateRegion": null, "inferredPostalCode": null, "inferredMetropolitanArea": null, "inferredPhoneAreaCode": null, "emailSuspended": null, "emailSuspendedCause": null, "emailSuspendedAt": null, "department": null, "createdAt": "2023-01-23T08:09:55Z", "updatedAt": "2023-01-24T11:10:51Z", "cookies": null, "externalSalesPersonId": null, "leadPerson": "897", "leadRole": null, "leadSource": null, "leadStatus": null, "leadScore": null, "urgency": null, "priority": null, "relativeScore": null, "relativeUrgency": null, "rating": null, "personPrimaryLeadInterest": "897", "leadPartitionId": "1", "leadRevenueCycleModelId": null, "leadRevenueStageId": null, "acquisitionProgramId": null, "mktoAcquisitionDate": null}, "emitted_at": 1674760920175} -{"stream": "leads", "data": {"company": "Test Company Org 5", "site": null, "billingStreet": null, "billingCity": null, "billingState": null, "billingCountry": null, "billingPostalCode": null, "website": null, "mainPhone": null, "annualRevenue": null, "numberOfEmployees": null, "industry": null, "sicCode": null, "mktoCompanyNotes": null, "externalCompanyId": null, "id": 898, "mktoName": "Person 1 Person 1", "personType": "contact", "mktoIsPartner": false, "isLead": true, "mktoIsCustomer": false, "isAnonymous": false, "salutation": null, "firstName": "Person 1", "middleName": null, "lastName": "Person 1", "email": "name100@example.com", "phone": null, "mobilePhone": null, "fax": null, "title": null, "contactCompany": "96", "dateOfBirth": null, "address": null, "city": null, "state": null, "country": null, "postalCode": null, "personTimeZone": null, "originalSourceType": "New lead", "originalSourceInfo": null, "registrationSourceType": "New lead", "registrationSourceInfo": null, "originalSearchEngine": null, "originalSearchPhrase": null, "originalReferrer": null, "emailInvalid": false, "emailInvalidCause": null, "unsubscribed": false, "unsubscribedReason": null, "doNotCall": false, "mktoDoNotCallCause": null, "doNotCallReason": null, "marketingSuspended": false, "marketingSuspendedCause": null, "blackListed": false, "blackListedCause": null, "mktoPersonNotes": null, "anonymousIP": null, "inferredCompany": null, "inferredCountry": null, "inferredCity": null, "inferredStateRegion": null, "inferredPostalCode": null, "inferredMetropolitanArea": null, "inferredPhoneAreaCode": null, "emailSuspended": null, "emailSuspendedCause": null, "emailSuspendedAt": null, "department": null, "createdAt": "2023-01-23T08:20:01Z", "updatedAt": "2023-01-24T11:10:51Z", "cookies": null, "externalSalesPersonId": null, "leadPerson": "898", "leadRole": null, "leadSource": null, "leadStatus": null, "leadScore": null, "urgency": null, "priority": null, "relativeScore": null, "relativeUrgency": null, "rating": null, "personPrimaryLeadInterest": "898", "leadPartitionId": "1", "leadRevenueCycleModelId": null, "leadRevenueStageId": null, "acquisitionProgramId": null, "mktoAcquisitionDate": null}, "emitted_at": 1674760920176} -{"stream": "leads", "data": {"company": null, "site": null, "billingStreet": null, "billingCity": null, "billingState": null, "billingCountry": null, "billingPostalCode": null, "website": null, "mainPhone": null, "annualRevenue": null, "numberOfEmployees": null, "industry": null, "sicCode": null, "mktoCompanyNotes": null, "externalCompanyId": null, "id": 901, "mktoName": null, "personType": "contact", "mktoIsPartner": false, "isLead": true, "mktoIsCustomer": false, "isAnonymous": false, "salutation": null, "firstName": null, "middleName": null, "lastName": null, "email": null, "phone": null, "mobilePhone": null, "fax": null, "title": null, "contactCompany": "97", "dateOfBirth": null, "address": null, "city": null, "state": null, "country": null, "postalCode": null, "personTimeZone": "America/New_York", "originalSourceType": "Web form fillout", "originalSourceInfo": "Form: API Test Program.123.airbyte", "registrationSourceType": "Web form fillout", "registrationSourceInfo": "Form: API Test Program.123.airbyte", "originalSearchEngine": null, "originalSearchPhrase": null, "originalReferrer": "http://602-euo-598.mktoweb.com/lp/602-EUO-598/Landing-Page-3.html", "emailInvalid": false, "emailInvalidCause": null, "unsubscribed": false, "unsubscribedReason": null, "doNotCall": false, "mktoDoNotCallCause": null, "doNotCallReason": null, "marketingSuspended": false, "marketingSuspendedCause": null, "blackListed": false, "blackListedCause": null, "mktoPersonNotes": null, "anonymousIP": "63.117.14.132", "inferredCompany": "Verizon Business", "inferredCountry": "United States", "inferredCity": "Bronx", "inferredStateRegion": "NY", "inferredPostalCode": "10472", "inferredMetropolitanArea": "New York NY (MRC-501)", "inferredPhoneAreaCode": "718", "emailSuspended": null, "emailSuspendedCause": null, "emailSuspendedAt": null, "department": null, "createdAt": "2023-01-25T00:21:35Z", "updatedAt": "2023-01-25T00:21:37Z", "cookies": "_mch-mktoweb.com-1674606091542-53000", "externalSalesPersonId": null, "leadPerson": "901", "leadRole": null, "leadSource": null, "leadStatus": null, "leadScore": null, "urgency": null, "priority": null, "relativeScore": null, "relativeUrgency": null, "rating": null, "personPrimaryLeadInterest": "901", "leadPartitionId": "1", "leadRevenueCycleModelId": null, "leadRevenueStageId": null, "acquisitionProgramId": null, "mktoAcquisitionDate": null}, "emitted_at": 1674760920177} -{"stream": "activity_types", "data": {"id": 1, "name": "Visit Webpage", "description": "User visits a web page", "primaryAttribute": {"name": "Webpage ID", "dataType": "integer"}, "attributes": [{"name": "Client IP Address", "dataType": "string"}, {"name": "Query Parameters", "dataType": "string"}, {"name": "Referrer URL", "dataType": "string"}, {"name": "Search Engine", "dataType": "string"}, {"name": "Search Query", "dataType": "string"}, {"name": "User Agent", "dataType": "string"}, {"name": "Webpage URL", "dataType": "string"}]}, "emitted_at": 1674502168258} -{"stream": "activity_types", "data": {"id": 2, "name": "Fill Out Form", "description": "User fills out and submits a form on web page", "primaryAttribute": {"name": "Webform ID", "dataType": "integer"}, "attributes": [{"name": "Client IP Address", "dataType": "string"}, {"name": "Form Fields", "dataType": "text"}, {"name": "Query Parameters", "dataType": "string"}, {"name": "Referrer URL", "dataType": "string"}, {"name": "User Agent", "dataType": "string"}, {"name": "Webpage ID", "dataType": "integer"}]}, "emitted_at": 1674502168259} -{"stream": "activity_types", "data": {"id": 3, "name": "Click Link", "description": "User clicks link on a page", "primaryAttribute": {"name": "Link ID", "dataType": "integer"}, "attributes": [{"name": "Client IP Address", "dataType": "string"}, {"name": "Query Parameters", "dataType": "string"}, {"name": "Referrer URL", "dataType": "string"}, {"name": "User Agent", "dataType": "string"}, {"name": "Webpage ID", "dataType": "integer"}]}, "emitted_at": 1674502168261} -{"stream": "activity_types", "data": {"id": 6, "name": "Send Email", "description": "Send Marketo Email to a person", "primaryAttribute": {"name": "Mailing ID", "dataType": "integer"}, "attributes": [{"name": "Campaign Run ID", "dataType": "integer"}, {"name": "Choice Number", "dataType": "integer"}, {"name": "Has Predictive", "dataType": "boolean"}, {"name": "Step ID", "dataType": "integer"}, {"name": "Test Variant", "dataType": "integer"}]}, "emitted_at": 1674502168262} -{"stream": "activity_types", "data": {"id": 7, "name": "Email Delivered", "description": "Marketo Email is delivered to a lead/contact", "primaryAttribute": {"name": "Mailing ID", "dataType": "integer"}, "attributes": [{"name": "Campaign Run ID", "dataType": "integer"}, {"name": "Choice Number", "dataType": "integer"}, {"name": "Has Predictive", "dataType": "boolean"}, {"name": "Step ID", "dataType": "integer"}, {"name": "Test Variant", "dataType": "integer"}]}, "emitted_at": 1674502168263} -{"stream": "activity_types", "data": {"id": 8, "name": "Email Bounced", "description": "Marketo Email is bounced for a lead", "primaryAttribute": {"name": "Mailing ID", "dataType": "integer"}, "attributes": [{"name": "Campaign Run ID", "dataType": "integer"}, {"name": "Category", "dataType": "string"}, {"name": "Choice Number", "dataType": "integer"}, {"name": "Details", "dataType": "string"}, {"name": "Email", "dataType": "string"}, {"name": "Has Predictive", "dataType": "boolean"}, {"name": "Step ID", "dataType": "integer"}, {"name": "Subcategory", "dataType": "string"}, {"name": "Test Variant", "dataType": "integer"}]}, "emitted_at": 1674502168264} -{"stream": "activity_types", "data": {"id": 9, "name": "Unsubscribe Email", "description": "Person unsubscribed from Marketo Emails", "primaryAttribute": {"name": "Mailing ID", "dataType": "integer"}, "attributes": [{"name": "Campaign Run ID", "dataType": "Integer"}, {"name": "Client IP Address", "dataType": "string"}, {"name": "Form Fields", "dataType": "text"}, {"name": "Has Predictive", "dataType": "boolean"}, {"name": "Query Parameters", "dataType": "string"}, {"name": "Referrer URL", "dataType": "string"}, {"name": "Test Variant", "dataType": "integer"}, {"name": "User Agent", "dataType": "string"}, {"name": "Webform ID", "dataType": "integer"}, {"name": "Webpage ID", "dataType": "integer"}]}, "emitted_at": 1674502168264} -{"stream": "activity_types", "data": {"id": 10, "name": "Open Email", "description": "User opens Marketo Email", "primaryAttribute": {"name": "Mailing ID", "dataType": "integer"}, "attributes": [{"name": "Bot Activity Pattern", "dataType": "string"}, {"name": "Campaign Run ID", "dataType": "integer"}, {"name": "Choice Number", "dataType": "integer"}, {"name": "Device", "dataType": "string"}, {"name": "Has Predictive", "dataType": "boolean"}, {"name": "Is Bot Activity", "dataType": "boolean"}, {"name": "Is Mobile Device", "dataType": "boolean"}, {"name": "Platform", "dataType": "string"}, {"name": "Step ID", "dataType": "integer"}, {"name": "Test Variant", "dataType": "integer"}, {"name": "User Agent", "dataType": "string"}]}, "emitted_at": 1674502168265} -{"stream": "activity_types", "data": {"id": 11, "name": "Click Email", "description": "User clicks on a link in a Marketo Email", "primaryAttribute": {"name": "Mailing ID", "dataType": "integer"}, "attributes": [{"name": "Bot Activity Pattern", "dataType": "string"}, {"name": "Campaign Run ID", "dataType": "integer"}, {"name": "Choice Number", "dataType": "integer"}, {"name": "Device", "dataType": "string"}, {"name": "Is Bot Activity", "dataType": "boolean"}, {"name": "Is Mobile Device", "dataType": "boolean"}, {"name": "Is Predictive", "dataType": "boolean"}, {"name": "Link", "dataType": "string"}, {"name": "Link ID", "dataType": "string"}, {"name": "Platform", "dataType": "string"}, {"name": "Step ID", "dataType": "integer"}, {"name": "Test Variant", "dataType": "integer"}, {"name": "User Agent", "dataType": "string"}]}, "emitted_at": 1674502168266} -{"stream": "activity_types", "data": {"id": 12, "name": "New Lead", "description": "New person/record is added to the lead database", "attributes": [{"name": "Created Date", "dataType": "date"}, {"name": "Form Name", "dataType": "string"}, {"name": "Lead Source", "dataType": "string"}, {"name": "List Name", "dataType": "string"}, {"name": "SFDC Type", "dataType": "string"}, {"name": "Source Type", "dataType": "string"}, {"name": "API Method Name", "dataType": "string"}, {"name": "Modifying User", "dataType": "string"}, {"name": "Request Id", "dataType": "string"}]}, "emitted_at": 1674502168267} -{"stream": "activities_visit_webpage", "data": {"marketoGUID": "2125", "leadId": 864, "activityDate": "2023-01-17T11:29:20Z", "activityTypeId": 1, "campaignId": null, "primaryAttributeValueId": "10", "primaryAttributeValue": "Landing-Page-1", "webpage_url": "/lp/602-EUO-598/Landing-Page-1.html", "client_ip_address": "85.209.47.207", "user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36 Edg/109.0.1518.52", "query_parameters": null, "referrer_url": "https://602-euo-598.mktoweb.com/"}, "emitted_at": 1674502300617} -{"stream": "activities_visit_webpage", "data": {"marketoGUID": "2132", "leadId": 888, "activityDate": "2023-01-17T12:29:28Z", "activityTypeId": 1, "campaignId": null, "primaryAttributeValueId": "11", "primaryAttributeValue": "Landing-Page-2", "webpage_url": "/lp/602-EUO-598/Landing-Page-2.html", "client_ip_address": "85.209.47.207", "user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36 Edg/109.0.1518.52", "query_parameters": null, "referrer_url": "http://602-euo-598.mktoweb.com/"}, "emitted_at": 1674502300618} -{"stream": "activities_visit_webpage", "data": {"marketoGUID": "2133", "leadId": 888, "activityDate": "2023-01-17T12:29:51Z", "activityTypeId": 1, "campaignId": null, "primaryAttributeValueId": "12", "primaryAttributeValue": "Landing-Page-3", "webpage_url": "/lp/602-EUO-598/Landing-Page-3.html", "client_ip_address": "85.209.47.207", "user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36 Edg/109.0.1518.52", "query_parameters": null, "referrer_url": "http://602-euo-598.mktoweb.com/"}, "emitted_at": 1674502300619} -{"stream": "activities_visit_webpage", "data": {"marketoGUID": "2199", "leadId": 864, "activityDate": "2023-01-20T12:40:22Z", "activityTypeId": 1, "campaignId": null, "primaryAttributeValueId": "1", "primaryAttributeValue": "UnsubscribePage", "webpage_url": "/lp/datalineaedev/UnsubscribePage.html", "client_ip_address": "85.209.47.207", "user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:108.0) Gecko/20100101 Firefox/108.0", "query_parameters": "mkt_unsubscribe=1&mkt_tok=NjAyLUVVTy01OTgAAAGJbdICA9DCAo37JqD5ozxyzAlhl8ryjBs-YDMZdHsGTFeOe-C6dFcD19gwXxmu7jXj3HO-IA2VTSiA7upNlg", "referrer_url": "http://mkto-sj320154.com/"}, "emitted_at": 1674502300620} -{"stream": "activities_visit_webpage", "data": {"marketoGUID": "2200", "leadId": 864, "activityDate": "2023-01-20T12:40:36Z", "activityTypeId": 1, "campaignId": null, "primaryAttributeValueId": "2", "primaryAttributeValue": "UnsubscribeConfirm", "webpage_url": "/lp/602-EUO-598/UnsubscribeConfirm.html", "client_ip_address": "85.209.47.207", "user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:108.0) Gecko/20100101 Firefox/108.0", "query_parameters": "aliId=eyJpIjoiT2hyTkpVMUJTSUZRajZIZyIsInQiOiJKXC9xOUlRU3ZRR0czdlBTWnkxS3dzQT09In0%3D", "referrer_url": "http://602-euo-598.mktoweb.com/lp/datalineaedev/UnsubscribePage.html?mkt_unsubscribe=1"}, "emitted_at": 1674502300621} -{"stream": "activities_change_lead_partition", "data": {"marketoGUID": "2150", "leadId": 891, "activityDate": "2023-01-19T15:45:54Z", "activityTypeId": 100, "campaignId": 1077, "primaryAttributeValueId": "3", "primaryAttributeValue": "Test Partition 2", "old_partition_id": 2, "reason": "Lead Action"}, "emitted_at": 1674502553002} -{"stream": "activities_change_lead_partition", "data": {"marketoGUID": "2151", "leadId": 800, "activityDate": "2023-01-19T15:46:23Z", "activityTypeId": 100, "campaignId": 1079, "primaryAttributeValueId": "2", "primaryAttributeValue": "Test Partition", "old_partition_id": 1, "reason": "Lead Action"}, "emitted_at": 1674502553002} -{"stream": "activities_change_lead_partition", "data": {"marketoGUID": "2152", "leadId": 112, "activityDate": "2023-01-19T15:46:23Z", "activityTypeId": 100, "campaignId": 1078, "primaryAttributeValueId": "2", "primaryAttributeValue": "Test Partition", "old_partition_id": 1, "reason": "Lead Action"}, "emitted_at": 1674502553002} -{"stream": "activities_change_lead_partition", "data": {"marketoGUID": "2153", "leadId": 807, "activityDate": "2023-01-19T15:46:53Z", "activityTypeId": 100, "campaignId": 1080, "primaryAttributeValueId": "2", "primaryAttributeValue": "Test Partition", "old_partition_id": 1, "reason": "Lead Action"}, "emitted_at": 1674502553002} -{"stream": "activities_change_statusin_progression", "data": {"marketoGUID": "2114", "leadId": 100, "activityDate": "2023-01-17T11:07:53Z", "activityTypeId": 104, "campaignId": 1061, "primaryAttributeValueId": "1013", "primaryAttributeValue": "API Test Program 10", "old_status_id": 9, "new_status_id": 10, "acquired_by": false, "old_status": "Not in Program", "new_status": "Filled-out Form", "program_member_id": 120, "success": false}, "emitted_at": 1674502931187} -{"stream": "activities_change_statusin_progression", "data": {"marketoGUID": "2122", "leadId": 807, "activityDate": "2023-01-17T11:26:23Z", "activityTypeId": 104, "campaignId": 1068, "primaryAttributeValueId": "1008", "primaryAttributeValue": "API Test Program 5", "old_status_id": 9, "new_status_id": 11, "acquired_by": false, "old_status": "Not in Program", "new_status": "Influenced", "program_member_id": 121, "success": true}, "emitted_at": 1674502931188} -{"stream": "activities_change_statusin_progression", "data": {"marketoGUID": "2141", "leadId": 23, "activityDate": "2023-01-19T14:48:24Z", "activityTypeId": 104, "campaignId": 1075, "primaryAttributeValueId": "1004", "primaryAttributeValue": "API Test Program 1", "old_status_id": 9, "new_status_id": 10, "acquired_by": false, "old_status": "Not in Program", "new_status": "Filled-out Form", "program_member_id": 122, "success": false}, "emitted_at": 1674502931189} -{"stream": "activities_change_statusin_progression", "data": {"marketoGUID": "2156", "leadId": 105, "activityDate": "2023-01-20T09:41:23Z", "activityTypeId": 104, "campaignId": 1083, "primaryAttributeValueId": "1004", "primaryAttributeValue": "API Test Program 1", "old_status_id": 9, "new_status_id": 10, "acquired_by": false, "old_status": "Not in Program", "new_status": "Filled-out Form", "program_member_id": 123, "success": false}, "emitted_at": 1674502931190} -{"stream": "activities_change_statusin_progression", "data": {"marketoGUID": "2157", "leadId": 23, "activityDate": "2023-01-20T09:42:23Z", "activityTypeId": 104, "campaignId": 1084, "primaryAttributeValueId": "1006", "primaryAttributeValue": "API Test Program 3", "old_status_id": 9, "new_status_id": 10, "acquired_by": false, "old_status": "Not in Program", "new_status": "Filled-out Form", "program_member_id": 124, "success": false}, "emitted_at": 1674502931191} -{"stream": "activities_change_statusin_progression", "data": {"marketoGUID": "2158", "leadId": 100, "activityDate": "2023-01-20T09:42:53Z", "activityTypeId": 104, "campaignId": 1086, "primaryAttributeValueId": "1008", "primaryAttributeValue": "API Test Program 5", "old_status_id": 9, "new_status_id": 11, "acquired_by": false, "old_status": "Not in Program", "new_status": "Influenced", "program_member_id": 125, "success": true}, "emitted_at": 1674502931191} -{"stream": "activities_change_statusin_progression", "data": {"marketoGUID": "2159", "leadId": 99, "activityDate": "2023-01-20T09:42:53Z", "activityTypeId": 104, "campaignId": 1085, "primaryAttributeValueId": "1013", "primaryAttributeValue": "API Test Program 10", "old_status_id": 9, "new_status_id": 11, "acquired_by": false, "old_status": "Not in Program", "new_status": "Influenced", "program_member_id": 126, "success": true}, "emitted_at": 1674502931191} -{"stream": "activities_change_statusin_progression", "data": {"marketoGUID": "2160", "leadId": 104, "activityDate": "2023-01-20T09:43:23Z", "activityTypeId": 104, "campaignId": 1088, "primaryAttributeValueId": "1010", "primaryAttributeValue": "API Test Program 7", "old_status_id": 9, "new_status_id": 10, "acquired_by": false, "old_status": "Not in Program", "new_status": "Filled-out Form", "program_member_id": 127, "success": false}, "emitted_at": 1674502931191} -{"stream": "activities_change_statusin_progression", "data": {"marketoGUID": "2161", "leadId": 105, "activityDate": "2023-01-20T09:43:53Z", "activityTypeId": 104, "campaignId": 1089, "primaryAttributeValueId": "1011", "primaryAttributeValue": "API Test Program 8", "old_status_id": 9, "new_status_id": 10, "acquired_by": false, "old_status": "Not in Program", "new_status": "Filled-out Form", "program_member_id": 128, "success": false}, "emitted_at": 1674502931192} -{"stream": "activities_change_statusin_progression", "data": {"marketoGUID": "2171", "leadId": 99, "activityDate": "2023-01-20T09:57:53Z", "activityTypeId": 104, "campaignId": 1102, "primaryAttributeValueId": "1025", "primaryAttributeValue": "Test Nurture", "old_status_id": 30, "new_status_id": 31, "acquired_by": false, "old_status": "Not in Program", "new_status": "Member", "program_member_id": 129, "success": false}, "emitted_at": 1674502931192} -{"stream": "activities_removefrom_list", "data": {"marketoGUID": "2165", "leadId": 379, "activityDate": "2023-01-20T09:46:23Z", "activityTypeId": 25, "campaignId": 1094, "primaryAttributeValueId": "1017", "primaryAttributeValue": "API Test Program.List 2", "source": "Marketo Flow Action"}, "emitted_at": 1674503059287} -{"stream": "activities_removefrom_list", "data": {"marketoGUID": "2166", "leadId": 104, "activityDate": "2023-01-20T09:46:53Z", "activityTypeId": 25, "campaignId": 1095, "primaryAttributeValueId": "1016", "primaryAttributeValue": "API Test Program.List 1", "source": "Marketo Flow Action"}, "emitted_at": 1674503059288} -{"stream": "activities_removefrom_list", "data": {"marketoGUID": "2167", "leadId": 801, "activityDate": "2023-01-20T09:47:23Z", "activityTypeId": 25, "campaignId": 1096, "primaryAttributeValueId": "1017", "primaryAttributeValue": "API Test Program.List 2", "source": "Marketo Flow Action"}, "emitted_at": 1674503059289} -{"stream": "activities_removefrom_list", "data": {"marketoGUID": "2168", "leadId": 802, "activityDate": "2023-01-20T09:48:23Z", "activityTypeId": 25, "campaignId": 1097, "primaryAttributeValueId": "1017", "primaryAttributeValue": "API Test Program.List 2", "source": "Marketo Flow Action"}, "emitted_at": 1674503059289} -{"stream": "activities_addto_nurture", "data": {"marketoGUID": "2169", "leadId": 99, "activityDate": "2023-01-20T09:57:53Z", "activityTypeId": 113, "campaignId": 1102, "primaryAttributeValueId": "1025", "primaryAttributeValue": "Test Nurture", "track_id": 1, "track_name": "Stream 1"}, "emitted_at": 1674503186881} -{"stream": "activities_addto_nurture", "data": {"marketoGUID": "2172", "leadId": 800, "activityDate": "2023-01-20T09:59:53Z", "activityTypeId": 113, "campaignId": 1103, "primaryAttributeValueId": "1025", "primaryAttributeValue": "Test Nurture", "track_id": 1, "track_name": "Stream 1"}, "emitted_at": 1674503186883} -{"stream": "activities_addto_nurture", "data": {"marketoGUID": "2189", "leadId": 105, "activityDate": "2023-01-20T11:53:23Z", "activityTypeId": 113, "campaignId": 1112, "primaryAttributeValueId": "1025", "primaryAttributeValue": "Test Nurture", "track_id": 1, "track_name": "Stream 1"}, "emitted_at": 1674503186884} -{"stream": "activities_addto_nurture", "data": {"marketoGUID": "2202", "leadId": 876, "activityDate": "2023-01-20T12:48:53Z", "activityTypeId": 113, "campaignId": 1125, "primaryAttributeValueId": "1025", "primaryAttributeValue": "Test Nurture", "track_id": 1, "track_name": "Stream 1"}, "emitted_at": 1674503186885} -{"stream": "activities_addto_nurture", "data": {"marketoGUID": "2218", "leadId": 379, "activityDate": "2023-01-20T13:00:24Z", "activityTypeId": 113, "campaignId": 1127, "primaryAttributeValueId": "1025", "primaryAttributeValue": "Test Nurture", "track_id": 1, "track_name": "Stream 1"}, "emitted_at": 1674503186885} -{"stream": "activities_addto_nurture", "data": {"marketoGUID": "2267", "leadId": 880, "activityDate": "2023-01-23T08:24:51Z", "activityTypeId": 113, "campaignId": 1158, "primaryAttributeValueId": "1025", "primaryAttributeValue": "Test Nurture", "track_id": 1, "track_name": "Stream 1"}, "emitted_at": 1674503186885} -{"stream": "activities_email_bounced_soft", "data": {"marketoGUID": "2137", "leadId": 807, "activityDate": "2023-01-18T11:25:57Z", "activityTypeId": 27, "campaignId": 1066, "primaryAttributeValueId": "1002", "primaryAttributeValue": "EM - Auteur - v1.EM - Auteur - v1", "campaign_run_id": 28, "category": "4", "email": "kjashaedd-13@klooblept.com", "details": "554 5.4.7 [internal] (last transfail: 454 4.4.4 [internal] no MX or A for domain)", "subcategory": "4003", "step_id": 110, "choice_number": 118}, "emitted_at": 1674503313861} -{"stream": "activities_email_bounced_soft", "data": {"marketoGUID": "2138", "leadId": 816, "activityDate": "2023-01-18T11:26:56Z", "activityTypeId": 27, "campaignId": 1070, "primaryAttributeValueId": "1002", "primaryAttributeValue": "EM - Auteur - v1.EM - Auteur - v1", "campaign_run_id": 30, "category": "4", "email": "kjashaedd-37@klooblept.com", "details": "554 5.4.7 [internal] (last transfail: 454 4.4.4 [internal] no MX or A for domain)", "subcategory": "4003", "step_id": 126, "choice_number": 134}, "emitted_at": 1674503313862} -{"stream": "activities_email_bounced_soft", "data": {"marketoGUID": "2240", "leadId": 99, "activityDate": "2023-01-20T16:21:27Z", "activityTypeId": 27, "campaignId": 1138, "primaryAttributeValueId": "1013", "primaryAttributeValue": "BP-LE-YYYY-MM-DD Live Event v3.EMAIL-Invitation", "campaign_run_id": 92, "category": "4", "email": "name2@example.com", "details": "551 5.7.0 [internal] recipient blackholed", "subcategory": "4006", "step_id": 417, "choice_number": 544}, "emitted_at": 1674503313863} -{"stream": "activities_email_bounced_soft", "data": {"marketoGUID": "2256", "leadId": 99, "activityDate": "2023-01-22T11:57:55Z", "activityTypeId": 27, "campaignId": 1100, "primaryAttributeValueId": "1009", "primaryAttributeValue": "Test Nurture.integration-tgest@airbyte.io", "campaign_run_id": 95, "category": "4", "email": "name2@example.com", "details": "551 5.7.0 [internal] recipient blackholed", "subcategory": "4006", "step_id": 245, "choice_number": 260}, "emitted_at": 1674503313864} -{"stream": "activities_email_bounced_soft", "data": {"marketoGUID": "2257", "leadId": 379, "activityDate": "2023-01-22T11:57:56Z", "activityTypeId": 27, "campaignId": 1100, "primaryAttributeValueId": "1009", "primaryAttributeValue": "Test Nurture.integration-tgest@airbyte.io", "campaign_run_id": 95, "category": "3", "email": "testemail@gmail.com", "details": "552-5.2.2 The email account that you tried to reach is over quota and inactive.\r\n552-5.2.2 Please direct the recipient to\r\n552 5.2.2 https://support.google.com/mail/?p=OverQuotaPerm c1-20020a62e801000000b0058df8aad481si11279798pfi.352 - gsmtp", "subcategory": "3001", "step_id": 245, "choice_number": 260}, "emitted_at": 1674503313864} -{"stream": "activities_email_bounced_soft", "data": {"marketoGUID": "2284", "leadId": 800, "activityDate": "2023-01-23T11:58:00Z", "activityTypeId": 27, "campaignId": 1100, "primaryAttributeValueId": "1009", "primaryAttributeValue": "Test Nurture.integration-tgest@airbyte.io", "campaign_run_id": 95, "category": "4", "email": "kjashaedd-1@klooblept.com", "details": "554 5.4.7 [internal] (last transfail: 454 4.4.4 [internal] no MX or A for domain)", "subcategory": "4003", "step_id": 245, "choice_number": 260}, "emitted_at": 1674503313865} -{"stream": "activities_merge_leads", "data": {"marketoGUID": "2126", "leadId": 864, "activityDate": "2023-01-17T11:29:43Z", "activityTypeId": 32, "campaignId": null, "primaryAttributeValueId": "864", "primaryAttributeValue": "yuriiyurii", "merge_ids": [887]}, "emitted_at": 1674503566607} -{"stream": "activities_merge_leads", "data": {"marketoGUID": "2184", "leadId": 809, "activityDate": "2023-01-20T11:44:22Z", "activityTypeId": 32, "campaignId": null, "primaryAttributeValueId": "809", "primaryAttributeValue": "Kataldar-30", "merge_ids": [811], "mergedin_sales": false, "merge_source": "leaddb", "master_updated": false}, "emitted_at": 1674503566608} -{"stream": "activities_send_email", "data": {"marketoGUID": "2112", "leadId": 100, "activityDate": "2023-01-17T11:07:28Z", "activityTypeId": 6, "campaignId": 1060, "primaryAttributeValueId": "1005", "primaryAttributeValue": "API Test Program.123.123", "campaign_run_id": 22, "step_id": 90, "choice_number": 0}, "emitted_at": 1674503692852} -{"stream": "activities_send_email", "data": {"marketoGUID": "2121", "leadId": 807, "activityDate": "2023-01-17T11:25:57Z", "activityTypeId": 6, "campaignId": 1066, "primaryAttributeValueId": "1002", "primaryAttributeValue": "EM - Auteur - v1.EM - Auteur - v1", "campaign_run_id": 28, "step_id": 110, "choice_number": 0}, "emitted_at": 1674503692853} -{"stream": "activities_send_email", "data": {"marketoGUID": "2124", "leadId": 816, "activityDate": "2023-01-17T11:26:57Z", "activityTypeId": 6, "campaignId": 1070, "primaryAttributeValueId": "1002", "primaryAttributeValue": "EM - Auteur - v1.EM - Auteur - v1", "campaign_run_id": 30, "step_id": 126, "choice_number": 0}, "emitted_at": 1674503692854} -{"stream": "activities_send_email", "data": {"marketoGUID": "2185", "leadId": 109, "activityDate": "2023-01-20T11:45:57Z", "activityTypeId": 6, "campaignId": 1109, "primaryAttributeValueId": "1009", "primaryAttributeValue": "Test Nurture.integration-tgest@airbyte.io", "campaign_run_id": 66, "step_id": 305, "choice_number": 0}, "emitted_at": 1674503692855} -{"stream": "activities_send_email", "data": {"marketoGUID": "2206", "leadId": 876, "activityDate": "2023-01-20T12:49:27Z", "activityTypeId": 6, "campaignId": 1126, "primaryAttributeValueId": "1009", "primaryAttributeValue": "Test Nurture.integration-tgest@airbyte.io", "campaign_run_id": 86, "step_id": 364, "choice_number": 0}, "emitted_at": 1674503692855} -{"stream": "activities_send_email", "data": {"marketoGUID": "2239", "leadId": 99, "activityDate": "2023-01-20T16:21:28Z", "activityTypeId": 6, "campaignId": 1138, "primaryAttributeValueId": "1013", "primaryAttributeValue": "BP-LE-YYYY-MM-DD Live Event v3.EMAIL-Invitation", "campaign_run_id": 92, "step_id": 417, "choice_number": 0}, "emitted_at": 1674503692856} -{"stream": "activities_send_email", "data": {"marketoGUID": "2250", "leadId": 99, "activityDate": "2023-01-22T11:57:56Z", "activityTypeId": 6, "campaignId": 1100, "primaryAttributeValueId": "1009", "primaryAttributeValue": "Test Nurture.integration-tgest@airbyte.io", "campaign_run_id": 95, "step_id": 245, "choice_number": 0}, "emitted_at": 1674503692856} -{"stream": "activities_send_email", "data": {"marketoGUID": "2251", "leadId": 379, "activityDate": "2023-01-22T11:57:56Z", "activityTypeId": 6, "campaignId": 1100, "primaryAttributeValueId": "1009", "primaryAttributeValue": "Test Nurture.integration-tgest@airbyte.io", "campaign_run_id": 95, "step_id": 245, "choice_number": 0}, "emitted_at": 1674503692856} -{"stream": "activities_send_email", "data": {"marketoGUID": "2252", "leadId": 800, "activityDate": "2023-01-22T11:57:56Z", "activityTypeId": 6, "campaignId": 1100, "primaryAttributeValueId": "1009", "primaryAttributeValue": "Test Nurture.integration-tgest@airbyte.io", "campaign_run_id": 95, "step_id": 245, "choice_number": 0}, "emitted_at": 1674503692857} -{"stream": "activities_send_email", "data": {"marketoGUID": "2271", "leadId": 880, "activityDate": "2023-01-23T08:25:26Z", "activityTypeId": 6, "campaignId": 1159, "primaryAttributeValueId": "1009", "primaryAttributeValue": "Test Nurture.integration-tgest@airbyte.io", "campaign_run_id": 112, "step_id": 489, "choice_number": 0}, "emitted_at": 1674503692857} -{"stream": "activities_new_lead", "data": {"marketoGUID": "2108", "leadId": 885, "activityDate": "2023-01-17T11:00:59Z", "activityTypeId": 12, "campaignId": null, "primaryAttributeValueId": "885", "primaryAttributeValue": "Test Person 1 All People", "created_date": "2023-01-17", "source_type": "New lead"}, "emitted_at": 1674503945149} -{"stream": "activities_new_lead", "data": {"marketoGUID": "2130", "leadId": 888, "activityDate": "2023-01-17T12:29:39Z", "activityTypeId": 12, "campaignId": null, "primaryAttributeValueId": "888", "primaryAttributeValue": "[Sample]Name Surname", "form_name": "API Test Program.123.airbyte", "created_date": "2023-01-17", "source_type": "Web form fillout"}, "emitted_at": 1674503945150} -{"stream": "activities_new_lead", "data": {"marketoGUID": "2134", "leadId": 889, "activityDate": "2023-01-17T12:30:09Z", "activityTypeId": 12, "campaignId": null, "primaryAttributeValueId": "889", "primaryAttributeValue": "[Sample] sample", "form_name": "API Test Program.123.airbyte", "created_date": "2023-01-17", "source_type": "Web form fillout"}, "emitted_at": 1674503945151} -{"stream": "activities_new_lead", "data": {"marketoGUID": "2142", "leadId": 890, "activityDate": "2023-01-19T15:07:51Z", "activityTypeId": 12, "campaignId": null, "primaryAttributeValueId": "890", "primaryAttributeValue": "Test Person 10 Test 10", "created_date": "2023-01-19", "source_type": "New lead"}, "emitted_at": 1674503945151} -{"stream": "activities_new_lead", "data": {"marketoGUID": "2147", "leadId": 891, "activityDate": "2023-01-19T15:25:17Z", "activityTypeId": 12, "campaignId": null, "primaryAttributeValueId": "891", "primaryAttributeValue": "Name11 Surname11", "created_date": "2023-01-19", "source_type": "New lead"}, "emitted_at": 1674503945152} -{"stream": "activities_new_lead", "data": {"marketoGUID": "2192", "leadId": 895, "activityDate": "2023-01-20T11:56:00Z", "activityTypeId": 12, "campaignId": null, "primaryAttributeValueId": "895", "primaryAttributeValue": "Test 2", "created_date": "2023-01-20", "source_type": "New lead"}, "emitted_at": 1674503945152} -{"stream": "activities_new_lead", "data": {"marketoGUID": "2263", "leadId": 897, "activityDate": "2023-01-23T08:09:56Z", "activityTypeId": 12, "campaignId": null, "primaryAttributeValueId": "897", "primaryAttributeValue": "Test test", "created_date": "2023-01-23", "source_type": "New lead"}, "emitted_at": 1674503945153} -{"stream": "activities_new_lead", "data": {"marketoGUID": "2265", "leadId": 898, "activityDate": "2023-01-23T08:20:01Z", "activityTypeId": 12, "campaignId": null, "primaryAttributeValueId": "898", "primaryAttributeValue": "Person 1 Person 1", "created_date": "2023-01-23", "source_type": "New lead"}, "emitted_at": 1674503945153} -{"stream": "activities_unsubscribe_email", "data": {"marketoGUID": "2201", "leadId": 864, "activityDate": "2023-01-20T12:40:36Z", "activityTypeId": 9, "campaignId": null, "primaryAttributeValueId": "1010", "primaryAttributeValue": "My Email Program - RF.Test Email 1", "webform_id": 1, "client_ip_address": "85.209.47.207", "form_fields": "a:20:{s:6:\"module\";s:11:\"leadCapture\";s:6:\"action\";s:5:\"save2\";s:5:\"Email\";s:27:\"integration-test@airbyte.io\";s:12:\"Unsubscribed\";s:3:\"Yes\";s:6:\"formid\";s:1:\"1\";s:4:\"lpId\";s:1:\"1\";s:5:\"subId\";s:3:\"154\";s:10:\"munchkinId\";s:11:\"602-EUO-598\";s:5:\"lpurl\";s:93:\"http://602-EUO-598.mktoweb.com/lp/602-EUO-598/UnsubscribePage.html?cr={creative}&kw={keyword}\";s:12:\"followupLpId\";s:1:\"2\";s:2:\"cr\";s:0:\"\";s:2:\"kw\";s:0:\"\";s:1:\"q\";s:0:\"\";s:8:\"_mkt_trk\";s:57:\"id:602-EUO-598&token:_mch-mktoweb.com-1674218381862-27778\";s:7:\"formVid\";s:1:\"1\";s:7:\"mkt_tok\";s:102:\"NjAyLUVVTy01OTgAAAGJbdICA9DCAo37JqD5ozxyzAlhl8ryjBs-YDMZdHsGTFeOe-C6dFcD19gwXxmu7jXj3HO-IA2VTSiA7upNlg\";s:13:\"_mktoReferrer\";s:197:\"http://602-euo-598.mktoweb.com/lp/datalineaedev/UnsubscribePage.html?mkt_unsubscribe=1&mkt_tok=NjAyLUVVTy01OTgAAAGJbdICA9DCAo37JqD5ozxyzAlhl8ryjBs-YDMZdHsGTFeOe-C6dFcD19gwXxmu7jXj3HO-IA2VTSiA7upNlg\";s:14:\"checksumFields\";s:113:\"Email,Unsubscribed,formid,lpId,subId,munchkinId,lpurl,followupLpId,cr,kw,q,_mkt_trk,formVid,mkt_tok,_mktoReferrer\";s:8:\"checksum\";s:64:\"b959482d2aff7c190b46cc567e79fce9c99a6342fbe1eb3fd863ec9a6ac1159a\";s:25:\"formServiceRequestId31337\";s:16:\"7e0e#185cf31f199\";}", "webpage_id": 1, "user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:108.0) Gecko/20100101 Firefox/108.0", "query_parameters": "mkt_unsubscribe=1&mkt_tok=NjAyLUVVTy01OTgAAAGJbdICA9DCAo37JqD5ozxyzAlhl8ryjBs-YDMZdHsGTFeOe-C6dFcD19gwXxmu7jXj3HO-IA2VTSiA7upNlg", "referrer_url": "http://602-euo-598.mktoweb.com/lp/datalineaedev/UnsubscribePage.html?mkt_unsubscribe=1&mkt_tok=NjAyLUVVTy01OTgAAAGJbdICA9DCAo37JqD5ozxyzAlhl8ryjBs-YDMZdHsGTFeOe-C6dFcD19gwXxmu7jXj3HO-IA2VTSiA7upNlg"}, "emitted_at": 1674504197171} -{"stream": "activities_email_delivered", "data": {"marketoGUID": "2113", "leadId": 100, "activityDate": "2023-01-17T11:07:30Z", "activityTypeId": 7, "campaignId": 1060, "primaryAttributeValueId": "1005", "primaryAttributeValue": "API Test Program.123.123", "campaign_run_id": 22, "step_id": 90, "choice_number": 98}, "emitted_at": 1674504324745} -{"stream": "activities_email_delivered", "data": {"marketoGUID": "2186", "leadId": 109, "activityDate": "2023-01-20T11:45:58Z", "activityTypeId": 7, "campaignId": 1109, "primaryAttributeValueId": "1009", "primaryAttributeValue": "Test Nurture.integration-tgest@airbyte.io", "campaign_run_id": 66, "step_id": 305, "choice_number": 407}, "emitted_at": 1674504324746} -{"stream": "activities_email_delivered", "data": {"marketoGUID": "2208", "leadId": 876, "activityDate": "2023-01-20T12:49:29Z", "activityTypeId": 7, "campaignId": 1126, "primaryAttributeValueId": "1009", "primaryAttributeValue": "Test Nurture.integration-tgest@airbyte.io", "campaign_run_id": 86, "step_id": 364, "choice_number": 470}, "emitted_at": 1674504324746} -{"stream": "activities_fill_out_form", "data": {"marketoGUID": "2129", "leadId": 864, "activityDate": "2023-01-17T11:29:43Z", "activityTypeId": 2, "campaignId": null, "primaryAttributeValueId": "1006", "primaryAttributeValue": "API Test Program.123.airbyte", "form_fields": "a:19:{s:6:\"module\";s:11:\"leadCapture\";s:6:\"action\";s:5:\"save2\";s:9:\"FirstName\";s:7:\"Segment\";s:8:\"LastName\";s:1:\"5\";s:5:\"Email\";s:27:\"integration-test@airbyte.io\";s:6:\"formid\";s:4:\"1006\";s:4:\"lpId\";s:4:\"1005\";s:5:\"subId\";s:3:\"154\";s:10:\"munchkinId\";s:11:\"602-EUO-598\";s:5:\"lpurl\";s:92:\"http://602-EUO-598.mktoweb.com/lp/602-EUO-598/Landing-Page-1.html?cr={creative}&kw={keyword}\";s:2:\"cr\";s:0:\"\";s:2:\"kw\";s:0:\"\";s:1:\"q\";s:0:\"\";s:8:\"_mkt_trk\";s:57:\"id:602-EUO-598&token:_mch-mktoweb.com-1673954921699-88079\";s:7:\"formVid\";s:4:\"1006\";s:13:\"_mktoReferrer\";s:66:\"https://602-euo-598.mktoweb.com/lp/602-EUO-598/Landing-Page-1.html\";s:14:\"checksumFields\";s:98:\"FirstName,LastName,Email,formid,lpId,subId,munchkinId,lpurl,cr,kw,q,_mkt_trk,formVid,_mktoReferrer\";s:8:\"checksum\";s:64:\"774b4fee27ce1a145370b5ffebe8f4e300c1404cfd86a2067763c65b063d1b66\";s:25:\"formServiceRequestId31337\";s:17:\"17915#185bf7ded1f\";}", "client_ip_address": "85.209.47.207", "webpage_id": 10, "user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36 Edg/109.0.1518.52", "query_parameters": null, "referrer_url": "https://602-euo-598.mktoweb.com/lp/602-EUO-598/Landing-Page-1.html"}, "emitted_at": 1674504450336} -{"stream": "activities_fill_out_form", "data": {"marketoGUID": "2131", "leadId": 888, "activityDate": "2023-01-17T12:29:40Z", "activityTypeId": 2, "campaignId": null, "primaryAttributeValueId": "1006", "primaryAttributeValue": "API Test Program.123.airbyte", "form_fields": "a:19:{s:6:\"module\";s:11:\"leadCapture\";s:6:\"action\";s:5:\"save2\";s:9:\"FirstName\";s:12:\"[Sample]Name\";s:8:\"LastName\";s:7:\"Surname\";s:5:\"Email\";s:25:\"iryna.grankova@airbyte.io\";s:6:\"formid\";s:4:\"1006\";s:4:\"lpId\";s:4:\"1007\";s:5:\"subId\";s:3:\"154\";s:10:\"munchkinId\";s:11:\"602-EUO-598\";s:5:\"lpurl\";s:92:\"http://602-EUO-598.mktoweb.com/lp/602-EUO-598/Landing-Page-2.html?cr={creative}&kw={keyword}\";s:2:\"cr\";s:0:\"\";s:2:\"kw\";s:0:\"\";s:1:\"q\";s:0:\"\";s:8:\"_mkt_trk\";s:57:\"id:602-EUO-598&token:_mch-mktoweb.com-1673954921699-88079\";s:7:\"formVid\";s:4:\"1006\";s:13:\"_mktoReferrer\";s:65:\"http://602-euo-598.mktoweb.com/lp/602-EUO-598/Landing-Page-2.html\";s:14:\"checksumFields\";s:98:\"FirstName,LastName,Email,formid,lpId,subId,munchkinId,lpurl,cr,kw,q,_mkt_trk,formVid,_mktoReferrer\";s:8:\"checksum\";s:64:\"31c81f3245d5080d0bb93a07f67ae67a0c4667adcce1400cee8857206f656981\";s:25:\"formServiceRequestId31337\";s:17:\"161b7#185bfb4d8a8\";}", "client_ip_address": "85.209.47.207", "webpage_id": 11, "user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36 Edg/109.0.1518.52", "query_parameters": null, "referrer_url": "http://602-euo-598.mktoweb.com/lp/602-EUO-598/Landing-Page-2.html"}, "emitted_at": 1674504450337} -{"stream": "activities_fill_out_form", "data": {"marketoGUID": "2135", "leadId": 889, "activityDate": "2023-01-17T12:30:10Z", "activityTypeId": 2, "campaignId": null, "primaryAttributeValueId": "1006", "primaryAttributeValue": "API Test Program.123.airbyte", "form_fields": "a:19:{s:6:\"module\";s:11:\"leadCapture\";s:6:\"action\";s:5:\"save2\";s:9:\"FirstName\";s:8:\"[Sample]\";s:8:\"LastName\";s:6:\"sample\";s:5:\"Email\";s:30:\"iryna.grankova@globallogic.com\";s:6:\"formid\";s:4:\"1006\";s:4:\"lpId\";s:4:\"1009\";s:5:\"subId\";s:3:\"154\";s:10:\"munchkinId\";s:11:\"602-EUO-598\";s:5:\"lpurl\";s:92:\"http://602-EUO-598.mktoweb.com/lp/602-EUO-598/Landing-Page-3.html?cr={creative}&kw={keyword}\";s:2:\"cr\";s:0:\"\";s:2:\"kw\";s:0:\"\";s:1:\"q\";s:0:\"\";s:8:\"_mkt_trk\";s:57:\"id:602-EUO-598&token:_mch-mktoweb.com-1673954921699-88079\";s:7:\"formVid\";s:4:\"1006\";s:13:\"_mktoReferrer\";s:65:\"http://602-euo-598.mktoweb.com/lp/602-EUO-598/Landing-Page-3.html\";s:14:\"checksumFields\";s:98:\"FirstName,LastName,Email,formid,lpId,subId,munchkinId,lpurl,cr,kw,q,_mkt_trk,formVid,_mktoReferrer\";s:8:\"checksum\";s:64:\"c7f8c6af1167c273c27bc3b441b5be79672d5a6d61f66398eba04782ca972195\";s:25:\"formServiceRequestId31337\";s:17:\"16fe4#185bfb55182\";}", "client_ip_address": "85.209.47.207", "webpage_id": 12, "user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36 Edg/109.0.1518.52", "query_parameters": null, "referrer_url": "http://602-euo-598.mktoweb.com/lp/602-EUO-598/Landing-Page-3.html"}, "emitted_at": 1674504450338} -{"stream": "activities_fill_out_form", "data": {"marketoGUID": "2198", "leadId": 864, "activityDate": "2023-01-20T12:40:36Z", "activityTypeId": 2, "campaignId": null, "primaryAttributeValueId": "1", "primaryAttributeValue": "Email Unsubscribe Form", "form_fields": "a:20:{s:6:\"module\";s:11:\"leadCapture\";s:6:\"action\";s:5:\"save2\";s:5:\"Email\";s:27:\"integration-test@airbyte.io\";s:12:\"Unsubscribed\";s:3:\"Yes\";s:6:\"formid\";s:1:\"1\";s:4:\"lpId\";s:1:\"1\";s:5:\"subId\";s:3:\"154\";s:10:\"munchkinId\";s:11:\"602-EUO-598\";s:5:\"lpurl\";s:93:\"http://602-EUO-598.mktoweb.com/lp/602-EUO-598/UnsubscribePage.html?cr={creative}&kw={keyword}\";s:12:\"followupLpId\";s:1:\"2\";s:2:\"cr\";s:0:\"\";s:2:\"kw\";s:0:\"\";s:1:\"q\";s:0:\"\";s:8:\"_mkt_trk\";s:57:\"id:602-EUO-598&token:_mch-mktoweb.com-1674218381862-27778\";s:7:\"formVid\";s:1:\"1\";s:7:\"mkt_tok\";s:102:\"NjAyLUVVTy01OTgAAAGJbdICA9DCAo37JqD5ozxyzAlhl8ryjBs-YDMZdHsGTFeOe-C6dFcD19gwXxmu7jXj3HO-IA2VTSiA7upNlg\";s:13:\"_mktoReferrer\";s:197:\"http://602-euo-598.mktoweb.com/lp/datalineaedev/UnsubscribePage.html?mkt_unsubscribe=1&mkt_tok=NjAyLUVVTy01OTgAAAGJbdICA9DCAo37JqD5ozxyzAlhl8ryjBs-YDMZdHsGTFeOe-C6dFcD19gwXxmu7jXj3HO-IA2VTSiA7upNlg\";s:14:\"checksumFields\";s:113:\"Email,Unsubscribed,formid,lpId,subId,munchkinId,lpurl,followupLpId,cr,kw,q,_mkt_trk,formVid,mkt_tok,_mktoReferrer\";s:8:\"checksum\";s:64:\"b959482d2aff7c190b46cc567e79fce9c99a6342fbe1eb3fd863ec9a6ac1159a\";s:25:\"formServiceRequestId31337\";s:16:\"7e0e#185cf31f199\";}", "client_ip_address": "85.209.47.207", "webpage_id": 1, "user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:108.0) Gecko/20100101 Firefox/108.0", "query_parameters": "mkt_unsubscribe=1&mkt_tok=NjAyLUVVTy01OTgAAAGJbdICA9DCAo37JqD5ozxyzAlhl8ryjBs-YDMZdHsGTFeOe-C6dFcD19gwXxmu7jXj3HO-IA2VTSiA7upNlg", "referrer_url": "http://602-euo-598.mktoweb.com/lp/datalineaedev/UnsubscribePage.html?mkt_unsubscribe=1&mkt_tok=NjAyLUVVTy01OTgAAAGJbdICA9DCAo37JqD5ozxyzAlhl8ryjBs-YDMZdHsGTFeOe-C6dFcD19gwXxmu7jXj3HO-IA2VTSiA7upNlg"}, "emitted_at": 1674504450339} -{"stream": "activities_change_nurture_cadence", "data": {"marketoGUID": "2170", "leadId": 99, "activityDate": "2023-01-20T09:57:53Z", "activityTypeId": 115, "campaignId": 1102, "primaryAttributeValueId": "1025", "primaryAttributeValue": "Test Nurture", "new_nurture_cadence": "Norm"}, "emitted_at": 1674504578130} -{"stream": "activities_change_nurture_cadence", "data": {"marketoGUID": "2173", "leadId": 800, "activityDate": "2023-01-20T09:59:53Z", "activityTypeId": 115, "campaignId": 1103, "primaryAttributeValueId": "1025", "primaryAttributeValue": "Test Nurture", "new_nurture_cadence": "Norm"}, "emitted_at": 1674504578130} -{"stream": "activities_change_nurture_cadence", "data": {"marketoGUID": "2190", "leadId": 105, "activityDate": "2023-01-20T11:53:23Z", "activityTypeId": 115, "campaignId": 1112, "primaryAttributeValueId": "1025", "primaryAttributeValue": "Test Nurture", "new_nurture_cadence": "Norm"}, "emitted_at": 1674504578131} -{"stream": "activities_change_nurture_cadence", "data": {"marketoGUID": "2203", "leadId": 876, "activityDate": "2023-01-20T12:48:53Z", "activityTypeId": 115, "campaignId": 1125, "primaryAttributeValueId": "1025", "primaryAttributeValue": "Test Nurture", "new_nurture_cadence": "Norm"}, "emitted_at": 1674504578132} -{"stream": "activities_change_nurture_cadence", "data": {"marketoGUID": "2219", "leadId": 379, "activityDate": "2023-01-20T13:00:24Z", "activityTypeId": 115, "campaignId": 1127, "primaryAttributeValueId": "1025", "primaryAttributeValue": "Test Nurture", "new_nurture_cadence": "Norm"}, "emitted_at": 1674504578132} -{"stream": "activities_change_nurture_cadence", "data": {"marketoGUID": "2262", "leadId": 99, "activityDate": "2023-01-23T08:08:21Z", "activityTypeId": 115, "campaignId": 1152, "primaryAttributeValueId": "1025", "primaryAttributeValue": "Test Nurture", "new_nurture_cadence": "Norm", "previous_nurture_cadence": "Norm"}, "emitted_at": 1674504578132} -{"stream": "activities_change_nurture_cadence", "data": {"marketoGUID": "2268", "leadId": 880, "activityDate": "2023-01-23T08:24:51Z", "activityTypeId": 115, "campaignId": 1158, "primaryAttributeValueId": "1025", "primaryAttributeValue": "Test Nurture", "new_nurture_cadence": "Norm"}, "emitted_at": 1674504578133} -{"stream": "activities_addto_list", "data": {"marketoGUID": "2110", "leadId": 100, "activityDate": "2023-01-17T11:07:23Z", "activityTypeId": 24, "campaignId": 1059, "primaryAttributeValueId": "1002", "primaryAttributeValue": "Test list number 1", "source": "Marketo Flow Action"}, "emitted_at": 1674504705777} -{"stream": "activities_addto_list", "data": {"marketoGUID": "2111", "leadId": 100, "activityDate": "2023-01-17T11:07:24Z", "activityTypeId": 24, "campaignId": 1058, "primaryAttributeValueId": "1001", "primaryAttributeValue": "Test list", "source": "Marketo Flow Action"}, "emitted_at": 1674504705777} -{"stream": "activities_addto_list", "data": {"marketoGUID": "2116", "leadId": 140, "activityDate": "2023-01-17T11:08:53Z", "activityTypeId": 24, "campaignId": 1063, "primaryAttributeValueId": "1004", "primaryAttributeValue": "Test list number 3", "source": "Marketo Flow Action"}, "emitted_at": 1674504705778} -{"stream": "activities_addto_list", "data": {"marketoGUID": "2117", "leadId": 140, "activityDate": "2023-01-17T11:08:54Z", "activityTypeId": 24, "campaignId": 1062, "primaryAttributeValueId": "1003", "primaryAttributeValue": "Test list number 2", "source": "Marketo Flow Action"}, "emitted_at": 1674504705779} -{"stream": "activities_addto_list", "data": {"marketoGUID": "2120", "leadId": 807, "activityDate": "2023-01-17T11:25:53Z", "activityTypeId": 24, "campaignId": 1067, "primaryAttributeValueId": "1006", "primaryAttributeValue": "Test list number 5", "source": "Marketo Flow Action"}, "emitted_at": 1674504705780} -{"stream": "activities_addto_list", "data": {"marketoGUID": "2123", "leadId": 816, "activityDate": "2023-01-17T11:26:53Z", "activityTypeId": 24, "campaignId": 1069, "primaryAttributeValueId": "1007", "primaryAttributeValue": "Test list number 6", "source": "Marketo Flow Action"}, "emitted_at": 1674504705780} -{"stream": "activities_addto_list", "data": {"marketoGUID": "2136", "leadId": 100, "activityDate": "2023-01-17T14:14:53Z", "activityTypeId": 24, "campaignId": 1072, "primaryAttributeValueId": "1001", "primaryAttributeValue": "Test list", "source": "Marketo Flow Action"}, "emitted_at": 1674504705780} -{"stream": "activities_addto_list", "data": {"marketoGUID": "2154", "leadId": 105, "activityDate": "2023-01-20T09:32:23Z", "activityTypeId": 24, "campaignId": 1082, "primaryAttributeValueId": "1016", "primaryAttributeValue": "API Test Program.List 1", "source": "Marketo Flow Action"}, "emitted_at": 1674504705780} -{"stream": "activities_addto_list", "data": {"marketoGUID": "2162", "leadId": 110, "activityDate": "2023-01-20T09:45:23Z", "activityTypeId": 24, "campaignId": 1090, "primaryAttributeValueId": "1016", "primaryAttributeValue": "API Test Program.List 1", "source": "Marketo Flow Action"}, "emitted_at": 1674504705781} -{"stream": "activities_addto_list", "data": {"marketoGUID": "2163", "leadId": 112, "activityDate": "2023-01-20T09:45:53Z", "activityTypeId": 24, "campaignId": 1091, "primaryAttributeValueId": "1016", "primaryAttributeValue": "API Test Program.List 1", "source": "Marketo Flow Action"}, "emitted_at": 1674504705781} -{"stream": "activities_change_score", "data": {"marketoGUID": "2118", "leadId": 140, "activityDate": "2023-01-17T11:09:23Z", "activityTypeId": 22, "campaignId": 1064, "primaryAttributeValueId": "146", "primaryAttributeValue": "Lead Score", "change_value": "+10", "old_value": null, "new_value": 10, "reason": "Changed by Smart Campaign Run Action Change Score 2023-01-17 03:09:02 am action Change Score"}, "emitted_at": 1674504831488} -{"stream": "activities_change_score", "data": {"marketoGUID": "2209", "leadId": 143, "activityDate": "2023-01-20T12:55:59Z", "activityTypeId": 22, "campaignId": null, "primaryAttributeValueId": "146", "primaryAttributeValue": "Lead Score", "change_value": "+20", "old_value": null, "new_value": 20, "reason": "Manual person edit"}, "emitted_at": 1674504831489} -{"stream": "activities_change_score", "data": {"marketoGUID": "2211", "leadId": 362, "activityDate": "2023-01-20T12:56:46Z", "activityTypeId": 22, "campaignId": null, "primaryAttributeValueId": "146", "primaryAttributeValue": "Lead Score", "change_value": "+100", "old_value": null, "new_value": 100, "reason": "Manual person edit"}, "emitted_at": 1674504831489} -{"stream": "activities_send_alert", "data": {"marketoGUID": "2179", "leadId": 109, "activityDate": "2023-01-20T11:39:27Z", "activityTypeId": 38, "campaignId": 1107, "primaryAttributeValueId": "1009", "primaryAttributeValue": "Test Nurture.integration-tgest@airbyte.io", "send_to_owner": "Lead Owner", "send_to_list": "integration-tgest@airbyte.io"}, "emitted_at": 1674504958506} -{"stream": "activities_request_campaign", "data": {"marketoGUID": "2193", "leadId": 104, "activityDate": "2023-01-20T12:01:23Z", "activityTypeId": 47, "campaignId": 1113, "primaryAttributeValueId": "1056", "primaryAttributeValue": "Test Campaign 5", "source": "Marketo Flow Action"}, "emitted_at": 1674505085181} -{"stream": "activities_change_program_member_data", "data": {"marketoGUID": "2188", "leadId": 105, "activityDate": "2023-01-20T11:52:53Z", "activityTypeId": 123, "campaignId": 1111, "primaryAttributeValueId": "1013", "primaryAttributeValue": "API Test Program 10", "source": "Marketo Flow Action"}, "emitted_at": 1674505718994} -{"stream": "activities_change_program_member_data", "data": {"marketoGUID": "2228", "leadId": 110, "activityDate": "2023-01-20T16:04:24Z", "activityTypeId": 123, "campaignId": 1136, "primaryAttributeValueId": "1004", "primaryAttributeValue": "API Test Program 1", "source": "Marketo Flow Action"}, "emitted_at": 1674505718995} -{"stream": "activities_change_program_member_data", "data": {"marketoGUID": "2229", "leadId": 99, "activityDate": "2023-01-20T16:05:23Z", "activityTypeId": 123, "campaignId": 1137, "primaryAttributeValueId": "1004", "primaryAttributeValue": "API Test Program 1", "source": "Marketo Flow Action"}, "emitted_at": 1674505718996} -{"stream": "activities_change_program_member_data", "data": {"marketoGUID": "2242", "leadId": 800, "activityDate": "2023-01-20T16:28:53Z", "activityTypeId": 123, "campaignId": 1140, "primaryAttributeValueId": "1004", "primaryAttributeValue": "API Test Program 1", "source": "Marketo Flow Action"}, "emitted_at": 1674505718997} -{"stream": "activities_change_nurture_track", "data": {"marketoGUID": "2205", "leadId": 876, "activityDate": "2023-01-20T12:48:53Z", "activityTypeId": 114, "campaignId": 1125, "primaryAttributeValueId": "1025", "primaryAttributeValue": "Test Nurture", "track_name": "Stream 1", "new_track_id": 1}, "emitted_at": 1674505971176} -{"stream": "activities_change_nurture_track", "data": {"marketoGUID": "2260", "leadId": 99, "activityDate": "2023-01-23T08:07:22Z", "activityTypeId": 114, "campaignId": 1150, "primaryAttributeValueId": "1025", "primaryAttributeValue": "Test Nurture", "previous_track_id": 1, "previous_track_name": "Stream 1", "track_name": "Stream 2", "new_track_id": 2}, "emitted_at": 1674505971177} -{"stream": "activities_change_nurture_track", "data": {"marketoGUID": "2270", "leadId": 880, "activityDate": "2023-01-23T08:24:52Z", "activityTypeId": 114, "campaignId": 1158, "primaryAttributeValueId": "1025", "primaryAttributeValue": "Test Nurture", "track_name": "Stream 1", "new_track_id": 1}, "emitted_at": 1674505971178} -{"stream": "activities_change_nurture_track", "data": {"marketoGUID": "2276", "leadId": 880, "activityDate": "2023-01-23T08:26:21Z", "activityTypeId": 114, "campaignId": 1158, "primaryAttributeValueId": "1025", "primaryAttributeValue": "Test Nurture", "previous_track_id": 1, "previous_track_name": "Stream 1", "track_name": "Stream 1", "new_track_id": 1}, "emitted_at": 1674505971178} -{"stream": "activities_change_data_value", "data": {"marketoGUID": "2109", "leadId": 100, "activityDate": "2023-01-17T11:06:30Z", "activityTypeId": 13, "campaignId": null, "primaryAttributeValueId": "50", "primaryAttributeValue": "Is Customer", "old_value": "False", "new_value": "True", "reason": "Manual person edit", "source": "Lead update"}, "emitted_at": 1674506223417} -{"stream": "activities_change_data_value", "data": {"marketoGUID": "2115", "leadId": 140, "activityDate": "2023-01-17T11:08:10Z", "activityTypeId": 13, "campaignId": null, "primaryAttributeValueId": "48", "primaryAttributeValue": "Is Partner", "old_value": "False", "new_value": "True", "reason": "Manual person edit", "source": "Lead update"}, "emitted_at": 1674506223418} -{"stream": "activities_change_data_value", "data": {"marketoGUID": "2119", "leadId": 140, "activityDate": "2023-01-17T11:09:23Z", "activityTypeId": 13, "campaignId": 1064, "primaryAttributeValueId": "146", "primaryAttributeValue": "Lead Score", "old_value": null, "new_value": "10", "reason": "Changed by Smart Campaign Run Action Change Score 2023-01-17 03:09:02 am action Change Score", "source": "Marketo Flow Action"}, "emitted_at": 1674506223419} -{"stream": "activities_change_data_value", "data": {"marketoGUID": "2127", "leadId": 864, "activityDate": "2023-01-17T11:29:43Z", "activityTypeId": 13, "campaignId": null, "primaryAttributeValueId": "53", "primaryAttributeValue": "First Name", "old_value": "yuriiyurii", "new_value": "Segment", "reason": "Form fill-out, URL: ", "source": "Web form fillout"}, "emitted_at": 1674506223420} -{"stream": "activities_change_data_value", "data": {"marketoGUID": "2128", "leadId": 864, "activityDate": "2023-01-17T11:29:43Z", "activityTypeId": 13, "campaignId": null, "primaryAttributeValueId": "55", "primaryAttributeValue": "Last Name", "old_value": null, "new_value": "5", "reason": "Form fill-out, URL: ", "source": "Web form fillout"}, "emitted_at": 1674506223421} -{"stream": "activities_change_data_value", "data": {"marketoGUID": "2139", "leadId": 23, "activityDate": "2023-01-19T14:46:54Z", "activityTypeId": 13, "campaignId": 1074, "primaryAttributeValueId": "50", "primaryAttributeValue": "Is Customer", "old_value": "False", "new_value": "True", "reason": "Changed by Smart Campaign Run Action Change Data Value 2023-01-19 06:46:35 am action Change Data Value", "source": "Marketo Flow Action"}, "emitted_at": 1674506223422} -{"stream": "activities_change_data_value", "data": {"marketoGUID": "2140", "leadId": 23, "activityDate": "2023-01-19T14:47:27Z", "activityTypeId": 13, "campaignId": null, "primaryAttributeValueId": "602", "primaryAttributeValue": "Acquisition Date", "old_value": null, "new_value": "2023-01-26 18:46:00", "reason": "Manual person edit", "source": "Lead update"}, "emitted_at": 1674506223423} -{"stream": "activities_change_data_value", "data": {"marketoGUID": "2143", "leadId": 862, "activityDate": "2023-01-19T15:18:39Z", "activityTypeId": 13, "campaignId": null, "primaryAttributeValueId": "66", "primaryAttributeValue": "Country", "old_value": null, "new_value": "US", "reason": "Manual person edit", "source": "Lead update"}, "emitted_at": 1674506223424} -{"stream": "activities_change_data_value", "data": {"marketoGUID": "2144", "leadId": 862, "activityDate": "2023-01-19T15:18:44Z", "activityTypeId": 13, "campaignId": 1001, "primaryAttributeValueId": "68", "primaryAttributeValue": "Person Time Zone", "old_value": null, "new_value": "America/Chicago", "reason": "Changed by Smart Campaign Calculate Timezone action Change Data Value", "source": "Marketo Flow Action"}, "emitted_at": 1674506223424} -{"stream": "activities_change_data_value", "data": {"marketoGUID": "2145", "leadId": 890, "activityDate": "2023-01-19T15:20:29Z", "activityTypeId": 13, "campaignId": null, "primaryAttributeValueId": "66", "primaryAttributeValue": "Country", "old_value": null, "new_value": "US", "reason": "Manual person edit", "source": "Lead update"}, "emitted_at": 1674506223425} -{"stream": "activities_email_bounced", "data": {"marketoGUID": "2273", "leadId": 880, "activityDate": "2023-01-23T08:25:26Z", "activityTypeId": 8, "campaignId": 1159, "primaryAttributeValueId": "1009", "primaryAttributeValue": "Test Nurture.integration-tgest@airbyte.io", "campaign_run_id": 112, "category": "2", "email": "alastor@moody.com", "details": "550 5.4.1 Recipient address rejected: Access denied. AS(201806281) [SN1NAM02FT0043.eop-nam02.prod.protection.outlook.com]", "subcategory": "2003", "step_id": 489, "choice_number": 623}, "emitted_at": 1674507111307} -{"stream": "activities_click_email", "data": {"marketoGUID": "2213", "leadId": 876, "activityDate": "2023-01-20T12:57:10Z", "activityTypeId": 11, "campaignId": 1126, "primaryAttributeValueId": "1009", "primaryAttributeValue": "Test Nurture.integration-tgest@airbyte.io", "campaign_run_id": 86, "platform": "Win7", "is_mobile_device": false, "step_id": 364, "device": "Windows Desktop", "choice_number": 470, "is_bot_activity": false, "user_agent": "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; Trident/6.0)", "bot_activity_pattern": "N/A", "link": "http://mylink"}, "emitted_at": 1674507619162} -{"stream": "activities_execute_campaign", "data": {"marketoGUID": "2178", "leadId": 105, "activityDate": "2023-01-20T11:36:54Z", "activityTypeId": 155, "campaignId": 1106, "primaryAttributeValueId": "1105", "primaryAttributeValue": "Test Campaign 10", "used_parent_campaign_token_context": false, "qualified": false}, "emitted_at": 1674507997892} +{"stream": "activity_types", "data": {"id": 1, "name": "Visit Webpage", "description": "User visits a web page", "primaryAttribute": {"name": "Webpage ID", "dataType": "integer"}, "attributes": [{"name": "Client IP Address", "dataType": "string"}, {"name": "Query Parameters", "dataType": "string"}, {"name": "Referrer URL", "dataType": "string"}, {"name": "Search Engine", "dataType": "string"}, {"name": "Search Query", "dataType": "string"}, {"name": "User Agent", "dataType": "string"}, {"name": "Webpage URL", "dataType": "string"}]}, "emitted_at": 1682445125832} +{"stream": "activity_types", "data": {"id": 2, "name": "Fill Out Form", "description": "User fills out and submits a form on web page", "primaryAttribute": {"name": "Webform ID", "dataType": "integer"}, "attributes": [{"name": "Client IP Address", "dataType": "string"}, {"name": "Form Fields", "dataType": "text"}, {"name": "Query Parameters", "dataType": "string"}, {"name": "Referrer URL", "dataType": "string"}, {"name": "User Agent", "dataType": "string"}, {"name": "Webpage ID", "dataType": "integer"}]}, "emitted_at": 1682445125832} +{"stream": "activity_types", "data": {"id": 3, "name": "Click Link", "description": "User clicks link on a page", "primaryAttribute": {"name": "Link ID", "dataType": "integer"}, "attributes": [{"name": "Client IP Address", "dataType": "string"}, {"name": "Query Parameters", "dataType": "string"}, {"name": "Referrer URL", "dataType": "string"}, {"name": "User Agent", "dataType": "string"}, {"name": "Webpage ID", "dataType": "integer"}]}, "emitted_at": 1682445125832} +{"stream": "activity_types", "data": {"id": 6, "name": "Send Email", "description": "Send Marketo Email to a person", "primaryAttribute": {"name": "Mailing ID", "dataType": "integer"}, "attributes": [{"name": "Campaign Run ID", "dataType": "integer"}, {"name": "Choice Number", "dataType": "integer"}, {"name": "Has Predictive", "dataType": "boolean"}, {"name": "Step ID", "dataType": "integer"}, {"name": "Test Variant", "dataType": "integer"}]}, "emitted_at": 1682445125833} +{"stream": "activity_types", "data": {"id": 7, "name": "Email Delivered", "description": "Marketo Email is delivered to a lead/contact", "primaryAttribute": {"name": "Mailing ID", "dataType": "integer"}, "attributes": [{"name": "Campaign Run ID", "dataType": "integer"}, {"name": "Choice Number", "dataType": "integer"}, {"name": "Has Predictive", "dataType": "boolean"}, {"name": "Step ID", "dataType": "integer"}, {"name": "Test Variant", "dataType": "integer"}]}, "emitted_at": 1682445125833} +{"stream": "activity_types", "data": {"id": 8, "name": "Email Bounced", "description": "Marketo Email is bounced for a lead", "primaryAttribute": {"name": "Mailing ID", "dataType": "integer"}, "attributes": [{"name": "Campaign Run ID", "dataType": "integer"}, {"name": "Category", "dataType": "string"}, {"name": "Choice Number", "dataType": "integer"}, {"name": "Details", "dataType": "string"}, {"name": "Email", "dataType": "string"}, {"name": "Has Predictive", "dataType": "boolean"}, {"name": "Step ID", "dataType": "integer"}, {"name": "Subcategory", "dataType": "string"}, {"name": "Test Variant", "dataType": "integer"}]}, "emitted_at": 1682445125833} +{"stream": "activity_types", "data": {"id": 9, "name": "Unsubscribe Email", "description": "Person unsubscribed from Marketo Emails", "primaryAttribute": {"name": "Mailing ID", "dataType": "integer"}, "attributes": [{"name": "Campaign Run ID", "dataType": "Integer"}, {"name": "Client IP Address", "dataType": "string"}, {"name": "Form Fields", "dataType": "text"}, {"name": "Has Predictive", "dataType": "boolean"}, {"name": "Query Parameters", "dataType": "string"}, {"name": "Referrer URL", "dataType": "string"}, {"name": "Test Variant", "dataType": "integer"}, {"name": "User Agent", "dataType": "string"}, {"name": "Webform ID", "dataType": "integer"}, {"name": "Webpage ID", "dataType": "integer"}]}, "emitted_at": 1682445125833} +{"stream": "activity_types", "data": {"id": 10, "name": "Open Email", "description": "User opens Marketo Email", "primaryAttribute": {"name": "Mailing ID", "dataType": "integer"}, "attributes": [{"name": "Bot Activity Pattern", "dataType": "string"}, {"name": "Campaign Run ID", "dataType": "integer"}, {"name": "Choice Number", "dataType": "integer"}, {"name": "Device", "dataType": "string"}, {"name": "Has Predictive", "dataType": "boolean"}, {"name": "Is Bot Activity", "dataType": "boolean"}, {"name": "Is Mobile Device", "dataType": "boolean"}, {"name": "Platform", "dataType": "string"}, {"name": "Step ID", "dataType": "integer"}, {"name": "Test Variant", "dataType": "integer"}, {"name": "User Agent", "dataType": "string"}]}, "emitted_at": 1682445125834} +{"stream": "activity_types", "data": {"id": 11, "name": "Click Email", "description": "User clicks on a link in a Marketo Email", "primaryAttribute": {"name": "Mailing ID", "dataType": "integer"}, "attributes": [{"name": "Bot Activity Pattern", "dataType": "string"}, {"name": "Campaign Run ID", "dataType": "integer"}, {"name": "Choice Number", "dataType": "integer"}, {"name": "Device", "dataType": "string"}, {"name": "Is Bot Activity", "dataType": "boolean"}, {"name": "Is Mobile Device", "dataType": "boolean"}, {"name": "Is Predictive", "dataType": "boolean"}, {"name": "Link", "dataType": "string"}, {"name": "Link ID", "dataType": "string"}, {"name": "Platform", "dataType": "string"}, {"name": "Step ID", "dataType": "integer"}, {"name": "Test Variant", "dataType": "integer"}, {"name": "User Agent", "dataType": "string"}]}, "emitted_at": 1682445125834} +{"stream": "activity_types", "data": {"id": 12, "name": "New Lead", "description": "New person/record is added to the lead database", "attributes": [{"name": "Created Date", "dataType": "date"}, {"name": "Form Name", "dataType": "string"}, {"name": "Lead Source", "dataType": "string"}, {"name": "List Name", "dataType": "string"}, {"name": "SFDC Type", "dataType": "string"}, {"name": "Source Type", "dataType": "string"}, {"name": "API Method Name", "dataType": "string"}, {"name": "Modifying User", "dataType": "string"}, {"name": "Request Id", "dataType": "string"}]}, "emitted_at": 1682445125835} +{"stream": "activity_types", "data": {"id": 13, "name": "Change Data Value", "description": "Changed attribute value for a person/record", "primaryAttribute": {"name": "Attribute Name", "dataType": "integer"}, "attributes": [{"name": "New Value", "dataType": "string"}, {"name": "Old Value", "dataType": "string"}, {"name": "Reason", "dataType": "string"}, {"name": "Source", "dataType": "string"}, {"name": "API Method Name", "dataType": "string"}, {"name": "Modifying User", "dataType": "string"}, {"name": "Request Id", "dataType": "string"}]}, "emitted_at": 1682445125835} +{"stream": "activity_types", "data": {"id": 22, "name": "Change Score", "description": "Modify the value of a score field", "primaryAttribute": {"name": "Score Name", "dataType": "integer"}, "attributes": [{"name": "Change Value", "dataType": "string"}, {"name": "New Value", "dataType": "integer"}, {"name": "Old Value", "dataType": "integer"}, {"name": "Reason", "dataType": "string"}]}, "emitted_at": 1682445125835} +{"stream": "activity_types", "data": {"id": 24, "name": "Add to List", "description": "Add a person/record to a list", "primaryAttribute": {"name": "List ID", "dataType": "integer"}, "attributes": [{"name": "Source", "dataType": "string"}]}, "emitted_at": 1682445125835} +{"stream": "activity_types", "data": {"id": 25, "name": "Remove from List", "description": "Remove this lead from a list", "primaryAttribute": {"name": "List ID", "dataType": "integer"}, "attributes": [{"name": "Source", "dataType": "string"}]}, "emitted_at": 1682445125836} +{"stream": "activity_types", "data": {"id": 27, "name": "Email Bounced Soft", "description": "Campaign Email is bounced soft for a lead", "primaryAttribute": {"name": "Mailing ID", "dataType": "integer"}, "attributes": [{"name": "Campaign Run ID", "dataType": "integer"}, {"name": "Category", "dataType": "string"}, {"name": "Choice Number", "dataType": "integer"}, {"name": "Details", "dataType": "string"}, {"name": "Email", "dataType": "string"}, {"name": "Has Predictive", "dataType": "boolean"}, {"name": "Step ID", "dataType": "integer"}, {"name": "Subcategory", "dataType": "string"}, {"name": "Test Variant", "dataType": "integer"}]}, "emitted_at": 1682445125836} +{"stream": "activity_types", "data": {"id": 32, "name": "Merge Leads", "description": "Merge two or more leads into a single record", "primaryAttribute": {"name": "Lead ID", "dataType": "integer"}, "attributes": [{"name": "Merge IDs", "dataType": "array"}, {"name": "Master Updated", "dataType": "boolean"}, {"name": "Merged in Sales", "dataType": "boolean"}, {"name": "Merge Source", "dataType": "string"}, {"name": "API Method Name", "dataType": "string"}, {"name": "Modifying User", "dataType": "string"}, {"name": "Request Id", "dataType": "string"}]}, "emitted_at": 1682445125836} +{"stream": "activity_types", "data": {"id": 34, "name": "Add to Opportunity", "description": "Add to an Opportunity", "primaryAttribute": {"name": "Oppty ID", "dataType": "integer"}, "attributes": [{"name": "Is Primary", "dataType": "boolean"}, {"name": "Role", "dataType": "string"}]}, "emitted_at": 1682445125837} +{"stream": "activity_types", "data": {"id": 35, "name": "Remove from Opportunity", "description": "Remove from an Opportunity", "primaryAttribute": {"name": "Oppty ID", "dataType": "integer"}, "attributes": [{"name": "Is Primary", "dataType": "boolean"}, {"name": "Role", "dataType": "string"}]}, "emitted_at": 1682445125837} +{"stream": "campaigns", "data": {"id": 1053, "name": "Test Campaign 2", "description": "Description of the Test Campaign 2", "type": "batch", "workspaceName": "Default", "createdAt": "2023-01-17T10:53:35Z", "updatedAt": "2023-01-17T10:56:52Z", "active": false}, "emitted_at": 1682445127130} +{"stream": "campaigns", "data": {"id": 1054, "name": "Test Campaign 3", "description": "Description of the Test Campaign 3", "type": "batch", "workspaceName": "Default", "createdAt": "2023-01-17T10:54:04Z", "updatedAt": "2023-01-17T10:57:12Z", "active": false}, "emitted_at": 1682445127130} +{"stream": "campaigns", "data": {"id": 1055, "name": "Test Campaign 4", "description": "Description of the Test Campaign 4", "type": "batch", "workspaceName": "Default", "createdAt": "2023-01-17T10:54:24Z", "updatedAt": "2023-01-17T10:53:37Z", "active": false}, "emitted_at": 1682445127130} +{"stream": "campaigns", "data": {"id": 1056, "name": "Test Campaign 5", "description": "Description of the Test Campaign 5", "type": "trigger", "workspaceName": "Default", "createdAt": "2023-01-17T10:54:45Z", "updatedAt": "2023-01-20T16:25:04Z", "active": false}, "emitted_at": 1682445127131} +{"stream": "campaigns", "data": {"id": 1124, "name": "Test Smart Campaign", "description": "Test", "type": "batch", "programName": "API Test Program", "programId": 1003, "workspaceName": "Default", "createdAt": "2023-01-20T12:46:51Z", "updatedAt": "2023-01-23T08:24:16Z", "active": false}, "emitted_at": 1682445127131} +{"stream": "campaigns", "data": {"id": 1130, "name": "01-Process Registrations", "description": "This campaign must be activated BEFORE the registration URL is published. It sets the program status to \"Registered\", which makes the registrant's information available to the Marketo's mobile event app. Then the registrant gets a confirmation email with a calendar link.", "type": "trigger", "programName": "BP-LE-YYYY-MM-DD Live Event v3", "programId": 1026, "workspaceName": "Default", "createdAt": "2023-01-20T13:08:56Z", "updatedAt": "2023-01-20T13:09:53Z", "active": false}, "emitted_at": 1682445127131} +{"stream": "campaigns", "data": {"id": 1131, "name": "02a-Send Invitation", "description": "This campaign sends the initial invitation for the event. It should only include marketable leads, which have checked the proper subscription option.", "type": "batch", "programName": "BP-LE-YYYY-MM-DD Live Event v3", "programId": 1026, "workspaceName": "Default", "createdAt": "2023-01-20T13:08:56Z", "updatedAt": "2023-01-20T13:08:58Z", "active": false}, "emitted_at": 1682445127131} +{"stream": "campaigns", "data": {"id": 1132, "name": "04-Send Follow-up Emails", "description": "This campaign assumes that all registrants have been updated to a new program status of \"Attended\" or \"No Show\". You can do this by using the Marketo mobile event app for checking-in attendees, or you can import lists of attendees and no shows under the Program's Members tab. This campaign will then send follow-up emails that you can use to further engage your audience.", "type": "batch", "programName": "BP-LE-YYYY-MM-DD Live Event v3", "programId": 1026, "workspaceName": "Default", "createdAt": "2023-01-20T13:08:56Z", "updatedAt": "2023-01-20T13:08:58Z", "active": false}, "emitted_at": 1682445127131} +{"stream": "campaigns", "data": {"id": 1133, "name": "02b-Send Invitation Reminder", "description": "This campaign sends a reminder to people who received the original invitation, but have not registered, yet.", "type": "batch", "programName": "BP-LE-YYYY-MM-DD Live Event v3", "programId": 1026, "workspaceName": "Default", "createdAt": "2023-01-20T13:08:56Z", "updatedAt": "2023-01-20T13:08:57Z", "active": false}, "emitted_at": 1682445127132} +{"stream": "campaigns", "data": {"id": 1134, "name": "02c-Send Invitation Last Chance", "description": "This campaign sends a last reminder to people who received the original invitation, but have not registered, yet.", "type": "batch", "programName": "BP-LE-YYYY-MM-DD Live Event v3", "programId": 1026, "workspaceName": "Default", "createdAt": "2023-01-20T13:08:56Z", "updatedAt": "2023-01-20T13:08:57Z", "active": false}, "emitted_at": 1682445127132} +{"stream": "campaigns", "data": {"id": 1135, "name": "03-Send Reminder to Attend", "description": "This campaign sends a reminder to all registrants, including a calendar link. This campaign should be scheduled close to the event date - typically the day prior.", "type": "batch", "programName": "BP-LE-YYYY-MM-DD Live Event v3", "programId": 1026, "workspaceName": "Default", "createdAt": "2023-01-20T13:08:56Z", "updatedAt": "2023-01-20T13:08:57Z", "active": false}, "emitted_at": 1682445127132} +{"stream": "campaigns", "data": {"id": 1145, "name": "01-Influenced (Program Success)", "description": "Activate this Campaign to record when a lead successfully completed all steps of the Program and was influenced by the information it offered.", "type": "trigger", "programName": "BP-ES-YYYY-MM-DD Email Send v3", "programId": 1028, "workspaceName": "Default", "createdAt": "2023-01-23T08:02:31Z", "updatedAt": "2023-01-23T08:03:12Z", "active": false}, "emitted_at": 1682445127132} +{"stream": "campaigns", "data": {"id": 1161, "name": "Test Smart Campaign 12", "description": "Test", "type": "batch", "programName": "Test Nurture", "programId": 1025, "workspaceName": "Default", "createdAt": "2023-01-23T08:26:33Z", "updatedAt": "2023-01-23T08:26:33Z", "active": false}, "emitted_at": 1682445127132} +{"stream": "leads", "data": {"company": "Test Company", "site": null, "billingStreet": null, "billingCity": null, "billingState": null, "billingCountry": null, "billingPostalCode": null, "website": null, "mainPhone": null, "annualRevenue": null, "numberOfEmployees": null, "industry": null, "sicCode": null, "mktoCompanyNotes": null, "externalCompanyId": null, "id": 885, "mktoName": "Test Person 1 All People", "personType": "contact", "mktoIsPartner": false, "isLead": true, "mktoIsCustomer": false, "isAnonymous": false, "salutation": null, "firstName": "Test Person 1", "middleName": null, "lastName": "All People", "email": "0M996mK4pH@ttt.com", "phone": null, "mobilePhone": null, "fax": null, "title": null, "contactCompany": "89", "dateOfBirth": null, "address": null, "city": null, "state": null, "country": null, "postalCode": null, "personTimeZone": null, "originalSourceType": "New lead", "originalSourceInfo": null, "registrationSourceType": "New lead", "registrationSourceInfo": null, "originalSearchEngine": null, "originalSearchPhrase": null, "originalReferrer": null, "emailInvalid": false, "emailInvalidCause": null, "unsubscribed": false, "unsubscribedReason": null, "doNotCall": false, "mktoDoNotCallCause": null, "doNotCallReason": null, "marketingSuspended": false, "marketingSuspendedCause": null, "blackListed": false, "blackListedCause": null, "mktoPersonNotes": null, "anonymousIP": null, "inferredCompany": null, "inferredCountry": null, "inferredCity": null, "inferredStateRegion": null, "inferredPostalCode": null, "inferredMetropolitanArea": null, "inferredPhoneAreaCode": null, "emailSuspended": null, "emailSuspendedCause": null, "emailSuspendedAt": null, "department": null, "createdAt": "2023-01-17T11:00:58Z", "updatedAt": "2023-01-24T11:10:51Z", "cookies": null, "externalSalesPersonId": null, "leadPerson": "885", "leadRole": null, "leadSource": null, "leadStatus": null, "leadScore": null, "urgency": null, "priority": null, "relativeScore": null, "relativeUrgency": null, "rating": null, "personPrimaryLeadInterest": "885", "leadPartitionId": "1", "leadRevenueCycleModelId": null, "leadRevenueStageId": null, "acquisitionProgramId": null, "mktoAcquisitionDate": null}, "emitted_at": 1682445192205} +{"stream": "leads", "data": {"company": null, "site": null, "billingStreet": null, "billingCity": null, "billingState": null, "billingCountry": null, "billingPostalCode": null, "website": "airbyte.io", "mainPhone": null, "annualRevenue": null, "numberOfEmployees": null, "industry": null, "sicCode": null, "mktoCompanyNotes": null, "externalCompanyId": null, "id": 888, "mktoName": "[Sample]Name Surname", "personType": "contact", "mktoIsPartner": false, "isLead": true, "mktoIsCustomer": false, "isAnonymous": false, "salutation": null, "firstName": "[Sample]Name", "middleName": null, "lastName": "Surname", "email": "i.g@example.io", "phone": null, "mobilePhone": null, "fax": null, "title": null, "contactCompany": "90", "dateOfBirth": null, "address": null, "city": null, "state": null, "country": null, "postalCode": null, "personTimeZone": "Asia/Riyadh", "originalSourceType": "Web form fillout", "originalSourceInfo": "Form: API Test Program.123.airbyte", "registrationSourceType": "Web form fillout", "registrationSourceInfo": "Form: API Test Program.123.airbyte", "originalSearchEngine": null, "originalSearchPhrase": null, "originalReferrer": "http://602-euo-598.mktoweb.com/lp/602-EUO-598/Landing-Page-2.html", "emailInvalid": false, "emailInvalidCause": null, "unsubscribed": false, "unsubscribedReason": null, "doNotCall": false, "mktoDoNotCallCause": null, "doNotCallReason": null, "marketingSuspended": false, "marketingSuspendedCause": null, "blackListed": false, "blackListedCause": null, "mktoPersonNotes": null, "anonymousIP": "85.209.47.207", "inferredCompany": "Arabic Computer System Co.", "inferredCountry": "Saudi Arabia", "inferredCity": null, "inferredStateRegion": null, "inferredPostalCode": null, "inferredMetropolitanArea": null, "inferredPhoneAreaCode": null, "emailSuspended": null, "emailSuspendedCause": null, "emailSuspendedAt": null, "department": null, "createdAt": "2023-01-17T12:29:38Z", "updatedAt": "2023-01-24T11:10:51Z", "cookies": null, "externalSalesPersonId": null, "leadPerson": "888", "leadRole": null, "leadSource": null, "leadStatus": null, "leadScore": null, "urgency": null, "priority": null, "relativeScore": null, "relativeUrgency": null, "rating": null, "personPrimaryLeadInterest": "888", "leadPartitionId": "1", "leadRevenueCycleModelId": null, "leadRevenueStageId": null, "acquisitionProgramId": null, "mktoAcquisitionDate": null}, "emitted_at": 1682445192206} +{"stream": "leads", "data": {"company": null, "site": null, "billingStreet": null, "billingCity": null, "billingState": null, "billingCountry": null, "billingPostalCode": null, "website": "globallogic.com", "mainPhone": null, "annualRevenue": null, "numberOfEmployees": null, "industry": null, "sicCode": null, "mktoCompanyNotes": null, "externalCompanyId": null, "id": 889, "mktoName": "[Sample] sample", "personType": "contact", "mktoIsPartner": false, "isLead": true, "mktoIsCustomer": false, "isAnonymous": false, "salutation": null, "firstName": "[Sample]", "middleName": null, "lastName": "sample", "email": "i.g@example.io", "phone": null, "mobilePhone": null, "fax": null, "title": null, "contactCompany": "91", "dateOfBirth": null, "address": null, "city": null, "state": null, "country": null, "postalCode": null, "personTimeZone": "Asia/Riyadh", "originalSourceType": "Web form fillout", "originalSourceInfo": "Form: API Test Program.123.airbyte", "registrationSourceType": "Web form fillout", "registrationSourceInfo": "Form: API Test Program.123.airbyte", "originalSearchEngine": null, "originalSearchPhrase": null, "originalReferrer": "http://602-euo-598.mktoweb.com/lp/602-EUO-598/Landing-Page-3.html", "emailInvalid": false, "emailInvalidCause": null, "unsubscribed": false, "unsubscribedReason": null, "doNotCall": false, "mktoDoNotCallCause": null, "doNotCallReason": null, "marketingSuspended": false, "marketingSuspendedCause": null, "blackListed": false, "blackListedCause": null, "mktoPersonNotes": null, "anonymousIP": "85.209.47.207", "inferredCompany": "Arabic Computer System Co.", "inferredCountry": "Saudi Arabia", "inferredCity": null, "inferredStateRegion": null, "inferredPostalCode": null, "inferredMetropolitanArea": null, "inferredPhoneAreaCode": null, "emailSuspended": null, "emailSuspendedCause": null, "emailSuspendedAt": null, "department": null, "createdAt": "2023-01-17T12:30:09Z", "updatedAt": "2023-01-24T11:10:51Z", "cookies": "_mch-mktoweb.com-1673954921699-88079", "externalSalesPersonId": null, "leadPerson": "889", "leadRole": null, "leadSource": null, "leadStatus": null, "leadScore": null, "urgency": null, "priority": null, "relativeScore": null, "relativeUrgency": null, "rating": null, "personPrimaryLeadInterest": "889", "leadPartitionId": "1", "leadRevenueCycleModelId": null, "leadRevenueStageId": null, "acquisitionProgramId": null, "mktoAcquisitionDate": null}, "emitted_at": 1682445192206} +{"stream": "leads", "data": {"company": "Test Company Org 5", "site": null, "billingStreet": null, "billingCity": null, "billingState": null, "billingCountry": null, "billingPostalCode": null, "website": null, "mainPhone": null, "annualRevenue": null, "numberOfEmployees": null, "industry": null, "sicCode": null, "mktoCompanyNotes": null, "externalCompanyId": null, "id": 890, "mktoName": "Test Person 10 Test 10", "personType": "contact", "mktoIsPartner": false, "isLead": true, "mktoIsCustomer": false, "isAnonymous": false, "salutation": null, "firstName": "Test Person 10", "middleName": null, "lastName": "Test 10", "email": "name10@example.com", "phone": null, "mobilePhone": null, "fax": null, "title": null, "contactCompany": "92", "dateOfBirth": null, "address": null, "city": null, "state": null, "country": "US", "postalCode": null, "personTimeZone": "America/Chicago", "originalSourceType": "New lead", "originalSourceInfo": null, "registrationSourceType": "New lead", "registrationSourceInfo": null, "originalSearchEngine": null, "originalSearchPhrase": null, "originalReferrer": null, "emailInvalid": false, "emailInvalidCause": null, "unsubscribed": false, "unsubscribedReason": null, "doNotCall": false, "mktoDoNotCallCause": null, "doNotCallReason": null, "marketingSuspended": false, "marketingSuspendedCause": null, "blackListed": false, "blackListedCause": null, "mktoPersonNotes": null, "anonymousIP": null, "inferredCompany": null, "inferredCountry": null, "inferredCity": null, "inferredStateRegion": null, "inferredPostalCode": null, "inferredMetropolitanArea": null, "inferredPhoneAreaCode": null, "emailSuspended": null, "emailSuspendedCause": null, "emailSuspendedAt": null, "department": null, "createdAt": "2023-01-19T15:07:51Z", "updatedAt": "2023-01-24T11:10:51Z", "cookies": null, "externalSalesPersonId": null, "leadPerson": "890", "leadRole": null, "leadSource": null, "leadStatus": null, "leadScore": null, "urgency": null, "priority": null, "relativeScore": null, "relativeUrgency": null, "rating": null, "personPrimaryLeadInterest": "890", "leadPartitionId": "1", "leadRevenueCycleModelId": null, "leadRevenueStageId": null, "acquisitionProgramId": null, "mktoAcquisitionDate": null}, "emitted_at": 1682445192207} +{"stream": "leads", "data": {"company": "Test Company Org 11", "site": null, "billingStreet": null, "billingCity": null, "billingState": null, "billingCountry": null, "billingPostalCode": null, "website": null, "mainPhone": null, "annualRevenue": null, "numberOfEmployees": null, "industry": null, "sicCode": null, "mktoCompanyNotes": null, "externalCompanyId": null, "id": 891, "mktoName": "Name11 Surname11", "personType": "contact", "mktoIsPartner": false, "isLead": true, "mktoIsCustomer": false, "isAnonymous": false, "salutation": null, "firstName": "Name11", "middleName": null, "lastName": "Surname11", "email": "name11@example.com", "phone": null, "mobilePhone": null, "fax": null, "title": null, "contactCompany": "93", "dateOfBirth": null, "address": null, "city": null, "state": null, "country": "US", "postalCode": null, "personTimeZone": "America/Chicago", "originalSourceType": "New lead", "originalSourceInfo": null, "registrationSourceType": "New lead", "registrationSourceInfo": null, "originalSearchEngine": null, "originalSearchPhrase": null, "originalReferrer": null, "emailInvalid": false, "emailInvalidCause": null, "unsubscribed": false, "unsubscribedReason": null, "doNotCall": false, "mktoDoNotCallCause": null, "doNotCallReason": null, "marketingSuspended": false, "marketingSuspendedCause": null, "blackListed": false, "blackListedCause": null, "mktoPersonNotes": null, "anonymousIP": null, "inferredCompany": null, "inferredCountry": null, "inferredCity": null, "inferredStateRegion": null, "inferredPostalCode": null, "inferredMetropolitanArea": null, "inferredPhoneAreaCode": null, "emailSuspended": null, "emailSuspendedCause": null, "emailSuspendedAt": null, "department": null, "createdAt": "2023-01-19T15:25:17Z", "updatedAt": "2023-01-19T15:27:44Z", "cookies": null, "externalSalesPersonId": null, "leadPerson": "891", "leadRole": null, "leadSource": null, "leadStatus": null, "leadScore": null, "urgency": null, "priority": null, "relativeScore": null, "relativeUrgency": null, "rating": null, "personPrimaryLeadInterest": "891", "leadPartitionId": "3", "leadRevenueCycleModelId": null, "leadRevenueStageId": null, "acquisitionProgramId": null, "mktoAcquisitionDate": null}, "emitted_at": 1682445192208} +{"stream": "leads", "data": {"company": "Test Company Org 2", "site": null, "billingStreet": null, "billingCity": null, "billingState": null, "billingCountry": null, "billingPostalCode": null, "website": null, "mainPhone": null, "annualRevenue": null, "numberOfEmployees": null, "industry": null, "sicCode": null, "mktoCompanyNotes": null, "externalCompanyId": null, "id": 895, "mktoName": "Test 2", "personType": "contact", "mktoIsPartner": false, "isLead": true, "mktoIsCustomer": false, "isAnonymous": false, "salutation": null, "firstName": "Test", "middleName": null, "lastName": "2", "email": "name5@example.com", "phone": null, "mobilePhone": null, "fax": null, "title": null, "contactCompany": "94", "dateOfBirth": null, "address": null, "city": null, "state": null, "country": null, "postalCode": null, "personTimeZone": null, "originalSourceType": "New lead", "originalSourceInfo": null, "registrationSourceType": "New lead", "registrationSourceInfo": null, "originalSearchEngine": null, "originalSearchPhrase": null, "originalReferrer": null, "emailInvalid": false, "emailInvalidCause": null, "unsubscribed": false, "unsubscribedReason": null, "doNotCall": false, "mktoDoNotCallCause": null, "doNotCallReason": null, "marketingSuspended": false, "marketingSuspendedCause": null, "blackListed": false, "blackListedCause": null, "mktoPersonNotes": null, "anonymousIP": null, "inferredCompany": null, "inferredCountry": null, "inferredCity": null, "inferredStateRegion": null, "inferredPostalCode": null, "inferredMetropolitanArea": null, "inferredPhoneAreaCode": null, "emailSuspended": null, "emailSuspendedCause": null, "emailSuspendedAt": null, "department": null, "createdAt": "2023-01-20T11:56:00Z", "updatedAt": "2023-01-24T11:10:51Z", "cookies": null, "externalSalesPersonId": null, "leadPerson": "895", "leadRole": null, "leadSource": null, "leadStatus": null, "leadScore": null, "urgency": null, "priority": null, "relativeScore": null, "relativeUrgency": null, "rating": null, "personPrimaryLeadInterest": "895", "leadPartitionId": "1", "leadRevenueCycleModelId": null, "leadRevenueStageId": null, "acquisitionProgramId": null, "mktoAcquisitionDate": null}, "emitted_at": 1682445192209} +{"stream": "leads", "data": {"company": "Test Company Org 5", "site": null, "billingStreet": null, "billingCity": null, "billingState": null, "billingCountry": null, "billingPostalCode": null, "website": null, "mainPhone": null, "annualRevenue": null, "numberOfEmployees": null, "industry": null, "sicCode": null, "mktoCompanyNotes": null, "externalCompanyId": null, "id": 897, "mktoName": "Test test", "personType": "contact", "mktoIsPartner": false, "isLead": true, "mktoIsCustomer": false, "isAnonymous": false, "salutation": null, "firstName": "Test", "middleName": null, "lastName": "test", "email": "name8@example.com", "phone": null, "mobilePhone": null, "fax": null, "title": null, "contactCompany": "95", "dateOfBirth": null, "address": null, "city": null, "state": null, "country": null, "postalCode": null, "personTimeZone": null, "originalSourceType": "New lead", "originalSourceInfo": null, "registrationSourceType": "New lead", "registrationSourceInfo": null, "originalSearchEngine": null, "originalSearchPhrase": null, "originalReferrer": null, "emailInvalid": false, "emailInvalidCause": null, "unsubscribed": false, "unsubscribedReason": null, "doNotCall": false, "mktoDoNotCallCause": null, "doNotCallReason": null, "marketingSuspended": false, "marketingSuspendedCause": null, "blackListed": false, "blackListedCause": null, "mktoPersonNotes": null, "anonymousIP": null, "inferredCompany": null, "inferredCountry": null, "inferredCity": null, "inferredStateRegion": null, "inferredPostalCode": null, "inferredMetropolitanArea": null, "inferredPhoneAreaCode": null, "emailSuspended": null, "emailSuspendedCause": null, "emailSuspendedAt": null, "department": null, "createdAt": "2023-01-23T08:09:55Z", "updatedAt": "2023-01-24T11:10:51Z", "cookies": null, "externalSalesPersonId": null, "leadPerson": "897", "leadRole": null, "leadSource": null, "leadStatus": null, "leadScore": null, "urgency": null, "priority": null, "relativeScore": null, "relativeUrgency": null, "rating": null, "personPrimaryLeadInterest": "897", "leadPartitionId": "1", "leadRevenueCycleModelId": null, "leadRevenueStageId": null, "acquisitionProgramId": null, "mktoAcquisitionDate": null}, "emitted_at": 1682445192210} +{"stream": "leads", "data": {"company": "Test Company Org 5", "site": null, "billingStreet": null, "billingCity": null, "billingState": null, "billingCountry": null, "billingPostalCode": null, "website": null, "mainPhone": null, "annualRevenue": null, "numberOfEmployees": null, "industry": null, "sicCode": null, "mktoCompanyNotes": null, "externalCompanyId": null, "id": 898, "mktoName": "Person 1 Person 1", "personType": "contact", "mktoIsPartner": false, "isLead": true, "mktoIsCustomer": false, "isAnonymous": false, "salutation": null, "firstName": "Person 1", "middleName": null, "lastName": "Person 1", "email": "name100@example.com", "phone": null, "mobilePhone": null, "fax": null, "title": null, "contactCompany": "96", "dateOfBirth": null, "address": null, "city": null, "state": null, "country": null, "postalCode": null, "personTimeZone": null, "originalSourceType": "New lead", "originalSourceInfo": null, "registrationSourceType": "New lead", "registrationSourceInfo": null, "originalSearchEngine": null, "originalSearchPhrase": null, "originalReferrer": null, "emailInvalid": false, "emailInvalidCause": null, "unsubscribed": false, "unsubscribedReason": null, "doNotCall": false, "mktoDoNotCallCause": null, "doNotCallReason": null, "marketingSuspended": false, "marketingSuspendedCause": null, "blackListed": false, "blackListedCause": null, "mktoPersonNotes": null, "anonymousIP": null, "inferredCompany": null, "inferredCountry": null, "inferredCity": null, "inferredStateRegion": null, "inferredPostalCode": null, "inferredMetropolitanArea": null, "inferredPhoneAreaCode": null, "emailSuspended": null, "emailSuspendedCause": null, "emailSuspendedAt": null, "department": null, "createdAt": "2023-01-23T08:20:01Z", "updatedAt": "2023-01-24T11:10:51Z", "cookies": null, "externalSalesPersonId": null, "leadPerson": "898", "leadRole": null, "leadSource": null, "leadStatus": null, "leadScore": null, "urgency": null, "priority": null, "relativeScore": null, "relativeUrgency": null, "rating": null, "personPrimaryLeadInterest": "898", "leadPartitionId": "1", "leadRevenueCycleModelId": null, "leadRevenueStageId": null, "acquisitionProgramId": null, "mktoAcquisitionDate": null}, "emitted_at": 1682445192211} +{"stream": "leads", "data": {"company": null, "site": null, "billingStreet": null, "billingCity": null, "billingState": null, "billingCountry": null, "billingPostalCode": null, "website": null, "mainPhone": null, "annualRevenue": null, "numberOfEmployees": null, "industry": null, "sicCode": null, "mktoCompanyNotes": null, "externalCompanyId": null, "id": 901, "mktoName": null, "personType": "contact", "mktoIsPartner": false, "isLead": true, "mktoIsCustomer": false, "isAnonymous": false, "salutation": null, "firstName": null, "middleName": null, "lastName": null, "email": null, "phone": null, "mobilePhone": null, "fax": null, "title": null, "contactCompany": "97", "dateOfBirth": null, "address": null, "city": null, "state": null, "country": null, "postalCode": null, "personTimeZone": "America/New_York", "originalSourceType": "Web form fillout", "originalSourceInfo": "Form: API Test Program.123.airbyte", "registrationSourceType": "Web form fillout", "registrationSourceInfo": "Form: API Test Program.123.airbyte", "originalSearchEngine": null, "originalSearchPhrase": null, "originalReferrer": "http://602-euo-598.mktoweb.com/lp/602-EUO-598/Landing-Page-3.html", "emailInvalid": false, "emailInvalidCause": null, "unsubscribed": false, "unsubscribedReason": null, "doNotCall": false, "mktoDoNotCallCause": null, "doNotCallReason": null, "marketingSuspended": false, "marketingSuspendedCause": null, "blackListed": false, "blackListedCause": null, "mktoPersonNotes": null, "anonymousIP": "63.117.14.132", "inferredCompany": "Verizon Business", "inferredCountry": "United States", "inferredCity": "Bronx", "inferredStateRegion": "NY", "inferredPostalCode": "10472", "inferredMetropolitanArea": "New York NY (MRC-501)", "inferredPhoneAreaCode": "718", "emailSuspended": null, "emailSuspendedCause": null, "emailSuspendedAt": null, "department": null, "createdAt": "2023-01-25T00:21:35Z", "updatedAt": "2023-01-25T00:21:37Z", "cookies": "_mch-mktoweb.com-1674606091542-53000", "externalSalesPersonId": null, "leadPerson": "901", "leadRole": null, "leadSource": null, "leadStatus": null, "leadScore": null, "urgency": null, "priority": null, "relativeScore": null, "relativeUrgency": null, "rating": null, "personPrimaryLeadInterest": "901", "leadPartitionId": "1", "leadRevenueCycleModelId": null, "leadRevenueStageId": null, "acquisitionProgramId": null, "mktoAcquisitionDate": null}, "emitted_at": 1682445192212} +{"stream": "lists", "data": {"id": 1016, "name": "List 1", "description": "Test", "programName": "API Test Program", "workspaceId": 1, "workspaceName": "Default", "createdAt": "2023-01-17T12:43:09Z", "updatedAt": "2023-01-20T13:11:03Z"}, "emitted_at": 1682445193305} +{"stream": "lists", "data": {"id": 1017, "name": "List 2", "description": "Test", "programName": "API Test Program", "workspaceId": 1, "workspaceName": "Default", "createdAt": "2023-01-17T12:43:41Z", "updatedAt": "2023-01-17T12:43:43Z"}, "emitted_at": 1682445193306} +{"stream": "lists", "data": {"id": 1018, "name": "List 3", "description": "Test", "programName": "API Test Program", "workspaceId": 1, "workspaceName": "Default", "createdAt": "2023-01-17T12:43:59Z", "updatedAt": "2023-01-17T12:44:00Z"}, "emitted_at": 1682445193306} +{"stream": "lists", "data": {"id": 1019, "name": "List 4", "description": "Test", "programName": "API Test Program", "workspaceId": 1, "workspaceName": "Default", "createdAt": "2023-01-17T12:44:15Z", "updatedAt": "2023-01-17T12:44:16Z"}, "emitted_at": 1682445193306} +{"stream": "lists", "data": {"id": 1020, "name": "List 5", "description": "Test", "programName": "API Test Program", "workspaceId": 1, "workspaceName": "Default", "createdAt": "2023-01-17T12:44:28Z", "updatedAt": "2023-01-17T12:44:30Z"}, "emitted_at": 1682445193306} +{"stream": "programs", "data": {"id": 1016, "name": "123", "description": "", "createdAt": "2021-09-01T16:02:30Z", "updatedAt": "2023-01-17T12:36:46Z", "url": "https://app-sj32.marketo.com/#EBP1016A1", "type": "Email", "channel": "Email Send", "folder": {"type": "Program", "value": 1003, "folderName": "API Test Program"}, "status": "completed", "workspace": "Default", "headStart": false}, "emitted_at": 1682445194496} +{"stream": "programs", "data": {"id": 1017, "name": "air", "description": "", "createdAt": "2021-09-01T16:09:23Z", "updatedAt": "2023-01-17T12:31:23Z", "url": "https://app-sj32.marketo.com/#EBP1017A1", "type": "Email", "channel": "Email Send", "folder": {"type": "Program", "value": 1003, "folderName": "API Test Program"}, "status": "completed", "workspace": "Default", "headStart": false}, "emitted_at": 1682445194496} +{"stream": "programs", "data": {"id": 1003, "name": "API Test Program", "description": "Sample API Program", "createdAt": "2021-01-18T13:55:44Z", "updatedAt": "2023-01-20T13:02:44Z", "url": "https://app-sj32.marketo.com/#PG1003A1", "type": "Default", "channel": "Email Blast", "folder": {"type": "Folder", "value": 45, "folderName": "Active Marketing Programs"}, "status": "", "workspace": "Default"}, "emitted_at": 1682445194496} +{"stream": "programs", "data": {"id": 1004, "name": "API Test Program 1", "description": "Sample API Program 1", "createdAt": "2021-01-18T13:57:37Z", "updatedAt": "2023-01-24T11:20:05Z", "url": "https://app-sj32.marketo.com/#PG1004A1", "type": "Default", "channel": "Online Advertising", "folder": {"type": "Folder", "value": 45, "folderName": "Active Marketing Programs"}, "status": "", "workspace": "Default"}, "emitted_at": 1682445194497} +{"stream": "programs", "data": {"id": 1013, "name": "API Test Program 10", "description": "Sample API Program 10", "createdAt": "2021-01-18T13:57:46Z", "updatedAt": "2023-01-20T16:27:11Z", "url": "https://app-sj32.marketo.com/#PG1013A1", "type": "Default", "channel": "Online Advertising", "folder": {"type": "Folder", "value": 45, "folderName": "Active Marketing Programs"}, "status": "", "workspace": "Default"}, "emitted_at": 1682445194497} +{"stream": "programs", "data": {"id": 1012, "name": "API Test Program 9", "description": "Sample API Program 9", "createdAt": "2021-01-18T13:57:45Z", "updatedAt": "2023-01-20T16:14:21Z", "url": "https://app-sj32.marketo.com/#PG1012A1", "type": "Default", "channel": "Online Advertising", "folder": {"type": "Folder", "value": 50, "folderName": "Nurture"}, "status": "", "workspace": "Default"}, "emitted_at": 1682445194497} +{"stream": "programs", "data": {"id": 1028, "name": "BP-ES-YYYY-MM-DD Email Send v3", "description": "Quick and easy Email Send Program for sending one single email, with or without A/B test. Channel: \"Email Send\". \nNOTE: Don't forget to activate the \"01-Influenced\" Campaign for tracking Success!", "createdAt": "2023-01-23T08:02:31Z", "updatedAt": "2023-01-23T08:03:04Z", "url": "https://app-sj32.marketo.com/#EBP1028A1", "type": "Email", "channel": "Email Send", "folder": {"type": "Folder", "value": 54, "folderName": "Data Management"}, "status": "unlocked", "workspace": "Default", "headStart": false}, "emitted_at": 1682445194498} +{"stream": "programs", "data": {"id": 1026, "name": "BP-LE-YYYY-MM-DD Live Event v3", "description": "Live Event Program, with registration page, three invitation emails, and follow-up emails. This is suitable for all events where you require registrations, including roadshows, lunches, dinners, or presentations at trade show events. Use the Marketo Events App for check-in and attendance tracking on your iPad or Android tablet.\nNOTE: Before the event, download the registration information to your iPad/Adroid Tablet. Then check-in visitors, and synchronize the attendance information back to Marketo. If you don't have a tablet, you can import attendees after under the Program's \"Members\" tab before sending your follow-up emails.", "createdAt": "2023-01-20T13:08:36Z", "updatedAt": "2023-01-20T16:32:34Z", "url": "https://app-sj32.marketo.com/#ME1026A1", "type": "Event", "channel": "Live Event", "folder": {"type": "Folder", "value": 48, "folderName": "Emails"}, "status": "", "workspace": "Default"}, "emitted_at": 1682445194498} +{"stream": "programs", "data": {"id": 1027, "name": "BP-LI-YYYY-MM-DD List Import v3", "description": "Program to manage imports of new target lists and record Acquisition Program at the same time. Go to the \"Members\" tab, and click on \"Import Members\". Follow the on-screen instructions, In Step 3, assign the Member Status \"On List\". \nNOTE: List Import Programs do not track \"Influence\", or \"Success\", because they do not communicate with anyone. Their sole purpose is to record Acquisition Program for First-Touch Attribution and other Analytics.", "createdAt": "2023-01-23T07:58:14Z", "updatedAt": "2023-01-23T07:58:59Z", "url": "https://app-sj32.marketo.com/#PG1027A1", "type": "Default", "channel": "List Import", "folder": {"type": "Folder", "value": 51, "folderName": "Web Content"}, "status": "", "workspace": "Default"}, "emitted_at": 1682445194498} +{"stream": "programs", "data": {"id": 1018, "name": "John Doe", "description": "", "createdAt": "2021-09-08T12:49:49Z", "updatedAt": "2023-01-17T12:29:10Z", "url": "https://app-sj32.marketo.com/#PG1018A1", "type": "Default", "channel": "Online Advertising", "folder": {"type": "Folder", "value": 52, "folderName": "Web Forms"}, "status": "", "workspace": "Default"}, "emitted_at": 1682445194499} +{"stream": "programs", "data": {"id": 1023, "name": "My Test Program 1", "description": "Test", "createdAt": "2023-01-17T12:38:35Z", "updatedAt": "2023-01-17T12:39:38Z", "url": "https://app-sj32.marketo.com/#EBP1023A1", "type": "Email", "channel": "Newsletter", "folder": {"type": "Folder", "value": 49, "folderName": "Newsletters"}, "status": "unlocked", "workspace": "Default"}, "emitted_at": 1682445194499} +{"stream": "programs", "data": {"id": 1024, "name": "Test Event 1", "description": "Test", "createdAt": "2023-01-20T09:29:38Z", "updatedAt": "2023-01-20T09:30:59Z", "url": "https://app-sj32.marketo.com/#ME1024A1", "type": "Event", "channel": "Live Event", "folder": {"type": "Program", "value": 1003, "folderName": "API Test Program"}, "status": "", "workspace": "Default"}, "emitted_at": 1682445194499} +{"stream": "programs", "data": {"id": 1025, "name": "Test Nurture", "description": "Test", "createdAt": "2023-01-20T09:51:39Z", "updatedAt": "2023-01-23T08:27:01Z", "url": "https://app-sj32.marketo.com/#NP1025A1", "type": "Engagement", "channel": "Nurture", "folder": {"type": "Folder", "value": 50, "folderName": "Nurture"}, "status": "on", "workspace": "Default"}, "emitted_at": 1682445194500} +{"stream": "activities_visit_webpage", "data": {"marketoGUID": "2125", "leadId": 864, "activityDate": "2023-01-17T11:29:20Z", "activityTypeId": 1, "campaignId": null, "primaryAttributeValueId": "10", "primaryAttributeValue": "Landing-Page-1", "webpage_url": "/lp/602-EUO-598/Landing-Page-1.html", "client_ip_address": "85.209.47.207", "user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36 Edg/109.0.1518.52", "query_parameters": null, "referrer_url": "https://602-euo-598.mktoweb.com/"}, "emitted_at": 1682445321184} +{"stream": "activities_visit_webpage", "data": {"marketoGUID": "2132", "leadId": 888, "activityDate": "2023-01-17T12:29:28Z", "activityTypeId": 1, "campaignId": null, "primaryAttributeValueId": "11", "primaryAttributeValue": "Landing-Page-2", "webpage_url": "/lp/602-EUO-598/Landing-Page-2.html", "client_ip_address": "85.209.47.207", "user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36 Edg/109.0.1518.52", "query_parameters": null, "referrer_url": "http://602-euo-598.mktoweb.com/"}, "emitted_at": 1682445321185} +{"stream": "activities_visit_webpage", "data": {"marketoGUID": "2133", "leadId": 888, "activityDate": "2023-01-17T12:29:51Z", "activityTypeId": 1, "campaignId": null, "primaryAttributeValueId": "12", "primaryAttributeValue": "Landing-Page-3", "webpage_url": "/lp/602-EUO-598/Landing-Page-3.html", "client_ip_address": "85.209.47.207", "user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36 Edg/109.0.1518.52", "query_parameters": null, "referrer_url": "http://602-euo-598.mktoweb.com/"}, "emitted_at": 1682445321185} +{"stream": "activities_visit_webpage", "data": {"marketoGUID": "2199", "leadId": 864, "activityDate": "2023-01-20T12:40:22Z", "activityTypeId": 1, "campaignId": null, "primaryAttributeValueId": "1", "primaryAttributeValue": "UnsubscribePage", "webpage_url": "/lp/datalineaedev/UnsubscribePage.html", "client_ip_address": "85.209.47.207", "user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:108.0) Gecko/20100101 Firefox/108.0", "query_parameters": "mkt_unsubscribe=1&mkt_tok=NjAyLUVVTy01OTgAAAGJbdICA9DCAo37JqD5ozxyzAlhl8ryjBs-YDMZdHsGTFeOe-C6dFcD19gwXxmu7jXj3HO-IA2VTSiA7upNlg", "referrer_url": "http://mkto-sj320154.com/"}, "emitted_at": 1682445321186} +{"stream": "activities_visit_webpage", "data": {"marketoGUID": "2200", "leadId": 864, "activityDate": "2023-01-20T12:40:36Z", "activityTypeId": 1, "campaignId": null, "primaryAttributeValueId": "2", "primaryAttributeValue": "UnsubscribeConfirm", "webpage_url": "/lp/602-EUO-598/UnsubscribeConfirm.html", "client_ip_address": "85.209.47.207", "user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:108.0) Gecko/20100101 Firefox/108.0", "query_parameters": "aliId=eyJpIjoiT2hyTkpVMUJTSUZRajZIZyIsInQiOiJKXC9xOUlRU3ZRR0czdlBTWnkxS3dzQT09In0%3D", "referrer_url": "http://602-euo-598.mktoweb.com/lp/datalineaedev/UnsubscribePage.html?mkt_unsubscribe=1"}, "emitted_at": 1682445321186} +{"stream": "activities_visit_webpage", "data": {"marketoGUID": "2293", "leadId": 901, "activityDate": "2023-01-25T00:21:34Z", "activityTypeId": 1, "campaignId": null, "primaryAttributeValueId": "12", "primaryAttributeValue": "Landing-Page-3", "webpage_url": "/lp/602-EUO-598/Landing-Page-3.html", "client_ip_address": "63.117.14.132", "user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36", "query_parameters": null, "referrer_url": "http://602-euo-598.mktoweb.com/"}, "emitted_at": 1682445321187} +{"stream": "activities_fill_out_form", "data": {"marketoGUID": "2129", "leadId": 864, "activityDate": "2023-01-17T11:29:43Z", "activityTypeId": 2, "campaignId": null, "primaryAttributeValueId": "1006", "primaryAttributeValue": "API Test Program.123.airbyte", "form_fields": "a:19:{s:6:\"module\";s:11:\"leadCapture\";s:6:\"action\";s:5:\"save2\";s:9:\"FirstName\";s:7:\"Segment\";s:8:\"LastName\";s:1:\"5\";s:5:\"Email\";s:27:\"integration-test@airbyte.io\";s:6:\"formid\";s:4:\"1006\";s:4:\"lpId\";s:4:\"1005\";s:5:\"subId\";s:3:\"154\";s:10:\"munchkinId\";s:11:\"602-EUO-598\";s:5:\"lpurl\";s:92:\"http://602-EUO-598.mktoweb.com/lp/602-EUO-598/Landing-Page-1.html?cr={creative}&kw={keyword}\";s:2:\"cr\";s:0:\"\";s:2:\"kw\";s:0:\"\";s:1:\"q\";s:0:\"\";s:8:\"_mkt_trk\";s:57:\"id:602-EUO-598&token:_mch-mktoweb.com-1673954921699-88079\";s:7:\"formVid\";s:4:\"1006\";s:13:\"_mktoReferrer\";s:66:\"https://602-euo-598.mktoweb.com/lp/602-EUO-598/Landing-Page-1.html\";s:14:\"checksumFields\";s:98:\"FirstName,LastName,Email,formid,lpId,subId,munchkinId,lpurl,cr,kw,q,_mkt_trk,formVid,_mktoReferrer\";s:8:\"checksum\";s:64:\"774b4fee27ce1a145370b5ffebe8f4e300c1404cfd86a2067763c65b063d1b66\";s:25:\"formServiceRequestId31337\";s:17:\"17915#185bf7ded1f\";}", "client_ip_address": "85.209.47.207", "webpage_id": 10, "user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36 Edg/109.0.1518.52", "query_parameters": null, "referrer_url": "https://602-euo-598.mktoweb.com/lp/602-EUO-598/Landing-Page-1.html"}, "emitted_at": 1682445447915} +{"stream": "activities_fill_out_form", "data": {"marketoGUID": "2131", "leadId": 888, "activityDate": "2023-01-17T12:29:40Z", "activityTypeId": 2, "campaignId": null, "primaryAttributeValueId": "1006", "primaryAttributeValue": "API Test Program.123.airbyte", "form_fields": "a:19:{s:6:\"module\";s:11:\"leadCapture\";s:6:\"action\";s:5:\"save2\";s:9:\"FirstName\";s:12:\"[Sample]Name\";s:8:\"LastName\";s:7:\"Surname\";s:5:\"Email\";s:25:\"iryna.grankova@airbyte.io\";s:6:\"formid\";s:4:\"1006\";s:4:\"lpId\";s:4:\"1007\";s:5:\"subId\";s:3:\"154\";s:10:\"munchkinId\";s:11:\"602-EUO-598\";s:5:\"lpurl\";s:92:\"http://602-EUO-598.mktoweb.com/lp/602-EUO-598/Landing-Page-2.html?cr={creative}&kw={keyword}\";s:2:\"cr\";s:0:\"\";s:2:\"kw\";s:0:\"\";s:1:\"q\";s:0:\"\";s:8:\"_mkt_trk\";s:57:\"id:602-EUO-598&token:_mch-mktoweb.com-1673954921699-88079\";s:7:\"formVid\";s:4:\"1006\";s:13:\"_mktoReferrer\";s:65:\"http://602-euo-598.mktoweb.com/lp/602-EUO-598/Landing-Page-2.html\";s:14:\"checksumFields\";s:98:\"FirstName,LastName,Email,formid,lpId,subId,munchkinId,lpurl,cr,kw,q,_mkt_trk,formVid,_mktoReferrer\";s:8:\"checksum\";s:64:\"31c81f3245d5080d0bb93a07f67ae67a0c4667adcce1400cee8857206f656981\";s:25:\"formServiceRequestId31337\";s:17:\"161b7#185bfb4d8a8\";}", "client_ip_address": "85.209.47.207", "webpage_id": 11, "user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36 Edg/109.0.1518.52", "query_parameters": null, "referrer_url": "http://602-euo-598.mktoweb.com/lp/602-EUO-598/Landing-Page-2.html"}, "emitted_at": 1682445447915} +{"stream": "activities_fill_out_form", "data": {"marketoGUID": "2135", "leadId": 889, "activityDate": "2023-01-17T12:30:10Z", "activityTypeId": 2, "campaignId": null, "primaryAttributeValueId": "1006", "primaryAttributeValue": "API Test Program.123.airbyte", "form_fields": "a:19:{s:6:\"module\";s:11:\"leadCapture\";s:6:\"action\";s:5:\"save2\";s:9:\"FirstName\";s:8:\"[Sample]\";s:8:\"LastName\";s:6:\"sample\";s:5:\"Email\";s:30:\"iryna.grankova@globallogic.com\";s:6:\"formid\";s:4:\"1006\";s:4:\"lpId\";s:4:\"1009\";s:5:\"subId\";s:3:\"154\";s:10:\"munchkinId\";s:11:\"602-EUO-598\";s:5:\"lpurl\";s:92:\"http://602-EUO-598.mktoweb.com/lp/602-EUO-598/Landing-Page-3.html?cr={creative}&kw={keyword}\";s:2:\"cr\";s:0:\"\";s:2:\"kw\";s:0:\"\";s:1:\"q\";s:0:\"\";s:8:\"_mkt_trk\";s:57:\"id:602-EUO-598&token:_mch-mktoweb.com-1673954921699-88079\";s:7:\"formVid\";s:4:\"1006\";s:13:\"_mktoReferrer\";s:65:\"http://602-euo-598.mktoweb.com/lp/602-EUO-598/Landing-Page-3.html\";s:14:\"checksumFields\";s:98:\"FirstName,LastName,Email,formid,lpId,subId,munchkinId,lpurl,cr,kw,q,_mkt_trk,formVid,_mktoReferrer\";s:8:\"checksum\";s:64:\"c7f8c6af1167c273c27bc3b441b5be79672d5a6d61f66398eba04782ca972195\";s:25:\"formServiceRequestId31337\";s:17:\"16fe4#185bfb55182\";}", "client_ip_address": "85.209.47.207", "webpage_id": 12, "user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36 Edg/109.0.1518.52", "query_parameters": null, "referrer_url": "http://602-euo-598.mktoweb.com/lp/602-EUO-598/Landing-Page-3.html"}, "emitted_at": 1682445447916} +{"stream": "activities_fill_out_form", "data": {"marketoGUID": "2198", "leadId": 864, "activityDate": "2023-01-20T12:40:36Z", "activityTypeId": 2, "campaignId": null, "primaryAttributeValueId": "1", "primaryAttributeValue": "Email Unsubscribe Form", "form_fields": "a:20:{s:6:\"module\";s:11:\"leadCapture\";s:6:\"action\";s:5:\"save2\";s:5:\"Email\";s:27:\"integration-test@airbyte.io\";s:12:\"Unsubscribed\";s:3:\"Yes\";s:6:\"formid\";s:1:\"1\";s:4:\"lpId\";s:1:\"1\";s:5:\"subId\";s:3:\"154\";s:10:\"munchkinId\";s:11:\"602-EUO-598\";s:5:\"lpurl\";s:93:\"http://602-EUO-598.mktoweb.com/lp/602-EUO-598/UnsubscribePage.html?cr={creative}&kw={keyword}\";s:12:\"followupLpId\";s:1:\"2\";s:2:\"cr\";s:0:\"\";s:2:\"kw\";s:0:\"\";s:1:\"q\";s:0:\"\";s:8:\"_mkt_trk\";s:57:\"id:602-EUO-598&token:_mch-mktoweb.com-1674218381862-27778\";s:7:\"formVid\";s:1:\"1\";s:7:\"mkt_tok\";s:102:\"NjAyLUVVTy01OTgAAAGJbdICA9DCAo37JqD5ozxyzAlhl8ryjBs-YDMZdHsGTFeOe-C6dFcD19gwXxmu7jXj3HO-IA2VTSiA7upNlg\";s:13:\"_mktoReferrer\";s:197:\"http://602-euo-598.mktoweb.com/lp/datalineaedev/UnsubscribePage.html?mkt_unsubscribe=1&mkt_tok=NjAyLUVVTy01OTgAAAGJbdICA9DCAo37JqD5ozxyzAlhl8ryjBs-YDMZdHsGTFeOe-C6dFcD19gwXxmu7jXj3HO-IA2VTSiA7upNlg\";s:14:\"checksumFields\";s:113:\"Email,Unsubscribed,formid,lpId,subId,munchkinId,lpurl,followupLpId,cr,kw,q,_mkt_trk,formVid,mkt_tok,_mktoReferrer\";s:8:\"checksum\";s:64:\"b959482d2aff7c190b46cc567e79fce9c99a6342fbe1eb3fd863ec9a6ac1159a\";s:25:\"formServiceRequestId31337\";s:16:\"7e0e#185cf31f199\";}", "client_ip_address": "85.209.47.207", "webpage_id": 1, "user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:108.0) Gecko/20100101 Firefox/108.0", "query_parameters": "mkt_unsubscribe=1&mkt_tok=NjAyLUVVTy01OTgAAAGJbdICA9DCAo37JqD5ozxyzAlhl8ryjBs-YDMZdHsGTFeOe-C6dFcD19gwXxmu7jXj3HO-IA2VTSiA7upNlg", "referrer_url": "http://602-euo-598.mktoweb.com/lp/datalineaedev/UnsubscribePage.html?mkt_unsubscribe=1&mkt_tok=NjAyLUVVTy01OTgAAAGJbdICA9DCAo37JqD5ozxyzAlhl8ryjBs-YDMZdHsGTFeOe-C6dFcD19gwXxmu7jXj3HO-IA2VTSiA7upNlg"}, "emitted_at": 1682445447916} +{"stream": "activities_fill_out_form", "data": {"marketoGUID": "2292", "leadId": 901, "activityDate": "2023-01-25T00:21:37Z", "activityTypeId": 2, "campaignId": null, "primaryAttributeValueId": "1006", "primaryAttributeValue": "API Test Program.123.airbyte", "form_fields": "a:19:{s:6:\"module\";s:11:\"leadCapture\";s:6:\"action\";s:5:\"save2\";s:9:\"FirstName\";s:0:\"\";s:8:\"LastName\";s:0:\"\";s:5:\"Email\";s:0:\"\";s:6:\"formid\";s:4:\"1006\";s:4:\"lpId\";s:4:\"1009\";s:5:\"subId\";s:3:\"154\";s:10:\"munchkinId\";s:11:\"602-EUO-598\";s:5:\"lpurl\";s:92:\"http://602-EUO-598.mktoweb.com/lp/602-EUO-598/Landing-Page-3.html?cr={creative}&kw={keyword}\";s:2:\"cr\";s:0:\"\";s:2:\"kw\";s:0:\"\";s:1:\"q\";s:0:\"\";s:8:\"_mkt_trk\";s:57:\"id:602-EUO-598&token:_mch-mktoweb.com-1674606091542-53000\";s:7:\"formVid\";s:4:\"1006\";s:13:\"_mktoReferrer\";s:65:\"http://602-euo-598.mktoweb.com/lp/602-EUO-598/Landing-Page-3.html\";s:14:\"checksumFields\";s:98:\"FirstName,LastName,Email,formid,lpId,subId,munchkinId,lpurl,cr,kw,q,_mkt_trk,formVid,_mktoReferrer\";s:8:\"checksum\";s:64:\"ff09fb4acb61768982a6d6dd287c60f63d79cbf618e7a95d45343818da3c5a59\";s:25:\"formServiceRequestId31337\";s:16:\"157d#185e64d2c2b\";}", "client_ip_address": "63.117.14.132", "webpage_id": 12, "user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36", "query_parameters": null, "referrer_url": "http://602-euo-598.mktoweb.com/lp/602-EUO-598/Landing-Page-3.html"}, "emitted_at": 1682445447916} +{"stream": "activities_send_email", "data": {"marketoGUID": "2185", "leadId": 109, "activityDate": "2023-01-20T11:45:57Z", "activityTypeId": 6, "campaignId": 1109, "primaryAttributeValueId": "1009", "primaryAttributeValue": "Test Nurture.integration-tgest@airbyte.io", "campaign_run_id": 66, "step_id": 305, "choice_number": 0}, "emitted_at": 1682445574498} +{"stream": "activities_send_email", "data": {"marketoGUID": "2206", "leadId": 876, "activityDate": "2023-01-20T12:49:27Z", "activityTypeId": 6, "campaignId": 1126, "primaryAttributeValueId": "1009", "primaryAttributeValue": "Test Nurture.integration-tgest@airbyte.io", "campaign_run_id": 86, "step_id": 364, "choice_number": 0}, "emitted_at": 1682445574499} +{"stream": "activities_send_email", "data": {"marketoGUID": "2239", "leadId": 99, "activityDate": "2023-01-20T16:21:28Z", "activityTypeId": 6, "campaignId": 1138, "primaryAttributeValueId": "1013", "primaryAttributeValue": "BP-LE-YYYY-MM-DD Live Event v3.EMAIL-Invitation", "campaign_run_id": 92, "step_id": 417, "choice_number": 0}, "emitted_at": 1682445574499} +{"stream": "activities_send_email", "data": {"marketoGUID": "2250", "leadId": 99, "activityDate": "2023-01-22T11:57:56Z", "activityTypeId": 6, "campaignId": 1100, "primaryAttributeValueId": "1009", "primaryAttributeValue": "Test Nurture.integration-tgest@airbyte.io", "campaign_run_id": 95, "step_id": 245, "choice_number": 0}, "emitted_at": 1682445574499} +{"stream": "activities_send_email", "data": {"marketoGUID": "2251", "leadId": 379, "activityDate": "2023-01-22T11:57:56Z", "activityTypeId": 6, "campaignId": 1100, "primaryAttributeValueId": "1009", "primaryAttributeValue": "Test Nurture.integration-tgest@airbyte.io", "campaign_run_id": 95, "step_id": 245, "choice_number": 0}, "emitted_at": 1682445574500} +{"stream": "activities_send_email", "data": {"marketoGUID": "2252", "leadId": 800, "activityDate": "2023-01-22T11:57:56Z", "activityTypeId": 6, "campaignId": 1100, "primaryAttributeValueId": "1009", "primaryAttributeValue": "Test Nurture.integration-tgest@airbyte.io", "campaign_run_id": 95, "step_id": 245, "choice_number": 0}, "emitted_at": 1682445574500} +{"stream": "activities_send_email", "data": {"marketoGUID": "2271", "leadId": 880, "activityDate": "2023-01-23T08:25:26Z", "activityTypeId": 6, "campaignId": 1159, "primaryAttributeValueId": "1009", "primaryAttributeValue": "Test Nurture.integration-tgest@airbyte.io", "campaign_run_id": 112, "step_id": 489, "choice_number": 0}, "emitted_at": 1682445574500} +{"stream": "activities_email_delivered", "data": {"marketoGUID": "2186", "leadId": 109, "activityDate": "2023-01-20T11:45:58Z", "activityTypeId": 7, "campaignId": 1109, "primaryAttributeValueId": "1009", "primaryAttributeValue": "Test Nurture.integration-tgest@airbyte.io", "campaign_run_id": 66, "step_id": 305, "choice_number": 407}, "emitted_at": 1682445700861} +{"stream": "activities_email_delivered", "data": {"marketoGUID": "2208", "leadId": 876, "activityDate": "2023-01-20T12:49:29Z", "activityTypeId": 7, "campaignId": 1126, "primaryAttributeValueId": "1009", "primaryAttributeValue": "Test Nurture.integration-tgest@airbyte.io", "campaign_run_id": 86, "step_id": 364, "choice_number": 470}, "emitted_at": 1682445700861} +{"stream": "activities_email_bounced", "data": {"marketoGUID": "2273", "leadId": 880, "activityDate": "2023-01-23T08:25:26Z", "activityTypeId": 8, "campaignId": 1159, "primaryAttributeValueId": "1009", "primaryAttributeValue": "Test Nurture.integration-tgest@airbyte.io", "campaign_run_id": 112, "category": "2", "email": "alastor@moody.com", "details": "550 5.4.1 Recipient address rejected: Access denied. AS(201806281) [SN1NAM02FT0043.eop-nam02.prod.protection.outlook.com]", "subcategory": "2003", "step_id": 489, "choice_number": 623}, "emitted_at": 1682445827491} +{"stream": "activities_unsubscribe_email", "data": {"marketoGUID": "2201", "leadId": 864, "activityDate": "2023-01-20T12:40:36Z", "activityTypeId": 9, "campaignId": null, "primaryAttributeValueId": "1010", "primaryAttributeValue": "My Email Program - RF.Test Email 1", "webform_id": 1, "client_ip_address": "85.209.47.207", "form_fields": "a:20:{s:6:\"module\";s:11:\"leadCapture\";s:6:\"action\";s:5:\"save2\";s:5:\"Email\";s:27:\"integration-test@airbyte.io\";s:12:\"Unsubscribed\";s:3:\"Yes\";s:6:\"formid\";s:1:\"1\";s:4:\"lpId\";s:1:\"1\";s:5:\"subId\";s:3:\"154\";s:10:\"munchkinId\";s:11:\"602-EUO-598\";s:5:\"lpurl\";s:93:\"http://602-EUO-598.mktoweb.com/lp/602-EUO-598/UnsubscribePage.html?cr={creative}&kw={keyword}\";s:12:\"followupLpId\";s:1:\"2\";s:2:\"cr\";s:0:\"\";s:2:\"kw\";s:0:\"\";s:1:\"q\";s:0:\"\";s:8:\"_mkt_trk\";s:57:\"id:602-EUO-598&token:_mch-mktoweb.com-1674218381862-27778\";s:7:\"formVid\";s:1:\"1\";s:7:\"mkt_tok\";s:102:\"NjAyLUVVTy01OTgAAAGJbdICA9DCAo37JqD5ozxyzAlhl8ryjBs-YDMZdHsGTFeOe-C6dFcD19gwXxmu7jXj3HO-IA2VTSiA7upNlg\";s:13:\"_mktoReferrer\";s:197:\"http://602-euo-598.mktoweb.com/lp/datalineaedev/UnsubscribePage.html?mkt_unsubscribe=1&mkt_tok=NjAyLUVVTy01OTgAAAGJbdICA9DCAo37JqD5ozxyzAlhl8ryjBs-YDMZdHsGTFeOe-C6dFcD19gwXxmu7jXj3HO-IA2VTSiA7upNlg\";s:14:\"checksumFields\";s:113:\"Email,Unsubscribed,formid,lpId,subId,munchkinId,lpurl,followupLpId,cr,kw,q,_mkt_trk,formVid,mkt_tok,_mktoReferrer\";s:8:\"checksum\";s:64:\"b959482d2aff7c190b46cc567e79fce9c99a6342fbe1eb3fd863ec9a6ac1159a\";s:25:\"formServiceRequestId31337\";s:16:\"7e0e#185cf31f199\";}", "webpage_id": 1, "user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:108.0) Gecko/20100101 Firefox/108.0", "query_parameters": "mkt_unsubscribe=1&mkt_tok=NjAyLUVVTy01OTgAAAGJbdICA9DCAo37JqD5ozxyzAlhl8ryjBs-YDMZdHsGTFeOe-C6dFcD19gwXxmu7jXj3HO-IA2VTSiA7upNlg", "referrer_url": "http://602-euo-598.mktoweb.com/lp/datalineaedev/UnsubscribePage.html?mkt_unsubscribe=1&mkt_tok=NjAyLUVVTy01OTgAAAGJbdICA9DCAo37JqD5ozxyzAlhl8ryjBs-YDMZdHsGTFeOe-C6dFcD19gwXxmu7jXj3HO-IA2VTSiA7upNlg"}, "emitted_at": 1682445954184} +{"stream": "activities_click_email", "data": {"marketoGUID": "2213", "leadId": 876, "activityDate": "2023-01-20T12:57:10Z", "activityTypeId": 11, "campaignId": 1126, "primaryAttributeValueId": "1009", "primaryAttributeValue": "Test Nurture.integration-tgest@airbyte.io", "campaign_run_id": 86, "platform": "Win7", "is_mobile_device": false, "step_id": 364, "device": "Windows Desktop", "choice_number": 470, "is_bot_activity": false, "user_agent": "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; Trident/6.0)", "bot_activity_pattern": "N/A", "link": "http://mylink"}, "emitted_at": 1682446080915} +{"stream": "activities_new_lead", "data": {"marketoGUID": "2108", "leadId": 885, "activityDate": "2023-01-17T11:00:59Z", "activityTypeId": 12, "campaignId": null, "primaryAttributeValueId": "885", "primaryAttributeValue": "Test Person 1 All People", "created_date": "2023-01-17", "source_type": "New lead"}, "emitted_at": 1682446207156} +{"stream": "activities_new_lead", "data": {"marketoGUID": "2130", "leadId": 888, "activityDate": "2023-01-17T12:29:39Z", "activityTypeId": 12, "campaignId": null, "primaryAttributeValueId": "888", "primaryAttributeValue": "[Sample]Name Surname", "form_name": "API Test Program.123.airbyte", "created_date": "2023-01-17", "source_type": "Web form fillout"}, "emitted_at": 1682446207156} +{"stream": "activities_new_lead", "data": {"marketoGUID": "2134", "leadId": 889, "activityDate": "2023-01-17T12:30:09Z", "activityTypeId": 12, "campaignId": null, "primaryAttributeValueId": "889", "primaryAttributeValue": "[Sample] sample", "form_name": "API Test Program.123.airbyte", "created_date": "2023-01-17", "source_type": "Web form fillout"}, "emitted_at": 1682446207157} +{"stream": "activities_new_lead", "data": {"marketoGUID": "2142", "leadId": 890, "activityDate": "2023-01-19T15:07:51Z", "activityTypeId": 12, "campaignId": null, "primaryAttributeValueId": "890", "primaryAttributeValue": "Test Person 10 Test 10", "created_date": "2023-01-19", "source_type": "New lead"}, "emitted_at": 1682446207157} +{"stream": "activities_new_lead", "data": {"marketoGUID": "2147", "leadId": 891, "activityDate": "2023-01-19T15:25:17Z", "activityTypeId": 12, "campaignId": null, "primaryAttributeValueId": "891", "primaryAttributeValue": "Name11 Surname11", "created_date": "2023-01-19", "source_type": "New lead"}, "emitted_at": 1682446207158} +{"stream": "activities_new_lead", "data": {"marketoGUID": "2192", "leadId": 895, "activityDate": "2023-01-20T11:56:00Z", "activityTypeId": 12, "campaignId": null, "primaryAttributeValueId": "895", "primaryAttributeValue": "Test 2", "created_date": "2023-01-20", "source_type": "New lead"}, "emitted_at": 1682446207158} +{"stream": "activities_new_lead", "data": {"marketoGUID": "2263", "leadId": 897, "activityDate": "2023-01-23T08:09:56Z", "activityTypeId": 12, "campaignId": null, "primaryAttributeValueId": "897", "primaryAttributeValue": "Test test", "created_date": "2023-01-23", "source_type": "New lead"}, "emitted_at": 1682446207158} +{"stream": "activities_new_lead", "data": {"marketoGUID": "2265", "leadId": 898, "activityDate": "2023-01-23T08:20:01Z", "activityTypeId": 12, "campaignId": null, "primaryAttributeValueId": "898", "primaryAttributeValue": "Person 1 Person 1", "created_date": "2023-01-23", "source_type": "New lead"}, "emitted_at": 1682446207159} +{"stream": "activities_new_lead", "data": {"marketoGUID": "2291", "leadId": 901, "activityDate": "2023-01-25T00:21:36Z", "activityTypeId": 12, "campaignId": null, "primaryAttributeValueId": "901", "primaryAttributeValue": null, "form_name": "API Test Program.123.airbyte", "created_date": "2023-01-24", "source_type": "Web form fillout"}, "emitted_at": 1682446207159} +{"stream": "activities_change_data_value", "data": {"marketoGUID": "2243", "leadId": 800, "activityDate": "2023-01-20T16:28:59Z", "activityTypeId": 13, "campaignId": null, "primaryAttributeValueId": "4", "primaryAttributeValue": "Company Name", "old_value": null, "new_value": "Test Company Org 5", "reason": "Manual person edit", "source": "Lead update"}, "emitted_at": 1682446333994} +{"stream": "activities_change_data_value", "data": {"marketoGUID": "2244", "leadId": 800, "activityDate": "2023-01-20T16:28:59Z", "activityTypeId": 13, "campaignId": null, "primaryAttributeValueId": "12", "primaryAttributeValue": "Main Phone", "old_value": null, "new_value": "+13888335555", "reason": "Manual person edit", "source": "Lead update"}, "emitted_at": 1682446333994} +{"stream": "activities_change_data_value", "data": {"marketoGUID": "2259", "leadId": 99, "activityDate": "2023-01-23T08:06:52Z", "activityTypeId": 13, "campaignId": 1149, "primaryAttributeValueId": "602", "primaryAttributeValue": "Acquisition Date", "old_value": null, "new_value": "2023-01-26 14:00:00", "reason": "Changed by Smart Campaign Run Action Change Data Value 2023-01-23 12:06:45 am action Change Data Value", "source": "Marketo Flow Action"}, "emitted_at": 1682446333995} +{"stream": "activities_change_data_value", "data": {"marketoGUID": "2274", "leadId": 880, "activityDate": "2023-01-23T08:25:38Z", "activityTypeId": 13, "campaignId": null, "primaryAttributeValueId": "77", "primaryAttributeValue": "Email Invalid", "old_value": "False", "new_value": "True", "reason": "System flow action sysActionEmailBounced for lead 880"}, "emitted_at": 1682446333995} +{"stream": "activities_change_data_value", "data": {"marketoGUID": "2275", "leadId": 880, "activityDate": "2023-01-23T08:25:38Z", "activityTypeId": 13, "campaignId": null, "primaryAttributeValueId": "78", "primaryAttributeValue": "Email Invalid Cause", "old_value": null, "new_value": "550 5.4.1 Recipient address rejected: Access denied. AS(201806281) [SN1NAM02FT0043.eop-nam02.prod.protection.outlook.com]", "reason": "System flow action sysActionEmailBounced for lead 880"}, "emitted_at": 1682446333996} +{"stream": "activities_change_data_value", "data": {"marketoGUID": "2285", "leadId": 824, "activityDate": "2023-01-23T14:25:01Z", "activityTypeId": 13, "campaignId": null, "primaryAttributeValueId": "56", "primaryAttributeValue": "Email Address", "old_value": "y.kurochkin@zazmic.com", "new_value": "y.k@example.com", "reason": "Manual person edit", "source": "Lead update"}, "emitted_at": 1682446333996} +{"stream": "activities_change_data_value", "data": {"marketoGUID": "2286", "leadId": 867, "activityDate": "2023-01-23T14:26:11Z", "activityTypeId": 13, "campaignId": null, "primaryAttributeValueId": "56", "primaryAttributeValue": "Email Address", "old_value": "yurii.cherniaiev@globallogic.com", "new_value": "y.c@example.com", "reason": "Manual person edit", "source": "Lead update"}, "emitted_at": 1682446333996} +{"stream": "activities_change_data_value", "data": {"marketoGUID": "2287", "leadId": 868, "activityDate": "2023-01-23T14:26:47Z", "activityTypeId": 13, "campaignId": null, "primaryAttributeValueId": "56", "primaryAttributeValue": "Email Address", "old_value": "yurii.cherniaiev@globallogic.com", "new_value": "y.c@example.com", "reason": "Manual person edit", "source": "Lead update"}, "emitted_at": 1682446333997} +{"stream": "activities_change_data_value", "data": {"marketoGUID": "2288", "leadId": 869, "activityDate": "2023-01-23T14:26:57Z", "activityTypeId": 13, "campaignId": null, "primaryAttributeValueId": "56", "primaryAttributeValue": "Email Address", "old_value": "yurii.chenriaiev@globallogic.com", "new_value": "y.c@example.com", "reason": "Manual person edit", "source": "Lead update"}, "emitted_at": 1682446333997} +{"stream": "activities_change_data_value", "data": {"marketoGUID": "2289", "leadId": 888, "activityDate": "2023-01-23T14:27:16Z", "activityTypeId": 13, "campaignId": null, "primaryAttributeValueId": "56", "primaryAttributeValue": "Email Address", "old_value": "iryna.grankova@airbyte.io", "new_value": "i.g@example.io", "reason": "Manual person edit", "source": "Lead update"}, "emitted_at": 1682446333998} +{"stream": "activities_change_data_value", "data": {"marketoGUID": "2290", "leadId": 889, "activityDate": "2023-01-23T14:27:19Z", "activityTypeId": 13, "campaignId": null, "primaryAttributeValueId": "56", "primaryAttributeValue": "Email Address", "old_value": "iryna.grankova@globallogic.com", "new_value": "i.g@example.io", "reason": "Manual person edit", "source": "Lead update"}, "emitted_at": 1682446333998} +{"stream": "activities_change_score", "data": {"marketoGUID": "2118", "leadId": 140, "activityDate": "2023-01-17T11:09:23Z", "activityTypeId": 22, "campaignId": 1064, "primaryAttributeValueId": "146", "primaryAttributeValue": "Lead Score", "change_value": "+10", "old_value": null, "new_value": 10, "reason": "Changed by Smart Campaign Run Action Change Score 2023-01-17 03:09:02 am action Change Score"}, "emitted_at": 1682446460678} +{"stream": "activities_change_score", "data": {"marketoGUID": "2209", "leadId": 143, "activityDate": "2023-01-20T12:55:59Z", "activityTypeId": 22, "campaignId": null, "primaryAttributeValueId": "146", "primaryAttributeValue": "Lead Score", "change_value": "+20", "old_value": null, "new_value": 20, "reason": "Manual person edit"}, "emitted_at": 1682446460678} +{"stream": "activities_change_score", "data": {"marketoGUID": "2211", "leadId": 362, "activityDate": "2023-01-20T12:56:46Z", "activityTypeId": 22, "campaignId": null, "primaryAttributeValueId": "146", "primaryAttributeValue": "Lead Score", "change_value": "+100", "old_value": null, "new_value": 100, "reason": "Manual person edit"}, "emitted_at": 1682446460679} +{"stream": "activities_addto_list", "data": {"marketoGUID": "2110", "leadId": 100, "activityDate": "2023-01-17T11:07:23Z", "activityTypeId": 24, "campaignId": 1059, "primaryAttributeValueId": "1002", "primaryAttributeValue": "Test list number 1", "source": "Marketo Flow Action"}, "emitted_at": 1682446587196} +{"stream": "activities_addto_list", "data": {"marketoGUID": "2111", "leadId": 100, "activityDate": "2023-01-17T11:07:24Z", "activityTypeId": 24, "campaignId": 1058, "primaryAttributeValueId": "1001", "primaryAttributeValue": "Test list", "source": "Marketo Flow Action"}, "emitted_at": 1682446587196} +{"stream": "activities_addto_list", "data": {"marketoGUID": "2116", "leadId": 140, "activityDate": "2023-01-17T11:08:53Z", "activityTypeId": 24, "campaignId": 1063, "primaryAttributeValueId": "1004", "primaryAttributeValue": "Test list number 3", "source": "Marketo Flow Action"}, "emitted_at": 1682446587196} +{"stream": "activities_addto_list", "data": {"marketoGUID": "2117", "leadId": 140, "activityDate": "2023-01-17T11:08:54Z", "activityTypeId": 24, "campaignId": 1062, "primaryAttributeValueId": "1003", "primaryAttributeValue": "Test list number 2", "source": "Marketo Flow Action"}, "emitted_at": 1682446587196} +{"stream": "activities_addto_list", "data": {"marketoGUID": "2120", "leadId": 807, "activityDate": "2023-01-17T11:25:53Z", "activityTypeId": 24, "campaignId": 1067, "primaryAttributeValueId": "1006", "primaryAttributeValue": "Test list number 5", "source": "Marketo Flow Action"}, "emitted_at": 1682446587197} +{"stream": "activities_addto_list", "data": {"marketoGUID": "2123", "leadId": 816, "activityDate": "2023-01-17T11:26:53Z", "activityTypeId": 24, "campaignId": 1069, "primaryAttributeValueId": "1007", "primaryAttributeValue": "Test list number 6", "source": "Marketo Flow Action"}, "emitted_at": 1682446587197} +{"stream": "activities_addto_list", "data": {"marketoGUID": "2136", "leadId": 100, "activityDate": "2023-01-17T14:14:53Z", "activityTypeId": 24, "campaignId": 1072, "primaryAttributeValueId": "1001", "primaryAttributeValue": "Test list", "source": "Marketo Flow Action"}, "emitted_at": 1682446587197} +{"stream": "activities_addto_list", "data": {"marketoGUID": "2154", "leadId": 105, "activityDate": "2023-01-20T09:32:23Z", "activityTypeId": 24, "campaignId": 1082, "primaryAttributeValueId": "1016", "primaryAttributeValue": "API Test Program.List 1", "source": "Marketo Flow Action"}, "emitted_at": 1682446587198} +{"stream": "activities_addto_list", "data": {"marketoGUID": "2162", "leadId": 110, "activityDate": "2023-01-20T09:45:23Z", "activityTypeId": 24, "campaignId": 1090, "primaryAttributeValueId": "1016", "primaryAttributeValue": "API Test Program.List 1", "source": "Marketo Flow Action"}, "emitted_at": 1682446587198} +{"stream": "activities_addto_list", "data": {"marketoGUID": "2163", "leadId": 112, "activityDate": "2023-01-20T09:45:53Z", "activityTypeId": 24, "campaignId": 1091, "primaryAttributeValueId": "1016", "primaryAttributeValue": "API Test Program.List 1", "source": "Marketo Flow Action"}, "emitted_at": 1682446587198} +{"stream": "activities_addto_list", "data": {"marketoGUID": "2164", "leadId": 140, "activityDate": "2023-01-20T09:45:53Z", "activityTypeId": 24, "campaignId": 1092, "primaryAttributeValueId": "1016", "primaryAttributeValue": "API Test Program.List 1", "source": "Marketo Flow Action"}, "emitted_at": 1682446587198} +{"stream": "activities_addto_list", "data": {"marketoGUID": "2187", "leadId": 105, "activityDate": "2023-01-20T11:50:53Z", "activityTypeId": 24, "campaignId": 1110, "primaryAttributeValueId": "1011", "primaryAttributeValue": "Test list number 10", "source": "Marketo Flow Action"}, "emitted_at": 1682446587199} +{"stream": "activities_addto_list", "data": {"marketoGUID": "2194", "leadId": 110, "activityDate": "2023-01-20T12:34:23Z", "activityTypeId": 24, "campaignId": 1115, "primaryAttributeValueId": "1016", "primaryAttributeValue": "API Test Program.List 1", "source": "Marketo Flow Action"}, "emitted_at": 1682446587199} +{"stream": "activities_addto_list", "data": {"marketoGUID": "2195", "leadId": 110, "activityDate": "2023-01-20T12:36:23Z", "activityTypeId": 24, "campaignId": 1116, "primaryAttributeValueId": "1002", "primaryAttributeValue": "Test list number 1", "source": "Marketo Flow Action"}, "emitted_at": 1682446587199} +{"stream": "activities_addto_list", "data": {"marketoGUID": "2261", "leadId": 99, "activityDate": "2023-01-23T08:07:52Z", "activityTypeId": 24, "campaignId": 1151, "primaryAttributeValueId": "1012", "primaryAttributeValue": "EM - Auteur - v1.airbyte", "source": "Marketo Flow Action"}, "emitted_at": 1682446587199} +{"stream": "activities_addto_list", "data": {"marketoGUID": "2266", "leadId": 898, "activityDate": "2023-01-23T08:20:02Z", "activityTypeId": 24, "campaignId": null, "primaryAttributeValueId": "1010", "primaryAttributeValue": "Test list number 9"}, "emitted_at": 1682446587200} +{"stream": "activities_removefrom_list", "data": {"marketoGUID": "2165", "leadId": 379, "activityDate": "2023-01-20T09:46:23Z", "activityTypeId": 25, "campaignId": 1094, "primaryAttributeValueId": "1017", "primaryAttributeValue": "API Test Program.List 2", "source": "Marketo Flow Action"}, "emitted_at": 1682446714343} +{"stream": "activities_removefrom_list", "data": {"marketoGUID": "2166", "leadId": 104, "activityDate": "2023-01-20T09:46:53Z", "activityTypeId": 25, "campaignId": 1095, "primaryAttributeValueId": "1016", "primaryAttributeValue": "API Test Program.List 1", "source": "Marketo Flow Action"}, "emitted_at": 1682446714343} +{"stream": "activities_removefrom_list", "data": {"marketoGUID": "2167", "leadId": 801, "activityDate": "2023-01-20T09:47:23Z", "activityTypeId": 25, "campaignId": 1096, "primaryAttributeValueId": "1017", "primaryAttributeValue": "API Test Program.List 2", "source": "Marketo Flow Action"}, "emitted_at": 1682446714343} +{"stream": "activities_removefrom_list", "data": {"marketoGUID": "2168", "leadId": 802, "activityDate": "2023-01-20T09:48:23Z", "activityTypeId": 25, "campaignId": 1097, "primaryAttributeValueId": "1017", "primaryAttributeValue": "API Test Program.List 2", "source": "Marketo Flow Action"}, "emitted_at": 1682446714344} +{"stream": "activities_email_bounced_soft", "data": {"marketoGUID": "2137", "leadId": 807, "activityDate": "2023-01-18T11:25:57Z", "activityTypeId": 27, "campaignId": 1066, "primaryAttributeValueId": "1002", "primaryAttributeValue": "EM - Auteur - v1.EM - Auteur - v1", "campaign_run_id": 28, "category": "4", "email": "kjashaedd-13@klooblept.com", "details": "554 5.4.7 [internal] (last transfail: 454 4.4.4 [internal] no MX or A for domain)", "subcategory": "4003", "step_id": 110, "choice_number": 118}, "emitted_at": 1682446841225} +{"stream": "activities_email_bounced_soft", "data": {"marketoGUID": "2138", "leadId": 816, "activityDate": "2023-01-18T11:26:56Z", "activityTypeId": 27, "campaignId": 1070, "primaryAttributeValueId": "1002", "primaryAttributeValue": "EM - Auteur - v1.EM - Auteur - v1", "campaign_run_id": 30, "category": "4", "email": "kjashaedd-37@klooblept.com", "details": "554 5.4.7 [internal] (last transfail: 454 4.4.4 [internal] no MX or A for domain)", "subcategory": "4003", "step_id": 126, "choice_number": 134}, "emitted_at": 1682446841225} +{"stream": "activities_email_bounced_soft", "data": {"marketoGUID": "2240", "leadId": 99, "activityDate": "2023-01-20T16:21:27Z", "activityTypeId": 27, "campaignId": 1138, "primaryAttributeValueId": "1013", "primaryAttributeValue": "BP-LE-YYYY-MM-DD Live Event v3.EMAIL-Invitation", "campaign_run_id": 92, "category": "4", "email": "name2@example.com", "details": "551 5.7.0 [internal] recipient blackholed", "subcategory": "4006", "step_id": 417, "choice_number": 544}, "emitted_at": 1682446841226} +{"stream": "activities_email_bounced_soft", "data": {"marketoGUID": "2256", "leadId": 99, "activityDate": "2023-01-22T11:57:55Z", "activityTypeId": 27, "campaignId": 1100, "primaryAttributeValueId": "1009", "primaryAttributeValue": "Test Nurture.integration-tgest@airbyte.io", "campaign_run_id": 95, "category": "4", "email": "name2@example.com", "details": "551 5.7.0 [internal] recipient blackholed", "subcategory": "4006", "step_id": 245, "choice_number": 260}, "emitted_at": 1682446841226} +{"stream": "activities_email_bounced_soft", "data": {"marketoGUID": "2257", "leadId": 379, "activityDate": "2023-01-22T11:57:56Z", "activityTypeId": 27, "campaignId": 1100, "primaryAttributeValueId": "1009", "primaryAttributeValue": "Test Nurture.integration-tgest@airbyte.io", "campaign_run_id": 95, "category": "3", "email": "testemail@gmail.com", "details": "552-5.2.2 The email account that you tried to reach is over quota and inactive.\r\n552-5.2.2 Please direct the recipient to\r\n552 5.2.2 https://support.google.com/mail/?p=OverQuotaPerm c1-20020a62e801000000b0058df8aad481si11279798pfi.352 - gsmtp", "subcategory": "3001", "step_id": 245, "choice_number": 260}, "emitted_at": 1682446841226} +{"stream": "activities_email_bounced_soft", "data": {"marketoGUID": "2284", "leadId": 800, "activityDate": "2023-01-23T11:58:00Z", "activityTypeId": 27, "campaignId": 1100, "primaryAttributeValueId": "1009", "primaryAttributeValue": "Test Nurture.integration-tgest@airbyte.io", "campaign_run_id": 95, "category": "4", "email": "kjashaedd-1@klooblept.com", "details": "554 5.4.7 [internal] (last transfail: 454 4.4.4 [internal] no MX or A for domain)", "subcategory": "4003", "step_id": 245, "choice_number": 260}, "emitted_at": 1682446841227} +{"stream": "activities_merge_leads", "data": {"marketoGUID": "2126", "leadId": 864, "activityDate": "2023-01-17T11:29:43Z", "activityTypeId": 32, "campaignId": null, "primaryAttributeValueId": "864", "primaryAttributeValue": "yuriiyurii", "merge_ids": [887]}, "emitted_at": 1682446967868} +{"stream": "activities_merge_leads", "data": {"marketoGUID": "2184", "leadId": 809, "activityDate": "2023-01-20T11:44:22Z", "activityTypeId": 32, "campaignId": null, "primaryAttributeValueId": "809", "primaryAttributeValue": "Kataldar-30", "merge_ids": [811], "mergedin_sales": false, "merge_source": "leaddb", "master_updated": false}, "emitted_at": 1682446967868} +{"stream": "activities_send_alert", "data": {"marketoGUID": "2179", "leadId": 109, "activityDate": "2023-01-20T11:39:27Z", "activityTypeId": 38, "campaignId": 1107, "primaryAttributeValueId": "1009", "primaryAttributeValue": "Test Nurture.integration-tgest@airbyte.io", "send_to_owner": "Lead Owner", "send_to_list": "integration-tgest@airbyte.io"}, "emitted_at": 1682447094591} +{"stream": "activities_request_campaign", "data": {"marketoGUID": "2193", "leadId": 104, "activityDate": "2023-01-20T12:01:23Z", "activityTypeId": 47, "campaignId": 1113, "primaryAttributeValueId": "1056", "primaryAttributeValue": "Test Campaign 5", "source": "Marketo Flow Action"}, "emitted_at": 1682447221209} +{"stream": "activities_change_lead_partition", "data": {"marketoGUID": "2150", "leadId": 891, "activityDate": "2023-01-19T15:45:54Z", "activityTypeId": 100, "campaignId": 1077, "primaryAttributeValueId": "3", "primaryAttributeValue": "Test Partition 2", "old_partition_id": 2, "reason": "Lead Action"}, "emitted_at": 1682447347992} +{"stream": "activities_change_lead_partition", "data": {"marketoGUID": "2151", "leadId": 800, "activityDate": "2023-01-19T15:46:23Z", "activityTypeId": 100, "campaignId": 1079, "primaryAttributeValueId": "2", "primaryAttributeValue": "Test Partition", "old_partition_id": 1, "reason": "Lead Action"}, "emitted_at": 1682447347992} +{"stream": "activities_change_lead_partition", "data": {"marketoGUID": "2152", "leadId": 112, "activityDate": "2023-01-19T15:46:23Z", "activityTypeId": 100, "campaignId": 1078, "primaryAttributeValueId": "2", "primaryAttributeValue": "Test Partition", "old_partition_id": 1, "reason": "Lead Action"}, "emitted_at": 1682447347993} +{"stream": "activities_change_lead_partition", "data": {"marketoGUID": "2153", "leadId": 807, "activityDate": "2023-01-19T15:46:53Z", "activityTypeId": 100, "campaignId": 1080, "primaryAttributeValueId": "2", "primaryAttributeValue": "Test Partition", "old_partition_id": 1, "reason": "Lead Action"}, "emitted_at": 1682447347993} +{"stream": "activities_change_statusin_progression", "data": {"marketoGUID": "2114", "leadId": 100, "activityDate": "2023-01-17T11:07:53Z", "activityTypeId": 104, "campaignId": 1061, "primaryAttributeValueId": "1013", "primaryAttributeValue": "API Test Program 10", "old_status_id": 9, "new_status_id": 10, "acquired_by": false, "old_status": "Not in Program", "new_status": "Filled-out Form", "program_member_id": 120, "success": false}, "emitted_at": 1682447474741} +{"stream": "activities_change_statusin_progression", "data": {"marketoGUID": "2122", "leadId": 807, "activityDate": "2023-01-17T11:26:23Z", "activityTypeId": 104, "campaignId": 1068, "primaryAttributeValueId": "1008", "primaryAttributeValue": "API Test Program 5", "old_status_id": 9, "new_status_id": 11, "acquired_by": false, "old_status": "Not in Program", "new_status": "Influenced", "program_member_id": 121, "success": true}, "emitted_at": 1682447474741} +{"stream": "activities_change_statusin_progression", "data": {"marketoGUID": "2141", "leadId": 23, "activityDate": "2023-01-19T14:48:24Z", "activityTypeId": 104, "campaignId": 1075, "primaryAttributeValueId": "1004", "primaryAttributeValue": "API Test Program 1", "old_status_id": 9, "new_status_id": 10, "acquired_by": false, "old_status": "Not in Program", "new_status": "Filled-out Form", "program_member_id": 122, "success": false}, "emitted_at": 1682447474742} +{"stream": "activities_change_statusin_progression", "data": {"marketoGUID": "2156", "leadId": 105, "activityDate": "2023-01-20T09:41:23Z", "activityTypeId": 104, "campaignId": 1083, "primaryAttributeValueId": "1004", "primaryAttributeValue": "API Test Program 1", "old_status_id": 9, "new_status_id": 10, "acquired_by": false, "old_status": "Not in Program", "new_status": "Filled-out Form", "program_member_id": 123, "success": false}, "emitted_at": 1682447474742} +{"stream": "activities_change_statusin_progression", "data": {"marketoGUID": "2157", "leadId": 23, "activityDate": "2023-01-20T09:42:23Z", "activityTypeId": 104, "campaignId": 1084, "primaryAttributeValueId": "1006", "primaryAttributeValue": "API Test Program 3", "old_status_id": 9, "new_status_id": 10, "acquired_by": false, "old_status": "Not in Program", "new_status": "Filled-out Form", "program_member_id": 124, "success": false}, "emitted_at": 1682447474743} +{"stream": "activities_change_statusin_progression", "data": {"marketoGUID": "2158", "leadId": 100, "activityDate": "2023-01-20T09:42:53Z", "activityTypeId": 104, "campaignId": 1086, "primaryAttributeValueId": "1008", "primaryAttributeValue": "API Test Program 5", "old_status_id": 9, "new_status_id": 11, "acquired_by": false, "old_status": "Not in Program", "new_status": "Influenced", "program_member_id": 125, "success": true}, "emitted_at": 1682447474743} +{"stream": "activities_change_statusin_progression", "data": {"marketoGUID": "2159", "leadId": 99, "activityDate": "2023-01-20T09:42:53Z", "activityTypeId": 104, "campaignId": 1085, "primaryAttributeValueId": "1013", "primaryAttributeValue": "API Test Program 10", "old_status_id": 9, "new_status_id": 11, "acquired_by": false, "old_status": "Not in Program", "new_status": "Influenced", "program_member_id": 126, "success": true}, "emitted_at": 1682447474744} +{"stream": "activities_change_statusin_progression", "data": {"marketoGUID": "2160", "leadId": 104, "activityDate": "2023-01-20T09:43:23Z", "activityTypeId": 104, "campaignId": 1088, "primaryAttributeValueId": "1010", "primaryAttributeValue": "API Test Program 7", "old_status_id": 9, "new_status_id": 10, "acquired_by": false, "old_status": "Not in Program", "new_status": "Filled-out Form", "program_member_id": 127, "success": false}, "emitted_at": 1682447474744} +{"stream": "activities_change_statusin_progression", "data": {"marketoGUID": "2161", "leadId": 105, "activityDate": "2023-01-20T09:43:53Z", "activityTypeId": 104, "campaignId": 1089, "primaryAttributeValueId": "1011", "primaryAttributeValue": "API Test Program 8", "old_status_id": 9, "new_status_id": 10, "acquired_by": false, "old_status": "Not in Program", "new_status": "Filled-out Form", "program_member_id": 128, "success": false}, "emitted_at": 1682447474745} +{"stream": "activities_change_statusin_progression", "data": {"marketoGUID": "2171", "leadId": 99, "activityDate": "2023-01-20T09:57:53Z", "activityTypeId": 104, "campaignId": 1102, "primaryAttributeValueId": "1025", "primaryAttributeValue": "Test Nurture", "old_status_id": 30, "new_status_id": 31, "acquired_by": false, "old_status": "Not in Program", "new_status": "Member", "program_member_id": 129, "success": false}, "emitted_at": 1682447474745} +{"stream": "activities_change_statusin_progression", "data": {"marketoGUID": "2174", "leadId": 800, "activityDate": "2023-01-20T09:59:53Z", "activityTypeId": 104, "campaignId": 1103, "primaryAttributeValueId": "1025", "primaryAttributeValue": "Test Nurture", "old_status_id": 30, "new_status_id": 31, "acquired_by": false, "old_status": "Not in Program", "new_status": "Member", "program_member_id": 130, "success": false}, "emitted_at": 1682447474745} +{"stream": "activities_change_statusin_progression", "data": {"marketoGUID": "2191", "leadId": 105, "activityDate": "2023-01-20T11:53:23Z", "activityTypeId": 104, "campaignId": 1112, "primaryAttributeValueId": "1025", "primaryAttributeValue": "Test Nurture", "old_status_id": 30, "new_status_id": 31, "acquired_by": false, "old_status": "Not in Program", "new_status": "Member", "program_member_id": 131, "success": false}, "emitted_at": 1682447474746} +{"stream": "activities_change_statusin_progression", "data": {"marketoGUID": "2204", "leadId": 876, "activityDate": "2023-01-20T12:48:53Z", "activityTypeId": 104, "campaignId": 1125, "primaryAttributeValueId": "1025", "primaryAttributeValue": "Test Nurture", "old_status_id": 30, "new_status_id": 31, "acquired_by": false, "old_status": "Not in Program", "new_status": "Member", "program_member_id": 132, "success": false}, "emitted_at": 1682447474746} +{"stream": "activities_change_statusin_progression", "data": {"marketoGUID": "2220", "leadId": 379, "activityDate": "2023-01-20T13:00:24Z", "activityTypeId": 104, "campaignId": 1127, "primaryAttributeValueId": "1025", "primaryAttributeValue": "Test Nurture", "old_status_id": 30, "new_status_id": 31, "acquired_by": false, "old_status": "Not in Program", "new_status": "Member", "program_member_id": 133, "success": false}, "emitted_at": 1682447474747} +{"stream": "activities_change_statusin_progression", "data": {"marketoGUID": "2221", "leadId": 110, "activityDate": "2023-01-20T13:06:23Z", "activityTypeId": 104, "campaignId": 1128, "primaryAttributeValueId": "1003", "primaryAttributeValue": "API Test Program", "old_status_id": 49, "new_status_id": 51, "acquired_by": false, "old_status": "Not in Program", "new_status": "Opened", "program_member_id": 134, "success": false}, "emitted_at": 1682447474747} +{"stream": "activities_change_statusin_progression", "data": {"marketoGUID": "2222", "leadId": 110, "activityDate": "2023-01-20T13:08:23Z", "activityTypeId": 104, "campaignId": 1129, "primaryAttributeValueId": "1003", "primaryAttributeValue": "API Test Program", "old_status_id": 51, "new_status_id": 52, "acquired_by": false, "old_status": "Opened", "new_status": "Clicked", "program_member_id": 134, "success": false}, "emitted_at": 1682447474747} +{"stream": "activities_change_statusin_progression", "data": {"marketoGUID": "2241", "leadId": 99, "activityDate": "2023-01-20T16:27:53Z", "activityTypeId": 104, "campaignId": 1139, "primaryAttributeValueId": "1013", "primaryAttributeValue": "API Test Program 10", "old_status_id": 11, "new_status_id": 10, "acquired_by": false, "old_status": "Influenced", "new_status": "Filled-out Form", "program_member_id": 126, "success": false}, "emitted_at": 1682447474748} +{"stream": "activities_change_statusin_progression", "data": {"marketoGUID": "2264", "leadId": 100, "activityDate": "2023-01-23T08:14:22Z", "activityTypeId": 104, "campaignId": 1155, "primaryAttributeValueId": "1004", "primaryAttributeValue": "API Test Program 1", "old_status_id": 9, "new_status_id": 11, "acquired_by": false, "old_status": "Not in Program", "new_status": "Influenced", "program_member_id": 135, "success": true}, "emitted_at": 1682447474748} +{"stream": "activities_change_statusin_progression", "data": {"marketoGUID": "2269", "leadId": 880, "activityDate": "2023-01-23T08:24:51Z", "activityTypeId": 104, "campaignId": 1158, "primaryAttributeValueId": "1025", "primaryAttributeValue": "Test Nurture", "old_status_id": 30, "new_status_id": 31, "acquired_by": false, "old_status": "Not in Program", "new_status": "Member", "program_member_id": 136, "success": false}, "emitted_at": 1682447474749} +{"stream": "activities_addto_nurture", "data": {"marketoGUID": "2169", "leadId": 99, "activityDate": "2023-01-20T09:57:53Z", "activityTypeId": 113, "campaignId": 1102, "primaryAttributeValueId": "1025", "primaryAttributeValue": "Test Nurture", "track_id": 1, "track_name": "Stream 1"}, "emitted_at": 1682447601643} +{"stream": "activities_addto_nurture", "data": {"marketoGUID": "2172", "leadId": 800, "activityDate": "2023-01-20T09:59:53Z", "activityTypeId": 113, "campaignId": 1103, "primaryAttributeValueId": "1025", "primaryAttributeValue": "Test Nurture", "track_id": 1, "track_name": "Stream 1"}, "emitted_at": 1682447601643} +{"stream": "activities_addto_nurture", "data": {"marketoGUID": "2189", "leadId": 105, "activityDate": "2023-01-20T11:53:23Z", "activityTypeId": 113, "campaignId": 1112, "primaryAttributeValueId": "1025", "primaryAttributeValue": "Test Nurture", "track_id": 1, "track_name": "Stream 1"}, "emitted_at": 1682447601643} +{"stream": "activities_addto_nurture", "data": {"marketoGUID": "2202", "leadId": 876, "activityDate": "2023-01-20T12:48:53Z", "activityTypeId": 113, "campaignId": 1125, "primaryAttributeValueId": "1025", "primaryAttributeValue": "Test Nurture", "track_id": 1, "track_name": "Stream 1"}, "emitted_at": 1682447601643} +{"stream": "activities_addto_nurture", "data": {"marketoGUID": "2218", "leadId": 379, "activityDate": "2023-01-20T13:00:24Z", "activityTypeId": 113, "campaignId": 1127, "primaryAttributeValueId": "1025", "primaryAttributeValue": "Test Nurture", "track_id": 1, "track_name": "Stream 1"}, "emitted_at": 1682447601644} +{"stream": "activities_addto_nurture", "data": {"marketoGUID": "2267", "leadId": 880, "activityDate": "2023-01-23T08:24:51Z", "activityTypeId": 113, "campaignId": 1158, "primaryAttributeValueId": "1025", "primaryAttributeValue": "Test Nurture", "track_id": 1, "track_name": "Stream 1"}, "emitted_at": 1682447601644} +{"stream": "activities_change_nurture_track", "data": {"marketoGUID": "2205", "leadId": 876, "activityDate": "2023-01-20T12:48:53Z", "activityTypeId": 114, "campaignId": 1125, "primaryAttributeValueId": "1025", "primaryAttributeValue": "Test Nurture", "track_name": "Stream 1", "new_track_id": 1}, "emitted_at": 1682447728227} +{"stream": "activities_change_nurture_track", "data": {"marketoGUID": "2260", "leadId": 99, "activityDate": "2023-01-23T08:07:22Z", "activityTypeId": 114, "campaignId": 1150, "primaryAttributeValueId": "1025", "primaryAttributeValue": "Test Nurture", "previous_track_id": 1, "previous_track_name": "Stream 1", "track_name": "Stream 2", "new_track_id": 2}, "emitted_at": 1682447728227} +{"stream": "activities_change_nurture_track", "data": {"marketoGUID": "2270", "leadId": 880, "activityDate": "2023-01-23T08:24:52Z", "activityTypeId": 114, "campaignId": 1158, "primaryAttributeValueId": "1025", "primaryAttributeValue": "Test Nurture", "track_name": "Stream 1", "new_track_id": 1}, "emitted_at": 1682447728227} +{"stream": "activities_change_nurture_track", "data": {"marketoGUID": "2276", "leadId": 880, "activityDate": "2023-01-23T08:26:21Z", "activityTypeId": 114, "campaignId": 1158, "primaryAttributeValueId": "1025", "primaryAttributeValue": "Test Nurture", "previous_track_id": 1, "previous_track_name": "Stream 1", "track_name": "Stream 1", "new_track_id": 1}, "emitted_at": 1682447728228} +{"stream": "activities_change_nurture_cadence", "data": {"marketoGUID": "2170", "leadId": 99, "activityDate": "2023-01-20T09:57:53Z", "activityTypeId": 115, "campaignId": 1102, "primaryAttributeValueId": "1025", "primaryAttributeValue": "Test Nurture", "new_nurture_cadence": "Norm"}, "emitted_at": 1682447854893} +{"stream": "activities_change_nurture_cadence", "data": {"marketoGUID": "2173", "leadId": 800, "activityDate": "2023-01-20T09:59:53Z", "activityTypeId": 115, "campaignId": 1103, "primaryAttributeValueId": "1025", "primaryAttributeValue": "Test Nurture", "new_nurture_cadence": "Norm"}, "emitted_at": 1682447854894} +{"stream": "activities_change_nurture_cadence", "data": {"marketoGUID": "2190", "leadId": 105, "activityDate": "2023-01-20T11:53:23Z", "activityTypeId": 115, "campaignId": 1112, "primaryAttributeValueId": "1025", "primaryAttributeValue": "Test Nurture", "new_nurture_cadence": "Norm"}, "emitted_at": 1682447854894} +{"stream": "activities_change_nurture_cadence", "data": {"marketoGUID": "2203", "leadId": 876, "activityDate": "2023-01-20T12:48:53Z", "activityTypeId": 115, "campaignId": 1125, "primaryAttributeValueId": "1025", "primaryAttributeValue": "Test Nurture", "new_nurture_cadence": "Norm"}, "emitted_at": 1682447854894} +{"stream": "activities_change_nurture_cadence", "data": {"marketoGUID": "2219", "leadId": 379, "activityDate": "2023-01-20T13:00:24Z", "activityTypeId": 115, "campaignId": 1127, "primaryAttributeValueId": "1025", "primaryAttributeValue": "Test Nurture", "new_nurture_cadence": "Norm"}, "emitted_at": 1682447854895} +{"stream": "activities_change_nurture_cadence", "data": {"marketoGUID": "2262", "leadId": 99, "activityDate": "2023-01-23T08:08:21Z", "activityTypeId": 115, "campaignId": 1152, "primaryAttributeValueId": "1025", "primaryAttributeValue": "Test Nurture", "new_nurture_cadence": "Norm", "previous_nurture_cadence": "Norm"}, "emitted_at": 1682447854895} +{"stream": "activities_change_nurture_cadence", "data": {"marketoGUID": "2268", "leadId": 880, "activityDate": "2023-01-23T08:24:51Z", "activityTypeId": 115, "campaignId": 1158, "primaryAttributeValueId": "1025", "primaryAttributeValue": "Test Nurture", "new_nurture_cadence": "Norm"}, "emitted_at": 1682447854896} +{"stream": "activities_change_program_member_data", "data": {"marketoGUID": "2188", "leadId": 105, "activityDate": "2023-01-20T11:52:53Z", "activityTypeId": 123, "campaignId": 1111, "primaryAttributeValueId": "1013", "primaryAttributeValue": "API Test Program 10", "source": "Marketo Flow Action"}, "emitted_at": 1682447981328} +{"stream": "activities_change_program_member_data", "data": {"marketoGUID": "2228", "leadId": 110, "activityDate": "2023-01-20T16:04:24Z", "activityTypeId": 123, "campaignId": 1136, "primaryAttributeValueId": "1004", "primaryAttributeValue": "API Test Program 1", "source": "Marketo Flow Action"}, "emitted_at": 1682447981329} +{"stream": "activities_change_program_member_data", "data": {"marketoGUID": "2229", "leadId": 99, "activityDate": "2023-01-20T16:05:23Z", "activityTypeId": 123, "campaignId": 1137, "primaryAttributeValueId": "1004", "primaryAttributeValue": "API Test Program 1", "source": "Marketo Flow Action"}, "emitted_at": 1682447981329} +{"stream": "activities_change_program_member_data", "data": {"marketoGUID": "2242", "leadId": 800, "activityDate": "2023-01-20T16:28:53Z", "activityTypeId": 123, "campaignId": 1140, "primaryAttributeValueId": "1004", "primaryAttributeValue": "API Test Program 1", "source": "Marketo Flow Action"}, "emitted_at": 1682447981330} +{"stream": "activities_execute_campaign", "data": {"marketoGUID": "2178", "leadId": 105, "activityDate": "2023-01-20T11:36:54Z", "activityTypeId": 155, "campaignId": 1106, "primaryAttributeValueId": "1105", "primaryAttributeValue": "Test Campaign 10", "used_parent_campaign_token_context": false, "qualified": false}, "emitted_at": 1682448107771} diff --git a/airbyte-integrations/connectors/source-marketo/metadata.yaml b/airbyte-integrations/connectors/source-marketo/metadata.yaml index a1e11dcfe2665..fb201e40ae5c0 100644 --- a/airbyte-integrations/connectors/source-marketo/metadata.yaml +++ b/airbyte-integrations/connectors/source-marketo/metadata.yaml @@ -10,7 +10,7 @@ data: connectorSubtype: api connectorType: source definitionId: 9e0556f4-69df-4522-a3fb-03264d36b348 - dockerImageTag: 1.0.2 + dockerImageTag: 1.0.4 dockerRepository: airbyte/source-marketo githubIssueLabel: source-marketo icon: marketo.svg diff --git a/airbyte-integrations/connectors/source-marketo/source_marketo/source.py b/airbyte-integrations/connectors/source-marketo/source_marketo/source.py index 7d1f2a207cbb8..1c6da28b0a431 100644 --- a/airbyte-integrations/connectors/source-marketo/source_marketo/source.py +++ b/airbyte-integrations/connectors/source-marketo/source_marketo/source.py @@ -130,7 +130,7 @@ def stream_slices(self, sync_mode, stream_state: Mapping[str, Any] = None, **kwa date_slices = [] end_date = pendulum.parse(self.end_date) if self.end_date else pendulum.now() - while start_date <= end_date: + while start_date < end_date: # the amount of days for each data-chunk begining from start_date end_date_slice = start_date.add(days=self.window_in_days) diff --git a/airbyte-integrations/connectors/source-mongodb-v2/src/main/java/io.airbyte.integrations.source.mongodb/MongoDbSource.java b/airbyte-integrations/connectors/source-mongodb-v2/src/main/java/io.airbyte.integrations.source.mongodb/MongoDbSource.java index adfb8cdde1960..f0d3ab7ba877e 100644 --- a/airbyte-integrations/connectors/source-mongodb-v2/src/main/java/io.airbyte.integrations.source.mongodb/MongoDbSource.java +++ b/airbyte-integrations/connectors/source-mongodb-v2/src/main/java/io.airbyte.integrations.source.mongodb/MongoDbSource.java @@ -15,6 +15,7 @@ import io.airbyte.commons.exceptions.ConnectionErrorException; import io.airbyte.commons.functional.CheckedConsumer; import io.airbyte.commons.json.Jsons; +import io.airbyte.commons.stream.AirbyteStreamUtils; import io.airbyte.commons.util.AutoCloseableIterator; import io.airbyte.commons.util.AutoCloseableIterators; import io.airbyte.db.jdbc.JdbcUtils; @@ -26,6 +27,7 @@ import io.airbyte.integrations.source.relationaldb.AbstractDbSource; import io.airbyte.integrations.source.relationaldb.CursorInfo; import io.airbyte.integrations.source.relationaldb.TableInfo; +import io.airbyte.protocol.models.AirbyteStreamNameNamespacePair; import io.airbyte.protocol.models.CommonField; import io.airbyte.protocol.models.JsonSchemaType; import io.airbyte.protocol.models.v0.SyncMode; @@ -205,14 +207,15 @@ private AutoCloseableIterator queryTable(final MongoDatabase database, final List columnNames, final String tableName, final Bson filter) { + final AirbyteStreamNameNamespacePair airbyteStream = AirbyteStreamUtils.convertFromNameAndNamespace(tableName, null); return AutoCloseableIterators.lazyIterator(() -> { try { final Stream stream = database.read(tableName, columnNames, Optional.ofNullable(filter)); - return AutoCloseableIterators.fromStream(stream); + return AutoCloseableIterators.fromStream(stream, airbyteStream); } catch (final Exception e) { throw new RuntimeException(e); } - }); + }, airbyteStream); } private String buildConnectionString(final JsonNode config, final String credentials) { diff --git a/airbyte-integrations/connectors/source-mssql/src/main/java/io/airbyte/integrations/source/mssql/MssqlSource.java b/airbyte-integrations/connectors/source-mssql/src/main/java/io/airbyte/integrations/source/mssql/MssqlSource.java index e45db5e071d7b..1b9bfc8dff38c 100644 --- a/airbyte-integrations/connectors/source-mssql/src/main/java/io/airbyte/integrations/source/mssql/MssqlSource.java +++ b/airbyte-integrations/connectors/source-mssql/src/main/java/io/airbyte/integrations/source/mssql/MssqlSource.java @@ -108,7 +108,7 @@ public AutoCloseableIterator queryTableFullRefresh(final JdbcDatabase String.format("SELECT %s FROM %s ORDER BY %s ASC", newIdentifiers, getFullyQualifiedTableNameWithQuoting(schemaName, tableName, getQuoteString()), quotedCursorField); LOGGER.info("Prepared SQL query for TableFullRefresh is: " + preparedSqlQuery); - return queryTable(database, preparedSqlQuery); + return queryTable(database, preparedSqlQuery, tableName, schemaName); } else { // If we are in FULL_REFRESH mode, state messages are never emitted, so we don't care about ordering of the records. final String newIdentifiers = getWrappedColumnNames(database, null, columnNames, schemaName, tableName); @@ -116,7 +116,7 @@ public AutoCloseableIterator queryTableFullRefresh(final JdbcDatabase String.format("SELECT %s FROM %s", newIdentifiers, getFullyQualifiedTableNameWithQuoting(schemaName, tableName, getQuoteString())); LOGGER.info("Prepared SQL query for TableFullRefresh is: " + preparedSqlQuery); - return queryTable(database, preparedSqlQuery); + return queryTable(database, preparedSqlQuery, tableName, schemaName); } } diff --git a/airbyte-integrations/connectors/source-mysql/src/main/java/io/airbyte/integrations/source/mysql/MySqlSource.java b/airbyte-integrations/connectors/source-mysql/src/main/java/io/airbyte/integrations/source/mysql/MySqlSource.java index 4b52ad380f395..198b4a4d4d95c 100644 --- a/airbyte-integrations/connectors/source-mysql/src/main/java/io/airbyte/integrations/source/mysql/MySqlSource.java +++ b/airbyte-integrations/connectors/source-mysql/src/main/java/io/airbyte/integrations/source/mysql/MySqlSource.java @@ -26,6 +26,7 @@ import io.airbyte.db.factory.DatabaseDriver; import io.airbyte.db.jdbc.JdbcDatabase; import io.airbyte.db.jdbc.JdbcUtils; +import io.airbyte.integrations.base.AirbyteTraceMessageUtility; import io.airbyte.integrations.base.IntegrationRunner; import io.airbyte.integrations.base.Source; import io.airbyte.integrations.base.ssh.SshWrappedSource; @@ -191,7 +192,7 @@ public JsonNode toDatabaseConfig(final JsonNode config) { jdbcUrl.append("&tinyInt1isBit=true"); // ensure the return year value is a Date; see the rationale // in the setJsonField method in MySqlSourceOperations.java - jdbcUrl.append("&yearIsDateType=true"); + jdbcUrl.append("&yearIsDateType=false"); if (config.get(JdbcUtils.JDBC_URL_PARAMS_KEY) != null && !config.get(JdbcUtils.JDBC_URL_PARAMS_KEY).asText().isEmpty()) { jdbcUrl.append(JdbcUtils.AMPERSAND).append(config.get(JdbcUtils.JDBC_URL_PARAMS_KEY).asText()); } @@ -292,7 +293,8 @@ public List> getIncrementalIterators(final emittedAt); return Collections.singletonList( - AutoCloseableIterators.concatWithEagerClose(snapshotIterator, AutoCloseableIterators.lazyIterator(incrementalIteratorSupplier))); + AutoCloseableIterators.concatWithEagerClose(AirbyteTraceMessageUtility::emitStreamStatusTrace, snapshotIterator, + AutoCloseableIterators.lazyIterator(incrementalIteratorSupplier, null))); } else { LOGGER.info("using CDC: {}", false); return super.getIncrementalIterators(database, catalog, tableNameToTable, stateManager, diff --git a/airbyte-integrations/connectors/source-mysql/src/main/java/io/airbyte/integrations/source/mysql/MySqlSourceOperations.java b/airbyte-integrations/connectors/source-mysql/src/main/java/io/airbyte/integrations/source/mysql/MySqlSourceOperations.java index 77029d12f1fd4..b793b112aa567 100644 --- a/airbyte-integrations/connectors/source-mysql/src/main/java/io/airbyte/integrations/source/mysql/MySqlSourceOperations.java +++ b/airbyte-integrations/connectors/source-mysql/src/main/java/io/airbyte/integrations/source/mysql/MySqlSourceOperations.java @@ -43,7 +43,6 @@ import com.mysql.cj.MysqlType; import com.mysql.cj.jdbc.result.ResultSetMetaData; import com.mysql.cj.result.Field; -import io.airbyte.db.DataTypeUtils; import io.airbyte.db.SourceOperations; import io.airbyte.db.jdbc.AbstractJdbcCompatibleSourceOperations; import io.airbyte.protocol.models.JsonSchemaType; @@ -95,7 +94,7 @@ public void copyToJsonField(final ResultSet resultSet, final int colIndex, final putShortInt(json, columnName, resultSet, colIndex); } } - case TINYINT_UNSIGNED -> putShortInt(json, columnName, resultSet, colIndex); + case TINYINT_UNSIGNED, YEAR -> putShortInt(json, columnName, resultSet, colIndex); case SMALLINT, SMALLINT_UNSIGNED, MEDIUMINT, MEDIUMINT_UNSIGNED -> putInteger(json, columnName, resultSet, colIndex); case INT, INT_UNSIGNED -> { if (field.isUnsigned()) { @@ -112,18 +111,6 @@ public void copyToJsonField(final ResultSet resultSet, final int colIndex, final case DATETIME -> putTimestamp(json, columnName, resultSet, colIndex); case TIMESTAMP -> putTimestampWithTimezone(json, columnName, resultSet, colIndex); case TIME -> putTime(json, columnName, resultSet, colIndex); - // The returned year value can either be a java.sql.Short (when yearIsDateType=false) - // or a java.sql.Date with the date set to January 1st, at midnight (when yearIsDateType=true). - // Currently, JsonSchemaPrimitive does not support integer, but only supports number. - // Because the number type will be interpreted as a double in many destinations, and it is - // weird to show a year as a double, we set yearIsDateType=true in the JDBC connection string, - // and parse the returned year value as a string. - // The case can be re-evaluated when JsonSchemaPrimitive supports integer. - // Issue: https://github.com/airbytehq/airbyte/issues/8722 - case YEAR -> { - final String year = resultSet.getDate(colIndex).toString().split("-")[0]; - json.put(columnName, DataTypeUtils.returnNullIfInvalid(() -> year)); - } case CHAR, VARCHAR -> { if (field.isBinary()) { // when character set is binary, the returned value is binary @@ -156,7 +143,7 @@ public void setCursorField(final PreparedStatement preparedStatement, switch (cursorFieldType) { case BIT -> setBit(preparedStatement, parameterIndex, value); case BOOLEAN -> setBoolean(preparedStatement, parameterIndex, value); - case TINYINT, TINYINT_UNSIGNED, SMALLINT, SMALLINT_UNSIGNED, MEDIUMINT, MEDIUMINT_UNSIGNED -> setInteger(preparedStatement, parameterIndex, + case YEAR, TINYINT, TINYINT_UNSIGNED, SMALLINT, SMALLINT_UNSIGNED, MEDIUMINT, MEDIUMINT_UNSIGNED -> setInteger(preparedStatement, parameterIndex, value); case INT, INT_UNSIGNED, BIGINT, BIGINT_UNSIGNED -> setBigInteger(preparedStatement, parameterIndex, value); case FLOAT, FLOAT_UNSIGNED, DOUBLE, DOUBLE_UNSIGNED -> setDouble(preparedStatement, parameterIndex, value); @@ -165,7 +152,7 @@ public void setCursorField(final PreparedStatement preparedStatement, case DATETIME -> setTimestamp(preparedStatement, parameterIndex, value); case TIMESTAMP -> setTimestampWithTimezone(preparedStatement, parameterIndex, value); case TIME -> setTime(preparedStatement, parameterIndex, value); - case YEAR, CHAR, VARCHAR, TINYTEXT, TEXT, MEDIUMTEXT, LONGTEXT, ENUM, SET -> setString(preparedStatement, parameterIndex, value); + case CHAR, VARCHAR, TINYTEXT, TEXT, MEDIUMTEXT, LONGTEXT, ENUM, SET -> setString(preparedStatement, parameterIndex, value); case TINYBLOB, BLOB, MEDIUMBLOB, LONGBLOB, BINARY, VARBINARY -> setBinary(preparedStatement, parameterIndex, value); // since cursor are expected to be comparable, handle cursor typing strictly and error on // unrecognized types @@ -180,7 +167,6 @@ public MysqlType getDatabaseFieldType(final JsonNode field) { // e.g. MEDIUMINT UNSIGNED final MysqlType literalType = MysqlType.getByName(field.get(INTERNAL_COLUMN_TYPE_NAME).asText()); final int columnSize = field.get(INTERNAL_COLUMN_SIZE).asInt(); - switch (literalType) { // BIT(1) and TINYINT(1) are interpreted as boolean case BIT, TINYINT -> { @@ -188,6 +174,9 @@ public MysqlType getDatabaseFieldType(final JsonNode field) { return MysqlType.BOOLEAN; } } + case YEAR -> { + return SMALLINT; + } // When CHAR[N] and VARCHAR[N] columns have binary character set, the returned // types are BINARY[N] and VARBINARY[N], respectively. So we don't need to // convert them here. This is verified in MySqlSourceDatatypeTest. diff --git a/airbyte-integrations/connectors/source-mysql/src/test-integration/java/io/airbyte/integrations/io/airbyte/integration_tests/sources/AbstractMySqlSourceDatatypeTest.java b/airbyte-integrations/connectors/source-mysql/src/test-integration/java/io/airbyte/integrations/io/airbyte/integration_tests/sources/AbstractMySqlSourceDatatypeTest.java index 3b64dd3229a51..22b4c04bf68b6 100644 --- a/airbyte-integrations/connectors/source-mysql/src/test-integration/java/io/airbyte/integrations/io/airbyte/integration_tests/sources/AbstractMySqlSourceDatatypeTest.java +++ b/airbyte-integrations/connectors/source-mysql/src/test-integration/java/io/airbyte/integrations/io/airbyte/integration_tests/sources/AbstractMySqlSourceDatatypeTest.java @@ -306,11 +306,11 @@ protected void initTests() { addDataTypeTestData( TestDataHolder.builder() .sourceType("year") - .airbyteType(JsonSchemaType.STRING) + .airbyteType(JsonSchemaType.INTEGER) // MySQL converts values in the ranges '0' - '69' to YEAR value in the range 2000 - 2069 // and '70' - '99' to 1970 - 1999. - .addInsertValues("null", "'1997'", "'0'", "'50'", "'70'", "'80'", "'99'") - .addExpectedValues(null, "1997", "2000", "2050", "1970", "1980", "1999") + .addInsertValues("null", "'1997'", "'0'", "'50'", "'70'", "'80'", "'99'", "'00'", "'000'") + .addExpectedValues(null, "1997", "2000", "2050", "1970", "1980", "1999", "2000", "2000") .build()); // char types can be string or binary, so they are tested separately diff --git a/airbyte-integrations/connectors/source-mysql/src/test-integration/java/io/airbyte/integrations/io/airbyte/integration_tests/sources/MySqlDatatypeAccuracyTest.java b/airbyte-integrations/connectors/source-mysql/src/test-integration/java/io/airbyte/integrations/io/airbyte/integration_tests/sources/MySqlDatatypeAccuracyTest.java index 09bc405b7b644..be25c6b458405 100644 --- a/airbyte-integrations/connectors/source-mysql/src/test-integration/java/io/airbyte/integrations/io/airbyte/integration_tests/sources/MySqlDatatypeAccuracyTest.java +++ b/airbyte-integrations/connectors/source-mysql/src/test-integration/java/io/airbyte/integrations/io/airbyte/integration_tests/sources/MySqlDatatypeAccuracyTest.java @@ -326,13 +326,12 @@ protected void initTests() { .build()); } case YEAR -> { - /* https://github.com/airbytehq/airbyte/issues/8722 */ -// addDataTypeTestData( -// TestDataHolder.builder() -// .sourceType(mst.name()) -// .airbyteType(JsonSchemaType.INTEGER) -// .fullSourceDataType("%s".formatted(mst.getName())) -// .build()); + addDataTypeTestData( + TestDataHolder.builder() + .sourceType(mst.name()) + .airbyteType(JsonSchemaType.INTEGER) + .fullSourceDataType("%s".formatted(mst.getName())) + .build()); } case VARCHAR -> { for (final Entry entry : charsetsCollationsMap.entrySet()) { diff --git a/airbyte-integrations/connectors/source-paypal-transaction/Dockerfile b/airbyte-integrations/connectors/source-paypal-transaction/Dockerfile index 9479b1876bda1..bcb408dbf2e8c 100644 --- a/airbyte-integrations/connectors/source-paypal-transaction/Dockerfile +++ b/airbyte-integrations/connectors/source-paypal-transaction/Dockerfile @@ -12,5 +12,5 @@ RUN pip install . ENV AIRBYTE_ENTRYPOINT "python /airbyte/integration_code/main.py" ENTRYPOINT ["python", "/airbyte/integration_code/main.py"] -LABEL io.airbyte.version=0.1.12 +LABEL io.airbyte.version=0.1.13 LABEL io.airbyte.name=airbyte/source-paypal-transaction diff --git a/airbyte-integrations/connectors/source-paypal-transaction/source_paypal_transaction/spec.json b/airbyte-integrations/connectors/source-paypal-transaction/source_paypal_transaction/spec.json index 25b06e158256c..9734cd4dc0bd0 100644 --- a/airbyte-integrations/connectors/source-paypal-transaction/source_paypal_transaction/spec.json +++ b/airbyte-integrations/connectors/source-paypal-transaction/source_paypal_transaction/spec.json @@ -29,8 +29,9 @@ "type": "string", "title": "Start Date", "description": "Start Date for data extraction in ISO format. Date must be in range from 3 years till 12 hrs before present time.", - "examples": ["2021-06-11T23:59:59-00:00"], - "pattern": "^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}[+-][0-9]{2}:[0-9]{2}$" + "examples": ["2021-06-11T23:59:59", "2021-06-11T23:59:59+00:00"], + "pattern": "^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}(|Z|[+-][0-9]{2}:[0-9]{2})$", + "format": "date-time" }, "is_sandbox": { "title": "Sandbox", diff --git a/airbyte-integrations/connectors/source-pinterest/Dockerfile b/airbyte-integrations/connectors/source-pinterest/Dockerfile index 7a19ff4738325..7879ec9840410 100644 --- a/airbyte-integrations/connectors/source-pinterest/Dockerfile +++ b/airbyte-integrations/connectors/source-pinterest/Dockerfile @@ -34,5 +34,5 @@ COPY source_pinterest ./source_pinterest ENV AIRBYTE_ENTRYPOINT "python /airbyte/integration_code/main.py" ENTRYPOINT ["python", "/airbyte/integration_code/main.py"] -LABEL io.airbyte.version=0.2.5 +LABEL io.airbyte.version=0.2.6 LABEL io.airbyte.name=airbyte/source-pinterest diff --git a/airbyte-integrations/connectors/source-pinterest/acceptance-test-config.yml b/airbyte-integrations/connectors/source-pinterest/acceptance-test-config.yml index 75da1f6c7396f..24a2ebbf8fa84 100644 --- a/airbyte-integrations/connectors/source-pinterest/acceptance-test-config.yml +++ b/airbyte-integrations/connectors/source-pinterest/acceptance-test-config.yml @@ -40,12 +40,8 @@ acceptance_tests: status: succeed discovery: tests: - - backward_compatibility_tests_config: - disable_for_version: 0.2.3 - config_path: secrets/config.json - - backward_compatibility_tests_config: - disable_for_version: 0.2.3 - config_path: secrets/config_oauth.json + - config_path: secrets/config.json + - config_path: secrets/config_oauth.json full_refresh: tests: - config_path: secrets/config.json @@ -58,8 +54,6 @@ acceptance_tests: future_state_path: integration_tests/abnormal_state.json spec: tests: - - backward_compatibility_tests_config: - disable_for_version: 0.1.2 - spec_path: source_pinterest/spec.json + - spec_path: source_pinterest/spec.json connector_image: airbyte/source-pinterest:dev test_strictness_level: high diff --git a/airbyte-integrations/connectors/source-pinterest/metadata.yaml b/airbyte-integrations/connectors/source-pinterest/metadata.yaml index 1d75629ede2dd..47fbd15bba198 100644 --- a/airbyte-integrations/connectors/source-pinterest/metadata.yaml +++ b/airbyte-integrations/connectors/source-pinterest/metadata.yaml @@ -10,7 +10,7 @@ data: connectorSubtype: api connectorType: source definitionId: 5cb7e5fe-38c2-11ec-8d3d-0242ac130003 - dockerImageTag: 0.2.4 + dockerImageTag: 0.2.6 dockerRepository: airbyte/source-pinterest githubIssueLabel: source-pinterest icon: pinterest.svg diff --git a/airbyte-integrations/connectors/source-pinterest/source_pinterest/schemas/boards.json b/airbyte-integrations/connectors/source-pinterest/source_pinterest/schemas/boards.json index 0e22f6fa9ac9a..2c29d841828ff 100644 --- a/airbyte-integrations/connectors/source-pinterest/source_pinterest/schemas/boards.json +++ b/airbyte-integrations/connectors/source-pinterest/source_pinterest/schemas/boards.json @@ -44,11 +44,11 @@ }, "created_at": { "type": ["null", "string"], - "format": "datetime" + "format": "date-time" }, "board_pins_modified_at": { "type": ["null", "string"], - "format": "datetime" + "format": "date-time" } } } diff --git a/airbyte-integrations/connectors/source-postgres-strict-encrypt/Dockerfile b/airbyte-integrations/connectors/source-postgres-strict-encrypt/Dockerfile index fa780a963786d..4505f41b1702e 100644 --- a/airbyte-integrations/connectors/source-postgres-strict-encrypt/Dockerfile +++ b/airbyte-integrations/connectors/source-postgres-strict-encrypt/Dockerfile @@ -16,5 +16,5 @@ ENV APPLICATION source-postgres-strict-encrypt COPY --from=build /airbyte /airbyte -LABEL io.airbyte.version=2.0.25 +LABEL io.airbyte.version=2.0.27 LABEL io.airbyte.name=airbyte/source-postgres-strict-encrypt diff --git a/airbyte-integrations/connectors/source-postgres/Dockerfile b/airbyte-integrations/connectors/source-postgres/Dockerfile index 9f232d2d13577..35e1bc757f86a 100644 --- a/airbyte-integrations/connectors/source-postgres/Dockerfile +++ b/airbyte-integrations/connectors/source-postgres/Dockerfile @@ -16,5 +16,5 @@ ENV APPLICATION source-postgres COPY --from=build /airbyte /airbyte -LABEL io.airbyte.version=2.0.25 +LABEL io.airbyte.version=2.0.27 LABEL io.airbyte.name=airbyte/source-postgres diff --git a/airbyte-integrations/connectors/source-postgres/src/main/java/io/airbyte/integrations/source/postgres/PostgresCdcStateHandler.java b/airbyte-integrations/connectors/source-postgres/src/main/java/io/airbyte/integrations/source/postgres/PostgresCdcStateHandler.java index 02bf33d9f5b3a..7ad50f93531a9 100644 --- a/airbyte-integrations/connectors/source-postgres/src/main/java/io/airbyte/integrations/source/postgres/PostgresCdcStateHandler.java +++ b/airbyte-integrations/connectors/source-postgres/src/main/java/io/airbyte/integrations/source/postgres/PostgresCdcStateHandler.java @@ -12,11 +12,10 @@ import io.airbyte.protocol.models.v0.AirbyteMessage; import io.airbyte.protocol.models.v0.AirbyteMessage.Type; import io.airbyte.protocol.models.v0.AirbyteStateMessage; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - import java.util.Map; import java.util.Optional; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; public class PostgresCdcStateHandler implements CdcStateHandler { diff --git a/airbyte-integrations/connectors/source-postgres/src/main/java/io/airbyte/integrations/source/postgres/PostgresSource.java b/airbyte-integrations/connectors/source-postgres/src/main/java/io/airbyte/integrations/source/postgres/PostgresSource.java index 426cefde5614c..6f4c5e4fcb228 100644 --- a/airbyte-integrations/connectors/source-postgres/src/main/java/io/airbyte/integrations/source/postgres/PostgresSource.java +++ b/airbyte-integrations/connectors/source-postgres/src/main/java/io/airbyte/integrations/source/postgres/PostgresSource.java @@ -74,7 +74,6 @@ import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.SQLException; -import java.text.NumberFormat; import java.time.Duration; import java.time.Instant; import java.util.ArrayList; @@ -401,7 +400,8 @@ public List> getIncrementalIterators(final new ConfiguredAirbyteCatalog().withStreams(streamsToSnapshot), new PostgresCdcConnectorMetadataInjector(), PostgresCdcProperties.getSnapshotProperties(database), postgresCdcStateHandler, emittedAt); return Collections.singletonList( - AutoCloseableIterators.concatWithEagerClose(snapshotIterator, AutoCloseableIterators.lazyIterator(incrementalIteratorSupplier))); + AutoCloseableIterators.concatWithEagerClose(AirbyteTraceMessageUtility::emitStreamStatusTrace, snapshotIterator, + AutoCloseableIterators.lazyIterator(incrementalIteratorSupplier, null))); } else { return super.getIncrementalIterators(database, catalog, tableNameToTable, stateManager, emittedAt); @@ -573,8 +573,8 @@ protected void estimateFullRefreshSyncSize(final JdbcDatabase database, // read a row and Stringify it to better understand the accurate volume of data sent over the wire. // However, this approach doesn't account for different row sizes. AirbyteTraceMessageUtility.emitEstimateTrace(PLATFORM_DATA_INCREASE_FACTOR * syncByteCount, Type.STREAM, syncRowCount, tableName, schemaName); - LOGGER.info(String.format("Estimate for table in full refresh mode: %s : {rows_to_sync: %s, data_to_sync: %s}", - fullTableName, NumberFormat.getInstance().format(syncRowCount), JdbcUtils.humanReadableByteCountSI(syncByteCount))); + LOGGER.info(String.format("Estimate for table: %s : {sync_row_count: %s, sync_bytes: %s, total_table_row_count: %s, total_table_bytes: %s}", + fullTableName, syncRowCount, syncByteCount, syncRowCount, syncByteCount)); } } catch (final SQLException e) { LOGGER.warn("Error occurred while attempting to estimate sync size", e); @@ -615,9 +615,8 @@ protected void estimateIncrementalSyncSize(final JdbcDatabase database, // read a row and Stringify it to better understand the accurate volume of data sent over the wire. // However, this approach doesn't account for different row sizes AirbyteTraceMessageUtility.emitEstimateTrace(PLATFORM_DATA_INCREASE_FACTOR * syncByteCount, Type.STREAM, syncRowCount, tableName, schemaName); - LOGGER.info(String.format("Estimate for table in incremental mode: %s : {rows_to_sync: %s, data_to_sync: %s, table_row_count: %s, table_size: %s}", - fullTableName, NumberFormat.getInstance().format(syncRowCount), JdbcUtils.humanReadableByteCountSI(syncByteCount), NumberFormat.getInstance().format(tableRowCount), - JdbcUtils.humanReadableByteCountSI(tableByteCount))); + LOGGER.info(String.format("Estimate for table: %s : {sync_row_count: %s, sync_bytes: %s, total_table_row_count: %s, total_table_bytes: %s}", + fullTableName, syncRowCount, syncByteCount, tableRowCount, tableRowCount)); } catch (final SQLException e) { LOGGER.warn("Error occurred while attempting to estimate sync size", e); } diff --git a/airbyte-integrations/connectors/source-relational-db/src/main/java/io/airbyte/integrations/source/relationaldb/AbstractDbSource.java b/airbyte-integrations/connectors/source-relational-db/src/main/java/io/airbyte/integrations/source/relationaldb/AbstractDbSource.java index c72f77fcbdf54..e4e79d1d2874e 100644 --- a/airbyte-integrations/connectors/source-relational-db/src/main/java/io/airbyte/integrations/source/relationaldb/AbstractDbSource.java +++ b/airbyte-integrations/connectors/source-relational-db/src/main/java/io/airbyte/integrations/source/relationaldb/AbstractDbSource.java @@ -15,6 +15,7 @@ import io.airbyte.commons.features.FeatureFlags; import io.airbyte.commons.functional.CheckedConsumer; import io.airbyte.commons.lang.Exceptions; +import io.airbyte.commons.stream.AirbyteStreamUtils; import io.airbyte.commons.util.AutoCloseableIterator; import io.airbyte.commons.util.AutoCloseableIterators; import io.airbyte.db.AbstractDatabase; @@ -168,7 +169,7 @@ public AutoCloseableIterator read(final JsonNode config, .collect(Collectors.toList()); return AutoCloseableIterators - .appendOnClose(AutoCloseableIterators.concatWithEagerClose(iteratorList), () -> { + .appendOnClose(AutoCloseableIterators.concatWithEagerClose(iteratorList, AirbyteTraceMessageUtility::emitStreamStatusTrace), () -> { LOGGER.info("Closing database connection pool."); Exceptions.toRuntime(this::close); LOGGER.info("Closed database connection pool."); @@ -410,7 +411,8 @@ private AutoCloseableIterator createReadIterator(final Database cursorInfo.map(CursorInfo::getCursor).orElse(null), cursorType, getStateEmissionFrequency()), - airbyteMessageIterator); + airbyteMessageIterator, + AirbyteStreamUtils.convertFromNameAndNamespace(pair.getName(), pair.getNamespace())); } else if (airbyteStream.getSyncMode() == SyncMode.FULL_REFRESH) { estimateFullRefreshSyncSize(database, airbyteStream); iterator = getFullRefreshStream(database, streamName, namespace, selectedDatabaseFields, @@ -425,13 +427,15 @@ private AutoCloseableIterator createReadIterator(final Database } final AtomicLong recordCount = new AtomicLong(); - return AutoCloseableIterators.transform(iterator, r -> { - final long count = recordCount.incrementAndGet(); - if (count % 10000 == 0) { - LOGGER.info("Reading stream {}. Records read: {}", streamName, count); - } - return r; - }); + return AutoCloseableIterators.transform(iterator, + AirbyteStreamUtils.convertFromNameAndNamespace(pair.getName(), pair.getNamespace()), + r -> { + final long count = recordCount.incrementAndGet(); + if (count % 10000 == 0) { + LOGGER.info("Reading stream {}. Records read: {}", streamName, count); + } + return r; + }); } /** @@ -506,13 +510,15 @@ private static AutoCloseableIterator getMessageIterator( final String streamName, final String namespace, final long emittedAt) { - return AutoCloseableIterators.transform(recordIterator, r -> new AirbyteMessage() - .withType(Type.RECORD) - .withRecord(new AirbyteRecordMessage() - .withStream(streamName) - .withNamespace(namespace) - .withEmittedAt(emittedAt) - .withData(r))); + return AutoCloseableIterators.transform(recordIterator, + new io.airbyte.protocol.models.AirbyteStreamNameNamespacePair(streamName, namespace), + r -> new AirbyteMessage() + .withType(Type.RECORD) + .withRecord(new AirbyteRecordMessage() + .withStream(streamName) + .withNamespace(namespace) + .withEmittedAt(emittedAt) + .withData(r))); } /** diff --git a/airbyte-integrations/connectors/source-relational-db/src/main/java/io/airbyte/integrations/source/relationaldb/RelationalDbQueryUtils.java b/airbyte-integrations/connectors/source-relational-db/src/main/java/io/airbyte/integrations/source/relationaldb/RelationalDbQueryUtils.java index 7f1fca66ad7a4..fd9a74b5763a4 100644 --- a/airbyte-integrations/connectors/source-relational-db/src/main/java/io/airbyte/integrations/source/relationaldb/RelationalDbQueryUtils.java +++ b/airbyte-integrations/connectors/source-relational-db/src/main/java/io/airbyte/integrations/source/relationaldb/RelationalDbQueryUtils.java @@ -5,9 +5,11 @@ package io.airbyte.integrations.source.relationaldb; import com.fasterxml.jackson.databind.JsonNode; +import io.airbyte.commons.stream.AirbyteStreamUtils; import io.airbyte.commons.util.AutoCloseableIterator; import io.airbyte.commons.util.AutoCloseableIterators; import io.airbyte.db.SqlDatabase; +import io.airbyte.protocol.models.AirbyteStreamNameNamespacePair; import java.util.List; import java.util.StringJoiner; import java.util.stream.Stream; @@ -61,16 +63,18 @@ public static String enquoteIdentifier(final String identifier, final String quo return quoteString + identifier + quoteString; } - public static AutoCloseableIterator queryTable(final Database database, final String sqlQuery) { + public static AutoCloseableIterator queryTable(final Database database, final String sqlQuery, + final String tableName, final String schemaName) { + final AirbyteStreamNameNamespacePair airbyteStreamNameNamespacePair = AirbyteStreamUtils.convertFromNameAndNamespace(tableName, schemaName); return AutoCloseableIterators.lazyIterator(() -> { try { LOGGER.info("Queueing query: {}", sqlQuery); final Stream stream = database.unsafeQuery(sqlQuery); - return AutoCloseableIterators.fromStream(stream); + return AutoCloseableIterators.fromStream(stream, airbyteStreamNameNamespacePair); } catch (final Exception e) { throw new RuntimeException(e); } - }); + }, airbyteStreamNameNamespacePair); } } diff --git a/airbyte-integrations/connectors/source-sftp/src/main/java/io/airbyte/integrations/source/sftp/SftpSource.java b/airbyte-integrations/connectors/source-sftp/src/main/java/io/airbyte/integrations/source/sftp/SftpSource.java index 6a7aa63cb33c2..b64f43f4ba2be 100644 --- a/airbyte-integrations/connectors/source-sftp/src/main/java/io/airbyte/integrations/source/sftp/SftpSource.java +++ b/airbyte-integrations/connectors/source-sftp/src/main/java/io/airbyte/integrations/source/sftp/SftpSource.java @@ -9,6 +9,7 @@ import io.airbyte.commons.util.AutoCloseableIterator; import io.airbyte.commons.util.AutoCloseableIterators; import io.airbyte.integrations.BaseConnector; +import io.airbyte.integrations.base.AirbyteTraceMessageUtility; import io.airbyte.integrations.base.IntegrationRunner; import io.airbyte.integrations.base.Source; import io.airbyte.protocol.models.v0.AirbyteCatalog; @@ -121,7 +122,7 @@ public AutoCloseableIterator read(JsonNode config, ConfiguredAir iteratorList.add(messageIterator); }); return AutoCloseableIterators - .appendOnClose(AutoCloseableIterators.concatWithEagerClose(iteratorList), () -> { + .appendOnClose(AutoCloseableIterators.concatWithEagerClose(iteratorList, AirbyteTraceMessageUtility::emitStreamStatusTrace), () -> { LOGGER.info("Closing server connection."); client.disconnect(); LOGGER.info("Closed server connection."); diff --git a/airbyte-integrations/connectors/source-surveycto/metadata.yaml b/airbyte-integrations/connectors/source-surveycto/metadata.yaml index b6471507bf5a0..79de5fb1ca57f 100644 --- a/airbyte-integrations/connectors/source-surveycto/metadata.yaml +++ b/airbyte-integrations/connectors/source-surveycto/metadata.yaml @@ -7,7 +7,7 @@ data: connectorSubtype: api connectorType: source definitionId: dd4632f4-15e0-4649-9b71-41719fb1fdee - dockerImageTag: 0.1.0 + dockerImageTag: 0.1.1 dockerRepository: airbyte/source-surveycto githubIssueLabel: source-surveycto icon: surveycto.svg diff --git a/airbyte-integrations/connectors/source-surveymonkey/Dockerfile b/airbyte-integrations/connectors/source-surveymonkey/Dockerfile index 2e5ecfc816529..9f3902b066462 100644 --- a/airbyte-integrations/connectors/source-surveymonkey/Dockerfile +++ b/airbyte-integrations/connectors/source-surveymonkey/Dockerfile @@ -12,5 +12,5 @@ RUN pip install . ENV AIRBYTE_ENTRYPOINT "python /airbyte/integration_code/main.py" ENTRYPOINT ["python", "/airbyte/integration_code/main.py"] -LABEL io.airbyte.version=0.1.16 +LABEL io.airbyte.version=0.2.0 LABEL io.airbyte.name=airbyte/source-surveymonkey diff --git a/airbyte-integrations/connectors/source-surveymonkey/integration_tests/configured_catalog.json b/airbyte-integrations/connectors/source-surveymonkey/integration_tests/configured_catalog.json index 30efb63a7a22c..17c64d16c6e7e 100644 --- a/airbyte-integrations/connectors/source-surveymonkey/integration_tests/configured_catalog.json +++ b/airbyte-integrations/connectors/source-surveymonkey/integration_tests/configured_catalog.json @@ -47,6 +47,30 @@ "sync_mode": "full_refresh", "cursor_field": [], "destination_sync_mode": "append" + }, + { + "stream": { + "name": "survey_collectors", + "json_schema": {}, + "supported_sync_modes": ["full_refresh"], + "source_defined_cursor": true, + "default_cursor_field": [] + }, + "sync_mode": "full_refresh", + "cursor_field": [], + "destination_sync_mode": "append" + }, + { + "stream": { + "name": "collectors", + "json_schema": {}, + "supported_sync_modes": ["full_refresh"], + "source_defined_cursor": true, + "default_cursor_field": [] + }, + "sync_mode": "full_refresh", + "cursor_field": [], + "destination_sync_mode": "append" } ] } diff --git a/airbyte-integrations/connectors/source-surveymonkey/integration_tests/expected_records.txt b/airbyte-integrations/connectors/source-surveymonkey/integration_tests/expected_records.txt index 3ae61592160d1..8d4029a67d249 100644 --- a/airbyte-integrations/connectors/source-surveymonkey/integration_tests/expected_records.txt +++ b/airbyte-integrations/connectors/source-surveymonkey/integration_tests/expected_records.txt @@ -285,3 +285,29 @@ {"stream":"survey_questions","data":{"id":"667461811","position":3,"visible":true,"family":"single_choice","subtype":"menu","layout":null,"sorting":null,"required":null,"validation":null,"forced_ranking":false,"headings":[{"heading":"i4mol250lne3 bhrh2dvt9b qss461 lkb1u chpwmgcnuoeec un2l5"}],"href":"https://api.surveymonkey.com/v3/surveys/307785415/pages/168831402/questions/667461811","answers":{"choices":[{"position":1,"visible":true,"text":"s4xpl2l93 57k4asd04 gyddhg dn53f8bd 8wtgobxts3 ms7nan ns5wv6q2vy6 nnaudmbyu80llen 8be4urorunk","quiz_options":{"score":0},"id":"4385175197"},{"position":2,"visible":true,"text":"ec2l4hr 5lwp46ij8 3tqigw elleyat98j2jjd if8hiia3 vad578","quiz_options":{"score":0},"id":"4385175198"},{"position":3,"visible":true,"text":"9t9nsl0tjlcjxr k1chdb iislvtl gpcnyi82o5ebu 46ayfj 5r3b3w92l6 vaqskragdor","quiz_options":{"score":0},"id":"4385175199"},{"position":4,"visible":true,"text":"8ad404t4 86hyrfxr7 xef8em2 g7u8fc2 rsslpdptcgrsh9n n5pb1u9b","quiz_options":{"score":0},"id":"4385175200"},{"position":5,"visible":true,"text":"bijp3kiqfs quasi89mov1y hj9ku 9w6iuh 81sng4yu32tyh d4q9kbxuoqd2xaq","quiz_options":{"score":0},"id":"4385175201"},{"position":6,"visible":true,"text":"73xiyg2gc q1l6a28s 991jaxujf56sqi rhxrnjum ges25br tb2x1wamrh3jac1 t3s8ocme8q9d8 c505btw99r hwljwx","quiz_options":{"score":0},"id":"4385175202"},{"position":7,"visible":true,"text":"ri75nf 5yy3nq 8m5e68j4mh8m sf1v3 60nijf1oeq9 bwp7bfx9u11a474 w66gfkiayng55q 6h0gp80h","quiz_options":{"score":0},"id":"4385175203"},{"position":8,"visible":true,"text":"nbqtnbbuiue5fr a9s8yrpjm7x0p qid4y913k 8ueagmuy2 5kvul122lseh5h5","quiz_options":{"score":0},"id":"4385175204"}]},"page_id":"168831402"},"emitted_at":1674149695843} {"stream":"survey_questions","data":{"id":"667461833","position":4,"visible":true,"family":"single_choice","subtype":"menu","layout":null,"sorting":null,"required":null,"validation":null,"forced_ranking":false,"headings":[{"heading":"s3pjyrvc bj99egp0o99 f4ddk7sed bdc2yh24yf tyii1jye nmvwhj18oqxna6b lku2vt8hrnx4 j327a"}],"href":"https://api.surveymonkey.com/v3/surveys/307785415/pages/168831402/questions/667461833","answers":{"choices":[{"position":1,"visible":true,"text":"hqpox2w6wuwyd2 fm6kvjiq6ns5k jv1eutgqn1jj if8dj81e 57l25ev1tal9j","quiz_options":{"score":0},"id":"4385175279"},{"position":2,"visible":true,"text":"vr2p6mvbedcpkak 2c91smhshw9ee mwdy43um3334e7i u4o5frorc3py srt09vtrol825 i9s8n2koaoc6fu","quiz_options":{"score":0},"id":"4385175280"},{"position":3,"visible":true,"text":"1icyn0f tifktyc2uwd k8ehexjojth9a2f 0n7sh5p4i6kswe","quiz_options":{"score":0},"id":"4385175281"},{"position":4,"visible":true,"text":"6ju066 4chnhs0be43dy2 xdkxk37j1i0qy1 43b22jang8 na1yapnjj 7tvgbeu v1dw7as","quiz_options":{"score":0},"id":"4385175282"},{"position":5,"visible":true,"text":"vnslaachd7t07f0 db6whw u6ahc71ajst 2cn114ialhcvex kpwm1qo1y g82xup","quiz_options":{"score":0},"id":"4385175283"},{"position":6,"visible":true,"text":"aniu1f d47vbpsl mm26jpf7 g2io86ycj6yk","quiz_options":{"score":0},"id":"4385175284"}]},"page_id":"168831402"},"emitted_at":1674149695844} {"stream":"survey_questions","data":{"id":"667461834","position":5,"visible":true,"family":"single_choice","subtype":"vertical","layout":null,"sorting":null,"required":null,"validation":null,"forced_ranking":false,"headings":[{"heading":"ce8esfvsy7xcwqu gemf05b3s5ap5 76oc1 srngx7qca"}],"href":"https://api.surveymonkey.com/v3/surveys/307785415/pages/168831402/questions/667461834","answers":{"choices":[{"position":1,"visible":true,"text":"jggh1bnginkodsv 4jhtwffnlgybux 1na25qx xr5jtwfp vvip26cqr st09ps653caiyj 1icxwhc1hut6","quiz_options":{"score":0},"id":"4385175294"},{"position":2,"visible":true,"text":"gdxye rstmylwe4l w2lkwbdf87e735u rdxn1vxbg3aw kwkn1gfsu s3oa2wx7 6vegglr1ihckyxa","quiz_options":{"score":0},"id":"4385175295"},{"position":3,"visible":true,"text":"qsghk1r8e3p ciuick1mgdwbyc k8wbxctpmtu2v xau05rusflq k3as06r35dl9 38xpts","quiz_options":{"score":0},"id":"4385175296"}]},"page_id":"168831402"},"emitted_at":1674149695844} +{"stream": "collectors", "data": {"status": "open", "id": "405437100", "survey_id": "306079584", "type": "weblink", "name": "Web Link 1", "thank_you_message": "Thank you for completing our survey!", "thank_you_page": {"is_enabled": false, "message": "Thank you for completing our survey!"}, "disqualification_type": "message", "disqualification_message": "Thank you for completing our survey!", "disqualification_url": "https://www.surveymonkey.com", "closed_page_message": "This survey is currently closed. Please contact the author of this survey for further assistance.", "redirect_type": "url", "redirect_url": "https://www.surveymonkey.com", "display_survey_results": false, "edit_response_type": "until_complete", "anonymous_type": "not_anonymous", "allow_multiple_responses": false, "date_modified": "2021-06-02T18:14:00+00:00", "date_created": "2021-06-01T17:30:00+00:00", "response_count": 13, "password_enabled": false, "response_limit": null, "respondent_authentication": false, "sender_email": null, "close_date": null, "url": "https://www.surveymonkey.com/r/BQB2V52", "href": "https://api.surveymonkey.com/v3/collectors/405437100"}, "emitted_at": 1681915512508} +{"stream": "collectors", "data": {"status": "open", "id": "405843657", "survey_id": "307785429", "type": "weblink", "name": "Web Link 1", "thank_you_message": "Grazie per aver partecipato al nostro sondaggio!", "thank_you_page": {"is_enabled": false, "message": "Grazie per aver partecipato al nostro sondaggio!"}, "disqualification_type": "message", "disqualification_message": "Grazie per aver partecipato al nostro sondaggio!", "disqualification_url": "https://it.surveymonkey.com", "closed_page_message": "Il sondaggio \u00e8 stato chiuso. Per ulteriori informazioni, contatta l\u2019autore del sondaggio.", "redirect_type": "url", "redirect_url": "https://it.surveymonkey.com", "display_survey_results": false, "edit_response_type": "until_complete", "anonymous_type": "not_anonymous", "allow_multiple_responses": false, "date_modified": "2021-06-10T10:59:00+00:00", "date_created": "2021-06-10T06:41:00+00:00", "response_count": 18, "password_enabled": false, "response_limit": null, "respondent_authentication": false, "sender_email": null, "close_date": null, "url": "https://it.surveymonkey.com/r/GYXQMYF", "href": "https://api.surveymonkey.com/v3/collectors/405843657"}, "emitted_at": 1681915514460} +{"stream": "collectors", "data": {"status": "open", "id": "405843665", "survey_id": "307785444", "type": "weblink", "name": "Web Link 1", "thank_you_message": "\u0421\u043f\u0430\u0441\u0438\u0431\u043e \u0437\u0430 \u0443\u0447\u0430\u0441\u0442\u0438\u0435 \u0432 \u043d\u0430\u0448\u0435\u043c \u043e\u043f\u0440\u043e\u0441\u0435!", "thank_you_page": {"is_enabled": false, "message": "\u0421\u043f\u0430\u0441\u0438\u0431\u043e \u0437\u0430 \u0443\u0447\u0430\u0441\u0442\u0438\u0435 \u0432 \u043d\u0430\u0448\u0435\u043c \u043e\u043f\u0440\u043e\u0441\u0435!"}, "disqualification_type": "message", "disqualification_message": "\u0421\u043f\u0430\u0441\u0438\u0431\u043e \u0437\u0430 \u0443\u0447\u0430\u0441\u0442\u0438\u0435 \u0432 \u043d\u0430\u0448\u0435\u043c \u043e\u043f\u0440\u043e\u0441\u0435!", "disqualification_url": "https://ru.surveymonkey.com", "closed_page_message": "\u0412 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u0435 \u0432\u0440\u0435\u043c\u044f \u044d\u0442\u043e\u0442 \u043e\u043f\u0440\u043e\u0441 \u0437\u0430\u043a\u0440\u044b\u0442. \u0417\u0430 \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0435\u0439 \u043e\u0431\u0440\u0430\u0449\u0430\u0439\u0442\u0435\u0441\u044c \u043a \u0430\u0432\u0442\u043e\u0440\u0443 \u043e\u043f\u0440\u043e\u0441\u0430.", "redirect_type": "url", "redirect_url": "https://ru.surveymonkey.com", "display_survey_results": false, "edit_response_type": "until_complete", "anonymous_type": "not_anonymous", "allow_multiple_responses": false, "date_modified": "2021-06-10T11:00:00+00:00", "date_created": "2021-06-10T06:42:00+00:00", "response_count": 18, "password_enabled": false, "response_limit": null, "respondent_authentication": false, "sender_email": null, "close_date": null, "url": "https://ru.surveymonkey.com/r/GYNFJLH", "href": "https://api.surveymonkey.com/v3/collectors/405843665"}, "emitted_at": 1681915516165} +{"stream": "collectors", "data": {"status": "open", "id": "405843672", "survey_id": "307785394", "type": "weblink", "name": "Web Link 1", "thank_you_message": "Thank you for completing our survey!", "thank_you_page": {"is_enabled": false, "message": "Thank you for completing our survey!"}, "disqualification_type": "message", "disqualification_message": "Thank you for completing our survey!", "disqualification_url": "https://www.surveymonkey.com", "closed_page_message": "This survey is currently closed. Please contact the author of this survey for further assistance.", "redirect_type": "url", "redirect_url": "https://www.surveymonkey.com", "display_survey_results": false, "edit_response_type": "until_complete", "anonymous_type": "not_anonymous", "allow_multiple_responses": false, "date_modified": "2021-06-10T11:01:00+00:00", "date_created": "2021-06-10T06:42:00+00:00", "response_count": 18, "password_enabled": false, "response_limit": null, "respondent_authentication": false, "sender_email": null, "close_date": null, "url": "https://www.surveymonkey.com/r/GYFBNFM", "href": "https://api.surveymonkey.com/v3/collectors/405843672"}, "emitted_at": 1681915517864} +{"stream": "collectors", "data": {"status": "open", "id": "405843682", "survey_id": "307785402", "type": "weblink", "name": "Web Link 1", "thank_you_message": "\u0421\u043f\u0430\u0441\u0438\u0431\u043e \u0437\u0430 \u0443\u0447\u0430\u0441\u0442\u0438\u0435 \u0432 \u043d\u0430\u0448\u0435\u043c \u043e\u043f\u0440\u043e\u0441\u0435!", "thank_you_page": {"is_enabled": false, "message": "\u0421\u043f\u0430\u0441\u0438\u0431\u043e \u0437\u0430 \u0443\u0447\u0430\u0441\u0442\u0438\u0435 \u0432 \u043d\u0430\u0448\u0435\u043c \u043e\u043f\u0440\u043e\u0441\u0435!"}, "disqualification_type": "message", "disqualification_message": "\u0421\u043f\u0430\u0441\u0438\u0431\u043e \u0437\u0430 \u0443\u0447\u0430\u0441\u0442\u0438\u0435 \u0432 \u043d\u0430\u0448\u0435\u043c \u043e\u043f\u0440\u043e\u0441\u0435!", "disqualification_url": "https://ru.surveymonkey.com", "closed_page_message": "\u0412 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u0435 \u0432\u0440\u0435\u043c\u044f \u044d\u0442\u043e\u0442 \u043e\u043f\u0440\u043e\u0441 \u0437\u0430\u043a\u0440\u044b\u0442. \u0417\u0430 \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0435\u0439 \u043e\u0431\u0440\u0430\u0449\u0430\u0439\u0442\u0435\u0441\u044c \u043a \u0430\u0432\u0442\u043e\u0440\u0443 \u043e\u043f\u0440\u043e\u0441\u0430.", "redirect_type": "url", "redirect_url": "https://ru.surveymonkey.com", "display_survey_results": false, "edit_response_type": "until_complete", "anonymous_type": "not_anonymous", "allow_multiple_responses": false, "date_modified": "2021-06-10T11:02:00+00:00", "date_created": "2021-06-10T06:42:00+00:00", "response_count": 18, "password_enabled": false, "response_limit": null, "respondent_authentication": false, "sender_email": null, "close_date": null, "url": "https://ru.surveymonkey.com/r/GYGQJ5R", "href": "https://api.surveymonkey.com/v3/collectors/405843682"}, "emitted_at": 1681915519653} +{"stream": "collectors", "data": {"status": "open", "id": "405843688", "survey_id": "307785408", "type": "weblink", "name": "Web Link 1", "thank_you_message": "Vielen Dank, dass Sie die Umfrage abgeschlossen haben!", "thank_you_page": {"is_enabled": false, "message": "Vielen Dank, dass Sie die Umfrage abgeschlossen haben!"}, "disqualification_type": "message", "disqualification_message": "Vielen Dank, dass Sie die Umfrage abgeschlossen haben!", "disqualification_url": "https://de.surveymonkey.com", "closed_page_message": "Diese Umfrage ist derzeit geschlossen. Wenden Sie sich an den Autor dieser Umfrage, um weitere Hilfe zu erhalten.", "redirect_type": "url", "redirect_url": "https://de.surveymonkey.com", "display_survey_results": false, "edit_response_type": "until_complete", "anonymous_type": "not_anonymous", "allow_multiple_responses": false, "date_modified": "2021-06-10T11:02:00+00:00", "date_created": "2021-06-10T06:43:00+00:00", "response_count": 18, "password_enabled": false, "response_limit": null, "respondent_authentication": false, "sender_email": null, "close_date": null, "url": "https://de.surveymonkey.com/r/GYBJDCP", "href": "https://api.surveymonkey.com/v3/collectors/405843688"}, "emitted_at": 1681915521088} +{"stream": "collectors", "data": {"status": "open", "id": "405829319", "survey_id": "307784834", "type": "weblink", "name": "Web Link 1", "thank_you_message": "\u0421\u043f\u0430\u0441\u0438\u0431\u043e \u0437\u0430 \u0443\u0447\u0430\u0441\u0442\u0438\u0435 \u0432 \u043d\u0430\u0448\u0435\u043c \u043e\u043f\u0440\u043e\u0441\u0435!", "thank_you_page": {"is_enabled": false, "message": "\u0421\u043f\u0430\u0441\u0438\u0431\u043e \u0437\u0430 \u0443\u0447\u0430\u0441\u0442\u0438\u0435 \u0432 \u043d\u0430\u0448\u0435\u043c \u043e\u043f\u0440\u043e\u0441\u0435!"}, "disqualification_type": "message", "disqualification_message": "\u0421\u043f\u0430\u0441\u0438\u0431\u043e \u0437\u0430 \u0443\u0447\u0430\u0441\u0442\u0438\u0435 \u0432 \u043d\u0430\u0448\u0435\u043c \u043e\u043f\u0440\u043e\u0441\u0435!", "disqualification_url": "https://ru.surveymonkey.com", "closed_page_message": "\u0412 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u0435 \u0432\u0440\u0435\u043c\u044f \u044d\u0442\u043e\u0442 \u043e\u043f\u0440\u043e\u0441 \u0437\u0430\u043a\u0440\u044b\u0442. \u0417\u0430 \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0435\u0439 \u043e\u0431\u0440\u0430\u0449\u0430\u0439\u0442\u0435\u0441\u044c \u043a \u0430\u0432\u0442\u043e\u0440\u0443 \u043e\u043f\u0440\u043e\u0441\u0430.", "redirect_type": "url", "redirect_url": "https://ru.surveymonkey.com", "display_survey_results": false, "edit_response_type": "until_complete", "anonymous_type": "not_anonymous", "allow_multiple_responses": false, "date_modified": "2021-06-10T11:03:00+00:00", "date_created": "2021-06-09T21:08:00+00:00", "response_count": 21, "password_enabled": false, "response_limit": null, "respondent_authentication": false, "sender_email": null, "close_date": null, "url": "https://ru.surveymonkey.com/r/NCH93N6", "href": "https://api.surveymonkey.com/v3/collectors/405829319"}, "emitted_at": 1681915522481} +{"stream": "collectors", "data": {"status": "open", "id": "405829931", "survey_id": "307785448", "type": "weblink", "name": "Web Link 1", "thank_you_message": "\u0421\u043f\u0430\u0441\u0438\u0431\u043e \u0437\u0430 \u0443\u0447\u0430\u0441\u0442\u0438\u0435 \u0432 \u043d\u0430\u0448\u0435\u043c \u043e\u043f\u0440\u043e\u0441\u0435!", "thank_you_page": {"is_enabled": false, "message": "\u0421\u043f\u0430\u0441\u0438\u0431\u043e \u0437\u0430 \u0443\u0447\u0430\u0441\u0442\u0438\u0435 \u0432 \u043d\u0430\u0448\u0435\u043c \u043e\u043f\u0440\u043e\u0441\u0435!"}, "disqualification_type": "message", "disqualification_message": "\u0421\u043f\u0430\u0441\u0438\u0431\u043e \u0437\u0430 \u0443\u0447\u0430\u0441\u0442\u0438\u0435 \u0432 \u043d\u0430\u0448\u0435\u043c \u043e\u043f\u0440\u043e\u0441\u0435!", "disqualification_url": "https://ru.surveymonkey.com", "closed_page_message": "\u0412 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u0435 \u0432\u0440\u0435\u043c\u044f \u044d\u0442\u043e\u0442 \u043e\u043f\u0440\u043e\u0441 \u0437\u0430\u043a\u0440\u044b\u0442. \u0417\u0430 \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0435\u0439 \u043e\u0431\u0440\u0430\u0449\u0430\u0439\u0442\u0435\u0441\u044c \u043a \u0430\u0432\u0442\u043e\u0440\u0443 \u043e\u043f\u0440\u043e\u0441\u0430.", "redirect_type": "url", "redirect_url": "https://ru.surveymonkey.com", "display_survey_results": false, "edit_response_type": "until_complete", "anonymous_type": "not_anonymous", "allow_multiple_responses": false, "date_modified": "2021-06-10T11:03:00+00:00", "date_created": "2021-06-09T21:21:00+00:00", "response_count": 18, "password_enabled": false, "response_limit": null, "respondent_authentication": false, "sender_email": null, "close_date": null, "url": "https://ru.surveymonkey.com/r/NS2ZPQC", "href": "https://api.surveymonkey.com/v3/collectors/405829931"}, "emitted_at": 1681915524428} +{"stream": "collectors", "data": {"status": "open", "id": "405843442", "survey_id": "307784863", "type": "weblink", "name": "Web Link 1", "thank_you_message": "Vielen Dank, dass Sie die Umfrage abgeschlossen haben!", "thank_you_page": {"is_enabled": false, "message": "Vielen Dank, dass Sie die Umfrage abgeschlossen haben!"}, "disqualification_type": "message", "disqualification_message": "Vielen Dank, dass Sie die Umfrage abgeschlossen haben!", "disqualification_url": "https://de.surveymonkey.com", "closed_page_message": "Diese Umfrage ist derzeit geschlossen. Wenden Sie sich an den Autor dieser Umfrage, um weitere Hilfe zu erhalten.", "redirect_type": "url", "redirect_url": "https://de.surveymonkey.com", "display_survey_results": false, "edit_response_type": "until_complete", "anonymous_type": "not_anonymous", "allow_multiple_responses": false, "date_modified": "2021-06-10T11:04:00+00:00", "date_created": "2021-06-10T06:32:00+00:00", "response_count": 20, "password_enabled": false, "response_limit": null, "respondent_authentication": false, "sender_email": null, "close_date": null, "url": "https://de.surveymonkey.com/r/GDQLK9D", "href": "https://api.surveymonkey.com/v3/collectors/405843442"}, "emitted_at": 1681915526346} +{"stream": "collectors", "data": {"status": "open", "id": "405829776", "survey_id": "307784846", "type": "weblink", "name": "Web Link 1", "thank_you_message": "\u0421\u043f\u0430\u0441\u0438\u0431\u043e \u0437\u0430 \u0443\u0447\u0430\u0441\u0442\u0438\u0435 \u0432 \u043d\u0430\u0448\u0435\u043c \u043e\u043f\u0440\u043e\u0441\u0435!", "thank_you_page": {"is_enabled": false, "message": "\u0421\u043f\u0430\u0441\u0438\u0431\u043e \u0437\u0430 \u0443\u0447\u0430\u0441\u0442\u0438\u0435 \u0432 \u043d\u0430\u0448\u0435\u043c \u043e\u043f\u0440\u043e\u0441\u0435!"}, "disqualification_type": "message", "disqualification_message": "\u0421\u043f\u0430\u0441\u0438\u0431\u043e \u0437\u0430 \u0443\u0447\u0430\u0441\u0442\u0438\u0435 \u0432 \u043d\u0430\u0448\u0435\u043c \u043e\u043f\u0440\u043e\u0441\u0435!", "disqualification_url": "https://ru.surveymonkey.com", "closed_page_message": "\u0412 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u0435 \u0432\u0440\u0435\u043c\u044f \u044d\u0442\u043e\u0442 \u043e\u043f\u0440\u043e\u0441 \u0437\u0430\u043a\u0440\u044b\u0442. \u0417\u0430 \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0435\u0439 \u043e\u0431\u0440\u0430\u0449\u0430\u0439\u0442\u0435\u0441\u044c \u043a \u0430\u0432\u0442\u043e\u0440\u0443 \u043e\u043f\u0440\u043e\u0441\u0430.", "redirect_type": "url", "redirect_url": "https://ru.surveymonkey.com", "display_survey_results": false, "edit_response_type": "until_complete", "anonymous_type": "not_anonymous", "allow_multiple_responses": false, "date_modified": "2021-06-10T11:05:00+00:00", "date_created": "2021-06-09T21:18:00+00:00", "response_count": 20, "password_enabled": false, "response_limit": null, "respondent_authentication": false, "sender_email": null, "close_date": null, "url": "https://ru.surveymonkey.com/r/NWW9NKW", "href": "https://api.surveymonkey.com/v3/collectors/405829776"}, "emitted_at": 1681915528130} +{"stream": "collectors", "data": {"status": "open", "id": "405843460", "survey_id": "307784856", "type": "weblink", "name": "Web Link 1", "thank_you_message": "\u0421\u043f\u0430\u0441\u0438\u0431\u043e \u0437\u0430 \u0443\u0447\u0430\u0441\u0442\u0438\u0435 \u0432 \u043d\u0430\u0448\u0435\u043c \u043e\u043f\u0440\u043e\u0441\u0435!", "thank_you_page": {"is_enabled": false, "message": "\u0421\u043f\u0430\u0441\u0438\u0431\u043e \u0437\u0430 \u0443\u0447\u0430\u0441\u0442\u0438\u0435 \u0432 \u043d\u0430\u0448\u0435\u043c \u043e\u043f\u0440\u043e\u0441\u0435!"}, "disqualification_type": "message", "disqualification_message": "\u0421\u043f\u0430\u0441\u0438\u0431\u043e \u0437\u0430 \u0443\u0447\u0430\u0441\u0442\u0438\u0435 \u0432 \u043d\u0430\u0448\u0435\u043c \u043e\u043f\u0440\u043e\u0441\u0435!", "disqualification_url": "https://ru.surveymonkey.com", "closed_page_message": "\u0412 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u0435 \u0432\u0440\u0435\u043c\u044f \u044d\u0442\u043e\u0442 \u043e\u043f\u0440\u043e\u0441 \u0437\u0430\u043a\u0440\u044b\u0442. \u0417\u0430 \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0435\u0439 \u043e\u0431\u0440\u0430\u0449\u0430\u0439\u0442\u0435\u0441\u044c \u043a \u0430\u0432\u0442\u043e\u0440\u0443 \u043e\u043f\u0440\u043e\u0441\u0430.", "redirect_type": "url", "redirect_url": "https://ru.surveymonkey.com", "display_survey_results": false, "edit_response_type": "until_complete", "anonymous_type": "not_anonymous", "allow_multiple_responses": false, "date_modified": "2021-06-10T11:05:00+00:00", "date_created": "2021-06-10T06:32:00+00:00", "response_count": 20, "password_enabled": false, "response_limit": null, "respondent_authentication": false, "sender_email": null, "close_date": null, "url": "https://ru.surveymonkey.com/r/GDSZR22", "href": "https://api.surveymonkey.com/v3/collectors/405843460"}, "emitted_at": 1681915529815} +{"stream": "collectors", "data": {"status": "open", "id": "405843624", "survey_id": "307785388", "type": "weblink", "name": "Web Link 1", "thank_you_message": "\u0421\u043f\u0430\u0441\u0438\u0431\u043e \u0437\u0430 \u0443\u0447\u0430\u0441\u0442\u0438\u0435 \u0432 \u043d\u0430\u0448\u0435\u043c \u043e\u043f\u0440\u043e\u0441\u0435!", "thank_you_page": {"is_enabled": false, "message": "\u0421\u043f\u0430\u0441\u0438\u0431\u043e \u0437\u0430 \u0443\u0447\u0430\u0441\u0442\u0438\u0435 \u0432 \u043d\u0430\u0448\u0435\u043c \u043e\u043f\u0440\u043e\u0441\u0435!"}, "disqualification_type": "message", "disqualification_message": "\u0421\u043f\u0430\u0441\u0438\u0431\u043e \u0437\u0430 \u0443\u0447\u0430\u0441\u0442\u0438\u0435 \u0432 \u043d\u0430\u0448\u0435\u043c \u043e\u043f\u0440\u043e\u0441\u0435!", "disqualification_url": "https://ru.surveymonkey.com", "closed_page_message": "\u0412 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u0435 \u0432\u0440\u0435\u043c\u044f \u044d\u0442\u043e\u0442 \u043e\u043f\u0440\u043e\u0441 \u0437\u0430\u043a\u0440\u044b\u0442. \u0417\u0430 \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0435\u0439 \u043e\u0431\u0440\u0430\u0449\u0430\u0439\u0442\u0435\u0441\u044c \u043a \u0430\u0432\u0442\u043e\u0440\u0443 \u043e\u043f\u0440\u043e\u0441\u0430.", "redirect_type": "url", "redirect_url": "https://ru.surveymonkey.com", "display_survey_results": false, "edit_response_type": "until_complete", "anonymous_type": "not_anonymous", "allow_multiple_responses": false, "date_modified": "2021-06-10T11:06:00+00:00", "date_created": "2021-06-10T06:40:00+00:00", "response_count": 20, "password_enabled": false, "response_limit": null, "respondent_authentication": false, "sender_email": null, "close_date": null, "url": "https://ru.surveymonkey.com/r/GYWV533", "href": "https://api.surveymonkey.com/v3/collectors/405843624"}, "emitted_at": 1681915531700} +{"stream": "collectors", "data": {"status": "open", "id": "405843634", "survey_id": "307785415", "type": "weblink", "name": "Web Link 1", "thank_you_message": "\u0421\u043f\u0430\u0441\u0438\u0431\u043e \u0437\u0430 \u0443\u0447\u0430\u0441\u0442\u0438\u0435 \u0432 \u043d\u0430\u0448\u0435\u043c \u043e\u043f\u0440\u043e\u0441\u0435!", "thank_you_page": {"is_enabled": false, "message": "\u0421\u043f\u0430\u0441\u0438\u0431\u043e \u0437\u0430 \u0443\u0447\u0430\u0441\u0442\u0438\u0435 \u0432 \u043d\u0430\u0448\u0435\u043c \u043e\u043f\u0440\u043e\u0441\u0435!"}, "disqualification_type": "message", "disqualification_message": "\u0421\u043f\u0430\u0441\u0438\u0431\u043e \u0437\u0430 \u0443\u0447\u0430\u0441\u0442\u0438\u0435 \u0432 \u043d\u0430\u0448\u0435\u043c \u043e\u043f\u0440\u043e\u0441\u0435!", "disqualification_url": "https://ru.surveymonkey.com", "closed_page_message": "\u0412 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u0435 \u0432\u0440\u0435\u043c\u044f \u044d\u0442\u043e\u0442 \u043e\u043f\u0440\u043e\u0441 \u0437\u0430\u043a\u0440\u044b\u0442. \u0417\u0430 \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0435\u0439 \u043e\u0431\u0440\u0430\u0449\u0430\u0439\u0442\u0435\u0441\u044c \u043a \u0430\u0432\u0442\u043e\u0440\u0443 \u043e\u043f\u0440\u043e\u0441\u0430.", "redirect_type": "url", "redirect_url": "https://ru.surveymonkey.com", "display_survey_results": false, "edit_response_type": "until_complete", "anonymous_type": "not_anonymous", "allow_multiple_responses": false, "date_modified": "2021-06-10T11:07:00+00:00", "date_created": "2021-06-10T06:40:00+00:00", "response_count": 20, "password_enabled": false, "response_limit": null, "respondent_authentication": false, "sender_email": null, "close_date": null, "url": "https://ru.surveymonkey.com/r/GYS33KN", "href": "https://api.surveymonkey.com/v3/collectors/405843634"}, "emitted_at": 1681915533510} +{"stream": "survey_collectors", "data": {"name": "Web Link 1", "id": "405437100", "href": "https://api.surveymonkey.com/v3/collectors/405437100", "type": "weblink", "survey_id": "306079584"}, "emitted_at": 1681918860499} +{"stream": "survey_collectors", "data": {"name": "Web Link 1", "id": "405843657", "href": "https://api.surveymonkey.com/v3/collectors/405843657", "type": "weblink", "survey_id": "307785429"}, "emitted_at": 1681918861357} +{"stream": "survey_collectors", "data": {"name": "Web Link 1", "id": "405843665", "href": "https://api.surveymonkey.com/v3/collectors/405843665", "type": "weblink", "survey_id": "307785444"}, "emitted_at": 1681918862236} +{"stream": "survey_collectors", "data": {"name": "Web Link 1", "id": "405843672", "href": "https://api.surveymonkey.com/v3/collectors/405843672", "type": "weblink", "survey_id": "307785394"}, "emitted_at": 1681918863235} +{"stream": "survey_collectors", "data": {"name": "Web Link 1", "id": "405843682", "href": "https://api.surveymonkey.com/v3/collectors/405843682", "type": "weblink", "survey_id": "307785402"}, "emitted_at": 1681918864098} +{"stream": "survey_collectors", "data": {"name": "Web Link 1", "id": "405843688", "href": "https://api.surveymonkey.com/v3/collectors/405843688", "type": "weblink", "survey_id": "307785408"}, "emitted_at": 1681918865029} +{"stream": "survey_collectors", "data": {"name": "Web Link 1", "id": "405829319", "href": "https://api.surveymonkey.com/v3/collectors/405829319", "type": "weblink", "survey_id": "307784834"}, "emitted_at": 1681918865930} +{"stream": "survey_collectors", "data": {"name": "Web Link 1", "id": "405829931", "href": "https://api.surveymonkey.com/v3/collectors/405829931", "type": "weblink", "survey_id": "307785448"}, "emitted_at": 1681918866981} +{"stream": "survey_collectors", "data": {"name": "Web Link 1", "id": "405843442", "href": "https://api.surveymonkey.com/v3/collectors/405843442", "type": "weblink", "survey_id": "307784863"}, "emitted_at": 1681918868050} +{"stream": "survey_collectors", "data": {"name": "Web Link 1", "id": "405829776", "href": "https://api.surveymonkey.com/v3/collectors/405829776", "type": "weblink", "survey_id": "307784846"}, "emitted_at": 1681918868953} +{"stream": "survey_collectors", "data": {"name": "Web Link 1", "id": "405843460", "href": "https://api.surveymonkey.com/v3/collectors/405843460", "type": "weblink", "survey_id": "307784856"}, "emitted_at": 1681918870019} +{"stream": "survey_collectors", "data": {"name": "Web Link 1", "id": "405843624", "href": "https://api.surveymonkey.com/v3/collectors/405843624", "type": "weblink", "survey_id": "307785388"}, "emitted_at": 1681918870844} +{"stream": "survey_collectors", "data": {"name": "Web Link 1", "id": "405843634", "href": "https://api.surveymonkey.com/v3/collectors/405843634", "type": "weblink", "survey_id": "307785415"}, "emitted_at": 1681918871852} \ No newline at end of file diff --git a/airbyte-integrations/connectors/source-surveymonkey/integration_tests/survey_collectors.json b/airbyte-integrations/connectors/source-surveymonkey/integration_tests/survey_collectors.json new file mode 100644 index 0000000000000..4de686e2fbf8e --- /dev/null +++ b/airbyte-integrations/connectors/source-surveymonkey/integration_tests/survey_collectors.json @@ -0,0 +1,22 @@ +{ + "streams": [ + { + "stream": { + "name": "collectors", + "json_schema": {}, + "supported_sync_modes": ["full_refresh"] + }, + "sync_mode": "full_refresh", + "destination_sync_mode": "append" + }, + { + "stream": { + "name": "survey_collectors", + "json_schema": {}, + "supported_sync_modes": ["full_refresh"] + }, + "sync_mode": "full_refresh", + "destination_sync_mode": "append" + } + ] +} diff --git a/airbyte-integrations/connectors/source-surveymonkey/source_surveymonkey/schemas/collectors.json b/airbyte-integrations/connectors/source-surveymonkey/source_surveymonkey/schemas/collectors.json new file mode 100644 index 0000000000000..5726d61b54ea2 --- /dev/null +++ b/airbyte-integrations/connectors/source-surveymonkey/source_surveymonkey/schemas/collectors.json @@ -0,0 +1,87 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "type": "object", + "additionalProperties": true, + "properties": { + "id": { + "type": ["string", "null"] + }, + "status": { + "type": ["string", "null"] + }, + "survey_id": { + "type": ["string", "null"] + }, + "type": { + "type": ["string", "null"] + }, + "name": { + "type": ["string", "null"] + }, + "thank_you_message": { + "type": ["string", "null"] + }, + "thank_you_page": { + "type": ["object", "null"], + "additionalProperties": true, + "properties": { + "is_enabled": { + "type": ["boolean", "null"] + }, + "message": { + "type": ["string", "null"] + } + } + }, + "disqualification_message": { + "type": ["string", "null"] + }, + "disqualification_url": { + "type": ["string", "null"] + }, + "close_date": { + "type": ["string", "null"], + "format": "date-time" + }, + "closed_page_message": { + "type": ["string", "null"] + }, + "redirect_url": { + "type": ["string", "null"] + }, + "display_survey_results": { + "type": ["boolean", "null"] + }, + "edit_response_type": { + "type": ["string", "null"] + }, + "anonymous_type": { + "type": ["string", "null"] + }, + "allow_multiple_responses": { + "type": ["boolean", "null"] + }, + "date_modified": { + "type": ["string", "null"], + "format": "date-time" + }, + "sender_email": { + "type": ["string", "null"] + }, + "password_enabled": { + "type": ["boolean", "null"] + }, + "response_limit": { + "type": ["number", "null"] + }, + "redirect_type": { + "type": ["string", "null"] + }, + "respondent_authentication": { + "type": ["boolean", "null"] + }, + "href": { + "type": ["string", "null"] + } + } +} diff --git a/airbyte-integrations/connectors/source-surveymonkey/source_surveymonkey/schemas/survey_collectors.json b/airbyte-integrations/connectors/source-surveymonkey/source_surveymonkey/schemas/survey_collectors.json new file mode 100644 index 0000000000000..ee17ce809fe8e --- /dev/null +++ b/airbyte-integrations/connectors/source-surveymonkey/source_surveymonkey/schemas/survey_collectors.json @@ -0,0 +1,19 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "type": "object", + "additionalProperties": true, + "properties": { + "id": { + "type": ["string", "null"] + }, + "name": { + "type": ["string", "null"] + }, + "href": { + "type": ["string", "null"] + }, + "survey_id": { + "type": ["string", "null"] + } + } +} diff --git a/airbyte-integrations/connectors/source-surveymonkey/source_surveymonkey/source.py b/airbyte-integrations/connectors/source-surveymonkey/source_surveymonkey/source.py index c9931b608fed3..15dc2aac82ed2 100644 --- a/airbyte-integrations/connectors/source-surveymonkey/source_surveymonkey/source.py +++ b/airbyte-integrations/connectors/source-surveymonkey/source_surveymonkey/source.py @@ -13,7 +13,7 @@ from airbyte_cdk.sources.streams import Stream from airbyte_cdk.sources.streams.http.auth import TokenAuthenticator -from .streams import SurveyPages, SurveyQuestions, SurveyResponses, Surveys +from .streams import Collectors, SurveyCollectors, SurveyPages, SurveyQuestions, SurveyResponses, Surveys class SourceSurveymonkey(AbstractSource): @@ -74,7 +74,14 @@ def streams(self, config: Mapping[str, Any]) -> List[Stream]: start_date = pendulum.parse(config["start_date"]) survey_ids = config.get("survey_ids", []) args = {"authenticator": authenticator, "start_date": start_date, "survey_ids": survey_ids} - return [Surveys(**args), SurveyPages(**args), SurveyQuestions(**args), SurveyResponses(**args)] + return [ + Collectors(**args), + Surveys(**args), + SurveyCollectors(**args), + SurveyPages(**args), + SurveyQuestions(**args), + SurveyResponses(**args), + ] @staticmethod def get_authenticator(config: Mapping[str, Any]): diff --git a/airbyte-integrations/connectors/source-surveymonkey/source_surveymonkey/streams.py b/airbyte-integrations/connectors/source-surveymonkey/source_surveymonkey/streams.py index 10ca249e9bb7c..8eccd8bc21597 100644 --- a/airbyte-integrations/connectors/source-surveymonkey/source_surveymonkey/streams.py +++ b/airbyte-integrations/connectors/source-surveymonkey/source_surveymonkey/streams.py @@ -262,3 +262,37 @@ def request_params(self, stream_state: Mapping[str, Any], stream_slice: Mapping[ since_value = self._start_date params["start_modified_at"] = since_value.strftime("%Y-%m-%dT%H:%M:%S") return params + + +class SurveyCollectors(SurveyIDSliceMixin, SurveymonkeyStream): + """ + API Docs: https://www.surveymonkey.com/developer/api/v3/#api-endpoints-get-surveys-id-collectors + """ + + def path(self, stream_slice: Mapping[str, Any] = None, **kwargs) -> str: + return f"surveys/{ stream_slice['survey_id'] }/collectors" + + def parse_response(self, response: requests.Response, stream_state: Mapping[str, Any], **kwargs) -> Iterable[Mapping]: + data = super().parse_response(response=response, stream_state=stream_state, **kwargs) + for record in data: + record["survey_id"] = kwargs.get("stream_slice", {}).get("survey_id") + yield record + + +class Collectors(SurveymonkeyStream): + """ + API Docs: https://www.surveymonkey.com/developer/api/v3/#api-endpoints-get-collectors-id- + """ + + data_field = None + + def path(self, stream_slice: Mapping[str, Any] = None, **kwargs) -> str: + return f"collectors/{stream_slice['collector_id']}" + + def stream_slices(self, stream_state: Mapping[str, Any] = None, **kwargs): + + survey_collectors = SurveyCollectors(start_date=self._start_date, survey_ids=self._survey_ids, authenticator=self.authenticator) + survey_ids = survey_collectors.stream_slices(stream_state, **kwargs) + for slice in survey_ids: + for collector in survey_collectors.read_records(sync_mode=SyncMode.full_refresh, stream_state=stream_state, stream_slice=slice): + yield {"collector_id": collector["id"]} diff --git a/airbyte-integrations/connectors/source-surveymonkey/unit_tests/test_source.py b/airbyte-integrations/connectors/source-surveymonkey/unit_tests/test_source.py index cae113f884aa1..855f9eb5a67e5 100644 --- a/airbyte-integrations/connectors/source-surveymonkey/unit_tests/test_source.py +++ b/airbyte-integrations/connectors/source-surveymonkey/unit_tests/test_source.py @@ -15,7 +15,7 @@ def test_source_streams(): streams = SourceSurveymonkey().streams(config=new_source_config) - assert len(streams) == 4 + assert len(streams) == 6 def test_source_check_connection_old_config(requests_mock): diff --git a/airbyte-integrations/connectors/source-surveymonkey/unit_tests/test_streams.py b/airbyte-integrations/connectors/source-surveymonkey/unit_tests/test_streams.py index 8b448159a25cd..40a1753a89d99 100644 --- a/airbyte-integrations/connectors/source-surveymonkey/unit_tests/test_streams.py +++ b/airbyte-integrations/connectors/source-surveymonkey/unit_tests/test_streams.py @@ -8,7 +8,7 @@ import pytest from airbyte_cdk.models import SyncMode from airbyte_cdk.sources.streams.http.auth import NoAuth -from source_surveymonkey.streams import SurveyIds, SurveyPages, SurveyQuestions, SurveyResponses, Surveys +from source_surveymonkey.streams import SurveyCollectors, SurveyIds, SurveyPages, SurveyQuestions, SurveyResponses, Surveys args_mock = {"authenticator": NoAuth(), "start_date": pendulum.parse("2000-01-01"), "survey_ids": []} @@ -326,10 +326,31 @@ def test_survey_questions(requests_mock): ] +def test_survey_collectors(requests_mock): + requests_mock.get("https://api.surveymonkey.com/v3/surveys/307785415/collectors", json={ + "data": [{"name": "Teams Poll", "id": "1", "href": "https://api.surveymonkey.com/v3/collectors/1"}], + "per_page": 50, + "page": 1, + "total": 1, + "links": { + "self": "https://api.surveymonkey.com/v3/surveys/307785415/collectors?page=1&per_page=50" + } + }) + args = {**args_mock, **{"survey_ids": ["307785415"]}} + records = SurveyCollectors(**args).read_records(sync_mode=SyncMode.full_refresh, stream_slice={"survey_id": "307785415"}) + assert list(records) == [ + { + "name": "Teams Poll", + "id": "1", + "href": "https://api.surveymonkey.com/v3/collectors/1", + "survey_id": "307785415" + } + ] + + def test_surveys_next_page_token(): args = {**args_mock, **{"survey_ids": ["307785415"]}} stream = SurveyIds(**args) - mockresponse = Mock() mockresponse.json.return_value = { "links": { diff --git a/connectors.md b/connectors.md index c1eafe972cdc1..fb8865b72fcd3 100644 --- a/connectors.md +++ b/connectors.md @@ -101,7 +101,7 @@ | **Google Sheets** | Google Sheets icon | Source | airbyte/source-google-sheets:0.2.37 | generally_available | [docs](https://docs.airbyte.com/integrations/sources/google-sheets) | [connectors/source/google-sheets](https://github.com/airbytehq/airbyte/issues?q=is:open+is:issue+label:connectors/source/google-sheets) | [source-google-sheets](https://github.com/airbytehq/airbyte/tree/master/airbyte-integrations/connectors/source-google-sheets) | `71607ba1-c0ac-4799-8049-7f4b90dd50f7` | | **Google Webfonts** | Google Webfonts icon | Source | airbyte/source-google-webfonts:0.1.0 | alpha | [docs](https://docs.airbyte.com/integrations/sources/google-webfonts) | [connectors/source/google-webfonts](https://github.com/airbytehq/airbyte/issues?q=is:open+is:issue+label:connectors/source/google-webfonts) | [source-google-webfonts](https://github.com/airbytehq/airbyte/tree/master/airbyte-integrations/connectors/source-google-webfonts) | `a68fbcde-b465-4ab3-b2a6-b0590a875835` | | **Google Workspace Admin Reports** | Google Workspace Admin Reports icon | Source | airbyte/source-google-workspace-admin-reports:0.1.8 | alpha | [docs](https://docs.airbyte.com/integrations/sources/google-workspace-admin-reports) | [connectors/source/google-workspace-admin-reports](https://github.com/airbytehq/airbyte/issues?q=is:open+is:issue+label:connectors/source/google-workspace-admin-reports) | [source-google-workspace-admin-reports](https://github.com/airbytehq/airbyte/tree/master/airbyte-integrations/connectors/source-google-workspace-admin-reports) | `ed9dfefa-1bbc-419d-8c5e-4d78f0ef6734` | -| **Greenhouse** | Greenhouse icon | Source | airbyte/source-greenhouse:0.3.1 | generally_available | [docs](https://docs.airbyte.com/integrations/sources/greenhouse) | [connectors/source/greenhouse](https://github.com/airbytehq/airbyte/issues?q=is:open+is:issue+label:connectors/source/greenhouse) | [source-greenhouse](https://github.com/airbytehq/airbyte/tree/master/airbyte-integrations/connectors/source-greenhouse) | `59f1e50a-331f-4f09-b3e8-2e8d4d355f44` | +| **Greenhouse** | Greenhouse icon | Source | airbyte/source-greenhouse:0.4.0 | generally_available | [docs](https://docs.airbyte.com/integrations/sources/greenhouse) | [connectors/source/greenhouse](https://github.com/airbytehq/airbyte/issues?q=is:open+is:issue+label:connectors/source/greenhouse) | [source-greenhouse](https://github.com/airbytehq/airbyte/tree/master/airbyte-integrations/connectors/source-greenhouse) | `59f1e50a-331f-4f09-b3e8-2e8d4d355f44` | | **Gridly** | Gridly icon | Source | airbyte/source-gridly:0.1.1 | alpha | [docs](https://docs.airbyte.com/integrations/sources/gridly) | [connectors/source/gridly](https://github.com/airbytehq/airbyte/issues?q=is:open+is:issue+label:connectors/source/gridly) | [source-gridly](https://github.com/airbytehq/airbyte/tree/master/airbyte-integrations/connectors/source-gridly) | `6cbea164-3237-433b-9abb-36d384ee4cbf` | | **Gutendex** | x | Source | airbyte/source-gutendex:0.1.0 | alpha | [docs](https://docs.airbyte.com/integrations/sources/gutendex) | [connectors/source/gutendex](https://github.com/airbytehq/airbyte/issues?q=is:open+is:issue+label:connectors/source/gutendex) | [source-gutendex](https://github.com/airbytehq/airbyte/tree/master/airbyte-integrations/connectors/source-gutendex) | `bff9a277-e01d-420d-81ee-80f28a307318` | | **Harness** | Harness icon | Source | farosai/airbyte-harness-source:0.1.23 | alpha | [docs](https://docs.airbyte.com/integrations/sources/harness) | [connectors/destination/airbyte-harness-source](https://github.com/airbytehq/airbyte/issues?q=is:open+is:issue+label:connectors/destination/airbyte-harness-source) | [airbyte-harness-source](https://github.com/airbytehq/airbyte/tree/master/airbyte-integrations/connectors/airbyte-harness-source) | `6fe89830-d04d-401b-aad6-6552ffa5c4af` | @@ -139,7 +139,7 @@ | **Mailgun** | Mailgun icon | Source | airbyte/source-mailgun:0.1.1 | alpha | [docs](https://docs.airbyte.com/integrations/sources/mailgun) | [connectors/source/mailgun](https://github.com/airbytehq/airbyte/issues?q=is:open+is:issue+label:connectors/source/mailgun) | [source-mailgun](https://github.com/airbytehq/airbyte/tree/master/airbyte-integrations/connectors/source-mailgun) | `5b9cb09e-1003-4f9c-983d-5779d1b2cd51` | | **Mailjet Mail** | Mailjet Mail icon | Source | airbyte/source-mailjet-mail:0.1.1 | alpha | [docs](https://docs.airbyte.com/integrations/sources/mailjet-mail) | [connectors/source/mailjet-mail](https://github.com/airbytehq/airbyte/issues?q=is:open+is:issue+label:connectors/source/mailjet-mail) | [source-mailjet-mail](https://github.com/airbytehq/airbyte/tree/master/airbyte-integrations/connectors/source-mailjet-mail) | `56582331-5de2-476b-b913-5798de77bbdf` | | **Mailjet SMS** | Mailjet SMS icon | Source | airbyte/source-mailjet-sms:0.1.0 | alpha | [docs](https://docs.airbyte.com/integrations/sources/mailjet-sms) | [connectors/source/mailjet-sms](https://github.com/airbytehq/airbyte/issues?q=is:open+is:issue+label:connectors/source/mailjet-sms) | [source-mailjet-sms](https://github.com/airbytehq/airbyte/tree/master/airbyte-integrations/connectors/source-mailjet-sms) | `6ec2acea-7fd1-4378-b403-41a666e0c028` | -| **Marketo** | Marketo icon | Source | airbyte/source-marketo:1.0.3 | generally_available | [docs](https://docs.airbyte.com/integrations/sources/marketo) | [connectors/source/marketo](https://github.com/airbytehq/airbyte/issues?q=is:open+is:issue+label:connectors/source/marketo) | [source-marketo](https://github.com/airbytehq/airbyte/tree/master/airbyte-integrations/connectors/source-marketo) | `9e0556f4-69df-4522-a3fb-03264d36b348` | +| **Marketo** | Marketo icon | Source | airbyte/source-marketo:1.0.4 | generally_available | [docs](https://docs.airbyte.com/integrations/sources/marketo) | [connectors/source/marketo](https://github.com/airbytehq/airbyte/issues?q=is:open+is:issue+label:connectors/source/marketo) | [source-marketo](https://github.com/airbytehq/airbyte/tree/master/airbyte-integrations/connectors/source-marketo) | `9e0556f4-69df-4522-a3fb-03264d36b348` | | **Metabase** | Metabase icon | Source | airbyte/source-metabase:0.3.1 | beta | [docs](https://docs.airbyte.com/integrations/sources/metabase) | [connectors/source/metabase](https://github.com/airbytehq/airbyte/issues?q=is:open+is:issue+label:connectors/source/metabase) | [source-metabase](https://github.com/airbytehq/airbyte/tree/master/airbyte-integrations/connectors/source-metabase) | `c7cb421b-942e-4468-99ee-e369bcabaec5` | | **Microsoft Dataverse** | Microsoft Dataverse icon | Source | airbyte/source-microsoft-dataverse:0.1.1 | alpha | [docs](https://docs.airbyte.com/integrations/sources/microsoft-dataverse) | [connectors/source/microsoft-dataverse](https://github.com/airbytehq/airbyte/issues?q=is:open+is:issue+label:connectors/source/microsoft-dataverse) | [source-microsoft-dataverse](https://github.com/airbytehq/airbyte/tree/master/airbyte-integrations/connectors/source-microsoft-dataverse) | `9220e3de-3b60-4bb2-a46f-046d59ea235a` | | **Microsoft SQL Server (MSSQL)** | Microsoft SQL Server (MSSQL) icon | Source | airbyte/source-mssql:1.0.14 | alpha | [docs](https://docs.airbyte.com/integrations/sources/mssql) | [connectors/source/mssql](https://github.com/airbytehq/airbyte/issues?q=is:open+is:issue+label:connectors/source/mssql) | [source-mssql](https://github.com/airbytehq/airbyte/tree/master/airbyte-integrations/connectors/source-mssql) | `b5ea17b1-f170-46dc-bc31-cc744ca984c1` | @@ -169,12 +169,12 @@ | **PagerDuty** | PagerDuty icon | Source | farosai/airbyte-pagerduty-source:0.1.23 | alpha | [docs](https://docs.airbyte.com/integrations/sources/pagerduty) | [connectors/destination/airbyte-pagerduty-source](https://github.com/airbytehq/airbyte/issues?q=is:open+is:issue+label:connectors/destination/airbyte-pagerduty-source) | [airbyte-pagerduty-source](https://github.com/airbytehq/airbyte/tree/master/airbyte-integrations/connectors/airbyte-pagerduty-source) | `2817b3f0-04e4-4c7a-9f32-7a5e8a83db95` | | **Pardot** | Pardot icon | Source | airbyte/source-pardot:0.1.1 | alpha | [docs](https://docs.airbyte.com/integrations/sources/pardot) | [connectors/source/pardot](https://github.com/airbytehq/airbyte/issues?q=is:open+is:issue+label:connectors/source/pardot) | [source-pardot](https://github.com/airbytehq/airbyte/tree/master/airbyte-integrations/connectors/source-pardot) | `ad15c7ba-72a7-440b-af15-b9a963dc1a8a` | | **PartnerStack** | PartnerStack icon | Source | airbyte/source-partnerstack:0.1.0 | alpha | [docs](https://docs.airbyte.com/integrations/sources/partnerstack) | [connectors/source/partnerstack](https://github.com/airbytehq/airbyte/issues?q=is:open+is:issue+label:connectors/source/partnerstack) | [source-partnerstack](https://github.com/airbytehq/airbyte/tree/master/airbyte-integrations/connectors/source-partnerstack) | `d30fb809-6456-484d-8e2c-ee12e0f6888d` | -| **Paypal Transaction** | Paypal Transaction icon | Source | airbyte/source-paypal-transaction:0.1.12 | generally_available | [docs](https://docs.airbyte.com/integrations/sources/paypal-transaction) | [connectors/source/paypal-transaction](https://github.com/airbytehq/airbyte/issues?q=is:open+is:issue+label:connectors/source/paypal-transaction) | [source-paypal-transaction](https://github.com/airbytehq/airbyte/tree/master/airbyte-integrations/connectors/source-paypal-transaction) | `d913b0f2-cc51-4e55-a44c-8ba1697b9239` | +| **Paypal Transaction** | Paypal Transaction icon | Source | airbyte/source-paypal-transaction:0.1.13 | generally_available | [docs](https://docs.airbyte.com/integrations/sources/paypal-transaction) | [connectors/source/paypal-transaction](https://github.com/airbytehq/airbyte/issues?q=is:open+is:issue+label:connectors/source/paypal-transaction) | [source-paypal-transaction](https://github.com/airbytehq/airbyte/tree/master/airbyte-integrations/connectors/source-paypal-transaction) | `d913b0f2-cc51-4e55-a44c-8ba1697b9239` | | **Paystack** | Paystack icon | Source | airbyte/source-paystack:0.1.3 | beta | [docs](https://docs.airbyte.com/integrations/sources/paystack) | [connectors/source/paystack](https://github.com/airbytehq/airbyte/issues?q=is:open+is:issue+label:connectors/source/paystack) | [source-paystack](https://github.com/airbytehq/airbyte/tree/master/airbyte-integrations/connectors/source-paystack) | `193bdcb8-1dd9-48d1-aade-91cadfd74f9b` | | **Pendo** | Pendo icon | Source | airbyte/source-pendo:0.1.0 | alpha | [docs](https://docs.airbyte.com/integrations/sources/pendo) | [connectors/source/pendo](https://github.com/airbytehq/airbyte/issues?q=is:open+is:issue+label:connectors/source/pendo) | [source-pendo](https://github.com/airbytehq/airbyte/tree/master/airbyte-integrations/connectors/source-pendo) | `b1ccb590-e84f-46c0-83a0-2048ccfffdae` | | **PersistIq** | PersistIq icon | Source | airbyte/source-persistiq:0.1.0 | alpha | [docs](https://docs.airbyte.com/integrations/sources/persistiq) | [connectors/source/persistiq](https://github.com/airbytehq/airbyte/issues?q=is:open+is:issue+label:connectors/source/persistiq) | [source-persistiq](https://github.com/airbytehq/airbyte/tree/master/airbyte-integrations/connectors/source-persistiq) | `3052c77e-8b91-47e2-97a0-a29a22794b4b` | | **Pexels API** | Pexels API icon | Source | airbyte/source-pexels-api:0.1.0 | alpha | [docs](https://docs.airbyte.com/integrations/sources/pexels-api) | [connectors/source/pexels-api](https://github.com/airbytehq/airbyte/issues?q=is:open+is:issue+label:connectors/source/pexels-api) | [source-pexels-api](https://github.com/airbytehq/airbyte/tree/master/airbyte-integrations/connectors/source-pexels-api) | `69d9eb65-8026-47dc-baf1-e4bf67901fd6` | -| **Pinterest** | Pinterest icon | Source | airbyte/source-pinterest:0.2.5 | generally_available | [docs](https://docs.airbyte.com/integrations/sources/pinterest) | [connectors/source/pinterest](https://github.com/airbytehq/airbyte/issues?q=is:open+is:issue+label:connectors/source/pinterest) | [source-pinterest](https://github.com/airbytehq/airbyte/tree/master/airbyte-integrations/connectors/source-pinterest) | `5cb7e5fe-38c2-11ec-8d3d-0242ac130003` | +| **Pinterest** | Pinterest icon | Source | airbyte/source-pinterest:0.2.6 | generally_available | [docs](https://docs.airbyte.com/integrations/sources/pinterest) | [connectors/source/pinterest](https://github.com/airbytehq/airbyte/issues?q=is:open+is:issue+label:connectors/source/pinterest) | [source-pinterest](https://github.com/airbytehq/airbyte/tree/master/airbyte-integrations/connectors/source-pinterest) | `5cb7e5fe-38c2-11ec-8d3d-0242ac130003` | | **Pipedrive** | Pipedrive icon | Source | airbyte/source-pipedrive:0.1.17 | beta | [docs](https://docs.airbyte.com/integrations/sources/pipedrive) | [connectors/source/pipedrive](https://github.com/airbytehq/airbyte/issues?q=is:open+is:issue+label:connectors/source/pipedrive) | [source-pipedrive](https://github.com/airbytehq/airbyte/tree/master/airbyte-integrations/connectors/source-pipedrive) | `d8286229-c680-4063-8c59-23b9b391c700` | | **Pivotal Tracker** | Pivotal Tracker icon | Source | airbyte/source-pivotal-tracker:0.1.0 | alpha | [docs](https://docs.airbyte.com/integrations/sources/pivotal-tracker) | [connectors/source/pivotal-tracker](https://github.com/airbytehq/airbyte/issues?q=is:open+is:issue+label:connectors/source/pivotal-tracker) | [source-pivotal-tracker](https://github.com/airbytehq/airbyte/tree/master/airbyte-integrations/connectors/source-pivotal-tracker) | `d60f5393-f99e-4310-8d05-b1876820f40e` | | **Plaid** | Plaid icon | Source | airbyte/source-plaid:0.3.2 | alpha | [docs](https://docs.airbyte.com/integrations/sources/plaid) | [connectors/source/plaid](https://github.com/airbytehq/airbyte/issues?q=is:open+is:issue+label:connectors/source/plaid) | [source-plaid](https://github.com/airbytehq/airbyte/tree/master/airbyte-integrations/connectors/source-plaid) | `ed799e2b-2158-4c66-8da4-b40fe63bc72a` | @@ -183,7 +183,7 @@ | **PokeAPI** | PokeAPI icon | Source | airbyte/source-pokeapi:0.1.5 | alpha | [docs](https://docs.airbyte.com/integrations/sources/pokeapi) | [connectors/source/pokeapi](https://github.com/airbytehq/airbyte/issues?q=is:open+is:issue+label:connectors/source/pokeapi) | [source-pokeapi](https://github.com/airbytehq/airbyte/tree/master/airbyte-integrations/connectors/source-pokeapi) | `6371b14b-bc68-4236-bfbd-468e8df8e968` | | **Polygon Stock API** | Polygon Stock API icon | Source | airbyte/source-polygon-stock-api:0.1.1 | alpha | [docs](https://docs.airbyte.com/integrations/sources/polygon-stock-api) | [connectors/source/polygon-stock-api](https://github.com/airbytehq/airbyte/issues?q=is:open+is:issue+label:connectors/source/polygon-stock-api) | [source-polygon-stock-api](https://github.com/airbytehq/airbyte/tree/master/airbyte-integrations/connectors/source-polygon-stock-api) | `5807d72f-0abc-49f9-8fa5-ae820007032b` | | **PostHog** | PostHog icon | Source | airbyte/source-posthog:0.1.9 | beta | [docs](https://docs.airbyte.com/integrations/sources/posthog) | [connectors/source/posthog](https://github.com/airbytehq/airbyte/issues?q=is:open+is:issue+label:connectors/source/posthog) | [source-posthog](https://github.com/airbytehq/airbyte/tree/master/airbyte-integrations/connectors/source-posthog) | `af6d50ee-dddf-4126-a8ee-7faee990774f` | -| **Postgres** | Postgres icon | Source | airbyte/source-postgres:2.0.25 | generally_available | [docs](https://docs.airbyte.com/integrations/sources/postgres) | [connectors/source/postgres](https://github.com/airbytehq/airbyte/issues?q=is:open+is:issue+label:connectors/source/postgres) | [source-postgres](https://github.com/airbytehq/airbyte/tree/master/airbyte-integrations/connectors/source-postgres) | `decd338e-5647-4c0b-adf4-da0e75f5a750` | +| **Postgres** | Postgres icon | Source | airbyte/source-postgres:2.0.27 | generally_available | [docs](https://docs.airbyte.com/integrations/sources/postgres) | [connectors/source/postgres](https://github.com/airbytehq/airbyte/issues?q=is:open+is:issue+label:connectors/source/postgres) | [source-postgres](https://github.com/airbytehq/airbyte/tree/master/airbyte-integrations/connectors/source-postgres) | `decd338e-5647-4c0b-adf4-da0e75f5a750` | | **Postmark App** | Postmark App icon | Source | airbyte/source-postmarkapp:0.1.0 | alpha | [docs](https://docs.airbyte.com/integrations/sources/postmarkapp) | [connectors/source/postmarkapp](https://github.com/airbytehq/airbyte/issues?q=is:open+is:issue+label:connectors/source/postmarkapp) | [source-postmarkapp](https://github.com/airbytehq/airbyte/tree/master/airbyte-integrations/connectors/source-postmarkapp) | `cde75ca1-1e28-4a0f-85bb-90c546de9f1f` | | **PrestaShop** | PrestaShop icon | Source | airbyte/source-prestashop:0.3.1 | beta | [docs](https://docs.airbyte.com/integrations/sources/prestashop) | [connectors/source/prestashop](https://github.com/airbytehq/airbyte/issues?q=is:open+is:issue+label:connectors/source/prestashop) | [source-prestashop](https://github.com/airbytehq/airbyte/tree/master/airbyte-integrations/connectors/source-prestashop) | `d60a46d4-709f-4092-a6b7-2457f7d455f5` | | **Primetric** | Primetric icon | Source | airbyte/source-primetric:0.1.0 | alpha | [docs](https://docs.airbyte.com/integrations/sources/primetric) | [connectors/source/primetric](https://github.com/airbytehq/airbyte/issues?q=is:open+is:issue+label:connectors/source/primetric) | [source-primetric](https://github.com/airbytehq/airbyte/tree/master/airbyte-integrations/connectors/source-primetric) | `f636c3c6-4077-45ac-b109-19fc62a283c1` | @@ -233,7 +233,7 @@ | **Strava** | Strava icon | Source | airbyte/source-strava:0.1.4 | beta | [docs](https://docs.airbyte.com/integrations/sources/strava) | [connectors/source/strava](https://github.com/airbytehq/airbyte/issues?q=is:open+is:issue+label:connectors/source/strava) | [source-strava](https://github.com/airbytehq/airbyte/tree/master/airbyte-integrations/connectors/source-strava) | `7a4327c4-315a-11ec-8d3d-0242ac130003` | | **Stripe** | Stripe icon | Source | airbyte/source-stripe:3.4.1 | generally_available | [docs](https://docs.airbyte.com/integrations/sources/stripe) | [connectors/source/stripe](https://github.com/airbytehq/airbyte/issues?q=is:open+is:issue+label:connectors/source/stripe) | [source-stripe](https://github.com/airbytehq/airbyte/tree/master/airbyte-integrations/connectors/source-stripe) | `e094cb9a-26de-4645-8761-65c0c425d1de` | | **SurveyCTO** | SurveyCTO icon | Source | airbyte/source-surveycto:0.1.1 | alpha | [docs](https://docs.airbyte.com/integrations/sources/surveycto) | [connectors/source/surveycto](https://github.com/airbytehq/airbyte/issues?q=is:open+is:issue+label:connectors/source/surveycto) | [source-surveycto](https://github.com/airbytehq/airbyte/tree/master/airbyte-integrations/connectors/source-surveycto) | `dd4632f4-15e0-4649-9b71-41719fb1fdee` | -| **SurveyMonkey** | SurveyMonkey icon | Source | airbyte/source-surveymonkey:0.1.16 | generally_available | [docs](https://docs.airbyte.com/integrations/sources/surveymonkey) | [connectors/source/surveymonkey](https://github.com/airbytehq/airbyte/issues?q=is:open+is:issue+label:connectors/source/surveymonkey) | [source-surveymonkey](https://github.com/airbytehq/airbyte/tree/master/airbyte-integrations/connectors/source-surveymonkey) | `badc5925-0485-42be-8caa-b34096cb71b5` | +| **SurveyMonkey** | SurveyMonkey icon | Source | airbyte/source-surveymonkey:0.2.0 | generally_available | [docs](https://docs.airbyte.com/integrations/sources/surveymonkey) | [connectors/source/surveymonkey](https://github.com/airbytehq/airbyte/issues?q=is:open+is:issue+label:connectors/source/surveymonkey) | [source-surveymonkey](https://github.com/airbytehq/airbyte/tree/master/airbyte-integrations/connectors/source-surveymonkey) | `badc5925-0485-42be-8caa-b34096cb71b5` | | **SurveySparrow** | SurveySparrow icon | Source | airbyte/source-survey-sparrow:0.2.0 | alpha | [docs](https://docs.airbyte.com/integrations/sources/survey-sparrow) | [connectors/source/survey-sparrow](https://github.com/airbytehq/airbyte/issues?q=is:open+is:issue+label:connectors/source/survey-sparrow) | [source-survey-sparrow](https://github.com/airbytehq/airbyte/tree/master/airbyte-integrations/connectors/source-survey-sparrow) | `4a4d887b-0f2d-4b33-ab7f-9b01b9072804` | | **TMDb** | TMDb icon | Source | airbyte/source-tmdb:0.1.0 | alpha | [docs](https://docs.airbyte.com/integrations/sources/tmdb) | [connectors/source/tmdb](https://github.com/airbytehq/airbyte/issues?q=is:open+is:issue+label:connectors/source/tmdb) | [source-tmdb](https://github.com/airbytehq/airbyte/tree/master/airbyte-integrations/connectors/source-tmdb) | `6240848f-f795-45eb-8f5e-c7542822fc03` | | **TPLcentral** | x | Source | airbyte/source-tplcentral:0.1.1 | alpha | [docs](https://docs.airbyte.com/integrations/sources/tplcentral) | [connectors/source/tplcentral](https://github.com/airbytehq/airbyte/issues?q=is:open+is:issue+label:connectors/source/tplcentral) | [source-tplcentral](https://github.com/airbytehq/airbyte/tree/master/airbyte-integrations/connectors/source-tplcentral) | `f9b6c538-ee12-42fe-8d4b-0c10f5955417` | diff --git a/deps.toml b/deps.toml index 5b3f23e50d0a9..4edc25295e74b 100644 --- a/deps.toml +++ b/deps.toml @@ -1,5 +1,5 @@ [versions] -airbyte-protocol = "1.0.0" +airbyte-protocol = "0.3.6" commons_io = "2.7" connectors-destination-testcontainers-clickhouse = "1.17.3" connectors-destination-testcontainers-elasticsearch = "1.17.3" diff --git a/docs/connector-development/README.md b/docs/connector-development/README.md index a68b97e4b22bc..42c918871e914 100644 --- a/docs/connector-development/README.md +++ b/docs/connector-development/README.md @@ -8,9 +8,13 @@ To build a new connector in Java or Python, we provide templates so you don't ne Airbyte provides some Connector Development Kits (CDKs) to help you build connectors. +### Connector builder UI + +The [connector builder UI](connector-builder-ui/overview.md) is based on the low-code development framework below and allows to develop and use connectors without leaving the Airbyte UI (no local development environment required). + ### Low-code Connector-Development Framework -You can use the [low-code framework](config-based/low-code-cdk-overview.md) to build source connectors for REST APIs via a [connector builder UI](config-based/connector-builder-ui.md) or by modifying boilerplate YAML files. +You can use the [low-code framework](config-based/low-code-cdk-overview.md) to build source connectors for REST APIs by modifying boilerplate YAML files. ### Python Connector-Development Kit \(CDK\) diff --git a/docs/connector-development/config-based/advanced-topics.md b/docs/connector-development/config-based/advanced-topics.md index b9773d09c9aa5..8914a12605407 100644 --- a/docs/connector-development/config-based/advanced-topics.md +++ b/docs/connector-development/config-based/advanced-topics.md @@ -236,7 +236,7 @@ In addition to passing additional values through the $parameters argument, macro For example, `"{{ max(2, 3) }}" -> 3` -The macros available can be found [here](https://github.com/airbytehq/airbyte/blob/master/airbyte-cdk/python/airbyte_cdk/sources/declarative/interpolation/macros.py). +The macros and variables available in all possible contexts are documented in the [YAML Reference](./understanding-the-yaml-file/reference.md#variables). Additional information on jinja templating can be found at [https://jinja.palletsprojects.com/en/3.1.x/templates/#](https://jinja.palletsprojects.com/en/3.1.x/templates/#) diff --git a/docs/connector-development/config-based/connector-builder-ui.md b/docs/connector-development/config-based/connector-builder-ui.md deleted file mode 100644 index 224c7f0719581..0000000000000 --- a/docs/connector-development/config-based/connector-builder-ui.md +++ /dev/null @@ -1,94 +0,0 @@ -# Connector Builder UI - -The connector builder UI provides an ergonomic iteration interface on top of the [low-code YAML format](https://docs.airbyte.com/connector-development/config-based/understanding-the-yaml-file/yaml-overview). We recommend using it to iterate on your low-code connectors. - -:::caution -The connector builder UI is in alpha, which means it’s still in active development and may include backward-incompatible changes. Share feedback and requests with us on our Slack channel or email us at feedback@airbyte.io - -**Developer updates will be announced via our #using-the-cdk Slack channel. If you are using the CDK, please join to stay up to date on changes and issues.** -::: - - -## Can I integrate with this API using the Connector Builder UI? -[Follow this guide to determine whether the Connector Builder UI is the right tool to build the connector you need](./connector-builder-compatibility.md). - -## Getting started - -The high level flow for using the connector builder is as follows: - -1. Run the Airbyte webapp to access the connector builder -2. Use the connector builder to iterate on your low-code connector -3. Export the YAML into a low-code connector module on your local machine -4. Build the connector's Docker image -5. Use the built connector image in Airbyte - -### Run an Airbyte instance - -:::info -You need at least Airbyte v0.40.27 to run the connector builder UI. -::: - -:::tip -We recommend using a dedicated Airbyte instance for the connector builder UI. This will allow you to pick up connector builder UI upgrades without impacting your production data pipelines. -::: - -The connector builder UI is bundled as part of the Airbyte webapp. To run it, follow [the instructions for deploying Airbyte locally](https://docs.airbyte.com/deploying-airbyte/local-deployment) to run Airbyte on your machine. Once you do, Airbyte should be reachable at `http://localhost:8000`. - -### Visit the connector builder - -Once your Airbyte instance has started and you've moved past the initial setup screen, visit `http://localhost:8000/connector-builder`. You will be redirected to a URL of the form `localhost:8000/workspaces//connector-builder` where `` is the ID automatically generated for your workspace by Airbyte - -On this page you will find the Connector Builder landing page. It should look like this: - -![The Connector Builder landing page](./assets/connector_builder_landing_page.png) - -Here you can either upload an existing low-code YAML manifest, or start building a brand new connector in the UI. If you click `Start from scratch`, you will be redirected to `localhost:8000/workspaces//connector-builder/edit`, where you will see the following screen: - -![The Connector Builder blank form](./assets/connector_builder_blank_form.png) - -You can now use this UI to build your connector. See the [Testing Panel](#connector-builder-testing-panel) section for more information on how to use the UI to iterate on your connector. - -The output of this UI is a low-code YAML representation of your connector, which you can preview by clicking the `UI | YAML` toggle button the the top-left. This screen also allows you to edit the low-code YAML directly if desired, and continue to test it in the testing panel. - -### Exporting the YAML - -Once you're done iterating on your connector in the UI, you'll need to export the low-code YAML representation of the connector to your local filesystem into a connector module. This YAML can be downloaded by clicking the `Download Config` button in the bottom-left. - -If you haven't already, create a low-code connector module using the connector generator (see [this YAML tutorial for an example](tutorial/1-create-source.md)) using the name you'd like to use for your connector. For this section, let's assume our connector is called `exchange-rates`. After creating the connector, overwrite the contents of `airbyte-integrations/connectors/source-exchange-rates/source_exchange_rates/manifest.yaml` with the YAML you created in the UI. - -### Building the connector image - -Follow the instructions in the connector README to build the Docker image. Typically this will be something like `docker build . -t airbyte/source-:`. - -Once you've built the connector image, [follow these instructions](https://docs.airbyte.com/integrations/custom-connectors#adding-your-connectors-in-the-ui) to add your connector to your Airbyte instance. - -## Connector Builder Testing Panel - -The UI contains two main components: the Builder UI where you can fill out inputs to build your connector (left), and the testing panel (right) where you can get feedback on how your connector works. - -![Annotated Test Pane](./assets/lowcode_annotated_test_pane.png) - -1. **Input parameters panel**: Configure the input parameters to be used in testing. For example, if the connector requires an API key, open this menu to input your API which will be used for testing. -2. **Stream Picker dropdown**: Use this dropdown to choose which stream you want to test -3. **Endpoint URL**: Displays the URL queried by the CDK to retrieve data for the current stream -4. **Test button**: When clicked, retrieves the data for the selected stream using the stream configuration setup in the UI. This is the equivalent of running the `read` command on the terminal for a single stream (the selected stream). -5. **Records tab**: Displays the final output returned by the connector for the selected page of data in this stream -6. **Request tab**: Displays the outgoing HTTP request made by the connector to retrieve the selected page of data. Useful for debugging. -7. **Response tab**: Displays the full HTTP response received by the connector for the selected page of data. Useful for debugging. -8. **Results view**: Displays information based on the selected tab -9. **Page selector** Displays the selected page -10. **Logs view**: Displays the logs emitted by the connector while running - - - -## Upgrading - -The connector builder ships as part of the Airbyte platform. So if you want to get the latest and greatest updates to the builder UI, follow the process for [upgrading Airbyte](https://docs.airbyte.com/operator-guides/upgrading-airbyte) and you should pick up the upgrades. diff --git a/docs/connector-development/config-based/low-code-cdk-overview.md b/docs/connector-development/config-based/low-code-cdk-overview.md index 38e99ac5e2122..76b3213a39929 100644 --- a/docs/connector-development/config-based/low-code-cdk-overview.md +++ b/docs/connector-development/config-based/low-code-cdk-overview.md @@ -1,6 +1,6 @@ # Low-code connector development -Airbyte’s low-code framework enables you to build source connectors for REST APIs via a [connector builder UI](https://docs.airbyte.com/connector-development/config-based/connector-builder-ui) or by modifying boilerplate YAML files via terminal or text editor. +Airbyte’s low-code framework enables you to build source connectors for REST APIs via a [connector builder UI](https://docs.airbyte.com/connector-development/connector-builder-ui/overview) or by modifying boilerplate YAML files via terminal or text editor. :::info Developer updates will be announced via our #using-the-cdk Slack channel. If you are using the CDK, please join to stay up to date on changes and issues. @@ -83,7 +83,7 @@ For a step-by-step tutorial, refer to the [Getting Started tutorial](./tutorial/ ## Connector Builder UI The main concept powering the lowcode connector framework is the Connector Manifest, a YAML file which describes the features and functionality of the connector. The structure of this YAML file is described in more detail [here](https://docs.airbyte.com/connector-development/config-based/understanding-the-yaml-file/yaml-overview). -We recommend iterating on this YAML file is via the [connector builder UI](https://docs.airbyte.com/connector-development/config-based/connector-builder-ui) as it makes it easy to inspect and debug your connector in greater detail than you would be able to through the commandline. While you can still iterate via the commandline (and the docs contain instructions for how to do it), we're investing heavily in making the UI give you iteration superpowers, so we recommend you check it out! +We recommend iterating on this YAML file is via the [connector builder UI](https://docs.airbyte.com/connector-development/connector-builder-ui/overview) as it makes it easy to inspect and debug your connector in greater detail than you would be able to through the commandline. While you can still iterate via the commandline (and the docs contain instructions for how to do it), we're investing heavily in making the UI give you iteration superpowers, so we recommend you check it out! ## Configuring the YAML file diff --git a/docs/connector-development/config-based/understanding-the-yaml-file/reference.md b/docs/connector-development/config-based/understanding-the-yaml-file/reference.md index bf356f75ea47c..6400771d4109e 100644 --- a/docs/connector-development/config-based/understanding-the-yaml-file/reference.md +++ b/docs/connector-development/config-based/understanding-the-yaml-file/reference.md @@ -1,3 +1,50 @@ +import ManifestYamlDefinitions from '@site/src/components/ManifestYamlDefinitions'; + +import schema from "../../../../airbyte-cdk/python/airbyte_cdk/sources/declarative/declarative_component_schema.yaml"; + + # YAML Reference -To see every component and each possible parameter, see the full YAML schema reference [here](https://github.com/airbytehq/airbyte/blob/master/airbyte-cdk/python/airbyte_cdk/sources/declarative/declarative_component_schema.yaml). +This page lists all components, interpolation variables and interpolation macros that can be used when defining a low code YAML file. + +For the technical JSON schema definition that low code manifests are validated against, see [here](https://github.com/airbytehq/airbyte/blob/master/airbyte-cdk/python/airbyte_cdk/sources/declarative/declarative_component_schema.yaml). + + + +export const toc = [ + { + "value": "Components:", + "id": "components", + "level": 2 + }, + { + value: "DeclarativeSource", + id: "/definitions/DeclarativeSource", + level: 3 + }, + ...Object.keys(schema.definitions).map((id) => ({ + value: id, + id: `/definitions/${id}`, + level: 3 + })), + { + "value": "Interpolation variables:", + "id": "variables", + "level": 2 + }, + ...schema.interpolation.variables.map((def) => ({ + value: def.title, + id: `/variables/${def.title}`, + level: 3 + })), + { + "value": "Interpolation macros:", + "id": "macros", + "level": 2 + }, + ...schema.interpolation.macros.map((def) => ({ + value: def.title, + id: `/macros/${def.title}`, + level: 3 + })) +]; \ No newline at end of file diff --git a/docs/connector-development/connector-builder-ui/assets/connector_builder_blank_form.png b/docs/connector-development/connector-builder-ui/assets/connector_builder_blank_form.png new file mode 100644 index 0000000000000..c88378fef3844 Binary files /dev/null and b/docs/connector-development/connector-builder-ui/assets/connector_builder_blank_form.png differ diff --git a/docs/connector-development/connector-builder-ui/assets/connector_builder_compatibility/filters_example.png b/docs/connector-development/connector-builder-ui/assets/connector_builder_compatibility/filters_example.png new file mode 100644 index 0000000000000..8869f8a4bf6aa Binary files /dev/null and b/docs/connector-development/connector-builder-ui/assets/connector_builder_compatibility/filters_example.png differ diff --git a/docs/connector-development/connector-builder-ui/assets/connector_builder_compatibility/offset_limit_example.png b/docs/connector-development/connector-builder-ui/assets/connector_builder_compatibility/offset_limit_example.png new file mode 100644 index 0000000000000..2c62cf293e283 Binary files /dev/null and b/docs/connector-development/connector-builder-ui/assets/connector_builder_compatibility/offset_limit_example.png differ diff --git a/docs/connector-development/connector-builder-ui/assets/connector_builder_compatibility/page_count_example.png b/docs/connector-development/connector-builder-ui/assets/connector_builder_compatibility/page_count_example.png new file mode 100644 index 0000000000000..0b4f91ac415d2 Binary files /dev/null and b/docs/connector-development/connector-builder-ui/assets/connector_builder_compatibility/page_count_example.png differ diff --git a/docs/connector-development/connector-builder-ui/assets/connector_builder_landing_page.png b/docs/connector-development/connector-builder-ui/assets/connector_builder_landing_page.png new file mode 100644 index 0000000000000..39a9d2f2d171c Binary files /dev/null and b/docs/connector-development/connector-builder-ui/assets/connector_builder_landing_page.png differ diff --git a/docs/connector-development/config-based/assets/lowcode_annotated_test_pane.png b/docs/connector-development/connector-builder-ui/assets/lowcode_annotated_test_pane.png similarity index 100% rename from docs/connector-development/config-based/assets/lowcode_annotated_test_pane.png rename to docs/connector-development/connector-builder-ui/assets/lowcode_annotated_test_pane.png diff --git a/docs/connector-development/connector-builder-ui/assets/tutorial-global-config.png b/docs/connector-development/connector-builder-ui/assets/tutorial-global-config.png deleted file mode 100644 index f16a8e3c065ef..0000000000000 Binary files a/docs/connector-development/connector-builder-ui/assets/tutorial-global-config.png and /dev/null differ diff --git a/docs/connector-development/connector-builder-ui/assets/tutorial-new-stream.png b/docs/connector-development/connector-builder-ui/assets/tutorial-new-stream.png deleted file mode 100644 index a4f766099feb3..0000000000000 Binary files a/docs/connector-development/connector-builder-ui/assets/tutorial-new-stream.png and /dev/null differ diff --git a/docs/connector-development/connector-builder-ui/assets/tutorial-schema.png b/docs/connector-development/connector-builder-ui/assets/tutorial-schema.png deleted file mode 100644 index 649e42f819afd..0000000000000 Binary files a/docs/connector-development/connector-builder-ui/assets/tutorial-schema.png and /dev/null differ diff --git a/docs/connector-development/connector-builder-ui/assets/tutorial-sync.png b/docs/connector-development/connector-builder-ui/assets/tutorial-sync.png deleted file mode 100644 index a4d082e8b158a..0000000000000 Binary files a/docs/connector-development/connector-builder-ui/assets/tutorial-sync.png and /dev/null differ diff --git a/docs/connector-development/connector-builder-ui/assets/tutorial-testing-panel.png b/docs/connector-development/connector-builder-ui/assets/tutorial-testing-panel.png deleted file mode 100644 index 4085a2b36410d..0000000000000 Binary files a/docs/connector-development/connector-builder-ui/assets/tutorial-testing-panel.png and /dev/null differ diff --git a/docs/connector-development/connector-builder-ui/assets/tutorial-testing-values.png b/docs/connector-development/connector-builder-ui/assets/tutorial-testing-values.png deleted file mode 100644 index d1ceb003db8c1..0000000000000 Binary files a/docs/connector-development/connector-builder-ui/assets/tutorial-testing-values.png and /dev/null differ diff --git a/docs/connector-development/connector-builder-ui/assets/tutorial-transformation.png b/docs/connector-development/connector-builder-ui/assets/tutorial-transformation.png deleted file mode 100644 index ab633e0c479a9..0000000000000 Binary files a/docs/connector-development/connector-builder-ui/assets/tutorial-transformation.png and /dev/null differ diff --git a/docs/connector-development/connector-builder-ui/assets/tutorial-user-input.png b/docs/connector-development/connector-builder-ui/assets/tutorial-user-input.png deleted file mode 100644 index e0f2e5f45a99c..0000000000000 Binary files a/docs/connector-development/connector-builder-ui/assets/tutorial-user-input.png and /dev/null differ diff --git a/docs/connector-development/connector-builder-ui/authentication.md b/docs/connector-development/connector-builder-ui/authentication.md index 953b6c3477e94..bdb6395687203 100644 --- a/docs/connector-development/connector-builder-ui/authentication.md +++ b/docs/connector-development/connector-builder-ui/authentication.md @@ -91,7 +91,7 @@ Depending on how the refresh endpoint is implemented exactly, additional configu * **Token expire property date format** - if not specified, the expiry property is interpreted as the number of seconds the access token will be valid * **Access token property name** - the name of the property in the response that contains the access token to do requests. If not specified, it's set to `access_token` -If the API uses a short-lived refresh token that expires after a short amount of time and needs to be refreshed as well or if other grant types like PKCE are required, it's not possible to use the connector builder with OAuth authentication - check out the [compatibility guide](/connector-development/config-based/connector-builder-compatibility#oauth) for more information. +If the API uses a short-lived refresh token that expires after a short amount of time and needs to be refreshed as well or if other grant types like PKCE are required, it's not possible to use the connector builder with OAuth authentication - check out the [compatibility guide](/connector-development/connector-builder-ui/connector-builder-compatibility#oauth) for more information. Keep in mind that the OAuth authentication method does not implement a single-click authentication experience for the end user configuring the connector - it will still be necessary to obtain client id, client secret and refresh token from the API and manually enter them into the configuration form. @@ -136,7 +136,7 @@ Some APIs require to include the access token in different parts of the request * Add a user input as secret field on the "User inputs" page (e.g. named `api_key`) * On the stream page, add a new "Request parameter" * As key, configure the name of the query parameter the API requires (e.g. named `key`) -* As value, configure a placeholder for the created user input (e.g. `{{ config['api_key'] }}`) +* As value, configure a [placeholder](/connector-development/config-based/understanding-the-yaml-file/reference#variables) for the created user input (e.g. `{{ config['api_key'] }}`) The same approach can be used to add the token to the request body. diff --git a/docs/connector-development/config-based/connector-builder-compatibility.md b/docs/connector-development/connector-builder-ui/connector-builder-compatibility.md similarity index 99% rename from docs/connector-development/config-based/connector-builder-compatibility.md rename to docs/connector-development/connector-builder-ui/connector-builder-compatibility.md index 16f903a52e039..12c30e0a56265 100644 --- a/docs/connector-development/config-based/connector-builder-compatibility.md +++ b/docs/connector-development/connector-builder-ui/connector-builder-compatibility.md @@ -1,4 +1,4 @@ -# Connector Builder Compatibility Guide +# Compatibility Guide Answer the following questions to determine whether the Connector Builder is the right tool to build the connector you need: - [ ] [Is it an HTTP API returning a collection of records synchronously?](#is-the-integration-an-http-api-returning-a-collection-of-records-synchronously) - [ ] [Is the API using one of the following authentication mechanism?](#what-type-of-authentication-is-required) diff --git a/docs/connector-development/connector-builder-ui/error-handling.md b/docs/connector-development/connector-builder-ui/error-handling.md index f571d31723513..9c5c9d7417382 100644 --- a/docs/connector-development/connector-builder-ui/error-handling.md +++ b/docs/connector-development/connector-builder-ui/error-handling.md @@ -111,4 +111,4 @@ The "Error message" field is used to customize the message that is relayed back ## Multiple error handlers -In the "Error handlers" section of a stream, one or more handlers can be defined. In the case multiple error handlers are specified, the response will be evaluated against each error handler in the order they are defined. The connector will take the action of the first error handler that matches the response and ignore subsequent handlers. \ No newline at end of file +In the "Error handlers" section of a stream, one or more handlers can be defined. In the case multiple error handlers are specified, the response will be evaluated against each error handler in the order they are defined. The connector will take the action of the first error handler that matches the response and ignore subsequent handlers. diff --git a/docs/connector-development/connector-builder-ui/incremental-sync.md b/docs/connector-development/connector-builder-ui/incremental-sync.md index f150d19fc0920..ae9f8571fe984 100644 --- a/docs/connector-development/connector-builder-ui/incremental-sync.md +++ b/docs/connector-development/connector-builder-ui/incremental-sync.md @@ -81,7 +81,7 @@ curl 'https://content.guardianapis.com/search?order-by=oldest&from-date=2023- The `from-date` is set to the cutoff date of articles synced already and the `to-date` is set to the current date. :::info -In some cases, it's helpful to reference the start and end date of the interval that's currently synced, for example if it needs to be injected into the URL path of the current stream. In these cases it can be referenced using the `{{ stream_interval.start_date }}` and `{{ stream_interval.end_date }}` placeholders. Check out [the tutorial](./tutorial.mdx#adding-incremental-reads) for such a case. +In some cases, it's helpful to reference the start and end date of the interval that's currently synced, for example if it needs to be injected into the URL path of the current stream. In these cases it can be referenced using the `{{ stream_interval.start_date }}` and `{{ stream_interval.end_date }}` [placeholders](/connector-development/config-based/understanding-the-yaml-file/reference#variables). Check out [the tutorial](./tutorial.mdx#adding-incremental-reads) for such a case. ::: ## Advanced settings diff --git a/docs/connector-development/connector-builder-ui/overview.md b/docs/connector-development/connector-builder-ui/overview.md new file mode 100644 index 0000000000000..209b21a1424e6 --- /dev/null +++ b/docs/connector-development/connector-builder-ui/overview.md @@ -0,0 +1,75 @@ +# Connector Builder Intro + +The connector builder UI provides an ergonomic iteration interface on top of the [low-code YAML format](https://docs.airbyte.com/connector-development/config-based/understanding-the-yaml-file/yaml-overview) and to use built connectors for syncs within the same workspace directly from within the UI. We recommend using it to iterate on your low-code connectors. + +:::caution +The connector builder UI is in beta, which means it’s still in active development and may include backward-incompatible changes. Share feedback and requests with us on our Slack channel or email us at feedback@airbyte.io + +**The connector builder does not yet have a link in the sidebar, to navigate to it manually change the URL path in your browsers address bar to `//connector-builder`** + +Developer updates will be announced via our #public-help-connector-development Slack channel. If you are using the CDK, please join to stay up to date on changes and issues. +::: + + +## When should I use the connector builder? + +The connector builder is the right tool if the following points are met: +* You want to integrate with a JSON-based HTTP API as a source of records +* The API you want to integrate with doesn't exist yet as a connector in the [connector catalog](./category/sources). +* The API is suitable for the connector builder as per the +[compatibility guide](./connector-builder-compatibility.md). + +## Getting started + +The high level flow for using the connector builder is as follows: + +1. Run the Airbyte webapp to access the connector builder +2. Use the connector builder to iterate on your low-code connector +3. Once the connector is ready, publish it to the local workspace +4. Configure a Source based on the released connector +5. Use the Source in a connection to sync data + +Follow [the tutorial](./tutorial.mdx) for an example of this flow. The concept pages in the side bar to the left go into greater detail of more complex configurations. + +## Connector vs. configured source vs. connection + +When building a connector, it's important to differentiate between the connector, the configured source based on a connector and the connection: + +The **connector** defines the functionality how to access an API or a database, for example protocol, URL paths to access, the way requests need to be structured and how to extract records from responses. + +:::info +While configuring a connector in the builder, make sure to not hardcode things like API keys or passwords - these should be passed in as user input when configuring a Source based on your connector. + +Follow [the tutorial](./tutorial.mdx) for an example how this looks like in practice. +::: + +The **configured source** is configuring a connector to actually extract records. The exact fields of the configuration depend on the connector, but in most cases it provides authentication information (username and password, api key) and information about which data to extract, for example start date to sync records from, a search query records have to match. + +The **connection** links up a configured source and a configured destination to perform syncs. It defines things like the replication frequency (e.g. hourly, daily, manually) and which streams to replicate. + +## Exporting the connector + +:::info +This section is only relevant if you want to contribute your connector back to the Airbyte connector catalog to make it available outside of your workspace. +::: + +The connector builder leverages the [low-code CDK](https://docs.airbyte.com/connector-development/config-based/understanding-the-yaml-file/yaml-overview) under the hood, turning all configurations into the YAML format. While in most cases it's not necessary to interact with the YAML representation, it can be used to export the connector specification into a file and build a docker image containing the connector which can be shared more widely: + +2. Use the connector builder to iterate on your low-code connector +3. Export the YAML into a low-code connector module on your local machine +4. Build the connector's Docker image +5. Use the built connector image in Airbyte + +Once you're done iterating on your connector in the UI, you'll need to export the low-code YAML representation of the connector to your local filesystem into a connector module. This YAML can be downloaded by clicking the `Download Config` button in the bottom-left. + +Create a low-code connector module using the connector generator (see [this YAML tutorial for an example](../config-based/tutorial/1-create-source.md)) using the name you'd like to use for your connector. After creating the connector, overwrite the contents of `airbyte-integrations/connectors/source-/source_/manifest.yaml` with the YAML you created in the UI. + +Follow the instructions in the connector README to build the Docker image. Typically this will be something like `docker build . -t airbyte/source-:`. + +From this point on your connector is a regular low-code CDK connector and can be distributed as a docker image and made part of the regular Airbyte connector catalog - you can find the [publish process on the overview page](/connector-development/#publishing-a-connector). + +### Building the connector image + +Follow the instructions in the connector README to build the Docker image. Typically this will be something like `docker build . -t airbyte/source-:`. + +Once you've built the connector image, [follow these instructions](https://docs.airbyte.com/integrations/custom-connectors#adding-your-connectors-in-the-ui) to add your connector to your Airbyte instance. diff --git a/docs/connector-development/connector-builder-ui/pagination.md b/docs/connector-development/connector-builder-ui/pagination.md index 16b9ca08ab8c3..a125588bc29bf 100644 --- a/docs/connector-development/connector-builder-ui/pagination.md +++ b/docs/connector-development/connector-builder-ui/pagination.md @@ -232,25 +232,25 @@ Using the [Twitter API](https://developer.twitter.com/en/docs/twitter-api/pagina The `meta.next_token` value of that response can then be set as the `pagination_token` in the next request, causing the API to return the next 100 tweets. -To integrate with such an API in the Connector Builder, you must configure how this "Cursor value" is obtained for each request. You will likely need to use a macro to accomplish this, since the cursor is usually obtained from the response of the previous request. For the above example, this would look like `{{ response.meta.next_token }}`, which accesses response body of the last request. However, you can access the `headers` object in this macro if your API places cursor tokens in the response headers instead of the response body. +To integrate with such an API in the Connector Builder, you must configure how this "Next page cursor" is obtained for each request. In most cases, the next page cursor is either part of the response body or part of the HTTP headers. Select the respective type and define the property (or nested property) that holds the cursor value, for example "`meta`, `next_token`" for the twitter API. You can also configure how the cursor value is injected into the API Requests. In the above example, this would be set as a `request_parameter` with the field name `pagination_token`, but this is dependent on the API - check the docs to see if they describe how to set the cursor/token for subsequent requests. For cursor pagination, if `path` is selected as the `Inject into` option, then the entire request URL for the subsequent request will be replaced by the cursor value. This can be useful for APIs that return a full URL that should be requested for the next page of results, such as the [GitHub API](https://docs.github.com/en/rest/guides/using-pagination-in-the-rest-api?apiVersion=2022-11-28). -The "Stop condition" tells the Connector Builder when to stop fetching more pages from the API. This will commonly look something like `{{ 'next_token' not in response.meta }}`, but this is also dependent on the API - check the docs to see if they describe when to stop fetching subsequent pages. - The "Page size" can optionally be specified as well; if so, how this page size gets injected into the HTTP requests can be configured similar to the above pagination methods. +When using the "response" or "headers" option for obtaining the next page cursor, the connector will stop requesting more pages as soon as no value can be found at the specified location. In some situations, this is not sufficient. If you need more control over how to obtain the cursor value and when to stop requesting pages, use the "custom" option and specify the "stop condition" using a jinja placeholder. For example if your API also has a boolean `more_results` property included in the response to indicate if there are more items to be retrieved, the stop condition should be `{{ response.more_results is false }}` + :::info One potential variant of cursor pagination is an API that takes in some sort of record identifier to "start after". For example, the [PartnerStack API](https://docs.partnerstack.com/docs/partner-api#pagination) endpoints accept a `starting_after` parameter to which a record `key` is supposed to be passed. -In order to configure cursor pagination for this API in the connector builder, you will need to extract the `key` off of the last record returned by the previous request. +In order to configure cursor pagination for this API in the connector builder, you will need to extract the `key` off of the last record returned by the previous request, using a "custom" next page cursor. This can be done in a couple different ways: 1. If you want to access fields on the records that you have defined through the record selector, you can use the `{{ last_records }}` object; so accessing the `key` field of the last record would look like `{{ last_records[-1]['key'] }}`. The `[-1]` syntax points to the last item in that `last_records` array. 2. If you want to instead access a field on the raw API response body (e.g. your record selector filtered out the field you need), then you can use the `{{ response }}` object; so accessing the `key` field of the last item would look like `{{ response['data']['items'][-1]['key'] }}`. -This API also has a boolean `has_more` property included in the response to indicate if there are more items to be retrieved, so the stop condition in this case should be `{{ response.data.has_more is false }}` +This API also has a boolean `has_more` property included in the response to indicate if there are more items to be retrieved, so the stop condition in this case should be `{{ response.data.has_more is false }}`. ::: diff --git a/docs/connector-development/connector-builder-ui/partitioning.md b/docs/connector-development/connector-builder-ui/partitioning.md index 667fd5dab8772..8594d63f1bf1a 100644 --- a/docs/connector-development/connector-builder-ui/partitioning.md +++ b/docs/connector-development/connector-builder-ui/partitioning.md @@ -21,7 +21,7 @@ The first two options are a "static" form of partition routing (because the part ### List partition router To configure static partitioning, choose the "List" method for the partition router. The following fields have to be configured: -* The "partition values" can either be set to a list of strings, making the partitions part of the connector itself or delegated to a user input so the end user configuring a Source based on the connector can control which partitions to fetch. When using "user input" mode for the partition values, create a user input of type array and reference it as the value using the placeholder value using `{{ config[''] }}` +* The "partition values" can either be set to a list of strings, making the partitions part of the connector itself or delegated to a user input so the end user configuring a Source based on the connector can control which partitions to fetch. When using "user input" mode for the partition values, create a user input of type array and reference it as the value using the [placeholder](/connector-development/config-based/understanding-the-yaml-file/reference#variables) value using `{{ config[''] }}` * The "Current partition value identifier" can be freely choosen and is the identifier of the variable holding the current partition value. It can for example be used in the path of the stream using the `{{ stream_partition. }}` syntax. * The "Inject partition value into outgoing HTTP request" option allows you to configure how to add the current partition value to the requests @@ -62,7 +62,7 @@ To fetch the list of partitions (in this example surveys or orders) from the API The following fields have to be configured to use the substream partition router: * The "Parent stream" defines the records of which stream should be used as partitions * The "Parent key" is the property on the parent stream record that should become the partition value (in most cases this is some form of id) -* The "Current partition value identifier" can be freely choosen and is the identifier of the variable holding the current partition value. It can for example be used in the path of the stream using the `{{ stream_partition. }}` interpolation placeholder. +* The "Current partition value identifier" can be freely choosen and is the identifier of the variable holding the current partition value. It can for example be used in the path of the stream using the `{{ stream_partition. }}` [interpolation placeholder](/connector-development/config-based/understanding-the-yaml-file/reference#variables). #### Example diff --git a/docs/connector-development/connector-builder-ui/record-processing.mdx b/docs/connector-development/connector-builder-ui/record-processing.mdx index 947f8a08e4f8d..4d2b97ec437bb 100644 --- a/docs/connector-development/connector-builder-ui/record-processing.mdx +++ b/docs/connector-development/connector-builder-ui/record-processing.mdx @@ -139,7 +139,7 @@ In this case a record selector with a placeholder `*` selects all children at th ## Transformations -It is recommended to not change records during the extraction process the connector is performing, but instead load them into the downstream warehouse unchanged and perform necessery transformations there in order to stay flexible in what data is required. However there are some reasons that require the modifying the fields of records before they are sent to the warehouse: +It is recommended to not change records during the extraction process the connector is performing, but instead load them into the downstream warehouse unchanged and perform necessary transformations there in order to stay flexible in what data is required. However there are some reasons that require the modifying the fields of records before they are sent to the warehouse: * Remove personally identifiable information (PII) to ensure compliance with local legislation * Pseudonymise sensitive fields * Remove large fields that don't contain interesting information and significantly increase load on the system @@ -374,4 +374,4 @@ The `subject` field was detected as `string`, but is configured to be a `number` * If the API changed and subject is always a string now, the declared schema should be updated to reflect this: `"subject": { "type": "string" }` * If the API is sometimes returning subject as number of string depending on the record, the declared schema should be updated to allow both data types: `"subject": { "type": ["string","number"] }` -A common situation is that certain record fields do not have any any values for the test read data, so they are set to `null`. In the detected schema, these field are of type `"null"` which is most likely not correct for all cases. In these situations, the declared schema should be manually corrected. \ No newline at end of file +A common situation is that certain record fields do not have any any values for the test read data, so they are set to `null`. In the detected schema, these field are of type `"null"` which is most likely not correct for all cases. In these situations, the declared schema should be manually corrected. diff --git a/docs/connector-development/connector-builder-ui/tutorial.mdx b/docs/connector-development/connector-builder-ui/tutorial.mdx index db56d8aeb97a4..57acf303da764 100644 --- a/docs/connector-development/connector-builder-ui/tutorial.mdx +++ b/docs/connector-development/connector-builder-ui/tutorial.mdx @@ -1,7 +1,3 @@ -import NewStreamModal from './assets/tutorial-new-stream.png'; -import SchemaTab from './assets/tutorial-schema.png'; -import InputModal from './assets/tutorial-user-input.png'; - # Tutorial This tutorial will walk you through the creation of an Airbyte connector using the connector builder UI to read and extract data from an HTTP API. @@ -48,8 +44,14 @@ Besides an Exchange Rates API key, only a browser and an up-to-date running Airb ## Step 2 - Basic configuration +:::caution +**The connector builder does not yet have a link in the sidebar, to navigate to it manually change the URL path in your browsers address bar to `//connector-builder`** +::: + ### Creating a connector builder project +
+ When developing a connector using the connector builder UI, the current state is saved in a connector builder project. These projects are saved as part of the Airbyte workspace and are separate from your source configurations and connections. In the last step of this tutorial you will publish the connector builder project to make it ready to use in connections to run syncs. To get started, follow the following steps: @@ -62,6 +64,8 @@ Your connector builder project is now set up. The next steps describe how to con ### Setting up global configuration +
+ On the "global configuration" page, general settings applying to all streams are configured - the base URL that requests are sent to, as well as configuration for how to authenticate with the API server. * Set the base URL to `https://api.apilayer.com` @@ -70,21 +74,19 @@ On the "global configuration" page, general settings applying to all streams are The actual API Key you copied from apilayer.com will not be part of the connector itself - instead it will be set as part of the source configuration when configuring a connection based on your connector in a later step. -![Global configuration](./assets/tutorial-global-config.png) +You can find more information about authentication method on the [authentication concept page](./authentication). ### Setting up and testing a stream +
+ Now that you configured how to talk the API, let's set up the stream of records that will be sent to a destination later on. To do so, click the button with the plus icon next to the "Streams" section in the side menu and fill out the form: * Set the name to "Rates" * Set the "URL path" to `/exchangerates_data/latest` * Submit -Stream modal - Now the basic stream is configured and can be tested. To send test requests, supply testing values by clicking the "Testing values" button in top right and pasting your API key in the input. -![Testing values](./assets/tutorial-testing-values.png) - This form corresponds to what a user of this connector will need to provide when setting up a connection later on. The testing values are not saved along with the connector project. Now, click the "Test" button to trigger a test read to simulate what will happen during a sync. After a little while, you should see a single record that looks like this: @@ -108,18 +110,22 @@ The request/response tabs are helpful during development to see which requests a ### Declaring the record schema +
+ Each stream of a connector needs to declare how emitted records will look like (which properties do they have, what data types will be used, ...). During a sync, this information will be passed on to the destination to configure it correctly - for example a SQL database destination can use it to properly set up the destination table, assigning the right type to each column. By default, the stream schema is set to a simple object with unspecified properties. However, the connector builder can infer the schema based on the test read you just issued. To use the infered schema, switch to the "Detected schema" tab and click the "Import schema" button. The warning icon disappears indicating that the declared schema of your stream matches the test data. -Schema tab +You can find more information about schema declaration on the [record processing concept page](./record-processing). ## Step 3 - Advanced configuration ### Making the stream configurable +
+ The exchange rate API supports configuring a different base currency via request parameter - let's make this part of the user inputs that can be controlled by the user of the connector when configuring a source, similar to the API key. To do so, follow these steps: @@ -129,9 +135,8 @@ To do so, follow these steps: * Set the name to "Base" * Click "Create" -User input modal +The value input is now set to `{{ config['base'] }}`. When making requests, the connector will replace this placeholder by the user supplied value. This syntax can be used in all fields that have a user icon on the right side, see the full reference [here](/connector-development/config-based/understanding-the-yaml-file/reference#variables). -The value input is now set to `{{ config['base'] }}`. When making requests, the connector will replace this placeholder by the user supplied value. This syntax can be used in all fields that have a user icon on the right side. Now your connector has a second configuration input. To test it, click the "Testing values" button again, set the "Base" to `USD`. Then, click the "Test" button again to issue a new test read. @@ -152,19 +157,21 @@ The record should update to use USD as the base currency: ### Adding incremental reads +
+ We now have a working implementation of a connector reading the latest exchange rates for a given currency. In this section, we'll update the source to read historical data instead of only reading the latest exchange rates. According to the API documentation, we can read the exchange rate for a specific date range by querying the `"/exchangerates_data/{date}"` endpoint instead of `"/exchangerates_data/latest"`. To configure your connector to request every day individually, follow these steps: -* On top of the form, change the "Path URL" input to `/exchangerates_data/{{ stream_interval.start_time }}` to inject the date to fetch data for into the path of the request +* On top of the form, change the "Path URL" input to `/exchangerates_data/{{ stream_interval.start_time }}` to [inject](/connector-development/config-based/understanding-the-yaml-file/reference#variables) the date to fetch data for into the path of the request * Enable "Incremental sync" for the Rates stream * Set the "Cursor field" to `date` - this is the property in our records to check what date got synced last * Set the "Datetime format" to `%Y-%m-%d` to match the format of the date in the record returned from the API * Set the "Cursor granularity" to `P1D` to tell the connector the API only supports daily increments -* Make the start time configurable by clicking the user icon in the "Start datetime" input and creating a new user input called `Start date` -* Set the "End datetime" to `{{ today_utc() }}` to always sync up to the current day +* Leave start time to "User input" so the end user can set the desired start time for syncing data +* Leave end time to "Now" to always sync exchange rates up to the current date * In a lot of cases the start and end date are injected into the request body or request parameters. However in the case of the exchange rate API it needs to be added to the path of the request, so disable the "Inject start/end time into outgoing HTTP request" options * Open the "Advanced" section and set "Step" to `P1D` to configure the connector to do one separate request per day by partitioning the dataset into daily intervals * Set a start date (like `2023-03-03`) in the "Testing values" menu @@ -174,8 +181,12 @@ Now, you should see a dropdown above the records view that lets you step through When used in a connection, the connector will make sure exchange rates for the same day are not requested multiple times - the date of the last fetched record will be stored and the next scheduled sync will pick up from where the previous one stopped. +You can find more information about incremental syncs on the [incremental sync concept page](./incremental-sync). + ### Adding transformations +
+ Note that a warning icon should show next to the "Detected schema" tab - using the per-date endpoint instead of the latest endpoint slightly changed the shape of the records by adding a `historical` property. As we don't need this property in our destination, we can remove it using a transformation. To do so, follow these steps: @@ -185,10 +196,12 @@ To do so, follow these steps: The `historical` property in the records tab and the schema warning should disappear. -![Transformation](./assets/tutorial-transformation.png) +You can find more information about incremental syncs on the [incremental sync concept page](./incremental-sync). ## Step 4 - Publishing and syncing +
+ So far, the connector is only configured as part of the connector builder project. To make it possible to use it in actual connections, you need to publish the connector. This captures the current state of the configuration and makes the connector available as a custom connector within the current Airbyte workspace. To use the connector for a proper sync, follow these steps: @@ -202,8 +215,6 @@ To use the connector for a proper sync, follow these steps: * Wait for Airbyte to check the record schema, then click "Set up connection" - this will create the connection and kick off the first sync * After a short while, the sync should complete successfully -![Successful sync](./assets/tutorial-sync.png) - Congratulations! You just completed the following steps: * Configured a production-ready connector to extract currency exchange data from an HTTP-based API: * Configurable API key, start date and base currency @@ -216,11 +227,11 @@ Congratulations! You just completed the following steps: ## Next steps This tutorial didn't go into depth about all features that can be used in the connector builder. Check out the concept pages for more information about certain topics: -* Authentication -* Record processing -* Pagination -* Error handling -* Incremental syncs -* Partitioning - -Not every possible API can be consumed by connectors configured in the connector builder. The [compatibility guide](/connector-development/config-based/connector-builder-compatibility#oauth) can help determining whether another technology should be used to integrate an API with the Airbyte platform. \ No newline at end of file +* [Authentication](./authentication) +* [Record processing](./record-processing) +* [Pagination](./pagination) +* [Error handling](./error-handling) +* [Incremental sync](./incremental-sync) +* [Partitioning](./partitioning) + +Not every possible API can be consumed by connectors configured in the connector builder. The [compatibility guide](/connector-development/connector-builder-ui/connector-builder-compatibility#oauth) can help determining whether another technology should be used to integrate an API with the Airbyte platform. \ No newline at end of file diff --git a/docs/integrations/sources/greenhouse.md b/docs/integrations/sources/greenhouse.md index dc76cb5c9f8e0..ff8ccce0ce671 100644 --- a/docs/integrations/sources/greenhouse.md +++ b/docs/integrations/sources/greenhouse.md @@ -26,13 +26,18 @@ The Greenhouse source connector supports the following [sync modes](https://docs ## Supported Streams +* [Activity Feed](https://developers.greenhouse.io/harvest.html#get-retrieve-activity-feed) * [Applications](https://developers.greenhouse.io/harvest.html#get-list-applications) * [Applications Interviews](https://developers.greenhouse.io/harvest.html#get-list-scheduled-interviews-for-application) +* [Approvals](https://developers.greenhouse.io/harvest.html#get-list-approvals-for-job) * [Candidates](https://developers.greenhouse.io/harvest.html#get-list-candidates) * [Close Reasons](https://developers.greenhouse.io/harvest.html#get-list-close-reasons) * [Custom Fields](https://developers.greenhouse.io/harvest.html#get-list-custom-fields) * [Degrees](https://developers.greenhouse.io/harvest.html#get-list-degrees) * [Departments](https://developers.greenhouse.io/harvest.html#get-list-departments) +* [Disciplines](https://developers.greenhouse.io/harvest.html#get-list-approvals-for-job) +* [EEOC](https://developers.greenhouse.io/harvest.html#get-list-eeoc) +* [Email Templates](https://developers.greenhouse.io/harvest.html#get-list-email-templates) * [Interviews](https://developers.greenhouse.io/harvest.html#get-list-scheduled-interviews) * [Job Posts](https://developers.greenhouse.io/harvest.html#get-list-job-posts) * [Job Stages](https://developers.greenhouse.io/harvest.html#get-list-job-stages) @@ -40,10 +45,16 @@ The Greenhouse source connector supports the following [sync modes](https://docs * [Job Openings](https://developers.greenhouse.io/harvest.html#get-list-job-openings) * [Jobs Stages](https://developers.greenhouse.io/harvest.html#get-list-job-stages-for-job) * [Offers](https://developers.greenhouse.io/harvest.html#get-list-offers) +* [Offices](https://developers.greenhouse.io/harvest.html#get-list-offices) +* [Prospect Pools](https://developers.greenhouse.io/harvest.html#get-list-prospect-pools) * [Rejection Reasons](https://developers.greenhouse.io/harvest.html#get-list-rejection-reasons) +* [Schools](https://developers.greenhouse.io/harvest.html#get-list-schools) * [Scorecards](https://developers.greenhouse.io/harvest.html#get-list-scorecards) * [Sources](https://developers.greenhouse.io/harvest.html#get-list-sources) +* [Tags](https://developers.greenhouse.io/harvest.html#get-list-candidate-tags) * [Users](https://developers.greenhouse.io/harvest.html#get-list-users) +* [User Permissions](https://developers.greenhouse.io/harvest.html#get-list-job-permissions) +* [User Roles](https://developers.greenhouse.io/harvest.html#the-user-role-object) ## Performance considerations @@ -53,6 +64,7 @@ The Greenhouse connector should not run into Greenhouse API limitations under no | Version | Date | Pull Request | Subject | |:--------|:-----------|:---------------------------------------------------------|:-------------------------------------------------------------------------------| +| 0.4.0 | 2023-04-26 | [25332](https://github.com/airbytehq/airbyte/pull/25332) | Add new streams: `ActivityFeed`, `Approvals`, `Disciplines`, `Eeoc`, `EmailTemplates`, `Offices`, `ProspectPools`, `Schools`, `Tags`, `UserPermissions`, `UserRoles` | | 0.3.1 | 2023-03-06 | [23231](https://github.com/airbytehq/airbyte/pull/23231) | Publish using low-code CDK Beta version | | 0.3.0 | 2022-10-19 | [18154](https://github.com/airbytehq/airbyte/pull/18154) | Extend `Users` stream schema | | 0.2.11 | 2022-09-27 | [17239](https://github.com/airbytehq/airbyte/pull/17239) | Always install the latest version of Airbyte CDK | diff --git a/docs/integrations/sources/marketo.md b/docs/integrations/sources/marketo.md index ebd56ae035d3a..5325bde9ff15a 100644 --- a/docs/integrations/sources/marketo.md +++ b/docs/integrations/sources/marketo.md @@ -106,6 +106,7 @@ If the 50,000 limit is too stringent, contact Marketo support for a quota increa | Version | Date | Pull Request | Subject | |:---------|:-----------|:---------------------------------------------------------|:----------------------------------------------------------------------------------------------| +| `1.0.4` | 2023-04-25 | [25481](https://github.com/airbytehq/airbyte/pull/25481) | Minor fix for bug caused by `<=` producing additional API call when there is a single date slice | | `1.0.3` | 2023-02-13 | [22938](https://github.com/airbytehq/airbyte/pull/22938) | Specified date formatting in specification | | `1.0.2` | 2023-02-01 | [22203](https://github.com/airbytehq/airbyte/pull/22203) | Handle Null cursor values | | `1.0.1` | 2023-01-31 | [22015](https://github.com/airbytehq/airbyte/pull/22015) | Set `AvailabilityStrategy` for streams explicitly to `None` | diff --git a/docs/integrations/sources/paypal-transaction.md b/docs/integrations/sources/paypal-transaction.md index 460ab8c6014bf..6f2079344afce 100644 --- a/docs/integrations/sources/paypal-transaction.md +++ b/docs/integrations/sources/paypal-transaction.md @@ -87,6 +87,7 @@ Transactions sync is performed with default `stream_slice_period` = 1 day, it me | Version | Date | Pull Request | Subject | |:--------|:-----------|:---------------------------------------------------------|:-----------------------------------------------------------------------------------------------------------------------------| +| 0.1.13 | 2023-02-20 | [22916](https://github.com/airbytehq/airbyte/pull/22916) | Specified date formatting in specification | | 0.1.12 | 2023-02-18 | [23211](https://github.com/airbytehq/airbyte/pull/23211) | Fix error handler | | 0.1.11 | 2023-01-27 | [22019](https://github.com/airbytehq/airbyte/pull/22019) | Set `AvailabilityStrategy` for streams explicitly to `None` | | 0.1.10 | 2022-09-04 | [17554](https://github.com/airbytehq/airbyte/pull/17554) | Made the spec and source config to be consistent | diff --git a/docs/integrations/sources/pinterest.md b/docs/integrations/sources/pinterest.md index 8681202363995..3b5638556cc1c 100644 --- a/docs/integrations/sources/pinterest.md +++ b/docs/integrations/sources/pinterest.md @@ -71,6 +71,7 @@ The connector is restricted by the Pinterest [requests limitation](https://devel | Version | Date | Pull Request | Subject | |:--------|:-----------|:---------------------------------------------------------|:--------------------------------------------------------------------------------------------------------| +| 0.2.6 | 2023-04-26 | [25548](https://github.com/airbytehq/airbyte/pull/25548) | Fixed `format` issue for `boards` stream schema for fields with `date-time` | | 0.2.5 | 2023-04-19 | [00000](https://github.com/airbytehq/airbyte/pull/00000) | Update `AMOUNT_OF_DAYS_ALLOWED_FOR_LOOKUP` to 89 days | | 0.2.4 | 2023-02-25 | [23457](https://github.com/airbytehq/airbyte/pull/23457) | Adding missing columns for analytics streams for pinterest source | | 0.2.3 | 2023-03-01 | [23649](https://github.com/airbytehq/airbyte/pull/23649) | Fix for `HTTP - 400 Bad Request` when requesting data >= 90 days | diff --git a/docs/integrations/sources/postgres.md b/docs/integrations/sources/postgres.md index 3a21fd944aac3..aba6a9db9153b 100644 --- a/docs/integrations/sources/postgres.md +++ b/docs/integrations/sources/postgres.md @@ -399,6 +399,8 @@ Some larger tables may encounter an error related to the temporary file size lim | Version | Date | Pull Request | Subject | |:--------|:-----------|:---------------------------------------------------------|:---------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| 2.0.27 | 2023-04-26 | [24971](https://github.com/airbytehq/airbyte/pull/24971) | Emit stream status updates | +| 2.0.26 | 2023-04-26 | [25560](https://github.com/airbytehq/airbyte/pull/25560) | Revert some logging changes | | 2.0.25 | 2023-04-24 | [25459](https://github.com/airbytehq/airbyte/pull/25459) | Better logging formatting | | 2.0.24 | 2023-04-19 | [25345](https://github.com/airbytehq/airbyte/pull/25345) | Logging : Log database indexes per stream | | 2.0.23 | 2023-04-19 | [24582](https://github.com/airbytehq/airbyte/pull/24582) | CDC : Enable frequent state emission during incremental syncs + refactor for performance improvement | diff --git a/docs/integrations/sources/surveymonkey.md b/docs/integrations/sources/surveymonkey.md index 99cab665ae5e9..7b32e84500b6e 100644 --- a/docs/integrations/sources/surveymonkey.md +++ b/docs/integrations/sources/surveymonkey.md @@ -51,6 +51,7 @@ Please read this [docs](https://developer.surveymonkey.com/api/v3/#getting-start * [SurveyPages](https://developer.surveymonkey.com/api/v3/#surveys-id-pages) * [SurveyQuestions](https://developer.surveymonkey.com/api/v3/#surveys-id-pages-id-questions) * [SurveyResponses](https://developer.surveymonkey.com/api/v3/#survey-responses) \(Incremental\) +* [SurveyCollectors](https://developer.surveymonkey.com/api/v3/#api-endpoints-get-surveys-id-collectors) ### Performance considerations @@ -65,6 +66,7 @@ To cover more data from this source we use caching. | Version | Date | Pull Request | Subject | |:--------| :--------- | :------------------------------------------------------- | :--------------------------------------------------------------------- | +| 0.2.0 | 2023-04-18 | [23721](https://github.com/airbytehq/airbyte/pull/23721) | Add `SurveyCollectors` and `Collectors` stream | | 0.1.16 | 2023-04-13 | [25080](https://github.com/airbytehq/airbyte/pull/25080) | Fix spec.json required fields and update schema for surveys and survey_responses | | 0.1.15 | 2023-02-11 | [22865](https://github.com/airbytehq/airbyte/pull/22865) | Specified date formatting in specification | | 0.1.14 | 2023-01-27 | [22024](https://github.com/airbytehq/airbyte/pull/22024) | Set `AvailabilityStrategy` for streams explicitly to `None` | diff --git a/docs/integrations/sources/twilio.md b/docs/integrations/sources/twilio.md index 0da64aba78e05..e50923250718f 100644 --- a/docs/integrations/sources/twilio.md +++ b/docs/integrations/sources/twilio.md @@ -88,12 +88,10 @@ For more information, see [the Twilio docs for rate limitations](https://support | Version | Date | Pull Request | Subject | |:--------|:-----------|:---------------------------------------------------------|:--------------------------------------------------------------------------------------------------------| - | 0.5.0 | 2023-03-21 | [23995](https://github.com/airbytehq/airbyte/pull/23995) | Add new stream `Conversation Participants` | | 0.4.0 | 2023-03-18 | [23995](https://github.com/airbytehq/airbyte/pull/23995) | Add new stream `Conversation Messages` | | 0.3.0 | 2023-03-18 | [22874](https://github.com/airbytehq/airbyte/pull/22874) | Add new stream `Executions` with parent `Flows` | -| 0.2.0 | 2023-03-16 | [24114](https://github.com/airbytehq/airbyte/pull/24114) | Add `Conversations` stream - | +| 0.2.0 | 2023-03-16 | [24114](https://github.com/airbytehq/airbyte/pull/24114) | Add `Conversations` stream | | 0.1.16 | 2023-02-10 | [22825](https://github.com/airbytehq/airbyte/pull/22825) | Specified date formatting in specification | | 0.1.15 | 2023-01-27 | [22025](https://github.com/airbytehq/airbyte/pull/22025) | Set `AvailabilityStrategy` for streams explicitly to `None` | | 0.1.14 | 2022-11-16 | [19479](https://github.com/airbytehq/airbyte/pull/19479) | Fix date range slicing | diff --git a/docs/operator-guides/upgrading-airbyte.md b/docs/operator-guides/upgrading-airbyte.md index a44d6fd41207c..55f1991f97ce3 100644 --- a/docs/operator-guides/upgrading-airbyte.md +++ b/docs/operator-guides/upgrading-airbyte.md @@ -109,7 +109,7 @@ If you are upgrading from (i.e. your current version of Airbyte is) Airbyte vers Here's an example of what it might look like with the values filled in. It assumes that the downloaded `airbyte_archive.tar.gz` is in `/tmp`. ```bash - docker run --rm -v /tmp:/config airbyte/migration:0.44.1 --\ + docker run --rm -v /tmp:/config airbyte/migration:0.44.2 --\ --input /config/airbyte_archive.tar.gz\ --output /config/airbyte_archive_migrated.tar.gz ``` diff --git a/docs/quickstart/getting-started.md b/docs/quickstart/getting-started.md index 6c898cbed6981..afb0e34085223 100644 --- a/docs/quickstart/getting-started.md +++ b/docs/quickstart/getting-started.md @@ -11,7 +11,7 @@ First of all, make sure you have Docker and Docker Compose installed. Then run t ```text git clone https://github.com/airbytehq/airbyte.git cd airbyte -docker compose -f docker-compose.yaml up +./run-ab-platform.sh ``` Once you see an Airbyte banner, the UI is ready to go at [http://localhost:8000/](http://localhost:8000/). diff --git a/docusaurus/docusaurus.config.js b/docusaurus/docusaurus.config.js index 8be741b38a7b6..d1035e5f2a64b 100644 --- a/docusaurus/docusaurus.config.js +++ b/docusaurus/docusaurus.config.js @@ -86,6 +86,21 @@ const config = { ], }, ], + () => ({ + name: "Yaml loader", + configureWebpack() { + return { + module: { + rules: [ + { + test: /\.ya?ml$/, + use: 'yaml-loader' + } + ] + }, + }; + }, + }), ], presets: [ diff --git a/docusaurus/package.json b/docusaurus/package.json index c73d8f1a69f64..afe1ee0b013d3 100644 --- a/docusaurus/package.json +++ b/docusaurus/package.json @@ -113,10 +113,12 @@ "prism-react-renderer": "^1.3.5", "react": "^17.0.1", "react-dom": "^17.0.1", + "react-markdown": "^8.0.7", "react-router": "5.3.3", "sockjs": "0.3.24", "trim": "0.0.3", - "webpack-dev-server": "4.9.2" + "webpack-dev-server": "4.9.2", + "yaml-loader": "^0.8.0" }, "browserslist": { "production": [ diff --git a/docusaurus/sidebars.js b/docusaurus/sidebars.js index 49ebb05c7a85a..def67504e7f03 100644 --- a/docusaurus/sidebars.js +++ b/docusaurus/sidebars.js @@ -38,12 +38,30 @@ const buildAConnector = { label: 'Overview', id: 'connector-development/README', }, + { + type: 'category', + label: 'Connector builder', + items: [ + 'connector-development/connector-builder-ui/overview', + 'connector-development/connector-builder-ui/connector-builder-compatibility', + 'connector-development/connector-builder-ui/tutorial', + { + type: 'category', + label: 'Concepts', + items: [ + 'connector-development/connector-builder-ui/record-processing', + 'connector-development/connector-builder-ui/pagination', + 'connector-development/connector-builder-ui/incremental-sync', + 'connector-development/connector-builder-ui/partitioning', + 'connector-development/connector-builder-ui/error-handling', + ] + }, + ], + }, { type: 'category', label: 'Low-code connector development', items: [ - 'connector-development/config-based/connector-builder-ui', - 'connector-development/config-based/connector-builder-compatibility', { label: 'Low-code CDK Intro', type: 'doc', diff --git a/docusaurus/src/components/ManifestYamlDefinitions.jsx b/docusaurus/src/components/ManifestYamlDefinitions.jsx new file mode 100644 index 0000000000000..c8b018becc533 --- /dev/null +++ b/docusaurus/src/components/ManifestYamlDefinitions.jsx @@ -0,0 +1,95 @@ +import React from 'react'; +import schema from "../../../airbyte-cdk/python/airbyte_cdk/sources/declarative/declarative_component_schema.yaml"; +import ReactMarkdown from 'react-markdown' +import Heading from '@theme/Heading'; + +function Description({ text }) { + if (!text) return null; + return ; +} + +function Examples({ examples }) { + if (!examples) return null; + if (examples.length === 1) { + return <>Example: +
+        {JSON.stringify(examples[0], null, 2)}
+      
+ ; + } + return <>Examples: + {examples.map((example, index) =>
+      {JSON.stringify(example, null, 2)}
+    
+ )} + ; +} + +function Name({ name, definition }) { + const type = definition.type; + const ref = definition["$ref"] || type === "array" && definition.items && definition.items["$ref"]; + return <> + {name}{definition.type || ref ? <>{type && <>{" "}{type}}{ref && <>{" "}{ref}} : null} + +} + +function Definition({ name, definition }) { + return + + + {definition.properties && <>Properties: +
    + {Object.entries(definition.properties || {}).filter(([name]) => name !== "type" && name !== "definitions").map(([name, property]) =>
  • + + + {name === "$parameters" && + + } + {property.anyOf && <>Type:
      + {property.anyOf.map((type, index) =>
    • + {type["$ref"] && {type["$ref"]}} + {type.type && {type.type}} +
    • )} +

    } + {property.interpolation_context && <>Available variables: +
      + {property.interpolation_context.map((variable, index) =>
    • + {variable} +
    • )} +

    } + +
  • )} +
} + +
; +} + + +export default function ManifestYamlDefinitions() { + const definitions = Object.entries(schema.definitions); + + return <> + Components + + {definitions.map(([name, definition]) => )} + Interpolation variables +

All string properties that list out available variables allow jinja expressions. They can be used by placing them in double curly braces: {"{{ config.property }}"}. The following variables are available

+ {schema.interpolation.variables.map((variable) => + + + + )} + + Interpolation macros +

Besides referencing variables, the following macros can be called as part of jinja expressions, for example like this: {"{{ now_utc() }}"}.

+ {schema.interpolation.macros.map((macro) => + {macro.title} + + {Object.keys(macro.arguments).length > 0 && <>Arguments:
    {Object.entries(macro.arguments).map(([name, argument]) =>
  • + {name}: {argument} +
  • )} +
} + +
)} + +} diff --git a/docusaurus/yarn.lock b/docusaurus/yarn.lock index 9a7213707d703..2a0eb7df9081e 100644 --- a/docusaurus/yarn.lock +++ b/docusaurus/yarn.lock @@ -2448,6 +2448,13 @@ dependencies: "@types/node" "*" +"@types/debug@^4.0.0": + version "4.1.7" + resolved "https://registry.yarnpkg.com/@types/debug/-/debug-4.1.7.tgz#7cc0ea761509124709b8b2d1090d8f6c17aadb82" + integrity sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg== + dependencies: + "@types/ms" "*" + "@types/eslint-scope@^3.7.3": version "3.7.4" resolved "https://registry.yarnpkg.com/@types/eslint-scope/-/eslint-scope-3.7.4.tgz#37fc1223f0786c39627068a12e94d6e6fc61de16" @@ -2553,6 +2560,11 @@ resolved "https://registry.yarnpkg.com/@types/mime/-/mime-3.0.1.tgz#5f8f2bca0a5863cb69bc0b0acd88c96cb1d4ae10" integrity sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA== +"@types/ms@*": + version "0.7.31" + resolved "https://registry.yarnpkg.com/@types/ms/-/ms-0.7.31.tgz#31b7ca6407128a3d2bbc27fe2d21b345397f6197" + integrity sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA== + "@types/node@*": version "18.15.2" resolved "https://registry.yarnpkg.com/@types/node/-/node-18.15.2.tgz#0407ceb15647f186318101546d5ae40725b73810" @@ -2573,7 +2585,7 @@ resolved "https://registry.yarnpkg.com/@types/parse5/-/parse5-5.0.3.tgz#e7b5aebbac150f8b5fdd4a46e7f0bd8e65e19109" integrity sha512-kUNnecmtkunAoQ3CnjmMkzNU/gtxG8guhi+Fk2U/kOpIKjIMKnXGp4IJCgQJrXSgMsWYimYG4TGjz/UzbGEBTw== -"@types/prop-types@*": +"@types/prop-types@*", "@types/prop-types@^15.0.0": version "15.7.5" resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.5.tgz#5f19d2b85a98e9558036f6a3cacc8819420f05cf" integrity sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w== @@ -3124,6 +3136,11 @@ bail@^1.0.0: resolved "https://registry.yarnpkg.com/bail/-/bail-1.0.5.tgz#b6fa133404a392cbc1f8c4bf63f5953351e7a776" integrity sha512-xFbRxM1tahm08yHBP16MMjVUAvDaBMD38zsM9EMAUN61omwLmKlOpB/Zku5QkjZ8TZ4vn53pj+t518cH0S03RQ== +bail@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/bail/-/bail-2.0.2.tgz#d26f5cd8fe5d6f832a31517b9f7c356040ba6d5d" + integrity sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw== + balanced-match@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" @@ -3341,6 +3358,11 @@ character-entities@^1.0.0: resolved "https://registry.yarnpkg.com/character-entities/-/character-entities-1.2.4.tgz#e12c3939b7eaf4e5b15e7ad4c5e28e1d48c5b16b" integrity sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw== +character-entities@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/character-entities/-/character-entities-2.0.2.tgz#2d09c2e72cd9523076ccb21157dff66ad43fcc22" + integrity sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ== + character-reference-invalid@^1.0.0: version "1.1.4" resolved "https://registry.yarnpkg.com/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz#083329cda0eae272ab3dbbf37e9a382c13af1560" @@ -3502,6 +3524,11 @@ comma-separated-tokens@^1.0.0: resolved "https://registry.yarnpkg.com/comma-separated-tokens/-/comma-separated-tokens-1.0.8.tgz#632b80b6117867a158f1080ad498b2fbe7e3f5ea" integrity sha512-GHuDRO12Sypu2cV70d1dkA2EUmXHgntrzbpvOB+Qy+49ypNfGgFQIC2fhhXbnyrJRynDCAARsT7Ou0M6hirpfw== +comma-separated-tokens@^2.0.0: + version "2.0.3" + resolved "https://registry.yarnpkg.com/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz#4e89c9458acb61bc8fef19f4529973b2392839ee" + integrity sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg== + commander@^2.20.0: version "2.20.3" resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" @@ -3887,13 +3914,20 @@ debug@2.6.9, debug@^2.6.0: dependencies: ms "2.0.0" -debug@4, debug@^4.1.0, debug@^4.1.1: +debug@4, debug@^4.0.0, debug@^4.1.0, debug@^4.1.1: version "4.3.4" resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== dependencies: ms "2.1.2" +decode-named-character-reference@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/decode-named-character-reference/-/decode-named-character-reference-1.0.2.tgz#daabac9690874c394c81e4162a0304b35d824f0e" + integrity sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg== + dependencies: + character-entities "^2.0.0" + decompress-response@^3.3.0: version "3.3.0" resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-3.3.0.tgz#80a4dd323748384bfa248083622aedec982adff3" @@ -3960,6 +3994,11 @@ depd@~1.1.2: resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" integrity sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ== +dequal@^2.0.0: + version "2.0.3" + resolved "https://registry.yarnpkg.com/dequal/-/dequal-2.0.3.tgz#2644214f1997d39ed0ee0ece72335490a7ac67be" + integrity sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA== + destroy@1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015" @@ -3993,6 +4032,11 @@ detect-port@^1.3.0: address "^1.0.1" debug "4" +diff@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/diff/-/diff-5.1.0.tgz#bc52d298c5ea8df9194800224445ed43ffc87e40" + integrity sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw== + dir-glob@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" @@ -4825,6 +4869,11 @@ hast-util-to-parse5@^6.0.0: xtend "^4.0.0" zwitch "^1.0.0" +hast-util-whitespace@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/hast-util-whitespace/-/hast-util-whitespace-2.0.1.tgz#0ec64e257e6fc216c7d14c8a1b74d27d650b4557" + integrity sha512-nAxA0v8+vXSBDt3AnRUNjyRIQ0rD+ntpbAp4LnPkumc5M9yUbSMa4XDU9Q6etY4f1Wp4bNgvc1yjiZtsTTrSng== + hastscript@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/hastscript/-/hastscript-6.0.0.tgz#e8768d7eac56c3fdeac8a92830d58e811e5bf640" @@ -5236,6 +5285,11 @@ is-plain-obj@^3.0.0: resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-3.0.0.tgz#af6f2ea14ac5a646183a5bbdb5baabbc156ad9d7" integrity sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA== +is-plain-obj@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-4.1.0.tgz#d65025edec3657ce032fd7db63c97883eaed71f0" + integrity sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg== + is-plain-object@^2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" @@ -5305,6 +5359,11 @@ isobject@^3.0.1: resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" integrity sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg== +javascript-stringify@^2.0.1: + version "2.1.0" + resolved "https://registry.yarnpkg.com/javascript-stringify/-/javascript-stringify-2.1.0.tgz#27c76539be14d8bd128219a2d731b09337904e79" + integrity sha512-JVAfqNPTvNq3sB/VHQJAFxN/sPgKnsKrCwyRt15zwNCdrMMJDdcEOdubuy+DuJYYdm0ox1J4uzEuYKkN+9yhVg== + jest-util@^29.5.0: version "29.5.0" resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-29.5.0.tgz#24a4d3d92fc39ce90425311b23c27a6e0ef16b8f" @@ -5428,6 +5487,11 @@ kleur@^3.0.3: resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== +kleur@^4.0.3: + version "4.1.5" + resolved "https://registry.yarnpkg.com/kleur/-/kleur-4.1.5.tgz#95106101795f7050c6c650f350c683febddb1780" + integrity sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ== + klona@^2.0.5: version "2.0.6" resolved "https://registry.yarnpkg.com/klona/-/klona-2.0.6.tgz#85bffbf819c03b2f53270412420a4555ef882e22" @@ -5600,6 +5664,33 @@ mdast-util-definitions@^4.0.0: dependencies: unist-util-visit "^2.0.0" +mdast-util-definitions@^5.0.0: + version "5.1.2" + resolved "https://registry.yarnpkg.com/mdast-util-definitions/-/mdast-util-definitions-5.1.2.tgz#9910abb60ac5d7115d6819b57ae0bcef07a3f7a7" + integrity sha512-8SVPMuHqlPME/z3gqVwWY4zVXn8lqKv/pAhC57FuJ40ImXyBpmO5ukh98zB2v7Blql2FiHjHv9LVztSIqjY+MA== + dependencies: + "@types/mdast" "^3.0.0" + "@types/unist" "^2.0.0" + unist-util-visit "^4.0.0" + +mdast-util-from-markdown@^1.0.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/mdast-util-from-markdown/-/mdast-util-from-markdown-1.3.0.tgz#0214124154f26154a2b3f9d401155509be45e894" + integrity sha512-HN3W1gRIuN/ZW295c7zi7g9lVBllMgZE40RxCX37wrTPWXCWtpvOZdfnuK+1WNpvZje6XuJeI3Wnb4TJEUem+g== + dependencies: + "@types/mdast" "^3.0.0" + "@types/unist" "^2.0.0" + decode-named-character-reference "^1.0.0" + mdast-util-to-string "^3.1.0" + micromark "^3.0.0" + micromark-util-decode-numeric-character-reference "^1.0.0" + micromark-util-decode-string "^1.0.0" + micromark-util-normalize-identifier "^1.0.0" + micromark-util-symbol "^1.0.0" + micromark-util-types "^1.0.0" + unist-util-stringify-position "^3.0.0" + uvu "^0.5.0" + mdast-util-to-hast@10.0.1: version "10.0.1" resolved "https://registry.yarnpkg.com/mdast-util-to-hast/-/mdast-util-to-hast-10.0.1.tgz#0cfc82089494c52d46eb0e3edb7a4eb2aea021eb" @@ -5614,11 +5705,32 @@ mdast-util-to-hast@10.0.1: unist-util-position "^3.0.0" unist-util-visit "^2.0.0" +mdast-util-to-hast@^12.1.0: + version "12.3.0" + resolved "https://registry.yarnpkg.com/mdast-util-to-hast/-/mdast-util-to-hast-12.3.0.tgz#045d2825fb04374e59970f5b3f279b5700f6fb49" + integrity sha512-pits93r8PhnIoU4Vy9bjW39M2jJ6/tdHyja9rrot9uujkN7UTU9SDnE6WNJz/IGyQk3XHX6yNNtrBH6cQzm8Hw== + dependencies: + "@types/hast" "^2.0.0" + "@types/mdast" "^3.0.0" + mdast-util-definitions "^5.0.0" + micromark-util-sanitize-uri "^1.1.0" + trim-lines "^3.0.0" + unist-util-generated "^2.0.0" + unist-util-position "^4.0.0" + unist-util-visit "^4.0.0" + mdast-util-to-string@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/mdast-util-to-string/-/mdast-util-to-string-2.0.0.tgz#b8cfe6a713e1091cb5b728fc48885a4767f8b97b" integrity sha512-AW4DRS3QbBayY/jJmD8437V1Gombjf8RSOUCMFBuo5iHi58AGEgVCKQ+ezHkZZDpAQS75hcBMpLqjpJTjtUL7w== +mdast-util-to-string@^3.1.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/mdast-util-to-string/-/mdast-util-to-string-3.2.0.tgz#66f7bb6324756741c5f47a53557f0cbf16b6f789" + integrity sha512-V4Zn/ncyN1QNSqSBxTrMOLpjr+IKdHl2v3KVLoWmDPscP4r9GcCi71gjgvUV1SFSKh92AjAG4peFuBl2/YgCJg== + dependencies: + "@types/mdast" "^3.0.0" + mdn-data@2.0.14: version "2.0.14" resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.14.tgz#7113fc4281917d63ce29b43446f701e68c25ba50" @@ -5661,6 +5773,201 @@ methods@~1.1.2: resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" integrity sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w== +micromark-core-commonmark@^1.0.1: + version "1.0.6" + resolved "https://registry.yarnpkg.com/micromark-core-commonmark/-/micromark-core-commonmark-1.0.6.tgz#edff4c72e5993d93724a3c206970f5a15b0585ad" + integrity sha512-K+PkJTxqjFfSNkfAhp4GB+cZPfQd6dxtTXnf+RjZOV7T4EEXnvgzOcnp+eSTmpGk9d1S9sL6/lqrgSNn/s0HZA== + dependencies: + decode-named-character-reference "^1.0.0" + micromark-factory-destination "^1.0.0" + micromark-factory-label "^1.0.0" + micromark-factory-space "^1.0.0" + micromark-factory-title "^1.0.0" + micromark-factory-whitespace "^1.0.0" + micromark-util-character "^1.0.0" + micromark-util-chunked "^1.0.0" + micromark-util-classify-character "^1.0.0" + micromark-util-html-tag-name "^1.0.0" + micromark-util-normalize-identifier "^1.0.0" + micromark-util-resolve-all "^1.0.0" + micromark-util-subtokenize "^1.0.0" + micromark-util-symbol "^1.0.0" + micromark-util-types "^1.0.1" + uvu "^0.5.0" + +micromark-factory-destination@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/micromark-factory-destination/-/micromark-factory-destination-1.0.0.tgz#fef1cb59ad4997c496f887b6977aa3034a5a277e" + integrity sha512-eUBA7Rs1/xtTVun9TmV3gjfPz2wEwgK5R5xcbIM5ZYAtvGF6JkyaDsj0agx8urXnO31tEO6Ug83iVH3tdedLnw== + dependencies: + micromark-util-character "^1.0.0" + micromark-util-symbol "^1.0.0" + micromark-util-types "^1.0.0" + +micromark-factory-label@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/micromark-factory-label/-/micromark-factory-label-1.0.2.tgz#6be2551fa8d13542fcbbac478258fb7a20047137" + integrity sha512-CTIwxlOnU7dEshXDQ+dsr2n+yxpP0+fn271pu0bwDIS8uqfFcumXpj5mLn3hSC8iw2MUr6Gx8EcKng1dD7i6hg== + dependencies: + micromark-util-character "^1.0.0" + micromark-util-symbol "^1.0.0" + micromark-util-types "^1.0.0" + uvu "^0.5.0" + +micromark-factory-space@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/micromark-factory-space/-/micromark-factory-space-1.0.0.tgz#cebff49968f2b9616c0fcb239e96685cb9497633" + integrity sha512-qUmqs4kj9a5yBnk3JMLyjtWYN6Mzfcx8uJfi5XAveBniDevmZasdGBba5b4QsvRcAkmvGo5ACmSUmyGiKTLZew== + dependencies: + micromark-util-character "^1.0.0" + micromark-util-types "^1.0.0" + +micromark-factory-title@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/micromark-factory-title/-/micromark-factory-title-1.0.2.tgz#7e09287c3748ff1693930f176e1c4a328382494f" + integrity sha512-zily+Nr4yFqgMGRKLpTVsNl5L4PMu485fGFDOQJQBl2NFpjGte1e86zC0da93wf97jrc4+2G2GQudFMHn3IX+A== + dependencies: + micromark-factory-space "^1.0.0" + micromark-util-character "^1.0.0" + micromark-util-symbol "^1.0.0" + micromark-util-types "^1.0.0" + uvu "^0.5.0" + +micromark-factory-whitespace@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/micromark-factory-whitespace/-/micromark-factory-whitespace-1.0.0.tgz#e991e043ad376c1ba52f4e49858ce0794678621c" + integrity sha512-Qx7uEyahU1lt1RnsECBiuEbfr9INjQTGa6Err+gF3g0Tx4YEviPbqqGKNv/NrBaE7dVHdn1bVZKM/n5I/Bak7A== + dependencies: + micromark-factory-space "^1.0.0" + micromark-util-character "^1.0.0" + micromark-util-symbol "^1.0.0" + micromark-util-types "^1.0.0" + +micromark-util-character@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/micromark-util-character/-/micromark-util-character-1.1.0.tgz#d97c54d5742a0d9611a68ca0cd4124331f264d86" + integrity sha512-agJ5B3unGNJ9rJvADMJ5ZiYjBRyDpzKAOk01Kpi1TKhlT1APx3XZk6eN7RtSz1erbWHC2L8T3xLZ81wdtGRZzg== + dependencies: + micromark-util-symbol "^1.0.0" + micromark-util-types "^1.0.0" + +micromark-util-chunked@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/micromark-util-chunked/-/micromark-util-chunked-1.0.0.tgz#5b40d83f3d53b84c4c6bce30ed4257e9a4c79d06" + integrity sha512-5e8xTis5tEZKgesfbQMKRCyzvffRRUX+lK/y+DvsMFdabAicPkkZV6gO+FEWi9RfuKKoxxPwNL+dFF0SMImc1g== + dependencies: + micromark-util-symbol "^1.0.0" + +micromark-util-classify-character@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/micromark-util-classify-character/-/micromark-util-classify-character-1.0.0.tgz#cbd7b447cb79ee6997dd274a46fc4eb806460a20" + integrity sha512-F8oW2KKrQRb3vS5ud5HIqBVkCqQi224Nm55o5wYLzY/9PwHGXC01tr3d7+TqHHz6zrKQ72Okwtvm/xQm6OVNZA== + dependencies: + micromark-util-character "^1.0.0" + micromark-util-symbol "^1.0.0" + micromark-util-types "^1.0.0" + +micromark-util-combine-extensions@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/micromark-util-combine-extensions/-/micromark-util-combine-extensions-1.0.0.tgz#91418e1e74fb893e3628b8d496085639124ff3d5" + integrity sha512-J8H058vFBdo/6+AsjHp2NF7AJ02SZtWaVUjsayNFeAiydTxUwViQPxN0Hf8dp4FmCQi0UUFovFsEyRSUmFH3MA== + dependencies: + micromark-util-chunked "^1.0.0" + micromark-util-types "^1.0.0" + +micromark-util-decode-numeric-character-reference@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-1.0.0.tgz#dcc85f13b5bd93ff8d2868c3dba28039d490b946" + integrity sha512-OzO9AI5VUtrTD7KSdagf4MWgHMtET17Ua1fIpXTpuhclCqD8egFWo85GxSGvxgkGS74bEahvtM0WP0HjvV0e4w== + dependencies: + micromark-util-symbol "^1.0.0" + +micromark-util-decode-string@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/micromark-util-decode-string/-/micromark-util-decode-string-1.0.2.tgz#942252ab7a76dec2dbf089cc32505ee2bc3acf02" + integrity sha512-DLT5Ho02qr6QWVNYbRZ3RYOSSWWFuH3tJexd3dgN1odEuPNxCngTCXJum7+ViRAd9BbdxCvMToPOD/IvVhzG6Q== + dependencies: + decode-named-character-reference "^1.0.0" + micromark-util-character "^1.0.0" + micromark-util-decode-numeric-character-reference "^1.0.0" + micromark-util-symbol "^1.0.0" + +micromark-util-encode@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/micromark-util-encode/-/micromark-util-encode-1.0.1.tgz#2c1c22d3800870ad770ece5686ebca5920353383" + integrity sha512-U2s5YdnAYexjKDel31SVMPbfi+eF8y1U4pfiRW/Y8EFVCy/vgxk/2wWTxzcqE71LHtCuCzlBDRU2a5CQ5j+mQA== + +micromark-util-html-tag-name@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/micromark-util-html-tag-name/-/micromark-util-html-tag-name-1.1.0.tgz#eb227118befd51f48858e879b7a419fc0df20497" + integrity sha512-BKlClMmYROy9UiV03SwNmckkjn8QHVaWkqoAqzivabvdGcwNGMMMH/5szAnywmsTBUzDsU57/mFi0sp4BQO6dA== + +micromark-util-normalize-identifier@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-1.0.0.tgz#4a3539cb8db954bbec5203952bfe8cedadae7828" + integrity sha512-yg+zrL14bBTFrQ7n35CmByWUTFsgst5JhA4gJYoty4Dqzj4Z4Fr/DHekSS5aLfH9bdlfnSvKAWsAgJhIbogyBg== + dependencies: + micromark-util-symbol "^1.0.0" + +micromark-util-resolve-all@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/micromark-util-resolve-all/-/micromark-util-resolve-all-1.0.0.tgz#a7c363f49a0162e931960c44f3127ab58f031d88" + integrity sha512-CB/AGk98u50k42kvgaMM94wzBqozSzDDaonKU7P7jwQIuH2RU0TeBqGYJz2WY1UdihhjweivStrJ2JdkdEmcfw== + dependencies: + micromark-util-types "^1.0.0" + +micromark-util-sanitize-uri@^1.0.0, micromark-util-sanitize-uri@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-1.1.0.tgz#f12e07a85106b902645e0364feb07cf253a85aee" + integrity sha512-RoxtuSCX6sUNtxhbmsEFQfWzs8VN7cTctmBPvYivo98xb/kDEoTCtJQX5wyzIYEmk/lvNFTat4hL8oW0KndFpg== + dependencies: + micromark-util-character "^1.0.0" + micromark-util-encode "^1.0.0" + micromark-util-symbol "^1.0.0" + +micromark-util-subtokenize@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/micromark-util-subtokenize/-/micromark-util-subtokenize-1.0.2.tgz#ff6f1af6ac836f8bfdbf9b02f40431760ad89105" + integrity sha512-d90uqCnXp/cy4G881Ub4psE57Sf8YD0pim9QdjCRNjfas2M1u6Lbt+XZK9gnHL2XFhnozZiEdCa9CNfXSfQ6xA== + dependencies: + micromark-util-chunked "^1.0.0" + micromark-util-symbol "^1.0.0" + micromark-util-types "^1.0.0" + uvu "^0.5.0" + +micromark-util-symbol@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/micromark-util-symbol/-/micromark-util-symbol-1.0.1.tgz#b90344db62042ce454f351cf0bebcc0a6da4920e" + integrity sha512-oKDEMK2u5qqAptasDAwWDXq0tG9AssVwAx3E9bBF3t/shRIGsWIRG+cGafs2p/SnDSOecnt6hZPCE2o6lHfFmQ== + +micromark-util-types@^1.0.0, micromark-util-types@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/micromark-util-types/-/micromark-util-types-1.0.2.tgz#f4220fdb319205812f99c40f8c87a9be83eded20" + integrity sha512-DCfg/T8fcrhrRKTPjRrw/5LLvdGV7BHySf/1LOZx7TzWZdYRjogNtyNq885z3nNallwr3QUKARjqvHqX1/7t+w== + +micromark@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/micromark/-/micromark-3.1.0.tgz#eeba0fe0ac1c9aaef675157b52c166f125e89f62" + integrity sha512-6Mj0yHLdUZjHnOPgr5xfWIMqMWS12zDN6iws9SLuSz76W8jTtAv24MN4/CL7gJrl5vtxGInkkqDv/JIoRsQOvA== + dependencies: + "@types/debug" "^4.0.0" + debug "^4.0.0" + decode-named-character-reference "^1.0.0" + micromark-core-commonmark "^1.0.1" + micromark-factory-space "^1.0.0" + micromark-util-character "^1.0.0" + micromark-util-chunked "^1.0.0" + micromark-util-combine-extensions "^1.0.0" + micromark-util-decode-numeric-character-reference "^1.0.0" + micromark-util-encode "^1.0.0" + micromark-util-normalize-identifier "^1.0.0" + micromark-util-resolve-all "^1.0.0" + micromark-util-sanitize-uri "^1.0.0" + micromark-util-subtokenize "^1.0.0" + micromark-util-symbol "^1.0.0" + micromark-util-types "^1.0.1" + uvu "^0.5.0" + micromatch@^4.0.2, micromatch@^4.0.4, micromatch@^4.0.5: version "4.0.5" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" @@ -5740,6 +6047,11 @@ minimist@^1.2.0, minimist@^1.2.5: resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== +mri@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/mri/-/mri-1.2.0.tgz#6721480fec2a11a4889861115a48b6cbe7cc8f0b" + integrity sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA== + mrmime@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/mrmime/-/mrmime-1.0.1.tgz#5f90c825fad4bdd41dc914eff5d1a8cfdaf24f27" @@ -6530,7 +6842,7 @@ prompts@^2.4.2: kleur "^3.0.3" sisteransi "^1.0.5" -prop-types@^15.6.2, prop-types@^15.7.2: +prop-types@^15.0.0, prop-types@^15.6.2, prop-types@^15.7.2: version "15.8.1" resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5" integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg== @@ -6546,6 +6858,11 @@ property-information@^5.0.0, property-information@^5.3.0: dependencies: xtend "^4.0.0" +property-information@^6.0.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/property-information/-/property-information-6.2.0.tgz#b74f522c31c097b5149e3c3cb8d7f3defd986a1d" + integrity sha512-kma4U7AFCTwpqq5twzC1YVIDXSqg6qQK6JN0smOw8fgRy1OkMi0CYSzFmsy6dnqSenamAtj0CyXMUJ1Mf6oROg== + proxy-addr@~2.0.7: version "2.0.7" resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025" @@ -6715,6 +7032,11 @@ react-is@^16.13.1, react-is@^16.6.0, react-is@^16.7.0: resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== +react-is@^18.0.0: + version "18.2.0" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.2.0.tgz#199431eeaaa2e09f86427efbb4f1473edb47609b" + integrity sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w== + react-json-view@^1.21.3: version "1.21.3" resolved "https://registry.yarnpkg.com/react-json-view/-/react-json-view-1.21.3.tgz#f184209ee8f1bf374fb0c41b0813cff54549c475" @@ -6737,6 +7059,27 @@ react-loadable-ssr-addon-v5-slorber@^1.0.1: dependencies: "@babel/runtime" "^7.10.3" +react-markdown@^8.0.7: + version "8.0.7" + resolved "https://registry.yarnpkg.com/react-markdown/-/react-markdown-8.0.7.tgz#c8dbd1b9ba5f1c5e7e5f2a44de465a3caafdf89b" + integrity sha512-bvWbzG4MtOU62XqBx3Xx+zB2raaFFsq4mYiAzfjXJMEz2sixgeAfraA3tvzULF02ZdOMUOKTBFFaZJDDrq+BJQ== + dependencies: + "@types/hast" "^2.0.0" + "@types/prop-types" "^15.0.0" + "@types/unist" "^2.0.0" + comma-separated-tokens "^2.0.0" + hast-util-whitespace "^2.0.0" + prop-types "^15.0.0" + property-information "^6.0.0" + react-is "^18.0.0" + remark-parse "^10.0.0" + remark-rehype "^10.0.0" + space-separated-tokens "^2.0.0" + style-to-object "^0.4.0" + unified "^10.0.0" + unist-util-visit "^4.0.0" + vfile "^5.0.0" + react-router-config@^5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/react-router-config/-/react-router-config-5.1.1.tgz#0f4263d1a80c6b2dc7b9c1902c9526478194a988" @@ -6965,6 +7308,25 @@ remark-parse@8.0.3: vfile-location "^3.0.0" xtend "^4.0.1" +remark-parse@^10.0.0: + version "10.0.1" + resolved "https://registry.yarnpkg.com/remark-parse/-/remark-parse-10.0.1.tgz#6f60ae53edbf0cf38ea223fe643db64d112e0775" + integrity sha512-1fUyHr2jLsVOkhbvPRBJ5zTKZZyD6yZzYaWCS6BPBdQ8vEMBCH+9zNCDA6tET/zHCi/jLqjCWtlJZUPk+DbnFw== + dependencies: + "@types/mdast" "^3.0.0" + mdast-util-from-markdown "^1.0.0" + unified "^10.0.0" + +remark-rehype@^10.0.0: + version "10.1.0" + resolved "https://registry.yarnpkg.com/remark-rehype/-/remark-rehype-10.1.0.tgz#32dc99d2034c27ecaf2e0150d22a6dcccd9a6279" + integrity sha512-EFmR5zppdBp0WQeDVZ/b66CWJipB2q2VLNFMabzDSGR66Z2fQii83G5gTBbgGEnEEA0QRussvrFHxk1HWGJskw== + dependencies: + "@types/hast" "^2.0.0" + "@types/mdast" "^3.0.0" + mdast-util-to-hast "^12.1.0" + unified "^10.0.0" + remark-squeeze-paragraphs@4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/remark-squeeze-paragraphs/-/remark-squeeze-paragraphs-4.0.0.tgz#76eb0e085295131c84748c8e43810159c5653ead" @@ -7075,6 +7437,13 @@ rxjs@^7.5.4: dependencies: tslib "^2.1.0" +sade@^1.7.3: + version "1.8.1" + resolved "https://registry.yarnpkg.com/sade/-/sade-1.8.1.tgz#0a78e81d658d394887be57d2a409bf703a3b2701" + integrity sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A== + dependencies: + mri "^1.1.0" + safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: version "5.1.2" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" @@ -7390,6 +7759,11 @@ space-separated-tokens@^1.0.0: resolved "https://registry.yarnpkg.com/space-separated-tokens/-/space-separated-tokens-1.1.5.tgz#85f32c3d10d9682007e917414ddc5c26d1aa6899" integrity sha512-q/JSVd1Lptzhf5bkYm4ob4iWPjx0KiRe3sRFBNrVqbJkFaBm5vbbowy1mymoPNLRa52+oadOhJ+K49wsSeSjTA== +space-separated-tokens@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz#1ecd9d2350a3844572c3f4a312bceb018348859f" + integrity sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q== + spdy-transport@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/spdy-transport/-/spdy-transport-3.0.0.tgz#00d4863a6400ad75df93361a1608605e5dcdcf31" @@ -7525,6 +7899,13 @@ style-to-object@0.3.0, style-to-object@^0.3.0: dependencies: inline-style-parser "0.1.1" +style-to-object@^0.4.0: + version "0.4.1" + resolved "https://registry.yarnpkg.com/style-to-object/-/style-to-object-0.4.1.tgz#53cf856f7cf7f172d72939d9679556469ba5de37" + integrity sha512-HFpbb5gr2ypci7Qw+IOhnP2zOU7e77b+rzM+wTzXzfi1PrtBCX0E7Pk4wL4iTLnhzZ+JgEGAhX81ebTg/aYjQw== + dependencies: + inline-style-parser "0.1.1" + stylehacks@^5.1.0, stylehacks@^5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/stylehacks/-/stylehacks-5.1.1.tgz#7934a34eb59d7152149fa69d6e9e56f2fc34bcc9" @@ -7660,6 +8041,11 @@ tr46@~0.0.3: resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== +trim-lines@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/trim-lines/-/trim-lines-3.0.1.tgz#d802e332a07df861c48802c04321017b1bd87338" + integrity sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg== + trim-trailing-lines@^1.0.0: version "1.1.4" resolved "https://registry.yarnpkg.com/trim-trailing-lines/-/trim-trailing-lines-1.1.4.tgz#bd4abbec7cc880462f10b2c8b5ce1d8d1ec7c2c0" @@ -7680,6 +8066,11 @@ trough@^1.0.0: resolved "https://registry.yarnpkg.com/trough/-/trough-1.0.5.tgz#b8b639cefad7d0bb2abd37d433ff8293efa5f406" integrity sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA== +trough@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/trough/-/trough-2.1.0.tgz#0f7b511a4fde65a46f18477ab38849b22c554876" + integrity sha512-AqTiAOLcj85xS7vQ8QkAV41hPDIJ71XJB4RCUrzo/1GM2CQwhkJGaf9Hgr7BOugMRpgGUrqRg/DrBDl4H40+8g== + tslib@^2.0.3, tslib@^2.1.0, tslib@^2.4.0: version "2.5.0" resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.5.0.tgz#42bfed86f5787aeb41d031866c8f402429e0fddf" @@ -7758,6 +8149,19 @@ unified@9.2.0: trough "^1.0.0" vfile "^4.0.0" +unified@^10.0.0: + version "10.1.2" + resolved "https://registry.yarnpkg.com/unified/-/unified-10.1.2.tgz#b1d64e55dafe1f0b98bb6c719881103ecf6c86df" + integrity sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q== + dependencies: + "@types/unist" "^2.0.0" + bail "^2.0.0" + extend "^3.0.0" + is-buffer "^2.0.0" + is-plain-obj "^4.0.0" + trough "^2.0.0" + vfile "^5.0.0" + unified@^9.2.2: version "9.2.2" resolved "https://registry.yarnpkg.com/unified/-/unified-9.2.2.tgz#67649a1abfc3ab85d2969502902775eb03146975" @@ -7787,16 +8191,35 @@ unist-util-generated@^1.0.0: resolved "https://registry.yarnpkg.com/unist-util-generated/-/unist-util-generated-1.1.6.tgz#5ab51f689e2992a472beb1b35f2ce7ff2f324d4b" integrity sha512-cln2Mm1/CZzN5ttGK7vkoGw+RZ8VcUH6BtGbq98DDtRGquAAOXig1mrBQYelOwMXYS8rK+vZDyyojSjp7JX+Lg== +unist-util-generated@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/unist-util-generated/-/unist-util-generated-2.0.1.tgz#e37c50af35d3ed185ac6ceacb6ca0afb28a85cae" + integrity sha512-qF72kLmPxAw0oN2fwpWIqbXAVyEqUzDHMsbtPvOudIlUzXYFIeQIuxXQCRCFh22B7cixvU0MG7m3MW8FTq/S+A== + unist-util-is@^4.0.0: version "4.1.0" resolved "https://registry.yarnpkg.com/unist-util-is/-/unist-util-is-4.1.0.tgz#976e5f462a7a5de73d94b706bac1b90671b57797" integrity sha512-ZOQSsnce92GrxSqlnEEseX0gi7GH9zTJZ0p9dtu87WRb/37mMPO2Ilx1s/t9vBHrFhbgweUwb+t7cIn5dxPhZg== +unist-util-is@^5.0.0: + version "5.2.1" + resolved "https://registry.yarnpkg.com/unist-util-is/-/unist-util-is-5.2.1.tgz#b74960e145c18dcb6226bc57933597f5486deae9" + integrity sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw== + dependencies: + "@types/unist" "^2.0.0" + unist-util-position@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/unist-util-position/-/unist-util-position-3.1.0.tgz#1c42ee6301f8d52f47d14f62bbdb796571fa2d47" integrity sha512-w+PkwCbYSFw8vpgWD0v7zRCl1FpY3fjDSQ3/N/wNd9Ffa4gPi8+4keqt99N3XW6F99t/mUzp2xAhNmfKWp95QA== +unist-util-position@^4.0.0: + version "4.0.4" + resolved "https://registry.yarnpkg.com/unist-util-position/-/unist-util-position-4.0.4.tgz#93f6d8c7d6b373d9b825844645877c127455f037" + integrity sha512-kUBE91efOWfIVBo8xzh/uZQ7p9ffYRtUbMRZBNFYwf0RK8koUMx6dGUfwylLOKmaT2cs4wSW96QoYUSXAyEtpg== + dependencies: + "@types/unist" "^2.0.0" + unist-util-remove-position@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/unist-util-remove-position/-/unist-util-remove-position-2.0.1.tgz#5d19ca79fdba712301999b2b73553ca8f3b352cc" @@ -7818,6 +8241,13 @@ unist-util-stringify-position@^2.0.0: dependencies: "@types/unist" "^2.0.2" +unist-util-stringify-position@^3.0.0: + version "3.0.3" + resolved "https://registry.yarnpkg.com/unist-util-stringify-position/-/unist-util-stringify-position-3.0.3.tgz#03ad3348210c2d930772d64b489580c13a7db39d" + integrity sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg== + dependencies: + "@types/unist" "^2.0.0" + unist-util-visit-parents@^3.0.0: version "3.1.1" resolved "https://registry.yarnpkg.com/unist-util-visit-parents/-/unist-util-visit-parents-3.1.1.tgz#65a6ce698f78a6b0f56aa0e88f13801886cdaef6" @@ -7826,6 +8256,14 @@ unist-util-visit-parents@^3.0.0: "@types/unist" "^2.0.0" unist-util-is "^4.0.0" +unist-util-visit-parents@^5.1.1: + version "5.1.3" + resolved "https://registry.yarnpkg.com/unist-util-visit-parents/-/unist-util-visit-parents-5.1.3.tgz#b4520811b0ca34285633785045df7a8d6776cfeb" + integrity sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg== + dependencies: + "@types/unist" "^2.0.0" + unist-util-is "^5.0.0" + unist-util-visit@2.0.3, unist-util-visit@^2.0.0, unist-util-visit@^2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/unist-util-visit/-/unist-util-visit-2.0.3.tgz#c3703893146df47203bb8a9795af47d7b971208c" @@ -7835,6 +8273,15 @@ unist-util-visit@2.0.3, unist-util-visit@^2.0.0, unist-util-visit@^2.0.3: unist-util-is "^4.0.0" unist-util-visit-parents "^3.0.0" +unist-util-visit@^4.0.0: + version "4.1.2" + resolved "https://registry.yarnpkg.com/unist-util-visit/-/unist-util-visit-4.1.2.tgz#125a42d1eb876283715a3cb5cceaa531828c72e2" + integrity sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg== + dependencies: + "@types/unist" "^2.0.0" + unist-util-is "^5.0.0" + unist-util-visit-parents "^5.1.1" + universalify@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717" @@ -7943,6 +8390,16 @@ uuid@^8.3.2: resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== +uvu@^0.5.0: + version "0.5.6" + resolved "https://registry.yarnpkg.com/uvu/-/uvu-0.5.6.tgz#2754ca20bcb0bb59b64e9985e84d2e81058502df" + integrity sha512-+g8ENReyr8YsOc6fv/NVJs2vFdHBnBNdfE49rshrTzDWOlUx4Gq7KOS2GD8eqhy2j+Ejq29+SbKH8yjkAqXqoA== + dependencies: + dequal "^2.0.0" + diff "^5.0.0" + kleur "^4.0.3" + sade "^1.7.3" + value-equal@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/value-equal/-/value-equal-1.0.1.tgz#1e0b794c734c5c0cade179c437d356d931a34d6c" @@ -7966,6 +8423,14 @@ vfile-message@^2.0.0: "@types/unist" "^2.0.0" unist-util-stringify-position "^2.0.0" +vfile-message@^3.0.0: + version "3.1.4" + resolved "https://registry.yarnpkg.com/vfile-message/-/vfile-message-3.1.4.tgz#15a50816ae7d7c2d1fa87090a7f9f96612b59dea" + integrity sha512-fa0Z6P8HUrQN4BZaX05SIVXic+7kE3b05PWAtPuYP9QLHsLKYR7/AlLW3NtOrpXRLeawpDLMsVkmk5DG0NXgWw== + dependencies: + "@types/unist" "^2.0.0" + unist-util-stringify-position "^3.0.0" + vfile@^4.0.0: version "4.2.1" resolved "https://registry.yarnpkg.com/vfile/-/vfile-4.2.1.tgz#03f1dce28fc625c625bc6514350fbdb00fa9e624" @@ -7976,6 +8441,16 @@ vfile@^4.0.0: unist-util-stringify-position "^2.0.0" vfile-message "^2.0.0" +vfile@^5.0.0: + version "5.3.7" + resolved "https://registry.yarnpkg.com/vfile/-/vfile-5.3.7.tgz#de0677e6683e3380fafc46544cfe603118826ab7" + integrity sha512-r7qlzkgErKjobAmyNIkkSpizsFPYiUPuJb5pNW1RB4JcYVZhs4lIbVqk8XPk033CV/1z8ss5pkax8SuhGpcG8g== + dependencies: + "@types/unist" "^2.0.0" + is-buffer "^2.0.0" + unist-util-stringify-position "^3.0.0" + vfile-message "^3.0.0" + wait-on@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/wait-on/-/wait-on-6.0.1.tgz#16bbc4d1e4ebdd41c5b4e63a2e16dbd1f4e5601e" @@ -8287,11 +8762,25 @@ yallist@^4.0.0: resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== +yaml-loader@^0.8.0: + version "0.8.0" + resolved "https://registry.yarnpkg.com/yaml-loader/-/yaml-loader-0.8.0.tgz#c839325e3fdee082b3768b2a21fe34fde5d96f61" + integrity sha512-LjeKnTzVBKWiQBeE2L9ssl6WprqaUIxCSNs5tle8PaDydgu3wVFXTbMfsvF2MSErpy9TDVa092n4q6adYwJaWg== + dependencies: + javascript-stringify "^2.0.1" + loader-utils "^2.0.0" + yaml "^2.0.0" + yaml@^1.10.0, yaml@^1.10.2, yaml@^1.7.2: version "1.10.2" resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== +yaml@^2.0.0: + version "2.2.2" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.2.2.tgz#ec551ef37326e6d42872dad1970300f8eb83a073" + integrity sha512-CBKFWExMn46Foo4cldiChEzn7S7SRV+wqiluAb6xmueD/fGyRHIhX8m14vVGgeFWjN540nKCNVj6P21eQjgTuA== + yocto-queue@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" @@ -8301,4 +8790,3 @@ zwitch@^1.0.0: version "1.0.5" resolved "https://registry.yarnpkg.com/zwitch/-/zwitch-1.0.5.tgz#d11d7381ffed16b742f6af7b3f223d5cd9fe9920" integrity sha512-V50KMwwzqJV0NpZIZFwfOD5/lyny3WlSzRiXgA0G7VUnRlqttta1L6UQIHzd6EuBY/cHGfwTIck7w1yH6Q5zUw== - diff --git a/gradle.properties b/gradle.properties index d79d504d0a10d..369a81f45d5ca 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,4 +1,4 @@ -VERSION=0.44.1 +VERSION=0.44.2 # NOTE: some of these values are overwritten in CI! # NOTE: if you want to override this for your local machine, set overrides in ~/.gradle/gradle.properties diff --git a/octavia-cli/Dockerfile b/octavia-cli/Dockerfile index f2327a9f1d60f..7ca31532a1e16 100644 --- a/octavia-cli/Dockerfile +++ b/octavia-cli/Dockerfile @@ -14,5 +14,5 @@ USER octavia-cli WORKDIR /home/octavia-project ENTRYPOINT ["octavia"] -LABEL io.airbyte.version=0.44.1 +LABEL io.airbyte.version=0.44.2 LABEL io.airbyte.name=airbyte/octavia-cli diff --git a/octavia-cli/README.md b/octavia-cli/README.md index 64624fc9cd81b..2408ab206b1f4 100644 --- a/octavia-cli/README.md +++ b/octavia-cli/README.md @@ -104,7 +104,7 @@ This script: ```bash touch ~/.octavia # Create a file to store env variables that will be mapped the octavia-cli container mkdir my_octavia_project_directory # Create your octavia project directory where YAML configurations will be stored. -docker run --name octavia-cli -i --rm -v my_octavia_project_directory:/home/octavia-project --network host --user $(id -u):$(id -g) --env-file ~/.octavia airbyte/octavia-cli:0.44.1 +docker run --name octavia-cli -i --rm -v my_octavia_project_directory:/home/octavia-project --network host --user $(id -u):$(id -g) --env-file ~/.octavia airbyte/octavia-cli:0.44.2 ``` ### Using `docker-compose` diff --git a/octavia-cli/install.sh b/octavia-cli/install.sh index 0ed52b4850778..7ce964799cf3d 100755 --- a/octavia-cli/install.sh +++ b/octavia-cli/install.sh @@ -3,7 +3,7 @@ # This install scripts currently only works for ZSH and Bash profiles. # It creates an octavia alias in your profile bound to a docker run command and your current user. -VERSION=0.44.1 +VERSION=0.44.2 OCTAVIA_ENV_FILE=${HOME}/.octavia detect_profile() { diff --git a/octavia-cli/setup.py b/octavia-cli/setup.py index 08e09e0e42803..259e60b4afbf5 100644 --- a/octavia-cli/setup.py +++ b/octavia-cli/setup.py @@ -15,7 +15,7 @@ setup( name="octavia-cli", - version="0.44.1", + version="0.44.2", description="A command line interface to manage Airbyte configurations", long_description=README, author="Airbyte", diff --git a/run-ab-platform.sh b/run-ab-platform.sh index 900136509374c..d6126275fddc5 100755 --- a/run-ab-platform.sh +++ b/run-ab-platform.sh @@ -1,6 +1,6 @@ #!/bin/bash -VERSION=0.44.1 +VERSION=0.44.2 # Run away from anything even a little scary set -o nounset # -u exit if a variable is not set set -o errexit # -f exit for any command failure" diff --git a/tools/ci_connector_ops/ci_connector_ops/pipelines/actions/environments.py b/tools/ci_connector_ops/ci_connector_ops/pipelines/actions/environments.py index e4edd4f039317..faa39101d6875 100644 --- a/tools/ci_connector_ops/ci_connector_ops/pipelines/actions/environments.py +++ b/tools/ci_connector_ops/ci_connector_ops/pipelines/actions/environments.py @@ -450,10 +450,10 @@ def with_poetry(context: PipelineContext) -> Container: python_with_git = with_debian_packages(python_base_environment, ["git"]) python_with_poetry = with_pip_packages(python_with_git, ["poetry"]) - poetry_cache: CacheVolume = context.dagger_client.cache_volume("poetry_cache") - poetry_with_cache = python_with_poetry.with_mounted_cache("/root/.cache/pypoetry", poetry_cache, sharing=CacheSharingMode.SHARED) + # poetry_cache: CacheVolume = context.dagger_client.cache_volume("poetry_cache") + # poetry_with_cache = python_with_poetry.with_mounted_cache("/root/.cache/pypoetry", poetry_cache, sharing=CacheSharingMode.SHARED) - return poetry_with_cache + return python_with_poetry def with_poetry_module(context: PipelineContext, parent_dir: Directory, module_path: str) -> Container: @@ -591,7 +591,6 @@ def with_integration_base_java_and_normalization(context: PipelineContext, build async def with_airbyte_java_connector(context: ConnectorContext, connector_java_tar_file: File, build_platform: Platform): - dockerfile = context.get_connector_dir(include=["Dockerfile"]).file("Dockerfile") application = context.connector.technical_name build_stage = (