Skip to main content

Render API

Resolve and render a published SDUI template.


CRS Render (no context filtering)

GET /api/v1/sdui/render?app=default&route=/home&platform=ALL

Website Render (context-aware)

GET /api/v1/sdui/render?app=default&route=/home&platform=ALL

Website version evaluates visibility rules against the visitor's traffic context (auto-resolved from bev cookie).


Response

{
"templateId": "t1a2b3c4",
"route": "/home",
"platform": "ALL",
"sections": [
{
"id": "hero-1",
"type": "HeroSection",
"settings": {
"title": "Welcome to ELIVAAS",
"bgColor": "#1a1a2e",
"bgImage": "https://cdn.elivaas.com/hero.jpg",
"subtitle": "Luxury Villas & Experiences"
},
"blocks": [
{
"id": "btn-1",
"type": "Button",
"settings": {
"label": "Explore Villas",
"url": "/search",
"variant": "primary"
}
},
{
"id": "btn-2",
"type": "Button",
"settings": {
"label": "View Offers",
"url": "/offers",
"variant": "secondary"
}
}
]
},
{
"id": "destinations",
"type": "DestinationGrid",
"settings": {
"title": "Popular Destinations",
"columns": 3
},
"blocks": [
{
"id": "dest-goa",
"type": "DestinationCard",
"settings": {
"name": "Goa",
"image": "https://cdn.elivaas.com/goa.jpg",
"propertyCount": 42
}
}
]
}
]
}
Settings Merge

Settings are the result of merging definition defaults with template instance overrides. If a setting isn't overridden in the template, the default from the SectionDef is used.

Context-Aware Example (Website)

If the template has a Visa-exclusive banner with a visibility rule:

Visa visitor → both hero and visa-banner returned:

{
"sections": [
{ "id": "hero-1", "type": "HeroSection", "settings": { "title": "Welcome" }, "blocks": [...] },
{ "id": "visa-banner", "type": "BannerSection", "settings": { "text": "15% off with Visa" }, "blocks": [] }
]
}

Non-Visa visitor → visa-banner filtered out:

{
"sections": [
{ "id": "hero-1", "type": "HeroSection", "settings": { "title": "Welcome" }, "blocks": [...] }
]
}

Parameters

ParamTypeDefaultDescription
appstringdefaultApp namespace
routestringrequiredRoute path (e.g., /home)
platformstringALLALL, WEB, MOBILE, TABLET

Resolution Rules

  1. Status must be PUBLISHED or SCHEDULED (with publish_at in the past)
  2. expire_at must be null or in the future
  3. Platform-specific template preferred over ALL
  4. Highest version wins if multiple match