Enneo

Wiki knowledge source

Update knowledgeSource

PATCH /knowledgeSource/{id}

PATCH /knowledgeSource/{id}

For file-type rows (uploaded via the files connector) only name, status, and text are accepted — other fields return 422. Editing text sets data.hasManualMarkdownEdits = true so the FE can warn before a re-upload would overwrite manual edits. The embeddingHash is intentionally NOT recomputed on text-only edits — it represents the parse hash of the original binary and stays stable until a real reindex / replace.

Website-type pages cannot be edited through this endpoint.

Teams (per-article ACL): sending teams: [1,2] replaces the full team-restriction set; omitting teams entirely leaves the existing set unchanged. An empty array (teams: []) removes all restrictions and makes the article visible to everyone.

Path parameters

idintegerpathrequired

The id of the knowledgeSource to retrieve

Request body

idintegerbody

Internal id, e.g. 123

typeenumbodyDefault: faq

Type of knowledge source Options: faq, work-instruction, document, other, news, website

statusenumbodyDefault: active

Status of the knowledge source Options: active, archived, deleted

sourcestringbody

URL to associated source. null for sources with internal ids (tickets and templates) or if non-existant (language model source)

namestringbody

Name of knowledge source, any requests with existing name will update the existing knowledge source

tagsinteger[]body

Tags that are assigned to this knowledge source

teamsinteger[]body

Teams that restrict access to this knowledge source. When set, only agents whose active team memberships intersect this list can see the article. Applies to all types. An empty array (or omitting the field) means no restriction — all agents see it. On update, sending teams replaces the full set; omitting teams leaves the existing set unchanged.

readByAgentsobject[]body

Agents that have read the knowledge source

titlestringbody

Title of knowledge source

textstringbody

Full text that was used as source

confidentialbooleanbodyDefault: false

If true, then this knowledge source is only visible to agents

excludedbooleanbodyDefault: false

For website-type pages only — true if the page URL matches the parent connector's sourceConfig.excludePaths. Excluded pages are filtered out of GET /knowledgeSource (bulk list) and return 404 from GET /knowledgeSource/{id} so Cortex sync stays consistent. The configuration view (which calls /knowledgeSourceStructure?withExcluded=true) sees them with this flag set so it can render the "Excluded" tag and the Include action.

accessobjectbody

Team-ACL "access hole" indicator. Present only when this node has a problem or contains one; omitted entirely when the node is clean. A hole = the node declares team(s) that an ancestor folder forbids — because visibility is narrowing-only (reachable only by users who pass every restricted ancestor AND the node's own restriction), the access the editor granted does not actually work. To learn what is wrong, open the item and read its real teams.

Request Example

{
  "id": 123,
  "type": "faq",
  "status": "active",
  "source": "https://company.com/faq/376189",
  "name": "Opening hours",
  "tags": [
    70,
    71
  ],
  "teams": [
    1,
    2
  ],
  "readByAgents": [
    {
      "id": 1,
      "name": "John Doe",
      "readAt": "2024-11-29 14:38:12"
    }
  ],
  "title": "Opening hours",
  "text": "Our service hours are from 8am to 5pm. We are closed on weekends. [...]",
  "confidential": false,
  "excluded": false,
  "access": {
    "blocked": true,
    "blockedItems": [
      {
        "id": 42,
        "kind": "article"
      },
      {
        "id": 57,
        "kind": "folder"
      }
    ]
  }
}

Responses

200 — Successful operation

500 — Internal error