Complete Session
Mark a session completed.
Sets tutor_sessions.status='completed' and writes one tutor-owed
session_ledger row per participant from that participant’s per-hour rate
snapshot, atomically via a transactional RPC. Idempotent — completing an
already-completed session is a no-op replay, never a double-ledger. No charge is
initiated here. Requires the sessions:write scope. 404 if the session isn’t in
your org.
Authorizations
Org API key as Token token=ei_live_...
Headers
Path Parameters
Body
PUT /v1/sessions/{id}/complete → tutor_sessions.status + session_ledger.
Marks a scheduled session completed and writes one tutor-owed session_ledger
row per participant from that participant's per-hour rate snapshot. Idempotent:
completing an already-completed session is a no-op replay, never a double-ledger.
Both fields are persisted: attendance sets each participant's attendance +
settlement_state (and excused books 0 owed), mirroring the in-app
mark_session_attendance; completed_at is stored on tutor_sessions.completed_at.
Response
Successful Response