# Teme (/ro/docs/api/gateway/themes)

Catalog public de teme de culori selectate de la terți, convertite din teme VS Code cu licență MIT și verificate pentru contrast.

`GET /v1/themes` întoarce temele de culori selectate pe care le oferă fiecare aplicație codai în **Setări → Aspect → Mai multe teme**. Sunt convertite din temele VS Code ale autorilor, cu licență MIT (Dracula, Catppuccin, GitHub, Tokyo Night, One Dark Pro, Nord, Solarized, Gruvbox, Rosé Pine), fixate pe un commit al sursei și ajustate doar acolo unde o culoare de text scădea sub contrastul de 4,5:1 pe o suprafață. Nimic nu se descarcă din VS Code Marketplace sau din Open VSX și nimic nu se execută: o temă înseamnă doar date despre culori.

Endpointul este public — fără cheie API — și identic pentru toți apelanții. Răspunsurile au un `ETag` puternic și `Cache-Control: public, max-age=86400`; trimite eticheta înapoi în `If-None-Match` și primești `304 Not Modified` cu corp gol. Aplicațiile includ același catalog, deci funcționează și offline și doar îl reîmprospătează de aici.

```bash
curl -s https://ai.codai.ro/v1/themes -H 'If-None-Match: "2026.10.30-1-3f2a9c1d"' -i
```

```json
{
  "version": "2026.10.30-1",
  "etag": "\"2026.10.30-1-3f2a9c1d\"",
  "themes": [
    {
      "id": "catalog.dracula",
      "name": "Dracula",
      "base": "dark",
      "accentHue": 278,
      "colors": { "bg": "#282a36", "foreground": "#f8f8f2", "muted": "#7e90c4", "...": "..." },
      "terminal": { "black": "#21222c", "red": "#ff5555", "...": "..." },
      "description": "Dracula by Dracula Theme, converted from the MIT-licensed VS Code theme.",
      "author": "Dracula Theme",
      "license": { "spdx": "MIT", "copyright": "Copyright (c) 2016 Dracula Theme", "url": "https://github.com/dracula/visual-studio-code/blob/…/LICENSE" },
      "source": { "repo": "dracula/visual-studio-code", "commit": "9726e1f…", "path": "…", "url": "…" }
    }
  ]
}
```

| Câmp | Semnificație |
| --- | --- |
| `id` | Id stabil `catalog.<slug>`; salvează-l în `appearance.colorTheme` (vezi [Setări](./settings)) ca alegerea să se sincronizeze pe toate dispozitivele. |
| `base` | `light` sau `dark`; `highContrast: true` apare doar la temele cu contrast ridicat. |
| `accentHue` | Nuanța OKLCH (0–360) a accentului temei, folosită pentru paleta brandului. |
| `colors` | Tokenurile interfeței: `bg`, `bgElevated`, `bgPanel`, `border`, `borderStrong`, `foreground`, `muted`, `muted2`, `danger`, `success`, `warning` (`#rrggbb` opac). |
| `terminal` | Cele 16 culori ANSI (`black` … `brightWhite`), când tema sursă le definește. |
| `license`, `source` | Id-ul SPDX, linia de copyright și URL-ul licenței; depozitul sursă, commitul fixat și fișierul. Afișează-le în ecranul de licențe. |

Catalogul este generat de `packages/themes-catalog/scripts/build-catalog.mjs`, care acceptă doar licențele MIT, Apache-2.0 și BSD. Pe desktop și pe Android poți importa și un `.vsix` local sau un JSON de temă VS Code; se citesc doar fișierele de culori din `contributes.themes`.
