stackos-connectors 0.2.1__tar.gz → 0.2.3__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.
Files changed (523) hide show
  1. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/PKG-INFO +17 -6
  2. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/README.md +16 -5
  3. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/pyproject.toml +1 -1
  4. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/catalog/index.json +1 -0
  5. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/google_indexing/catalog.json +21 -1
  6. stackos_connectors-0.2.3/src/stackos_connectors/connectors/google_indexing/docs/auth.md +30 -0
  7. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/google_search_console/docs/auth.md +1 -1
  8. stackos_connectors-0.2.3/src/stackos_connectors/connectors/quickbooks_online/__init__.py +1 -0
  9. stackos_connectors-0.2.3/src/stackos_connectors/connectors/quickbooks_online/actions.py +110 -0
  10. stackos_connectors-0.2.3/src/stackos_connectors/connectors/quickbooks_online/catalog.json +309 -0
  11. stackos_connectors-0.2.3/src/stackos_connectors/connectors/quickbooks_online/docs/auth.md +13 -0
  12. stackos_connectors-0.2.3/src/stackos_connectors/connectors/quickbooks_online/docs/quickbooks-online.md +24 -0
  13. stackos_connectors-0.2.3/src/stackos_connectors/connectors/quickbooks_online/integration.py +75 -0
  14. stackos_connectors-0.2.3/src/stackos_connectors/connectors/quickbooks_online/response.py +263 -0
  15. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/shared/google/service_account.py +1 -0
  16. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/tests/auth/test_google_service_account.py +35 -2
  17. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/tests/auth/test_oauth_contracts.py +29 -1
  18. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/tests/auth/test_probes.py +6 -1
  19. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/tests/catalog/test_presentation.py +2 -1
  20. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/tests/packaging/installed_auth_consumer.py +89 -2
  21. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/tests/packaging/test_grouped_layout.py +2 -2
  22. stackos_connectors-0.2.3/tests/quickbooks_online/conftest.py +57 -0
  23. stackos_connectors-0.2.3/tests/quickbooks_online/test_auth.py +108 -0
  24. stackos_connectors-0.2.3/tests/quickbooks_online/test_reads.py +343 -0
  25. stackos_connectors-0.2.3/tests/web/__init__.py +0 -0
  26. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/.github/workflows/publish.yml +0 -0
  27. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/.gitignore +0 -0
  28. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/LICENSE +0 -0
  29. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/__init__.py +0 -0
  30. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/auth.py +0 -0
  31. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/catalog/schema.json +0 -0
  32. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/catalog.py +0 -0
  33. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/__init__.py +0 -0
  34. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/ahrefs/__init__.py +0 -0
  35. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/ahrefs/actions.py +0 -0
  36. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/ahrefs/assets/icon.png +0 -0
  37. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/ahrefs/catalog.json +0 -0
  38. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/ahrefs/integration.py +0 -0
  39. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/aignc/__init__.py +0 -0
  40. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/aignc/actions.py +0 -0
  41. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/aignc/catalog.json +0 -0
  42. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/aignc/contract.py +0 -0
  43. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/aignc/docs/aignc.md +0 -0
  44. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/aignc/integration.py +0 -0
  45. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/alibaba_wan/__init__.py +0 -0
  46. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/alibaba_wan/actions.py +0 -0
  47. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/alibaba_wan/assets/icon.png +0 -0
  48. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/alibaba_wan/catalog.json +0 -0
  49. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/alibaba_wan/integration.py +0 -0
  50. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/apollo/__init__.py +0 -0
  51. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/apollo/actions.py +0 -0
  52. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/apollo/assets/icon.png +0 -0
  53. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/apollo/catalog.json +0 -0
  54. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/apollo/docs/protocol.md +0 -0
  55. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/aws_s3/__init__.py +0 -0
  56. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/aws_s3/actions.py +0 -0
  57. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/aws_s3/assets/icon.png +0 -0
  58. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/aws_s3/catalog.json +0 -0
  59. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/aws_s3/contract.py +0 -0
  60. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/aws_s3/docs/s3.md +0 -0
  61. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/aws_s3/integration.py +0 -0
  62. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/aws_s3/probe.py +0 -0
  63. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/byteplus_seedance/__init__.py +0 -0
  64. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/byteplus_seedance/actions.py +0 -0
  65. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/byteplus_seedance/catalog.json +0 -0
  66. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/byteplus_seedream/__init__.py +0 -0
  67. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/byteplus_seedream/actions.py +0 -0
  68. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/byteplus_seedream/catalog.json +0 -0
  69. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/byteplus_seedream/probe.py +0 -0
  70. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/clay/__init__.py +0 -0
  71. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/clay/actions.py +0 -0
  72. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/clay/assets/icon.png +0 -0
  73. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/clay/catalog.json +0 -0
  74. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/clay/docs/protocol.md +0 -0
  75. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/cloudflare/__init__.py +0 -0
  76. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/cloudflare/actions.py +0 -0
  77. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/cloudflare/assets/icon.png +0 -0
  78. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/cloudflare/catalog.json +0 -0
  79. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/cloudflare/docs/cloudflare-dns.md +0 -0
  80. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/cloudflare/integration.py +0 -0
  81. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/dataforseo/__init__.py +0 -0
  82. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/dataforseo/actions.py +0 -0
  83. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/dataforseo/assets/icon.jpeg +0 -0
  84. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/dataforseo/catalog.json +0 -0
  85. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/dataforseo/integration.py +0 -0
  86. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/dataforseo/probe.py +0 -0
  87. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/firecrawl/__init__.py +0 -0
  88. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/firecrawl/actions.py +0 -0
  89. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/firecrawl/assets/icon.png +0 -0
  90. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/firecrawl/catalog.json +0 -0
  91. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/firecrawl/integration.py +0 -0
  92. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/ftp/__init__.py +0 -0
  93. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/ftp/actions.py +0 -0
  94. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/ftp/assets/icon.svg +0 -0
  95. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/ftp/catalog.json +0 -0
  96. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/ftp/docs/ftp.md +0 -0
  97. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/ftp/integration.py +0 -0
  98. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/ftp/probe.py +0 -0
  99. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/ftp/remote_tree.py +0 -0
  100. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/ghost/__init__.py +0 -0
  101. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/ghost/actions.py +0 -0
  102. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/ghost/assets/icon.png +0 -0
  103. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/ghost/catalog.json +0 -0
  104. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/ghost/integration.py +0 -0
  105. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/ghost/probe.py +0 -0
  106. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/google_ads/__init__.py +0 -0
  107. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/google_ads/actions.py +0 -0
  108. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/google_ads/assets/icon.png +0 -0
  109. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/google_ads/catalog.json +0 -0
  110. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/google_ads/docs/auth.md +0 -0
  111. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/google_ads/docs/protocol.md +0 -0
  112. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/google_ads/probe.py +0 -0
  113. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/google_analytics/__init__.py +0 -0
  114. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/google_analytics/actions.py +0 -0
  115. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/google_analytics/assets/icon.png +0 -0
  116. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/google_analytics/catalog.json +0 -0
  117. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/google_analytics/docs/auth.md +0 -0
  118. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/google_analytics/integration.py +0 -0
  119. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/google_gemini_image/__init__.py +0 -0
  120. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/google_gemini_image/actions.py +0 -0
  121. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/google_gemini_image/assets/icon.webp +0 -0
  122. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/google_gemini_image/catalog.json +0 -0
  123. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/google_gemini_image/integration.py +0 -0
  124. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/google_indexing/__init__.py +0 -0
  125. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/google_indexing/actions.py +0 -0
  126. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/google_indexing/docs/google-indexing.md +0 -0
  127. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/google_indexing/integration.py +0 -0
  128. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/google_search_console/__init__.py +0 -0
  129. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/google_search_console/actions.py +0 -0
  130. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/google_search_console/assets/icon.png +0 -0
  131. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/google_search_console/auth.py +0 -0
  132. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/google_search_console/catalog.json +0 -0
  133. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/google_search_console/docs/google-search-console.md +0 -0
  134. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/google_search_console/integration.py +0 -0
  135. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/google_tag_manager/__init__.py +0 -0
  136. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/google_tag_manager/actions.py +0 -0
  137. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/google_tag_manager/assets/icon.png +0 -0
  138. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/google_tag_manager/catalog.json +0 -0
  139. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/google_tag_manager/docs/auth.md +0 -0
  140. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/google_tag_manager/integration.py +0 -0
  141. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/google_veo/__init__.py +0 -0
  142. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/google_veo/actions.py +0 -0
  143. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/google_veo/assets/icon.png +0 -0
  144. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/google_veo/catalog.json +0 -0
  145. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/google_veo/integration.py +0 -0
  146. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/google_workspace/__init__.py +0 -0
  147. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/google_workspace/actions.py +0 -0
  148. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/google_workspace/assets/icon.png +0 -0
  149. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/google_workspace/catalog.json +0 -0
  150. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/google_workspace/docs/auth.md +0 -0
  151. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/google_workspace/docs/protocol.md +0 -0
  152. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/google_workspace/probe.py +0 -0
  153. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/http/__init__.py +0 -0
  154. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/http/actions.py +0 -0
  155. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/http/catalog.json +0 -0
  156. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/hubspot/__init__.py +0 -0
  157. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/hubspot/actions.py +0 -0
  158. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/hubspot/assets/icon.png +0 -0
  159. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/hubspot/catalog.json +0 -0
  160. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/hubspot/contract.py +0 -0
  161. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/hubspot/docs/auth.md +0 -0
  162. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/hubspot/docs/hubspot.md +0 -0
  163. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/hubspot/docs/signatures.md +0 -0
  164. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/hubspot/integration.py +0 -0
  165. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/hubspot/signature.py +0 -0
  166. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/ideogram/__init__.py +0 -0
  167. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/ideogram/actions.py +0 -0
  168. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/ideogram/assets/icon.png +0 -0
  169. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/ideogram/catalog.json +0 -0
  170. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/ideogram/integration.py +0 -0
  171. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/imap/__init__.py +0 -0
  172. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/imap/actions.py +0 -0
  173. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/imap/assets/icon.svg +0 -0
  174. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/imap/catalog.json +0 -0
  175. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/imap/docs/protocol.md +0 -0
  176. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/imap/integration.py +0 -0
  177. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/imap/probe.py +0 -0
  178. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/jina/__init__.py +0 -0
  179. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/jina/actions.py +0 -0
  180. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/jina/assets/icon.png +0 -0
  181. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/jina/catalog.json +0 -0
  182. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/jina/integration.py +0 -0
  183. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/kling_video/__init__.py +0 -0
  184. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/kling_video/actions.py +0 -0
  185. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/kling_video/assets/icon.png +0 -0
  186. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/kling_video/catalog.json +0 -0
  187. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/kling_video/integration.py +0 -0
  188. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/linear/__init__.py +0 -0
  189. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/linear/actions.py +0 -0
  190. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/linear/assets/graphql/auth/viewer-organization.graphql +0 -0
  191. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/linear/assets/graphql/comments/create.graphql +0 -0
  192. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/linear/assets/graphql/comments/delete.graphql +0 -0
  193. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/linear/assets/graphql/comments/get.graphql +0 -0
  194. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/linear/assets/graphql/comments/list.graphql +0 -0
  195. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/linear/assets/graphql/comments/resolve.graphql +0 -0
  196. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/linear/assets/graphql/comments/unresolve.graphql +0 -0
  197. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/linear/assets/graphql/comments/update.graphql +0 -0
  198. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/linear/assets/graphql/cycles/get.graphql +0 -0
  199. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/linear/assets/graphql/cycles/list.graphql +0 -0
  200. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/linear/assets/graphql/issue-labels/get.graphql +0 -0
  201. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/linear/assets/graphql/issue-labels/list.graphql +0 -0
  202. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/linear/assets/graphql/issue-relations/create.graphql +0 -0
  203. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/linear/assets/graphql/issue-relations/delete.graphql +0 -0
  204. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/linear/assets/graphql/issue-relations/get.graphql +0 -0
  205. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/linear/assets/graphql/issue-relations/list.graphql +0 -0
  206. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/linear/assets/graphql/issue-relations/update.graphql +0 -0
  207. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/linear/assets/graphql/issues/add-label.graphql +0 -0
  208. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/linear/assets/graphql/issues/archive.graphql +0 -0
  209. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/linear/assets/graphql/issues/create.graphql +0 -0
  210. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/linear/assets/graphql/issues/get.graphql +0 -0
  211. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/linear/assets/graphql/issues/list.graphql +0 -0
  212. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/linear/assets/graphql/issues/remove-label.graphql +0 -0
  213. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/linear/assets/graphql/issues/search.graphql +0 -0
  214. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/linear/assets/graphql/issues/unarchive.graphql +0 -0
  215. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/linear/assets/graphql/issues/update.graphql +0 -0
  216. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/linear/assets/graphql/projects/get.graphql +0 -0
  217. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/linear/assets/graphql/projects/list.graphql +0 -0
  218. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/linear/assets/graphql/teams/get.graphql +0 -0
  219. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/linear/assets/graphql/teams/list.graphql +0 -0
  220. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/linear/assets/graphql/users/get.graphql +0 -0
  221. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/linear/assets/graphql/users/list.graphql +0 -0
  222. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/linear/assets/graphql/viewer/get.graphql +0 -0
  223. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/linear/assets/graphql/workflow-states/get.graphql +0 -0
  224. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/linear/assets/graphql/workflow-states/list.graphql +0 -0
  225. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/linear/assets/icon.png +0 -0
  226. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/linear/catalog.json +0 -0
  227. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/linear/contract.py +0 -0
  228. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/linear/docs/auth.md +0 -0
  229. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/linear/docs/linear.md +0 -0
  230. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/linear/integration.py +0 -0
  231. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/linear/schemas/introspection-2026-07-23.json +0 -0
  232. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/linear/schemas/introspection-2026-07-23.metadata.json +0 -0
  233. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/linear/schemas/root-policy-2026-07-23.json +0 -0
  234. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/meta_ads/__init__.py +0 -0
  235. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/meta_ads/actions.py +0 -0
  236. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/meta_ads/assets/icon.png +0 -0
  237. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/meta_ads/auth.py +0 -0
  238. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/meta_ads/catalog.json +0 -0
  239. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/meta_ads/docs/auth.md +0 -0
  240. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/microsoft_365/__init__.py +0 -0
  241. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/microsoft_365/actions.py +0 -0
  242. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/microsoft_365/assets/icon.png +0 -0
  243. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/microsoft_365/auth.py +0 -0
  244. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/microsoft_365/catalog.json +0 -0
  245. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/microsoft_365/docs/auth.md +0 -0
  246. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/microsoft_365/docs/protocol.md +0 -0
  247. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/openai_images/__init__.py +0 -0
  248. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/openai_images/actions.py +0 -0
  249. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/openai_images/assets/icon.webp +0 -0
  250. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/openai_images/catalog.json +0 -0
  251. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/openai_images/integration.py +0 -0
  252. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/openrouter/__init__.py +0 -0
  253. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/openrouter/assets/icon.png +0 -0
  254. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/openrouter/catalog.json +0 -0
  255. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/openrouter/integration.py +0 -0
  256. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/openrouter/probe.py +0 -0
  257. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/outreach/__init__.py +0 -0
  258. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/outreach/actions.py +0 -0
  259. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/outreach/assets/icon.png +0 -0
  260. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/outreach/catalog.json +0 -0
  261. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/outreach/docs/auth.md +0 -0
  262. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/outreach/docs/protocol.md +0 -0
  263. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/pipedrive/__init__.py +0 -0
  264. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/pipedrive/actions.py +0 -0
  265. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/pipedrive/assets/icon.png +0 -0
  266. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/pipedrive/catalog.json +0 -0
  267. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/pipedrive/docs/auth.md +0 -0
  268. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/pipedrive/docs/protocol.md +0 -0
  269. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/pipedrive/integration.py +0 -0
  270. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/pipedrive/probe.py +0 -0
  271. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/reddit/__init__.py +0 -0
  272. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/reddit/actions.py +0 -0
  273. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/reddit/assets/icon.png +0 -0
  274. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/reddit/catalog.json +0 -0
  275. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/reddit/docs/auth.md +0 -0
  276. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/reddit/integration.py +0 -0
  277. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/reve/__init__.py +0 -0
  278. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/reve/actions.py +0 -0
  279. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/reve/assets/icon.png +0 -0
  280. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/reve/catalog.json +0 -0
  281. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/reve/integration.py +0 -0
  282. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/salesforce/__init__.py +0 -0
  283. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/salesforce/actions.py +0 -0
  284. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/salesforce/assets/icon.png +0 -0
  285. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/salesforce/auth.py +0 -0
  286. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/salesforce/catalog.json +0 -0
  287. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/salesforce/docs/auth.md +0 -0
  288. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/salesforce/docs/protocol.md +0 -0
  289. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/salesloft/__init__.py +0 -0
  290. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/salesloft/actions.py +0 -0
  291. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/salesloft/assets/icon.jpeg +0 -0
  292. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/salesloft/catalog.json +0 -0
  293. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/salesloft/docs/auth.md +0 -0
  294. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/salesloft/docs/protocol.md +0 -0
  295. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/salesloft/integration.py +0 -0
  296. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/serper/__init__.py +0 -0
  297. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/serper/actions.py +0 -0
  298. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/serper/assets/icon.svg +0 -0
  299. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/serper/catalog.json +0 -0
  300. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/serper/integration.py +0 -0
  301. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/shopify/__init__.py +0 -0
  302. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/shopify/actions.py +0 -0
  303. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/shopify/assets/graphql/customers/add-customer-tag.graphql +0 -0
  304. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/shopify/assets/graphql/customers/create-customer.graphql +0 -0
  305. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/shopify/assets/graphql/customers/get-customer-lifetime-value.graphql +0 -0
  306. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/shopify/assets/graphql/customers/get-customer-orders.graphql +0 -0
  307. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/shopify/assets/graphql/customers/get-customer.graphql +0 -0
  308. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/shopify/assets/graphql/customers/list-customers.graphql +0 -0
  309. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/shopify/assets/graphql/customers/remove-customer-tag.graphql +0 -0
  310. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/shopify/assets/graphql/customers/search-customers.graphql +0 -0
  311. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/shopify/assets/graphql/customers/update-customer.graphql +0 -0
  312. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/shopify/assets/graphql/inventory/adjust-inventory.graphql +0 -0
  313. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/shopify/assets/graphql/inventory/get-inventory-by-sku.graphql +0 -0
  314. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/shopify/assets/graphql/inventory/get-inventory-item.graphql +0 -0
  315. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/shopify/assets/graphql/inventory/get-location-inventory.graphql +0 -0
  316. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/shopify/assets/graphql/inventory/list-inventory-item-availability.graphql +0 -0
  317. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/shopify/assets/graphql/inventory/list-inventory-levels.graphql +0 -0
  318. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/shopify/assets/graphql/inventory/list-product-variant-inventory.graphql +0 -0
  319. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/shopify/assets/graphql/inventory/set-inventory-level.graphql +0 -0
  320. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/shopify/assets/graphql/orders/add-order-note.graphql +0 -0
  321. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/shopify/assets/graphql/orders/add-order-tag.graphql +0 -0
  322. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/shopify/assets/graphql/orders/create-draft-order.graphql +0 -0
  323. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/shopify/assets/graphql/orders/get-order-by-name.graphql +0 -0
  324. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/shopify/assets/graphql/orders/get-order-fulfillment-status.graphql +0 -0
  325. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/shopify/assets/graphql/orders/get-order-timeline.graphql +0 -0
  326. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/shopify/assets/graphql/orders/get-order.graphql +0 -0
  327. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/shopify/assets/graphql/orders/list-order-variant-quantities.graphql +0 -0
  328. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/shopify/assets/graphql/orders/list-orders.graphql +0 -0
  329. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/shopify/assets/graphql/orders/mark-order-paid.graphql +0 -0
  330. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/shopify/assets/graphql/orders/search-orders.graphql +0 -0
  331. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/shopify/assets/graphql/orders/update-order-note.graphql +0 -0
  332. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/shopify/assets/graphql/orders/update-order-tags.graphql +0 -0
  333. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/shopify/assets/graphql/products/create-collection.graphql +0 -0
  334. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/shopify/assets/graphql/products/create-product-variant.graphql +0 -0
  335. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/shopify/assets/graphql/products/create-product.graphql +0 -0
  336. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/shopify/assets/graphql/products/get-collection.graphql +0 -0
  337. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/shopify/assets/graphql/products/get-product-by-handle.graphql +0 -0
  338. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/shopify/assets/graphql/products/get-product-variant.graphql +0 -0
  339. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/shopify/assets/graphql/products/get-product.graphql +0 -0
  340. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/shopify/assets/graphql/products/list-collections.graphql +0 -0
  341. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/shopify/assets/graphql/products/list-product-variants.graphql +0 -0
  342. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/shopify/assets/graphql/products/list-products.graphql +0 -0
  343. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/shopify/assets/graphql/products/search-products.graphql +0 -0
  344. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/shopify/assets/graphql/products/update-product-status.graphql +0 -0
  345. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/shopify/assets/graphql/products/update-product-variant.graphql +0 -0
  346. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/shopify/assets/graphql/products/update-product.graphql +0 -0
  347. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/shopify/assets/graphql/shopifyql.graphql +0 -0
  348. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/shopify/assets/icon.png +0 -0
  349. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/shopify/catalog.json +0 -0
  350. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/shopify/docs/shopify.md +0 -0
  351. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/shopify/integration.py +0 -0
  352. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/shopify/payloads.py +0 -0
  353. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/shopify/probe.py +0 -0
  354. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/sitemap/__init__.py +0 -0
  355. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/sitemap/actions.py +0 -0
  356. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/sitemap/catalog.json +0 -0
  357. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/sitemap/integration.py +0 -0
  358. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/slack_bot/__init__.py +0 -0
  359. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/slack_bot/actions.py +0 -0
  360. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/slack_bot/assets/icon.png +0 -0
  361. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/slack_bot/auth.py +0 -0
  362. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/slack_bot/catalog.json +0 -0
  363. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/slack_bot/constants.py +0 -0
  364. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/slack_bot/docs/protocol.md +0 -0
  365. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/slack_bot/docs/signatures.md +0 -0
  366. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/slack_bot/files.py +0 -0
  367. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/slack_bot/http.py +0 -0
  368. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/slack_bot/integration.py +0 -0
  369. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/slack_bot/payloads.py +0 -0
  370. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/slack_bot/probe.py +0 -0
  371. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/slack_bot/results.py +0 -0
  372. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/slack_bot/validation.py +0 -0
  373. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/smtp/__init__.py +0 -0
  374. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/smtp/actions.py +0 -0
  375. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/smtp/assets/icon.svg +0 -0
  376. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/smtp/catalog.json +0 -0
  377. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/smtp/docs/protocol.md +0 -0
  378. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/smtp/integration.py +0 -0
  379. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/smtp/probe.py +0 -0
  380. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/stripe/__init__.py +0 -0
  381. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/stripe/actions.py +0 -0
  382. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/stripe/assets/icon.jpeg +0 -0
  383. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/stripe/catalog.json +0 -0
  384. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/stripe/contract.py +0 -0
  385. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/stripe/docs/stripe.md +0 -0
  386. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/stripe/integration.py +0 -0
  387. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/taboola/__init__.py +0 -0
  388. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/taboola/actions.py +0 -0
  389. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/taboola/assets/icon.svg +0 -0
  390. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/taboola/catalog.json +0 -0
  391. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/taboola/docs/auth.md +0 -0
  392. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/telegram/__init__.py +0 -0
  393. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/telegram/actions.py +0 -0
  394. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/telegram/assets/icon.png +0 -0
  395. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/telegram/auth.py +0 -0
  396. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/telegram/catalog.json +0 -0
  397. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/telegram/docs/auth-protocol.md +0 -0
  398. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/telegram/docs/protocol.md +0 -0
  399. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/telegram/payloads.py +0 -0
  400. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/telegram/schema.py +0 -0
  401. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/telegram/tdlib/__init__.py +0 -0
  402. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/telegram/tdlib/native.py +0 -0
  403. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/telegram/tdlib/proxy.py +0 -0
  404. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/telegram/tdlib/sessions.py +0 -0
  405. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/trackbooth/__init__.py +0 -0
  406. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/trackbooth/actions.py +0 -0
  407. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/trackbooth/assets/agent-api/catalog.json +0 -0
  408. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/trackbooth/assets/agent-api/openapi.json +0 -0
  409. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/trackbooth/assets/agent-api/stackos-tools.json +0 -0
  410. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/trackbooth/assets/icon.png +0 -0
  411. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/trackbooth/assets.py +0 -0
  412. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/trackbooth/catalog.json +0 -0
  413. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/trackbooth/contract.py +0 -0
  414. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/trackbooth/docs/agent-api/README.md +0 -0
  415. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/trackbooth/docs/trackbooth.md +0 -0
  416. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/trackbooth/integration.py +0 -0
  417. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/trackbooth/probe.py +0 -0
  418. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/trackbooth/schema.py +0 -0
  419. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/trackbooth/transport.py +0 -0
  420. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/wordpress/__init__.py +0 -0
  421. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/wordpress/actions.py +0 -0
  422. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/wordpress/assets/icon.png +0 -0
  423. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/wordpress/catalog.json +0 -0
  424. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/wordpress/integration.py +0 -0
  425. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/wordpress/probe.py +0 -0
  426. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/xai_imagine/__init__.py +0 -0
  427. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/xai_imagine/actions.py +0 -0
  428. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/xai_imagine/assets/icon.png +0 -0
  429. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/xai_imagine/catalog.json +0 -0
  430. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/xai_imagine/integration.py +0 -0
  431. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/contracts.py +0 -0
  432. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/errors.py +0 -0
  433. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/probe.py +0 -0
  434. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/py.typed +0 -0
  435. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/redaction.py +0 -0
  436. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/registry.py +0 -0
  437. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/shared/__init__.py +0 -0
  438. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/shared/base.py +0 -0
  439. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/shared/byteplus/__init__.py +0 -0
  440. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/shared/byteplus/ark.py +0 -0
  441. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/shared/byteplus/media.py +0 -0
  442. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/shared/google/__init__.py +0 -0
  443. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/shared/google/batch.py +0 -0
  444. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/shared/google/oauth.py +0 -0
  445. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/shared/google/probe.py +0 -0
  446. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/shared/icons/integration.svg +0 -0
  447. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/shared/media.py +0 -0
  448. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/shared/oauth.py +0 -0
  449. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/shared/provider_utils.py +0 -0
  450. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/shared/rate_limit.py +0 -0
  451. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/shared/vendor_utils.py +0 -0
  452. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/validation.py +0 -0
  453. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/tests/auth/test_auth_redaction.py +0 -0
  454. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/tests/auth/test_oauth_protocol.py +0 -0
  455. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/tests/auth/test_search_console_scopes.py +0 -0
  456. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/tests/business/conftest.py +0 -0
  457. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/tests/business/fixtures/wire-contracts.json +0 -0
  458. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/tests/business/test_hubspot_signature_protocol.py +0 -0
  459. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/tests/business/test_named_actions.py +0 -0
  460. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/tests/business/test_pipedrive_probes.py +0 -0
  461. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/tests/business/test_probe_boundary.py +0 -0
  462. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/tests/business/test_salesloft_probes.py +0 -0
  463. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/tests/catalog/test_catalog.py +0 -0
  464. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/tests/catalog/test_nested_resources.py +0 -0
  465. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/tests/core/test_contract.py +0 -0
  466. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/tests/core/test_native_result_boundary.py +0 -0
  467. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/tests/core/test_nested_auth_redaction.py +0 -0
  468. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/tests/core/test_preflight_redaction.py +0 -0
  469. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/tests/core/test_public_key_facts.py +0 -0
  470. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/tests/core/test_runtime.py +0 -0
  471. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/tests/core/test_timeout_options.py +0 -0
  472. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/tests/core/test_validation_data.py +0 -0
  473. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/tests/core/test_validation_execution_outcome.py +0 -0
  474. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/tests/mail_slack/__init__.py +0 -0
  475. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/tests/mail_slack/test_native.py +0 -0
  476. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/tests/mail_slack/test_probes_catalog.py +0 -0
  477. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/tests/mail_slack/test_signature_protocol.py +0 -0
  478. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/tests/media/test_aignc_native.py +0 -0
  479. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/tests/media/test_generation_outcomes.py +0 -0
  480. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/tests/media/test_media_files.py +0 -0
  481. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/tests/media/test_named_media.py +0 -0
  482. {stackos_connectors-0.2.1/tests/web → stackos_connectors-0.2.3/tests/quickbooks_online}/__init__.py +0 -0
  483. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/tests/safe_refs/conftest.py +0 -0
  484. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/tests/safe_refs/test_linear_transport.py +0 -0
  485. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/tests/safe_refs/test_safe_refs_named_actions.py +0 -0
  486. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/tests/safe_refs/test_stripe_transport_transport.py +0 -0
  487. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/tests/telegram/__init__.py +0 -0
  488. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/tests/telegram/test_actions.py +0 -0
  489. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/tests/telegram/test_authorization.py +0 -0
  490. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/tests/telegram/test_closure_outcomes.py +0 -0
  491. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/tests/telegram/test_native.py +0 -0
  492. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/tests/telegram/test_payloads.py +0 -0
  493. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/tests/telegram/test_proxy.py +0 -0
  494. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/tests/telegram/test_sessions.py +0 -0
  495. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/tests/trackbooth/__init__.py +0 -0
  496. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/tests/trackbooth/test_native.py +0 -0
  497. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/tests/web/catalog_fixture.py +0 -0
  498. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/tests/web/conftest.py +0 -0
  499. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/tests/web/test_ahrefs.py +0 -0
  500. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/tests/web/test_boundary_timeout.py +0 -0
  501. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/tests/web/test_cloudflare.py +0 -0
  502. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/tests/web/test_dataforseo.py +0 -0
  503. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/tests/web/test_firecrawl.py +0 -0
  504. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/tests/web/test_ftp.py +0 -0
  505. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/tests/web/test_ftp_actions.py +0 -0
  506. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/tests/web/test_google_analytics.py +0 -0
  507. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/tests/web/test_google_indexing.py +0 -0
  508. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/tests/web/test_google_indexing_batch.py +0 -0
  509. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/tests/web/test_google_search_console.py +0 -0
  510. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/tests/web/test_google_search_console_batch.py +0 -0
  511. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/tests/web/test_google_tag_manager.py +0 -0
  512. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/tests/web/test_jina_reader.py +0 -0
  513. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/tests/web/test_named_clients.py +0 -0
  514. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/tests/web/test_native_boundary.py +0 -0
  515. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/tests/web/test_openrouter.py +0 -0
  516. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/tests/web/test_reddit.py +0 -0
  517. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/tests/web/test_s3.py +0 -0
  518. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/tests/web/test_s3_actions.py +0 -0
  519. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/tests/web/test_serper.py +0 -0
  520. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/tests/web/test_shopify.py +0 -0
  521. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/tests/web/test_sitemap.py +0 -0
  522. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/tests/web/test_transport_defaults.py +0 -0
  523. {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/tests/web/test_wordpress_ghost.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: stackos-connectors
3
- Version: 0.2.1
3
+ Version: 0.2.3
4
4
  Summary: Named provider connectors with plain data and caller-owned authentication.
5
5
  License-Expression: MIT
6
6
  License-File: LICENSE
@@ -73,6 +73,9 @@ execution; existing names cannot be replaced.
73
73
  `CallOptions.timeout=None` preserves each provider's default. A numeric timeout
74
74
  overrides that default. A supplied HTTP client remains caller-owned.
75
75
 
76
+ QuickBooks Online provides bounded company/invoice reads with exact invoice JSON
77
+ fragments and explicit OAuth. See the [provider contract](src/stackos_connectors/connectors/quickbooks_online/docs/quickbooks-online.md).
78
+
76
79
  ## Explicit authentication
77
80
 
78
81
  `get_auth_contract(connector, method=..., config=...)` reads immutable provider
@@ -124,11 +127,11 @@ through `CallOptions(provider_context={"mailbox": ...})`. Google Ads/Workspace
124
127
  service-account probes only report resolved-token presence and unverified resource
125
128
  access; they make no HTTP call or new-grant claim.
126
129
 
127
- Google JWT validation/signing is shared across the five declared service-account
130
+ Google JWT validation/signing is shared across the six declared service-account
128
131
  methods. Credentials never come from ambient identity or key-supplied endpoints.
129
132
  Provider details live in `connectors/<provider>/docs/auth.md` and the catalog.
130
- Google Indexing retains its existing resolved-token action/probe contract; this
131
- release adds no Indexing JWT acquisition method.
133
+ Google Indexing supports explicit `jwt_bearer` acquisition with the fixed Indexing
134
+ scope. Token acquisition does not establish API enablement or site-owner access.
132
135
 
133
136
  Provider-local pure helpers cover Telegram authorization request/challenge/state
134
137
  translation (`connectors.telegram.auth`), Slack v0 HMAC verification
@@ -188,15 +191,23 @@ Python 3.12 or newer is required. Source:
188
191
  Published releases can be installed with:
189
192
 
190
193
  ```bash
191
- python -m pip install stackos-connectors==0.2.0
194
+ python -m pip install stackos-connectors==0.2.3
192
195
  ```
193
196
 
194
- Or add `stackos-connectors==0.2.0` to your Python dependency requirements.
197
+ Or add `stackos-connectors==0.2.3` to your Python dependency requirements.
195
198
 
196
199
  Install from a local checkout with `pip install /path/to/StackOSConnectors`, or
197
200
  build a wheel with `python -m build --wheel` and install that wheel. Runtime use
198
201
  needs only the installed package and its declared dependencies.
199
202
 
203
+ ### 0.2.3 release notes
204
+
205
+ - Restore Google Indexing service-account token acquisition through the canonical
206
+ `get_auth_contract` and `request_token` APIs. The contract fixes the Google token
207
+ endpoint and Indexing scope, requires a Bearer response, and rejects delegation.
208
+ - Preserve the QuickBooks Online connector from 0.2.2 and the Search Console scope
209
+ handling from 0.2.1.
210
+
200
211
  ## Publishing
201
212
 
202
213
  The manual [publish workflow](.github/workflows/publish.yml) uses PyPI Trusted
@@ -57,6 +57,9 @@ execution; existing names cannot be replaced.
57
57
  `CallOptions.timeout=None` preserves each provider's default. A numeric timeout
58
58
  overrides that default. A supplied HTTP client remains caller-owned.
59
59
 
60
+ QuickBooks Online provides bounded company/invoice reads with exact invoice JSON
61
+ fragments and explicit OAuth. See the [provider contract](src/stackos_connectors/connectors/quickbooks_online/docs/quickbooks-online.md).
62
+
60
63
  ## Explicit authentication
61
64
 
62
65
  `get_auth_contract(connector, method=..., config=...)` reads immutable provider
@@ -108,11 +111,11 @@ through `CallOptions(provider_context={"mailbox": ...})`. Google Ads/Workspace
108
111
  service-account probes only report resolved-token presence and unverified resource
109
112
  access; they make no HTTP call or new-grant claim.
110
113
 
111
- Google JWT validation/signing is shared across the five declared service-account
114
+ Google JWT validation/signing is shared across the six declared service-account
112
115
  methods. Credentials never come from ambient identity or key-supplied endpoints.
113
116
  Provider details live in `connectors/<provider>/docs/auth.md` and the catalog.
114
- Google Indexing retains its existing resolved-token action/probe contract; this
115
- release adds no Indexing JWT acquisition method.
117
+ Google Indexing supports explicit `jwt_bearer` acquisition with the fixed Indexing
118
+ scope. Token acquisition does not establish API enablement or site-owner access.
116
119
 
117
120
  Provider-local pure helpers cover Telegram authorization request/challenge/state
118
121
  translation (`connectors.telegram.auth`), Slack v0 HMAC verification
@@ -172,15 +175,23 @@ Python 3.12 or newer is required. Source:
172
175
  Published releases can be installed with:
173
176
 
174
177
  ```bash
175
- python -m pip install stackos-connectors==0.2.0
178
+ python -m pip install stackos-connectors==0.2.3
176
179
  ```
177
180
 
178
- Or add `stackos-connectors==0.2.0` to your Python dependency requirements.
181
+ Or add `stackos-connectors==0.2.3` to your Python dependency requirements.
179
182
 
180
183
  Install from a local checkout with `pip install /path/to/StackOSConnectors`, or
181
184
  build a wheel with `python -m build --wheel` and install that wheel. Runtime use
182
185
  needs only the installed package and its declared dependencies.
183
186
 
187
+ ### 0.2.3 release notes
188
+
189
+ - Restore Google Indexing service-account token acquisition through the canonical
190
+ `get_auth_contract` and `request_token` APIs. The contract fixes the Google token
191
+ endpoint and Indexing scope, requires a Bearer response, and rejects delegation.
192
+ - Preserve the QuickBooks Online connector from 0.2.2 and the Search Console scope
193
+ handling from 0.2.1.
194
+
184
195
  ## Publishing
185
196
 
186
197
  The manual [publish workflow](.github/workflows/publish.yml) uses PyPI Trusted
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "stackos-connectors"
7
- version = "0.2.1"
7
+ version = "0.2.3"
8
8
  description = "Named provider connectors with plain data and caller-owned authentication."
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.12"
@@ -35,6 +35,7 @@
35
35
  "connectors/openrouter/catalog.json",
36
36
  "connectors/outreach/catalog.json",
37
37
  "connectors/pipedrive/catalog.json",
38
+ "connectors/quickbooks_online/catalog.json",
38
39
  "connectors/reddit/catalog.json",
39
40
  "connectors/reve/catalog.json",
40
41
  "connectors/salesforce/catalog.json",
@@ -41,7 +41,20 @@
41
41
  "type": "secret"
42
42
  }
43
43
  ],
44
- "description": "Use the Google service-account key to acquire an access token outside this library. Execution accepts the resolved access_token; provider resource access must be granted separately."
44
+ "description": "Use request_token with the Google service-account key to acquire an access token. Execution accepts the resolved access_token; provider resource access must be granted separately. Credential storage and refresh scheduling remain consumer-owned.",
45
+ "auth_type": "oauth",
46
+ "interactive": false
47
+ },
48
+ "evidence_source": "oauth_response",
49
+ "protocol": {
50
+ "grant_types": [
51
+ "jwt_bearer"
52
+ ],
53
+ "flow": "jwt_bearer",
54
+ "authorization_endpoint": null,
55
+ "pkce_mode": "unavailable",
56
+ "authorization_params": [],
57
+ "required_token_type": "Bearer"
45
58
  }
46
59
  }
47
60
  ],
@@ -221,5 +234,12 @@
221
234
  "path": "shared/icons/integration.svg",
222
235
  "media_type": "image/svg+xml",
223
236
  "kind": "fallback"
237
+ },
238
+ "auth_protocol": {
239
+ "flow": "jwt_bearer",
240
+ "token_endpoint": "https://oauth2.googleapis.com/token",
241
+ "scopes": [
242
+ "https://www.googleapis.com/auth/indexing"
243
+ ]
224
244
  }
225
245
  }
@@ -0,0 +1,30 @@
1
+ # Google Indexing authentication
2
+
3
+ The [bundled catalog](../catalog.json) is the installed contract for method fields,
4
+ scopes, endpoints and supported grants. Read it through `describe`; use
5
+ `get_auth_contract` for immutable protocol facts.
6
+
7
+ | Saved method | Explicit token grants |
8
+ | --- | --- |
9
+ | `service-account` | `jwt_bearer` |
10
+
11
+ Call `request_token` with resolved `service_account_json` to sign an RSA JWT and
12
+ exchange it at `https://oauth2.googleapis.com/token`. The signed request uses only
13
+ `https://www.googleapis.com/auth/indexing`. The shared Google key validator rejects
14
+ alternate token endpoints and external credential sources. Delegation is not
15
+ supported. A successful response requires a Bearer token and a positive expiry;
16
+ omitted scope remains omitted provider evidence.
17
+
18
+ Actions and `probe_credentials` accept the resolved `access_token`. Discovery,
19
+ probes and actions never acquire or refresh credentials implicitly. The consumer
20
+ owns key and token custody, refresh timing, permissions, persistence and audit.
21
+
22
+ Token acquisition does not verify API enablement or site-owner access. The service
23
+ account needs delegated site-owner access in Search Console. This property role
24
+ is separate from Workspace user impersonation. Existing eligibility, quota and
25
+ notification semantics remain in the [provider notes](google-indexing.md).
26
+
27
+ Provider references retained from the reviewed catalog:
28
+
29
+ - [Indexing prerequisites](https://developers.google.com/search/apis/indexing-api/v3/prereqs)
30
+ - [Indexing API usage](https://developers.google.com/search/apis/indexing-api/v3/using-api)
@@ -21,7 +21,7 @@ The full `webmasters` scope also permits read operations. Consumers can use
21
21
  without changing stored provider scope evidence. Read-only scope never satisfies
22
22
  a sitemap submission requirement. Property permissions remain separate.
23
23
 
24
- Service-account token success does not establish Search Console property access. Inventory probes can succeed with no properties. Google Indexing is a separate resolved-token contract; no new Indexing JWT grant is supplied.
24
+ Service-account token success does not establish Search Console property access. Inventory probes can succeed with no properties. Google Indexing has a separate [service-account authentication contract](../../google_indexing/docs/auth.md) and scope.
25
25
 
26
26
  `request_token` receives resolved application/key fields and performs only the requested grant. Actions and `probe_credentials` receive resolved execution fields. Discovery, probes and actions never acquire or refresh implicitly. The consumer owns credential/state/PKCE custody, callbacks, refresh timing and concurrency, permissions, persistence and audit. Token results and authorization URLs are sensitive in-process values.
27
27
 
@@ -0,0 +1 @@
1
+ """QuickBooks Online named reads and explicit OAuth declarations."""
@@ -0,0 +1,110 @@
1
+ """The two bounded QuickBooks Online read actions."""
2
+
3
+ from __future__ import annotations
4
+
5
+ from collections.abc import Callable
6
+ from contextlib import AsyncExitStack
7
+ from functools import partial
8
+
9
+ import httpx
10
+
11
+ from stackos_connectors import ConnectorRequest, ConnectorResult, ValidationIssue
12
+ from stackos_connectors.redaction import auth_secret_values, redact_secret_values
13
+
14
+ from .integration import QuickBooksIntegration
15
+ from .response import (
16
+ CompanyInfo,
17
+ InvoicePage,
18
+ calendar_date,
19
+ invalid_response,
20
+ parse_company_info,
21
+ parse_invoice_page,
22
+ )
23
+
24
+
25
+ class QuickBooksActionConnector:
26
+ key = "quickbooks-online"
27
+
28
+ def validate(self, request: ConnectorRequest) -> list[ValidationIssue]:
29
+ if request.operation != "invoices.list":
30
+ return []
31
+ try:
32
+ first = calendar_date(request.input_json["txn_date_from"])
33
+ last = calendar_date(request.input_json["txn_date_to"])
34
+ if first > last:
35
+ raise ValueError("reversed dates")
36
+ except ValueError:
37
+ return [
38
+ ValidationIssue(path="$.txn_date_from", message="Dates must be valid and ordered")
39
+ ]
40
+ return []
41
+
42
+ def estimate_cost_cents(self, request: ConnectorRequest) -> int:
43
+ return 0
44
+
45
+ async def execute(self, request: ConnectorRequest) -> ConnectorResult:
46
+ assert request.auth is not None
47
+ config = request.auth.config
48
+ secrets = auth_secret_values(request.auth)
49
+ realm = config["realm_id"]
50
+ path, params, parser = _read_parameters(request, secrets)
51
+ async with AsyncExitStack() as stack:
52
+ http = request.options.http
53
+ if http is None:
54
+ http = await stack.enter_async_context(
55
+ httpx.AsyncClient(timeout=30.0, follow_redirects=False)
56
+ )
57
+ integration = QuickBooksIntegration(
58
+ payload=b"",
59
+ http=http,
60
+ timeout=request.options.timeout,
61
+ rate_limiter=request.options.rate_limiter,
62
+ )
63
+ result = await integration.read(
64
+ op=request.operation,
65
+ environment=config["environment"],
66
+ realm_id=realm,
67
+ token=request.auth.fields["access_token"],
68
+ path=path,
69
+ params=params,
70
+ parser=parser,
71
+ )
72
+ if redact_secret_values(result.data, secrets) != result.data:
73
+ raise invalid_response()
74
+ return ConnectorResult(
75
+ output_json=result.data,
76
+ metadata_json={"vendor": self.key, "operation": request.operation},
77
+ )
78
+
79
+
80
+ def _read_parameters(
81
+ request: ConnectorRequest, secrets: tuple[str, ...]
82
+ ) -> tuple[str, dict[str, str] | None, Callable[[httpx.Response], CompanyInfo | InvoicePage]]:
83
+ assert request.auth is not None
84
+ realm = request.auth.config["realm_id"]
85
+ if request.operation == "company-info.get":
86
+ return (
87
+ f"companyinfo/{realm}",
88
+ None,
89
+ partial(parse_company_info, secrets=secrets, realm_id=realm),
90
+ )
91
+ data = request.input_json
92
+ parser = partial(
93
+ parse_invoice_page,
94
+ secrets=secrets,
95
+ start=data["start_position"],
96
+ limit=data["max_results"],
97
+ date_from=data["txn_date_from"],
98
+ date_to=data["txn_date_to"],
99
+ )
100
+ query = _invoice_query(
101
+ data["txn_date_from"], data["txn_date_to"], data["start_position"], data["max_results"]
102
+ )
103
+ return "query", {"query": query}, parser
104
+
105
+
106
+ def _invoice_query(date_from: str, date_to: str, start: int, limit: int) -> str:
107
+ return (
108
+ f"select * from Invoice where TxnDate >= '{date_from}' and TxnDate <= '{date_to}' "
109
+ f"STARTPOSITION {start} MAXRESULTS {limit}"
110
+ )
@@ -0,0 +1,309 @@
1
+ {
2
+ "schema_version": "stackos.connector.v1",
3
+ "connector": "quickbooks-online",
4
+ "name": "QuickBooks Online",
5
+ "description": "Bounded company and invoice reads with explicit caller-owned OAuth.",
6
+ "auth_type": "oauth",
7
+ "auth_methods": [
8
+ {
9
+ "key": "oauth2_authorization_code",
10
+ "description": "Caller-supplied resolved OAuth bearer token; grants are always explicit.",
11
+ "fields_schema": {
12
+ "type": "object",
13
+ "properties": {
14
+ "access_token": {
15
+ "type": "string",
16
+ "minLength": 1,
17
+ "pattern": "^[^\\s]+$"
18
+ }
19
+ },
20
+ "required": [
21
+ "access_token"
22
+ ],
23
+ "additionalProperties": false
24
+ },
25
+ "config_schema": {
26
+ "type": "object",
27
+ "properties": {
28
+ "environment": {
29
+ "enum": [
30
+ "sandbox",
31
+ "production"
32
+ ]
33
+ },
34
+ "realm_id": {
35
+ "type": "string",
36
+ "pattern": "^[0-9]{1,32}$"
37
+ }
38
+ },
39
+ "required": [
40
+ "environment",
41
+ "realm_id"
42
+ ],
43
+ "additionalProperties": false
44
+ },
45
+ "setup": {
46
+ "auth_type": "oauth",
47
+ "interactive": true,
48
+ "description": "Register an Intuit app, verify callback state and realmId, and supply its resolved accounting access token.",
49
+ "fields": [
50
+ {
51
+ "key": "client_id",
52
+ "label": "Client Id",
53
+ "type": "secret",
54
+ "secret": true,
55
+ "required": true
56
+ },
57
+ {
58
+ "key": "client_secret",
59
+ "label": "Client Secret",
60
+ "type": "secret",
61
+ "secret": true,
62
+ "required": true
63
+ }
64
+ ]
65
+ },
66
+ "evidence_source": "oauth_response",
67
+ "protocol": {
68
+ "grant_types": [
69
+ "authorization_code",
70
+ "refresh_token"
71
+ ]
72
+ }
73
+ },
74
+ {
75
+ "key": "oauth2_token",
76
+ "description": "Caller-supplied resolved OAuth bearer token; grants are always explicit.",
77
+ "fields_schema": {
78
+ "type": "object",
79
+ "properties": {
80
+ "access_token": {
81
+ "type": "string",
82
+ "minLength": 1,
83
+ "pattern": "^[^\\s]+$"
84
+ }
85
+ },
86
+ "required": [
87
+ "access_token"
88
+ ],
89
+ "additionalProperties": false
90
+ },
91
+ "config_schema": {
92
+ "type": "object",
93
+ "properties": {
94
+ "environment": {
95
+ "enum": [
96
+ "sandbox",
97
+ "production"
98
+ ]
99
+ },
100
+ "realm_id": {
101
+ "type": "string",
102
+ "pattern": "^[0-9]{1,32}$"
103
+ }
104
+ },
105
+ "required": [
106
+ "environment",
107
+ "realm_id"
108
+ ],
109
+ "additionalProperties": false
110
+ },
111
+ "setup": {
112
+ "auth_type": "oauth",
113
+ "interactive": false,
114
+ "description": "Register an Intuit app, verify callback state and realmId, and supply its resolved accounting access token.",
115
+ "fields": [
116
+ {
117
+ "key": "access_token",
118
+ "label": "Access Token",
119
+ "type": "secret",
120
+ "secret": true,
121
+ "required": true
122
+ }
123
+ ]
124
+ },
125
+ "evidence_source": "unavailable",
126
+ "protocol": {
127
+ "grant_types": [
128
+ "refresh_token"
129
+ ]
130
+ }
131
+ }
132
+ ],
133
+ "auth_protocol": {
134
+ "flow": "authorization_code",
135
+ "authorization_endpoint": "https://appcenter.intuit.com/connect/oauth2",
136
+ "token_endpoint": "https://oauth.platform.intuit.com/oauth2/v1/tokens/bearer",
137
+ "client_auth_style": "basic",
138
+ "pkce_mode": "unavailable",
139
+ "scopes": [
140
+ "com.intuit.quickbooks.accounting"
141
+ ],
142
+ "response_account_id_field": null
143
+ },
144
+ "actions": [
145
+ {
146
+ "key": "quickbooks-online.company-info.get",
147
+ "operation": "company-info.get",
148
+ "input_schema": {
149
+ "type": "object",
150
+ "properties": {},
151
+ "required": [],
152
+ "additionalProperties": false
153
+ },
154
+ "output_schema": {
155
+ "type": "object",
156
+ "properties": {
157
+ "realm_id": {
158
+ "type": "string",
159
+ "minLength": 1
160
+ },
161
+ "company_id": {
162
+ "type": "string",
163
+ "minLength": 1
164
+ },
165
+ "company_name": {
166
+ "type": "string",
167
+ "minLength": 1
168
+ }
169
+ },
170
+ "required": [
171
+ "realm_id",
172
+ "company_id"
173
+ ],
174
+ "additionalProperties": false
175
+ },
176
+ "auth_methods": [
177
+ "oauth2_authorization_code",
178
+ "oauth2_token"
179
+ ],
180
+ "description": "Read CompanyInfo for the configured realm. Returned realm_id repeats request context, not independent provider attestation.",
181
+ "guidance": "Caller owns pagination, complete-scan limits and current-state semantics. total_count is supplied metadata only; missing currency remains unknown. See provider docs.",
182
+ "metadata": {
183
+ "name": "Read company info",
184
+ "risk_level": "read"
185
+ },
186
+ "config": {}
187
+ },
188
+ {
189
+ "key": "quickbooks-online.invoices.list",
190
+ "operation": "invoices.list",
191
+ "input_schema": {
192
+ "type": "object",
193
+ "properties": {
194
+ "txn_date_from": {
195
+ "type": "string",
196
+ "pattern": "^[0-9]{4}-[0-9]{2}-[0-9]{2}$"
197
+ },
198
+ "txn_date_to": {
199
+ "type": "string",
200
+ "pattern": "^[0-9]{4}-[0-9]{2}-[0-9]{2}$"
201
+ },
202
+ "start_position": {
203
+ "type": "integer",
204
+ "minimum": 1,
205
+ "maximum": 2147483647
206
+ },
207
+ "max_results": {
208
+ "type": "integer",
209
+ "minimum": 1,
210
+ "maximum": 100
211
+ }
212
+ },
213
+ "required": [
214
+ "txn_date_from",
215
+ "txn_date_to",
216
+ "start_position",
217
+ "max_results"
218
+ ],
219
+ "additionalProperties": false
220
+ },
221
+ "output_schema": {
222
+ "type": "object",
223
+ "properties": {
224
+ "invoices": {
225
+ "type": "array",
226
+ "items": {
227
+ "type": "object",
228
+ "properties": {
229
+ "native_id": {
230
+ "type": "string",
231
+ "minLength": 1
232
+ },
233
+ "raw_json": {
234
+ "type": "string",
235
+ "minLength": 1
236
+ },
237
+ "source_revision": {
238
+ "type": "string",
239
+ "minLength": 1
240
+ },
241
+ "source_updated_at": {
242
+ "type": "string",
243
+ "minLength": 1
244
+ }
245
+ },
246
+ "required": [
247
+ "native_id",
248
+ "raw_json"
249
+ ],
250
+ "additionalProperties": false
251
+ },
252
+ "maxItems": 100
253
+ },
254
+ "start_position": {
255
+ "type": "integer",
256
+ "minimum": 1
257
+ },
258
+ "max_results": {
259
+ "type": "integer",
260
+ "minimum": 0,
261
+ "maximum": 100
262
+ },
263
+ "count": {
264
+ "type": "integer",
265
+ "minimum": 0,
266
+ "maximum": 100
267
+ },
268
+ "total_count": {
269
+ "type": "integer",
270
+ "minimum": 0
271
+ }
272
+ },
273
+ "required": [
274
+ "invoices",
275
+ "start_position",
276
+ "max_results",
277
+ "count"
278
+ ],
279
+ "additionalProperties": false
280
+ },
281
+ "auth_methods": [
282
+ "oauth2_authorization_code",
283
+ "oauth2_token"
284
+ ],
285
+ "description": "Read one bounded Invoice page by inclusive TxnDate, retaining exact JSON source fragments without floating-point conversion.",
286
+ "guidance": "Caller owns pagination, complete-scan limits and current-state semantics. total_count is supplied metadata only; missing currency remains unknown. See provider docs.",
287
+ "metadata": {
288
+ "name": "Read invoice page",
289
+ "risk_level": "read"
290
+ },
291
+ "config": {}
292
+ }
293
+ ],
294
+ "implementation": "stackos_connectors.connectors.quickbooks_online.actions:QuickBooksActionConnector",
295
+ "icon": {
296
+ "path": "shared/icons/integration.svg",
297
+ "kind": "icon",
298
+ "media_type": "image/svg+xml"
299
+ },
300
+ "setup": {
301
+ "homepage_url": "https://developer.intuit.com/",
302
+ "docs_url": "https://developer.intuit.com/app/developer/qbo/docs/api/accounting/most-commonly-used/invoice",
303
+ "docs": [
304
+ "connectors/quickbooks_online/docs/quickbooks-online.md",
305
+ "connectors/quickbooks_online/docs/auth.md"
306
+ ],
307
+ "setup_note": "The caller stores tokens and binds environment plus realm_id after verified OAuth callback state. No implicit authorization or refresh."
308
+ }
309
+ }
@@ -0,0 +1,13 @@
1
+ # QuickBooks Online authentication
2
+
3
+ The [catalog](../catalog.json) owns fixed Intuit OAuth declarations. Use the public `build_authorization_request`, `request_token` and `get_auth_contract` functions. Neither read action authorizes or refreshes implicitly.
4
+
5
+ - `oauth2_authorization_code`: explicit code and refresh grants. Consent requests `com.intuit.quickbooks.accounting` with caller-generated state and callback URI.
6
+ - `oauth2_token`: resolved bearer-token reads, plus explicit refresh grants when application fields and a refresh token are supplied to `request_token`.
7
+ - Both grant requests use HTTP Basic application authentication at `https://oauth.platform.intuit.com/oauth2/v1/tokens/bearer`. Consent uses `https://appcenter.intuit.com/connect/oauth2`. The shared grant transport issues one token POST without automatic retries. PKCE is not declared for this provider contract.
8
+
9
+ The caller owns application secrets, state verification, callback handling, binding the returned `realmId` to the intended company, token custody/expiration, refresh concurrency and permissions. Supply only resolved `access_token` in action auth fields, and `{ "environment": "sandbox", "realm_id": "123456789" }` in action auth config. The environment must be `sandbox` or `production`; endpoints cannot be overridden. Code/token grants accept application fields separately from action execution validation.
10
+
11
+ An omitted token response scope remains unknown; the requested accounting scope is not evidence of an actual grant. An omitted refresh token remains absent in `TokenResult`; the caller decides whether to retain a prior value. Unknown refresh outcomes require caller reconciliation, not automatic replay. `CompanyInfo.Id` is a separate entity identifier and need not equal callback `realmId`.
12
+
13
+ Primary protocol sources: [sandbox discovery](https://developer.intuit.com/.well-known/openid_sandbox_configuration/), [production discovery](https://developer.intuit.com/.well-known/openid_configuration/), [official Python OAuth client](https://github.com/intuit/oauth-pythonclient/blob/master/intuitlib/client.py), and [accounting scope](https://github.com/intuit/oauth-pythonclient/blob/master/intuitlib/enums.py). Local fixture verification does not establish live app consent or sandbox compatibility.