OpenAPI-Build
Dieses Verzeichnis enthält das Build-Script, das docs/public/openapi.json aus den #[OA\*]-Attributen der PHP-Handler generiert.
Voraussetzungen
- PHP 8.2+ im
PATH(der CMS-Server hat PHP 8.4/8.5 installiert). composer installunter_core/libs/swagger-php/(einmalig durchgelaufen).
Lokaler Build
Der Build muss auf einer Umgebung mit PHP-Runtime laufen — typischerweise auf dem CMS-Server selbst. Ohne PHP im PATH bricht das Script mit einer klaren Fehlermeldung ab.
cd docs
npm run build:openapiDas ruft intern scripts/build-openapi.sh auf, welches wiederum _core/libs/swagger-php/bin/openapi mit den korrekten Scan- und Exclude- Pfaden aufruft.
Ergebnis
docs/public/openapi.json(OpenAPI 3.0, JSON-Format)- Wird von der Scalar-Komponente in
docs/api-reference/index.mdgeladen.
Scan-Pfade
Das Script scannt:
_core/system/api/— zentrale Meta-Klasse + Schemas_public/extensions/core/backend/— alle Plugin-API-Handler
Ausgeschlossen werden Vendor-SDKs (PayPal, Stripe, PDF-Parser, SimpleSAML), kompilierte Smarty-Templates (templates_c/), Media-Uploads (z_uploads/) und node_modules/. Details siehe build-openapi.sh.
CI / Server-Deployment
Wenn die Docs auf einem dedizierten Host gehostet werden (nicht am Server), empfiehlt sich:
npm run build:openapiauf dem CMS-Server ausführen.- Das generierte
docs/public/openapi.jsonins Docs-Repo committen oder per CI-Job synchronisieren. - Docs-Host führt nur noch
npm run buildaus (statische Seite + Scalar- Viewer, keine PHP-Runtime nötig).
Troubleshooting
- "php: command not found" → PHP ist nicht im PATH. Lokales Development-Env (macOS ohne Homebrew-PHP) kann den Build nicht laufen lassen, das ist ok — Build ist Server-Aufgabe.
- "Cannot redeclare class" → Irgendein Vendor-SDK wurde nicht per
--excludeausgeblendet. Unsere Marker-Klassen sind im NamespaceNewmeta\OpenApi\Schemas, also eher unwahrscheinlich; aber Exclude-Liste inbuild-openapi.shprüfen. - Leere
openapi.json→ Scan hat keine Attribute gefunden. Prüfen, obuse OpenApi\Attributes as OA;in den Handler-Files korrekt gesetzt ist.