Asset Compute Service HTTP API asset-compute-http-api
API的使用仅限于开发目的。 API在开发自定义应用程序时作为上下文提供。 Adobe Experience Manager as a Cloud Service 使用API将处理信息传递给自定义应用程序。 有关更多信息,请参阅 使用资源微服务和处理配置文件.
的任何客户端 Asset Compute Service HTTP API必须遵循以下高级流程:
-
客户端配置为 Adobe Developer Console IMS组织中的项目。 为了分离事件数据流,每个单独的客户端(系统或环境)需要其自己的独立项目。
-
客户端使用为技术帐户生成访问令牌 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 事件
- metascope:
event_receiver_api
- 范围:
event_receiver,event_receiver_api
- metascope:
-
Adobe I/O 管理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
字段。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未授权:在请求无效时发生 身份验证. 例如,访问令牌或API密钥无效。
-
403禁止访问:在请求无效时发生 授权. 例如,可能是一个有效的访问令牌,但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
字段。状态代码为:
-
200项成功:找到并删除注册和日志时发生。
code language-json { "ok": true, "requestId": "1234567890" }
-
401未授权:在请求无效时发生 身份验证. 例如,访问令牌或API密钥无效。
-
403禁止访问:在请求无效时发生 授权. 例如,可能是一个有效的访问令牌,但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
)发送到事件日志,必须使用进行检索 /register 在生成任意数量之前执行一次 /process
请求。 格式不正确的请求立即失败,并显示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
可以是 <string>
该URL可以是 <object>
带有一个附加字段。 以下变量类似:
"source": "http://example.com/image.jpg"
"source": {
"url": "http://example.com/image.jpg"
}
源对象字段 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
字段。状态代码:
-
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禁止访问:当请求无效时 授权. 例如,可能是一个有效的访问令牌,但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
标头。 建议从标头读取,因为它始终存在。 此 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
这些选项适用于 renditions
数组 /process.
常用字段 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
. 仅适用于图像演绎版。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
处理完节目或发生错误后,会将事件发送到 Adobe I/O 事件日志. 客户端必须侦听通过提供的日志URL /register. 日志响应包括 event
数组,每个事件由一个对象组成,其中 event
字段包含实际事件有效负载。
此 Adobe I/O 的所有事件的事件类型 Asset Compute Service 是 asset_compute
. 日志仅自动订阅此事件类型,无需根据 Adobe I/O 事件类型。 特定于服务的事件类型请参见 type
事件的属性。
事件类型 event-types
rendition_created
rendition_failed
事件属性 event-attributes
requestId
string
*
/process
,与 X-Request-Id
标头。source
object
*
source
的 /process
请求。userData
object
*
userData
的格式副本 /process
请求(如果已设置)。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
. 实际演绎版大小可用作中的元数据 repo:size
和可供客户端使用重新处理此演绎版,并具有正确数量的预签名URL。GenericError