Core concepts
The few ideas that everything else in ATLAS is built from.
4 min read
Brands
A brand is one website with its own content, media, menus, settings, theme, members and tokens. One ATLAS account can run many brands, and nothing is shared between them: every query the API runs is scoped to the active brand.
A record id that belongs to another brand answers 404, never 403, so a stranger learns nothing about what exists. A brand is found from the token on a request, or from the domain it serves when a call carries no token. A suspended brand answers 403 on both the public and the dashboard API.
Entries and content types
Everything you publish is an entry. A page and a post are entries, and so is each record of a custom content type you define, such as a city, a product or a release. An entry has a language, a type and a path, and that triple is unique inside a brand.
A custom content type is a small schema of typed fields: text, number, date, link, media, rich text, a list, a repeater of rows, or a reference to another entry. The dashboard builds its form from the schema and the API checks every save against it.
Entries can be filed under terms (categories and tags), and a page can sit under a parent page, which makes its path nest.
Revisions
An entry never changes in place. Each save adds a revision with the title, blocks, SEO and fields, and the newest revision is the draft. Publishing points the entry at one revision, and a rollback points it back at an earlier one. Nothing is copied.
Revisions are append-only, so you always have the history and a diff between any two. The API keeps the last 50 revisions of each entry, plus the published one, the one a schedule points at, and any revision an open review or a translation depends on.
Publish, schedule and rollback
Only a publisher or an admin can change what is live. Publishing can name the exact revision to publish; if the page has moved on since, the API answers 409 revision_changed instead of publishing something nobody reviewed.
- Publish makes the chosen revision live at once.
- Schedule publishes it at a time you pick. A scheduler checks every minute.
- Rollback makes an earlier revision the live one again.
- Review lets an editor ask for approval. A publisher approves and the reviewed revision goes live exactly as it was reviewed.
Every change to live output writes an audit row, raises the brand content version and queues the signed purge webhook, so your site refreshes within about a second.
Translations
A translation is another entry in another language, linked to the first through a translation group. Paths are per language, and the links between them come out as translations in the page answer, which is what a site needs for hreflang.
When a page has no entry in the requested language, the API serves the default language and says so with "fallback": true, unless the brand turned that fallback off. A translation counts as outdated when the default-language entry has a newer revision than the one it was made from.
Blocks and themes
A page body is a tree of blocks: a hero, a feature grid, an FAQ, a form. Blocks nest at most three levels deep (section, column, block). Media is stored as an id and the API resolves it to URLs in the answer. A block definition is the single source of truth for a block: it drives the editor form, the server validation and the component that renders it.
A theme is the package that turns blocks into a website: block components, page templates, header and footer parts, and options a brand can change without code. Each brand has a token set (colours, fonts, radius) that the public API serves from /v1/public/theme, so a site and the dashboard preview read the same values.
Your site only ever reads
A brand site reads published content through the public API. Writes, including lead forms, go through the layer's own server route, which adds the token on the server.
Was this page helpful?