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 runtime counterpart is FloorPlan.setCamera / the setCamera intent; the legacy ?centerxy=/?center=/?z=/?bearing=/?zoomtime= URL params translate into this shape.
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).
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;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;
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]=…; the legacy kiosk_* params stay the per-navigation translation and ?kiosk=1/0 keeps toggling kiosk mode.
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.legacyDataUrlBaselevelTerm?
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.maplibremonochrome?
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.
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 resets every omitted element to visible — the legacy ?hide= list semantics). The runtime counterpart is FloorPlan.setVisibility / the setVisibility intent; the legacy ?hide=a,b deep link keeps its store-level translation.
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