Asset Compute Service-HTTP-API asset-compute-http-api
Die Verwendung der API ist auf Entwicklungszwecke beschränkt. Die API wird bei der Entwicklung benutzerdefinierter Programme als Kontext bereitgestellt. Adobe Experience Manager as a Cloud Service verwendet die API, um die Verarbeitungsinformationen an ein benutzerdefiniertes Programm zu übergeben. Weitere Informationen finden Sie unter Verwenden von Asset-Microservices und Verarbeitungsprofilen.
Jeder Client der Asset Compute Service-HTTP-API muss diesem allgemeinen Ablauf folgen:
-
Ein Client wird als Adobe Developer Console-Projekt in einer IMS-Organisation bereitgestellt. Für jeden separaten Client (System oder Umgebung) ist ein eigenes Projekt erforderlich, um den Ereignisdatenfluss zu trennen.
-
Ein Client generiert mithilfe der JWT (Service Account)-Authentifizierung ein Zugriffs-Token für das technische Konto.
-
Ein Client ruft
/register
nur einmal auf, um die Journal-URL abzurufen. -
Ein Client ruft
/process
für jedes Asset auf, für das er Ausgabedarstellungen generieren möchte. Der Aufruf ist asynchron. -
Ein Client fragt das Journal regelmäßig ab, um Ereignisse zu empfangen. Er empfängt Ereignisse für jede angeforderte Ausgabedarstellung, wenn die Ausgabedarstellung erfolgreich verarbeitet wurde (Ereignistyp
rendition_created
) oder wenn ein Fehler aufgetreten ist (Ereignistyprendition_failed
).
Das Modul adobe/asset-compute-client vereinfacht die Verwendung der API im Node.js-Code.
Authentifizierung und Autorisierung authentication-and-authorization
Für alle APIs ist eine Zugriffs-Token-Authentifizierung erforderlich. Die Anfragen müssen die folgenden Kopfzeilen festlegen:
-
Authorization
-Kopfzeile mit Träger-Token, dem technischen Konto-Token, das über den JWT-Austausch vom Adobe Developer Console-Projekt empfangen wurde. Die Bereiche sind nachfolgend beschrieben. -
x-gw-ims-org-id
-Kopfzeile mit der IMS-Organisations-ID. -
x-api-key
mit der Client-ID des Adobe Developers Console-Projekts.
Bereiche scopes
Stellen Sie die folgenden Bereiche für das Zugriffs-Token sicher:
openid
AdobeID
asset_compute
read_organizations
event_receiver
event_receiver_api
adobeio_api
additional_info.roles
additional_info.projectedProductContext
Für diese Bereiche muss das Adobe Developer Console-Projekt die Services Asset Compute
, I/O Events
, und I/O Management API
abonnieren. Die einzelnen Bereiche werden wie folgt unterteilt:
-
Einfach
- Bereiche:
openid,AdobeID
- Bereiche:
-
Asset Compute
- Metascope:
asset_compute_meta
- Bereiche:
asset_compute,read_organizations
- Metascope:
-
Adobe
I/O Events
- Metascope:
event_receiver_api
- Bereiche:
event_receiver,event_receiver_api
- Metascope:
-
Adobe
I/O Management API
- Metascope:
ent_adobeio_sdk
- Bereiche:
adobeio_api,additional_info.roles,additional_info.projectedProductContext
- Metascope:
Registrierung register
Jeder Client von Asset Compute service – ein eindeutiges Adobe Developer Console-Projekt, das den Service abonniert hat – muss sich registrieren, bevor er Verarbeitungsanfragen stellen kann. Der Registrierungsschritt gibt das eindeutige Ereignisjournal zurück, das zum Abrufen der asynchronen Ereignisse aus der Verarbeitung der Ausgabedarstellung erforderlich ist.
Am Ende seines Lebenszyklus kann ein Client die Registrierung aufheben.
Registrierungsanfrage register-request
Mit diesem API-Aufruf wird ein Asset Compute-Client eingerichtet und die Ereignisjournal-URL bereitgestellt. Dies ist ein idempotenter Vorgang, der für jeden Client nur einmal aufgerufen werden muss. Er kann erneut aufgerufen werden, um die Journal-URL abzurufen.
POST
/register
Authorization
x-request-id
Registrierungsantwort register-response
application/json
X-Request-Id
X-Request-Id
oder eine eindeutig erstellte. Verwenden Sie diese Option, um systemübergreifende Anfragen und/oder Support-Anfragen zu identifizieren.journal
, ok
oder requestId
.Die HTTP-Status-Codes lauten:
-
200 Erfolg: Bei erfolgreicher Anfrage. Die
journal
-URL empfängt Benachrichtigungen über die Ergebnisse der durch/process
initiierten asynchronen Verarbeitung. Es wird über erfolgreich abgeschlossenerendition_created
-Ereignisse oderrendition_failed
-Ereignisse bei fehlgeschlagenem Prozess informiert.code language-json { "ok": true, "journal": "https://api.adobe.io/events/organizations/xxxxx/integrations/xxxx/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx", "requestId": "1234567890" }
-
401 Nicht autorisiert: Tritt auf, wenn die Anfrage keine gültige Authentifizierung aufweist. Ein Beispiel könnte ein ungültiges Zugriffs-Token oder ein ungültiger API-Schlüssel sein.
-
403 Verboten: Tritt auf, wenn die Anfrage keine gültige Autorisierung aufweist. Beispielsweise könnte ein gültiges Zugriffs-Token vorliegen, aber das Adobe Developer Console-Projekt (technisches Konto) hat nicht alle erforderlichen Services abonniert.
-
429 Zu viele Anfragen: Tritt auf, wenn das System durch diesen Client oder anderweitig überlastet wird. Clients sollten es mit einem exponentiellen Backoff erneut versuchen. Der Hauptteil ist leer.
-
4xx-Fehler: Wenn ein anderer Client-Fehler aufgetreten ist und die Registrierung fehlgeschlagen ist. Normalerweise wird eine JSON-Antwort wie diese zurückgegeben, obwohl dies nicht für alle Fehler garantiert ist:
code language-json { "ok": false, "requestId": "1234567890", "message": "error message" }
-
5xx-Fehler: Tritt auf, wenn ein anderer Server-seitiger Fehler aufgetreten ist und die Registrierung fehlgeschlagen ist. Normalerweise wird eine JSON-Antwort wie diese zurückgegeben, obwohl dies nicht für alle Fehler garantiert ist:
code language-json { "ok": false, "requestId": "1234567890", "message": "error message" }
Anfrage zum Aufheben der Registrierung unregister-request
Durch diesen API-Aufruf wird die Registrierung eines Asset Compute-Clients aufgehoben. Danach kann /process
nicht mehr aufgerufen werden. Wenn Sie den API-Aufruf für einen nicht registrierten Client oder einen noch nicht registrierten Client verwenden, wird ein 404
-Fehler zurückgegeben.
POST
/unregister
Authorization
x-request-id
Antwort zum Aufheben der Registrierung unregister-response
application/json
X-Request-Id
X-Request-Id
oder eine eindeutig erstellte. Verwenden Sie diese Option, um systemübergreifende Anfragen oder Support-Anfragen zu identifizieren.ok
und requestId
.Die Status-Codes sind:
-
200 Erfolg: Tritt auf, wenn die Registrierung und das Journal gefunden und entfernt wurden.
code language-json { "ok": true, "requestId": "1234567890" }
-
401 Nicht autorisiert: Tritt auf, wenn die Anfrage keine gültige Authentifizierung aufweist. Ein Beispiel könnte ein ungültiges Zugriffs-Token oder ein ungültiger API-Schlüssel sein.
-
403 Verboten: Tritt auf, wenn die Anfrage keine gültige Autorisierung aufweist. Beispielsweise könnte ein gültiges Zugriffs-Token vorliegen, aber das Adobe Developer Console-Projekt (technisches Konto) hat nicht alle erforderlichen Services abonniert.
-
404 Nicht gefunden: Dieser Status wird angezeigt, wenn die angegebenen Anmeldeinformationen nicht registriert oder ungültig sind.
code language-json { "ok": true, "requestId": "1234567890" }
-
429 Zu viele Anfragen: Tritt auf, wenn das System überlastet ist. Clients sollten es mit einem exponentiellen Backoff erneut versuchen. Der Hauptteil ist leer.
-
4xx-Fehler: Tritt auf, wenn ein anderer Client-Fehler aufgetreten ist und die Aufhebung der Registrierung fehlgeschlagen ist. Normalerweise wird eine JSON-Antwort wie diese zurückgegeben, obwohl dies nicht für alle Fehler garantiert ist:
code language-json { "ok": false, "requestId": "1234567890", "message": "error message" }
-
5xx-Fehler: Tritt auf, wenn ein anderer Server-seitiger Fehler aufgetreten ist und die Registrierung fehlgeschlagen ist. Normalerweise wird eine JSON-Antwort wie diese zurückgegeben, obwohl dies nicht für alle Fehler garantiert ist:
code language-json { "ok": false, "requestId": "1234567890", "message": "error message" }
Verarbeitungsanfrage process-request
Der process
-Vorgang sendet einen Auftrag, der ein Quell-Asset basierend auf den Anweisungen in der Anfrage in mehrere Ausgabedarstellungen umwandelt. Benachrichtigungen über einen erfolgreichen Abschluss (Ereignistyp rendition_created
) oder einen Fehler (Ereignistyp rendition_failed
) werden an ein Ereignisjournal gesendet, das einmal mit /register
abgerufen werden muss, bevor eine beliebige Anzahl von /process
-Anfragen gestellt werden kann. Fehlerhaft gebildete Anfragen schlagen sofort mit einem Fehler-Code 400 fehl.
Binärdateien werden mithilfe von URLs referenziert, z. B. mit von Amazon AWS S3 vorsignierten URLs oder Azure Blob Storage-SAS-URLs. Sie dienen sowohl zum Lesen des source
-Assets (GET
-URLs) als auch zum Schreiben der Ausgabedarstellungen (PUT
-URLs). Der Client ist für die Generierung dieser vorsignierten URLs verantwortlich.
POST
/process
application/json
Authorization
x-request-id
JSON der Verarbeitungsanfrage process-request-json
Der Hauptteil der /process
-Anfrage ist ein JSON-Objekt mit diesem allgemeinen Schema:
{
"source": "",
"renditions" : []
}
Die folgenden Felder sind verfügbar:
source
string
fmt=zip
)."http://example.com/image.jpg"
source
object
fmt=zip
).{"url": "http://example.com/image.jpg", "mimeType": "image/jpeg" }
renditions
array
[{ "target": "https://....", "fmt": "png" }]
source
kann entweder ein <string>
sein, der als URL erkannt wird, oder ein <object>
mit einem zusätzlichen Feld. Die folgenden Varianten sind ähnlich:
"source": "http://example.com/image.jpg"
"source": {
"url": "http://example.com/image.jpg"
}
Quellobjektfelder source-object-fields
url
string
"http://example.com/image.jpg"
name
string
content-disposition
der binären Ressource. Der Standardwert ist „file“."image.jpg"
size
number
content-length
-Kopfzeile der binären Ressource.10234
mimetype
string
content-type
-Kopfzeile der binären Ressource."image/jpeg"
Beispiel einer vollständigen process
-Anfrage complete-process-request-example
{
"source": "https://www.adobe.com/content/dam/acom/en/lobby/lobby-bg-bts2017-logged-out-1440x860.jpg",
"renditions" : [{
"name": "image.48x48.png",
"target": "https://some-presigned-put-url-for-image.48x48.png",
"fmt": "png",
"width": 48,
"height": 48
},{
"name": "image.200x200.jpg",
"target": "https://some-presigned-put-url-for-image.200x200.jpg",
"fmt": "jpg",
"width": 200,
"height": 200
},{
"name": "cqdam.xmp.xml",
"target": "https://some-presigned-put-url-for-cqdam.xmp.xml",
"fmt": "xmp"
},{
"name": "cqdam.text.txt",
"target": "https://some-presigned-put-url-for-cqdam.text.txt",
"fmt": "text"
}]
}
Verarbeitungsantwort process-response
Die /process
-Anfrage wird sofort mit einem Erfolg oder Fehler basierend auf der grundlegenden Anfragenvalidierung zurückgegeben. Die tatsächliche Asset-Verarbeitung erfolgt asynchron.
application/json
X-Request-Id
X-Request-Id
oder eine eindeutig erstellte. Verwenden Sie diese Option, um systemübergreifende Anfragen oder Support-Anfragen zu identifizieren.ok
und requestId
.Status-Codes:
-
200 Erfolg: Wenn die Anfrage erfolgreich gesendet wurde. Die Antwort-JSON enthält
"ok": true
:code language-json { "ok": true, "requestId": "1234567890" }
-
400 Ungültige Anfrage: Wenn die Anfrage falsch strukturiert ist, z. B. wenn der JSON-Payload die erforderlichen Felder fehlen. Die Antwort-JSON enthält
"ok": false
:code language-json { "ok": false, "requestId": "1234567890", "message": "error message" }
-
401 Nicht autorisiert: Wenn die Anfrage keine gültige Authentifizierung aufweist. Ein Beispiel könnte ein ungültiges Zugriffs-Token oder ein ungültiger API-Schlüssel sein.
-
403 Verboten: Wenn die Anfrage keine gültige Autorisierung aufweist. Beispielsweise könnte ein gültiges Zugriffs-Token vorliegen, aber das Adobe Developer Console-Projekt (technisches Konto) hat nicht alle erforderlichen Services abonniert.
-
429 Zu viele Anfragen: Tritt auf, wenn das System überlastet ist, entweder aufgrund dieses bestimmten Clients oder aufgrund der Belastung insgesamt. Die Clients können es mit einem exponentiellen Backoff erneut versuchen. Der Hauptteil ist leer.
-
4xx-Fehler: Wenn ein anderer Client-Fehler aufgetreten ist. Normalerweise wird eine JSON-Antwort wie diese zurückgegeben, obwohl dies nicht für alle Fehler garantiert ist:
code language-json { "ok": false, "requestId": "1234567890", "message": "error message" }
-
5xx-Fehler: Wenn ein anderer Server-seitiger Fehler aufgetreten ist. Normalerweise wird eine JSON-Antwort wie diese zurückgegeben, obwohl dies nicht für alle Fehler garantiert ist:
code language-json { "ok": false, "requestId": "1234567890", "message": "error message" }
Die meisten Clients neigen dazu, dieselbe Anfrage mit exponentiellem Backoff bei Fehlern zu wiederholen, mit Ausnahme von Konfigurationsproblemen wie 401 oder 403 oder ungültigen Anfragen wie 400. Abgesehen von der regulären Ratenbegrenzung über Antworten vom Typ 429 kann ein vorübergehender Service-Ausfall oder eine vorübergehende Service-Beschränkung zu 5xx-Fehlern führen. Es wäre in dem Fall ratsam, es nach einer gewissen Zeit erneut zu versuchen.
Alle JSON-Antworten (sofern vorhanden) enthalten die requestId
, die dem Wert des X-Request-Id
-Headers entspricht. Adobe empfiehlt, Informationen aus dem Header zu lesen, da dieser immer vorhanden ist. Die requestId
wird auch in allen Ereignissen, die mit Verarbeitungsanfragen zusammenhängen, als requestId
zurückgegeben. Clients dürfen keine Annahmen über das Format dieser Zeichenfolge treffen. Es handelt sich um eine opake Zeichenfolgenkennung.
Opt-in für die Nachbearbeitung opt-in-to-post-processing
Das Asset Compute SDK unterstützt eine Reihe grundlegender Optionen für die Nachbearbeitung von Bildern. Benutzerdefinierte Sekundärprogramme können sich explizit für die Nachbearbeitung entscheiden, indem sie das Feld postProcess
im Ausgabedarstellungsobjekt auf true
setzen.
Folgende Anwendungsfälle werden unterstützt:
- „Zuschneiden“ ist eine Ausgabedarstellung für ein Rechteck, dessen Grenzen durch „crop.w“, „crop.h“, „crop.x“ und „crop.y“ definiert sind. Die Zuschnittdetails werden im Feld
instructions.crop
des Ausgabedarstellungsobjekts angegeben. - Ändern der Bildgröße unter Verwendung von Breite, Höhe oder beidem. Dies wird durch
instructions.width
undinstructions.height
im Ausgabedarstellungsobjekt definiert. Um die Größe nur unter Verwendung von Breite oder Höhe zu ändern, legen Sie nur einen Wert fest. Compute Service behält das Seitenverhältnis bei. - Festlegen der Qualität für ein JPEG-Bild. Diese wird durch
instructions.quality
im Ausgabedarstellungsobjekt definiert. Ein Qualitätsniveau von 100 steht für höchste Qualität, niedrigere Zahlen bedeuten einen Qualitätsverlust. - Erstellen von Zwischenzeilenbildern. Dies wird durch
instructions.interlace
im Ausgabedarstellungsobjekt definiert. - Stellen Sie die DPI so ein, dass die gerenderte Größe für Desktop-Publishing-Zwecke angepasst wird, indem Sie die auf die Pixel angewendete Skalierung anpassen. Dies wird durch
instructions.dpi
im Ausgabedarstellungsobjekt definiert, um die DPI-Auflösung zu ändern. Verwenden Sie dieconvertToDpi
-Anweisungen, um die Größe des Bildes so zu ändern, dass es bei einer anderen Auflösung dieselbe Größe hat. - Ändern Sie die Größe des Bildes so, dass seine gerenderte Breite oder Höhe bei der angegebenen Zielauflösung (DPI) mit dem Original übereinstimmt. Dies wird durch
instructions.convertToDpi
im Ausgabedarstellungsobjekt definiert.
Wasserzeichen-Assets add-watermark
Das Asset Compute SDK unterstützt das Hinzufügen eines Wasserzeichens zu PNG-, JPEG-, TIFF- und GIF-Bilddateien. Das Wasserzeichen wird der Ausgabedarstellung entsprechend den Ausgabedarstellungsanweisungen im watermark
-Objekt hinzugefügt.
Das Wasserzeichen wird während der Nachbearbeitung der Ausgabedarstellung hinzugefügt. Um Assets mit Wasserzeichen zu versehen, aktiviert das benutzerdefinierte Sekundärprogramm die Nachbearbeitung, indem es das Feld postProcess
im Ausgabedarstellungsobjekt auf true
setzt. Wenn sich das Sekundärprogramm nicht dafür entscheidet, wird das Wasserzeichen nicht hinzugefügt, auch wenn das Wasserzeichenobjekt im Ausgabedarstellungsobjekt in der Anfrage gesetzt ist.
Ausgabedarstellungsanweisungen rendition-instructions
Im Folgenden sind die verfügbaren Optionen für das Array renditions
in /process
aufgeführt.
Allgemeine Felder common-fields
fmt
string
text
zum Extrahieren von Text und xmp
zum Extrahieren von XMP-Metadaten als XML sein. Siehe Unterstützte Formate.png
worker
string
https://
-URL sein. Wenn dieses Feld vorhanden ist, erstellt ein benutzerdefiniertes Programm die Ausgabedarstellung. Jedes andere festgelegte Ausgabedarstellungsfeld wird dann im benutzerdefinierten Programm verwendet."https://1234.adobeioruntime.net
/api/v1/web
/example-custom-worker-master/worker"
target
string
http://w.com/img.jpg
target
object
Mehrteilige vorsignierte Informationen zum URL-Upload für die generierte Ausgabedarstellung. Diese Informationen gelten für den direkten binären AEM-/Oak-Upload mit diesem mehrteiligen Upload-Verhalten.
Felder:
urls
: Array von Zeichenfolgen, eine für jede vorsignierte Teil-URLminPartSize
: die Mindestgröße für eine Teil-URLmaxPartSize
: die Maximalgröße für eine Teil-URL
{ "urls": [ "https://part1...", "https://part2..." ], "minPartSize": 10000, "maxPartSize": 100000 }
userData
object
{ ... }
Ausgabedarstellungsspezifische Felder rendition-specific-fields
Eine Liste der derzeit unterstützten Dateiformate finden Sie unter Unterstützte Dateiformate.
*
*
embedBinaryLimit
number
in ByteembedBinaryLimit
ist, wird sie an einem Ort im Cloud-Speicher abgelegt und nicht in das Ereignis eingebettet.3276
width
number
200
height
number
200
Das Seitenverhältnis wird in folgenden Fällen immer beibehalten:
- Wenn sowohl
width
als auchheight
angegeben werden, wird die Bildgröße angepasst, wobei das Seitenverhältnis beibehalten wird. - Wenn nur
width
oderheight
angegeben wird, verwendet das resultierende Bild die entsprechende Abmessung und behält dabei das Seitenverhältnis bei. - Wenn
width
oderheight
nicht angegeben wird, wird die Pixelgröße des Originalbilds verwendet. Diese hängt vom Quelltyp ab. Bei einigen Formaten, z. B. PDF-Dateien, wird eine Standardgröße verwendet. Es kann eine Maximalgröße geben.
quality
number
1
bis 100
an. Gilt nur für Bilddarstellungen.90
xmp
string
interlace
bool
true
setzen. Hat keine Auswirkungen auf andere Dateiformate.jpegSize
number
quality
-Einstellung. Hat keine Auswirkungen auf andere Formate.dpi
number
oder object
96
oder { xdpi: 96, ydpi: 96 }
convertToDpi
number
oder object
96
oder { xdpi: 96, ydpi: 96 }
files
array
Liste der Dateien, die in das ZIP-Archiv aufgenommen werden sollen (fmt=zip
). Jeder Eintrag kann entweder eine URL-Zeichenfolge oder ein Objekt mit folgenden Feldern sein:
url
: URL zum Herunterladen der Dateipath
: Datei unter diesem Pfad in der ZIP-Datei speichern
[{ "url": "https://host/asset.jpg", "path": "folder/location/asset.jpg" }]
duplicate
string
fmt=zip
). Standardmäßig erzeugen mehrere Dateien, die im selben Pfad in der ZIP gespeichert sind, einen Fehler. Wird duplicate
auf ignore
gesetzt, wird nur das erste Asset gespeichert und der Rest wird ignoriert.ignore
Wasserzeichenspezifische Felder watermark-specific-fields
Das PNG-Format wird für Wasserzeichen verwendet.
scale
number
0.0
und 1.0
. 1.0
bedeutet, dass das Wasserzeichen seinen ursprünglichen Maßstab (1:1) aufweist. Niedrigere Werte reduzieren die Größe des Wasserzeichens.0.5
bedeutet die Hälfte der Originalgröße.image
url
Asynchrone Ereignisse asynchronous-events
Sobald die Verarbeitung einer Ausgabedarstellung abgeschlossen ist oder wenn ein Fehler auftritt, wird ein Ereignis an ein Adobe I/O Events Journal
gesendet. Clients müssen auf die Journal-URL lauschen, die über /register
bereitgestellt wird. Die Journalantwort enthält ein event
-Array, das aus einem Objekt für jedes Ereignis besteht, von dem das Feld event
die tatsächliche Ereignis-Payload enthält.
Der Adobe I/O Events
-Typ für alle Ereignisse von Asset Compute Service ist asset_compute
. Das Journal wird automatisch nur für diesen Ereignistyp abonniert und es ist nicht mehr erforderlich, basierend auf dem Adobe Developer-Ereignistyp zu filtern. Die Service-spezifischen Ereignistypen stehen in der type
-Eigenschaft des Ereignisses zur Verfügung.
Ereignistypen event-types
rendition_created
rendition_failed
Ereignisattribute event-attributes
date
string
*
requestId
string
*
/process
, identisch mit der X-Request-Id
-Kopfzeile.source
object
*
source
der /process
-Anfrage.userData
object
*
userData
der Ausgabedarstellung aus der /process
-Anfrage, falls festgelegt.rendition
object
rendition_*
/process
übergeben wird.errorReason
string
rendition_failed
errorMessage
string
rendition_failed
Metadaten metadata
repo:size
repo:sha1
dc:format
repo:encoding
tiff:ImageWidth
tiff:ImageLength
Fehlerursachen error-reasons
RenditionFormatUnsupported
SourceUnsupported
SourceCorrupt
RenditionTooLarge
target
angegebenen vorsignierten URLs hochgeladen werden. Die tatsächliche Ausgabedarstellungsgröße ist als Metadaten unter repo:size
verfügbar und wird vom Client verwendet, um diese Ausgabedarstellung mit der richtigen Anzahl vorsignierter URLs erneut zu verarbeiten.GenericError