Asset Compute Service HTTP API asset-compute-http-api
API的使用仅限于开发目的。 API在开发自定义应用程序时作为上下文提供。 Adobe Experience Manager作为Cloud Service使用该API将处理信息传递给自定义应用程序。 有关详细信息,请参阅使用资产微服务和处理配置文件。
Asset Compute Service HTTP API的任何客户端都必须遵循此高级流程:
-
客户端被设置为IMS组织中的Adobe Developer Console项目。 每个单独的客户端(系统或环境)都需要其自己的单独项目来分离事件数据流。
-
客户端使用JWT(服务帐户)身份验证为技术帐户生成访问令牌。
-
客户端只调用
/register
一次以检索日志URL。 -
客户端为要为其生成演绎版的每个资产调用
/process
。 调用是异步调用。 -
客户端定期轮询日志以接收事件。 成功处理节目(
rendition_created
事件类型)或发生错误(rendition_failed
事件类型)时,它会接收每个请求节目的事件。
通过adobe-asset-compute-client模块,可以轻松使用Node.js代码中的API。
身份验证和授权 authentication-and-authorization
所有API都需要访问令牌身份验证。 请求必须设置以下标头:
范围 scopes
确保访问令牌的以下范围:
openid
AdobeID
asset_compute
read_organizations
event_receiver
event_receiver_api
adobeio_api
additional_info.roles
additional_info.projectedProductContext
这些范围要求将Adobe Developer Console项目订阅到Asset Compute
、I/O Events
和I/O Management API
服务。 各个范围的划分如下:
-
基本
- 范围:
openid,AdobeID
- 范围:
-
asset compute
- metascope:
asset_compute_meta
- 范围:
asset_compute,read_organizations
- metascope:
-
Adobe
I/O Events
- metascope:
event_receiver_api
- 范围:
event_receiver,event_receiver_api
- metascope:
-
Adobe
I/O Management API
- metascope:
ent_adobeio_sdk
- 范围:
adobeio_api,additional_info.roles,additional_info.projectedProductContext
- metascope:
注册 register
Asset Compute service的每个客户端 — 订阅了服务的唯一Adobe Developer Console项目 — 必须注册,然后才能发出处理请求。 注册步骤会返回从演绎版处理中检索异步事件所需的唯一事件日志。
在其生命周期结束时,客户端可以取消注册。
注册请求 register-request
此API调用设置Asset Compute客户端并提供事件日志URL。 此过程是一个幂等操作,每个客户端只需调用一次。 可以再次调用它以检索日志URL。
POST
/register
Authorization
x-request-id
注册响应 register-response
application/json
X-Request-Id
X-Request-Id
请求标头相同或生成一个唯一标头。 用于标识跨系统的请求或支持请求,或同时使用两者。journal
、ok
或requestId
字段的JSON对象。HTTP状态代码为:
-
200成功:请求成功时。
journal
URL接收有关通过/process
启动的异步处理结果的通知。 它在成功完成时发出rendition_created
个事件的警报,如果进程失败,则发出rendition_failed
个事件的警报。code language-json { "ok": true, "journal": "https://api.adobe.io/events/organizations/xxxxx/integrations/xxxx/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx", "requestId": "1234567890" }
-
401 Unauthorized:当请求没有有效的身份验证时发生。 例如,访问令牌无效或API密钥无效。
-
403 Forbidden:当请求没有有效的授权时发生。 示例可能是有效的访问令牌,但Adobe Developer Console项目(技术帐户)未订阅所有必需服务。
-
429请求太多:发生在此客户端或系统过载时。 客户端应使用指数回退重试。 正文为空。
-
4xx错误:出现任何其他客户端错误时注册失败。 通常,会返回此类的JSON响应,但不一定会发生所有错误:
code language-json { "ok": false, "requestId": "1234567890", "message": "error message" }
-
5xx错误:发生任何其他服务器端错误且注册失败时。 通常,会返回此类的JSON响应,但不一定会发生所有错误:
code language-json { "ok": false, "requestId": "1234567890", "message": "error message" }
取消注册请求 unregister-request
此API调用取消注册Asset Compute客户端。 取消注册后,无法再调用/process
。 对未注册的客户端或尚未注册的客户端使用API调用会返回404
错误。
POST
/unregister
Authorization
x-request-id
注销响应 unregister-response
application/json
X-Request-Id
X-Request-Id
请求标头相同或生成一个唯一标头。 用于标识跨系统的请求或支持请求。ok
和requestId
字段的JSON对象。状态代码为:
-
200成功:找到并删除注册和日记时发生。
code language-json { "ok": true, "requestId": "1234567890" }
-
401 Unauthorized:当请求没有有效的身份验证时发生。 例如,访问令牌无效或API密钥无效。
-
403 Forbidden:当请求没有有效的授权时发生。 示例可能是有效的访问令牌,但Adobe Developer Console项目(技术帐户)未订阅所有必需服务。
-
404未找到:当提供的凭据未注册或无效时,将出现此状态。
code language-json { "ok": true, "requestId": "1234567890" }
-
429请求太多:在系统过载时发生。 客户端应使用指数回退重试。 正文为空。
-
4xx错误:发生任何其他客户端错误时注销失败。 通常,会返回此类的JSON响应,但不一定会发生所有错误:
code language-json { "ok": false, "requestId": "1234567890", "message": "error message" }
-
5xx错误:发生任何其他服务器端错误且注册失败时。 通常,会返回此类的JSON响应,但不一定会发生所有错误:
code language-json { "ok": false, "requestId": "1234567890", "message": "error message" }
流程请求 process-request
process
操作提交的作业将根据请求中的说明将源资源转换为多个演绎版。 有关成功完成(事件类型rendition_created
)或任何错误(事件类型rendition_failed
)的通知将发送到事件日志,该日志必须在发出任意数量的/process
请求之前使用/register
检索一次。 格式不正确的请求立即失败,并显示400错误代码。
使用URL引用二进制文件,例如Amazon AWS S3预签名URL或Azure Blob Storage SAS URL。 用于读取source
资源(GET
URL)和写入演绎版(PUT
URL)。 客户端负责生成这些预签名URL。
POST
/process
application/json
Authorization
x-request-id
处理请求JSON process-request-json
/process
的请求正文是一个具有此高级架构的JSON对象:
{
"source": "",
"renditions" : []
}
可用字段包括:
source
string
fmt=zip
)。"http://example.com/image.jpg"
source
object
fmt=zip
)的可选。{"url": "http://example.com/image.jpg", "mimeType": "image/jpeg" }
source
可以是视为URL的<string>
,也可以是带有附加字段的<object>
。 以下变量类似:
"source": "http://example.com/image.jpg"
"source": {
"url": "http://example.com/image.jpg"
}
Source对象字段 source-object-fields
url
string
"http://example.com/image.jpg"
name
string
content-disposition
标头中的文件名。 默认为“file”。"image.jpg"
size
number
content-length
标头。10234
mimetype
string
content-type
标头。"image/jpeg"
完整的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"
}]
}
进程响应 process-response
基于基本请求验证,/process
请求立即返回成功或失败。 实际资产处理是异步进行的。
application/json
X-Request-Id
X-Request-Id
请求标头相同或生成一个唯一标头。 用于标识跨系统的请求或支持请求。ok
和requestId
字段的JSON对象。状态代码:
-
200成功:请求提交成功。 响应JSON包含
"ok": true
:code language-json { "ok": true, "requestId": "1234567890" }
-
400无效请求:如果请求结构不正确,例如,JSON有效负载中缺少必填字段。 响应JSON包含
"ok": false
:code language-json { "ok": false, "requestId": "1234567890", "message": "error message" }
-
401未授权:请求没有有效的身份验证。 例如,访问令牌无效或API密钥无效。
-
403 Forbidden:请求没有有效的授权。 示例可能是有效的访问令牌,但Adobe Developer Console项目(技术帐户)未订阅所有必需服务。
-
429请求太多:系统不堪重负时发生,可能是由于此特定客户端或整体需求所致。 客户端可以使用指数回退重试。 正文为空。
-
4xx错误:出现任何其他客户端错误时。 通常,会返回此类的JSON响应,但不一定会发生所有错误:
code language-json { "ok": false, "requestId": "1234567890", "message": "error message" }
-
5xx错误:发生任何其他服务器端错误时。 通常,会返回此类的JSON响应,但不一定会发生所有错误:
code language-json { "ok": false, "requestId": "1234567890", "message": "error message" }
除 配置问题(如401或403)或无效请求(如400)外,大多数客户端可能倾向于在出现任何错误 时通过指数回退重试同一请求。 除了429响应的常规速率限制外,临时服务中断或限制可能会导致5xx错误。 然后,建议您在一段时间后重试。
所有JSON响应(如果存在)都包含requestId
,该值与X-Request-Id
标头相同。 Adobe建议从标头中读取,因为它始终存在。 与处理请求相关的所有事件中也返回requestId
作为requestId
。 客户端不得对此字符串的格式进行任何假设。 它是一个不透明的字符串标识符。
选择加入后处理 opt-in-to-post-processing
Asset computeSDK支持一组基本的图像后处理选项。 自定义工作进程可以通过将节目对象上的字段postProcess
设置为true
来显式选择加入后处理。
支持的用例包括:
- 裁切是矩形的演绎版,其限制由crop.w、crop.h、crop.x和crop.y定义。 裁剪详细信息在节目对象的
instructions.crop
字段中指定。 - 使用宽度、高度或两者来调整图像大小。
instructions.width
和instructions.height
在演绎版对象中定义它。 要仅使用宽度或高度调整大小,请仅设置一个值。 计算服务可节省宽高比。 - 设置JPEG图像的质量。
instructions.quality
在演绎版对象中定义它。 质量级别为100表示最高质量,而数字越低表示质量下降。 - 创建交错图像。
instructions.interlace
在演绎版对象中定义它。 - 设置DPI可通过调整应用于像素的缩放比例来调整渲染大小,以用于桌面出版目的。
instructions.dpi
在演绎版对象中定义它以更改DPI分辨率。 但是,要调整图像大小以便以不同的分辨率显示相同的大小,请使用convertToDpi
说明。 - 调整图像大小,使其渲染的宽度或高度在指定的目标分辨率(DPI)下与原始图像保持相同。
instructions.convertToDpi
在演绎版对象中定义它。
为资源添加水印 add-watermark
Asset computeSDK支持向PNG、JPEG、TIFF和GIF图像文件添加水印。 水印是按照演绎版上watermark
对象中的演绎版说明添加的。
水印在演绎版后处理期间完成。 若要为资产添加水印,自定义工作进程通过将演绎版对象上的字段postProcess
设置为true
来选择后处理。 如果辅助进程未选择加入,则不会应用水印,即使对请求中的演绎版对象设置了水印对象也是如此。
节目说明 rendition-instructions
以下是/process
中renditions
数组的可用选项。
常用字段 common-fields
worker
string
https://
URL。 如果存在此字段,则自定义应用程序会创建演绎版。 然后,在自定义应用程序中使用任何其他设置演绎版字段。"https://1234.adobeioruntime.net
/api/v1/web
/example-custom-worker-master/worker"
target
string
http://w.com/img.jpg
target
object
生成的演绎版的多部分预签名URL上传信息。 此信息适用于具有此多部分上传行为的AEM / Oak直接二进制上传。
字段:
urls
:字符串数组,每个预签名部分URL一个minPartSize
:用于一个部分的最小大小= urlmaxPartSize
:用于一个部分的最大大小= url
{ "urls": [ "https://part1...", "https://part2..." ], "minPartSize": 10000, "maxPartSize": 100000 }
userData
object
{ ... }
节目特定字段 rendition-specific-fields
有关当前支持的文件格式的列表,请参阅支持的文件格式。
embedBinaryLimit
number
字节embedBinaryLimit
限制,则将其放置在云存储中的某个位置,并且不会嵌入事件中。3276
width
number
200
height
number
200
在以下情况下,将始终保持宽高比:
- 同时指定了
width
和height
,则在保持宽高比的同时,图像大小适合 - 如果仅指定
width
或height
,则生成的图像将使用相应的维度,同时保持宽高比 - 如果未指定
width
或height
,则使用原始图像像素大小。 这取决于源类型。 对于某些格式(如PDF文件),使用缺省大小。 可以有最大大小限制。
quality
number
1
到100
范围内的jpeg品质。 仅适用于图像演绎版。90
xmp
string
interlace
bool
true
来创建它。 它对其他文件格式没有影响。jpegSize
number
quality
设置。 它对其他格式没有影响。dpi
number
或 object
96
或 { xdpi: 96, ydpi: 96 }
convertToDpi
number
或 object
96
或 { xdpi: 96, ydpi: 96 }
files
array
要包含在ZIP存档中的文件列表(fmt=zip
)。 每个条目可以是URL字符串或包含字段的对象:
url
:下载文件的URLpath
:将文件存储在ZIP文件路径下
[{ "url": "https://host/asset.jpg", "path": "folder/location/asset.jpg" }]
duplicate
string
fmt=zip
)的重复处理。 默认情况下,存储在ZIP中同一路径下的多个文件会生成错误。 将duplicate
设置为ignore
只会导致存储第一个资产,忽略其余资产。ignore
水印特定的字段 watermark-specific-fields
PNG格式用作水印。
scale
number
0.0
和1.0
之间。 1.0
表示水印具有其原始比例(1:1),较低的值会减小水印大小。0.5
表示原始大小的一半。image
url
异步事件 asynchronous-events
当节目处理完成或发生错误时,会向AdobeI/O Events Journal
发送一个事件。 客户端必须侦听通过/register
提供的日志URL。 日志响应包含一个event
数组,该数组对于每个事件都包含一个对象,其中event
字段包含实际事件有效负载。
Asset Compute Service的所有事件的AdobeI/O Events
类型为asset_compute
。 日志仅自动订阅此事件类型,无需根据Adobe Developer事件类型进行筛选。 服务特定的事件类型在事件的type
属性中可用。
事件类型 event-types
rendition_created
rendition_failed
事件属性 event-attributes
requestId
string
*
/process
的原始请求的请求ID,与X-Request-Id
标头相同。source
object
*
/process
请求的source
。userData
object
*
/process
请求的userData
演绎版(如果已设置)。rendition
object
rendition_*
/process
中传递的对应节目对象。errorMessage
string
rendition_failed
元数据 metadata
repo:size
repo:sha1
dc:format
repo:encoding
tiff:ImageWidth
tiff:ImageLength
错误原因 error-reasons
RenditionFormatUnsupported
SourceUnsupported
SourceCorrupt
RenditionTooLarge
target
中提供的预签名URL上载节目。 实际演绎版大小在repo:size
中作为元数据提供,客户端使用它重新处理此演绎版,并保留正确数量的预签名URL。GenericError