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
/registernur einmal auf, um die Journal-URL abzurufen. -
Ein Client ruft
/processfü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-keymit der Client-ID des Adobe Developers Console-Projekts.
Bereiche scopes
Stellen Sie die folgenden Bereiche für das Zugriffs-Token sicher:
openidAdobeIDasset_computeread_organizationsevent_receiverevent_receiver_apiadobeio_apiadditional_info.rolesadditional_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/registerAuthorizationx-request-idRegistrierungsantwort register-response
application/jsonX-Request-IdX-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/processinitiierten 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/unregisterAuthorizationx-request-idAntwort zum Aufheben der Registrierung unregister-response
application/jsonX-Request-IdX-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/processapplication/jsonAuthorizationx-request-idJSON 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:
sourcestringfmt=zip)."http://example.com/image.jpg"sourceobjectfmt=zip).{"url": "http://example.com/image.jpg", "mimeType": "image/jpeg" }renditionsarray[{ "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
urlstring"http://example.com/image.jpg"namestringcontent-disposition der binären Ressource. Der Standardwert ist „file“."image.jpg"sizenumbercontent-length-Kopfzeile der binären Ressource.10234mimetypestringcontent-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/jsonX-Request-IdX-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.cropdes Ausgabedarstellungsobjekts angegeben. - Ändern der Bildgröße unter Verwendung von Breite, Höhe oder beidem. Dies wird durch
instructions.widthundinstructions.heightim 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.qualityim 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.interlaceim 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.dpiim 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.convertToDpiim 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
fmtstringtext zum Extrahieren von Text und xmp zum Extrahieren von XMP-Metadaten als XML sein. Siehe Unterstützte Formate.pngworkerstringhttps://-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"targetstringhttp://w.com/img.jpgtargetobjectMehrteilige 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 }userDataobject{ ... }Ausgabedarstellungsspezifische Felder rendition-specific-fields
Eine Liste der derzeit unterstützten Dateiformate finden Sie unter Unterstützte Dateiformate.
**embedBinaryLimitnumber in ByteembedBinaryLimit ist, wird sie an einem Ort im Cloud-Speicher abgelegt und nicht in das Ereignis eingebettet.3276widthnumber200heightnumber200Das Seitenverhältnis wird in folgenden Fällen immer beibehalten:
- Wenn sowohl
widthals auchheightangegeben werden, wird die Bildgröße angepasst, wobei das Seitenverhältnis beibehalten wird. - Wenn nur
widthoderheightangegeben wird, verwendet das resultierende Bild die entsprechende Abmessung und behält dabei das Seitenverhältnis bei. - Wenn
widthoderheightnicht 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.
qualitynumber1 bis 100 an. Gilt nur für Bilddarstellungen.90xmpstringinterlacebooltrue setzen. Hat keine Auswirkungen auf andere Dateiformate.jpegSizenumberquality-Einstellung. Hat keine Auswirkungen auf andere Formate.dpinumber oder object96 oder { xdpi: 96, ydpi: 96 }convertToDpinumber oder object96 oder { xdpi: 96, ydpi: 96 }filesarrayListe 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" }]duplicatestringfmt=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.ignoreWasserzeichenspezifische Felder watermark-specific-fields
Das PNG-Format wird für Wasserzeichen verwendet.
scalenumber0.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.imageurlAsynchrone 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_createdrendition_failedEreignisattribute event-attributes
datestring*requestIdstring*/process, identisch mit der X-Request-Id-Kopfzeile.sourceobject*source der /process-Anfrage.userDataobject*userData der Ausgabedarstellung aus der /process-Anfrage, falls festgelegt.renditionobjectrendition_*/process übergeben wird.errorReasonstringrendition_failederrorMessagestringrendition_failedMetadaten metadata
repo:sizerepo:sha1dc:formatrepo:encodingtiff:ImageWidthtiff:ImageLengthFehlerursachen error-reasons
RenditionFormatUnsupportedSourceUnsupportedSourceCorruptRenditionTooLargetarget 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