Skip to content

Auth API

POST /v1/auth/otp/start

Запустити OTP верифікацію — надсилає SMS на вказаний номер.

Авторизація: не потрібна

Тіло запиту

json
{
  "phone": "+380991234567"
}
ПолеТипОбов'язковеОпис
phonestringНомер у форматі 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"
}
ПолеТипОбов'язковеОпис
phonestringНомер у форматі E.164
codestring4-значний 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 }

Peaced — платформа подій