Reference
n8n
The community node package — a webhook trigger with dynamic event dropdowns and signature verification, plus an action node for sessions and tools.
The n8n-nodes-thirdfactor-obsidian community package (repo:
sdks/n8n/) adds two nodes to n8n — a good fit when you self-host your
automation next to an on-prem or private-cloud deployment.
Install
In n8n: Settings → Community Nodes → Install →
n8n-nodes-thirdfactor-obsidian (once published to npm). From source:
cd sdks/n8n
npm install && npm run build
# then link/copy into your n8n custom-nodes directory, e.g.
# ~/.n8n/custom/ → npm install /path/to/thirdfactor-obsidian/sdks/n8nCredentials
One credential type, ThirdFactor Obsidian API:
| Field | Value |
|---|---|
| Base URL | Your deployment's API origin, e.g. https://acme.thirdfactor.ai |
| API key | A tenant API key (sk_…) from Console → Settings → API keys |
The credential test calls GET /v3/automation/me/. All requests send the key
as X-API-Key.
Note
A failing credential test with a permissions error means the Connect feature isn't enabled for your account — it's switched on per account by the platform administrator.
Tip
n8n is often deployed inside the same network as an on-prem Obsidian. Webhook
targets must pass the SSRF guard — for private/internal n8n URLs, have the
deployment set WEBHOOK_ALLOWED_HOSTS (or WEBHOOK_ALLOW_PRIVATE) so the
subscription's delivery target is accepted.
Trigger node — ThirdFactor Obsidian Trigger
A webhook trigger that manages its own
Connect subscription (created with
source: "n8n", so it shows up on the console Connect page):
- Events — multi-select, loaded live from
GET /v3/automation/events/and grouped by category; pick one event or twenty. - Workflow filter — optional multi-select of your workflows.
- Module filter — optional, for
module.completed/aml.hitgranularity. - Verify signature (default on) — checks the delivery's
X-Webhook-SignatureHMAC against the subscription secret (stored in the workflow's static data when the subscription is created), rejects tampered or stale (>5 min) deliveries with HTTP 401.
Activating the workflow subscribes; deactivating unsubscribes. If the subscription vanished server-side (deleted from the console), the node detects it on activation and re-subscribes cleanly.
Each delivery becomes one item whose JSON is the
Connect envelope — route on
{{ $json.event }} and read {{ $json.data.session.vendor_data }},
{{ $json.data.module.status }}, etc.
Action node — ThirdFactor Obsidian
| Resource | Operations |
|---|---|
| Session | Create (workflow dropdown, vendor data, contacts, expiry → returns the hosted url) · Get · Get Decision · Get Many · Add Tag |
| Tools | AML Check (name, DOB, nationality → matches) |
Example workflows
- Trigger (
session.in_review) → Slack → Wait → HTTP Request: alert compliance, then pollGET /v3/session/{{id}}/decision/for the final outcome. - Cron → Postgres → Session: Create → SMTP: nightly batch — create verification sessions for new signups and email each applicant their link.
- Trigger (
aml.hit) → IF (risk_level = high) → PagerDuty: page on high-risk watchlist matches only. - Trigger (
module.completed, filterID_VERIFICATION) → Code → Google Sheets: extract OCR'd document fields into a review sheet in real time.