Skip to main content

Data Models Reference

Complete field reference for every DTO, record, and entity in the system.


SDUI Types

SectionDef

FieldTypeDescription
idstringAuto-generated UUID
typestringUnique identifier (e.g., HeroSection). Immutable after creation.
namestringDisplay name in admin UI
descriptionstringHuman-readable description
categorystringGrouping in admin UI (e.g., layout, content, marketing)
iconstringIcon identifier or URL for admin UI
platformsstringTarget platforms: ALL, WEB, MOBILE, TABLET
tagstringMetadata tag for filtering/search
maxBlocksintMaximum child blocks allowed (0 = unlimited)
settingsSettingDefinition[]Configurable settings with types and defaults
blocksBlockSchema[]Allowed child block types
presetsPreset[]Pre-configured section templates
statusstringACTIVE, DRAFT, DEPRECATED

SettingDefinition

FieldTypeRequiredDescription
idstringYesSetting key (used in settings map)
typeSettingTypeYesInput type: TEXT, TEXTAREA, RICHTEXT, NUMBER, RANGE, CHECKBOX, SELECT, COLOR, IMAGE, VIDEO, URL, HTML
labelstringYesDisplay label in admin UI
defaultValueanyNoDefault when template doesn't override
infostringNoHelp tooltip in admin UI
placeholderstringNoPlaceholder for text inputs
minintNoMinimum value (NUMBER, RANGE)
maxintNoMaximum value (NUMBER, RANGE)
stepintNoIncrement step (NUMBER, RANGE)
unitstringNoDisplay unit (e.g., px, %, em)
optionsSelectOption[]NoDropdown options (SELECT type only)

SelectOption

FieldTypeDescription
valuestringOption value (stored in settings)
labelstringDisplay label
groupstringOptional grouping for categorized dropdowns

BlockSchema

FieldTypeDescription
typestringBlock type identifier (e.g., Button)
namestringDisplay name
limitintMax instances of this block per section (0 = unlimited)
settingsSettingDefinition[]Block-level configurable settings with defaults

Preset

FieldTypeDescription
namestringPreset name (e.g., "Hero with CTA", "Hero minimal")
settingsMapPre-filled section settings
blocksPresetBlock[]Pre-filled blocks

PresetBlock

FieldTypeDescription
typestringBlock type (must match a BlockSchema type)
settingsMapPre-filled block settings

SectionInstance

FieldTypeDescription
idstringUnique within template
typestringReferences a SectionDef type
disabledbooleanIf true, excluded from render
settingsMapOverrides merged on top of definition defaults
blocksBlockInstance[]Child blocks
visibilityRulesVisibilityRule[]Conditional rendering rules (AND logic)

BlockInstance

FieldTypeDescription
idstringUnique within section
typestringReferences a BlockSchema type
disabledbooleanIf true, excluded from render
settingsMapOverrides merged on top of block schema defaults
visibilityRulesVisibilityRule[]Conditional rendering rules

VisibilityRule

FieldTypeDescription
fieldstringContext field: utm_source, utm_medium, utm_campaign, traffic_source, partner_id, loyalty_tier, device_type, geo_country
operatorstringEQUALS, NOT_EQUALS, IN, NOT_IN, GREATER_THAN, LESS_THAN, CONTAINS, STARTS_WITH
valuestringValue to compare. For IN/NOT_IN: comma-separated list.

RenderContext

Passed to the renderer on the website module. Built from TrafficContext.

FieldTypeDescription
platformPlatformResolved from device type: MOBILE, TABLET, WEB, ALL
userIdstringGuest ID (if authenticated)
contextDataMapFlattened traffic context: utm_source, partner_id, loyalty_tier, etc.
featureFlagsSetFeature flags (reserved for future use)

RenderResponse

FieldTypeDescription
templateIdstringID of the resolved template
routestringRoute that was requested
platformstringPlatform that matched
sectionsRenderedSection[]Sections with merged settings, disabled/hidden excluded

RenderedSection

FieldTypeDescription
idstringSection instance ID
typestringSection type
settingsMapMerged: definition defaults + instance overrides
blocksRenderedBlock[]Rendered child blocks

RenderedBlock

FieldTypeDescription
idstringBlock instance ID
typestringBlock type
settingsMapMerged: block schema defaults + instance overrides

Traffic Context Types

TrafficContext

FieldTypeDescription
bevstringBrowser Event Value cookie
guestIdstringLinked guest ID (after login)
utmSourcestringUTM source param
utmMediumstringUTM medium
utmCampaignstringUTM campaign
utmTermstringUTM term
utmContentstringUTM content
trafficSourceTrafficSourceClassified: ORGANIC, PAID, SOCIAL, EMAIL, REFERRAL, DIRECT, PARTNER
referrerUrlstringHTTP Referer header
landingPagestringFirst page visited
partnerIdstringPartner ID (from param or header)
deviceTypestringMOBILE, DESKTOP, TABLET, UNKNOWN
userAgentstringRaw User-Agent
ipAddressstringClient IP
geoCountrystringCountry code from GeoIP
loyaltyTierLevelintLoyalty tier (from account)

Pricing Types

PricingContextRule

FieldTypeDescription
PredicatesAll nullable — null means "match any"
trafficSourcestringORGANIC, PAID, SOCIAL, EMAIL, REFERRAL, DIRECT, PARTNER
utmSourcestringExact match
utmMediumstringExact match
utmCampaignstringExact match
partnerIdstringExact match
loyaltyTierMinintTier >= this
loyaltyTierMaxintTier <= this
Effects
channelIdstringOverride pricing channel
additionalMultiplierdecimalPrice multiplier (0.90 = 10% off)
additionalOfferIdsstring[]Extra offers to include
disablePromotionsbooleanHide all promotions
disableCouponsbooleanHide all coupons
disableBankOffersbooleanHide all bank offers
allowedPromotionIdsstring[]Whitelist (empty = all pass)
allowedBankOfferIdsstring[]Whitelist
allowedCouponIdsstring[]Whitelist
Meta
priorityintHigher = evaluated first
statusstringACTIVE, INACTIVE
startAt / endAtInstantTime bounds

PricingAdjustment

Resolved output from a matched PricingContextRule.

FieldTypeDescription
channelIdstringOverride channel
additionalMultiplierBigDecimalPrice multiplier
additionalOfferIdsSetExtra offer IDs
disablePromotionsbooleanRemove all promotions
disableCouponsbooleanRemove all coupons
disableBankOffersbooleanRemove all bank offers
allowedPromotionIdsSetPromotion whitelist
allowedBankOfferIdsSetBank offer whitelist
allowedCouponIdsSetCoupon whitelist
sourcePricingRuleIdLongWhich rule matched

Sales Intelligence Types

SalesIntelligence

FieldTypeDescription
listingIdstringListing this applies to
agentPitchstringAI-generated (or human-edited) pitch text
conversionSignalsConversionSignal[]Positive/negative signals
salesTipsstring[]Actionable tips
humanReviewedbooleanIf true, AI will not overwrite
reviewedBystringUser ID who reviewed
reviewedAtInstantWhen reviewed
bookingStatsBookingStatsSet manually by ops
aiGeneratedAtInstantWhen AI last generated

ConversionSignal

FieldTypeDescription
typestringPOSITIVE, NEGATIVE, NEUTRAL
iconstringtrend_up, price_tag, warning, star, location
textstringSignal description

BookingStats

FieldTypeDescription
bookingsThisMonthintManual count
lastBookedAgostringHuman-readable (e.g., "2 days ago")

ListingNote

FieldTypeDescription
idLongAuto-generated
listingIdstringFK to listing
userIdstringFK to users table
notestringAgent's personal note
createdAtInstant
updatedAtInstant

Search Types

ListingSearchIntent

AI-extracted structured filters from a natural language query.

FieldTypeDescription
listingIdsstring[]Ranked by AI relevance
checkInDatestringYYYY-MM-DD (resolved from "this weekend" etc.)
checkOutDatestringYYYY-MM-DD
adultCountintExtracted from query
childCountintExtracted from query
citystringDestination
propertyTypestringVilla, Resort, etc.
budgetPerNightintINR
petFriendlyboolean
originalQuerystringThe raw query text

ListingFilter (rawParams)

Complete list of all supported filter parameters:

filterNameTypeDescription
channelIdstringSales channel (B2C, B2B)
citystring[]Filter by city
statestring[]Filter by state
countrystring[]Filter by country
localitystring[]Filter by locality
listingIdstring[]Specific listing IDs
brandstring[]Filter by brand
tagsstring[]Required tags
amenitiesstring[]Required amenities
propertyTypestring[]Villa, Apartment, Resort
roomViewstring[]Sea View, Mountain View (pending column)
bhkstring[]1BHK, 2BHK (pending column)
searchQuerystringText search on listing/property name
minPriceintMin per-night price
maxPriceintMax per-night price
minBedroomsintMinimum bedrooms
maxBedroomsintMaximum bedrooms
minBathroomsintMinimum bathrooms (pending column)
maxBathroomsintMaximum bathrooms
minAdultsintMinimum adult capacity
maxAdultsintMaximum adult capacity
minRatingdoubleMinimum rating (pending column)
adultsintRequired adults
childrenintRequired children
infantsintRequired infants
petsintRequired pets
checkInDatestringYYYY-MM-DD
checkOutDatestringYYYY-MM-DD
petFriendlybooleanPet-friendly only
stressPropertiesbooleanStressed/deal properties
allowCombinationbooleanEnable multi-listing groups
maxListingsInGroupintMax listings per group (default 3)
proximityMetersdoubleRadius for combinations
anchorLat / anchorLondoubleAnchor point for proximity
bevstringVisitor cookie (auto-injected)
partner_idstringPartner (auto-injected or explicit)
utm_sourcestringUTM source
utm_mediumstringUTM medium
utm_campaignstringUTM campaign

Cache Types

CachedVisitorContext (Redis OM)

Stored in Redis with key prefix visitor_ctx:. TTL: 7 days.

FieldTypeIndexedDescription
bevstringPKVisitor cookie value
partnerIdstringYesPartner ID
utmSourcestringYesUTM source
utmMediumstringNoUTM medium
utmCampaignstringNoUTM campaign
utmTermstringNoUTM term
utmContentstringNoUTM content
trafficSourcestringNoClassified source
guestIdstringNoLinked guest
deviceTypestringNoDevice type
geoCountrystringNoCountry
loyaltyTierLevelintNoLoyalty tier
createdAtEpochlongNoTimestamp

CachedSduiTemplate (Redis OM)

Stored in Redis with key prefix sdui_tpl:. TTL: 10 minutes.

FieldTypeIndexedDescription
cacheKeystringPK&#123;app&#125;:{route}:{platform}
appstringYesApp namespace
routestringYesRoute path
platformstringNoPlatform
templateIdstringNoTemplate ID
sectionsJsonstringNoSerialized sections
statusstringNoTemplate status
versionlongNoVersion number

Partner

FieldTypeDescription
idstringPK (e.g., VISA, HDFC)
namestringDisplay name
contactEmailstringPartnership contact
channelIdstringOptional dedicated pricing channel
defaultUtmSourcestringDefault UTM for attribution
statusstringACTIVE, INACTIVE
metadataJSONBCustom data