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. Generated from com.elivaas.common.dto.listing.FilterCatalog — do not edit by hand. Run ./gradlew :common:generateFilterDocs after adding a filter.

filterNameTypeExampleDescription
channelIdstringB2CSales channel (B2C, B2B)
citystring[]["Goa"]Filter by city (case-insensitive)
statestring[]["Himachal Pradesh"]Filter by state (case-insensitive)
countrystring[]["India"]Filter by country (case-insensitive)
localitystring[]["Kasauli"]Filter by locality (case-insensitive)
listingIdstring[]["lst_abc"]Specific listing IDs (case-sensitive, opaque)
brandstring[]["privé"]Filter by brand (case-insensitive)
propertyTypestring[]["Villa"]Villa, Apartment, Resort (case-insensitive)
tagsstring[]["Scenic Views"]Required tags (post-filter, in-memory)
amenitiesstring[]["Pool","Wifi"]Required amenities (post-filter)
roomViewstring[]["Sea View","Mountain View"]Matches property_views.view_name via property_view_mappings (case-insensitive)
bhkstring[]["2 BHK","3"]Leading int parsed; matches properties.total_bedrooms
houseRulesstring[]["smoking","alcohal"]Matches property_rules.name via property_rule_mappings (case-insensitive). status not yet applied
searchQuerystringNimishkaText search on listing/property name (ILIKE)
querystringvilla in goa for 4 adults next weekendNatural-language query. Triggers AI intent extraction in the search controller, which synthesizes additional rawParam filters (city, dates, propertyType, etc.) and merges them into this request. Echoed back via response.rawParams so the UI can render selected filters.
minPriceint5000Min per-night price
maxPriceint20000Max per-night price
minBedroomsint2Min total bedrooms (sum of properties.total_bedrooms weighted by quantity)
maxBedroomsint5Max total bedrooms
minBathroomsint1Min bathrooms (column pending — currently no-op)
maxBathroomsint4Max bathrooms (column pending — currently no-op)
minAdultsint2Min adult capacity (sum-weighted)
maxAdultsint10Max adult capacity
minRatingdouble4.0Min rating (column pending — currently no-op)
adultsint4Required adults
childrenint2Required children
infantsint1Required infants
petsint1Required pets
checkInDatestring2026-06-01YYYY-MM-DD
checkOutDatestring2026-06-04YYYY-MM-DD
petFriendlybooleantruePet-friendly only
stressPropertiesbooleantrueStressed/deal properties
allowCombinationbooleantrueEnable multi-listing groups
maxListingsInGroupint3Max listings per group (default 3)
includeSingleListingsbooleantrueInclude single-fit listings in result
proximityMetersdouble500Radius for combination grouping
anchorLatdouble15.5Anchor latitude for proximity
anchorLondouble73.7Anchor longitude for proximity
minSingleResultsint3Trigger combinations only below this many singles
pageint11-based page index for singleListings
sizeint10Page size for singleListings
bevstringv_abc123Visitor cookie (auto-injected)
partner_idstringptn_xyzPartner (auto-injected or explicit)
utm_sourcestringgoogleUTM source
utm_mediumstringcpcUTM medium
utm_campaignstringsummer-saleUTM 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