Endpoint: /registration
Método: POST
Descripción: Crea una nueva cuenta de usuario.
{
"email": "[email protected]",
"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": "[email protected]",
"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:8080
HTTP/1.1 201 Created
Content-Type: application/json
{
"id": "64b7b2f4c3e88b0f5a1d9e7a",
"name": "Juan",
"lastName": "Pérez",
"dateBirth": "1990-05-15T00:00:00Z",
"email": "[email protected]",
"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": "[email protected]",
"ubication": "Buenos Aires, Argentina"
}
HTTP/1.1 201 Created
Endpoint: /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 Created
Endpoint: /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.png
Respuesta:
{
"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.jpg
Respuesta:
{
"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=63bfc58e3e8b2a5d6c8a1234
Respuesta:
- 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=63bfc58e3e8b2a5d6c8a1234
Respuesta:
- 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=63bfc58e3e8b2a5d6c8a1234
Respuesta:
HTTP/1.1 201 Created
Endpoint: /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=63bfc58e3e8b2a5d6c8a1234
Respuesta:
HTTP/1.1 201 Created
Endpoint: /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=63bfc58e3e8b2a5d6c8a1234
Respuesta:
{
"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=john
GET /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": "[email protected]",
"avatar": "/uploads/avatars/63bfc58e3e8b2a5d6c8a1234.jpg",
"banner": "/uploads/banners/63bfc58e3e8b2a5d6c8a1234.jpg",
"bio": "Desarrollador apasionado por la tecnología."
},
{
"id": "63bfc58e3e8b2a5d6c8a5678",
"name": "Jane Smith",
"email": "[email protected]",
"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=john
Respuesta:
[
{
"id": "63bfc58e3e8b2a5d6c8a1234",
"name": "John Doe",
"email": "[email protected]",
"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"
}
}
]