Praesenti
API

Areas

Las áreas permiten organizar a los empleados en grupos de trabajo. Cada área puede tener múltiples categorías para clasificar a los empleados por rol o función.

Obtener todas las áreas

Obtiene la lista de todas las áreas de la organización con sus categorías y conteos de empleados.

Método: GET /areas

Respuesta exitosa (200)

[
  {
    "id": 42,
    "createdAt": "2026-04-14T19:07:48.946Z",
    "updatedAt": "2026-04-14T19:07:48.946Z",
    "deletedAt": null,
    "name": "ADMINISTRACION",
    "colorCode": "#D4E3C7",
    "categories": [
      {
        "id": 78,
        "createdAt": "0001-01-01T00:00:00Z",
        "updatedAt": "0001-01-01T00:00:00Z",
        "deletedAt": null,
        "name": "SECRETARIA",
        "areaID": 42,
        "employeeCount": 2
      },
      {
        "id": 82,
        "createdAt": "0001-01-01T00:00:00Z",
        "updatedAt": "0001-01-01T00:00:00Z",
        "deletedAt": null,
        "name": "FACTURACION",
        "areaID": 42,
        "employeeCount": 0
      }
    ],
    "employeeCount": 2
  },
  {
    "id": 43,
    "createdAt": "2026-04-14T19:07:48.949Z",
    "updatedAt": "2026-04-14T19:07:48.949Z",
    "deletedAt": null,
    "name": "INTERNACION",
    "colorCode": "#AED4BD",
    "categories": [
      {
        "id": 79,
        "createdAt": "0001-01-01T00:00:00Z",
        "updatedAt": "0001-01-01T00:00:00Z",
        "deletedAt": null,
        "name": "INSTRUMENTACION",
        "areaID": 43,
        "employeeCount": 3
      },
      {
        "id": 81,
        "createdAt": "0001-01-01T00:00:00Z",
        "updatedAt": "0001-01-01T00:00:00Z",
        "deletedAt": null,
        "name": "ENFERMERIA",
        "areaID": 43,
        "employeeCount": 2
      }
    ],
    "employeeCount": 5
  }
]

Códigos de respuesta

CódigoDescripción
200Exitoso
500Error interno del servidor

Obtener un área específica

Obtiene los datos de un área por su ID. Esta respuesta no incluye las categorías ni el conteo de empleados; para eso usá GET /areas.

Método: GET /areas/:id

Parámetros

ParámetroTipoDescripción
idstringID del área

Respuesta exitosa (200)

{
  "id": 42,
  "createdAt": "2026-04-14T19:07:48.946Z",
  "updatedAt": "2026-04-14T19:07:48.946Z",
  "deletedAt": null,
  "name": "ADMINISTRACION",
  "colorCode": "#D4E3C7"
}

Códigos de respuesta

CódigoDescripción
200Exitoso
404Área no encontrada
500Error interno del servidor

Crear una nueva área

Crea una nueva área con sus categorías asociadas. name es obligatorio (hasta 80 caracteres), colorCode debe ser un color hexadecimal y categories debe tener al menos una categoría, sin nombres repetidos.

Método: POST /areas

Body requerido

{
  "name": "Área de Producción",
  "colorCode": "#FFFFFF",
  "categories": ["Técnicos", "Supervisores"]
}

Respuesta exitosa (200)

{
  "id": 44,
  "createdAt": "2026-09-15T10:00:00.000-03:00",
  "updatedAt": "2026-09-15T10:00:00.000-03:00",
  "deletedAt": null,
  "name": "Área de Producción",
  "colorCode": "#FFFFFF",
  "categories": [
    {
      "id": 90,
      "createdAt": "2026-09-15T10:00:00.000-03:00",
      "updatedAt": "2026-09-15T10:00:00.000-03:00",
      "deletedAt": null,
      "name": "Técnicos",
      "areaID": 44
    },
    {
      "id": 91,
      "createdAt": "2026-09-15T10:00:00.000-03:00",
      "updatedAt": "2026-09-15T10:00:00.000-03:00",
      "deletedAt": null,
      "name": "Supervisores",
      "areaID": 44
    }
  ]
}

Códigos de respuesta

CódigoDescripción
200Área creada exitosamente
400Solicitud inválida o color inválido
409Ya existe un área con ese nombre o hay categorías repetidas
500Error interno del servidor

Actualizar un área

Actualiza los datos de un área existente. name y colorCode son obligatorios. En categories se indica qué hacer con cada categoría según el campo action:

  • add: crea una categoría nueva; requiere name.
  • update: renombra una categoría del área; requiere categoryID y name.
  • delete: elimina una categoría del área; requiere categoryID. Si la categoría tiene empleados, hay que indicar en employeeTransfers a qué categoría pasa cada uno.

El área no puede quedar sin categorías.

Método: PUT /areas/:id

Body

{
  "categories": [
    {
      "action": "add",
      "name": "cat 1"
    },
    {
      "action": "update",
      "categoryID": 1,
      "name": "cat 1"
    },
    {
      "action": "delete",
      "categoryID": 2,
      "employeeTransfers": [{ "CategoryID": 10, "employeeID": 1 }]
    }
  ],
  "colorCode": "#FFFFFF",
  "name": "string"
}

Respuesta exitosa (200)

Retorna el área actualizada con sus categorías, con el mismo formato que la respuesta de creación.

Códigos de respuesta

CódigoDescripción
200Actualizado exitosamente
400Solicitud inválida, color inválido o el área quedaría sin categorías
404Área, categoría o transferencia de empleado no encontrada
409Ya existe un área con ese nombre o una categoría repetida
500Error interno del servidor

Eliminar un área

Elimina un área de la organización. Si el área tiene empleados, hay que indicar en employeeTransfers a qué categoría pasa cada uno. No se puede eliminar un área que tenga usuarios de la organización asignados.

Método: DELETE /areas/:id

Body

{
  "employeeTransfers": [
    {
      "CategoryID": 90,
      "employeeID": 161
    }
  ]
}

Respuesta exitosa (200)

{
  "message": "deleted successfuly",
  "deleted": true
}

Códigos de respuesta

CódigoDescripción
200Eliminado exitosamente
400Solicitud inválida
404Área o categoría no encontrada, o falta transferir un empleado
409El área tiene usuarios de la organización asignados
500Error interno del servidor