submit:attendance permission. The subject is always the caller — there is no userId parameter. The same payload as /me/config, which already carries today's state per slot.core.session_token: ********************Authorization: Bearer ********************curl --location '/attendance/me/today'{
"success": true,
"message": "string",
"meta": {
"page": 0,
"limit": 0,
"total": 0
},
"errors": [
{
"code": "CR-100001",
"field": "string",
"message": "string"
}
],
"result": {
"serverTime": "2026-07-28T00:12:30.000Z",
"timeZone": "Asia/Makassar",
"zones": [
{
"id": "clz1zone0001",
"name": "Kampus A",
"points": [
{
"lat": -0.4645926,
"lng": 117.1297127
},
{
"lat": -0.4657302,
"lng": 117.1293706
},
{
"lat": -0.4668763,
"lng": 117.1299153
},
{
"lat": -0.4645926,
"lng": 117.1297127
}
]
}
],
"slots": [
{
"slotId": "clz1slot0001",
"code": "DAILY_STUDENT",
"label": "Presensi Harian Siswa",
"kind": "DAILY",
"requiresCheckOut": true,
"requiresGeofence": true,
"photoPolicy": "OPTIONAL",
"window": {
"checkInOpenAt": "06:00",
"startAt": "07:00",
"checkInCloseAt": "10:00",
"checkOutOpenAt": "12:00",
"endAt": "15:30",
"checkOutCloseAt": "22:00",
"lateToleranceMinutes": 15,
"earlyLeaveToleranceMinutes": 30
},
"state": "CHECK_IN",
"outcome": null,
"checkInAt": null,
"checkOutAt": null
}
],
"reasons": [
{
"id": "clz1reason001",
"code": "PERMIT",
"label": "Izin",
"requiresEvidence": false
},
{
"id": "clz1reason002",
"code": "SICK",
"label": "Sakit",
"requiresEvidence": true
}
]
}
}