Legal and Support pages¶
These are HTML pages, not JSON endpoints. They sit in the API reference because the mobile app opens them, and because a client developer looking for "how does the app show the privacy policy" looks here first. Editors set the copy from one CMS screen: see the Legal and Support chapter of the CMS editor guide.
The Legal and Support pages, About, Privacy Policy, Terms of Service, and Support, are the app's
standalone copy, served as public, unauthenticated pages at the site root (not behind /api/ and not a
mobile-app payload). They exist to give the app store listings, the app's own webview, and the
future cslewis.com marketing site one canonical URL each, backed by content that editors keep
current in the CMS. About and Support ship empty as placeholders (CSL-334) so the app has stable
links; the estate fills the copy later.
Where they live¶
One title plus a block-based body per page, edited from a single Settings → Legal and Support screen
(data.models.support_info.SupportInfoSettings) — not a Page and not a snippet list, because there's exactly one
of each and no draft/publish workflow is needed. The body is a StreamField of Text and Table
blocks: a RichTextField can't hold a table, and the Privacy Policy has one. See
ADR-0008 for why content in this repo stays off the Wagtail
page tree; this doesn't reintroduce one.
Where they're served¶
| Page | Public URL | Mobile webview |
|---|---|---|
| About | /about/ |
/about/?format=embed |
| Privacy Policy | /privacy-policy/ |
/privacy-policy/?format=embed |
| Terms of Service | /terms-of-service/ |
/terms-of-service/?format=embed |
| Support | /support/ |
/support/?format=embed |
The plain URL renders a browsable HTML page, so it can be pasted straight into an app-store listing as the Privacy Policy / Terms URL — the point is to unblock app-store submission before the cslewis.com marketing site exists. It's intentionally bare and unbranded (no header, nav, or footer).
The mobile app loads ?format=embed in its in-app webview. This variant must never show site
chrome. The page is bare today, so embed is a stub that sets an embed flag on the template; the
flag is the hook that strips a header, nav, or footer if the plain page ever gains one (for example
a branded marketing view).
No auth, no X-API-Key — the same public-surface pattern as the app-association files and sign-in
landing described in ADR-0003, because a store reviewer or an
external site can't carry either.
See also¶
- Editor Guide — where to edit the copy and what formatting is available.