Documentation / @expofp/schema / Manifest
Interface: Manifest
Extends
output<typeofManifestSchema>
Indexable
[key: string]: unknownProperties
allow3dView?
optional allow3dView?: boolean;Inherited from
z.infer.allow3dViewallowConsent?
optional allowConsent?: boolean;Inherited from
z.infer.allowConsentalwaysShowSidebar?
optional alwaysShowSidebar?: boolean;Inherited from
z.infer.alwaysShowSidebarautoTrackingGps?
optional autoTrackingGps?: boolean;Inherited from
z.infer.autoTrackingGpsbooths?
optional booths?: (
| {
[key: string]: unknown;
availColor?: string;
buyUrl?: string;
exhibitors?: number[];
externalId?: string;
holdColor?: string;
id: number;
labelColor?: string;
meta?: Record<string, string>;
name: string;
poiTypeId?: number;
price?: string;
reserveUrl?: string;
size?: string;
soldColor?: string;
status?: "onhold" | "reserved";
title?: string;
type?: string;
}
| {
[key: string]: unknown;
color?: string;
description?: string;
exhibitors?: number[];
externalId?: string;
id: number;
meta?: Record<string, string>;
name: string;
poiTypeId?: number;
special: true;
title?: string;
})[];Inherited from
z.infer.boothsboothTerm?
optional boothTerm?: string;Inherited from
z.infer.boothTermbusRoutes?
optional busRoutes?: boolean;Enable live bus/transport routing on the floor plan.
Disabled by default: most plans have no transit routes, and probing for them issues an extra HTTP request on every load. Set to true only for plans that actually provide bus routes.
Inherited from
z.infer.busRoutescamera?
optional camera?: object = CameraSchema;The initial camera, applied once at boot (an empty object means "don't move"). The URL form is ?camera[x]=…; the runtime counterpart is FloorPlan.setCamera / the setCamera intent.
bearing?
optional bearing?: number;Map rotation in degrees (0–360).
floor?
optional floor?: string;Floor name to activate.
lat?
optional lat?: number;Center, GPS latitude (paired with lng).
lng?
optional lng?: number;Center, GPS longitude (paired with lat).
pitchDegrees?
optional pitchDegrees?: number;Camera tilt back from top down, in degrees.
pitchTime?
optional pitchTime?: number;Tilt animation duration in milliseconds.
x?
optional x?: number;Center, floor-plan projected coordinates (paired with y).
y?
optional y?: number;Center, floor-plan projected coordinates (paired with x).
zoomTime?
optional zoomTime?: number;Camera movement animation duration in milliseconds.
Inherited from
z.infer.cameracategories?
optional categories?: object[];Index Signature
[key: string]: unknownid
id: number;name
name: string;sponsorship?
optional sponsorship?: boolean;Inherited from
z.infer.categoriesconsent?
optional consent?: "ask" | "granted" | "denied" = ConsentSchema;Inherited from
z.infer.consentcustomCss?
optional customCss?: string;Inherited from
z.infer.customCsscustomCssFonts?
optional customCssFonts?: object[];Index Signature
[key: string]: unknownstyle?
optional style?: string;url?
optional url?: string;weight?
optional weight?: string | number;Inherited from
z.infer.customCssFontscustomKioskQrCodeUrl?
optional customKioskQrCodeUrl?: string;Inherited from
z.infer.customKioskQrCodeUrlcustomSetKiosk?
optional customSetKiosk?: string;Custom setkiosk phrase.
Inherited from
z.infer.customSetKioskdebugMode?
optional debugMode?: boolean;Debug mode: verbose logs, the in-map debug overlay, dev-leniency in error paths.
Inherited from
z.infer.debugModedebugPattern?
optional debugPattern?: string;Inherited from
z.infer.debugPatterndimensionless?
optional dimensionless?: boolean;Inherited from
z.infer.dimensionlessdisableBookmarked?
optional disableBookmarked?: boolean;Disable adding entities to bookmarks.
Inherited from
z.infer.disableBookmarkeddisableFeatured?
optional disableFeatured?: boolean;Drop the featured flag from every exhibitor (no featured view).
Inherited from
z.infer.disableFeatureddisableGps?
optional disableGps?: boolean;Start with GPS tracking off.
Inherited from
z.infer.disableGpsdisableRuntimeAlerts?
optional disableRuntimeAlerts?: boolean;Inherited from
z.infer.disableRuntimeAlertsenableExperimentalMaplibre?
optional enableExperimentalMaplibre?: boolean;Enable experimental MapLibre GL JS support.
Inherited from
z.infer.enableExperimentalMaplibreenableExperimentalOutdoorMarkers?
optional enableExperimentalOutdoorMarkers?: boolean;Enable experimental outdoor PoI markers: booths on an Outdoor* layer leave the renderer scene and draw as fixed-size native MapLibre markers with clustering.
Unset or false disables the feature outright — Outdoor layers then render like any other layer, exactly as they did before it existed. Unlike enableExperimentalMaplibre this is NOT tri-state: no drawing field opts a plan in, so there is nothing for undefined to defer to.
Inherited from
z.infer.enableExperimentalOutdoorMarkersenableIPS?
optional enableIPS?: boolean;Inherited from
z.infer.enableIPSenableRotation?
optional enableRotation?: boolean;Inherited from
z.infer.enableRotationendDate?
optional endDate?: string;Inherited from
z.infer.endDateevents?
optional events?: object[];Index Signature
[key: string]: unknownboothId?
optional boothId?: number;description?
optional description?: string;endDate?
optional endDate?: string;exhibitorId?
optional exhibitorId?: number;externalId?
optional externalId?: string;id
id: number;link?
optional link?: string;logoFile?
optional logoFile?: string;name
name: string;speakers?
optional speakers?: object[];Index Signature
[key: string]: unknownstartDate?
optional startDate?: string;tracks?
optional tracks?: unknown[];Inherited from
z.infer.eventsexhibitors?
optional exhibitors?: object[];Index Signature
[key: string]: unknownaddress?
optional address?: string;address2?
optional address2?: string;advertise?
optional advertise?: boolean;categories?
optional categories?: number[];city?
optional city?: string;country?
optional country?: string;description?
optional description?: string;email?
optional email?: string;externalId?
optional externalId?: string;facebook?
optional facebook?: string;featured?
optional featured?: boolean;gallery?
optional gallery?: string[];googlePlus?
optional googlePlus?: string;id
id: number;instagram?
optional instagram?: string;leadingImageUrl?
optional leadingImageUrl?: string;linkedin?
optional linkedin?: string;logo?
optional logo?:
| string
| {
smallUrl?: string;
tinyUrl?: string;
url: string;
} = ExhibitorLogoSchema;logoAspectRatio?
optional logoAspectRatio?: number;The logo's width divided by its height.
logoInBooth?
optional logoInBooth?: boolean;Paint the logo inside the exhibitor's booth shape on the drawing.
marketMaterials?
optional marketMaterials?: object[];Index Signature
[key: string]: unknownname
name: string;order?
optional order?: number;phone1?
optional phone1?: string;privateEmail?
optional privateEmail?: string;rebookingNote?
optional rebookingNote?: string;rebookingState?
optional rebookingState?: number;state?
optional state?: string;twitter?
optional twitter?: string;videoUrl?
optional videoUrl?: string;website?
optional website?: string;xing?
optional xing?: string;youtube?
optional youtube?: string;zip?
optional zip?: string;Inherited from
z.infer.exhibitorsexhibitorTerm?
optional exhibitorTerm?: string;Inherited from
z.infer.exhibitorTermexhibitorTermPlural?
optional exhibitorTermPlural?: string;Inherited from
z.infer.exhibitorTermPluralexpo
expo: string;Inherited from
z.infer.expoexpoFpAd?
optional expoFpAd?: boolean;Inherited from
z.infer.expoFpAdfilterButtonsConfig?
optional filterButtonsConfig?: object = FilterButtonsConfigSchema;Index Signature
[key: string]: unknownisExplicit?
optional isExplicit?: boolean;searchButtons?
optional searchButtons?: object[];Index Signature
[key: string]: unknownsortType?
optional sortType?: "custom" | "alphabetical";Inherited from
z.infer.filterButtonsConfigfilters?
optional filters?: object = FiltersSchema;Search filters applied once at boot by the URL filter manager (an empty object applies nothing). Canonical URL form ?filters[categories][0]=food; the legacy ?categories=/?poiType=/?poiTypes=/?exhibitors=true keys keep working — and remain the form the floor plan writes back to the URL as the visitor changes filters.
categories?
optional categories?: string[];Category names to pre-select; opens the category filter panel.
exhibitors?
optional exhibitors?: boolean;true opens the exhibitors list at boot.
poiType?
optional poiType?: string;A single POI type to pre-select; also activates its search filter button.
poiTypes?
optional poiTypes?: string[];POI type names to pre-select (no filter-button activation).
Inherited from
z.infer.filtersfpSvgJsRef?
optional fpSvgJsRef?:
| {
$ref: string;
}
| null;fp.svg.js ref (the drawing); null derives <legacyDataUrlBase>fp.svg.js.
Inherited from
z.infer.fpSvgJsReffpSvgLayerJsRefs?
optional fpSvgLayerJsRefs?: Record<string, {
$ref: string;
}>;Per-layer fp.svg.<layerName>.js refs (by layer name), resolved on demand.
Inherited from
z.infer.fpSvgLayerJsRefsfree?
optional free?: boolean;Inherited from
z.infer.freegallery?
optional gallery?: string[];Inherited from
z.infer.gallerygtag?
optional gtag?: string;Inherited from
z.infer.gtagheatmap?
optional heatmap?: object = HeatmapSchema;Heatmap mode, engaged once at boot (an empty object — the default — means no heatmap). A non-empty node engages the mode unless enabled is explicitly false, so heatmap: { variant: 'yah' } implies enabled; variant picks the dataset (booths view stats by default, yah for "You are here" QR scans; kiosk: true narrows yah to kiosk positions). Heatmap mode freezes the page URL for the whole session (the legacy contract). The legacy ?heatmap=true&type=yah&subtype=kiosk links keep working as a translation; the access token ?t= stays a separate raw query param, not config.
enabled?
optional enabled?: boolean;Engage the heatmap explicitly; false vetoes an otherwise non-empty node.
kiosk?
optional kiosk?: boolean;Narrow the yah variant to kiosk positions (ignored for booths).
variant?
optional variant?: "booths" | "yah";The dataset shown: booths (the default) — booth/exhibitor view stats; yah — "You are here" QR-code scan counts, with a stripped-down monochrome presentation.
Inherited from
z.infer.heatmaphide3dMapDefault?
optional hide3dMapDefault?: boolean;Inherited from
z.infer.hide3dMapDefaulthideBookmarks?
optional hideBookmarks?: boolean;Inherited from
z.infer.hideBookmarkshideBookmarksLink?
optional hideBookmarksLink?: boolean;Inherited from
z.infer.hideBookmarksLinkhideBoothBadges?
optional hideBoothBadges?: boolean;Hide booth number badges.
Inherited from
z.infer.hideBoothBadgeshideCategoriesLink?
optional hideCategoriesLink?: boolean;Inherited from
z.infer.hideCategoriesLinkhideDirections?
optional hideDirections?: boolean;Inherited from
z.infer.hideDirectionshideDownloadPdfLink?
optional hideDownloadPdfLink?: boolean;Inherited from
z.infer.hideDownloadPdfLinkhideEventHomeLink?
optional hideEventHomeLink?: boolean;Inherited from
z.infer.hideEventHomeLinkhideExhibitorBoothNumber?
optional hideExhibitorBoothNumber?: boolean;Inherited from
z.infer.hideExhibitorBoothNumberhideExhibitors?
optional hideExhibitors?: boolean;Inherited from
z.infer.hideExhibitorshideHeaderLogo?
optional hideHeaderLogo?: boolean;Hide the header logo (and the ExpoFP logo).
Inherited from
z.infer.hideHeaderLogohideLanguage?
optional hideLanguage?: boolean;Inherited from
z.infer.hideLanguagehideLanguageLink?
optional hideLanguageLink?: boolean;Inherited from
z.infer.hideLanguageLinkhideLogoInBooth?
optional hideLogoInBooth?: boolean;Hide exhibitor logos inside booths.
Inherited from
z.infer.hideLogoInBoothhideModeSwitchButton?
optional hideModeSwitchButton?: boolean;Inherited from
z.infer.hideModeSwitchButtonhideRegisterToAttendLink?
optional hideRegisterToAttendLink?: boolean;Inherited from
z.infer.hideRegisterToAttendLinkhideShareButton?
optional hideShareButton?: boolean;Inherited from
z.infer.hideShareButtonhideWayInformation?
optional hideWayInformation?: boolean;Inherited from
z.infer.hideWayInformationhomeUrl?
optional homeUrl?: string;Inherited from
z.infer.homeUrlignoreQuery?
optional ignoreQuery?: boolean;Inherited from
z.infer.ignoreQueryintents?
optional intents?: (
| {
args: [string];
name: "selectBooth";
}
| {
args: [string];
name: "selectExhibitor";
}
| {
args: [string];
name: "changeLanguage";
}
| {
args: [string];
name: "selectCategory";
}
| {
args: [string];
name: "select";
}
| {
args: [
| "exhibitors"
| "bookmarks"
| "visited"
| "sessions"
| "speakers"
| "tours"
| "language"];
name: "showList";
}
| {
args: [string];
name: "selectTour";
}
| {
args: [{
from?: string;
fromBookmarks?: boolean;
items?: string[];
}];
name: "openPlanner";
}
| {
args: [];
name: "startBuildRoute";
}
| {
args: [{
bearing?: number;
floor?: string;
lat?: number;
lng?: number;
pitchDegrees?: number;
pitchTime?: number;
x?: number;
y?: number;
zoomTime?: number;
}];
name: "setCamera";
}
| {
args: [{
controls?: boolean;
header?: boolean;
levels?: boolean;
overlay?: boolean;
searchButtons?: boolean;
}];
name: "setVisibility";
}
| {
args: [string[]];
name: "selectRoute";
}
| {
args: [string[]];
name: "selectAccessibleRoute";
}
| {
args: [string, string[]];
name: "showPathway";
}
| {
args: [{
angle?: number;
lat?: number;
lng?: number;
x: number;
y: number;
z?: string | number;
}, boolean, number?];
name: "selectCurrentPosition";
})[];Inherited from
z.infer.intentsisRebooking?
optional isRebooking?: boolean;Inherited from
z.infer.isRebookingisTrial?
optional isTrial?: boolean;Inherited from
z.infer.isTrialkiosk?
optional kiosk?: object = KioskSchema;The kiosk anchor — where a kiosk device stands and how its camera is framed, applied at boot when the device has no locally-saved kiosk (the on-device SetKiosk flow wins; localStorage['kiosk']='0' disables both). Canonical URL form ?kiosk[x]=…, and ?kiosk=1/0 keeps toggling kiosk mode. The legacy kiosk_x/y/z params are a separate, narrower channel: they carry the anchor POSITION to a phone scanning a kiosk's route QR code, and put that phone in no kiosk mode of its own.
heading?
optional heading?: number;Device heading in degrees — rotates the you-are-here marker.
iconSizePercent?
optional iconSizePercent?: number;You-are-here icon size, in percent.
lat?
optional lat?: number;GPS latitude (with lng, an alternative fix to x/y).
lng?
optional lng?: number;GPS longitude.
mapBearingDegrees?
optional mapBearingDegrees?: number;Map bearing at the home framing, degrees (map mode).
mapCenterLat?
optional mapCenterLat?: number;Home framing center latitude (map mode).
mapCenterLng?
optional mapCenterLng?: number;Home framing center longitude (map mode).
mapCenterX?
optional mapCenterX?: number;Home framing center x.
mapCenterY?
optional mapCenterY?: number;Home framing center y.
mapInitialPtScale?
optional mapInitialPtScale?: number;The pt-scale captured when the kiosk was set up (zoom reference).
mapPitch?
optional mapPitch?: number;Map pitch at the home framing, degrees.
mapPitchDegrees?
optional mapPitchDegrees?: number;Map pitch at the home framing, degrees (map mode).
mapPtScale?
optional mapPtScale?: number;The pt-scale of the saved framing.
mapRollDegrees?
optional mapRollDegrees?: number;Map roll at the kiosk's home framing, degrees.
mapZoom?
optional mapZoom?: number;Map zoom level at the home framing (map mode).
uiScale?
optional uiScale?: number;Per-device UI scale preference (the applied range is 0.8–1.4).
x?
optional x?: number;Anchor x in plan coordinates.
y?
optional y?: number;Anchor y in plan coordinates.
z?
optional z?: string | number | null;Floor: the level name (a numeric index is accepted and stringified). Nullable — the on-device SetKiosk flow writes null for a plan with no layers, and that record round-trips through localStorage.
Inherited from
z.infer.kiosklegacyDataUrlBase?
optional legacyDataUrlBase?: string;The legacy expo-data directory (data.js, fp.svg.js, …). Consumed by loadConfig to fetch the document and derive the payload refs — it is NOT carried on the effective config; nothing outside the config package ever sees it.
Inherited from
z.infer.legacyDataUrlBaselegacyDataVersion?
optional legacyDataVersion?:
| string
| {
$ref: string;
}
| null;Pin of the legacy data revision — the version.json value at manifest generation time. loadConfig cache-busts the legacy file refs with it (?v=<pin>) and skips its own version.json probe, so the manifest and the data it points at stay consistent by construction. null states "probed: no version.json exists" — the runtime cache-busts per load with a timestamp, still without probing. Only an ABSENT field (legacy manifests, which predate the pin) leaves the runtime to probe; the retired $ref-pointer shape still parses but is treated as absent. An input consumed by loadConfig like legacyDataUrlBase, never carried on the effective config.
Inherited from
z.infer.legacyDataVersionlevelTerm?
optional levelTerm?: string;Inherited from
z.infer.levelTermlocale?
optional locale?: string;Inherited from
z.infer.localelogo?
optional logo?: string;Inherited from
z.infer.logomaplibre?
optional maplibre?: object = MapLibreConfigSchema;Index Signature
[key: string]: unknownoffline?
optional offline?: boolean;The style and everything it references (tiles, sprites, glyphs) are reachable without network — lets the map stay enabled while navigator.onLine is false.
style?
optional style?: any;Inline style object (takes precedence over styleUrl). With no style URL to resolve against, every URL inside it must already be full.
styleUrl?
optional styleUrl?: string;Full, rooted, or relative URL of a MapLibre style document, fetched by MapLibre GL itself. Its internal resources are resolved by the SDK before MapLibre consumes the loaded style.
Inherited from
z.infer.maplibremobileLocationProvider?
optional mobileLocationProvider?: string | null;Indoor-positioning provider for the native SDKs, opaque web-side: <provider>.<version>.<base64url credentials>, e.g. indooratlas.1.SGVsbG8gV29ybGQh. null (the default) means none — not '', so the native bridge sees Kotlin null / Swift nil.
Inherited from
z.infer.mobileLocationProvidermonochrome?
optional monochrome?: boolean;Render the plan in grayscale.
Inherited from
z.infer.monochromenoFeatured?
optional noFeatured?: boolean;Inherited from
z.infer.noFeaturednoOverlay?
optional noOverlay?: boolean;Inherited from
z.infer.noOverlayoffHistory?
optional offHistory?: boolean;Inherited from
z.infer.offHistoryonlyFeaturedExhibitors?
optional onlyFeaturedExhibitors?: boolean;Inherited from
z.infer.onlyFeaturedExhibitorspoiTypes?
optional poiTypes?: object[];Index Signature
[key: string]: unknowniconUrl?
optional iconUrl?: string;Icon shown for this type; overrides the built-in glyph. A resource like the event logo, and optional like it too: serialization (offline copies, normalized folders) copies the file best-effort and drops the field when it is missing — the built-in glyph is the fallback either way.
id
id: number;name
name: string;parentId?
optional parentId?: number;Inherited from
z.infer.poiTypespreviewMode?
optional previewMode?: boolean;Inherited from
z.infer.previewModeregisterUrl?
optional registerUrl?: string;Inherited from
z.infer.registerUrlreserveButtonTerm?
optional reserveButtonTerm?: string;Inherited from
z.infer.reserveButtonTermreserveInstructions?
optional reserveInstructions?: string;Inherited from
z.infer.reserveInstructionssearchText?
optional searchText?: string;Inherited from
z.infer.searchTextsendLoginLinkUrl?
optional sendLoginLinkUrl?: string;Inherited from
z.infer.sendLoginLinkUrlshortLevelName?
optional shortLevelName?: boolean;Inherited from
z.infer.shortLevelNameshowCategories?
optional showCategories?: boolean;Inherited from
z.infer.showCategoriesshowCompaniesAndBooths?
optional showCompaniesAndBooths?: boolean;Inherited from
z.infer.showCompaniesAndBoothsshowDebugButton?
optional showDebugButton?: boolean;Inherited from
z.infer.showDebugButtonshowLevelLabel?
optional showLevelLabel?: boolean;Inherited from
z.infer.showLevelLabelshowOtherSpaces?
optional showOtherSpaces?: boolean;Inherited from
z.infer.showOtherSpacesstartDate?
optional startDate?: string;Inherited from
z.infer.startDatesubtitle?
optional subtitle?: string;Inherited from
z.infer.subtitletitle?
optional title?: string;Inherited from
z.infer.titletrackerUrl?
optional trackerUrl?: string;Inherited from
z.infer.trackerUrltrialExpiresAt?
optional trialExpiresAt?: string;Inherited from
z.infer.trialExpiresAtviewerMode?
optional viewerMode?: boolean;Inherited from
z.infer.viewerModeviewOptimizationLevel?
optional viewOptimizationLevel?: number;Inherited from
z.infer.viewOptimizationLevelvisibility?
optional visibility?: object = VisibilitySchema;Visibility of the map chrome, applied once at boot. An empty object leaves the chrome untouched; a non-empty one REBUILDS the set — every element it omits resets to visible — so a URL that hides one element must list every other element it also wants hidden. The URL form is ?visibility[header]=false; the runtime counterpart is FloorPlan.setVisibility / the setVisibility intent.
controls?
optional controls?: boolean;The map controls (zoom buttons, …).
header?
optional header?: boolean;The header bar — logos and the free/demo badge.
levels?
optional levels?: boolean;The floor selector.
overlay?
optional overlay?: boolean;The overlay panel — search, lists, entity details.
searchButtons?
optional searchButtons?: boolean;The search-filter buttons row. Omitted, it follows overlay; an explicit true keeps the buttons while the overlay is hidden — clicking one opens the overlay on demand (?visibility[overlay]=false&visibility[searchButtons]=true).
Inherited from
z.infer.visibilitywfDataJsRef?
optional wfDataJsRef?:
| {
$ref: string;
}
| null;wf.data.js (wayfinding graph) ref; null without legacy data.
Inherited from
z.infer.wfDataJsRef