Skip to content

API de Usuarios

Endpoints para gestión de usuarios. Solo accesible por ADMIN.

Listar usuarios

http
GET /api/v1/user
Authorization: Bearer <token>

Roles: ADMIN

Response (200)

json
[
  {
    "id": 1,
    "email": "ada.lovelace@bizflowerp.com",
    "name": "Ada",
    "surname": "Lovelace",
    "roleIds": [1],
    "roleDtos": [
      {
        "id": 1,
        "name": "ROLE_ADMIN"
      }
    ],
    "employeeId": 1,
    "employeeName": "Ada Lovelace",
    "employeePosition": "Senior Developer"
  }
]

Obtener usuario

http
GET /api/v1/user/{id}
Authorization: Bearer <token>

Roles: ADMIN, USER

Crear usuario

http
POST /api/v1/user/
Authorization: Bearer <token>
Content-Type: application/json

{
  "email": "nuevo.usuario@bizflowerp.com",
  "name": "Nuevo",
  "surname": "Usuario",
  "password": "password123",
  "roleIds": [2],
  "employeeId": null
}

Roles: ADMIN

Response (201)

json
{
  "id": 10,
  "email": "nuevo.usuario@bizflowerp.com",
  "name": "Nuevo",
  "surname": "Usuario",
  "roleIds": [2],
  "roleDtos": [
    {
      "id": 2,
      "name": "ROLE_USER"
    }
  ],
  "employeeId": null,
  "employeeName": null,
  "employeePosition": null
}

Validaciones

CampoRegla
emailRequerido, único, formato válido
nameRequerido
surnameRequerido
passwordOpcional (campo write-only)
roleIdsLista de IDs de roles (ej: [1, 2, 3])

Actualizar usuario

http
PUT /api/v1/user/{id}
Authorization: Bearer <token>
Content-Type: application/json

{
  "email": "usuario.actualizado@bizflowerp.com",
  "name": "Usuario",
  "surname": "Actualizado",
  "roleIds": [3],
  "employeeId": 5
}

Roles: ADMIN

Contraseña opcional

La contraseña es opcional en la actualización. Si se envía, se actualizará. El campo password es write-only y no se devuelve en las respuestas.

Eliminar usuario

http
DELETE /api/v1/user/{id}
Authorization: Bearer <token>

Roles: ADMIN

Restricción

No se puede eliminar el usuario actualmente autenticado.

Obtener perfil del usuario autenticado

http
GET /api/v1/user/profile
Authorization: Bearer <token>

Roles: Cualquier usuario autenticado

Response (200)

json
{
  "id": 5,
  "email": "usuario@bizflowerp.com",
  "name": "Juan",
  "surname": "Pérez",
  "roleIds": [2],
  "roleDtos": [
    {
      "id": 2,
      "name": "ROLE_USER"
    }
  ],
  "employeeId": 3,
  "employeeName": "Juan Pérez",
  "employeePosition": "Developer"
}

Actualizar perfil del usuario autenticado

http
PUT /api/v1/user/profile
Authorization: Bearer <token>
Content-Type: application/json

{
  "email": "nuevo.email@bizflowerp.com",
  "password": "nuevoPassword123"
}

Roles: Cualquier usuario autenticado

Campos opcionales

Solo se pueden actualizar email y password en el perfil propio. Los roles no se pueden cambiar mediante este endpoint.

Cerrar sesión

http
POST /api/v1/user/logout

Roles: No requiere autenticación

Response (200)

json
{}

Roles disponibles

IDNombreDescripción
1ROLE_ADMINAcceso completo
2ROLE_USERSolo recursos propios
3ROLE_MANAGERSupervisión con edición limitada

Estructura del modelo ExpenseUserDto

CampoTipoDescripción
idLongID del usuario (auto-generado)
emailStringEmail único del usuario (requerido)
nameStringNombre del usuario (requerido)
surnameStringApellido del usuario (requerido)
passwordStringContraseña (write-only, opcional en updates)
roleIdsList<Long>Lista de IDs de roles asignados
roleDtosList<RoleDto>Lista de objetos Role completos (read-only)
employeeIdLongID del empleado asociado (opcional)
employeeNameStringNombre completo del empleado (read-only)
employeePositionStringPosición del empleado (read-only)

Licencia GNU GPL v3