Skip to content

Detailed API Documentation

Subhrodip Mohanta edited this page Apr 3, 2026 · 8 revisions

Authentication API

POST /authenticate

Request

{
  "username": "username",
  "password": "Password"
}

Response

{
  "jwt": "JSON.Web.Token"
}

Authenticate the User and provide them with a JWT token as a response.


User Related APIs

GET /users/@{username}

Headers

Authorization: Bearer <token> (Optional for public view)

Response

{
  "id": "30761418-70e6-46dc-8af5-17670e78f293",
  "username": "first",
  "name": "Nice Name",
  "avatar": "URL://updated-picture.png",
  "bio": "Updated Bio",
  "followerCount": 0,
  "followingCount": 0,
  "verified": false
}

Get details of a given user by username.

GET /users/{userid}

Headers

Authorization: Bearer <token> (Optional for public view)

Response

{
  "id": "30761418-70e6-46dc-8af5-17670e78f293",
  "username": "first",
  "name": "Nice Name",
  "avatar": "URL://updated-picture.png",
  "bio": "Updated Bio",
  "followerCount": 0,
  "followingCount": 0,
  "verified": false
}

Get details of a given user by userid.

POST /users

Request

{
  "username": "first",
  "name": "Nice Name",
  "bio": "Bio of 240 characters",
  "avatar": "URL://picture.png"
}

Response

{
  "id": "30761418-70e6-46dc-8af5-17670e78f293",
  "username": "first",
  "name": "Nice Name",
  "avatar": "URL://picture.png",
  "bio": "Bio of 240 characters",
  "followerCount": 0,
  "followingCount": 0,
  "verified": false
}

Create a new user.

PATCH /users 🔒

Headers

Authorization: Bearer <token>

Request

{
  "name": "Nice Name",
  "avatar": "URL://updated-picture.png",
  "bio": "Updated Bio"
}

Response

{
  "id": "30761418-70e6-46dc-8af5-17670e78f293",
  "username": "first",
  "name": "Nice Name",
  "avatar": "URL://updated-picture.png",
  "bio": "Updated Bio",
  "followerCount": 0,
  "followingCount": 0,
  "verified": false
}

Update bio/name/image of the authenticated user.

PUT /users/{userid}/follow 🔒

Headers

Authorization: Bearer <token>

Response

201 Created Follow the given user.

DELETE /users/{userid}/follow 🔒

Headers

Authorization: Bearer <token>

Response

201 Created (Success) Un-follow the given user.

GET /users/{userid}/followers 📃

Headers

Authorization: Bearer <token>

Query Parameters

  • page (int): Page number.
  • size (int): Items per page.

Response

Spring Data Page<User> object. Get a paginated list of all followers of this user.


Post Related APIs

GET /posts 📃

Query Parameters

  • page (int): Page number.
  • size (int): Items per page.

Response

Spring Data Page<Post> object. Get the paginated list of all posts.

GET /posts/{postid}

Response

Post object. Get details of a post.

POST /posts 🔒

Headers

Authorization: Bearer <token>

Request

{
  "text": "Hello world!",
  "hashtags": ["news", "tech"]
}

Response

Post object. Create a new post for the authenticated user.

DELETE /posts/{postid} 🔒

Headers

Authorization: Bearer <token>

Response

200 OK Delete a given post.

PUT /posts/{postid}/like 🔒

Headers

Authorization: Bearer <token>

Response

201 Created (Returns new like count) Like the given post.


Hashtag Related APIs

GET /hashtags 📃

Query Parameters

  • page (int): Page number.
  • size (int): Items per page.

Response

Spring Data Page<Hashtag> object. Get paginated list of top hashtags.

GET /hashtags/{tag}/posts 📃

Query Parameters

  • page (int): Page number.
  • size (int): Items per page.

Response

Spring Data Page<Post> object. All posts of the given hashtag.

Clone this wiki locally