ingestr 0.13.85__tar.gz → 0.13.87__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.13.85 → ingestr-0.13.87}/PKG-INFO +1 -1
- {ingestr-0.13.85 → ingestr-0.13.87}/docs/.vitepress/config.mjs +2 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/docs/supported-sources/appstore.md +12 -4
- {ingestr-0.13.85 → ingestr-0.13.87}/docs/supported-sources/chess.md +5 -4
- ingestr-0.13.87/docs/supported-sources/clickup.md +45 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/docs/supported-sources/facebook-ads.md +9 -108
- ingestr-0.13.87/docs/supported-sources/fluxx.md +116 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/docs/supported-sources/frankfurter.md +7 -3
- {ingestr-0.13.85 → ingestr-0.13.87}/docs/supported-sources/freshdesk.md +9 -8
- {ingestr-0.13.85 → ingestr-0.13.87}/docs/supported-sources/google_analytics.md +8 -1
- ingestr-0.13.87/docs/supported-sources/gorgias.md +42 -0
- ingestr-0.13.87/docs/supported-sources/hubspot.md +52 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/docs/supported-sources/isoc-pulse.md +18 -15
- ingestr-0.13.87/docs/supported-sources/klaviyo.md +57 -0
- ingestr-0.13.87/docs/supported-sources/linear.md +57 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/docs/supported-sources/linkedin_ads.md +6 -3
- {ingestr-0.13.85 → ingestr-0.13.87}/docs/supported-sources/mixpanel.md +4 -2
- ingestr-0.13.87/docs/supported-sources/personio.md +58 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/docs/supported-sources/phantombuster.md +6 -2
- ingestr-0.13.87/docs/supported-sources/pinterest.md +30 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/docs/supported-sources/pipedrive.md +8 -6
- {ingestr-0.13.85 → ingestr-0.13.87}/docs/supported-sources/quickbooks.md +7 -5
- ingestr-0.13.87/docs/supported-sources/revenuecat.md +62 -0
- ingestr-0.13.87/docs/supported-sources/shopify.md +45 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/docs/supported-sources/slack.md +8 -4
- {ingestr-0.13.85 → ingestr-0.13.87}/docs/supported-sources/solidgate.md +7 -4
- {ingestr-0.13.85 → ingestr-0.13.87}/docs/supported-sources/tiktok-ads.md +5 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/docs/supported-sources/trustpilot.md +4 -3
- ingestr-0.13.87/docs/supported-sources/zendesk.md +87 -0
- ingestr-0.13.87/docs/supported-sources/zoom.md +39 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/ingestr/src/appstore/__init__.py +1 -0
- ingestr-0.13.87/ingestr/src/buildinfo.py +1 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/ingestr/src/chess/__init__.py +1 -1
- {ingestr-0.13.85 → ingestr-0.13.87}/ingestr/src/factory.py +4 -0
- ingestr-0.13.87/ingestr/src/fluxx/__init__.py +5725 -0
- ingestr-0.13.87/ingestr/src/fluxx/helpers.py +216 -0
- ingestr-0.13.87/ingestr/src/frankfurter/__init__.py +161 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/ingestr/src/frankfurter/helpers.py +4 -4
- {ingestr-0.13.85 → ingestr-0.13.87}/ingestr/src/klaviyo/__init__.py +5 -5
- {ingestr-0.13.85 → ingestr-0.13.87}/ingestr/src/linear/__init__.py +10 -9
- {ingestr-0.13.85 → ingestr-0.13.87}/ingestr/src/linear/helpers.py +20 -10
- {ingestr-0.13.85 → ingestr-0.13.87}/ingestr/src/mongodb/__init__.py +1 -1
- {ingestr-0.13.85 → ingestr-0.13.87}/ingestr/src/mongodb/helpers.py +36 -15
- ingestr-0.13.87/ingestr/src/revenuecat/__init__.py +108 -0
- ingestr-0.13.87/ingestr/src/revenuecat/helpers.py +291 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/ingestr/src/shopify/__init__.py +1 -1
- {ingestr-0.13.85 → ingestr-0.13.87}/ingestr/src/sources.py +134 -13
- {ingestr-0.13.85 → ingestr-0.13.87}/ingestr/src/stripe_analytics/__init__.py +1 -18
- {ingestr-0.13.85 → ingestr-0.13.87}/pyproject.toml +3 -2
- ingestr-0.13.85/docs/supported-sources/clickup.md +0 -45
- ingestr-0.13.85/docs/supported-sources/gorgias.md +0 -53
- ingestr-0.13.85/docs/supported-sources/hubspot.md +0 -49
- ingestr-0.13.85/docs/supported-sources/klaviyo.md +0 -50
- ingestr-0.13.85/docs/supported-sources/linear.md +0 -55
- ingestr-0.13.85/docs/supported-sources/personio.md +0 -51
- ingestr-0.13.85/docs/supported-sources/pinterest.md +0 -27
- ingestr-0.13.85/docs/supported-sources/shopify.md +0 -43
- ingestr-0.13.85/docs/supported-sources/zendesk.md +0 -84
- ingestr-0.13.85/docs/supported-sources/zoom.md +0 -47
- ingestr-0.13.85/ingestr/src/buildinfo.py +0 -1
- ingestr-0.13.85/ingestr/src/frankfurter/__init__.py +0 -163
- {ingestr-0.13.85 → ingestr-0.13.87}/.dlt/config.toml +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/.dockerignore +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/.githooks/pre-commit-hook.sh +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/.github/workflows/deploy-docs.yml +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/.github/workflows/release.yml +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/.github/workflows/secrets-scan.yml +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/.github/workflows/tests.yml +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/.gitignore +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/.gitleaksignore +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/.python-version +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/.vale.ini +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/Dockerfile +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/LICENSE.md +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/Makefile +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/README.md +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/docs/.vitepress/theme/custom.css +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/docs/.vitepress/theme/index.js +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/docs/commands/example-uris.md +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/docs/commands/ingest.md +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/docs/getting-started/core-concepts.md +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/docs/getting-started/incremental-loading.md +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/docs/getting-started/quickstart.md +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/docs/getting-started/telemetry.md +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/docs/index.md +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/docs/media/applovin_max.png +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/docs/media/athena.png +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/docs/media/clickhouse_img.png +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/docs/media/clickup_ingestion.png +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/docs/media/cratedb-destination.png +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/docs/media/cratedb-source.png +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/docs/media/freshdesk_ingestion.png +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/docs/media/gcp_spanner_ingestion.png +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/docs/media/github.png +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/docs/media/google_analytics_realtime_report.png +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/docs/media/googleanalytics.png +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/docs/media/ingestion_elasticsearch_img.png +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/docs/media/kinesis.bigquery.png +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/docs/media/linear.png +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/docs/media/linkedin_ads.png +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/docs/media/mixpanel_ingestion.png +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/docs/media/personio.png +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/docs/media/personio_duckdb.png +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/docs/media/phantombuster.png +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/docs/media/pipedrive.png +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/docs/media/quickbook_ingestion.png +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/docs/media/sftp.png +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/docs/media/stripe_postgres.png +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/docs/media/tiktok.png +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/docs/media/wise_ingestion.png +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/docs/media/zoom_ingestion.png +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/docs/supported-sources/adjust.md +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/docs/supported-sources/airtable.md +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/docs/supported-sources/applovin.md +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/docs/supported-sources/applovin_max.md +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/docs/supported-sources/appsflyer.md +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/docs/supported-sources/asana.md +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/docs/supported-sources/athena.md +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/docs/supported-sources/attio.md +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/docs/supported-sources/bigquery.md +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/docs/supported-sources/clickhouse.md +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/docs/supported-sources/cratedb.md +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/docs/supported-sources/csv.md +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/docs/supported-sources/custom_queries.md +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/docs/supported-sources/databricks.md +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/docs/supported-sources/db2.md +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/docs/supported-sources/duckdb.md +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/docs/supported-sources/dynamodb.md +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/docs/supported-sources/elasticsearch.md +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/docs/supported-sources/gcs.md +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/docs/supported-sources/github.md +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/docs/supported-sources/google-ads.md +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/docs/supported-sources/gsheets.md +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/docs/supported-sources/influxdb.md +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/docs/supported-sources/kafka.md +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/docs/supported-sources/kinesis.md +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/docs/supported-sources/mongodb.md +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/docs/supported-sources/motherduck.md +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/docs/supported-sources/mssql.md +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/docs/supported-sources/mysql.md +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/docs/supported-sources/notion.md +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/docs/supported-sources/oracle.md +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/docs/supported-sources/postgres.md +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/docs/supported-sources/redshift.md +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/docs/supported-sources/s3.md +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/docs/supported-sources/salesforce.md +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/docs/supported-sources/sap-hana.md +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/docs/supported-sources/sftp.md +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/docs/supported-sources/smartsheets.md +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/docs/supported-sources/snowflake.md +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/docs/supported-sources/spanner.md +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/docs/supported-sources/sqlite.md +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/docs/supported-sources/stripe.md +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/docs/supported-sources/wise.md +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/docs/tutorials/load-kinesis-bigquery.md +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/docs/tutorials/load-personio-duckdb.md +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/docs/tutorials/load-stripe-postgres.md +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/ingestr/conftest.py +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/ingestr/main.py +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/ingestr/src/.gitignore +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/ingestr/src/adjust/__init__.py +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/ingestr/src/adjust/adjust_helpers.py +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/ingestr/src/airtable/__init__.py +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/ingestr/src/applovin/__init__.py +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/ingestr/src/applovin_max/__init__.py +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/ingestr/src/appsflyer/__init__.py +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/ingestr/src/appsflyer/client.py +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/ingestr/src/appstore/client.py +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/ingestr/src/appstore/errors.py +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/ingestr/src/appstore/models.py +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/ingestr/src/appstore/resources.py +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/ingestr/src/arrow/__init__.py +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/ingestr/src/asana_source/__init__.py +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/ingestr/src/asana_source/helpers.py +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/ingestr/src/asana_source/settings.py +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/ingestr/src/attio/__init__.py +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/ingestr/src/attio/helpers.py +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/ingestr/src/blob.py +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/ingestr/src/chess/helpers.py +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/ingestr/src/chess/settings.py +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/ingestr/src/clickup/__init__.py +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/ingestr/src/clickup/helpers.py +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/ingestr/src/collector/spinner.py +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/ingestr/src/destinations.py +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/ingestr/src/dynamodb/__init__.py +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/ingestr/src/elasticsearch/__init__.py +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/ingestr/src/errors.py +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/ingestr/src/facebook_ads/__init__.py +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/ingestr/src/facebook_ads/exceptions.py +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/ingestr/src/facebook_ads/helpers.py +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/ingestr/src/facebook_ads/settings.py +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/ingestr/src/facebook_ads/utils.py +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/ingestr/src/filesystem/__init__.py +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/ingestr/src/filesystem/helpers.py +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/ingestr/src/filesystem/readers.py +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/ingestr/src/filters.py +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/ingestr/src/freshdesk/__init__.py +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/ingestr/src/freshdesk/freshdesk_client.py +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/ingestr/src/freshdesk/settings.py +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/ingestr/src/github/__init__.py +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/ingestr/src/github/helpers.py +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/ingestr/src/github/queries.py +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/ingestr/src/github/settings.py +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/ingestr/src/google_ads/__init__.py +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/ingestr/src/google_ads/field.py +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/ingestr/src/google_ads/metrics.py +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/ingestr/src/google_ads/predicates.py +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/ingestr/src/google_ads/reports.py +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/ingestr/src/google_analytics/__init__.py +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/ingestr/src/google_analytics/helpers.py +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/ingestr/src/google_sheets/README.md +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/ingestr/src/google_sheets/__init__.py +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/ingestr/src/google_sheets/helpers/__init__.py +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/ingestr/src/google_sheets/helpers/api_calls.py +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/ingestr/src/google_sheets/helpers/data_processing.py +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/ingestr/src/gorgias/__init__.py +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/ingestr/src/gorgias/helpers.py +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/ingestr/src/http_client.py +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/ingestr/src/hubspot/__init__.py +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/ingestr/src/hubspot/helpers.py +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/ingestr/src/hubspot/settings.py +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/ingestr/src/influxdb/__init__.py +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/ingestr/src/influxdb/client.py +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/ingestr/src/isoc_pulse/__init__.py +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/ingestr/src/kafka/__init__.py +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/ingestr/src/kafka/helpers.py +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/ingestr/src/kinesis/__init__.py +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/ingestr/src/kinesis/helpers.py +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/ingestr/src/klaviyo/client.py +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/ingestr/src/klaviyo/helpers.py +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/ingestr/src/linkedin_ads/__init__.py +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/ingestr/src/linkedin_ads/dimension_time_enum.py +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/ingestr/src/linkedin_ads/helpers.py +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/ingestr/src/loader.py +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/ingestr/src/mixpanel/__init__.py +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/ingestr/src/mixpanel/client.py +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/ingestr/src/notion/__init__.py +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/ingestr/src/notion/helpers/__init__.py +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/ingestr/src/notion/helpers/client.py +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/ingestr/src/notion/helpers/database.py +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/ingestr/src/notion/settings.py +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/ingestr/src/partition.py +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/ingestr/src/personio/__init__.py +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/ingestr/src/personio/helpers.py +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/ingestr/src/phantombuster/__init__.py +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/ingestr/src/phantombuster/client.py +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/ingestr/src/pinterest/__init__.py +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/ingestr/src/pipedrive/__init__.py +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/ingestr/src/pipedrive/helpers/__init__.py +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/ingestr/src/pipedrive/helpers/custom_fields_munger.py +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/ingestr/src/pipedrive/helpers/pages.py +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/ingestr/src/pipedrive/settings.py +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/ingestr/src/pipedrive/typing.py +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/ingestr/src/quickbooks/__init__.py +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/ingestr/src/resource.py +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/ingestr/src/salesforce/__init__.py +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/ingestr/src/salesforce/helpers.py +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/ingestr/src/shopify/exceptions.py +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/ingestr/src/shopify/helpers.py +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/ingestr/src/shopify/settings.py +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/ingestr/src/slack/__init__.py +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/ingestr/src/slack/helpers.py +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/ingestr/src/slack/settings.py +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/ingestr/src/smartsheets/__init__.py +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/ingestr/src/solidgate/__init__.py +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/ingestr/src/solidgate/helpers.py +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/ingestr/src/sql_database/__init__.py +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/ingestr/src/sql_database/callbacks.py +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/ingestr/src/stripe_analytics/helpers.py +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/ingestr/src/stripe_analytics/settings.py +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/ingestr/src/table_definition.py +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/ingestr/src/telemetry/event.py +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/ingestr/src/testdata/fakebqcredentials.json +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/ingestr/src/tiktok_ads/__init__.py +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/ingestr/src/tiktok_ads/tiktok_helpers.py +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/ingestr/src/time.py +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/ingestr/src/trustpilot/__init__.py +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/ingestr/src/trustpilot/client.py +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/ingestr/src/version.py +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/ingestr/src/wise/__init__.py +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/ingestr/src/wise/client.py +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/ingestr/src/zendesk/__init__.py +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/ingestr/src/zendesk/helpers/__init__.py +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/ingestr/src/zendesk/helpers/api_helpers.py +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/ingestr/src/zendesk/helpers/credentials.py +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/ingestr/src/zendesk/helpers/talk_api.py +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/ingestr/src/zendesk/settings.py +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/ingestr/src/zoom/__init__.py +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/ingestr/src/zoom/helpers.py +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/ingestr/testdata/.gitignore +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/ingestr/testdata/create_replace.csv +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/ingestr/testdata/delete_insert_expected.csv +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/ingestr/testdata/delete_insert_part1.csv +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/ingestr/testdata/delete_insert_part2.csv +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/ingestr/testdata/merge_expected.csv +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/ingestr/testdata/merge_part1.csv +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/ingestr/testdata/merge_part2.csv +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/ingestr/tests/unit/test_smartsheets.py +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/package-lock.json +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/package.json +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/requirements-dev.txt +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/requirements.in +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/requirements.txt +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/requirements_arm64.txt +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/resources/demo.gif +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/resources/demo.tape +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/resources/ingestr.svg +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/styles/Google/AMPM.yml +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/styles/Google/Acronyms.yml +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/styles/Google/Colons.yml +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/styles/Google/Contractions.yml +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/styles/Google/DateFormat.yml +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/styles/Google/Ellipses.yml +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/styles/Google/EmDash.yml +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/styles/Google/Exclamation.yml +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/styles/Google/FirstPerson.yml +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/styles/Google/Gender.yml +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/styles/Google/GenderBias.yml +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/styles/Google/HeadingPunctuation.yml +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/styles/Google/Headings.yml +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/styles/Google/Latin.yml +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/styles/Google/LyHyphens.yml +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/styles/Google/OptionalPlurals.yml +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/styles/Google/Ordinal.yml +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/styles/Google/OxfordComma.yml +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/styles/Google/Parens.yml +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/styles/Google/Passive.yml +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/styles/Google/Periods.yml +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/styles/Google/Quotes.yml +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/styles/Google/Ranges.yml +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/styles/Google/Semicolons.yml +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/styles/Google/Slang.yml +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/styles/Google/Spacing.yml +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/styles/Google/Spelling.yml +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/styles/Google/Units.yml +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/styles/Google/We.yml +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/styles/Google/Will.yml +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/styles/Google/WordList.yml +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/styles/Google/meta.json +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/styles/Google/vocab.txt +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/styles/bruin/Ingestr.yml +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/styles/config/vocabularies/bruin/accept.txt +0 -0
- {ingestr-0.13.85 → ingestr-0.13.87}/test.env.template +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: ingestr
|
|
3
|
-
Version: 0.13.
|
|
3
|
+
Version: 0.13.87
|
|
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
|
|
@@ -125,6 +125,7 @@ export default defineConfig({
|
|
|
125
125
|
text: "Facebook Ads",
|
|
126
126
|
link: "/supported-sources/facebook-ads.md",
|
|
127
127
|
},
|
|
128
|
+
{ text: "Fluxx", link: "/supported-sources/fluxx.md" },
|
|
128
129
|
{ text: "Frankfurter", link: "/supported-sources/frankfurter.md" },
|
|
129
130
|
{ text: "Freshdesk", link: "/supported-sources/freshdesk.md" },
|
|
130
131
|
{ text: "Trustpilot", link: "/supported-sources/trustpilot.md" },
|
|
@@ -146,6 +147,7 @@ export default defineConfig({
|
|
|
146
147
|
{ text: "Pinterest", link: "/supported-sources/pinterest.md" },
|
|
147
148
|
{ text: "Pipedrive", link: "/supported-sources/pipedrive.md" },
|
|
148
149
|
{ text: "QuickBooks", link: "/supported-sources/quickbooks.md" },
|
|
150
|
+
{ text: "RevenueCat", link: "/supported-sources/revenuecat.md" },
|
|
149
151
|
{ text: "S3", link: "/supported-sources/s3.md" },
|
|
150
152
|
{ text: "Salesforce", link: "/supported-sources/salesforce.md" },
|
|
151
153
|
{ text: "SFTP", link: "/supported-sources/sftp.md"},
|
|
@@ -69,7 +69,7 @@ We will run `ingestr` to save this data to a [duckdb](https://duckdb.org/) datab
|
|
|
69
69
|
|
|
70
70
|
```sh
|
|
71
71
|
ingestr ingest \
|
|
72
|
-
--source-uri "appstore://app_id=12345&key_path=api.key&key_id=key_0&issuer_id=issue_0 \
|
|
72
|
+
--source-uri "appstore://app_id=12345&key_path=api.key&key_id=key_0&issuer_id=issue_0" \
|
|
73
73
|
--source-table "app-downloads-detailed" \
|
|
74
74
|
--dest-uri "duckdb:///analytics.db" \
|
|
75
75
|
--dest-table "public.app_downloads" \
|
|
@@ -80,7 +80,7 @@ ingestr ingest \
|
|
|
80
80
|
We will extend the prior example with another app with ID `67890`. To achieve this, simply add another `app_id` query parameter to the URI.
|
|
81
81
|
```sh
|
|
82
82
|
ingestr ingest \
|
|
83
|
-
--source-uri "appstore://app_id=12345&app_id=67890&key_path=api.key&key_id=key_0&issuer_id=issue_0 \
|
|
83
|
+
--source-uri "appstore://app_id=12345&app_id=67890&key_path=api.key&key_id=key_0&issuer_id=issue_0" \
|
|
84
84
|
--source-table "app-downloads-detailed" \
|
|
85
85
|
--dest-uri "duckdb:///analytics.db" \
|
|
86
86
|
--dest-table "public.app_downloads" \
|
|
@@ -94,7 +94,7 @@ ingestr ingest \
|
|
|
94
94
|
To begin, we will first load all data till `2025-01-01` by specifying the `--interval-end` flag. We'll assume the same credentials from our [first example](#example-loading-app-downloads-analytics)
|
|
95
95
|
```sh
|
|
96
96
|
ingestr ingest \
|
|
97
|
-
--source-uri "appstore://app_id=12345&key_path=api.key&key_id=key_0&issuer_id=issue_0 \
|
|
97
|
+
--source-uri "appstore://app_id=12345&key_path=api.key&key_id=key_0&issuer_id=issue_0" \
|
|
98
98
|
--source-table "app-downloads-detailed" \
|
|
99
99
|
--dest-uri "duckdb:///analytics.db" \
|
|
100
100
|
--dest-table "public.app_downloads" \
|
|
@@ -105,7 +105,7 @@ ingestr ingest \
|
|
|
105
105
|
|
|
106
106
|
```sh
|
|
107
107
|
ingestr ingest \
|
|
108
|
-
--source-uri "appstore://app_id=12345&key_path=api.key&key_id=key_0&issuer_id=issue_0 \
|
|
108
|
+
--source-uri "appstore://app_id=12345&key_path=api.key&key_id=key_0&issuer_id=issue_0" \
|
|
109
109
|
--source-table "app-downloads-detailed" \
|
|
110
110
|
--dest-uri "duckdb:///analytics.db" \
|
|
111
111
|
--dest-table "public.app_downloads" \
|
|
@@ -115,6 +115,14 @@ ingestr ingest \
|
|
|
115
115
|
Notice how we didn't specify a date parameter? `ingestr` will automatically use the metadata from last load and continue loading data from that point on.
|
|
116
116
|
|
|
117
117
|
## Tables
|
|
118
|
+
| Table | PK | Inc Key | Inc Strategy | Details |
|
|
119
|
+
|-------|----|---------|--------------|---------|
|
|
120
|
+
| `app-downloads-detailed` | [App Apple Identifier,App Name, App Version,Campaign,Date,Device,Download Type,Page Title,Page Type,Platform Version,Pre-Order,Source Info,Source Type,Territory] | processing_date | merge | App download analytics including first-time downloads, redownloads, updates, and more. |
|
|
121
|
+
| `app-store-discovery-and-engagement-detailed` | primary_key = [App Apple Identifier,App Name,Campaign,Date,Device,Engagement Type,Event,Page Title,Page Type,Platform Version,Source Info,Source Type,Territory] | processing_date | merge | App Store discovery and engagement metrics including data about user engagement with your app’s icons, product pages, in-app event pages, and other install sheets. |
|
|
122
|
+
|`app-sessions-detailed` | primary_key=[Date,App Name,App Apple Identifier,App Version,Device,Platform Version,Source Type,Source Info,Campaign,Page Type,Page Title,App Download Date,Territory] | processing_date | merge | App Session provides insights on how often people open your app, and how long they spend in your app. |
|
|
123
|
+
| app-store-installation-and-deletion-detailed | [App Apple Identifier,App Download Date,App Name,App Version,Campaign,Counts,Date,Device,Download Type,Event,Page Title,Page Type,Platform Version,Source Info,Source Type,Territory,Unique Devices] | processing_date | merge | App installation and deletion metrics including device to estimate the number of times people install and delete your App Store apps. |
|
|
124
|
+
| `app-store-purchases-detailed`| [App Apple Identifier,App Download Date,App Name,Campaign,Content Apple Identifier,Content Name,Date,Device,Page Title,Page Type,Payment Method,Platform Version,Pre-Order,Purchase Type,Source Info,Source Type,Territory] | processing_date | merge | App purchase analytics including revenue, payment methods, and content details. |
|
|
125
|
+
| `app-crashes-expanded`| [App Name,App Version,Build,Date,Device,Platform,Release Type,Territory] |processing_date | merge | App crash analytics including crash counts, device information, and version details. |
|
|
118
126
|
|
|
119
127
|
### `app-downloads-detailed`
|
|
120
128
|
The App Downloads Report includes download data generated on the App Store. You can use this report to understand your total number of downloads, including first-time downloads, redownloads, updates, and more.
|
|
@@ -29,9 +29,10 @@ The result of this command will be a table in the `chess.duckdb` database.
|
|
|
29
29
|
## Tables
|
|
30
30
|
|
|
31
31
|
Chess source allows ingesting the following sources into separate tables:
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
32
|
+
| Table | PK | Inc Key | Inc Strategy | Details |
|
|
33
|
+
| --------------- | ----------- | --------------- | ------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
34
|
+
| `profiles` | - | – | replace | Retrieves player profiles based on a list of player usernames. |
|
|
35
|
+
| `games` | - | – | replace | Retrieves players games for specified players.
|
|
36
|
+
| `archives` | - | – | replace | Retrieves the URLs to game archives for specified players. |
|
|
36
37
|
|
|
37
38
|
Use these as `--source-table` parameter in the `ingestr ingest` command.
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
# ClickUp
|
|
2
|
+
[ClickUp](https://clickup.com/) is a cloud-based productivity platform designed to help teams and individuals manage tasks, projects, and workflows in one place.
|
|
3
|
+
|
|
4
|
+
ingestr supports ClickUp as a source.
|
|
5
|
+
|
|
6
|
+
## URI format
|
|
7
|
+
|
|
8
|
+
```
|
|
9
|
+
clickup://?api_token=<token>
|
|
10
|
+
```
|
|
11
|
+
|
|
12
|
+
URI parameters:
|
|
13
|
+
- `api_token` is a personal token used to authenticate with the ClickUp API.
|
|
14
|
+
|
|
15
|
+
ClickUp requires a `api_token` to connect to the ClickUP API. For more information, read [here](https://developer.clickup.com/docs/authentication#generate-your-personal-api-token) to get credentail.
|
|
16
|
+
|
|
17
|
+
Once you've completed the guide, you should have `api_token`. Let's say your API Token is `token_123`, here's a sample command that will copy the data from Clickup into a DuckDB database:
|
|
18
|
+
|
|
19
|
+
To ingest tasks from ClickUp into a DuckDB database:
|
|
20
|
+
|
|
21
|
+
```sh
|
|
22
|
+
ingestr ingest \
|
|
23
|
+
--source-uri "clickup://?api_token=token_123" \
|
|
24
|
+
--source-table "tasks" \
|
|
25
|
+
--dest-uri duckdb:///clickup.duckdb \
|
|
26
|
+
--dest-table "public.tasks"
|
|
27
|
+
```
|
|
28
|
+
<img alt="clickup_img" src="../media/clickup_ingestion.png"/>
|
|
29
|
+
|
|
30
|
+
## Tables
|
|
31
|
+
|
|
32
|
+
ClickUp source allows ingesting the following resources into separate tables:
|
|
33
|
+
|
|
34
|
+
| Table | PK | Inc Key | Inc Strategy | Details |
|
|
35
|
+
| --------------- | ----------- | --------------- | ------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
36
|
+
| [user](https://developer.clickup.com/reference/getauthorizeduser) | id | - | merge | The authorised user profile |
|
|
37
|
+
| [teams](https://developer.clickup.com/reference/getauthorizedteams) | id | – | merge | Workspaces available to the authenticated user. In ClickUp, a "team" in the API is equivalent to a workspace, which is the highest-level container for all spaces, folders, lists, and tasks |
|
|
38
|
+
| [spaces](https://developer.clickup.com/reference/getspaces) | id | - | merge | Spaces available within a workspace. Spaces are major sections used to organize work, such as departments, projects, or business units. Each space can contain folders, lists, and tasks |
|
|
39
|
+
| [lists](https://developer.clickup.com/reference/getlists) | id | – | merge | Lists contained in each space. Lists are collections of tasks, often representing projects, sprints, or workflow stages |
|
|
40
|
+
| [tasks](https://developer.clickup.com/reference/gettasks) | id | date_updated | merge | Tasks belonging to each list |
|
|
41
|
+
|
|
42
|
+
Use these as `--source-table` parameter in the `ingestr ingest` command.
|
|
43
|
+
|
|
44
|
+
> [!WARNING]
|
|
45
|
+
> ClickUp does not support incremental loading for many endpoints, which means ingestr will load endpoints incrementally if they support it, and do a full-refresh if not.
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
Facebook Ads is the advertising platform that helps users to create targeted ads on Facebook, Instagram and Messenger.
|
|
4
4
|
|
|
5
|
-
ingestr supports Facebook Ads as a source.
|
|
5
|
+
ingestr supports Facebook Ads as a source using [Facebook Marketing API](https://developers.facebook.com/docs/marketing-api/).
|
|
6
6
|
|
|
7
7
|
## URI format
|
|
8
8
|
|
|
@@ -41,113 +41,14 @@ The result of this command will be a table in the `facebook.duckdb` database.
|
|
|
41
41
|
|
|
42
42
|
Facebook Ads source allows ingesting the following sources into separate tables:
|
|
43
43
|
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
- `start_time`
|
|
53
|
-
- `stop_time`
|
|
54
|
-
- `daily_budget`
|
|
55
|
-
- `lifetime_budget`
|
|
56
|
-
|
|
57
|
-
- `ad_sets`: Retrieves ad set data with fields:
|
|
58
|
-
- `id`
|
|
59
|
-
- `updated_time`
|
|
60
|
-
- `created_time`
|
|
61
|
-
- `name`
|
|
62
|
-
- `status`
|
|
63
|
-
- `effective_status`
|
|
64
|
-
- `campaign_id`
|
|
65
|
-
- `start_time`
|
|
66
|
-
- `end_time`
|
|
67
|
-
- `daily_budget`
|
|
68
|
-
- `lifetime_budget`
|
|
69
|
-
- `optimization_goal`
|
|
70
|
-
- `promoted_object`
|
|
71
|
-
- `billing_event`
|
|
72
|
-
- `bid_amount`
|
|
73
|
-
- `bid_strategy`
|
|
74
|
-
- `targeting`
|
|
75
|
-
|
|
76
|
-
- `leads`: Retrieves lead data with fields:
|
|
77
|
-
- `id`
|
|
78
|
-
- `created_time`
|
|
79
|
-
- `ad_id`
|
|
80
|
-
- `ad_name`
|
|
81
|
-
- `adset_id`
|
|
82
|
-
- `adset_name`
|
|
83
|
-
- `campaign_id`
|
|
84
|
-
- `campaign_name`
|
|
85
|
-
- `form_id`
|
|
86
|
-
- `field_data`
|
|
87
|
-
|
|
88
|
-
- `ads_creatives`: Retrieves ad creative data with fields:
|
|
89
|
-
- `id`
|
|
90
|
-
- `name`
|
|
91
|
-
- `status`
|
|
92
|
-
- `thumbnail_url`
|
|
93
|
-
- `object_story_spec`
|
|
94
|
-
- `effective_object_story_id`
|
|
95
|
-
- `call_to_action_type`
|
|
96
|
-
- `object_type`
|
|
97
|
-
- `template_url`
|
|
98
|
-
- `url_tags`
|
|
99
|
-
- `instagram_actor_id`
|
|
100
|
-
- `product_set_id`
|
|
101
|
-
|
|
102
|
-
- `ads`: Retrieves ad data with fields:
|
|
103
|
-
- `id`
|
|
104
|
-
- `updated_time`
|
|
105
|
-
- `created_time`
|
|
106
|
-
- `name`
|
|
107
|
-
- `status`
|
|
108
|
-
- `effective_status`
|
|
109
|
-
- `adset_id`
|
|
110
|
-
- `campaign_id`
|
|
111
|
-
- `creative`
|
|
112
|
-
- `targeting`
|
|
113
|
-
- `tracking_specs`
|
|
114
|
-
- `conversion_specs`
|
|
115
|
-
|
|
116
|
-
- `facebook_insights`: Retrieves insights data with fields:
|
|
117
|
-
- `campaign_id`
|
|
118
|
-
- `adset_id`
|
|
119
|
-
- `ad_id`
|
|
120
|
-
- `date_start`
|
|
121
|
-
- `date_stop`
|
|
122
|
-
- `reach`
|
|
123
|
-
- `impressions`
|
|
124
|
-
- `frequency`
|
|
125
|
-
- `clicks`
|
|
126
|
-
- `unique_clicks`
|
|
127
|
-
- `ctr`
|
|
128
|
-
- `unique_ctr`
|
|
129
|
-
- `cpc`
|
|
130
|
-
- `cpm`
|
|
131
|
-
- `cpp`
|
|
132
|
-
- `spend`
|
|
133
|
-
- `actions`
|
|
134
|
-
- `action_values`
|
|
135
|
-
- `cost_per_action_type`
|
|
136
|
-
- `website_ctr`
|
|
137
|
-
- `account_currency`
|
|
138
|
-
- `ad_click_actions`
|
|
139
|
-
- `ad_name`
|
|
140
|
-
- `adset_name`
|
|
141
|
-
- `campaign_name`
|
|
142
|
-
- `country`
|
|
143
|
-
- `dma`
|
|
144
|
-
- `full_view_impressions`
|
|
145
|
-
- `full_view_reach`
|
|
146
|
-
- `inline_link_click_ctr`
|
|
147
|
-
- `outbound_clicks`
|
|
148
|
-
- `social_spend`
|
|
149
|
-
- `conversions`
|
|
150
|
-
- `video_thruplay_watched_actions`
|
|
44
|
+
| Table | PK | Inc Key | Inc Strategy | Details |
|
|
45
|
+
| --------------- | ----------- | --------------- | ------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
46
|
+
| `campaigns` | id | – | replace | Retrieves campaign data with `fields`: id, updated_time, created_time, name, status, effective_status, objective, start_time, stop_time, daily_budget, lifetime_budget |
|
|
47
|
+
| `ad_sets` | id | – | replace | Retrieves ad set data with `fields`: id, updated_time, created_time, name, status, effective_status, campaign_id, start_time, end_time, daily_budget, lifetime_budget, optimization_goal, promoted_object, billing_event, bid_amount, bid_strategy, targeting |
|
|
48
|
+
| `ads` | id | - | replace | Retrieves ad data with `fields`: id, updated_time, created_time, name, status, effective_status, adset_id, campaign_id, creative, targeting, tracking_specs, conversion_specs |
|
|
49
|
+
| `ad_creatives` | id | - | replace | Retrieves ad creative data with `fields`: id, name, status, thumbnail_url, object_story_spec, effective_object_story_id, call_to_action_type, object_type, template_url, url_tags, instagram_actor_id, product_set_id |
|
|
50
|
+
| `leads` | id | - | replace | Retrieves lead data with fields: id, created_time, ad_id, ad_name, adset_id, adset_name, campaign_id, campaign_name, form_id, field_data |
|
|
51
|
+
| `facebook_insights` | date_start | date_start | merge | Retrieves insights data with `fields`: campaign_id, adset_id, ad_id, date_start, date_stop, reach, impressions, frequency, clicks, unique_clicks, ctr, unique_ctr, cpc, cpm, cpp, spend, actions, action_values, cost_per_action_type, website_ctr, account_currency, ad_click_actions, ad_name, adset_name, campaign_name, country, dma, full_view_impressions, full_view_reach, inline_link_click_ctr, outbound_clicks, social_spend, conversions, video_thruplay_watched_actions. |
|
|
151
52
|
|
|
152
53
|
Use these as `--source-table` parameter in the `ingestr ingest` command.
|
|
153
54
|
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
# Fluxx
|
|
2
|
+
|
|
3
|
+
[Fluxx](https://www.fluxx.io/) is a cloud-based grants management platform designed to streamline and automate the entire grantmaking process for foundations, corporations, governments, and other funding organizations.
|
|
4
|
+
|
|
5
|
+
ingestr supports Fluxx as a source.
|
|
6
|
+
|
|
7
|
+
## URI format
|
|
8
|
+
|
|
9
|
+
The URI format for Fluxx is:
|
|
10
|
+
|
|
11
|
+
```plaintext
|
|
12
|
+
fluxx://<instance>?client_id=<client_id>&client_secret=<client_secret>
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
URI parameters:
|
|
16
|
+
|
|
17
|
+
- `instance`: Your Fluxx instance subdomain (e.g., `mycompany.preprod` for `https://mycompany.preprod.fluxxlabs.com`)
|
|
18
|
+
- `client_id`: OAuth 2.0 client ID for authentication
|
|
19
|
+
- `client_secret`: OAuth 2.0 client secret for authentication
|
|
20
|
+
|
|
21
|
+
## Example usage
|
|
22
|
+
|
|
23
|
+
### Basic usage - all fields
|
|
24
|
+
|
|
25
|
+
Assuming your instance is `myorg.preprod`, you can ingest grant requests into DuckDB using:
|
|
26
|
+
|
|
27
|
+
```bash
|
|
28
|
+
ingestr ingest \
|
|
29
|
+
--source-uri 'fluxx://myorg.preprod?client_id=your_client_id&client_secret=your_client_secret' \
|
|
30
|
+
--source-table 'grant_request' \
|
|
31
|
+
--dest-uri duckdb:///fluxx.duckdb \
|
|
32
|
+
--dest-table 'raw.grant_request'
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
### Custom field selection
|
|
36
|
+
|
|
37
|
+
You can select specific fields to ingest using the colon syntax:
|
|
38
|
+
|
|
39
|
+
```bash
|
|
40
|
+
ingestr ingest \
|
|
41
|
+
--source-uri 'fluxx://myorg.preprod?client_id=your_client_id&client_secret=your_client_secret' \
|
|
42
|
+
--source-table 'grant_request:id,amount_requested,amount_recommended,granted' \
|
|
43
|
+
--dest-uri duckdb:///fluxx.duckdb \
|
|
44
|
+
--dest-table 'raw.grant_request'
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
## Tables
|
|
48
|
+
|
|
49
|
+
Fluxx source currently supports the following 50 tables:
|
|
50
|
+
|
|
51
|
+
### Core Resources
|
|
52
|
+
- `claim_expense_datum`: Individual data entries within claim expense forms with budget category details
|
|
53
|
+
- `claim_expense_row`: Specific line items or rows within claim expense forms
|
|
54
|
+
- `claim_expense`: Claim expense forms and templates for financial tracking
|
|
55
|
+
- `claim`: Grant claims and payment requests
|
|
56
|
+
- `concept_initiative`: Concept initiatives linking programs, initiatives, and sub-programs/sub-initiatives
|
|
57
|
+
- `dashboard_theme`: Dashboard theme configurations for UI customization
|
|
58
|
+
- `etl_claim_expense_datum`: ETL data for claim expense items with comprehensive budget tracking details
|
|
59
|
+
- `etl_grantee_budget_tracker_actual`: ETL data for actual grantee budget tracker amounts and expenses
|
|
60
|
+
- `etl_grantee_budget_tracker_period_datum`: ETL data for grantee budget tracker period information with detailed financial tracking
|
|
61
|
+
- `etl_relationship`: ETL data for entity relationships tracking connections between users, organizations, requests, and other entities
|
|
62
|
+
- `etl_request_budget`: ETL budget data for request funding sources with comprehensive financial details
|
|
63
|
+
- `etl_request_transaction_budget`: ETL budget data for request transaction funding sources including payment tracking
|
|
64
|
+
- `exempt_organization`: Tax-exempt organization data including EIN, classification, and financial information
|
|
65
|
+
- `geo_city`: City geographic data with coordinates and postal codes
|
|
66
|
+
- `geo_county`: County geographic data with FIPS codes
|
|
67
|
+
- `geo_place`: Geographic places with ancestry and location data
|
|
68
|
+
- `geo_region`: Geographic regions
|
|
69
|
+
- `geo_state`: State geographic data with abbreviations and FIPS codes
|
|
70
|
+
- `grant_request`: Grant applications and requests (300+ fields)
|
|
71
|
+
- `grantee_budget_category`: Budget category definitions used by grantees for expense tracking
|
|
72
|
+
- `grantee_budget_tracker_period_datum_actual`: Actual expenses and amounts recorded for budget tracking periods
|
|
73
|
+
- `grantee_budget_tracker_period_datum`: Budget data entries for specific tracking periods
|
|
74
|
+
- `grantee_budget_tracker_period`: Time periods for budget tracking with start and end dates
|
|
75
|
+
- `grantee_budget_tracker_row`: Individual budget line items and categories within budget trackers
|
|
76
|
+
- `grantee_budget_tracker`: Budget tracking documents for grantee financial management
|
|
77
|
+
- `integration_log`: Integration and system logs for tracking data processing and errors
|
|
78
|
+
- `mac_model_type_dyn_financial_audit`: Dynamic financial audit models with audit tracking, compliance status, and financial variance analysis
|
|
79
|
+
- `mac_model_type_dyn_mel`: Dynamic Monitoring, Evaluation & Learning (MEL) models with performance indicators, baseline tracking, and evaluation metrics
|
|
80
|
+
- `mac_model_type_dyn_tool`: Dynamic tool management models for tracking deployment status, usage metrics, and tool effectiveness
|
|
81
|
+
- `machine_category`: Machine category definitions for workflow state management
|
|
82
|
+
- `model_attribute_value`: Model attribute values with hierarchical data and dependencies
|
|
83
|
+
- `model_document_sub_type`: Document sub-type definitions and categories
|
|
84
|
+
- `model_document_type`: Document type configurations including DocuSign integration and permissions
|
|
85
|
+
- `model_document`: Document metadata including file information, storage details, and document relationships
|
|
86
|
+
- `model_theme`: Model themes for categorization and program hierarchy organization
|
|
87
|
+
- `organization`: Organizations (grantees, fiscal sponsors, etc.)
|
|
88
|
+
- `population_estimate_year`: Yearly population estimates with income and demographic breakdowns
|
|
89
|
+
- `population_estimate`: Population estimates by geographic area with demographic data
|
|
90
|
+
- `program`: Funding programs and initiatives
|
|
91
|
+
- `request_report`: Reports submitted for grants
|
|
92
|
+
- `request_transaction_funding_source`: Funding source details for specific request transactions
|
|
93
|
+
- `request_transaction`: Financial transactions and payments
|
|
94
|
+
- `request_user`: Relationships between requests and users with roles and descriptions
|
|
95
|
+
- `salesforce_authentication`: Salesforce authentication configurations with OAuth tokens, connection management, and API usage tracking
|
|
96
|
+
- `sub_initiative`: Sub-initiatives for detailed planning
|
|
97
|
+
- `sub_program`: Sub-programs under main programs
|
|
98
|
+
- `ui_version`: User interface version information and system configuration
|
|
99
|
+
- `user_organization`: Relationships between users and organizations with roles, departments, and contact details
|
|
100
|
+
- `user`: User accounts and profiles
|
|
101
|
+
|
|
102
|
+
### Field Selection
|
|
103
|
+
|
|
104
|
+
Each resource contains numerous fields. You can:
|
|
105
|
+
1. **Ingest all fields**: Use the resource name directly (e.g., `grant_request`)
|
|
106
|
+
2. **Select specific fields**: Use colon syntax (e.g., `grant_request:id,name,amount_requested`)
|
|
107
|
+
|
|
108
|
+
The field selection feature is particularly useful for large resources like `grant_request` which has over 300 fields.
|
|
109
|
+
|
|
110
|
+
## Authentication
|
|
111
|
+
|
|
112
|
+
Fluxx uses OAuth 2.0 with client credentials flow. To obtain credentials:
|
|
113
|
+
|
|
114
|
+
1. Contact your Fluxx administrator to create an API client
|
|
115
|
+
2. You'll receive a `client_id` and `client_secret`
|
|
116
|
+
3. Note your Fluxx instance subdomain (the part before `.fluxxlabs.com`)
|
|
@@ -34,9 +34,13 @@ The result of this command will be a list of currency exchange rates from 20.03.
|
|
|
34
34
|
|
|
35
35
|
## Tables
|
|
36
36
|
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
37
|
+
Frankfurter source allows ingesting the following sources into separate tables:
|
|
38
|
+
|
|
39
|
+
| Table | PK | Inc Key | Inc Strategy | Details |
|
|
40
|
+
| --------------- | ----------- | --------------- | ------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
41
|
+
| [currencies](https://www.frankfurter.dev/docs/#currencies) | - | – | replace | Retrieves list of available currencies with ISO 4217 codes and names. |
|
|
42
|
+
| [latest](https://www.frankfurter.dev/docs/#latest) | ["date", "currency_code", "base_currency"] | – | merge | Fetches latest exchange rates for all currencies. |
|
|
43
|
+
| [exchange_rates](https://www.frankfurter.dev/docs/#historical) | ["date", "currency_code", "base_currency"] | date | merge | Retrieves historical exchange rates for specified date range.|
|
|
40
44
|
|
|
41
45
|
Use these as `--source-table` parameter in the `ingestr ingest` command.
|
|
42
46
|
|
|
@@ -33,15 +33,16 @@ This command copies data from the Freshdesk source to DuckDB.
|
|
|
33
33
|
<img alt="freshdesk_img" src="../media/freshdesk_ingestion.png" />
|
|
34
34
|
|
|
35
35
|
## Available Tables
|
|
36
|
+
|
|
36
37
|
The Freshdesk source allows you to ingest the following tables:
|
|
37
38
|
|
|
38
|
-
|
|
|
39
|
-
|
|
|
40
|
-
|
|
|
41
|
-
|
|
|
42
|
-
|
|
|
43
|
-
|
|
|
44
|
-
|
|
|
45
|
-
|
|
|
39
|
+
| Table | PK | Inc Key | Inc Strategy | Details |
|
|
40
|
+
| --------------- | ----------- | --------------- | ------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
41
|
+
| [agents](https://developers.freshdesk.com/api/#agents) | id | updated_at | merge | Retrieves users responsible for managing and resolving customer inquiries and support tickets |
|
|
42
|
+
| [companies](https://developers.freshdesk.com/api/#companies) | id | updated_at | merge | Retrieves customer organizations or groups that agents support. |
|
|
43
|
+
| [contacts](https://developers.freshdesk.com/api/#contacts) | id | updated_at | merge | Retrieves individuals or customers who reach out for support. |
|
|
44
|
+
| [groups](https://developers.freshdesk.com/api/#groups) | id | updated_at | merge | Retrieves agents organized based on specific criteria. |
|
|
45
|
+
| [roles](https://developers.freshdesk.com/api/#roles) | id | updated_at | merge | Retrieves predefined sets of permissions that determine what actions an agent can perform.|
|
|
46
|
+
| [tickets](https://developers.freshdesk.com/api/#tickets) | id | updated_at | merge | Retrieves customer inquiries or issues submitted via various channels like email, chat, phone, etc.
|
|
46
47
|
|
|
47
48
|
Use these as the `--source-table` parameter in the `ingestr ingest` command.
|
|
@@ -23,6 +23,13 @@ URI parameters:
|
|
|
23
23
|
Google Analytics requires a few steps to set up an integration, please follow the guide dltHub [has built here](https://dlthub.com/docs/dlt-ecosystem/verified-sources/google_analytics#grab-google-service-account-credentials). Once you complete the guide, you should have an `.json` file and `project_id`.
|
|
24
24
|
|
|
25
25
|
## Available Tables:
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
| Table | PK | Inc Key | Inc Strategy | Details |
|
|
29
|
+
| --------------- | ----------- | --------------- | ------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
30
|
+
| [realtime](https://developers.google.com/analytics/devguides/reporting/data/v1/realtime-basics) | ingested_at | - | merge | Retrieves real-time analytics data based on specified dimensions and metrics. Format: `realtime:<dimensions>:<metrics>:<minutes_ranges>`. Supports incremental loading by ingestion timestamp. |
|
|
31
|
+
| `custom` | datetime_dimension | datetime_dimension | merge | Retrieves custom reports based on specified dimensions and metrics. Format: `custom:<dimensions>:<metrics>` |
|
|
32
|
+
|
|
26
33
|
### Custom reports
|
|
27
34
|
- `Custom reports`: allow you to retrieve data based on specific `dimensions` and `metrics`.
|
|
28
35
|
|
|
@@ -79,4 +86,4 @@ ingestr ingest \
|
|
|
79
86
|
```
|
|
80
87
|
This command will retrieve report and save it to the `dest.realtime` table in the DuckDB database.
|
|
81
88
|
|
|
82
|
-
<img alt="google_analytics_realtime_report_img" src="../media/google_analytics_realtime_report.png"/>
|
|
89
|
+
<img alt="google_analytics_realtime_report_img" src="../media/google_analytics_realtime_report.png"/>
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
# Gorgias
|
|
2
|
+
[Gorgias](https://www.gorgias.com/) is a helpdesk for e-commerce merchants, providing customer service via email, social media, SMS, and live chat.
|
|
3
|
+
|
|
4
|
+
ingestr supports Gorgias as a source.
|
|
5
|
+
|
|
6
|
+
## URI format
|
|
7
|
+
The URI format for Gorgias is as follows:
|
|
8
|
+
|
|
9
|
+
```plaintext
|
|
10
|
+
gorgias://<domain>?api_key=<api-key>&email=<email>
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
URI parameters:
|
|
14
|
+
- `domain`: the domain of the Gorgias account without the full `gorgias.com`, e.g. `mycompany`
|
|
15
|
+
- `api_key`: the integration token used for authentication with the Gorgias API
|
|
16
|
+
- `email`: the email address of the user to connect to the Gorgias API
|
|
17
|
+
|
|
18
|
+
The URI is used to connect to the Gorgias API for extracting data.
|
|
19
|
+
|
|
20
|
+
## Examples
|
|
21
|
+
```bash
|
|
22
|
+
# get all the tickets that are created/updated since 2024-06-19 and write them to `gorgias.ticket_messages` table on BigQuery
|
|
23
|
+
ingestr ingest --source-table 'tickets' --source-uri $GORGIAS_URI --dest-uri $BIGQUERY_URI --interval-start 2024-06-19 --dest-table 'gorgias.ticket_messages' --loader-file-format jsonl
|
|
24
|
+
|
|
25
|
+
# get all the customers and write them to `gorgias.customers` table on DuckDB
|
|
26
|
+
ingestr ingest --source-table 'customers' --source-uri $GORGIAS_URI --dest-uri duckdb:///gorgias.duckdb --interval-start 2024-01-01 --dest-table 'dest.customers'
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
Gorgias source allows ingesting the following sources into separate tables:
|
|
32
|
+
|
|
33
|
+
| Table | PK | Inc Key | Inc Strategy | Details |
|
|
34
|
+
| --------------- | ----------- | --------------- | ------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
35
|
+
| [customers](https://developers.gorgias.com/reference/list-customers) | id | updated_datetime | merge | Customers are the users who have interacted with the support team. Each customer has a unique ID and contains information such as the name and email. Retrieves customers lists|
|
|
36
|
+
| [tickets](https://developers.gorgias.com/reference/list-tickets) | id | updated_datetime | merge | Tickets are the main entity in Gorgias, representing customer inquiries. Each ticket has a unique ID and contains information such as the customer, status, and messages. Retrieves tickets lists |
|
|
37
|
+
| [ticket_messages](https://developers.gorgias.com/reference/list-messages) | id | updated_datetime | merge | Ticket messages are the messages exchanged between the customer and the support agent in a ticket. Each message has a unique ID and contains information such as the sender, content, and timestamp. Retrieves messages lists |
|
|
38
|
+
| [satisfaction_surveys](https://developers.gorgias.com/reference/list-satisfaction-surveys) | id | updated_datetime | merge | Satisfaction surveys are sent to customers after a ticket is resolved to gather feedback on their experience. Each survey has a unique ID and contains information such as the rating and comments. Retrieves surveys lists.|
|
|
39
|
+
|
|
40
|
+
Use these as `--source-table` parameter in the `ingestr ingest` command.
|
|
41
|
+
|
|
42
|
+
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
# HubSpot
|
|
2
|
+
|
|
3
|
+
[HubSpot](https://www.hubspot.com/) is a customer relationship management software that helps businesses attract visitors, connect with customers, and close deals.
|
|
4
|
+
|
|
5
|
+
ingestr supports HubSpot as a source.
|
|
6
|
+
|
|
7
|
+
## URI format
|
|
8
|
+
|
|
9
|
+
The URI format for HubSpot is as follows:
|
|
10
|
+
|
|
11
|
+
```plaintext
|
|
12
|
+
hubspot://?api_key=<api-key-here>
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
URI parameters:
|
|
16
|
+
|
|
17
|
+
- `api_key`: The API key is used for authentication with the HubSpot API.
|
|
18
|
+
|
|
19
|
+
The URI is used to connect to the HubSpot API for extracting data.
|
|
20
|
+
|
|
21
|
+
## Setting up a HubSpot Integration
|
|
22
|
+
|
|
23
|
+
HubSpot requires a few steps to set up an integration, please follow the guide dltHub [has built here](https://dlthub.com/docs/dlt-ecosystem/verified-sources/hubspot#setup-guide).
|
|
24
|
+
|
|
25
|
+
Once you complete the guide, you should have an API key. Let's say your API key is `pat_test_12345`, here's a sample command that will copy the data from HubSpot into a DuckDB database:
|
|
26
|
+
|
|
27
|
+
```sh
|
|
28
|
+
ingestr ingest --source-uri 'hubspot://?api_key=pat_test_12345' --source-table 'companies' --dest-uri duckdb:///hubspot.duckdb --dest-table 'companies.data'
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
The result of this command will be a table in the `hubspot.duckdb` database.
|
|
32
|
+
|
|
33
|
+
## Tables
|
|
34
|
+
|
|
35
|
+
HubSpot source allows ingesting the following sources into separate tables:
|
|
36
|
+
|
|
37
|
+
Table | PK | Inc Key | Inc Strategy | Details |
|
|
38
|
+
| --------------- | ----------- | --------------- | ------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
39
|
+
| [companies](https://developers.hubspot.com/docs/reference/api/crm/objects/companies#get-%2Fcrm%2Fv3%2Fobjects%2Fcompanies) | - | – | replace | Retrieves information about organizations. |
|
|
40
|
+
| [contacts](https://developers.hubspot.com/docs/reference/api/crm/objects/contacts#get-%2Fcrm%2Fv3%2Fobjects%2Fcontacts) | - | – | replace | Retrieves information about visitors, potential customers, and leads. |
|
|
41
|
+
| [deals](https://developers.hubspot.com/docs/reference/api/crm/objects/deals#get-%2Fcrm%2Fv3%2Fobjects%2Fdeals) | - | – | replace | Retrieves deal records and tracks deal progress.|
|
|
42
|
+
| [tickets](https://developers.hubspot.com/docs/reference/api/crm/objects/tickets#basic) | - | – | replace | Handles requests for help from customers or users. |
|
|
43
|
+
| [products](https://developers.hubspot.com/docs/reference/api/crm/objects/products#get-%2Fcrm%2Fv3%2Fobjects%2Fproducts) | - | – | replace | Retrieves pricing information of products. |
|
|
44
|
+
| [quotes](https://developers.hubspot.com/docs/reference/api/crm/objects/quotes#get-%2Fcrm%2Fv3%2Fobjects%2Fquotes) | - | – | replace | Retrieves price proposals that salespeople can create and send to their contacts. |
|
|
45
|
+
| [schemas](https://developers.hubspot.com/docs/reference/api/crm/objects/schemas#get-%2Fcrm-object-schemas%2Fv3%2Fschemas) | id | – | merge | Returns all object schemas that have been defined for your account. |
|
|
46
|
+
|
|
47
|
+
Use these as `--source-table` parameter in the `ingestr ingest` command.
|
|
48
|
+
|
|
49
|
+
> [!WARNING]
|
|
50
|
+
> Hubspot does not support incremental loading, which means ingestr will do a full-refresh.
|
|
51
|
+
|
|
52
|
+
|
|
@@ -37,21 +37,24 @@ This will retrieve HTTPS adoption metrics for the specified date range and store
|
|
|
37
37
|
|
|
38
38
|
Internet Society Pulse source allows ingesting the following metrics as separate tables:
|
|
39
39
|
|
|
40
|
-
| Metric | Description | Country Support | Additional Options |
|
|
41
|
-
|
|
42
|
-
| `dnssec_adoption` | DNSSEC adoption metrics for specific domains | No | Domain name |
|
|
43
|
-
| `dnssec_tld_adoption` | DNSSEC adoption metrics for top-level domains | Yes | Country code |
|
|
44
|
-
| `dnssec_validation` | DNSSEC validation metrics | Yes | Country code |
|
|
45
|
-
| `http` | HTTP protocol metrics | No | None |
|
|
46
|
-
| `http3` | HTTP/3 protocol metrics | No | None |
|
|
47
|
-
| `https` | HTTPS adoption metrics | Yes |
|
|
48
|
-
| `ipv6` | IPv6 adoption metrics | Yes |
|
|
49
|
-
| `net_loss` | Internet disconnection metrics | Yes | Shutdown type, Country code |
|
|
50
|
-
| `resilience` | Internet resilience metrics | Yes | Country code |
|
|
51
|
-
| `roa` | Route Origin Authorization metrics | Yes | IP version (
|
|
52
|
-
| `rov` | Route Origin Validation metrics | No | None |
|
|
53
|
-
| `tls` | TLS protocol metrics | No | None |
|
|
54
|
-
| `tls13` | TLS 1.3 protocol metrics | No | None |
|
|
40
|
+
| Metric | Description | Country Support | Additional Options | PK | Inc Key | Inc Strategy |
|
|
41
|
+
|--------|-------------|-----------------|-------------------|-----|----------|--------------|
|
|
42
|
+
| `dnssec_adoption` | DNSSEC adoption metrics for specific domains | No | Domain name | date | date | merge |
|
|
43
|
+
| `dnssec_tld_adoption` | DNSSEC adoption metrics for top-level domains | Yes | Country code | date | date | merge |
|
|
44
|
+
| `dnssec_validation` | DNSSEC validation metrics | Yes | Country code | date | date | merge |
|
|
45
|
+
| `http` | HTTP protocol metrics | No | None | date | date | merge |
|
|
46
|
+
| `http3` | HTTP/3 protocol metrics | No | None | date | date | merge |
|
|
47
|
+
| `https` | HTTPS adoption metrics | Yes | topsites, Country code | date | date | merge |
|
|
48
|
+
| `ipv6` | IPv6 adoption metrics | Yes | topsites, Country code | date | date | merge |
|
|
49
|
+
| `net_loss` | Internet disconnection metrics | Yes | Shutdown type, Country code | date | date | merge |
|
|
50
|
+
| `resilience` | Internet resilience metrics | Yes | Country code | date | date | merge |
|
|
51
|
+
| `roa` | Route Origin Authorization metrics | Yes | IP version (4/6), Country code | date | date | merge |
|
|
52
|
+
| `rov` | Route Origin Validation metrics | No | None | date | date | merge |
|
|
53
|
+
| `tls` | TLS protocol metrics | No | None | date | date | merge |
|
|
54
|
+
| `tls13` | TLS 1.3 protocol metrics | No | None | date | date | merge |
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
Use these as `--source-table` parameter in the `ingestr ingest` command.
|
|
55
58
|
|
|
56
59
|
## Parameter Syntax
|
|
57
60
|
|