ingestr 0.13.94__tar.gz → 0.14.0__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.

Files changed (346) hide show
  1. {ingestr-0.13.94 → ingestr-0.14.0}/.github/workflows/tests.yml +1 -0
  2. {ingestr-0.13.94 → ingestr-0.14.0}/Makefile +6 -3
  3. {ingestr-0.13.94 → ingestr-0.14.0}/PKG-INFO +12 -7
  4. {ingestr-0.13.94 → ingestr-0.14.0}/README.md +7 -2
  5. {ingestr-0.13.94 → ingestr-0.14.0}/docs/.vitepress/config.mjs +2 -0
  6. ingestr-0.14.0/docs/supported-sources/anthropic.md +356 -0
  7. ingestr-0.14.0/docs/supported-sources/fundraiseup.md +83 -0
  8. ingestr-0.14.0/docs/supported-sources/trino.md +96 -0
  9. {ingestr-0.13.94 → ingestr-0.14.0}/ingestr/src/adjust/__init__.py +4 -4
  10. ingestr-0.14.0/ingestr/src/anthropic/__init__.py +277 -0
  11. ingestr-0.14.0/ingestr/src/anthropic/helpers.py +525 -0
  12. ingestr-0.14.0/ingestr/src/buildinfo.py +1 -0
  13. {ingestr-0.13.94 → ingestr-0.14.0}/ingestr/src/destinations.py +142 -0
  14. {ingestr-0.13.94 → ingestr-0.14.0}/ingestr/src/docebo/__init__.py +28 -46
  15. ingestr-0.14.0/ingestr/src/elasticsearch/helpers.py +112 -0
  16. {ingestr-0.13.94 → ingestr-0.14.0}/ingestr/src/facebook_ads/__init__.py +6 -1
  17. {ingestr-0.13.94 → ingestr-0.14.0}/ingestr/src/factory.py +12 -0
  18. {ingestr-0.13.94 → ingestr-0.14.0}/ingestr/src/fluxx/__init__.py +4032 -11242
  19. {ingestr-0.13.94 → ingestr-0.14.0}/ingestr/src/frankfurter/__init__.py +157 -157
  20. ingestr-0.14.0/ingestr/src/fundraiseup/__init__.py +49 -0
  21. ingestr-0.14.0/ingestr/src/fundraiseup/client.py +81 -0
  22. {ingestr-0.13.94 → ingestr-0.14.0}/ingestr/src/google_analytics/__init__.py +1 -1
  23. {ingestr-0.13.94 → ingestr-0.14.0}/ingestr/src/mongodb/__init__.py +1 -1
  24. {ingestr-0.13.94 → ingestr-0.14.0}/ingestr/src/mongodb/helpers.py +69 -1
  25. {ingestr-0.13.94 → ingestr-0.14.0}/ingestr/src/sources.py +80 -0
  26. {ingestr-0.13.94 → ingestr-0.14.0}/ingestr/tests/unit/test_smartsheets.py +1 -1
  27. {ingestr-0.13.94 → ingestr-0.14.0}/requirements.in +2 -1
  28. {ingestr-0.13.94 → ingestr-0.14.0}/requirements.txt +15 -6
  29. {ingestr-0.13.94 → ingestr-0.14.0}/requirements_arm64.txt +14 -5
  30. ingestr-0.13.94/ingestr/src/buildinfo.py +0 -1
  31. {ingestr-0.13.94 → ingestr-0.14.0}/.dlt/config.toml +0 -0
  32. {ingestr-0.13.94 → ingestr-0.14.0}/.dockerignore +0 -0
  33. {ingestr-0.13.94 → ingestr-0.14.0}/.githooks/pre-commit-hook.sh +0 -0
  34. {ingestr-0.13.94 → ingestr-0.14.0}/.github/workflows/deploy-docs.yml +0 -0
  35. {ingestr-0.13.94 → ingestr-0.14.0}/.github/workflows/release.yml +0 -0
  36. {ingestr-0.13.94 → ingestr-0.14.0}/.github/workflows/secrets-scan.yml +0 -0
  37. {ingestr-0.13.94 → ingestr-0.14.0}/.gitignore +0 -0
  38. {ingestr-0.13.94 → ingestr-0.14.0}/.gitleaksignore +0 -0
  39. {ingestr-0.13.94 → ingestr-0.14.0}/.python-version +0 -0
  40. {ingestr-0.13.94 → ingestr-0.14.0}/.vale.ini +0 -0
  41. {ingestr-0.13.94 → ingestr-0.14.0}/Dockerfile +0 -0
  42. {ingestr-0.13.94 → ingestr-0.14.0}/LICENSE.md +0 -0
  43. {ingestr-0.13.94 → ingestr-0.14.0}/docs/.vitepress/theme/custom.css +0 -0
  44. {ingestr-0.13.94 → ingestr-0.14.0}/docs/.vitepress/theme/index.js +0 -0
  45. {ingestr-0.13.94 → ingestr-0.14.0}/docs/commands/example-uris.md +0 -0
  46. {ingestr-0.13.94 → ingestr-0.14.0}/docs/commands/ingest.md +0 -0
  47. {ingestr-0.13.94 → ingestr-0.14.0}/docs/getting-started/core-concepts.md +0 -0
  48. {ingestr-0.13.94 → ingestr-0.14.0}/docs/getting-started/data-masking.md +0 -0
  49. {ingestr-0.13.94 → ingestr-0.14.0}/docs/getting-started/incremental-loading.md +0 -0
  50. {ingestr-0.13.94 → ingestr-0.14.0}/docs/getting-started/quickstart.md +0 -0
  51. {ingestr-0.13.94 → ingestr-0.14.0}/docs/getting-started/telemetry.md +0 -0
  52. {ingestr-0.13.94 → ingestr-0.14.0}/docs/index.md +0 -0
  53. {ingestr-0.13.94 → ingestr-0.14.0}/docs/media/applovin_max.png +0 -0
  54. {ingestr-0.13.94 → ingestr-0.14.0}/docs/media/athena.png +0 -0
  55. {ingestr-0.13.94 → ingestr-0.14.0}/docs/media/clickhouse_img.png +0 -0
  56. {ingestr-0.13.94 → ingestr-0.14.0}/docs/media/clickup_ingestion.png +0 -0
  57. {ingestr-0.13.94 → ingestr-0.14.0}/docs/media/cratedb-destination.png +0 -0
  58. {ingestr-0.13.94 → ingestr-0.14.0}/docs/media/cratedb-source.png +0 -0
  59. {ingestr-0.13.94 → ingestr-0.14.0}/docs/media/freshdesk_ingestion.png +0 -0
  60. {ingestr-0.13.94 → ingestr-0.14.0}/docs/media/gcp_spanner_ingestion.png +0 -0
  61. {ingestr-0.13.94 → ingestr-0.14.0}/docs/media/github.png +0 -0
  62. {ingestr-0.13.94 → ingestr-0.14.0}/docs/media/google_analytics_realtime_report.png +0 -0
  63. {ingestr-0.13.94 → ingestr-0.14.0}/docs/media/googleanalytics.png +0 -0
  64. {ingestr-0.13.94 → ingestr-0.14.0}/docs/media/ingestion_elasticsearch_img.png +0 -0
  65. {ingestr-0.13.94 → ingestr-0.14.0}/docs/media/kinesis.bigquery.png +0 -0
  66. {ingestr-0.13.94 → ingestr-0.14.0}/docs/media/linear.png +0 -0
  67. {ingestr-0.13.94 → ingestr-0.14.0}/docs/media/linkedin_ads.png +0 -0
  68. {ingestr-0.13.94 → ingestr-0.14.0}/docs/media/mixpanel_ingestion.png +0 -0
  69. {ingestr-0.13.94 → ingestr-0.14.0}/docs/media/personio.png +0 -0
  70. {ingestr-0.13.94 → ingestr-0.14.0}/docs/media/personio_duckdb.png +0 -0
  71. {ingestr-0.13.94 → ingestr-0.14.0}/docs/media/phantombuster.png +0 -0
  72. {ingestr-0.13.94 → ingestr-0.14.0}/docs/media/pipedrive.png +0 -0
  73. {ingestr-0.13.94 → ingestr-0.14.0}/docs/media/quickbook_ingestion.png +0 -0
  74. {ingestr-0.13.94 → ingestr-0.14.0}/docs/media/sftp.png +0 -0
  75. {ingestr-0.13.94 → ingestr-0.14.0}/docs/media/stripe_postgres.png +0 -0
  76. {ingestr-0.13.94 → ingestr-0.14.0}/docs/media/tiktok.png +0 -0
  77. {ingestr-0.13.94 → ingestr-0.14.0}/docs/media/wise_ingestion.png +0 -0
  78. {ingestr-0.13.94 → ingestr-0.14.0}/docs/media/zoom_ingestion.png +0 -0
  79. {ingestr-0.13.94 → ingestr-0.14.0}/docs/supported-sources/adjust.md +0 -0
  80. {ingestr-0.13.94 → ingestr-0.14.0}/docs/supported-sources/airtable.md +0 -0
  81. {ingestr-0.13.94 → ingestr-0.14.0}/docs/supported-sources/applovin.md +0 -0
  82. {ingestr-0.13.94 → ingestr-0.14.0}/docs/supported-sources/applovin_max.md +0 -0
  83. {ingestr-0.13.94 → ingestr-0.14.0}/docs/supported-sources/appsflyer.md +0 -0
  84. {ingestr-0.13.94 → ingestr-0.14.0}/docs/supported-sources/appstore.md +0 -0
  85. {ingestr-0.13.94 → ingestr-0.14.0}/docs/supported-sources/asana.md +0 -0
  86. {ingestr-0.13.94 → ingestr-0.14.0}/docs/supported-sources/athena.md +0 -0
  87. {ingestr-0.13.94 → ingestr-0.14.0}/docs/supported-sources/attio.md +0 -0
  88. {ingestr-0.13.94 → ingestr-0.14.0}/docs/supported-sources/bigquery.md +0 -0
  89. {ingestr-0.13.94 → ingestr-0.14.0}/docs/supported-sources/chess.md +0 -0
  90. {ingestr-0.13.94 → ingestr-0.14.0}/docs/supported-sources/clickhouse.md +0 -0
  91. {ingestr-0.13.94 → ingestr-0.14.0}/docs/supported-sources/clickup.md +0 -0
  92. {ingestr-0.13.94 → ingestr-0.14.0}/docs/supported-sources/cratedb.md +0 -0
  93. {ingestr-0.13.94 → ingestr-0.14.0}/docs/supported-sources/csv.md +0 -0
  94. {ingestr-0.13.94 → ingestr-0.14.0}/docs/supported-sources/custom_queries.md +0 -0
  95. {ingestr-0.13.94 → ingestr-0.14.0}/docs/supported-sources/databricks.md +0 -0
  96. {ingestr-0.13.94 → ingestr-0.14.0}/docs/supported-sources/db2.md +0 -0
  97. {ingestr-0.13.94 → ingestr-0.14.0}/docs/supported-sources/docebo.md +0 -0
  98. {ingestr-0.13.94 → ingestr-0.14.0}/docs/supported-sources/duckdb.md +0 -0
  99. {ingestr-0.13.94 → ingestr-0.14.0}/docs/supported-sources/dynamodb.md +0 -0
  100. {ingestr-0.13.94 → ingestr-0.14.0}/docs/supported-sources/elasticsearch.md +0 -0
  101. {ingestr-0.13.94 → ingestr-0.14.0}/docs/supported-sources/facebook-ads.md +0 -0
  102. {ingestr-0.13.94 → ingestr-0.14.0}/docs/supported-sources/fluxx.md +0 -0
  103. {ingestr-0.13.94 → ingestr-0.14.0}/docs/supported-sources/frankfurter.md +0 -0
  104. {ingestr-0.13.94 → ingestr-0.14.0}/docs/supported-sources/freshdesk.md +0 -0
  105. {ingestr-0.13.94 → ingestr-0.14.0}/docs/supported-sources/gcs.md +0 -0
  106. {ingestr-0.13.94 → ingestr-0.14.0}/docs/supported-sources/github.md +0 -0
  107. {ingestr-0.13.94 → ingestr-0.14.0}/docs/supported-sources/google-ads.md +0 -0
  108. {ingestr-0.13.94 → ingestr-0.14.0}/docs/supported-sources/google_analytics.md +0 -0
  109. {ingestr-0.13.94 → ingestr-0.14.0}/docs/supported-sources/gorgias.md +0 -0
  110. {ingestr-0.13.94 → ingestr-0.14.0}/docs/supported-sources/gsheets.md +0 -0
  111. {ingestr-0.13.94 → ingestr-0.14.0}/docs/supported-sources/hubspot.md +0 -0
  112. {ingestr-0.13.94 → ingestr-0.14.0}/docs/supported-sources/influxdb.md +0 -0
  113. {ingestr-0.13.94 → ingestr-0.14.0}/docs/supported-sources/isoc-pulse.md +0 -0
  114. {ingestr-0.13.94 → ingestr-0.14.0}/docs/supported-sources/kafka.md +0 -0
  115. {ingestr-0.13.94 → ingestr-0.14.0}/docs/supported-sources/kinesis.md +0 -0
  116. {ingestr-0.13.94 → ingestr-0.14.0}/docs/supported-sources/klaviyo.md +0 -0
  117. {ingestr-0.13.94 → ingestr-0.14.0}/docs/supported-sources/linear.md +0 -0
  118. {ingestr-0.13.94 → ingestr-0.14.0}/docs/supported-sources/linkedin_ads.md +0 -0
  119. {ingestr-0.13.94 → ingestr-0.14.0}/docs/supported-sources/mixpanel.md +0 -0
  120. {ingestr-0.13.94 → ingestr-0.14.0}/docs/supported-sources/mongodb.md +0 -0
  121. {ingestr-0.13.94 → ingestr-0.14.0}/docs/supported-sources/motherduck.md +0 -0
  122. {ingestr-0.13.94 → ingestr-0.14.0}/docs/supported-sources/mssql.md +0 -0
  123. {ingestr-0.13.94 → ingestr-0.14.0}/docs/supported-sources/mysql.md +0 -0
  124. {ingestr-0.13.94 → ingestr-0.14.0}/docs/supported-sources/notion.md +0 -0
  125. {ingestr-0.13.94 → ingestr-0.14.0}/docs/supported-sources/oracle.md +0 -0
  126. {ingestr-0.13.94 → ingestr-0.14.0}/docs/supported-sources/personio.md +0 -0
  127. {ingestr-0.13.94 → ingestr-0.14.0}/docs/supported-sources/phantombuster.md +0 -0
  128. {ingestr-0.13.94 → ingestr-0.14.0}/docs/supported-sources/pinterest.md +0 -0
  129. {ingestr-0.13.94 → ingestr-0.14.0}/docs/supported-sources/pipedrive.md +0 -0
  130. {ingestr-0.13.94 → ingestr-0.14.0}/docs/supported-sources/postgres.md +0 -0
  131. {ingestr-0.13.94 → ingestr-0.14.0}/docs/supported-sources/quickbooks.md +0 -0
  132. {ingestr-0.13.94 → ingestr-0.14.0}/docs/supported-sources/redshift.md +0 -0
  133. {ingestr-0.13.94 → ingestr-0.14.0}/docs/supported-sources/revenuecat.md +0 -0
  134. {ingestr-0.13.94 → ingestr-0.14.0}/docs/supported-sources/s3.md +0 -0
  135. {ingestr-0.13.94 → ingestr-0.14.0}/docs/supported-sources/salesforce.md +0 -0
  136. {ingestr-0.13.94 → ingestr-0.14.0}/docs/supported-sources/sap-hana.md +0 -0
  137. {ingestr-0.13.94 → ingestr-0.14.0}/docs/supported-sources/sftp.md +0 -0
  138. {ingestr-0.13.94 → ingestr-0.14.0}/docs/supported-sources/shopify.md +0 -0
  139. {ingestr-0.13.94 → ingestr-0.14.0}/docs/supported-sources/slack.md +0 -0
  140. {ingestr-0.13.94 → ingestr-0.14.0}/docs/supported-sources/smartsheets.md +0 -0
  141. {ingestr-0.13.94 → ingestr-0.14.0}/docs/supported-sources/snowflake.md +0 -0
  142. {ingestr-0.13.94 → ingestr-0.14.0}/docs/supported-sources/solidgate.md +0 -0
  143. {ingestr-0.13.94 → ingestr-0.14.0}/docs/supported-sources/spanner.md +0 -0
  144. {ingestr-0.13.94 → ingestr-0.14.0}/docs/supported-sources/sqlite.md +0 -0
  145. {ingestr-0.13.94 → ingestr-0.14.0}/docs/supported-sources/stripe.md +0 -0
  146. {ingestr-0.13.94 → ingestr-0.14.0}/docs/supported-sources/tiktok-ads.md +0 -0
  147. {ingestr-0.13.94 → ingestr-0.14.0}/docs/supported-sources/trustpilot.md +0 -0
  148. {ingestr-0.13.94 → ingestr-0.14.0}/docs/supported-sources/wise.md +0 -0
  149. {ingestr-0.13.94 → ingestr-0.14.0}/docs/supported-sources/zendesk.md +0 -0
  150. {ingestr-0.13.94 → ingestr-0.14.0}/docs/supported-sources/zoom.md +0 -0
  151. {ingestr-0.13.94 → ingestr-0.14.0}/docs/tutorials/load-kinesis-bigquery.md +0 -0
  152. {ingestr-0.13.94 → ingestr-0.14.0}/docs/tutorials/load-personio-duckdb.md +0 -0
  153. {ingestr-0.13.94 → ingestr-0.14.0}/docs/tutorials/load-stripe-postgres.md +0 -0
  154. {ingestr-0.13.94 → ingestr-0.14.0}/ingestr/conftest.py +0 -0
  155. {ingestr-0.13.94 → ingestr-0.14.0}/ingestr/main.py +0 -0
  156. {ingestr-0.13.94 → ingestr-0.14.0}/ingestr/src/.gitignore +0 -0
  157. {ingestr-0.13.94 → ingestr-0.14.0}/ingestr/src/adjust/adjust_helpers.py +0 -0
  158. {ingestr-0.13.94 → ingestr-0.14.0}/ingestr/src/airtable/__init__.py +0 -0
  159. {ingestr-0.13.94 → ingestr-0.14.0}/ingestr/src/applovin/__init__.py +0 -0
  160. {ingestr-0.13.94 → ingestr-0.14.0}/ingestr/src/applovin_max/__init__.py +0 -0
  161. {ingestr-0.13.94 → ingestr-0.14.0}/ingestr/src/appsflyer/__init__.py +0 -0
  162. {ingestr-0.13.94 → ingestr-0.14.0}/ingestr/src/appsflyer/client.py +0 -0
  163. {ingestr-0.13.94 → ingestr-0.14.0}/ingestr/src/appstore/__init__.py +0 -0
  164. {ingestr-0.13.94 → ingestr-0.14.0}/ingestr/src/appstore/client.py +0 -0
  165. {ingestr-0.13.94 → ingestr-0.14.0}/ingestr/src/appstore/errors.py +0 -0
  166. {ingestr-0.13.94 → ingestr-0.14.0}/ingestr/src/appstore/models.py +0 -0
  167. {ingestr-0.13.94 → ingestr-0.14.0}/ingestr/src/appstore/resources.py +0 -0
  168. {ingestr-0.13.94 → ingestr-0.14.0}/ingestr/src/arrow/__init__.py +0 -0
  169. {ingestr-0.13.94 → ingestr-0.14.0}/ingestr/src/asana_source/__init__.py +0 -0
  170. {ingestr-0.13.94 → ingestr-0.14.0}/ingestr/src/asana_source/helpers.py +0 -0
  171. {ingestr-0.13.94 → ingestr-0.14.0}/ingestr/src/asana_source/settings.py +0 -0
  172. {ingestr-0.13.94 → ingestr-0.14.0}/ingestr/src/attio/__init__.py +0 -0
  173. {ingestr-0.13.94 → ingestr-0.14.0}/ingestr/src/attio/helpers.py +0 -0
  174. {ingestr-0.13.94 → ingestr-0.14.0}/ingestr/src/blob.py +0 -0
  175. {ingestr-0.13.94 → ingestr-0.14.0}/ingestr/src/chess/__init__.py +0 -0
  176. {ingestr-0.13.94 → ingestr-0.14.0}/ingestr/src/chess/helpers.py +0 -0
  177. {ingestr-0.13.94 → ingestr-0.14.0}/ingestr/src/chess/settings.py +0 -0
  178. {ingestr-0.13.94 → ingestr-0.14.0}/ingestr/src/clickup/__init__.py +0 -0
  179. {ingestr-0.13.94 → ingestr-0.14.0}/ingestr/src/clickup/helpers.py +0 -0
  180. {ingestr-0.13.94 → ingestr-0.14.0}/ingestr/src/collector/spinner.py +0 -0
  181. {ingestr-0.13.94 → ingestr-0.14.0}/ingestr/src/docebo/client.py +0 -0
  182. {ingestr-0.13.94 → ingestr-0.14.0}/ingestr/src/docebo/helpers.py +0 -0
  183. {ingestr-0.13.94 → ingestr-0.14.0}/ingestr/src/dynamodb/__init__.py +0 -0
  184. {ingestr-0.13.94 → ingestr-0.14.0}/ingestr/src/elasticsearch/__init__.py +0 -0
  185. {ingestr-0.13.94 → ingestr-0.14.0}/ingestr/src/errors.py +0 -0
  186. {ingestr-0.13.94 → ingestr-0.14.0}/ingestr/src/facebook_ads/exceptions.py +0 -0
  187. {ingestr-0.13.94 → ingestr-0.14.0}/ingestr/src/facebook_ads/helpers.py +0 -0
  188. {ingestr-0.13.94 → ingestr-0.14.0}/ingestr/src/facebook_ads/settings.py +0 -0
  189. {ingestr-0.13.94 → ingestr-0.14.0}/ingestr/src/facebook_ads/utils.py +0 -0
  190. {ingestr-0.13.94 → ingestr-0.14.0}/ingestr/src/filesystem/__init__.py +0 -0
  191. {ingestr-0.13.94 → ingestr-0.14.0}/ingestr/src/filesystem/helpers.py +0 -0
  192. {ingestr-0.13.94 → ingestr-0.14.0}/ingestr/src/filesystem/readers.py +0 -0
  193. {ingestr-0.13.94 → ingestr-0.14.0}/ingestr/src/filters.py +0 -0
  194. {ingestr-0.13.94 → ingestr-0.14.0}/ingestr/src/fluxx/helpers.py +0 -0
  195. {ingestr-0.13.94 → ingestr-0.14.0}/ingestr/src/frankfurter/helpers.py +0 -0
  196. {ingestr-0.13.94 → ingestr-0.14.0}/ingestr/src/freshdesk/__init__.py +0 -0
  197. {ingestr-0.13.94 → ingestr-0.14.0}/ingestr/src/freshdesk/freshdesk_client.py +0 -0
  198. {ingestr-0.13.94 → ingestr-0.14.0}/ingestr/src/freshdesk/settings.py +0 -0
  199. {ingestr-0.13.94 → ingestr-0.14.0}/ingestr/src/github/__init__.py +0 -0
  200. {ingestr-0.13.94 → ingestr-0.14.0}/ingestr/src/github/helpers.py +0 -0
  201. {ingestr-0.13.94 → ingestr-0.14.0}/ingestr/src/github/queries.py +0 -0
  202. {ingestr-0.13.94 → ingestr-0.14.0}/ingestr/src/github/settings.py +0 -0
  203. {ingestr-0.13.94 → ingestr-0.14.0}/ingestr/src/google_ads/__init__.py +0 -0
  204. {ingestr-0.13.94 → ingestr-0.14.0}/ingestr/src/google_ads/field.py +0 -0
  205. {ingestr-0.13.94 → ingestr-0.14.0}/ingestr/src/google_ads/metrics.py +0 -0
  206. {ingestr-0.13.94 → ingestr-0.14.0}/ingestr/src/google_ads/predicates.py +0 -0
  207. {ingestr-0.13.94 → ingestr-0.14.0}/ingestr/src/google_ads/reports.py +0 -0
  208. {ingestr-0.13.94 → ingestr-0.14.0}/ingestr/src/google_analytics/helpers.py +0 -0
  209. {ingestr-0.13.94 → ingestr-0.14.0}/ingestr/src/google_sheets/README.md +0 -0
  210. {ingestr-0.13.94 → ingestr-0.14.0}/ingestr/src/google_sheets/__init__.py +0 -0
  211. {ingestr-0.13.94 → ingestr-0.14.0}/ingestr/src/google_sheets/helpers/__init__.py +0 -0
  212. {ingestr-0.13.94 → ingestr-0.14.0}/ingestr/src/google_sheets/helpers/api_calls.py +0 -0
  213. {ingestr-0.13.94 → ingestr-0.14.0}/ingestr/src/google_sheets/helpers/data_processing.py +0 -0
  214. {ingestr-0.13.94 → ingestr-0.14.0}/ingestr/src/gorgias/__init__.py +0 -0
  215. {ingestr-0.13.94 → ingestr-0.14.0}/ingestr/src/gorgias/helpers.py +0 -0
  216. {ingestr-0.13.94 → ingestr-0.14.0}/ingestr/src/http_client.py +0 -0
  217. {ingestr-0.13.94 → ingestr-0.14.0}/ingestr/src/hubspot/__init__.py +0 -0
  218. {ingestr-0.13.94 → ingestr-0.14.0}/ingestr/src/hubspot/helpers.py +0 -0
  219. {ingestr-0.13.94 → ingestr-0.14.0}/ingestr/src/hubspot/settings.py +0 -0
  220. {ingestr-0.13.94 → ingestr-0.14.0}/ingestr/src/influxdb/__init__.py +0 -0
  221. {ingestr-0.13.94 → ingestr-0.14.0}/ingestr/src/influxdb/client.py +0 -0
  222. {ingestr-0.13.94 → ingestr-0.14.0}/ingestr/src/isoc_pulse/__init__.py +0 -0
  223. {ingestr-0.13.94 → ingestr-0.14.0}/ingestr/src/kafka/__init__.py +0 -0
  224. {ingestr-0.13.94 → ingestr-0.14.0}/ingestr/src/kafka/helpers.py +0 -0
  225. {ingestr-0.13.94 → ingestr-0.14.0}/ingestr/src/kinesis/__init__.py +0 -0
  226. {ingestr-0.13.94 → ingestr-0.14.0}/ingestr/src/kinesis/helpers.py +0 -0
  227. {ingestr-0.13.94 → ingestr-0.14.0}/ingestr/src/klaviyo/__init__.py +0 -0
  228. {ingestr-0.13.94 → ingestr-0.14.0}/ingestr/src/klaviyo/client.py +0 -0
  229. {ingestr-0.13.94 → ingestr-0.14.0}/ingestr/src/klaviyo/helpers.py +0 -0
  230. {ingestr-0.13.94 → ingestr-0.14.0}/ingestr/src/linear/__init__.py +0 -0
  231. {ingestr-0.13.94 → ingestr-0.14.0}/ingestr/src/linear/helpers.py +0 -0
  232. {ingestr-0.13.94 → ingestr-0.14.0}/ingestr/src/linkedin_ads/__init__.py +0 -0
  233. {ingestr-0.13.94 → ingestr-0.14.0}/ingestr/src/linkedin_ads/dimension_time_enum.py +0 -0
  234. {ingestr-0.13.94 → ingestr-0.14.0}/ingestr/src/linkedin_ads/helpers.py +0 -0
  235. {ingestr-0.13.94 → ingestr-0.14.0}/ingestr/src/loader.py +0 -0
  236. {ingestr-0.13.94 → ingestr-0.14.0}/ingestr/src/masking.py +0 -0
  237. {ingestr-0.13.94 → ingestr-0.14.0}/ingestr/src/mixpanel/__init__.py +0 -0
  238. {ingestr-0.13.94 → ingestr-0.14.0}/ingestr/src/mixpanel/client.py +0 -0
  239. {ingestr-0.13.94 → ingestr-0.14.0}/ingestr/src/notion/__init__.py +0 -0
  240. {ingestr-0.13.94 → ingestr-0.14.0}/ingestr/src/notion/helpers/__init__.py +0 -0
  241. {ingestr-0.13.94 → ingestr-0.14.0}/ingestr/src/notion/helpers/client.py +0 -0
  242. {ingestr-0.13.94 → ingestr-0.14.0}/ingestr/src/notion/helpers/database.py +0 -0
  243. {ingestr-0.13.94 → ingestr-0.14.0}/ingestr/src/notion/settings.py +0 -0
  244. {ingestr-0.13.94 → ingestr-0.14.0}/ingestr/src/partition.py +0 -0
  245. {ingestr-0.13.94 → ingestr-0.14.0}/ingestr/src/personio/__init__.py +0 -0
  246. {ingestr-0.13.94 → ingestr-0.14.0}/ingestr/src/personio/helpers.py +0 -0
  247. {ingestr-0.13.94 → ingestr-0.14.0}/ingestr/src/phantombuster/__init__.py +0 -0
  248. {ingestr-0.13.94 → ingestr-0.14.0}/ingestr/src/phantombuster/client.py +0 -0
  249. {ingestr-0.13.94 → ingestr-0.14.0}/ingestr/src/pinterest/__init__.py +0 -0
  250. {ingestr-0.13.94 → ingestr-0.14.0}/ingestr/src/pipedrive/__init__.py +0 -0
  251. {ingestr-0.13.94 → ingestr-0.14.0}/ingestr/src/pipedrive/helpers/__init__.py +0 -0
  252. {ingestr-0.13.94 → ingestr-0.14.0}/ingestr/src/pipedrive/helpers/custom_fields_munger.py +0 -0
  253. {ingestr-0.13.94 → ingestr-0.14.0}/ingestr/src/pipedrive/helpers/pages.py +0 -0
  254. {ingestr-0.13.94 → ingestr-0.14.0}/ingestr/src/pipedrive/settings.py +0 -0
  255. {ingestr-0.13.94 → ingestr-0.14.0}/ingestr/src/pipedrive/typing.py +0 -0
  256. {ingestr-0.13.94 → ingestr-0.14.0}/ingestr/src/quickbooks/__init__.py +0 -0
  257. {ingestr-0.13.94 → ingestr-0.14.0}/ingestr/src/resource.py +0 -0
  258. {ingestr-0.13.94 → ingestr-0.14.0}/ingestr/src/revenuecat/__init__.py +0 -0
  259. {ingestr-0.13.94 → ingestr-0.14.0}/ingestr/src/revenuecat/helpers.py +0 -0
  260. {ingestr-0.13.94 → ingestr-0.14.0}/ingestr/src/salesforce/__init__.py +0 -0
  261. {ingestr-0.13.94 → ingestr-0.14.0}/ingestr/src/salesforce/helpers.py +0 -0
  262. {ingestr-0.13.94 → ingestr-0.14.0}/ingestr/src/shopify/__init__.py +0 -0
  263. {ingestr-0.13.94 → ingestr-0.14.0}/ingestr/src/shopify/exceptions.py +0 -0
  264. {ingestr-0.13.94 → ingestr-0.14.0}/ingestr/src/shopify/helpers.py +0 -0
  265. {ingestr-0.13.94 → ingestr-0.14.0}/ingestr/src/shopify/settings.py +0 -0
  266. {ingestr-0.13.94 → ingestr-0.14.0}/ingestr/src/slack/__init__.py +0 -0
  267. {ingestr-0.13.94 → ingestr-0.14.0}/ingestr/src/slack/helpers.py +0 -0
  268. {ingestr-0.13.94 → ingestr-0.14.0}/ingestr/src/slack/settings.py +0 -0
  269. {ingestr-0.13.94 → ingestr-0.14.0}/ingestr/src/smartsheets/__init__.py +0 -0
  270. {ingestr-0.13.94 → ingestr-0.14.0}/ingestr/src/solidgate/__init__.py +0 -0
  271. {ingestr-0.13.94 → ingestr-0.14.0}/ingestr/src/solidgate/helpers.py +0 -0
  272. {ingestr-0.13.94 → ingestr-0.14.0}/ingestr/src/sql_database/__init__.py +0 -0
  273. {ingestr-0.13.94 → ingestr-0.14.0}/ingestr/src/sql_database/callbacks.py +0 -0
  274. {ingestr-0.13.94 → ingestr-0.14.0}/ingestr/src/stripe_analytics/__init__.py +0 -0
  275. {ingestr-0.13.94 → ingestr-0.14.0}/ingestr/src/stripe_analytics/helpers.py +0 -0
  276. {ingestr-0.13.94 → ingestr-0.14.0}/ingestr/src/stripe_analytics/settings.py +0 -0
  277. {ingestr-0.13.94 → ingestr-0.14.0}/ingestr/src/table_definition.py +0 -0
  278. {ingestr-0.13.94 → ingestr-0.14.0}/ingestr/src/telemetry/event.py +0 -0
  279. {ingestr-0.13.94 → ingestr-0.14.0}/ingestr/src/testdata/fakebqcredentials.json +0 -0
  280. {ingestr-0.13.94 → ingestr-0.14.0}/ingestr/src/tiktok_ads/__init__.py +0 -0
  281. {ingestr-0.13.94 → ingestr-0.14.0}/ingestr/src/tiktok_ads/tiktok_helpers.py +0 -0
  282. {ingestr-0.13.94 → ingestr-0.14.0}/ingestr/src/time.py +0 -0
  283. {ingestr-0.13.94 → ingestr-0.14.0}/ingestr/src/trustpilot/__init__.py +0 -0
  284. {ingestr-0.13.94 → ingestr-0.14.0}/ingestr/src/trustpilot/client.py +0 -0
  285. {ingestr-0.13.94 → ingestr-0.14.0}/ingestr/src/version.py +0 -0
  286. {ingestr-0.13.94 → ingestr-0.14.0}/ingestr/src/wise/__init__.py +0 -0
  287. {ingestr-0.13.94 → ingestr-0.14.0}/ingestr/src/wise/client.py +0 -0
  288. {ingestr-0.13.94 → ingestr-0.14.0}/ingestr/src/zendesk/__init__.py +0 -0
  289. {ingestr-0.13.94 → ingestr-0.14.0}/ingestr/src/zendesk/helpers/__init__.py +0 -0
  290. {ingestr-0.13.94 → ingestr-0.14.0}/ingestr/src/zendesk/helpers/api_helpers.py +0 -0
  291. {ingestr-0.13.94 → ingestr-0.14.0}/ingestr/src/zendesk/helpers/credentials.py +0 -0
  292. {ingestr-0.13.94 → ingestr-0.14.0}/ingestr/src/zendesk/helpers/talk_api.py +0 -0
  293. {ingestr-0.13.94 → ingestr-0.14.0}/ingestr/src/zendesk/settings.py +0 -0
  294. {ingestr-0.13.94 → ingestr-0.14.0}/ingestr/src/zoom/__init__.py +0 -0
  295. {ingestr-0.13.94 → ingestr-0.14.0}/ingestr/src/zoom/helpers.py +0 -0
  296. {ingestr-0.13.94 → ingestr-0.14.0}/ingestr/testdata/.gitignore +0 -0
  297. {ingestr-0.13.94 → ingestr-0.14.0}/ingestr/testdata/create_replace.csv +0 -0
  298. {ingestr-0.13.94 → ingestr-0.14.0}/ingestr/testdata/delete_insert_expected.csv +0 -0
  299. {ingestr-0.13.94 → ingestr-0.14.0}/ingestr/testdata/delete_insert_part1.csv +0 -0
  300. {ingestr-0.13.94 → ingestr-0.14.0}/ingestr/testdata/delete_insert_part2.csv +0 -0
  301. {ingestr-0.13.94 → ingestr-0.14.0}/ingestr/testdata/merge_expected.csv +0 -0
  302. {ingestr-0.13.94 → ingestr-0.14.0}/ingestr/testdata/merge_part1.csv +0 -0
  303. {ingestr-0.13.94 → ingestr-0.14.0}/ingestr/testdata/merge_part2.csv +0 -0
  304. {ingestr-0.13.94 → ingestr-0.14.0}/package-lock.json +0 -0
  305. {ingestr-0.13.94 → ingestr-0.14.0}/package.json +0 -0
  306. {ingestr-0.13.94 → ingestr-0.14.0}/pyproject.toml +0 -0
  307. {ingestr-0.13.94 → ingestr-0.14.0}/requirements-dev.txt +0 -0
  308. {ingestr-0.13.94 → ingestr-0.14.0}/resources/demo.gif +0 -0
  309. {ingestr-0.13.94 → ingestr-0.14.0}/resources/demo.tape +0 -0
  310. {ingestr-0.13.94 → ingestr-0.14.0}/resources/ingestr.svg +0 -0
  311. {ingestr-0.13.94 → ingestr-0.14.0}/styles/Google/AMPM.yml +0 -0
  312. {ingestr-0.13.94 → ingestr-0.14.0}/styles/Google/Acronyms.yml +0 -0
  313. {ingestr-0.13.94 → ingestr-0.14.0}/styles/Google/Colons.yml +0 -0
  314. {ingestr-0.13.94 → ingestr-0.14.0}/styles/Google/Contractions.yml +0 -0
  315. {ingestr-0.13.94 → ingestr-0.14.0}/styles/Google/DateFormat.yml +0 -0
  316. {ingestr-0.13.94 → ingestr-0.14.0}/styles/Google/Ellipses.yml +0 -0
  317. {ingestr-0.13.94 → ingestr-0.14.0}/styles/Google/EmDash.yml +0 -0
  318. {ingestr-0.13.94 → ingestr-0.14.0}/styles/Google/Exclamation.yml +0 -0
  319. {ingestr-0.13.94 → ingestr-0.14.0}/styles/Google/FirstPerson.yml +0 -0
  320. {ingestr-0.13.94 → ingestr-0.14.0}/styles/Google/Gender.yml +0 -0
  321. {ingestr-0.13.94 → ingestr-0.14.0}/styles/Google/GenderBias.yml +0 -0
  322. {ingestr-0.13.94 → ingestr-0.14.0}/styles/Google/HeadingPunctuation.yml +0 -0
  323. {ingestr-0.13.94 → ingestr-0.14.0}/styles/Google/Headings.yml +0 -0
  324. {ingestr-0.13.94 → ingestr-0.14.0}/styles/Google/Latin.yml +0 -0
  325. {ingestr-0.13.94 → ingestr-0.14.0}/styles/Google/LyHyphens.yml +0 -0
  326. {ingestr-0.13.94 → ingestr-0.14.0}/styles/Google/OptionalPlurals.yml +0 -0
  327. {ingestr-0.13.94 → ingestr-0.14.0}/styles/Google/Ordinal.yml +0 -0
  328. {ingestr-0.13.94 → ingestr-0.14.0}/styles/Google/OxfordComma.yml +0 -0
  329. {ingestr-0.13.94 → ingestr-0.14.0}/styles/Google/Parens.yml +0 -0
  330. {ingestr-0.13.94 → ingestr-0.14.0}/styles/Google/Passive.yml +0 -0
  331. {ingestr-0.13.94 → ingestr-0.14.0}/styles/Google/Periods.yml +0 -0
  332. {ingestr-0.13.94 → ingestr-0.14.0}/styles/Google/Quotes.yml +0 -0
  333. {ingestr-0.13.94 → ingestr-0.14.0}/styles/Google/Ranges.yml +0 -0
  334. {ingestr-0.13.94 → ingestr-0.14.0}/styles/Google/Semicolons.yml +0 -0
  335. {ingestr-0.13.94 → ingestr-0.14.0}/styles/Google/Slang.yml +0 -0
  336. {ingestr-0.13.94 → ingestr-0.14.0}/styles/Google/Spacing.yml +0 -0
  337. {ingestr-0.13.94 → ingestr-0.14.0}/styles/Google/Spelling.yml +0 -0
  338. {ingestr-0.13.94 → ingestr-0.14.0}/styles/Google/Units.yml +0 -0
  339. {ingestr-0.13.94 → ingestr-0.14.0}/styles/Google/We.yml +0 -0
  340. {ingestr-0.13.94 → ingestr-0.14.0}/styles/Google/Will.yml +0 -0
  341. {ingestr-0.13.94 → ingestr-0.14.0}/styles/Google/WordList.yml +0 -0
  342. {ingestr-0.13.94 → ingestr-0.14.0}/styles/Google/meta.json +0 -0
  343. {ingestr-0.13.94 → ingestr-0.14.0}/styles/Google/vocab.txt +0 -0
  344. {ingestr-0.13.94 → ingestr-0.14.0}/styles/bruin/Ingestr.yml +0 -0
  345. {ingestr-0.13.94 → ingestr-0.14.0}/styles/config/vocabularies/bruin/accept.txt +0 -0
  346. {ingestr-0.13.94 → ingestr-0.14.0}/test.env.template +0 -0
@@ -58,6 +58,7 @@ jobs:
58
58
  uses: astral-sh/setup-uv@v3
59
59
  - name: Install pip dependencies
60
60
  run: make deps-ci
61
+
61
62
  - name: run tests (macOS)
62
63
  if: matrix.os == 'macos-13'
63
64
  run: make test-ci
@@ -31,11 +31,14 @@ test-specific: venv lock-deps
31
31
  . venv/bin/activate; set -a; source test.env; set +a; TESTCONTAINERS_RYUK_DISABLED=true pytest -n auto -rP -vv --tb=short --capture=no -k $(test)
32
32
 
33
33
  lint-ci:
34
- ruff format ingestr && ruff check ingestr --fix
35
- mypy --config-file pyproject.toml --explicit-package-bases ingestr
34
+ @ruff format --diff ingestr && ruff check ingestr && mypy --config-file pyproject.toml --explicit-package-bases ingestr
35
+
36
+ format:
37
+ @ruff format ingestr && ruff check ingestr --fix
38
+ @mypy --config-file pyproject.toml --explicit-package-bases ingestr
36
39
 
37
40
  lint: venv lock-deps
38
- . venv/bin/activate; $(MAKE) lint-ci
41
+ . venv/bin/activate; $(MAKE) format
39
42
 
40
43
  lint-docs:
41
44
  vale docs --glob='!**/.vitepress/**'
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ingestr
3
- Version: 0.13.94
3
+ Version: 0.14.0
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
@@ -48,7 +48,7 @@ Requires-Dist: dataclasses-json==0.6.7
48
48
  Requires-Dist: decorator==5.2.1
49
49
  Requires-Dist: deprecation==2.1.0
50
50
  Requires-Dist: dlt-cratedb==0.0.2
51
- Requires-Dist: dlt==1.11.0
51
+ Requires-Dist: dlt==1.16.0
52
52
  Requires-Dist: dnspython==2.7.0
53
53
  Requires-Dist: duckdb-engine==0.17.0
54
54
  Requires-Dist: duckdb==1.2.1
@@ -104,7 +104,6 @@ Requires-Dist: jsonpath-ng==1.7.0
104
104
  Requires-Dist: leb128==1.0.8
105
105
  Requires-Dist: lxml==5.3.1
106
106
  Requires-Dist: lz4==4.4.3
107
- Requires-Dist: makefun==1.15.6
108
107
  Requires-Dist: mako==1.3.9
109
108
  Requires-Dist: markdown-it-py==3.0.0
110
109
  Requires-Dist: markupsafe==3.0.2
@@ -118,7 +117,7 @@ Requires-Dist: mysql-connector-python==9.2.0
118
117
  Requires-Dist: numpy==2.2.3
119
118
  Requires-Dist: oauthlib==3.2.2
120
119
  Requires-Dist: openpyxl==3.1.5
121
- Requires-Dist: orjson==3.10.15
120
+ Requires-Dist: orjson==3.11.3
122
121
  Requires-Dist: packaging==24.2
123
122
  Requires-Dist: pandas==2.2.3
124
123
  Requires-Dist: paramiko==3.5.1
@@ -161,7 +160,7 @@ Requires-Dist: reactivex==4.0.4
161
160
  Requires-Dist: requests-file==2.1.0
162
161
  Requires-Dist: requests-oauthlib==1.3.1
163
162
  Requires-Dist: requests-toolbelt==1.0.0
164
- Requires-Dist: requests==2.32.3
163
+ Requires-Dist: requests==2.32.5
165
164
  Requires-Dist: requirements-parser==0.11.0
166
165
  Requires-Dist: rich-argparse==1.7.0
167
166
  Requires-Dist: rich==13.9.4
@@ -195,6 +194,7 @@ Requires-Dist: thrift==0.16.0
195
194
  Requires-Dist: time-machine==2.16.0
196
195
  Requires-Dist: tomlkit==0.13.2
197
196
  Requires-Dist: tqdm==4.67.1
197
+ Requires-Dist: trino==0.336.0
198
198
  Requires-Dist: typer==0.13.1
199
199
  Requires-Dist: types-requests==2.32.0.20240907
200
200
  Requires-Dist: types-setuptools==75.8.2.20250305
@@ -333,7 +333,7 @@ Pull requests are welcome. However, please open an issue first to discuss what y
333
333
  <tr>
334
334
  <td>Elasticsearch</td>
335
335
  <td>✅</td>
336
- <td>-</td>
336
+ <td>✅</td>
337
337
  </tr>
338
338
  <tr>
339
339
  <td>GCP Spanner</td>
@@ -353,7 +353,7 @@ Pull requests are welcome. However, please open an issue first to discuss what y
353
353
  <tr>
354
354
  <td>MongoDB</td>
355
355
  <td>✅</td>
356
- <td>❌</td>
356
+ <td>✅</td>
357
357
  </tr>
358
358
  <tr>
359
359
  <td>MotherDuck</td>
@@ -395,6 +395,11 @@ Pull requests are welcome. However, please open an issue first to discuss what y
395
395
  <td>✅</td>
396
396
  <td>❌</td>
397
397
  </tr>
398
+ <tr>
399
+ <td>Trino</td>
400
+ <td>✅</td>
401
+ <td>✅</td>
402
+ </tr>
398
403
  <tr>
399
404
  <td colspan="3" style='text-align:center;'><strong>Platforms</strong></td>
400
405
  </tr>
@@ -115,7 +115,7 @@ Pull requests are welcome. However, please open an issue first to discuss what y
115
115
  <tr>
116
116
  <td>Elasticsearch</td>
117
117
  <td>✅</td>
118
- <td>-</td>
118
+ <td>✅</td>
119
119
  </tr>
120
120
  <tr>
121
121
  <td>GCP Spanner</td>
@@ -135,7 +135,7 @@ Pull requests are welcome. However, please open an issue first to discuss what y
135
135
  <tr>
136
136
  <td>MongoDB</td>
137
137
  <td>✅</td>
138
- <td>❌</td>
138
+ <td>✅</td>
139
139
  </tr>
140
140
  <tr>
141
141
  <td>MotherDuck</td>
@@ -177,6 +177,11 @@ Pull requests are welcome. However, please open an issue first to discuss what y
177
177
  <td>✅</td>
178
178
  <td>❌</td>
179
179
  </tr>
180
+ <tr>
181
+ <td>Trino</td>
182
+ <td>✅</td>
183
+ <td>✅</td>
184
+ </tr>
180
185
  <tr>
181
186
  <td colspan="3" style='text-align:center;'><strong>Platforms</strong></td>
182
187
  </tr>
@@ -114,6 +114,7 @@ export default defineConfig({
114
114
  { text: "Adjust", link: "/supported-sources/adjust.md" },
115
115
  { text: "Airtable", link: "/supported-sources/airtable.md" },
116
116
  { text: "Amazon Kinesis", link: "/supported-sources/kinesis.md" },
117
+ { text: "Anthropic", link: "/supported-sources/anthropic.md" },
117
118
  { text: "AppsFlyer", link: "/supported-sources/appsflyer.md" },
118
119
  { text: "Apple App Store", link: "/supported-sources/appstore.md"},
119
120
  { text: "Applovin", link: "/supported-sources/applovin.md"},
@@ -130,6 +131,7 @@ export default defineConfig({
130
131
  { text: "Fluxx", link: "/supported-sources/fluxx.md" },
131
132
  { text: "Frankfurter", link: "/supported-sources/frankfurter.md" },
132
133
  { text: "Freshdesk", link: "/supported-sources/freshdesk.md" },
134
+ { text: "FundraiseUp", link: "/supported-sources/fundraiseup.md" },
133
135
  { text: "Trustpilot", link: "/supported-sources/trustpilot.md" },
134
136
  { text: "Google Cloud Storage (GCS)", link: "/supported-sources/gcs.md" },
135
137
  { text: "Google Analytics", link: "/supported-sources/google_analytics.md" },
@@ -0,0 +1,356 @@
1
+ # Anthropic
2
+
3
+ [Anthropic](https://www.anthropic.com/) is an AI safety company that builds Claude, a family of large language models. This source enables you to extract comprehensive data from the Anthropic Admin API, including Claude Code usage metrics, API usage reports, cost data, and organization management information.
4
+
5
+ ## URI Format
6
+
7
+ The URI format for Anthropic is:
8
+
9
+ ```plaintext
10
+ anthropic://?api_key=<admin_api_key>
11
+ ```
12
+
13
+ ### URI Parameters:
14
+
15
+ - `api_key` (required): Your Anthropic Admin API key (must start with `sk-ant-admin...`)
16
+
17
+ ::: warning Admin API Key Required
18
+ This source requires an **Admin API key** which is different from standard API keys. Only organization members with the admin role can provision Admin API keys through the [Anthropic Console](https://console.anthropic.com/settings/admin-keys).
19
+
20
+ The Admin API is unavailable for individual accounts. To use this source, you must have an organization set up in Console → Settings → Organization.
21
+ :::
22
+
23
+ ## Available Tables
24
+
25
+ ### claude_code_usage
26
+
27
+ The `claude_code_usage` table contains daily aggregated usage metrics for Claude Code users in your organization. This data helps you analyze developer productivity and monitor Claude Code adoption.
28
+
29
+ #### Schema
30
+
31
+ | Column | Type | Description |
32
+ |--------|------|-------------|
33
+ | `date` | `string` | Date in RFC 3339 format (UTC timestamp) |
34
+ | `actor_type` | `string` | Type of actor (`user_actor` or `api_actor`) |
35
+ | `actor_id` | `string` | Email address for users or API key name for API actors |
36
+ | `organization_id` | `string` | Organization UUID |
37
+ | `customer_type` | `string` | Type of customer account (`api` or `subscription`) |
38
+ | `terminal_type` | `string` | Terminal/environment where Claude Code was used (e.g., `vscode`, `iTerm.app`) |
39
+ | `num_sessions` | `integer` | Number of distinct Claude Code sessions |
40
+ | `lines_added` | `integer` | Total lines of code added across all files |
41
+ | `lines_removed` | `integer` | Total lines of code removed across all files |
42
+ | `commits_by_claude_code` | `integer` | Number of git commits created through Claude Code |
43
+ | `pull_requests_by_claude_code` | `integer` | Number of pull requests created through Claude Code |
44
+ | `edit_tool_accepted` | `integer` | Number of Edit tool proposals accepted |
45
+ | `edit_tool_rejected` | `integer` | Number of Edit tool proposals rejected |
46
+ | `multi_edit_tool_accepted` | `integer` | Number of MultiEdit tool proposals accepted |
47
+ | `multi_edit_tool_rejected` | `integer` | Number of MultiEdit tool proposals rejected |
48
+ | `write_tool_accepted` | `integer` | Number of Write tool proposals accepted |
49
+ | `write_tool_rejected` | `integer` | Number of Write tool proposals rejected |
50
+ | `notebook_edit_tool_accepted` | `integer` | Number of NotebookEdit tool proposals accepted |
51
+ | `notebook_edit_tool_rejected` | `integer` | Number of NotebookEdit tool proposals rejected |
52
+ | `total_input_tokens` | `integer` | Total input tokens across all models |
53
+ | `total_output_tokens` | `integer` | Total output tokens across all models |
54
+ | `total_cache_read_tokens` | `integer` | Total cache read tokens across all models |
55
+ | `total_cache_creation_tokens` | `integer` | Total cache creation tokens across all models |
56
+ | `total_estimated_cost_cents` | `integer` | Total estimated cost in cents USD |
57
+ | `models_used` | `string` | Comma-separated list of Claude models used |
58
+
59
+ ### usage_report
60
+
61
+ The `usage_report` table contains detailed token usage metrics from the Messages API, aggregated by time bucket, workspace, API key, model, and service tier.
62
+
63
+ #### Schema
64
+
65
+ | Column | Type | Description |
66
+ |--------|------|-------------|
67
+ | `bucket` | `string` | Time bucket in ISO 8601 format |
68
+ | `api_key_id` | `string` | API key identifier |
69
+ | `workspace_id` | `string` | Workspace identifier |
70
+ | `model` | `string` | Claude model used |
71
+ | `service_tier` | `string` | Service tier (scale or default) |
72
+ | `input_tokens` | `integer` | Number of input tokens |
73
+ | `output_tokens` | `integer` | Number of output tokens |
74
+ | `input_cached_tokens` | `integer` | Number of cached input tokens |
75
+ | `api_first_response_latency_ms_p50` | `float` | 50th percentile first response latency in milliseconds |
76
+ | `api_first_response_latency_ms_p95` | `float` | 95th percentile first response latency in milliseconds |
77
+ | `api_first_response_latency_ms_p99` | `float` | 99th percentile first response latency in milliseconds |
78
+ | `api_total_latency_ms_p50` | `float` | 50th percentile total latency in milliseconds |
79
+ | `api_total_latency_ms_p95` | `float` | 95th percentile total latency in milliseconds |
80
+ | `api_total_latency_ms_p99` | `float` | 99th percentile total latency in milliseconds |
81
+ | `api_request_count` | `integer` | Number of API requests |
82
+ | `server_tool_search_count` | `integer` | Number of server tool searches |
83
+ | `server_tool_result_count` | `integer` | Number of server tool results |
84
+
85
+ ### cost_report
86
+
87
+ The `cost_report` table contains aggregated cost data broken down by workspace and cost description.
88
+
89
+ #### Schema
90
+
91
+ | Column | Type | Description |
92
+ |--------|------|-------------|
93
+ | `bucket` | `string` | Time bucket in ISO 8601 format |
94
+ | `workspace_id` | `string` | Workspace identifier |
95
+ | `description` | `string` | Cost description (e.g., "Usage - claude-3-5-sonnet-20241022") |
96
+ | `amount_cents` | `integer` | Cost amount in cents USD |
97
+
98
+ ### organization
99
+
100
+ The `organization` table contains information about your Anthropic organization.
101
+
102
+ #### Schema
103
+
104
+ | Column | Type | Description |
105
+ |--------|------|-------------|
106
+ | `id` | `string` | Organization UUID |
107
+ | `name` | `string` | Organization name |
108
+ | `settings` | `object` | Organization settings (JSON) |
109
+ | `created_at` | `string` | Creation timestamp |
110
+
111
+ ### workspaces
112
+
113
+ The `workspaces` table contains all workspaces in your organization.
114
+
115
+ #### Schema
116
+
117
+ | Column | Type | Description |
118
+ |--------|------|-------------|
119
+ | `id` | `string` | Workspace UUID |
120
+ | `name` | `string` | Workspace name |
121
+ | `type` | `string` | Workspace type (default or custom) |
122
+ | `created_at` | `string` | Creation timestamp |
123
+
124
+ ### api_keys
125
+
126
+ The `api_keys` table contains all API keys in your organization.
127
+
128
+ #### Schema
129
+
130
+ | Column | Type | Description |
131
+ |--------|------|-------------|
132
+ | `id` | `string` | API key UUID |
133
+ | `name` | `string` | API key name |
134
+ | `status` | `string` | API key status (active or disabled) |
135
+ | `created_at` | `string` | Creation timestamp |
136
+ | `workspace_id` | `string` | Associated workspace UUID |
137
+ | `created_by_user_id` | `string` | User who created the key |
138
+ | `last_used_at` | `string` | Last usage timestamp |
139
+
140
+ ### invites
141
+
142
+ The `invites` table contains all pending organization invites.
143
+
144
+ #### Schema
145
+
146
+ | Column | Type | Description |
147
+ |--------|------|-------------|
148
+ | `id` | `string` | Invite UUID |
149
+ | `email` | `string` | Invitee email address |
150
+ | `role` | `string` | Invited role (admin or member) |
151
+ | `expires_at` | `string` | Expiration timestamp |
152
+ | `workspace_ids` | `array` | List of workspace UUIDs |
153
+ | `created_at` | `string` | Creation timestamp |
154
+ | `created_by_user_id` | `string` | User who created the invite |
155
+
156
+ ### users
157
+
158
+ The `users` table contains all users in your organization.
159
+
160
+ #### Schema
161
+
162
+ | Column | Type | Description |
163
+ |--------|------|-------------|
164
+ | `id` | `string` | User UUID |
165
+ | `email` | `string` | User email address |
166
+ | `name` | `string` | User full name |
167
+ | `role` | `string` | User role (admin or member) |
168
+ | `created_at` | `string` | Creation timestamp |
169
+ | `last_login_at` | `string` | Last login timestamp |
170
+
171
+ ### workspace_members
172
+
173
+ The `workspace_members` table contains workspace membership information.
174
+
175
+ #### Schema
176
+
177
+ | Column | Type | Description |
178
+ |--------|------|-------------|
179
+ | `workspace_id` | `string` | Workspace UUID |
180
+ | `user_id` | `string` | User UUID |
181
+ | `role` | `string` | Role in workspace |
182
+ | `added_at` | `string` | When user was added to workspace |
183
+
184
+ ## Examples
185
+
186
+ ### Basic Usage
187
+
188
+ Load all Claude Code usage data to a DuckDB database:
189
+
190
+ ```bash
191
+ ingestr ingest \
192
+ --source-uri "anthropic://?api_key=sk-ant-admin-..." \
193
+ --source-table "claude_code_usage" \
194
+ --dest-uri "duckdb:///anthropic_data.db" \
195
+ --dest-table "claude_code_usage"
196
+ ```
197
+
198
+ ### Incremental Loading
199
+
200
+ Load data incrementally starting from a specific date:
201
+
202
+ ```bash
203
+ ingestr ingest \
204
+ --source-uri "anthropic://?api_key=sk-ant-admin-..." \
205
+ --source-table "claude_code_usage" \
206
+ --dest-uri "postgresql://user:password@localhost:5432/analytics" \
207
+ --dest-table "claude_code_usage" \
208
+ --interval-start "2024-01-01" \
209
+ --interval-end "2024-12-31"
210
+ ```
211
+
212
+ ### Load to BigQuery
213
+
214
+ ```bash
215
+ ingestr ingest \
216
+ --source-uri "anthropic://?api_key=sk-ant-admin-..." \
217
+ --source-table "claude_code_usage" \
218
+ --dest-uri "bigquery://project-id.dataset" \
219
+ --dest-table "claude_code_usage"
220
+ ```
221
+
222
+ ### Load Organization Data
223
+
224
+ ```bash
225
+ ingestr ingest \
226
+ --source-uri "anthropic://?api_key=sk-ant-admin-..." \
227
+ --source-table "organization" \
228
+ --dest-uri "duckdb:///anthropic_data.db" \
229
+ --dest-table "organization"
230
+ ```
231
+
232
+ ### Load Usage Report
233
+
234
+ ```bash
235
+ ingestr ingest \
236
+ --source-uri "anthropic://?api_key=sk-ant-admin-..." \
237
+ --source-table "usage_report" \
238
+ --dest-uri "postgresql://user:password@localhost:5432/analytics" \
239
+ --dest-table "api_usage" \
240
+ --interval-start "2024-01-01" \
241
+ --interval-end "2024-12-31"
242
+ ```
243
+
244
+ ### Load Cost Report
245
+
246
+ ```bash
247
+ ingestr ingest \
248
+ --source-uri "anthropic://?api_key=sk-ant-admin-..." \
249
+ --source-table "cost_report" \
250
+ --dest-uri "duckdb:///costs.db" \
251
+ --dest-table "anthropic_costs"
252
+ ```
253
+
254
+ ### Load All Users and Workspaces
255
+
256
+ ```bash
257
+ # Load users
258
+ ingestr ingest \
259
+ --source-uri "anthropic://?api_key=sk-ant-admin-..." \
260
+ --source-table "users" \
261
+ --dest-uri "duckdb:///org_data.db" \
262
+ --dest-table "users"
263
+
264
+ # Load workspaces
265
+ ingestr ingest \
266
+ --source-uri "anthropic://?api_key=sk-ant-admin-..." \
267
+ --source-table "workspaces" \
268
+ --dest-uri "duckdb:///org_data.db" \
269
+ --dest-table "workspaces"
270
+
271
+ # Load workspace members
272
+ ingestr ingest \
273
+ --source-uri "anthropic://?api_key=sk-ant-admin-..." \
274
+ --source-table "workspace_members" \
275
+ --dest-uri "duckdb:///org_data.db" \
276
+ --dest-table "workspace_members"
277
+ ```
278
+
279
+ ## Incremental Loading
280
+
281
+ The following tables support incremental loading:
282
+ - `claude_code_usage` - incremental based on the `date` field
283
+ - `usage_report` - supports date range filtering with `--interval-start` and `--interval-end`
284
+ - `cost_report` - supports date range filtering with `--interval-start` and `--interval-end`
285
+
286
+ Other tables (`organization`, `workspaces`, `api_keys`, `invites`, `users`, `workspace_members`) use full refresh mode as they represent current state data.
287
+
288
+ When running incremental loads:
289
+ - The source tracks the last loaded date for `claude_code_usage`
290
+ - Subsequent runs will only fetch new data
291
+ - Use `--interval-start` and `--interval-end` to specify a custom date range
292
+ - Default start date is January 1, 2023
293
+
294
+ ## Use Cases
295
+
296
+ ### Developer Productivity Analysis
297
+
298
+ Track how your team uses Claude Code:
299
+ - Monitor adoption rates across different teams
300
+ - Analyze code generation patterns
301
+ - Track tool acceptance rates
302
+
303
+ ### Cost Monitoring
304
+
305
+ Monitor Claude Code costs:
306
+ - Track token usage by user and model
307
+ - Analyze spending patterns
308
+ - Allocate costs by team or project
309
+
310
+ ### Executive Dashboards
311
+
312
+ Create reports showing:
313
+ - Claude Code impact on development velocity
314
+ - Lines of code generated vs. manual coding
315
+ - Commit and PR creation metrics
316
+ - API usage patterns across workspaces
317
+ - Cost allocation by team and project
318
+
319
+ ### Organization Management
320
+
321
+ Monitor and audit your organization:
322
+ - Track user access and permissions
323
+ - Monitor API key usage and lifecycle
324
+ - Audit workspace memberships
325
+ - Track pending invites and onboarding
326
+
327
+ ## Data Freshness
328
+
329
+ Claude Code analytics data typically appears within 1 hour of user activity completion. The API provides daily aggregated metrics only.
330
+
331
+ ## Rate Limits
332
+
333
+ The Anthropic Admin API has rate limits in place. The source handles pagination automatically and respects these limits.
334
+
335
+ ## Notes
336
+
337
+ - This source only tracks Claude Code usage on the Anthropic API (1st party)
338
+ - Usage on Amazon Bedrock, Google Vertex AI, or other third-party platforms is not included
339
+ - All dates and timestamps are in UTC
340
+ - The source requires organization-level access (not available for individual accounts)
341
+
342
+ ## Available Tables Summary
343
+
344
+ | Table | Incremental | Primary Key | Description |
345
+ |-------|-------------|-------------|-------------|
346
+ | `claude_code_usage` | ✅ | date, actor_type, actor_id, terminal_type | Daily Claude Code usage metrics |
347
+ | `usage_report` | Date Range | bucket, api_key_id, workspace_id, model, service_tier | API usage and latency metrics |
348
+ | `cost_report` | Date Range | bucket, workspace_id, description | Cost breakdown by workspace |
349
+ | `organization` | ❌ | - | Organization information |
350
+ | `workspaces` | ❌ | id | Workspace list |
351
+ | `api_keys` | ❌ | id | API key management |
352
+ | `invites` | ❌ | id | Pending invitations |
353
+ | `users` | ❌ | id | User list |
354
+ | `workspace_members` | ❌ | workspace_id, user_id | Workspace memberships |
355
+
356
+ For feature requests or issues, please create a GitHub issue at https://github.com/bruin-data/ingestr
@@ -0,0 +1,83 @@
1
+ # FundraiseUp
2
+
3
+ [FundraiseUp](https://fundraiseup.com/) is a modern donation platform that helps non-profits increase their online fundraising revenue.
4
+
5
+ ingestr supports FundraiseUp as a source.
6
+
7
+ ## URI format
8
+
9
+ The URI format for FundraiseUp is:
10
+
11
+ ```
12
+ fundraiseup://?api_key=<api_key>
13
+ ```
14
+
15
+ URI parameters:
16
+ - `api_key`: Your FundraiseUp API key (required).
17
+
18
+ ## Example usage
19
+
20
+ Assuming your API key is `your_api_key`, you can ingest donations into DuckDB using:
21
+
22
+ ```bash
23
+ ingestr ingest \
24
+ --source-uri 'fundraiseup://?api_key=your_api_key' \
25
+ --source-table 'donations' \
26
+ --dest-uri duckdb:///fundraiseup.duckdb \
27
+ --dest-table 'main.donations'
28
+ ```
29
+
30
+ ## Tables
31
+
32
+ The FundraiseUp source supports the following tables:
33
+
34
+ | Table | PK | Inc Key | Inc Strategy | Details |
35
+ | --------------- | ----------- | --------------- | ------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------- |
36
+ | `donations` | id | - | replace | All donation records including amounts, supporters, and payment details |
37
+ | `events` | id | - | replace | Audit log events for tracking changes and activities |
38
+ | `fundraisers` | id | - | replace | Fundraiser campaigns (requires appropriate API permissions) |
39
+ | `recurring_plans` | id | - | replace | Recurring donation plans and subscription details |
40
+ | `supporters` | id | - | replace | Donor/supporter information including contact details |
41
+
42
+ Use one of these as the `--source-table` parameter in the `ingestr ingest` command.
43
+
44
+ ## Notes
45
+
46
+ - **Authentication**: The FundraiseUp API uses Bearer token authentication. Make sure your API key has the necessary permissions for the resources you want to access.
47
+ - **Incremental Loading**: The FundraiseUp source does not support incremental loading. All data is fetched with a full refresh (replace strategy).
48
+ - **Date Filtering**: The API does not support date filtering for any of the endpoints.
49
+ - **Permissions**: The `fundraisers` endpoint may return a 403 Forbidden error if your API key doesn't have the required permissions. Contact FundraiseUp support to enable access if needed.
50
+
51
+ ## Example: Ingesting all available data
52
+
53
+ To ingest all available data from FundraiseUp:
54
+
55
+ ```bash
56
+ # Ingest donations
57
+ ingestr ingest \
58
+ --source-uri 'fundraiseup://?api_key=your_api_key' \
59
+ --source-table 'donations' \
60
+ --dest-uri duckdb:///fundraiseup.db \
61
+ --dest-table 'main.donations'
62
+
63
+ # Ingest events
64
+ ingestr ingest \
65
+ --source-uri 'fundraiseup://?api_key=your_api_key' \
66
+ --source-table 'events' \
67
+ --dest-uri duckdb:///fundraiseup.db \
68
+ --dest-table 'main.events'
69
+
70
+ # Ingest recurring plans
71
+ ingestr ingest \
72
+ --source-uri 'fundraiseup://?api_key=your_api_key' \
73
+ --source-table 'recurring_plans' \
74
+ --dest-uri duckdb:///fundraiseup.db \
75
+ --dest-table 'main.recurring_plans'
76
+
77
+ # Ingest supporters
78
+ ingestr ingest \
79
+ --source-uri 'fundraiseup://?api_key=your_api_key' \
80
+ --source-table 'supporters' \
81
+ --dest-uri duckdb:///fundraiseup.db \
82
+ --dest-table 'main.supporters'
83
+ ```
@@ -0,0 +1,96 @@
1
+ # Trino
2
+ Trino (formerly PrestoSQL) is a distributed SQL query engine designed for fast analytics on large datasets across multiple data sources.
3
+
4
+ ingestr supports Trino as both a source and destination.
5
+
6
+ > [!WARNING]
7
+ > Trino is currently supported as a beta platform, which means that some features might not work as expected.
8
+
9
+ ## URI format
10
+ The URI format for Trino is as follows:
11
+
12
+ ```plaintext
13
+ trino://<username>:<password>@<host>:<port>/<catalog>
14
+ ```
15
+
16
+ URI parameters:
17
+ - `username`: your Trino username (required)
18
+ - `password`: your Trino password (optional, depending on authentication)
19
+ - `host`: the Trino server hostname or IP address
20
+ - `port`: the Trino server port (default: 8080)
21
+ - `catalog`: the Trino catalog to connect to
22
+
23
+ The same URI structure can be used both for sources and destinations. You can read more about SQLAlchemy's Trino dialect [here](https://github.com/trinodb/trino-python-client).
24
+
25
+ ### Authentication methods
26
+ Trino supports various authentication methods:
27
+
28
+ 1. **No Authentication**: For development/testing environments
29
+ ```
30
+ trino://user@localhost:8080/catalog
31
+ ```
32
+
33
+ 2. **Basic Authentication**: Username and password
34
+ ```
35
+ trino://user:password@localhost:8080/catalog
36
+ ```
37
+
38
+ 3. **Other Methods**: For Kerberos, JWT, or certificate-based authentication, consult your Trino administrator for the appropriate connection parameters.
39
+
40
+ ## Table naming
41
+ When specifying tables for Trino (both source and destination), use the format:
42
+
43
+ ```plaintext
44
+ schema.table_name
45
+ ```
46
+
47
+ For example:
48
+ - `default.users` - accesses the `users` table in the `default` schema
49
+ - `analytics.events` - accesses the `events` table in the `analytics` schema
50
+
51
+ The catalog is specified in the connection URI, not in the table name.
52
+
53
+ ## Examples
54
+
55
+ ### Using Trino as a source
56
+ ```bash
57
+ ingestr ingest \
58
+ --source-uri 'trino://admin@localhost:8080/iceberg' \
59
+ --source-table 'default.source_table' \
60
+ --dest-uri 'duckdb:///output.db' \
61
+ --dest-table 'main.destination_table'
62
+ ```
63
+
64
+ ### Using Trino as a destination
65
+ ```bash
66
+ ingestr ingest \
67
+ --source-uri 'postgresql://user:pass@localhost:5432/sourcedb' \
68
+ --source-table 'public.customers' \
69
+ --dest-uri 'trino://admin@localhost:8080/hive' \
70
+ --dest-table 'default.customers'
71
+ ```
72
+
73
+ ### With authentication
74
+ ```bash
75
+ ingestr ingest \
76
+ --source-uri 'mysql://user:pass@localhost:3306/sourcedb' \
77
+ --source-table 'orders' \
78
+ --dest-uri 'trino://user:password@trino-server:8443/iceberg' \
79
+ --dest-table 'sales.orders'
80
+ ```
81
+
82
+ ## Supported write dispositions
83
+ When using Trino as a destination, all the existing write dispositions are supported.
84
+
85
+ ## Data type handling
86
+ Trino automatically handles most SQL data type conversions. When used as a destination:
87
+ - JSON types are converted to TEXT/VARCHAR
88
+ - Binary types are converted to TEXT/VARCHAR
89
+ - All integer types are mapped to BIGINT for compatibility
90
+
91
+ ## Limitations
92
+
93
+ ### As a destination
94
+ - Case-sensitive identifiers (table and column names preserve case)
95
+ - JSON and Binary types are converted to STRING
96
+ - Memory catalog does not support DELETE and UPDATE operations (affects merge/scd2 in test environments)