Dynamic Feed — Integration Guide

Last Updated: 2026-08-21  | 
The Dynamic API is the mobile app's primary content feed. It is entirely read-only. Pages and themes are served from published JSON snapshots — not live draft rows — so the mobile app always receives stable, admin-approved content. Mobile developers integrate via the MobileContent.ApiClient.Dynamic NuGet package (IDynamicApiClient).
Auth: All Dynamic endpoints are [AllowAnonymous]. Authentication is handled at the API gateway level.

NuGet Setup

// Program.cs
services.AddHttpClient<IDynamicApiClient, DynamicApiClient>(client =>
{
    client.BaseAddress = new Uri("https://gatewayapi.alpa.org");
});

Endpoints

Get Site

GET  /api/mobilecontent/dynamic/site/{siteKey}   → SiteDto

Returns the site metadata and its list of active pages (page keys, titles, sort orders). Does not include full page content — fetch individual pages separately.

ParameterTypeDescription
siteKeystring (path)Lowercase semantic key of the site (e.g., ual).

SiteDto response

FieldTypeDescription
keystringSite key.
descriptionstringHuman-readable label.
activeThemeIdguid?GUID of the site-level active theme. Use to fetch the theme via the theme endpoint.
activeThemeKeystring?Key of the site-level active theme.
pagesPageDto[]Active pages in sort order.

Get Page

GET  /api/mobilecontent/dynamic/site/{siteKey}/page/{pageKey}   → PageDto

Returns a fully composed page from its active snapshot. The response includes all containers and all items, deserialized from the stored JSON snapshot. Returns 404 if the page does not exist or is not in Published state.

Draft preview: When the requesting user is listed in the page's DynamicPagePreviewUsers, the Dynamic API serves the live draft rows instead of the active snapshot. This allows designated users to preview content on their mobile device before publishing.
ParameterTypeDescription
siteKeystring (path)Lowercase semantic key of the site (e.g., ual).
pageKeystring (path)Lowercase semantic key of the page.

PageDto response

FieldTypeDescription
keystringPage key.
titlestring?Display title.
sortOrderint
activeThemeIdguid?Page-level theme override. When set, use this theme instead of the site-level theme.
activeThemeKeystring?Key of the page-level theme override.
containersContainerDto[]Ordered list of layout containers, each with their items.

ContainerDto

FieldTypeDescription
idint
containerTypestringLayout type (e.g., VerticalStack, HorizontalRow).
titlestring?
viewAllTextstring?
viewAllLinkstring?
columnsint?
backgroundTokenstring?Token path for background styling.
cornerRadiusTokenstring?
paddingTokenstring?
isSortablebool
sortOrderint
itemsItemDto[]Ordered list of content items.

ItemDto

FieldTypeDescription
idint
itemTypestringContent type (e.g., TextBlock, Image, Button).
isSortablebool
sortOrderint
titlestring?
headerTextstring?
descriptionstring?
eyebrowstring?
labelstring?
imagestring?
linkstring?
linkTextstring?
ctaTextstring?
ctaLinkstring?
backgroundTokenstring?
eyebrowTokenstring?Theme token path applied to the eyebrow text color/style.
titleTokenstring?Theme token path applied to the title text color/style.
descriptionTokenstring?Theme token path applied to the description text color/style.
headerTextTokenstring?Theme token path applied to the header text color/style.
identityTokenstring?Theme token path used to resolve user/member identity styling.
contractLinkTokenstring?Theme token path applied to the contract link element.
ctaTextTokenstring?Theme token path applied to the call-to-action button text.
templatestring?Item-type-specific layout or data payload. Raw JSON string; parsed and applied by the mobile client based on itemType.

Get Theme by ID

GET  /api/mobilecontent/dynamic/theme/{themeId}   → ThemeDto

Returns a theme and all its tokens by GUID. Use activeThemeId from a SiteDto or PageDto to look up the appropriate theme. Returns 404 if the theme does not exist or has been soft-deleted (IsActive = false).

ParameterTypeDescription
themeIdguid (path)GUID of the theme (activeThemeId from SiteDto or PageDto).

Get All Themes

GET  /api/mobilecontent/dynamic/theme   → IEnumerable<ThemeDto>

Returns all active themes with their full token sets. Soft-deleted themes (IsActive = false) are automatically excluded. Useful for pre-fetching the complete theme catalogue on app launch.

ThemeDto response

FieldTypeDescription
idintDatabase ID — used as the FK in SiteDto and PageDto.
keystringSemantic key (e.g., ual-default).
descriptionstring?
tokensDictionary<string, string>Token path → value map. Apply these values to your design token system at runtime.

Recommended Mobile App Integration Pattern

  1. On app launch: Fetch the site for the user's MEC (GET /dynamic/site/{siteKey}) to get the page list and active theme ID.
  2. Fetch the active theme: GET /dynamic/theme/{activeThemeId} and apply the token dictionary to your app's theme system. You may also use activeThemeKey for logging or display.
  3. On screen navigation: Fetch the relevant page (GET /dynamic/page/{pageKey}) to get its containers and items.
  4. Theme override: If PageDto.activeThemeId is non-null, fetch and apply that theme instead of the site-level theme for this screen.
  5. Caching: Cache site and theme data aggressively; cache page data with a short TTL or invalidate on app foreground.

Complete Dynamic Endpoint Reference

GET  /api/mobilecontent/dynamic/site/{siteKey}
GET  /api/mobilecontent/dynamic/site/{siteKey}/page/{pageKey}
GET  /api/mobilecontent/dynamic/theme/{themeId}
GET  /api/mobilecontent/dynamic/theme