Endpoint: /registration
Método: POST
Descripción: Crea una nueva cuenta de usuario.
{
"email": "ejemplo@gmail.com",
"password": "12345678"
}-
Email:
- Es un campo obligatorio.
- Debe ser un correo electrónico válido.
- No debe estar registrado previamente.
-
Contraseña:
- Es un campo obligatorio.
- Debe tener al menos 6 caracteres.
| Código | Descripción |
|---|---|
| 201 | Usuario creado exitosamente. |
| 400 | Error en los datos enviados (correo inválido, contraseña no válida, o correo ya registrado). |
| 500 | Error interno al crear el usuario. |
Endpoint: /login
Método: POST
Descripción: Permite a un usuario autenticarse en el sistema.
{
"email": "ejemplo@gmail.com",
"password": "12345678"
}-
Email:
- Es un campo obligatorio.
- Debe ser un correo electrónico válido registrado en el sistema.
-
Contraseña:
- Es un campo obligatorio.
- Debe coincidir con la contraseña registrada para el correo proporcionado.
| Código | Descripción |
|---|---|
| 201 | Inicio de sesión exitoso. Incluye un token JWT en la respuesta. |
| 400 | Error en los datos enviados (email faltante, credenciales incorrectas, o formato inválido). |
| 500 | Error interno al generar el token JWT. |
{
"user_id": "67832c3c0e086b9a18bb6adb",
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."
}Endpoint: /viewprofile
Método: GET
Descripción: Obtiene los datos de un usuario en base al id proporcionado como parámetro en la query string.
| Parámetro | Tipo | Requerido | Descripción |
|---|---|---|---|
id |
String | Sí | Identificador único del usuario |
| Código | Descripción |
|---|---|
| 201 | Perfil del usuario encontrado exitosamente. Devuelve el JSON con los datos del usuario. |
| 400 | No se proporcionó el parámetro id o el formato del mismo es inválido. |
| 400 | Ocurrió un error al buscar el perfil del usuario (por ejemplo, el usuario no existe en la base). |
GET /viewprofile?id=64b7b2f4c3e88b0f5a1d9e7a HTTP/1.1
Host: localhost:8080HTTP/1.1 201 Created
Content-Type: application/json
{
"id": "64b7b2f4c3e88b0f5a1d9e7a",
"name": "Juan",
"lastName": "Pérez",
"dateBirth": "1990-05-15T00:00:00Z",
"email": "juan.perez@example.com",
"avatar": "https://example.com/avatars/juan.png",
"banner": "https://example.com/banners/juan.png",
"bibliography": "Desarrollador de software con 10 años de experiencia.",
"ubication": "Buenos Aires, Argentina",
"webSite": "https://juanperez.dev"
}Endpoint: /modifyProfile
Método: PUT
Descripción: Permite modificar los datos del perfil de un usuario autenticado.
El cliente debe enviar un JSON con los datos que desea modificar. Solo los campos enviados serán actualizados.
{
"name": "string",
"lastName": "string",
"dateBirth": "string (formato ISO 8601)",
"email": "string",
"avatar": "string (URL de la imagen)",
"banner": "string (URL de la imagen)",
"bibliography": "string",
"ubication": "string",
"webSite": "string (URL del sitio web)"
}- El cuerpo de la solicitud debe estar en formato JSON.
- El usuario debe estar autenticado (requiere un token JWT válido).
- Los datos enviados deben cumplir con los formatos esperados.
| Código | Descripción |
|---|---|
| 201 | Perfil modificado exitosamente. |
| 400 | El cuerpo de la solicitud contiene datos inválidos o faltantes. |
| 400 | Ocurrió un error al intentar modificar el registro. |
| 400 | No se logró modificar el registro (por ejemplo, el usuario no existe o no se aplicaron cambios). |
PUT /modifyProfile HTTP/1.1
Host: localhost:8080
Content-Type: application/json
Authorization: Bearer <token-jwt>
{
"name": "Juan",
"lastName": "Pérez",
"email": "juan.perez@example.com",
"ubication": "Buenos Aires, Argentina"
}HTTP/1.1 201 CreatedEndpoint: /tweet
Método: POST
Descripción: Permite registrar un nuevo tweet para un usuario autenticado.
El cliente debe enviar un JSON con el contenido del tweet.
{
"message": "string"
}- El cuerpo de la solicitud debe estar en formato JSON.
- El campo
message:- Es obligatorio.
- Debe contener el texto del tweet.
- El usuario debe estar autenticado (requiere un token JWT válido).
| Código | Descripción |
|---|---|
| 201 | Tweet registrado exitosamente. |
| 400 | El cuerpo de la solicitud es inválido o contiene datos faltantes. |
| 400 | Ocurrió un error al intentar insertar el registro. |
| 400 | No se logró insertar el registro (por ejemplo, error en la base de datos o problemas internos). |
POST /rectweet HTTP/1.1
Host: localhost:8080
Content-Type: application/json
Authorization: Bearer <token-jwt>
{
"message": "Este es mi primer tweet!"
}HTTP/1.1 201 CreatedEndpoint: /readtweets
Método: GET
Descripción: Permite obtener una lista de tweets publicados por un usuario específico, paginados.
- Query Parameters:
id(obligatorio): Identificador único del usuario cuyos tweets se desean consultar.page(obligatorio): Número de página para la paginación (debe ser un número mayor a 0).
La respuesta será un arreglo de objetos JSON con el siguiente formato:
[
{
"_id": "string",
"userId": "string",
"message": "string",
"date": "string (ISO 8601)"
}
]Descripción de los campos:
_id: Identificador único del tweet.userId: Identificador único del usuario que publicó el tweet.message: Contenido del tweet.date: Fecha y hora en la que se publicó el tweet (en formato ISO 8601).
| Código | Descripción |
|---|---|
| 201 | Tweets obtenidos exitosamente. |
| 400 | Falta el parámetro id en la URL. |
| 400 | Falta el parámetro page en la URL o no es un número mayor a 0. |
| 400 | Error al leer los tweets (por ejemplo, problemas con la base de datos o el usuario no existe). |
GET /readtweets?id=64abcf12345d67890ef12345&page=1 HTTP/1.1
Host: localhost:8080
Authorization: Bearer <token-jwt>HTTP/1.1 201 Created
Content-Type: application/json
[
{
"_id": "64abcf12345d67890ef12345",
"userId": "64abcdef6789012345678901",
"message": "Este es mi primer tweet.",
"date": "2025-01-11T14:23:45Z"
},
{
"_id": "64abcf678901234567890123",
"userId": "64abcdef6789012345678901",
"message": "Este es otro tweet.",
"date": "2025-01-10T10:15:30Z"
}
]Endpoint: /deletetweet
Método: DELETE
Descripción: Elimina un tweet específico de la base de datos, asegurándose de que pertenezca al usuario que realiza la solicitud.
| Parámetro | Tipo | Ubicación | Descripción |
|---|---|---|---|
id |
string | Query | Identificador único del tweet a eliminar. |
userId |
string | Query | Identificador único del usuario que solicita la eliminación. |
id: Debe ser un identificador único válido en formato hexadecimal de 24 caracteres.userId: Debe coincidir con el creador del tweet que se desea eliminar.
DELETE /deletetweet?id=64abcf12345d67890ef12345&userId=64abcdef6789012345678901| Código | Descripción |
|---|---|
| 200 | El tweet fue eliminado exitosamente. |
| 400 | Error en los parámetros enviados o el tweet no existe. |
| 500 | Error interno del servidor al intentar realizar la operación de eliminación. |
Endpoint: /uploadavatar
Método: POST
Descripción: Permite a un usuario subir una imagen de perfil (avatar) al servidor. El archivo se almacena en el sistema de archivos y la referencia se guarda en la base de datos.
| Parámetro | Tipo | Ubicación | Descripción |
|---|---|---|---|
avatar |
file | FormData | Archivo de imagen que será subido. |
IDUser |
string | Contexto | Identificador único del usuario autenticado. |
avatar:- Debe ser un archivo válido de imagen con una extensión reconocida (e.g.,
.jpg,.png).
- Debe ser un archivo válido de imagen con una extensión reconocida (e.g.,
IDUser:- Proporcionado a través del contexto de la solicitud, representa el usuario autenticado.
POST /uploadavatar
Content-Type: multipart/form-data
FormData:
avatar: [archivo de imagen]| Código | Descripción |
|---|---|
| 201 | El avatar fue subido y registrado exitosamente. |
| 400 | Error al subir, copiar o registrar el avatar. |
POST /uploadavatar
Content-Type: multipart/form-data
FormData:
avatar: avatar.pngRespuesta:
{
"message": "Avatar subido exitosamente."
}Endpoint: /uploadbanner
Método: POST
Descripción: Permite a un usuario subir una imagen de banner al servidor. El archivo se almacena en el sistema de archivos y la referencia se guarda en la base de datos.
| Parámetro | Tipo | Ubicación | Descripción |
|---|---|---|---|
banner |
file | FormData | Archivo de imagen que será subido. |
IDUser |
string | Contexto | Identificador único del usuario autenticado. |
banner:- Debe ser un archivo válido de imagen con una extensión reconocida (e.g.,
.jpg,.png).
- Debe ser un archivo válido de imagen con una extensión reconocida (e.g.,
IDUser:- Proporcionado a través del contexto de la solicitud, representa el usuario autenticado.
POST /uploadbanner
Content-Type: multipart/form-data
FormData:
banner: [archivo de imagen]| Código | Descripción |
|---|---|
| 201 | El banner fue subido y registrado exitosamente. |
| 400 | Error al subir, copiar o registrar el banner. |
POST /uploadbanner
Content-Type: multipart/form-data
FormData:
banner: banner.jpgRespuesta:
{
"message": "Banner subido exitosamente."
}Endpoint: /getavatar
Método: GET
Descripción: Permite obtener el archivo de avatar asociado a un usuario específico.
| Parámetro | Tipo | Ubicación | Descripción |
|---|---|---|---|
id |
string | Query | Identificador único del usuario. |
id:- Obligatorio. Identificador del usuario para buscar el avatar correspondiente.
- Debe ser válido y estar registrado en la base de datos.
GET /getavatar?id=63bfc58e3e8b2a5d6c8a1234| Código | Descripción |
|---|---|
| 200 | Devuelve el archivo del avatar solicitado. |
| 400 | Error en la solicitud (parámetros inválidos, archivo no encontrado, etc.). |
GET /getavatar?id=63bfc58e3e8b2a5d6c8a1234Respuesta:
- Devuelve el archivo de imagen del avatar.
Endpoint: /getbanner
Método: GET
Descripción: Permite obtener el archivo de banner asociado a un usuario específico.
| Parámetro | Tipo | Ubicación | Descripción |
|---|---|---|---|
id |
string | Query | Identificador único del usuario. |
id:- Obligatorio. Identificador del usuario para buscar el banner correspondiente.
- Debe ser válido y estar registrado en la base de datos.
GET /getbanner?id=63bfc58e3e8b2a5d6c8a1234| Código | Descripción |
|---|---|
| 200 | Devuelve el archivo del banner solicitado. |
| 400 | Error en la solicitud (parámetros inválidos, archivo no encontrado, etc.). |
GET /getbanner?id=63bfc58e3e8b2a5d6c8a1234Respuesta:
- Devuelve el archivo de imagen del banner.
Endpoint: /highrelation
Método: POST
Descripción: Permite crear una relación entre el usuario autenticado y otro usuario especificado por su ID.
| Parámetro | Tipo | Ubicación | Descripción |
|---|---|---|---|
id |
string | Query | Identificador único del usuario con el que se desea crear la relación. |
id:- Obligatorio. Representa el identificador del usuario con el que se establecerá la relación.
- Debe ser un identificador válido registrado en la base de datos.
POST /highrelation?id=63bfc58e3e8b2a5d6c8a1234| Código | Descripción |
|---|---|
| 201 | Relación creada exitosamente. |
| 400 | Error en la solicitud (parámetros inválidos, error en la base de datos, etc.). |
POST /highrelation?id=63bfc58e3e8b2a5d6c8a1234Respuesta:
HTTP/1.1 201 CreatedEndpoint: /downrelation
Método: DELETE
Descripción: Permite eliminar una relación existente entre el usuario autenticado y otro usuario especificado por su ID.
| Parámetro | Tipo | Ubicación | Descripción |
|---|---|---|---|
id |
string | Query | Identificador único del usuario con el que se desea eliminar la relación. |
id:- Obligatorio. Representa el identificador del usuario con el que se eliminará la relación.
- Debe ser un identificador válido registrado en la base de datos.
DELETE /downrelation?id=63bfc58e3e8b2a5d6c8a1234| Código | Descripción |
|---|---|
| 201 | Relación eliminada exitosamente. |
| 400 | Error en la solicitud (parámetros inválidos, error en la base de datos, etc.). |
DELETE /downrelation?id=63bfc58e3e8b2a5d6c8a1234Respuesta:
HTTP/1.1 201 CreatedEndpoint: /consultrelation
Método: GET
Descripción: Permite verificar si existe una relación entre el usuario autenticado y otro usuario especificado por su ID.
| Parámetro | Tipo | Ubicación | Descripción |
|---|---|---|---|
id |
string | Query | Identificador único del usuario a consultar. |
id:- Obligatorio. Representa el identificador del usuario con el que se desea consultar la relación.
- Debe ser un identificador válido registrado en la base de datos.
GET /consultrelation?id=63bfc58e3e8b2a5d6c8a1234| Código | Descripción |
|---|---|
| 201 | Consulta realizada exitosamente. |
| 400 | Error en la solicitud (parámetros inválidos, error en la base de datos, etc.). |
| Campo | Tipo | Descripción |
|---|---|---|
status |
boolean | Indica si existe (true) o no (false) la relación. |
{
"status": true
}{
"status": false
}GET /consultrelation?id=63bfc58e3e8b2a5d6c8a1234Respuesta:
{
"status": true
}Endpoint: /listUsers
Método: GET
Descripción: Permite obtener una lista de usuarios registrados en la plataforma con la posibilidad de filtrar por tipo de relación y realizar búsquedas.
| Parámetro | Tipo | Ubicación | Descripción |
|---|---|---|---|
type |
string | Query | Tipo de relación a filtrar (followers, following, etc.). Opcional. |
page |
integer | Query | Número de página para paginación. Obligatorio y debe ser mayor a 0. |
search |
string | Query | Término de búsqueda para filtrar usuarios por nombre o descripción. Opcional. |
page:- Obligatorio. Representa el número de página para la paginación.
- Debe ser un entero positivo mayor a 0.
type:- Opcional. Especifica el tipo de relación que se desea filtrar.
- Valores posibles:
follow,new.
search:- Opcional. Permite buscar usuarios por términos específicos.
GET /listUsers?page=1&type=new&search=johnGET /listUsers?page=1&type=follow&search=john| Código | Descripción |
|---|---|
| 201 | Lista de usuarios obtenida exitosamente. |
| 400 | Error en la solicitud (parámetros inválidos, error en la base de datos, etc.). |
La respuesta es una lista de usuarios con el siguiente formato:
| Campo | Tipo | Descripción |
|---|---|---|
id |
string | Identificador único del usuario. |
name |
string | Nombre del usuario. |
email |
string | Correo electrónico del usuario. |
avatar |
string | URL del avatar del usuario. |
banner |
string | URL del banner del usuario. |
bio |
string | Biografía del usuario. |
[
{
"id": "63bfc58e3e8b2a5d6c8a1234",
"name": "John Doe",
"email": "johndoe@example.com",
"avatar": "/uploads/avatars/63bfc58e3e8b2a5d6c8a1234.jpg",
"banner": "/uploads/banners/63bfc58e3e8b2a5d6c8a1234.jpg",
"bio": "Desarrollador apasionado por la tecnología."
},
{
"id": "63bfc58e3e8b2a5d6c8a5678",
"name": "Jane Smith",
"email": "janesmith@example.com",
"avatar": "/uploads/avatars/63bfc58e3e8b2a5d6c8a5678.jpg",
"banner": "/uploads/banners/63bfc58e3e8b2a5d6c8a5678.jpg",
"bio": "Diseñadora gráfica y amante del arte digital."
}
]GET /listUsers?page=1&type=followers&search=johnRespuesta:
[
{
"id": "63bfc58e3e8b2a5d6c8a1234",
"name": "John Doe",
"email": "johndoe@example.com",
"avatar": "/uploads/avatars/63bfc58e3e8b2a5d6c8a1234.jpg",
"banner": "/uploads/banners/63bfc58e3e8b2a5d6c8a1234.jpg",
"bio": "Desarrollador apasionado por la tecnología."
}
]Endpoint: /readTweetsFollowers
Método: GET
Descripción: Obtiene una lista de tweets de los usuarios que el usuario autenticado sigue, con soporte para paginación.
| Parámetro | Tipo | Ubicación | Descripción |
|---|---|---|---|
page |
integer | Query | Número de página para la paginación. Obligatorio y debe ser mayor a 0. |
page:- Obligatorio.
- Debe ser un entero positivo mayor a 0.
- Representa el número de página de los tweets solicitados.
GET /readTweetsFollowers?page=1| Código | Descripción |
|---|---|
| 201 | Lista de tweets obtenida exitosamente. |
| 400 | Error en la solicitud (parámetros inválidos, error en la base de datos, etc.). |
La respuesta es una lista de tweets con el siguiente formato:
| Campo | Tipo | Descripción |
|---|---|---|
id |
string | Identificador único del tweet. |
user_id |
string | ID del usuario que publicó el tweet. |
name |
string | Nombre del usuario. |
content |
string | Contenido del tweet. |
timestamp |
string | Fecha y hora de publicación. |
[
{
"_id": "605c72ef1532075f8838d8d4",
"userId": "63bfc58e3e8b2a5d6c8a1234",
"userRelationId": "63bfc58e3e8b2a5d6c8a5678",
"Tweet": {
"_id": "605c72ef1532075f8838d8d5",
"message": "Este es un tweet de prueba.",
"date": "2025-01-23T12:34:56Z"
}
},
{
"_id": "605c72ef1532075f8838d8d6",
"userId": "63bfc58e3e8b2a5d6c8a1234",
"userRelationId": "63bfc58e3e8b2a5d6c8a5678",
"Tweet": {
"_id": "605c72ef1532075f8838d8d7",
"message": "Otro tweet de ejemplo.",
"date": "2025-01-22T10:20:30Z"
}
}
]