Class index as JSON 

Every manual is rendered with a classes.json beside its toc.json: every PHP class the manual speaks of, and where it does so.

It answers what no rendered file answered before: where a class is explained, and what else says anything about it. objects.inv.json lists what a manual documents, which is the definitions alone.

{
    "project": {
        "title": "TYPO3 Explained",
        "version": "main",
        "permalink": "https://docs.typo3.org/permalink/t3coreapi:{anchor}@main"
    },
    "classes": {
        "\\TYPO3\\CMS\\Core\\Authentication\\AbstractAuthenticationService": {
            "type": "class",
            "places": [
                {
                    "path": "ApiOverview/Authentication/AuthenticationService/Index",
                    "anchor": "authentication-api",
                    "kind": "inline",
                    "members": ["::initAuth()"]
                },
                {
                    "path": "ApiOverview/Backend/BackendModules/SudoMode",
                    "anchor": "backend-module-sudo-extensions",
                    "kind": "code"
                },
                {
                    "path": "ApiOverview/Services/Developer/ServiceApi",
                    "anchor": "services-developer-service-api",
                    "kind": "inline"
                }
            ]
        }
    }
}
Copied!

The project is described the way toc.json describes it, and the permalink there works for every anchor here.

Each class is named in full, with a leading backslash, and carries what it is and the places that speak of it:

type
What the TYPO3 API says the name is: class, interface, trait or enum. Left out for a name the API does not know -- a class of an extension or of another vendor, but below \TYPO3 also a namespace, a typo or an invented example. Nothing in the writing tells those apart: a use statement imports a namespace and a class alike.
places
Where the manual speaks of the class, ordered by page, anchor and section. Each place says:
path
The page within the manual, relative to this file and without an extension, as in toc.json.
typo3-version
In the Changelog only: the release of the entry the place is in, read from its path, for example 12.1 or 13.4.x. Left out in every other manual.
anchor
The nearest label at or above the place: the label of its section, or of the section or page around it. Fill it into the project's permalink to link to the passage rather than to the top of the page -- every anchor here resolves. Empty where the page has no label at all. For a definition it is the anchor of the class itself.
section
The section the place is in, where that section has no label of its own: the id derived from its title, such as migration or impact in a Changelog entry. It works as a fragment on the page, path with .html# and the section, but not in a permalink. Left out where the section has a label, which is then the anchor.
kind

Where the class stands:

inline
In the text, named with :php: or :php-short: .
code
In a PHP example, which imports the class with a use statement. What the example then does with it is not counted again.
definition
The manual documents the class itself, with .. php:class:: or one of its siblings.
members
The members the text names, as they are written after the class: ::makeInstance(), ->getAttribute(), ::CONSTANT. Left out where the text names the class alone, and only ever present on inline.

A class named twice in the same section is one place: an author repeating a name does not make it a second mention. Naming several of its members there is one place too, which lists them.

A manual interested in one part of the world keeps that part alone, and names the namespaces it wants. Everything below them is indexed, everything else is passed over:

<extension class="\T3Docs\Typo3DocsTheme\DependencyInjection\Typo3DocsThemeExtension"
           indexed-namespaces="TYPO3\CMS, TYPO3Fluid"
/>
Copied!

Unset, which is the default, the index keeps every class a manual speaks of.

In a manual about the past, a missing type mostly means the class is gone rather than misspelled: the API knows the current version, and the Changelog speaks of many classes that no longer exist. There each place names the release of its entry, and the anchor of a place in an entry is the entry's own, the key of the entry in Changelog-<major>.json.

Classes below Vendor, MyVendor, Foo or OriginalVendor are left out: an example invents them for the reader to replace with their own, so where they are spoken of says nothing. A manual that invents other names says so on the extension, and names all of them -- the setting replaces the list above rather than adding to it:

<extension class="\T3Docs\Typo3DocsTheme\DependencyInjection\Typo3DocsThemeExtension"
           example-vendors="Vendor, MyVendor, Acme"
/>
Copied!

For TYPO3 Explained the file is about 830 KB, with 969 classes in 3084 places.