Skip to content

Latest commit

 

History

History
220 lines (173 loc) · 4.76 KB

README.md

File metadata and controls

220 lines (173 loc) · 4.76 KB

Path: /api/v1/user

  • URL: /register
  • Method: POST

Purpose:

Registers a new user in the system.

Request Body:

  • Data Type: UserDto
  • Fields:
    • firstname (string): The user's first name.
    • surname (string): The user's surname.
    • email (string): The user's email address.
    • mobile (string): The user's mobile number.
    • psw (string): The user's password.
    • role (string): The user's role (MENTOR, ENTREPRENEUR, or ADMIN).

Responses:

  • Success:
    • Status Code: 200 OK
    • Body: "You have successfully created your account"
  • Email Already Exists:
    • Status Code: 400 Bad Request
    • Body: "Already exists user with same email!"
  • Internal Server Error:
    • Status Code: 500 Internal Server Error
    • Body: "Failed to save user: {error message}"

Endpoint: /complete-profile

Method: POST

Description: This endpoint allows users to complete their profile information after registration.

Request Body:

The request body should be a JSON object representing a ProfileDetails object with the following properties:

* email (String): The user's email address.
* job (String): The user's job title (optional).
* locatedAt (String): The user's location (optional).
* userClaims (List<UserClaims>): A list containing user claims (at least one claim is required).

UserClaims Object:

The userClaims list contains objects with the following properties:

* role (String): The user's role (e.g., "MENTOR", "ENTREPRENEUR").
* topic (String): The user's topic of expertise (optional).

Response:

On success, the endpoint returns a 200 OK status code with a JSON response body containing a message: "Profile completed successfully".

On error, the endpoint returns an appropriate HTTP status code with a JSON response body containing an error message. Possible error responses include:

* 400 Bad Request:
    * Missing user in request body.
    * User not found by email.
    * Missing user claims in profile details.

* 500 Internal Server Error: Unexpected error during profile completion.

Example Request:

{
  "email": "[email protected]",
  "job": "Software Engineer",
  "locatedAt": "New York, NY",
  "userClaims": [
    {
      "role": "MENTOR",
      "topic": "Machine Learning"
    }
  ]
}

**Example Response (Success):**

```json
{
  "message": "Profile completed successfully"
}

**Example Response (Error - Missing User Claims):**

```json
{
  "error": "Missing user claims in profile details"
}



CHAT APP
## API Endpoints Documentation

### 1. Get Connected Users

**Endpoint**: `GET /users`

**Description**: Retrieves a list of currently connected users.

**Request**:
- No parameters or body required.

**Response**:
- **Status**: 200 OK
- **Body**: A JSON array of User objects.

**Response JSON Structure**:
```json
[
  {
    "userID": "string",
    "name": "string",
    "email": "string",
    "mobile": "string",
    "status": "ONLINE|OFFLINE"
  }
]

[
  {
    "userID": "1",
    "name": "John Doe",
    "email": "[email protected]",
    "mobile": "1234567890",
    "status": "ONLINE"
  },
  {
    "userID": "2",
    "name": "Jane Smith",
    "email": "[email protected]",
    "mobile": "0987654321",
    "status": "ONLINE"
  }
]
Endpoint: GET /message/{senderId}/{receiverId}

Description: Retrieves chat messages between the specified sender and receiver.

Request:

    Path Variables:
        senderId: The ID of the sender.
        receiverId: The ID of the receiver.

Response:

    Status: 200 OK
    Body: A JSON array of ChatMessage objects.
[
  {
    "id": "string",
    "senderId": "string",
    "receiverId": "string",
    "content": "string",
    "timestamp": "string"
  }
]
[
  {
    "id": "1",
    "senderId": "1",
    "receiverId": "2",
    "content": "Hello, how are you?",
    "timestamp": "2024-06-09T12:34:56Z"
  },
  {
    "id": "2",
    "senderId": "2",
    "receiverId": "1",
    "content": "I'm good, thanks! How about you?",
    "timestamp": "2024-06-09T12:35:10Z"
  }
]
Endpoint: POST /chat (via WebSocket)

Description: Processes and saves a chat message, then sends a notification to the receiver.

Request:

    Payload:
        ChatMessage object.
{
  "id": "string",
  "senderId": "string",
  "receiverId": "string",
  "content": "string",
  "timestamp": "string"
}
{
  "id": "3",
  "senderId": "1",
  "receiverId": "2",
  "content": "Are you available for a call?",
  "timestamp": "2024-06-09T12:36:00Z"
}
Response:

    No direct response as it's a WebSocket message, but a notification will be sent to the receiver.

Notification JSON Structure:
{
  "id": "string",
  "senderId": "string",
  "receiverId": "string",
  "content": "string"
}
{
  "id": "3",
  "senderId": "1",
  "receiverId": "2",
  "content": "Are you available for a call?"
}