User API

Кінцеві точки користувачів FonProxy: профіль, налаштування, зміна електронної пошти, валюти, транзакції, графік балансу та аватар.

Updated 2026-04-09 16:13:00
User API

Для автентифікації та загальних заголовків дивіться API General.


Користувач

Отримати поточного користувача Auth required

GET /user/me

Отримати профіль автентифікованого користувача.

Відповідь

{
  "user": {
    "id": "k5Xz9qR2Wp",
    "name": "John Doe",
    "displayName": "John Doe",
    "email": "user@example.com",
    "initials": "JD",
    "avatarUrl": "/avatars/1-a3f8c2d1.jpg",
    "role": "user",
    "balance": 10.00,
    "displayBalance": 415.20,
    "currency": "UAH",
    "locale": "en",
    "hasPassword": true,
    "invitedBy": "xK9mR2pL1w",
    "createdAt": "2026-03-15T12:00:00.000Z"
  }
}

invitedBy — ID користувача, який направив цього користувача через реферальне посилання. null, якщо не було направлення.


Оновити налаштування Auth required

PATCH /user/settings

Оновити налаштування користувача. Всі поля є необов'язковими — надсилайте лише те, що хочете змінити.

Тіло запиту

НазваТипОписОбов'язково
namestringВідображуване ім'я. Надішліть порожній рядок, щоб очистити.Ні
currencystringКод відображуваної валютиНі
passwordstringВстановити або змінити пароль. Якщо користувач вже має пароль, currentPassword є обов'язковим.Ні
currentPasswordstringВимагається лише при зміні існуючого пароляНі

Відповідь

Повний оновлений профіль користувача.


Запит на зміну електронної пошти Auth required

POST /user/email/request-change

Надіслати 6-значний код підтвердження на нову електронну адресу. Код діє протягом 10 хвилин. Попередні незавершені коди для тієї ж адреси анульовані.

Тіло запиту

НазваТипОписОбов'язково
emailstringНова електронна адресаТак

Відповідь

{ "message": "user.email_change_code_sent" }

Помилки:

{ "message": "user.email_required" }
{ "message": "user.email_already_taken" }

Підтвердити зміну електронної пошти Auth required

POST /user/email/confirm

Підтвердити зміну електронної пошти, надіславши код, надісланий на нову адресу. У випадку успіху електронна пошта користувача оновлюється та повертається повний оновлений профіль.

Тіло запиту

НазваТипОписОбов'язково
emailstringНова електронна адреса (повинна співпадати із запитом)Так
codestring6-значний код підтвердженняТак

Відповідь

{ "user": { "...": "full profile with updated email" } }

Помилки:

{ "message": "user.email_change_code_invalid" }
{ "message": "user.email_already_taken" }

Перелік валют Auth required

GET /user/currencies

Отримати всі підтримувані коди відображуваних валют.

Відповідь

{
  "currencies": ["USD", "EUR", "GBP", "PLN", "CZK", "HUF", "RON", "SEK", "NOK", "DKK", "CHF", "HRK", "BGN", "UAH", "TRY"]
}

Перелік транзакцій Auth required

GET /user/transactions

Отримати список транзакцій балансу автентифікованого користувача (з пагінацією, можливістю фільтрації).

Параметри запиту

НазваТипОписОбов'язково
pagenumberНомер сторінки. За замовчуванням 1Ні
limitnumberКількість елементів на сторінці (макс. 100). За замовчуванням 20Ні
typestringФільтрація за типом: deposit, withdrawal, purchase, refund, bonus, correctionНі
statusstringФільтрація за статусом: pending, completed, failed, cancelledНі
fromstringДата початку у форматі ISO — початок діапазонуНі
tostringДата закінчення у форматі ISO — кінець діапазонуНі
currencystringПеревизначити валюту відображення. За замовчуванням валюта облікового запису користувачаНі

Відповідь

{
  "currency": "UAH",
  "transactions": [
    {
      "id": "k5Xz9qR2Wp",
      "type": "deposit",
      "status": "completed",
      "amount": 4100.00,
      "currency": "UAH",
      "balanceBefore": 0,
      "balanceAfter": 4100.00,
      "exchangeRate": 41.0,
      "amountUsd": 100.00,
      "balanceBeforeUsd": 0,
      "balanceAfterUsd": 100.00,
      "originalAmount": 4100,
      "originalCurrency": "UAH",
      "description": "Поповнення через Monobank",
      "referenceType": "topup",
      "referenceId": "aBcDeFgHiJ",
      "receiptUrl": "https://api.fonproxy.io/receipts/k5Xz9qR2Wp",
      "meta": { "gateway": "monobank", "invoiceId": "abc123" },
      "createdAt": "2026-03-15T12:00:00.000Z"
    },
    ...
  ],
  "total": 42,
  "page": 1,
  "pages": 3
}

Графік історії балансу Auth required

GET /user/graphs/balance

Отримати дані графіка історії балансу. Повертає універсальний формат графіка.

Параметри запиту

НазваТипОписОбов'язково
fromstringДата початку у форматі ISO — початок діапазону. За замовчуванням 30 днів томуНі
tostringДата закінчення у форматі ISO — кінець діапазону. За замовчуванням заразНі
granularitystringhour, day, week або month. За замовчуванням автоНі
currencystringПеревизначити валюту відображення. За замовчуванням валюта облікового запису користувачаНі

Відповідь

{
  "graph": "balance_history",
  "granularity": "day",
  "from": "2026-02-14T00:00:00.000Z",
  "to": "2026-03-16T00:00:00.000Z",
  "series": [
    {
      "key": "balance",
      "label": "Баланс",
      "color": "#E6318B",
      "points": [
        { "t": "2026-02-14T00:00:00.000Z", "v": 0 },
        ...
      ]
    }
  ],
  "meta": {
    "currency": "UAH",
    "startBalance": 0,
    "endBalance": 337.15,
    "startBalanceUsd": 0,
    "endBalanceUsd": 8.25,
    "exchangeRate": 41.0
  }
}

Аватар

Отримати аватар

GET /avatar/:identifier

Показати аватар користувача. Публічний — автентифікація не обов'язкова.

  • Якщо користувач має avatarUrl302 редирект
  • Якщо користувач не має avatarUrl → детермінований SVG з ініціалами

Приймає ID або електронну пошту як ідентифікатор:

GET /avatar/k5Xz9qR2Wp
GET /avatar/user@example.com

Завантажити аватар Auth required

POST /user/avatar

Завантажити нове зображення аватара.

Content-Type: multipart/form-data Назва поля: file Допустимі формати: JPEG, PNG, WebP, GIF Максимальний розмір: 5 MB

Відповідь

{
  "avatarUrl": "/avatars/1-a3f8c2d1.jpg",
  "user": { "...": "full updated user profile" }
}

Видалити аватар Auth required

DELETE /user/avatar

Видалити поточний аватар.

Відповідь

{
  "user": { "...": "full updated user profile with avatarUrl: null" }
}