Skip to content

Latest commit

 

History

History
882 lines (783 loc) · 12.5 KB

File metadata and controls

882 lines (783 loc) · 12.5 KB

API Documentation

Base URL

http://localhost:3000

Table of Contents

Authentication

Register User

POST /auth/register
Content-Type: application/json

Request Body

{
  "name": "string",
  "email": "string",
  "password": "string"
}

Success Response (201 Created)

{
  "status": "success",
  "data": {
    "token": "jwt_token_string",
    "user": {
      "id": "user_id",
      "name": "user_name",
      "email": "user_email"
    }
  }
}

Verify Email

POST /auth/verify-email
Content-Type: application/json

Request Body

{
  "email": "string",
  "verificationCode": "string"
}

Success Response (200 OK)

{
  "status": "success",
  "message": "Email verified successfully"
}

Resend Verification Code

POST /auth/resend-verification-code
Content-Type: application/json

Request Body

{
  "email": "string"
}

Success Response (200 OK)

{
  "status": "success",
  "message": "Verification code sent successfully"
}

Login

POST /auth/login
Content-Type: application/json

Request Body

{
  "email": "string",
  "password": "string"
}

Success Response (200 OK)

{
  "status": "success",
  "data": {
    "token": "jwt_token_string",
    "user": {
      "id": "user_id",
      "name": "user_name",
      "email": "user_email"
    }
  }
}

Change Password

POST /auth/change-password
Authorization: Bearer <token>
Content-Type: application/json

Request Body

{
  "oldPassword": "string",
  "newPassword": "string"
}

Success Response (200 OK)

{
  "status": "success",
  "message": "Password updated successfully"
}

Forgot Password

POST /auth/forgot-password
Content-Type: application/json

Request Body

{
  "email": "string"
}

Success Response (200 OK)

{
  "status": "success",
  "message": "Password reset instructions sent to email"
}

Reset Password

POST /auth/reset-password
Content-Type: application/json

Request Body

{
  "token": "string",
  "newPassword": "string"
}

Success Response (200 OK)

{
  "status": "success",
  "message": "Password reset successfully"
}

Logout

POST /auth/logout
Authorization: Bearer <token>

Success Response (200 OK)

{
  "status": "success",
  "message": "Logged out successfully"
}

Logout from All Devices

POST /auth/logout-all
Authorization: Bearer <token>

Success Response (200 OK)

{
  "status": "success",
  "message": "Logged out from all devices"
}

User Management

Get User Profile

GET /user/profile
Authorization: Bearer <token>

Success Response (200 OK)

{
  "status": "success",
  "data": {
    "user": {
      "id": "user_id",
      "name": "string",
      "email": "string",
      "hobbies": ["string"],
      "dateOfBirth": "string",
      "location": {
        "type": "Point",
        "coordinates": [number, number]
      },
      "academicQualification": [
        {
          "passedYear": "number",
          "degreeName": "string"
        }
      ],
      "followers": ["user_id"],
      "following": ["user_id"]
    }
  }
}

Update Hobbies

PUT /user/hobbies
Authorization: Bearer <token>
Content-Type: application/json

Request Body

{
  "hobbies": ["string"]
}

Success Response (200 OK)

{
  "status": "success",
  "data": {
    "hobbies": ["string"]
  }
}

Delete Hobby

DELETE /user/hobbies
Authorization: Bearer <token>
Content-Type: application/json

Request Body

{
  "hobby": "string"
}

Success Response (200 OK)

{
  "status": "success",
  "message": "Hobby deleted successfully"
}

Update Academic Qualifications

PUT /user/academic-qualification
Authorization: Bearer <token>
Content-Type: application/json

Request Body

{
  "academicQualification": [
    {
      "passedYear": "number",
      "degreeName": "string"
    }
  ]
}

Success Response (200 OK)

{
  "status": "success",
  "data": {
    "academicQualification": [
      {
        "passedYear": "number",
        "degreeName": "string"
      }
    ]
  }
}

Delete Academic Qualification

DELETE /user/academic-qualification
Authorization: Bearer <token>
Content-Type: application/json

Request Body

{
  "qualificationId": "string"
}

Success Response (200 OK)

{
  "status": "success",
  "message": "Academic qualification deleted successfully"
}

Update Date of Birth

PUT /user/date-of-birth
Authorization: Bearer <token>
Content-Type: application/json

Request Body

{
  "dateOfBirth": "YYYY-MM-DD"
}

Success Response (200 OK)

{
  "status": "success",
  "data": {
    "dateOfBirth": "YYYY-MM-DD"
  }
}

Update Location

PUT /user/location
Authorization: Bearer <token>
Content-Type: application/json

Request Body

{
  "location": {
    "type": "Point",
    "coordinates": [number, number]
  }
}

Success Response (200 OK)

{
  "status": "success",
  "data": {
    "location": {
      "type": "Point",
      "coordinates": [number, number]
    }
  }
}

Get Followers

GET /user/followers
Authorization: Bearer <token>

Success Response (200 OK)

{
  "status": "success",
  "data": {
    "followers": [
      {
        "id": "user_id",
        "name": "string",
        "email": "string"
      }
    ]
  }
}

Get Following

GET /user/following
Authorization: Bearer <token>

Success Response (200 OK)

{
  "status": "success",
  "data": {
    "following": [
      {
        "id": "user_id",
        "name": "string",
        "email": "string"
      }
    ]
  }
}

Follow User

POST /user/follow
Authorization: Bearer <token>
Content-Type: application/json

Request Body

{
  "followUserId": "string"
}

Success Response (200 OK)

{
  "status": "success",
  "message": "User followed successfully"
}

Unfollow User

POST /user/unfollow
Authorization: Bearer <token>
Content-Type: application/json

Request Body

{
  "unfollowUserId": "string"
}

Success Response (200 OK)

{
  "status": "success",
  "message": "User unfollowed successfully"
}

Posts

Create Post

POST /posts/uploadpost
Authorization: Bearer <token>
Content-Type: multipart/form-data

Request Body

title: string
content: string
image: File (optional)

Success Response (201 Created)

{
  "status": "success",
  "data": {
    "post": {
      "id": "post_id",
      "title": "string",
      "content": "string",
      "image": "string",
      "author": {
        "id": "user_id",
        "name": "string"
      },
      "likesCounter": 0,
      "createdAt": "datetime",
      "updatedAt": "datetime"
    }
  }
}

Get Posts (Paginated)

GET /posts/getposts?page=1&limit=10
Authorization: Bearer <token>

Query Parameters

  • page (default: 1)
  • limit (default: 10)

Success Response (200 OK)

{
  "status": "success",
  "data": {
    "posts": [
      {
        "id": "post_id",
        "title": "string",
        "content": "string",
        "image": "string",
        "author": {
          "id": "user_id",
          "name": "string"
        },
        "likesCounter": "number",
        "createdAt": "datetime",
        "updatedAt": "datetime"
      }
    ],
    "pagination": {
      "currentPage": "number",
      "totalPages": "number",
      "totalPosts": "number"
    }
  }
}

Get User Feed

GET /posts/showfeed?page=1&limit=10
Authorization: Bearer <token>

Query Parameters

  • page (default: 1)
  • limit (default: 10)

Success Response (200 OK)

{
  "status": "success",
  "data": {
    "posts": [
      {
        "id": "post_id",
        "title": "string",
        "content": "string",
        "image": "string",
        "author": {
          "id": "user_id",
          "name": "string"
        },
        "likesCounter": "number",
        "createdAt": "datetime",
        "updatedAt": "datetime"
      }
    ],
    "pagination": {
      "currentPage": "number",
      "totalPages": "number",
      "totalPosts": "number"
    }
  }
}

Get Post by ID

GET /posts/postbyid/:id
Authorization: Bearer <token>

Success Response (200 OK)

{
  "status": "success",
  "data": {
    "post": {
      "id": "post_id",
      "title": "string",
      "content": "string",
      "image": "string",
      "author": {
        "id": "user_id",
        "name": "string"
      },
      "likesCounter": "number",
      "createdAt": "datetime",
      "updatedAt": "datetime"
    }
  }
}

Update Post

PUT /posts/updatepost/:id
Authorization: Bearer <token>
Content-Type: multipart/form-data

Request Body

title: string
content: string
image: File (optional)

Success Response (200 OK)

{
  "status": "success",
  "data": {
    "post": {
      "id": "post_id",
      "title": "string",
      "content": "string",
      "image": "string",
      "author": {
        "id": "user_id",
        "name": "string"
      },
      "likesCounter": "number",
      "createdAt": "datetime",
      "updatedAt": "datetime"
    }
  }
}

Delete Post

DELETE /posts/deletepost/:id
Authorization: Bearer <token>

Success Response (200 OK)

{
  "status": "success",
  "message": "Post deleted successfully"
}

Like/Unlike Post

POST /posts/likepost
Authorization: Bearer <token>
Content-Type: application/json

Request Body

{
  "postId": "string"
}

Success Response (200 OK)

{
  "status": "success",
  "message": "Post liked/unliked successfully",
  "data": {
    "likesCounter": "number"
  }
}

Comments

Add Comment

POST /comment/add
Authorization: Bearer <token>
Content-Type: application/json

Request Body

{
  "postId": "string",
  "content": "string"
}

Success Response (201 Created)

{
  "status": "success",
  "data": {
    "comment": {
      "id": "comment_id",
      "content": "string",
      "author": {
        "id": "user_id",
        "name": "string"
      },
      "post": "post_id",
      "createdAt": "datetime"
    }
  }
}

Update Comment

PUT /comment/update
Authorization: Bearer <token>
Content-Type: application/json

Request Body

{
  "commentId": "string",
  "content": "string"
}

Success Response (200 OK)

{
  "status": "success",
  "data": {
    "comment": {
      "id": "comment_id",
      "content": "string",
      "author": {
        "id": "user_id",
        "name": "string"
      },
      "post": "post_id",
      "createdAt": "datetime",
      "updatedAt": "datetime"
    }
  }
}

Delete Comment

DELETE /comment/delete
Authorization: Bearer <token>
Content-Type: application/json

Request Body

{
  "commentId": "string"
}

Success Response (200 OK)

{
  "status": "success",
  "message": "Comment deleted successfully"
}

Get Post Comments

GET /posts/postcomments/:postId?page=1&limit=10
Authorization: Bearer <token>

Query Parameters

  • page (default: 1)
  • limit (default: 10)

Success Response (200 OK)

{
  "status": "success",
  "data": {
    "comments": [
      {
        "id": "comment_id",
        "content": "string",
        "author": {
          "id": "user_id",
          "name": "string"
        },
        "createdAt": "datetime"
      }
    ],
    "pagination": {
      "currentPage": "number",
      "totalPages": "number",
      "totalComments": "number"
    }
  }
}

Error Responses

Validation Error (422)

{
  "status": "error",
  "code": 422,
  "message": "Validation failed",
  "errors": {
    "field": "error message"
  }
}

Authentication Error (401)

{
  "status": "error",
  "code": 401,
  "message": "Invalid token or unauthorized"
}

Not Found Error (404)

{
  "status": "error",
  "code": 404,
  "message": "Resource not found"
}

Server Error (500)

{
  "status": "error",
  "code": 500,
  "message": "Internal server error"
}