Endpointy API
Mediaverse v2 wystawia niewielką liczbę adminowych endpointów HTTP, używanych głównie przez UI admina do zapobiegania przypadkowemu usunięciu mediów, które są w użyciu.
Wszystkie endpointy wymagają prawidłowej sesji admina (cookie albo tokenu Authorization: Bearer … z /api/oauth/token).
Wykrywanie użycia mediów
Dział zatytułowany „Wykrywanie użycia mediów”| Metoda | Ścieżka | Cel |
|---|---|---|
| GET | /api/p2lab-product-video/get-media-in-products-usage/{mediaId} | Zwraca listę produktów, które używają danego medium jako wideo. |
| GET | /api/p2lab-product-video/get-media-in-cms-usage/{mediaId} | Zwraca listę stron CMS / bloków, które używają danego medium. |
Oba zwracają 200 OK z body JSON wymieniającym konsumentów albo pustą tablicę, jeśli medium nie jest używane.
Niestandardowe pola na product_media
Dział zatytułowany „Niestandardowe pola na product_media”v2 nie rejestruje XML dla niestandardowych pól — ustawienia per wpis medium są przechowywane jako JSON w istniejącej kolumnie product_media.custom_fields. Kształt jest mniej więcej taki:
{ "p2labProductVideo": { "url": "https://...", "source": "youtube | vimeo | facebook | dailymotion | tiktok", "mediaId": "uuid", "videoSources": ["uuid-360p", "uuid-720p", "uuid-1080p"], "translation": { "de-DE": "uuid-of-german-media" }, "translationSources": { "de-DE": ["uuid-360p", "uuid-720p"] } }}Przechowywane pole to source (rozpoznany dostawca). type (embed vs media) jest wyliczany w runtime na podstawie obecności url (embed) lub mediaId (media) — nie jest persystowany w JSON.
Automatycznie wykrywane źródła są ograniczone do YouTube, Vimeo, Facebook, Dailymotion i TikTok. Gcore jest do wyboru w konfiguracji systemowej, ale nie jest auto-rozpoznawane z wklejonego URL — trzeba je wybrać jawnie.
Ten JSON jest źródłem prawdy dla zachowania per wideo. Ustawienia z system-config definiują tylko wartości domyślne.
Config slotu CMS
Dział zatytułowany „Config slotu CMS”Dla bloku CMS Mediaverse (p2lab-cms-video) konfiguracja jest przechowywana w cms_slot.config (JSON) z podobnym kształtem. Każdy slot CMS ma własny config — nie współdzielą stanu między stronami.
Format błędu
Dział zatytułowany „Format błędu”Wszystkie odpowiedzi błędów stosują standardowy format admin Shopware:
{ "errors": [ { "code": "...", "detail": "Human-readable error", "status": "400" } ]}