Attendance Reopening API
Summary
Five direct operations create, list, approve, and reject reasoned reopen requests.
Audience
Frontend/backend developers, QA and support engineers, payroll integrators, and implementation partners.
Reference Content
Authentication: Bearer/self context expected for personal requests; approver context expected for pending/decision operations, with exact enforcement requiring confirmation. Tenant: required. Maturity: Direct/Shadow.
| Operation | Method and public route | Contract | Status and side effects | Safe example |
|---|---|---|---|---|
| Create reopen request | POST /attendance/reopen-requests | ReopenCreateRequest | 200 ApiResponse<ReopenRequestDto>; 400 invalid/future; 409 duplicate pending; audit, no attendance event yet | Body {"laborId":4242,"date":"2030-01-02","requestedStatus":"Present","requestedWorkHours":7.5,"requestedOvertimeHours":0,"reason":"Fictional correction"}; success 200; duplicate → 409. |
| My requests | GET /attendance/reopen-requests/my | No parameters/body; self context | 200 ApiResponse<ReopenRequestDto[]>; read-only | GET …/my → data:[]; missing required tenant where raised → 400. |
| Pending requests | GET /attendance/reopen-requests/pending | No parameters/body | 200 ApiResponse<ReopenRequestDto[]>; read-only | GET …/pending → data:[]; framework failure shape unspecified. |
| Approve reopen | POST /attendance/reopen-requests/{id:int}/approve | Integer id; no body | 200; 400 non-pending; 403 locked period; 404 missing; recalculates/creates approved attendance, audit, reopened event | Fictional id → 200 DTO; locked period → 403 envelope. |
| Reject reopen | POST /attendance/reopen-requests/{id:int}/reject | Integer id; ReopenRejectRequest | 200; 400 non-pending; 404 missing; audit, attendance unchanged | {"rejectionReason":"Fictional request not accepted"} → 200; unknown id → 404. |
Request fields are optional laborId, optional attendanceId, date, requestedStatus, requestedWorkHours, requestedOvertimeHours, and reason. Source requires resolved employee, nonblank reason, nonfuture date, and no existing pending request. attendanceId is present in the request type, while workflow resolution uses employee/date as the authoritative lookup. Reject body contains rejectionReason.
The response includes request identity, employee/date, current/requested outcome, reason, workflow state, decision context, timestamps, and optional display fields. Examples intentionally omit personal values. Payroll dependency failure has no distinct public status contract.
Source References
microservices/src/attendance-service/Api/AttendanceDirectEndpoints.csmicroservices/src/attendance-service/Application/Dtos.csmicroservices/src/attendance-service/Application/Services/ReopenRequestWorkflow.csmicroservices/src/attendance-service/Application/IPayrollLockClient.cs
Related Articles
See Also
Keywords
- Attendance API
- Attendance Reopening API
Revision Information
- Status: Draft
- Last reviewed: 2026-07-15
- Review cycle: Quarterly