Education

Api Learn Activity Log Emit

Fire-and-forget INSERT of one user activity event.

Accepts JSON: {kind: str, ref_type?: str, ref_id?: str, meta?: dict}.

Validates kind against the closed enum + payload size + meta-as- object before delegating to pg_emit_user_activity. Returns {ok: bool, id: int|None}. The client never retries on ok=false (the writers use fire-and-forget .catch() pattern, see learning-paths.ts / reading-list.ts / glossary.ts).

Loss tolerance is acceptable here because the reading log is a best-effort historical record, not a billing or auth surface (CHAOS §2.1 review). Server-side INSERT failures are captured by Sentry via the routes/api_errors.py middleware.

post/api/learn/activity-log

Request

  • Base URL: https://www.oxfordledge.com (the document declares no server; this is the origin it was published from)
  • URL: https://www.oxfordledge.com/api/learn/activity-log
  • Auth: none declared

Response

Successful Response

okboolean required

True iff the INSERT succeeded. False on any DB error (PG unavailable, brownfield pre-v113, CHECK constraint violation, FK orphan).

idinteger nullable

The new row's BIGSERIAL id on success; None on failure. Unused by the current FE writers (fire-and-forget) but surfaced for test + future dedupe needs.

Changes

No recorded changes to this operation across all 1 revision of this API.