Assets HTTP API

概述

Assets HTTP API允许对数字资产(包括元数据、演绎版和注释)以及使用Experience Manager内容片段的结构化内容执行创建 — 读取 — 更新 — 删除(CRUD)操作。 它在/api/assets公开,并作为REST API实现。 它包括对内容片段的支持。

要访问API:

  1. 打开位于https://[hostname]:[port]/api.json的API服务文档。
  2. 按照Assets服务链接,指向https://[hostname]:[server]/api/assets.json

API响应是某些MIME类型的JSON文件和所有MIME类型的响应代码。 JSON响应是可选的,可能不可用,例如PDF文件。 依赖响应代码进行进一步的分析或操作。

在结束时间之后,资产及其演绎版无法通过Assets Web界面和HTTP API使用。 如果开机时间在将来,或结束时间在过去,则API返回404错误消息。

注意

HTTP API更新命名空间中 的元数据属 jcr 性。但是,Experience Manager用户界面会更新dc命名空间中的元数据属性。

内容片段

内容片段是一种特殊的资产类型。 它可用于访问结构化数据,如文本、数字、日期等。 由于standard资产(如图像或文档)存在多种差异,因此处理内容片段时会应用一些其他规则。

有关详细信息,请参阅Experience Manager资产HTTP API🔗中的内容片段支持。

数据模型

Assets HTTP API公开两个主要元素、文件夹和资产(对于标准资产)。

此外,它还针对描述内容片段中结构化内容的自定义数据模型公开了更详细的元素。 有关详细信息,请参阅内容片段数据模型

文件夹

文件夹类似于传统文件系统中的目录。 它们是其他文件夹或声明的容器。 文件夹具有以下组件:

实体:文件夹的实体是其子元素,可以是文件夹和资产。

属性:

  • name 是文件夹的名称。这与没有扩展名的URL路径中的最后一个区段相同。
  • title 是文件夹的可选标题,可以显示该标题而不是其名称。
注意

文件夹或资产的某些属性会映射到其他前缀。 将jcr:titlejcr:descriptionjcr:languagejcr前缀替换为dc前缀。 因此,在返回的JSON中,dc:titledc:description分别包含jcr:titlejcr:description的值。

LinksFolders 公开三个链接:

  • self:链接到自身。
  • parent:链接到父文件夹。
  • thumbnail:(可选)指向文件夹缩略图图像的链接。

资产

在Experience Manager中,资产包含以下元素:

  • 资产的属性和元数据。
  • 多个演绎版,如原始演绎版(最初上传的资产)、缩略图和各种其他演绎版。 其他再现可以是不同大小的图像、不同的视频编码或从PDF或Adobe InDesign文件提取的页面。
  • 可选注释。

有关内容片段中元素的信息,请参阅Experience Manager资产HTTP API🔗中的内容片段支持。

在Experience Manager中,文件夹包含以下组件:

  • 实体:资产的子项是其演绎版。
  • 属性.
  • 链接.

Assets HTTP API包括以下功能:

注意

为了便于读取,请省略完整的cURL记号。 事实上,该记号确实与Resty相关,后者是cURL的脚本包装器。

前提条件

  • 访问 https://[aem_server]:[port]/system/console/configMgr.
  • 导航到​Adobe花岗岩CSRF滤镜
  • 确保属性​筛选器方法​包括:POSTPUTDELETE

检索列出的文件夹

检索现有文件夹及其子实体(子文件夹或资源)的Siren表示形式。

请求: GET /api/assets/myFolder.json

响应代码:响应代码为:

  • 200 — 好 — 成功。
  • 404 — 未找到 — 文件夹不存在或无法访问。
  • 500 — 内部服务器错误 — 如果发生其他问题。

响应:返回的实体类是资产或文件夹。包含实体的属性是每个实体的全部属性集的子集。 为了获得实体的完整表示形式,客户端应检索链接所指向的URL的内容,其中relself

创建文件夹

创建新sling:OrderedFolder。 如果提供*而不是节点名称,则servlet将参数名称用作节点名称。 接受为请求数据是新文件夹的Siren表示形式或一组名称 — 值对,编码为application/www-form-urlencodedmultipart/ form- data,对于从HTML表单直接创建文件夹非常有用。 此外,文件夹的属性可以指定为URL查询参数。

如果提供的路径的父节点不存在,则API调用将失败,并带有500响应代码。 如果文件夹已存在,则调用将返回响应代码409

参数: name 是文件夹名称。

请求

  • POST /api/assets/myFolder -H"Content-Type: application/json" -d '{"class":"assetFolder","properties":{"title":"My Folder"}}'
  • POST /api/assets/* -F"name=myfolder" -F"title=My Folder"

响应代码:响应代码为:

  • 201 — 创建 — 成功创建时。
  • 409 — 冲突 — 如果文件夹已存在。
  • 412 - PRENIDETATION FAILED — 如果找不到或访问根集合。
  • 500 — 内部服务器错误 — 如果发生其他问题。

创建资产

将提供的文件放在提供的路径上,以便在DAM存储库中创建资产。 如果提供*而不是节点名,则servlet将参数名或文件名用作节点名。

参数:参数用 name 于资产名称和 file 文件引用。

请求

  • POST /api/assets/myFolder/myAsset.png -H"Content-Type: image/png" --data-binary "@myPicture.png"
  • POST /api/assets/myFolder/* -F"name=myAsset.png" -F"file=@myPicture.png"

响应代码:响应代码为:

  • 201 — 已创建 — 如果资产已成功创建。
  • 409 — 冲突 — 如果资产已存在。
  • 412 - PRENIDETATION FAILED — 如果找不到或访问根集合。
  • 500 — 内部服务器错误 — 如果发生其他问题。

更新资产二进制

更新资产的二进制(原始名称的演绎版)。 如果已配置更新,则更新会触发要执行的默认资产处理工作流。

请求: PUT /api/assets/myfolder/myAsset.png -H"Content-Type: image/png" --data-binary @myPicture.png

响应代码:响应代码为:

  • 200 — 确定 — 如果资产已成功更新。
  • 404 — 未找到 — 如果在提供的URI中找不到或访问资产,请执行以下操作。
  • 412 - PRENIDETATION FAILED — 如果找不到或访问根集合。
  • 500 — 内部服务器错误 — 如果发生其他问题。

更新资产元数据

更新资产元数据属性。 如果更新dc:命名空间中的任何属性,API将更新jcr命名空间中的相同属性。 API不会同步两个命名空间下的属性。

请求: PUT /api/assets/myfolder/myAsset.png -H"Content-Type: application/json" -d '{"class":"asset", "properties":{"jcr:title":"My Asset"}}'

响应代码:响应代码为:

  • 200 — 确定 — 如果资产已成功更新。
  • 404 — 未找到 — 如果在提供的URI中找不到或访问资产,请执行以下操作。
  • 412 - PRENIDETATION FAILED — 如果找不到或访问根集合。
  • 500 — 内部服务器错误 — 如果发生其他问题。

dcjcr命名空间之间同步元数据更新

API方法更新jcr命名空间中的元数据属性。 使用用户界面进行的更新更改了dc命名空间中的元数据属性。 要在dcjcr命名空间之间同步元数据值,您可以创建工作流并配置Experience Manager,以便在资产编辑时执行该工作流。 使用ECMA脚本同步所需的元数据属性。 以下示例脚本将标题字符串在dc:titlejcr:title之间同步。

var workflowData = workItem.getWorkflowData();
if (workflowData.getPayloadType() == "JCR_PATH")
{
 var path = workflowData.getPayload().toString();
 var node = workflowSession.getSession().getItem(path);
 var metadataNode = node.getNode("jcr:content/metadata");
 var jcrcontentNode = node.getNode("jcr:content");
if (jcrcontentNode.hasProperty("jcr:title"))
{
 var jcrTitle = jcrcontentNode.getProperty("jcr:title");
 metadataNode.setProperty("dc:title", jcrTitle.toString());
 metadataNode.save();
}
}

创建资产演绎版

为资产创建新的资产演绎版。 如果未提供请求参数名称,则文件名将用作格式副本名称。

参数:这些参数 name 用于格式副本的名称, file 并用作文件引用。

请求

  • POST /api/assets/myfolder/myasset.png/renditions/web-rendition -H"Content-Type: image/png" --data-binary "@myRendition.png"
  • POST /api/assets/myfolder/myasset.png/renditions/* -F"name=web-rendition" -F"file=@myRendition.png"

响应代码:响应代码为:

  • 201 — 已创建 — 如果已成功创建再现。
  • 404 — 未找到 — 如果在提供的URI中找不到或访问资产,请执行以下操作。
  • 412 - PRENIDETATION FAILED — 如果找不到或访问根集合。
  • 500 — 内部服务器错误 — 如果发生其他问题。

更新资产演绎版

这些更新分别用新的二进制数据替换资产演绎版。

请求: PUT /api/assets/myfolder/myasset.png/renditions/myRendition.png -H"Content-Type: image/png" --data-binary @myRendition.png

响应代码:响应代码为:

  • 200 — 确定 — 如果已成功更新演绎版。
  • 404 — 未找到 — 如果在提供的URI中找不到或访问资产,请执行以下操作。
  • 412 - PRENIDETATION FAILED — 如果找不到或访问根集合。
  • 500 — 内部服务器错误 — 如果发生其他问题。

在资产上添加评论

创建新资产注释。

参数:参数用 message 于注释的消息正文和 annotationData JSON格式的注释数据。

请求: POST /api/assets/myfolder/myasset.png/comments/* -F"message=Hello World." -F"annotationData={}"

响应代码:响应代码为:

  • 201 — 已创建 — 如果注释已成功创建。
  • 404 — 未找到 — 如果在提供的URI中找不到或访问资产,请执行以下操作。
  • 412 - PRENIDETATION FAILED — 如果找不到或访问根集合。
  • 500 — 内部服务器错误 — 如果发生其他问题。

复制文件夹或资产

复制新目标路径中可用的文件夹或资产。

请求标头:参数有:

  • X-Destination - API解决方案作用域中要将资源复制到的新目标URI。
  • X-Depth - infinity0。使用0仅复制资源及其属性,而不复制其子项。
  • X-Overwrite — 用于 F 防止覆盖现有目标位置的资产。

请求: COPY /api/assets/myFolder -H"X-Destination: /api/assets/myFolder-copy"

响应代码:响应代码为:

  • 201 — 已创建 — 如果文件夹/资产已复制到非现有目标。
  • 204 — 无内容 — 如果文件夹/资产已复制到现有目标。
  • 412 - PRENIDETATION FAILED — 如果缺少请求标头。
  • 500 — 内部服务器错误 — 如果发生其他问题。

移动文件夹或资产

将给定路径上的文件夹或资产移动到新目标。

请求标头:参数有:

  • X-Destination - API解决方案作用域中要将资源复制到的新目标URI。
  • X-Depth - infinity0。使用0仅复制资源及其属性,而不复制其子项。
  • X-Overwrite — 使用以 T 强制删除现有资源或 F 防止覆盖现有资源。

请求: MOVE /api/assets/myFolder -H"X-Destination: /api/assets/myFolder-moved"

请勿在URL中使用/content/dam。 移动资产并覆盖现有资产的示例命令如下:

curl -u admin:admin -X MOVE https://[aem_server]:[port]/api/assets/source/file.png -H "X-Destination: http://[aem_server]:[port]/api/assets/destination/file.png" -H "X-Overwrite: T"

响应代码:响应代码为:

  • 201 — 已创建 — 如果文件夹/资产已复制到非现有目标。
  • 204 — 无内容 — 如果文件夹/资产已复制到现有目标。
  • 412 - PRENIDETATION FAILED — 如果缺少请求标头。
  • 500 — 内部服务器错误 — 如果发生其他问题。

删除文件夹、资产或演绎版

删除提供路径上的资源(-tree)。

请求

  • DELETE /api/assets/myFolder
  • DELETE /api/assets/myFolder/myAsset.png
  • DELETE /api/assets/myFolder/myAsset.png/renditions/original

响应代码:响应代码为:

  • 200 — 确定 — 如果文件夹已成功删除。
  • 412 - PRENIDETATION FAILED — 如果找不到或访问根集合。
  • 500 — 内部服务器错误 — 如果发生其他问题。

提示和限制

  • HTTP API更新命名空间中 的元数据属 jcr 性。但是,Experience Manager用户界面会更新dc命名空间中的元数据属性。

  • 资产HTTP API不会返回完整的元数据。 命名空间是硬编码的,只返回这些命名空间。 有关完整的元数据,请参阅资产路径/jcr_content/metadata.json

On this page

Adobe Maker Awards Banner

Time to shine!

Apply now for the 2021 Adobe Experience Maker Awards.

Apply now
Adobe Maker Awards Banner

Time to shine!

Apply now for the 2021 Adobe Experience Maker Awards.

Apply now