Тема
Auth API
POST /v1/auth/otp/start
Запустити OTP верифікацію — надсилає SMS на вказаний номер.
Авторизація: не потрібна
Тіло запиту
json
{
"phone": "+380991234567"
}| Поле | Тип | Обов'язкове | Опис |
|---|---|---|---|
phone | string | ✅ | Номер у форматі E.164 |
Відповідь 200
json
{
"requestId": "otp_abc123xyz"
}Rate limit
5 запитів / 10 хв на IP. При перевищенні — 429 Too Many Requests.
POST /v1/auth/otp/check
Верифікувати OTP-код і отримати токени.
Авторизація: не потрібна
Тіло запиту
json
{
"phone": "+380991234567",
"code": "1234"
}| Поле | Тип | Обов'язкове | Опис |
|---|---|---|---|
phone | string | ✅ | Номер у форматі E.164 |
code | string | ✅ | 4-значний OTP-код |
Відповідь 200
json
{
"accessToken": "eyJhbGciOiJIUzI1NiIsInR...",
"refreshToken": "eyJhbGciOiJIUzI1NiIsInR...",
"user": {
"id": "uuid",
"phone": "+380991234567",
"name": "Іван Петров",
"avatar": "https://cdn.pisd.uk/avatars/uuid.jpg",
"role": "user"
},
"isNewUser": false
}TIP
Якщо isNewUser: true — показати onboarding. Токени вже видані й дійсні.
POST /v1/auth/refresh
Оновити accessToken за допомогою refreshToken.
Авторизація: не потрібна
Тіло запиту
json
{
"refreshToken": "eyJhbGciOiJIUzI1NiIsInR..."
}Відповідь 200
json
{
"accessToken": "eyJhbGciOiJIUzI1NiIsInR...",
"refreshToken": "eyJhbGciOiJIUzI1NiIsInR..."
}GET /v1/auth/me
Отримати профіль поточного авторизованого користувача.
Авторизація: Bearer <accessToken>
Відповідь 200
json
{
"id": "uuid",
"phone": "+380991234567",
"name": "Іван Петров",
"username": "ivan_petrov",
"avatar": "https://cdn.pisd.uk/avatars/uuid.jpg",
"bio": "Люблю пікніки",
"role": "user",
"city": "Київ",
"peacesBalance": 125,
"createdAt": "2024-01-15T10:00:00Z"
}POST /v1/auth/logout
Анулювати поточну сесію (refresh token).
Авторизація: Bearer <accessToken>
Тіло запиту
json
{
"refreshToken": "eyJhbGciOiJIUzI1NiIsInR..."
}Відповідь 200
json
{ "success": true }