
# Sources système

Les composants de données se lient normalement à une table. Certains ne le font pas : une grille d'exécutions, un journal d'audit ou une liste de résultats de recherche globale lit depuis un point de terminaison de la plateforme qui n'est pas l'une de vos tables.

Vous pouvez lier un tel composant en ligne avec `dataSource: { system: { endpoint: … } }`. Dès l'instant où deux composants lisent le même point de terminaison, ce chemin brut est dupliqué dans votre configuration. `app.systemSources` déclare chaque point de terminaison une seule fois, sous un nom :

```yaml
systemSources:
  - name: runs
    endpoint: /api/admin/automations/runs
  - name: failed-runs
    endpoint: /api/admin/automations/runs
    query:
      status: failed
```

Les composants référencent ensuite le nom :

```yaml
- type: data-table
  dataSource:
    systemSource: runs
```

## Propriétés d'une entrée

| Propriété  | Description                                                                                                    |
| ---------- | -------------------------------------------------------------------------------------------------------------- |
| `name`     | Nom de référence utilisé par `{ systemSource: <name> }`. En kebab-case minuscule, unique au sein du catalogue. |
| `endpoint` | Le point de terminaison de lecture depuis lequel récupérer les lignes (par ex. `/api/admin/automations/runs`). |
| `rowsKey`  | Clé du tableau de lignes dans l'enveloppe de réponse. Vaut `items` par défaut.                                 |
| `idKey`    | Clé de l'identifiant unique de chaque ligne. Vaut `id` par défaut.                                             |
| `totalKey` | Clé du compte total dans l'enveloppe. À défaut, le nombre de lignes renvoyées fait office de repli.            |
| `query`    | Paramètres de requête statiques fusionnés dans chaque requête vers le point de terminaison.                    |

Une entrée de catalogue remplace directement la forme `system` en ligne — un composant qui la référence lit exactement les mêmes champs qu'il aurait lus en ligne, de sorte que passer de l'une à l'autre ne change jamais le composant.

## Deux sources, un point de terminaison

`query` est ce qui rend les sources nommées dignes d'être déclarées. Le même point de terminaison, avec des paramètres statiques différents, devient deux sources distinctes et auto-descriptives :

```yaml
systemSources:
  - name: open-tickets
    endpoint: /api/admin/tickets
    query:
      status: open
  - name: closed-tickets
    endpoint: /api/admin/tickets
    query:
      status: closed
```

Chacune tient alors en un mot à l'endroit de la liaison, et le filtre vit à un seul endroit au lieu d'être redit dans chaque composant.

## Quels composants en acceptent une

N'importe quel composant lié à des données : `data-table`, `list`, `gallery`, `kanban`, `calendar`, `chart`, `kpi` et `data-timeline`. Voir [Composants de données](/fr/docs/data-components) pour ce que chacun rend.

## Validation

- Le catalogue doit déclarer au moins une source lorsqu'il est présent.
- Chaque `name` doit être unique — un doublon rendrait une référence ambiguë.
- Chaque référence `{ systemSource: <name> }` doit pointer vers une entrée déclarée.

Les trois sont vérifiées au décodage de la configuration : `sovrium validate` attrape donc une référence mal orthographiée hors ligne, avant que l'application ne démarre.

:::callout
**Les sources système sont en lecture seule.** Elles récupèrent des lignes pour l'affichage. Les écritures passent par l'API des enregistrements ou par une automatisation — voir [CRUD et upsert](/fr/docs/records-crud).
:::

## Pages connexes

- [Composants de données](/fr/docs/data-components) — les composants qui consomment une source.
- [Présentation des pages](/fr/docs/pages-overview) — `dataSource` et la liaison à une table.
- [Référence API](/fr/docs/api-reference) — les points de terminaison qu'une source système peut lire.
- [Tableau de bord d'administration](/fr/docs/admin-dashboard) — la console opérateur construite à partir de ces liaisons.
