Protokoll #23914
| ID | 23914 |
|---|---|
| Zeitstempel | 2025-12-27 15:33:30.759819 |
| Client | root |
| IP | Warning: Undefined array key "request_ip" in /var/www/dev.campus.systemische-tools.de/src/View/protokoll/show.php on line 13 Deprecated: htmlspecialchars(): Passing null to parameter #1 ($string) of type string is deprecated in /var/www/dev.campus.systemische-tools.de/src/View/protokoll/show.php on line 13 |
| Modell | claude-sonnet-4-20250514 |
| Status | completed |
| Tokens | 4,520 (Input: 0, Output: 0) |
| Dauer | 386 ms |
| Request-Zeit | Warning: Undefined array key "request_timestamp" in /var/www/dev.campus.systemische-tools.de/src/View/protokoll/show.php on line 18 |
| Response-Zeit | - |
Warning: Undefined array key "error_message" in /var/www/dev.campus.systemische-tools.de/src/View/protokoll/show.php on line 22
Request
{
"event": "PreToolUse",
"tool_name": "mcp__mcp-docs__docs_update",
"tool_input": {
"id": 58,
"content": "<nav class=\"breadcrumb\">\n <a href=\"\/docs\">Dokumentation<\/a> » <a href=\"\/docs\/betrieb\">Betrieb<\/a> » Deployment\n<\/nav>\n\n<h1>Deployment & Rollback<\/h1>\n<p>Synchronisiert Code-Änderungen von der Entwicklungsumgebung zur Produktion. Ermöglicht sicheres Testen auf dev bevor Änderungen live gehen. Bei Problemen kann auf den letzten Stand zurückgerollt werden.<\/p>\n\n<table>\n <tr><th>Script<\/th><td>\/opt\/scripts\/sync-dev-prod.sh<\/td><\/tr>\n <tr><th>Richtung<\/th><td>dev → prod<\/td><\/tr>\n <tr><th>Pre-Checks<\/th><td>Contract Validation, PHPStan, PHP-CS-Fixer, Composer Audit, Semgrep, PHPUnit<\/td><\/tr>\n <tr><th>Rollback<\/th><td>Aus \/backup\/ wiederherstellen<\/td><\/tr>\n<\/table>\n\n<h2>Pre-Deployment Checks<\/h2>\n<p>Das Sync-Script führt automatisch alle Quality- und Security-Checks durch. Bei Fehlern wird der Sync abgebrochen.<\/p>\n\n<h3>Check 1: Contract Validation<\/h3>\n<table>\n <tr><th>Contract<\/th><th>Prüft<\/th><th>Blockiert bei<\/th><\/tr>\n <tr><td>View Structure v1.0<\/td><td>CRUD-Views, Struktur<\/td><td>Critical<\/td><\/tr>\n <tr><td>HTML Tables v1.0<\/td><td>Modals, Aktionen-Spalte<\/td><td>Critical<\/td><\/tr>\n <tr><td>CSS Contract v1.0<\/td><td>Stylelint-Regeln<\/td><td>Major<\/td><\/tr>\n <tr><td>Python Pipeline v1.0<\/td><td>Ruff, mypy<\/td><td>Major<\/td><\/tr>\n <tr><td>Layered Architecture v1.0<\/td><td>Layer-Grenzen<\/td><td>Critical<\/td><\/tr>\n <tr><td>Betriebsdokumentation v1.1<\/td><td>Docs-Struktur<\/td><td>Major<\/td><\/tr>\n<\/table>\n<p><strong>Script:<\/strong> <code>\/opt\/scripts\/contract-check.sh<\/code><\/p>\n<p><strong>Dokumentation:<\/strong> <a href=\"\/docs\/betrieb\/contracts\">Contracts<\/a><\/p>\n\n<h3>Check 2: PHP Quality Check<\/h3>\n<table>\n <tr><th>Tool<\/th><th>Prüft<\/th><th>Blockiert bei<\/th><\/tr>\n <tr><td>PHPStan + Strict Rules<\/td><td>Typen, Null-Safety, Bugs<\/td><td>Errors<\/td><\/tr>\n <tr><td>PHP-CS-Fixer<\/td><td>PSR-12 Code Style<\/td><td>Style Issues<\/td><\/tr>\n <tr><td>Composer Audit<\/td><td>Dependency CVEs<\/td><td>Vulnerabilities<\/td><\/tr>\n <tr><td>Semgrep<\/td><td>OWASP Security<\/td><td>Security Findings<\/td><\/tr>\n<\/table>\n\n<h3>Check 3: PHPUnit Tests<\/h3>\n<p>Alle Unit-Tests im <code>tests\/<\/code> Verzeichnis müssen bestehen.<\/p>\n\n<h3>Bei fehlgeschlagenen Checks<\/h3>\n<pre><code># Contract Validation fehlgeschlagen:\n❌ SYNC ABGEBROCHEN: Contract Validation fehlgeschlagen\n Behebe die Contract-Violations und versuche es erneut.\n Tipp: \/opt\/scripts\/contract-check.sh\n\n# PHP Quality Check fehlgeschlagen:\n❌ SYNC ABGEBROCHEN: PHP Quality Check fehlgeschlagen\n Behebe die Fehler und versuche es erneut.\n Tipp: \/opt\/scripts\/php-check.sh \/var\/www\/dev.campus.systemische-tools.de --fix<\/code><\/pre>\n\n<h2>Deployment ausführen<\/h2>\n\n<h3>Standard-Deployment<\/h3>\n<pre><code>\/opt\/scripts\/sync-dev-prod.sh<\/code><\/pre>\n\n<h3>Erwartete Ausgabe (Erfolg)<\/h3>\n<pre><code>=== Sync Dev → Prod: Sat Dec 20 10:00:00 CET 2025 ===\n\n=== Contract Validation ===\n[1\/6] View Structure Contract v1.0\n OK tasks\/*\n OK content\/*\n...\n\n=== PHP Quality Check ===\n[1\/4] PHPStan - Static Analysis + Strict Rules\n✓ PHPStan: OK\n...\n\n=== Summary ===\nAll checks passed!\n\n=== PHPUnit Tests ===\nPHPUnit 12.5.4\n✓ All tests passed!\n\nsending incremental file list\n...\n=== Sync abgeschlossen ===<\/code><\/pre>\n\n<h2>Was wird synchronisiert<\/h2>\n<table>\n <tr><th>Verzeichnis<\/th><th>Inhalt<\/th><th>rsync-Flags<\/th><\/tr>\n <tr><td>src\/<\/td><td>Backend (MVC)<\/td><td>--delete (entfernt gelöschte Dateien)<\/td><\/tr>\n <tr><td>app\/<\/td><td>Frontend (MVP)<\/td><td>--delete<\/td><\/tr>\n <tr><td>routes\/<\/td><td>Web-Routes<\/td><td>-av<\/td><\/tr>\n <tr><td>config\/<\/td><td>Autoloader (ohne config.php)<\/td><td>--exclude='config.php'<\/td><\/tr>\n <tr><td>public\/css\/<\/td><td>Stylesheets<\/td><td>--exclude='static-docs'<\/td><\/tr>\n <tr><td>public\/js\/<\/td><td>JavaScript<\/td><td>-av<\/td><\/tr>\n <tr><td>public\/images\/<\/td><td>Bilder<\/td><td>-av<\/td><\/tr>\n <tr><td>public\/index.php<\/td><td>Entry Point<\/td><td>-av<\/td><\/tr>\n <tr><td>public\/.htaccess<\/td><td>Apache Config<\/td><td>-av<\/td><\/tr>\n<\/table>\n\n<h2>Was wird NICHT synchronisiert<\/h2>\n<ul>\n <li><strong>config\/config.php<\/strong> - Umgebungsspezifische Einstellungen (APP_DEBUG=false, DB-Credentials)<\/li>\n <li><strong>storage\/<\/strong> - Logs, Cache, Sessions<\/li>\n <li><strong>*.log<\/strong> - Log-Dateien werden via --exclude ausgeschlossen<\/li>\n <li><strong>public\/static-docs\/<\/strong> - Statische Dokumentation<\/li>\n<\/ul>\n\n<h2>Nach dem Sync<\/h2>\n<p>Das Script führt automatisch <code>\/opt\/scripts\/fix-permissions.sh<\/code> aus, um die Dateiberechtigungen (www-data:www-data, 755) zu setzen.<\/p>\n\n<h2>Rollback-Verfahren<\/h2>\n<p>Bei Problemen nach dem Deployment kann der vorherige Stand aus dem Backup wiederhergestellt werden.<\/p>\n\n<h3>Schritt 1: Backup identifizieren<\/h3>\n<pre><code># Verfügbare Backups anzeigen\nls -la \/backup\/<\/code><\/pre>\n\n<h3>Schritt 2: Vollständiger Rollback (prod)<\/h3>\n<pre><code># Prod-Verzeichnis komplett wiederherstellen\ncd \/\ntar -xzf \/backup\/2025-12-20_03-00\/www.tar.gz var\/www\/prod.campus.systemische-tools.de\n\n# Berechtigungen setzen\n\/opt\/scripts\/fix-permissions.sh<\/code><\/pre>\n\n<h3>Schritt 3: Datenbank-Rollback (falls nötig)<\/h3>\n<pre><code># Dump entpacken\ngunzip -k \/backup\/2025-12-20_03-00\/mariadb_all.sql.gz\n\n# Datenbank wiederherstellen\nmariadb < \/backup\/2025-12-20_03-00\/mariadb_all.sql\n\n# Oder einzelne Datenbank:\nsed -n '\/^-- Current Database: `ki_dev`\/,\/^-- Current Database:\/p' \\\n \/backup\/2025-12-20_03-00\/mariadb_all.sql > \/tmp\/ki_dev.sql\nmariadb ki_dev < \/tmp\/ki_dev.sql<\/code><\/pre>\n\n<h2>Notfall-Rollback (Schnell)<\/h2>\n<pre><code># Letztes Backup finden\nLATEST=$(ls -1d \/backup\/*\/ | tail -1)\n\n# Vollständiger Prod-Rollback\ncd \/ && tar -xzf \"${LATEST}www.tar.gz\" var\/www\/prod.campus.systemische-tools.de\n\n# Berechtigungen\n\/opt\/scripts\/fix-permissions.sh\n\n# Verifizieren\ncurl -I https:\/\/campus.systemische-tools.de<\/code><\/pre>\n\n<h2>Workflow<\/h2>\n<pre><code>┌─────────────────────────────────────────────────────────────┐\n│ DEPLOYMENT WORKFLOW │\n├─────────────────────────────────────────────────────────────┤\n│ │\n│ 1. ENTWICKLUNG │\n│ └── Änderungen auf dev.campus.systemische-tools.de │\n│ ↓ │\n│ 2. TESTEN │\n│ └── Funktionalität auf dev prüfen │\n│ ↓ │\n│ 3. PRE-CHECKS (automatisch) │\n│ ├── Contract Validation (6 Contracts) │\n│ ├── PHPStan (Typen, Bugs) │\n│ ├── PHP-CS-Fixer (Style) │\n│ ├── Composer Audit (CVEs) │\n│ ├── Semgrep (Security) │\n│ └── PHPUnit (Tests) │\n│ ↓ OK ↓ FAIL │\n│ 4. SYNC ABBRUCH │\n│ └── rsync dev → prod └── Fehler beheben │\n│ ↓ │\n│ 5. VERIFIZIEREN │\n│ └── Produktion prüfen │\n│ ↓ OK ↓ PROBLEM │\n│ FERTIG ROLLBACK │\n│ └── Aus Backup wiederherstellen│\n│ │\n└─────────────────────────────────────────────────────────────┘<\/code><\/pre>\n\n<h2>Checkliste vor Deployment<\/h2>\n<ul>\n <li>Änderungen auf dev getestet?<\/li>\n <li>Browser-Cache gelöscht beim Testen?<\/li>\n <li>Keine sensiblen Daten im Code?<\/li>\n <li>Datenbank-Migrationen berücksichtigt?<\/li>\n <li>Backup vorhanden? (<code>ls \/backup\/<\/code>)<\/li>\n<\/ul>\n\n<h2>Verwandte Themen<\/h2>\n<ul>\n <li><a href=\"\/docs\/betrieb\/backup\">Backup<\/a> - Tägliche Sicherung<\/li>\n <li><a href=\"\/docs\/betrieb\/contracts\">Contracts<\/a> - Contract-System<\/li>\n <li><a href=\"\/docs\/qualitaet\/php-quality\">PHP-Quality<\/a> - Qualitätsprüfung<\/li>\n<\/ul>"
}
}
Response
{
"tool_response": [
{
"type": "text",
"text": "{\n \"success\": true,\n \"doc\": {\n \"id\": 58,\n \"parent_id\": 55,\n \"slug\": \"deployment\",\n \"path\": \"\/betrieb\/deployment\",\n \"title\": \"Deployment\",\n \"description\": \"Synchronisiert Code-Änderungen von der Entwicklungsumgebung zur Produktion. Ermöglicht sicheres Testen auf dev bevor Änderungen live gehen. Bei Problemen kann auf den letzten Stand zurückgerollt werden.\",\n \"content\": \"<nav class=\\\"breadcrumb\\\">\\n <a href=\\\"\/docs\\\">Dokumentation<\/a> » <a href=\\\"\/docs\/betrieb\\\">Betrieb<\/a> » Deployment\\n<\/nav>\\n\\n<h1>Deployment & Rollback<\/h1>\\n<p>Synchronisiert Code-Änderungen von der Entwicklungsumgebung zur Produktion. Ermöglicht sicheres Testen auf dev bevor Änderungen live gehen. Bei Problemen kann auf den letzten Stand zurückgerollt werden.<\/p>\\n\\n<table>\\n <tr><th>Script<\/th><td>\/opt\/scripts\/sync-dev-prod.sh<\/td><\/tr>\\n <tr><th>Richtung<\/th><td>dev → prod<\/td><\/tr>\\n <tr><th>Pre-Checks<\/th><td>Contract Validation, PHPStan, PHP-CS-Fixer, Composer Audit, Semgrep, PHPUnit<\/td><\/tr>\\n <tr><th>Rollback<\/th><td>Aus \/backup\/ wiederherstellen<\/td><\/tr>\\n<\/table>\\n\\n<h2>Pre-Deployment Checks<\/h2>\\n<p>Das Sync-Script führt automatisch alle Quality- und Security-Checks durch. Bei Fehlern wird der Sync abgebrochen.<\/p>\\n\\n<h3>Check 1: Contract Validation<\/h3>\\n<table>\\n <tr><th>Contract<\/th><th>Prüft<\/th><th>Blockiert bei<\/th><\/tr>\\n <tr><td>View Structure v1.0<\/td><td>CRUD-Views, Struktur<\/td><td>Critical<\/td><\/tr>\\n <tr><td>HTML Tables v1.0<\/td><td>Modals, Aktionen-Spalte<\/td><td>Critical<\/td><\/tr>\\n <tr><td>CSS Contract v1.0<\/td><td>Stylelint-Regeln<\/td><td>Major<\/td><\/tr>\\n <tr><td>Python Pipeline v1.0<\/td><td>Ruff, mypy<\/td><td>Major<\/td><\/tr>\\n <tr><td>Layered Architecture v1.0<\/td><td>Layer-Grenzen<\/td><td>Critical<\/td><\/tr>\\n <tr><td>Betriebsdokumentation v1.1<\/td><td>Docs-Struktur<\/td><td>Major<\/td><\/tr>\\n<\/table>\\n<p><strong>Script:<\/strong> <code>\/opt\/scripts\/contract-check.sh<\/code><\/p>\\n<p><strong>Dokumentation:<\/strong> <a href=\\\"\/docs\/betrieb\/contracts\\\">Contracts<\/a><\/p>\\n\\n<h3>Check 2: PHP Quality Check<\/h3>\\n<table>\\n <tr><th>Tool<\/th><th>Prüft<\/th><th>Blockiert bei<\/th><\/tr>\\n <tr><td>PHPStan + Strict Rules<\/td><td>Typen, Null-Safety, Bugs<\/td><td>Errors<\/td><\/tr>\\n <tr><td>PHP-CS-Fixer<\/td><td>PSR-12 Code Style<\/td><td>Style Issues<\/td><\/tr>\\n <tr><td>Composer Audit<\/td><td>Dependency CVEs<\/td><td>Vulnerabilities<\/td><\/tr>\\n <tr><td>Semgrep<\/td><td>OWASP Security<\/td><td>Security Findings<\/td><\/tr>\\n<\/table>\\n\\n<h3>Check 3: PHPUnit Tests<\/h3>\\n<p>Alle Unit-Tests im <code>tests\/<\/code> Verzeichnis müssen bestehen.<\/p>\\n\\n<h3>Bei fehlgeschlagenen Checks<\/h3>\\n<pre><code># Contract Validation fehlgeschlagen:\\n❌ SYNC ABGEBROCHEN: Contract Validation fehlgeschlagen\\n Behebe die Contract-Violations und versuche es erneut.\\n Tipp: \/opt\/scripts\/contract-check.sh\\n\\n# PHP Quality Check fehlgeschlagen:\\n❌ SYNC ABGEBROCHEN: PHP Quality Check fehlgeschlagen\\n Behebe die Fehler und versuche es erneut.\\n Tipp: \/opt\/scripts\/php-check.sh \/var\/www\/dev.campus.systemische-tools.de --fix<\/code><\/pre>\\n\\n<h2>Deployment ausführen<\/h2>\\n\\n<h3>Standard-Deployment<\/h3>\\n<pre><code>\/opt\/scripts\/sync-dev-prod.sh<\/code><\/pre>\\n\\n<h3>Erwartete Ausgabe (Erfolg)<\/h3>\\n<pre><code>=== Sync Dev → Prod: Sat Dec 20 10:00:00 CET 2025 ===\\n\\n=== Contract Validation ===\\n[1\/6] View Structure Contract v1.0\\n OK tasks\/*\\n OK content\/*\\n...\\n\\n=== PHP Quality Check ===\\n[1\/4] PHPStan - Static Analysis + Strict Rules\\n✓ PHPStan: OK\\n...\\n\\n=== Summary ===\\nAll checks passed!\\n\\n=== PHPUnit Tests ===\\nPHPUnit 12.5.4\\n✓ All tests passed!\\n\\nsending incremental file list\\n...\\n=== Sync abgeschlossen ===<\/code><\/pre>\\n\\n<h2>Was wird synchronisiert<\/h2>\\n<table>\\n <tr><th>Verzeichnis<\/th><th>Inhalt<\/th><th>rsync-Flags<\/th><\/tr>\\n <tr><td>src\/<\/td><td>Backend (MVC)<\/td><td>--delete (entfernt gelöschte Dateien)<\/td><\/tr>\\n <tr><td>app\/<\/td><td>Frontend (MVP)<\/td><td>--delete<\/td><\/tr>\\n <tr><td>routes\/<\/td><td>Web-Routes<\/td><td>-av<\/td><\/tr>\\n <tr><td>config\/<\/td><td>Autoloader (ohne config.php)<\/td><td>--exclude='config.php'<\/td><\/tr>\\n <tr><td>public\/css\/<\/td><td>Stylesheets<\/td><td>--exclude='static-docs'<\/td><\/tr>\\n <tr><td>public\/js\/<\/td><td>JavaScript<\/td><td>-av<\/td><\/tr>\\n <tr><td>public\/images\/<\/td><td>Bilder<\/td><td>-av<\/td><\/tr>\\n <tr><td>public\/index.php<\/td><td>Entry Point<\/td><td>-av<\/td><\/tr>\\n <tr><td>public\/.htaccess<\/td><td>Apache Config<\/td><td>-av<\/td><\/tr>\\n<\/table>\\n\\n<h2>Was wird NICHT synchronisiert<\/h2>\\n<ul>\\n <li><strong>config\/config.php<\/strong> - Umgebungsspezifische Einstellungen (APP_DEBUG=false, DB-Credentials)<\/li>\\n <li><strong>storage\/<\/strong> - Logs, Cache, Sessions<\/li>\\n <li><strong>*.log<\/strong> - Log-Dateien werden via --exclude ausgeschlossen<\/li>\\n <li><strong>public\/static-docs\/<\/strong> - Statische Dokumentation<\/li>\\n<\/ul>\\n\\n<h2>Nach dem Sync<\/h2>\\n<p>Das Script führt automatisch <code>\/opt\/scripts\/fix-permissions.sh<\/code> aus, um die Dateiberechtigungen (www-data:www-data, 755) zu setzen.<\/p>\\n\\n<h2>Rollback-Verfahren<\/h2>\\n<p>Bei Problemen nach dem Deployment kann der vorherige Stand aus dem Backup wiederhergestellt werden.<\/p>\\n\\n<h3>Schritt 1: Backup identifizieren<\/h3>\\n<pre><code># Verfügbare Backups anzeigen\\nls -la \/backup\/<\/code><\/pre>\\n\\n<h3>Schritt 2: Vollständiger Rollback (prod)<\/h3>\\n<pre><code># Prod-Verzeichnis komplett wiederherstellen\\ncd \/\\ntar -xzf \/backup\/2025-12-20_03-00\/www.tar.gz var\/www\/prod.campus.systemische-tools.de\\n\\n# Berechtigungen setzen\\n\/opt\/scripts\/fix-permissions.sh<\/code><\/pre>\\n\\n<h3>Schritt 3: Datenbank-Rollback (falls nötig)<\/h3>\\n<pre><code># Dump entpacken\\ngunzip -k \/backup\/2025-12-20_03-00\/mariadb_all.sql.gz\\n\\n# Datenbank wiederherstellen\\nmariadb < \/backup\/2025-12-20_03-00\/mariadb_all.sql\\n\\n# Oder einzelne Datenbank:\\nsed -n '\/^-- Current Database: `ki_dev`\/,\/^-- Current Database:\/p' \\\\\\n \/backup\/2025-12-20_03-00\/mariadb_all.sql > \/tmp\/ki_dev.sql\\nmariadb ki_dev < \/tmp\/ki_dev.sql<\/code><\/pre>\\n\\n<h2>Notfall-Rollback (Schnell)<\/h2>\\n<pre><code># Letztes Backup finden\\nLATEST=$(ls -1d \/backup\/*\/ | tail -1)\\n\\n# Vollständiger Prod-Rollback\\ncd \/ && tar -xzf \\\"${LATEST}www.tar.gz\\\" var\/www\/prod.campus.systemische-tools.de\\n\\n# Berechtigungen\\n\/opt\/scripts\/fix-permissions.sh\\n\\n# Verifizieren\\ncurl -I https:\/\/campus.systemische-tools.de<\/code><\/pre>\\n\\n<h2>Workflow<\/h2>\\n<pre><code>┌─────────────────────────────────────────────────────────────┐\\n│ DEPLOYMENT WORKFLOW │\\n├─────────────────────────────────────────────────────────────┤\\n│ │\\n│ 1. ENTWICKLUNG │\\n│ └── Änderungen auf dev.campus.systemische-tools.de │\\n│ ↓ │\\n│ 2. TESTEN │\\n│ └── Funktionalität auf dev prüfen │\\n│ ↓ │\\n│ 3. PRE-CHECKS (automatisch) │\\n│ ├── Contract Validation (6 Contracts) │\\n│ ├── PHPStan (Typen, Bugs) │\\n│ ├── PHP-CS-Fixer (Style) │\\n│ ├── Composer Audit (CVEs) │\\n│ ├── Semgrep (Security) │\\n│ └── PHPUnit (Tests) │\\n│ ↓ OK ↓ FAIL │\\n│ 4. SYNC ABBRUCH │\\n│ └── rsync dev → prod └── Fehler beheben │\\n│ ↓ │\\n│ 5. VERIFIZIEREN │\\n│ └── Produktion prüfen │\\n│ ↓ OK ↓ PROBLEM │\\n│ FERTIG ROLLBACK │\\n│ └── Aus Backup wiederherstellen│\\n│ │\\n└─────────────────────────────────────────────────────────────┘<\/code><\/pre>\\n\\n<h2>Checkliste vor Deployment<\/h2>\\n<ul>\\n <li>Änderungen auf dev getestet?<\/li>\\n <li>Browser-Cache gelöscht beim Testen?<\/li>\\n <li>Keine sensiblen Daten im Code?<\/li>\\n <li>Datenbank-Migrationen berücksichtigt?<\/li>\\n <li>Backup vorhanden? (<code>ls \/backup\/<\/code>)<\/li>\\n<\/ul>\\n\\n<h2>Verwandte Themen<\/h2>\\n<ul>\\n <li><a href=\\\"\/docs\/betrieb\/backup\\\">Backup<\/a> - Tägliche Sicherung<\/li>\\n <li><a href=\\\"\/docs\/betrieb\/contracts\\\">Contracts<\/a> - Contract-System<\/li>\\n <li><a href=\\\"\/docs\/qualitaet\/php-quality\\\">PHP-Quality<\/a> - Qualitätsprüfung<\/li>\\n<\/ul>\",\n \"status\": \"published\",\n \"sort_order\": 3,\n \"depth\": 1,\n \"created_at\": \"2025-12-20T11:13:58\",\n \"updated_at\": \"2025-12-27T15:33:30\"\n },\n \"message\": \"Document #58 updated\"\n}"
}
]
}