APIs, Endpunkte und URL-Schema
So baust du die öffentliche Schnittstelle deines AssetFeeds: APIs mit eigener URL-Gültigkeit, Listen- und Einzel-Asset-Endpunkte, Platzhalter im URL-Schema, Antwortmodi und die reservierten Query-Parameter.
Im Dialog AssetFeed anpassen legst du fest, unter welchen Adressen dein Feed antwortet und was er dort ausliefert. Die Konfiguration ist dreistufig aufgebaut:
AssetFeed (Titel, Feed-URL)
└── API (Gültigkeit der Asset-URLs)
├── Listen-Endpunkt → JSON mit allen veröffentlichten Assets
└── Einzel-Asset-Endpunkt → ein Bild, ein Download oder Metadaten als JSONAlle Endpunkte liegen unterhalb der Feed-URL. Bei https://share.vaulo.com/mustermann/presse als Feed-URL antwortet ein Endpunkt mit dem URL-Schema assets/{filename} also unter https://share.vaulo.com/mustermann/presse/assets/sommerfest.jpg.
APIs
Eine API bündelt die Endpunkte für ein konsumierendes System. In den meisten Fällen reicht die eine API, die jeder neue Feed mitbringt. Mit Weitere API hinzufügen legst du eine zweite an, wenn ein weiteres System andere Anforderungen hat – etwa eine kürzere Gültigkeit der Bild-URLs. Sobald es zwei APIs gibt, erscheint das Feld API-Name (optional), damit du sie auseinanderhalten kannst. Eine neue API startet ohne Endpunkte.
Gültigkeit der Asset-URLs
Die url-Werte, die der Feed im JSON ausgibt, sind signierte Direktlinks auf die Bilddateien. Unter Gültigkeit der Asset-URLs legst du pro API fest, wie lange sie funktionieren: Standard (4 Tage), 15 Minuten, 1 Stunde, 6 Stunden, 1 Tag, 4 Tage oder Benutzerdefiniert mit eigener Dauer und Einheit. Zulässig sind 5 Minuten bis 4 Tage. Dieselbe Gültigkeit gilt für die Weiterleitung eines Einzel-Asset-Endpunkts im Modus inline.
Innerhalb der halben Gültigkeit bleibt eine Asset-URL unverändert, sodass Zwischenspeicher sie wiederverwenden können. Sie ist immer für mindestens die halbe Gültigkeit nutzbar. Ein externes System sollte den Feed also spätestens nach der halben Gültigkeit erneut abrufen – bei 1 Stunde etwa alle 30 Minuten.
Endpunkte
Jeder Endpunkt hat einen Endpunkt-Typ, ein URL-Schema und – je nach Typ – einen Antwortmodus und ein JSON-Template. Ein Endpunkt in der Liste ist sofort nach dem Speichern aktiv. Einen Schalter zum Deaktivieren gibt es nicht: Entferne den Endpunkt über das Papierkorb-Symbol, wenn er nicht mehr antworten soll.
Listen-Endpunkt
Ein Listen-Endpunkt liefert das JSON-Template über alle veröffentlichten Dateien des Feeds, immer seitenweise (siehe unten).
- URL-Schema (leer = Feed-URL): Bleibt das Feld leer, antwortet der Endpunkt direkt auf der Feed-URL. Pro Feed kann nur ein Endpunkt die leere Feed-URL belegen. Alternativ gibst du einen Pfad an, zum Beispiel
katalog/liste. {size},{width}und{height}sind im Schema erlaubt.{fileId},{assetId}und{filename}gehören zu Einzel-Asset-Endpunkten.- Das JSON-Template bestimmt die Antwort. Wie du es schreibst, steht unter JSON-Template mit Liquid-Syntax.
Einzel-Asset-Endpunkt
Ein Einzel-Asset-Endpunkt adressiert eine Datei. Welche, ergibt sich aus den Platzhaltern im URL-Schema für Assets:
| Platzhalter | Bedeutung |
|---|---|
{fileId} | Die ID der Datei, wie sie das JSON unter asset.id ausgibt |
{assetId} | Die Asset-ID der Datei, wie sie das JSON unter asset.assetId ausgibt – die kurze Kennung aus dem Data Studio, zum Beispiel 000123 oder 260901-F4KRM. Groß- und Kleinschreibung spielt keine Rolle |
{filename} | Der Dateiname inklusive Endung, zum Beispiel sommerfest.jpg |
{size} | Die gewünschte Bildgröße: sm, md oder ein Pixelwert |
{width} / {height} | Exakte Breite bzw. Höhe in Pixeln – siehe Exakte Bildgrößen |
{tenantProps.<slug>} | Der Wert einer benutzerdefinierten Metadaten-Eigenschaft (Slug oder Slot-ID). Geliefert wird die erste veröffentlichte Datei, deren Wert passt |
Mindestens ein identifizierender Platzhalter ist Pflicht: {fileId}, {assetId}, {filename} oder {tenantProps.…}. Statische Pfadteile und Query-Parameter sind erlaubt. Die Schreibweise aus dem Template funktioniert ebenfalls: {asset.assetId}, {asset.filename} oder {asset.id} bedeuten dasselbe wie {assetId}, {filename} und {fileId}. Unter dem Feld siehst du unter Beispiel: live, wie eine fertige URL aussieht.
| URL-Schema | Beispiel-URL |
|---|---|
assets/{filename} | …/presse/assets/sommerfest.jpg |
bild/{fileId}/{size} | …/presse/bild/3f2ab81c-…/md |
assets/{assetId}.jpg | …/presse/assets/000123.jpg |
?file={fileId} | …/presse?file=3f2ab81c-… |
produkt/{tenantProps.artikelnummer} | …/presse/produkt/A-1001 |
im/meta/{asset.assetId} | …/presse/im/meta/000123 |
Unter Antwort wählst du, was der Endpunkt liefert:
Im Browser anzeigen (inline)– eine Weiterleitung auf das Bild in der angeforderten Größe. Der richtige Modus für<img src="…">auf einer Website.Download erzwingen (attachment)– die Datei wird als Download ausgeliefert. Bilder in der angeforderten Größe, Videos und andere Formate als Originaldatei.Metadaten als JSON (inkl. Download-URL)– ein JSON-Dokument aus dem JSON-Template dieses Endpunkts mit den Daten der Datei unterasset, inklusive ihrer temporärenurl.
Welcher Endpunkt antwortet?
Eine Anfrage wird gegen alle Endpunkte aller APIs des Feeds geprüft. Passen mehrere Schemata, gewinnt das spezifischste: zuerst das Schema mit den meisten festen Pfadteilen, dann das mit den wenigsten Platzhaltern, bei Gleichstand die Reihenfolge in der Konfiguration. Die leere Feed-URL geht immer an den Listen-Endpunkt ohne Schema. Passt kein Endpunkt, antwortet der Feed mit 404.
Reservierte Query-Parameter
Diese Parameter versteht jeder Listen-Endpunkt. Dein URL-Schema darf sie nicht selbst als Query-Parameter belegen.
| Parameter | Wirkung |
|---|---|
ids | Kommagetrennte Datei-IDs (asset.id). Der Feed liefert nur diese Dateien, in der Reihenfolge der Anfrage |
id | Asset-IDs aus dem Data Studio (asset.assetId), mehrfach angegeben oder kommagetrennt. Der Feed liefert nur diese Dateien, in der Reihenfolge der Anfrage; unbekannte IDs werden übersprungen. Groß- und Kleinschreibung spielt keine Rolle |
tenantProps.<slug> | Filtert nach dem Wert einer Metadaten-Eigenschaft. Derselbe Parameter mehrfach bedeutet ODER, verschiedene Eigenschaften bedeuten UND. Eine unbekannte Eigenschaft ergibt 400 |
width / height | Exakte Breite bzw. Höhe in Pixeln (siehe unten) |
page | Die Seite, beginnend bei 1 |
pageSize | Assets pro Seite. Standard 100, maximal 1000 |
size | Größe der Asset-URLs: sm, md oder ein Pixelwert |
fallback | true liefert JPEG statt WebP – für Systeme, die WebP nicht verarbeiten |
size und fallback gelten auch für Einzel-Asset-Endpunkte, sofern das Schema die Größe nicht bereits über {size} festlegt.
https://share.vaulo.com/mustermann/presse?page=2&pageSize=50
https://share.vaulo.com/mustermann/presse?ids=3f2ab81c-5c1e-4f6a-9d15-0c9be31e4b7a,9c1d2e3f-…
https://share.vaulo.com/mustermann/presse?id=000123&id=000124
https://share.vaulo.com/mustermann/presse?tenantProps.kategorie=Rot&tenantProps.kategorie=Blau&tenantProps.saison=Sommer
https://share.vaulo.com/mustermann/presse?size=800
https://share.vaulo.com/mustermann/presse/assets/sommerfest.jpg?size=sm&fallback=trueBildgrößen
| Wert | Ergebnis |
|---|---|
sm | Vorschau mit maximal 480 Pixeln Kantenlänge |
md | Vorschau mit maximal 1920 Pixeln Kantenlänge (Standard) |
Pixelwert, z. B. 800 | Die kleinste Vorschau, die den Wert abdeckt – 400 ergibt sm, 800 ergibt md |
| Größer als 1920 | Wird wie md behandelt |
Exakte Bildgrößen mit Breite und Höhe
Mit den Platzhaltern {width} und {height} liefert ein Endpunkt das Bild exakt in der angeforderten Größe – gerendert aus der Originaldatei, nie vergrößert. Beide Platzhalter dürfen mit festem Text in einem Segment stehen, sodass sich auch fremde URL-Schemata nachbilden lassen. Statt der Platzhalter funktionieren auch die Query-Parameter width und height.
| URL-Schema | Beispiel-URL | Ergebnis |
|---|---|---|
x{width}/{assetId} | …/im/x800/000123 | 800 px breit, Höhe folgt dem Seitenverhältnis |
x{width}y{height}/{assetId} | …/im/x650y180/000123 | Genau 650 × 180 px, je nach Zuschnitt |
{assetId}?h={height} | …/im/000123?h=219 | 219 px hoch, Breite folgt dem Seitenverhältnis |
- Nur Breite oder nur Höhe: Das Bild wird auf diese Kante skaliert, das Seitenverhältnis bleibt erhalten.
- Breite und Höhe: Der
Zuschnitt bei Breite × Höhedes Endpunkts entscheidet.Box füllen und mittig zuschneiden (cover)skaliert, bis die Box gefüllt ist, und schneidet den Überstand mittig ab – das Bild hat danach genau die angeforderten Maße.In die Box einpassen, ohne Zuschnitt (contain)skaliert, bis das ganze Bild in die Box passt. - Kein Vergrößern: Ist das Original kleiner als angefordert, kommt es in seiner eigenen Größe zurück.
- Erlaubte Größen: Weil der Feed öffentlich ist, kannst du pro Endpunkt festlegen, welche Größen angefragt werden dürfen – als
800(Breite),292x219(Box) oderx219(Höhe). Ist die Liste gefüllt, antworten alle anderen Größen mit 404. Bleibt sie leer, ist jede Größe bis 8192 px pro Kante erlaubt.
Für eine exakte Größe rendert VAULO das Bild beim ersten Aufruf und liefert danach eine zwischengespeicherte Kopie aus. Der erste Abruf einer neuen Größe dauert deshalb etwas länger. {size} bleibt weiterhin für die beiden festen Vorschaugrößen verfügbar.
Seitenweise Abfrage
Ein Listen-Endpunkt ist immer paginiert. Ohne pageSize bekommt das externe System 100 Assets pro Seite. Damit es die weiteren Seiten findet, stellt das Template das Objekt page bereit – mit page.nextUrl, das auf die nächste Seite zeigt, und null, wenn es keine mehr gibt. Wie du diese Werte ins JSON schreibst, zeigt das Standard-Template.
Statuscodes
| Code | Bedeutung |
|---|---|
| 200 | Erfolgreiche Antwort |
| 302 | Weiterleitung auf das Bild (Modus inline) |
| 400 | Unbekannte Eigenschaft in einem tenantProps-Filter |
| 401 | Der Feed ist außerhalb seines Gültigkeitszeitraums |
| 404 | Kein passender Endpunkt, unbekannte oder nicht veröffentlichte Datei |
| 500 | Das JSON-Template lässt sich nicht ausführen, zum Beispiel wegen einer unbekannten Funktion |
Übersicht
Veröffentliche ausgewählte Bilder über eine öffentliche Feed-URL: Externe Systeme erhalten eine JSON-Liste deiner Assets und rufen die Bilder über ein frei konfigurierbares URL-Schema ab – Pfade, Query-Parameter und das JSON-Format bestimmst du selbst.
JSON-Template mit Liquid-Syntax
Das JSON, das dein AssetFeed ausliefert, bestimmst du selbst: Ausgaben, Bedingungen und Schleifen in Liquid-Syntax, alle verfügbaren Variablen und die Funktionen für Text und Listen.