connectors/http is a single source implementation driven by declarative
YAML manifests (connectors/http/manifests/) rather than one Go package per
API. Onboarding a new integration is mostly a matter of writing a manifest,
not writing a new connector — the bundled catalog (catalog.go) is a few
lines per integration: an embedded manifest file plus a display name,
description, and logo.
Integrations shipped today
Attio
GitHub
Linear
Notion
Slack
How a manifest works
Every manifest is validated against a two-layer grammar (connectors/http/manifest/): a JSON Schema (grammar.v1.json) checks shape
— required objects, field types, enum membership — and validate.go checks
cross-field semantics (parent cycles, checkpoint-key collisions, template
syntax). A manifest declares:
connection— base URL, auth (bearer, a staticheader, or others the grammar supports), and connection-wide headers.resources— one entry per extractable resource: its path, HTTP method, primary key, field mappings (each a JSON/GraphQL path plus a type), and how it paginates.for_each/capture— how resources nest. A child resource (for_each: parent_resource) runs once per parent record, templating the parent’scaptured fields into its own path, query, or body ({{ parent.field }}).discovery—static(extract every declared resource) or a dynamic mode that surfaces individual selectable items (specific channels, repos, databases) to the catalog UI.incremental— per-resource cursor tracking: which field is the cursor, where it’s injected on the next request, and how values compare (lex,numeric, ortime). See Slack for a working example.
This page covers the concepts;
connectors/http/manifest/grammar.v1.json
in the repo is the authoritative field-by-field schema, and
connectors/http/manifests/*.yaml are five worked examples.