Built-in content types

Contents

Enonic XP ships with a set of concrete content types that are ready to use as-is. Unlike custom content types, they are not declared in your app — they are always available and cannot be redefined.

This page covers the generic types under the base namespace. Types in the portal namespace are documented in the pages and sites section.

Folder (base:folder)

Folders are containers for organizing child content. They have no data properties beyond their name and display name.

super-type

base:structured

is-abstract

false

is-final

false

allow-child-content

true

Output

{
  "_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
  "_name": "articles",
  "_path": "/site/articles",
  "type": "base:folder",
  "displayName": "Articles",
  "data": {}
}

GraphQL

Most queries treat folders as regular Content — the Content interface covers what folders expose. Use the typed fragment only when you need to make the query type-explicit:

{
  guillotine {
    getChildren(key: "/site") {
      displayName
      _path
      type
      ... on base_Folder {
        _id
      }
    }
  }
}

Shortcut (base:shortcut)

Shortcuts reference or redirect to another content item. Optional key-value parameters are appended to the redirect URL.

super-type

base:structured

is-abstract

false

is-final

true

allow-child-content

true

Output

{
  "_id": "b2c3d4e5-...",
  "_name": "latest",
  "_path": "/site/latest",
  "type": "base:shortcut",
  "displayName": "Latest post",
  "data": {
    "target": "f3076b5c-ea45-4c8b-8c06-1f87b8d8cdd9",
    "parameters": [
      { "name": "utm_source", "value": "internal" }
    ]
  }
}

GraphQL

{
  guillotine {
    get(key: "/site/latest") {
      displayName
      ... on base_Shortcut {
        data {
          target {
            _id
            _path
            displayName
          }
          parameters {
            name
            value
          }
        }
      }
    }
  }
}

The target field is a content reference and resolves to the full target content when queried.

Unstructured (base:unstructured)

Unstructured content permits storing any properties without a declared form. Because it has no schema, Content Studio has no default editor for it — unstructured items are typically created and updated via API.

super-type

base:structured

is-abstract

false

is-final

true

allow-child-content

true

Use cases are narrow: items whose properties vary per instance but still need editorial management, publishing, permissions, or versioning.

For data that does not need editorial workflows, consider using XP’s NoSQL storage instead.

Output

{
  "_id": "c3d4e5f6-...",
  "_name": "telemetry-2026-04-19",
  "_path": "/site/telemetry/telemetry-2026-04-19",
  "type": "base:unstructured",
  "displayName": "Telemetry snapshot",
  "data": {
    "collectedAt": "2026-04-19T12:00:00Z",
    "metrics": {
      "requests": 42301,
      "errors": 12
    },
    "tags": ["nightly", "prod"]
  }
}

GraphQL

Because the schema is not known at build time, Guillotine cannot generate typed fields for unstructured content. Use dataAsJson to retrieve the entire data payload:

{
  guillotine {
    get(key: "/site/telemetry/telemetry-2026-04-19") {
      displayName
      type
      dataAsJson
    }
  }
}

Contents

Contents