PEIQ Knowledge Base
[0-24] PEIQ PRINT API - Articles
Transportverfahren | Übertragung per Restful API (https) |
|---|---|
Objekt | PRINT NGEN Artikel |
Trigger | Request durch Drittsystem |
Typische Drittsysteme | Typische Anbindungen sind Drittsysteme zur Content-Erstellung für Online |
Beispieldaten | siehe unten |
Hier sind die Endpunkte der PRINT API beschrieben, mit denen Artikel angelegt, gesucht, abgerufen und geändert werden können. Der aktuelle Funktionsumfang kann über folgenden Link eingesehen werden: https://mt-master-create.peiq.cloud/printapi/ui/index.html.
Insbesondere bei Updates ist es wichtig, dass das Absetzen von Requests sequenziell erfolgt. Erst nach Erhalt der Response darf erneut ein Request zum selben Element (z.B. Artikel, Bild) geschickt werden. Andernfalls kann es in PRINT NGEN zu Fehlern an den betroffenen Elementen führen.
Inhaltsverzeichnis
Funktionalitäten der Articles-Endpunkte der PRINT API
Anlegen von Artikeln
Updaten von Artikeln
Abrufen der Metadaten von Artikeln
Abrufen der Metadaten einer Liste von Artikeln
Suche nach bestimmten Artikeln
Preview von gespeicherten Artikeln
Preview von gerenderten Artikeln
Anlegen eines Artikels: POST /articles/json
Über den Endpunkt “POST /articles/json” können in PRINT NGEN Printartikel angelegt werden. Dazu muss der Artikel im Body als gültiges JSON übergeben werden.
Die Struktur des JSONs ist im Swagger dokumentiert und entspricht der JSON-Struktur der Livingdocs API (siehe dazu https://peiq.atlassian.net/wiki/spaces/PPSD/pages/925040948/0-17+INBOUND+Schnittstelle+zu+Livingdocs+API+Artikel+mit+Bilder#Artikel-JSON). Bei der PRINT API werden die Inhalte des Artikels jedoch unter “articlecontent“ übertragen anstatt unter “livingdocs”. Ein Beispiel-JSON ist unten aufgeführt.
Über das Feld “publications” wird gesteuert, ob in PRINT NGEN ein oder mehrere Printartikel für verschiedene Ausgaben erstellt werden. Die aus einem Artikel-Dokument erstellten Artikel haben in PRINT NGEN alle die gleiche externe ID (Eigenschaft “DExterneID”).
Beim Import läuft ein XSLT-Stylesheet, das die übergebenen Artikelinhalte unter “articlecontent“ in die entsprechenden Bereiche und Tags umwandelt (siehe dazu https://peiq.atlassian.net/wiki/spaces/PPSD/pages/1164935187).
Die CID des neu erstellten Artikels wird in der API-Response im Feld “created” zurückgegeben. Wurden mehrere Artikel erstellt, werden die CIDs kommasepariert angegeben. Wurde ein Artikel mit Infobox-Artikel erstellt, wird nur die CID des Hauptartikels zurückgegeben. Das Feld „publications“ enthält detaillierte Informationen zu den Artikeln. Hier kann z. B. die NGEN-CID des erstellten Artikels der Ausgabe zuordnen, die beim POST /articles/json Request übertragen wurde.
{
"created": [
"1-987654323"
],
"updated": [],
"publications": [
{
"value": "ta-ma",
"saved": "done",
"article": "1-987654323"
}
]
}Wichtig ist, dass beim Absetzen des POST /articles/json abgewartet wird, bis die Response zurückgekommen ist, bevor zum selben Artikel (Artikel mit dieser externen ID) erneut der POST /articles/json Request abgesetzt wird.
Die erstellten Artikel können unter folgender Namenskonvention (“DTextName”) gefunden werden:
Artikelname des Hauptartikels: “printapi-{Externe-ID}” (z. B. “printapi-123456”)
Artikelname des Infoboxartikels: “printapi-{Externe-ID}_infobox{Nummer}” (z. B. “printapi-123456_infobox1”)
Optional kann die Zusammensetzung des Artikelnamens kund:innenspezifisch an das angebundene System angepasst werden, z. B. “cue-123456”. Hierbei gilt folgende Namenskonvention:
bei Hauptartikeln: “{Name Drittsystem}-{Externe-ID}”
bei Infoboxen: “{Name Drittsystem}-{Externe-ID}_infobox({Nummer bei mehr als einem Infobox-Artikel})”
Es dürfen keine parallelen POST-Requests für dieselbe externe “documentId” abgesetzt werden. Requests für dieselbe “documentId” sollten immer sequentiell abgesetzt werden.
Über die PRINT API nach NGEN übertragene Artikel können in NGEN über den Button “Ext. Editor” gefunden werden. Am Button ist eine Suche nach Artikeln mit DTextName=”printapi-*” und dem ET>= morgen hinterlegt.
Interne Bilder
Existiert das Originalbild, das für einen Artikel verwendet werden soll, bereits im PEIQ DAM, so kann dieses über die CID in folgendem Feld angegeben werden:
"component": "image","content": {"ngen_id": ""}
Beim Erstellen des Artikels wird eine Bild-Produktionskopie erstellt. Diese übernimmt alle Eigenschaften des Originalbildes.
Im Image-Component können optional weitere Bildinformationen, wie beispielsweise eine Bildunterschrift oder ein Bildausschnitt, übergeben werden, die nur für die Bild-Produktionskopie dieses Artikels vorgesehen sind. Diese Eigenschaften werden an der Bild-Produktionskopie gesetzt. Das Originalbild bleibt unverändert. BildUrsprung und DBildArchivID können nicht via JSON für die Produktionskopie verändert werden. Diese beiden Eigenschaft werden immer vom Originalbild übernommen.
Wird keines der Felder "caption", "source" oder "labelSource" übergeben oder mit dem Wert null, wird die Bildunterschrift inkl. Bildquelle vom Originalbild übernommen. Wird mindestens eines der drei Felder übergeben, wird die Bildunterschrift inkl. Bildquelle gemäß der übergebenen Werte für das Produktionsbild neu generiert.
Wenn beispielsweise nur die Bildunterschrift verändert und die Bildquelle aus dem Originalbild übernommen werden soll, müssen alle drei Felder übergeben werden mit "caption": "<neuer BU-Text>", "source": "<Wert vom Originalbild>", "labelSource": "<Wert vom Originalbild". Die Werte des Originalbildes können über den Endpunkt GET /images/{id} der DAM API abgerufen werden.
Wird nur das Feld "caption" übergeben, wird nur eine Bildunterschrift ohne Bildquelle generiert.
Sollen weder Bildunterschrift noch Bildquelle für die Produktionskopie übernommen werden, muss mind. eines der drei Felder mit leerem Wert, z.B. "caption": "", übergeben werden, damit das Leersetzen der Bildunterschrift für die Produktionskopie angestoßen wird.
Wenn die im Artikel-JSON angegebene Bild-CID nicht im System existiert oder nicht zu einem Bild gehört, wird der Artikel ohne Bild angelegt.
Für den Image-Component kann entweder die URL eines externen Bildes unter "component": "image","content": "image": {"originalUrl": ""} oder ein internes Bild via CID "component": "image","content": {"ngen_id": ""} übertragen werden - nicht beides gleichzeitig.
Inhaltliche Fehler
Bei inhaltlichen / syntaktischen Fehlern im Artikel-JSON, ist das XML nicht gültig und kann damit nicht verarbeitet werden. Das XSLT zum Umwandeln der Bereiche und Tags kann nicht ablaufen und der Artikel kann somit nicht angelegt werden. In der API wird der Fehlercode “400” zurück geliefert. In der API-Response steht die Ursache, weshalb der Import fehlgeschlagen ist, z. B.:
Fehler bei der Verarbeitung des Inhalts: Fehler beim Ausführen des Xslt:'„' is an unexpected token. The expected token is '"' or '''. Line 1, position 1496.
Beispiel-JSON
{
"systemdata": {
"documentId": 123
},
"metadata": {
"publication": [
{
"object": "ta",
"value": "ta-ma",
"category": "kul",
"subcategory": "",
"date": "2025-10-15",
"printContentType": "Aufmacher",
"printContentSubtype": "Sonderthema",
"pageIndex": 1,
"collective": "Sonderthema1",
"partPageName": "",
"status": "Erfassung",
"plannedSize": "M",
"authorPosition": [
"AutorBereich",
"EMailBereich",
"AutorAnfang"
]
},
{
"object": "ta",
"value": "ta-mue",
"category": "kul",
"subcategory": "",
"date": "2025-10-15",
"printContentType": "Aufmacher",
"printContentSubtype": "Interview",
"pageIndex": 1,
"collective": "",
"partPageName": "Teilseite1",
"status": "Fertig",
"plannedSize": "",
"authorPosition": [
"AutorBereich",
"EMailAnfang",
"EMailBereich"
]
},
{
"object": "ta",
"value": "ta-ffb",
"category": "leb",
"subcategory": "",
"date": "2025-10-15",
"printContentType": "Randspalter",
"printContentSubtype": "Beispiel",
"pageIndex": 1,
"collective": "",
"partPageName": "",
"status": "Fertig",
"plannedSize": "",
"authorPosition": [
"AutorAnfang",
"OhneEMail"
]
}
]
},
"articlecontent": {
"content": [
{
"component": "head",
"content": {
"catchline": "Eine Dachzeile <strong>mit Bold</strong> <em>und Kursiv</em>, <sup>mit Hochgestellt</sup> <sub>und Tiefgestellt</sub>, <neuesTag>Inhalt neues Tag</neuesTag> <?proInstr?> und Makro<?_proInstr?>, Tag und Makro ohne Inhalt <ohneInhalt/> <?ohneInhalt_?>",
"title": "Ein Titel <br> <strong>mit Bold</strong> <em>und Kursiv</em>, <sup>mit Hochgestellt</sup> <sub>und Tiefgestellt</sub>, <neuesTag>Inhalt neues Tag</neuesTag>",
"lead": "Eine Unterzeile <strong>mit Bold</strong> <em>und Kursiv</em>, <sup>mit Hochgestellt</sup> <sub>und Tiefgestellt</sub>, <neuesTag>Inhalt neues Tag</neuesTag>",
"author": "Hans Mustermann",
"authorShortnames": "HM",
"authorEMail": "hans.mustermann@peiq.de",
"authorImages": [
"hans.mustermann"
],
"city": "München"
}
},
{
"component": "lead-p",
"content": {
"opener": "München.",
"text": "Inhalt des Vorspanns <strong>mit Bold</strong> <em>und Kursiv</em>, <sup>mit Hochgestellt</sup> <sub>und Tiefgestellt</sub>, <neuesTag>Inhalt neues Tag</neuesTag> <?proInstr?>und Makro<?_proInstr?>, Tag und Makro ohne Inhalt <ohneInhalt/> <?ohneInhalt_?>."
}
},
{
"component": "p",
"content": {
"text": "<Initial/>Der erste Satz im ersten Absatz. Dieser Absatz enthält Tags, die in entsprechende NGEN Tags umgewandelt werden. <br> Inhalt des Textes <strong>mit Text in Bold</strong> <em>und Kursiv</em>, <sup>mit Hochgestellt</sup> <sub>und Tiefgestellt</sub> im Absatz. <?ZP?> Text in der nächsten Zeile."
}
},
{
"component": "subtitle",
"content": {
"title": "Zwischentitel"
}
},
{
"component": "quote",
"content": {
"text": "Das ist ein Zitat.",
"source": "Zitat Autor"
}
},
{
"component": "question",
"content": {
"text": "Frage Inhalt."
}
},
{
"component": "answer",
"content": {
"text": "Antwort Inhalt."
}
},
{
"component": "list",
"content": {
"title": "List Title"
},
"containers": {
"list": [
{
"component": "list-item",
"content": {
"text": "Item 1"
}
},
{
"component": "list-item",
"content": {
"text": "Item 2"
}
}
]
}
},
{
"component": "image",
"content": {
"caption": "Das ist die BU des externen, dynamisch-schwimmenden Bildes",
"source": "Bildquelle",
"labelSource": "Quellverweis",
"layoutType": "SchwimmendAnPosition",
"type": "",
"image": {
"originalUrl": "https://media04.peiq.de/event/2024/07/26/7/5177_XXL.jpg?1721984769",
"url": "https://media04.peiq.de/event/2024/07/26/7/5177_XXL.jpg?1721984769?rect=0%2C20%2C1200%2C675&auto=format",
"keepCrop": "Weissraum",
"crop": {
"x": 2000,
"y": 2000,
"width": 7000,
"height": 5000
},
"origins": [
{
"name": "archiv A",
"identifier": "abc-123"
}
]
}
}
},
{
"component": "p",
"content": {
"text": "Maskierung von Sonderzeichen: Eine Liste mit A & B. " In Anführungszeichen. " ' In einfachen Anführungszeichen. ' Spitze Klammern müssen maskiert werden, wenn diese Teil des Artikelinhaltes sind. Hier ein Beispiel mit nach links zeigendem Pfeil <-- und nach rechts zeigendem Pfeil -->"
}
},
{
"component": "p",
"content": {
"text": "Das ist der nächste Absatz. Dieser Absatz enthält unbekannte, kundenspezifische Tags, die 1:1 übernommen werden. Damit der Inhalt im Text formatiert wird, müssen die Tags mit demselben Namen in der Makrobibliothek in NGEN vorliegen. <h1>h1-Überschrift</h1><span>Inhalt des Textes</span><Fett>mit Text in Bold</Fett> <Kursiv>und Kursiv</Kursiv><h2>h2-Überschrift</h2><neuesTag>Inhalt neues Tag </neuesTag><?proInstr?>und Makro<?_proInstr?>, Tag und Makro ohne Inhalt <ohneInhalt/> <?ohneInhalt_?>"
}
},
{
"component": "p",
"content": {
"text": "Hier eine Liste aus HTML Listen-Tags. Damit der Inhalt im Text formatiert wird, müssen die Tags mit demselben Namen in der Makrobibliothek in NGEN vorliegen.<?ZP?><ol><li>1899 Hoffenheim gegen Borussia Dortmund 3:1</li><li>Herta BSC gegen RB Leipzig 2:6</li><li>VfL Wolfsburg gegen 1. FC Köln 4:1</li><li>1. FSV Mainz 05 gegen Werder Bremen 1:2</li></ol>"
}
},
{
"component": "image",
"content": {
"ngen_id": "205-4292797",
"caption": "Das ist die neue Bildbeschreibung des internen Bildes.",
"source": "Bildquelle",
"labelSource": "Quellverweis",
"type": "Autor",
"layoutType": "",
"image": {
"keepCrop": "MinimalVerzerren",
"crop": {
"x": 1500,
"y": 0,
"width": 7000,
"height": 10000
}
}
}
},
{
"component": "infobox",
"content": {
"title": "Der Titel der Infobox - mit externem Bild",
"text": "<p>Der erste Absatz.</p><p>Der <strong>zweite</strong> Absatz.</p>",
"caption": "Das ist die Bildbeschreibung des externen Bildes.",
"source": "Bildquelle",
"labelSource": "Quellverweis",
"type": "",
"image": {
"originalUrl": "https://media04.peiq.de/event/2024/11/12/6/5236_XXL.webp?1731426234",
"origins": [
{
"name": "archiv B",
"identifier": "xyz-123"
}
],
"crop": {
"x": 1500,
"y": 0,
"width": 7000,
"height": 10000
}
}
}
},
{
"component": "infobox",
"content": {
"title": "Der Titel der Infobox - mit internem Bild",
"text": "<p>Der erste Absatz.</p><p>Der <strong>zweite</strong> Absatz.</p>",
"ngen_id": "205-4292797",
"caption": "Das ist die neue Bildbeschreibung des internen Bildes.",
"source": "Bildquelle",
"labelSource": "Quellverweis",
"type": "",
"image": {
"keepCrop": "Weissraum",
"crop": {
"x": 1500,
"y": 0,
"width": 7000,
"height": 10000
}
}
}
},
{
"component": "p",
"content": {
"text": "Das ist der letzte Absatz."
}
}
]
}
}Updaten / Ändern eines Artikels: POST /articles/json
Aktualisieren des Artikelinhalts
Der nach PRINT NGEN übergebene Artikel kann mit einem erneuten Aufruf des Endpunktes “POST /articles/json” mit einem neuen Artikel-Dokument im Body des Request aktualisiert werden. Zum Aktualisieren des Artikelinhaltes wird immer ein vollständiges Artikel-Dokument mit folgenden Informationen benötigt:
“systemdata”
“metadata”
“articlecontent”
Die CIDs der aktualisierten Artikel werden in der API-Response im Feld “updated“ ausgegeben. Auch bei Updates kann anhand des Feldes “publications” die CID des NGEN-Artikels der übertragenen Ausgabe zugeordnet werden. Über "saved": "done", ist erkennbar, dass das Update erfolgt ist.
Wird ein NGEN-Artikel zu einer im POST-Request /articles/json übermittelten Ausgabe nicht aktualisiert, gibt die Response im Feld „publications“ für den betreffenden Artikel den Status "saved": "updateDenied" zurück. Das Update erfolgt beispielsweise in dem Fall nicht, wenn Updates nur für Artikel im Status “Erfassung” vorgesehen sind und der Artikel bereits auf “Fertig” weitergestuft wurde.
{
"created": [],
"updated": [
"1-987654321"
],
"publications": [
{
"value": "ta-ma",
"saved": "done",
"article": "1-987654321"
},
{
"value": "ta-mue",
"saved": "updateDenied",
"article": "1-987654310"
}
]
}Wird eine “publication” bei einem Update ergänzt, wird ein neuer Artikel erstellt. Die CID des neu erstellten Artikels wird in der API-Response im Feld “created“ ausgegeben.
Wird das Feld “publications” bei einem Update leer übertragen ("publications":[]) oder wurde eine vorher übertragene “publication” entfernt, wird der bzw. werden die Artikel zu dieser externen ID in PRINT NGEN in den Status “Löschen” gestuft. Das Stufen auf “Löschen” wird nicht als Update gewertet. Somit bleibt das Feld “updated” und auch das Feld “publications” in der API-Response leer:
{
"created": [],
"updated": [],
"publications": []
}Wird die gelöschte “publication” bei einem nächsten Update wieder hinzugefügt, muss ein Artikelstatus (“"metadata": { "publications" oder: "publication": [{"status"}]”) mitgegeben werden, ansonsten bleibt der Artikel im Status “Löschen”.
Aktualisieren von Metadaten bei unverändertem Artikelinhalt
Für das Aktualisieren von Metadaten bei unverändertem Artikelinhalt ist es möglich, den Abschnitt des Artikelinhaltes (“articlecontent”) im Artikel-JSON wegzulassen. In dem Fall wird der Artikelinhalt und die XML-Artikelstruktur nicht verändert. Das ist allerdings nur zu empfehlen, wenn die Metadaten-Änderungen keine Änderung des Artikel-XMLs erfordern (z. B. Ressortindex, Erscheinungstag). Wird eine Änderung des Artikel-XMLs benötigt, muss der Artikelinhalt beim Update im Artikel-Dokument enthalten sein. Hier ein Beispiel:
Ein Randspalter hat ein Autorenkürzel am Ende des Grundtextes. Bei einem Aufmacher wird der/die Autor:in in einen Autorbereich geschrieben. Wird der Artikeltyp in den Metadaten von einem Randspalter zu einem Aufmacher geändert, muss das Artikel-XML und die Artikelvorlage bzgl. der Autor:innen-Info geändert werden. Hierzu wird “articlecontent” im Artikel-JSON benötigt.
Wird beim Update ein Artikel-JSON mit einer neuen Publikation ohne Artikelinhalt geschickt, so wird kein neuer Artikel für die neue Publikation erstellt. Wenn eine Publikation beim Updaten im Artikel-JSON fehlt, wird der Artikel dieser Publikation auf “Löschen” gestuft.
Generell greift hier die gleiche Update-Logik wie für Livingdocs-Artikel (siehe https://peiq.atlassian.net/wiki/spaces/PPSD/pages/1504444437). Sie ist standardmäßig in der PRINT API aktiviert und nicht statusabhängig, d. h. die Artikel zu der externen ID werden immer aktualisiert.
Es dürfen keine parallelen POST-Requests für dieselbe externe “documentId” abgesetzt werden. Requests für dieselbe “documentId” sollten immer sequentiell abgesetzt werden.
Abrufen der Metadaten eines Artikels: GET /articles/{id}
Ist die CID eines Artikel bekannt, kann ein Drittsystem Metainformationen eines Artikels über den Endpunkt “GET /articles/{id}” der PRINT API abrufen.
Über den optionalen Parameter “fields” können die Felder “text” und/oder “pages” mit abgerufen werden. Beispiel:
GET {baseUrl}/articles/{id}?fields=text,pages
In der Response wird der Artikelinhalt im Feld “text” im XML-Format übergeben. Im Feld “pages” sind die IDs der Seiten aufgelistet, auf denen der Artikel platziert ist.
Über den Endpunkt “GET pages/{id}” können die Metadaten der Seite abgerufen werden. Aus Performancegründen sollten die optionalen Felder “text” und “pages” nur dann abgerufen werden, wenn diese zwingend benötigt werden.
Metadaten Tabelle
PRINT API Feld | Beschreibung | PRINT NGEN Eigenschaft |
id | PRINT NGEN CID | CID |
external_id | Externe ID | DExterneID |
version | Versionsnummer | CV |
creation_timestamp | Erstellt Am | CED |
creation_user | Erstellt Von | CEB |
modification_timestamp | Zuletzt Geändert Am | CGD |
modification_user | Zuletzt Geändert Von | CGB |
object | Zeitungsobjekt | DTextObjekt |
edition | Ausgabe | DTextAusgabe |
category | Ressort | DTextRessort |
publication_date | Erscheinungstag | DTextErschAm |
planned_page | Für Seite | DTextGeplSeite |
format | Formatname | DTextFormatName |
character_count | Zeichenanzahl | AnzahlWorte |
name | Artikelname | DTextName |
text | Textinhalt | Text |
status | Artikelstatus | Status |
pages | Platziert auf den Seiten | ← DLayout |
Abrufen der Metadaten einer Liste von Artikeln: GET /articles
Wie im Kapitel https://peiq.atlassian.net/wiki/spaces/PPSD/pages/1989541891/0-24+PEIQ+PRINT+API+-+Articles#Abrufen-der-Metadaten-eines-Artikels%3A-GET-%2Farticles%2F%7Bid%7D erläutert, kann ein Drittsystem über die CID eines Artikels Metainformationen über die PRINT API abfragen. Die oben stehenden Metadaten können jedoch auch für mehrere Artikel gleichzeitig abgefragt werden.
Hierzu muss im Request-Body eine Liste mit den betreffenden CIDs übergeben werden. Beispielsweise:
{
"ids": [
"78-1523637",
"78-1523638"
]
}Als Rückinformation erhält das Drittsystem sodann die Metadaten der jeweiligen übergebenen Artikeln. Diese werden kommasepariert aufgelistet.
Suche nach bestimmten Artikeln: GET /articles/search
Von einem Drittsystem aus können über den Endpunkt “GET /articles/search” der PRINT API Artikelsuchen mit bestimmten Suchbedingungen im PEIQ DAM abgesetzt werden. Im Anschluss können die gefundenen Artikelmetadaten über den Endpunkt “GET article/{id}” abgerufen werden.
Die Ergebnisse beim Absetzen der Artikelsuche werden nach dem Erstelldatum absteigend sortiert.
Bei diesem Endpunkt muss eine “projectId” im Request mitgegeben werden, die PEIQ definiert. Mit der “projectId=Print” können die Printartikel in PRINT NGEN gesucht werden. Printartikel im Status “Löschen” werden dabei herausgefiltert.
Für das Absetzen der Suche können mehrere Suchparameter mit “&” kombiniert werden. Die Werte der Suchparameter können kommasepariert angegeben werden. Mögliche Parameter sind:
Suchparameter | Beschreibung |
|---|---|
search | Volltextsuche (Groß-/Kleinschreibung wird nicht berücksichtigt, Text muss in URL-kodiertem Format übergeben werden) |
publication_dates | Erscheinungstag |
states | Status |
categories | Ressort |
editions | Ausgabe |
objects | Objekt |
external_ids | Externe ID |
offset | Gibt an, welche Suchergebnisse in der Ergebnisliste am Anfang übersprungen werden sollen |
limit | Maximale Anzahl der Suchergebnisse (ohne Parameter “limit” werden standardmäßig 100 Ergebnisse zurückgegeben, das Maximum sind 1.000 Ergebnisse bei einem Aufruf) |
Soll per PRINT API eine Suche in PRINT NGEN abgesetzt werden, wird beim ersten Request kein Offset angegeben. In der Response kommt ein Offset zurück, der beim nächsten Aufruf mitgegeben muss, um den nächsten Block der Suchergebnisse zu erhalten. Der Offset besteht aus der Kombination aus CED (= Cluster-Erstell-Datum) und CID (= Cluster-ID) eines Startartikels. Zum Beispiel: "20211117-11:52:58/1-16114101".
Beispiel für den Abruf der ersten 50 Artikel: | Beispiel für den Abruf der nächsten 50 Artikel: |
|---|---|
{baseUrl}/articels/search?projectId=Print&limit=50 | {baseUrl}/articels/search?projectId=Print&limit=50&offset=20210714-13:42:41/1-16059606 |
Preview von gespeicherten Artikeln: GET /articles/preview/{id}/{resolution}/{page_id} kund:innenspezifisch
Ist die NGEN-CID eines Artikels bekannt, kann die Vorschau dieses Artikels abgerufen werden. Hier gibt es folgende Möglichkeiten:
Der Artikel ist noch nicht platziert und es soll die Vorschau des unplatzierten Artikels abgerufen werden. Die Abfrage erfolgt hier mit “GET /articles/preview/{id}/{resolution}”, wobei es sich bei der “{id}” um die CID des Artikels handelt.
Der Artikel ist bereits auf einer oder mehreren Seiten platziert und es soll die Vorschau des Artikels von einer Seite abgerufen werden. Die Abfrage erfolgt hier mit “GET /articles/preview/{id}/{resolution}/{page_id}”, wobei es sich bei der “{id}” um die CID des Artikels handelt. Mit “{page_id}” muss die CID der Seite mitgegeben werden, auf der der Artikel platziert ist und von der die Vorschau des Artikels abgerufen werden soll.
Der Artikel ist bereits platziert, die Seiten-CID ist jedoch nicht bekannt. Die Abfrage erfolgt hier mit “GET /articles/preview/{id}/{resolution}”, wobei es sich bei der “{id}” um die CID des Artikels handelt. Ist der Artikel auf mehreren Seiten platziert, wird das Layout des Artikels auf der ersten gefundenen Seite zurück geliefert.
Für den Parameter “resolution” können beim Request folgende Werte mitgegeben werden:
“thumb”: 150 Pixel
“lowRes”: 600 Pixel
“midRes”: 800 Pixel
“highRes”: 1900 Pixel
Die Pixelanzahl entspricht hier der Breite des Bildes.
Die Previews werden standardmäßig im WEBP-Format zurückgeliefert.
Preview von gerenderten Artikeln: GET /articles/preview/json/{resolution} kund:innenspezifisch
Artikel, die im externen Editor als Artikelhülle geplant werden oder sich noch in Bearbeitung befinden, können über die PRINT API mit dem Endpunkt “POST /articles/json” bereits im unfertigen Zustand angeliefert werden. Als Kennzeichnung werden dabei der Status ("status": "Erfassung") und der in der T-Shirt-Größe angegebene, geplante Artikelumfang ("plannedSize"=XS, S, M, L, XL, XXL) mit übertragen. In PRINT NGEN können diese Artikel dann auf einer Seite mit dem gewünschten Ziellayout platziert werden.
Für diese platzierten Artikel kann auf Grundlage eines im Request-Body mitgelieferten Textes eine Preview generiert werden, bei dem der mitgelieferte Text in das platzierte Artikellayout umbrochen wird. Somit kann der Artikel in einem headless-Modus auf Zeile angepasst werden, sodass er in dieses Artikellayout hineinpasst.
Der mitgelieferte Text dient nur zur Generierung der Preview. Der Text wird nicht am Artikel gespeichert. Wurde der Text so angepasst, dass er gemäß Preview in das Layout hineinpasst, kann dieser Text über den Endpunkt “POST /articles/json” nach PRINT NGEN übergeben werden.
Für den Parameter “resolution” können beim Request die gleichen Werte wie bei der Preview von gespeicherten Artikeln mitgegeben werden:
“thumb”
“lowRes”
“midRes”
“highRes”
Neben dem geänderten Artikelinhalt unter “articlecontent” werden im Artikel-JSON auch die externe ID des Artikels (“systemdata”) und die Publikation des Artikels (“metadata”), für die die Preview generiert werden soll, übergeben. Falls mehrere Publikationen übergeben werden, wird die Preview für die erste Publikation generiert, die auf einer Seite platziert ist. Wenn keines der übergebenen Publications auf einer Seite platziert ist, wird keine Preview generiert. Es wird der HTTP-Fehler “400” (= Bad Request) zurückgegeben.
Ohne Artikelinhalt (“articlecontent”) im Artikel-JSON wird die Preview nicht mit dem normalerweise übergebenen Artikelinhalt gerendert, sondern mit dem bereits in PRINT NGEN platzierten Artikelinhalt.
Die Response besteht aus drei Teilen (“image”, “article”, “page”):
Unter
"image":{"data"}wird die Preview in Base64-Codierung zurückgegeben. Die Previews werden standardmäßig im WEBP-Format zurückgeliefert.Unter
"article":{"id"}wird die CID des PRINT NGEN Artikels, für den die Preview generiert wurde, ausgegeben.
Unter"article":{"changeable"}wird zurückgegeben, ob der Artikel mit “POST /articles/json” aktualisiert werden kann. Bei “changeable=false” kann der Artikel nicht mehr aktualisiert werden.Unter
"page":{"id"}wird die CID der Seite zurückgegeben, auf dem der betreffende Artikel platziert ist, und in dessen Layout der Text umbrochen wurde.
Unter"page":{"overset_chars"}wird die Zeichenzahl im Über- bzw. Untersatz im Grundtext (d. h. in Textbereichen mit Bereichsnamen “Text”) der gerenderten Preview zurückgegeben. Bei Übersatz kommt eine positive Anzahl der Zeichen zurück, die außerhalb des Layouts stehen würden, wobei auch Tags (öffnend/schließend/selbstschließend) jeweils als ein Zeichen mitgezählt werden. Bei Untersatz kommt eine negative Zahl zurück, die angibt, wie viele Zeichen mit der durchschnittlichen Zeichenbreite der Schriftart in die noch übrigen leeren Zeilen passen würden. Dabei muss beachtet werden, dass formatierter Text mehr Platz einnimmt. Diese Zahl dient daher nur zur groben Orientierung. Der Text aus Infoboxen wird bei der Untersatz-/Übersatz-Zählung nicht berücksichtigt.
Beim Request kann optional der Parameter “fields” mit folgenden Werten mitgegeben werden:
“fields=image”: Hiermit kann die Preview ohne Unter-/Übersatz-Information abgerufen werden.
“fields=overset_chars”: Hiermit kann die Unter-/Übersatz-Information ohne Preview abgerufen werden. Das Feld “image” wird in der Response nicht zurückgegeben.
Ohne “fields”-Paramater enthält die Response standardmäßig sowohl die Preview als auch die Unter-/Übersatz-Information.
Einschränkungen
Die Preview wird statisch für den übergebenen Text generiert. Es werden keine dynamischen Layoutanpassungen innerhalb des Artikel-Containers vorgenommen. Das bedeutet:
Neue Bereiche, die noch nicht im Layout enthalten sind, werden nicht angezeigt (z.B. neuer Vorspann-Bereich)
Wenn platzierte Bereiche im übergebenen Text rausfallen, bleibt in der Preview eine Lücke für den Bereich bestehen
Es werden keine Bilder und Bildunterschriften geändert. Es werden im der Preview die bereits platzierten Bilder angezeigt.
In der Preview werden keine Hinweise zu nicht passender Orthografie angezeigt. Eine Rechtschreibprüfung findet nicht statt und muss im Editor selbst erfolgen.
Verwandte Seiten
Nur für PEIQ-Mitarbeiter: