# Absences

`GET /people/absences`

Group: People Management › Absences · Operation ID: `absences`

List absences with structured filters. GET data-set exposing filter[field][op]= (eq/ne/gt/gte/lt/lte/in/notIn/between/like), sort=-startDate, sparse fields=, and page[size]/page[cursor] cursor pagination. Free-text description queries belong in POST people/absences/search.

[Open in the interactive reference](https://docs.api.lensing.ai/?op=absences)

## Parameters

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `Api-Version` | header | `"v1"` | yes | The API version this request targets, named by its public identifier. Required on every request; omitting it, or naming a version this company does not have, is answered with 400. This document describes version `v1`. |

## Query surface

- `id` — filter by eq, ne, gt, gte, lt, lte, in, notIn, between, like
- `absenceTypeId` — filter by eq, ne, gt, gte, lt, lte, in, notIn, between, like
- `startDate` — filter by eq, ne, gt, gte, lt, lte, in, notIn, between, like
- `endDate` — filter by eq, ne, gt, gte, lt, lte, in, notIn, between, like
- `days` — filter by eq, ne, gt, gte, lt, lte, in, notIn, between, like
- `status` — filter by eq, ne, gt, gte, lt, lte, in, notIn, between, like
- Orderable: id, leaveNumber, startDate, endDate, days, status
- Selectable: id, leaveNumber, employeeId, absenceTypeId, startDate, endDate, days, status, leaveDescription

## Response

`200` Success

Under `data`, an array of absencesRow:

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `id` | string | no | Stable, platform-assigned id (a UUID) of the absence — the public identifier used by the item routes (GET/PATCH/DELETE people/absences/:id). |
| `leaveNumber` | string or null | no | System-generated absence number. Sortable but not filterable: sorting puts only the field name in the URL, whereas filtering would put the number itself there. Look an absence number up through POST people/absences/search. |
| `employeeId` | string | no | Platform id (a UUID) of the employee the absence belongs to. Not filterable here — naming an employee in a GET query string would record who was asked about in every access log; filter by employee through POST people/absences/search instead. |
| `absenceTypeId` | string | no | Platform id (a UUID) of the absence type. Filter e.g. filter[absenceTypeId][in]=<id1>,<id2>. |
| `startDate` | string (date-time) | no | Start of the absence (ISO 8601 UTC). Filter with filter[startDate][gte]=2026-01-01T00:00:00Z; a literal '+' in a UTC offset must be percent-encoded as %2B. |
| `endDate` | string (date-time) | no | End of the absence (ISO 8601 UTC). |
| `days` | string (decimal) or null | no | Number of absence days; may be fractional for partial days. Decimal filter target: filter[days][gte]=1. |
| `status` | string or null | no | Current status of the absence: requested, approved, rejected or canceled. |
| `leaveDescription` | string or null | no | Free-text reason or description supplied with the absence. |

## Statuses

- `400` — Invalid request or business failure
- `401` — Missing or invalid access token
- `403` — Not authorized
- `404` — Not found
- `429` — Too many requests
- `500` — Internal server error
