> ## Documentation Index
> Fetch the complete documentation index at: https://docs.filexpress.app/llms.txt
> Use this file to discover all available pages before exploring further.

# Feriados

> Consultar feriados del país y administrar asuetos y exclusiones de la empresa

| Operación | Permiso |
| - | - |
| Consultar feriados | `hr.holidays` |
| Crear, editar y eliminar asuetos; excluir feriados del país | `hr.holidays.write` |

Ver [Feriados y asuetos](/docs/rrhh/feriados) en el manual.

## Listar feriados

```http theme={null}
GET /hr/holidays?year=2026
```

**Permiso requerido:** `hr.holidays`

| Parámetro | Requerido | Descripción |
| - | - | - |
| `year` | No | Año (2000–2100). Por defecto, el actual. |

Devuelve los feriados del país de la empresa y los asuetos propios, ordenados por fecha.

```json theme={null}
{
  "status": true,
  "data": [
    {
      "id": "uuid",
      "business_id": null,
      "country_code": "SV",
      "date": "2026-11-02",
      "name": "Día de los Difuntos",
      "scope": "national",
      "region_code": null,
      "branch_id": null,
      "action": "add",
      "start_time": null,
      "is_paid": true,
      "source": "generator",
      "origin": "country",
      "is_excluded": true,
      "exclusion_id": "uuid"
    },
    {
      "id": "uuid",
      "business_id": "uuid",
      "country_code": "SV",
      "date": "2026-12-24",
      "name": "Nochebuena",
      "scope": "company",
      "region_code": null,
      "branch_id": null,
      "action": "add",
      "start_time": "12:00",
      "is_paid": true,
      "source": "manual",
      "origin": "company",
      "is_excluded": false,
      "exclusion_id": null
    }
  ]
}
```

| Campo | Descripción |
| - | - |
| `origin` | `country` (feriado del país) o `company` (asueto de la empresa). |
| `scope` | `national`, `regional` (asueto local de referencia, **no se aplica automáticamente**) o `company`. |
| `start_time` | Si tiene valor, es feriado de medio día desde esa hora. |
| `branch_id` | Asueto limitado a una sucursal. `null` = toda la empresa. |
| `is_excluded`, `exclusion_id` | La empresa excluyó este feriado del país. Para quitar la exclusión, elimina `exclusion_id` con `DELETE /hr/holidays/{exclusion_id}`. |

## Crear asueto

```http theme={null}
POST /hr/holidays
```

**Permiso requerido:** `hr.holidays.write`

Crea **un** asueto propio de la empresa por llamada.

```json theme={null}
{
  "date": "2026-12-24",
  "name": "Nochebuena",
  "branch_id": null,
  "start_time": "12:00",
  "is_paid": true
}
```

| Campo | Requerido | Descripción |
| - | - | - |
| `date` | Sí | Fecha (`YYYY-MM-DD`). |
| `name` | Sí | Nombre (máx. 255). No puede repetirse en la misma fecha. |
| `branch_id` | No | Sucursal de la empresa (`GET /branches`). |
| `start_time` | No | `HH:MM`: asueto desde esa hora (medio día). |
| `is_paid` | No | Remunerado. Por defecto `true`. |

**Respuesta `201`**: el asueto (mismo formato que el listado) con `recalculation_queued`.

| Código | Causa |
| - | - |
| `422` | Validación, sucursal de otra empresa o nombre repetido en la fecha. |

## Editar asueto

```http theme={null}
PUT /hr/holidays/{id}
```

**Permiso requerido:** `hr.holidays.write`

Envía solo los campos que cambian. Solo se editan asuetos de la empresa; un feriado del país o una exclusión responden `404`.

**Respuesta `200`**: el asueto actualizado con `recalculation_queued`.

## Eliminar asueto o exclusión

```http theme={null}
DELETE /hr/holidays/{id}
```

**Permiso requerido:** `hr.holidays.write`

Elimina un asueto de la empresa o una exclusión (`exclusion_id`). Los feriados del país no se eliminan: se excluyen.

```json theme={null}
{ "status": true, "data": { "id": "uuid", "deleted": true, "recalculation_queued": true } }
```

## Excluir un feriado del país

```http theme={null}
POST /hr/holidays/{id}/exclude
```

**Permiso requerido:** `hr.holidays.write`

`{id}` es un feriado del país de la empresa (`origin: country`). Ese día se trata como día normal para la empresa.

**Comportamiento**

* **Idempotente**: excluir dos veces el mismo feriado no crea otra exclusión.

**Respuesta `200`**: el feriado del país con `is_excluded: true`, su `exclusion_id` y `recalculation_queued`.

<Note>
  Todo cambio de feriados recalcula la asistencia de esa fecha. Los días incluidos en planillas procesadas o pagadas no cambian.
</Note>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.