semester-project-automated-resume-builder-API
Esta es un API dirigido al desarrollo de una pagina web para generar automaticamente resumes para los usuarios. El codigo fuente de esta api junto al front end lo pueden encontrar en https://github.com/uprm-inso4115-2023-2024-s2/semester-project-automated-resume-builder
Users ¶
Recursos relacionados con los usuarios en el sistema.
Users Collection ¶
List All UsersGET/users
Devuelve a todos los usuarios en la base de datos.
Example URI
200
Headers
Content-Type: application/json
Body
[
{
"user_id": 1,
"name": "Jane Doe",
"email": "jane.doe@example.com",
"phone_number": "123-456-7890",
"middle_initial": "",
"frst_lst_name": "Doe",
"scnd_lst_name": "",
"summary": "An experienced software developer...",
"profile": "URL to profile picture"
},
{
"user_id": 2,
"name": "John Doe",
"email": "john.doe@example.com",
"phone_number": "098-765-4321",
"middle_initial": "A",
"frst_lst_name": "Doe",
"scnd_lst_name": "Smith",
"summary": "A beginner in the programming world...",
"profile": "URL to profile picture"
}
]
User Details By TokenGET/users/me
Esta ruta permite a los usuarios obtener sus propios detalles enviando un token de autenticación en los headers de la solicitud. Es útil para verificar la información del perfil del usuario basada en la sesión actual.
Example URI
Headers
Content-Type: application/json
Authorization: Bearer YOUR_TOKEN_HERE
200
Headers
Content-Type: application/json
Body
{
"user_id": 1,
"name": "Jane Doe",
"email": "jane.doe@example.com",
"phone_number": "123-456-7890",
"middle_initial": "",
"frst_lst_name": "Doe",
"scnd_lst_name": "",
"summary": "An experienced software developer...",
"profile": "URL to profile picture",
"email_verified": true
}
401
Headers
Content-Type: application/json
Body
{
"message": "Acceso denegado. No se proporcionó token."
}
404
Headers
Content-Type: application/json
Body
{
"message": "Usuario no encontrado."
}
400
Headers
Content-Type: application/json
Body
{
"message": "Token inválido."
}
Verify EmailGET/verificar-email{?token}
Este endpoint permite a los usuarios verificar su correo electrónico. Espera recibir un token de verificación en la query string del URL. Si la verificación es exitosa, redirecciona al usuario a la página de inicio y actualiza en la base de datos como que el usuario ya esta verificado permitiendole hacer log in en su nueva cuenta.
Example URI
- token
string
(required) Example: abc123def456Token de verificación del correo electrónico.
Headers
Content-Type: application/json
302
Headers
Location: http://localhost:3000/
400
Headers
Content-Type: application/json
Body
{
"message": "Token de verificación requerido."
}
404
Headers
Content-Type: application/json
Body
{
"message": "Token de verificación inválido o usuario no encontrado."
}
Sign Up UserPOST/users
Este endpoint permite a nuevos usuarios registrarse en el sistema. Los usuarios deben proporcionar su correo electrónico, contraseña, nombre, apellido y número de teléfono. Después del registro exitoso, se envía un correo electrónico de verificación al usuario. Este email contiene una url que al visitarla se ejecuta la ruta de Verify Email que se puede encontrar en esta documentacion.
Example URI
Headers
Content-Type: application/json
Body
{
"email": "jane.doe@example.com",
"password": "examplePassword123",
"name": "Jane",
"frst_lst_name": "Doe",
"phone_number": "123-456-7890"
}
Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"email": {
"type": "string",
"description": "Correo electrónico del usuario."
},
"password": {
"type": "string",
"description": "Contraseña del usuario."
},
"name": {
"type": "string",
"description": "Nombre del usuario."
},
"frst_lst_name": {
"type": "string",
"description": "Primer apellido del usuario."
},
"phone_number": {
"type": "string",
"description": "Número de teléfono del usuario."
}
},
"required": [
"email",
"password",
"name",
"frst_lst_name",
"phone_number"
]
}
200
Headers
Content-Type: application/json
Body
{
"user": {
"email": "jane.doe@example.com",
"name": "Jane",
"frst_lst_name": "Doe",
"phone_number": "123-456-7890",
"email_verified": false
},
"token": "abc123"
}
Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"user": {
"type": "object",
"properties": {
"email": {
"type": "string",
"description": "Correo electrónico del usuario."
},
"name": {
"type": "string",
"description": "Nombre del usuario."
},
"frst_lst_name": {
"type": "string",
"description": "Primer apellido del usuario."
},
"phone_number": {
"type": "string",
"description": "Número de teléfono del usuario."
},
"email_verified": {
"type": "boolean",
"description": "Estado de la verificación del correo electrónico."
}
}
},
"token": {
"type": "string",
"description": "Token de autenticación del usuario."
}
}
}
400
Headers
Content-Type: application/json
Body
{
"message": "Información faltante o inválida."
}
Log In UserPOST/users/login
Este endpoint permite a los usuarios existentes iniciar sesión en el sistema. Los usuarios deben proporcionar su correo electrónico y contraseña. Después de un inicio de sesión exitoso, se devuelve un token de autenticación.
Example URI
Headers
Content-Type: application/json
Body
{
"email": "jane.doe@example.com",
"password": "examplePassword123"
}
Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"email": {
"type": "string",
"description": "Correo electrónico del usuario."
},
"password": {
"type": "string",
"description": "Contraseña del usuario."
}
},
"required": [
"email",
"password"
]
}
200
Headers
Content-Type: application/json
Body
{
"user": {
"user_id": 1,
"email": "jane.doe@example.com",
"name": "Jane",
"frst_lst_name": "Doe",
"phone_number": "123-456-7890",
"email_verified": true
},
"token": "abc123def456"
}
Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"user": {
"type": "object",
"properties": {
"user_id": {
"type": "number",
"description": "El ID del usuario."
},
"email": {
"type": "string",
"description": "El correo electrónico del usuario."
},
"name": {
"type": "string",
"description": "El nombre del usuario."
},
"frst_lst_name": {
"type": "string",
"description": "El apellido del usuario."
},
"phone_number": {
"type": "string",
"description": "El número de teléfono del usuario."
},
"email_verified": {
"type": "boolean",
"description": "Indica si el correo electrónico ha sido verificado."
}
}
},
"token": {
"type": "string",
"description": "El token de autenticación del usuario."
}
}
}
401
Headers
Content-Type: application/json
Body
{
"message": "Invalid Credentials"
}
Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"message": {
"type": "string",
"description": "Mensaje indicando que las credenciales son inválidas."
}
}
}
401
Headers
Content-Type: application/json
Body
{
"message": "Unverified email"
}
Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"message": {
"type": "string",
"description": "Mensaje indicando que el correo electrónico no ha sido verificado."
}
}
}
User Details By TokenGET/users/me
Este endpoint permite obtener los detalles del usuario que esta ingresado en una sesion en la pagina al haber hecho login utilizando un token de autenticación. Es útil para recuperar información del perfil del usuario cada vez que esta se pierde al hacer refresh de la pagina.
Example URI
Headers
Content-Type: application/json
Authorization: Bearer YOUR_TOKEN_HERE
200
Headers
Content-Type: application/json
Body
{
"user_id": 1,
"name": "Jane Doe",
"middle_initial": "A",
"frst_lst_name": "Doe",
"scnd_lst_name": "Smith",
"phone_number": "1234567890",
"profile": "URL_to_profile_picture",
"email": "jane.doe@example.com"
}
Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"user_id": {
"type": "number",
"description": "El ID del usuario."
},
"name": {
"type": "string",
"description": "El nombre completo del usuario."
},
"middle_initial": {
"type": "string",
"description": "La inicial del segundo nombre del usuario."
},
"frst_lst_name": {
"type": "string",
"description": "El primer apellido del usuario."
},
"scnd_lst_name": {
"type": "string",
"description": "El segundo apellido del usuario."
},
"phone_number": {
"type": "string",
"description": "El número de teléfono del usuario."
},
"profile": {
"type": "string",
"description": "La URL de la imagen de perfil del usuario."
},
"email": {
"type": "string",
"description": "El correo electrónico del usuario."
}
}
}
401
Headers
Content-Type: application/json
Body
{
"message": "Acceso denegado. No se proporcionó token."
}
404
Headers
Content-Type: application/json
Body
{
"message": "Usuario no encontrado."
}
400
Headers
Content-Type: application/json
Body
{
"message": "Token inválido."
}
Download User ResumeGET/users/{user_id}/dummyResumen/download
Este endpoint genera un documento PDF temporal que contiene el nombre del usuario seleccionado y lo envía al cliente para su descarga. Este endpoint está pensado para ser utilizado como base para una funcionalidad más completa de descarga de currículums.
Example URI
- user_id
number
(required) Example: 1El ID del usuario cuyo nombre se incluirá en el PDF.
200
Headers
Content-Type: application/pdf
Content-Disposition: attachment; filename="download.pdf"
Content-Type: application/pdf
Body
[El contenido binario del PDF]
404
Headers
Content-Type: application/json
Body
{
"message": "User not found"
}
Update UserPUT/users/{user_id}
Este endpoint permite actualizar los detalles de un usuario existente. Se deben proporcionar los campos que se desean actualizar en el cuerpo de la solicitud.
Example URI
- user_id
number
(required) Example: 1El ID del usuario que se va a actualizar.
Headers
Content-Type: application/json
Body
{
"email": "jane.update@example.com",
"name": "Jane Updated",
"middle_initial": "B",
"frst_lst_name": "Updated",
"scnd_lst_name": "Doe",
"phone_number": "987-654-3210",
"summary": "Updated summary about Jane.",
"profile": "URL_to_updated_profile_picture"
}
Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"email": {
"type": "string",
"description": "Nuevo correo electrónico del usuario."
},
"name": {
"type": "string",
"description": "Nuevo nombre del usuario."
},
"middle_initial": {
"type": "string",
"description": "Nueva inicial del segundo nombre del usuario."
},
"frst_lst_name": {
"type": "string",
"description": "Nuevo primer apellido del usuario."
},
"scnd_lst_name": {
"type": "string",
"description": "Nuevo segundo apellido del usuario."
},
"phone_number": {
"type": "string",
"description": "Nuevo número de teléfono del usuario."
},
"summary": {
"type": "string",
"description": "Nuevo resumen del perfil del usuario."
},
"profile": {
"type": "string",
"description": "Nueva URL de la imagen de perfil del usuario."
}
}
}
200
Headers
Content-Type: application/json
Body
[El usuario actualizado]
404
Headers
Content-Type: application/json
Body
{
"message": "User not found"
}
Delete UserDELETE/users/{user_id}
Este endpoint permite eliminar un usuario existente del sistema. El usuario a eliminar se especifica a través del user_id
en la URL.
Example URI
- user_id
number
(required) Example: 1El ID del usuario que se va a eliminar.
204
404
Headers
Content-Type: application/json
Body
{
"message": "User not found"
}
Personal Info ¶
Recursos relacionados con la información personal de los usuarios.
Personal Information Collection ¶
Get Personal InformationGET/personal_information/{personal_info_id}
Este endpoint permite obtener la información personal de un usuario específico mediante su personal_info_id
.
Example URI
- personal_info_id
number
(required) Example: 1El ID de la información personal del usuario.
200
Headers
Content-Type: application/json
Body
{
"personal_info_id": 5,
"user_id": 72,
"first_name": "string",
"middle_initial": "string",
"last_name": "string",
"email": "string",
"phone_number": "string",
"address": "string",
"socials": "string",
"summary": "string"
}
Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"personal_info_id": {
"type": "number",
"description": "El ID de la información personal."
},
"user_id": {
"type": "number",
"description": "El ID del usuario asociado."
},
"first_name": {
"type": "string",
"description": "El primer nombre del usuario."
},
"middle_initial": {
"type": "string",
"description": "La inicial del segundo nombre del usuario, si aplica."
},
"last_name": {
"type": "string",
"description": "El apellido del usuario."
},
"email": {
"type": "string",
"description": "El correo electrónico del usuario."
},
"phone_number": {
"type": "string",
"description": "El número de teléfono del usuario."
},
"address": {
"type": "string",
"description": "La dirección del usuario."
},
"socials": {
"type": "string",
"description": "Representación en cadena de las redes sociales del usuario."
},
"summary": {
"type": "string",
"description": "Un breve resumen sobre el usuario."
}
}
}
404
Headers
Content-Type: application/json
Body
{
"message": "Personal information not found"
}
Save Personal InformationPOST/personal_information
Este endpoint permite crear o guardar la información personal de un usuario.
Example URI
Headers
Content-Type: application/json
Body
{
"user_id": 1,
"first_name": "Jane",
"middle_initial": "A",
"last_name": "Doe",
"email": "jane.doe@example.com",
"phone_number": "123-456-7890",
"address": "123 Example St",
"socials": "\"numero de seguro social\"",
"summary": "A brief summary about Jane."
}
Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"user_id": {
"type": "number",
"description": "El ID del usuario."
},
"first_name": {
"type": "string",
"description": "El primer nombre del usuario."
},
"middle_initial": {
"type": "string",
"description": "La inicial del segundo nombre del usuario."
},
"last_name": {
"type": "string",
"description": "El apellido del usuario."
},
"email": {
"type": "string",
"description": "El correo electrónico del usuario."
},
"phone_number": {
"type": "string",
"description": "El número de teléfono del usuario."
},
"address": {
"type": "string",
"description": "La dirección del usuario."
},
"socials": {
"type": "string",
"description": "Numero de seguro social del usuario."
},
"summary": {
"type": "string",
"description": "Un breve resumen sobre el usuario."
}
},
"required": [
"user_id",
"first_name",
"last_name",
"email",
"phone_number",
"address",
"socials",
"summary"
]
}
Delete Personal InformationDELETE/personal_information/{personal_info_id}
Este endpoint permite eliminar la información personal de un usuario específico mediante su personal_info_id
. Retorna la información eliminada para confirmación.
Example URI
- personal_info_id
number
(required) Example: 1El ID de la información personal del usuario.
200
Headers
Content-Type: application/json
Body
{
"personal_info_id": 1,
"user_id": 72,
"first_name": "string",
"middle_initial": "string",
"last_name": "string",
"email": "string",
"phone_number": "string",
"address": "string",
"socials": "string",
"summary": "string"
}
Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"personal_info_id": {
"type": "number",
"description": "El ID de la información personal eliminada."
},
"user_id": {
"type": "number",
"description": "El ID del usuario asociado a la información eliminada."
},
"first_name": {
"type": "string",
"description": "El primer nombre asociado a la información eliminada."
},
"middle_initial": {
"type": "string",
"description": "La inicial del segundo nombre asociado a la información eliminada."
},
"last_name": {
"type": "string",
"description": "El apellido asociado a la información eliminada."
},
"email": {
"type": "string",
"description": "El correo electrónico asociado a la información eliminada."
},
"phone_number": {
"type": "string",
"description": "El número de teléfono asociado a la información eliminada."
},
"address": {
"type": "string",
"description": "La dirección asociada a la información eliminada."
},
"socials": {
"type": "string",
"description": "Las redes sociales asociadas a la información eliminada."
},
"summary": {
"type": "string",
"description": "Un resumen asociado a la información eliminada."
}
}
}
404
Headers
Content-Type: application/json
Body
{
"message": "Personal information not found"
}