---
title: "List the changes of a request"
method: GET
path: "/requests/{id}/changes"
tags: ["Requests"]
---

# List the changes of a request

`GET /requests/{id}/changes`

Every change of the request, oldest first, with the values before and after and who decided it.

## Path parameters

- `id` string, uuid, required

## Response `200`

Successful response

- object[]
  - `id` integer, required
  - `revision` integer, required
  - `kind` 'reason' | 'shortened' | 'extended' | 'moved' | 'leave_type', required
  - `status` 'pending' | 'approved' | 'declined' | 'withdrawn' | 'applied', required
  - `previous` object, required — The request as it was before this change.
    - `start` string, required
    - `end` string, required
    - `start_at` 'morning' | 'afternoon', required — For day-based leave types: whether the absence starts in the `morning` (the whole first day counts) or `afternoon` (only the second half of the first day). Ignored for hour-based leave types.
    - `end_at` 'lunchtime' | 'end_of_day', required — For day-based leave types: whether the absence ends at `lunchtime` (only the first half of the last day) or `end_of_day` (the whole last day counts). Ignored for hour-based leave types.
    - `leave_type` object, required
      - `id` string, required
      - `name` string, nullable, required
    - `duration` number, required
    - `workday_absence_duration` number, required
    - `reason` string, nullable, required
  - `proposed` object, required — The request as this change wants it. For `applied` and `approved` changes this is what is in force.
    - `start` string, required
    - `end` string, required
    - `start_at` 'morning' | 'afternoon', required — For day-based leave types: whether the absence starts in the `morning` (the whole first day counts) or `afternoon` (only the second half of the first day). Ignored for hour-based leave types.
    - `end_at` 'lunchtime' | 'end_of_day', required — For day-based leave types: whether the absence ends at `lunchtime` (only the first half of the last day) or `end_of_day` (the whole last day counts). Ignored for hour-based leave types.
    - `leave_type` object, required
      - `id` string, required
      - `name` string, nullable, required
    - `duration` number, required
    - `workday_absence_duration` number, required
    - `reason` string, nullable, required
  - `changed_by` object, nullable, required
    - `id` string, required
    - `name` string, nullable, required
  - `decided_by` object, nullable, required
    - `id` string, required
    - `name` string, nullable, required
  - `created_at` string, required
  - `decided_at` string, nullable, required
  - `decision_reason` string, nullable, required

## Other responses

- `400` — Invalid input data
- `401` — Authorization not provided
- `403` — Insufficient access
- `404` — Not found
- `500` — Internal server error

## Changes

- **2026-10-05** `d09a007f839d` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/absentify/apis/absentify-crud-api/changes/requests/:id/changes/get.md)

---

[API](https://skmtc.dev/absentify/apis/absentify-crud-api.md) · [All operations](https://skmtc.dev/absentify/apis/absentify-crud-api/llms.txt) · [OpenAPI document](https://skmtc.dev/absentify/apis/absentify-crud-api/revisions/d09a007f839d?raw)
