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. Jeder separate Client (System oder Umgebung) benötigt ein eigenes Projekt, 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 erleichtert die Verwendung der API in 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
Dazu 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 Ereignisse
- 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
und/oder requestId
.Die HTTP-Status-Codes lauten:
-
200 Erfolg: Bei erfolgreicher Anfrage. Enthält die
journal
-URL, die über alle Ergebnisse der über/process
ausgelösten asynchronen Verarbeitung benachrichtigt wird (als Ereignistyprendition_created
, wenn erfolgreich, oder alsrendition_failed
, wenn fehlgeschlagen).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 ist. 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 und/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: Tritt auf, wenn für die angegebenen Anmeldeinformationen keine aktuelle Registrierung vorliegt.
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 Vorgang, der ein Quell-Asset basierend auf den Anweisungen in der Anfrage in mehrere Ausgabedarstellungen umwandelt. Benachrichtigungen über den erfolgreichen Abschluss (Ereignistyp rendition_created
) oder 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 400-Fehler-Code fehl.
Binärdateien werden mithilfe von URLs wie vorsignierten Amazon AWS S3-URLs oder Azure Blob-Speicher-SAS-URLs referenziert, um sowohl das source
-Asset (GET
-URLs) zu lesen als auch die Ausgabedarstellungen (PUT
-URLs) zu schreiben. 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
-Kopfzeile 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 und/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 fehlerhaft gebildet wurde, z. B. fehlende erforderliche Felder in der Anfrage-JSON. 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: Wenn das System durch diesen Client oder allgemein überlastet ist. 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 wahrscheinlich dazu, genau 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 429-Antworten kann ein vorübergehender Service-Ausfall oder eine vorübergehende Service-Beschränkung zu 5xx-Fehlern führen. Es wäre dann ratsam, es nach einer gewissen Zeit erneut zu versuchen.
Alle JSON-Antworten (sofern vorhanden) enthalten die requestId
, die dem Wert der X-Request-Id
-Kopfzeile entspricht. Es wird empfohlen, aus der Kopfzeile zu lesen, da diese immer vorhanden ist. Die requestId
wird auch in allen Ereignissen, die mit Verarbeitungsanfragen zusammenhängen, als requestId
zurückgegeben. Kunden dürfen keine Annahmen über das Format dieser Zeichenfolge treffen, es handelt sich um eine undurchsichtige Zeichenfolgenkennung.
Aktivieren der 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:
- Beschneiden einer Ausgabedarstellung auf ein Rechteck, dessen Beschränkungen durch „crop.w“, „crop.h“, „crop.x“ und „crop.y“ definiert werden. Dies wird durch
instructions.crop
im Ausgabedarstellungsobjekt festgelegt. - Ändern der Bildgröße unter Verwendung von Breite, Höhe oder beidem. Dies wird durch
instructions.width
undinstructions.height
im Ausgabedarstellungsobjekt festgelegt. 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. Dies wird durch
instructions.quality
im Ausgabedarstellungsobjekt festgelegt. Die beste Qualität wird mit100
angegeben und kleinere Werte weisen auf eine reduzierte Qualität hin. - Erstellen von Zwischenzeilenbildern. Dies wird durch
instructions.interlace
im Ausgabedarstellungsobjekt festgelegt. - 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 festgelegt, 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 festgelegt.
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
Dies sind die verfügbaren Optionen für das renditions
-Array in /process.
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, wird die Ausgabedarstellung von einem benutzerdefinierten Programm erstellt. 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 URL-Upload-Informationen für die generierte Ausgabedarstellung. Dies gilt 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
-Limit 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
oder nurheight
angegeben wird, verwendet das resultierende Bild die entsprechende Abmessung und behält dabei das Seitenverhältnis bei. - Wenn weder
width
nochheight
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) hat. 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 ein Fehler auftritt, wird ein Ereignis an ein Adobe I/O -Ereignisjournal gesendet. Clients müssen die Journal-URL abrufen, die über /register bereitgestellt wird. Die Journalantwort enthält ein event
-Array, das aus einem Objekt für jedes Ereignis besteht, von dem das event
-Feld die tatsächliche Ereignis-Payload enthält.
Der Adobe I/O-Ereignistyp 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 I/O-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 in repo:size
verfügbar und kann vom Client verwendet werden, um diese Ausgabedarstellung mit der richtigen Anzahl vorsignierter URLs erneut zu verarbeiten.GenericError