REST API
Wszystkie endpointy żyją pod /api/_action/p2lab-cache/... i wymagają ważnego tokenu admin API (tego samego, którego używasz do innych endpointów admin Shopware). Przekaż go jako Authorization: Bearer <token>.
Statystyki
Dział zatytułowany „Statystyki”GET /api/_action/p2lab-cache/stats
Dział zatytułowany „GET /api/_action/p2lab-cache/stats”Zwraca podsumowanie dashboardu — total files / size, liczby per typ, agregowane statystyki i szczegółowe statystyki per typ.
Odpowiedź (fragment):
{ "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 } }}Czyszczenie
Dział zatytułowany „Czyszczenie”POST /api/_action/p2lab-cache/clear
Dział zatytułowany „POST /api/_action/p2lab-cache/clear”Purguje każdy cache’owany wpis. Bez body.
Odpowiedź:
{ "success": true, "filesDeleted": 1842 }POST /api/_action/p2lab-cache/clear-by-type
Dział zatytułowany „POST /api/_action/p2lab-cache/clear-by-type”Purguje każdy wpis pojedynczego typu.
Body:
{ "type": "products" }type musi być jednym z products, categories, cms, listings, buybox.
Odpowiedź:
{ "success": true, "filesDeleted": 1200, "type": "products" }POST /api/_action/p2lab-cache/warmup/start
Dział zatytułowany „POST /api/_action/p2lab-cache/warmup/start”Odkrywa cache’owalne URL-e i dispatchuje warmup do kolejki message.
Body:
{ "salesChannelId": null, "batchSize": 50 }salesChannelId może być null (wszystkie kanały) lub konkretne ID kanału. batchSize domyślnie 50.
Odpowiedź:
{ "success": true, "progressId": "01HXY...ABC", "totalUrls": 1842 }GET /api/_action/p2lab-cache/warmup/progress?progressId=<id>
Dział zatytułowany „GET /api/_action/p2lab-cache/warmup/progress?progressId=<id>”Pollnij status warmupu. Jeśli progressId pominięty, zwracany jest ostatni warmup.
Odpowiedź:
{ "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": { /* ten sam kształt co /stats */ }}POST /api/_action/p2lab-cache/warmup/pause
Dział zatytułowany „POST /api/_action/p2lab-cache/warmup/pause”Pauzuj działający warmup. Body: { "progressId": "..." }.
POST /api/_action/p2lab-cache/warmup/resume
Dział zatytułowany „POST /api/_action/p2lab-cache/warmup/resume”Wznów spauzowany warmup. Body: { "progressId": "..." }.
POST /api/_action/p2lab-cache/warmup/cancel
Dział zatytułowany „POST /api/_action/p2lab-cache/warmup/cancel”Anuluj działający lub spauzowany warmup. Body: { "progressId": "..." }.
Statystyki reverse-proxy
Dział zatytułowany „Statystyki reverse-proxy”GET /api/_action/p2lab-cache/reverse-proxy-stats
Dział zatytułowany „GET /api/_action/p2lab-cache/reverse-proxy-stats”Zwraca 24-godzinny overview, rozbicie godzinowe i top 20 tagów.
Odpowiedź:
{ "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
Dział zatytułowany „GET /api/_action/p2lab-cache/reverse-proxy-stats/recent?limit=10&offset=0”Zwraca ostatnie purgi, paginowane.
POST /api/_action/p2lab-cache/reverse-proxy-stats/clear
Dział zatytułowany „POST /api/_action/p2lab-cache/reverse-proxy-stats/clear”Truncuje log reverse-proxy.
Query log reverse-proxy
Dział zatytułowany „Query log reverse-proxy”GET /api/_action/p2lab-cache/reverse-proxy-log/urls?limit=100
Dział zatytułowany „GET /api/_action/p2lab-cache/reverse-proxy-log/urls?limit=100”Zwraca unikalne URL-e, które były purgowane.
GET /api/_action/p2lab-cache/reverse-proxy-log/url-flow?url=<url>&limit=100
Dział zatytułowany „GET /api/_action/p2lab-cache/reverse-proxy-log/url-flow?url=<url>&limit=100”Zwraca chronologiczny timeline purgów dla pojedynczego URL.
GET /api/_action/p2lab-cache/reverse-proxy-log/entity-timeline?entityType=<type>&entityId=<id>&limit=50
Dział zatytułowany „GET /api/_action/p2lab-cache/reverse-proxy-log/entity-timeline?entityType=<type>&entityId=<id>&limit=50”Zwraca każdy xkey purge, który konkretna encja wywołała. entityType musi być jednym z dozwolonych typów (product, category, cms_page, …). Dla produktów możesz przekazać entityNumber=<sku> zamiast entityId.
Log inwalidacji
Dział zatytułowany „Log inwalidacji”POST /api/_action/p2lab-cache/invalidation-log/clear
Dział zatytułowany „POST /api/_action/p2lab-cache/invalidation-log/clear”Truncuje log inwalidacji.
Uwierzytelnianie i błędy
Dział zatytułowany „Uwierzytelnianie i błędy”- Wszystkie endpointy zwracają
401, jeśli bearer token brakuje / jest nieprawidłowy. - Endpointy oczekujące body zwracają
400przy błędach walidacji z{ "success": false, "message": "..." }. - Endpointy nieznalezione w ostatnim warmupie zwracają
nullprogress z200, nie404.