Skip to main content
POST
Upload an attendance workbook

Authorizations

Authorization
string
header
required

Passport bearer token authentication for legacy admin sessions.

Path Parameters

program_id
integer
required

Program id in the current organization.

Body

multipart/form-data

Validated request fields for this operation.

file
file
required

CSV or XLSX attendance workbook, maximum20480KiB. MIME and extension are checked.

participation_period_id
integer
required

Existing participation period in this program.

Required range: x >= 1
Example:

18

idempotency_key
string
required

Stable upload retry key; scoped across the current organization.

Maximum string length: 255
Example:

"attendance-upload-2026-10-20"

Response

Original batch returned for an idempotent upload retry, including paged rows and recipient fields.

id
integer
Example:

42

program_id
integer
Example:

12

participation_period_id
integer | null
Example:

18

original_filename
string
Example:

"attendance.xlsx"

source_type
enum<string>
Available options:
csv,
xlsx
Example:

"xlsx"

status
enum<string>
Available options:
pending,
validating,
review,
processing,
completed,
failed,
voided
Example:

"review"

progress
integer
Example:

100

mapping
inspection
object[]
summary

Counts after validation; empty array before counts exist. Limit failures add estimated_rows/maximum_rows.

validation_errors
object[]
Maximum array length: 100
error_message
string | null
Example:

"The attendance file could not be validated. Review the mapping and retry."

failure_stage
enum<string> | null
Available options:
validation,
commit,
null
Example:

"validation"

can_commit
boolean

True only in review with zero blocked and review rows.

Example:

true

can_void
boolean

True only while completed.

Example:

false

created_at
string<date-time> | null
Example:

"2026-10-20T12:00:00Z"

completed_at
string<date-time> | null
Example:

"2026-10-20T12:05:00Z"

voided_at
string<date-time> | null
void_reason
string | null
Example:

"Imported the incorrect workbook."

created_checks
object[]
rows
object
recipient_fields
object[]