Перейти к основному содержимому

Профиль

Все эндпоинты /me требуют аутентификации: Authorization: Bearer <access_token>.


Получить профиль

GET /api/v1/me

Получить профиль текущего пользователя.

Ответ 200

{
"success": true,
"status": "200",
"message": "Profile retrieved successfully",
"errors": null,
"data": {
"id": "uuid",
"first_name": "Ivan",
"last_name": "Petrov",
"bio": null,
"locale": "ru",
"avatar_url": "https://...",
"role": "client",
"stats": {
"visits_count": 5,
"favorites_count": 2,
"reviews_count": 1
}
}
}

Обновить профиль

PATCH /api/v1/me

Обновить профиль. Все поля опциональны.

Запрос

{
"profile": {
"first_name": "Ivan",
"last_name": "Petrov",
"bio": "My bio",
"locale": "ru"
}
}

Ответ 200

Тело то же что у GET /api/v1/me.


Загрузить аватар

PATCH /api/v1/me/avatar

Загрузить аватар. Multipart form data.

Запрос

Content-Type: multipart/form-data

avatar: <file>

Ответ 200

{
"success": true,
"status": "200",
"message": "Avatar updated successfully",
"errors": null,
"data": {
"avatar_url": "https://..."
}
}

Удалить аккаунт

DELETE /api/v1/me

Удалить аккаунт. Требует подтверждения паролем.

Запрос

{
"password": "secret123"
}

Ответ 200

{
"success": true,
"status": "200",
"message": "Account deleted successfully!",
"errors": null,
"data": null
}

Ответ 401 — Неверный пароль

{
"success": false,
"status": "401",
"message": "Incorrect password",
"errors": null,
"data": null
}

Список избранных салонов

GET /api/v1/me/favorites

Список избранных салонов текущего пользователя.

Ответ 200

{
"success": true,
"status": "200",
"message": "Favorites retrieved successfully",
"errors": null,
"data": [
{
"id": "uuid",
"name": "Barber House",
"slug": "barber-house",
"address": "str. Pushkin 12",
"lat": 47.024,
"lng": 28.832,
"phone": "+37369000000",
"status": "active",
"avg_rating": 4.8,
"reviews_count": 12,
"photo_urls": []
}
]
}

Список моих салонов

GET /api/v1/me/salons

Список салонов, которыми владеет текущий пользователь (с детальной информацией).

Ответ 200

{
"success": true,
"status": "200",
"message": "Salons retrieved successfully",
"errors": null,
"data": [
{
"id": "uuid",
"name": "Barber House",
"slug": "barber-house",
"address": "str. Pushkin 12",
"lat": 47.024,
"lng": 28.832,
"phone": "+37369000000",
"status": "active",
"avg_rating": 4.8,
"reviews_count": 12,
"photo_urls": [],
"cancellation_hours_before": 24,
"cancellation_fee_percent": "0.0",
"working_hours": [
{ "day_of_week": 1, "open": "09:00", "close": "18:00" }
],
"services": [
{
"id": "uuid",
"name": "Men's Haircut",
"description": null,
"category": "barbershop",
"duration_min": 30,
"masters": [
{ "master_id": "uuid", "price": 150.0, "first_name": "Ion", "last_name": "Popescu" }
]
}
]
}
]
}

Список моих записей

GET /api/v1/me/appointments

Список записей текущего пользователя.

Query params

ПараметрОписание
statusФильтр по статусу: confirmed, in_progress, completed, и т.д.
salon_idТолько для salon_owner и professional

Ответ 200

{
"success": true,
"status": "200",
"message": "Appointments retrieved successfully",
"errors": null,
"data": [
{
"id": "uuid",
"status": "confirmed",
"starts_at": "2026-04-07T10:00:00Z",
"ends_at": "2026-04-07T10:30:00Z",
"salon_name": "Barber House",
"master_name": "Ion Popescu"
}
]
}