---
title: "Knowledge"
description: "Articles and guides. A wiki of articles arranged in a tree, with draft, published and archived states and tags."
canonical: "https://obop.dev/apps/knowledge/"
lang: "en"
---

# Knowledge

## What it is for

A wiki of articles arranged in a tree, with draft, published and archived states and tags. Visibility is a label: there are no row-level permissions yet, so everyone with access to the app reads every article.

## What the package does and does not do

A wiki: articles arranged in a tree through a parent article, with a draft, published, archived flow, a visibility setting and tags. Visibility is a label for the UI and for people to respect; the platform has no row-level permissions yet, so everyone with the Knowledge groups can read every article.

## Models

### `knowledge_article`

An article of the knowledge base

Read group: `knowledge.user`. Write group: `knowledge.user`.

| Field | Kind | Data class | Personal data | Group | Agents see | Description |
|---|---|---|---|---|---|---|
| `title` | text | `none` | no | `knowledge.user` | in clear | Article title |
| `parent_id` | ref → knowledge_article | `none` | no | `knowledge.user` | in clear | The article this one is nested under; empty for a top-level article |
| `body` | longtext | `none` | no | `knowledge.user` | in clear | Article content (Markdown) |
| `visibility` | select (private, workspace, public) | `none` | no | `knowledge.user` | in clear | Who the article is meant for: private, workspace, public |
| `tags` | text | `none` | no | `knowledge.user` | in clear | Comma-separated tags, for example onboarding,hr |
| `author_name` | text | `public_directory` | yes | `knowledge.user` | masked | Name of the author |
| `sequence` | number | `none` | no | `knowledge.user` | in clear | Order among its siblings, lowest first |
| `published_on` | date | `none` | no | `knowledge.user` | in clear | Day the article was published (YYYY-MM-DD) |
| `state` | select (draft, published, archived) | `none` | no | `knowledge.user` | in clear | Article status: draft, published, archived |

## Workflows

### `knowledge_article`

| Action | Moves | Who may run it | Approval |
|---|---|---|---|
| `knowledge_article.publish` | state: draft → published | `knowledge.manager` | no |
| `knowledge_article.unpublish` | state: published → draft | `knowledge.manager` | no |
| `knowledge_article.archive` | state: published → archived | `knowledge.manager` | no |

## Permission groups

Groups used by this app:

- `knowledge.manager`
- `knowledge.user`

## Approval steps

No step in this app needs an approval, apart from deleting records.

## What agents can and cannot do

An agent can read, search, create and update records of this app, and run the actions that need no approval, within the permission groups of its token.

It can only propose these steps, and a person must approve them: `knowledge_article.delete`.

Personal data is masked as placeholder tokens: `knowledge_article.author_name`.

## Dependencies

None.

## Install

Install it from the Customize app (Marketplace), or from the command line:

```bash
obop modules install-from knowledge
```

Needs a database and administrator rights.

## Build your own

[The module guide shows how apps like this one are written](/docs/reference/module-manifest/)
