ingestr 0.12.7__tar.gz → 0.12.8__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of ingestr might be problematic. Click here for more details.
- {ingestr-0.12.7 → ingestr-0.12.8}/.githooks/pre-commit-hook.sh +2 -2
- {ingestr-0.12.7 → ingestr-0.12.8}/PKG-INFO +1 -1
- {ingestr-0.12.7 → ingestr-0.12.8}/docs/supported-sources/adjust.md +1 -0
- {ingestr-0.12.7 → ingestr-0.12.8}/docs/supported-sources/appstore.md +2 -1
- {ingestr-0.12.7 → ingestr-0.12.8}/ingestr/src/adjust/__init__.py +7 -2
- {ingestr-0.12.7 → ingestr-0.12.8}/ingestr/src/adjust/adjust_helpers.py +27 -15
- ingestr-0.12.8/ingestr/src/version.py +1 -0
- ingestr-0.12.7/ingestr/src/version.py +0 -1
- {ingestr-0.12.7 → ingestr-0.12.8}/.dockerignore +0 -0
- {ingestr-0.12.7 → ingestr-0.12.8}/.github/workflows/deploy-docs.yml +0 -0
- {ingestr-0.12.7 → ingestr-0.12.8}/.github/workflows/secrets-scan.yml +0 -0
- {ingestr-0.12.7 → ingestr-0.12.8}/.github/workflows/tests.yml +0 -0
- {ingestr-0.12.7 → ingestr-0.12.8}/.gitignore +0 -0
- {ingestr-0.12.7 → ingestr-0.12.8}/.gitleaksignore +0 -0
- {ingestr-0.12.7 → ingestr-0.12.8}/.python-version +0 -0
- {ingestr-0.12.7 → ingestr-0.12.8}/.vale.ini +0 -0
- {ingestr-0.12.7 → ingestr-0.12.8}/Dockerfile +0 -0
- {ingestr-0.12.7 → ingestr-0.12.8}/LICENSE.md +0 -0
- {ingestr-0.12.7 → ingestr-0.12.8}/Makefile +0 -0
- {ingestr-0.12.7 → ingestr-0.12.8}/README.md +0 -0
- {ingestr-0.12.7 → ingestr-0.12.8}/docs/.vitepress/config.mjs +0 -0
- {ingestr-0.12.7 → ingestr-0.12.8}/docs/.vitepress/theme/custom.css +0 -0
- {ingestr-0.12.7 → ingestr-0.12.8}/docs/.vitepress/theme/index.js +0 -0
- {ingestr-0.12.7 → ingestr-0.12.8}/docs/commands/example-uris.md +0 -0
- {ingestr-0.12.7 → ingestr-0.12.8}/docs/commands/ingest.md +0 -0
- {ingestr-0.12.7 → ingestr-0.12.8}/docs/getting-started/core-concepts.md +0 -0
- {ingestr-0.12.7 → ingestr-0.12.8}/docs/getting-started/incremental-loading.md +0 -0
- {ingestr-0.12.7 → ingestr-0.12.8}/docs/getting-started/quickstart.md +0 -0
- {ingestr-0.12.7 → ingestr-0.12.8}/docs/getting-started/telemetry.md +0 -0
- {ingestr-0.12.7 → ingestr-0.12.8}/docs/index.md +0 -0
- {ingestr-0.12.7 → ingestr-0.12.8}/docs/media/athena.png +0 -0
- {ingestr-0.12.7 → ingestr-0.12.8}/docs/media/github.png +0 -0
- {ingestr-0.12.7 → ingestr-0.12.8}/docs/media/googleanalytics.png +0 -0
- {ingestr-0.12.7 → ingestr-0.12.8}/docs/media/tiktok.png +0 -0
- {ingestr-0.12.7 → ingestr-0.12.8}/docs/supported-sources/airtable.md +0 -0
- {ingestr-0.12.7 → ingestr-0.12.8}/docs/supported-sources/appsflyer.md +0 -0
- {ingestr-0.12.7 → ingestr-0.12.8}/docs/supported-sources/asana.md +0 -0
- {ingestr-0.12.7 → ingestr-0.12.8}/docs/supported-sources/athena.md +0 -0
- {ingestr-0.12.7 → ingestr-0.12.8}/docs/supported-sources/bigquery.md +0 -0
- {ingestr-0.12.7 → ingestr-0.12.8}/docs/supported-sources/chess.md +0 -0
- {ingestr-0.12.7 → ingestr-0.12.8}/docs/supported-sources/csv.md +0 -0
- {ingestr-0.12.7 → ingestr-0.12.8}/docs/supported-sources/custom_queries.md +0 -0
- {ingestr-0.12.7 → ingestr-0.12.8}/docs/supported-sources/databricks.md +0 -0
- {ingestr-0.12.7 → ingestr-0.12.8}/docs/supported-sources/duckdb.md +0 -0
- {ingestr-0.12.7 → ingestr-0.12.8}/docs/supported-sources/dynamodb.md +0 -0
- {ingestr-0.12.7 → ingestr-0.12.8}/docs/supported-sources/facebook-ads.md +0 -0
- {ingestr-0.12.7 → ingestr-0.12.8}/docs/supported-sources/github.md +0 -0
- {ingestr-0.12.7 → ingestr-0.12.8}/docs/supported-sources/google_analytics.md +0 -0
- {ingestr-0.12.7 → ingestr-0.12.8}/docs/supported-sources/gorgias.md +0 -0
- {ingestr-0.12.7 → ingestr-0.12.8}/docs/supported-sources/gsheets.md +0 -0
- {ingestr-0.12.7 → ingestr-0.12.8}/docs/supported-sources/hubspot.md +0 -0
- {ingestr-0.12.7 → ingestr-0.12.8}/docs/supported-sources/kafka.md +0 -0
- {ingestr-0.12.7 → ingestr-0.12.8}/docs/supported-sources/klaviyo.md +0 -0
- {ingestr-0.12.7 → ingestr-0.12.8}/docs/supported-sources/mongodb.md +0 -0
- {ingestr-0.12.7 → ingestr-0.12.8}/docs/supported-sources/mssql.md +0 -0
- {ingestr-0.12.7 → ingestr-0.12.8}/docs/supported-sources/mysql.md +0 -0
- {ingestr-0.12.7 → ingestr-0.12.8}/docs/supported-sources/notion.md +0 -0
- {ingestr-0.12.7 → ingestr-0.12.8}/docs/supported-sources/oracle.md +0 -0
- {ingestr-0.12.7 → ingestr-0.12.8}/docs/supported-sources/postgres.md +0 -0
- {ingestr-0.12.7 → ingestr-0.12.8}/docs/supported-sources/redshift.md +0 -0
- {ingestr-0.12.7 → ingestr-0.12.8}/docs/supported-sources/s3.md +0 -0
- {ingestr-0.12.7 → ingestr-0.12.8}/docs/supported-sources/sap-hana.md +0 -0
- {ingestr-0.12.7 → ingestr-0.12.8}/docs/supported-sources/shopify.md +0 -0
- {ingestr-0.12.7 → ingestr-0.12.8}/docs/supported-sources/slack.md +0 -0
- {ingestr-0.12.7 → ingestr-0.12.8}/docs/supported-sources/snowflake.md +0 -0
- {ingestr-0.12.7 → ingestr-0.12.8}/docs/supported-sources/sqlite.md +0 -0
- {ingestr-0.12.7 → ingestr-0.12.8}/docs/supported-sources/stripe.md +0 -0
- {ingestr-0.12.7 → ingestr-0.12.8}/docs/supported-sources/tiktok-ads.md +0 -0
- {ingestr-0.12.7 → ingestr-0.12.8}/docs/supported-sources/zendesk.md +0 -0
- {ingestr-0.12.7 → ingestr-0.12.8}/ingestr/main.py +0 -0
- {ingestr-0.12.7 → ingestr-0.12.8}/ingestr/src/.gitignore +0 -0
- {ingestr-0.12.7 → ingestr-0.12.8}/ingestr/src/airtable/__init__.py +0 -0
- {ingestr-0.12.7 → ingestr-0.12.8}/ingestr/src/appsflyer/_init_.py +0 -0
- {ingestr-0.12.7 → ingestr-0.12.8}/ingestr/src/appsflyer/client.py +0 -0
- {ingestr-0.12.7 → ingestr-0.12.8}/ingestr/src/appstore/__init__.py +0 -0
- {ingestr-0.12.7 → ingestr-0.12.8}/ingestr/src/appstore/client.py +0 -0
- {ingestr-0.12.7 → ingestr-0.12.8}/ingestr/src/appstore/errors.py +0 -0
- {ingestr-0.12.7 → ingestr-0.12.8}/ingestr/src/appstore/models.py +0 -0
- {ingestr-0.12.7 → ingestr-0.12.8}/ingestr/src/appstore/resources.py +0 -0
- {ingestr-0.12.7 → ingestr-0.12.8}/ingestr/src/arrow/__init__.py +0 -0
- {ingestr-0.12.7 → ingestr-0.12.8}/ingestr/src/asana_source/__init__.py +0 -0
- {ingestr-0.12.7 → ingestr-0.12.8}/ingestr/src/asana_source/helpers.py +0 -0
- {ingestr-0.12.7 → ingestr-0.12.8}/ingestr/src/asana_source/settings.py +0 -0
- {ingestr-0.12.7 → ingestr-0.12.8}/ingestr/src/chess/__init__.py +0 -0
- {ingestr-0.12.7 → ingestr-0.12.8}/ingestr/src/chess/helpers.py +0 -0
- {ingestr-0.12.7 → ingestr-0.12.8}/ingestr/src/chess/settings.py +0 -0
- {ingestr-0.12.7 → ingestr-0.12.8}/ingestr/src/destinations.py +0 -0
- {ingestr-0.12.7 → ingestr-0.12.8}/ingestr/src/dynamodb/__init__.py +0 -0
- {ingestr-0.12.7 → ingestr-0.12.8}/ingestr/src/errors.py +0 -0
- {ingestr-0.12.7 → ingestr-0.12.8}/ingestr/src/facebook_ads/__init__.py +0 -0
- {ingestr-0.12.7 → ingestr-0.12.8}/ingestr/src/facebook_ads/exceptions.py +0 -0
- {ingestr-0.12.7 → ingestr-0.12.8}/ingestr/src/facebook_ads/helpers.py +0 -0
- {ingestr-0.12.7 → ingestr-0.12.8}/ingestr/src/facebook_ads/settings.py +0 -0
- {ingestr-0.12.7 → ingestr-0.12.8}/ingestr/src/factory.py +0 -0
- {ingestr-0.12.7 → ingestr-0.12.8}/ingestr/src/filesystem/__init__.py +0 -0
- {ingestr-0.12.7 → ingestr-0.12.8}/ingestr/src/filesystem/helpers.py +0 -0
- {ingestr-0.12.7 → ingestr-0.12.8}/ingestr/src/filesystem/readers.py +0 -0
- {ingestr-0.12.7 → ingestr-0.12.8}/ingestr/src/filters.py +0 -0
- {ingestr-0.12.7 → ingestr-0.12.8}/ingestr/src/github/__init__.py +0 -0
- {ingestr-0.12.7 → ingestr-0.12.8}/ingestr/src/github/helpers.py +0 -0
- {ingestr-0.12.7 → ingestr-0.12.8}/ingestr/src/github/queries.py +0 -0
- {ingestr-0.12.7 → ingestr-0.12.8}/ingestr/src/github/settings.py +0 -0
- {ingestr-0.12.7 → ingestr-0.12.8}/ingestr/src/google_analytics/__init__.py +0 -0
- {ingestr-0.12.7 → ingestr-0.12.8}/ingestr/src/google_analytics/helpers.py +0 -0
- {ingestr-0.12.7 → ingestr-0.12.8}/ingestr/src/google_sheets/README.md +0 -0
- {ingestr-0.12.7 → ingestr-0.12.8}/ingestr/src/google_sheets/__init__.py +0 -0
- {ingestr-0.12.7 → ingestr-0.12.8}/ingestr/src/google_sheets/helpers/__init__.py +0 -0
- {ingestr-0.12.7 → ingestr-0.12.8}/ingestr/src/google_sheets/helpers/api_calls.py +0 -0
- {ingestr-0.12.7 → ingestr-0.12.8}/ingestr/src/google_sheets/helpers/data_processing.py +0 -0
- {ingestr-0.12.7 → ingestr-0.12.8}/ingestr/src/gorgias/__init__.py +0 -0
- {ingestr-0.12.7 → ingestr-0.12.8}/ingestr/src/gorgias/helpers.py +0 -0
- {ingestr-0.12.7 → ingestr-0.12.8}/ingestr/src/hubspot/__init__.py +0 -0
- {ingestr-0.12.7 → ingestr-0.12.8}/ingestr/src/hubspot/helpers.py +0 -0
- {ingestr-0.12.7 → ingestr-0.12.8}/ingestr/src/hubspot/settings.py +0 -0
- {ingestr-0.12.7 → ingestr-0.12.8}/ingestr/src/kafka/__init__.py +0 -0
- {ingestr-0.12.7 → ingestr-0.12.8}/ingestr/src/kafka/helpers.py +0 -0
- {ingestr-0.12.7 → ingestr-0.12.8}/ingestr/src/klaviyo/_init_.py +0 -0
- {ingestr-0.12.7 → ingestr-0.12.8}/ingestr/src/klaviyo/client.py +0 -0
- {ingestr-0.12.7 → ingestr-0.12.8}/ingestr/src/klaviyo/helpers.py +0 -0
- {ingestr-0.12.7 → ingestr-0.12.8}/ingestr/src/mongodb/__init__.py +0 -0
- {ingestr-0.12.7 → ingestr-0.12.8}/ingestr/src/mongodb/helpers.py +0 -0
- {ingestr-0.12.7 → ingestr-0.12.8}/ingestr/src/notion/__init__.py +0 -0
- {ingestr-0.12.7 → ingestr-0.12.8}/ingestr/src/notion/helpers/__init__.py +0 -0
- {ingestr-0.12.7 → ingestr-0.12.8}/ingestr/src/notion/helpers/client.py +0 -0
- {ingestr-0.12.7 → ingestr-0.12.8}/ingestr/src/notion/helpers/database.py +0 -0
- {ingestr-0.12.7 → ingestr-0.12.8}/ingestr/src/notion/settings.py +0 -0
- {ingestr-0.12.7 → ingestr-0.12.8}/ingestr/src/shopify/__init__.py +0 -0
- {ingestr-0.12.7 → ingestr-0.12.8}/ingestr/src/shopify/exceptions.py +0 -0
- {ingestr-0.12.7 → ingestr-0.12.8}/ingestr/src/shopify/helpers.py +0 -0
- {ingestr-0.12.7 → ingestr-0.12.8}/ingestr/src/shopify/settings.py +0 -0
- {ingestr-0.12.7 → ingestr-0.12.8}/ingestr/src/slack/__init__.py +0 -0
- {ingestr-0.12.7 → ingestr-0.12.8}/ingestr/src/slack/helpers.py +0 -0
- {ingestr-0.12.7 → ingestr-0.12.8}/ingestr/src/slack/settings.py +0 -0
- {ingestr-0.12.7 → ingestr-0.12.8}/ingestr/src/sources.py +0 -0
- {ingestr-0.12.7 → ingestr-0.12.8}/ingestr/src/sql_database/__init__.py +0 -0
- {ingestr-0.12.7 → ingestr-0.12.8}/ingestr/src/sql_database/callbacks.py +0 -0
- {ingestr-0.12.7 → ingestr-0.12.8}/ingestr/src/stripe_analytics/__init__.py +0 -0
- {ingestr-0.12.7 → ingestr-0.12.8}/ingestr/src/stripe_analytics/helpers.py +0 -0
- {ingestr-0.12.7 → ingestr-0.12.8}/ingestr/src/stripe_analytics/settings.py +0 -0
- {ingestr-0.12.7 → ingestr-0.12.8}/ingestr/src/table_definition.py +0 -0
- {ingestr-0.12.7 → ingestr-0.12.8}/ingestr/src/telemetry/event.py +0 -0
- {ingestr-0.12.7 → ingestr-0.12.8}/ingestr/src/testdata/fakebqcredentials.json +0 -0
- {ingestr-0.12.7 → ingestr-0.12.8}/ingestr/src/tiktok_ads/__init__.py +0 -0
- {ingestr-0.12.7 → ingestr-0.12.8}/ingestr/src/tiktok_ads/tiktok_helpers.py +0 -0
- {ingestr-0.12.7 → ingestr-0.12.8}/ingestr/src/time.py +0 -0
- {ingestr-0.12.7 → ingestr-0.12.8}/ingestr/src/zendesk/__init__.py +0 -0
- {ingestr-0.12.7 → ingestr-0.12.8}/ingestr/src/zendesk/helpers/__init__.py +0 -0
- {ingestr-0.12.7 → ingestr-0.12.8}/ingestr/src/zendesk/helpers/api_helpers.py +0 -0
- {ingestr-0.12.7 → ingestr-0.12.8}/ingestr/src/zendesk/helpers/credentials.py +0 -0
- {ingestr-0.12.7 → ingestr-0.12.8}/ingestr/src/zendesk/helpers/talk_api.py +0 -0
- {ingestr-0.12.7 → ingestr-0.12.8}/ingestr/src/zendesk/settings.py +0 -0
- {ingestr-0.12.7 → ingestr-0.12.8}/ingestr/testdata/.gitignore +0 -0
- {ingestr-0.12.7 → ingestr-0.12.8}/ingestr/testdata/create_replace.csv +0 -0
- {ingestr-0.12.7 → ingestr-0.12.8}/ingestr/testdata/delete_insert_expected.csv +0 -0
- {ingestr-0.12.7 → ingestr-0.12.8}/ingestr/testdata/delete_insert_part1.csv +0 -0
- {ingestr-0.12.7 → ingestr-0.12.8}/ingestr/testdata/delete_insert_part2.csv +0 -0
- {ingestr-0.12.7 → ingestr-0.12.8}/ingestr/testdata/merge_expected.csv +0 -0
- {ingestr-0.12.7 → ingestr-0.12.8}/ingestr/testdata/merge_part1.csv +0 -0
- {ingestr-0.12.7 → ingestr-0.12.8}/ingestr/testdata/merge_part2.csv +0 -0
- {ingestr-0.12.7 → ingestr-0.12.8}/package-lock.json +0 -0
- {ingestr-0.12.7 → ingestr-0.12.8}/package.json +0 -0
- {ingestr-0.12.7 → ingestr-0.12.8}/pyproject.toml +0 -0
- {ingestr-0.12.7 → ingestr-0.12.8}/requirements-dev.txt +0 -0
- {ingestr-0.12.7 → ingestr-0.12.8}/requirements.txt +0 -0
- {ingestr-0.12.7 → ingestr-0.12.8}/resources/demo.gif +0 -0
- {ingestr-0.12.7 → ingestr-0.12.8}/resources/demo.tape +0 -0
- {ingestr-0.12.7 → ingestr-0.12.8}/resources/ingestr.svg +0 -0
- {ingestr-0.12.7 → ingestr-0.12.8}/styles/Google/AMPM.yml +0 -0
- {ingestr-0.12.7 → ingestr-0.12.8}/styles/Google/Acronyms.yml +0 -0
- {ingestr-0.12.7 → ingestr-0.12.8}/styles/Google/Colons.yml +0 -0
- {ingestr-0.12.7 → ingestr-0.12.8}/styles/Google/Contractions.yml +0 -0
- {ingestr-0.12.7 → ingestr-0.12.8}/styles/Google/DateFormat.yml +0 -0
- {ingestr-0.12.7 → ingestr-0.12.8}/styles/Google/Ellipses.yml +0 -0
- {ingestr-0.12.7 → ingestr-0.12.8}/styles/Google/EmDash.yml +0 -0
- {ingestr-0.12.7 → ingestr-0.12.8}/styles/Google/Exclamation.yml +0 -0
- {ingestr-0.12.7 → ingestr-0.12.8}/styles/Google/FirstPerson.yml +0 -0
- {ingestr-0.12.7 → ingestr-0.12.8}/styles/Google/Gender.yml +0 -0
- {ingestr-0.12.7 → ingestr-0.12.8}/styles/Google/GenderBias.yml +0 -0
- {ingestr-0.12.7 → ingestr-0.12.8}/styles/Google/HeadingPunctuation.yml +0 -0
- {ingestr-0.12.7 → ingestr-0.12.8}/styles/Google/Headings.yml +0 -0
- {ingestr-0.12.7 → ingestr-0.12.8}/styles/Google/Latin.yml +0 -0
- {ingestr-0.12.7 → ingestr-0.12.8}/styles/Google/LyHyphens.yml +0 -0
- {ingestr-0.12.7 → ingestr-0.12.8}/styles/Google/OptionalPlurals.yml +0 -0
- {ingestr-0.12.7 → ingestr-0.12.8}/styles/Google/Ordinal.yml +0 -0
- {ingestr-0.12.7 → ingestr-0.12.8}/styles/Google/OxfordComma.yml +0 -0
- {ingestr-0.12.7 → ingestr-0.12.8}/styles/Google/Parens.yml +0 -0
- {ingestr-0.12.7 → ingestr-0.12.8}/styles/Google/Passive.yml +0 -0
- {ingestr-0.12.7 → ingestr-0.12.8}/styles/Google/Periods.yml +0 -0
- {ingestr-0.12.7 → ingestr-0.12.8}/styles/Google/Quotes.yml +0 -0
- {ingestr-0.12.7 → ingestr-0.12.8}/styles/Google/Ranges.yml +0 -0
- {ingestr-0.12.7 → ingestr-0.12.8}/styles/Google/Semicolons.yml +0 -0
- {ingestr-0.12.7 → ingestr-0.12.8}/styles/Google/Slang.yml +0 -0
- {ingestr-0.12.7 → ingestr-0.12.8}/styles/Google/Spacing.yml +0 -0
- {ingestr-0.12.7 → ingestr-0.12.8}/styles/Google/Spelling.yml +0 -0
- {ingestr-0.12.7 → ingestr-0.12.8}/styles/Google/Units.yml +0 -0
- {ingestr-0.12.7 → ingestr-0.12.8}/styles/Google/We.yml +0 -0
- {ingestr-0.12.7 → ingestr-0.12.8}/styles/Google/Will.yml +0 -0
- {ingestr-0.12.7 → ingestr-0.12.8}/styles/Google/WordList.yml +0 -0
- {ingestr-0.12.7 → ingestr-0.12.8}/styles/Google/meta.json +0 -0
- {ingestr-0.12.7 → ingestr-0.12.8}/styles/Google/vocab.txt +0 -0
- {ingestr-0.12.7 → ingestr-0.12.8}/styles/bruin/Ingestr.yml +0 -0
- {ingestr-0.12.7 → ingestr-0.12.8}/styles/config/vocabularies/bruin/accept.txt +0 -0
|
@@ -13,11 +13,11 @@ secret_detected() {
|
|
|
13
13
|
|
|
14
14
|
# use gitleaks binary if available
|
|
15
15
|
# else fallback to using docker for running gitleaks
|
|
16
|
-
CMD="gitleaks
|
|
16
|
+
CMD="gitleaks protect --staged -v"
|
|
17
17
|
|
|
18
18
|
if [[ ! `which gitleaks` ]]; then
|
|
19
19
|
which docker > /dev/null || (echo "gitleaks or docker is required for running secrets scan." && exit 1)
|
|
20
|
-
CMD="docker run -v $PWD:$WORK_DIR -w $WORK_DIR --rm ghcr.io/gitleaks/gitleaks:latest
|
|
20
|
+
CMD="docker run -v $PWD:$WORK_DIR -w $WORK_DIR --rm ghcr.io/gitleaks/gitleaks:latest protect --staged -v"
|
|
21
21
|
fi
|
|
22
22
|
|
|
23
23
|
$CMD || secret_detected
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: ingestr
|
|
3
|
-
Version: 0.12.
|
|
3
|
+
Version: 0.12.8
|
|
4
4
|
Summary: ingestr is a command-line application that ingests data from various sources and stores them in any database.
|
|
5
5
|
Project-URL: Homepage, https://github.com/bruin-data/ingestr
|
|
6
6
|
Project-URL: Issues, https://github.com/bruin-data/ingestr/issues
|
|
@@ -34,6 +34,7 @@ Adjust source allows ingesting data from various sources:
|
|
|
34
34
|
|
|
35
35
|
- `campaigns`: Retrieves data for a campaign, showing the app's revenue and network costs over multiple days.
|
|
36
36
|
- `creatives`: Retrieves data for a creative assets, detailing the app's revenue and network costs across multiple days.
|
|
37
|
+
- `events`: Retrieves data for [events](https://dev.adjust.com/en/api/rs-api/events/) and event slugs.
|
|
37
38
|
- `custom`: Retrieves custom data based on the dimensions and metrics specified.
|
|
38
39
|
|
|
39
40
|
### Custom reports: `custom:<dimensions>:<metrics>[:<filters>]`
|
|
@@ -17,7 +17,8 @@ URI Parameters:
|
|
|
17
17
|
* `key_path`: path to API private key
|
|
18
18
|
* `key_id`: ID of the generated key
|
|
19
19
|
* `issuer_id`: Issuer ID of the generated key
|
|
20
|
-
* `app_id`: application ID of your app. You can specify `app_id` multiple times with different ids to ingest data for multiple apps.
|
|
20
|
+
* `app_id`: optional, application ID of your app. You can specify `app_id` multiple times with different ids to ingest data for multiple apps.
|
|
21
|
+
* You can also define the app_id in the table name. For example, `app-downloads-detailed:12345,67890` will ingest data for app with id `12345` and `67890`.
|
|
21
22
|
|
|
22
23
|
## Setting up Appstore Integration
|
|
23
24
|
|
|
@@ -56,6 +56,11 @@ def adjust_source(
|
|
|
56
56
|
filters=filters,
|
|
57
57
|
)
|
|
58
58
|
|
|
59
|
+
@dlt.resource(write_disposition="replace", primary_key="id")
|
|
60
|
+
def events():
|
|
61
|
+
adjust_api = AdjustAPI(api_key=api_key)
|
|
62
|
+
yield adjust_api.fetch_events()
|
|
63
|
+
|
|
59
64
|
@dlt.resource(write_disposition="merge", merge_key="day")
|
|
60
65
|
def creatives():
|
|
61
66
|
adjust_api = AdjustAPI(api_key=api_key)
|
|
@@ -68,7 +73,7 @@ def adjust_source(
|
|
|
68
73
|
)
|
|
69
74
|
|
|
70
75
|
if not dimensions:
|
|
71
|
-
return campaigns, creatives
|
|
76
|
+
return campaigns, creatives, events
|
|
72
77
|
|
|
73
78
|
merge_key = merge_key
|
|
74
79
|
type_hints = {}
|
|
@@ -100,4 +105,4 @@ def adjust_source(
|
|
|
100
105
|
filters=filters,
|
|
101
106
|
)
|
|
102
107
|
|
|
103
|
-
return campaigns, creatives, custom
|
|
108
|
+
return campaigns, creatives, custom, events
|
|
@@ -28,10 +28,20 @@ DEFAULT_METRICS = [
|
|
|
28
28
|
]
|
|
29
29
|
|
|
30
30
|
|
|
31
|
+
def retry_on_limit(response: requests.Response, exception: BaseException) -> bool:
|
|
32
|
+
return response.status_code == 429
|
|
33
|
+
|
|
34
|
+
|
|
31
35
|
class AdjustAPI:
|
|
32
36
|
def __init__(self, api_key):
|
|
33
37
|
self.api_key = api_key
|
|
34
|
-
self.
|
|
38
|
+
self.request_client = Client(
|
|
39
|
+
request_timeout=8.0,
|
|
40
|
+
raise_for_status=False,
|
|
41
|
+
retry_condition=retry_on_limit,
|
|
42
|
+
request_max_attempts=12,
|
|
43
|
+
request_backoff_factor=2,
|
|
44
|
+
).session
|
|
35
45
|
|
|
36
46
|
def fetch_report_data(
|
|
37
47
|
self,
|
|
@@ -62,20 +72,11 @@ class AdjustAPI:
|
|
|
62
72
|
f"Invalid date range: Start date ({start_date}) must be earlier than end date ({end_date})."
|
|
63
73
|
)
|
|
64
74
|
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
request_client = Client(
|
|
71
|
-
request_timeout=8.0,
|
|
72
|
-
raise_for_status=False,
|
|
73
|
-
retry_condition=retry_on_limit,
|
|
74
|
-
request_max_attempts=12,
|
|
75
|
-
request_backoff_factor=2,
|
|
76
|
-
).session
|
|
77
|
-
|
|
78
|
-
response = request_client.get(self.uri, headers=headers, params=params)
|
|
75
|
+
response = self.request_client.get(
|
|
76
|
+
"https://automate.adjust.com/reports-service/report",
|
|
77
|
+
headers=headers,
|
|
78
|
+
params=params,
|
|
79
|
+
)
|
|
79
80
|
if response.status_code == 200:
|
|
80
81
|
result = response.json()
|
|
81
82
|
items = result.get("rows", [])
|
|
@@ -83,6 +84,17 @@ class AdjustAPI:
|
|
|
83
84
|
else:
|
|
84
85
|
raise HTTPError(f"Request failed with status code: {response.status_code}")
|
|
85
86
|
|
|
87
|
+
def fetch_events(self):
|
|
88
|
+
headers = {"Authorization": f"Bearer {self.api_key}"}
|
|
89
|
+
response = self.request_client.get(
|
|
90
|
+
"https://automate.adjust.com/reports-service/events", headers=headers
|
|
91
|
+
)
|
|
92
|
+
if response.status_code == 200:
|
|
93
|
+
result = response.json()
|
|
94
|
+
yield result
|
|
95
|
+
else:
|
|
96
|
+
raise HTTPError(f"Request failed with status code: {response.status_code}")
|
|
97
|
+
|
|
86
98
|
|
|
87
99
|
def parse_filters(filters_raw: str) -> dict:
|
|
88
100
|
# Parse filter string like "key1=value1,key2=value2,value3,value4"
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "0.12.8"
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
__version__ = "0.12.7"
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|