Zum Hauptinhalt springen

MEC JSON REST API – Gap-Analyse

Basis-URL: https://mec.mall-cockpit.de/wp-json/mallcockpit/v1
Testparameter: ?center_id=975 (Lausitz-Center Hoyerswerda)
Stand: Mai 2026

Diese Seite dokumentiert alle bekannten MEC-API-Endpunkte, ihre Datenstruktur und den Import-Status in CockpitOS.


Vollständige Endpunkt-Übersicht

EndpunktBeschreibungCockpitOS-ModellStatusEmpfehlung
/shopsShop-Stammdaten (Name, Logo, Kategorie, Öffnungszeiten)Shop / ShopLocationimportiert
/center-aktionenCenter-Nachrichten & AktionenNewsimportiert
/servicesCenter-Services (Dienstleistungen)Serviceimportiert
/stellenmarktStellenanzeigen der ShopsJobimportiert
/shop-angeboteShop-Angebote / RabattaktionenOfferimportiert
/shop-eventsShop-Events mit DatumEventimportiert
/informationenCenter-Metadaten (Social, Kontakt, Anfahrt)ShoppingCenter / templateContentimportiert
/sliderHero-Slides (Bilder, Farben, Links)templateContent['mec-template-d'].heroimportiert
/centersAlle MEC-Center-IDs und Hostnamenintern (Center-Auswahl)importiert
/centerzeitungCenter-Zeitungs-Ausgaben (PDF + Vorschaubild)Newsneu implementiertAls News-Eintrag mit tag centerzeitung
/centerplanSVG-Grundriss je StockwerkCenterplan + MapFloorneu implementiertAls MapFloor mit mapSvg
/center-aktionen-aus-der-nachbarschaftNachrichten aus dem Umfeld (Kategorie-Filter)News⚠️ nicht implementiertRedundant: gleiche Struktur wie /center-aktionen, nur mit centeraktion_kategorie: "aus_der_nachbarschaft"
/center-aktionen-archivArchivierte Center-Aktionen (globale DB, ~4000 Einträge)News⚠️ nicht implementiertSehr großer Datensatz; keine Center-Filterung zuverlässig; Import nur auf explizite Anfrage sinnvoll
/shop-aktionenShop-spezifische AktionenOffer oder Eventkeine DatenFür center_id=975 leer; Struktur unbekannt
/shop-couponsShop-CouponsOfferkeine DatenFür center_id=975 leer; würde auf Offer passen
/news_aktionenSuperset aller centeraktion-Einträge (alle Kategorien)Newsnicht implementiertDoppelter Inhalt gegenüber /center-aktionen; Antwort dauert >30 s (5769 Einträge); kein Mehrwert
/news_aktionen/highlightsHighlights-TeilmengeNewskeine sinnvollen DatenGibt [0] zurück (numerisches Array, kein Content)
/realUnbekanntkeine DatenFür center_id=975 leeres Objekt; Zweck unklar
/hotspotUnbekannter Inhaltstypkeine DatenFür center_id=975 leeres Objekt; Zweck unklar
/logoCenter-Logo?ShoppingCenter.logokeine DatenFür center_id=975 leeres Objekt; Logo wird bereits via /informationen (bild_video_1) importiert

Neu implementierte Endpunkte

/centerzeitungNews

Datenstruktur (Beispiel):

{
"id": 58643,
"modified": 1658162528,
"lang": {
"de": {
"titel": "Centerzeitung",
"untertitel": "Ausgabe Juli 2022",
"beschreibung": "<p>Inhalt als HTML...</p>"
}
},
"gueltigkeitszeitraum_von": 1658095200,
"vorschaubild": "https://mec.mall-cockpit.de/wp-content/.../cover.png",
"pdf": "https://mec.mall-cockpit.de/wp-content/.../ausgabe.pdf",
"assigned_center": 1007
}

Mapping zu News:

MEC-FeldCockpitOS-FeldHinweis
lang.de.titel + lang.de.untertiteltitleKombiniert: "Centerzeitung – Ausgabe Juli 2022"
lang.de.beschreibungcontentHTML-Inhalt
stripHtml(beschreibung)excerptMax. 200 Zeichen
gueltigkeitszeitraum_von / modifiedpublishDateUnix-Timestamp × 1000
vorschaubildimageImport nach Bunny CDN
hardcodedtags['centerzeitung']
pdfmetadata.pdfUrlExterne PDF-URL
'mec-import'source

Import aktivieren:

POST /api/import/mec
{ "sourceCenterId": 975, "targetCenterId": "...", "options": { "centerzeitung": true } }

/centerplanCenterplan + MapFloor

Datenstruktur (Beispiel):

[
{
"modified": "1524557067171",
"ebene": "0",
"ebene_kurz": "EG",
"ebene_titel": "EG",
"versions": "single",
"svg": "https://mec.mall-cockpit.de/wp-content/.../dnd-eg_2023-1.svg"
}
]

Mapping:

MEC-FeldCockpitOS-FeldHinweis
ebene (as int)MapFloor.floorNumberz.B. 0 = EG, 1 = OG1, -1 = UG1
ebene_titel / ebene_kurzMapFloor.name
svg (URL)MapFloor.mapImageDirekte SVG-URL als Fallback-Bild
SVG-Textinhalt (via fetch)MapFloor.mapSvg@db.Text; leer wenn Fetch fehlschlägt
floorNumber === 0MapFloor.isDefaultEG ist Standard-Ebene

Verhalten:

  • Erstellt Centerplan für das Center falls noch nicht vorhanden
  • Überspringt Ebenen die für (centerId, floorNumber) bereits existieren (Idempotenz)
  • SVG-Inhalt wird via HTTP-Fetch aus MEC geladen und in mapSvg gespeichert
  • Fehler beim SVG-Fetch sind nicht blockierend (Eintrag wird trotzdem angelegt)

Import aktivieren:

POST /api/import/mec
{ "sourceCenterId": 975, "targetCenterId": "...", "options": { "centerplan": true } }

Nicht implementierte Endpunkte – Begründung

/center-aktionen-aus-der-nachbarschaft

Identische Datenstruktur wie /center-aktionen (gleiches lang-Schema, gleiche Felder). Unterschied: centeraktion_kategorie: "aus_der_nachbarschaft". Bei Center 975 liefert der Endpunkt nur 1 Eintrag. Da /center-aktionen bereits importiert wird, würde eine separate Implementierung zu Duplikaten führen. Empfehlung: Beim /center-aktionen-Import den centeraktion_kategorie-Wert als Tag mitübergeben, wenn eine Differenzierung gewünscht ist.

/center-aktionen-archiv

Liefert ~4000 Einträge aus allen Centern (Antwortzeit: ~25 Sekunden). Struktur identisch mit /center-aktionen. Enthält ältere, archivierte Meldungen. Empfehlung: Nur auf explizite Anfrage und mit Bulk-Import-Logik (paginiert, Center-gefiltert) implementieren.

/shop-aktionen und /shop-coupons

Für center_id=975 liefern beide Endpunkte {"nothing_found": [...]}. Strukturell würden sie auf Offer passen. Empfehlung: Implementierung erst wenn ein Center mit Daten identifiziert ist; /shop-angebote deckt den Angebots-Use-Case bereits ab.

/news_aktionen

Superset aller centeraktion-Einträge über alle Center hinweg (~5769 Einträge, >30 s Ladezeit). Gleiche Struktur wie /center-aktionen. Kein Mehrwert, da alle relevanten Einträge über /center-aktionen mit center_id-Filter bereits abgedeckt sind.

Liefern für center_id=975 leere Objekte ({}). Zweck unklar; keine sinnvollen Daten verfügbar.


API-Client-Typen

Die TypeScript-Interfaces befinden sich in apps/dashboard/src/lib/mec-api-client.ts:

  • MecCenterzeitung / MecCenterzeitungLang – Centerzeitung-Einträge
  • MecCenterplanFloor – Centerplan-Ebenen

Fetch-Funktionen:

  • getMecCenterzeitung(centerId?)Promise<MecCenterzeitung[]>
  • getMecCenterplan(centerId)Promise<MecCenterplanFloor[]>

Verwandte Dokumente

Nutzungsstatistik: Seitenaufrufe werden anonymisiert erfasst. Im Umami-Dashboard nach diesem Pfad filtern: /developer-guide/mec-api-gap-analyse