> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://developer.crehana.com/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://developer.crehana.com/_mcp/server.

## Filtro por policy_id en timeoff/policies

`GET /org/{slug}/timeoff/policies/` acepta el parámetro opcional `policy_id`
para traer una sola política a partir de su id:

```
GET /org/{slug}/timeoff/policies/?policy_id=1105
```

La respuesta mantiene el mismo formato paginado, con esa política como único
resultado (`{"total": 1, "results": [...]}`). Si el id no corresponde a una
política de la organización, la respuesta es una página vacía
(`{"total": 0, "results": []}`), no un error.

Se puede combinar con el resto de los filtros.

## El reporte de turnos exige filtrar por estado

`GET /org/{slug}/reports/attendance/shifts/` pide el parámetro obligatorio
`is_active` para elegir qué turnos devolver:

```
GET /org/{slug}/reports/attendance/shifts/?is_active=true
GET /org/{slug}/reports/attendance/shifts/?is_active=false
```

`true` trae solo los turnos activos y `false` solo los inactivos. El filtro se
aplica antes de paginar, así que `total`, `limit` y `offset` cuentan únicamente
los turnos de ese estado. Un turno sin estado cargado no aparece en ninguno de
los dos.

> **Warning**
>
> Sin `is_active` el endpoint responde `400` con
> `This field is required for this report` (`loc: ["query", "is_active"]`). Un
> valor que no sea booleano responde `422`. Si tu integración consultaba el
> catálogo completo, hacé dos pedidos, uno con `true` y otro con `false`.