Kodwen docs
Referință APIGateway

Setări

Setări la nivel de cont, comune tuturor dispozitivelor: citire cu valori implicite, actualizări îmbinate, versiuni optimiste.

Un singur obiect de setări per cont (per utilizator, nu per cheie): ce schimbi pe telefon citesc și ceasul, desktopul și hub-ul. GET /v1/settings răspunde mereu cu obiectul complet, cu valorile implicite aplicate; version este 0 și updatedAt este null până la prima scriere.

PATCH /v1/settings îmbină în adâncime un obiect parțial peste ce este salvat și validează strict rezultatul — o cheie necunoscută sau o valoare greșită dau 400. Trimite version citită ultima dată ca scrierea să fie condiționată: dacă între timp altcineva a schimbat setările primești 409 version_conflict cu current (forma de la GET) și nu se scrie nimic. O pană a bazei de date dă 503 settings_unavailable, niciodată valori implicite prezentate drept setările tale.

CheieValoriImplicit
transcripts.waveformring, bars, blob, dot, offring
transcripts.hapticstrue / falsetrue
transcripts.liveTexttrue / falsetrue
transcripts.targetauto, phone, watchauto
transcripts.languageetichetă BCP-47 (cel mult 16 caractere) sau null pentru detectare automatănull
appearance.colorThemeId de temă: system (tema încorporată întunecată/luminoasă după mode), auto (perechea lightTheme/darkTheme, comutată după sistem), dynamic (Material You pe Android; în rest system), builtin.*, catalog.* (din GET /v1/themes), user.* (doar pe dispozitiv)system
appearance.lightTheme / appearance.darkThemeId-urile temelor folosite cât timp colorTheme este autobuiltin.light / builtin.dark
appearance.modesystem, light, darksystem
appearance.accentpetrol, gold, vermilion, indigo, blue, teal, green, amber, rosepetrol
appearance.skinassistant (chat întâi), developer (sesiuni + panouri), focus (doar chat)assistant
appearance.amoledtrue / false — suprafețe complet negre în temele întunecatefalse
appearance.fontbrand (Manrope), system (fontul sistemului), legible (fontul sistemului cu spațiere mai largă între litere; nu se descarcă niciun font — desktopul folosește Atkinson Hyperlegible doar unde este instalat)brand

appearance este aspectul sincronizat între aplicația desktop, telefon și hub: schimbi accentul pe un dispozitiv și celelalte îl preiau la următoarea citire. Un id de temă pe care un client nu îl cunoaște (o temă user.* importată pe alt dispozitiv, dynamic în afara Android) nu este o eroare — clientul respectiv își păstrează propria valoare implicită. Wear OS și Google TV rămân pe tema întunecată a brandului. Hub-ul folosește mode și accent; suprafața, densitatea și mișcarea redusă rămân doar în hub.

Aceleași operații există în SDK-uri (client.settings.get() / client.settings.update(partial, { version }) în TypeScript, client.settings.update(partial, version=…) în Python), în CLI (codaid settings get, codaid settings set transcripts.waveform=bars, codaid settings set appearance.accent=teal appearance.mode=dark) și în serverul MCP (settings_get, settings_update).

GET
/v1/settings

Autorizare

bearerAuth
headerAutorizareBearer <codai_…>

O cheie API Kodwen (prefix codai_). Tokenurile efemere de la POST /v1/tokens sunt acceptate doar de suprafețele media potrivite scope-ului lor (/v1/realtime, /v1/audio/*, /v1/embeddings).

Parametri header

x-request-id?string

Id de corelare ales de client; e returnat ca x-codai-trace-id și persistat pe rândul de usage.

Lungimelength <= 128

Corpul răspunsului

Setările cu valorile implicite aplicate.

application/json
  1. response
settings*
version*integer

Contor pentru concurență optimistă; 0 = nescris niciodată.

Interval0 <= value
updatedAt*|

Momentul ultimei scrieri; null dacă nu s-a scris niciodată.

Formatdate-time
Exemplu de cerere
curl -X GET 'https://ai.codai.ro/v1/settings'
Exemplu de răspuns
{  "settings": {    "transcripts": {      "waveform": "ring",      "haptics": true,      "liveText": true,      "target": "auto",      "language": null    },    "appearance": {      "colorTheme": "system",      "lightTheme": "builtin.light",      "darkTheme": "builtin.dark",      "mode": "system",      "accent": "petrol",      "skin": "assistant",      "amoled": false,      "font": "brand"    }  },  "version": 0,  "updatedAt": "2019-08-24T14:15:22Z"}
PATCH
/v1/settings

Autorizare

bearerAuth
headerAutorizareBearer <codai_…>

O cheie API Kodwen (prefix codai_). Tokenurile efemere de la POST /v1/tokens sunt acceptate doar de suprafețele media potrivite scope-ului lor (/v1/realtime, /v1/audio/*, /v1/embeddings).

Parametri header

x-request-id?string

Id de corelare ales de client; e returnat ca x-codai-trace-id și persistat pe rândul de usage.

Lungimelength <= 128

Corpul cererii

Un obiect parțial al setărilor plus versiunea așteptată, opțional.

application/json
  1. body
settings*

Obiect parțial din UserSettings; cheile necunoscute sunt respinse.

version?integer

Versiunea curentă așteptată; o nepotrivire dă 409.

Interval0 <= value

Corpul răspunsului

Setările salvate cu valorile implicite aplicate (aceeași formă ca la GET).

application/json
  1. response
settings*
version*integer

Contor pentru concurență optimistă; 0 = nescris niciodată.

Interval0 <= value
updatedAt*|

Momentul ultimei scrieri; null dacă nu s-a scris niciodată.

Formatdate-time
Exemplu de cerere
curl -X PATCH 'https://ai.codai.ro/v1/settings' \  -H 'Content-Type: application/json' \  -d '{  "settings": {}}'
Exemplu de răspuns
{  "settings": {    "transcripts": {      "waveform": "ring",      "haptics": true,      "liveText": true,      "target": "auto",      "language": null    },    "appearance": {      "colorTheme": "system",      "lightTheme": "builtin.light",      "darkTheme": "builtin.dark",      "mode": "system",      "accent": "petrol",      "skin": "assistant",      "amoled": false,      "font": "brand"    }  },  "version": 0,  "updatedAt": "2019-08-24T14:15:22Z"}