# Magmath 6 — XNet API договор

Активирано на 19.09.2026 со Listener `1.2.1+magmath6-profile`.

- Endpoint: `POST https://vps.xnet.mk:50443/api/commands`
- `client.appId`: `magmath-6`
- Секое барање испраќа `authentication.username` и `authentication.password` во стандардниот schemaVersion 1 envelope.
- Нема access/refresh token и клиентот не испраќа database, server или DB credentials.

## Дозволени операции

- `user.login` со `data:{}`;
- `user.me` со `data:{}`;
- `user.register` со постојниот заеднички XNet договор;
- `user.update`;
- `user.profile-picture.update`;
- `change.request.submit`, `change.request.list`, `change.request.get`.

Другите операции се одбиваат со HTTP403 `operation-not-allowed-for-client`. Business database операции сè уште не се отворени.

## Профил

`user.update` е целосен save:

```json
{
  "name": "Име",
  "surname": "Презиме",
  "username": "korisnik",
  "pid": null,
  "address": null,
  "city": null,
  "country": null,
  "phone": null,
  "email": "user@example.com",
  "languageId": 1,
  "birthday": null
}
```

Опционалните полиња што се испуштени се запишуваат како `null`; испратете ја постојната вредност ако треба да се зачува. `birthday` е `YYYY-MM-DD` или `null`. По промена на username, следното барање мора да го користи новото корисничко име.

`user.profile-picture.update`:

```json
{"profilePicture":"BASE64_OR_DATA_URL"}
```

`profilePicture:null` или празен string ја отстранува сликата. Максималната должина е 700000 знаци.

Двете операции ги проверуваат credentials, го менуваат само корисникот утврден од нив, го ажурираат централниот XNet идентитет, го mirror-ажурираат `kesh.users`, го превчитуваат Users кешот и враќаат целосен освежен профил:

`{userId,name,surname,username,pid,address,city,country,phone,email,languageId,confirmed,birthday,profilePicture}`.

Не повторувајте автоматски write по timeout или неодреден мрежен исход.

## Login response

Покрај заедничките login полиња, Magmath 6 добива `magmath.connections`: активните директни фирмени конекции на корисникот со approval состојби, улога, магацин и основни податоци за фирмата. Не се враќаат server адреса, database име, database username или database password.

## Грешки и production verification

- HTTP401 `invalid-credentials` за неточна најава;
- HTTP403 `email-not-confirmed` или `operation-not-allowed-for-client`;
- HTTP409 `user-already-exists`;
- HTTP422 validation errors;
- HTTP503 `cache-sync-failed` или database/service unavailable.

По deployment се проверени `user.login`, `user.me`, `user.update` и `user.profile-picture.update` со намерно неточни credentials. Сите четири вратија HTTP401 `invalid-credentials`, што потврдува дека `magmath-6` и профилните операции се регистрирани без да се изврши write.
