Auth

User login with provided credentials.

post

Authenticates a user and returns a login token with account and profile details.

Authorizations
Body
usernameOrEmailstring | nullableOptional
passwordstring | nullableOptional
Responses
200

OK

application/json
post
POST /api/Auth/Login HTTP/1.1
Host: 
Authorization: Bearer JWT
Content-Type: application/json
Accept: */*
Content-Length: 44

{
  "usernameOrEmail": "text",
  "password": "text"
}
{
  "token": "text",
  "account": {
    "accountId": "123e4567-e89b-12d3-a456-426614174000",
    "username": "text",
    "email": "text",
    "createdAt": "2025-08-11T02:45:32.163Z",
    "updatedAt": "2025-08-11T02:45:32.163Z",
    "isActive": true,
    "roles": [
      "Candidate"
    ],
    "profile": {
      "profileId": "123e4567-e89b-12d3-a456-426614174000",
      "firstName": "text",
      "lastName": "text",
      "bioMarkdown": "text",
      "instituteName": "text",
      "phoneNumber": "text",
      "imageFile": {
        "cloudFileId": "123e4567-e89b-12d3-a456-426614174000",
        "fileId": "text",
        "name": "text",
        "contentType": "text",
        "size": 1,
        "webContentLink": "text",
        "webViewLink": "text",
        "directLink": "text",
        "createdAt": "2025-08-11T02:45:32.163Z"
      },
      "profileLinks": [
        {
          "profileLinkId": "123e4567-e89b-12d3-a456-426614174000",
          "name": "text",
          "link": "text"
        }
      ]
    }
  }
}

Registers a new user.

post

Registers a new user and returns account details with a login token.

Authorizations
Body
usernamestring | nullableOptional
emailstring | nullableOptional
passwordstring | nullableOptional
otpstring | nullableOptional
Responses
200

OK

application/json
post
POST /api/Auth/Register HTTP/1.1
Host: 
Authorization: Bearer JWT
Content-Type: application/json
Accept: */*
Content-Length: 65

{
  "username": "text",
  "email": "text",
  "password": "text",
  "otp": "text"
}
{
  "token": "text",
  "account": {
    "accountId": "123e4567-e89b-12d3-a456-426614174000",
    "username": "text",
    "email": "text",
    "createdAt": "2025-08-11T02:45:32.163Z",
    "updatedAt": "2025-08-11T02:45:32.163Z",
    "isActive": true,
    "roles": [
      "Candidate"
    ],
    "profile": {
      "profileId": "123e4567-e89b-12d3-a456-426614174000",
      "firstName": "text",
      "lastName": "text",
      "bioMarkdown": "text",
      "instituteName": "text",
      "phoneNumber": "text",
      "imageFile": {
        "cloudFileId": "123e4567-e89b-12d3-a456-426614174000",
        "fileId": "text",
        "name": "text",
        "contentType": "text",
        "size": 1,
        "webContentLink": "text",
        "webViewLink": "text",
        "directLink": "text",
        "createdAt": "2025-08-11T02:45:32.163Z"
      },
      "profileLinks": [
        {
          "profileLinkId": "123e4567-e89b-12d3-a456-426614174000",
          "name": "text",
          "link": "text"
        }
      ]
    }
  }
}

Recovers password for a user.

post

Initiates the password recovery process for a user and returns account details with a new login token.

Authorizations
Body
emailstring | nullableOptional
newPasswordstring | nullableOptional
otpstring | nullableOptional
Responses
200

OK

application/json
post
POST /api/Auth/PasswordRecovery HTTP/1.1
Host: 
Authorization: Bearer JWT
Content-Type: application/json
Accept: */*
Content-Length: 50

{
  "email": "text",
  "newPassword": "text",
  "otp": "text"
}
{
  "token": "text",
  "account": {
    "accountId": "123e4567-e89b-12d3-a456-426614174000",
    "username": "text",
    "email": "text",
    "createdAt": "2025-08-11T02:45:32.163Z",
    "updatedAt": "2025-08-11T02:45:32.163Z",
    "isActive": true,
    "roles": [
      "Candidate"
    ],
    "profile": {
      "profileId": "123e4567-e89b-12d3-a456-426614174000",
      "firstName": "text",
      "lastName": "text",
      "bioMarkdown": "text",
      "instituteName": "text",
      "phoneNumber": "text",
      "imageFile": {
        "cloudFileId": "123e4567-e89b-12d3-a456-426614174000",
        "fileId": "text",
        "name": "text",
        "contentType": "text",
        "size": 1,
        "webContentLink": "text",
        "webViewLink": "text",
        "directLink": "text",
        "createdAt": "2025-08-11T02:45:32.163Z"
      },
      "profileLinks": [
        {
          "profileLinkId": "123e4567-e89b-12d3-a456-426614174000",
          "name": "text",
          "link": "text"
        }
      ]
    }
  }
}

Checks if a user with the provided username or email is unique.

post

Checks if a user with the provided username or email is unique.

Authorizations
Body
usernamestring | nullableOptional
emailstring | nullableOptional
Responses
200

OK

post
POST /api/Auth/IsUserUnique HTTP/1.1
Host: 
Authorization: Bearer JWT
Content-Type: application/json
Accept: */*
Content-Length: 34

{
  "username": "text",
  "email": "text"
}

No content

Sends a One-Time Password (OTP) to the provided email address.

post

Sends a One-Time Password (OTP) to the provided email address.

Authorizations
Body
emailstring | nullableOptional
Responses
200

OK

post
POST /api/Auth/SendOtp HTTP/1.1
Host: 
Authorization: Bearer JWT
Content-Type: application/json
Accept: */*
Content-Length: 16

{
  "email": "text"
}

No content

Validates a provided One-Time Password (OTP).

post

Validates a provided One-Time Password (OTP) for a given email.

Authorizations
Body
emailstring | nullableOptional
otpstring | nullableOptional
Responses
200

OK

post
POST /api/Auth/IsValidOtp HTTP/1.1
Host: 
Authorization: Bearer JWT
Content-Type: application/json
Accept: */*
Content-Length: 29

{
  "email": "text",
  "otp": "text"
}

No content