Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/scoria02/marbes2021_backend/llms.txt

Use this file to discover all available pages before exploring further.

Marbes uses a role-based access control (RBAC) model. Roles are named groups (for example, admin or analista) that carry a set of permissions. Employees can hold multiple roles simultaneously. All endpoints in this section require a valid JWT bearer token. The typical workflow is:
  1. Create a role with POST /api/rrhh/roles.
  2. Assign permissions to it with POST /api/rrhh/roles/permisos.
  3. Assign roles to an employee with PUT /api/rrhh/user/roles/editar.
  4. Inspect the effective permissions of any role with GET /api/rrhh/roles/:rolNombre/analisis.

List all roles

GET /api/rrhh/roles Returns every role registered in the system.
curl -X GET "https://api.marbes.org/api/rrhh/roles" \
  -H "Authorization: Bearer {token}"
200
[
  {
    "id": "rol-uuid-001",
    "nombre": "admin",
    "descripcion": "Acceso completo al sistema",
    "activo": true,
    "created_at": "2024-01-10T09:00:00Z"
  },
  {
    "id": "rol-uuid-002",
    "nombre": "analista",
    "descripcion": "Acceso de solo lectura a reportes",
    "activo": true,
    "created_at": "2024-02-01T11:00:00Z"
  }
]
500
{
  "message": "Error interno del servidor."
}

Create role

POST /api/rrhh/roles Creates a new role. The nombre field must be unique.
nombre
string
required
Unique name for the role (e.g., "analista", "gerente").
descripcion
string
Human-readable description of what the role grants.
curl -X POST "https://api.marbes.org/api/rrhh/roles" \
  -H "Authorization: Bearer {token}" \
  -H "Content-Type: application/json" \
  -d '{
    "nombre": "gerente",
    "descripcion": "Gestión de equipo y aprobaciones"
  }'
201
{
  "success": true,
  "message": "Rol creado exitosamente",
  "data": {
    "id": "rol-uuid-003",
    "nombre": "gerente",
    "descripcion": "Gestión de equipo y aprobaciones",
    "activo": true,
    "created_at": "2024-05-06T12:00:00Z"
  }
}
400
{
  "success": false,
  "message": "El nombre del rol es requerido"
}

List all permissions

GET /api/rrhh/permisos Returns the full catalogue of permissions available for assignment.
curl -X GET "https://api.marbes.org/api/rrhh/permisos" \
  -H "Authorization: Bearer {token}"
200
[
  {
    "id": "perm-uuid-001",
    "nombre": "ver_empleados",
    "descripcion": "Permite listar y ver detalles de empleados",
    "modulo": "rrhh"
  },
  {
    "id": "perm-uuid-002",
    "nombre": "editar_empleados",
    "descripcion": "Permite modificar datos de empleados",
    "modulo": "rrhh"
  }
]

Get permissions for the authenticated user

GET /api/rrhh/permisosbyuser Returns the effective permissions for the currently authenticated employee. Optionally accepts a userId query parameter to inspect another user’s permissions.
userId
string
UUID of the employee to inspect. Defaults to the authenticated user when omitted.
curl -X GET "https://api.marbes.org/api/rrhh/permisosbyuser" \
  -H "Authorization: Bearer {token}"
success
boolean
required
true on success.
permisos
object[]
List of permissions the employee currently holds.
200
{
  "success": true,
  "permisos": [
    {
      "id": "perm-uuid-001",
      "nombre": "ver_empleados",
      "descripcion": "Permite listar y ver detalles de empleados",
      "modulo": "rrhh"
    }
  ]
}

Update employee roles

PUT /api/rrhh/user/roles/editar Replaces the full set of roles assigned to an employee. The authenticated user is recorded as asignado_por.
userId
string
required
UUID of the employee whose roles should be updated.
roles
string[]
required
Array of role names to assign. Must contain at least one entry. Example: ["admin", "analista"].
curl -X PUT "https://api.marbes.org/api/rrhh/user/roles/editar?userId=a1b2c3d4-e5f6-7890-abcd-ef1234567890" \
  -H "Authorization: Bearer {token}" \
  -H "Content-Type: application/json" \
  -d '{
    "roles": ["analista", "gerente"]
  }'
success
boolean
required
true on success.
data
object[]
The updated list of role assignments for the employee.
200
{
  "success": true,
  "data": [
    {
      "id": "rol-uuid-002",
      "nombre": "analista",
      "descripcion": "Acceso de solo lectura a reportes",
      "activo": true,
      "fecha_asignacion": "2024-05-06T14:00:00Z",
      "asignado_por": "editor-uuid-001"
    }
  ]
}
400
{
  "success": false,
  "message": "Debe proporcionar al menos un rol"
}
401
{
  "success": false,
  "message": "Usuario no autenticado"
}

Assign permissions to a role

POST /api/rrhh/roles/permisos Assigns one or more permissions to an existing role. The authenticated user is recorded as asignado_por. Sending this request replaces only the permissions included in permiso_ids; it does not remove previously assigned permissions unless they are explicitly excluded.
role_id
string
required
UUID of the role that will receive the permissions.
permiso_ids
string[]
required
Array of permission UUIDs to assign. Must contain at least one entry.
curl -X POST "https://api.marbes.org/api/rrhh/roles/permisos" \
  -H "Authorization: Bearer {token}" \
  -H "Content-Type: application/json" \
  -d '{
    "role_id": "rol-uuid-002",
    "permiso_ids": ["perm-uuid-001", "perm-uuid-002"]
  }'
200
{
  "success": true,
  "message": "Permisos asignados exitosamente",
  "asignados": 2
}
400
{
  "success": false,
  "message": "role_id y permiso_ids son requeridos"
}
401
{
  "success": false,
  "message": "Usuario no autenticado"
}

Analyze role permissions

GET /api/rrhh/roles/:rolNombre/analisis Returns a detailed breakdown of all permissions held by a named role, including metadata about when each permission was assigned and by whom.
rolNombre
string
required
The name of the role to analyze (e.g., admin, analista).
curl -X GET "https://api.marbes.org/api/rrhh/roles/admin/analisis" \
  -H "Authorization: Bearer {token}"
success
boolean
required
true on success.
rol
object
Role metadata.
permisos
object[]
Permissions assigned to the role.
200
{
  "success": true,
  "rol": {
    "id": "rol-uuid-001",
    "nombre": "admin",
    "descripcion": "Acceso completo al sistema"
  },
  "permisos": [
    {
      "id": "perm-uuid-001",
      "nombre": "ver_empleados",
      "modulo": "rrhh",
      "fecha_asignacion": "2024-03-01T09:00:00Z",
      "asignado_por": "editor-uuid-001"
    },
    {
      "id": "perm-uuid-002",
      "nombre": "editar_empleados",
      "modulo": "rrhh",
      "fecha_asignacion": "2024-03-01T09:00:00Z",
      "asignado_por": "editor-uuid-001"
    }
  ]
}
400
{
  "success": false,
  "message": "Nombre del rol es requerido"
}
500
{
  "success": false,
  "message": "Error interno del servidor"
}

Build docs developers (and LLMs) love