# Schemas & examples

Download validated configuration references for the server and desktop app.

## Downloads

| Configuration | Schema | Example |
| --- | --- | --- |
| Dicto server — `server.yaml` | [server.schema.json](/schemas/server.schema.json) | [server.example.yaml](/examples/server.example.yaml) |
| Dicto desktop app — `config.yaml` | [app.schema.json](/schemas/app.schema.json) | [config.example.yaml](/examples/config.example.yaml) |

The server schema includes its dashboard definitions, so it can be used as a single offline JSON file. The app embeds its schema for startup validation; it does not fetch a schema from the network. Use the configuration and schema matching the release you deploy.

These downloads are committed exports from Dicto-Dev. The [export manifest](/schemas/manifest.json)
identifies the source revision and checksums. It records the current documentation
snapshot; it does not declare compatibility with every released app or server.
The documentation build verifies the snapshots without accessing private source.

## Validate in your editor

Save the matching schema beside your YAML and add this first line:

```yaml
# yaml-language-server: $schema=./app.schema.json
config_version: 1
```

For the server, use `./server.schema.json` instead. A schema-aware YAML editor can show supported settings, completion and validation errors. Server commands and app startup also validate settings; editor checks do not test service connectivity.

## Minimal desktop configuration

```yaml
# yaml-language-server: $schema=./app.schema.json
config_version: 1
server_config:
  api_url: https://api.dicto.example.com
```

Omitted sections keep their release defaults. Optional values should be omitted rather than set to `null`. Booleans must be `true` or `false` without quotes. The version is an integer. Feature states are `enabled`, `hidden`, or `disabled`.

## App settings

| Section | Purpose |
| --- | --- |
| `server_config` | Public API URL without a trailing slash, query or fragment |
| `app_updater` | Update availability, automatic checks, App Manager URL, channel or appcast |
| `onboarding` | Onboarding availability and server selection options |
| `authentication` | System or integrated SSO browser and whether integrated SSO is allowed |
| `feature_flags` | Individual feature availability policies |
| `analytics` | Enable/disable analytics or configure an organization-managed endpoint |
| `sentry` | Enable/disable error reporting, DSN and trace sample rate from 0 to 1 |

App configuration contains literal values. Server-style `${NAME}` substitution is not supported in the desktop app file. Keep provider credentials and server secrets on the server.

## Migrate from config.json

This is a breaking change. Replace the old installation-directory file with `config.yaml`, preserve its supported section names and values in YAML, and add `config_version: 1`. Use `app_manager_base_url` for the update manager URL if your old file used `app_release_manager_base_url`.

Validate the YAML, remove `config.json`, and restart Dicto. A remaining legacy JSON file or an invalid YAML file stops startup with a configuration error. Explicit managed YAML takes precedence over compiled server defaults. Missing managed configuration keeps the normal release defaults and server-selection flow.
