REST-API
Alle Endpoints liegen unter /api/_action/p2lab-cache/... und erfordern ein gültiges Admin-API-Access-Token (dasselbe, das Sie für andere Admin-Endpoints von Shopware nutzen). Übergeben Sie es als Authorization: Bearer <token>.
Statistiken
Abschnitt betitelt „Statistiken“GET /api/_action/p2lab-cache/stats
Abschnitt betitelt „GET /api/_action/p2lab-cache/stats“Gibt die Dashboard-Zusammenfassung zurück — Gesamt-Dateien / -Größe, Per-Typ-Zähler, aggregierte Statistiken und detaillierte Per-Typ-Statistiken.
Antwort (Auszug):
{ "totalFiles": 1842, "totalSize": 91234567, "totalSizeFormatted": "87.00 MB", "byType": { "products": 1200, "buybox": 0, "categories": 80, "listings": 540, "cms": 22 }, "aggregated": { "totalPages": 1842, "totalOriginalSize": 182000000, "totalCachedSize": 91234567, "totalSpaceSaved": 90765433, "avgGenerationTime": 0.4217, "avgCacheHitTime": 0.0019, "compressionEnabled": true }, "byTypeDetailed": { "product": { "count": 1200, "spaceSaved": 65000000, "avgGenerationTime": 0.41, "avgCacheHitTime": 0.0018 } }}Leerung
Abschnitt betitelt „Leerung“POST /api/_action/p2lab-cache/clear
Abschnitt betitelt „POST /api/_action/p2lab-cache/clear“Purged jeden gecachten Eintrag. Kein Body nötig.
Antwort:
{ "success": true, "filesDeleted": 1842 }POST /api/_action/p2lab-cache/clear-by-type
Abschnitt betitelt „POST /api/_action/p2lab-cache/clear-by-type“Purged jeden Eintrag eines einzelnen Typs.
Body:
{ "type": "products" }type muss einer von products, categories, cms, listings, buybox sein.
Antwort:
{ "success": true, "filesDeleted": 1200, "type": "products" }POST /api/_action/p2lab-cache/warmup/start
Abschnitt betitelt „POST /api/_action/p2lab-cache/warmup/start“Erkennt cachefähige URLs und dispatcht den Warmup an die Message Queue.
Body:
{ "salesChannelId": null, "batchSize": 50 }salesChannelId kann null (alle Channels) oder eine spezifische Channel-ID sein. batchSize ist standardmäßig 50.
Antwort:
{ "success": true, "progressId": "01HXY...ABC", "totalUrls": 1842 }GET /api/_action/p2lab-cache/warmup/progress?progressId=<id>
Abschnitt betitelt „GET /api/_action/p2lab-cache/warmup/progress?progressId=<id>“Status eines Warmups pollen. Wenn progressId weggelassen wird, wird der jüngste Warmup zurückgegeben.
Antwort:
{ "success": true, "progress": { "id": "01HXY...ABC", "total_urls": 1842, "processed_urls": 920, "failed_urls": 3, "remaining_urls": 922, "checked_urls": 920, "percentage": 49.95, "status": "running" }, "cacheStats": { /* gleiche Form wie /stats */ }}POST /api/_action/p2lab-cache/warmup/pause
Abschnitt betitelt „POST /api/_action/p2lab-cache/warmup/pause“Laufenden Warmup pausieren. Body: { "progressId": "..." }.
POST /api/_action/p2lab-cache/warmup/resume
Abschnitt betitelt „POST /api/_action/p2lab-cache/warmup/resume“Pausierten Warmup fortsetzen. Body: { "progressId": "..." }.
POST /api/_action/p2lab-cache/warmup/cancel
Abschnitt betitelt „POST /api/_action/p2lab-cache/warmup/cancel“Laufenden oder pausierten Warmup abbrechen. Body: { "progressId": "..." }.
Reverse-Proxy-Statistiken
Abschnitt betitelt „Reverse-Proxy-Statistiken“GET /api/_action/p2lab-cache/reverse-proxy-stats
Abschnitt betitelt „GET /api/_action/p2lab-cache/reverse-proxy-stats“Gibt den 24-Stunden-Überblick, die stündliche Aufschlüsselung und die Top-20-Tags zurück.
Antwort:
{ "overview": { "totalPurges": 312, "distinctUrls": 220, "distinctTags": 95, "avgResponseTime": 0.012 }, "hourly": [ { "hour": "2026-05-20T13:00:00Z", "purges": 14 }, ... ], "topTags": [ { "tag": "product-...", "count": 22 }, ... ]}GET /api/_action/p2lab-cache/reverse-proxy-stats/recent?limit=10&offset=0
Abschnitt betitelt „GET /api/_action/p2lab-cache/reverse-proxy-stats/recent?limit=10&offset=0“Gibt die jüngsten Purges paginiert zurück.
POST /api/_action/p2lab-cache/reverse-proxy-stats/clear
Abschnitt betitelt „POST /api/_action/p2lab-cache/reverse-proxy-stats/clear“Truncated das Reverse-Proxy-Log.
Reverse-Proxy-Log-Queries
Abschnitt betitelt „Reverse-Proxy-Log-Queries“GET /api/_action/p2lab-cache/reverse-proxy-log/urls?limit=100
Abschnitt betitelt „GET /api/_action/p2lab-cache/reverse-proxy-log/urls?limit=100“Gibt eindeutige URLs zurück, die gepurged wurden.
GET /api/_action/p2lab-cache/reverse-proxy-log/url-flow?url=<url>&limit=100
Abschnitt betitelt „GET /api/_action/p2lab-cache/reverse-proxy-log/url-flow?url=<url>&limit=100“Gibt die chronologische Purge-Timeline für eine einzelne URL zurück.
GET /api/_action/p2lab-cache/reverse-proxy-log/entity-timeline?entityType=<type>&entityId=<id>&limit=50
Abschnitt betitelt „GET /api/_action/p2lab-cache/reverse-proxy-log/entity-timeline?entityType=<type>&entityId=<id>&limit=50“Gibt jeden xkey-Purge zurück, den eine bestimmte Entität ausgelöst hat. entityType muss einer der erlaubten Typen sein (product, category, cms_page, …). Für Produkte können Sie entityNumber=<sku> statt entityId übergeben.
Invalidierungslog
Abschnitt betitelt „Invalidierungslog“POST /api/_action/p2lab-cache/invalidation-log/clear
Abschnitt betitelt „POST /api/_action/p2lab-cache/invalidation-log/clear“Truncated das Invalidierungslog.
Authentifizierung & Fehler
Abschnitt betitelt „Authentifizierung & Fehler“- Alle Endpoints geben
401zurück, wenn das Bearer-Token fehlt / ungültig ist. - Endpoints, die einen Body erwarten, geben bei Validierungsfehlern
400mit{ "success": false, "message": "..." }zurück. - Endpoints, die im jüngsten Warmup nicht gefunden werden, geben
null-Progress mit200zurück, nicht404.