# The operation journal, newest first: `total` (the matching operations) and `migrations`, each with

`POST /datanotes/operations/list_migrations/` (operation `list_migrations`)

The operation journal, newest first: `total` (the matching operations) and `migrations`, each with
`migration_id` (for undo_migration), `op`, `summary`, `table` (when it was about one), `executed_at`,
`notes_changed`, `files_changed`, `undone`, `undoes`, `files_failed`, `by` (the agent), and `members`
(a batch's operations) or `batch` (the batch of an operation).
Filters: `op` (e.g. "update_rows"), `table` (substring of the table name, e.g.
"personal.tasks.task"), `since` (ISO date). `limit` default 50. The journal is kept in the
engine's store, outside the vault (`store:journal/`); entries older than 90 days are dropped.

## Request body

`application/json`

| Property | Type | Required | Default | Description |
| --- | --- | --- | --- | --- |
| `limit` | `integer \| null` | no | `null` |  |
| `op` | `string \| null` | no | `null` |  |
| `table` | `string \| null` | no | `null` |  |
| `since` | `string \| null` | no | `null` |  |

## Responses

| Status | Description | Body |
| --- | --- | --- |
| 200 | Done. | `object` (application/json) |
| 400 | Bad input: the body is not a JSON object, or an argument is unknown, missing or of the wrong type. | `Error` (application/json) |
| 401 | Missing or wrong bearer token. | `Error` (application/json) |
| 404 | Unknown table, view, migration, note or folder. | `Error` (application/json) |
| 409 | Ambiguous table name: it matches several tables (`paths` or `tables` lists them). | `AmbiguousName` (application/json) |
| 500 | Unexpected error. | `Error` (application/json) |

The schemas named here are in [openapi.json](https://datanotes.dev/openapi.json) (`components.schemas`).
