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.
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/PKG-INFO +17 -6
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/README.md +16 -5
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/pyproject.toml +1 -1
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/catalog/index.json +1 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/google_indexing/catalog.json +21 -1
- stackos_connectors-0.2.3/src/stackos_connectors/connectors/google_indexing/docs/auth.md +30 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/google_search_console/docs/auth.md +1 -1
- stackos_connectors-0.2.3/src/stackos_connectors/connectors/quickbooks_online/__init__.py +1 -0
- stackos_connectors-0.2.3/src/stackos_connectors/connectors/quickbooks_online/actions.py +110 -0
- stackos_connectors-0.2.3/src/stackos_connectors/connectors/quickbooks_online/catalog.json +309 -0
- stackos_connectors-0.2.3/src/stackos_connectors/connectors/quickbooks_online/docs/auth.md +13 -0
- stackos_connectors-0.2.3/src/stackos_connectors/connectors/quickbooks_online/docs/quickbooks-online.md +24 -0
- stackos_connectors-0.2.3/src/stackos_connectors/connectors/quickbooks_online/integration.py +75 -0
- stackos_connectors-0.2.3/src/stackos_connectors/connectors/quickbooks_online/response.py +263 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/shared/google/service_account.py +1 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/tests/auth/test_google_service_account.py +35 -2
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/tests/auth/test_oauth_contracts.py +29 -1
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/tests/auth/test_probes.py +6 -1
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/tests/catalog/test_presentation.py +2 -1
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/tests/packaging/installed_auth_consumer.py +89 -2
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/tests/packaging/test_grouped_layout.py +2 -2
- stackos_connectors-0.2.3/tests/quickbooks_online/conftest.py +57 -0
- stackos_connectors-0.2.3/tests/quickbooks_online/test_auth.py +108 -0
- stackos_connectors-0.2.3/tests/quickbooks_online/test_reads.py +343 -0
- stackos_connectors-0.2.3/tests/web/__init__.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/.github/workflows/publish.yml +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/.gitignore +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/LICENSE +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/__init__.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/auth.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/catalog/schema.json +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/catalog.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/__init__.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/ahrefs/__init__.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/ahrefs/actions.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/ahrefs/assets/icon.png +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/ahrefs/catalog.json +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/ahrefs/integration.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/aignc/__init__.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/aignc/actions.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/aignc/catalog.json +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/aignc/contract.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/aignc/docs/aignc.md +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/aignc/integration.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/alibaba_wan/__init__.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/alibaba_wan/actions.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/alibaba_wan/assets/icon.png +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/alibaba_wan/catalog.json +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/alibaba_wan/integration.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/apollo/__init__.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/apollo/actions.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/apollo/assets/icon.png +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/apollo/catalog.json +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/apollo/docs/protocol.md +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/aws_s3/__init__.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/aws_s3/actions.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/aws_s3/assets/icon.png +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/aws_s3/catalog.json +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/aws_s3/contract.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/aws_s3/docs/s3.md +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/aws_s3/integration.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/aws_s3/probe.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/byteplus_seedance/__init__.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/byteplus_seedance/actions.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/byteplus_seedance/catalog.json +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/byteplus_seedream/__init__.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/byteplus_seedream/actions.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/byteplus_seedream/catalog.json +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/byteplus_seedream/probe.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/clay/__init__.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/clay/actions.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/clay/assets/icon.png +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/clay/catalog.json +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/clay/docs/protocol.md +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/cloudflare/__init__.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/cloudflare/actions.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/cloudflare/assets/icon.png +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/cloudflare/catalog.json +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/cloudflare/docs/cloudflare-dns.md +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/cloudflare/integration.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/dataforseo/__init__.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/dataforseo/actions.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/dataforseo/assets/icon.jpeg +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/dataforseo/catalog.json +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/dataforseo/integration.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/dataforseo/probe.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/firecrawl/__init__.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/firecrawl/actions.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/firecrawl/assets/icon.png +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/firecrawl/catalog.json +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/firecrawl/integration.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/ftp/__init__.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/ftp/actions.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/ftp/assets/icon.svg +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/ftp/catalog.json +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/ftp/docs/ftp.md +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/ftp/integration.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/ftp/probe.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/ftp/remote_tree.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/ghost/__init__.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/ghost/actions.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/ghost/assets/icon.png +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/ghost/catalog.json +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/ghost/integration.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/ghost/probe.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/google_ads/__init__.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/google_ads/actions.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/google_ads/assets/icon.png +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/google_ads/catalog.json +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/google_ads/docs/auth.md +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/google_ads/docs/protocol.md +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/google_ads/probe.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/google_analytics/__init__.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/google_analytics/actions.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/google_analytics/assets/icon.png +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/google_analytics/catalog.json +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/google_analytics/docs/auth.md +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/google_analytics/integration.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/google_gemini_image/__init__.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/google_gemini_image/actions.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/google_gemini_image/assets/icon.webp +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/google_gemini_image/catalog.json +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/google_gemini_image/integration.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/google_indexing/__init__.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/google_indexing/actions.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/google_indexing/docs/google-indexing.md +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/google_indexing/integration.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/google_search_console/__init__.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/google_search_console/actions.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/google_search_console/assets/icon.png +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/google_search_console/auth.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/google_search_console/catalog.json +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/google_search_console/docs/google-search-console.md +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/google_search_console/integration.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/google_tag_manager/__init__.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/google_tag_manager/actions.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/google_tag_manager/assets/icon.png +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/google_tag_manager/catalog.json +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/google_tag_manager/docs/auth.md +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/google_tag_manager/integration.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/google_veo/__init__.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/google_veo/actions.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/google_veo/assets/icon.png +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/google_veo/catalog.json +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/google_veo/integration.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/google_workspace/__init__.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/google_workspace/actions.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/google_workspace/assets/icon.png +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/google_workspace/catalog.json +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/google_workspace/docs/auth.md +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/google_workspace/docs/protocol.md +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/google_workspace/probe.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/http/__init__.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/http/actions.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/http/catalog.json +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/hubspot/__init__.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/hubspot/actions.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/hubspot/assets/icon.png +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/hubspot/catalog.json +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/hubspot/contract.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/hubspot/docs/auth.md +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/hubspot/docs/hubspot.md +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/hubspot/docs/signatures.md +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/hubspot/integration.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/hubspot/signature.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/ideogram/__init__.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/ideogram/actions.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/ideogram/assets/icon.png +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/ideogram/catalog.json +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/ideogram/integration.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/imap/__init__.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/imap/actions.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/imap/assets/icon.svg +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/imap/catalog.json +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/imap/docs/protocol.md +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/imap/integration.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/imap/probe.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/jina/__init__.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/jina/actions.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/jina/assets/icon.png +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/jina/catalog.json +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/jina/integration.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/kling_video/__init__.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/kling_video/actions.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/kling_video/assets/icon.png +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/kling_video/catalog.json +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/kling_video/integration.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/linear/__init__.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/linear/actions.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/linear/assets/graphql/auth/viewer-organization.graphql +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/linear/assets/graphql/comments/create.graphql +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/linear/assets/graphql/comments/delete.graphql +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/linear/assets/graphql/comments/get.graphql +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/linear/assets/graphql/comments/list.graphql +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/linear/assets/graphql/comments/resolve.graphql +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/linear/assets/graphql/comments/unresolve.graphql +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/linear/assets/graphql/comments/update.graphql +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/linear/assets/graphql/cycles/get.graphql +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/linear/assets/graphql/cycles/list.graphql +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/linear/assets/graphql/issue-labels/get.graphql +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/linear/assets/graphql/issue-labels/list.graphql +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/linear/assets/graphql/issue-relations/create.graphql +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/linear/assets/graphql/issue-relations/delete.graphql +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/linear/assets/graphql/issue-relations/get.graphql +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/linear/assets/graphql/issue-relations/list.graphql +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/linear/assets/graphql/issue-relations/update.graphql +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/linear/assets/graphql/issues/add-label.graphql +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/linear/assets/graphql/issues/archive.graphql +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/linear/assets/graphql/issues/create.graphql +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/linear/assets/graphql/issues/get.graphql +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/linear/assets/graphql/issues/list.graphql +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/linear/assets/graphql/issues/remove-label.graphql +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/linear/assets/graphql/issues/search.graphql +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/linear/assets/graphql/issues/unarchive.graphql +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/linear/assets/graphql/issues/update.graphql +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/linear/assets/graphql/projects/get.graphql +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/linear/assets/graphql/projects/list.graphql +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/linear/assets/graphql/teams/get.graphql +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/linear/assets/graphql/teams/list.graphql +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/linear/assets/graphql/users/get.graphql +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/linear/assets/graphql/users/list.graphql +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/linear/assets/graphql/viewer/get.graphql +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/linear/assets/graphql/workflow-states/get.graphql +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/linear/assets/graphql/workflow-states/list.graphql +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/linear/assets/icon.png +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/linear/catalog.json +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/linear/contract.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/linear/docs/auth.md +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/linear/docs/linear.md +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/linear/integration.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/linear/schemas/introspection-2026-07-23.json +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/linear/schemas/introspection-2026-07-23.metadata.json +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/linear/schemas/root-policy-2026-07-23.json +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/meta_ads/__init__.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/meta_ads/actions.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/meta_ads/assets/icon.png +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/meta_ads/auth.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/meta_ads/catalog.json +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/meta_ads/docs/auth.md +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/microsoft_365/__init__.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/microsoft_365/actions.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/microsoft_365/assets/icon.png +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/microsoft_365/auth.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/microsoft_365/catalog.json +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/microsoft_365/docs/auth.md +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/microsoft_365/docs/protocol.md +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/openai_images/__init__.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/openai_images/actions.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/openai_images/assets/icon.webp +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/openai_images/catalog.json +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/openai_images/integration.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/openrouter/__init__.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/openrouter/assets/icon.png +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/openrouter/catalog.json +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/openrouter/integration.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/openrouter/probe.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/outreach/__init__.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/outreach/actions.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/outreach/assets/icon.png +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/outreach/catalog.json +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/outreach/docs/auth.md +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/outreach/docs/protocol.md +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/pipedrive/__init__.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/pipedrive/actions.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/pipedrive/assets/icon.png +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/pipedrive/catalog.json +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/pipedrive/docs/auth.md +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/pipedrive/docs/protocol.md +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/pipedrive/integration.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/pipedrive/probe.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/reddit/__init__.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/reddit/actions.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/reddit/assets/icon.png +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/reddit/catalog.json +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/reddit/docs/auth.md +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/reddit/integration.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/reve/__init__.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/reve/actions.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/reve/assets/icon.png +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/reve/catalog.json +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/reve/integration.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/salesforce/__init__.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/salesforce/actions.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/salesforce/assets/icon.png +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/salesforce/auth.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/salesforce/catalog.json +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/salesforce/docs/auth.md +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/salesforce/docs/protocol.md +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/salesloft/__init__.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/salesloft/actions.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/salesloft/assets/icon.jpeg +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/salesloft/catalog.json +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/salesloft/docs/auth.md +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/salesloft/docs/protocol.md +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/salesloft/integration.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/serper/__init__.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/serper/actions.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/serper/assets/icon.svg +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/serper/catalog.json +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/serper/integration.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/shopify/__init__.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/shopify/actions.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/shopify/assets/graphql/customers/add-customer-tag.graphql +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/shopify/assets/graphql/customers/create-customer.graphql +0 -0
- {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
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/shopify/assets/graphql/customers/get-customer-orders.graphql +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/shopify/assets/graphql/customers/get-customer.graphql +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/shopify/assets/graphql/customers/list-customers.graphql +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/shopify/assets/graphql/customers/remove-customer-tag.graphql +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/shopify/assets/graphql/customers/search-customers.graphql +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/shopify/assets/graphql/customers/update-customer.graphql +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/shopify/assets/graphql/inventory/adjust-inventory.graphql +0 -0
- {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
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/shopify/assets/graphql/inventory/get-inventory-item.graphql +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/shopify/assets/graphql/inventory/get-location-inventory.graphql +0 -0
- {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
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/shopify/assets/graphql/inventory/list-inventory-levels.graphql +0 -0
- {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
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/shopify/assets/graphql/inventory/set-inventory-level.graphql +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/shopify/assets/graphql/orders/add-order-note.graphql +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/shopify/assets/graphql/orders/add-order-tag.graphql +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/shopify/assets/graphql/orders/create-draft-order.graphql +0 -0
- {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
- {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
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/shopify/assets/graphql/orders/get-order-timeline.graphql +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/shopify/assets/graphql/orders/get-order.graphql +0 -0
- {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
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/shopify/assets/graphql/orders/list-orders.graphql +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/shopify/assets/graphql/orders/mark-order-paid.graphql +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/shopify/assets/graphql/orders/search-orders.graphql +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/shopify/assets/graphql/orders/update-order-note.graphql +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/shopify/assets/graphql/orders/update-order-tags.graphql +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/shopify/assets/graphql/products/create-collection.graphql +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/shopify/assets/graphql/products/create-product-variant.graphql +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/shopify/assets/graphql/products/create-product.graphql +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/shopify/assets/graphql/products/get-collection.graphql +0 -0
- {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
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/shopify/assets/graphql/products/get-product-variant.graphql +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/shopify/assets/graphql/products/get-product.graphql +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/shopify/assets/graphql/products/list-collections.graphql +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/shopify/assets/graphql/products/list-product-variants.graphql +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/shopify/assets/graphql/products/list-products.graphql +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/shopify/assets/graphql/products/search-products.graphql +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/shopify/assets/graphql/products/update-product-status.graphql +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/shopify/assets/graphql/products/update-product-variant.graphql +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/shopify/assets/graphql/products/update-product.graphql +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/shopify/assets/graphql/shopifyql.graphql +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/shopify/assets/icon.png +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/shopify/catalog.json +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/shopify/docs/shopify.md +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/shopify/integration.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/shopify/payloads.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/shopify/probe.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/sitemap/__init__.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/sitemap/actions.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/sitemap/catalog.json +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/sitemap/integration.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/slack_bot/__init__.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/slack_bot/actions.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/slack_bot/assets/icon.png +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/slack_bot/auth.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/slack_bot/catalog.json +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/slack_bot/constants.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/slack_bot/docs/protocol.md +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/slack_bot/docs/signatures.md +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/slack_bot/files.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/slack_bot/http.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/slack_bot/integration.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/slack_bot/payloads.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/slack_bot/probe.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/slack_bot/results.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/slack_bot/validation.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/smtp/__init__.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/smtp/actions.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/smtp/assets/icon.svg +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/smtp/catalog.json +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/smtp/docs/protocol.md +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/smtp/integration.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/smtp/probe.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/stripe/__init__.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/stripe/actions.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/stripe/assets/icon.jpeg +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/stripe/catalog.json +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/stripe/contract.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/stripe/docs/stripe.md +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/stripe/integration.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/taboola/__init__.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/taboola/actions.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/taboola/assets/icon.svg +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/taboola/catalog.json +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/taboola/docs/auth.md +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/telegram/__init__.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/telegram/actions.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/telegram/assets/icon.png +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/telegram/auth.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/telegram/catalog.json +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/telegram/docs/auth-protocol.md +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/telegram/docs/protocol.md +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/telegram/payloads.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/telegram/schema.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/telegram/tdlib/__init__.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/telegram/tdlib/native.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/telegram/tdlib/proxy.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/telegram/tdlib/sessions.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/trackbooth/__init__.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/trackbooth/actions.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/trackbooth/assets/agent-api/catalog.json +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/trackbooth/assets/agent-api/openapi.json +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/trackbooth/assets/agent-api/stackos-tools.json +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/trackbooth/assets/icon.png +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/trackbooth/assets.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/trackbooth/catalog.json +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/trackbooth/contract.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/trackbooth/docs/agent-api/README.md +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/trackbooth/docs/trackbooth.md +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/trackbooth/integration.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/trackbooth/probe.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/trackbooth/schema.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/trackbooth/transport.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/wordpress/__init__.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/wordpress/actions.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/wordpress/assets/icon.png +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/wordpress/catalog.json +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/wordpress/integration.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/wordpress/probe.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/xai_imagine/__init__.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/xai_imagine/actions.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/xai_imagine/assets/icon.png +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/xai_imagine/catalog.json +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/connectors/xai_imagine/integration.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/contracts.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/errors.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/probe.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/py.typed +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/redaction.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/registry.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/shared/__init__.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/shared/base.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/shared/byteplus/__init__.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/shared/byteplus/ark.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/shared/byteplus/media.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/shared/google/__init__.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/shared/google/batch.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/shared/google/oauth.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/shared/google/probe.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/shared/icons/integration.svg +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/shared/media.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/shared/oauth.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/shared/provider_utils.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/shared/rate_limit.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/shared/vendor_utils.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/validation.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/tests/auth/test_auth_redaction.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/tests/auth/test_oauth_protocol.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/tests/auth/test_search_console_scopes.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/tests/business/conftest.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/tests/business/fixtures/wire-contracts.json +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/tests/business/test_hubspot_signature_protocol.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/tests/business/test_named_actions.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/tests/business/test_pipedrive_probes.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/tests/business/test_probe_boundary.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/tests/business/test_salesloft_probes.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/tests/catalog/test_catalog.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/tests/catalog/test_nested_resources.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/tests/core/test_contract.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/tests/core/test_native_result_boundary.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/tests/core/test_nested_auth_redaction.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/tests/core/test_preflight_redaction.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/tests/core/test_public_key_facts.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/tests/core/test_runtime.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/tests/core/test_timeout_options.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/tests/core/test_validation_data.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/tests/core/test_validation_execution_outcome.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/tests/mail_slack/__init__.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/tests/mail_slack/test_native.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/tests/mail_slack/test_probes_catalog.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/tests/mail_slack/test_signature_protocol.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/tests/media/test_aignc_native.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/tests/media/test_generation_outcomes.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/tests/media/test_media_files.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/tests/media/test_named_media.py +0 -0
- {stackos_connectors-0.2.1/tests/web → stackos_connectors-0.2.3/tests/quickbooks_online}/__init__.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/tests/safe_refs/conftest.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/tests/safe_refs/test_linear_transport.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/tests/safe_refs/test_safe_refs_named_actions.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/tests/safe_refs/test_stripe_transport_transport.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/tests/telegram/__init__.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/tests/telegram/test_actions.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/tests/telegram/test_authorization.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/tests/telegram/test_closure_outcomes.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/tests/telegram/test_native.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/tests/telegram/test_payloads.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/tests/telegram/test_proxy.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/tests/telegram/test_sessions.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/tests/trackbooth/__init__.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/tests/trackbooth/test_native.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/tests/web/catalog_fixture.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/tests/web/conftest.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/tests/web/test_ahrefs.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/tests/web/test_boundary_timeout.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/tests/web/test_cloudflare.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/tests/web/test_dataforseo.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/tests/web/test_firecrawl.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/tests/web/test_ftp.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/tests/web/test_ftp_actions.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/tests/web/test_google_analytics.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/tests/web/test_google_indexing.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/tests/web/test_google_indexing_batch.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/tests/web/test_google_search_console.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/tests/web/test_google_search_console_batch.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/tests/web/test_google_tag_manager.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/tests/web/test_jina_reader.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/tests/web/test_named_clients.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/tests/web/test_native_boundary.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/tests/web/test_openrouter.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/tests/web/test_reddit.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/tests/web/test_s3.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/tests/web/test_s3_actions.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/tests/web/test_serper.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/tests/web/test_shopify.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/tests/web/test_sitemap.py +0 -0
- {stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/tests/web/test_transport_defaults.py +0 -0
- {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.
|
|
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
|
|
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
|
|
131
|
-
|
|
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.
|
|
194
|
+
python -m pip install stackos-connectors==0.2.3
|
|
192
195
|
```
|
|
193
196
|
|
|
194
|
-
Or add `stackos-connectors==0.2.
|
|
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
|
|
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
|
|
115
|
-
|
|
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.
|
|
178
|
+
python -m pip install stackos-connectors==0.2.3
|
|
176
179
|
```
|
|
177
180
|
|
|
178
|
-
Or add `stackos-connectors==0.2.
|
|
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
|
{stackos_connectors-0.2.1 → stackos_connectors-0.2.3}/src/stackos_connectors/catalog/index.json
RENAMED
|
@@ -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
|
|
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
|
|
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.
|