Loading…
object
idrequiredOpaque record id.
kindrequiredatrequiredWhen it happened (the server’s reconciled time).
sourcerequiredapp | web | auto (automatic punch-out) | manager (a correction)
time_sourcerequiredmonotonic | device | server — how `at` was established
captured_atrequiredInstant in ISO 8601, e.g. 2026-10-03T04:30:00.000Z.
received_atrequiredInstant in ISO 8601, e.g. 2026-10-03T04:30:00.000Z.
locationrequiredlocation.latrequiredlocation.lngrequiredlocation.accuracy_mrequiredmock_locationrequiredsiterequiredsite.idrequiredsite.namerequireddistance_mrequiredinsiderequiredInside an office / site radius; null: no site applies.
outside_reasonrequiredhas_selfierequiredselfie_statusrequiredflagsrequiredTamper signals: mock_location, clock_skew, low_accuracy …
voidedrequiredvoid_reasonrequired{
"id": "cmusrceel0000q7kaafxqi1om",
"kind": "in",
"at": "2026-10-06T05:30:00.000Z",
"source": "string",
"time_source": "string",
"captured_at": "2026-10-06T05:30:00.000Z",
"received_at": "2026-10-06T05:30:00.000Z",
"location": {
"lat": 0,
"lng": 0,
"accuracy_m": 0
},
"mock_location": true,
"site": {
"id": "string",
"name": "string"
},
"distance_m": 0,
"inside": true,
"outside_reason": "string",
"has_selfie": true,
"selfie_status": "string",
"flags": [
"string"
],
"voided": true,
"void_reason": "string"
}