`GET /api/workspace/repo_sync/log?limit=N` — recent audit-log rows.
const url = 'https://example.com/api/workspace/repo_sync/log';const options = {method: 'GET'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request GET \ --url https://example.com/api/workspace/repo_sync/logParameters
Section titled “Parameters”Query Parameters
Section titled “Query Parameters”Responses
Section titled “Responses”One row per per-entity action on a push or pull (ADR 0023 R1+R2). The
UI renders a per-workspace feed; the conflict path (R2 last-write-wins)
uses action='skipped' with a reason to surface “your in-flight edit
kept the row” without overwriting.
object
created / updated / skipped / failed / deleted.
One-line human-readable reason for skipped / failed; NULL for
the happy-path actions.
push (UI -> repo) or pull (repo -> UI).
The git commit sha the sync attempt operated against.
The DB row id this log entry concerns; NULL when a row was meant to exist but the action never created one (e.g. parse error on a pulled YAML file).
workflow / script / app.
The repo-side identifier (the YAML file’s slug). Always present so the UI can name the file even when no DB row was created.
Examplegenerated
[ { "action": "example", "created_at": "2026-04-15T12:00:00Z", "id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "reason": "example", "sync_kind": "example", "sync_sha": "example", "target_id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "target_kind": "example", "target_slug": "example", "workspace_id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0" }]