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: AReferpointing to the Content Type (template) this Content follows. Itssys.idis 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 managementversion,revisionis the only value that points to the published version.fields: An object keyed by theapiNameof each field of the Content Type. The value is a single value resolved for the requestedlocale(not a locale map). In the example above,photoisnullbecause 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" } }).
| Property | Type | Description |
|---|---|---|
id | string | Unique resource identifier. |
type | string | Resource kind. For a Content this is always "Content". |
space | Refer<Space> | The Space this Content belongs to. |
contentType | Refer<ContentType> | The Content Type (template) this Content follows. |
createdAt | string (date-time) | Creation time. |
updatedAt | string (date-time) | Last update time. |
revision | integer | The version at the time it was published. Each publish records the version at that moment here. |
createdBy | Refer<User> | The user who created it. Included only when the publishWithAuthor of the Content Type this Content follows is on. |
updatedBy | Refer<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,fieldscomes back as a single value for that locale. Unlike CMA, which returns a map holding every per-locale value such asfields.productName.en-US, CDA picks the value for the one requested locale and places it directly infields.productName. If there is no value and the Fallback does not reach one either, that field becomesnull(in the Resource structure above,photoisnullbecause 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.
Related documents
- CDA Content Type: The published template this Content follows.
- CDA Media: The published file assets that Content references.
- CMA Content: The management API for creating and editing Content.
- Localization (concept): locale and fallback behavior.
