stackos-connectors 0.1.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (457) hide show
  1. stackos_connectors-0.1.0/.github/workflows/publish.yml +59 -0
  2. stackos_connectors-0.1.0/.gitignore +7 -0
  3. stackos_connectors-0.1.0/LICENSE +21 -0
  4. stackos_connectors-0.1.0/PKG-INFO +160 -0
  5. stackos_connectors-0.1.0/README.md +144 -0
  6. stackos_connectors-0.1.0/pyproject.toml +40 -0
  7. stackos_connectors-0.1.0/src/stackos_connectors/__init__.py +99 -0
  8. stackos_connectors-0.1.0/src/stackos_connectors/catalog/index.json +54 -0
  9. stackos_connectors-0.1.0/src/stackos_connectors/catalog/schema.json +80 -0
  10. stackos_connectors-0.1.0/src/stackos_connectors/catalog.py +160 -0
  11. stackos_connectors-0.1.0/src/stackos_connectors/connectors/__init__.py +1 -0
  12. stackos_connectors-0.1.0/src/stackos_connectors/connectors/ahrefs/__init__.py +1 -0
  13. stackos_connectors-0.1.0/src/stackos_connectors/connectors/ahrefs/actions.py +107 -0
  14. stackos_connectors-0.1.0/src/stackos_connectors/connectors/ahrefs/assets/icon.png +0 -0
  15. stackos_connectors-0.1.0/src/stackos_connectors/connectors/ahrefs/catalog.json +186 -0
  16. stackos_connectors-0.1.0/src/stackos_connectors/connectors/ahrefs/integration.py +184 -0
  17. stackos_connectors-0.1.0/src/stackos_connectors/connectors/aignc/__init__.py +1 -0
  18. stackos_connectors-0.1.0/src/stackos_connectors/connectors/aignc/actions.py +82 -0
  19. stackos_connectors-0.1.0/src/stackos_connectors/connectors/aignc/catalog.json +662 -0
  20. stackos_connectors-0.1.0/src/stackos_connectors/connectors/aignc/contract.py +31 -0
  21. stackos_connectors-0.1.0/src/stackos_connectors/connectors/aignc/docs/aignc.md +33 -0
  22. stackos_connectors-0.1.0/src/stackos_connectors/connectors/aignc/integration.py +572 -0
  23. stackos_connectors-0.1.0/src/stackos_connectors/connectors/alibaba_wan/__init__.py +1 -0
  24. stackos_connectors-0.1.0/src/stackos_connectors/connectors/alibaba_wan/actions.py +85 -0
  25. stackos_connectors-0.1.0/src/stackos_connectors/connectors/alibaba_wan/assets/icon.png +0 -0
  26. stackos_connectors-0.1.0/src/stackos_connectors/connectors/alibaba_wan/catalog.json +221 -0
  27. stackos_connectors-0.1.0/src/stackos_connectors/connectors/alibaba_wan/integration.py +392 -0
  28. stackos_connectors-0.1.0/src/stackos_connectors/connectors/apollo/__init__.py +1 -0
  29. stackos_connectors-0.1.0/src/stackos_connectors/connectors/apollo/actions.py +213 -0
  30. stackos_connectors-0.1.0/src/stackos_connectors/connectors/apollo/assets/icon.png +0 -0
  31. stackos_connectors-0.1.0/src/stackos_connectors/connectors/apollo/catalog.json +313 -0
  32. stackos_connectors-0.1.0/src/stackos_connectors/connectors/apollo/docs/protocol.md +19 -0
  33. stackos_connectors-0.1.0/src/stackos_connectors/connectors/aws_s3/__init__.py +1 -0
  34. stackos_connectors-0.1.0/src/stackos_connectors/connectors/aws_s3/actions.py +3082 -0
  35. stackos_connectors-0.1.0/src/stackos_connectors/connectors/aws_s3/assets/icon.png +0 -0
  36. stackos_connectors-0.1.0/src/stackos_connectors/connectors/aws_s3/catalog.json +1048 -0
  37. stackos_connectors-0.1.0/src/stackos_connectors/connectors/aws_s3/contract.py +89 -0
  38. stackos_connectors-0.1.0/src/stackos_connectors/connectors/aws_s3/docs/s3.md +49 -0
  39. stackos_connectors-0.1.0/src/stackos_connectors/connectors/aws_s3/integration.py +369 -0
  40. stackos_connectors-0.1.0/src/stackos_connectors/connectors/byteplus_seedance/__init__.py +1 -0
  41. stackos_connectors-0.1.0/src/stackos_connectors/connectors/byteplus_seedance/actions.py +85 -0
  42. stackos_connectors-0.1.0/src/stackos_connectors/connectors/byteplus_seedance/catalog.json +246 -0
  43. stackos_connectors-0.1.0/src/stackos_connectors/connectors/byteplus_seedream/__init__.py +1 -0
  44. stackos_connectors-0.1.0/src/stackos_connectors/connectors/byteplus_seedream/actions.py +88 -0
  45. stackos_connectors-0.1.0/src/stackos_connectors/connectors/byteplus_seedream/catalog.json +292 -0
  46. stackos_connectors-0.1.0/src/stackos_connectors/connectors/clay/__init__.py +1 -0
  47. stackos_connectors-0.1.0/src/stackos_connectors/connectors/clay/actions.py +100 -0
  48. stackos_connectors-0.1.0/src/stackos_connectors/connectors/clay/assets/icon.png +0 -0
  49. stackos_connectors-0.1.0/src/stackos_connectors/connectors/clay/catalog.json +139 -0
  50. stackos_connectors-0.1.0/src/stackos_connectors/connectors/clay/docs/protocol.md +16 -0
  51. stackos_connectors-0.1.0/src/stackos_connectors/connectors/cloudflare/__init__.py +1 -0
  52. stackos_connectors-0.1.0/src/stackos_connectors/connectors/cloudflare/actions.py +705 -0
  53. stackos_connectors-0.1.0/src/stackos_connectors/connectors/cloudflare/assets/icon.png +0 -0
  54. stackos_connectors-0.1.0/src/stackos_connectors/connectors/cloudflare/catalog.json +6381 -0
  55. stackos_connectors-0.1.0/src/stackos_connectors/connectors/cloudflare/docs/cloudflare-dns.md +37 -0
  56. stackos_connectors-0.1.0/src/stackos_connectors/connectors/cloudflare/integration.py +397 -0
  57. stackos_connectors-0.1.0/src/stackos_connectors/connectors/dataforseo/__init__.py +1 -0
  58. stackos_connectors-0.1.0/src/stackos_connectors/connectors/dataforseo/actions.py +147 -0
  59. stackos_connectors-0.1.0/src/stackos_connectors/connectors/dataforseo/assets/icon.jpeg +0 -0
  60. stackos_connectors-0.1.0/src/stackos_connectors/connectors/dataforseo/catalog.json +1275 -0
  61. stackos_connectors-0.1.0/src/stackos_connectors/connectors/dataforseo/integration.py +252 -0
  62. stackos_connectors-0.1.0/src/stackos_connectors/connectors/firecrawl/__init__.py +1 -0
  63. stackos_connectors-0.1.0/src/stackos_connectors/connectors/firecrawl/actions.py +100 -0
  64. stackos_connectors-0.1.0/src/stackos_connectors/connectors/firecrawl/assets/icon.png +0 -0
  65. stackos_connectors-0.1.0/src/stackos_connectors/connectors/firecrawl/catalog.json +189 -0
  66. stackos_connectors-0.1.0/src/stackos_connectors/connectors/firecrawl/integration.py +168 -0
  67. stackos_connectors-0.1.0/src/stackos_connectors/connectors/ftp/__init__.py +1 -0
  68. stackos_connectors-0.1.0/src/stackos_connectors/connectors/ftp/actions.py +1190 -0
  69. stackos_connectors-0.1.0/src/stackos_connectors/connectors/ftp/assets/icon.svg +7 -0
  70. stackos_connectors-0.1.0/src/stackos_connectors/connectors/ftp/catalog.json +1091 -0
  71. stackos_connectors-0.1.0/src/stackos_connectors/connectors/ftp/docs/ftp.md +40 -0
  72. stackos_connectors-0.1.0/src/stackos_connectors/connectors/ftp/integration.py +271 -0
  73. stackos_connectors-0.1.0/src/stackos_connectors/connectors/ftp/remote_tree.py +342 -0
  74. stackos_connectors-0.1.0/src/stackos_connectors/connectors/ghost/__init__.py +1 -0
  75. stackos_connectors-0.1.0/src/stackos_connectors/connectors/ghost/actions.py +80 -0
  76. stackos_connectors-0.1.0/src/stackos_connectors/connectors/ghost/assets/icon.png +0 -0
  77. stackos_connectors-0.1.0/src/stackos_connectors/connectors/ghost/catalog.json +214 -0
  78. stackos_connectors-0.1.0/src/stackos_connectors/connectors/ghost/integration.py +159 -0
  79. stackos_connectors-0.1.0/src/stackos_connectors/connectors/google_ads/__init__.py +1 -0
  80. stackos_connectors-0.1.0/src/stackos_connectors/connectors/google_ads/actions.py +279 -0
  81. stackos_connectors-0.1.0/src/stackos_connectors/connectors/google_ads/assets/icon.png +0 -0
  82. stackos_connectors-0.1.0/src/stackos_connectors/connectors/google_ads/catalog.json +797 -0
  83. stackos_connectors-0.1.0/src/stackos_connectors/connectors/google_ads/docs/protocol.md +22 -0
  84. stackos_connectors-0.1.0/src/stackos_connectors/connectors/google_analytics/__init__.py +1 -0
  85. stackos_connectors-0.1.0/src/stackos_connectors/connectors/google_analytics/actions.py +224 -0
  86. stackos_connectors-0.1.0/src/stackos_connectors/connectors/google_analytics/assets/icon.png +0 -0
  87. stackos_connectors-0.1.0/src/stackos_connectors/connectors/google_analytics/catalog.json +442 -0
  88. stackos_connectors-0.1.0/src/stackos_connectors/connectors/google_analytics/integration.py +112 -0
  89. stackos_connectors-0.1.0/src/stackos_connectors/connectors/google_gemini_image/__init__.py +1 -0
  90. stackos_connectors-0.1.0/src/stackos_connectors/connectors/google_gemini_image/actions.py +90 -0
  91. stackos_connectors-0.1.0/src/stackos_connectors/connectors/google_gemini_image/assets/icon.webp +0 -0
  92. stackos_connectors-0.1.0/src/stackos_connectors/connectors/google_gemini_image/catalog.json +275 -0
  93. stackos_connectors-0.1.0/src/stackos_connectors/connectors/google_gemini_image/integration.py +420 -0
  94. stackos_connectors-0.1.0/src/stackos_connectors/connectors/google_indexing/__init__.py +1 -0
  95. stackos_connectors-0.1.0/src/stackos_connectors/connectors/google_indexing/actions.py +148 -0
  96. stackos_connectors-0.1.0/src/stackos_connectors/connectors/google_indexing/catalog.json +224 -0
  97. stackos_connectors-0.1.0/src/stackos_connectors/connectors/google_indexing/docs/google-indexing.md +38 -0
  98. stackos_connectors-0.1.0/src/stackos_connectors/connectors/google_indexing/integration.py +261 -0
  99. stackos_connectors-0.1.0/src/stackos_connectors/connectors/google_search_console/__init__.py +1 -0
  100. stackos_connectors-0.1.0/src/stackos_connectors/connectors/google_search_console/actions.py +486 -0
  101. stackos_connectors-0.1.0/src/stackos_connectors/connectors/google_search_console/assets/icon.png +0 -0
  102. stackos_connectors-0.1.0/src/stackos_connectors/connectors/google_search_console/catalog.json +714 -0
  103. stackos_connectors-0.1.0/src/stackos_connectors/connectors/google_search_console/docs/google-search-console.md +37 -0
  104. stackos_connectors-0.1.0/src/stackos_connectors/connectors/google_search_console/integration.py +367 -0
  105. stackos_connectors-0.1.0/src/stackos_connectors/connectors/google_tag_manager/__init__.py +1 -0
  106. stackos_connectors-0.1.0/src/stackos_connectors/connectors/google_tag_manager/actions.py +241 -0
  107. stackos_connectors-0.1.0/src/stackos_connectors/connectors/google_tag_manager/assets/icon.png +0 -0
  108. stackos_connectors-0.1.0/src/stackos_connectors/connectors/google_tag_manager/catalog.json +477 -0
  109. stackos_connectors-0.1.0/src/stackos_connectors/connectors/google_tag_manager/integration.py +133 -0
  110. stackos_connectors-0.1.0/src/stackos_connectors/connectors/google_veo/__init__.py +1 -0
  111. stackos_connectors-0.1.0/src/stackos_connectors/connectors/google_veo/actions.py +85 -0
  112. stackos_connectors-0.1.0/src/stackos_connectors/connectors/google_veo/assets/icon.png +0 -0
  113. stackos_connectors-0.1.0/src/stackos_connectors/connectors/google_veo/catalog.json +211 -0
  114. stackos_connectors-0.1.0/src/stackos_connectors/connectors/google_veo/integration.py +337 -0
  115. stackos_connectors-0.1.0/src/stackos_connectors/connectors/google_workspace/__init__.py +1 -0
  116. stackos_connectors-0.1.0/src/stackos_connectors/connectors/google_workspace/actions.py +148 -0
  117. stackos_connectors-0.1.0/src/stackos_connectors/connectors/google_workspace/assets/icon.png +0 -0
  118. stackos_connectors-0.1.0/src/stackos_connectors/connectors/google_workspace/catalog.json +302 -0
  119. stackos_connectors-0.1.0/src/stackos_connectors/connectors/google_workspace/docs/protocol.md +19 -0
  120. stackos_connectors-0.1.0/src/stackos_connectors/connectors/http/__init__.py +1 -0
  121. stackos_connectors-0.1.0/src/stackos_connectors/connectors/http/actions.py +280 -0
  122. stackos_connectors-0.1.0/src/stackos_connectors/connectors/http/catalog.json +100 -0
  123. stackos_connectors-0.1.0/src/stackos_connectors/connectors/hubspot/__init__.py +1 -0
  124. stackos_connectors-0.1.0/src/stackos_connectors/connectors/hubspot/actions.py +144 -0
  125. stackos_connectors-0.1.0/src/stackos_connectors/connectors/hubspot/assets/icon.png +0 -0
  126. stackos_connectors-0.1.0/src/stackos_connectors/connectors/hubspot/catalog.json +4959 -0
  127. stackos_connectors-0.1.0/src/stackos_connectors/connectors/hubspot/contract.py +534 -0
  128. stackos_connectors-0.1.0/src/stackos_connectors/connectors/hubspot/docs/hubspot.md +41 -0
  129. stackos_connectors-0.1.0/src/stackos_connectors/connectors/hubspot/integration.py +209 -0
  130. stackos_connectors-0.1.0/src/stackos_connectors/connectors/ideogram/__init__.py +1 -0
  131. stackos_connectors-0.1.0/src/stackos_connectors/connectors/ideogram/actions.py +88 -0
  132. stackos_connectors-0.1.0/src/stackos_connectors/connectors/ideogram/assets/icon.png +0 -0
  133. stackos_connectors-0.1.0/src/stackos_connectors/connectors/ideogram/catalog.json +282 -0
  134. stackos_connectors-0.1.0/src/stackos_connectors/connectors/ideogram/integration.py +310 -0
  135. stackos_connectors-0.1.0/src/stackos_connectors/connectors/imap/__init__.py +1 -0
  136. stackos_connectors-0.1.0/src/stackos_connectors/connectors/imap/actions.py +1186 -0
  137. stackos_connectors-0.1.0/src/stackos_connectors/connectors/imap/assets/icon.svg +7 -0
  138. stackos_connectors-0.1.0/src/stackos_connectors/connectors/imap/catalog.json +520 -0
  139. stackos_connectors-0.1.0/src/stackos_connectors/connectors/imap/docs/protocol.md +19 -0
  140. stackos_connectors-0.1.0/src/stackos_connectors/connectors/imap/integration.py +300 -0
  141. stackos_connectors-0.1.0/src/stackos_connectors/connectors/jina/__init__.py +1 -0
  142. stackos_connectors-0.1.0/src/stackos_connectors/connectors/jina/actions.py +57 -0
  143. stackos_connectors-0.1.0/src/stackos_connectors/connectors/jina/assets/icon.png +0 -0
  144. stackos_connectors-0.1.0/src/stackos_connectors/connectors/jina/catalog.json +102 -0
  145. stackos_connectors-0.1.0/src/stackos_connectors/connectors/jina/integration.py +63 -0
  146. stackos_connectors-0.1.0/src/stackos_connectors/connectors/kling_video/__init__.py +1 -0
  147. stackos_connectors-0.1.0/src/stackos_connectors/connectors/kling_video/actions.py +86 -0
  148. stackos_connectors-0.1.0/src/stackos_connectors/connectors/kling_video/assets/icon.png +0 -0
  149. stackos_connectors-0.1.0/src/stackos_connectors/connectors/kling_video/catalog.json +232 -0
  150. stackos_connectors-0.1.0/src/stackos_connectors/connectors/kling_video/integration.py +413 -0
  151. stackos_connectors-0.1.0/src/stackos_connectors/connectors/linear/__init__.py +1 -0
  152. stackos_connectors-0.1.0/src/stackos_connectors/connectors/linear/actions.py +103 -0
  153. stackos_connectors-0.1.0/src/stackos_connectors/connectors/linear/assets/graphql/auth/viewer-organization.graphql +10 -0
  154. stackos_connectors-0.1.0/src/stackos_connectors/connectors/linear/assets/graphql/comments/create.graphql +25 -0
  155. stackos_connectors-0.1.0/src/stackos_connectors/connectors/linear/assets/graphql/comments/delete.graphql +6 -0
  156. stackos_connectors-0.1.0/src/stackos_connectors/connectors/linear/assets/graphql/comments/get.graphql +25 -0
  157. stackos_connectors-0.1.0/src/stackos_connectors/connectors/linear/assets/graphql/comments/list.graphql +45 -0
  158. stackos_connectors-0.1.0/src/stackos_connectors/connectors/linear/assets/graphql/comments/resolve.graphql +11 -0
  159. stackos_connectors-0.1.0/src/stackos_connectors/connectors/linear/assets/graphql/comments/unresolve.graphql +11 -0
  160. stackos_connectors-0.1.0/src/stackos_connectors/connectors/linear/assets/graphql/comments/update.graphql +14 -0
  161. stackos_connectors-0.1.0/src/stackos_connectors/connectors/linear/assets/graphql/cycles/get.graphql +17 -0
  162. stackos_connectors-0.1.0/src/stackos_connectors/connectors/linear/assets/graphql/cycles/list.graphql +37 -0
  163. stackos_connectors-0.1.0/src/stackos_connectors/connectors/linear/assets/graphql/issue-labels/get.graphql +15 -0
  164. stackos_connectors-0.1.0/src/stackos_connectors/connectors/linear/assets/graphql/issue-labels/list.graphql +35 -0
  165. stackos_connectors-0.1.0/src/stackos_connectors/connectors/linear/assets/graphql/issue-relations/create.graphql +21 -0
  166. stackos_connectors-0.1.0/src/stackos_connectors/connectors/linear/assets/graphql/issue-relations/delete.graphql +6 -0
  167. stackos_connectors-0.1.0/src/stackos_connectors/connectors/linear/assets/graphql/issue-relations/get.graphql +19 -0
  168. stackos_connectors-0.1.0/src/stackos_connectors/connectors/linear/assets/graphql/issue-relations/list.graphql +42 -0
  169. stackos_connectors-0.1.0/src/stackos_connectors/connectors/linear/assets/graphql/issue-relations/update.graphql +21 -0
  170. stackos_connectors-0.1.0/src/stackos_connectors/connectors/linear/assets/graphql/issues/add-label.graphql +17 -0
  171. stackos_connectors-0.1.0/src/stackos_connectors/connectors/linear/assets/graphql/issues/archive.graphql +11 -0
  172. stackos_connectors-0.1.0/src/stackos_connectors/connectors/linear/assets/graphql/issues/create.graphql +27 -0
  173. stackos_connectors-0.1.0/src/stackos_connectors/connectors/linear/assets/graphql/issues/get.graphql +51 -0
  174. stackos_connectors-0.1.0/src/stackos_connectors/connectors/linear/assets/graphql/issues/list.graphql +71 -0
  175. stackos_connectors-0.1.0/src/stackos_connectors/connectors/linear/assets/graphql/issues/remove-label.graphql +17 -0
  176. stackos_connectors-0.1.0/src/stackos_connectors/connectors/linear/assets/graphql/issues/search.graphql +62 -0
  177. stackos_connectors-0.1.0/src/stackos_connectors/connectors/linear/assets/graphql/issues/unarchive.graphql +11 -0
  178. stackos_connectors-0.1.0/src/stackos_connectors/connectors/linear/assets/graphql/issues/update.graphql +23 -0
  179. stackos_connectors-0.1.0/src/stackos_connectors/connectors/linear/assets/graphql/projects/get.graphql +18 -0
  180. stackos_connectors-0.1.0/src/stackos_connectors/connectors/linear/assets/graphql/projects/list.graphql +38 -0
  181. stackos_connectors-0.1.0/src/stackos_connectors/connectors/linear/assets/graphql/teams/get.graphql +12 -0
  182. stackos_connectors-0.1.0/src/stackos_connectors/connectors/linear/assets/graphql/teams/list.graphql +30 -0
  183. stackos_connectors-0.1.0/src/stackos_connectors/connectors/linear/assets/graphql/users/get.graphql +10 -0
  184. stackos_connectors-0.1.0/src/stackos_connectors/connectors/linear/assets/graphql/users/list.graphql +30 -0
  185. stackos_connectors-0.1.0/src/stackos_connectors/connectors/linear/assets/graphql/viewer/get.graphql +14 -0
  186. stackos_connectors-0.1.0/src/stackos_connectors/connectors/linear/assets/graphql/workflow-states/get.graphql +16 -0
  187. stackos_connectors-0.1.0/src/stackos_connectors/connectors/linear/assets/graphql/workflow-states/list.graphql +36 -0
  188. stackos_connectors-0.1.0/src/stackos_connectors/connectors/linear/assets/icon.png +0 -0
  189. stackos_connectors-0.1.0/src/stackos_connectors/connectors/linear/catalog.json +2794 -0
  190. stackos_connectors-0.1.0/src/stackos_connectors/connectors/linear/contract.py +101 -0
  191. stackos_connectors-0.1.0/src/stackos_connectors/connectors/linear/docs/linear.md +35 -0
  192. stackos_connectors-0.1.0/src/stackos_connectors/connectors/linear/integration.py +518 -0
  193. stackos_connectors-0.1.0/src/stackos_connectors/connectors/linear/schemas/introspection-2026-07-23.json +1 -0
  194. stackos_connectors-0.1.0/src/stackos_connectors/connectors/linear/schemas/introspection-2026-07-23.metadata.json +18 -0
  195. stackos_connectors-0.1.0/src/stackos_connectors/connectors/linear/schemas/root-policy-2026-07-23.json +552 -0
  196. stackos_connectors-0.1.0/src/stackos_connectors/connectors/meta_ads/__init__.py +1 -0
  197. stackos_connectors-0.1.0/src/stackos_connectors/connectors/meta_ads/actions.py +357 -0
  198. stackos_connectors-0.1.0/src/stackos_connectors/connectors/meta_ads/assets/icon.png +0 -0
  199. stackos_connectors-0.1.0/src/stackos_connectors/connectors/meta_ads/catalog.json +977 -0
  200. stackos_connectors-0.1.0/src/stackos_connectors/connectors/microsoft_365/__init__.py +1 -0
  201. stackos_connectors-0.1.0/src/stackos_connectors/connectors/microsoft_365/actions.py +121 -0
  202. stackos_connectors-0.1.0/src/stackos_connectors/connectors/microsoft_365/assets/icon.png +0 -0
  203. stackos_connectors-0.1.0/src/stackos_connectors/connectors/microsoft_365/catalog.json +261 -0
  204. stackos_connectors-0.1.0/src/stackos_connectors/connectors/microsoft_365/docs/protocol.md +17 -0
  205. stackos_connectors-0.1.0/src/stackos_connectors/connectors/openai_images/__init__.py +1 -0
  206. stackos_connectors-0.1.0/src/stackos_connectors/connectors/openai_images/actions.py +85 -0
  207. stackos_connectors-0.1.0/src/stackos_connectors/connectors/openai_images/assets/icon.webp +0 -0
  208. stackos_connectors-0.1.0/src/stackos_connectors/connectors/openai_images/catalog.json +282 -0
  209. stackos_connectors-0.1.0/src/stackos_connectors/connectors/openai_images/integration.py +327 -0
  210. stackos_connectors-0.1.0/src/stackos_connectors/connectors/openrouter/__init__.py +1 -0
  211. stackos_connectors-0.1.0/src/stackos_connectors/connectors/openrouter/assets/icon.png +0 -0
  212. stackos_connectors-0.1.0/src/stackos_connectors/connectors/openrouter/catalog.json +114 -0
  213. stackos_connectors-0.1.0/src/stackos_connectors/connectors/openrouter/integration.py +69 -0
  214. stackos_connectors-0.1.0/src/stackos_connectors/connectors/outreach/__init__.py +1 -0
  215. stackos_connectors-0.1.0/src/stackos_connectors/connectors/outreach/actions.py +107 -0
  216. stackos_connectors-0.1.0/src/stackos_connectors/connectors/outreach/assets/icon.png +0 -0
  217. stackos_connectors-0.1.0/src/stackos_connectors/connectors/outreach/catalog.json +197 -0
  218. stackos_connectors-0.1.0/src/stackos_connectors/connectors/outreach/docs/protocol.md +18 -0
  219. stackos_connectors-0.1.0/src/stackos_connectors/connectors/pipedrive/__init__.py +1 -0
  220. stackos_connectors-0.1.0/src/stackos_connectors/connectors/pipedrive/actions.py +173 -0
  221. stackos_connectors-0.1.0/src/stackos_connectors/connectors/pipedrive/assets/icon.png +0 -0
  222. stackos_connectors-0.1.0/src/stackos_connectors/connectors/pipedrive/catalog.json +449 -0
  223. stackos_connectors-0.1.0/src/stackos_connectors/connectors/pipedrive/docs/protocol.md +22 -0
  224. stackos_connectors-0.1.0/src/stackos_connectors/connectors/pipedrive/integration.py +160 -0
  225. stackos_connectors-0.1.0/src/stackos_connectors/connectors/reddit/__init__.py +1 -0
  226. stackos_connectors-0.1.0/src/stackos_connectors/connectors/reddit/actions.py +85 -0
  227. stackos_connectors-0.1.0/src/stackos_connectors/connectors/reddit/assets/icon.png +0 -0
  228. stackos_connectors-0.1.0/src/stackos_connectors/connectors/reddit/catalog.json +173 -0
  229. stackos_connectors-0.1.0/src/stackos_connectors/connectors/reddit/integration.py +117 -0
  230. stackos_connectors-0.1.0/src/stackos_connectors/connectors/reve/__init__.py +1 -0
  231. stackos_connectors-0.1.0/src/stackos_connectors/connectors/reve/actions.py +89 -0
  232. stackos_connectors-0.1.0/src/stackos_connectors/connectors/reve/assets/icon.png +0 -0
  233. stackos_connectors-0.1.0/src/stackos_connectors/connectors/reve/catalog.json +354 -0
  234. stackos_connectors-0.1.0/src/stackos_connectors/connectors/reve/integration.py +463 -0
  235. stackos_connectors-0.1.0/src/stackos_connectors/connectors/salesforce/__init__.py +1 -0
  236. stackos_connectors-0.1.0/src/stackos_connectors/connectors/salesforce/actions.py +173 -0
  237. stackos_connectors-0.1.0/src/stackos_connectors/connectors/salesforce/assets/icon.png +0 -0
  238. stackos_connectors-0.1.0/src/stackos_connectors/connectors/salesforce/catalog.json +490 -0
  239. stackos_connectors-0.1.0/src/stackos_connectors/connectors/salesforce/docs/protocol.md +17 -0
  240. stackos_connectors-0.1.0/src/stackos_connectors/connectors/salesloft/__init__.py +1 -0
  241. stackos_connectors-0.1.0/src/stackos_connectors/connectors/salesloft/actions.py +96 -0
  242. stackos_connectors-0.1.0/src/stackos_connectors/connectors/salesloft/assets/icon.jpeg +0 -0
  243. stackos_connectors-0.1.0/src/stackos_connectors/connectors/salesloft/catalog.json +239 -0
  244. stackos_connectors-0.1.0/src/stackos_connectors/connectors/salesloft/docs/protocol.md +17 -0
  245. stackos_connectors-0.1.0/src/stackos_connectors/connectors/salesloft/integration.py +119 -0
  246. stackos_connectors-0.1.0/src/stackos_connectors/connectors/serper/__init__.py +1 -0
  247. stackos_connectors-0.1.0/src/stackos_connectors/connectors/serper/actions.py +71 -0
  248. stackos_connectors-0.1.0/src/stackos_connectors/connectors/serper/assets/icon.svg +6 -0
  249. stackos_connectors-0.1.0/src/stackos_connectors/connectors/serper/catalog.json +124 -0
  250. stackos_connectors-0.1.0/src/stackos_connectors/connectors/serper/integration.py +83 -0
  251. stackos_connectors-0.1.0/src/stackos_connectors/connectors/shopify/__init__.py +1 -0
  252. stackos_connectors-0.1.0/src/stackos_connectors/connectors/shopify/actions.py +430 -0
  253. stackos_connectors-0.1.0/src/stackos_connectors/connectors/shopify/assets/graphql/customers/add-customer-tag.graphql +11 -0
  254. stackos_connectors-0.1.0/src/stackos_connectors/connectors/shopify/assets/graphql/customers/create-customer.graphql +24 -0
  255. stackos_connectors-0.1.0/src/stackos_connectors/connectors/shopify/assets/graphql/customers/get-customer-lifetime-value.graphql +30 -0
  256. stackos_connectors-0.1.0/src/stackos_connectors/connectors/shopify/assets/graphql/customers/get-customer-orders.graphql +27 -0
  257. stackos_connectors-0.1.0/src/stackos_connectors/connectors/shopify/assets/graphql/customers/get-customer.graphql +45 -0
  258. stackos_connectors-0.1.0/src/stackos_connectors/connectors/shopify/assets/graphql/customers/list-customers.graphql +29 -0
  259. stackos_connectors-0.1.0/src/stackos_connectors/connectors/shopify/assets/graphql/customers/remove-customer-tag.graphql +11 -0
  260. stackos_connectors-0.1.0/src/stackos_connectors/connectors/shopify/assets/graphql/customers/search-customers.graphql +29 -0
  261. stackos_connectors-0.1.0/src/stackos_connectors/connectors/shopify/assets/graphql/customers/update-customer.graphql +24 -0
  262. stackos_connectors-0.1.0/src/stackos_connectors/connectors/shopify/assets/graphql/inventory/adjust-inventory.graphql +25 -0
  263. stackos_connectors-0.1.0/src/stackos_connectors/connectors/shopify/assets/graphql/inventory/get-inventory-by-sku.graphql +28 -0
  264. stackos_connectors-0.1.0/src/stackos_connectors/connectors/shopify/assets/graphql/inventory/get-inventory-item.graphql +26 -0
  265. stackos_connectors-0.1.0/src/stackos_connectors/connectors/shopify/assets/graphql/inventory/get-location-inventory.graphql +26 -0
  266. stackos_connectors-0.1.0/src/stackos_connectors/connectors/shopify/assets/graphql/inventory/list-inventory-item-availability.graphql +40 -0
  267. stackos_connectors-0.1.0/src/stackos_connectors/connectors/shopify/assets/graphql/inventory/list-inventory-levels.graphql +30 -0
  268. stackos_connectors-0.1.0/src/stackos_connectors/connectors/shopify/assets/graphql/inventory/list-product-variant-inventory.graphql +20 -0
  269. stackos_connectors-0.1.0/src/stackos_connectors/connectors/shopify/assets/graphql/inventory/set-inventory-level.graphql +25 -0
  270. stackos_connectors-0.1.0/src/stackos_connectors/connectors/shopify/assets/graphql/orders/add-order-note.graphql +13 -0
  271. stackos_connectors-0.1.0/src/stackos_connectors/connectors/shopify/assets/graphql/orders/add-order-tag.graphql +11 -0
  272. stackos_connectors-0.1.0/src/stackos_connectors/connectors/shopify/assets/graphql/orders/create-draft-order.graphql +67 -0
  273. stackos_connectors-0.1.0/src/stackos_connectors/connectors/shopify/assets/graphql/orders/get-order-by-name.graphql +91 -0
  274. stackos_connectors-0.1.0/src/stackos_connectors/connectors/shopify/assets/graphql/orders/get-order-fulfillment-status.graphql +17 -0
  275. stackos_connectors-0.1.0/src/stackos_connectors/connectors/shopify/assets/graphql/orders/get-order-timeline.graphql +15 -0
  276. stackos_connectors-0.1.0/src/stackos_connectors/connectors/shopify/assets/graphql/orders/get-order.graphql +87 -0
  277. stackos_connectors-0.1.0/src/stackos_connectors/connectors/shopify/assets/graphql/orders/list-order-variant-quantities.graphql +18 -0
  278. stackos_connectors-0.1.0/src/stackos_connectors/connectors/shopify/assets/graphql/orders/list-orders.graphql +54 -0
  279. stackos_connectors-0.1.0/src/stackos_connectors/connectors/shopify/assets/graphql/orders/mark-order-paid.graphql +13 -0
  280. stackos_connectors-0.1.0/src/stackos_connectors/connectors/shopify/assets/graphql/orders/search-orders.graphql +54 -0
  281. stackos_connectors-0.1.0/src/stackos_connectors/connectors/shopify/assets/graphql/orders/update-order-note.graphql +13 -0
  282. stackos_connectors-0.1.0/src/stackos_connectors/connectors/shopify/assets/graphql/orders/update-order-tags.graphql +13 -0
  283. stackos_connectors-0.1.0/src/stackos_connectors/connectors/shopify/assets/graphql/products/create-collection.graphql +17 -0
  284. stackos_connectors-0.1.0/src/stackos_connectors/connectors/shopify/assets/graphql/products/create-product-variant.graphql +20 -0
  285. stackos_connectors-0.1.0/src/stackos_connectors/connectors/shopify/assets/graphql/products/create-product.graphql +29 -0
  286. stackos_connectors-0.1.0/src/stackos_connectors/connectors/shopify/assets/graphql/products/get-collection.graphql +41 -0
  287. stackos_connectors-0.1.0/src/stackos_connectors/connectors/shopify/assets/graphql/products/get-product-by-handle.graphql +61 -0
  288. stackos_connectors-0.1.0/src/stackos_connectors/connectors/shopify/assets/graphql/products/get-product-variant.graphql +31 -0
  289. stackos_connectors-0.1.0/src/stackos_connectors/connectors/shopify/assets/graphql/products/get-product.graphql +61 -0
  290. stackos_connectors-0.1.0/src/stackos_connectors/connectors/shopify/assets/graphql/products/list-collections.graphql +24 -0
  291. stackos_connectors-0.1.0/src/stackos_connectors/connectors/shopify/assets/graphql/products/list-product-variants.graphql +27 -0
  292. stackos_connectors-0.1.0/src/stackos_connectors/connectors/shopify/assets/graphql/products/list-products.graphql +38 -0
  293. stackos_connectors-0.1.0/src/stackos_connectors/connectors/shopify/assets/graphql/products/search-products.graphql +38 -0
  294. stackos_connectors-0.1.0/src/stackos_connectors/connectors/shopify/assets/graphql/products/update-product-status.graphql +14 -0
  295. stackos_connectors-0.1.0/src/stackos_connectors/connectors/shopify/assets/graphql/products/update-product-variant.graphql +20 -0
  296. stackos_connectors-0.1.0/src/stackos_connectors/connectors/shopify/assets/graphql/products/update-product.graphql +19 -0
  297. stackos_connectors-0.1.0/src/stackos_connectors/connectors/shopify/assets/graphql/shopifyql.graphql +13 -0
  298. stackos_connectors-0.1.0/src/stackos_connectors/connectors/shopify/assets/icon.png +0 -0
  299. stackos_connectors-0.1.0/src/stackos_connectors/connectors/shopify/catalog.json +3178 -0
  300. stackos_connectors-0.1.0/src/stackos_connectors/connectors/shopify/docs/shopify.md +51 -0
  301. stackos_connectors-0.1.0/src/stackos_connectors/connectors/shopify/integration.py +228 -0
  302. stackos_connectors-0.1.0/src/stackos_connectors/connectors/shopify/payloads.py +592 -0
  303. stackos_connectors-0.1.0/src/stackos_connectors/connectors/sitemap/__init__.py +1 -0
  304. stackos_connectors-0.1.0/src/stackos_connectors/connectors/sitemap/actions.py +88 -0
  305. stackos_connectors-0.1.0/src/stackos_connectors/connectors/sitemap/catalog.json +72 -0
  306. stackos_connectors-0.1.0/src/stackos_connectors/connectors/sitemap/integration.py +324 -0
  307. stackos_connectors-0.1.0/src/stackos_connectors/connectors/slack_bot/__init__.py +1 -0
  308. stackos_connectors-0.1.0/src/stackos_connectors/connectors/slack_bot/actions.py +47 -0
  309. stackos_connectors-0.1.0/src/stackos_connectors/connectors/slack_bot/assets/icon.png +0 -0
  310. stackos_connectors-0.1.0/src/stackos_connectors/connectors/slack_bot/catalog.json +557 -0
  311. stackos_connectors-0.1.0/src/stackos_connectors/connectors/slack_bot/constants.py +14 -0
  312. stackos_connectors-0.1.0/src/stackos_connectors/connectors/slack_bot/docs/protocol.md +20 -0
  313. stackos_connectors-0.1.0/src/stackos_connectors/connectors/slack_bot/files.py +111 -0
  314. stackos_connectors-0.1.0/src/stackos_connectors/connectors/slack_bot/http.py +163 -0
  315. stackos_connectors-0.1.0/src/stackos_connectors/connectors/slack_bot/integration.py +87 -0
  316. stackos_connectors-0.1.0/src/stackos_connectors/connectors/slack_bot/payloads.py +38 -0
  317. stackos_connectors-0.1.0/src/stackos_connectors/connectors/slack_bot/results.py +30 -0
  318. stackos_connectors-0.1.0/src/stackos_connectors/connectors/slack_bot/validation.py +145 -0
  319. stackos_connectors-0.1.0/src/stackos_connectors/connectors/smtp/__init__.py +1 -0
  320. stackos_connectors-0.1.0/src/stackos_connectors/connectors/smtp/actions.py +324 -0
  321. stackos_connectors-0.1.0/src/stackos_connectors/connectors/smtp/assets/icon.svg +7 -0
  322. stackos_connectors-0.1.0/src/stackos_connectors/connectors/smtp/catalog.json +238 -0
  323. stackos_connectors-0.1.0/src/stackos_connectors/connectors/smtp/docs/protocol.md +13 -0
  324. stackos_connectors-0.1.0/src/stackos_connectors/connectors/smtp/integration.py +104 -0
  325. stackos_connectors-0.1.0/src/stackos_connectors/connectors/stripe/__init__.py +1 -0
  326. stackos_connectors-0.1.0/src/stackos_connectors/connectors/stripe/actions.py +265 -0
  327. stackos_connectors-0.1.0/src/stackos_connectors/connectors/stripe/assets/icon.jpeg +0 -0
  328. stackos_connectors-0.1.0/src/stackos_connectors/connectors/stripe/catalog.json +2315 -0
  329. stackos_connectors-0.1.0/src/stackos_connectors/connectors/stripe/contract.py +92 -0
  330. stackos_connectors-0.1.0/src/stackos_connectors/connectors/stripe/docs/stripe.md +58 -0
  331. stackos_connectors-0.1.0/src/stackos_connectors/connectors/stripe/integration.py +668 -0
  332. stackos_connectors-0.1.0/src/stackos_connectors/connectors/taboola/__init__.py +1 -0
  333. stackos_connectors-0.1.0/src/stackos_connectors/connectors/taboola/actions.py +286 -0
  334. stackos_connectors-0.1.0/src/stackos_connectors/connectors/taboola/assets/icon.svg +18 -0
  335. stackos_connectors-0.1.0/src/stackos_connectors/connectors/taboola/catalog.json +593 -0
  336. stackos_connectors-0.1.0/src/stackos_connectors/connectors/telegram/__init__.py +1 -0
  337. stackos_connectors-0.1.0/src/stackos_connectors/connectors/telegram/actions.py +291 -0
  338. stackos_connectors-0.1.0/src/stackos_connectors/connectors/telegram/assets/icon.png +0 -0
  339. stackos_connectors-0.1.0/src/stackos_connectors/connectors/telegram/catalog.json +2121 -0
  340. stackos_connectors-0.1.0/src/stackos_connectors/connectors/telegram/docs/protocol.md +20 -0
  341. stackos_connectors-0.1.0/src/stackos_connectors/connectors/telegram/payloads.py +278 -0
  342. stackos_connectors-0.1.0/src/stackos_connectors/connectors/telegram/schema.py +35 -0
  343. stackos_connectors-0.1.0/src/stackos_connectors/connectors/telegram/tdlib/__init__.py +1 -0
  344. stackos_connectors-0.1.0/src/stackos_connectors/connectors/telegram/tdlib/native.py +513 -0
  345. stackos_connectors-0.1.0/src/stackos_connectors/connectors/telegram/tdlib/proxy.py +347 -0
  346. stackos_connectors-0.1.0/src/stackos_connectors/connectors/telegram/tdlib/sessions.py +256 -0
  347. stackos_connectors-0.1.0/src/stackos_connectors/connectors/trackbooth/__init__.py +5 -0
  348. stackos_connectors-0.1.0/src/stackos_connectors/connectors/trackbooth/actions.py +220 -0
  349. stackos_connectors-0.1.0/src/stackos_connectors/connectors/trackbooth/assets/agent-api/catalog.json +53858 -0
  350. stackos_connectors-0.1.0/src/stackos_connectors/connectors/trackbooth/assets/agent-api/openapi.json +25942 -0
  351. stackos_connectors-0.1.0/src/stackos_connectors/connectors/trackbooth/assets/agent-api/stackos-tools.json +17122 -0
  352. stackos_connectors-0.1.0/src/stackos_connectors/connectors/trackbooth/assets/icon.png +0 -0
  353. stackos_connectors-0.1.0/src/stackos_connectors/connectors/trackbooth/assets.py +279 -0
  354. stackos_connectors-0.1.0/src/stackos_connectors/connectors/trackbooth/catalog.json +168 -0
  355. stackos_connectors-0.1.0/src/stackos_connectors/connectors/trackbooth/contract.py +8 -0
  356. stackos_connectors-0.1.0/src/stackos_connectors/connectors/trackbooth/docs/agent-api/README.md +17 -0
  357. stackos_connectors-0.1.0/src/stackos_connectors/connectors/trackbooth/docs/trackbooth.md +33 -0
  358. stackos_connectors-0.1.0/src/stackos_connectors/connectors/trackbooth/integration.py +202 -0
  359. stackos_connectors-0.1.0/src/stackos_connectors/connectors/trackbooth/schema.py +78 -0
  360. stackos_connectors-0.1.0/src/stackos_connectors/connectors/trackbooth/transport.py +107 -0
  361. stackos_connectors-0.1.0/src/stackos_connectors/connectors/wordpress/__init__.py +1 -0
  362. stackos_connectors-0.1.0/src/stackos_connectors/connectors/wordpress/actions.py +69 -0
  363. stackos_connectors-0.1.0/src/stackos_connectors/connectors/wordpress/assets/icon.png +0 -0
  364. stackos_connectors-0.1.0/src/stackos_connectors/connectors/wordpress/catalog.json +183 -0
  365. stackos_connectors-0.1.0/src/stackos_connectors/connectors/wordpress/integration.py +121 -0
  366. stackos_connectors-0.1.0/src/stackos_connectors/connectors/xai_imagine/__init__.py +1 -0
  367. stackos_connectors-0.1.0/src/stackos_connectors/connectors/xai_imagine/actions.py +89 -0
  368. stackos_connectors-0.1.0/src/stackos_connectors/connectors/xai_imagine/assets/icon.png +0 -0
  369. stackos_connectors-0.1.0/src/stackos_connectors/connectors/xai_imagine/catalog.json +402 -0
  370. stackos_connectors-0.1.0/src/stackos_connectors/connectors/xai_imagine/integration.py +420 -0
  371. stackos_connectors-0.1.0/src/stackos_connectors/contracts.py +177 -0
  372. stackos_connectors-0.1.0/src/stackos_connectors/errors.py +63 -0
  373. stackos_connectors-0.1.0/src/stackos_connectors/probe.py +26 -0
  374. stackos_connectors-0.1.0/src/stackos_connectors/py.typed +0 -0
  375. stackos_connectors-0.1.0/src/stackos_connectors/redaction.py +140 -0
  376. stackos_connectors-0.1.0/src/stackos_connectors/registry.py +419 -0
  377. stackos_connectors-0.1.0/src/stackos_connectors/shared/__init__.py +1 -0
  378. stackos_connectors-0.1.0/src/stackos_connectors/shared/base.py +380 -0
  379. stackos_connectors-0.1.0/src/stackos_connectors/shared/byteplus/__init__.py +1 -0
  380. stackos_connectors-0.1.0/src/stackos_connectors/shared/byteplus/ark.py +794 -0
  381. stackos_connectors-0.1.0/src/stackos_connectors/shared/byteplus/media.py +178 -0
  382. stackos_connectors-0.1.0/src/stackos_connectors/shared/google/__init__.py +1 -0
  383. stackos_connectors-0.1.0/src/stackos_connectors/shared/google/batch.py +219 -0
  384. stackos_connectors-0.1.0/src/stackos_connectors/shared/google/oauth.py +51 -0
  385. stackos_connectors-0.1.0/src/stackos_connectors/shared/icons/integration.svg +8 -0
  386. stackos_connectors-0.1.0/src/stackos_connectors/shared/media.py +263 -0
  387. stackos_connectors-0.1.0/src/stackos_connectors/shared/provider_utils.py +350 -0
  388. stackos_connectors-0.1.0/src/stackos_connectors/shared/rate_limit.py +72 -0
  389. stackos_connectors-0.1.0/src/stackos_connectors/shared/vendor_utils.py +182 -0
  390. stackos_connectors-0.1.0/src/stackos_connectors/validation.py +25 -0
  391. stackos_connectors-0.1.0/tests/business/conftest.py +11 -0
  392. stackos_connectors-0.1.0/tests/business/fixtures/wire-contracts.json +2847 -0
  393. stackos_connectors-0.1.0/tests/business/test_named_actions.py +483 -0
  394. stackos_connectors-0.1.0/tests/business/test_pipedrive_probes.py +172 -0
  395. stackos_connectors-0.1.0/tests/business/test_probe_boundary.py +84 -0
  396. stackos_connectors-0.1.0/tests/business/test_salesloft_probes.py +137 -0
  397. stackos_connectors-0.1.0/tests/catalog/test_catalog.py +248 -0
  398. stackos_connectors-0.1.0/tests/catalog/test_nested_resources.py +56 -0
  399. stackos_connectors-0.1.0/tests/catalog/test_presentation.py +143 -0
  400. stackos_connectors-0.1.0/tests/core/test_contract.py +243 -0
  401. stackos_connectors-0.1.0/tests/core/test_native_result_boundary.py +218 -0
  402. stackos_connectors-0.1.0/tests/core/test_nested_auth_redaction.py +76 -0
  403. stackos_connectors-0.1.0/tests/core/test_preflight_redaction.py +124 -0
  404. stackos_connectors-0.1.0/tests/core/test_public_key_facts.py +38 -0
  405. stackos_connectors-0.1.0/tests/core/test_runtime.py +161 -0
  406. stackos_connectors-0.1.0/tests/core/test_timeout_options.py +19 -0
  407. stackos_connectors-0.1.0/tests/core/test_validation_data.py +101 -0
  408. stackos_connectors-0.1.0/tests/core/test_validation_execution_outcome.py +57 -0
  409. stackos_connectors-0.1.0/tests/mail_slack/__init__.py +1 -0
  410. stackos_connectors-0.1.0/tests/mail_slack/test_native.py +637 -0
  411. stackos_connectors-0.1.0/tests/mail_slack/test_probes_catalog.py +186 -0
  412. stackos_connectors-0.1.0/tests/media/test_aignc_native.py +161 -0
  413. stackos_connectors-0.1.0/tests/media/test_generation_outcomes.py +263 -0
  414. stackos_connectors-0.1.0/tests/media/test_media_files.py +69 -0
  415. stackos_connectors-0.1.0/tests/media/test_named_media.py +488 -0
  416. stackos_connectors-0.1.0/tests/packaging/test_grouped_layout.py +134 -0
  417. stackos_connectors-0.1.0/tests/safe_refs/conftest.py +18 -0
  418. stackos_connectors-0.1.0/tests/safe_refs/test_linear_transport.py +351 -0
  419. stackos_connectors-0.1.0/tests/safe_refs/test_safe_refs_named_actions.py +395 -0
  420. stackos_connectors-0.1.0/tests/safe_refs/test_stripe_transport_transport.py +437 -0
  421. stackos_connectors-0.1.0/tests/telegram/__init__.py +1 -0
  422. stackos_connectors-0.1.0/tests/telegram/test_actions.py +249 -0
  423. stackos_connectors-0.1.0/tests/telegram/test_closure_outcomes.py +110 -0
  424. stackos_connectors-0.1.0/tests/telegram/test_native.py +174 -0
  425. stackos_connectors-0.1.0/tests/telegram/test_payloads.py +85 -0
  426. stackos_connectors-0.1.0/tests/telegram/test_proxy.py +149 -0
  427. stackos_connectors-0.1.0/tests/telegram/test_sessions.py +252 -0
  428. stackos_connectors-0.1.0/tests/trackbooth/__init__.py +1 -0
  429. stackos_connectors-0.1.0/tests/trackbooth/test_native.py +376 -0
  430. stackos_connectors-0.1.0/tests/web/__init__.py +0 -0
  431. stackos_connectors-0.1.0/tests/web/catalog_fixture.py +42 -0
  432. stackos_connectors-0.1.0/tests/web/conftest.py +23 -0
  433. stackos_connectors-0.1.0/tests/web/test_ahrefs.py +177 -0
  434. stackos_connectors-0.1.0/tests/web/test_boundary_timeout.py +88 -0
  435. stackos_connectors-0.1.0/tests/web/test_cloudflare.py +491 -0
  436. stackos_connectors-0.1.0/tests/web/test_dataforseo.py +153 -0
  437. stackos_connectors-0.1.0/tests/web/test_firecrawl.py +132 -0
  438. stackos_connectors-0.1.0/tests/web/test_ftp.py +173 -0
  439. stackos_connectors-0.1.0/tests/web/test_ftp_actions.py +650 -0
  440. stackos_connectors-0.1.0/tests/web/test_google_analytics.py +83 -0
  441. stackos_connectors-0.1.0/tests/web/test_google_indexing.py +130 -0
  442. stackos_connectors-0.1.0/tests/web/test_google_indexing_batch.py +208 -0
  443. stackos_connectors-0.1.0/tests/web/test_google_search_console.py +209 -0
  444. stackos_connectors-0.1.0/tests/web/test_google_search_console_batch.py +302 -0
  445. stackos_connectors-0.1.0/tests/web/test_google_tag_manager.py +126 -0
  446. stackos_connectors-0.1.0/tests/web/test_jina_reader.py +40 -0
  447. stackos_connectors-0.1.0/tests/web/test_named_clients.py +260 -0
  448. stackos_connectors-0.1.0/tests/web/test_native_boundary.py +127 -0
  449. stackos_connectors-0.1.0/tests/web/test_openrouter.py +52 -0
  450. stackos_connectors-0.1.0/tests/web/test_reddit.py +51 -0
  451. stackos_connectors-0.1.0/tests/web/test_s3.py +289 -0
  452. stackos_connectors-0.1.0/tests/web/test_s3_actions.py +1849 -0
  453. stackos_connectors-0.1.0/tests/web/test_serper.py +62 -0
  454. stackos_connectors-0.1.0/tests/web/test_shopify.py +64 -0
  455. stackos_connectors-0.1.0/tests/web/test_sitemap.py +161 -0
  456. stackos_connectors-0.1.0/tests/web/test_transport_defaults.py +65 -0
  457. stackos_connectors-0.1.0/tests/web/test_wordpress_ghost.py +132 -0
@@ -0,0 +1,59 @@
1
+ name: Publish to PyPI
2
+
3
+ on:
4
+ workflow_dispatch:
5
+
6
+ permissions:
7
+ contents: read
8
+
9
+ concurrency:
10
+ group: pypi-publish
11
+ cancel-in-progress: false
12
+
13
+ jobs:
14
+ build:
15
+ if: github.ref == 'refs/heads/main'
16
+ runs-on: ubuntu-latest
17
+ steps:
18
+ - name: Check out the selected commit
19
+ uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
20
+ with:
21
+ ref: ${{ github.sha }}
22
+ persist-credentials: false
23
+ - name: Set up Python
24
+ uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0
25
+ with:
26
+ python-version: '3.12'
27
+ - name: Install build tools
28
+ run: python -m pip install --upgrade build twine
29
+ - name: Build wheel and source distribution
30
+ run: python -m build
31
+ - name: Check distribution metadata
32
+ run: python -m twine check --strict dist/*
33
+ - name: Save distributions
34
+ uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
35
+ with:
36
+ name: python-distributions
37
+ path: dist/
38
+ if-no-files-found: error
39
+
40
+ publish:
41
+ needs: build
42
+ if: github.ref == 'refs/heads/main'
43
+ runs-on: ubuntu-latest
44
+ environment:
45
+ name: pypi
46
+ url: https://pypi.org/p/stackos-connectors/
47
+ permissions:
48
+ contents: read
49
+ id-token: write
50
+ steps:
51
+ - name: Download the built distributions
52
+ uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
53
+ with:
54
+ name: python-distributions
55
+ path: dist/
56
+ - name: Publish distributions to PyPI
57
+ uses: pypa/gh-action-pypi-publish@dc37677b2e1c63e2034f94d8a5b11f265b73ba33 # v1.14.2
58
+ with:
59
+ packages-dir: dist/
@@ -0,0 +1,7 @@
1
+ __pycache__/
2
+ .pytest_cache/
3
+ .ruff_cache/
4
+ .venv/
5
+ dist/
6
+ build/
7
+ *.egg-info/
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 StackOS contributors
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,160 @@
1
+ Metadata-Version: 2.5
2
+ Name: stackos-connectors
3
+ Version: 0.1.0
4
+ Summary: Named provider connectors with plain data and caller-owned authentication.
5
+ License-Expression: MIT
6
+ License-File: LICENSE
7
+ Requires-Python: >=3.12
8
+ Requires-Dist: boto3<1.44,>=1.43.51
9
+ Requires-Dist: botocore<1.44,>=1.43.51
10
+ Requires-Dist: cryptography>=43
11
+ Requires-Dist: httpx>=0.27
12
+ Requires-Dist: jsonschema>=4.23
13
+ Requires-Dist: pydantic>=2.6
14
+ Requires-Dist: s3transfer<0.20,>=0.19.1
15
+ Description-Content-Type: text/markdown
16
+
17
+ # StackOS Connectors
18
+
19
+ A Python library of named provider connectors. A caller supplies a connector,
20
+ action, input data and resolved authentication. The library maps that action to
21
+ the provider protocol and returns provider output, metadata and file descriptors.
22
+
23
+ The consumer owns credential storage and refresh, authorization, persistent state,
24
+ workflow decisions and audit. Provider implementations use plain contracts and
25
+ can accept caller-owned HTTP clients, rate buckets and native protocol sessions.
26
+
27
+ Each integration is grouped under `src/stackos_connectors/connectors/`:
28
+
29
+ ```text
30
+ connectors/<provider>/
31
+ actions.py # named action mapping
32
+ integration.py # provider protocol client, when separate
33
+ catalog.json # descriptions, schemas, auth methods and fixed bindings
34
+ schemas/ # provider-specific schema resources, when needed
35
+ assets/ # fixed GraphQL documents and other provider resources
36
+ docs/ # provider reference Markdown
37
+ shared/ # common transport, payload and protocol helpers
38
+ shared/google/ # Google OAuth and batch protocol helpers
39
+ catalog/ # common catalog schema and default resource index
40
+ ```
41
+
42
+ Folder names use Python identifiers, such as `aws_s3`; public connector keys
43
+ remain unchanged, such as `aws-s3`. Provider-only helper modules live beside
44
+ their actions. The root package contains the public contracts and execution API.
45
+
46
+ The default client loads the bundled connector catalogs. Use `list_connectors`
47
+ and `describe` to discover the installed actions and their input/auth schemas.
48
+ Generic HTTP accepts explicitly registered declarations; OpenRouter currently
49
+ provides a credential probe without a text-generation action.
50
+
51
+ ```python
52
+ from stackos_connectors import ConnectorAuth, get_default_client
53
+
54
+ client = get_default_client()
55
+ result = await client.execute(
56
+ connector="serper",
57
+ action="serper.search",
58
+ data={"query": "example search"},
59
+ auth=ConnectorAuth(method="api_key", fields={"api_key": resolved_api_key}),
60
+ )
61
+ ```
62
+
63
+ `describe` supplies provider and action names, descriptions, native input/output
64
+ schemas, setup information and execution auth requirements. Auth method `setup`
65
+ describes credential acquisition; `fields_schema` and `config_schema` define the
66
+ resolved auth accepted for execution. `validate_data` checks input without resolving
67
+ credentials. `validate`, `estimate_cost` and `execute` also check the selected auth
68
+ method. Dynamic actions must be explicitly registered on a scoped client before
69
+ execution; existing names cannot be replaced.
70
+
71
+ `CallOptions.timeout=None` preserves each provider's default. A numeric timeout
72
+ overrides that default. A supplied HTTP client remains caller-owned.
73
+
74
+ For file-producing actions, pass `CallOptions(output_dir=Path(...))` and consume
75
+ the plain descriptors in `result.files`. The library does not create application
76
+ artifacts or public download URLs. Telegram actions require an already authorized
77
+ session through `CallOptions(native_session=session)`; the caller owns account
78
+ lifecycle, the TDLib binary, receipt persistence and session shutdown.
79
+
80
+ For a restricted catalog, construct `ConnectorClient(registry=load_registry(...))`
81
+ using `stackos_connectors.catalog.load_registry` and the provider-local resource
82
+ paths above. Register custom HTTP or Trackbooth declarations on that scoped client
83
+ before execution; request data cannot override a declaration's provider or route.
84
+
85
+ `ConnectorResult.output_json` contains native response data for in-process use,
86
+ including signed download URLs and pagination tokens. Exact resolved credential
87
+ values are scrubbed from that data. The consumer must project or redact it before
88
+ display, audit or persistent storage. Errors, progress, metadata and file
89
+ descriptors receive full key and text redaction. Results hide response data in
90
+ their default representation.
91
+
92
+ Provider protocol notes and source links live in each connector's `docs/`
93
+ directory. They cover authentication transport, requests, pagination, response
94
+ meaning and error handling. Use the executable catalog and `describe` for the
95
+ installed action contract.
96
+
97
+ Existing integration icons are bundled at `connectors/<provider>/assets/icon.*`.
98
+ Each catalog's `icon` object contains a package-relative `path`, `media_type` and
99
+ `kind`. Actions inherit the integration icon unless an action declares its own.
100
+ Kinds preserve the source presentation: `icon`, `wordmark`, `wordmark-dark` or
101
+ `wordmark-inverse`. Missing logos use the neutral `fallback` at
102
+ `shared/icons/integration.svg`. Standard package resources read the bytes without
103
+ a source checkout:
104
+
105
+ ```python
106
+ from importlib.resources import files
107
+
108
+ description = client.describe("serper", "serper.search")
109
+ icon = description["actions"][0]["icon"]
110
+ icon_bytes = files("stackos_connectors").joinpath(*icon["path"].split("/")).read_bytes()
111
+ ```
112
+
113
+ ## Installation
114
+
115
+ Python 3.12 or newer is required. Source:
116
+ [flowmonkeyio/StackOSConnectors](https://github.com/flowmonkeyio/StackOSConnectors).
117
+
118
+ Published releases can be installed with:
119
+
120
+ ```bash
121
+ python -m pip install stackos-connectors==0.1.0
122
+ ```
123
+
124
+ Or add `stackos-connectors==0.1.0` to your Python dependency requirements.
125
+
126
+ Install from a local checkout with `pip install /path/to/StackOSConnectors`, or
127
+ build a wheel with `python -m build --wheel` and install that wheel. Runtime use
128
+ needs only the installed package and its declared dependencies.
129
+
130
+ ## Publishing
131
+
132
+ The manual [publish workflow](.github/workflows/publish.yml) uses PyPI Trusted
133
+ Publishing through GitHub OIDC. It does not store a PyPI API token. Pushing a
134
+ commit does not publish a release.
135
+
136
+ Before running it, configure the GitHub `pypi` environment and a PyPI GitHub
137
+ trusted publisher with these exact values:
138
+
139
+ | Field | Value |
140
+ | --- | --- |
141
+ | PyPI project name | `stackos-connectors` |
142
+ | GitHub owner | `flowmonkeyio` |
143
+ | Repository | `StackOSConnectors` |
144
+ | Workflow filename | `publish.yml` |
145
+ | Environment | `pypi` |
146
+
147
+ Use a pending publisher for the first release. See the official
148
+ [PyPI trusted publisher setup](https://docs.pypi.org/trusted-publishers/adding-a-publisher/).
149
+
150
+ After configuration and release review, open **Actions → Publish to PyPI → Run
151
+ workflow** and select `main`. The build job checks out the selected commit,
152
+ builds the wheel and source distribution on Python 3.12, checks their metadata,
153
+ and uploads them as one workflow artifact. The separate publish job downloads
154
+ that artifact and requests the OIDC token inside the `pypi` environment.
155
+ Runs selected on other branches do not build or publish. Only the publish job
156
+ has `id-token: write` permission.
157
+
158
+ The workflow does not rerun the connector test suite; run the tests and review
159
+ the intended release commit before dispatch. A version already uploaded to
160
+ PyPI cannot be replaced; change the package version for a later release.
@@ -0,0 +1,144 @@
1
+ # StackOS Connectors
2
+
3
+ A Python library of named provider connectors. A caller supplies a connector,
4
+ action, input data and resolved authentication. The library maps that action to
5
+ the provider protocol and returns provider output, metadata and file descriptors.
6
+
7
+ The consumer owns credential storage and refresh, authorization, persistent state,
8
+ workflow decisions and audit. Provider implementations use plain contracts and
9
+ can accept caller-owned HTTP clients, rate buckets and native protocol sessions.
10
+
11
+ Each integration is grouped under `src/stackos_connectors/connectors/`:
12
+
13
+ ```text
14
+ connectors/<provider>/
15
+ actions.py # named action mapping
16
+ integration.py # provider protocol client, when separate
17
+ catalog.json # descriptions, schemas, auth methods and fixed bindings
18
+ schemas/ # provider-specific schema resources, when needed
19
+ assets/ # fixed GraphQL documents and other provider resources
20
+ docs/ # provider reference Markdown
21
+ shared/ # common transport, payload and protocol helpers
22
+ shared/google/ # Google OAuth and batch protocol helpers
23
+ catalog/ # common catalog schema and default resource index
24
+ ```
25
+
26
+ Folder names use Python identifiers, such as `aws_s3`; public connector keys
27
+ remain unchanged, such as `aws-s3`. Provider-only helper modules live beside
28
+ their actions. The root package contains the public contracts and execution API.
29
+
30
+ The default client loads the bundled connector catalogs. Use `list_connectors`
31
+ and `describe` to discover the installed actions and their input/auth schemas.
32
+ Generic HTTP accepts explicitly registered declarations; OpenRouter currently
33
+ provides a credential probe without a text-generation action.
34
+
35
+ ```python
36
+ from stackos_connectors import ConnectorAuth, get_default_client
37
+
38
+ client = get_default_client()
39
+ result = await client.execute(
40
+ connector="serper",
41
+ action="serper.search",
42
+ data={"query": "example search"},
43
+ auth=ConnectorAuth(method="api_key", fields={"api_key": resolved_api_key}),
44
+ )
45
+ ```
46
+
47
+ `describe` supplies provider and action names, descriptions, native input/output
48
+ schemas, setup information and execution auth requirements. Auth method `setup`
49
+ describes credential acquisition; `fields_schema` and `config_schema` define the
50
+ resolved auth accepted for execution. `validate_data` checks input without resolving
51
+ credentials. `validate`, `estimate_cost` and `execute` also check the selected auth
52
+ method. Dynamic actions must be explicitly registered on a scoped client before
53
+ execution; existing names cannot be replaced.
54
+
55
+ `CallOptions.timeout=None` preserves each provider's default. A numeric timeout
56
+ overrides that default. A supplied HTTP client remains caller-owned.
57
+
58
+ For file-producing actions, pass `CallOptions(output_dir=Path(...))` and consume
59
+ the plain descriptors in `result.files`. The library does not create application
60
+ artifacts or public download URLs. Telegram actions require an already authorized
61
+ session through `CallOptions(native_session=session)`; the caller owns account
62
+ lifecycle, the TDLib binary, receipt persistence and session shutdown.
63
+
64
+ For a restricted catalog, construct `ConnectorClient(registry=load_registry(...))`
65
+ using `stackos_connectors.catalog.load_registry` and the provider-local resource
66
+ paths above. Register custom HTTP or Trackbooth declarations on that scoped client
67
+ before execution; request data cannot override a declaration's provider or route.
68
+
69
+ `ConnectorResult.output_json` contains native response data for in-process use,
70
+ including signed download URLs and pagination tokens. Exact resolved credential
71
+ values are scrubbed from that data. The consumer must project or redact it before
72
+ display, audit or persistent storage. Errors, progress, metadata and file
73
+ descriptors receive full key and text redaction. Results hide response data in
74
+ their default representation.
75
+
76
+ Provider protocol notes and source links live in each connector's `docs/`
77
+ directory. They cover authentication transport, requests, pagination, response
78
+ meaning and error handling. Use the executable catalog and `describe` for the
79
+ installed action contract.
80
+
81
+ Existing integration icons are bundled at `connectors/<provider>/assets/icon.*`.
82
+ Each catalog's `icon` object contains a package-relative `path`, `media_type` and
83
+ `kind`. Actions inherit the integration icon unless an action declares its own.
84
+ Kinds preserve the source presentation: `icon`, `wordmark`, `wordmark-dark` or
85
+ `wordmark-inverse`. Missing logos use the neutral `fallback` at
86
+ `shared/icons/integration.svg`. Standard package resources read the bytes without
87
+ a source checkout:
88
+
89
+ ```python
90
+ from importlib.resources import files
91
+
92
+ description = client.describe("serper", "serper.search")
93
+ icon = description["actions"][0]["icon"]
94
+ icon_bytes = files("stackos_connectors").joinpath(*icon["path"].split("/")).read_bytes()
95
+ ```
96
+
97
+ ## Installation
98
+
99
+ Python 3.12 or newer is required. Source:
100
+ [flowmonkeyio/StackOSConnectors](https://github.com/flowmonkeyio/StackOSConnectors).
101
+
102
+ Published releases can be installed with:
103
+
104
+ ```bash
105
+ python -m pip install stackos-connectors==0.1.0
106
+ ```
107
+
108
+ Or add `stackos-connectors==0.1.0` to your Python dependency requirements.
109
+
110
+ Install from a local checkout with `pip install /path/to/StackOSConnectors`, or
111
+ build a wheel with `python -m build --wheel` and install that wheel. Runtime use
112
+ needs only the installed package and its declared dependencies.
113
+
114
+ ## Publishing
115
+
116
+ The manual [publish workflow](.github/workflows/publish.yml) uses PyPI Trusted
117
+ Publishing through GitHub OIDC. It does not store a PyPI API token. Pushing a
118
+ commit does not publish a release.
119
+
120
+ Before running it, configure the GitHub `pypi` environment and a PyPI GitHub
121
+ trusted publisher with these exact values:
122
+
123
+ | Field | Value |
124
+ | --- | --- |
125
+ | PyPI project name | `stackos-connectors` |
126
+ | GitHub owner | `flowmonkeyio` |
127
+ | Repository | `StackOSConnectors` |
128
+ | Workflow filename | `publish.yml` |
129
+ | Environment | `pypi` |
130
+
131
+ Use a pending publisher for the first release. See the official
132
+ [PyPI trusted publisher setup](https://docs.pypi.org/trusted-publishers/adding-a-publisher/).
133
+
134
+ After configuration and release review, open **Actions → Publish to PyPI → Run
135
+ workflow** and select `main`. The build job checks out the selected commit,
136
+ builds the wheel and source distribution on Python 3.12, checks their metadata,
137
+ and uploads them as one workflow artifact. The separate publish job downloads
138
+ that artifact and requests the OIDC token inside the `pypi` environment.
139
+ Runs selected on other branches do not build or publish. Only the publish job
140
+ has `id-token: write` permission.
141
+
142
+ The workflow does not rerun the connector test suite; run the tests and review
143
+ the intended release commit before dispatch. A version already uploaded to
144
+ PyPI cannot be replaced; change the package version for a later release.
@@ -0,0 +1,40 @@
1
+ [build-system]
2
+ requires = ["hatchling"]
3
+ build-backend = "hatchling.build"
4
+
5
+ [project]
6
+ name = "stackos-connectors"
7
+ version = "0.1.0"
8
+ description = "Named provider connectors with plain data and caller-owned authentication."
9
+ readme = "README.md"
10
+ requires-python = ">=3.12"
11
+ license = "MIT"
12
+ dependencies = [
13
+ "httpx>=0.27",
14
+ "jsonschema>=4.23",
15
+ "pydantic>=2.6",
16
+ "cryptography>=43",
17
+ "boto3>=1.43.51,<1.44",
18
+ "botocore>=1.43.51,<1.44",
19
+ "s3transfer>=0.19.1,<0.20",
20
+ ]
21
+
22
+ [dependency-groups]
23
+ dev = ["pytest>=8", "pytest-asyncio>=0.24", "pytest-httpx>=0.34", "ruff>=0.8", "build>=1.2"]
24
+
25
+ [tool.hatch.build.targets.wheel]
26
+ packages = ["src/stackos_connectors"]
27
+
28
+ [tool.pytest.ini_options]
29
+ testpaths = ["tests"]
30
+ asyncio_mode = "auto"
31
+
32
+ [tool.ruff]
33
+ target-version = "py312"
34
+ line-length = 100
35
+
36
+ [tool.ruff.lint]
37
+ select = ["E", "F", "W", "I", "B", "UP", "SIM", "RUF"]
38
+
39
+ [tool.ruff.lint.per-file-ignores]
40
+ "tests/**" = ["B011"]
@@ -0,0 +1,99 @@
1
+ """Execute a named connector action using plain data and resolved authentication."""
2
+
3
+ from collections.abc import Mapping
4
+ from functools import lru_cache
5
+ from typing import Any
6
+
7
+ from .contracts import (
8
+ ActionDefinition,
9
+ AuthMethodDefinition,
10
+ CallOptions,
11
+ Connector,
12
+ ConnectorAuth,
13
+ ConnectorFile,
14
+ ConnectorRequest,
15
+ ConnectorResult,
16
+ NativeSession,
17
+ RateLimiter,
18
+ ValidationIssue,
19
+ )
20
+ from .errors import ConnectorError, IntegrationDownError, RateLimitedError, ValidationError
21
+ from .registry import ConnectorClient, ConnectorRegistry
22
+
23
+
24
+ @lru_cache(maxsize=1)
25
+ def get_default_client() -> ConnectorClient:
26
+ """Load reviewed builtin descriptions on first use, without provider imports."""
27
+ from .catalog import default_registry
28
+
29
+ return ConnectorClient(registry=default_registry())
30
+
31
+
32
+ async def execute(
33
+ connector: str,
34
+ action: str,
35
+ data: Mapping[str, Any],
36
+ auth: ConnectorAuth | Mapping[str, Any] | None = None,
37
+ options: CallOptions | None = None,
38
+ ) -> ConnectorResult:
39
+ return await get_default_client().execute(connector, action, data, auth, options)
40
+
41
+
42
+ def validate(
43
+ connector: str,
44
+ action: str,
45
+ data: Mapping[str, Any],
46
+ auth: ConnectorAuth | Mapping[str, Any] | None = None,
47
+ options: CallOptions | None = None,
48
+ ) -> list[ValidationIssue]:
49
+ return get_default_client().validate(connector, action, data, auth, options)
50
+
51
+
52
+ def validate_data(connector: str, action: str, data: Mapping[str, Any]) -> list[ValidationIssue]:
53
+ return get_default_client().validate_data(connector, action, data)
54
+
55
+
56
+ def estimate_cost(
57
+ connector: str,
58
+ action: str,
59
+ data: Mapping[str, Any],
60
+ auth: ConnectorAuth | Mapping[str, Any] | None = None,
61
+ options: CallOptions | None = None,
62
+ ) -> int:
63
+ return get_default_client().estimate_cost(connector, action, data, auth, options)
64
+
65
+
66
+ def list_connectors() -> list[str]:
67
+ return get_default_client().list_connectors()
68
+
69
+
70
+ def describe(connector: str, action: str | None = None) -> dict[str, Any]:
71
+ return get_default_client().describe(connector, action)
72
+
73
+
74
+ __all__ = [
75
+ "ActionDefinition",
76
+ "AuthMethodDefinition",
77
+ "CallOptions",
78
+ "Connector",
79
+ "ConnectorAuth",
80
+ "ConnectorClient",
81
+ "ConnectorError",
82
+ "ConnectorFile",
83
+ "ConnectorRegistry",
84
+ "ConnectorRequest",
85
+ "ConnectorResult",
86
+ "IntegrationDownError",
87
+ "NativeSession",
88
+ "RateLimitedError",
89
+ "RateLimiter",
90
+ "ValidationError",
91
+ "ValidationIssue",
92
+ "describe",
93
+ "estimate_cost",
94
+ "execute",
95
+ "get_default_client",
96
+ "list_connectors",
97
+ "validate",
98
+ "validate_data",
99
+ ]
@@ -0,0 +1,54 @@
1
+ {
2
+ "schema_version": "stackos.connectors.index.v1",
3
+ "connectors": [
4
+ "connectors/ahrefs/catalog.json",
5
+ "connectors/aignc/catalog.json",
6
+ "connectors/alibaba_wan/catalog.json",
7
+ "connectors/apollo/catalog.json",
8
+ "connectors/aws_s3/catalog.json",
9
+ "connectors/byteplus_seedance/catalog.json",
10
+ "connectors/byteplus_seedream/catalog.json",
11
+ "connectors/clay/catalog.json",
12
+ "connectors/cloudflare/catalog.json",
13
+ "connectors/dataforseo/catalog.json",
14
+ "connectors/firecrawl/catalog.json",
15
+ "connectors/ftp/catalog.json",
16
+ "connectors/ghost/catalog.json",
17
+ "connectors/google_ads/catalog.json",
18
+ "connectors/google_analytics/catalog.json",
19
+ "connectors/google_gemini_image/catalog.json",
20
+ "connectors/google_indexing/catalog.json",
21
+ "connectors/google_search_console/catalog.json",
22
+ "connectors/google_tag_manager/catalog.json",
23
+ "connectors/google_veo/catalog.json",
24
+ "connectors/google_workspace/catalog.json",
25
+ "connectors/http/catalog.json",
26
+ "connectors/hubspot/catalog.json",
27
+ "connectors/ideogram/catalog.json",
28
+ "connectors/imap/catalog.json",
29
+ "connectors/jina/catalog.json",
30
+ "connectors/kling_video/catalog.json",
31
+ "connectors/linear/catalog.json",
32
+ "connectors/meta_ads/catalog.json",
33
+ "connectors/microsoft_365/catalog.json",
34
+ "connectors/openai_images/catalog.json",
35
+ "connectors/openrouter/catalog.json",
36
+ "connectors/outreach/catalog.json",
37
+ "connectors/pipedrive/catalog.json",
38
+ "connectors/reddit/catalog.json",
39
+ "connectors/reve/catalog.json",
40
+ "connectors/salesforce/catalog.json",
41
+ "connectors/salesloft/catalog.json",
42
+ "connectors/serper/catalog.json",
43
+ "connectors/shopify/catalog.json",
44
+ "connectors/sitemap/catalog.json",
45
+ "connectors/slack_bot/catalog.json",
46
+ "connectors/smtp/catalog.json",
47
+ "connectors/stripe/catalog.json",
48
+ "connectors/taboola/catalog.json",
49
+ "connectors/telegram/catalog.json",
50
+ "connectors/trackbooth/catalog.json",
51
+ "connectors/wordpress/catalog.json",
52
+ "connectors/xai_imagine/catalog.json"
53
+ ]
54
+ }
@@ -0,0 +1,80 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$defs": {
4
+ "icon": {
5
+ "type": "object",
6
+ "required": ["path", "media_type", "kind"],
7
+ "additionalProperties": false,
8
+ "properties": {
9
+ "path": {"type": "string", "pattern": "^(?:[A-Za-z0-9_][A-Za-z0-9_-]*/)*[A-Za-z0-9_][A-Za-z0-9_-]*\\.(?:svg|png|jpg|jpeg|webp)$", "not": {"pattern": "[\\r\\n]"}},
10
+ "media_type": {"enum": ["image/svg+xml", "image/png", "image/jpeg", "image/webp"]},
11
+ "kind": {"enum": ["icon", "wordmark", "wordmark-dark", "wordmark-inverse", "fallback"]}
12
+ },
13
+ "allOf": [
14
+ {"if": {"properties": {"path": {"pattern": "\\.svg$"}}}, "then": {"properties": {"media_type": {"const": "image/svg+xml"}}}},
15
+ {"if": {"properties": {"path": {"pattern": "\\.png$"}}}, "then": {"properties": {"media_type": {"const": "image/png"}}}},
16
+ {"if": {"properties": {"path": {"pattern": "\\.jpe?g$"}}}, "then": {"properties": {"media_type": {"const": "image/jpeg"}}}},
17
+ {"if": {"properties": {"path": {"pattern": "\\.webp$"}}}, "then": {"properties": {"media_type": {"const": "image/webp"}}}}
18
+ ]
19
+ },
20
+ "presentation_metadata": {
21
+ "type": "object",
22
+ "properties": {"icon": {"$ref": "#/$defs/icon"}}
23
+ },
24
+ "index": {
25
+ "type": "object",
26
+ "required": ["schema_version", "connectors"],
27
+ "additionalProperties": false,
28
+ "properties": {
29
+ "schema_version": {"const": "stackos.connectors.index.v1"},
30
+ "connectors": {"type": "array", "uniqueItems": true, "items": {"type": "string", "pattern": "^(?:[a-z0-9][a-z0-9_-]*/)*[a-z0-9][a-z0-9_-]*\\.json$"}}
31
+ }
32
+ },
33
+ "auth_method": {
34
+ "type": "object",
35
+ "required": ["key", "fields_schema"],
36
+ "properties": {
37
+ "key": {"type": "string", "minLength": 1},
38
+ "description": {"type": "string"},
39
+ "payload_format": {"enum": ["raw", "json", "none"]},
40
+ "payload_field": {"type": "string", "minLength": 1},
41
+ "fields_schema": {"type": "object"},
42
+ "config_schema": {"type": "object"}
43
+ }
44
+ },
45
+ "action": {
46
+ "type": "object",
47
+ "required": ["key", "operation", "input_schema", "auth_methods", "config"],
48
+ "properties": {
49
+ "key": {"type": "string", "minLength": 1},
50
+ "operation": {"type": "string", "minLength": 1},
51
+ "description": {"type": "string"},
52
+ "guidance": {"type": "string"},
53
+ "icon": {"$ref": "#/$defs/icon"},
54
+ "input_schema": {"type": "object"},
55
+ "output_schema": {"type": "object"},
56
+ "auth_methods": {"type": "array", "uniqueItems": true, "items": {"type": "string", "minLength": 1}},
57
+ "auth_optional": {"type": "boolean"},
58
+ "config": {"type": "object"},
59
+ "examples": {"type": "array", "items": {"type": "object"}},
60
+ "metadata": {"$ref": "#/$defs/presentation_metadata"}
61
+ }
62
+ },
63
+ "connector": {
64
+ "type": "object",
65
+ "required": ["schema_version", "connector", "name", "description", "auth_methods", "actions"],
66
+ "properties": {
67
+ "schema_version": {"const": "stackos.connector.v1"},
68
+ "connector": {"type": "string", "pattern": "^[a-z0-9][a-z0-9_-]*$"},
69
+ "name": {"type": "string", "minLength": 1},
70
+ "description": {"type": "string"},
71
+ "icon": {"$ref": "#/$defs/icon"},
72
+ "implementation": {"type": "string", "pattern": "^[A-Za-z_][A-Za-z0-9_.]*:[A-Za-z_][A-Za-z0-9_]*$"},
73
+ "auth_methods": {"type": "array", "items": {"$ref": "#/$defs/auth_method"}},
74
+ "actions": {"type": "array", "items": {"$ref": "#/$defs/action"}},
75
+ "metadata": {"$ref": "#/$defs/presentation_metadata"}
76
+ }
77
+ }
78
+ },
79
+ "$ref": "#/$defs/connector"
80
+ }