Skip to content

PresentationPathResult

optional classification?: string[]

The ids of the categories this page was published in, each with all of its ancestors (so a page in Espresso under Coffee lists both). Absent when the page has none, and against an older server. Ids only: a category’s name and path are read live, since a rename must not need a republish. This is what a site sends to Audience when it records a page view.


kind: "presentation"


optional locale?: string | null

The locale this address resolved to — what a root layout sets <html lang> from. Sent for a site with a locale addressing strategy (the address carries the locale, so the server is the one that knows it); absent against an invariant site and against an older server. null when the organization has no locale tree to name one from.


optional localeSlot?: string

The locale slot the path was found in. Usually the locale’s own code, but default when that locale has no materialized slot yet and the page was found by its default path.


nodeId: string


path: string


presentation: PresentationEnvelope


optional title?: string

The title the CMS computed for this address: the node’s own contextual override where there is one, the bound component’s frozen title otherwise, and the node’s internal editor label as the floor, so a server never sees an empty one. titleSource says which answered.

Optional because the value can genuinely be absent on this side of the wire even though a current server always sends one: against an older server, and on a result constructed locally rather than fetched (a live-preview draft has no frozen title). Write result.title ?? 'Your fallback'.


optional titleSource?: "name" | "content"

content = from the bound content, whether the address overrode it or not; name = the node’s internal label, meaning no Contract in the chain declares a title field.