> ## 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.

# Membuat, mengambil, memperbarui, dan menghapus karyawan

> Panduan membuat aplikasi internal DingTalk dan menggunakan API Kelola Kontak untuk membuat, mengambil, memperbarui, serta menghapus karyawan — mencakup alur onboarding lengkap beserta prasyaratnya.

Artikel ini menjelaskan cara membuat aplikasi internal dan menggunakan API manajemen pengguna yang disediakan oleh Kelola Kontak untuk membuat, mengambil, memperbarui, dan menghapus karyawan di organisasi Anda.

## Hasil yang diharapkan

Halaman informasi pengguna ditampilkan di bawah ini:

## Ringkasan alur integrasi

Artikel ini menjelaskan cara membuat aplikasi internal dan menggunakan API manajemen pengguna yang disediakan oleh **Kelola Kontak** untuk membuat, mengambil, memperbarui, dan menghapus karyawan di organisasi Anda.

Langkah 1: Peroleh kredensial aplikasi, termasuk client ID dan Client Secret.

Langkah 2: Ajukan permintaan izin API untuk Kelola Kontak.

Langkah 3: Peroleh [access\_token dari aplikasi internal](/id/open/development/obtain-orgapp-token) sebagai kredensial akses aplikasi. Access token digunakan untuk mengautentikasi pemanggil saat sebuah API dipanggil.

Langkah 4: Panggil API Kontak:

1. Panggil Server API [Buat pengguna](/id/open/development/user-information-creation) untuk membuat pengguna dan memperoleh `userid`.

   * Untuk menambahkan karyawan ke Departemen root, teruskan `1` sebagai parameter. Contoh ini menambahkan karyawan ke Departemen root.
   * Untuk menambahkan karyawan ke departemen tertentu, panggil terlebih dahulu [Peroleh daftar ID subdepartemen](/id/open/development/obtain-the-list-of-sub-department-ids) untuk mendapatkan ID departemen, lalu teruskan sebagai parameter departemen saat membuat pengguna.
2. Dengan `userid`, panggil Server API [Kueri detail pengguna](/id/open/development/query-user-details) untuk mengambil informasi detail pengguna.
3. Dengan `userid`, panggil Server API [Perbarui informasi pengguna](/id/open/development/user-information-update) untuk memperbarui informasi pengguna.
4. Dengan `userid`, panggil Server API [Hapus pengguna](/id/open/development/delete-a-user) untuk menghapus pengguna.

## Prasyarat

Selesaikan alur [pembuatan dan konfigurasi aplikasi](/id/open/dingstart/create-application).

## Langkah 1: Peroleh kredensial aplikasi

1. Pilih aplikasi target untuk masuk ke halaman detail aplikasi, lalu klik **Basic information** > **Credentials and basic information**.
2. Peroleh client ID dan Client Secret.

## Langkah 2: Tambahkan izin API

Klik **Development configuration** > **Manage permissions**. Pada kotak pencarian izin, masukkan `qyapi_manage_addresslist` dan `qyapi_get_department_list`, lalu ajukan permintaan izin tersebut.

## Langkah 3: Peroleh kredensial akses aplikasi (access token)

### Penting

* Untuk perbedaan antar versi Server API, lihat API lama vs. API Baru.
* Untuk mengunduh SDK Server API, lihat Unduh SDK sisi server.

Gunakan client ID dan Client Secret yang diperoleh pada Langkah 1 untuk memperoleh [access\_token dari aplikasi internal](/id/open/development/obtain-orgapp-token) sebagai kredensial akses aplikasi.

```java theme={"theme":{"light":"github-light","dark":"github-dark"}}
public void getAccessToken() throws ApiException {
        DingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.io/gettoken");
        OapiGettokenRequest req = new OapiGettokenRequest();
        req.setAppkey("dingxxxxxxxxxhgn");
        req.setAppsecret("9G_xxxxxxxxxxxxxxx1JDf0Qq3nexxxxxxxxGIO");
        req.setHttpMethod("GET");
        OapiGettokenResponse rsp = client.execute(req);
        System.out.println(rsp.getBody());
    }
```

## Langkah 4: Panggil API Kontak

1. Panggil Server API [Buat pengguna](/id/open/development/user-information-creation) untuk membuat pengguna dan memperoleh `userid`.

   ```java lines theme={"theme":{"light":"github-light","dark":"github-dark"}}
   public void createUser() throws ApiException {
           DingTalkClient client = new DefaultDingTalkClient("https://api.dingtalk.io/topapi/v2/user/create");
           OapiV2UserCreateRequest req = new OapiV2UserCreateRequest();
           req.setUserid("manger7676");
           req.setName("Pengguna Uji 1009");
           req.setSeniorMode(false);
           req.setMobile("152****3025");
           req.setTitle("Direktur Teknis");
           req.setEmail("test*****@xx.com");
           req.setOrgEmail("test***@xxx.com");
           req.setOrgEmailType("profession");
           ArrayList<OapiV2UserCreateRequest.DeptTitle> deptTitles = new ArrayList<>();
           OapiV2UserCreateRequest.DeptTitle deptTitle = new OapiV2UserCreateRequest.DeptTitle();
           deptTitle.setDeptId(724960197L);
           deptTitle.setTitle("Direktur Teknis Senior");
           deptTitles.add(deptTitle);
           req.setDeptTitleList(deptTitles);
           req.setHideMobile(false);
           req.setTelephone("010-8xxxxx6-2345");
           req.setJobNumber("202210190001");
           req.setHiredDate(1666143772000L);
           req.setWorkPlace("Alibaba Center******");
           req.setRemark("Catatan");
           req.setDeptIdList("724960197");
           List<OapiV2UserCreateRequest.DeptOrder> deptOrderList = new ArrayList<OapiV2UserCreateRequest.DeptOrder>();
           OapiV2UserCreateRequest.DeptOrder deptOrder = new OapiV2UserCreateRequest.DeptOrder();
           deptOrder.setDeptId(724960197L);
           deptOrder.setOrder(1L);
           deptOrderList.add(deptOrder);
           req.setDeptOrderList(deptOrderList);
           req.setExtension("{\"Hobby\":\"[Hobi](http://test.com?userid=#userid#&corpid=#corpid#)\"}");
           req.setManagerUserid("manager7676");
           req.setLoginEmail("test****@xxx.com");
           OapiV2UserCreateResponse rsp = client.execute(req, "access_token");
           System.out.println(rsp.getBody());
       }
   ```

   * Untuk menambahkan karyawan ke Departemen root, teruskan `1` sebagai parameter. Contoh ini menambahkan karyawan ke Departemen root.
   * Untuk menambahkan karyawan ke departemen tertentu, panggil terlebih dahulu [Peroleh daftar ID subdepartemen](/id/open/development/obtain-the-list-of-sub-department-ids) untuk mendapatkan ID departemen, lalu teruskan sebagai parameter departemen saat membuat pengguna.

   ```java lines theme={"theme":{"light":"github-light","dark":"github-dark"}}
   public void departmentListSubId() throws ApiException {
           DingTalkClient client = new DefaultDingTalkClient("https://api.dingtalk.io/topapi/v2/department/listsubid");
           OapiV2DepartmentListsubidRequest req = new OapiV2DepartmentListsubidRequest();
           req.setDeptId(1L);
           OapiV2DepartmentListsubidResponse rsp = client.execute(req, "access_token");
           System.out.println(rsp.getBody());
       }
   ```
2. Dengan `userid`, panggil Server API [Kueri detail pengguna](/id/open/development/query-user-details) untuk mengambil informasi detail pengguna.

### Catatan

Beberapa bidang yang dikembalikan oleh API Kueri detail pengguna memiliki persyaratan khusus. Lihat deskripsi bidang pada dokumentasi API [Kueri detail pengguna](/id/open/development/query-user-details).

```java lines theme={"theme":{"light":"github-light","dark":"github-dark"}}
 public void userInfo() throws ApiException {
        DingTalkClient client = new DefaultDingTalkClient("https://api.dingtalk.io/topapi/v2/user/get");
        OapiV2UserGetRequest req = new OapiV2UserGetRequest();
        req.setUserid("manger7676");
        req.setLanguage("zh_CN");
        OapiV2UserGetResponse rsp = client.execute(req, "access_token");
        System.out.println(rsp.getBody());
    }
```

3. Dengan `userid`, panggil Server API [Perbarui informasi pengguna](/id/open/development/user-information-update) untuk memperbarui informasi pengguna.

### Catatan

API Perbarui informasi pengguna saat ini belum mendukung pembaruan nomor ponsel.

```java lines theme={"theme":{"light":"github-light","dark":"github-dark"}}
public void userModify() throws ApiException {
        DingTalkClient client = new DefaultDingTalkClient("https://api.dingtalk.io/topapi/v2/user/update");
        OapiV2UserUpdateRequest req = new OapiV2UserUpdateRequest();
        req.setUserid("manger7676");
        req.setName("Xiao Ding");
        req.setHideMobile(false);
        req.setTelephone("010-86*****6-2345");
        req.setJobNumber("202210190002");
        req.setTitle("Direktur Teknis");
        req.setEmail("test*****@xxx.com");
        req.setWorkPlace("Future Park");
        req.setRemark("Catatan yang diperbarui");
        req.setDeptIdList("1");
        List<OapiV2UserUpdateRequest.DeptOrder> list2 = new ArrayList<OapiV2UserUpdateRequest.DeptOrder>();
        OapiV2UserUpdateRequest.DeptOrder obj3 = new OapiV2UserUpdateRequest.DeptOrder();
        list2.add(obj3);
        obj3.setDeptId(1L);
        obj3.setOrder(1L);
        req.setDeptOrderList(list2);
        req.setExtension("{\"Hobby\":\"Travel\",\"Age\":\"24\"}");
        req.setSeniorMode(false);
        req.setHiredDate(1633017600000L);
        req.setLanguage("zh_CN");
        OapiV2UserUpdateResponse rsp = client.execute(req, "access_token");
        System.out.println(rsp.getBody());
    }
```

4. Dengan `userid`, panggil Server API [Hapus pengguna](/id/open/development/delete-a-user) untuk menghapus pengguna.

   ```java lines theme={"theme":{"light":"github-light","dark":"github-dark"}}
   public void userDelete() throws ApiException {
           DingTalkClient client = new DefaultDingTalkClient("https://api.dingtalk.io/topapi/v2/user/delete");
           OapiV2UserDeleteRequest req = new OapiV2UserDeleteRequest();
           req.setUserid("manager7676");
           OapiV2UserDeleteResponse rsp = client.execute(req, "access_token");
           System.out.println(rsp.getBody());
       }
   ```
