VAULOVAULO Help Center

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 JSON

Alle 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:

PlatzhalterBedeutung
{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-SchemaBeispiel-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 unter asset, inklusive ihrer temporären url.

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.

ParameterWirkung
idsKommagetrennte Datei-IDs (asset.id). Der Feed liefert nur diese Dateien, in der Reihenfolge der Anfrage
idAsset-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 / heightExakte Breite bzw. Höhe in Pixeln (siehe unten)
pageDie Seite, beginnend bei 1
pageSizeAssets pro Seite. Standard 100, maximal 1000
sizeGröße der Asset-URLs: sm, md oder ein Pixelwert
fallbacktrue 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=true

Bildgrößen

WertErgebnis
smVorschau mit maximal 480 Pixeln Kantenlänge
mdVorschau mit maximal 1920 Pixeln Kantenlänge (Standard)
Pixelwert, z. B. 800Die kleinste Vorschau, die den Wert abdeckt – 400 ergibt sm, 800 ergibt md
Größer als 1920Wird 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-SchemaBeispiel-URLErgebnis
x{width}/{assetId}…/im/x800/000123800 px breit, Höhe folgt dem Seitenverhältnis
x{width}y{height}/{assetId}…/im/x650y180/000123Genau 650 × 180 px, je nach Zuschnitt
{assetId}?h={height}…/im/000123?h=219219 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öhe des 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) oder x219 (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

CodeBedeutung
200Erfolgreiche Antwort
302Weiterleitung auf das Bild (Modus inline)
400Unbekannte Eigenschaft in einem tenantProps-Filter
401Der Feed ist außerhalb seines Gültigkeitszeitraums
404Kein passender Endpunkt, unbekannte oder nicht veröffentlichte Datei
500Das JSON-Template lässt sich nicht ausführen, zum Beispiel wegen einer unbekannten Funktion

On this page