---
title: "Changelog index as JSON"
manual: "Render guides"
version: "main"
permalink: "https://docs.typo3.org/permalink/t3renderguides:changelogindex"
source: "Developer/ChangelogIndex.rst"
modified: "2026-09-17T12:30:56+00:00"
---

# Changelog index as JSON

Every manual is rendered with a [table of contents as JSON](https://docs.typo3.org/permalink/t3renderguides:tableofcontentsjson). The TYPO3 Core Changelog gets one artifact on top that
no other manual does: a machine-readable index of its entries, one file per
major release, written beside the overview page it belongs to.

`Changelog-13.json` sits next to `Changelog-13.html` and
`Changelog-13.md` and lists the same entries the overview page lists:

```json
{
    "major": 13,
    "entries": [
        {
            "permalink": "https://docs.typo3.org/permalink/changelog:feature-105638-1732034075",
            "path": "Changelog/13.4.x/Feature-105638-ModifyFetchedPageContent",
            "title": "Feature: #105638 - Modify fetched page content",
            "anchor": "feature-105638-1732034075",
            "type": "feature",
            "issue": 105638,
            "typo3-version": "13.4.x",
            "typo3-major": 13,
            "tags": ["Frontend", "PHP-API", "TypoScript", "ext:frontend"]
        }
    ]
}
```

-   **path**

    The entry's file within the manual, without an extension. Append
    `.html` for the page or `.md` for its Markdown.

-   **permalink**

    The URL that names the entry wherever its file ends up. The Changelog is
    deployed to `main` only, so these never carry an `@version`.

-   **title**

    The headline of the entry, for example
    `Feature: #105638 - Modify fetched page content`.

-   **anchor**

    The label the entry is known by: what the permalink resolves against, and
    what a link to the entry has to name.

-   **type**

    One of `feature`, `breaking`, `deprecation` or
    `important`.

-   **issue**

    The Forge issue the entry documents.

-   **typo3-version**

    The release the entry belongs to, read from its path, for example
    `13.4.x`. The document's own version is `main` for every entry
    and therefore says nothing.

-   **typo3-major**

    The major of that release, so a consumer can filter on it without parsing
    the version.

-   **tags**

    The terms of the entry's `.. index::` directive, such as
    `Frontend` or `ext:core`.

Entries are ordered newest release first, matching the overview page, and
within a release by issue, so the file does not change between two renders of
the same sources.

## Why it exists

The overview page links its entries by permalink, which costs a redirect per
entry -- 445 of them for v14 -- for anybody walking a whole release rather than
reading one page. The index is that list in a single request, and it carries
what the page cannot: the file of each entry, so a reader can go straight to
the Markdown instead of scraping HTML.

The Changelog is recognised by its interlink shortcode, and the format is added
by the theme rather than configured in the manual: the Changelog's
`guides.xml` lives in `typo3/cms-core`, and a documentation artifact
should not cost a Core patch.
