fluid sites lint and fluid sites publish, and never served as files. Each one is optional.
db/schema.json. See The Site database.
Fluid data the site uses
config/access.json lists the Fluid API scopes and member fields the site uses:
config/access.json
uses is one of these:
- A scope,
<family>: reador<family>: write. Areadscope coversGETcalls to the family’s Member API routes, and awritescope every other method. - A member field,
member.<field>, thatfluid.auth.me()returns inviewer.fields.
uses holds at most 64 entries.
What each visitor gets
A declaration is what the site asks for. What each visitor’s calls may use is narrower:
A site with no
config/access.json gets no scope for anyone, its owner included. Its calls through fluid.api answer 403 with scope_not_granted.
Every call acts as the visitor, on the visitor’s own data. A site never holds a company token and never reads another person’s data through fluid.api.
What your company allows
Your company decides which scopes rep sites may use on a visitor’s data. By default that’s theread scope of each family that holds no personal data, which today is search: read. Families that reach a visitor’s personal or sensitive data, such as orders, subscriptions, addresses, contacts and points, and every write scope, are off until your company turns them on. No visitor sees a consent prompt: the company decides.
In the Fluid admin, open Website > Sites and click Visitor data. Tick the scopes Sites may use on a visitor’s data, then click Save. Admins can also read and change the list with Read the company’s member site policy and Replace the company’s member site policy.
Scope families
The Member API reference lists each family’s operations.
Member fields
first_name, last_name, full_name, email, status, avatar_url, bio, language_iso, member_type and rank.
Page titles and previews
config/meta.json holds page titles, descriptions, preview images, the routes to prerender and the Site’s address for its sitemap. Every member is optional, so {} is a valid file, and the Site’s SEO settings decide whatever the file doesn’t name. See SEO and indexing.
Routes
config/routes.json says which file of your build answers a path. With no config/routes.json, every path that isn’t a file is answered by /index.html, the fallback a single-page app needs:
- A file of the build at that path, such as
/assets/index-Bx3zQw9a.js. - The path plus
/index.html, so/aboutserves/about/index.html. - The first route whose
pathis the path, then the longest route whoseprefixmatches. A path whose last segment has a file extension, such as/logo.png, never falls back to a route: it’s a missing file. /404.htmlfrom your build, with status404, when the build has one.- Fluid’s own not-found page.
{ "path": ..., "file": ... } for one path, or { "prefix": ..., "file": ... } for every path under a prefix:
config/routes.json
config/routes.json must have an index.html. Your build can’t hold a file under /_fluid/, because the site’s host answers that path itself.