HTTP status: attendance bulk validation
This page documents the problem type URI returned when POST /api/v1/activities/activities/ {activity_pk}/occurrences/{id}/attendance-bulk/ refuses to overwrite existing attendance for that
occurrence until the client confirms.
Canonical problem type
Section titled “Canonical problem type”type: "https://docs.keja.co/troubleshooting/status-codes/activities.attendance_bulk_validation"
HTTP mapping
Section titled “HTTP mapping”| Item | Value |
|---|---|
| Status code | 422 |
| Content-Type | application/problem+json |
title (problem) | Typically `Confirm replacing existing attendance`. |
detail (problem) | Human explanation; do not parse for automation per RFC 9457. |
Typical issue codes (errors[].code)
Section titled “Typical issue codes (errors[].code)”-
activities.attendance_bulk.confirm_replace_required - At least one attendance row already exists for this occurrence. Retry the same request with
confirm_replace_existing: trueafter the operator confirms they intend to replace existing marks for eligible enrolments.
The issue object includes pointer /body/confirm_replace_existing.
Minimal example
Section titled “Minimal example”{ "type": "https://docs.keja.co/troubleshooting/status-codes/activities.attendance_bulk_validation", "title": "Confirm replacing existing attendance", "status": 422, "detail": "This session already has attendance recorded. Retry with confirm_replace_existing=true after operator confirmation.", "errors": [ { "code": "activities.attendance_bulk.confirm_replace_required", "detail": "This session already has attendance recorded. Retry with confirm_replace_existing=true after operator confirmation.", "pointer": "/body/confirm_replace_existing" } ]}Related
Section titled “Related”- OpenAPI:
OccurrenceAttendanceBulkRequestandPOST .../attendance-bulk/(experimental stability).