Asset Compute Service API HTTP asset-compute-http-api
El uso de la API se limita a fines de desarrollo. La API se proporciona como contexto al desarrollar aplicaciones personalizadas. Adobe Experience Manager as a Cloud Service utiliza la API para pasar la información de procesamiento a una aplicación personalizada. Para obtener más información, consulte Uso de microservicios de recursos y perfiles de procesamiento.
Cualquier cliente del Asset Compute Service La API HTTP debe seguir este flujo de alto nivel:
-
Un cliente está aprovisionado como Adobe Developer Console proyecto en una organización IMS. Cada cliente independiente (sistema o entorno) requiere su propio proyecto independiente para separar el flujo de datos de evento.
-
Un cliente genera un token de acceso para la cuenta técnica mediante Autenticación JWT (cuenta de servicio).
-
Un cliente llama a
/register
solo una vez para recuperar la dirección URL del diario. -
Un cliente llama a
/process
para cada recurso para el que desea generar representaciones. La llamada es asincrónica. -
Un cliente sondea regularmente el diario para recibir eventos. Recibe eventos para cada representación solicitada cuando la representación se procesa correctamente (
rendition_created
tipo de evento) o si hay un error (rendition_failed
tipo de evento).
El @adobe/asset-compute-client facilita el uso de la API en el código de Node.js.
Autenticación y autorización authentication-and-authorization
Todas las API requieren autenticación de token de acceso. Las solicitudes deben establecer los siguientes encabezados:
-
Authorization
encabezado con token de portador, que es el token de la cuenta técnica, recibido a través de Intercambio JWT desde el proyecto de la consola Adobe Developer. El ámbitos se documentan a continuación. -
x-gw-ims-org-id
encabezado con el ID de organización de IMS. -
x-api-key
con el ID de cliente de Adobe Developers Console proyecto.
Ámbitos scopes
Asegúrese de que los siguientes ámbitos sean válidos para el token de acceso:
openid
AdobeID
asset_compute
read_organizations
event_receiver
event_receiver_api
adobeio_api
additional_info.roles
additional_info.projectedProductContext
Estos requieren el Adobe Developer Console proyecto al que se va a suscribir Asset Compute
, I/O Events
, y I/O Management API
servicios. El desglose de ámbitos individuales es el siguiente:
-
Basic
- ámbitos:
openid,AdobeID
- ámbitos:
-
Asset compute
- metascope:
asset_compute_meta
- ámbitos:
asset_compute,read_organizations
- metascope:
-
Adobe I/O Eventos
- metascope:
event_receiver_api
- ámbitos:
event_receiver,event_receiver_api
- metascope:
-
Adobe I/O API de administración
- metascope:
ent_adobeio_sdk
- ámbitos:
adobeio_api,additional_info.roles,additional_info.projectedProductContext
- metascope:
Registro register
Cada cliente del Asset Compute service - un único Adobe Developer Console proyecto suscrito al servicio: debe registrar antes de realizar solicitudes de procesamiento. El paso de registro devuelve el diario de evento único que es necesario para recuperar los eventos asincrónicos del procesamiento de representación.
Al final de su ciclo de vida, un cliente puede anular el registro.
Solicitud de registro register-request
Esta llamada de API configura un Asset Compute y proporciona la URL del diario de eventos. Es una operación idempotente y solo necesita llamarse una vez para cada cliente. Se puede volver a llamar para recuperar la dirección URL del historial.
POST
/register
Authorization
x-request-id
Registrar respuesta register-response
application/json
X-Request-Id
X-Request-Id
encabezado de solicitud o uno generado de forma única. Se utiliza para identificar solicitudes entre sistemas o solicitudes de asistencia.journal
, ok
y/o requestId
campos.Los códigos de estado HTTP son:
-
200 Correctos: cuando la solicitud se realiza correctamente. Contiene el
journal
URL a la que se notificará cualquier resultado del procesamiento asincrónico activado mediante/process
(como tipo de eventos)rendition_created
cuando se realice correctamente, orendition_failed
al fallar).code language-json { "ok": true, "journal": "https://api.adobe.io/events/organizations/xxxxx/integrations/xxxx/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx", "requestId": "1234567890" }
-
401 No autorizado: se produce cuando la solicitud no tiene un valor válido authentication. Un ejemplo puede ser un token de acceso no válido o una clave de API no válida.
-
403 Prohibido: se produce cuando la solicitud no tiene un valor válido autorización. Un ejemplo puede ser un token de acceso válido, pero el proyecto de la consola de Adobe Developer (cuenta técnica) no está suscrito a todos los servicios necesarios.
-
Demasiadas solicitudes: se produce cuando este cliente sobrecarga el sistema o de otro modo. Los clientes deben volver a intentarlo con un retroceso exponencial. El cuerpo está vacío.
-
Error 4xx: Cuando se produjo cualquier otro error de cliente y el registro falló. Normalmente se devuelve una respuesta JSON como esta, aunque no está garantizado para todos los errores:
code language-json { "ok": false, "requestId": "1234567890", "message": "error message" }
-
Error 5xx: se produce cuando se produjo cualquier otro error del lado del servidor y falló el registro. Normalmente se devuelve una respuesta JSON como esta, aunque no está garantizado para todos los errores:
code language-json { "ok": false, "requestId": "1234567890", "message": "error message" }
Solicitud de cancelación de registro unregister-request
Esta llamada de API anula el registro de un Asset Compute cliente. Después de esto ya no es posible llamar a /process
. El uso de la llamada de API para un cliente no registrado o un cliente aún no registrado devuelve un 404
error.
POST
/unregister
Authorization
x-request-id
Anular registro de respuesta unregister-response
application/json
X-Request-Id
X-Request-Id
encabezado de solicitud o uno generado de forma única. Se utiliza para identificar solicitudes entre sistemas o solicitudes de asistencia.ok
y requestId
campos.Los códigos de estado son:
-
200 Correctos: se produce cuando se encuentra y se elimina el registro y el historial.
code language-json { "ok": true, "requestId": "1234567890" }
-
401 No autorizado: se produce cuando la solicitud no tiene un valor válido authentication. Un ejemplo puede ser un token de acceso no válido o una clave de API no válida.
-
403 Prohibido: se produce cuando la solicitud no tiene un valor válido autorización. Un ejemplo puede ser un token de acceso válido, pero el proyecto de la consola de Adobe Developer (cuenta técnica) no está suscrito a todos los servicios necesarios.
-
404 No encontrado: se produce cuando no hay ningún registro actual para las credenciales dadas.
code language-json { "ok": true, "requestId": "1234567890" }
-
Demasiadas solicitudes: se produce cuando el sistema está sobrecargado. Los clientes deben volver a intentarlo con un retroceso exponencial. El cuerpo está vacío.
-
Error 4xx: se produce cuando se produjo cualquier otro error de cliente y falló la anulación del registro. Normalmente se devuelve una respuesta JSON como esta, aunque no está garantizado para todos los errores:
code language-json { "ok": false, "requestId": "1234567890", "message": "error message" }
-
Error 5xx: se produce cuando se produjo cualquier otro error del lado del servidor y falló el registro. Normalmente se devuelve una respuesta JSON como esta, aunque no está garantizado para todos los errores:
code language-json { "ok": false, "requestId": "1234567890", "message": "error message" }
Procesar solicitud process-request
El process
Esta operación envía un trabajo que transforma un recurso de origen en varias representaciones, según las instrucciones de la solicitud. Notificaciones sobre finalización correcta (tipo de evento) rendition_created
) o cualquier error (tipo de evento rendition_failed
) se envían a un diario de eventos que debe recuperarse mediante /register una vez antes de realizar cualquier número de /process
solicitudes. Las solicitudes formadas incorrectamente generan un error 400.
Se hace referencia a los binarios mediante direcciones URL, como URL prefirmadas de Amazon AWS S3 o URL de SAS de almacenamiento de Azure Blob, para que los dos lean source
recurso (GET
URL) y escribir las representaciones (PUT
URL). El cliente es responsable de generar estas direcciones URL prefirmadas.
POST
/process
application/json
Authorization
x-request-id
Solicitud de proceso JSON process-request-json
El cuerpo de la solicitud de /process
es un objeto JSON con este esquema de alto nivel:
{
"source": "",
"renditions" : []
}
Los campos disponibles son:
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" }]
El source
puede ser un <string>
que se ve como una dirección URL o puede ser un <object>
con un campo adicional. Las siguientes variantes son similares:
"source": "http://example.com/image.jpg"
"source": {
"url": "http://example.com/image.jpg"
}
Campos del objeto de origen source-object-fields
url
string
"http://example.com/image.jpg"
name
string
content-disposition
encabezado del recurso binario. El valor predeterminado es "archivo"."image.jpg"
size
number
content-length
encabezado del recurso binario.10234
mimetype
string
content-type
encabezado del recurso binario."image/jpeg"
Una completa process
ejemplo de solicitud 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"
}]
}
Respuesta del proceso process-response
El /process
La solicitud de se devuelve inmediatamente con un resultado correcto o incorrecto en función de la validación de solicitud básica. El procesamiento real de recursos se produce de forma asíncrona.
application/json
X-Request-Id
X-Request-Id
encabezado de solicitud o uno generado de forma única. Se utiliza para identificar solicitudes entre sistemas o solicitudes de asistencia.ok
y requestId
campos.Códigos de estado:
-
200 Correctos: si la solicitud se envió correctamente. El JSON de respuesta incluye
"ok": true
:code language-json { "ok": true, "requestId": "1234567890" }
-
400 Solicitud no válida: Si la solicitud está formada incorrectamente, como si faltan campos obligatorios en la solicitud JSON. El JSON de respuesta incluye
"ok": false
:code language-json { "ok": false, "requestId": "1234567890", "message": "error message" }
-
401 No autorizado: Cuando la solicitud no tiene validez authentication. Un ejemplo puede ser un token de acceso no válido o una clave de API no válida.
-
403 Prohibido: Cuando la solicitud no tiene validez autorización. Un ejemplo puede ser un token de acceso válido, pero el proyecto de la consola de Adobe Developer (cuenta técnica) no está suscrito a todos los servicios necesarios.
-
Demasiadas solicitudes: Cuando el sistema se sobrecarga por este cliente o en general. Los clientes pueden volver a intentarlo con un retroceso exponencial. El cuerpo está vacío.
-
Error 4xx: Cuando se produjo cualquier otro error de cliente. Normalmente se devuelve una respuesta JSON como esta, aunque no está garantizado para todos los errores:
code language-json { "ok": false, "requestId": "1234567890", "message": "error message" }
-
Error 5xx: Cuando se produjo cualquier otro error del lado del servidor. Normalmente se devuelve una respuesta JSON como esta, aunque no está garantizado para todos los errores:
code language-json { "ok": false, "requestId": "1234567890", "message": "error message" }
La mayoría de los clientes tienden a reintentar exactamente la misma solicitud con retroceso exponencial sobre cualquier error excepto problemas de configuración como 401 o 403, o solicitudes no válidas como 400. Aparte de la limitación regular de la velocidad a través de respuestas 429, una interrupción temporal del servicio o una limitación podría provocar errores 5xx. Entonces, sería aconsejable volver a intentarlo después de un periodo de tiempo.
Todas las respuestas de JSON (si están presentes) incluyen las siguientes requestId
que es el mismo valor que el X-Request-Id
encabezado. Se recomienda leer desde el encabezado, ya que siempre está presente. El requestId
también se devuelve en todos los eventos relacionados con el procesamiento de solicitudes como requestId
. Los clientes no deben dar por hecho el formato de esta cadena, ya que es un identificador de cadena opaco.
Inclusión en el posprocesamiento opt-in-to-post-processing
El ASSET COMPUTE SDK admite un conjunto de opciones básicas de posprocesamiento de imágenes. Los trabajadores personalizados pueden incluirse explícitamente en el posprocesamiento configurando el campo postProcess
en el objeto de representación a true
.
Los casos de uso admitidos son:
- Recortar una representación en un rectángulo cuyos límites estén definidos por crop.w, crop.h, crop.x y crop.y. Se define mediante
instructions.crop
en el objeto de representación. - Cambie el tamaño de las imágenes mediante los valores de anchura, altura o ambos. Se define mediante
instructions.width
yinstructions.height
en el objeto de representación. Para cambiar el tamaño sólo con anchura o altura, defina sólo un valor. Compute Service conserva la relación de aspecto. - Establezca la calidad de una imagen JPEG. Se define mediante
instructions.quality
en el objeto de representación. La mejor calidad se indica con100
y valores más pequeños indican una calidad reducida. - Cree imágenes entrelazadas. Se define mediante
instructions.interlace
en el objeto de representación. - Establezca PPP para ajustar el tamaño procesado para la publicación en el escritorio ajustando la escala aplicada a los píxeles. Se define mediante
instructions.dpi
en el objeto de representación para cambiar la resolución de ppp. Sin embargo, para cambiar el tamaño de la imagen de modo que tenga el mismo tamaño con una resolución diferente, utilice elconvertToDpi
instrucciones. - Cambie el tamaño de la imagen de modo que la anchura o altura procesadas sean las mismas que las originales con la resolución de destino especificada (PPP). Se define mediante
instructions.convertToDpi
en el objeto de representación.
Recursos de marca de agua add-watermark
El ASSET COMPUTE SDK admite agregar una marca de agua a los archivos de imagen PNG, JPEG, TIFF y GIF. La marca de agua se agrega siguiendo las instrucciones de representación de la watermark
en la representación.
La marca de agua se realiza durante el procesamiento posterior de la representación. Para crear marcas de agua en los recursos, el trabajador personalizado opta por el posprocesamiento estableciendo el campo postProcess
en el objeto de representación a true
. Si el trabajador no realiza la inclusión, la marca de agua no se aplica, aunque el objeto de marca de agua esté establecido en el objeto de representación de la solicitud.
Instrucciones de representación rendition-instructions
Estas son las opciones disponibles para renditions
matriz en /process.
Campos comunes common-fields
fmt
string
text
para la extracción de texto y xmp
XMP para extraer metadatos de la como xml. Consulte formatos admitidospng
worker
string
https://
URL. Si este campo está presente, la representación se crea mediante una aplicación personalizada. A continuación, se utiliza cualquier otro campo de representación definido en la aplicación personalizada."https://1234.adobeioruntime.net
/api/v1/web
/example-custom-worker-master/worker"
target
string
http://w.com/img.jpg
target
object
Información de carga de URL firmada previamente de varias partes para la representación generada. Esto es para AEM Carga binaria directa de/Oak con esto comportamiento de carga multiparte.
Campos:
urls
: matriz de cadenas, una para cada URL de parte firmada previamenteminPartSize
: el tamaño mínimo que se debe utilizar para una parte = urlmaxPartSize
: el tamaño máximo que se utilizará para una parte = url
{ "urls": [ "https://part1...", "https://part2..." ], "minPartSize": 10000, "maxPartSize": 100000 }
userData
object
{ ... }
Campos específicos de representación rendition-specific-fields
Para obtener una lista de los formatos de archivo admitidos actualmente, consulte formatos de archivo compatibles.
embedBinaryLimit
number
en bytesembedBinaryLimit
límite, se debe colocar en una ubicación en el almacenamiento en la nube y no está incrustado en el evento.3276
width
number
200
height
number
200
La proporción de aspecto siempre se mantiene si:
- Ambos
width
yheight
se especifican, la imagen se ajusta al tamaño manteniendo la relación de aspecto - Solo
width
o soloheight
se especifica, la imagen resultante utiliza la dimensión correspondiente y mantiene la relación de aspecto - Si ninguno
width
niheight
se especifica, se utiliza el tamaño de píxel de la imagen original. Depende del tipo de origen. En algunos formatos, como los archivos de PDF, se utiliza un tamaño predeterminado. Puede haber un límite de tamaño máximo.
quality
number
1
hasta 100
. Aplicable solo para representaciones de imágenes.90
xmp
string
interlace
bool
true
. No afecta a otros formatos de archivo.jpegSize
number
quality
configuración. No afecta a otros formatos.dpi
number
o object
96
o { xdpi: 96, ydpi: 96 }
convertToDpi
number
o object
96
o { xdpi: 96, ydpi: 96 }
files
array
Lista de archivos que se incluirán en el archivo ZIP (fmt=zip
). Cada entrada puede ser una cadena URL o un objeto con los campos:
url
: URL para descargar el archivopath
: almacena el archivo en esta ruta en el ZIP
[{ "url": "https://host/asset.jpg", "path": "folder/location/asset.jpg" }]
duplicate
string
fmt=zip
). De forma predeterminada, varios archivos almacenados en la misma ruta en el ZIP generan un error. Configuración duplicate
hasta ignore
Esto hace que solo se almacene el primer recurso y que el resto se ignore.ignore
Campos específicos de marcas de agua watermark-specific-fields
El formato PNG se utiliza como marca de agua.
scale
number
0.0
y 1.0
. 1.0
significa que la marca de agua tiene su escala original (1:1) y los valores más bajos reducen el tamaño de la marca de agua.0.5
significa la mitad del tamaño original.image
url
Eventos asíncronos asynchronous-events
Una vez finalizado el procesamiento de una representación o cuando se produce un error, se envía un evento a un Adobe I/O Diario de eventos. Los clientes deben escuchar la URL del diario proporcionada mediante /register. La respuesta del diario incluye un event
matriz que consta de un objeto para cada evento, del cual el event
incluye la carga útil del evento real.
El Adobe I/O Tipo de evento para todos los eventos del Asset Compute Service es asset_compute
. El historial solo se suscribe automáticamente a este tipo de evento y no hay ningún requisito adicional de filtrar según el Adobe I/O Tipo de evento. Los tipos de eventos específicos del servicio están disponibles en la variable type
propiedad del evento.
Tipos de eventos event-types
rendition_created
rendition_failed
Atributos de evento event-attributes
date
string
*
requestId
string
*
/process
, igual que X-Request-Id
encabezado.source
object
*
source
de la /process
solicitud.userData
object
*
userData
de la representación desde el /process
solicitud si está establecido.rendition
object
rendition_*
/process
.errorMessage
string
rendition_failed
Metadatos metadata
repo:size
repo:sha1
dc:format
repo:encoding
tiff:ImageWidth
tiff:ImageLength
Motivos del error error-reasons
RenditionFormatUnsupported
SourceUnsupported
SourceCorrupt
RenditionTooLarge
target
. El tamaño real de la representación está disponible como metadatos en repo:size
y el cliente puede utilizarlos para volver a procesar esta representación con el número correcto de direcciones URL prefirmadas.GenericError