Attendance Submission and Approval API
Summary
Four direct operations save attendance, list pending review, approve, and reject. Saving updates the one daily result rather than providing complete CRUD.
Audience
Frontend/backend developers, QA and support engineers, and implementation partners.
Reference Content
Authentication: Bearer context expected. Self scope is confirmed for non-approving save; approver capability is derived from approved role/permission context. Exact enforcement for decision endpoints requires confirmation. Tenant: required for commands. Maturity: Direct/Shadow.
| Operation | Method and public route | Contract | Responses | Behavior, side effects, and safe example |
|---|---|---|---|---|
| Save or submit attendance | POST /attendance | Body AttendanceSaveRequest[] | 200 ApiResponse<int>; 400 validation | Normalizes each row; non-approver is forced to self context; authorized save may approve; audits and produces submitted/approved event. Example [{"laborId":4242,"date":"2030-01-02","status":"Present","workHours":7.5}] → data:1; invalid employee/status/weekly off → 400. |
| Pending review | GET /attendance/pending | Optional start, end | 200 ApiResponse<PendingAttendanceDto[]> | Returns unapproved non-cleared rows; no side effect. Example date filter → data:[]; binding error → framework 400. |
| Approve attendance | POST /attendance/{id:int}/approve | Integer id; no body | 200 ApiResponse<AttendanceDto>; 404 missing; 400 handled validation | Recalculates canonical values, marks approved, audits, produces approved event. Example fictional id → 200 fictional DTO; unknown id → 404. |
| Reject attendance | POST /attendance/{id:int}/reject | Integer id; RejectRequest | 200 ApiResponse<AttendanceDto>; 404 missing | Clears attendance outcome, retains rejection note, audits, produces rejected event. Example {"message":"Fictional correction required"} → 200; unknown id → 404. |
AttendanceSaveRequest fields: id, laborId, date, status, workHours, overtimeHours, deductionHours, lateMinutes, paidUnits, optional payrollNote, optional isApproved. Application validation requires at least one row, employee, and status; available profiles enforce active state and joining date; manual weekly-off entry is rejected. Values are canonicalized by calculator behavior rather than accepted blindly. RejectRequest contains message.
Ordinary approval/rejection has no confirmed Payroll-lock check. Dedicated bulk approval is not implemented; array save is multi-row submission, not a separate approval operation.
Source References
microservices/src/attendance-service/Api/AttendanceDirectEndpoints.csmicroservices/src/attendance-service/Application/Dtos.csmicroservices/src/attendance-service/Application/Services/AttendanceCommands.csmicroservices/src/attendance-service/Domain/Attendance/AttendanceRecord.cs
Related Articles
See Also
Keywords
- Attendance API
- Attendance Submission and Approval API
Revision Information
- Status: Draft
- Last reviewed: 2026-07-15
- Review cycle: Quarterly