Développeurs

API — Knowledge

Référence API — Knowledge

Knowledge est le module de contenu : wiki interne, base de connaissance publique et blog. Il expose une gestion membre (JWT), une surface publique anonyme (lecture par slug), une surface d'intégration par clé API, et un serveur MCP.

  • Base URL — prod : https://knowledge.api.puwapi.com · dev : http://localhost:6300

Concepts

  • Space (espace)mode : internal (wiki collaboratif), public_kb (base publique), blog. Chaque espace a un slug unique global.
  • Collection — regroupe des articles dans un espace.
  • Articlekind : rich (éditeur Tiptap, JSON) ou developer (Markdown, contentMarkdown). Le kind est immuable. Statuts : draftreviewpublishedarchived. sortOrder = ordre de lecture.

Gestion membre (JWT + gating knowledge)

Base : /api/knowledge

MéthodeRouteRôle
GET/POST/api/knowledge/spacesLister / créer des espaces
GET/PATCH/DELETE/api/knowledge/spaces/{id}Détail / modifier / supprimer
GET/POST/api/knowledge/spaces/{id}/collectionsCollections
PATCH/DELETE/api/knowledge/collections/{id}Modifier / supprimer une collection
GET/POST/api/knowledge/spaces/{id}/articlesLister / créer des articles
GET/PATCH/DELETE/api/knowledge/articles/{id}Détail / modifier / archiver
POST/api/knowledge/spaces/{id}/articles/reorderOrdre de lecture ({ articleIds })
POST/api/knowledge/articles/{id}/statusTransition de statut
POST/api/knowledge/articles/{id}/publishPublier
GET/api/knowledge/articles/{id}/versionsHistorique des versions
POST/api/knowledge/articles/{id}/versions/{vid}/restoreRestaurer une version
GET/POST/api/knowledge/articles/{id}/commentsCommentaires
GET/api/knowledge/searchRecherche interne
GET/api/knowledge/spaces/{id}/analyticsStatistiques d'un espace

IA (/api/knowledge/ai) : suggest, rewrite, summarize, qa (branché sur le module IA).

Clés API (/api/knowledge/keys) : GET, POST ({label, scope}), DELETE {id}.

Surface d'intégration (clé API — X-Server-API-Key)

Base : /api/public/knowledge — miroir machine-à-machine de la gestion membre. Le scope write est requis pour les mutations (sinon 403).

MéthodeRoute
GET/spaces, /spaces/{id}, /spaces/{id}/collections, /spaces/{id}/articles, /articles/{id}, /search
POST/spaces, /spaces/{id}/collections, /spaces/{id}/articles, /spaces/{id}/articles/reorder, /articles/{id}/status, /articles/{id}/publish
PATCH/spaces/{id}, /collections/{id}, /articles/{id}
DELETE/spaces/{id}, /collections/{id}, /articles/{id}

Sur cette surface, un article créé est de kind = developer (Markdown) par défaut.

Exemple — créer et publier un article :

BASE=https://knowledge.api.puwapi.com/api/public/knowledge
# 1) créer l'espace
curl -X POST $BASE/spaces -H "X-Server-API-Key: $KEY" -H "Content-Type: application/json" \
  -d '{"name":"Docs","mode":"public_kb"}'
# 2) créer une collection puis un article developer (contentMarkdown)
curl -X POST $BASE/spaces/$SID/articles -H "X-Server-API-Key: $KEY" -H "Content-Type: application/json" \
  -d '{"title":"Intro","collectionId":"'$CID'","kind":"developer","contentMarkdown":"# Titre\n\ncorps"}'
# 3) publier
curl -X POST $BASE/articles/$AID/publish -H "X-Server-API-Key: $KEY"

Surface publique anonyme (lecture par slug)

Base : /api/knowledge/publicdirectory, spaces/{slug}, spaces/{slug}/articles, spaces/{slug}/articles/{articleSlug}, abonnés blog (subscribe/confirm/unsubscribe), spaces/{slug}/qa. Aucune clé requise ; n'expose jamais d'tenantId.

Serveur MCP

@puwapi/knowledge-mcp expose ~20 outils (lecture + écriture d'articles/espaces/collections, versions, reorder, publish/archive) au-dessus de la surface d'intégration. Configuration : PUWAPI_KNOWLEDGE_API_KEY (obligatoire) + PUWAPI_KNOWLEDGE_API_URL (défaut prod). Le scope write de la clé conditionne les outils d'écriture.

#api #knowledge