Back to top

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 Users
GET/users

Devuelve a todos los usuarios en la base de datos.

Example URI

GET https://automated-resume-builder-back-end.onrender.com/users
Response  200
HideShow
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 Token
GET/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

GET https://automated-resume-builder-back-end.onrender.com/users/me
Request
HideShow
Headers
Content-Type: application/json
Authorization: Bearer YOUR_TOKEN_HERE
Response  200
HideShow
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
}
Response  401
HideShow
Headers
Content-Type: application/json
Body
{
  "message": "Acceso denegado. No se proporcionó token."
}
Response  404
HideShow
Headers
Content-Type: application/json
Body
{
  "message": "Usuario no encontrado."
}
Response  400
HideShow
Headers
Content-Type: application/json
Body
{
  "message": "Token inválido."
}

Verify Email
GET/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

GET https://automated-resume-builder-back-end.onrender.com/verificar-email?token=abc123def456
URI Parameters
HideShow
token
string (required) Example: abc123def456

Token de verificación del correo electrónico.

Request
HideShow
Headers
Content-Type: application/json
Response  302
HideShow
Headers
Location: http://localhost:3000/
Response  400
HideShow
Headers
Content-Type: application/json
Body
{
  "message": "Token de verificación requerido."
}
Response  404
HideShow
Headers
Content-Type: application/json
Body
{
  "message": "Token de verificación inválido o usuario no encontrado."
}

Sign Up User
POST/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

POST https://automated-resume-builder-back-end.onrender.com/users
Request
HideShow
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"
  ]
}
Response  200
HideShow
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."
    }
  }
}
Response  400
HideShow
Headers
Content-Type: application/json
Body
{
  "message": "Información faltante o inválida."
}

Log In User
POST/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

POST https://automated-resume-builder-back-end.onrender.com/users/login
Request
HideShow
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"
  ]
}
Response  200
HideShow
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."
    }
  }
}
Response  401
HideShow
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."
    }
  }
}
Response  401
HideShow
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 Token
GET/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

GET https://automated-resume-builder-back-end.onrender.com/users/me
Request
HideShow
Headers
Content-Type: application/json
Authorization: Bearer YOUR_TOKEN_HERE
Response  200
HideShow
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."
    }
  }
}
Response  401
HideShow
Headers
Content-Type: application/json
Body
{
  "message": "Acceso denegado. No se proporcionó token."
}
Response  404
HideShow
Headers
Content-Type: application/json
Body
{
  "message": "Usuario no encontrado."
}
Response  400
HideShow
Headers
Content-Type: application/json
Body
{
  "message": "Token inválido."
}

Download User Resume
GET/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

GET https://automated-resume-builder-back-end.onrender.com/users/1/dummyResumen/download
URI Parameters
HideShow
user_id
number (required) Example: 1

El ID del usuario cuyo nombre se incluirá en el PDF.

Response  200
HideShow
Headers
Content-Type: application/pdf
Content-Disposition: attachment; filename="download.pdf"
Content-Type: application/pdf
Body
[El contenido binario del PDF]
Response  404
HideShow
Headers
Content-Type: application/json
Body
{
  "message": "User not found"
}

Update User
PUT/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

PUT https://automated-resume-builder-back-end.onrender.com/users/1
URI Parameters
HideShow
user_id
number (required) Example: 1

El ID del usuario que se va a actualizar.

Request
HideShow
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."
    }
  }
}
Response  200
HideShow
Headers
Content-Type: application/json
Body
[El usuario actualizado]
Response  404
HideShow
Headers
Content-Type: application/json
Body
{
  "message": "User not found"
}

Delete User
DELETE/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

DELETE https://automated-resume-builder-back-end.onrender.com/users/1
URI Parameters
HideShow
user_id
number (required) Example: 1

El ID del usuario que se va a eliminar.

Response  204
Response  404
HideShow
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 Information
GET/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

GET https://automated-resume-builder-back-end.onrender.com/personal_information/1
URI Parameters
HideShow
personal_info_id
number (required) Example: 1

El ID de la información personal del usuario.

Response  200
HideShow
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."
    }
  }
}
Response  404
HideShow
Headers
Content-Type: application/json
Body
{
  "message": "Personal information not found"
}

Save Personal Information
POST/personal_information

Este endpoint permite crear o guardar la información personal de un usuario.

Example URI

POST https://automated-resume-builder-back-end.onrender.com/personal_information
Request
HideShow
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 Information
DELETE/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

DELETE https://automated-resume-builder-back-end.onrender.com/personal_information/1
URI Parameters
HideShow
personal_info_id
number (required) Example: 1

El ID de la información personal del usuario.

Response  200
HideShow
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."
    }
  }
}
Response  404
HideShow
Headers
Content-Type: application/json
Body
{
  "message": "Personal information not found"
}

Generated by aglio on 13 Apr 2024