Blog-Einträge

Blog-Einträge

Die Blog Entries API ermöglicht das Erstellen, Verwalten und Veröffentlichen von Blog-Artikeln.

Endpunkte

MethodeEndpunktBeschreibung
GET/api/v1/blog/entriesAlle Einträge auflisten
POST/api/v1/blog/entriesNeuen Eintrag erstellen
GET/api/v1/blog/entries/{id}Einzelnen Eintrag abrufen
PUT/api/v1/blog/entries/{id}Eintrag aktualisieren
DELETE/api/v1/blog/entries/{id}Eintrag löschen
POST/api/v1/blog/entries/{id}/viewView-Count erhöhen
GET/api/v1/blog/entries/{id}/viewsView-Count abrufen

Das BlogEntry-Objekt

{ "id": "entry_abc123", "projectId": "proj_xyz789", "title": { "de": "10 Tipps für besseres Webdesign", "en": "10 Tips for Better Web Design" }, "slug": "10-tipps-webdesign", "excerpt": { "de": "Entdecken Sie die wichtigsten Prinzipien...", "en": "Discover the key principles..." }, "content": { "de": "<p>Der vollständige Artikelinhalt...</p>", "en": "<p>The full article content...</p>" }, "featuredImage": { "url": "https://cdn.codefluss.com/media/blog/featured.jpg", "alt": "Webdesign Illustration" }, "author": { "id": "user_def456", "name": "Max Mustermann", "avatar": "https://cdn.codefluss.com/avatars/max.jpg" }, "tags": ["webdesign", "tipps", "ux"], "category": "design", "status": "published", "publishedAt": "2026-01-22T09:00:00Z", "scheduledPublishAt": null, "viewCount": 1234, "readingTime": 5, "seo": { "title": "10 Tipps für besseres Webdesign | Blog", "description": "Entdecken Sie die wichtigsten Prinzipien für modernes Webdesign.", "keywords": ["webdesign", "tipps", "ux", "ui"] }, "createdAt": "2026-01-20T14:00:00Z", "updatedAt": "2026-01-22T09:00:00Z" }

Attribute

AttributTypBeschreibung
idstringEindeutige Eintrags-ID
projectIdstringZugehöriges Blog-Projekt
titleobjectTitel (mehrsprachig)
slugstringURL-Slug
excerptobjectKurzbeschreibung (mehrsprachig)
contentobjectVollständiger Inhalt (HTML, mehrsprachig)
featuredImageobjectTitelbild
authorobjectAutor-Informationen
tagsarrayTags für Kategorisierung
categorystringHauptkategorie
statusstringdraft, published, scheduled
publishedAtstringVeröffentlichungszeitpunkt
scheduledPublishAtstringGeplante Veröffentlichung
viewCountintegerAnzahl der Aufrufe
readingTimeintegerGeschätzte Lesezeit (Minuten)
seoobjectSEO-Metadaten
createdAtstringErstellungszeitpunkt
updatedAtstringLetzte Aktualisierung

Einträge auflisten

GET /api/v1/blog/entries

Query-Parameter

ParameterTypDefaultBeschreibung
projectIdstringPflichtBlog-Projekt-ID
statusstringFilter: draft, published, scheduled
categorystringFilter nach Kategorie
tagsstringKomma-separierte Tags
authorstringFilter nach Autor-ID
languagestringSprache für Titel/Excerpt
searchstringSuche in Titel/Inhalt
pageinteger1Seitennummer
pageSizeinteger10Einträge pro Seite
sortBystringpublishedAtpublishedAt, createdAt, viewCount
sortOrderstringdescasc, desc

Beispiel-Request

curl -X GET "https://api.codefluss.com/v1/blog/entries?projectId=proj_xyz789&status=published&pageSize=5" \ -H "Authorization: Bearer cf_live_abc123..."

Beispiel-Response

{ "success": true, "data": [ { "id": "entry_abc123", "title": { "de": "10 Tipps für besseres Webdesign" }, "slug": "10-tipps-webdesign", "excerpt": { "de": "Entdecken Sie die wichtigsten Prinzipien..." }, "featuredImage": { "url": "...", "alt": "..." }, "author": { "name": "Max Mustermann" }, "tags": ["webdesign", "tipps"], "status": "published", "publishedAt": "2026-01-22T09:00:00Z", "viewCount": 1234, "readingTime": 5 } ], "pagination": { "currentPage": 1, "pageSize": 5, "totalItems": 1, "totalPages": 1 } }

Eintrag erstellen

POST /api/v1/blog/entries

Request-Body

{ "projectId": "proj_xyz789", "title": { "de": "Neuer Blogartikel", "en": "New Blog Article" }, "slug": "neuer-blogartikel", "excerpt": { "de": "Eine kurze Zusammenfassung...", "en": "A brief summary..." }, "content": { "de": "<h2>Einleitung</h2><p>Der Artikelinhalt...</p>", "en": "<h2>Introduction</h2><p>The article content...</p>" }, "featuredImage": { "mediaId": "med_abc123" }, "authorId": "user_def456", "tags": ["news", "update"], "category": "news", "status": "draft" }

Pflichtfelder

FeldTypBeschreibung
projectIdstringZiel-Blog-Projekt
titleobjectTitel (min. eine Sprache)
slugstringURL-Slug (eindeutig pro Projekt)

Optionale Felder

FeldTypDefaultBeschreibung
excerptobjectKurzbeschreibung
contentobjectVollständiger Inhalt
featuredImageobjectTitelbild (mediaId)
authorIdstringAPI-UserAutor-ID
tagsarray[]Tags
categorystringKategorie
statusstringdraftStatus
seoobjectSEO-Konfiguration

Eintrag veröffentlichen

Sofortige Veröffentlichung

PUT /api/v1/blog/entries/{id}
{ "status": "published" }

Geplante Veröffentlichung

{ "status": "scheduled", "scheduledPublishAt": "2026-02-01T09:00:00Z" }

Der Cron-Job /api/v1/blog/cron/scheduled-publish veröffentlicht geplante Artikel automatisch.

View-Count erhöhen

POST /api/v1/blog/entries/{id}/view

Dieser Endpunkt erhöht den viewCount um 1. Er sollte beim Laden eines Artikels aufgerufen werden.

Response

{ "success": true, "data": { "viewCount": 1235 } }

View-Count abrufen

GET /api/v1/blog/entries/{id}/views

Response

{ "success": true, "data": { "viewCount": 1235, "lastViewed": "2026-01-23T10:30:00Z" } }

Eintrag löschen

DELETE /api/v1/blog/entries/{id}

Hinweis: Gelöschte Einträge werden unwiderruflich entfernt.

Lesezeit-Berechnung

Die readingTime wird automatisch basierend auf der Wortanzahl berechnet:

  • Durchschnittliche Lesegeschwindigkeit: 200 Wörter/Minute
  • Minimum: 1 Minute
  • Bilder: +10 Sekunden pro Bild

Slug-Validierung

Slugs müssen folgende Regeln erfüllen:

  • Nur Kleinbuchstaben, Zahlen und Bindestriche
  • 3-100 Zeichen
  • Darf nicht mit Bindestrich beginnen oder enden
  • Muss innerhalb des Projekts eindeutig sein

Fehler

CodeBeschreibung
400Ungültige Daten oder Slug-Format
401Nicht authentifiziert
403Keine Berechtigung
404Eintrag nicht gefunden
409Slug bereits vergeben

Nächste Schritte