API HTTP Asset Compute Service asset-compute-http-api
O uso da API é limitado a fins de desenvolvimento. A API é fornecida como um contexto ao desenvolver aplicativos personalizados. Adobe Experience Manager como Cloud Service usa a API para transmitir as informações de processamento para um aplicativo personalizado. Para obter mais informações, consulte Usar microsserviços de ativos e Perfis de processamento.
Qualquer cliente da API HTTP Asset Compute Service deve seguir este fluxo de alto nível:
-
Um cliente é provisionado como um projeto Adobe Developer Console em uma organização IMS. Cada cliente separado (sistema ou ambiente) requer seu próprio projeto separado para separar o fluxo de dados do evento.
-
Um cliente gera um token de acesso para a conta técnica usando a Autenticação JWT (Conta de Serviço).
-
Um cliente chama
/registerapenas uma vez para recuperar a URL do diário. -
Um cliente chama
/processpara cada ativo para o qual deseja gerar representações. A chamada é assíncrona. -
Um cliente sonda regularmente o diário para receber eventos. Ele recebe eventos para cada representação solicitada quando a representação é processada com êxito (
rendition_createdtipo de evento) ou se há um erro (rendition_failedtipo de evento).
O módulo adobe-asset-compute-client facilita o uso da API no código Node.js.
Autenticação e autorização authentication-and-authorization
Todas as APIs exigem autenticação de token de acesso. As solicitações devem definir os seguintes cabeçalhos:
-
Cabeçalho
Authorizationcom token de portador, que é o token de conta técnica, recebido via JWT exchange do projeto Adobe Developer Console. Os escopos estão documentados abaixo. -
Cabeçalho
x-gw-ims-org-idcom a ID da organização IMS. -
x-api-keycom a ID de cliente do projeto Adobe Developers Console.
Escopos scopes
Verifique os seguintes escopos para o token de acesso:
openidAdobeIDasset_computeread_organizationsevent_receiverevent_receiver_apiadobeio_apiadditional_info.rolesadditional_info.projectedProductContext
Esses escopos exigem que o projeto Adobe Developer Console seja inscrito nos serviços Asset Compute, I/O Events e I/O Management API. O detalhamento de escopos individuais é:
-
Básico
- escopos:
openid,AdobeID
- escopos:
-
Asset compute
- metascope:
asset_compute_meta - escopos:
asset_compute,read_organizations
- metascope:
-
Adobe
I/O Events- metascope:
event_receiver_api - escopos:
event_receiver,event_receiver_api
- metascope:
-
Adobe
I/O Management API- metascope:
ent_adobeio_sdk - escopos:
adobeio_api,additional_info.roles,additional_info.projectedProductContext
- metascope:
Registro register
Cada cliente do Asset Compute service - um projeto Adobe Developer Console exclusivo que assinou o serviço - deve se registrar antes de fazer solicitações de processamento. A etapa de registro retorna o diário de eventos exclusivo necessário para recuperar os eventos assíncronos do processamento de representação.
No final de seu ciclo de vida, um cliente pode cancelar o registro.
Registrar solicitação register-request
Esta chamada de API configura um cliente Asset Compute e fornece a URL do diário de eventos. Esse processo é uma operação idempotente e só precisa ser chamado uma vez para cada cliente. Ele pode ser chamado novamente para recuperar o URL do diário.
POST/registerAuthorizationx-request-idRegistrar resposta register-response
application/jsonX-Request-IdX-Request-Id ou gerado exclusivamente. Use para identificar solicitações entre sistemas, solicitações de suporte ou ambas.journal, ok ou requestId.Os códigos de status HTTP são:
-
200 Êxito: quando a solicitação é bem-sucedida. A URL
journalrecebe notificações sobre os resultados do processamento assíncrono iniciado por meio de/process. Ele alertarendition_createdeventos após a conclusão bem-sucedida ourendition_failedeventos se o processo falhar.code language-json { "ok": true, "journal": "https://api.adobe.io/events/organizations/xxxxx/integrations/xxxx/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx", "requestId": "1234567890" } -
401 Não autorizado: ocorre quando a solicitação não tem autenticação válida. Um exemplo pode ser um token de acesso inválido ou uma chave de API inválida.
-
403 Proibido: ocorre quando a solicitação não tem uma autorização válida. Um exemplo pode ser um token de acesso válido, mas o projeto do Adobe Developer Console (conta técnica) não está inscrito em todos os serviços necessários.
-
429 Muitas solicitações: ocorre quando este cliente ou sobrecarrega o sistema. Os clientes devem tentar novamente com um retrocesso exponencial. O corpo está vazio.
-
4xx erro: quando houve qualquer outro erro de cliente e o registro falhou. Normalmente, uma resposta JSON como essa é retornada, embora isso não seja garantido para todos os erros:
code language-json { "ok": false, "requestId": "1234567890", "message": "error message" } -
5xx erro: ocorre quando ocorre qualquer outro erro no lado do servidor e o registro falha. Normalmente, uma resposta JSON como essa é retornada, embora isso não seja garantido para todos os erros:
code language-json { "ok": false, "requestId": "1234567890", "message": "error message" }
Cancelar registro da solicitação unregister-request
Esta chamada de API cancela o registro de um cliente Asset Compute. Após esse cancelamento de registro, não será mais possível chamar /process. O uso da chamada de API para um cliente não registrado ou para um cliente a ser registrado retorna um erro 404.
POST/unregisterAuthorizationx-request-idCancelar registro da resposta unregister-response
application/jsonX-Request-IdX-Request-Id ou gerado exclusivamente. Use para identificar solicitações entre sistemas ou solicitações de suporte.ok e requestId campos.Os códigos de status são:
-
200 Success: ocorre quando o registro e o diário são encontrados e removidos.
code language-json { "ok": true, "requestId": "1234567890" } -
401 Não autorizado: ocorre quando a solicitação não tem autenticação válida. Um exemplo pode ser um token de acesso inválido ou uma chave de API inválida.
-
403 Proibido: ocorre quando a solicitação não tem uma autorização válida. Um exemplo pode ser um token de acesso válido, mas o projeto do Adobe Developer Console (conta técnica) não está inscrito em todos os serviços necessários.
-
404 Não encontrado: este status aparece quando as credenciais fornecidas têm registro cancelado ou são inválidas.
code language-json { "ok": true, "requestId": "1234567890" } -
429 Muitas solicitações: ocorre quando o sistema está sobrecarregado. Os clientes devem tentar novamente com um retrocesso exponencial. O corpo está vazio.
-
4xx erro: ocorre quando ocorreu qualquer outro erro de cliente e o cancelamento de registro falhou. Normalmente, uma resposta JSON como essa é retornada, embora isso não seja garantido para todos os erros:
code language-json { "ok": false, "requestId": "1234567890", "message": "error message" } -
5xx erro: ocorre quando ocorre qualquer outro erro no lado do servidor e o registro falha. Normalmente, uma resposta JSON como essa é retornada, embora isso não seja garantido para todos os erros:
code language-json { "ok": false, "requestId": "1234567890", "message": "error message" }
Processar solicitação process-request
A operação process envia um trabalho que transforma um ativo de origem em várias representações, com base nas instruções na solicitação. Notificações sobre conclusão bem-sucedida (tipo de evento rendition_created) ou quaisquer erros (tipo de evento rendition_failed) são enviadas a um diário de Eventos que deve ser recuperado usando /register uma vez antes de fazer qualquer número de /process solicitações. Solicitações formadas incorretamente falham imediatamente com um código de erro 400.
Os binários são referenciados usando URLs, como URLs pré-assinados do Amazon AWS S3 ou URLs SAS do Armazenamento Azure Blob. Usado para ler o ativo source (GET URLs) e gravar as representações (PUT URLs). O cliente é responsável por gerar esses URLs pré-assinados.
POST/processapplication/jsonAuthorizationx-request-idProcessar solicitação JSON process-request-json
O corpo da solicitação de /process é um objeto JSON com este esquema de alto nível:
{
"source": "",
"renditions" : []
}
Os campos disponíveis são:
sourcestringfmt=zip)."http://example.com/image.jpg"sourceobjectfmt=zip).{"url": "http://example.com/image.jpg", "mimeType": "image/jpeg" }renditionsarray[{ "target": "https://....", "fmt": "png" }]O source pode ser um <string> que é visto como uma URL ou pode ser um <object> com um campo adicional. As seguintes variantes são semelhantes:
"source": "http://example.com/image.jpg"
"source": {
"url": "http://example.com/image.jpg"
}
Campos de objeto do Source source-object-fields
urlstring"http://example.com/image.jpg"namestringcontent-disposition do recurso binário. O padrão é "file"."image.jpg"sizenumbercontent-length do recurso binário.10234mimetypestringcontent-type do recurso binário."image/jpeg"Um exemplo completo de solicitação 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"
}]
}
Processar resposta process-response
A solicitação /process retorna imediatamente com êxito ou falha com base na validação básica da solicitação. O processamento de ativos real ocorre de forma assíncrona.
application/jsonX-Request-IdX-Request-Id ou gerado exclusivamente. Use para identificar solicitações entre sistemas ou solicitações de suporte.ok e requestId campos.Códigos de status:
-
200 Êxito: se a solicitação foi enviada com êxito. O JSON de resposta inclui
"ok": true:code language-json { "ok": true, "requestId": "1234567890" } -
400 Solicitação inválida: se a solicitação estiver estruturada incorretamente, por exemplo, se não tiver campos obrigatórios na carga JSON. O JSON de resposta inclui
"ok": false:code language-json { "ok": false, "requestId": "1234567890", "message": "error message" } -
401 Não autorizado: quando a solicitação não tem autenticação válida. Um exemplo pode ser um token de acesso inválido ou uma chave de API inválida.
-
403 Proibido: quando a solicitação não tem autorização válida. Um exemplo pode ser um token de acesso válido, mas o projeto do Adobe Developer Console (conta técnica) não está inscrito em todos os serviços necessários.
-
429 Muitas solicitações: ocorre quando o sistema está sobrecarregado, seja devido a este cliente específico ou devido à demanda geral. Os clientes podem tentar novamente com um retrocesso exponencial. O corpo está vazio.
-
4xx erro: quando havia qualquer outro erro de cliente. Normalmente, uma resposta JSON como essa é retornada, embora isso não seja garantido para todos os erros:
code language-json { "ok": false, "requestId": "1234567890", "message": "error message" } -
5xx erro: quando havia qualquer outro erro do lado do servidor. Normalmente, uma resposta JSON como essa é retornada, embora isso não seja garantido para todos os erros:
code language-json { "ok": false, "requestId": "1234567890", "message": "error message" }
Provavelmente, a maioria dos clientes está inclinada a repetir a mesma solicitação com retirada exponencial em qualquer erro exceto, problemas de configuração como 401 ou 403 ou solicitações inválidas como 400. Além da limitação de taxa regular por meio de respostas 429, uma interrupção ou limitação temporária de serviço pode resultar em erros 5xx. Em seguida, seria aconselhável tentar novamente após um período.
Todas as respostas JSON (se presentes) incluem o requestId, que é o mesmo valor que o cabeçalho X-Request-Id. O Adobe recomenda a leitura do cabeçalho, pois ele está sempre presente. O requestId também é retornado em todos os eventos relacionados às solicitações de processamento como requestId. Os clientes não devem fazer nenhuma suposição sobre o formato dessa cadeia de caracteres. É um identificador de sequência de caracteres opaco.
Aceitar o pós-processamento opt-in-to-post-processing
O SDK do Asset Compute dá suporte a um conjunto de opções básicas de pós-processamento de imagem. Os trabalhadores personalizados podem aceitar explicitamente o pós-processamento definindo o campo postProcess no objeto de representação como true.
Os casos de uso compatíveis são:
- Cortar é uma representação de um retângulo cujos limites por crop.w, crop.h, crop.x e crop.y estão definidos. Os detalhes de corte estão especificados no campo
instructions.cropdo objeto de representação. - Redimensionar imagens usando largura, altura ou ambos. O
instructions.widtheinstructions.heighto definem no objeto de representação. Para redimensionar usando apenas largura ou altura, defina apenas um valor. O serviço de computação conserva a taxa de proporção. - Defina a qualidade de uma imagem JPEG. O
instructions.qualityo define no objeto de representação. Um nível de qualidade de 100 representa a qualidade mais alta, enquanto números mais baixos significam uma diminuição na qualidade. - Criar imagens entrelaçadas. O
instructions.interlaceo define no objeto de representação. - Defina DPI para ajustar o tamanho renderizado para fins de publicação em desktop, ajustando a escala aplicada aos pixels. O
instructions.dpio define no objeto de representação para alterar a resolução de dpi. Entretanto, para redimensionar a imagem para que ela tenha o mesmo tamanho em uma resolução diferente, use as instruções deconvertToDpi. - Redimensionar a imagem de forma que sua largura ou altura renderizada permaneça a mesma que a original na resolução de destino especificada (DPI). O
instructions.convertToDpio define no objeto de representação.
Inserir marca d'água em ativos add-watermark
O SDK do Asset compute oferece suporte à adição de uma marca d'água aos arquivos de imagem PNG, JPEG, TIFF e GIF. A marca d'água é adicionada seguindo as instruções de representação no objeto watermark na representação.
A marca d'água é feita durante o pós-processamento da representação. Para adicionar ativos de marca d'água, o trabalhador personalizado opta pelo pós-processamento definindo o campo postProcess no objeto de representação como true. Se o trabalhador não aceitar, a marca d'água não será aplicada, mesmo se o objeto de marca d'água estiver definido no objeto de representação na solicitação.
Instruções de representação rendition-instructions
Estas são as opções disponíveis para a matriz renditions em /process.
Campos comuns common-fields
fmtstringtext para extração de texto e xmp para extração de metadados XMP como xml. Ver formatos com suportepngworkerstringhttps://. Se esse campo estiver presente, um aplicativo personalizado criará a representação. Qualquer outro campo de representação definido é usado no aplicativo personalizado."https://1234.adobeioruntime.net/api/v1/web/example-custom-worker-master/worker"targetstringhttp://w.com/img.jpgtargetobjectInformações de upload de URL pré-assinado de várias partes para a representação gerada. Estas informações são para AEM/Carregamento binário direto do Oak com este comportamento de carregamento multiparte.
Campos:
urls: matriz de cadeias de caracteres, uma para cada URL de parte pré-assinadaminPartSize: o tamanho mínimo a ser usado para uma parte = urlmaxPartSize: o tamanho máximo a ser usado para uma parte = url
{ "urls": [ "https://part1...", "https://part2..." ], "minPartSize": 10000, "maxPartSize": 100000 }userDataobject{ ... }Campos específicos da representação rendition-specific-fields
Para obter uma lista de formatos de arquivo com suporte no momento, consulte formatos de arquivo com suporte.
**embedBinaryLimitnumber em bytesembedBinaryLimit, ela será colocada em um local no armazenamento na nuvem e não será incorporada ao evento.3276widthnumber200heightnumber200A proporção será sempre mantida se:
widtheheightestão especificados, então a imagem se ajusta ao tamanho, mantendo a proporção- Se apenas
widthouheightfor especificado, a imagem resultante usará a dimensão correspondente, mantendo a taxa de proporção - Se
widthouheightnão for especificado, o tamanho original do pixel da imagem será usado. Depende do tipo de origem. Para alguns formatos, como arquivos PDF, um tamanho padrão é usado. Pode haver um limite de tamanho máximo.
qualitynumber1 a 100. Aplicável somente para representações de imagem.90xmpstringinterlacebooltrue. Não tem efeito em outros formatos de arquivo.jpegSizenumberquality. Não tem efeito em outros formatos.dpinumber ou object96 ou { xdpi: 96, ydpi: 96 }convertToDpinumber ou object96 ou { xdpi: 96, ydpi: 96 }filesarrayLista de arquivos a serem incluídos no arquivo ZIP (fmt=zip). Cada entrada pode ser uma string de URL ou um objeto com os campos:
url: URL para baixar arquivopath: armazenar arquivo neste caminho no ZIP
[{ "url": "https://host/asset.jpg", "path": "folder/location/asset.jpg" }]duplicatestringfmt=zip). Por padrão, vários arquivos armazenados no mesmo caminho no ZIP geram um erro. Configurar duplicate como ignore resulta somente no primeiro ativo a ser armazenado e no restante a ser ignorado.ignoreCampos específicos de marca d'água watermark-specific-fields
O formato PNG é usado como marca d'água.
scalenumber0.0 e 1.0. 1.0 significa que a marca d'água tem sua escala original (1:1) e os valores mais baixos reduzem o tamanho da marca d'água.0.5 significa metade do tamanho original.imageurlEventos assíncronos asynchronous-events
Quando o processamento de uma representação for concluído ou quando ocorrer um erro, um evento será enviado para um Adobe I/O Events Journal. Os clientes devem escutar a URL do diário fornecida por meio de /register. A resposta do diário inclui uma matriz event que consiste em um objeto para cada evento, do qual o campo event inclui a carga do evento real.
O tipo de Adobe I/O Events para todos os eventos de Asset Compute Service é asset_compute. O diário é inscrito automaticamente apenas neste tipo de evento e não há mais nenhum requisito para filtrar com base no tipo de Evento Adobe Developer. Os tipos de evento específicos do serviço estão disponíveis na propriedade type do evento.
Tipos de evento event-types
rendition_createdrendition_failedAtributos do evento event-attributes
datestring*requestIdstring*/process, igual ao cabeçalho X-Request-Id.sourceobject*source da solicitação /process.userDataobject*userData da representação da solicitação /process, se definida.renditionobjectrendition_*/process.errorMessagestringrendition_failedMetadados metadata
repo:sizerepo:sha1dc:formatrepo:encodingtiff:ImageWidthtiff:ImageLengthMotivos de erro error-reasons
RenditionFormatUnsupportedSourceUnsupportedSourceCorruptRenditionTooLargetarget. O tamanho de representação real está disponível como metadados em repo:size e é usado pelo cliente para processar novamente essa representação com o número correto de URLs pré-assinadas.GenericError