Skip to content
API дар марҳилаи beta аст ва бидуни огоҳии пешакӣ тағйир ёфта метавонад.

Нуқтаҳои ниҳоии Auth

Ҳамаи нуқтаҳои ниҳоии тасдиқи ҳувият дар зери /auth ҳастанд.

Даромадан

Тасдиқ бо email ва парол.

POST /auth/login

Бадани дархост:

json
{
  "email": "user@example.com",
  "password": "your_password"
}

Ҷавоби 200:

json
{
  "type": "bearer",
  "token": "hitkey_...",
  "refresh_token": "a1b2c3d4e5f6...",
  "expires_in": 3600,
  "user": {
    "id": "uuid",
    "email": "user@example.com",
    "displayName": "John Doe"
  }
}

Ҷавоби challenge-и 2FA 202:

Агар корбар 2FA-ро фаъол карда бошад, даромадан ба ҷои token challenge бармегардонад:

json
{
  "totp_required": true,
  "challenge_token": "a1b2c3d4e5f6..."
}

Challenge-ро бо POST /auth/2fa/verify анҷом диҳед.

Хатогиҳо:

ҲолатРамзТавсиф
401INVALID_CREDENTIALSEmail ё парол нодуруст
401EMAIL_NOT_VERIFIEDEmail ҳанӯз тасдиқ нашудааст

Баромадан

Беэътибор кардани token-и ҷорӣ.

POST /auth/logout

Тасдиқи ҳувият: Ҳатмӣ

Ҷавоби 200:

json
{
  "message": "Logged out successfully"
}

Корбари ҷорӣ

Гирифтани профили корбари тасдиқшуда.

GET /auth/me

Тасдиқи ҳувият: Ҳатмӣ

Ҷавоби 200:

json
{
  "id": "uuid",
  "email": "user@example.com",
  "name": "John Doe",
  "surname": "Doe",
  "givenNames": "John",
  "displayName": "John Doe",
  "nativeScript": null,
  "preferredOrder": "western",
  "username": "johndoe",
  "emailVerified": true,
  "totpEnabled": false,
  "emails": [
    {
      "id": "email-uuid",
      "email": "user@example.com",
      "isDefault": true,
      "isVerified": true
    }
  ],
  "createdAt": "2024-01-01T00:00:00.000Z",
  "updatedAt": "2024-01-01T00:00:00.000Z"
}

Навсозии профил

Навсозии профили корбари ҷорӣ.

PATCH /auth/profile

Тасдиқи ҳувият: Ҳатмӣ

Бадани дархост (ҳамаи майдонҳо ихтиёрӣ):

json
{
  "surname": "Smith",
  "givenNames": "Jane",
  "displayName": "Jane Smith",
  "nativeScript": "ジェーン",
  "preferredOrder": "western",
  "username": "janesmith"
}
МайдонНамудТавсиф
surnamestring | nullНасаб
givenNamesstring | nullНом(ҳо)-и шахсӣ
displayNamestring | nullНоми интихобӣ барои намоиш
nativeScriptstring | nullНом дар хатти модарӣ
preferredOrder"western" | "eastern" | nullТартиби намоиши ном
usernamestring | nullНоми корбарии ягона (3-30 аломат, ҳарфу рақам + зерхат)

Хатогиҳо:

ҲолатРамзТавсиф
400USERNAME_INVALIDФормати номи корбарӣ нодуруст
400USERNAME_RESERVEDНоми корбарӣ захира шудааст
409USERNAME_TAKENНоми корбарӣ аллакай истифода мешавад

Навсозии Token

Навсозии token-и Bearer-и API.

POST /auth/token/refresh

Бадани дархост:

json
{
  "refresh_token": "a1b2c3d4e5f6..."
}

Ҷавоби 200:

json
{
  "type": "bearer",
  "token": "hitkey_...",
  "refresh_token": "new_hex_token...",
  "expires_in": 3600
}

Ротатсияи token

Навсозии token-и API refresh token-ро ротатсия мекунад — ҳар истифода refresh token-и нав бармегардонад ва кӯҳнаро беэътибор мекунад. Ҳамеша refresh token-и навро аз ҷавоб нигоҳ доред.


Барқарорсозии парол

Дархости барқарорсозӣ

POST /auth/password/forgot

Бадани дархост:

json
{
  "email": "user@example.com"
}

Ҷавоби 200:

json
{
  "message": "If this email exists, a reset link has been sent"
}

Анҷоми барқарорсозӣ

POST /auth/password/reset

Бадани дархост:

json
{
  "token": "RESET_TOKEN",
  "password": "new_password"
}

INFO

Мӯҳлати token-ҳои барқарорсозӣ пас аз 15 дақиқа ба охир мерасад.

Хатогиҳо:

ҲолатРамзТавсиф
400INVALID_TOKENToken беэътибор аст
400TOKEN_EXPIREDМӯҳлати token гузаштааст

2FA (TOTP)

Танзим

Гирифтани рамзи махфии TOTP ва URI-и QR code барои танзими барномаи authenticator.

GET /auth/2fa/setup

Тасдиқи ҳувият: Ҳатмӣ

Ҷавоби 200:

json
{
  "secret": "JBSWY3DPEHPK3PXP",
  "qrCodeUrl": "otpauth://totp/HitKey:user@example.com?secret=JBSWY3DPEHPK3PXP&issuer=HitKey"
}

Фаъол кардан

Фаъол кардани 2FA пас аз тасдиқи рамзи TOTP.

POST /auth/2fa/enable

Тасдиқи ҳувият: Ҳатмӣ

Бадани дархост:

json
{
  "code": "123456"
}

Ғайрифаъол кардан

Ғайрифаъол кардани 2FA бо рамзи дурусти TOTP.

POST /auth/2fa/disable

Тасдиқи ҳувият: Ҳатмӣ

Бадани дархост:

json
{
  "code": "123456"
}

Тасдиқ (Challenge-и даромадан)

Анҷоми challenge-и 2FA ҳангоми даромадан.

POST /auth/2fa/verify

Бадани дархост:

json
{
  "challenge_token": "a1b2c3d4e5f6...",
  "code": "123456"
}

Ҷавоби 200: Ҳамон формат, ки дар ҷавоби даромадан (token + refresh_token + expires_in + user).

Хатогиҳо:

ҲолатРамзТавсиф
400INVALID_CODEРамзи TOTP нодуруст
400SETUP_NOT_INITIATED2FA танзим нашудааст
400NOT_ENABLEDФаъол нест (ғайрифаъол кардан)
400INVALID_TOKENChallenge token беэътибор

HitKey Service License.