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 e2753d261d7476..b25a2bd89264d2 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 @@ -18110,7 +18110,7 @@ "sourceDefinitionId": "12928b32-bf0a-4f1e-964f-07e12e37153a", "name": "Mixpanel", "dockerRepository": "airbyte/source-mixpanel", - "dockerImageTag": "0.1.31", + "dockerImageTag": "0.1.32", "documentationUrl": "https://docs.airbyte.com/integrations/sources/mixpanel", "icon": "mixpanel.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 d0e810409c59a5..4eb84e2acc0d74 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 @@ -1276,7 +1276,7 @@ - name: Mixpanel sourceDefinitionId: 12928b32-bf0a-4f1e-964f-07e12e37153a dockerRepository: airbyte/source-mixpanel - dockerImageTag: 0.1.31 + dockerImageTag: 0.1.32 documentationUrl: https://docs.airbyte.com/integrations/sources/mixpanel icon: mixpanel.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 18f07004a4f8f3..a1f8bf8dd54734 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 @@ -9208,7 +9208,7 @@ supportsNormalization: false supportsDBT: false supported_destination_sync_modes: [] -- dockerImage: "airbyte/source-mixpanel:0.1.31" +- dockerImage: "airbyte/source-mixpanel:0.1.32" spec: documentationUrl: "https://docs.airbyte.com/integrations/sources/mixpanel" connectionSpecification: diff --git a/airbyte-integrations/connectors/source-mixpanel/Dockerfile b/airbyte-integrations/connectors/source-mixpanel/Dockerfile index bbd03e96d63962..a744159636be5a 100644 --- a/airbyte-integrations/connectors/source-mixpanel/Dockerfile +++ b/airbyte-integrations/connectors/source-mixpanel/Dockerfile @@ -13,5 +13,5 @@ ENV AIRBYTE_ENTRYPOINT "python /airbyte/integration_code/main.py" ENTRYPOINT ["python", "/airbyte/integration_code/main.py"] -LABEL io.airbyte.version=0.1.31 +LABEL io.airbyte.version=0.1.32 LABEL io.airbyte.name=airbyte/source-mixpanel diff --git a/airbyte-integrations/connectors/source-mixpanel/acceptance-test-config.yml b/airbyte-integrations/connectors/source-mixpanel/acceptance-test-config.yml index dfdde829eae6de..1ffdbd0aac3d71 100644 --- a/airbyte-integrations/connectors/source-mixpanel/acceptance-test-config.yml +++ b/airbyte-integrations/connectors/source-mixpanel/acceptance-test-config.yml @@ -29,7 +29,6 @@ acceptance_tests: extra_fields: no exact_order: no extra_records: yes - fail_on_extra_columns: false full_refresh: tests: - config_path: "secrets/config_old.json" diff --git a/airbyte-integrations/connectors/source-mixpanel/integration_tests/expected_records.jsonl b/airbyte-integrations/connectors/source-mixpanel/integration_tests/expected_records.jsonl index 13c8246b321c09..7ecdfe402521c2 100644 --- a/airbyte-integrations/connectors/source-mixpanel/integration_tests/expected_records.jsonl +++ b/airbyte-integrations/connectors/source-mixpanel/integration_tests/expected_records.jsonl @@ -1,47 +1,19 @@ -{"stream": "funnels", "data": {"funnel_id": 36152117, "name": "test", "date": "2023-01-05", "steps": [{"count": 0, "avg_time": null, "avg_time_from_start": null, "event": "Purchase", "goal": "Purchase", "step_label": "Purchase", "overall_conv_ratio": 1, "step_conv_ratio": 1}, {"count": 0, "avg_time": null, "avg_time_from_start": null, "event": "$custom_event:1305068", "goal": "$custom_event:1305068", "step_label": "111", "custom_event": true, "custom_event_id": 1305068, "overall_conv_ratio": 0, "step_conv_ratio": 0}], "analysis": {"completion": 0, "starting_amount": 0, "steps": 2, "worst": 1}}, "emitted_at": 1674078162835} -{"stream": "funnels", "data": {"funnel_id": 36152117, "name": "test", "date": "2023-01-06", "steps": [{"count": 0, "avg_time": null, "avg_time_from_start": null, "event": "Purchase", "goal": "Purchase", "step_label": "Purchase", "overall_conv_ratio": 1, "step_conv_ratio": 1}, {"count": 0, "avg_time": null, "avg_time_from_start": null, "event": "$custom_event:1305068", "goal": "$custom_event:1305068", "step_label": "111", "custom_event": true, "custom_event_id": 1305068, "overall_conv_ratio": 0, "step_conv_ratio": 0}], "analysis": {"completion": 0, "starting_amount": 0, "steps": 2, "worst": 1}}, "emitted_at": 1674078162836} -{"stream": "funnels", "data": {"funnel_id": 36152117, "name": "test", "date": "2023-01-07", "steps": [{"count": 0, "avg_time": null, "avg_time_from_start": null, "event": "Purchase", "goal": "Purchase", "step_label": "Purchase", "overall_conv_ratio": 1, "step_conv_ratio": 1}, {"count": 0, "avg_time": null, "avg_time_from_start": null, "event": "$custom_event:1305068", "goal": "$custom_event:1305068", "step_label": "111", "custom_event": true, "custom_event_id": 1305068, "overall_conv_ratio": 0, "step_conv_ratio": 0}], "analysis": {"completion": 0, "starting_amount": 0, "steps": 2, "worst": 1}}, "emitted_at": 1674078162837} -{"stream": "funnels", "data": {"funnel_id": 36152117, "name": "test", "date": "2023-01-08", "steps": [{"count": 0, "avg_time": null, "avg_time_from_start": null, "event": "Purchase", "goal": "Purchase", "step_label": "Purchase", "overall_conv_ratio": 1, "step_conv_ratio": 1}, {"count": 0, "avg_time": null, "avg_time_from_start": null, "event": "$custom_event:1305068", "goal": "$custom_event:1305068", "step_label": "111", "custom_event": true, "custom_event_id": 1305068, "overall_conv_ratio": 0, "step_conv_ratio": 0}], "analysis": {"completion": 0, "starting_amount": 0, "steps": 2, "worst": 1}}, "emitted_at": 1674078162837} -{"stream": "funnels", "data": {"funnel_id": 36152117, "name": "test", "date": "2023-01-09", "steps": [{"count": 0, "avg_time": null, "avg_time_from_start": null, "event": "Purchase", "goal": "Purchase", "step_label": "Purchase", "overall_conv_ratio": 1, "step_conv_ratio": 1}, {"count": 0, "avg_time": null, "avg_time_from_start": null, "event": "$custom_event:1305068", "goal": "$custom_event:1305068", "step_label": "111", "custom_event": true, "custom_event_id": 1305068, "overall_conv_ratio": 0, "step_conv_ratio": 0}], "analysis": {"completion": 0, "starting_amount": 0, "steps": 2, "worst": 1}}, "emitted_at": 1674078162837} -{"stream": "funnels", "data": {"funnel_id": 36152117, "name": "test", "date": "2023-01-01", "steps": [{"count": 0, "avg_time": null, "avg_time_from_start": null, "event": "Purchase", "goal": "Purchase", "step_label": "Purchase", "overall_conv_ratio": 1, "step_conv_ratio": 1}, {"count": 0, "avg_time": null, "avg_time_from_start": null, "event": "$custom_event:1305068", "goal": "$custom_event:1305068", "step_label": "111", "custom_event": true, "custom_event_id": 1305068, "overall_conv_ratio": 0, "step_conv_ratio": 0}], "analysis": {"completion": 0, "starting_amount": 0, "steps": 2, "worst": 1}}, "emitted_at": 1674078162838} -{"stream": "funnels", "data": {"funnel_id": 36152117, "name": "test", "date": "2023-01-02", "steps": [{"count": 0, "avg_time": null, "avg_time_from_start": null, "event": "Purchase", "goal": "Purchase", "step_label": "Purchase", "overall_conv_ratio": 1, "step_conv_ratio": 1}, {"count": 0, "avg_time": null, "avg_time_from_start": null, "event": "$custom_event:1305068", "goal": "$custom_event:1305068", "step_label": "111", "custom_event": true, "custom_event_id": 1305068, "overall_conv_ratio": 0, "step_conv_ratio": 0}], "analysis": {"completion": 0, "starting_amount": 0, "steps": 2, "worst": 1}}, "emitted_at": 1674078162838} -{"stream": "funnels", "data": {"funnel_id": 36152117, "name": "test", "date": "2023-01-03", "steps": [{"count": 0, "avg_time": null, "avg_time_from_start": null, "event": "Purchase", "goal": "Purchase", "step_label": "Purchase", "overall_conv_ratio": 1, "step_conv_ratio": 1}, {"count": 0, "avg_time": null, "avg_time_from_start": null, "event": "$custom_event:1305068", "goal": "$custom_event:1305068", "step_label": "111", "custom_event": true, "custom_event_id": 1305068, "overall_conv_ratio": 0, "step_conv_ratio": 0}], "analysis": {"completion": 0, "starting_amount": 0, "steps": 2, "worst": 1}}, "emitted_at": 1674078162838} -{"stream": "funnels", "data": {"funnel_id": 36152117, "name": "test", "date": "2023-01-04", "steps": [{"count": 0, "avg_time": null, "avg_time_from_start": null, "event": "Purchase", "goal": "Purchase", "step_label": "Purchase", "overall_conv_ratio": 1, "step_conv_ratio": 1}, {"count": 0, "avg_time": null, "avg_time_from_start": null, "event": "$custom_event:1305068", "goal": "$custom_event:1305068", "step_label": "111", "custom_event": true, "custom_event_id": 1305068, "overall_conv_ratio": 0, "step_conv_ratio": 0}], "analysis": {"completion": 0, "starting_amount": 0, "steps": 2, "worst": 1}}, "emitted_at": 1674078162839} -{"stream": "funnels", "data": {"funnel_id": 36152117, "name": "test", "date": "2023-01-10", "steps": [{"count": 0, "avg_time": null, "avg_time_from_start": null, "event": "Purchase", "goal": "Purchase", "step_label": "Purchase", "overall_conv_ratio": 1, "step_conv_ratio": 1}, {"count": 0, "avg_time": null, "avg_time_from_start": null, "event": "$custom_event:1305068", "goal": "$custom_event:1305068", "step_label": "111", "custom_event": true, "custom_event_id": 1305068, "overall_conv_ratio": 0, "step_conv_ratio": 0}], "analysis": {"completion": 0, "starting_amount": 0, "steps": 2, "worst": 1}}, "emitted_at": 1674078162839} -{"stream": "funnels", "data": {"funnel_id": 36152117, "name": "test", "date": "2023-01-11", "steps": [{"count": 0, "avg_time": null, "avg_time_from_start": null, "event": "Purchase", "goal": "Purchase", "step_label": "Purchase", "overall_conv_ratio": 1, "step_conv_ratio": 1}, {"count": 0, "avg_time": null, "avg_time_from_start": null, "event": "$custom_event:1305068", "goal": "$custom_event:1305068", "step_label": "111", "custom_event": true, "custom_event_id": 1305068, "overall_conv_ratio": 0, "step_conv_ratio": 0}], "analysis": {"completion": 0, "starting_amount": 0, "steps": 2, "worst": 1}}, "emitted_at": 1674078162839} -{"stream": "funnels", "data": {"funnel_id": 36152117, "name": "test", "date": "2023-01-12", "steps": [{"count": 0, "avg_time": null, "avg_time_from_start": null, "event": "Purchase", "goal": "Purchase", "step_label": "Purchase", "overall_conv_ratio": 1, "step_conv_ratio": 1}, {"count": 0, "avg_time": null, "avg_time_from_start": null, "event": "$custom_event:1305068", "goal": "$custom_event:1305068", "step_label": "111", "custom_event": true, "custom_event_id": 1305068, "overall_conv_ratio": 0, "step_conv_ratio": 0}], "analysis": {"completion": 0, "starting_amount": 0, "steps": 2, "worst": 1}}, "emitted_at": 1674078162840} -{"stream": "funnels", "data": {"funnel_id": 36152117, "name": "test", "date": "2023-01-13", "steps": [{"count": 1, "avg_time": null, "avg_time_from_start": null, "event": "Purchase", "goal": "Purchase", "step_label": "Purchase", "overall_conv_ratio": 1, "step_conv_ratio": 1}, {"count": 0, "avg_time": null, "avg_time_from_start": null, "event": "$custom_event:1305068", "goal": "$custom_event:1305068", "step_label": "111", "custom_event": true, "custom_event_id": 1305068, "overall_conv_ratio": 0.0, "step_conv_ratio": 0.0}], "analysis": {"completion": 0, "starting_amount": 1, "steps": 2, "worst": 1}}, "emitted_at": 1674078162840} -{"stream": "funnels", "data": {"funnel_id": 36152117, "name": "test", "date": "2023-01-14", "steps": [{"count": 0, "avg_time": null, "avg_time_from_start": null, "event": "Purchase", "goal": "Purchase", "step_label": "Purchase", "overall_conv_ratio": 1, "step_conv_ratio": 1}, {"count": 0, "avg_time": null, "avg_time_from_start": null, "event": "$custom_event:1305068", "goal": "$custom_event:1305068", "step_label": "111", "custom_event": true, "custom_event_id": 1305068, "overall_conv_ratio": 0, "step_conv_ratio": 0}], "analysis": {"completion": 0, "starting_amount": 0, "steps": 2, "worst": 1}}, "emitted_at": 1674078162840} -{"stream": "funnels", "data": {"funnel_id": 36152117, "name": "test", "date": "2023-01-15", "steps": [{"count": 0, "avg_time": null, "avg_time_from_start": null, "event": "Purchase", "goal": "Purchase", "step_label": "Purchase", "overall_conv_ratio": 1, "step_conv_ratio": 1}, {"count": 0, "avg_time": null, "avg_time_from_start": null, "event": "$custom_event:1305068", "goal": "$custom_event:1305068", "step_label": "111", "custom_event": true, "custom_event_id": 1305068, "overall_conv_ratio": 0, "step_conv_ratio": 0}], "analysis": {"completion": 0, "starting_amount": 0, "steps": 2, "worst": 1}}, "emitted_at": 1674078162841} -{"stream": "funnels", "data": {"funnel_id": 36152117, "name": "test", "date": "2023-01-16", "steps": [{"count": 0, "avg_time": null, "avg_time_from_start": null, "event": "Purchase", "goal": "Purchase", "step_label": "Purchase", "overall_conv_ratio": 1, "step_conv_ratio": 1}, {"count": 0, "avg_time": null, "avg_time_from_start": null, "event": "$custom_event:1305068", "goal": "$custom_event:1305068", "step_label": "111", "custom_event": true, "custom_event_id": 1305068, "overall_conv_ratio": 0, "step_conv_ratio": 0}], "analysis": {"completion": 0, "starting_amount": 0, "steps": 2, "worst": 1}}, "emitted_at": 1674078162841} -{"stream": "funnels", "data": {"funnel_id": 36152117, "name": "test", "date": "2023-01-17", "steps": [{"count": 0, "avg_time": null, "avg_time_from_start": null, "event": "Purchase", "goal": "Purchase", "step_label": "Purchase", "overall_conv_ratio": 1, "step_conv_ratio": 1}, {"count": 0, "avg_time": null, "avg_time_from_start": null, "event": "$custom_event:1305068", "goal": "$custom_event:1305068", "step_label": "111", "custom_event": true, "custom_event_id": 1305068, "overall_conv_ratio": 0, "step_conv_ratio": 0}], "analysis": {"completion": 0, "starting_amount": 0, "steps": 2, "worst": 1}}, "emitted_at": 1674078162842} -{"stream": "funnels", "data": {"funnel_id": 36152117, "name": "test", "date": "2023-01-18", "steps": [{"count": 0, "avg_time": null, "avg_time_from_start": null, "event": "Purchase", "goal": "Purchase", "step_label": "Purchase", "overall_conv_ratio": 1, "step_conv_ratio": 1}, {"count": 0, "avg_time": null, "avg_time_from_start": null, "event": "$custom_event:1305068", "goal": "$custom_event:1305068", "step_label": "111", "custom_event": true, "custom_event_id": 1305068, "overall_conv_ratio": 0, "step_conv_ratio": 0}], "analysis": {"completion": 0, "starting_amount": 0, "steps": 2, "worst": 1}}, "emitted_at": 1674078162842} -{"stream": "engage", "data": {"distinct_id": "123@gmail.com", "email": "123@gmail.com", "name": "123", "123": "123456", "last_seen": "2023-01-01T00:00:00"}, "emitted_at": 1674078164884} -{"stream": "engage", "data": {"distinct_id": "integration-test@airbyte.io", "name": "Integration Test1", "test": "test", "email": "integration-test@airbyte.io", "last_seen": "2023-01-01T00:00:00"}, "emitted_at": 1674078164885} -{"stream": "engage", "data": {"distinct_id": "integration-test.db4415.mp-service-account", "name": "test", "test": "test", "last_seen": "2023-01-01T00:00:00"}, "emitted_at": 1674078164886} -{"stream": "annotations", "data": {"date": "2023-01-15T12:00:00+01:00", "description": "test", "id": 1138193, "project_id": 2529987, "user": {"id": 3440095, "first_name": "", "last_name": ""}}, "emitted_at": 1674078166077} -{"stream": "annotations", "data": {"date": "2023-01-13T12:00:00+01:00", "description": "test123", "id": 1138196, "project_id": 2529987, "user": {"id": 3440095, "first_name": "", "last_name": ""}}, "emitted_at": 1674078166077} -{"stream": "annotations", "data": {"date": "2023-01-13T12:00:00+01:00", "description": "test121233", "id": 1138197, "project_id": 2529987, "user": {"id": 3440095, "first_name": "", "last_name": ""}}, "emitted_at": 1674078166077} -{"stream": "export", "data": {"event": "Purchase", "import": "True", "insert_id": "935d87b1-00cd-41b7-be34-b9d98dd08b42", "mp_api_endpoint": "api.mixpanel.com", "mp_api_timestamp_ms": "1674001620825", "Amount": "5", "Item": "Coffee", "distinct_id": "91304156-cafc-4673-a237-623d1129c801", "mp_processing_time_ms": "1674001621149", "time": "2023-01-13T12:05:17Z"}, "emitted_at": 1674078168557} -{"stream": "export", "data": {"event": "Signup", "import": "True", "insert_id": "29fc2962-6d9c-455d-95ad-95b84f09b9e4", "mp_api_endpoint": "api.mixpanel.com", "mp_api_timestamp_ms": "1674001620825", "Referred by": "Friend", "URL": "mixpanel.com/signup", "distinct_id": "91304156-cafc-4673-a237-623d1129c801", "mp_processing_time_ms": "1674001621450", "time": "2023-01-13T12:05:17Z"}, "emitted_at": 1674078168559} -{"stream": "cohorts", "data": {"id": 1478097, "project_id": 2529987, "name": "Cohort1", "description": "", "data_group_id": null, "count": 2, "is_visible": 1, "created": "2021-09-14 15:57:43"}, "emitted_at": 1674078170456} -{"stream": "cohort_members", "data": {"distinct_id": "integration-test@airbyte.io", "name": "Integration Test1", "test": "test", "email": "integration-test@airbyte.io", "last_seen": "2023-01-01T00:00:00", "cohort_id": 1478097}, "emitted_at": 1674078233870} -{"stream": "cohort_members", "data": {"distinct_id": "integration-test.db4415.mp-service-account", "name": "test", "test": "test", "last_seen": "2023-01-01T00:00:00", "cohort_id": 1478097}, "emitted_at": 1674078233871} -{"stream": "revenue", "data": {"date": "2023-01-01", "amount": 0.0, "count": 3, "paid_count": 0}, "emitted_at": 1674078235380} -{"stream": "revenue", "data": {"date": "2023-01-02", "amount": 0.0, "count": 3, "paid_count": 0}, "emitted_at": 1674078235381} -{"stream": "revenue", "data": {"date": "2023-01-03", "amount": 0.0, "count": 3, "paid_count": 0}, "emitted_at": 1674078235381} -{"stream": "revenue", "data": {"date": "2023-01-04", "amount": 0.0, "count": 3, "paid_count": 0}, "emitted_at": 1674078235381} -{"stream": "revenue", "data": {"date": "2023-01-05", "amount": 0.0, "count": 3, "paid_count": 0}, "emitted_at": 1674078235381} -{"stream": "revenue", "data": {"date": "2023-01-06", "amount": 0.0, "count": 3, "paid_count": 0}, "emitted_at": 1674078235382} -{"stream": "revenue", "data": {"date": "2023-01-07", "amount": 0.0, "count": 3, "paid_count": 0}, "emitted_at": 1674078235382} -{"stream": "revenue", "data": {"date": "2023-01-08", "amount": 0.0, "count": 3, "paid_count": 0}, "emitted_at": 1674078235382} -{"stream": "revenue", "data": {"date": "2023-01-09", "amount": 0.0, "count": 3, "paid_count": 0}, "emitted_at": 1674078235382} -{"stream": "revenue", "data": {"date": "2023-01-10", "amount": 0.0, "count": 3, "paid_count": 0}, "emitted_at": 1674078235382} -{"stream": "revenue", "data": {"date": "2023-01-11", "amount": 0.0, "count": 3, "paid_count": 0}, "emitted_at": 1674078235383} -{"stream": "revenue", "data": {"date": "2023-01-12", "amount": 0.0, "count": 3, "paid_count": 0}, "emitted_at": 1674078235383} -{"stream": "revenue", "data": {"date": "2023-01-13", "amount": 0.0, "count": 3, "paid_count": 0}, "emitted_at": 1674078235383} -{"stream": "revenue", "data": {"date": "2023-01-14", "amount": 0.0, "count": 3, "paid_count": 0}, "emitted_at": 1674078235383} -{"stream": "revenue", "data": {"date": "2023-01-15", "amount": 0.0, "count": 3, "paid_count": 0}, "emitted_at": 1674078235383} -{"stream": "revenue", "data": {"date": "2023-01-16", "amount": 0.0, "count": 3, "paid_count": 0}, "emitted_at": 1674078235384} -{"stream": "revenue", "data": {"date": "2023-01-17", "amount": 0.0, "count": 3, "paid_count": 0}, "emitted_at": 1674078235384} -{"stream": "revenue", "data": {"date": "2023-01-18", "amount": 0.0, "count": 3, "paid_count": 0}, "emitted_at": 1674078235384} +{"stream": "funnels", "data": {"funnel_id": 36152117, "name": "test", "date": "2023-04-29", "steps": [{"count": 0, "avg_time": null, "avg_time_from_start": null, "event": "Purchase", "goal": "Purchase", "step_label": "Purchase", "overall_conv_ratio": 1, "step_conv_ratio": 1}, {"count": 0, "avg_time": null, "avg_time_from_start": null, "event": "$custom_event:1305068", "goal": "$custom_event:1305068", "step_label": "111", "custom_event": true, "custom_event_id": 1305068, "overall_conv_ratio": 0, "step_conv_ratio": 0}], "analysis": {"completion": 0, "starting_amount": 0, "steps": 2, "worst": 1}}, "emitted_at": 1683026170311} +{"stream": "funnels", "data": {"funnel_id": 36152117, "name": "test", "date": "2023-04-30", "steps": [{"count": 0, "avg_time": null, "avg_time_from_start": null, "event": "Purchase", "goal": "Purchase", "step_label": "Purchase", "overall_conv_ratio": 1, "step_conv_ratio": 1}, {"count": 0, "avg_time": null, "avg_time_from_start": null, "event": "$custom_event:1305068", "goal": "$custom_event:1305068", "step_label": "111", "custom_event": true, "custom_event_id": 1305068, "overall_conv_ratio": 0, "step_conv_ratio": 0}], "analysis": {"completion": 0, "starting_amount": 0, "steps": 2, "worst": 1}}, "emitted_at": 1683026170313} +{"stream": "funnels", "data": {"funnel_id": 36152117, "name": "test", "date": "2023-05-01", "steps": [{"count": 0, "avg_time": null, "avg_time_from_start": null, "event": "Purchase", "goal": "Purchase", "step_label": "Purchase", "overall_conv_ratio": 1, "step_conv_ratio": 1}, {"count": 0, "avg_time": null, "avg_time_from_start": null, "event": "$custom_event:1305068", "goal": "$custom_event:1305068", "step_label": "111", "custom_event": true, "custom_event_id": 1305068, "overall_conv_ratio": 0, "step_conv_ratio": 0}], "analysis": {"completion": 0, "starting_amount": 0, "steps": 2, "worst": 1}}, "emitted_at": 1683026170314} +{"stream": "funnels", "data": {"funnel_id": 36152117, "name": "test", "date": "2023-05-02", "steps": [{"count": 0, "avg_time": null, "avg_time_from_start": null, "event": "Purchase", "goal": "Purchase", "step_label": "Purchase", "overall_conv_ratio": 1, "step_conv_ratio": 1}, {"count": 0, "avg_time": null, "avg_time_from_start": null, "event": "$custom_event:1305068", "goal": "$custom_event:1305068", "step_label": "111", "custom_event": true, "custom_event_id": 1305068, "overall_conv_ratio": 0, "step_conv_ratio": 0}], "analysis": {"completion": 0, "starting_amount": 0, "steps": 2, "worst": 1}}, "emitted_at": 1683026170315} +{"stream": "engage", "data": {"distinct_id": "integration-test@airbyte.io", "name": "Integration Test1", "test": "test", "email": "integration-test@airbyte.io", "last_seen": "2023-01-01T00:00:00"}, "emitted_at": 1683027022892} +{"stream": "engage", "data": {"distinct_id": "integration-test.db4415.mp-service-account", "name": "test", "test": "test", "last_seen": "2023-01-01T00:00:00"}, "emitted_at": 1683027022894} +{"stream": "engage", "data": {"distinct_id": "123@gmail.com", "email": "123@gmail.com", "name": "123", "123": "123456", "last_seen": "2023-01-01T00:00:00"}, "emitted_at": 1683027022895} +{"stream": "annotations", "data": {"date": "2023-01-15T12:00:00+01:00", "description": "test", "id": 1138193, "project_id": 2529987, "user": {"id": 3440095, "first_name": "", "last_name": ""}}, "emitted_at": 1683027025142} +{"stream": "annotations", "data": {"date": "2023-01-13T12:00:00+01:00", "description": "test123", "id": 1138196, "project_id": 2529987, "user": {"id": 3440095, "first_name": "", "last_name": ""}}, "emitted_at": 1683027025143} +{"stream": "annotations", "data": {"date": "2023-01-13T12:00:00+01:00", "description": "test121233", "id": 1138197, "project_id": 2529987, "user": {"id": 3440095, "first_name": "", "last_name": ""}}, "emitted_at": 1683027025144} +{"stream": "export", "data": {"event": "Browse", "browser": "Chrome", "city": "Spring Hill", "created": "2020-04-24T06:59:41", "email": "Ray.Rodriguez@hotmailx.com", "first_name": "Ray", "import": "True", "initial_referrer": "bing.com", "insert_id": "bBquCestadcpFdhz", "last_name": "Rodriguez", "mp_api_endpoint": "api.mixpanel.com", "mp_api_timestamp_ms": "1682341702017", "os": "Windows", "region": "Florida", "Abandon Cart Count": "2", "Account Created Count": "2", "Add To Cart Count": "3", "Affiliate": "Amazon", "Browse Count": "2", "Browse Filter": "['Under $1000', 'Books', 'Microsoft']", "Campaign Name": "Super Sale", "Campaign Source": "Facebook", "Card Type": "Visa", "Cart Items": "Lord of the Rings Novels", "Cart Size": "7", "Cart Size (# of Items)": "10", "Cart Value": "577", "Complete Purchase Count": "3", "Coupon": "First Purchase", "Coupon Count Used": "1", "Date of Last Item Detail View": "2020-03-17T16:24:40", "Delivery Day": "Ground", "Delivery Fee": "7", "Delivery Fees": "7", "Delivery Method": "Ground", "Delivery Method Added Count": "1", "Gender": "Female", "Item Category": "Electronics", "Item Cost": "651", "Item Detail Page Count": "7", "Item Name": "Bose Speaker", "Item Rating": "5", "Items in Browse": "49", "Landing Page Loaded Count": "2", "Last Cart Abandonment": "2020-03-17T16:28:15", "Last Event": "Add To Cart", "Last Purchase": "2020-03-17T16:24:21", "Last Search": "2020-04-01T00:39:55", "Last Share": "2020-04-01T00:57:59", "Marketing A/B Test": "Control", "Misc Fee": "34", "Misc Fees": "17", "Number of Cards Added": "2", "Number of Cart Abandons": "7", "Number of Item Details Viewed": "22", "Number of Purchases": "8", "Number of Searches": "14", "Page Version": "B", "Payment Method Added Count": "1", "Platform": "Web", "Registration Date": "2020-03-17T15:49:09", "Registration Method": "Twitter", "Review Payment Count": "4", "Search Count": "3", "Search Page": "Homepage", "Search Results Count": "3", "Search Term": "TVs", "Share Item Count": "2", "Suggested Item": "True", "Total Charge": "664", "UTM_Medium": "Organic", "UTM_Term": "Novels", "UTM_source": "Google", "Within Checkout Process": "True", "distinct_id": "1c28216e-b971-4f68-b879-4898a4624256", "mp_country_code": "US", "mp_lib": "web", "mp_processing_time_ms": "1682341703325", "time": "2023-04-24T14:57:11Z"}, "emitted_at": 1683027034765} +{"stream": "cohorts", "data": {"id": 1478097, "project_id": 2529987, "name": "Cohort1", "description": "", "data_group_id": null, "count": 2, "is_visible": 1, "created": "2021-09-14 15:57:43"}, "emitted_at": 1683027160299} +{"stream": "cohort_members", "data": {"distinct_id": "integration-test.db4415.mp-service-account", "name": "test", "test": "test", "last_seen": "2023-01-01T00:00:00", "cohort_id": 1478097}, "emitted_at": 1683027176521} +{"stream": "cohort_members", "data": {"distinct_id": "integration-test@airbyte.io", "name": "Integration Test1", "test": "test", "email": "integration-test@airbyte.io", "last_seen": "2023-01-01T00:00:00", "cohort_id": 1478097}, "emitted_at": 1683027176522} +{"stream": "revenue", "data": {"date": "2023-04-28", "amount": 0.0, "count": 3, "paid_count": 0}, "emitted_at": 1683027179976} +{"stream": "revenue", "data": {"date": "2023-04-29", "amount": 0.0, "count": 3, "paid_count": 0}, "emitted_at": 1683027179977} +{"stream": "revenue", "data": {"date": "2023-04-30", "amount": 0.0, "count": 3, "paid_count": 0}, "emitted_at": 1683027179978} +{"stream": "revenue", "data": {"date": "2023-05-01", "amount": 0.0, "count": 3, "paid_count": 0}, "emitted_at": 1683027179979} +{"stream": "revenue", "data": {"date": "2023-05-02", "amount": 0.0, "count": 3, "paid_count": 0}, "emitted_at": 1683027179979} diff --git a/airbyte-integrations/connectors/source-mixpanel/metadata.yaml b/airbyte-integrations/connectors/source-mixpanel/metadata.yaml index 2cbbed5bd6ba3f..9ae5b4450f67fd 100644 --- a/airbyte-integrations/connectors/source-mixpanel/metadata.yaml +++ b/airbyte-integrations/connectors/source-mixpanel/metadata.yaml @@ -12,7 +12,7 @@ data: connectorSubtype: api connectorType: source definitionId: 12928b32-bf0a-4f1e-964f-07e12e37153a - dockerImageTag: 0.1.31 + dockerImageTag: 0.1.32 dockerRepository: airbyte/source-mixpanel githubIssueLabel: source-mixpanel icon: mixpanel.svg diff --git a/airbyte-integrations/connectors/source-mixpanel/source_mixpanel/schemas/annotations.json b/airbyte-integrations/connectors/source-mixpanel/source_mixpanel/schemas/annotations.json index 496ea8c13be317..f597a9d399afd1 100644 --- a/airbyte-integrations/connectors/source-mixpanel/source_mixpanel/schemas/annotations.json +++ b/airbyte-integrations/connectors/source-mixpanel/source_mixpanel/schemas/annotations.json @@ -14,6 +14,20 @@ }, "description": { "type": ["null", "string"] + }, + "user": { + "type": "object", + "properties": { + "id": { + "type": ["null", "integer"] + }, + "first_name": { + "type" : ["null", "string"] + }, + "last_name": { + "type" : ["null", "string"] + } + } } } } diff --git a/airbyte-integrations/connectors/source-mixpanel/source_mixpanel/schemas/export.json b/airbyte-integrations/connectors/source-mixpanel/source_mixpanel/schemas/export.json index fa7b4ab58ab526..b98a2b0f03e1a6 100644 --- a/airbyte-integrations/connectors/source-mixpanel/source_mixpanel/schemas/export.json +++ b/airbyte-integrations/connectors/source-mixpanel/source_mixpanel/schemas/export.json @@ -12,6 +12,207 @@ "type": ["null", "string"], "format": "date-time" }, + "browser": { + "type": ["null", "string"] + }, + "created": { + "type": ["null", "string"] + }, + "email": { + "type": ["null", "string"] + }, + "first_name": { + "type": ["null", "string"] + }, + "last_name": { + "type": ["null", "string"] + }, + "initial_referrer": { + "type": ["null", "string"] + }, + "os": { + "type": ["null", "string"] + }, + "Abandon Cart Count": { + "type": ["null", "integer"] + }, + "Account Created Count": { + "type": ["null", "integer"] + }, + "Add To Cart Count": { + "type": ["null", "integer"] + }, + "Affiliate": { + "type": ["null", "string"] + }, + "Browse Count": { + "type": ["null", "string"] + }, + "Browse Filter": { + "type": ["null", "array"], + "items": { + "type": ["null", "array"] + } + }, + "Campaign Name": { + "type": ["null", "string"] + }, + "Campaign Source": { + "type": ["null", "string"] + }, + "Card Type": { + "type": ["null", "string"] + }, + "Cart Items": { + "type": ["null", "string"] + }, + "Cart Size": { + "type": ["null", "string"] + }, + "Cart Size (# of Items)": { + "type": ["null", "integer"] + }, + "Cart Value": { + "type": ["null", "integer"] + }, + "Complete Purchase Count": { + "type": ["null", "integer"] + }, + "Coupon": { + "type": ["null", "string"] + }, + "Coupon Count Used": { + "type": ["null", "integer"] + }, + "Date of Last Item Detail View": { + "type": ["null", "string"] + }, + "Delivery Day": { + "type": ["null", "string"] + }, + "Delivery Fee": { + "type": ["null", "integer"] + }, + "Delivery Fees": { + "type": ["null", "integer"] + }, + "Delivery Method": { + "type": ["null", "string"] + }, + "Delivery Method Added Count": { + "type": ["null", "integer"] + }, + "Gender": { + "type": ["null", "string"] + }, + "Item Category": { + "type": ["null", "string"] + }, + "Item Cost": { + "type": ["null", "integer"] + }, + "Item Detail Page Count": { + "type": ["null", "integer"] + }, + "Item Name": { + "type": ["null", "string"] + }, + "Item Rating": { + "type": ["null", "integer"] + }, + "Items in Browse": { + "type": ["null", "integer"] + }, + "Landing Page Loaded Count": { + "type": ["null", "integer"] + }, + "Last Cart Abandonment": { + "type": ["null", "string"] + }, + "Last Event": { + "type": ["null", "string"] + }, + "Last Purchase": { + "type": ["null", "string"] + }, + "Last Search": { + "type": ["null", "string"] + }, + "Marketing A/B Test": { + "type": ["null", "string"] + }, + "Misc Fee": { + "type": ["null", "integer"] + }, + "Misc Fees": { + "type": ["null", "integer"] + }, + "Number of Cards Added": { + "type": ["null", "integer"] + }, + "Number of Cart Abandons": { + "type": ["null", "integer"] + }, + "Number of Item Details Viewed": { + "type": ["null", "integer"] + }, + "Number of Purchases": { + "type": ["null", "integer"] + }, + "Number of Searches": { + "type": ["null", "integer"] + }, + "Page Version": { + "type": ["null", "string"] + }, + "Payment Method Added Count": { + "type": ["null", "integer"] + }, + "Platform": { + "type": ["null", "string"] + }, + "Registration Date": { + "type": ["null", "string"] + }, + "Registration Method": { + "type": ["null", "string"] + }, + "Review Payment Count": { + "type": ["null", "integer"] + }, + "Search Count": { + "type": ["null", "integer"] + }, + "Search Page": { + "type": ["null", "string"] + }, + "Search Results Count": { + "type": ["null", "integer"] + }, + "Search Term": { + "type": ["null", "string"] + }, + "Suggested Item": { + "type": ["null", "boolean"] + }, + "Total Charge": { + "type": ["null", "integer"] + }, + "UTM_Medium": { + "type": ["null", "string"] + }, + "UTM_Term": { + "type": ["null", "string"] + }, + "UTM_source": { + "type": ["null", "string"] + }, + "Within Checkout Process": { + "type": ["null", "boolean"] + }, + "mp_lib": { + "type": ["null", "string"] + }, "labels": { "type": ["null", "array"], "items": { @@ -23,6 +224,27 @@ }, "dataset": { "type": ["null", "string"] + }, + "Referred by": { + "type": ["null", "string"] + }, + "import": { + "type": ["null", "boolean"] + }, + "URL": { + "type": ["null", "string"] + }, + "insert_id": { + "type": ["null", "string"] + }, + "mp_api_timestamp_ms": { + "type": ["null", "string"] + }, + "mp_api_endpoint": { + "type": ["null", "string"] + }, + "mp_processing_time_ms": { + "type": ["null", "string"] } } } diff --git a/airbyte-integrations/connectors/source-mixpanel/source_mixpanel/streams/base.py b/airbyte-integrations/connectors/source-mixpanel/source_mixpanel/streams/base.py index dd7ed844251f7c..8028948fdab210 100644 --- a/airbyte-integrations/connectors/source-mixpanel/source_mixpanel/streams/base.py +++ b/airbyte-integrations/connectors/source-mixpanel/source_mixpanel/streams/base.py @@ -2,14 +2,12 @@ # Copyright (c) 2023 Airbyte, Inc., all rights reserved. # -import time from abc import ABC from datetime import timedelta from typing import Any, Iterable, List, Mapping, MutableMapping, Optional import pendulum import requests -from airbyte_cdk.sources.streams.availability_strategy import AvailabilityStrategy from airbyte_cdk.sources.streams.http import HttpStream from airbyte_cdk.sources.streams.http.auth import HttpAuthenticator from pendulum import Date @@ -20,8 +18,6 @@ class MixpanelStream(HttpStream, ABC): Formatted API Rate Limit (https://help.mixpanel.com/hc/en-us/articles/115004602563-Rate-Limits-for-API-Endpoints): A maximum of 5 concurrent queries 60 queries per hour. - - API Rate Limit Handler: after each request freeze for the time period: 3600/reqs_per_hour_limit seconds """ @property @@ -31,6 +27,7 @@ def url_base(self): # https://help.mixpanel.com/hc/en-us/articles/115004602563-Rate-Limits-for-Export-API-Endpoints#api-export-endpoint-rate-limits reqs_per_hour_limit: int = 60 # 1 query per minute + retries: int = 0 def __init__( self, @@ -56,10 +53,6 @@ def __init__( super().__init__(authenticator=authenticator) - @property - def availability_strategy(self) -> Optional["AvailabilityStrategy"]: - return None - def next_page_token(self, response: requests.Response) -> Optional[Mapping[str, Any]]: """Define abstract method""" return None @@ -100,18 +93,18 @@ def parse_response( # parse the whole response yield from self.process_response(response, stream_state=stream_state, **kwargs) - if self.reqs_per_hour_limit > 0: - # we skip this block, if self.reqs_per_hour_limit = 0, - # in all other cases wait for X seconds to match API limitations - self.logger.info("Sleep for %s seconds to match API limitations", 3600 / self.reqs_per_hour_limit) - time.sleep(3600 / self.reqs_per_hour_limit) - def backoff_time(self, response: requests.Response) -> float: """ - Some API endpoints do not return "Retry-After" header - some endpoints return a strangely low number + Some API endpoints do not return "Retry-After" header. + https://developer.mixpanel.com/reference/import-events#rate-limits (exponential backoff) """ - return max(int(response.headers.get("Retry-After", 600)), 60) + + retry_after = response.headers.get("Retry-After") + if retry_after: + return float(retry_after) + + self.retries += 1 + return 2**self.retries * 60 def get_stream_params(self) -> Mapping[str, Any]: """ diff --git a/airbyte-integrations/connectors/source-mixpanel/source_mixpanel/streams/export.py b/airbyte-integrations/connectors/source-mixpanel/source_mixpanel/streams/export.py index eead1734f9e8d0..8b6a816266c40b 100644 --- a/airbyte-integrations/connectors/source-mixpanel/source_mixpanel/streams/export.py +++ b/airbyte-integrations/connectors/source-mixpanel/source_mixpanel/streams/export.py @@ -9,6 +9,7 @@ import pendulum import requests from airbyte_cdk.models import SyncMode +from airbyte_cdk.sources.utils.transform import TransformConfig, TypeTransformer from ..property_transformation import transform_property_names from .base import DateSlicesMixin, IncrementalMixpanelStream, MixpanelStream @@ -77,6 +78,8 @@ class Export(DateSlicesMixin, IncrementalMixpanelStream): primary_key: str = None cursor_field: str = "time" + transformer = TypeTransformer(TransformConfig.DefaultSchemaNormalization) + @property def url_base(self): prefix = "-eu" if self.region == "EU" else "" diff --git a/airbyte-integrations/connectors/source-mixpanel/source_mixpanel/testing.py b/airbyte-integrations/connectors/source-mixpanel/source_mixpanel/testing.py index a14a190715111f..57ae047d672d72 100644 --- a/airbyte-integrations/connectors/source-mixpanel/source_mixpanel/testing.py +++ b/airbyte-integrations/connectors/source-mixpanel/source_mixpanel/testing.py @@ -7,7 +7,7 @@ from .streams import Funnels -AVAILABLE_TESTING_RANGE_DAYS = 30 +AVAILABLE_TESTING_RANGE_DAYS = 10 def funnel_slices_patched(self: Funnels, sync_mode): diff --git a/docs/integrations/sources/mixpanel.md b/docs/integrations/sources/mixpanel.md index 895b378a4709f8..2faa5c92cb94df 100644 --- a/docs/integrations/sources/mixpanel.md +++ b/docs/integrations/sources/mixpanel.md @@ -48,38 +48,39 @@ Syncing huge date windows may take longer due to Mixpanel's low API rate-limits ## CHANGELOG -| Version | Date | Pull Request | Subject | -|:--------| :--------- | :------------------------------------------------------- | :--------------------------------------------------------------------------------------------------- | -| 0.1.31 | 2023-02-13 | [22936](https://github.com/airbytehq/airbyte/pull/22936) | Specified date formatting in specification | -| 0.1.30 | 2023-01-27 | [22017](https://github.com/airbytehq/airbyte/pull/22017) | Set `AvailabilityStrategy` for streams explicitly to `None` | -| 0.1.29 | 2022-11-02 | [18846](https://github.com/airbytehq/airbyte/pull/18846) | For "export" stream make line parsing more robust | -| 0.1.28 | 2022-10-06 | [17699](https://github.com/airbytehq/airbyte/pull/17699) | Fix discover step issue cursor field None | -| 0.1.27 | 2022-09-29 | [17415](https://github.com/airbytehq/airbyte/pull/17415) | Disable stream "cohort_members" on discover if not access | -| 0.1.26 | 2022-09-28 | [17304](https://github.com/airbytehq/airbyte/pull/17304) | Migrate to per-stream states. | -| 0.1.25 | 2022-09-27 | [17145](https://github.com/airbytehq/airbyte/pull/17145) | Disable streams "export", "engage" on discover if not access | -| 0.1.24 | 2022-09-26 | [16915](https://github.com/airbytehq/airbyte/pull/16915) | Added Service Accounts support | -| 0.1.23 | 2022-09-18 | [16843](https://github.com/airbytehq/airbyte/pull/16843) | Add stream=True for `export` stream | -| 0.1.22 | 2022-09-15 | [16770](https://github.com/airbytehq/airbyte/pull/16770) | Use "Retry-After" header for backoff | -| 0.1.21 | 2022-09-11 | [16191](https://github.com/airbytehq/airbyte/pull/16191) | Improved connector's input configuration validation | -| 0.1.20 | 2022-08-22 | [15091](https://github.com/airbytehq/airbyte/pull/15091) | Improve `export` stream cursor support | -| 0.1.19 | 2022-08-18 | [15739](https://github.com/airbytehq/airbyte/pull/15739) | Update `titile` and `description` for `Project Secret` field | -| 0.1.18 | 2022-07-21 | [14924](https://github.com/airbytehq/airbyte/pull/14924) | Remove `additionalProperties` field from schemas and specs | -| 0.1.17 | 2022-06-01 | [12801](https://github.com/airbytehq/airbyte/pull/13372) | Acceptance tests fix, fixing some bugs for beta release | -| 0.1.16 | 2022-05-30 | [12801](https://github.com/airbytehq/airbyte/pull/12801) | Add end_date parameter | -| 0.1.15 | 2022-05-04 | [12482](https://github.com/airbytehq/airbyte/pull/12482) | Update input configuration copy | -| 0.1.14 | 2022-05-02 | [11501](https://github.com/airbytehq/airbyte/pull/11501) | Improve incremental sync method to streams | -| 0.1.13 | 2022-04-27 | [12335](https://github.com/airbytehq/airbyte/pull/12335) | Adding fixtures to mock time.sleep for connectors that explicitly sleep | -| 0.1.12 | 2022-03-31 | [11633](https://github.com/airbytehq/airbyte/pull/11633) | Increase unit test coverage | -| 0.1.11 | 2022-04-04 | [11318](https://github.com/airbytehq/airbyte/pull/11318) | Change Response Reading | -| 0.1.10 | 2022-03-31 | [11227](https://github.com/airbytehq/airbyte/pull/11227) | Fix cohort id always null in the cohort_members stream | -| 0.1.9 | 2021-12-07 | [8429](https://github.com/airbytehq/airbyte/pull/8578) | Updated titles and descriptions | -| 0.1.7 | 2021-12-01 | [8381](https://github.com/airbytehq/airbyte/pull/8381) | Increased performance for `discovery` stage during connector setup | -| 0.1.6 | 2021-11-25 | [8256](https://github.com/airbytehq/airbyte/issues/8256) | Deleted `date_window_size` and fix schemas date type issue | -| 0.1.5 | 2021-11-10 | [7451](https://github.com/airbytehq/airbyte/issues/7451) | Support `start_date` older than 1 year | -| 0.1.4 | 2021-11-08 | [7499](https://github.com/airbytehq/airbyte/pull/7499) | Remove base-python dependencies | -| 0.1.3 | 2021-10-30 | [7505](https://github.com/airbytehq/airbyte/issues/7505) | Guarantee that standard and custom mixpanel properties in the `Engage` stream are written as strings | -| 0.1.2 | 2021-11-02 | [7439](https://github.com/airbytehq/airbyte/issues/7439) | Added delay for all streams to match API limitation of requests rate | -| 0.1.1 | 2021-09-16 | [6075](https://github.com/airbytehq/airbyte/issues/6075) | Added option to select project region | -| 0.1.0 | 2021-07-06 | [3698](https://github.com/airbytehq/airbyte/issues/3698) | Created CDK native mixpanel connector | +| Version | Date | Pull Request | Subject | +|:--------|:-----------|:---------------------------------------------------------|:------------------------------------------------------------------------------------------------------------| +| 0.1.32 | 2023-04-11 | [25056](https://github.com/airbytehq/airbyte/pull/25056) | Set HttpAvailabilityStrategy, add exponential backoff, streams export and annotations add undeclared fields | +| 0.1.31 | 2023-02-13 | [22936](https://github.com/airbytehq/airbyte/pull/22936) | Specified date formatting in specification | +| 0.1.30 | 2023-01-27 | [22017](https://github.com/airbytehq/airbyte/pull/22017) | Set `AvailabilityStrategy` for streams explicitly to `None` | +| 0.1.29 | 2022-11-02 | [18846](https://github.com/airbytehq/airbyte/pull/18846) | For "export" stream make line parsing more robust | +| 0.1.28 | 2022-10-06 | [17699](https://github.com/airbytehq/airbyte/pull/17699) | Fix discover step issue cursor field None | +| 0.1.27 | 2022-09-29 | [17415](https://github.com/airbytehq/airbyte/pull/17415) | Disable stream "cohort_members" on discover if not access | +| 0.1.26 | 2022-09-28 | [17304](https://github.com/airbytehq/airbyte/pull/17304) | Migrate to per-stream states. | +| 0.1.25 | 2022-09-27 | [17145](https://github.com/airbytehq/airbyte/pull/17145) | Disable streams "export", "engage" on discover if not access | +| 0.1.24 | 2022-09-26 | [16915](https://github.com/airbytehq/airbyte/pull/16915) | Added Service Accounts support | +| 0.1.23 | 2022-09-18 | [16843](https://github.com/airbytehq/airbyte/pull/16843) | Add stream=True for `export` stream | +| 0.1.22 | 2022-09-15 | [16770](https://github.com/airbytehq/airbyte/pull/16770) | Use "Retry-After" header for backoff | +| 0.1.21 | 2022-09-11 | [16191](https://github.com/airbytehq/airbyte/pull/16191) | Improved connector's input configuration validation | +| 0.1.20 | 2022-08-22 | [15091](https://github.com/airbytehq/airbyte/pull/15091) | Improve `export` stream cursor support | +| 0.1.19 | 2022-08-18 | [15739](https://github.com/airbytehq/airbyte/pull/15739) | Update `titile` and `description` for `Project Secret` field | +| 0.1.18 | 2022-07-21 | [14924](https://github.com/airbytehq/airbyte/pull/14924) | Remove `additionalProperties` field from schemas and specs | +| 0.1.17 | 2022-06-01 | [12801](https://github.com/airbytehq/airbyte/pull/13372) | Acceptance tests fix, fixing some bugs for beta release | +| 0.1.16 | 2022-05-30 | [12801](https://github.com/airbytehq/airbyte/pull/12801) | Add end_date parameter | +| 0.1.15 | 2022-05-04 | [12482](https://github.com/airbytehq/airbyte/pull/12482) | Update input configuration copy | +| 0.1.14 | 2022-05-02 | [11501](https://github.com/airbytehq/airbyte/pull/11501) | Improve incremental sync method to streams | +| 0.1.13 | 2022-04-27 | [12335](https://github.com/airbytehq/airbyte/pull/12335) | Adding fixtures to mock time.sleep for connectors that explicitly sleep | +| 0.1.12 | 2022-03-31 | [11633](https://github.com/airbytehq/airbyte/pull/11633) | Increase unit test coverage | +| 0.1.11 | 2022-04-04 | [11318](https://github.com/airbytehq/airbyte/pull/11318) | Change Response Reading | +| 0.1.10 | 2022-03-31 | [11227](https://github.com/airbytehq/airbyte/pull/11227) | Fix cohort id always null in the cohort_members stream | +| 0.1.9 | 2021-12-07 | [8429](https://github.com/airbytehq/airbyte/pull/8578) | Updated titles and descriptions | +| 0.1.7 | 2021-12-01 | [8381](https://github.com/airbytehq/airbyte/pull/8381) | Increased performance for `discovery` stage during connector setup | +| 0.1.6 | 2021-11-25 | [8256](https://github.com/airbytehq/airbyte/issues/8256) | Deleted `date_window_size` and fix schemas date type issue | +| 0.1.5 | 2021-11-10 | [7451](https://github.com/airbytehq/airbyte/issues/7451) | Support `start_date` older than 1 year | +| 0.1.4 | 2021-11-08 | [7499](https://github.com/airbytehq/airbyte/pull/7499) | Remove base-python dependencies | +| 0.1.3 | 2021-10-30 | [7505](https://github.com/airbytehq/airbyte/issues/7505) | Guarantee that standard and custom mixpanel properties in the `Engage` stream are written as strings | +| 0.1.2 | 2021-11-02 | [7439](https://github.com/airbytehq/airbyte/issues/7439) | Added delay for all streams to match API limitation of requests rate | +| 0.1.1 | 2021-09-16 | [6075](https://github.com/airbytehq/airbyte/issues/6075) | Added option to select project region | +| 0.1.0 | 2021-07-06 | [3698](https://github.com/airbytehq/airbyte/issues/3698) | Created CDK native mixpanel connector |