> ## Documentation Index
> Fetch the complete documentation index at: https://help.dingtalk.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Mendapatkan data absensi pengguna

> Gunakan API DingTalk ini untuk mengambil data absensi pengguna per tanggal, termasuk catatan absen, hasil absen, dan daftar persetujuan untuk rekap kehadiran.

Panggil API ini untuk mendapatkan data absensi pengguna, termasuk catatan absen, hasil absen, dan daftar persetujuan.

## Permintaan

| **Informasi dasar** | |
| - | - |
| URL HTTP | [https://api.dingtalk.io/topapi/attendance/getupdatedata](https://api.dingtalk.io/topapi/attendance/getupdatedata) |
| Metode HTTP | POST |
| Tipe aplikasi yang didukung | appType-Aplikasi internal |
| Izin | permission-qyapi\_get\_attendance\_data-Izin baca data absensi |

### Parameter query

| Nama | Tipe | Wajib | Contoh | Deskripsi |
| - | - | - | - | - |
| access\_token | String | Ya | 6d1bxxxx | Kredensial aplikasi yang digunakan untuk memanggil API ini. Dapatkan dengan memanggil API [Mendapatkan access\_token Aplikasi internal](https://help.dingtalk.io/id/open/development/obtain-orgapp-token). |

### Isi permintaan

| Nama | Tipe | Wajib | Contoh | Deskripsi |
| - | - | - | - | - |
| userid | String | Ya | user01 | ID pengguna. |
| work\_date | Date | Ya | 2021-01-14 | Tanggal query. |

### Contoh permintaan

```curl theme={"theme":{"light":"github-light","dark":"github-dark"}}
curl -X POST "https://api.dingtalk.io/topapi/attendance/getupdatedata" \
-H 'Content-Type:application/x-www-form-urlencoded;charset=utf-8' \
-d 'access_token=e67ccxxxx2144c' \
-d 'userid=userId123456' \
-d 'work_date=2018-05-02+00%3A00%3A00'
```

Java

```java theme={"theme":{"light":"github-light","dark":"github-dark"}}
DingTalkClient client = new DefaultDingTalkClient("https://api.dingtalk.io/topapi/attendance/getupdatedata");
OapiAttendanceGetupdatedataRequest req = new OapiAttendanceGetupdatedataRequest();
req.setUserid("user01");
req.setWorkDate(StringUtils.parseDateTime("2021-01-14"));
OapiAttendanceGetupdatedataResponse rsp = client.execute(req, access_token);
System.out.println(rsp.getBody());
```

Python

```python theme={"theme":{"light":"github-light","dark":"github-dark"}}
import dingtalk.api

req=dingtalk.api.OapiAttendanceGetupdatedataRequest("https://api.dingtalk.io/topapi/attendance/getupdatedata")

req.userid="userId123456"
req.work_date="2018-05-02 00:00:00"
try:
  resp= req.getResponse(access_token)
  print(resp)
except Exception,e:
  print(e)
```

PHP

```php theme={"theme":{"light":"github-light","dark":"github-dark"}}
include "TopSdk.php";
date_default_timezone_set('Asia/Shanghai');

$c = new DingTalkClient(DingTalkConstant::$CALL_TYPE_OAPI, DingTalkConstant::$METHOD_POST , DingTalkConstant::$FORMAT_JSON);
$req = new OapiAttendanceGetupdatedataRequest;
$req->setUserid("userId123456");
$req->setWorkDate("2018-05-02 00:00:00");
$resp = $c->execute($req, $access_token, "https://api.dingtalk.io/topapi/attendance/getupdatedata");
```

C#

```csharp theme={"theme":{"light":"github-light","dark":"github-dark"}}
IDingTalkClient client = new DefaultDingTalkClient("https://api.dingtalk.io/topapi/attendance/getupdatedata");
OapiAttendanceGetupdatedataRequest req = new OapiAttendanceGetupdatedataRequest();
req.Userid = "userId123456";
req.WorkDate = DateTime.Parse("2018-05-02 00:00:00");
OapiAttendanceGetupdatedataResponse rsp = client.Execute(req, access_token);
Console.WriteLine(rsp.Body);
```

## Respons

### Isi respons

| Nama | Tipe | Contoh | Deskripsi |
| - | - | - | - |
| errmsg | String | ok | Deskripsi kode respons. |
| result | AtCheckInfoForOpenVo | | Hasil panggilan. |
| work\_date | Date | 2021-01-14 00:00:00 | Tanggal query. |
| attendance\_result\_list | AtAttendanceResultForOpenVo\[] | | Hasil absen. |
| record\_id | Number | 53429818546 | ID catatan absen. |
| source\_type | String | USER | Sumber absen.   - **USER**: Absen oleh pengguna - **BOSS**: Dikoreksi oleh manajer - **APPROVE**: Sistem persetujuan - **SYSTEM**: Sistem absensi - **AUTO\_CHECK**: Absen otomatis |
| plan\_check\_time | Date | 2021-01-14 09:00:00 | Waktu absen standar. |
| class\_id | Number | 709595172 | ID shift. |
| location\_method | String | MAP | Metode penentuan lokasi. |
| location\_result | String | Normal | Hasil lokasi.   - **Normal**: Dalam jangkauan - **Outside**: Di luar jangkauan - **NotSigned**: Belum absen |
| outside\_remark | String | Kerja lapangan | Catatan kerja lapangan. |
| plan\_id | Number | 176929277767 | ID penjadwalan shift. |
| user\_address | String | Greentown Future Park | Alamat tempat pengguna melakukan absen. |
| group\_id | Number | 710705191 | ID grup absensi. |
| user\_check\_time | Date | 2021-01-14 11:21:59 | Waktu pengguna melakukan absen. |
| procInst\_id | String | PRO-xxx | ID formulir persetujuan. |
| check\_type | String | OnDuty | Tipe absen.   - **OnDuty**: Absen masuk - **OffDuty**: Absen pulang |
| time\_result | String | Late | Hasil waktu absen.   - **Normal**: Normal - **Early**: Pulang lebih awal - **Late**: Keterlambatan - **SeriousLate**: Keterlambatan berat - **Absenteeism**: Mangkir karena keterlambatan - **NotSigned**: Belum absen |
| userid | String | user01 | ID pengguna. |
| approve\_list | AtApproveForOpenVo\[] | | Daftar formulir persetujuan. |
| duration\_unit | String | day | Satuan formulir persetujuan. |
| duration | String | 2.0 | Durasi. |
| sub\_type | String | Cuti tahunan | Nama subtipe. |
| tag\_name | String | 请假 (Pengajuan cuti) | Nama tipe formulir persetujuan. Tipe yang didukung:   - **请假** (Pengajuan cuti) - **出差** (Perjalanan dinas) - **外出** (Keluar kantor) - **加班** (Lembur) |
| procInst\_id | String | 1234abcd | ID formulir persetujuan. |
| begin\_time | Date | 2019-08-15 | Waktu mulai formulir persetujuan. |
| biz\_type | Number | 3 | Tipe formulir persetujuan:   - **1**: Lembur - **2**: Perjalanan dinas/Keluar kantor - **3**: Pengajuan cuti |
| end\_time | Date | 2019-08-17 | Waktu berakhir formulir persetujuan. |
| gmt\_finished | Date | 2019-08-15 | Waktu formulir persetujuan disetujui. |
| check\_record\_list | AtAttendanceRecordForOpenVo\[] | | Detail absen. |
| record\_id | Number | 52710882700 | ID catatan absen. |
| source\_type | String | | Sumber absen.   - **USER**: Absen oleh pengguna - **BOSS**: Dikoreksi oleh manajer - **APPROVE**: Sistem persetujuan - **SYSTEM**: Sistem absensi - **AUTO\_CHECK**: Absen otomatis |
| user\_accuracy | String | 15.0 | Akurasi lokasi pengguna. |
| valid\_matched | Boolean | false | Menunjukkan apakah catatan cocok dengan hasil absen.   - **true**: Cocok - **false**: Tidak cocok |
| user\_check\_time | Date | 2021-01-14 11:19:04 | Waktu pengguna melakukan absen. |
| user\_longitude | String | 120.017267 | Garis bujur lokasi absen. |
| user\_ssid | String | office-wifi-1 | Nama Wi-Fi. |
| base\_accuracy | String | 0.0 | Akurasi lokasi dasar. |
| user\_mac\_addr | String | 11:11:11:11:11:11 | Alamat MAC. |
| user\_latitude | String | 30.285938 | Garis lintang lokasi absen. |
| base\_address | String | Uji coba | Alamat absen dasar. |
| invalid\_record\_msg | String | Perlu konfirmasi kedua | Alasan absen tidak valid. |
| invalid\_record\_type | String | Other | Tipe absen tidak valid. |
| corpId | String | dinge8xxxx | ID organisasi (corpId). |
| class\_setting\_info | AtClassSettingInfoForOpenVo | | Periode istirahat untuk jadwal saat ini. |
| rest\_time\_vo\_list | AtRestTimeVo\[] | | Informasi istirahat dalam shift. |
| rest\_end\_time | Number | 0 | Waktu berakhir istirahat. |
| rest\_begin\_time | Number | 0 | Waktu mulai istirahat. |
| errcode | Number | 0 | Kode respons. |
| success | Boolean | true | Menunjukkan apakah panggilan berhasil.   - **true**: Berhasil - **false**: Gagal |
| request\_id | String | f1zwcp4fr28h | ID permintaan. |

### Contoh isi respons

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{
  "errcode": 0,
  "result": {
    "approve_list": [],
    "attendance_result_list": [
      {
        "location_method": "MAP",
        "record_id": 53429818546,
        "group_id": 710705191,
        "location_result": "Normal",
        "class_id": 709595172,
        "time_result": "Late",
        "user_address": "Greentown Future Park",
        "user_check_time": "2021-01-14 11:21:59",
        "plan_check_time": "2021-01-14 09:00:00",
        "check_type": "OnDuty",
        "source_type": "USER",
        "plan_id": 176929277767
      }
    ],
    "corpId": "dinge8xxxx",
    "work_date": "2021-01-14 09:00:00",
    "userid": "user01",
    "check_record_list": [
      {
        "record_id": 52710882700,
        "user_check_time": "2021-01-14 11:19:04",
        "valid_matched": false,
        "user_accuracy": "15.0",
        "source_type": "USER",
        "invalid_record_msg": "Absensi lapangan memerlukan persetujuan",
        "invalid_record_type": "Other",
        "user_longitude": "120.017267",
        "user_latitude": "30.286036"
      },
      {
        "record_id": 53019968340,
        "user_check_time": "2021-01-14 17:00:45",
        "valid_matched": false,
        "source_type": "USER",
        "invalid_record_msg": "Absen tidak tersedia pada waktu ini. Hubungi admin Anda.",
        "invalid_record_type": "Other"
      }
    ]
  },
  "success": true,
  "request_id": "f1zwcp4fr28h"
}
```

### Kode error

Jika terjadi error saat memanggil API ini, cari solusinya di dokumen [Kode error global](https://help.dingtalk.io/id/open/development/server-api-error-codes-1.md) berdasarkan pesan error yang muncul.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.