Dokumentation » API » Docs API

Docs API

Erstellt: 2025-12-27 | Aktualisiert: 2025-12-27

REST-API für Dokumentations-Management mit CRUD-Operationen, semantischer Suche und RAG-Chat.

ControllerController\Api\DocsController
Base-URL/api/v1/docs
Datenbankki_dev.dokumentation
FormatJSON

Endpoints-Übersicht

MethodePfadBeschreibung
GET/api/v1/docsListe aller Dokumente
GET/api/v1/docs/{id}Dokument nach ID
GET/api/v1/docs/path/{path}Dokument nach Pfad
GET/api/v1/docs/searchSemantische Suche
GET/api/v1/docs/hierarchyDokumentationsbaum
POST/api/v1/docsDokument erstellen
PUT/api/v1/docs/{id}Dokument aktualisieren
DELETE/api/v1/docs/{id}Dokument löschen
POST/api/v1/docs/chatRAG-Chat mit Dokumentation

Dokumente auflisten

GET /api/v1/docs?status=published&parent_id=51&search=apache&limit=50&offset=0
ParameterTypDefaultBeschreibung
statusstring-published, draft
parent_idint-Filter nach Parent-Dokument
searchstring-Volltextsuche in Titel/Content
limitint50Max. Ergebnisse (max 100)
offsetint0Pagination-Offset

Response

{
  "success": true,
  "data": [
    {
      "id": 1,
      "parent_id": null,
      "slug": "server",
      "path": "/server",
      "title": "Server",
      "description": "Server-Dokumentation",
      "status": "published",
      "depth": 0,
      "created_at": "2025-12-20T10:00:00",
      "updated_at": "2025-12-27T12:00:00"
    }
  ],
  "meta": {
    "total": 100,
    "limit": 50,
    "offset": 0
  }
}

Dokument nach ID

GET /api/v1/docs/{id}?include_children=1&include_breadcrumb=1
ParameterTypBeschreibung
include_children0|1Kind-Dokumente einschließen
include_breadcrumb0|1Breadcrumb-Pfad einschließen

Response

{
  "success": true,
  "data": {
    "id": 51,
    "title": "API",
    "path": "/api",
    "content": "...",
    ...
  },
  "children": [...],
  "breadcrumb": [
    {"id": 51, "title": "API", "path": "/api"}
  ]
}

Dokument nach Pfad

GET /api/v1/docs/path/api/chat

Liefert Dokument mit Pfad /api/chat.

Semantische Suche

GET /api/v1/docs/search?q=Apache+SSL&limit=5&category=Betrieb
ParameterTypDefaultBeschreibung
qstringrequiredSuchanfrage
limitint5Max. Ergebnisse
categorystring-Taxonomie-Kategorie-Filter

Response

{
  "success": true,
  "data": [
    {
      "chunk_id": 42,
      "content": "Apache SSL Konfiguration...",
      "score": 0.92,
      "dokument_title": "Apache",
      "path": "/server/apache"
    }
  ],
  "meta": {
    "query": "Apache SSL",
    "limit": 5,
    "count": 3
  }
}

Dokumentationsbaum

GET /api/v1/docs/hierarchy

Liefert vollständigen Dokumentationsbaum als verschachtelte Struktur.

Response

{
  "success": true,
  "data": [
    {
      "id": 1,
      "title": "Server",
      "path": "/server",
      "children": [
        {"id": 2, "title": "SSH", "path": "/server/ssh", "children": []},
        {"id": 3, "title": "UFW", "path": "/server/ufw", "children": []}
      ]
    }
  ]
}

Dokument erstellen

POST /api/v1/docs
Content-Type: application/json

{
  "title": "Neues Dokument",
  "slug": "neues-dokument",
  "content": "

Inhalt

Text...

", "description": "Beschreibung", "parent_id": 51, "status": "draft", "sort_order": 10 }
FeldTypPflichtBeschreibung
titlestringJaDokumenttitel
slugstringJaURL-Slug (eindeutig pro Parent)
contentstringNeinHTML-Inhalt
descriptionstringNeinKurzbeschreibung
parent_idintNeinParent-Dokument-ID
statusstringNeindraft (default) oder published
sort_orderintNeinSortierreihenfolge

Response (201 Created)

{
  "success": true,
  "data": {...},
  "message": "Dokument erstellt"
}

Dokument aktualisieren

PUT /api/v1/docs/{id}
Content-Type: application/json

{
  "title": "Aktualisierter Titel",
  "content": "

Neuer Inhalt

", "description": "Neue Beschreibung", "status": "published" }

Alle Felder sind optional - nur übergebene Felder werden aktualisiert.

Dokument löschen

DELETE /api/v1/docs/{id}

Wichtig: Dokumente mit Unterdokumenten können nicht gelöscht werden. Lösche zuerst alle Kind-Dokumente.

Fehler-Response

{
  "success": false,
  "error": "Dokument hat Unterdokumente. Lösche diese zuerst."
}

RAG-Chat

POST /api/v1/docs/chat
Content-Type: application/json

{
  "question": "Wie konfiguriere ich Apache SSL?",
  "model": "mistral",
  "limit": 5
}
ParameterTypDefaultBeschreibung
questionstringrequiredBenutzer-Frage
modelstringmistralLLM-Modell (Ollama)
limitint5Max. Kontext-Chunks

Response

{
  "success": true,
  "data": {
    "answer": "Um Apache SSL zu konfigurieren...",
    "sources": [
      {"title": "Apache", "path": "/server/apache", "score": 0.89}
    ],
    "model": "mistral",
    "tokens": {"input": 1200, "output": 350}
  }
}

Fehlerbehandlung

HTTP CodeBedeutung
400Fehlende oder ungültige Parameter
404Dokument nicht gefunden
500Server-Fehler

Services

ServiceBeschreibung
DokumentationRepositoryCRUD-Operationen für Dokumente
ChunkSearchServiceSemantische Suche über Chunks
DocumentationChatUseCaseRAG-Chat mit Dokumentation

Verwandte Dokumentation

]]>