Inhalte — API und MCP
Überblick
Dieser Bereich stellt 25 Operationen bereit. Jede davon ist zugleich ein MCP-Werkzeug.
Der Bereich hängt am Modul-Schalter module.content. Ist das Modul aus, antworten diese Operationen mit 404.
Operationen
| Methode | Pfad | Zweck | Recht | Parameter |
|---|---|---|---|---|
GET | /api/v1/content/adapters | Verfügbare Ausspiel-Ziele — Die Adapter, die diese Installation bereitstellt — abhängig davon, welche Plugins aktiv sind. | content.item.view | — |
POST | /api/v1/content/ai | KI-Vorschlag für einen Beitrag — Erzeugt einen Feld-Entwurf (draft), eine SERIE zusammenhängender Entwürfe (series, 2–30), Suchmaschinen-Angaben (seo) oder ein Bild (image, landet in der Dateiablage). Ohne aktive KI kommt eine leere Antwort mit aiUsed=false — kein Fehler. Marken-Schnitt: seo verlangt das Schreibrecht content.item.manage in der Marke des BEITRAGS (content.brand.all hebt die Marken-Bindung auf, ersetzt das Recht aber nie) — ein fremder Beitrag ist nicht auffindbar (404), ein brandId im Rumpf wird dabei ignoriert; draft, series und image verlangen dasselbe Recht in der angegebenen brandId (sonst 403), deren Instruktion, Budget und Ablage gelten. | content.item.manage | + Rumpf |
GET | /api/v1/content/channels | Liste der ContentChannel | content.item.view | page |
POST | /api/v1/content/channels | Eine ContentChannel anlegen | content.channel.manage | + Rumpf |
DELETE | /api/v1/content/channels/{ulid} | Eine ContentChannel löschen | content.channel.manage | ulid |
GET | /api/v1/content/channels/{ulid} | Eine ContentChannel lesen | content.item.view · Objektregel content.view | ulid |
PATCH | /api/v1/content/channels/{ulid} | Eine ContentChannel ändern | content.channel.manage | ulid, + Rumpf |
GET | /api/v1/content/items | Liste der ContentItem | content.item.view | page, type, status, locale, category, q, publicationState, order[plannedPublishAt], order[publishedAt], order[createdAt] |
POST | /api/v1/content/items | Eine ContentItem anlegen | content.item.manage | + Rumpf |
POST | /api/v1/content/items/bulk | Serie anlegen — Legt mehrere Beiträge desselben Typs in einem Zug an — ganz oder gar nicht. Bricht ein Eintrag, ist keiner angelegt. | content.item.manage | + Rumpf |
DELETE | /api/v1/content/items/{ulid} | Eine ContentItem löschen | content.item.manage | ulid |
GET | /api/v1/content/items/{ulid} | Eine ContentItem lesen | content.item.view · Objektregel content.view | ulid |
PATCH | /api/v1/content/items/{ulid} | Eine ContentItem ändern | content.item.manage | ulid, + Rumpf |
POST | /api/v1/content/items/{ulid}/archive | Archivieren — Nimmt den Beitrag aus dem Arbeitsvorrat, ohne ihn zu löschen. | content.item.manage | ulid, + Rumpf |
POST | /api/v1/content/items/{ulid}/publish | Sofort veröffentlichen — Veröffentlicht den Beitrag jetzt und spielt ihn an alle passenden Ziele aus. Ein Ziel, das ausfällt, hält die anderen nicht auf — der Beitrag ist danach veröffentlicht, das betroffene Ziel trägt seinen Fehler selbst. Der Aufruf RESERVIERT den Beitrag per bedingtem UPDATE: von zwei gleichzeitigen Aufrufen spielt genau einer aus, der zweite antwortet 409 errors.content.publishInProgress — sonst stünde derselbe Beitrag zweimal beim Netzwerk, der zweite ohne Spur im System. | content.item.publish | ulid, + Rumpf |
POST | /api/v1/content/items/{ulid}/schedule | Terminieren — Setzt den Beitrag auf scheduled. Verlangt einen geplanten Zeitpunkt — ohne ihn greift der Zeitplan den Beitrag nie auf. | content.item.publish | ulid, + Rumpf |
POST | /api/v1/content/items/{ulid}/submit | Zur Prüfung geben — Setzt den Beitrag auf review. Er bleibt änderbar; die Prüfung ist ein Zustand, kein Schloss. | content.item.manage | ulid, + Rumpf |
POST | /api/v1/content/items/{ulid}/unpublish | Zurückziehen — Nimmt den Beitrag an allen Zielen zurück und setzt ihn auf draft. Der Veröffentlichungs-Zeitpunkt bleibt stehen — er sagt, wann der Beitrag erstmals draußen war. Je Ziel läuft die Rücknahme genau einmal (bedingtes UPDATE auf die Publikations-Zeile): ein zweiter gleichzeitiger Aufruf startet beim Fremdsystem keinen zweiten Vorgang. | content.item.publish | ulid, + Rumpf |
GET | /api/v1/content/overview | Übersicht „Inhalte" — Funktionsstand (Ziele, KI, Inhaltstypen) und die Zahlen, die eine Handlung auslösen — inklusive fehlgeschlagener Veröffentlichungen mit Fehlertext. | content.item.view | — |
POST | /api/v1/content/publications/report | Veröffentlichung melden — Schreibt die Kennung zurück, die ein Zielsystem für einen Beitrag vergeben hat. Ohne sie legt der nächste Zug dort einen zweiten Beitrag an. | content.item.publish | + Rumpf |
GET | /api/v1/content/types | Liste der ContentType | content.item.view | page |
POST | /api/v1/content/types | Eine ContentType anlegen | content.type.manage | + Rumpf |
DELETE | /api/v1/content/types/{ulid} | Eine ContentType löschen | content.type.manage | ulid |
GET | /api/v1/content/types/{ulid} | Eine ContentType lesen | content.item.view | ulid |
PATCH | /api/v1/content/types/{ulid} | Eine ContentType ändern | content.type.manage | ulid, + Rumpf |
Zweckangaben, die nicht dem Standardmuster folgen, stammen unverändert aus der Schnittstellen-Beschreibung im Code.