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

# Buat, ambil, perbarui, dan hapus departemen

> Panduan menggunakan API pengelolaan Kontak di aplikasi internal DingTalk untuk membuat, mengambil, memperbarui, dan menghapus departemen — termasuk pengambilan kredensial dan pengaturan izin.

Topik ini menjelaskan cara membuat aplikasi internal dan menggunakan API pengelolaan departemen yang disediakan oleh Kontak untuk membuat, mengambil, memperbarui, dan menghapus departemen di organisasi Anda.

## Hasil yang diharapkan

Informasi departemen ditampilkan sebagai berikut:

## Alur integrasi

1. Dapatkan kredensial aplikasi untuk memperoleh client ID dan Client Secret.
2. Ajukan permintaan izin API yang terkait dengan pengelolaan Kontak.
3. Dapatkan kredensial akses untuk memperoleh `access_token` aplikasi internal. Saat Anda memanggil API, access token digunakan untuk mengautentikasi pemanggil.
4. Panggil API Kontak:

   1. Panggil Server API [Buat departemen](/id/open/development/address-book-creation-department-established-department) untuk membuat departemen dan memperoleh `dept_id`.

      * Untuk membuat subdepartemen di bawah departemen root, atur `parent_id` ke 1. Contoh ini membuat subdepartemen di bawah departemen root.
      * Untuk membuat subdepartemen di bawah departemen lain, panggil terlebih dahulu [Dapatkan daftar departemen](/id/open/development/user-management-acquires-the-list-departments) untuk memperoleh ID departemen, lalu teruskan sebagai nilai `parent_id`.
   2. Panggil Server API [Dapatkan detail departemen](/id/open/development/query-department-details0-v2) dengan `dept_id` untuk mengambil detail departemen.
   3. Panggil Server API [Perbarui departemen](/id/open/development/address-book-update-department) dengan `dept_id` untuk memperbarui informasi departemen.
   4. Panggil Server API [Hapus departemen](/id/open/development/address-book-deletion-department) dengan `dept_id` untuk menghapus departemen.

## Prasyarat

Alur [Buat dan konfigurasikan aplikasi](/id/open/dingstart/create-application) telah selesai.

## Langkah 1: Dapatkan kredensial aplikasi

1. Pilih aplikasi target dan buka halaman detail aplikasi. Klik **Basic information** > **Credentials and basic information**.
2. Dapatkan 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.

## Langkah 3: Dapatkan access token

### Penting

* Untuk detail perbedaan antara Server API lama dan yang baru, lihat Legacy API vs. new API.
* Untuk mengunduh Server API SDK, lihat Download the Server-side SDK.

Gunakan client ID dan Client Secret yang diperoleh pada Langkah 1 untuk memperoleh `access_token` aplikasi internal.

```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 departemen](/id/open/development/address-book-creation-department-established-department) untuk membuat departemen dan memperoleh `dept_id`.

   ```java lines theme={"theme":{"light":"github-light","dark":"github-dark"}}
   public void deptCreate() throws ApiException {
           DingTalkClient client = new DefaultDingTalkClient("https://api.dingtalk.io/topapi/v2/department/create");
           OapiV2DepartmentCreateRequest req = new OapiV2DepartmentCreateRequest();
           req.setParentId(1L);
           req.setOuterDept(true);
           req.setHideDept(false);
           req.setCreateDeptGroup(true);
           req.setOrder(1L);
           req.setName("Departemen Uji 1019");
           req.setSourceIdentifier("Departemen Uji 1019");
           req.setOuterPermitUsers("manager7675,01472825524039877041");
           req.setOuterDeptOnlySelf(true);
           OapiV2DepartmentCreateResponse rsp = client.execute(req, "access_token");
           System.out.println(rsp.getBody());
       }
   ```

   * Untuk membuat subdepartemen di bawah departemen root, atur `parent_id` ke 1. Contoh ini membuat subdepartemen di bawah departemen root.
   * Untuk membuat subdepartemen di bawah departemen lain, panggil terlebih dahulu [Dapatkan daftar departemen](/id/open/development/user-management-acquires-the-list-departments) untuk memperoleh ID departemen, lalu teruskan sebagai nilai `parent_id`.

     ```java lines theme={"theme":{"light":"github-light","dark":"github-dark"}}
     public void departmentList() throws ApiException {
             DingTalkClient client = new DefaultDingTalkClient("https://api.dingtalk.io/topapi/v2/department/listsub");
             OapiV2DepartmentListsubRequest req = new OapiV2DepartmentListsubRequest();
             req.setDeptId(1L);
             req.setLanguage("zh_CN");
             OapiV2DepartmentListsubResponse rsp = client.execute(req, "access_token");
             System.out.println(rsp.getBody());
         }
     ```
2. Panggil Server API [Dapatkan detail departemen](/id/open/development/query-department-details0-v2) dengan `dept_id` untuk mengambil detail departemen.

   ```java lines theme={"theme":{"light":"github-light","dark":"github-dark"}}
   public void deptInfo() throws ApiException {
           DingTalkClient client = new DefaultDingTalkClient("https://api.dingtalk.io/topapi/v2/department/get");
           OapiV2DepartmentGetRequest req = new OapiV2DepartmentGetRequest();
           req.setDeptId(724960197L);
           req.setLanguage("zh_CN");
           OapiV2DepartmentGetResponse rsp = client.execute(req, "access_token");
           System.out.println(rsp.getBody());
       }
   ```
3. Panggil Server API [Perbarui departemen](/id/open/development/address-book-update-department) dengan `dept_id` untuk memperbarui informasi departemen.

   ```java lines theme={"theme":{"light":"github-light","dark":"github-dark"}}
   public void deptModify() throws ApiException {
           DingTalkClient client = new DefaultDingTalkClient("https://api.dingtalk.io/topapi/v2/department/update");
           OapiV2DepartmentUpdateRequest req = new OapiV2DepartmentUpdateRequest();
           req.setDeptId(724960197L);
           req.setParentId(1L);
           req.setOuterDept(true);
           req.setHideDept(false);
           req.setCreateDeptGroup(true);
           req.setOrder(1L);
           req.setName("Departemen Uji 1019");
           req.setSourceIdentifier("Departemen Uji 1019");
           req.setOuterPermitUsers("manager7675,01472825524039877041");
           req.setOuterDeptOnlySelf(true);
           req.setLanguage("zh_CN");
           req.setAutoAddUser(true);
           req.setAutoApproveApply(true);
           req.setOrgDeptOwner("manager7675");
           OapiV2DepartmentUpdateResponse rsp = client.execute(req, "access_token");
           System.out.println(rsp.getBody());
       }
   ```
4. Panggil Server API [Hapus departemen](/id/open/development/address-book-deletion-department) dengan `dept_id` untuk menghapus departemen.

   ```java lines theme={"theme":{"light":"github-light","dark":"github-dark"}}
    public void deptDelete() throws ApiException {
           DingTalkClient client = new DefaultDingTalkClient("https://api.dingtalk.io/topapi/v2/department/delete");
           OapiV2DepartmentDeleteRequest req = new OapiV2DepartmentDeleteRequest();
           req.setDeptId(724960197L);
           OapiV2DepartmentDeleteResponse rsp = client.execute(req, "access_token");
           System.out.println(rsp.getBody());
       }
   ```

   **Catatan**

   * Departemen tidak dapat dihapus jika berisi pengguna atau jika salah satu subdepartemennya berisi pengguna.
   * Departemen tersebut beserta semua subdepartemennya akan dihapus.
   * Setelah departemen dihapus, Obrolan Departemen yang bersangkutan otomatis dibubarkan.
