API HTTP Asset Compute Service asset-compute-http-api
L’utilizzo dell’API è limitato a scopi di sviluppo. L’API viene fornita come contesto durante lo sviluppo di applicazioni personalizzate. Adobe Experience Manager as a Cloud Service utilizza l'API per passare le informazioni di elaborazione a un'applicazione personalizzata. Per ulteriori informazioni, vedere Utilizzare i microservizi delle risorse e i profili di elaborazione.
Qualsiasi client dell'API HTTP Asset Compute Service deve seguire questo flusso di alto livello:
-
È stato eseguito il provisioning di un client come progetto Adobe Developer Console in un'organizzazione IMS. Ogni client separato (sistema o ambiente) richiede un proprio progetto separato per separare il flusso di dati dell’evento.
-
Un client genera un token di accesso per l'account tecnico utilizzando l'autenticazione JWT (Service Account).
-
Un client chiama
/register
una sola volta per recuperare l'URL del diario. -
Un client chiama
/process
per ogni risorsa per la quale desidera generare rappresentazioni. La chiamata è asincrona. -
Un client esegue regolarmente il polling del diario per ricevere eventi. Riceve eventi per ogni rendering richiesto quando il rendering viene elaborato correttamente (
rendition_created
tipo di evento) o se si verifica un errore (rendition_failed
tipo di evento).
Il modulo adobe-asset-compute-client semplifica l'utilizzo dell'API nel codice Node.js.
Autenticazione e autorizzazione authentication-and-authorization
Tutte le API richiedono l’autenticazione tramite token di accesso. Le richieste devono impostare le seguenti intestazioni:
-
Intestazione
Authorization
con token Bearer, che è il token dell'account tecnico, ricevuto tramite JWT Exchange dal progetto Adobe Developer Console. Gli ambiti sono documentati di seguito. -
Intestazione
x-gw-ims-org-id
con ID organizzazione IMS. -
x-api-key
con l'ID client del progetto Adobe Developers Console.
Ambiti scopes
Verifica che il token di accesso sia conforme ai seguenti ambiti:
openid
AdobeID
asset_compute
read_organizations
event_receiver
event_receiver_api
adobeio_api
additional_info.roles
additional_info.projectedProductContext
Questi ambiti richiedono la sottoscrizione del progetto Adobe Developer Console ai servizi Asset Compute
, I/O Events
e I/O Management API
. La ripartizione dei singoli ambiti è la seguente:
-
Base
- ambiti:
openid,AdobeID
- ambiti:
-
Asset compute
- metascope:
asset_compute_meta
- ambiti:
asset_compute,read_organizations
- metascope:
-
Adobe
I/O Events
- metascope:
event_receiver_api
- ambiti:
event_receiver,event_receiver_api
- metascope:
-
Adobe
I/O Management API
- metascope:
ent_adobeio_sdk
- ambiti:
adobeio_api,additional_info.roles,additional_info.projectedProductContext
- metascope:
Registrazione register
Ogni client di Asset Compute service - un progetto Adobe Developer Console univoco sottoscritto al servizio - deve registrarsi prima di elaborare le richieste. Il passaggio di registrazione restituisce il giornale di registrazione eventi univoco necessario per recuperare gli eventi asincroni dall’elaborazione della rappresentazione.
Al termine del ciclo di vita, un client può annullare la registrazione.
Registra richiesta register-request
Questa chiamata API configura un client Asset Compute e fornisce l'URL del giornale di registrazione eventi. Questo processo è un’operazione idempotente e deve essere chiamato solo una volta per ogni client. Può essere richiamato nuovamente per recuperare l’URL del diario.
POST
/register
Authorization
x-request-id
Registra risposta register-response
application/json
X-Request-Id
X-Request-Id
o generata in modo univoco. Da utilizzare per identificare le richieste tra sistemi, o richieste di supporto, o entrambe.journal
, ok
o requestId
campi.I codici di stato HTTP sono:
-
200 riuscito: quando la richiesta è riuscita. L'URL
journal
riceve notifiche sui risultati dell'elaborazione asincrona avviata tramite/process
. Avvisarendition_created
eventi al completamento orendition_failed
eventi se il processo non riesce.code language-json { "ok": true, "journal": "https://api.adobe.io/events/organizations/xxxxx/integrations/xxxx/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx", "requestId": "1234567890" }
-
401 Non autorizzato: si verifica quando la richiesta non dispone di autenticazione valida. Un esempio potrebbe essere un token di accesso non valido o una chiave API non valida.
-
403 Non consentito: si verifica quando la richiesta non dispone di autorizzazione valida. Un esempio potrebbe essere un token di accesso valido, ma il progetto Adobe Developer Console (account tecnico) non è abbonato a tutti i servizi richiesti.
-
429 Troppe richieste: si verifica quando questo client o in altro modo sovraccarica il sistema. I client devono riprovare con un backoff esponenziale. Il corpo è vuoto.
-
4xx errore: errore del client e registrazione non riuscita. Di solito viene restituita una risposta JSON come questa, anche se ciò non è garantito per tutti gli errori:
code language-json { "ok": false, "requestId": "1234567890", "message": "error message" }
-
5xx error: si verifica quando si è verificato un altro errore sul lato server e la registrazione non è riuscita. Di solito viene restituita una risposta JSON come questa, anche se ciò non è garantito per tutti gli errori:
code language-json { "ok": false, "requestId": "1234567890", "message": "error message" }
Annulla registrazione richiesta unregister-request
Questa chiamata API annulla la registrazione di un client Asset Compute. Dopo l'annullamento della registrazione non sarà più possibile chiamare /process
. L'utilizzo della chiamata API per un client non registrato o per un client non ancora registrato restituisce un errore 404
.
POST
/unregister
Authorization
x-request-id
Annulla registrazione risposta unregister-response
application/json
X-Request-Id
X-Request-Id
o generata in modo univoco. Utilizza per identificare le richieste tra i sistemi o le richieste di supporto.ok
e requestId
campi.I codici di stato sono:
-
200 operazione riuscita: si verifica quando la registrazione e il giornale di registrazione vengono trovati e rimossi.
code language-json { "ok": true, "requestId": "1234567890" }
-
401 Non autorizzato: si verifica quando la richiesta non dispone di autenticazione valida. Un esempio potrebbe essere un token di accesso non valido o una chiave API non valida.
-
403 Non consentito: si verifica quando la richiesta non dispone di autorizzazione valida. Un esempio potrebbe essere un token di accesso valido, ma il progetto Adobe Developer Console (account tecnico) non è abbonato a tutti i servizi richiesti.
-
404 Non trovato: questo stato viene visualizzato quando le credenziali fornite vengono annullate o non sono valide.
code language-json { "ok": true, "requestId": "1234567890" }
-
429 Troppe richieste: si verifica quando il sistema è sovraccarico. I client devono riprovare con un backoff esponenziale. Il corpo è vuoto.
-
4xx errore: si verifica quando si è verificato un altro errore del client e l'annullamento della registrazione non è riuscito. Di solito viene restituita una risposta JSON come questa, anche se ciò non è garantito per tutti gli errori:
code language-json { "ok": false, "requestId": "1234567890", "message": "error message" }
-
5xx error: si verifica quando si è verificato un altro errore sul lato server e la registrazione non è riuscita. Di solito viene restituita una risposta JSON come questa, anche se ciò non è garantito per tutti gli errori:
code language-json { "ok": false, "requestId": "1234567890", "message": "error message" }
Richiesta di elaborazione process-request
L'operazione process
invia un processo che trasforma una risorsa di origine in più rappresentazioni, in base alle istruzioni contenute nella richiesta. Le notifiche di completamento (tipo evento rendition_created
) o di errori (tipo evento rendition_failed
) vengono inviate a un giornale di registrazione eventi che deve essere recuperato una volta con /register
prima di effettuare un numero qualsiasi di richieste /process
. Le richieste formate in modo errato hanno immediatamente esito negativo con un codice di errore 400.
I riferimenti binari vengono eseguiti utilizzando URL, ad esempio URL prefirmati di Amazon AWS S3 o URL SAS di archiviazione Azure Blob. Utilizzato sia per leggere la risorsa source
(GET
URL) che per scrivere le rappresentazioni (PUT
URL). Il client è responsabile della generazione di questi URL prefirmati.
POST
/process
application/json
Authorization
x-request-id
Elabora JSON richiesta process-request-json
Il corpo della richiesta di /process
è un oggetto JSON con questo schema di alto livello:
{
"source": "",
"renditions" : []
}
I campi disponibili sono:
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
può essere un <string>
visualizzato come URL oppure un <object>
con un campo aggiuntivo. Le seguenti varianti sono simili:
"source": "http://example.com/image.jpg"
"source": {
"url": "http://example.com/image.jpg"
}
Campi oggetto Source source-object-fields
url
string
"http://example.com/image.jpg"
name
string
content-disposition
della risorsa binaria. Impostazione predefinita: "file"."image.jpg"
size
number
content-length
della risorsa binaria.10234
mimetype
string
content-type
della risorsa binaria."image/jpeg"
Un esempio completo di richiesta process
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"
}]
}
Risposta processo process-response
La richiesta /process
restituisce immediatamente un risultato positivo o negativo in base alla convalida della richiesta di base. L’elaborazione effettiva delle risorse avviene in modo asincrono.
application/json
X-Request-Id
X-Request-Id
o generata in modo univoco. Utilizza per identificare le richieste tra i sistemi o le richieste di supporto.ok
e requestId
campi.Codici di stato:
-
200 completato: se la richiesta è stata inviata correttamente. JSON di risposta include
"ok": true
:code language-json { "ok": true, "requestId": "1234567890" }
-
400 Richiesta non valida: se la richiesta non è strutturata correttamente, ad esempio se nel payload JSON mancano i campi obbligatori. JSON di risposta include
"ok": false
:code language-json { "ok": false, "requestId": "1234567890", "message": "error message" }
-
401 Non autorizzato: quando la richiesta non dispone di autenticazione valida. Un esempio potrebbe essere un token di accesso non valido o una chiave API non valida.
-
403 Non consentito: se la richiesta non dispone di autorizzazione valida. Un esempio potrebbe essere un token di accesso valido, ma il progetto Adobe Developer Console (account tecnico) non è abbonato a tutti i servizi richiesti.
-
429 Troppe richieste: si verifica quando il sistema è sovraccarico, a causa di questo particolare client o della domanda complessiva. I client possono riprovare con un backoff esponenziale. Il corpo è vuoto.
-
4xx errore: quando si è verificato un altro errore del client. Di solito viene restituita una risposta JSON come questa, anche se ciò non è garantito per tutti gli errori:
code language-json { "ok": false, "requestId": "1234567890", "message": "error message" }
-
5xx errore: quando si è verificato un altro errore lato server. Di solito viene restituita una risposta JSON come questa, anche se ciò non è garantito per tutti gli errori:
code language-json { "ok": false, "requestId": "1234567890", "message": "error message" }
La maggior parte dei client è probabilmente incline a ritentare la stessa richiesta con backoff esponenziale per qualsiasi errore eccetto problemi di configurazione come 401 o 403 o richieste non valide come 400. A parte la regolare limitazione delle tariffe tramite risposte 429, un’interruzione temporanea del servizio o una limitazione potrebbero causare errori 5xx. Sarebbe quindi consigliabile riprovare dopo un certo periodo di tempo.
Tutte le risposte JSON (se presenti) includono requestId
, che è lo stesso valore dell'intestazione X-Request-Id
. Adobe consiglia di leggere dall’intestazione perché è sempre presente. requestId
viene restituito anche in tutti gli eventi relativi all'elaborazione delle richieste come requestId
. I client non devono fare alcuna supposizione sul formato di questa stringa. È un identificatore di stringa opaco.
Consenso alla post-elaborazione opt-in-to-post-processing
Asset Compute SDK supporta un set di opzioni di post-elaborazione di base per le immagini. I processi di lavoro personalizzati possono acconsentire in modo esplicito alla post-elaborazione impostando il campo postProcess
sull'oggetto rendering su true
.
I casi d’uso supportati sono:
- Ritaglio è una rappresentazione di un rettangolo i cui limiti sono definiti da crop.w, crop.h, crop.x e crop.y. I dettagli di ritaglio sono specificati nel campo
instructions.crop
dell'oggetto di rendering. - Ridimensionare le immagini utilizzando la larghezza, l'altezza o entrambe.
instructions.width
einstructions.height
lo definiscono nell'oggetto di rendering. Per ridimensionare utilizzando solo la larghezza o l'altezza, impostate un solo valore. Il servizio di elaborazione conserva le proporzioni. - Imposta la qualità per un'immagine JPEG.
instructions.quality
lo definisce nell'oggetto di rendering. Un livello di qualità pari a 100 rappresenta la qualità più elevata, mentre un numero inferiore indica una diminuzione della qualità. - Creazione di immagini interlacciate.
instructions.interlace
lo definisce nell'oggetto di rendering. - Impostate DPI per regolare le dimensioni di rendering per la pubblicazione desktop regolando la scala applicata ai pixel.
instructions.dpi
lo definisce nell'oggetto di rendering per modificare la risoluzione dpi. Tuttavia, per ridimensionare l'immagine in modo che abbia le stesse dimensioni a una risoluzione diversa, utilizzare le istruzioniconvertToDpi
. - Ridimensiona l’immagine in modo che la larghezza o l’altezza di cui è stato eseguito il rendering rimanga invariata rispetto all’originale alla risoluzione di destinazione specificata (DPI).
instructions.convertToDpi
lo definisce nell'oggetto di rendering.
Risorse filigrana add-watermark
Asset Compute SDK supporta l'aggiunta di una filigrana ai file immagine PNG, JPEG, TIFF e GIF. La filigrana viene aggiunta seguendo le istruzioni per il rendering nell'oggetto watermark
del rendering.
La filigrana viene eseguita durante la post-elaborazione della rappresentazione. Per applicare una filigrana alle risorse, il processo di lavoro personalizzato opta per la post-elaborazione impostando il campo postProcess
dell'oggetto di rendering su true
. Se il lavoratore non acconsente, la filigrana non viene applicata, anche se l’oggetto filigrana è impostato sull’oggetto di rendering nella richiesta.
Istruzioni per la rappresentazione rendition-instructions
Di seguito sono riportate le opzioni disponibili per l'array renditions
in /process
.
Campi comuni common-fields
fmt
string
text
per l'estrazione del testo e xmp
per l'estrazione dei metadati XMP come XML. Visualizza formati supportatipng
worker
string
https://
. Se questo campo è presente, la copia trasformata viene creata da un'applicazione personalizzata. Qualsiasi altro campo di rendering impostato viene quindi utilizzato nell’applicazione personalizzata."https://1234.adobeioruntime.net
/api/v1/web
/example-custom-worker-master/worker"
target
string
http://w.com/img.jpg
target
object
Informazioni sul caricamento di URL prefirmati in più parti per la rappresentazione generata. Queste informazioni sono per AEM / Caricamento binario diretto Oak con questo comportamento di caricamento multipart.
Campi:
urls
: array di stringhe, uno per ogni URL parte prefirmatominPartSize
: dimensione minima da utilizzare per una parte = urlmaxPartSize
: dimensione massima da utilizzare per una parte = url
{ "urls": [ "https://part1...", "https://part2..." ], "minPartSize": 10000, "maxPartSize": 100000 }
userData
object
{ ... }
Campi specifici della rappresentazione rendition-specific-fields
Per un elenco dei formati di file attualmente supportati, vedere formati di file supportati.
*
*
embedBinaryLimit
number
in byteembedBinaryLimit
, la copia viene inserita in una posizione nell'archiviazione cloud e non viene incorporata nell'evento.3276
width
number
200
height
number
200
Le proporzioni vengono sempre mantenute se:
- Sono specificati sia
width
cheheight
, quindi l'immagine si adatta alle dimensioni mantenendo le proporzioni - Se si specifica solo
width
oheight
, l'immagine risultante utilizza la dimensione corrispondente mantenendo le proporzioni - Se
width
oheight
non è specificato, viene utilizzata la dimensione in pixel dell'immagine originale. Dipende dal tipo di origine. Per alcuni formati, ad esempio i file PDF, viene utilizzata una dimensione predefinita. Può essere presente un limite di dimensioni massimo.
quality
number
1
e 100
. Applicabile solo alle rappresentazioni di immagini.90
xmp
string
interlace
bool
true
. Non ha alcun effetto su altri formati di file.jpegSize
number
quality
. Non ha alcun effetto su altri formati.dpi
number
oppure object
96
oppure { xdpi: 96, ydpi: 96 }
convertToDpi
number
oppure object
96
oppure { xdpi: 96, ydpi: 96 }
files
array
Elenco di file da includere nell'archivio ZIP (fmt=zip
). Ogni voce può essere una stringa URL o un oggetto con i campi:
url
: URL per scaricare il filepath
: archivia il file nel percorso specificato nel file ZIP
[{ "url": "https://host/asset.jpg", "path": "folder/location/asset.jpg" }]
duplicate
string
fmt=zip
). Per impostazione predefinita, più file memorizzati nello stesso percorso nel file ZIP generano un errore. Se si imposta duplicate
su ignore
, viene archiviata solo la prima risorsa e il resto viene ignorato.ignore
Campi specifici della filigrana watermark-specific-fields
Il formato PNG viene utilizzato come filigrana.
scale
number
0.0
e 1.0
. 1.0
significa che la filigrana ha la scala originale (1:1) e i valori più bassi ne riducono la dimensione.0.5
indica metà delle dimensioni originali.image
url
Eventi asincroni asynchronous-events
Al termine dell'elaborazione di una copia trasformata o quando si verifica un errore, un evento viene inviato a un Adobe I/O Events Journal
. I client devono ascoltare l'URL del diario fornito tramite /register
. La risposta del journal include un array event
costituito da un oggetto per ogni evento, di cui il campo event
include il payload dell'evento effettivo.
Il tipo di Adobe I/O Events
per tutti gli eventi di Asset Compute Service è asset_compute
. Il giornale di registrazione è sottoscritto automaticamente solo a questo tipo di evento e non è necessario filtrare ulteriormente in base al tipo di evento Adobe Developer. I tipi di evento specifici del servizio sono disponibili nella proprietà type
dell'evento.
Tipi di evento event-types
rendition_created
rendition_failed
Attributi evento event-attributes
date
string
*
requestId
string
*
/process
, come intestazione X-Request-Id
.source
object
*
source
della richiesta /process
.userData
object
*
userData
della rappresentazione dalla richiesta /process
se impostata.rendition
object
rendition_*
/process
.errorMessage
string
rendition_failed
Metadati metadata
repo:size
repo:sha1
dc:format
repo:encoding
tiff:ImageWidth
tiff:ImageLength
Motivi di errore error-reasons
RenditionFormatUnsupported
SourceUnsupported
SourceCorrupt
RenditionTooLarge
target
. Le dimensioni effettive del rendering sono disponibili come metadati in repo:size
e vengono utilizzate dal client per rielaborare il rendering con il numero corretto di URL prefirmati.GenericError