# Listar (/docs/developers/api-reference/attendance/list)

## Descripcion general [#descripcion-general]

Este endpoint permite obtener un listado paginado de las incidencias de asistencia capturadas en tu organización. Los resultados se devuelven en formato JSON e incluyen metadatos de paginación. Ofrece filtros por razón social, tipo de incidencia, rango de fechas y búsqueda por empleado.

El listado devuelve únicamente las incidencias del **registro global de asistencia**. Las incidencias capturadas dentro de una corrida específica (y que pertenecen solo a esa corrida) no aparecen aquí. Los resultados se ordenan de la fecha más reciente a la más antigua.

## Endpoint [#endpoint]

`GET https://app.integranom.com/api/v1/attendance`

## Consulta multiples incidencias [#consulta-multiples-incidencias]

***

Devuelve todas las incidencias de asistencia de la organización, paginadas de 20 en 20 y ordenadas por fecha descendente.

## Query params [#query-params]

Estos son **todos** los filtros disponibles: razón social, tipo de incidencia, periodo y búsqueda por empleado. Todos son opcionales y se pueden combinar.

| Parametro             | Tipo                     | Repetible | Default | Descripcion                                                                                                     |
| --------------------- | ------------------------ | --------- | ------- | --------------------------------------------------------------------------------------------------------------- |
| `page`                | integer ≥ 1              | No        | 1       | Página solicitada. El tamaño de página es fijo en 20.                                                           |
| `legal_entity_number` | integer                  | **Sí**    | -       | Filtra por la razón social del empleado. Repite el parámetro para incluir varias.                               |
| `incidence_code`      | string                   | **Sí**    | -       | Filtra por el **código del tipo de incidencia** (por ejemplo `FALTA`). Repite el parámetro para incluir varios. |
| `date_from`           | string (`YYYY-MM-DD`)    | No        | -       | Incluye incidencias con fecha **mayor o igual** a esta.                                                         |
| `date_to`             | string (`YYYY-MM-DD`)    | No        | -       | Incluye incidencias con fecha **menor o igual** a esta.                                                         |
| `search`              | string                   | No        | -       | Búsqueda por empleado: nombre (sin distinguir acentos ni mayúsculas) o número de empleado exacto.               |
| `source`              | string                   | **Sí**    | -       | Filtra por el origen exacto de la captura. Repite el parámetro para incluir varios.                             |
| `origin`              | `internal` \| `external` | No        | -       | Filtra por la clasificación del origen. Se puede combinar con `source`.                                         |

**cURL**

```bash
curl -X GET "https://app.integranom.com/api/v1/attendance" \
-H "Authorization: Bearer TU_API_KEY" \
-H "Content-Type: application/json"
```

**Respuesta**

```json
{
"count": 34,
"page": 1,
"page_size": 20,
"total_pages": 2,
"next": "?page=2",
"previous": null,
"results": [
  {
    "date": "2026-06-05",
    "employee_number": 1,
    "employee_name": "Jesús Muñoz Rivera",
    "legal_entity_number": 1,
    "legal_entity_name": "Comercializadora del Norte S.A. de C.V.",
    "incidence_code": "OVERTIME_DOUBLE_HOURS",
    "incidence_name": "Horas extra dobles",
    "unit": "hours",
    "quantity": 8,
    "notes": "turno extra",
    "approval_status": "pending",
    "source": "attendance_module",
    "origin": "internal",
    "captured_by": "Ana Martínez",
    "updated_by": null,
    "created_at": "2026-06-05T10:00:00.000Z",
    "updated_at": "2026-06-05T10:00:00.000Z"
  },
  {
    "date": "2026-06-03",
    "employee_number": 1,
    "employee_name": "Jesús Muñoz Rivera",
    "legal_entity_number": 1,
    "legal_entity_name": "Comercializadora del Norte S.A. de C.V.",
    "incidence_code": "FALTA",
    "incidence_name": "Falta injustificada",
    "unit": "days",
    "quantity": 1,
    "notes": null,
    "approval_status": "approved",
    "source": "attendance_module",
    "origin": "internal",
    "captured_by": "Ana Martínez",
    "updated_by": null,
    "created_at": "2026-06-03T10:00:00.000Z",
    "updated_at": "2026-06-03T10:00:00.000Z"
  }
]
}
```

## Filtra por razon social, tipo y periodo [#filtra-por-razon-social-tipo-y-periodo]

***

`legal_entity_number` e `incidence_code` son **repetibles**: envía el parámetro varias veces para filtrar por varias razones sociales o varios tipos de incidencia a la vez. El ejemplo trae las faltas **y** las vacaciones de la razón social `1` durante junio.

Los códigos de incidencia disponibles los obtienes de [Tipos de incidencia → Listar](/docs/developers/api-reference/incidence-types/list). El catálogo es global y su código es único, así que cada `incidence_code` identifica un solo tipo.

**cURL**

```bash
curl -X GET "https://app.integranom.com/api/v1/attendance?legal_entity_number=1&incidence_code=FALTA&incidence_code=VACACIONES&date_from=2026-06-01&date_to=2026-06-30" \
-H "Authorization: Bearer TU_API_KEY" \
-H "Content-Type: application/json"
```

**Respuesta**

```json
{
"count": 2,
"page": 1,
"page_size": 20,
"total_pages": 1,
"next": null,
"previous": null,
"results": [
  {
    "date": "2026-06-10",
    "employee_number": 1,
    "employee_name": "Jesús Muñoz Rivera",
    "legal_entity_number": 1,
    "legal_entity_name": "Comercializadora del Norte S.A. de C.V.",
    "incidence_code": "VACACIONES",
    "incidence_name": "Vacaciones",
    "unit": "days",
    "quantity": 1,
    "notes": null,
    "approval_status": "approved",
    "source": "attendance_module",
    "origin": "internal",
    "captured_by": "Ana Martínez",
    "updated_by": null,
    "created_at": "2026-06-10T10:00:00.000Z",
    "updated_at": "2026-06-10T10:00:00.000Z"
  },
  {
    "date": "2026-06-03",
    "employee_number": 1,
    "employee_name": "Jesús Muñoz Rivera",
    "legal_entity_number": 1,
    "legal_entity_name": "Comercializadora del Norte S.A. de C.V.",
    "incidence_code": "FALTA",
    "incidence_name": "Falta injustificada",
    "unit": "days",
    "quantity": 1,
    "notes": null,
    "approval_status": "approved",
    "source": "attendance_module",
    "origin": "internal",
    "captured_by": "Ana Martínez",
    "updated_by": null,
    "created_at": "2026-06-03T10:00:00.000Z",
    "updated_at": "2026-06-03T10:00:00.000Z"
  }
]
}
```

## Campos de cada fila [#campos-de-cada-fila]

| Campo                 | Tipo                                        | Descripcion                                                                                                                                                                                                                                              |
| --------------------- | ------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `date`                | string (`YYYY-MM-DD`)                       | Día en que ocurrió la incidencia.                                                                                                                                                                                                                        |
| `employee_number`     | integer                                     | Número del empleado dentro de la organización.                                                                                                                                                                                                           |
| `employee_name`       | string                                      | Nombre completo del empleado.                                                                                                                                                                                                                            |
| `legal_entity_number` | integer                                     | Razón social del empleado.                                                                                                                                                                                                                               |
| `legal_entity_name`   | string                                      | Nombre de la razón social.                                                                                                                                                                                                                               |
| `incidence_code`      | string                                      | Código del tipo de incidencia.                                                                                                                                                                                                                           |
| `incidence_name`      | string                                      | Nombre del tipo de incidencia.                                                                                                                                                                                                                           |
| `unit`                | `"days"` \| `"hours"` \| `"count"`          | Unidad del tipo de incidencia.                                                                                                                                                                                                                           |
| `quantity`            | number                                      | Cantidad registrada. Los tipos de unidad `days` registran `1` por día, salvo las vacaciones de medio día, que registran `0.5`.                                                                                                                           |
| `notes`               | string \| null                              | Notas de la captura.                                                                                                                                                                                                                                     |
| `approval_status`     | `"approved"` \| `"pending"` \| `"rejected"` | Estatus de autorización. Las horas extra dobles y triples quedan en `pending` hasta que las autorizan todos los niveles configurados, y en `rejected` si alguno las rechaza; la nómina solo paga las `approved`. Los demás tipos siempre son `approved`. |
| `source`              | string                                      | Origen exacto de la captura: `attendance_module`, `payroll_run`, `employee_portal`, `api` o `time_clock`.                                                                                                                                                |
| `origin`              | `"internal"` \| `"external"`                | Clasificación del origen: `internal` cuando la capturó el equipo de nómina en la plataforma; `external` en cualquier otro caso (portal de colaborador, reloj checador, integraciones).                                                                   |
| `captured_by`         | string \| null                              | Nombre de quien registró la incidencia: una persona, la integración que la envió o la plataforma. `null` si ese autor ya no existe.                                                                                                                      |
| `updated_by`          | string \| null                              | Nombre de quien la modificó por última vez. `null` si nunca se ha editado.                                                                                                                                                                               |
| `created_at`          | string (ISO 8601)                           | Fecha de captura.                                                                                                                                                                                                                                        |
| `updated_at`          | string (ISO 8601)                           | Última modificación.                                                                                                                                                                                                                                     |

## Origen de la captura [#origen-de-la-captura]

***

Cada incidencia registra **de dónde vino**. `source` es el origen exacto y `origin` lo resume en los dos grupos que importan para revisar una nómina:

| `origin`   | `source`                               | Significado                                                                  |
| ---------- | -------------------------------------- | ---------------------------------------------------------------------------- |
| `internal` | `attendance_module`, `payroll_run`     | La capturó el equipo de nómina dentro de la plataforma.                      |
| `external` | `employee_portal`, `api`, `time_clock` | Llegó de fuera: portal de colaborador, una integración, o un reloj checador. |

Filtra por cualquiera de los dos: `?origin=external` para revisar todo lo que entró automáticamente, o `?source=time_clock` para un origen puntual. Combinarlos los intersecta.

## Estatus de autorización [#estatus-de-autorizacion]

***

Las horas extra (`OVERTIME_DOUBLE_HOURS` y `OVERTIME_TRIPLE_HOURS`) necesitan autorización antes de pagarse. `approval_status` dice en qué estatus está cada fila:

| `approval_status` | Significado                                                                                                                                               |
| ----------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `approved`        | Autorizada. La nómina la paga. Todos los tipos que no son horas extra llegan siempre así.                                                                 |
| `pending`         | Pendiente de autorizar: falta la decisión del jefe directo, de Recursos Humanos o de los dos, según la configuración de asistencia. La nómina no la paga. |
| `rejected`        | Rechazada. La nómina no la paga.                                                                                                                          |

Una hora extra que se autoriza después de cerrar su periodo entra como ajuste retroactivo en la siguiente nómina.

Una incidencia del registro global queda identificada de forma única por la combinación `employee_number` + `date` + `incidence_code` — la misma llave que usa el endpoint de [captura](/docs/developers/api-reference/attendance/capture) para sobrescribirla.

## Errores [#errores]

| Status | Causa                                                                                                                                       |
| ------ | ------------------------------------------------------------------------------------------------------------------------------------------- |
| `400`  | Valor inválido en algún filtro (`legal_entity_number`, `date_from` o `date_to` con formato incorrecto, o `date_to` anterior a `date_from`). |
| `401`  | API key ausente o inválida.                                                                                                                 |