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

# Integrasi proses dan halaman DingTalk

> Panduan bagi admin perusahaan dan developer untuk mengintegrasikan proses dan halaman Persetujuan OA DingTalk dengan sistem bisnis pihak ketiga seperti ERP, CRM, dan sistem keuangan, guna mewujudkan pintu masuk terpadu, pertukaran data, dan keterhubungan proses.

## 1. Pengenalan fitur

Panduan ini membantu admin perusahaan atau developer mengintegrasikan **proses persetujuan dan halaman pada sistem Persetujuan OA DingTalk** dengan **sistem bisnis pihak ketiga (seperti ERP, CRM, dan sistem keuangan)**, guna mewujudkan pintu masuk terpadu, pertukaran data, dan keterhubungan proses. Melalui integrasi ini, Anda dapat meningkatkan tingkat otomatisasi perkantoran, menghindari input berulang, serta memperbaiki efisiensi kolaborasi lintas sistem.

## 2. Skenario penggunaan

Mulai proses dari sistem bisnis, panggil API resmi Persetujuan OA DingTalk untuk membuat proses Persetujuan OA DingTalk, lalu buka halaman detail persetujuan DingTalk di sisi DingTalk untuk memproses alurnya.

## 3. Alur bisnis

Alur interaksi menyeluruh antara sistem bisnis dan sisi DingTalk adalah sebagai berikut:

<Frame>
  ![Diagram alur bisnis integrasi proses dan halaman Persetujuan OA DingTalk: sistem bisnis memulai persetujuan, lalu membuka halaman detail resmi di sisi DingTalk untuk pemrosesan dan pengambilan status](https://alidocs.oss-cn-zhangjiakou.aliyuncs.com/a/RO3JEwZ99sgLe5y2/72de4afa8ae34e199a4e9dfccf661f660794.png)
</Frame>

## 4. Efek implementasi

### 1. Memulai proses dari sistem bisnis untuk membuat proses Persetujuan OA

Sistem bisnis memanggil API Persetujuan OA DingTalk untuk memulai persetujuan dan secara otomatis membuat proses Persetujuan OA DingTalk:

<Frame>
  ![Halaman inisiasi sistem bisnis membuat formulir persetujuan pengembalian biaya melalui API Persetujuan OA](https://alidocs.oss-cn-zhangjiakou.aliyuncs.com/res/WgZOZA8z2LpvPqLX/img/9f990d32-5181-44a2-b00b-65a73ed557cc.png)
</Frame>

### 2. Membuka halaman detail Persetujuan OA resmi dari daftar Persetujuan OA DingTalk untuk melakukan persetujuan

Klik formulir persetujuan pada daftar Persetujuan OA DingTalk untuk membuka halaman detail resmi:

<Frame>
  ![Membuka halaman detail persetujuan resmi dari daftar Persetujuan OA DingTalk, menampilkan konten formulir dan catatan proses](https://alidocs.oss-cn-zhangjiakou.aliyuncs.com/res/WgZOZA8z2LpvPqLX/img/45732050-326b-4fe5-a06d-4e6a627fe85c.png)
</Frame>

### 3. Membuka halaman detail Persetujuan OA resmi dari Tugas DingTalk untuk melakukan persetujuan

Klik tugas pada Pusat Tugas DingTalk untuk membuka halaman detail resmi:

<Frame>
  ![Membuka halaman detail Persetujuan OA resmi dari Pusat Tugas DingTalk untuk melakukan tindakan persetujuan](https://alidocs.oss-cn-zhangjiakou.aliyuncs.com/res/WgZOZA8z2LpvPqLX/img/5b9b000b-93ec-4488-9161-036ce198a2ae.png)
</Frame>

## 5. Alur pengembangan

Alur interaksi API antara Aplikasi internal dan Persetujuan OA DingTalk adalah sebagai berikut:

<Frame>
  ![Diagram sekuens interaksi API antara Aplikasi internal dan Persetujuan OA DingTalk, mencakup pembuatan templat, inisiasi instance, tindakan persetujuan, dan notifikasi callback](https://alidocs.oss-cn-zhangjiakou.aliyuncs.com/res/WgZOZA8z2LpvPqLX/img/1ee3302e-f8d1-45d3-a9e7-82b13bef046b.png)
</Frame>

### Pengenalan alur integrasi

<Note>
  Dokumen ini menunjukkan cara membuat Aplikasi internal dan menggunakan API terkait Persetujuan OA resmi—melalui API seperti membuat/memperbarui templat persetujuan resmi, memulai/menarik kembali/berkomentar pada instance persetujuan, menyetujui/menolak/mengalihkan tugas persetujuan, mengunggah/mengunduh lampiran persetujuan, serta peristiwa callback instance Persetujuan OA resmi/tugas persetujuan—guna mewujudkan skenario integrasi di mana sistem bisnis melakukan inisiasi dan halaman detail Persetujuan OA resmi dibuka di sisi DingTalk.
</Note>

Prasyarat: selesaikan alur **Buat aplikasi**.

Langkah 1: Masuk ke halaman detail aplikasi, lalu dapatkan client ID dan Client Secret aplikasi;

Langkah 2: Ajukan Izin API, khususnya izin terkait "Persetujuan OA";

Langkah 3: Dapatkan kredensial akses aplikasi melalui **Dapatkan access token Aplikasi internal**. Saat memanggil API, gunakan access token untuk mengautentikasi identitas pemanggil;

Langkah 4: Panggil API terkait Persetujuan OA:

1. **Buat templat Persetujuan OA resmi:** Admin dapat membuatnya secara manual di Admin Console OA, atau sistem bisnis dapat memanggil Server API versi baru — antarmuka **Buat atau perbarui templat formulir persetujuan** untuk memperoleh kode unik templat `processCode`. Jika `processCode` yang dikembalikan API tidak tersimpan, Anda dapat masuk ke Admin Console DingTalk untuk melihatnya;

Kode templat persetujuan dapat dilihat pada pengaturan templat di Admin Console:

<Frame>
  ![Halaman pengaturan templat persetujuan di Admin Console OA, tempat kode unik templat processCode dapat dilihat](https://alidocs.oss-cn-zhangjiakou.aliyuncs.com/res/WgZOZA8z2LpvPqLX/img/1c664e3d-1bb7-4a32-b630-34c0a368651f.png)
</Frame>

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{
    "name": "Integrasi proses dan halaman Persetujuan OA DingTalk",
    "description": "Anda dapat memulai proses dari sistem bisnis, memanggil API resmi Persetujuan OA DingTalk untuk membuat proses Persetujuan OA DingTalk, kemudian membuka halaman detail persetujuan DingTalk di sisi DingTalk untuk memproses alurnya.",
    "templateConfig": {
        "disableStopProcessButton": false,
        "disableFormEdit": false,
        "disableHomepage": false,
        "hidden": false
    },
    "formComponents": [
        {
            "componentType": "TextField",
            "props": {
                "label": "Kotak input satu baris", // Judul kontrol
                "placeholder": "Silakan masukkan", // Petunjuk input
                "componentId": "TextField_17EZKEGSOCTC0", // ID kontrol, unik dalam formulir, tanpa makna bisnis
                "required": false, // Wajib atau tidak, default opsional
                "bizAlias": "staffId" // Identifier bisnis kontrol, unik dalam formulir, pilih salah satu dengan componentId
            }
        },
        {
            "componentType": "TextareaField",
            "props": {
                "label": "Kotak input multi-baris",
                "placeholder": "Silakan masukkan konten Teks multi-baris, gunakan \r\n untuk ganti baris", // Petunjuk input
                "componentId": "TextareaField_17EZKEGSOCTC0",
                "required": false
            }
        },
        {
            "componentType": "NumberField",
            "props": {
                "label": "Kotak input Angka",
                "placeholder": "Silakan masukkan angka",
                "componentId": "NumberField_108PIFZM21F40",
                "required": false,
                "unit": "Yuan", // Satuan Angka
                "defaultValue": "10" // Default
            }
        },
        {
            "componentType": "DDSelectField",
            "props": {
                "options": [ // Daftar opsi yang dapat dipilih
                    {
                        "value": "Opsi 1", // Nama tampilan opsi
                        "key": "option_0" // Kunci unik dalam kontrol, opsional, sistem akan membuatnya secara default
                    },
                    {
                        "value": "Opsi 2",
                        "key": "option_1"
                    },
                    {
                        "value": "Opsi 3",
                        "key": "option_2"
                    },
                    {
                        "key": "other", // Kunci khusus untuk opsi lainnya
                        "value": "Lainnya"
                    }
                ],
                "label": "Kotak Pilih",
                "placeholder": "Silakan pilih",
                "componentId": "DDSelectField_14T8M4EKXAV40",
                "required": false
            }
        },
        {
            "componentType": "DDMultiSelectField",
            "props": {
                "options": [
                    {
                        "value": "Opsi 1",
                        "key": "option_0"
                    },
                    {
                        "value": "Opsi 2",
                        "key": "option_1"
                    },
                    {
                        "value": "Opsi 3",
                        "key": "option_2"
                    },
                    {
                        "key": "other", // Kunci khusus untuk opsi lainnya
                        "value": "Lainnya"
                    }
                ],
                "label": "Kotak Pilih Banyak",
                "placeholder": "Silakan pilih",
                "componentId": "DDMultiSelectField_1XJ7NG1GSD6O0",
                "required": false
            }
        },
        {
            "componentType": "DDDateField",
            "props": {
                "unit": "小时", // Format tanggal, Nilai enum (小时 jam, 天 hari)
                "format": "yyyy-MM-dd HH:mm", // Format tanggal, opsional, jam berkorespondensi dengan yyyy-MM-dd HH:mm, hari berkorespondensi dengan yyyy-MM-dd HH:mm
                "bizAlias": "",
                "label": "Tanggal",
                "placeholder": "Silakan pilih",
                "componentId": "DDDateField_SQL0DF3MS9C0",
                "required": false,
                "defaultValue": "2021-12-21 17:46" // Default
            }
        },
        {
            "componentType": "DDDateRangeField",
            "props": {
                "unit": "小时",
                "format": "yyyy-MM-dd HH:mm",
                "bizAlias": "",
                "label": "[\"Waktu Mulai\",\"Waktu Selesai\"]",
                "placeholder": "Silakan pilih",
                "componentId": "DDDateRangeField_7MPG14N3OOO0",
                "duration": true, // Apakah durasi dihitung otomatis
                "required": false
            }
        },
        {
            "componentType": "TextNote",
            "props": {
                "link": "https://www.dingtalk.io/", // Hyperlink
                "notPrint": "0",
                "bizAlias": "",
                "componentId": "TextNote_13RP7230RAF40",
                "content": "Teks keterangan" // Teks keterangan
            }
        },
        {
            "componentType": "PhoneField",
            "props": {
                "mode": "phone", // Nilai enum: phone_tel: ponsel dan telepon rumah, phone: ponsel, tel: telepon rumah
                "label": "Telepon",
                "placeholder": "Silakan masukkan",
                "componentId": "PhoneField_Y0XWOX6ZP6O0",
                "required": false
            }
        },
        {
            "componentType": "DDPhotoField",
            "props": {
                "label": "Gambar",
                "componentId": "DDPhotoField_P50A0HMHB280",
                "required": false
            }
        },
        {
            "componentType": "MoneyField",
            "props": {
                "upper": "0", // Nominal perlu huruf besar (0 tidak, 1 perlu), default perlu huruf besar
                "label": "Nominal (Yuan)",
                "placeholder": "Silakan masukkan nominal",
                "componentId": "MoneyField_L1PP26ZDV400",
                "required": false
            }
        },
        {
            "componentType": "DDAttachment",
            "props": {
                "label": "Lampiran",
                "componentId": "DDAttachment_18U4QTOWLMPS0",
                "required": false
            }
        },
        {
            "componentType": "InnerContactField",
            "props": {
                "label": "Kontak",
                "placeholder": "Silakan pilih",
                "componentId": "InnerContactField_162USP4V1BC00",
                "choice": "1", // Nilai enum: 1 mendukung Pilih Banyak, 0 Pilih tunggal, default 0
                "required": false,
                "bizAlias": ""
            }
        },
        {
            "componentType": "DepartmentField",
            "props": {
                "multiple": false, // Apakah mendukung Pilih Banyak, true Pilih Banyak, false Pilih tunggal
                "label": "Departemen",
                "placeholder": "Silakan pilih",
                "componentId": "DepartmentField_1GY5JSPOCY000",
                "required": false
            }
        },
        {
            "componentType": "RelateField",
            "props": {
                "label": "Formulir persetujuan terkait",
                "placeholder": "Silakan pilih",
                "componentId": "RelateField_5X1DL4KMKUW0",
                "required": false,
                "bizAlias": "",
                "availableTemplates": [ // Daftar templat persetujuan yang dapat diasosiasikan, kosong berarti dapat mengasosiasikan data instance dari semua templat persetujuan
                    {
                        "name": "Persetujuan OA Resmi-POP-0328-Rentang tanggal 7", // Nama formulir persetujuan yang dapat diasosiasikan
                        "processCode": "PROC-AF45DE4C-7520-4842-9128-EB7BD0A4EA85" // formCode formulir persetujuan yang dapat diasosiasikan
                    }
                ]
            }
        },
        {
            "componentType": "AddressField",
            "props": {
                "addressModel": "district", // Nilai enum, city provinsi/kota, district provinsi/kota/distrik, street provinsi/kota/distrik-jalan
                "bizAlias": "",
                "label": "Provinsi/Kota/Distrik",
                "componentId": "AddressField_1P9H21H8R2LC0",
                "required": false
            }
        },
        {
            "componentType": "StarRatingField",
            "props": {
                "limit": 5, // Nilai enum: skala 5, skala 10
                "label": "Peringkat",
                "placeholder": "Silakan masukkan",
                "componentId": "StarRatingField_10E5NHTA2W0G0",
                "required": false,
                "bizAlias": ""
            }
        },
        {
            "children": [ // Daftar sub-kontrol dalam detail, daftar sub-kontrol mengikuti standar atribut masing-masing kontrol
                {
                    "componentType": "TextField",
                    "props": {
                        "label": "Kotak input satu baris",
                        "placeholder": "Silakan masukkan",
                        "componentId": "TextField_1UE1ZY1A28AO0",
                        "required": false
                    }
                },
                {
                    "componentType": "MoneyField",
                    "props": {
                        "payEnable": false,
                        "upper": "0",
                        "bizAlias": "",
                        "label": "Nominal (Yuan)",
                        "placeholder": "Silakan masukkan nominal",
                        "componentId": "MoneyField_1S85G4YLMM5C0",
                        "required": false
                    }
                },
                {
                    "componentType": "NumberField",
                    "props": {
                        "unit": "Yuan",
                        "payEnable": false,
                        "bizAlias": "",
                        "label": "Kotak input Angka",
                        "placeholder": "Silakan masukkan angka",
                        "componentId": "NumberField_1XP6AWG50SE80",
                        "required": false
                    }
                }
            ],
            "componentType": "TableField",
            "props": {
                "tableViewMode": "table", // Metode pengisian detail, Nilai enum: list: daftar, table: tabel
                "verticalPrint": true, // Metode Cetak detail, true: vertikal, false: horizontal
                "statField": [ // Pengaturan penghitungan total untuk kontrol Angka dan nominal
                    {
                        "componentId": "MoneyField_1S85G4YLMM5C0",
                        "label": "Nominal (Yuan)"
                    },
                    {
                        "componentId": "NumberField_1XP6AWG50SE80",
                        "label": "Kotak input Angka"
                    }
                ],
                "bizAlias": "",
                "label": "Spreadsheet",
                "componentId": "TableField_1MLEPEAQSXHC0"
            }
        }
    ]
}
```

2. Setelah templat persetujuan berhasil dibuat, pengguna dapat melihat/mengedit templat formulir Persetujuan OA resmi, melihat/mencari data templat, mengekspor/menghapus data templat, dan tindakan lainnya di Admin Console Persetujuan OA DingTalk;

3. **Mulai instance Persetujuan OA resmi:** Pengguna dapat memulai persetujuan secara manual melalui aplikasi resmi Persetujuan OA, atau sistem bisnis dapat memanggil Server API versi baru — antarmuka **Mulai instance persetujuan** berdasarkan `processCode` templat untuk memulai instance persetujuan dan memperoleh `instanceId` instance persetujuan;

   ```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
   {
       "processCode": "PROC-C512D64A-60F6-4F83-B708-xxx",
       "originatorUserId": "manager98xx",
       "deptId": -1,
       "microappAgentId": 348925476,
       "formComponentValues": [
           {
               "name": "Tanggal",
               "value": "2021-08-17"
           },
           {
               "name": "[\"Waktu Mulai\",\"Waktu Selesai\"]",
               "value": "[\"2019-02-19\",\"2019-02-25\"]"
           },
           {
               "name": "KTP",
               "value": "xxxx"
           },
           {
               "name": "Gambar",
               "value": "[\"http://url1\",\"http://url2\",\"http://url3\"]"
           },
           {
               "name": "Spreadsheet",
               "value": "[[{\"name\":\"Kotak input satu baris\",\"value\":\"[Baidu](https://www.baidu.com/)\"},{\"name\":\"Kotak input Angka\",\"value\":\"100\"}]]"
           },
           {
               "name": "Nominal (Yuan)",
               "value": "100"
           },
           {
               "name": "Lampiran",
               "value": "[{\"spaceId\": \"163xxxx658\", \"fileName\": \"2644.JPG\", \"fileSize\": \"333\", \"fileType\": \"jpg\", \"fileId\": \"643xxxx140\"}]"
           },
           {
               "name": "Provinsi/Kota/Distrik",
               "value": "Beijing,Kota Beijing,Distrik Hedong"
           },
           {
               "name": "Peringkat",
               "value": "5"
           },
           {
               "name": "Kotak Teks",
               "value": "Contoh Kotak Teks"
           }
       ],
       "approvers": [
           {
               "actionType": "NONE",
               "userIds": [
                   "manager98xx"
               ]
           },
           {
               "actionType": "OR",
               "userIds": [
                   "manager98xx"
               ]
           }
       ]
   }
   ```

4. Setelah instance persetujuan berhasil dimulai, pengguna dapat masuk ke Pusat Persetujuan OA DingTalk untuk melihat empat Daftar utama persetujuan (Belum diproses, Sudah diproses, Sudah diinisiasi, Yang saya terima), mencari data instance persetujuan, mengeksekusi persetujuan, dan tindakan lainnya;

5. **Tambah Lampiran komentar persetujuan:** Jika perlu menambahkan Lampiran komentar persetujuan, unggah dahulu file ke ruang Drive persetujuan, lalu panggil Server API versi baru — antarmuka **Tambah komentar persetujuan**. Untuk Panduan penggunaan lengkap, lihat: **Alur komentar dan penarikan kembali persetujuan**:

   1. Panggil dahulu Server API versi baru — antarmuka **Dapatkan informasi ruang Drive persetujuan** untuk memperoleh izin unggah ruang Drive dan `spaceId` ruang Drive persetujuan;

   2. Panggil client-side JSAPI — antarmuka **Unggah Lampiran ke Drive/Pilih file dari Drive** untuk memperoleh informasi dasar file. Alur contoh ini diimplementasikan menggunakan **JSAPI Explorer**;

   3. Setelah memperoleh `spaceId` ruang Drive persetujuan, panggil Server API versi baru — antarmuka **Tambah komentar persetujuan** berdasarkan `instanceId` instance persetujuan untuk menambahkan komentar pada Formulir persetujuan.

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{
    "commentUserId": "manager98xx",
    "processInstanceId": "DQ7-X2EESQunrozGEe_xxx",
    "text": "Uji tambah komentar persetujuan",
    "file": {
        "attachments": [
            {
                "spaceId": "817447xxx",
                "fileSize": "173404",
                "fileId": "6660150xxx",
                "fileName": "lampiran-komentar.jpg",
                "fileType": "jpg"
            }
        ],
        "photos": [
            "https://help-static-aliyun-doc.aliyuncs.com/assets/img/zh-CN/9227796361/p352432.png"
        ]
    }
}
```

6. **Pratinjau dan Unduh Lampiran persetujuan:** Jika perlu melakukan Pratinjau/Unduh Lampiran, panggil Server API — antarmuka **Otorisasi Unduh file Drive persetujuan** dan antarmuka **Otorisasi Pratinjau Lampiran persetujuan** untuk memberikan otorisasi pada file Drive persetujuan, lalu panggil Server API — antarmuka **Unduh Lampiran persetujuan** untuk memperoleh Tautan file `downloadUri` sebagai sarana pengunduhan. Untuk Panduan penggunaan lengkap, lihat: **Alur operasi Lampiran persetujuan**;

7. **Setujui/tolak tugas persetujuan:** pemberi persetujuan dapat menyetujui atau menolak tugas persetujuan secara manual melalui Pusat Persetujuan OA DingTalk atau Pusat Tugas DingTalk. Alternatifnya, sistem bisnis dapat memanggil Server API versi baru — antarmuka **Dapatkan detail satu instance persetujuan** berdasarkan `instanceId` instance persetujuan untuk memperoleh detail instance persetujuan beserta informasi `taskId` setiap node tugas dari tugas persetujuan;

8. Berdasarkan `instanceId` instance persetujuan dan `taskId` node tugas yang bersesuaian, panggil Server API versi baru — antarmuka **Setujui atau tolak tugas persetujuan** untuk melaksanakan tindakan tugas persetujuan. Setelah semua node persetujuan menyetujui, Formulir persetujuan tersebut dinyatakan lulus;

   ```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
   {
       "actionerUserId": "manager98xx",
       "processInstanceId": "fsTunaLIRyeRMrddA1YwZQ0964170020xxxx",
       "remark": "Setuju",
       "taskId": 8333450,
       "result": "agree",
       "file": {
           "attachments": [
               {
                   "space_id": "817447xxxx",
                   "file_size": "173404",
                   "file_id": "6660150xxxx",
                   "file_name": "lampiran-komentar.jpg",
                   "file_type": "jpg"
               }
           ],
           "photos": [
               "https://help-static-aliyun-doc.aliyuncs.com/assets/img/zh-CN/9227796361/p352432.png"
           ]
       }
   }
   ```

9. **Tarik kembali instance Persetujuan OA resmi:** Setelah meninjau persetujuan, jika Anda menemukan bahwa Formulir persetujuan yang dikirim salah dan perlu ditarik kembali, panggil Server API versi baru — **Tarik kembali instance persetujuan** berdasarkan `instanceId` instance persetujuan untuk melakukan tindakan penarikan kembali Formulir persetujuan;

   ```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
   {
       "isSystem": true,
       "processInstanceId": "oKPAxjtgSP-AqeVTk-xxxx",
       "operatingUserId": "manager98xx",
       "remark": "Tarik kembali instance persetujuan"
   }
   ```

10. Setelah status Formulir persetujuan berubah, Persetujuan OA mendukung Push peristiwa Callback seperti **perubahan status tugas persetujuan** dan **perubahan status instance persetujuan** ke sistem bisnis, sehingga aplikasi perusahaan dapat terintegrasi lebih dalam dengan platform DingTalk untuk berbagi informasi dan berkolaborasi. Untuk Panduan penggunaan lengkap, lihat: **Panduan operasi Langganan peristiwa**.

## 6. API yang digunakan

### 1. Formulir persetujuan

| API                                                                       | Deskripsi                                                                                                                                            | Spesifikasi versi baru (Server API versi baru)                                |
| ------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------- |
| Buat atau perbarui templat persetujuan                                    | Buat atau perbarui templat formulir alur Persetujuan OA, dengan opsi menentukan daftar kontrol formulir dan menghasilkan proses persetujuan default. | **Buat atau perbarui templat formulir persetujuan**                           |
| Dapatkan schema formulir                                                  | Dapatkan informasi schema formulir yang bersesuaian melalui processCode.                                                                             | **Dapatkan schema formulir**                                                  |
| Dapatkan informasi node dalam alur Formulir persetujuan                   | Dapatkan informasi node dalam alur Formulir persetujuan.                                                                                             | **Dapatkan informasi node dalam alur Formulir persetujuan**                   |
| Dapatkan daftar Formulir persetujuan yang terlihat oleh Pengguna tertentu | Dapatkan daftar Formulir persetujuan yang terlihat oleh Karyawan tersebut secara paginasi berdasarkan ID pengguna Karyawan.                          | **Dapatkan daftar Formulir persetujuan yang terlihat oleh Pengguna tertentu** |
| Dapatkan semua formulir yang dapat dikelola oleh perusahaan saat ini      | Dapatkan semua Formulir persetujuan yang dapat dikelola oleh perusahaan saat ini.                                                                    | **Dapatkan semua formulir yang dapat dikelola oleh perusahaan saat ini**      |

### 2. Instance persetujuan

| API                                       | Deskripsi                                                                      | Spesifikasi versi baru (Server API versi baru) |
| ----------------------------------------- | ------------------------------------------------------------------------------ | ---------------------------------------------- |
| Mulai instance persetujuan                | Mulai instance Persetujuan OA.                                                 | **Mulai instance persetujuan**                 |
| Dapatkan detail satu instance persetujuan | Dapatkan detail instance persetujuan berdasarkan ID instance persetujuan.      | **Dapatkan detail satu instance persetujuan**  |
| Tarik kembali instance persetujuan        | Tarik kembali instance persetujuan yang telah dimulai.                         | **Tarik kembali instance persetujuan**         |
| Tambah komentar persetujuan               | Tambahkan komentar pada instance persetujuan.                                  | **Tambah komentar persetujuan**                |
| Dapatkan daftar ID instance persetujuan   | Dapatkan daftar ID instance persetujuan Departemen terkait dalam Cakupan izin. | **Dapatkan daftar ID instance persetujuan**    |

### 3. Ruang Drive persetujuan & Lampiran

| API                                        | Deskripsi                                                                                                    | Spesifikasi versi baru (Server API versi baru) |
| ------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | ---------------------------------------------- |
| Dapatkan informasi ruang Drive persetujuan | Dapatkan ID ruang Drive persetujuan dan berikan izin unggah Lampiran kepada Pengguna saat ini.               | **Dapatkan informasi ruang Drive persetujuan** |
| Otorisasi Pratinjau Lampiran persetujuan   | Otorisasi Pratinjau Lampiran persetujuan.                                                                    | **Otorisasi Pratinjau Lampiran persetujuan**   |
| Otorisasi Unduh file Drive persetujuan     | Berikan izin Unduh ruang Drive persetujuan untuk file Drive berdasarkan spaceId ruang Drive dan fileId file. | **Otorisasi Unduh file Drive persetujuan**     |
| Unduh Lampiran persetujuan                 | Dapatkan otorisasi Unduh file persetujuan dan hasilkan Tautan Unduh.                                         | **Unduh Lampiran persetujuan**                 |

### 4. Tugas persetujuan

| API                                                | Deskripsi                                                                                                                        | Spesifikasi versi baru (Server API versi baru)         |
| -------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------ |
| Setujui atau tolak tugas persetujuan               | Proses satu tugas persetujuan berdasarkan ID templat, ID instance, ID node persetujuan, dan pemberi persetujuan yang ditentukan. | **Setujui atau tolak tugas persetujuan**               |
| Dapatkan jumlah persetujuan yang menunggu Pengguna | Dapatkan jumlah persetujuan yang belum diproses oleh Pengguna berdasarkan ID pengguna Pengguna.                                  | **Dapatkan jumlah persetujuan yang menunggu Pengguna** |
| Alihkan tugas Persetujuan OA                       | Alihkan tugas Persetujuan OA.                                                                                                    | **Alihkan tugas Persetujuan OA**                       |

### 5. Peristiwa callback persetujuan

#### 5.1 Peristiwa callback untuk jenis Aplikasi internal

| Peristiwa callback                                         | Deskripsi                                                                                                                                                        | Spesifikasi versi baru (Server API versi baru)                 |
| ---------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------- |
| Instance persetujuan dimulai, selesai, dihentikan, dihapus | Ketika instance persetujuan dimulai, selesai, dihentikan, atau dihapus, server DingTalk melakukan Push peristiwa instance persetujuan ke URL callback developer. | **Instance persetujuan dimulai, selesai, dihentikan, dihapus** |
| Tugas persetujuan dimulai, selesai, dibatalkan             | Konten yang di-push kepada pelanggan ketika peristiwa persetujuan berupa tugas persetujuan dimulai, selesai, atau dibatalkan.                                    | **Tugas persetujuan dimulai, selesai, dibatalkan**             |

#### 5.2 Peristiwa callback untuk Aplikasi perusahaan pihak ketiga

| Peristiwa callback                                | Deskripsi                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         | Spesifikasi versi baru (Server API versi baru)        |
| ------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------- |
| Perubahan status instance persetujuan (broadcast) | Skenario peristiwa broadcast persetujuan. Templat Formulir persetujuan yang Milik suatu ISV atau aplikasi Persetujuan OA resmi mungkin juga perlu diotorisasi ke ISV lain untuk integrasi sistem. Setelah otorisasi perusahaan diperoleh melalui jsapi mendapatkan data instance persetujuan berotorisasi, untuk templat persetujuan yang telah diotorisasi, ketika instance dan status tugas Formulir persetujuan yang bersesuaian berubah, callback akan di-push ke ISV yang telah diotorisasi. | **Perubahan status instance persetujuan (broadcast)** |
| Perubahan status tugas persetujuan (broadcast)    | Skenario peristiwa broadcast persetujuan. Templat Formulir persetujuan yang Milik suatu ISV atau aplikasi Persetujuan OA resmi mungkin juga perlu diotorisasi ke ISV lain untuk integrasi sistem. Setelah otorisasi perusahaan diperoleh melalui jsapi mendapatkan data instance persetujuan berotorisasi, untuk templat persetujuan yang telah diotorisasi, ketika instance dan status tugas Formulir persetujuan yang bersesuaian berubah, callback akan di-push ke ISV yang telah diotorisasi. | **Perubahan status tugas persetujuan (broadcast)**    |
| Perubahan status instance persetujuan (terarah)   | Skenario peristiwa terarah persetujuan. Persetujuan OA resmi yang dibuat oleh ISV melalui API terbuka, atau templat "ISV suite" yang dibuat pengguna di Admin Console OA. Pada skenario ini, templat persetujuan tersebut Milik ISV, sehingga ketika pengguna di sisi DingTalk atau pihak ketiga memicu perubahan status instance dan tugas yang bersesuaian melalui API, callback akan di-push secara terarah ke aplikasi ISV yang bersesuaian.                                                  | **Perubahan status instance persetujuan (terarah)**   |
| Perubahan status tugas persetujuan (terarah)      | Skenario peristiwa terarah persetujuan. Persetujuan OA resmi yang dibuat oleh ISV melalui API terbuka, atau templat "ISV suite" yang dibuat pengguna di Admin Console OA. Pada skenario ini, templat persetujuan tersebut Milik ISV, sehingga ketika pengguna di sisi DingTalk atau pihak ketiga memicu perubahan status instance dan tugas yang bersesuaian melalui API, callback akan di-push secara terarah ke aplikasi ISV yang bersesuaian.                                                  | **Perubahan status tugas persetujuan (terarah)**      |

## 7. Dokumen terkait

<CardGroup cols={2}>
  <Card title="Ikhtisar solusi terbuka Pusat proses" icon="sitemap" href="/id/approval/open-solution-overview">
    Ikhtisar empat solusi integrasi sistem bisnis perusahaan dengan Persetujuan OA DingTalk
  </Card>

  <Card title="Integrasi halaman proses pihak ketiga" icon="plug" href="/id/approval/open-third-party-process">
    Sistem bisnis melakukan inisiasi; halaman detail sistem bisnis dibuka di sisi DingTalk untuk persetujuan
  </Card>
</CardGroup>
