ACDA (App Content Delivery API)

最后更新:2026年6月22日

ACDA(App Content Delivery API)是面向已注册产品的会员(即 ServiceUser)交付已发布 ContentMedia 的只读 API。运营 Space 的一方将内容发布后,会员便通过 ACDA 读取这些已发布的资料。可以把它理解为 CDA 的 ServiceUser 版本:与 CDA 向公开访问者交付已发布内容的作用相同,只是以会员身份执行。ACDA 仅提供查询(GET)端点,创建、修改、删除由 ACMA 负责。

调用 ACDA 使用 ServiceLogin 签发的 Bearer 令牌。该令牌仅在 ACMA 和 ACDA 中有效,无法用于 CMA 或 CDA(令牌签发流程参见 Auth API)。

与 CDA 的区别

ACDA 的响应形态与 CDA 相同。它仅交付已发布资料的快照(sys 中不含 versionstatuspublish,只包含表示公开时点版本的 revision),并在查询时以 locale 指定接收的语言。与 CDA 的区别在于读取范围和身份这两点。

  • 按会员区分的读取范围: CDA 中,使用同一个 DeliveryAccessToken 调用的任何人看到的都是同一个发布集合。ACDA 只返回调用方 ServiceUser 被允许访问的内容,而允许的范围由该会员的 ServiceUserRole 及分配情况决定。身份也不同:CDA 使用 DeliveryAccessToken 调用,ACDA 使用 ServiceLogin 签发的会员令牌调用。

通过 locale 查询参数指定以哪种语言接收的方式同样与 CDA 相同。给定形如 locale=ko-KR 的代码时,fields 会以该 locale 的单一值返回(若不存在且 Fallback 也无法触及,则为空或 null);省略时则以 Space 的默认 Locale 按同样方式返回;给定 locale=* 时,则原样返回包含所有 locale 值的映射。在以单一语言接收的前两种情况下,会附带一个告知实际所用 locale 的 x-weegloo-locale 头(locale=* 时不附带)。

资源结构

下面是 ACDA 交付演示 Space 中某个“商品” Content 的形态。这是以 locale=ko-KR 查询的结果,fields 中每个值都填入了 ko-KR 的单一值。

{
  "sys": {
    "id": "3trmXRM3RqbgSnifyg7OGhwhlqvAvq",
    "type": "Content",
    "space": { "sys": { "id": "HnQ32YiH", "type": "Refer", "targetType": "Space" } },
    "contentType": { "sys": { "id": "3trmXRLdJF4GBlAjtcuoZ7Pnxj8dlA", "type": "Refer", "targetType": "ContentType" } },
    "createdAt": "2026-06-15T15:16:12.151Z",
    "updatedAt": "2026-06-16T14:35:11.210Z",
    "revision": 3
  },
  "fields": {
    "productName": "스테인리스 텀블러 500ml",
    "price": 18000,
    "description": "이중 진공 단열로 보온·보냉이 오래갑니다. 500ml 대용량."
  }
}

主要键:

  • sys.idContent 的唯一标识符。它会填入单条查询路径中的 {contentId}
  • sys.type:资源种类,Content 始终为 "Content"
  • sys.space:指向该 Content 所属 Space 的引用。
  • sys.contentType:指向该 Content 所遵循的 Content Type 的引用。
  • sys.revision:公开时点的版本。每次发布时,该时点的版本都会填入此处。ACDA 不包含管理用的 versionstatuspublish,因此表示发布版本的值只有 revision 这一个。
  • sys.createdBysys.updatedBy:仅当 Content TypepublishWithAuthor 开启时才会包含,分别指向作者和修改者。上面的示例中该选项处于关闭状态,因此这两个键被省略。
  • fields:以 { apiName: value } 的形态保存各字段的值。与 CMA、ACMA 的 locale 映射({ apiName: { locale: value } })不同,ACDA 只保存所查询 locale 的单一值。上面示例中,代表图片 photo 在该 locale 没有值,因此被省略。

Media 也以同样的发布交付形态返回,sys 中只包含 revision,不含 versionstatuspublishMedia 始终省略作者信息(createdByupdatedBy)。Mediafields.file 也以所查询 locale 的单一对象返回。

API

三个端点都是查询(GET),并通过 locale 查询参数指定接收的语言(给定代码则为该 locale,省略则为默认 Locale* 则为全部映射,详见上文)。