What
Add Notion as a registered service, following the exact pattern already used by github, slack, stripe, and google_workspace.
Why
More service configurations mean more agents can use AgentGate out of the box without writing any Go code — this is a config-only, no-code-required contribution.
Files to touch
configs/services.yaml — the file the Dockerfile and quickstart actually load. Add a notion: entry.
config/services.yaml — the local, non-Docker dev default. Add the same entry for consistency (see internal/registry/production_config_test.go's TestProductionConfig_LocalDevDefaultMatches, which checks these two files don't drift).
configs/services/notion.yaml — a new per-service reference file, matching the convention README.md points readers at (see configs/services/google_workspace.yaml for the exact shape to copy).
Suggested shape
Notion's API (https://developers.notion.com/reference/intro) uses Bearer token auth (an internal integration secret or an OAuth token) and a fixed Notion-Version header is normally required — AgentGate's current injectAuth doesn't send extra static headers per service yet, so start with the two simplest read-only actions that work without one:
notion:
base_url: https://api.notion.com
auth:
type: bearer
actions:
search:
method: POST
path: /v1/search
params:
query: "string?"
retrieve_page:
method: GET
path: /v1/pages/{page_id}
params:
page_id: string
(If you find the Notion-Version header is required for a real call, note that in your PR description rather than silently dropping the action — it's fine to file this as a known limitation.)
Acceptance checks
configs/services.yaml, config/services.yaml, and configs/services/notion.yaml all parse as valid YAML and match the registry.Config schema in internal/registry/registry.go.
go test ./internal/registry/... passes, including the existing TestProductionConfig_* tests (they check for specific named services being present; adding a new one doesn't break them).
- No Go code changes are required for this issue.
Test path (no secrets needed)
go test ./internal/registry/... -run TestProductionConfig -v
This test loads the real config files directly — no live Notion account, API key, or network access needed.
What
Add Notion as a registered service, following the exact pattern already used by
github,slack,stripe, andgoogle_workspace.Why
More service configurations mean more agents can use AgentGate out of the box without writing any Go code — this is a config-only, no-code-required contribution.
Files to touch
configs/services.yaml— the file the Dockerfile and quickstart actually load. Add anotion:entry.config/services.yaml— the local, non-Docker dev default. Add the same entry for consistency (seeinternal/registry/production_config_test.go'sTestProductionConfig_LocalDevDefaultMatches, which checks these two files don't drift).configs/services/notion.yaml— a new per-service reference file, matching the conventionREADME.mdpoints readers at (seeconfigs/services/google_workspace.yamlfor the exact shape to copy).Suggested shape
Notion's API (https://developers.notion.com/reference/intro) uses Bearer token auth (an internal integration secret or an OAuth token) and a fixed
Notion-Versionheader is normally required — AgentGate's currentinjectAuthdoesn't send extra static headers per service yet, so start with the two simplest read-only actions that work without one:(If you find the
Notion-Versionheader is required for a real call, note that in your PR description rather than silently dropping the action — it's fine to file this as a known limitation.)Acceptance checks
configs/services.yaml,config/services.yaml, andconfigs/services/notion.yamlall parse as valid YAML and match theregistry.Configschema ininternal/registry/registry.go.go test ./internal/registry/...passes, including the existingTestProductionConfig_*tests (they check for specific named services being present; adding a new one doesn't break them).Test path (no secrets needed)
go test ./internal/registry/... -run TestProductionConfig -vThis test loads the real config files directly — no live Notion account, API key, or network access needed.