Deskripsi panggilan API
Misalnya, seorang karyawan dijadwalkan bekerja hari ini pukul 08.00–18.00. Ia mengirim pengajuan cuti melalui sistem persetujuan milik organisasi sendiri. Setelah pengajuan disetujui, panggil API ini untuk memberi tahu DingTalk Attendance. Karyawan tersebut tidak perlu absen hari ini dan tidak ditandai sebagai tidak hadir. Statusnya ditampilkan sebagai cuti. Contoh lain: karyawan Xiaoding tidak absen pada 15 November, dan statistik kehadiran mencatat absen terlewat ini. Panggil API ini untuk memberi tahu DingTalk bahwa persetujuan telah disetujui. Kehadiran Xiaoding pada 15 November akan berubah menjadi cuti, perjalanan dinas, atau lembur.Permintaan
Informasi dasar
| Bidang | Nilai |
|---|---|
| URL HTTP | https://api.dingtalk.io/v1.0/attendance/approvals/finish |
| Metode HTTP | POST |
| Tipe aplikasi yang didukung | appType-Aplikasi internal appType-Aplikasi perusahaan pihak ketiga |
| Izin yang diperlukan | permission-qyapi_attendance_group_read-Izin kueri grup absensi |
Header permintaan
| Nama | Tipe | Wajib | Deskripsi |
|---|---|---|---|
| x-acs-dingtalk-access-token | String | Ya | Kredensial akses untuk memanggil API ini. Cara memperolehnya: - Aplikasi internal: panggil API Dapatkan access token aplikasi internal. - Aplikasi perusahaan pihak ketiga: panggil API Dapatkan access token organisasi yang memberikan otorisasi kepada Aplikasi pihak ketiga. |
Parameter kueri
| Nama | Tipe | Wajib | Deskripsi |
|---|---|---|---|
| userId | String | Tidak | userId karyawan. |
Isi permintaan
| Nama | Tipe | Wajib | Deskripsi |
|---|---|---|---|
| topCalculateApproveDurationParam | Object | Tidak | Parameter input terkait durasi. |
| bizType | Long | Tidak | Tipe formulir persetujuan. Nilai yang valid: - 1: Lembur - 2: Perjalanan dinas atau keluar kantor - 3: Cuti |
| fromTime | String | Tidak | Waktu mulai. Waktu mulai tidak boleh lebih dari 31 hari sebelum waktu saat ini. Format yang didukung: - 2019-08-15 - 2019-08-15 AM - 2019-08-15 12:43 |
| toTime | String | Tidak | Waktu selesai. Format yang didukung: - 2019-08-15 - 2019-08-15 AM - 2019-08-15 12:43 Catatan - Waktu selesai tidak boleh lebih awal dari waktu mulai. - Rentang waktu tidak boleh melebihi 360 hari. - Jumlah hari antara waktu mulai dan waktu selesai tidak boleh melebihi 31. - Jika biz_type bernilai 1, jumlah hari antara waktu mulai dan waktu selesai tidak boleh melebihi 1. |
| durationUnit | String | Tidak | Satuan durasi. Nilai yang didukung: - day - halfDay - hour: Jika biz_type bernilai 1, hanya hour yang didukung. Format waktu harus sesuai dengan satuan durasi: - 2019-08-15 untuk day - 2019-08-15 AM untuk halfDay - 2019-08-15 12:43 untuk hour |
| calculateModel | Long | Tidak | Metode perhitungan: - 0: Hitung berdasarkan hari kalender - 1: Hitung berdasarkan hari kerja |
| leaveCode | String | Tidak | Pengenal unik aturan cuti. Opsional. Catatan Isi dengan nilai yang tidak kosong hanya jika bizType=3 (cuti). Durasi kemudian dibulatkan sesuai aturan pembulatan yang ditetapkan untuk jenis cuti tersebut. |
| timeZoneId | String | Tidak | ID zona waktu, dengan format Asia/Shanghai. |
| tagName | String | Tidak | Nama tipe formulir persetujuan, maksimal 20 karakter. Nilai yang didukung: 请假 (cuti), 出差 (perjalanan dinas), 外出 (keluar kantor), 加班 (lembur). |
| subType | String | Tidak | Nama subtipe, maksimal 64 karakter. Catatan Parameter ini wajib jika tipe formulir persetujuan biz_type bernilai 3. |
| approveId | String | Tidak | ID formulir persetujuan, maksimal 100 karakter. Nilai kustom. Catatan Aplikasi perusahaan pihak ketiga harus menyimpan nilai ini. Nilai ini wajib saat memberi tahu pembatalan persetujuan. Memanggil API ini lagi dengan approveId yang sama akan menjalankan pembaruan. |
| jumpUrl | String | Tidak | URL pengalihan formulir persetujuan, maksimal 200 karakter. Catatan Saat pengguna mengklik entri Aplikasi perusahaan pihak ketiga di halaman statistik kehadiran, DingTalk mengalihkan mereka ke URL ini. Isi dengan URL halaman detail formulir persetujuan. |
| overtimeDuration | String | Tidak | Wajib jika biz_type bernilai 1. Durasi lembur, dalam jam. |
| overTimeToMore | Long | Tidak | Wajib jika biz_type bernilai 1: - 1: Konversi lembur menjadi cuti pengganti - 2: Konversi lembur menjadi upah |
Contoh permintaan
HTTPPOST /v1.0/attendance/approvals/finish?userId=manager123 HTTP/1.1
Host:api.dingtalk.io
x-acs-dingtalk-access-token:234adfw423xxx
Content-Type:application/json
{
"topCalculateApproveDurationParam" : {
"bizType" : 3,
"fromTime" : "2019-08-15",
"toTime" : "2019-08-15",
"durationUnit" : "day",
"calculateModel" : 1,
"leaveCode" : "3afdsf-143dsadw3-ad23"
"timeZoneId":"Asia/Shanghai"
},
"tagName" : "请假", // Cuti
"subType" : "Cuti tahunan",
"approveId" : "1234abcd",
"dingtalkApproveId" : "https://open.dingtalk.io/",
"jumpUrl" : "https://open.dingtalk.io/",
"overtimeDuration" : "1.07",
"overTimeToMore" : 1
}
package com.aliyun.sample;
import com.aliyun.tea.*;
public class Sample {
/**
* <b>description</b> :
* <p>Inisialisasi Client akun menggunakan Token</p>
* @return Client
*
* @throws Exception
*/
public static com.aliyun.dingtalkattendance_1_0.Client createClient() throws Exception {
com.aliyun.teaopenapi.models.Config config = new com.aliyun.teaopenapi.models.Config();
config.protocol = "https";
config.regionId = "central";
return new com.aliyun.dingtalkattendance_1_0.Client(config);
}
public static void main(String[] args_) throws Exception {
com.aliyun.dingtalkattendance_1_0.Client client = Sample.createClient();
com.aliyun.dingtalkattendance_1_0.models.ProcessApproveFinishHeaders processApproveFinishHeaders = new com.aliyun.dingtalkattendance_1_0.models.ProcessApproveFinishHeaders();
processApproveFinishHeaders.xAcsDingtalkAccessToken = "<your access token>";
com.aliyun.dingtalkattendance_1_0.models.ProcessApproveFinishRequest.ProcessApproveFinishRequestTopCalculateApproveDurationParam topCalculateApproveDurationParam = new com.aliyun.dingtalkattendance_1_0.models.ProcessApproveFinishRequest.ProcessApproveFinishRequestTopCalculateApproveDurationParam()
.setBizType(3L)
.setFromTime("2019-08-15")
.setToTime("2019-08-15")
.setDurationUnit("day")
.setCalculateModel(1L)
.setLeaveCode("3afdsf-143dsadw3-ad23");
.setTimeZoneId("Asia/Shanghai");
com.aliyun.dingtalkattendance_1_0.models.ProcessApproveFinishRequest processApproveFinishRequest = new com.aliyun.dingtalkattendance_1_0.models.ProcessApproveFinishRequest()
.setUserId("manager123")
.setTopCalculateApproveDurationParam(topCalculateApproveDurationParam)
.setTagName("请假") // Cuti
.setSubType("Cuti tahunan")
.setApproveId("1234abcd")
.setJumpUrl("https://open.dingtalk.io/")
.setOvertimeDuration("1.07")
.setOverTimeToMore(1L);
try {
client.processApproveFinishWithOptions(processApproveFinishRequest, processApproveFinishHeaders, new com.aliyun.teautil.models.RuntimeOptions());
} catch (TeaException err) {
if (!com.aliyun.teautil.Common.empty(err.code) && !com.aliyun.teautil.Common.empty(err.message)) {
// err berisi atribut code dan message untuk membantu developer menemukan masalah
}
} catch (Exception _err) {
TeaException err = new TeaException(_err.getMessage(), _err);
if (!com.aliyun.teautil.Common.empty(err.code) && !com.aliyun.teautil.Common.empty(err.message)) {
// err berisi atribut code dan message untuk membantu developer menemukan masalah
}
}
}
}
# -*- coding: utf-8 -*-
# File ini dibuat secara otomatis, jangan diedit. Terima kasih.
import os
import sys
import json
from typing import List
from alibabacloud_dingtalk.attendance_1_0.client import Client as dingtalkattendance_1_0Client
from alibabacloud_tea_openapi import models as open_api_models
from alibabacloud_dingtalk.attendance_1_0 import models as dingtalkattendance__1__0_models
from alibabacloud_tea_util import models as util_models
from alibabacloud_tea_util.client import Client as UtilClient
class Sample:
def __init__(self):
pass
@staticmethod
def create_client() -> dingtalkattendance_1_0Client:
"""
Inisialisasi Client akun menggunakan Token
@return: Client
@throws Exception
"""
config = open_api_models.Config()
config.protocol = 'https'
config.region_id = 'central'
return dingtalkattendance_1_0Client(config)
@staticmethod
def main(
args: List[str],
) -> None:
client = Sample.create_client()
process_approve_finish_headers = dingtalkattendance__1__0_models.ProcessApproveFinishHeaders()
process_approve_finish_headers.x_acs_dingtalk_access_token = '<your access token>'
top_calculate_approve_duration_param = dingtalkattendance__1__0_models.ProcessApproveFinishRequestTopCalculateApproveDurationParam(
biz_type=3,
from_time='2019-08-15',
to_time='2019-08-15',
duration_unit='day',
calculate_model=1,
leave_code='3afdsf-143dsadw3-ad23'
)
process_approve_finish_request = dingtalkattendance__1__0_models.ProcessApproveFinishRequest(
user_id='manager123',
top_calculate_approve_duration_param=top_calculate_approve_duration_param,
tag_name='请假', # Cuti
sub_type='Cuti tahunan',
approve_id='1234abcd',
jump_url='https://open.dingtalk.io/',
overtime_duration='1.07',
over_time_to_more=1
)
try:
client.process_approve_finish_with_options(process_approve_finish_request, process_approve_finish_headers, util_models.RuntimeOptions())
except Exception as err:
if not UtilClient.empty(err.code) and not UtilClient.empty(err.message):
# err berisi atribut code dan message untuk membantu developer menemukan masalah
pass
@staticmethod
async def main_async(
args: List[str],
) -> None:
client = Sample.create_client()
process_approve_finish_headers = dingtalkattendance__1__0_models.ProcessApproveFinishHeaders()
process_approve_finish_headers.x_acs_dingtalk_access_token = '<your access token>'
top_calculate_approve_duration_param = dingtalkattendance__1__0_models.ProcessApproveFinishRequestTopCalculateApproveDurationParam(
biz_type=3,
from_time='2019-08-15',
to_time='2019-08-15',
duration_unit='day',
calculate_model=1,
leave_code='3afdsf-143dsadw3-ad23'
)
process_approve_finish_request = dingtalkattendance__1__0_models.ProcessApproveFinishRequest(
user_id='manager123',
top_calculate_approve_duration_param=top_calculate_approve_duration_param,
tag_name='请假', # Cuti
sub_type='Cuti tahunan',
approve_id='1234abcd',
jump_url='https://open.dingtalk.io/',
overtime_duration='1.07',
over_time_to_more=1
)
try:
await client.process_approve_finish_with_options_async(process_approve_finish_request, process_approve_finish_headers, util_models.RuntimeOptions())
except Exception as err:
if not UtilClient.empty(err.code) and not UtilClient.empty(err.message):
# err berisi atribut code dan message untuk membantu developer menemukan masalah
pass
if __name__ == '__main__':
Sample.main(sys.argv[1:])
<?php
// File ini dibuat secara otomatis, jangan diedit. Terima kasih.
namespace AlibabaCloud\SDK\Sample;
use AlibabaCloud\SDK\Dingtalk\Vattendance_1_0\Dingtalk;
use \Exception;
use AlibabaCloud\Tea\Exception\TeaError;
use AlibabaCloud\Tea\Utils\Utils;
use Darabonba\OpenApi\Models\Config;
use AlibabaCloud\SDK\Dingtalk\Vattendance_1_0\Models\ProcessApproveFinishHeaders;
use AlibabaCloud\SDK\Dingtalk\Vattendance_1_0\Models\ProcessApproveFinishRequest\topCalculateApproveDurationParam;
use AlibabaCloud\SDK\Dingtalk\Vattendance_1_0\Models\ProcessApproveFinishRequest;
use AlibabaCloud\Tea\Utils\Utils\RuntimeOptions;
class Sample {
/**
* Inisialisasi Client akun menggunakan Token
* @return Dingtalk Client
*/
public static function createClient(){
$config = new Config([]);
$config->protocol = "https";
$config->regionId = "central";
return new Dingtalk($config);
}
/**
* @param string[] $args
* @return void
*/
public static function main($args){
$client = self::createClient();
$processApproveFinishHeaders = new ProcessApproveFinishHeaders([]);
$processApproveFinishHeaders->xAcsDingtalkAccessToken = "<your access token>";
$topCalculateApproveDurationParam = new topCalculateApproveDurationParam([
"bizType" => 3,
"fromTime" => "2019-08-15",
"toTime" => "2019-08-15",
"durationUnit" => "day",
"calculateModel" => 1,
"leaveCode" => "3afdsf-143dsadw3-ad23"
]);
$processApproveFinishRequest = new ProcessApproveFinishRequest([
"userId" => "manager123",
"topCalculateApproveDurationParam" => $topCalculateApproveDurationParam,
"tagName" => "请假", // Cuti
"subType" => "Cuti tahunan",
"approveId" => "1234abcd",
"jumpUrl" => "https://open.dingtalk.io/",
"overtimeDuration" => "1.07",
"overTimeToMore" => 1
]);
try {
$client->processApproveFinishWithOptions($processApproveFinishRequest, $processApproveFinishHeaders, new RuntimeOptions([]));
}
catch (Exception $err) {
if (!($err instanceof TeaError)) {
$err = new TeaError([], $err->getMessage(), $err->getCode(), $err);
}
if (!Utils::empty_($err->code) && !Utils::empty_($err->message)) {
// err berisi atribut code dan message untuk membantu developer menemukan masalah
}
}
}
}
$path = __DIR__ . \DIRECTORY_SEPARATOR . '..' . \DIRECTORY_SEPARATOR . 'vendor' . \DIRECTORY_SEPARATOR . 'autoload.php';
if (file_exists($path)) {
require_once $path;
}
Sample::main(array_slice($argv, 1));
package main
import (
"encoding/json"
"strings"
"fmt"
"os"
util "github.com/alibabacloud-go/tea-utils/v2/service"
dingtalkattendance_1_0 "github.com/alibabacloud-go/dingtalk/attendance_1_0"
openapi "github.com/alibabacloud-go/darabonba-openapi/v2/client"
"github.com/alibabacloud-go/tea/tea"
)
// Deskripsi:
//
// Inisialisasi Client akun menggunakan Token
//
// @return Client
//
// @throws Exception
func CreateClient () (_result *dingtalkattendance_1_0.Client, _err error) {
config := &openapi.Config{}
config.Protocol = tea.String("https")
config.RegionId = tea.String("central")
_result = &dingtalkattendance_1_0.Client{}
_result, _err = dingtalkattendance_1_0.NewClient(config)
return _result, _err
}
func _main (args []*string) (_err error) {
client, _err := CreateClient()
if _err != nil {
return _err
}
processApproveFinishHeaders := &dingtalkattendance_1_0.ProcessApproveFinishHeaders{}
processApproveFinishHeaders.XAcsDingtalkAccessToken = tea.String("<your access token>")
topCalculateApproveDurationParam := &dingtalkattendance_1_0.ProcessApproveFinishRequestTopCalculateApproveDurationParam{
BizType: tea.Int64(3),
FromTime: tea.String("2019-08-15"),
ToTime: tea.String("2019-08-15"),
DurationUnit: tea.String("day"),
CalculateModel: tea.Int64(1),
LeaveCode: tea.String("3afdsf-143dsadw3-ad23"),
}
processApproveFinishRequest := &dingtalkattendance_1_0.ProcessApproveFinishRequest{
UserId: tea.String("manager123"),
TopCalculateApproveDurationParam: topCalculateApproveDurationParam,
TagName: tea.String("请假"), // Cuti
SubType: tea.String("Cuti tahunan"),
ApproveId: tea.String("1234abcd"),
JumpUrl: tea.String("https://open.dingtalk.io/"),
OvertimeDuration: tea.String("1.07"),
OverTimeToMore: tea.Int64(1),
}
tryErr := func()(_e error) {
defer func() {
if r := tea.Recover(recover()); r != nil {
_e = r
}
}()
_, _err = client.ProcessApproveFinishWithOptions(processApproveFinishRequest, processApproveFinishHeaders, &util.RuntimeOptions{})
if _err != nil {
return _err
}
return nil
}()
if tryErr != nil {
var err = &tea.SDKError{}
if _t, ok := tryErr.(*tea.SDKError); ok {
err = _t
} else {
err.Message = tea.String(tryErr.Error())
}
if !tea.BoolValue(util.Empty(err.Code)) && !tea.BoolValue(util.Empty(err.Message)) {
// err berisi atribut code dan message untuk membantu developer menemukan masalah
}
}
return _err
}
func main() {
err := _main(tea.StringSlice(os.Args[1:]))
if err != nil {
panic(err)
}
}
'use strict';
// File ini dibuat secara otomatis, jangan diedit
const Util = require('@alicloud/tea-util');
const dingtalkattendance_1_0 = require('@alicloud/dingtalk/attendance_1_0');
const OpenApi = require('@alicloud/openapi-client');
const Tea = require('@alicloud/tea-typescript');
class Client {
/**
* Inisialisasi Client akun menggunakan Token
* @return Client
* @throws Exception
*/
static createClient() {
let config = new OpenApi.Config({ });
config.protocol = 'https';
config.regionId = 'central';
return new dingtalkattendance_1_0.default(config);
}
static async main(args) {
let client = Client.createClient();
let processApproveFinishHeaders = new dingtalkattendance_1_0.ProcessApproveFinishHeaders({ });
processApproveFinishHeaders.xAcsDingtalkAccessToken = '<your access token>';
let topCalculateApproveDurationParam = new dingtalkattendance_1_0.ProcessApproveFinishRequestTopCalculateApproveDurationParam({
bizType: 3,
fromTime: '2019-08-15',
toTime: '2019-08-15',
durationUnit: 'day',
calculateModel: 1,
leaveCode: '3afdsf-143dsadw3-ad23',
});
let processApproveFinishRequest = new dingtalkattendance_1_0.ProcessApproveFinishRequest({
userId: 'manager123',
topCalculateApproveDurationParam: topCalculateApproveDurationParam,
tagName: '请假', // Cuti
subType: 'Cuti tahunan',
approveId: '1234abcd',
jumpUrl: 'https://open.dingtalk.io/',
overtimeDuration: '1.07',
overTimeToMore: 1,
});
try {
await client.processApproveFinishWithOptions(processApproveFinishRequest, processApproveFinishHeaders, new Util.RuntimeOptions({ }));
} catch (err) {
if (!Util.default.empty(err.code) && !Util.default.empty(err.message)) {
// err berisi atribut code dan message untuk membantu developer menemukan masalah
}
}
}
}
exports.Client = Client;
Client.main(process.argv.slice(2));
using Newtonsoft.Json;
using System;
using System.Collections;
using System.Collections.Generic;
using System.IO;
using System.Threading.Tasks;
using Tea;
using Tea.Utils;
namespace AlibabaCloud.SDK.Sample
{
public class Sample
{
/// <term><b>Deskripsi:</b></term>
/// <description>
/// <para>Inisialisasi Client akun menggunakan Token</para>
/// </description>
///
/// <returns>
/// Client
/// </returns>
///
/// <term><b>Exception:</b></term>
/// Exception
public static AlibabaCloud.SDK.Dingtalkattendance_1_0.Client CreateClient()
{
AlibabaCloud.OpenApiClient.Models.Config config = new AlibabaCloud.OpenApiClient.Models.Config();
config.Protocol = "https";
config.RegionId = "central";
return new AlibabaCloud.SDK.Dingtalkattendance_1_0.Client(config);
}
public static void Main(string[] args)
{
AlibabaCloud.SDK.Dingtalkattendance_1_0.Client client = CreateClient();
AlibabaCloud.SDK.Dingtalkattendance_1_0.Models.ProcessApproveFinishHeaders processApproveFinishHeaders = new AlibabaCloud.SDK.Dingtalkattendance_1_0.Models.ProcessApproveFinishHeaders();
processApproveFinishHeaders.XAcsDingtalkAccessToken = "<your access token>";
AlibabaCloud.SDK.Dingtalkattendance_1_0.Models.ProcessApproveFinishRequest.ProcessApproveFinishRequestTopCalculateApproveDurationParam topCalculateApproveDurationParam = new AlibabaCloud.SDK.Dingtalkattendance_1_0.Models.ProcessApproveFinishRequest.ProcessApproveFinishRequestTopCalculateApproveDurationParam
{
BizType = 3,
FromTime = "2019-08-15",
ToTime = "2019-08-15",
DurationUnit = "day",
CalculateModel = 1,
LeaveCode = "3afdsf-143dsadw3-ad23",
};
AlibabaCloud.SDK.Dingtalkattendance_1_0.Models.ProcessApproveFinishRequest processApproveFinishRequest = new AlibabaCloud.SDK.Dingtalkattendance_1_0.Models.ProcessApproveFinishRequest
{
UserId = "manager123",
TopCalculateApproveDurationParam = topCalculateApproveDurationParam,
TagName = "请假", // Cuti
SubType = "Cuti tahunan",
ApproveId = "1234abcd",
JumpUrl = "https://open.dingtalk.io/",
OvertimeDuration = "1.07",
OverTimeToMore = 1,
};
try
{
client.ProcessApproveFinishWithOptions(processApproveFinishRequest, processApproveFinishHeaders, new AlibabaCloud.TeaUtil.Models.RuntimeOptions());
}
catch (TeaException err)
{
if (!AlibabaCloud.TeaUtil.Common.Empty(err.Code) && !AlibabaCloud.TeaUtil.Common.Empty(err.Message))
{
// err berisi atribut code dan message untuk membantu developer menemukan masalah
}
}
catch (Exception _err)
{
TeaException err = new TeaException(new Dictionary<string, object>
{
{ "message", _err.Message }
});
if (!AlibabaCloud.TeaUtil.Common.Empty(err.Code) && !AlibabaCloud.TeaUtil.Common.Empty(err.Message))
{
// err berisi atribut code dan message untuk membantu developer menemukan masalah
}
}
}
}
}
Respons
Isi respons
| Nama | Tipe | Deskripsi |
|---|---|---|
| result | Object | Hasil yang dikembalikan. |
| duration | double | Total durasi. Satuan bidang ini sama dengan satuan yang ditetapkan untuk formulir persetujuan terkait di organisasi Anda. |
| durationDetail | Array | Detail. |
| date | String | Tanggal persetujuan disetujui. |
| duration | double | Durasi harian. |
| success | Boolean | Menunjukkan apakah panggilan API berhasil. |
Contoh isi respons
HTTP/1.1 200 OK
Content-Type:application/json
{
"result" : {
"duration" : 2,
"durationDetail" : [ {
"date" : "2019-08-15",
"duration" : 1
} ]
},
"success" : true
}
Kode error
Jika panggilan API mengembalikan error, cari solusinya berdasarkan pesan error di dokumen Kode error global.| HttpCode | Kode error | Pesan error | Deskripsi |
|---|---|---|---|
| 400 | illegalCalculateType | Mode perhitungan durasi tidak valid | Mode perhitungan durasi tidak valid |
| 400 | illegalDurationUnit | Satuan durasi tidak valid | Satuan durasi tidak valid |
| 400 | illegalApproveType | Tipe persetujuan tidak valid | Tipe persetujuan tidak valid |
| 400 | invalidRequestParams | Error parameter (periksa parameter sesuai dokumentasi) | Error parameter (periksa parameter sesuai dokumentasi) |
| 400 | illegalOvertimeDurationUnit | Satuan durasi lembur tidak valid (lembur hanya mendukung jam) | Satuan durasi lembur tidak valid (lembur hanya mendukung jam) |
| 400 | illegalDateTypeForHalfDay | Format waktu mulai/selesai tidak valid saat DURATION_UNIT bernilai setengah hari | Format waktu mulai/selesai tidak valid saat DURATION_UNIT bernilai setengah hari |
| 400 | beginDateCannotAfterEndDate | Waktu mulai tidak boleh lebih lambat dari waktu selesai | Waktu mulai tidak boleh lebih lambat dari waktu selesai |
| 400 | durationTooLong | Rentang antara waktu mulai dan waktu selesai terlalu panjang | Rentang antara waktu mulai dan waktu selesai terlalu panjang |
| 400 | dateTooEarly | Waktu tidak boleh lebih awal dari jumlah hari yang ditentukan | Waktu tidak boleh lebih awal dari jumlah hari yang ditentukan |
| 400 | overtimeDurationTooLong | Durasi lembur terlalu panjang | Durasi lembur terlalu panjang |
| 400 | repeatApprovesOverLimit | Penulisan formulir persetujuan dengan waktu yang tumpang tindih melebihi batas | Penulisan formulir persetujuan dengan waktu yang tumpang tindih melebihi batas |
| 400 | systemError | Error sistem | Error sistem |