---
title: Required fields
description: The four fields every docs.json must have.
---

Four fields are required. Everything else has a default or is optional.

```json
{
  "name": "My Documentation",
  "template": "mint",
  "colors": {
    "accent-primary": { "light": "#4E7D4A", "dark": "#7FAE79" },
    "background": { "light": "#FBFAF7", "dark": "#14130F" },
    "border": { "light": "#E4E0D8", "dark": "#2E2C26" },
    "sidebar-background": { "light": "#F6F4EE", "dark": "#1C1B17" },
    "header-background": { "light": "#FFFFFF", "dark": "#0B0A08" },
    "card-background": { "light": "#FFFFFF", "dark": "#1C1B17" }
  },
  "navigation": {
    "tabs": [
      { "label": "Docs", "groups": [{ "label": "Start", "pages": ["index"] }] }
    ]
  }
}
```

## `name`

<ParamField name="name" type="string" required>
  1 to 100 characters. The site name, and the default value of `seo.title`.
</ParamField>

## `template`

<ParamField name="template" type='"mint" | "rapide" | "black"' required>
  Selects the visual template.
</ParamField>

`mint` is the fully-featured template. `rapide` and `black` are minimal templates that
conform to the same interface — useful as a starting point, or as proof that the template
contract is real rather than a single hard-coded design.

## `colors`

<ParamField name="colors" type="object" required>
  Exactly six keys, each an object with `light` and `dark` values.
</ParamField>

The six keys are `accent-primary`, `background`, `border`, `sidebar-background`,
`header-background` and `card-background`. All six are required and no others are
permitted.

Each value must be a **6-digit hex color**. Three-digit shorthand and 8-digit
alpha forms are rejected — a color that silently loses its alpha channel at render time
is worse than one that fails to parse.

## `navigation`

<ParamField name="navigation" type="object" required>
  `{ tabs: Tab[] }` — at least one tab, each with at least one group, each with at least
  one page.
</ParamField>

See [Navigation](/docs/authoring/navigation) for the page shapes and nesting rules.

## Unknown keys are errors

The whole config is validated strictly. A top-level key Reed does not recognize — a typo,
or a field carried over from a different documentation platform — is a schema error, not
a silent no-op. Nothing you write in `docs.json` is ever ignored without telling you.
