Giter Club home page Giter Club logo

tap-appsflyer's People

Contributors

0xpetersatoshi avatar dmosorast avatar kallan357 avatar krispersonal avatar mjbellantoni avatar nick-mccoy avatar rushit0122 avatar yonidavidson avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

tap-appsflyer's Issues

API V1 tokens will be removed on August 31, 2023

Appsflyer will be removing API V1 tokens on August 31. This banner appears when logged in to Appsflyer:

Caution!

API token V1 will be removed on August 31, 2023. Please replace all instances of API token V1 with our new API token V2 and update the relevant APIs.

Learn more

The endpoint URLs are different:

  • V1: https://hq.appsflyer.com/export/app-id/installs_report/v5?
  • V2: https://hq1.appsflyer.com/api/raw-data/export/app/app-id/installs_report/v5?

These probably need to change:

ENDPOINTS = {
"installs": "/export/{app_id}/installs_report/v5",
"organic_installs": "/export/{app_id}/organic_installs_report/v5",
"in_app_events": "/export/{app_id}/in_app_events_report/v5"
}

The authentication method also needs to change (i.e. passing a token in the header instead of in the URL):

req = requests.Request("GET", url, params=params, headers=headers).prepare()

I've got 404 error (extraction logs attached)

Hi, I've created stichdata connector AppsFlyes to BigQuery

There is no successful attemps.

Extraction Jobs logs:

2019-07-30 21:03:46,747Z main - INFO Running tap-appsflyer version 0.0.11 and target-stitch version 1.8.1
2019-07-30 21:03:46,861Z main - INFO Starting tap: tap-env/bin/tap-appsflyer --config /tmp/tap_config.json --state /tmp/tap_state.json
2019-07-30 21:03:46,863Z main - INFO Starting target: target-env/bin/target-stitch --config /tmp/target_config.json
2019-07-30 21:03:47,026Z tap - INFO do_sync()
2019-07-30 21:03:47,027Z tap - INFO Starting sync. Will sync these streams: ['installs', 'in_app_events']
2019-07-30 21:03:47,027Z tap - INFO Syncing installs
2019-07-30 21:03:47,029Z tap - INFO GET https://hq.appsflyer.com/export/583402384/installs_report/v5?to=2019-07-30+21%3A00&api_token=....................................&from=2019-06-30+21%3A00
2019-07-30 21:03:47,088Z target - INFO Using Stitch import URL https://api.stitchdata.com/v2/import/batch
2019-07-30 21:03:47,713Z tap - INFO STATS: {"duration": 0.6835598945617676, "status": "succeeded", "http_status_code": 404, "source": "installs"}
2019-07-30 21:03:47,713Z tap - ERROR GET https://hq.appsflyer.com/export/583402384/installs_report/v5?to=2019-07-30+21%3A00&api_token=....................................&from=2019-06-30+21%3A00 [404 - b'\n\n\n\n <title>AppsFlyer - Page Not Found</title>\n \n \n \n \n \n \n\n\n\n

\n
\n \n
\n
\n
\n
\n

OOPS...

\n

\n
The page you requested
\n
was not found
\n

\n \n
\n
\n
\n
\n
\n\n\n']
2019-07-30 21:03:47,738Z target - INFO Exiting normally
2019-07-30 21:03:47,766Z main - INFO Target exited normally with status 0
2019-07-30 21:03:47,767Z main - INFO Exit status is: Tap failed with code 1. Target succeeded.

Does not support discover mode

Most taps now allow you to run them in discovery mode like so:

tap-appsflyer -c config.json --discover > catalog.json

Which results in the schema (catalogue) being output.

The tap can then be run in sync mode with the schema as an input like this

tap-appsflyer -c config.json --catalog catalog.json

Although the schema is fixed and therefore hardcoded, it would be nice to be able to rename the stream which is only possible if we can input our own catalogue object.

Installation Rpeorts Schema Error

Traceback (most recent call last):
File "/Users/vikash.kumar/.virtualenvs/tap-appsflyer/bin/tap-appsflyer", line 11, in
load_entry_point('tap-appsflyer==0.0.11', 'console_scripts', 'tap-appsflyer')()
File "/Users/vikash.kumar/.virtualenvs/tap-appsflyer/lib/python3.5/site-packages/tap_appsflyer/init.py", line 462, in main
do_sync()
File "/Users/vikash.kumar/.virtualenvs/tap-appsflyer/lib/python3.5/site-packages/tap_appsflyer/init.py", line 444, in do_sync
stream.sync() # pylint: disable=not-callable
File "/Users/vikash.kumar/.virtualenvs/tap-appsflyer/lib/python3.5/site-packages/tap_appsflyer/init.py", line 280, in sync_installs
record = xform(row, schema)
File "/Users/vikash.kumar/.virtualenvs/tap-appsflyer/lib/python3.5/site-packages/tap_appsflyer/init.py", line 95, in xform
return transform.transform(record, schema)
File "/Users/vikash.kumar/.virtualenvs/tap-appsflyer/lib/python3.5/site-packages/singer/transform.py", line 112, in transform
raise Exception("Errors at paths {} in data {} for schema {}".format(error_paths, data, schema))
Exception: Errors at paths [['af_c_id'], ['customer_user_id'], ['af_ad_type'], ['contributor1_touch_type'], ['af_sub5'], ['af_sub1'], ['af_keywords'], ['af_sub3'], ['af_cost_currency'], ['af_adset_id'], ['contributor3_media_source'], ['af_reengagement_window'], ['af_ad'], ['contributor3_campaign'], ['af_ad_id'], ['contributor2_af_prt'], ['idfv'], ['event_revenue_usd'], ['contributor1_touch_time'], ['retargeting_conversion_type'], ['contributor1_media_source'], ['contributor2_touch_time'], ['contributor3_touch_type'], ['contributor3_af_prt'], ['attributed_touch_time'], ['contributor2_campaign'], ['af_cost_value'], ['af_sub2'], ['event_revenue_currency'], ['idfa'], ['af_sub4'], ['http_referrer'], ['contributor2_touch_type'], ['af_sub_siteid'], ['contributor1_af_prt'], ['af_prt'], ['contributor2_media_source'], ['af_cost_model'], ['contributor1_campaign'], ['contributor3_touch_time'], ['event_time'], ['event_value'], ['event_revenue'], ['af_channel'], ['android_id'], ['install_time']] in data {'is_receipt_validated': None, 'af_c_id': None, 'customer_user_id': None, 'event_source': 'SDK', 'af_ad_type': None,

Apps Flyer Error on Stitch

Hi,

I tried using the apps flyer integration stitch and I am constantly getting errors. Can anyone please advise on the issue?

Thanks
Rishav

2022-05-09 18:42:55,568Z main - INFO Running tap-appsflyer version 0.0.13 and target-stitch version 3.2.1 2022-05-09 18:42:56,696Z main - INFO [smart-services] building smart service producer: topic( com.stitchdata.extractionJobStarted ), use_ssl( true ) 2022-05-09 18:42:56,703Z main - INFO [smart-services] building smart service producer: topic( com.stitchdata.extractionJobFinished ), use_ssl( true ) 2022-05-09 18:42:56,709Z main - INFO [smart-services] building smart service producer: topic( com.stitchdata.streamRecordCount ), use_ssl( true ) 2022-05-09 18:42:57,741Z main - INFO [smart-services] event successfully sent to kafka: com.stitchdata.extractionJobStarted [49] at offset None 2022-05-09 18:42:57,762Z main - INFO Current state: {} 2022-05-09 18:42:57,762Z main - INFO Starting tap: tap-env/bin/tap-appsflyer --config /tmp/tap_config.json --state /tmp/tap_state.json 2022-05-09 18:42:57,766Z main - INFO Starting target: target-env/bin/target-stitch --config /tmp/target_config.json 2022-05-09 18:42:57,905Z tap - INFO do_sync() 2022-05-09 18:42:57,905Z tap - INFO Starting sync. Will sync these streams: ['installs', 'in_app_events'] 2022-05-09 18:42:57,905Z tap - INFO Syncing installs 2022-05-09 18:42:57,907Z tap - INFO GET https://hq.appsflyer.com/export/[email protected]/installs_report/v5?from=2022-03-07+00%3A00&to=2022-04-06+00%3A00&api_token=.................................... 2022-05-09 18:42:58,154Z target - INFO Using batch_size_prefernces of {'full_table_streams': [], 'batch_size_preference': None, 'user_batch_size_preference': None} 2022-05-09 18:42:58,823Z tap - INFO STATS: {"duration": 0.915264368057251, "status": "succeeded", "http_status_code": 404, "source": "installs"} 2022-05-09 18:42:58,823Z tap - ERROR GET https://hq.appsflyer.com/export/[email protected]/installs_report/v5?from=2022-03-07+00%3A00&to=2022-04-06+00%3A00&api_token=.................................... [404 - b'<!DOCTYPE html>\n<html lang="en">\n\n<head>\n <title>AppsFlyer - Page Not Found</title>\n <meta charset="UTF-8">\n <meta name="viewport" content="width=device-width, initial-scale=1">\n <link rel="shortcut icon" href="https://cdn.appsflyer.com/af-statics/images/favicon.ico" />\n <!-- other browsers -->\n <link rel="icon" href="https://cdn.appsflyer.com/af-statics/images/favicon.ico" />\n <link href="https://cdn.appsflyer.com/af-statics/images/error-pages.css" rel="stylesheet">\n</head>\n\n<body>\n <div class="error-page error-404-page">\n <div class="error-header">\n <a href="/apps/myapps"></a>\n </div>\n <div class="error-content">\n <div class="error-inner">\n <div>\n <h1>OOPS...</h1>\n <h2>\n <div>The page you requested</div>\n <div>was not found</div>\n </h2>\n <div>\n <a href="/apps/myapps">Back To My Apps ></a>\n </div>\n <div class="error-illustration"></div>\n </div>\n </div>\n </div>\n </div>\n</body>\n\n</html>'] 2022-05-09 18:42:58,843Z target - INFO Requests complete, stopping loop 2022-05-09 18:42:58,877Z main - INFO Target exited normally with status 0 2022-05-09 18:43:00,260Z main - INFO [smart-services] event successfully sent to kafka: com.stitchdata.extractionJobFinished [8] at offset None 2022-05-09 18:43:00,263Z main - INFO No tunnel subprocess to tear down 2022-05-09 18:43:00,264Z main - INFO Exit status is: Tap failed with code 1. Target succeeded.

NoneType Exception when replicating

Encountering an AttributeError when the StitchData service attempts to transform a certain row from our AppsFlyer in-app events.

Here are the logs:

2018-08-14 05:03:59,908Z main - INFO Running tap-appsflyer version 0.0.7 and target-stitch version 1.7.4 2018-08-14 05:04:00,061Z main - DEBUG Getting initial state 2018-08-14 05:04:00,121Z main - INFO Starting tap: tap-env/bin/tap-appsflyer --config /tmp/tap_config.json --state /tmp/tap_state.json 2018-08-14 05:04:00,124Z main - INFO Starting target: target-env/bin/target-stitch --config /tmp/target_config.json 2018-08-14 05:04:00,404Z tap - INFO do_sync() 2018-08-14 05:04:00,404Z tap - INFO Starting sync. Will sync these streams: ['in_app_events'] 2018-08-14 05:04:00,404Z tap - INFO Syncing in_app_events 2018-08-14 05:04:00,408Z tap - INFO Syncing data from 2018-06-04 17:17:22 to 2018-06-14 17:17:22 2018-08-14 05:04:00,413Z tap - INFO GET https://hq.appsflyer.com/export/id1293721589/in_app_events_report/v5?from=2018-06-04+17%3A17&api_token=....................................&to=2018-06-14+17%3A17 2018-08-14 05:04:00,504Z target - INFO Using Stitch import URL https://api.stitchdata.com/v2/import/batch 2018-08-14 05:04:18,813Z tap - INFO STATS: {"http_status_code": 200, "source": "in_app_events", "duration": 18.399158000946045, "status": "succeeded"} 2018-08-14 05:04:18,814Z tap - Traceback (most recent call last): 2018-08-14 05:04:18,814Z tap - File "tap-env/bin/tap-appsflyer", line 11, in <module> 2018-08-14 05:04:18,814Z tap - sys.exit(main()) 2018-08-14 05:04:18,814Z tap - File "/code/orchestrator/tap-env/lib/python3.5/site-packages/tap_appsflyer/__init__.py", line 458, in main 2018-08-14 05:04:18,814Z tap - do_sync() 2018-08-14 05:04:18,814Z tap - File "/code/orchestrator/tap-env/lib/python3.5/site-packages/tap_appsflyer/__init__.py", line 440, in do_sync 2018-08-14 05:04:18,814Z tap - stream.sync() # pylint: disable=not-callable 2018-08-14 05:04:18,814Z tap - File "/code/orchestrator/tap-env/lib/python3.5/site-packages/tap_appsflyer/__init__.py", line 402, in sync_in_app_events 2018-08-14 05:04:18,814Z tap - record = xform(row, schema) 2018-08-14 05:04:18,815Z tap - File "/code/orchestrator/tap-env/lib/python3.5/site-packages/tap_appsflyer/__init__.py", line 89, in xform 2018-08-14 05:04:18,815Z tap - xform_boolean_field(record, "wifi") 2018-08-14 05:04:18,815Z tap - File "/code/orchestrator/tap-env/lib/python3.5/site-packages/tap_appsflyer/__init__.py", line 75, in xform_boolean_field 2018-08-14 05:04:18,815Z tap - if record[field_name].lower() == "TRUE".lower(): 2018-08-14 05:04:18,815Z tap - AttributeError: 'NoneType' object has no attribute 'lower' 2018-08-14 05:04:18,839Z target - INFO Exiting normally 2018-08-14 05:04:18,875Z main - INFO Target exited normally with status 0 2018-08-14 05:04:18,876Z main - INFO Exit status is: Tap failed with code 1. Target succeeded.
Our data probably has an event with a blank boolean field. Is this something that can be accounted for and handled in the tap, or should we try to remove this event from appsflyer entirely?

The code in question:

if record[field_name].lower() == "TRUE".lower():

Cost & revenue data?

Pardon my ignorance - How do I get the cost & revenue data? it doesn't look like its populating from this tap?

Extraction encountered a schema violation

2018-03-26 09:10:48,727Z main - INFO Running tap-appsflyer version 0.0.1 and target-stitch version 1.7.0
2018-03-26 09:10:48,866Z main - DEBUG Getting initial state
2018-03-26 09:10:48,939Z main - INFO Starting tap: tap-env/bin/tap-appsflyer --config /tmp/tap_config.json --state /tmp/tap_state.json
2018-03-26 09:10:48,960Z main - INFO Starting target: target-env/bin/target-stitch --config /tmp/target_config.json
2018-03-26 09:10:49,327Z tap - INFO do_sync()
2018-03-26 09:10:49,328Z tap - INFO Starting sync. Will sync these streams: ['installs', 'in_app_events']
2018-03-26 09:10:49,328Z tap - INFO Syncing installs
2018-03-26 09:10:49,358Z tap - INFO GET https://hq.appsflyer.com/export/id1022393446/installs_report/v5?from=2018-03-01+00%3A00&api_token=....................................&to=2018-03-26+09%3A10
2018-03-26 09:10:49,505Z target - INFO Using Stitch import URL https://api.stitchdata.com/v2/import/batch
2018-03-26 09:11:06,293Z tap - INFO STATS: {"duration": 16.942935466766357, "status": "succeeded", "http_status_code": 200, "source": "installs"}
2018-03-26 09:11:06,293Z tap - INFO Syncing in_app_events
2018-03-26 09:11:06,295Z main - INFO State update: adding this_stream = "installs"
2018-03-26 09:11:06,295Z main - DEBUG Saving state: {'this_stream': 'installs'}
2018-03-26 09:11:06,297Z tap - INFO GET https://hq.appsflyer.com/export/id1022393446/in_app_events_report/v5?from=2018-03-01+00%3A00&api_token=....................................&to=2018-03-26+09%3A11
2018-03-26 09:12:58,589Z tap - INFO STATS: {"duration": 112.29382634162903, "status": "succeeded", "http_status_code": 200, "source": "in_app_events"}
2018-03-26 09:12:58,604Z tap - Traceback (most recent call last):
2018-03-26 09:12:58,604Z tap - File "tap-env/bin/tap-appsflyer", line 11, in
2018-03-26 09:12:58,604Z tap - sys.exit(main())
2018-03-26 09:12:58,604Z tap - File "/code/orchestrator/tap-env/lib/python3.5/site-packages/tap_appsflyer/init.py", line 473, in main
2018-03-26 09:12:58,604Z tap - do_sync()
2018-03-26 09:12:58,605Z tap - File "/code/orchestrator/tap-env/lib/python3.5/site-packages/tap_appsflyer/init.py", line 455, in do_sync
2018-03-26 09:12:58,605Z tap - stream.sync() # pylint: disable=not-callable
2018-03-26 09:12:58,605Z tap - File "/code/orchestrator/tap-env/lib/python3.5/site-packages/tap_appsflyer/init.py", line 421, in sync_in_app_events
2018-03-26 09:12:58,605Z tap - record = xform(row, schema)
2018-03-26 09:12:58,605Z tap - File "/code/orchestrator/tap-env/lib/python3.5/site-packages/tap_appsflyer/init.py", line 91, in xform
2018-03-26 09:12:58,605Z tap - return transform.transform(record, schema)
2018-03-26 09:12:58,605Z tap - File "/code/orchestrator/tap-env/lib/python3.5/site-packages/singer/transform.py", line 112, in transform
2018-03-26 09:12:58,606Z tap - raise Exception("Errors at paths {} in data {} for schema {}".format(error_paths, data, schema))
2018-03-26 09:12:58,606Z tap - Exception: Errors at paths [['contributor2_touch_type'], ['af_cost_value'], ['af_ad_type'], ['af_sub3'], ['advertising_id'], ['contributor3_media_source'], ['contributor1_af_prt'], ['contributor1_touch_time'], ['contributor1_touch_type'], ['af_cost_currency'], ['af_siteid'], ['contributor1_campaign'], ['af_sub2'], ['contributor3_af_prt'], ['http_referrer'], ['contributor3_touch_time'], ['imei'], ['af_keywords'], ['carrier'], ['af_sub5'], ['af_sub4'], ['original_url'], ['contributor2_media_source'], ['af_sub_siteid'], ['af_cost_model'], ['android_id'], ['af_sub1'], ['contributor2_campaign'], ['customer_user_id'], ['retargeting_conversion_type'], ['contributor3_campaign'], ['operator'], ['contributor1_media_source'], ['af_prt'], ['contributor2_touch_time'], ['contributor2_af_prt'], ['af_reengagement_window'], ['contributor3_touch_type']] in data {'contributor2_touch_type': None, 'af_cost_value': None, 'af_ad_type': None, 'af_sub3': None, 'is_primary_attribution': 'true', 'region': 'AS', 'idfa': 'ED243952-62D2-4D37-A3A3-3E872468EFC9', 'advertising_id': None, 'city': 'As Sabkhah', 'contributor3_media_source': None, 'af_c_id': '6080247525522', 'contributor1_af_prt': None, 'attributed_touch_type': 'impression', 'contributor1_touch_time': None, 'os_version': '11.2.6', 'is_retargeting': False, 'ip': '5.31.232.114', 'event_revenue_currency': 'EUR', 'contributor1_touch_type': None, 'af_cost_currency': None, 'app_version': '3.5.3', 'dma': 'None', 'device_type': 'iPhone X', 'app_name': 'Bsit, the childcare app', 'af_siteid': None, 'contributor1_campaign': None, 'event_value': '{"af_revenue":1.75,"af_event_start":"2018-03-01T07:00:40.555Z","af_longitude":4.4780842999999777,"af_customer_user_id":"5a5eb9c9bc9b350014690a5a","af_event_end":"2018-03-01T11:00:40.555Z","af_latitude":50.828281099999991,"af_order_id":"5a89f26b55e4760014096c6e","af_price":28.84,"af_currency":"EUR"}', 'af_sub2': None, 'contributor3_af_prt': None, 'http_referrer': None, 'contributor3_touch_time': None, 'imei': None, 'event_source': 'SDK', 'af_keywords': None, 'carrier': None, 'af_ad_id': '6080247526522', 'af_sub5': None, 'af_adset': 'AllParents_All_en - Instagram', 'af_channel': 'Instagram', 'attributed_touch_time': '2018-01-16 17:50:15', 'af_adset_id': '6080247527722', 'install_time': '2018-01-17 02:49:27', 'user_agent': 'Bsit/3.5.3 CFNetwork/894 Darwin/17.4.0', 'af_sub4': None, 'appsflyer_id': '1516160951593-9081132', 'original_url': None, 'contributor2_media_source': None, 'af_sub_siteid': None, 'bundle_id': 'com.togetair.aribsit', 'af_cost_model': None, 'event_revenue': '1.75', 'wifi': False, 'android_id': None, 'idfv': 'BBC032A0-403A-479C-B0CA-7FA8801CD437', 'event_revenue_usd': '2.133962', 'af_sub1': None, 'postal_code': 'None', 'media_source': 'Facebook Ads', 'af_attribution_lookback': '1d', 'contributor2_campaign': None, 'country_code': 'AE', 'customer_user_id': '5a5eb9c9bc9b350014690a5a', 'retargeting_conversion_type': None, 'is_receipt_validated': None, 'contributor3_campaign': None, 'event_time': '2018-03-01 07:10:36', 'operator': None, 'campaign': 'Boost_97%_Parents&Sitters_All___SPLIT DB', 'contributor1_media_source': None, 'app_id': 'id1022393446', 'state': 'DU', 'af_prt': None, 'contributor2_touch_time': None, 'contributor2_af_prt': None, 'platform': 'ios', 'sdk_version': 'v4.5.9', 'language': 'en-BE', 'af_reengagement_window': None, 'contributor3_touch_type': None, 'event_name': 'af_finished', 'af_ad': 'Publication Dessin afterschool_en'} for schema {'type': 'object', 'properties': {'contributor2_touch_type': {'type': ['string', 'null']}, 'af_cost_value': {'type': ['string', 'null']}, 'is_retargeting': {'type': ['boolean', 'null']}, 'af_sub3': {'type': ['string', 'null']}, 'is_primary_attribution': {'type': ['boolean', 'null']}, 'region': {'type': ['string', 'null']}, 'idfa': {'type': ['string', 'null']}, 'imei': {'type': ['string', 'null']}, 'event_time': {'type': ['string', 'null'], 'format': 'date-time'}, 'city': {'type': ['string', 'null']}, 'af_c_id': {'type': ['string', 'null']}, 'af_ad_type': {'type': ['string', 'null']}, 'attributed_touch_type': {'type': ['string', 'null']}, 'contributor1_touch_time': {'type': ['string', 'null']}, 'os_version': {'type': ['string', 'null']}, 'ip': {'type': ['string', 'null']}, 'app_id': {'type': ['string', 'null']}, 'postal_code': {'type': ['string', 'null']}, 'contributor1_touch_type': {'type': ['string', 'null']}, 'af_cost_currency': {'type': ['string', 'null']}, 'app_version': {'type': ['string', 'null']}, 'dma': {'type': ['string', 'null']}, 'device_type': {'type': ['string', 'null']}, 'app_name': {'type': ['string', 'null']}, 'contributor2_media_source': {'type': ['string', 'null']}, 'contributor1_campaign': {'type': ['string', 'null']}, 'event_value': {'type': ['string', 'null']}, 'af_sub2': {'type': ['string', 'null']}, 'contributor3_af_prt': {'type': ['string', 'null']}, 'http_referrer': {'type': ['string', 'null'], 'format': 'uri'}, 'contributor3_touch_time': {'type': ['string', 'null']}, 'sdk_version': {'type': ['string', 'null']}, 'af_keywords': {'type': ['string', 'null']}, 'is_receipt_validated': {'type': ['boolean', 'null']}, 'af_ad_id': {'type': ['string', 'null']}, 'af_sub5': {'type': ['string', 'null']}, 'af_adset': {'type': ['string', 'null']}, 'af_channel': {'type': ['string', 'null']}, 'attributed_touch_time': {'type': ['string', 'null'], 'format': 'date-time'}, 'af_adset_id': {'type': ['string', 'null']}, 'install_time': {'type': ['string', 'null'], 'format': 'date-time'}, 'user_agent': {'type': ['string', 'null']}, 'af_sub4': {'type': ['string', 'null']}, 'appsflyer_id': {'type': ['string', 'null']}, 'event_source': {'type': ['string', 'null']}, 'event_revenue_currency': {'type': ['string', 'null']}, 'event_revenue': {'type': ['string', 'null']}, 'af_siteid': {'type': ['string', 'null']}, 'af_sub_siteid': {'type': ['string', 'null']}, 'bundle_id': {'type': ['string', 'null']}, 'af_cost_model': {'type': ['string', 'null']}, 'original_url': {'type': ['string', 'null'], 'format': 'uri'}, 'wifi': {'type': ['boolean', 'null']}, 'android_id': {'type': ['string', 'null']}, 'idfv': {'type': ['string', 'null']}, 'event_revenue_usd': {'type': ['string', 'null']}, 'af_sub1': {'type': ['string', 'null']}, 'advertising_id': {'type': ['string', 'null']}, 'media_source': {'type': ['string', 'null']}, 'af_attribution_lookback': {'type': ['string', 'null']}, 'contributor2_campaign': {'type': ['string', 'null']}, 'country_code': {'type': ['string', 'null']}, 'customer_user_id': {'type': ['integer', 'null']}, 'retargeting_conversion_type': {'type': ['string', 'null']}, 'event_name': {'type': ['string', 'null']}, 'contributor3_campaign': {'type': ['string', 'null']}, 'contributor3_media_source': {'type': ['string', 'null']}, 'operator': {'type': ['string', 'null']}, 'campaign': {'type': ['string', 'null']}, 'contributor1_media_source': {'type': ['string', 'null']}, 'state': {'type': ['string', 'null']}, 'af_prt': {'type': ['string', 'null']}, 'contributor2_touch_time': {'type': ['string', 'null']}, 'contributor2_af_prt': {'type': ['string', 'null']}, 'contributor1_af_prt': {'type': ['string', 'null']}, 'platform': {'type': ['string', 'null']}, 'language': {'type': ['string', 'null']}, 'af_reengagement_window': {'type': ['string', 'null']}, 'contributor3_touch_type': {'type': ['string', 'null']}, 'carrier': {'type': ['string', 'null']}, 'af_ad': {'type': ['string', 'null']}}}
2018-03-26 09:12:58,638Z target - INFO Exiting normally
2018-03-26 09:12:58,682Z main - INFO Target exited normally with status 0
2018-03-26 09:12:58,684Z main - INFO Exit status is: Tap failed with code 1. Target succeeded.

Missing media source in install report

I am only seeing installs from Googleadwords_int in my installs report. Installs from media source: Facebook ads is not showing up. I can see facebook installs in my Appsflyer dashboard. Any clue why this is not showing up in this report?

Extraction logs:

2019-01-02 08:04:10,777Z   main - INFO Running tap-appsflyer version 0.0.11 and target-stitch version 1.8.1
2019-01-02 08:04:10,898Z   main - INFO Starting tap: tap-env/bin/tap-appsflyer --config /tmp/tap_config.json --state /tmp/tap_state.json
2019-01-02 08:04:10,900Z   main - INFO Starting target: target-env/bin/target-stitch --config /tmp/target_config.json
2019-01-02 08:04:11,062Z    tap - INFO do_sync()
2019-01-02 08:04:11,062Z    tap - INFO Starting sync. Will sync these streams: ['installs', 'in_app_events']
2019-01-02 08:04:11,063Z    tap - INFO Syncing installs
2019-01-02 08:04:11,064Z    tap - INFO GET https://hq.appsflyer.com/export/nl.tellow.app/installs_report/v5?api_token=....................................&from=2019-01-02+01%3A59&to=2019-01-02+08%3A04
2019-01-02 08:04:11,139Z target - INFO Using Stitch import URL https://api.stitchdata.com/v2/import/batch
2019-01-02 08:04:25,090Z    tap - INFO STATS: {"status": "succeeded", "source": "installs", "http_status_code": 200, "duration": 14.025520086288452}
2019-01-02 08:04:25,100Z    tap - INFO Syncing in_app_events
2019-01-02 08:04:25,101Z    tap - INFO Syncing data from 2019-01-01 23:50:37 to 2019-01-02 08:04:25.101130
2019-01-02 08:04:25,101Z target - INFO Sending batch with 16 messages for table installs to https://api.stitchdata.com/v2/import/batch
2019-01-02 08:04:25,101Z    tap - INFO GET https://hq.appsflyer.com/export/nl.tellow.app/in_app_events_report/v5?api_token=....................................&from=2019-01-01+23%3A50&to=2019-01-02+08%3A04
2019-01-02 08:04:25,368Z   main - INFO State update: adding in_app_events = "2019-01-01T23:50:37Z"
2019-01-02 08:04:25,368Z   main - INFO State update: adding installs = "2019-01-02T07:02:19Z"
2019-01-02 08:04:25,368Z   main - INFO State update: adding this_stream = "installs"
2019-01-02 08:04:49,985Z    tap - INFO STATS: {"status": "succeeded", "source": "in_app_events", "http_status_code": 200, "duration": 24.883780479431152}
2019-01-02 08:04:49,988Z    tap - INFO Sync completed
2019-01-02 08:04:50,024Z target - INFO Sending batch with 5 messages for table in_app_events to https://api.stitchdata.com/v2/import/batch
2019-01-02 08:04:50,164Z   main - INFO State update: changing in_app_events from "2019-01-01T23:50:37Z" to "2019-01-02T06:49:20Z"
2019-01-02 08:04:50,164Z   main - INFO State update: changing this_stream from "installs" to null
2019-01-02 08:04:50,165Z target - INFO Exiting normally
2019-01-02 08:04:50,219Z   main - INFO Target exited normally with status 0
2019-01-02 08:04:50,222Z   main - INFO Exit status is: Tap succeeded. Target succeeded.

Support for Organic Installs on Stitch

Hello Everyone,

I see that the AppsFlyer tap is now capable of syncing organic installs and that it's now officially tagged on the master branch.
#34

However this new capability is behind a CONFIG variable, that is not available on the Stitch integration.

Does anyone know how can I make this config value available on the Stitch integration, or if there is a workaround in order to get this working on Stitch?

Thank you

Does not support Organic Installations report

ENDPOINTS = {
"installs": "/export/{app_id}/installs_report/v5",
"in_app_events": "/export/{app_id}/in_app_events_report/v5"
}

Doesn't have "organic installations reports".

The organic installations reports is a premium feature in appsflyer but if you have it enabled it would be nice to have this data.

Android AppsFlyer Events Issue

We're getting this log error every day. Is there any way we can fix the malformed request ASAP?

2018-09-04 13:57:15,555Z   main - INFO Running tap-appsflyer version 0.0.8 and target-stitch version 1.7.4
2018-09-04 13:57:15,724Z   main - DEBUG Getting initial state
2018-09-04 13:57:15,782Z   main - INFO Starting tap: tap-env/bin/tap-appsflyer --config /tmp/tap_config.json --state /tmp/tap_state.json
2018-09-04 13:57:15,802Z   main - INFO Starting target: target-env/bin/target-stitch --config /tmp/target_config.json
2018-09-04 13:57:16,337Z    tap - INFO do_sync()
2018-09-04 13:57:16,341Z    tap - INFO Starting sync. Will sync these streams: ['in_app_events']
2018-09-04 13:57:16,343Z    tap - INFO Syncing in_app_events
2018-09-04 13:57:16,352Z    tap - INFO Syncing data from 2018-09-04 01:56:40 to 2018-09-04 13:57:16.345161
2018-09-04 13:57:16,365Z    tap - INFO GET https://hq.appsflyer.com/export/com.wayup_rn/in_app_events_report/v5?from=2018-09-04+01%3A56&to=2018-09-04+13%3A57&api_token=....................................
2018-09-04 13:57:16,450Z target - INFO Using Stitch import URL https://api.stitchdata.com/v2/import/batch
2018-09-04 13:57:16,946Z    tap - INFO STATS: {"source": "in_app_events", "duration": 0.5804538726806641, "status": "succeeded", "http_status_code": 400}
2018-09-04 13:57:16,947Z    tap - ERROR GET https://hq.appsflyer.com/export/com.wayup_rn/in_app_events_report/v5?from=2018-09-04+01%3A56&to=2018-09-04+13%3A57&api_token=.................................... [400 - b'400 Bad Request\n\nThe server could not comply with the request since it is either malformed or otherwise incorrect.\n\n\nReport timezone: GMT | Max line count: 200K | Oldest available data: 90 Days ago. Max requests 12 per day per app, 60 per account in total.\n\n']
2018-09-04 13:57:16,995Z target - INFO Exiting normally
2018-09-04 13:57:17,090Z   main - INFO Target exited normally with status 0
2018-09-04 13:57:17,099Z   main - INFO Exit status is: Tap failed with code 1. Target succeeded.

Cut a new tag v0.0.13 with PR #19 included

It seems that PR #19 has been merged (woohoo!) but the latest tag is v0.0.13 which doesn't include this feature. Can we bump the tag so this improvement is made available in the master branch? Thanks!

"iOS installation report" failing with 400 error

I have copied the full log output from a customer's Appsflyer integration below. Calls to the installs_report API return a bad request error.

INFO Starting sync. Will sync these streams: ['installs', 'in_app_events'] 2017-08-28T19:57:24.662309569Z INFO tap_log - INFO Syncing installs 2017-08-28T19:57:24.669389603Z INFO tap_log - INFO GET https://hq.appsflyer.com/export/id728659261/installs_report/v5?from=2017-06-27+00%3A53&to=2017-07-27+00%3A53&api_token=.................................... 2017-08-28T19:57:25.157900129Z INFO tap_log - INFO STATS: {"status": "succeeded", "duration": 0.48760128021240234, "source": "installs", "http_status_code": 400} 2017-08-28T19:57:25.157944406Z INFO tap_log - ERROR GET https://hq.appsflyer.com/export/id728659261/installs_report/v5?from=2017-06-27+00%3A53&to=2017-07-27+00%3A53&api_token=.................................... [400 - b'400 Bad Request\n\nThe server could not comply with the request since it is either malformed or otherwise incorrect.\n\n\nReport timezone: GMT | Max line count: 200K | Oldest available data: 90 Days ago. Max requests 24 per day per app, 120 per account in total.\n\n'] 2017-08-28T19:57:25.184780307Z DEBUG tap_log - Thread terminating

No support for organic_in_app_events

There currently does not appear to be support for pulling in the organic_in_app_events report from appsflyer mentioned here by appsflyer. This results in the data pulled from appsflyer via stitch being materially incomplete.

Is it possible to add this?

Install reports are hitting an error in extraction, but in-app events successful

Hello, we're having some issues with the Appsflyer integration. Around 6th June, just the installs report, and only installs (events is still running successfully), halved, and then stopped on the 16th June.

The extraction logs, but also the dialog in the settings tab, show it's related to dates and times that are being sent into Appsflyer's API (see attached screenshot).

It appears as if Appsflyer have recently changed their API policy too
https://support.appsflyer.com/hc/en-us/articles/207034366-API-Policy
but this is after our issues started.
stitch-appsflyer

If someone could please advise on what's causing this issue that would be great.

Thanks.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.