Endpoint und Auth

Feld Status Hinweis Beispiel
Methode Pflicht POST "POST"
Pfad Pflicht /api/media-ingest "/api/media-ingest"
Header X-API-Key Pflicht Muss API_INGEST_KEY entsprechen "dpp-live-7f8a9b2c"
Header Authorization: Bearer <key> Optional Fallback, falls X-API-Key fehlt "Bearer dpp-live-7f8a9b2c"
Header Content-Type Pflicht multipart/form-data "multipart/form-data; boundary=---123"

Multipart-Body

Feld Status Hinweis Beispiel
file Pflicht Datei-Upload. Muss erfolgreich mit UPLOAD_ERR_OK ankommen (Binäre Bilddaten)
media_type Pflicht img oder vid; muss zur Dateiart passen "img"
content_type Pflicht Erlaubt: wissen, blog, whitepaper, produkte, anwendungen, branchen "produkte"
category_path Pflicht Slash-String oder JSON-Array, maximal 3 Ebenen "smart-labels/rfid"
content_slug Pflicht Kanonischer Slug des zugehoerigen Content-Pieces "uhf-rfid-smart-label"

Vollstaendige Content-Beispiele mit passenden Media-Uploads stehen unter Content Payload Examples; der Content-Vertrag steht in der Content Ingest API.

curl -X POST https://example.com/api/media-ingest \
  -H "X-API-Key: <API_INGEST_KEY>" \
  -F "file=@hero.jpg" \
  -F "media_type=img" \
  -F "content_type=wissen" \
  -F "category_path=compliance/espr" \
  -F "content_slug=espr-grundlagen"

Mapping zum Content-Payload

Content-Ingest Feld Media-Ingest Feld Beispiel
content_type content_type wissen
category_path category_path compliance/espr oder ["compliance","espr"]
content_slug content_slug espr-grundlagen

Erlaubte Medien

Medienart media_type Extensions MIME-Types Maximalgroesse Beispiel
Bilder img jpg, jpeg, png, webp, gif image/jpeg, image/png, image/webp, image/gif 10 MB hero.jpg
Videos vid mp4, webm video/mp4, video/webm 50 MB demo.mp4

Die API prueft MIME-Type per finfo und Dateiendung. Beide muessen zur jeweiligen Medienart passen; die Original-Extension wird nicht in ein anderes Bildformat konvertiert.

Dateinamen und Zielpfade

Schritt Verhalten Beispiel
Basisname Dateiname wird kleingeschrieben RFID_Label.JPGrfid_label.jpg
Sanitizing Alles ausser a-z, 0-9 und Bindestrich wird zu - rfid_label.jpgrfid-label.jpg
Leerer Name Fallback media-{timestamp} ---.pngmedia-1704067200.png
Extension Originale Extension in Kleinbuchstaben .JPEG.jpeg
Kollisionen Bestehende Dateien werden nicht ueberschrieben; es wird -1, -2, ... angehaengt rfid-label.jpgrfid-label-1.jpg
Rechte Gespeicherte Datei wird auf 0644 gesetzt -rw-r--r--
Medienart Dateisystem Response-URL Beispiel
Bild content/wissen/compliance/espr/espr-grundlagen/img/{filename} /content/wissen/compliance/espr/espr-grundlagen/img/{filename} /content/.../img/rfid.jpg
Video content/anwendungen/digitaler-produktpass/usecase-1/vid/{filename} /content/anwendungen/digitaler-produktpass/usecase-1/vid/{filename} /content/.../vid/demo.mp4

Erfolgsantwort

{
  "success": true,
  "message": "Media file uploaded successfully.",
  "url": "/content/wissen/compliance/espr/espr-grundlagen/img/hero.jpg",
  "path": "wissen/compliance/espr/espr-grundlagen/img/hero.jpg",
  "filename": "hero.jpg",
  "mime": "image/jpeg",
  "size": 123456,
  "media_type": "img",
  "content_type": "wissen",
  "category_path": ["compliance", "espr"],
  "content_slug": "espr-grundlagen"
}

Abgelehnte Legacy-Felder

Feld Status Hinweis Beispiel
taxonomy_type Abgelehnt Verwende content_type "wissen"
slug Abgelehnt Verwende content_slug "my-slug"
type Abgelehnt Verwende media_type "img"

Fehlerantworten

Status Ausloeser Antwort Beispiel-Szenario
405 Methode ist nicht POST {"success": false, "error": "Method not allowed. Use POST."} GET Request gesendet
401 Fehlender/ungueltiger API-Key {"success": false, "error": "Missing or invalid API key. Use X-API-Key header."} Falscher Key "12345"
400 Kein gueltiger Upload in file {"success": false, "error": "File upload error. Code: ..."} PHP upload_max_filesize ueberschritten
422 Legacy-Feld vorhanden Enthaelt legacy_fields Payload enthaelt "taxonomy_type"
422 Strukturfeld fehlt Enthaelt missing_fields Feld "media_type" vergessen
422 content_type ist ungueltig Enthaelt allowed_types "magazin" statt "blog" uebergeben
422 category_path ist leer, ungueltig oder tiefer als 3 Ebenen Enthaelt details Path ist 4 Ebenen tief
422 content_slug ist leer oder ungueltig Statische Fehlermeldung Slug enthaelt Leerzeichen
415 MIME-Type oder Extension nicht erlaubt bzw. mismatch Enthaelt mime und ext .exe hochgeladen oder .jpg mit GIF-Inhalt
413 Bild groesser als 10 MB {"success": false, "error": "Image exceeds 10MB limit."} 15MB TIFF Bild
413 Video groesser als 50 MB {"success": false, "error": "Video exceeds 50MB limit."} 200MB 4K Video
500 Datei konnte nicht gespeichert werden {"success": false, "error": "Failed to save the file to disk."} Berechtigungsproblem im /content/ Ordner

Verwendung in Content-JSONs

Die url aus der Erfolgsantwort ist fuer Media-Felder in Content-JSONs gedacht. Lokale Bildfelder werden als Fallback auf eine eindeutig vorhandene gleichnamige Datei mit anderer Bildendung normalisiert.

{
  "content": {
    "media": {
      "heroimage": "/content/wissen/compliance/espr/espr-grundlagen/img/hero.jpg",
      "alt": "Beschreibung des Hero-Bildes"
    }
  }
}