Server: NodeJs, ExpressJs, MongoDB, Mongoose, JWT
Authentication & Authorization
Post CRUD operations
User can like/dislike posts
Comment functionality
User can create categories for posts
User can block/unblock different users
User who block another user cannot see his/her posts
Last date a post was created
Check if a user is active or not
Check last date a user was active
Changing user award based on number of posts created by the user
User can follow and unfollow another user
Get following and followers count
Get total profile viewers count
Get posts created count
Get blocked counts
Get all users who views someone's profile
Update user details and password
User can upload and update profile photo
Admin can block/unblock a user
User can close his/her account
Clone the project
git clone https://github.com/Himanshu8862/BlogAPI
Go to the project directory
Install dependencies
Start the server
To run this project, you will need to add the following environment variables to your .env file
MONGODB_URL , JWT_TOKEN , CLOUDINARY_CLOUD_NAME , CLOUDINARY_API_KEY , CLOUDINARY_API_SECRET_KEY
baseURL = https://blog-api-6y9o.onrender.com/
Some endpoints may require authentication. For example, to create a create/delete/update post, you need to register your API client and obtain an access token.
The endpoints that require authentication expect a bearer token to be sent in the Authorization header
Example :
Authorization: Bearer <YOUR_TOKEN>
Register a new API client
POST /api/v1/users/register
Parameter
Type
Description
Required
authentication
string
Your token
no
firstname
string
Your firstname
yes
lastname
string
Your lastname
yes
email
string
Your email
yes
password
string
Your password
yes
The request body needs to be in JSON format.
{
"firstname" : "John" ,
"lastname" : "Doe" ,
"password" : "myPassword" ,
"email" : "john@gmail.com"
}
Parameter
Type
Description
Required
authentication
string
Your token
no
email
string
Your email
yes
password
string
Your password
yes
Example request body:
{
"email" : "your email"
"password" : "your password"
}
GET /api/v1/users/profile
Parameter
Type
Description
Required
authentication
string
Your token
yes
Parameter
Type
Description
Required
authentication
string
Your token
no
GET /api/v1/users/profile-viewers/:id
Parameter
Type
Description
Required
authentication
string
Your token
yes
id
string
ID of the user whose profile you want to view
yes
GET /api/v1/users/following/:id
Parameter
Type
Description
Required
authentication
string
Your token
yes
id
string
ID of the user you want to follow
yes
GET /api/v1/users/unfollowing/:id
Parameter
Type
Description
Required
authentication
string
Your token
yes
id
string
ID of the user you want to unfollow
yes
PUT /api/v1/users/update-password
Parameter
Type
Description
Required
authentication
string
Your token
yes
password
string
Enter new password
yes
Example request body:
Parameter
Type
Description
Required
authentication
string
Your token
yes
email
string
Enter your email
no
firstname
string
Enter your firstname
no
lastname
string
Enter your lastname
no
Example request body:
{
"email" : "value" ,
"firstname" : "value" ,
"lastname" : "value" ,
}
GET /api/v1/users/block/:id
Parameter
Type
Description
Required
authentication
string
Your token
yes
id
string
ID of the user you want to block
yes
GET /api/v1/users/unblock/:id
Parameter
Type
Description
Required
authentication
string
Your token
yes
id
string
ID of the user you want to unblock
yes
PUT /api/v1/users/admin-block/:id
Parameter
Type
Description
Required
authentication
string
Your token
yes
id
string
ID of the user admin wants to block
yes
PUT /api/v1/users/admin-unblock/:id
Parameter
Type
Description
Required
authentication
string
Your token
yes
id
string
ID of the user admin wants to unblock
yes
DELETE /api/v1/users/delete-account
Parameter
Type
Description
Required
authentication
string
Your token
yes
PUT /api/v1/users/profile-photo-upload
Parameter
Type
Description
Required
authentication
string
Your token
yes
profile
string
Image to upload
yes
Parameter
Type
Description
Required
authentication
string
Your token
yes
title
string
Post title
yes
description
string
Post description
yes
category
string
ID of the category
yes
photo
string
Image of the post
yes
Example request body:
{
"title" : "value" ,
"description" : "value" ,
"category" : "value" ,
"photo" : "photo" ,
}
Parameter
Type
Description
Required
authentication
string
Your token
no
Parameter
Type
Description
Required
authentication
string
Your token
yes
id
string
ID of the post
yes
GET /api/v1/posts/likes/:id
Parameter
Type
Description
Required
authentication
string
Your token
yes
id
string
ID of the post
yes
GET /api/v1/posts/dislikes/:id
Parameter
Type
Description
Required
authentication
string
Your token
yes
id
string
ID of the post
yes
Parameter
Type
Description
Required
authentication
string
Your token
yes
id
string
ID of the post
yes
title
string
Title of the post
yes
description
string
Description of the post
yes
category
string
ID of the category
yes
photo
string
Photo of the post
yes
Example request body:
{
"title" : "value" ,
"description" : "value" ,
"category" : "value" ,
"photo" : "photo" ,
}
Parameter
Type
Description
Required
authentication
string
Your token
yes
id
string
ID of the post
yes
Comment API Reference
Create Comment
POST /api/v1/comments/:id
Parameter
Type
Description
Required
authentication
string
Your token
yes
id
string
ID of the post
yes
description
string
Description of the comment
yes
Example request body:
{
"description" : "value"
}
Get Single Comment
Parameter
Type
Description
Required
authentication
string
Your token
yes
id
string
ID of the comment
yes
Delete Comment
DELETE /api/v1/comments/:id
Parameter
Type
Description
Required
authentication
string
Your token
yes
id
string
ID of the comment
yes
Update Comment
Parameter
Type
Description
Required
authentication
string
Your token
yes
id
string
ID of the comment
yes
Example request body:
{
"description" : "value"
}
Parameter
Type
Description
Required
authentication
string
Your token
yes
title
string
title of the category
yes
Example request body:
GET /api/v1/categories/:id
Parameter
Type
Description
Required
authentication
string
Your token
yes
id
string
ID of the category
yes
Parameter
Type
Description
Required
authentication
string
Your token
yes
PUT /api/v1/categories/:id
Parameter
Type
Description
Required
authentication
string
Your token
yes
id
string
ID of the category
yes
title
string
Title of the category
yes
Example request body:
DELETE /api/v1/categories/:id
Parameter
Type
Description
Required
authentication
string
Your token
yes
id
string
ID of the category
yes