ingestr 0.13.86__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.

Files changed (342) hide show
  1. {ingestr-0.13.86 → ingestr-0.13.87}/PKG-INFO +1 -1
  2. {ingestr-0.13.86 → ingestr-0.13.87}/docs/.vitepress/config.mjs +1 -0
  3. {ingestr-0.13.86 → ingestr-0.13.87}/docs/supported-sources/appstore.md +12 -4
  4. {ingestr-0.13.86 → ingestr-0.13.87}/docs/supported-sources/chess.md +5 -4
  5. ingestr-0.13.87/docs/supported-sources/clickup.md +45 -0
  6. {ingestr-0.13.86 → ingestr-0.13.87}/docs/supported-sources/facebook-ads.md +9 -108
  7. {ingestr-0.13.86 → ingestr-0.13.87}/docs/supported-sources/frankfurter.md +7 -3
  8. {ingestr-0.13.86 → ingestr-0.13.87}/docs/supported-sources/freshdesk.md +9 -8
  9. {ingestr-0.13.86 → ingestr-0.13.87}/docs/supported-sources/google_analytics.md +8 -1
  10. ingestr-0.13.87/docs/supported-sources/gorgias.md +42 -0
  11. ingestr-0.13.87/docs/supported-sources/hubspot.md +52 -0
  12. {ingestr-0.13.86 → ingestr-0.13.87}/docs/supported-sources/isoc-pulse.md +18 -15
  13. ingestr-0.13.87/docs/supported-sources/klaviyo.md +57 -0
  14. ingestr-0.13.87/docs/supported-sources/linear.md +57 -0
  15. {ingestr-0.13.86 → ingestr-0.13.87}/docs/supported-sources/linkedin_ads.md +6 -3
  16. {ingestr-0.13.86 → ingestr-0.13.87}/docs/supported-sources/mixpanel.md +4 -2
  17. ingestr-0.13.87/docs/supported-sources/personio.md +58 -0
  18. {ingestr-0.13.86 → ingestr-0.13.87}/docs/supported-sources/phantombuster.md +6 -2
  19. ingestr-0.13.87/docs/supported-sources/pinterest.md +30 -0
  20. {ingestr-0.13.86 → ingestr-0.13.87}/docs/supported-sources/pipedrive.md +8 -6
  21. {ingestr-0.13.86 → ingestr-0.13.87}/docs/supported-sources/quickbooks.md +7 -5
  22. {ingestr-0.13.86 → ingestr-0.13.87}/docs/supported-sources/revenuecat.md +8 -3
  23. ingestr-0.13.87/docs/supported-sources/shopify.md +45 -0
  24. {ingestr-0.13.86 → ingestr-0.13.87}/docs/supported-sources/slack.md +8 -4
  25. {ingestr-0.13.86 → ingestr-0.13.87}/docs/supported-sources/solidgate.md +7 -4
  26. {ingestr-0.13.86 → ingestr-0.13.87}/docs/supported-sources/tiktok-ads.md +5 -0
  27. {ingestr-0.13.86 → ingestr-0.13.87}/docs/supported-sources/trustpilot.md +4 -3
  28. ingestr-0.13.87/docs/supported-sources/zendesk.md +87 -0
  29. ingestr-0.13.87/docs/supported-sources/zoom.md +39 -0
  30. {ingestr-0.13.86 → ingestr-0.13.87}/ingestr/src/appstore/__init__.py +1 -0
  31. ingestr-0.13.87/ingestr/src/buildinfo.py +1 -0
  32. {ingestr-0.13.86 → ingestr-0.13.87}/ingestr/src/chess/__init__.py +1 -1
  33. {ingestr-0.13.86 → ingestr-0.13.87}/ingestr/src/klaviyo/__init__.py +5 -5
  34. {ingestr-0.13.86 → ingestr-0.13.87}/ingestr/src/mongodb/__init__.py +1 -1
  35. {ingestr-0.13.86 → ingestr-0.13.87}/ingestr/src/mongodb/helpers.py +36 -15
  36. {ingestr-0.13.86 → ingestr-0.13.87}/ingestr/src/revenuecat/__init__.py +18 -13
  37. {ingestr-0.13.86 → ingestr-0.13.87}/ingestr/src/revenuecat/helpers.py +29 -0
  38. {ingestr-0.13.86 → ingestr-0.13.87}/ingestr/src/shopify/__init__.py +1 -1
  39. {ingestr-0.13.86 → ingestr-0.13.87}/ingestr/src/sources.py +2 -0
  40. ingestr-0.13.86/docs/supported-sources/clickup.md +0 -45
  41. ingestr-0.13.86/docs/supported-sources/gorgias.md +0 -53
  42. ingestr-0.13.86/docs/supported-sources/hubspot.md +0 -49
  43. ingestr-0.13.86/docs/supported-sources/klaviyo.md +0 -50
  44. ingestr-0.13.86/docs/supported-sources/linear.md +0 -55
  45. ingestr-0.13.86/docs/supported-sources/personio.md +0 -51
  46. ingestr-0.13.86/docs/supported-sources/pinterest.md +0 -27
  47. ingestr-0.13.86/docs/supported-sources/shopify.md +0 -43
  48. ingestr-0.13.86/docs/supported-sources/zendesk.md +0 -84
  49. ingestr-0.13.86/docs/supported-sources/zoom.md +0 -47
  50. ingestr-0.13.86/ingestr/src/buildinfo.py +0 -1
  51. {ingestr-0.13.86 → ingestr-0.13.87}/.dlt/config.toml +0 -0
  52. {ingestr-0.13.86 → ingestr-0.13.87}/.dockerignore +0 -0
  53. {ingestr-0.13.86 → ingestr-0.13.87}/.githooks/pre-commit-hook.sh +0 -0
  54. {ingestr-0.13.86 → ingestr-0.13.87}/.github/workflows/deploy-docs.yml +0 -0
  55. {ingestr-0.13.86 → ingestr-0.13.87}/.github/workflows/release.yml +0 -0
  56. {ingestr-0.13.86 → ingestr-0.13.87}/.github/workflows/secrets-scan.yml +0 -0
  57. {ingestr-0.13.86 → ingestr-0.13.87}/.github/workflows/tests.yml +0 -0
  58. {ingestr-0.13.86 → ingestr-0.13.87}/.gitignore +0 -0
  59. {ingestr-0.13.86 → ingestr-0.13.87}/.gitleaksignore +0 -0
  60. {ingestr-0.13.86 → ingestr-0.13.87}/.python-version +0 -0
  61. {ingestr-0.13.86 → ingestr-0.13.87}/.vale.ini +0 -0
  62. {ingestr-0.13.86 → ingestr-0.13.87}/Dockerfile +0 -0
  63. {ingestr-0.13.86 → ingestr-0.13.87}/LICENSE.md +0 -0
  64. {ingestr-0.13.86 → ingestr-0.13.87}/Makefile +0 -0
  65. {ingestr-0.13.86 → ingestr-0.13.87}/README.md +0 -0
  66. {ingestr-0.13.86 → ingestr-0.13.87}/docs/.vitepress/theme/custom.css +0 -0
  67. {ingestr-0.13.86 → ingestr-0.13.87}/docs/.vitepress/theme/index.js +0 -0
  68. {ingestr-0.13.86 → ingestr-0.13.87}/docs/commands/example-uris.md +0 -0
  69. {ingestr-0.13.86 → ingestr-0.13.87}/docs/commands/ingest.md +0 -0
  70. {ingestr-0.13.86 → ingestr-0.13.87}/docs/getting-started/core-concepts.md +0 -0
  71. {ingestr-0.13.86 → ingestr-0.13.87}/docs/getting-started/incremental-loading.md +0 -0
  72. {ingestr-0.13.86 → ingestr-0.13.87}/docs/getting-started/quickstart.md +0 -0
  73. {ingestr-0.13.86 → ingestr-0.13.87}/docs/getting-started/telemetry.md +0 -0
  74. {ingestr-0.13.86 → ingestr-0.13.87}/docs/index.md +0 -0
  75. {ingestr-0.13.86 → ingestr-0.13.87}/docs/media/applovin_max.png +0 -0
  76. {ingestr-0.13.86 → ingestr-0.13.87}/docs/media/athena.png +0 -0
  77. {ingestr-0.13.86 → ingestr-0.13.87}/docs/media/clickhouse_img.png +0 -0
  78. {ingestr-0.13.86 → ingestr-0.13.87}/docs/media/clickup_ingestion.png +0 -0
  79. {ingestr-0.13.86 → ingestr-0.13.87}/docs/media/cratedb-destination.png +0 -0
  80. {ingestr-0.13.86 → ingestr-0.13.87}/docs/media/cratedb-source.png +0 -0
  81. {ingestr-0.13.86 → ingestr-0.13.87}/docs/media/freshdesk_ingestion.png +0 -0
  82. {ingestr-0.13.86 → ingestr-0.13.87}/docs/media/gcp_spanner_ingestion.png +0 -0
  83. {ingestr-0.13.86 → ingestr-0.13.87}/docs/media/github.png +0 -0
  84. {ingestr-0.13.86 → ingestr-0.13.87}/docs/media/google_analytics_realtime_report.png +0 -0
  85. {ingestr-0.13.86 → ingestr-0.13.87}/docs/media/googleanalytics.png +0 -0
  86. {ingestr-0.13.86 → ingestr-0.13.87}/docs/media/ingestion_elasticsearch_img.png +0 -0
  87. {ingestr-0.13.86 → ingestr-0.13.87}/docs/media/kinesis.bigquery.png +0 -0
  88. {ingestr-0.13.86 → ingestr-0.13.87}/docs/media/linear.png +0 -0
  89. {ingestr-0.13.86 → ingestr-0.13.87}/docs/media/linkedin_ads.png +0 -0
  90. {ingestr-0.13.86 → ingestr-0.13.87}/docs/media/mixpanel_ingestion.png +0 -0
  91. {ingestr-0.13.86 → ingestr-0.13.87}/docs/media/personio.png +0 -0
  92. {ingestr-0.13.86 → ingestr-0.13.87}/docs/media/personio_duckdb.png +0 -0
  93. {ingestr-0.13.86 → ingestr-0.13.87}/docs/media/phantombuster.png +0 -0
  94. {ingestr-0.13.86 → ingestr-0.13.87}/docs/media/pipedrive.png +0 -0
  95. {ingestr-0.13.86 → ingestr-0.13.87}/docs/media/quickbook_ingestion.png +0 -0
  96. {ingestr-0.13.86 → ingestr-0.13.87}/docs/media/sftp.png +0 -0
  97. {ingestr-0.13.86 → ingestr-0.13.87}/docs/media/stripe_postgres.png +0 -0
  98. {ingestr-0.13.86 → ingestr-0.13.87}/docs/media/tiktok.png +0 -0
  99. {ingestr-0.13.86 → ingestr-0.13.87}/docs/media/wise_ingestion.png +0 -0
  100. {ingestr-0.13.86 → ingestr-0.13.87}/docs/media/zoom_ingestion.png +0 -0
  101. {ingestr-0.13.86 → ingestr-0.13.87}/docs/supported-sources/adjust.md +0 -0
  102. {ingestr-0.13.86 → ingestr-0.13.87}/docs/supported-sources/airtable.md +0 -0
  103. {ingestr-0.13.86 → ingestr-0.13.87}/docs/supported-sources/applovin.md +0 -0
  104. {ingestr-0.13.86 → ingestr-0.13.87}/docs/supported-sources/applovin_max.md +0 -0
  105. {ingestr-0.13.86 → ingestr-0.13.87}/docs/supported-sources/appsflyer.md +0 -0
  106. {ingestr-0.13.86 → ingestr-0.13.87}/docs/supported-sources/asana.md +0 -0
  107. {ingestr-0.13.86 → ingestr-0.13.87}/docs/supported-sources/athena.md +0 -0
  108. {ingestr-0.13.86 → ingestr-0.13.87}/docs/supported-sources/attio.md +0 -0
  109. {ingestr-0.13.86 → ingestr-0.13.87}/docs/supported-sources/bigquery.md +0 -0
  110. {ingestr-0.13.86 → ingestr-0.13.87}/docs/supported-sources/clickhouse.md +0 -0
  111. {ingestr-0.13.86 → ingestr-0.13.87}/docs/supported-sources/cratedb.md +0 -0
  112. {ingestr-0.13.86 → ingestr-0.13.87}/docs/supported-sources/csv.md +0 -0
  113. {ingestr-0.13.86 → ingestr-0.13.87}/docs/supported-sources/custom_queries.md +0 -0
  114. {ingestr-0.13.86 → ingestr-0.13.87}/docs/supported-sources/databricks.md +0 -0
  115. {ingestr-0.13.86 → ingestr-0.13.87}/docs/supported-sources/db2.md +0 -0
  116. {ingestr-0.13.86 → ingestr-0.13.87}/docs/supported-sources/duckdb.md +0 -0
  117. {ingestr-0.13.86 → ingestr-0.13.87}/docs/supported-sources/dynamodb.md +0 -0
  118. {ingestr-0.13.86 → ingestr-0.13.87}/docs/supported-sources/elasticsearch.md +0 -0
  119. {ingestr-0.13.86 → ingestr-0.13.87}/docs/supported-sources/fluxx.md +0 -0
  120. {ingestr-0.13.86 → ingestr-0.13.87}/docs/supported-sources/gcs.md +0 -0
  121. {ingestr-0.13.86 → ingestr-0.13.87}/docs/supported-sources/github.md +0 -0
  122. {ingestr-0.13.86 → ingestr-0.13.87}/docs/supported-sources/google-ads.md +0 -0
  123. {ingestr-0.13.86 → ingestr-0.13.87}/docs/supported-sources/gsheets.md +0 -0
  124. {ingestr-0.13.86 → ingestr-0.13.87}/docs/supported-sources/influxdb.md +0 -0
  125. {ingestr-0.13.86 → ingestr-0.13.87}/docs/supported-sources/kafka.md +0 -0
  126. {ingestr-0.13.86 → ingestr-0.13.87}/docs/supported-sources/kinesis.md +0 -0
  127. {ingestr-0.13.86 → ingestr-0.13.87}/docs/supported-sources/mongodb.md +0 -0
  128. {ingestr-0.13.86 → ingestr-0.13.87}/docs/supported-sources/motherduck.md +0 -0
  129. {ingestr-0.13.86 → ingestr-0.13.87}/docs/supported-sources/mssql.md +0 -0
  130. {ingestr-0.13.86 → ingestr-0.13.87}/docs/supported-sources/mysql.md +0 -0
  131. {ingestr-0.13.86 → ingestr-0.13.87}/docs/supported-sources/notion.md +0 -0
  132. {ingestr-0.13.86 → ingestr-0.13.87}/docs/supported-sources/oracle.md +0 -0
  133. {ingestr-0.13.86 → ingestr-0.13.87}/docs/supported-sources/postgres.md +0 -0
  134. {ingestr-0.13.86 → ingestr-0.13.87}/docs/supported-sources/redshift.md +0 -0
  135. {ingestr-0.13.86 → ingestr-0.13.87}/docs/supported-sources/s3.md +0 -0
  136. {ingestr-0.13.86 → ingestr-0.13.87}/docs/supported-sources/salesforce.md +0 -0
  137. {ingestr-0.13.86 → ingestr-0.13.87}/docs/supported-sources/sap-hana.md +0 -0
  138. {ingestr-0.13.86 → ingestr-0.13.87}/docs/supported-sources/sftp.md +0 -0
  139. {ingestr-0.13.86 → ingestr-0.13.87}/docs/supported-sources/smartsheets.md +0 -0
  140. {ingestr-0.13.86 → ingestr-0.13.87}/docs/supported-sources/snowflake.md +0 -0
  141. {ingestr-0.13.86 → ingestr-0.13.87}/docs/supported-sources/spanner.md +0 -0
  142. {ingestr-0.13.86 → ingestr-0.13.87}/docs/supported-sources/sqlite.md +0 -0
  143. {ingestr-0.13.86 → ingestr-0.13.87}/docs/supported-sources/stripe.md +0 -0
  144. {ingestr-0.13.86 → ingestr-0.13.87}/docs/supported-sources/wise.md +0 -0
  145. {ingestr-0.13.86 → ingestr-0.13.87}/docs/tutorials/load-kinesis-bigquery.md +0 -0
  146. {ingestr-0.13.86 → ingestr-0.13.87}/docs/tutorials/load-personio-duckdb.md +0 -0
  147. {ingestr-0.13.86 → ingestr-0.13.87}/docs/tutorials/load-stripe-postgres.md +0 -0
  148. {ingestr-0.13.86 → ingestr-0.13.87}/ingestr/conftest.py +0 -0
  149. {ingestr-0.13.86 → ingestr-0.13.87}/ingestr/main.py +0 -0
  150. {ingestr-0.13.86 → ingestr-0.13.87}/ingestr/src/.gitignore +0 -0
  151. {ingestr-0.13.86 → ingestr-0.13.87}/ingestr/src/adjust/__init__.py +0 -0
  152. {ingestr-0.13.86 → ingestr-0.13.87}/ingestr/src/adjust/adjust_helpers.py +0 -0
  153. {ingestr-0.13.86 → ingestr-0.13.87}/ingestr/src/airtable/__init__.py +0 -0
  154. {ingestr-0.13.86 → ingestr-0.13.87}/ingestr/src/applovin/__init__.py +0 -0
  155. {ingestr-0.13.86 → ingestr-0.13.87}/ingestr/src/applovin_max/__init__.py +0 -0
  156. {ingestr-0.13.86 → ingestr-0.13.87}/ingestr/src/appsflyer/__init__.py +0 -0
  157. {ingestr-0.13.86 → ingestr-0.13.87}/ingestr/src/appsflyer/client.py +0 -0
  158. {ingestr-0.13.86 → ingestr-0.13.87}/ingestr/src/appstore/client.py +0 -0
  159. {ingestr-0.13.86 → ingestr-0.13.87}/ingestr/src/appstore/errors.py +0 -0
  160. {ingestr-0.13.86 → ingestr-0.13.87}/ingestr/src/appstore/models.py +0 -0
  161. {ingestr-0.13.86 → ingestr-0.13.87}/ingestr/src/appstore/resources.py +0 -0
  162. {ingestr-0.13.86 → ingestr-0.13.87}/ingestr/src/arrow/__init__.py +0 -0
  163. {ingestr-0.13.86 → ingestr-0.13.87}/ingestr/src/asana_source/__init__.py +0 -0
  164. {ingestr-0.13.86 → ingestr-0.13.87}/ingestr/src/asana_source/helpers.py +0 -0
  165. {ingestr-0.13.86 → ingestr-0.13.87}/ingestr/src/asana_source/settings.py +0 -0
  166. {ingestr-0.13.86 → ingestr-0.13.87}/ingestr/src/attio/__init__.py +0 -0
  167. {ingestr-0.13.86 → ingestr-0.13.87}/ingestr/src/attio/helpers.py +0 -0
  168. {ingestr-0.13.86 → ingestr-0.13.87}/ingestr/src/blob.py +0 -0
  169. {ingestr-0.13.86 → ingestr-0.13.87}/ingestr/src/chess/helpers.py +0 -0
  170. {ingestr-0.13.86 → ingestr-0.13.87}/ingestr/src/chess/settings.py +0 -0
  171. {ingestr-0.13.86 → ingestr-0.13.87}/ingestr/src/clickup/__init__.py +0 -0
  172. {ingestr-0.13.86 → ingestr-0.13.87}/ingestr/src/clickup/helpers.py +0 -0
  173. {ingestr-0.13.86 → ingestr-0.13.87}/ingestr/src/collector/spinner.py +0 -0
  174. {ingestr-0.13.86 → ingestr-0.13.87}/ingestr/src/destinations.py +0 -0
  175. {ingestr-0.13.86 → ingestr-0.13.87}/ingestr/src/dynamodb/__init__.py +0 -0
  176. {ingestr-0.13.86 → ingestr-0.13.87}/ingestr/src/elasticsearch/__init__.py +0 -0
  177. {ingestr-0.13.86 → ingestr-0.13.87}/ingestr/src/errors.py +0 -0
  178. {ingestr-0.13.86 → ingestr-0.13.87}/ingestr/src/facebook_ads/__init__.py +0 -0
  179. {ingestr-0.13.86 → ingestr-0.13.87}/ingestr/src/facebook_ads/exceptions.py +0 -0
  180. {ingestr-0.13.86 → ingestr-0.13.87}/ingestr/src/facebook_ads/helpers.py +0 -0
  181. {ingestr-0.13.86 → ingestr-0.13.87}/ingestr/src/facebook_ads/settings.py +0 -0
  182. {ingestr-0.13.86 → ingestr-0.13.87}/ingestr/src/facebook_ads/utils.py +0 -0
  183. {ingestr-0.13.86 → ingestr-0.13.87}/ingestr/src/factory.py +0 -0
  184. {ingestr-0.13.86 → ingestr-0.13.87}/ingestr/src/filesystem/__init__.py +0 -0
  185. {ingestr-0.13.86 → ingestr-0.13.87}/ingestr/src/filesystem/helpers.py +0 -0
  186. {ingestr-0.13.86 → ingestr-0.13.87}/ingestr/src/filesystem/readers.py +0 -0
  187. {ingestr-0.13.86 → ingestr-0.13.87}/ingestr/src/filters.py +0 -0
  188. {ingestr-0.13.86 → ingestr-0.13.87}/ingestr/src/fluxx/__init__.py +0 -0
  189. {ingestr-0.13.86 → ingestr-0.13.87}/ingestr/src/fluxx/helpers.py +0 -0
  190. {ingestr-0.13.86 → ingestr-0.13.87}/ingestr/src/frankfurter/__init__.py +0 -0
  191. {ingestr-0.13.86 → ingestr-0.13.87}/ingestr/src/frankfurter/helpers.py +0 -0
  192. {ingestr-0.13.86 → ingestr-0.13.87}/ingestr/src/freshdesk/__init__.py +0 -0
  193. {ingestr-0.13.86 → ingestr-0.13.87}/ingestr/src/freshdesk/freshdesk_client.py +0 -0
  194. {ingestr-0.13.86 → ingestr-0.13.87}/ingestr/src/freshdesk/settings.py +0 -0
  195. {ingestr-0.13.86 → ingestr-0.13.87}/ingestr/src/github/__init__.py +0 -0
  196. {ingestr-0.13.86 → ingestr-0.13.87}/ingestr/src/github/helpers.py +0 -0
  197. {ingestr-0.13.86 → ingestr-0.13.87}/ingestr/src/github/queries.py +0 -0
  198. {ingestr-0.13.86 → ingestr-0.13.87}/ingestr/src/github/settings.py +0 -0
  199. {ingestr-0.13.86 → ingestr-0.13.87}/ingestr/src/google_ads/__init__.py +0 -0
  200. {ingestr-0.13.86 → ingestr-0.13.87}/ingestr/src/google_ads/field.py +0 -0
  201. {ingestr-0.13.86 → ingestr-0.13.87}/ingestr/src/google_ads/metrics.py +0 -0
  202. {ingestr-0.13.86 → ingestr-0.13.87}/ingestr/src/google_ads/predicates.py +0 -0
  203. {ingestr-0.13.86 → ingestr-0.13.87}/ingestr/src/google_ads/reports.py +0 -0
  204. {ingestr-0.13.86 → ingestr-0.13.87}/ingestr/src/google_analytics/__init__.py +0 -0
  205. {ingestr-0.13.86 → ingestr-0.13.87}/ingestr/src/google_analytics/helpers.py +0 -0
  206. {ingestr-0.13.86 → ingestr-0.13.87}/ingestr/src/google_sheets/README.md +0 -0
  207. {ingestr-0.13.86 → ingestr-0.13.87}/ingestr/src/google_sheets/__init__.py +0 -0
  208. {ingestr-0.13.86 → ingestr-0.13.87}/ingestr/src/google_sheets/helpers/__init__.py +0 -0
  209. {ingestr-0.13.86 → ingestr-0.13.87}/ingestr/src/google_sheets/helpers/api_calls.py +0 -0
  210. {ingestr-0.13.86 → ingestr-0.13.87}/ingestr/src/google_sheets/helpers/data_processing.py +0 -0
  211. {ingestr-0.13.86 → ingestr-0.13.87}/ingestr/src/gorgias/__init__.py +0 -0
  212. {ingestr-0.13.86 → ingestr-0.13.87}/ingestr/src/gorgias/helpers.py +0 -0
  213. {ingestr-0.13.86 → ingestr-0.13.87}/ingestr/src/http_client.py +0 -0
  214. {ingestr-0.13.86 → ingestr-0.13.87}/ingestr/src/hubspot/__init__.py +0 -0
  215. {ingestr-0.13.86 → ingestr-0.13.87}/ingestr/src/hubspot/helpers.py +0 -0
  216. {ingestr-0.13.86 → ingestr-0.13.87}/ingestr/src/hubspot/settings.py +0 -0
  217. {ingestr-0.13.86 → ingestr-0.13.87}/ingestr/src/influxdb/__init__.py +0 -0
  218. {ingestr-0.13.86 → ingestr-0.13.87}/ingestr/src/influxdb/client.py +0 -0
  219. {ingestr-0.13.86 → ingestr-0.13.87}/ingestr/src/isoc_pulse/__init__.py +0 -0
  220. {ingestr-0.13.86 → ingestr-0.13.87}/ingestr/src/kafka/__init__.py +0 -0
  221. {ingestr-0.13.86 → ingestr-0.13.87}/ingestr/src/kafka/helpers.py +0 -0
  222. {ingestr-0.13.86 → ingestr-0.13.87}/ingestr/src/kinesis/__init__.py +0 -0
  223. {ingestr-0.13.86 → ingestr-0.13.87}/ingestr/src/kinesis/helpers.py +0 -0
  224. {ingestr-0.13.86 → ingestr-0.13.87}/ingestr/src/klaviyo/client.py +0 -0
  225. {ingestr-0.13.86 → ingestr-0.13.87}/ingestr/src/klaviyo/helpers.py +0 -0
  226. {ingestr-0.13.86 → ingestr-0.13.87}/ingestr/src/linear/__init__.py +0 -0
  227. {ingestr-0.13.86 → ingestr-0.13.87}/ingestr/src/linear/helpers.py +0 -0
  228. {ingestr-0.13.86 → ingestr-0.13.87}/ingestr/src/linkedin_ads/__init__.py +0 -0
  229. {ingestr-0.13.86 → ingestr-0.13.87}/ingestr/src/linkedin_ads/dimension_time_enum.py +0 -0
  230. {ingestr-0.13.86 → ingestr-0.13.87}/ingestr/src/linkedin_ads/helpers.py +0 -0
  231. {ingestr-0.13.86 → ingestr-0.13.87}/ingestr/src/loader.py +0 -0
  232. {ingestr-0.13.86 → ingestr-0.13.87}/ingestr/src/mixpanel/__init__.py +0 -0
  233. {ingestr-0.13.86 → ingestr-0.13.87}/ingestr/src/mixpanel/client.py +0 -0
  234. {ingestr-0.13.86 → ingestr-0.13.87}/ingestr/src/notion/__init__.py +0 -0
  235. {ingestr-0.13.86 → ingestr-0.13.87}/ingestr/src/notion/helpers/__init__.py +0 -0
  236. {ingestr-0.13.86 → ingestr-0.13.87}/ingestr/src/notion/helpers/client.py +0 -0
  237. {ingestr-0.13.86 → ingestr-0.13.87}/ingestr/src/notion/helpers/database.py +0 -0
  238. {ingestr-0.13.86 → ingestr-0.13.87}/ingestr/src/notion/settings.py +0 -0
  239. {ingestr-0.13.86 → ingestr-0.13.87}/ingestr/src/partition.py +0 -0
  240. {ingestr-0.13.86 → ingestr-0.13.87}/ingestr/src/personio/__init__.py +0 -0
  241. {ingestr-0.13.86 → ingestr-0.13.87}/ingestr/src/personio/helpers.py +0 -0
  242. {ingestr-0.13.86 → ingestr-0.13.87}/ingestr/src/phantombuster/__init__.py +0 -0
  243. {ingestr-0.13.86 → ingestr-0.13.87}/ingestr/src/phantombuster/client.py +0 -0
  244. {ingestr-0.13.86 → ingestr-0.13.87}/ingestr/src/pinterest/__init__.py +0 -0
  245. {ingestr-0.13.86 → ingestr-0.13.87}/ingestr/src/pipedrive/__init__.py +0 -0
  246. {ingestr-0.13.86 → ingestr-0.13.87}/ingestr/src/pipedrive/helpers/__init__.py +0 -0
  247. {ingestr-0.13.86 → ingestr-0.13.87}/ingestr/src/pipedrive/helpers/custom_fields_munger.py +0 -0
  248. {ingestr-0.13.86 → ingestr-0.13.87}/ingestr/src/pipedrive/helpers/pages.py +0 -0
  249. {ingestr-0.13.86 → ingestr-0.13.87}/ingestr/src/pipedrive/settings.py +0 -0
  250. {ingestr-0.13.86 → ingestr-0.13.87}/ingestr/src/pipedrive/typing.py +0 -0
  251. {ingestr-0.13.86 → ingestr-0.13.87}/ingestr/src/quickbooks/__init__.py +0 -0
  252. {ingestr-0.13.86 → ingestr-0.13.87}/ingestr/src/resource.py +0 -0
  253. {ingestr-0.13.86 → ingestr-0.13.87}/ingestr/src/salesforce/__init__.py +0 -0
  254. {ingestr-0.13.86 → ingestr-0.13.87}/ingestr/src/salesforce/helpers.py +0 -0
  255. {ingestr-0.13.86 → ingestr-0.13.87}/ingestr/src/shopify/exceptions.py +0 -0
  256. {ingestr-0.13.86 → ingestr-0.13.87}/ingestr/src/shopify/helpers.py +0 -0
  257. {ingestr-0.13.86 → ingestr-0.13.87}/ingestr/src/shopify/settings.py +0 -0
  258. {ingestr-0.13.86 → ingestr-0.13.87}/ingestr/src/slack/__init__.py +0 -0
  259. {ingestr-0.13.86 → ingestr-0.13.87}/ingestr/src/slack/helpers.py +0 -0
  260. {ingestr-0.13.86 → ingestr-0.13.87}/ingestr/src/slack/settings.py +0 -0
  261. {ingestr-0.13.86 → ingestr-0.13.87}/ingestr/src/smartsheets/__init__.py +0 -0
  262. {ingestr-0.13.86 → ingestr-0.13.87}/ingestr/src/solidgate/__init__.py +0 -0
  263. {ingestr-0.13.86 → ingestr-0.13.87}/ingestr/src/solidgate/helpers.py +0 -0
  264. {ingestr-0.13.86 → ingestr-0.13.87}/ingestr/src/sql_database/__init__.py +0 -0
  265. {ingestr-0.13.86 → ingestr-0.13.87}/ingestr/src/sql_database/callbacks.py +0 -0
  266. {ingestr-0.13.86 → ingestr-0.13.87}/ingestr/src/stripe_analytics/__init__.py +0 -0
  267. {ingestr-0.13.86 → ingestr-0.13.87}/ingestr/src/stripe_analytics/helpers.py +0 -0
  268. {ingestr-0.13.86 → ingestr-0.13.87}/ingestr/src/stripe_analytics/settings.py +0 -0
  269. {ingestr-0.13.86 → ingestr-0.13.87}/ingestr/src/table_definition.py +0 -0
  270. {ingestr-0.13.86 → ingestr-0.13.87}/ingestr/src/telemetry/event.py +0 -0
  271. {ingestr-0.13.86 → ingestr-0.13.87}/ingestr/src/testdata/fakebqcredentials.json +0 -0
  272. {ingestr-0.13.86 → ingestr-0.13.87}/ingestr/src/tiktok_ads/__init__.py +0 -0
  273. {ingestr-0.13.86 → ingestr-0.13.87}/ingestr/src/tiktok_ads/tiktok_helpers.py +0 -0
  274. {ingestr-0.13.86 → ingestr-0.13.87}/ingestr/src/time.py +0 -0
  275. {ingestr-0.13.86 → ingestr-0.13.87}/ingestr/src/trustpilot/__init__.py +0 -0
  276. {ingestr-0.13.86 → ingestr-0.13.87}/ingestr/src/trustpilot/client.py +0 -0
  277. {ingestr-0.13.86 → ingestr-0.13.87}/ingestr/src/version.py +0 -0
  278. {ingestr-0.13.86 → ingestr-0.13.87}/ingestr/src/wise/__init__.py +0 -0
  279. {ingestr-0.13.86 → ingestr-0.13.87}/ingestr/src/wise/client.py +0 -0
  280. {ingestr-0.13.86 → ingestr-0.13.87}/ingestr/src/zendesk/__init__.py +0 -0
  281. {ingestr-0.13.86 → ingestr-0.13.87}/ingestr/src/zendesk/helpers/__init__.py +0 -0
  282. {ingestr-0.13.86 → ingestr-0.13.87}/ingestr/src/zendesk/helpers/api_helpers.py +0 -0
  283. {ingestr-0.13.86 → ingestr-0.13.87}/ingestr/src/zendesk/helpers/credentials.py +0 -0
  284. {ingestr-0.13.86 → ingestr-0.13.87}/ingestr/src/zendesk/helpers/talk_api.py +0 -0
  285. {ingestr-0.13.86 → ingestr-0.13.87}/ingestr/src/zendesk/settings.py +0 -0
  286. {ingestr-0.13.86 → ingestr-0.13.87}/ingestr/src/zoom/__init__.py +0 -0
  287. {ingestr-0.13.86 → ingestr-0.13.87}/ingestr/src/zoom/helpers.py +0 -0
  288. {ingestr-0.13.86 → ingestr-0.13.87}/ingestr/testdata/.gitignore +0 -0
  289. {ingestr-0.13.86 → ingestr-0.13.87}/ingestr/testdata/create_replace.csv +0 -0
  290. {ingestr-0.13.86 → ingestr-0.13.87}/ingestr/testdata/delete_insert_expected.csv +0 -0
  291. {ingestr-0.13.86 → ingestr-0.13.87}/ingestr/testdata/delete_insert_part1.csv +0 -0
  292. {ingestr-0.13.86 → ingestr-0.13.87}/ingestr/testdata/delete_insert_part2.csv +0 -0
  293. {ingestr-0.13.86 → ingestr-0.13.87}/ingestr/testdata/merge_expected.csv +0 -0
  294. {ingestr-0.13.86 → ingestr-0.13.87}/ingestr/testdata/merge_part1.csv +0 -0
  295. {ingestr-0.13.86 → ingestr-0.13.87}/ingestr/testdata/merge_part2.csv +0 -0
  296. {ingestr-0.13.86 → ingestr-0.13.87}/ingestr/tests/unit/test_smartsheets.py +0 -0
  297. {ingestr-0.13.86 → ingestr-0.13.87}/package-lock.json +0 -0
  298. {ingestr-0.13.86 → ingestr-0.13.87}/package.json +0 -0
  299. {ingestr-0.13.86 → ingestr-0.13.87}/pyproject.toml +0 -0
  300. {ingestr-0.13.86 → ingestr-0.13.87}/requirements-dev.txt +0 -0
  301. {ingestr-0.13.86 → ingestr-0.13.87}/requirements.in +0 -0
  302. {ingestr-0.13.86 → ingestr-0.13.87}/requirements.txt +0 -0
  303. {ingestr-0.13.86 → ingestr-0.13.87}/requirements_arm64.txt +0 -0
  304. {ingestr-0.13.86 → ingestr-0.13.87}/resources/demo.gif +0 -0
  305. {ingestr-0.13.86 → ingestr-0.13.87}/resources/demo.tape +0 -0
  306. {ingestr-0.13.86 → ingestr-0.13.87}/resources/ingestr.svg +0 -0
  307. {ingestr-0.13.86 → ingestr-0.13.87}/styles/Google/AMPM.yml +0 -0
  308. {ingestr-0.13.86 → ingestr-0.13.87}/styles/Google/Acronyms.yml +0 -0
  309. {ingestr-0.13.86 → ingestr-0.13.87}/styles/Google/Colons.yml +0 -0
  310. {ingestr-0.13.86 → ingestr-0.13.87}/styles/Google/Contractions.yml +0 -0
  311. {ingestr-0.13.86 → ingestr-0.13.87}/styles/Google/DateFormat.yml +0 -0
  312. {ingestr-0.13.86 → ingestr-0.13.87}/styles/Google/Ellipses.yml +0 -0
  313. {ingestr-0.13.86 → ingestr-0.13.87}/styles/Google/EmDash.yml +0 -0
  314. {ingestr-0.13.86 → ingestr-0.13.87}/styles/Google/Exclamation.yml +0 -0
  315. {ingestr-0.13.86 → ingestr-0.13.87}/styles/Google/FirstPerson.yml +0 -0
  316. {ingestr-0.13.86 → ingestr-0.13.87}/styles/Google/Gender.yml +0 -0
  317. {ingestr-0.13.86 → ingestr-0.13.87}/styles/Google/GenderBias.yml +0 -0
  318. {ingestr-0.13.86 → ingestr-0.13.87}/styles/Google/HeadingPunctuation.yml +0 -0
  319. {ingestr-0.13.86 → ingestr-0.13.87}/styles/Google/Headings.yml +0 -0
  320. {ingestr-0.13.86 → ingestr-0.13.87}/styles/Google/Latin.yml +0 -0
  321. {ingestr-0.13.86 → ingestr-0.13.87}/styles/Google/LyHyphens.yml +0 -0
  322. {ingestr-0.13.86 → ingestr-0.13.87}/styles/Google/OptionalPlurals.yml +0 -0
  323. {ingestr-0.13.86 → ingestr-0.13.87}/styles/Google/Ordinal.yml +0 -0
  324. {ingestr-0.13.86 → ingestr-0.13.87}/styles/Google/OxfordComma.yml +0 -0
  325. {ingestr-0.13.86 → ingestr-0.13.87}/styles/Google/Parens.yml +0 -0
  326. {ingestr-0.13.86 → ingestr-0.13.87}/styles/Google/Passive.yml +0 -0
  327. {ingestr-0.13.86 → ingestr-0.13.87}/styles/Google/Periods.yml +0 -0
  328. {ingestr-0.13.86 → ingestr-0.13.87}/styles/Google/Quotes.yml +0 -0
  329. {ingestr-0.13.86 → ingestr-0.13.87}/styles/Google/Ranges.yml +0 -0
  330. {ingestr-0.13.86 → ingestr-0.13.87}/styles/Google/Semicolons.yml +0 -0
  331. {ingestr-0.13.86 → ingestr-0.13.87}/styles/Google/Slang.yml +0 -0
  332. {ingestr-0.13.86 → ingestr-0.13.87}/styles/Google/Spacing.yml +0 -0
  333. {ingestr-0.13.86 → ingestr-0.13.87}/styles/Google/Spelling.yml +0 -0
  334. {ingestr-0.13.86 → ingestr-0.13.87}/styles/Google/Units.yml +0 -0
  335. {ingestr-0.13.86 → ingestr-0.13.87}/styles/Google/We.yml +0 -0
  336. {ingestr-0.13.86 → ingestr-0.13.87}/styles/Google/Will.yml +0 -0
  337. {ingestr-0.13.86 → ingestr-0.13.87}/styles/Google/WordList.yml +0 -0
  338. {ingestr-0.13.86 → ingestr-0.13.87}/styles/Google/meta.json +0 -0
  339. {ingestr-0.13.86 → ingestr-0.13.87}/styles/Google/vocab.txt +0 -0
  340. {ingestr-0.13.86 → ingestr-0.13.87}/styles/bruin/Ingestr.yml +0 -0
  341. {ingestr-0.13.86 → ingestr-0.13.87}/styles/config/vocabularies/bruin/accept.txt +0 -0
  342. {ingestr-0.13.86 → 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.86
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
@@ -147,6 +147,7 @@ export default defineConfig({
147
147
  { text: "Pinterest", link: "/supported-sources/pinterest.md" },
148
148
  { text: "Pipedrive", link: "/supported-sources/pipedrive.md" },
149
149
  { text: "QuickBooks", link: "/supported-sources/quickbooks.md" },
150
+ { text: "RevenueCat", link: "/supported-sources/revenuecat.md" },
150
151
  { text: "S3", link: "/supported-sources/s3.md" },
151
152
  { text: "Salesforce", link: "/supported-sources/salesforce.md" },
152
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
- - `profiles`: Retrieves player profiles based on a list of player usernames.
34
- - `games`: Retrieves players' games for specified players.
35
- - `archives`: Retrieves the URLs to game archives for specified players.
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
- - `campaigns`: Retrieves campaign data with fields:
45
- - `id`
46
- - `updated_time`
47
- - `created_time`
48
- - `name`
49
- - `status`
50
- - `effective_status`
51
- - `objective`
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
 
@@ -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
- - `latest`: Fetches the latest exchange rates.
38
- - `exchange_rates`: Fetches historical exchange rates for a specified date range.
39
- - `currencies`: Fetches a list of the available currencies and their ISO 4217 currency code (e.g. `USD`, `EUR`, `GBP`).
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
- | S.No. | Name | Description |
39
- | ----- | --------- | ----------------------------------------------------------------------------------------- |
40
- | 1. | agents | Users responsible for managing and resolving customer inquiries and support tickets. |
41
- | 2. | companies | Customer organizations or groups that agents support. |
42
- | 3. | contacts | Individuals or customers who reach out for support. |
43
- | 4. | groups | Agents organized based on specific criteria. |
44
- | 5. | roles | Predefined sets of permissions that determine what actions an agent can perform. |
45
- | 6. | tickets | Customer inquiries or issues submitted via various channels like email, chat, phone, etc. |
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 | `topsites`, Country code |
48
- | `ipv6` | IPv6 adoption metrics | Yes | `topsites`, Country code |
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 (`4`/`6`), Country code |
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
 
@@ -0,0 +1,57 @@
1
+ # Klaviyo
2
+
3
+ [Klaviyo](https://www.klaviyo.com/) is a marketing automation platform that helps businesses build and manage smarter digital relationships with their customers by connecting through personalized email and enhancing customer loyalty.
4
+
5
+ ingestr supports Klaviyo as a source.
6
+
7
+ ## URI format
8
+
9
+ The URI format for Klaviyo is as follows:
10
+
11
+ ```plaintext
12
+ klaviyo://?api_key=<api-key>
13
+ ```
14
+
15
+ URI parameters:
16
+
17
+ - `api_key`: The API key used for authentication with the Klaviyo API.
18
+
19
+ The URI is used to connect to the Klaviyo API for extracting data.
20
+
21
+ ```bash
22
+ ingestr ingest --source-table 'events' --source-uri 'klaviyo://?api_key=pk_test' --dest-uri duckdb:///klaviyo.duckdb --interval-start 2022-01-01 --dest-table 'dest.events' --extract-parallelism 20
23
+ ```
24
+
25
+ This command fetches all the events that are created/updated since 2022-01-01 and writes them to `dest.events` table on DuckDB, using 20 parallel threads to improve performance and efficiently handle large data .
26
+
27
+ ## Tables
28
+
29
+ Klaviyo source allows ingesting the following sources into separate tables:
30
+
31
+ ## Tables
32
+
33
+ Klaviyo source allows ingesting the following sources into separate tables:
34
+
35
+ | Table | PK | Inc Key | Inc Strategy | Details |
36
+ | --------------- | ----------- | --------------- | ------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------- |
37
+ | [events](https://developers.klaviyo.com/en/reference/get_events) | id | datetime | merge | Retrieves all events in an account where each event represents an action taken by a profile such as a password reset or a product order. |
38
+ | [profiles](https://developers.klaviyo.com/en/reference/get_profiles) | id | updated | merge | Retrieves all profiles in an account where each profile includes details like organization, job title, email and other attributes.|
39
+ | [campaigns](https://developers.klaviyo.com/en/reference/get_campaigns) | id | updated_at | merge | Retrieves all campaigns in an account where each campaign is a targeted message sent to a specific audience. |
40
+ | [metrics](https://developers.klaviyo.com/en/reference/get_metrics) | id | updated | merge | Retrieves all metrics in an account where each metric represents a category of events or actions a person can take. |
41
+ | [tags](https://developers.klaviyo.com/en/reference/get_tags) | id | – | replace | Retrieves all tags in an account. |
42
+ | [coupons](https://developers.klaviyo.com/en/reference/get_coupons) | id | – | replace | Retrieves all coupons in an account.|
43
+ | [catalog-variants](https://developers.klaviyo.com/en/reference/get_catalog_variants): | id | updated | merge | Retrieves all variants in an account. |
44
+ | [catalog-categories](https://developers.klaviyo.com/en/reference/get_catalog_categories) | id | updated | merge | Retrieves all catalog categories in an account.|
45
+ | [catalog-items](https://developers.klaviyo.com/en/reference/get_catalog_items)| id | updated | merge | Retrieves all catalog items in an account. |
46
+ | [flows](https://developers.klaviyo.com/en/reference/get_flows) | id | updated | merge | Retrieves all flows in an account where flow is a sequence of automated actions that is triggered when a person performs a specific action. |
47
+ | [lists](https://developers.klaviyo.com/en/reference/get_lists) | id | updated | merge | Retrieves all lists in an account.|
48
+ | [images](https://developers.klaviyo.com/en/reference/get_images) | id | updated_at | merge | Retrieves all images in an account. |
49
+ | [segments](https://developers.klaviyo.com/en/reference/get_segments) | id | updated | merge | Retrieves all segments in an account where segment is a dynamic list that contains profiles meeting a certain set of conditions. |
50
+ | [forms](https://developers.klaviyo.com/en/reference/get_forms) | id | updated_at | merge | Retrieves all forms in an account.|
51
+ | [templates](https://developers.klaviyo.com/en/reference/get_templates) | id | updated | merge | Retrieves all templates in an account. |
52
+
53
+ Use these as `--source-table` parameter in the `ingestr ingest` command.
54
+
55
+
56
+ > [!WARNING]
57
+ > Klaviyo does not support incremental loading for many endpoints in its APIs, which means ingestr will load endpoints incrementally if they support it, and do a full-refresh if not.
@@ -0,0 +1,57 @@
1
+ # Linear
2
+
3
+ [Linear](https://linear.app/) is a purpose-built tool for planning and building products that provides issue tracking and project management for teams.
4
+
5
+ ingestr supports Linear as a source through [Linear's public API](https://linear.app/developers/graphql).
6
+
7
+ ## URI format
8
+
9
+ The URI format for Linear is:
10
+
11
+ ```plaintext
12
+ linear://?api_key=<api_key>
13
+ ```
14
+
15
+ URI parameters:
16
+
17
+ - `api_key`: The API key used for authentication with the Linear API.
18
+
19
+ ## Example usage
20
+
21
+ Assuming your API key is `lin_api_123`, you can ingest teams into DuckDB using:
22
+
23
+ ```bash
24
+ ingestr ingest
25
+ --source-uri 'linear://?api_key=lin_api_123' \
26
+ --source-table 'teams' \
27
+ --dest-uri duckdb:///linear.duckdb \
28
+ --dest-table 'dest.teams'
29
+ ```
30
+ <img alt="linear" src="../media/linear.png"/>
31
+
32
+ ## Tables
33
+ Linear source allows ingesting the following tables:
34
+ | Table | PK | Inc Key | Inc Strategy | Details |
35
+ | --------------- | ----------- | --------------- | ------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------- |
36
+ | `issues` | id | updatedAt | merge | Fetches all issues from your Linear workspace. |
37
+ | `users` | id | updatedAt | merge | Fetches users from your workspace. |
38
+ | `workflow_states` | id | updatedAt | merge | Fetches workflow states used in your Linear workspace. |
39
+ | `cycles` | id | updatedAt | merge | Fetches cycle information and planning data. |
40
+ | `attachments` | id | updatedAt | merge | Fetches file attachments associated with issues. |
41
+ | `comments` | id | updatedAt | merge | Fetches comments on issues and other entities. |
42
+ | `documents` | id | updatedAt | merge | Fetches documents created in Linear. |
43
+ | `external_users` | id | updatedAt | merge | Fetches information about external users. |
44
+ | `initiative` | id | updatedAt | merge | Fetches initiative data for high-level planning. |
45
+ | `integrations` | id | updatedAt | merge | Fetches integration configurations. |
46
+ | `labels` | id | updatedAt | merge | Fetches labels used for categorizing issues. |
47
+ | `project_updates` | id | updatedAt | merge | Fetches updates posted to projects |
48
+ | `team_memberships` | id | updatedAt | merge | Fetches team membership information. |
49
+ | `initiative_to_project` | id | updatedAt | merge | Fetches relationships between initiatives and projects. |
50
+ | `project_milestone` | id | updatedAt | merge | Retrieves Linear project milestones and checkpoints. |
51
+ | `project_status` | id | updatedAt | merge | Fetches project status information. |
52
+ | `projects` | id | updatedAt | merge | Fetches project-level data. |
53
+ | `teams` | id | updatedAt | merge | Fetches information about the teams configured in Linear. |
54
+ | `organization` | id | updatedAt | merge | Fetches organization-level information.|
55
+
56
+
57
+ Use these as the `--source-table` parameter in the `ingestr ingest` command.
@@ -48,8 +48,11 @@ LinkedIn Ads requires an `access_token` and `account_ids` to retrieve reports fr
48
48
 
49
49
  To find the Ad Account IDs, the ad account owner can refer to the detailed instructions provided in this [guide](https://www.linkedin.com/help/linkedin/answer/a424270/find-linkedin-ads-account-details?lang=en).
50
50
 
51
- ## Table: Custom Reports
52
- Custom reports allow you to retrieve data based on specific dimensions and metrics.
51
+ ## Table:
52
+ | Table | PK | Inc Key | Inc Strategy | Details |
53
+ | --------------- | ----------- | --------------- | ------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------- |
54
+ | [custom](https://learn.microsoft.com/en-us/linkedin/marketing/integrations/ads-reporting/ads-reporting?view=li-lms-2024-11&tabs=http#analytics-finder) | [dimension, date] or [dimension, start_date, end_date]| date (daily) or start_date (monthly) | merge | Custom reports allow you to retrieve data based on specific dimensions and metrics. |
55
+
53
56
 
54
57
  Custom Table Format:
55
58
  ```
@@ -68,7 +71,7 @@ custom:<dimensions>:<metrics>
68
71
 
69
72
  Retrieve data for campaign with `account_ids` id_123 and id_456:
70
73
  ```sh
71
- ingestr ingest \
74
+ ingestr ingest \
72
75
  --source-uri "linkedinads://?access_token=token_123&account_ids=id_123,id_456" \
73
76
  --source-table 'custom:campaign,date:impressions,clicks' \
74
77
  --dest-uri 'duckdb:///linkedin.duckdb' \
@@ -40,7 +40,9 @@ ingestr ingest \
40
40
 
41
41
  Mixpanel source allows ingesting the following tables:
42
42
 
43
- - `events`: Raw event data returned from the export API.
44
- - `profiles`: User profiles from the Engage API.
43
+ | Table | PK | Inc Key | Inc Strategy | Details |
44
+ | --------------- | ----------- | --------------- | ------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------- |
45
+ | [events](https://developer.mixpanel.com/reference/raw-event-export) | distinct_id | time | merge | Retrieves events data|
46
+ | [profiles](https://developer.mixpanel.com/reference/engage-query) | distinct_id | last_seen | merge | Retrieves Mixpanel user profiles and attributes. |
45
47
 
46
48
  Use these as `--source-table` values in the `ingestr ingest` command.