Optionallabs Authentication API

Base URL: https://api.optionallabs.com/api

1. Health Check

GET /ping

Returns API health status and version.

{ "ok": true, "version": "1.0.0" }

2. User Authentication

POST /signup

Create a new user account.

Request Body:
{
  "name": "John Doe",
  "email": "john@example.com",
  "password": "123456",
  "phone": "9876543210"
}
Response:
{ "message": "Signup successful" }

POST /login

Authenticate a user and get a JWT token.

Request Body:
{
  "email": "john@example.com",
  "password": "123456"
}
Response:
{
  "message": "Login successful",
  "token": "",
  "user": {
    "id": 1,
    "name": "John Doe",
    "email": "john@example.com",
    "phone": "9876543210"
  }
}

GET /validate

Validate a user session using a JWT token.

Headers:
Authorization: Bearer <token>
Response:
{ "valid": true, "user": { ... } }

PUT /update-account

Update user profile fields (name, phone).

Headers:
Authorization: Bearer <token>
Request Body:
{ "name": "Jane Doe", "phone": "9876500000" }
Response:
{ "message": "Account updated", "user": { ... } }

3. OTP Management

POST /send-otp

Send a one-time password (OTP) to user's email.

Request Body:
{ "email": "john@example.com" }
Response:
{ "message": "OTP sent successfully" }

POST /verify-otp

Verify a one-time password (OTP).

Request Body:
{
  "email": "john@example.com",
  "otp": "123456"
}
Response:
{ "message": "OTP verified successfully" }

4. Error Responses

{ "message": "Internal server error" }
{ "message": "Invalid email or password" }
{ "message": "No token provided" }

5. Contact Form

POST /contact

Submit a contact form message. Stores the message in the database and sends an acknowledgment email to the user.

Request Body:
{
  "full_name": "Chandan Kumar Dash",
  "email": "chandan@example.com",
  "phone": "9876543210",
  "message": "I would like to know more about your services."
}
Response:
{
  "message": "Thank you for contacting us! We've received your message."
}

GET /contact-messages (Optional, admin-only)

Retrieve all submitted contact messages (can be restricted to admin use).

Response Example:
[
  {
    "id": 1,
    "full_name": "Chandan Kumar Dash",
    "email": "chandan@example.com",
    "phone": "9876543210",
    "message": "I would like to know more about your services.",
    "created_at": "2025-10-30T12:34:56.000Z"
  }
]