symbiosika-wiki

n8n community nodes to work with the Symbiosika Wiki / Knowledge Texts

Package Information

Released: 2 mo ago
Downloads: 0 weekly / 0 monthly
Latest Version: 0.1.1

Documentation

n8n-nodes-symbiosika-wiki

n8n community nodes to work with the Symbiosika Wiki / Knowledge Texts part of the
Symbiosika Suite.

BETA. Built and tested against the current Symbiosika framework (/api/v1) and
n8n n8nNodesApiVersion: 1.

This package ships two nodes and one credential:

Node Type Purpose
Symbiosika Wiki action Read, create, update, search and sync wiki pages (knowledge texts)
Symbiosika Wiki Trigger trigger Start a workflow on knowledge_text.* events
Symbiosika Wiki API credential API URL + API key (sent as X-API-KEY)

Credentials

Create a Symbiosika Wiki API credential:

  • API URL – base URL of your instance, e.g. https://your-instance.symbiosika.de (no trailing slash)
  • API Key – a Symbiosika API key. It is sent as the X-API-KEY header.

The credential is verified against GET /api/v1/ping.

The API key needs the scopes matching the operations you use:
knowledge:read, knowledge:write, webhooks:read, webhooks:write, user:read
(or the wildcard scope all).

Symbiosika Wiki (action node)

Pick an Organisation (tenant – loaded from GET /api/v1/user/tenants) and an operation:

Operation Endpoint Notes
Create POST /knowledge/texts Train a new page. Title + text + optional facets, parent, team, attributes, embedding.
Get GET /knowledge/texts/:id Single page with full text. Optional versionId.
Get Content GET /knowledge/texts/:id/content Text only, optional fromLine / maxLines.
Get Many GET /knowledge/texts List pages (no text). Filters + real pagination via Return All.
Search GET /knowledge/texts/search Hybrid / full-text / semantic search.
Recent Changes GET /knowledge/texts/recent-changes Pages changed since a date.
Update PUT /knowledge/texts/:id Update any field.
Edit Content PATCH /knowledge/texts/:id/content Exact string replacement (oldString → newString).
Append Content POST /knowledge/texts/:id/append Append text with an optional separator.
Delete DELETE /knowledge/texts/:id Soft-delete a page.
Sync From Source POST /knowledge/texts/sync Upsert a page by a stable Source ID.

Sync From Source (training via a source ID)

The Sync From Source operation upserts a page identified by a Source ID
(sourceIdentifier). On every run the page is matched by that ID (optionally
scoped with Match Scope), and only rewritten when the title or text actually
changed. The response reports { id, created, changed }.

  • Source ID – stable identifier of the item in the source system (URL, GUID, path).
  • Match Scope (JSON) – e.g. {"source":"confluence"}, so two source systems can reuse the same IDs without colliding, and so orphan cleanup stays bounded.
  • Last Change / Source Date – stored in the page meta.lastChange (bookkeeping; change detection itself is content-based).
  • Delete Orphans – when a run carries the full set of active source IDs, deletes pages in the match scope whose source ID is not present.

One node run syncs one page per input item, so you can drive it from any upstream
list (e.g. rows from a database, files from a folder).

Symbiosika Wiki Trigger

Registers n8n webhooks in Symbiosika and starts the workflow when the selected
events fire. Payloads carry the page metadata (id, title, timestamps, …) but not
the page text
– fetch it with the Get operation if you need the content.

Events:

  • Knowledge Text Created – knowledge_text.created
  • Knowledge Text Updated – knowledge_text.updated
  • Knowledge Text Deleted – knowledge_text.deleted

One webhook is registered per selected event via POST /api/v1/tenant/:tenantId/webhooks/register/n8n.
Use Organisation-Wide controls whether events from the whole organisation are
delivered or only those caused by the API key owner.

The delivered JSON envelope looks like:

{
  "id": "…delivery id…",
  "event": "knowledge_text.updated",
  "source": "user",
  "tenantId": "…",
  "occurredAt": "2026-01-01T12:00:00.000Z",
  "data": { "id": "…page id…", "title": "…", "updatedAt": "…", "...": "…" }
}

Build

pnpm install
pnpm run lint
pnpm run build

Development

Build the nodes and mount dist into a local n8n via Docker:

pnpm run build
docker-compose up

Then open http://localhost:5678 and add the credential + nodes.

License

MIT

Discussion