Site configuration SDK
Read common branding, SEO and language configuration with explicit missing-copy fallback.
Read public configuration
GET /api/public/site?language=en-US returns resolved public settings. Omitting language uses the site default, without exposing administrative fields or secrets.
TypeScript
import type { Shell } from '@mosaic-base/shell';
import type { ArticleSDK, SiteSDK, I18nSDK } from '@mosaic-base/client-sdk';
import type { AuthClient, ServerAuthClient } from '@mosaic-base/auth-sdk';
// Declare once in your application's type contract, never import SDK implementations.
declare module '@mosaic-base/shell/contracts' {
interface SdkRegistry {
'site.config': Pick<SiteSDK, 'getConfig'>;
'content.articles': Pick<ArticleSDK, 'list' | 'getBySlug' | 'getPreview' | 'search'>;
'i18n.messages': Pick<I18nSDK, 'load' | 't' | 'clearCache' | 'refresh'>;
'auth.client': AuthClient | ServerAuthClient;
}
}
export async function readSite(shell: Shell, language = 'en-US') {
const sdk = await shell.getSdk('site.config');
const site = await sdk.getConfig(language);
return { title: site.seo.title || site.name, description: site.description,
logo: site.logoUrl, copyMissing: site.copyMissing, actualLanguage: site.language };
}Fallback and caching
An enabled language with no site copy falls back as a whole to the default: copyMissing=true and language identifies the actual copy. Disabled languages are rejected. The SDK deduplicates in-flight reads without caching completed settings.
Site settings own names/descriptions, Logo, public URL, SEO and languages. Applications own navigation, homepage composition and footer content.