Voog.com

Content partial contents

Summary of content partial contents endpoints

List all available content partial contents for the current site

GET /admin/api/content_partials

Example response:

Status: 200 OK
[
  {
    "id": 1,
    "content_type": "custom",
    "created_at": "2026-05-30T09:25:22.000Z",
    "updated_at": "2026-05-30T09:26:17.000Z",
    "url": "http://helloworld.voog.co/admin/api/content_partials/1",
    "content": {
      "id": 1,
      "name": "body",
      "created_at": "2026-05-30T09:25:22.000Z",
      "updated_at": "2026-05-30T09:25:22.000Z",
      "position": 1,
      "url": "http://helloworld.voog.co/admin/api/pages/1/contents/1"
    },
    "parent": {
      "id": 1,
      "title": "Home page",
      "created_at": "2026-05-30T09:22:49.000Z",
      "updated_at": "2026-05-30T09:22:54.000Z",
      "type": "page",
      "url": "http://helloworld.voog.co/admin/api/pages/1"
    }
  }, {
    "id": 2,
    "content_type": "video",
    "created_at": "2026-05-30T11:43:42.000Z",
    "updated_at": "2026-05-30T11:44:07.000Z",
    "url": "http://helloworld.voog.co/admin/api/content_partials/2",
    "content": {
      "id": 2,
      "name": "body",
      "created_at": "2026-05-30T11:43:42.000Z",
      "updated_at": "2026-05-30T11:43:42.000Z",
      "position": 2,
      "url": "http://helloworld.voog.co/admin/api/pages/3/contents/2"
    },
    "parent": {
      "id": 3,
      "title": "Contact",
      "created_at": "2026-05-30T11:43:37.000Z",
      "updated_at": "2026-05-30T11:43:37.000Z",
      "type": "page",
      "url": "http://helloworld.voog.co/admin/api/pages/3"
    }
  }
]

Parameters

  • per_page - elements per response (default: 50; maximum: 250).
  • page - requested page (default: 1).
  • parent_id and parent_type - parent id and type. Returns content partial contents for parent. If present then both parameters are required. Allowed values for parent_type are:
    • page - parent is page.
    • language parent is language.
    • article - parent is article.

Filter attributes

Read more about filters.

  • Object content_partial attributes: id, body, metainfo, created_at, updated_at.
  • Object content attributes: id, parent_id, language_id, content_id, content_type, page_id, page_type, name, position, created_at, updated_at.

Get data for a single content partial content

GET /admin/api/content_partials/1

Example request:

GET http://helloworld.voog.co/admin/api/content_partials/2

Example response:

Status: 200 OK
{
  "id": 2,
  "content_type": "video",
  "created_at": "2026-05-30T10:22:04.000Z",
  "updated_at": "2026-05-30T10:22:04.000Z",
  "url": "http://helloworld.voog.co/admin/api/content_partials/2",
  "content": {
    "id": 3,
    "name": "body",
    "position": 1,
    "created_at": "2026-05-30T10:22:04.000Z",
    "updated_at": "2026-05-30T10:22:04.000Z",
    "url": "http://helloworld.voog.co/admin/api/pages/1/contents/3"
  },
  "parent": {
    "id": 1,
    "title": "Home page",
    "type": "page",
    "created_at": "2026-01-13T09:19:04.000Z",
    "updated_at": "2026-01-13T09:19:04.000Z",
    "url": "http://helloworld.voog.co/admin/api/pages/1"
  },
  "body": "<iframe scrolling=\"no\" style=\"width: 436px; height: 358.033px;\" src=\"http://www.youtube.com/embed/jTv3wWQDDgQ\"></iframe>",
  "metainfo": {
    "type": "video"
  }
}

Update attributes of a content partial content

PUT /admin/api/content_partials/1

Example request:

PUT http://helloworld.voog.co/admin/api/content_partials/2

Example data:

{
  "body": "<iframe scrolling=\"no\" style=\"width: 436px; height: 358.033px;\" src=\"http://www.youtube.com/embed/jTv3wWQDDgQ?wmode=transparent\"></iframe>",
  "metainfo": {
    "type": "custom"
  }
}

Example response:

Status: 200 OK
{
  "id": 2,
  "content_type": "custom",
  "created_at": "2026-05-30T10:22:04.000Z",
  "updated_at": "2026-05-30T10:44:04.000Z",
  "url": "http://helloworld.voog.co/admin/api/content_partials/2",
  "content": {
    "id": 3,
    "name": "body",
    "position": 1,
    "created_at": "2026-05-30T10:22:04.000Z",
    "updated_at": "2026-05-30T10:22:04.000Z",
    "url": "http://helloworld.voog.co/admin/api/pages/1/contents/3"
  },
  "parent": {
    "id": 1,
    "title": "Home page",
    "type": "page",
    "created_at": "2026-01-13T09:19:04.000Z",
    "updated_at": "2026-01-13T09:19:04.000Z",
    "url": "http://helloworld.voog.co/admin/api/pages/1"
  }
}

Parameters

The request body must contain a content_partial object. Its supported attributes are:

  • body - new rendered content. Applies to custom, map, and video. It is ignored for latest_articles.
  • metainfo - content type and type-specific settings.
    • type - sets the response's content_type. Supported values are custom, map, video, and latest_articles (Latest news).
    • The remaining settings documented under Latest news apply only when type is latest_articles.
type body metainfo
custom HTML content type
map Map embed content type
video Video embed content type
latest_articles Ignored type and Latest news settings

Latest news (latest_articles)

Create a content partial through the Contents API with content_type: "content_partial", then update its content partial URL with the settings below. The editor adds this block as the final item in the More menu.

Settings live in metainfo; body is ignored in both public and editor rendering. For example:

{
  "content_partial": {
    "metainfo": {
      "type": "latest_articles",
      "heading": "Latest news",
      "blog_page_ids": [],
      "tag_ids": [],
      "count": 6,
      "layout": "list",
      "columns": 3,
      "featured_count": 1,
      "show_heading": true,
      "show_read_all": true,
      "excerpt_length": 110,
      "show_image": true,
      "show_excerpt": true,
      "show_date": true,
      "show_author": false,
      "show_tags": false
    }
  }
}

Send this to PUT /admin/api/content_partials/:id?render_partial=1 to save settings and receive fresh HTML in partial. The render_partial parameter applies only to latest_articles. The response also includes normalized metainfo. Omitting render_partial=1 skips HTML rendering. Partial settings updates preserve omitted settings; empty arrays clear selections.

  • The heading defaults to empty. show_heading (default true) controls its visibility.
  • show_read_all (default true) independently shows “View all articles” when there is exactly one eligible source blog. It links to that blog, including when tags filter the displayed articles. Multiple source blogs have no combined archive link. The header row is omitted when neither a heading nor an archive link is visible.
  • Empty blog_page_ids includes all published blogs in the rendered page's language.
  • Empty tag_ids disables tag filtering; otherwise an article must match at least one selected tag. Missing/deleted selections do not broaden the query.
  • Results stay within the current site and language and respect blog privacy. Only published articles are included, including in the editor.
  • Ordering follows the blog's standard descending article date (created_at), with descending ID as a tie breaker.
  • count is bounded to 1–50 (default 6), including featured articles.
  • Layouts are list (List, default), grid (Grid), and featured (Feature). removed compact and unknown values fall back to list.
  • columns is bounded to 2–4 (default 3). It affects Grid and the lower Feature feed, where it is capped at 3. It is hidden in the editor for List.
  • featured_count is bounded to 1–4 (default 1) and cannot exceed count. Feature shows the newest article as a large lead, other featured articles beside it, and remaining articles below. With only one matching featured article, the lead stands alone. The setting is exposed only for Feature.
  • Excerpts are plain text, truncated to excerpt_length (1–1000, default 110). The length field is hidden when excerpts are disabled. Dates use the content language.
  • Missing article images use stable, varied gradient placeholders when show_image is enabled. Images use the CMS image tag with responsive srcset and layout-specific sizes; turning images off removes both images and placeholders.

Use GET /admin/api/pages?content_type=blog&language_code=en and GET /admin/api/tags?language_code=en for selectors, following pagination links.