Record daily attendance for many students
Record up to 200 daily-attendance records in one request. Requires an access token from an API client with the attendance-daily scope (see Authentication). The body is a JSON array of the same records accepted by POST /attendance/daily, with the same matching, code mapping, and idempotency rules. The response carries one result per record, in request order, each with the record’s index and, on failure, the HTTP status and error code the single-record endpoint would have returned. The response is 200 when every record succeeded and 207 when any failed. An invalid record fails on its own; an unexpected server error (500) fails every record for the same date, which is safe to resend. Records for the same student and date are applied in request order, so the last one wins. Send larger reconciliations in chunks of at most 200 records.
Authorizations
Bearer access token from POST /oauth/token (OAuth 2.0 client credentials; the OneRoster /ims/oneroster/v1p1/token and /v1p2/token URLs are aliases). Send it as Authorization: Bearer <access_token>. Tokens expire after 1 hour and carry your API client's granted scopes — an endpoint outside them returns 403.
Body
1 - 200 elementsThe student the record is for. Accepts the OneRoster identifier (student number), the state identifier (e.g. SSID), or the Scout student id (OneRoster sourcedId).
The school day, as YYYY-MM-DD. Must not be in the future.
The day's attendance status. Accepts Scout status names (case-insensitive) — Present, Late, ExcusedLate, Absent, ExcusedAbsence, LeftEarly — or common letter codes: P, T/L (tardy), A, E/EA (excused absence), ET/TE (excused tardy), LE (left early).
When the student arrived, as 24-hour local time (HH:mm or HH:mm:ss) on the record's date, read as Pacific time. Stored as a timestamp and returned by the attendance reads; also used as the attendance log description when no comment is given. Not used to compute late minutes.
Free-text note, stored as the attendance log description.