# GET /api/v2/absences/{absence}

Read an absence

- MCP id: absences.show
- Scope: api:read:absences
- Permission: absences::manage
- Rate cost: 1 unit, read bucket.
- Cache-Control: private, no-store

Returns one absence.

The summary and detail views are identical on this resource: every field is small enough for a list row. `user` and `manager` render as `{"id": N}` references; `?include=user,manager` expands them, and that expansion additionally requires `users::read` and a token scope covering the users prefix. An absence whose employee has since been deleted keeps the reference form rather than expanding.

## Parameters
- absence (integer, path): The Absence's numeric id.
- view (string, optional): Which field set to render.
- X-Request-Id (header, optional): A correlation id of your own. It is recorded in our logs next to the server's request id but never returned: the response header always carries the server's id. A value that does not match the pattern is discarded silently, never rejected.
- If-None-Match (header, optional): The ETag a read is conditional on. A match is answered 304 with no body.

## Response 200
- id (integer, required): Unique identifier.
- user_id (integer, required): The employee this absence is for. Writing it requires the `absences::manage` permission.
- user (Ref or UserSummary, required): The employee the absence is for. Renders as an `{"id": N}` reference unless expanded, and stays a reference when the employee has since been deleted.
- manager_id (integer or null, required): Manager who filed or approved the absence, or `null` when none was recorded. The foreign key nulls on delete, so removing the manager leaves the absence behind unattributed.
- manager (Ref or UserSummary or null, required): The manager who filed or approved the absence; absent when none was recorded.
- start (timestamp (YYYY-MM-DDThh:mm:ssZ), required): When the absence begins. RFC 3339 UTC.
- end (timestamp (YYYY-MM-DDThh:mm:ssZ) or null, required): When the absence ends, or `null` while it is still running. An ongoing absence reaches through now everywhere it is read (planning capacity and reporting both count it), and that reach is uncapped, so an absence nobody closed keeps consuming capacity. RFC 3339 UTC.
- created_at (timestamp (YYYY-MM-DDThh:mm:ssZ), required): Creation timestamp.
- updated_at (timestamp (YYYY-MM-DDThh:mm:ssZ), required): Last-write timestamp; use for incremental sync.
- links (AbsenceLinks, required)
  - self (url, required): The canonical URI of this record.

## Errors
- 403 forbidden-by-policy | insufficient-permission | insufficient-token-scope: Forbidden.
- 304 : Not modified.
- 400 idempotency-key-required | invalid-cursor | invalid-query-parameter | malformed-request | unsupported-parameter: Bad request.
- 401 token-expired | unauthenticated: Unauthenticated.
- 404 endpoint-not-found | resource-not-found: Not found.
- 406 not-acceptable: Not acceptable.
- 429 rate-limit-exceeded: Too many requests.
- 500 internal-error: Server error.
- 503 tenant-unavailable: Service unavailable.

## Example
```bash
curl -G \
  'https://<your-url>/api/v2/absences/1' \
  --data-urlencode 'include=user,manager' \
  -H 'Authorization: Bearer <token>' \
  -H 'Accept: application/json'
```
