API Reference
This application exposes several RESTful API endpoints to manage friends, and messages. All API routes are located in src/app/api/
.
Friend Management
Send a Friend Request
- Endpoint:
POST /api/friends/add
- Description: Sends a friend request to another user by their email address.
-
Request Body:
{ "email": "friend@example.com" }
-
Responses:
200 OK
: The friend request was successfully sent.400 Bad Request
: If the target user does not exist, you try to add yourself, or a request/friendship already exists.401 Unauthorized
: If the user is not authenticated.422 Unprocessable Entity
: If the request payload is invalid (e.g., not a valid email).
Accept a Friend Request
- Endpoint:
POST /api/friends/accept
- Description: Accepts a pending friend request from another user.
-
Request Body:
{ "id": "<sender_user_id>" }
-
Responses:
200 OK
: The friend request was accepted and both users are now friends.400 Bad Request
: If there is no pending friend request from the specified user or if you are already friends.401 Unauthorized
: If the user is not authenticated.
Deny a Friend Request
- Endpoint:
POST /api/friends/deny
- Description: Denies/rejects a pending friend request.
-
Request Body:
{ "id": "<sender_user_id>" }
-
Responses:
200 OK
: The friend request was successfully denied and removed.401 Unauthorized
: If the user is not authenticated.422 Unprocessable Entity
: If the request payload is invalid.
Messaging
Send a Message
- Endpoint:
POST /api/message/send
- Description: Sends a message to a friend within a specific chat.
-
Request Body:
{ "text": "Hello, world!", "chatId": "<user1_id>--<user2_id>" }
-
Responses:
200 OK
: The message was successfully sent and stored.401 Unauthorized
: If the sender is not part of the chat or not friends with the recipient.500 Internal Server Error
: If an unexpected error occurs.
Authentication
- Endpoint:
/api/auth/[...nextauth]
- Description: This is a catch-all route managed by NextAuth.js. It handles the entire OAuth flow, including:
- Redirecting to the Google sign-in page.
- Handling the OAuth callback.
- Creating and managing user sessions.
- Providing the sign-out endpoint.