Home
Start here

Connectors and capabilities

Discover connector availability before importing optional provider SDKs.

ConnectorFabric is the catalog and construction boundary. Known built-ins remain discoverable even when their extras are not installed.

from vendor_fabric import ConnectorFabric

fabric = ConnectorFabric()
print(fabric.list_connector_categories())
print(fabric.list_connectors_by_capability("repositories"))

info = fabric.get_connector_info("github")
if info.available:
    github = fabric.get_connector("github", github_owner="jbcom", github_token="...")
else:
    print(info.install)

Direct construction is also available when it is clearer:

from vendor_fabric import GitHubConnector, SlackConnector

github = GitHubConnector(github_owner="jbcom", github_token="...")
slack = SlackConnector(bot_token="xoxb-...")

Connector methods promote decoded payloads to the ExtendedData family (ExtendedDict, ExtendedList, or ExtendedString) at the public boundary.

Generic dispatch

Providers declare capability metadata through @capability. VendorData uses that metadata to select an opened provider or to route an explicit provider id.

from vendor_fabric.vendor_data import VendorData

data = VendorData({"resource": "config"})
data.open("aws")
result = data.call("get_object", "aws", bucket="my-bucket", key="config.json")

Do not add a hard-coded facade method when a provider capability and VendorData.call express the same contract.

Webhook safety

The optional Cursor connector accepts webhook callbacks only over HTTPS. Before a webhook is used, it rejects loopback, private, link-local, unspecified, and cloud-metadata addresses so a caller cannot use the connector to reach an internal service.