Content

Last updated: July 3, 2026

The CDA (Content Delivery API) is a read-only API that delivers published resources to public visitors. This page covers how to read published Content, that is, each individual piece of real data created following the template called a Content Type. Because CDA delivers a snapshot from the time of publishing, drafts that have not yet been published in the content studio do not appear here.

CDA has only read (GET) endpoints; creating, editing, and publishing Content is the responsibility of CMA Content. For CDA's common behavior, such as authentication and the published delivery model (the published snapshot, revision, published-only visibility, and author exposure being dependent on publishWithAuthor), see the CDA overview. How values are resolved by locale is covered in locale and fields below.

Resource structure

The following is how CDA delivers, in a single read with locale=en-US, one published Content from the demo Space (the "Stainless Tumbler 500ml" product). Along with sys (system properties), it has fields, which holds the field values of the Content Type this Content follows.

{
  "sys": {
    "id": "3trmXRM3RqbgSnifyg7PBUM8Ds0Xvw",
    "type": "Content",
    "space": { "sys": { "id": "tcq4V2Xb", "type": "Refer", "targetType": "Space" } },
    "contentType": { "sys": { "id": "3trmXRM3RqbgSnifyg7PAmlxvX4fGY", "type": "Refer", "targetType": "ContentType" } },
    "createdAt": "2026-06-17T16:58:56.660Z",
    "updatedAt": "2026-06-18T01:46:55.604Z",
    "revision": 3
  },
  "fields": {
    "price": 18000,
    "description": "Double-wall vacuum insulation keeps drinks hot or cold for hours. A roomy 500ml.",
    "photo": null,
    "productName": "Stainless Tumbler 500ml"
  }
}

Key properties:

  • sys.id: The unique identifier of the Content. It goes into {contentId} in the single-read path.
  • sys.contentType: A Refer pointing to the Content Type (template) this Content follows. Its sys.id is the identifier of that Content Type, and you can read which fields it has in CDA Content Type.
  • sys.revision: The version at the time it was published. Because CDA does not carry the management version, revision is the only value that points to the published version.
  • fields: An object keyed by the apiName of each field of the Content Type. The value is a single value resolved for the requested locale (not a locale map). In the example above, photo is null because no Media is linked.

System properties (sys)

The sys of a published Content carries only properties for the published snapshot. space, contentType, createdBy, and updatedBy are in the Refer shape ({ "sys": { "id", "type": "Refer", "targetType" } }).

PropertyTypeDescription
idstringUnique resource identifier.
typestringResource kind. For a Content this is always "Content".
spaceRefer<Space>The Space this Content belongs to.
contentTypeRefer<ContentType>The Content Type (template) this Content follows.
createdAtstring (date-time)Creation time.
updatedAtstring (date-time)Last update time.
revisionintegerThe version at the time it was published. Each publish records the version at that moment here.
createdByRefer<User>The user who created it. Included only when the publishWithAuthor of the Content Type this Content follows is on.
updatedByRefer<User>The user who last updated it. Included only when publishWithAuthor is on.

Because this is a published snapshot, the version, status, publish, and archive found in CMA's sys are not carried. revision is the only value that points to the published version.

locale and fields

The locale query parameter chooses which language to receive. It behaves in three ways.

  • Given a code such as locale=ko-KR, fields comes back as a single value for that locale. Unlike CMA, which returns a map holding every per-locale value such as fields.productName.en-US, CDA picks the value for the one requested locale and places it directly in fields.productName. If there is no value and the Fallback does not reach one either, that field becomes null (in the Resource structure above, photo is null because no Media is linked).
  • Omitted, it returns the same way for the Space's default Locale.
  • Given locale=*, it does not pick a single language and returns the map holding all per-locale values (fields.productName.en-US) as is, like CMA.

When you receive a single language by code or by omission, the response carries an x-weegloo-locale header that reports the locale actually used (it is absent when locale=*). Per-locale value selection and fallback rules are covered in Localization (concept).

API

The base URL for the four endpoints below is https://cda.weegloo.com/v1, and a Bearer token that authenticates against CDA is required in the Authorization header. All four endpoints take the locale query parameter (see locale and fields above). The first two endpoints target the published Content of the entire Space, and the last two target only the Content belonging to a specific Content Type.

When you filter or sort the first two endpoints (the Space-wide flat list) by fields.*, you must also scope them with sys.contentType.sys.id={contentTypeId} — a bare contentType={contentTypeId} does not substitute for it. The last two endpoints already carry the Content Type in the path, so they do not need it.