Deskripsi panggilan API
Sebagai contoh, misalkan aturan lembur di grup absensi Organisasi Anda diatur ke Hitung lembur berdasarkan waktu persetujuan. Di Admin Console DingTalk, buka Kelola grup absensi > Ubah grup absensi > Aturan lembur > Pengaturan. Aturan lembur umum diatur ke Hitung lembur berdasarkan waktu persetujuan. Pengaturan ini berlaku untuk hari kerja, hari istirahat, dan hari libur: lembur wajib disetujui, dan durasi lembur didasarkan pada formulir persetujuan. Panggil API ini untuk mendapatkan detail pengaturan aturan lembur Hitung lembur berdasarkan waktu persetujuan, termasuk nama aturan dan metode perhitungan lembur. Di Admin Console, buka Kelola aturan absensi > Aturan lembur, lalu edit aturan lembur. Panel Edit aturan lembur berisi pengaturan berikut:| Bidang | Opsi / catatan |
|---|---|
| Nama aturan | Maksimal 30 karakter |
| Cakupan penerapan | Misalnya, seluruh Organisasi (kecuali yang memiliki aturan lembur lain) |
| Pemilik | Opsional |
| Tab jenis hari | Hari kerja, Hari istirahat, Hari libur |
| Izinkan lembur | Tombol aktif/nonaktif |
| Periode lembur yang diizinkan | Sebelum kerja, Setelah kerja |
| Metode perhitungan | Hitung berdasarkan durasi persetujuan, atau Hitung berdasarkan durasi absen dalam periode yang disetujui |
Permintaan
Informasi dasar
| Bidang | Nilai |
|---|---|
| URL HTTP | https://api.dingtalk.io/v1.0/attendance/overtimeSettings/query |
| Metode HTTP | POST |
| Jenis aplikasi yang didukung | appType-Aplikasi internal appType-Aplikasi perusahaan pihak ketiga |
| Izin | 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. Dapatkan dengan cara berikut: - Aplikasi internal: Panggil API Mendapatkan access token aplikasi internal. - Aplikasi perusahaan pihak ketiga: Panggil API untuk mendapatkan access token Organisasi yang diotorisasi ke Aplikasi pihak ketiga. |
Isi permintaan
| Nama | Tipe | Wajib | Deskripsi |
|---|---|---|---|
| overtimeSettingIds | Array of Long | Tidak | ID pengaturan aturan lembur. Panggil API Kueri informasi penjadwalan shift pengguna untuk mendapatkannya dari bidang overtimeSettingId di features. |
Contoh permintaan
HTTPPOST /v1.0/attendance/overtimeSettings/query HTTP/1.1
Host:api.dingtalk.io
x-acs-dingtalk-access-token:1d96xxxx
Content-Type:application/json
{
"overtimeSettingIds" : [ 12345678 ]
}
// File ini dibuat secara otomatis, jangan diedit. Terima kasih.
package com.aliyun.sample;
import com.aliyun.tea.*;
import com.aliyun.teautil.*;
import com.aliyun.teautil.models.*;
import com.aliyun.dingtalkattendance_1_0.*;
import com.aliyun.dingtalkattendance_1_0.models.*;
import com.aliyun.teaopenapi.*;
import com.aliyun.teaopenapi.models.*;
public class Sample {
/**
* Inisialisasi Client akun dengan Token
* @return Client
* @throws Exception
*/
public static com.aliyun.dingtalkattendance_1_0.Client createClient() throws Exception {
Config config = new Config();
config.protocol = "https";
config.regionId = "central";
return new com.aliyun.dingtalkattendance_1_0.Client(config);
}
public static void main(String[] args_) throws Exception {
java.util.List<String> args = java.util.Arrays.asList(args_);
com.aliyun.dingtalkattendance_1_0.Client client = Sample.createClient();
GetOvertimeSettingHeaders getOvertimeSettingHeaders = new GetOvertimeSettingHeaders();
getOvertimeSettingHeaders.xAcsDingtalkAccessToken = "<your access token>";
GetOvertimeSettingRequest getOvertimeSettingRequest = new GetOvertimeSettingRequest()
.setOvertimeSettingIds(java.util.Arrays.asList(
12345678L
));
try {
client.getOvertimeSettingWithOptions(getOvertimeSettingRequest, getOvertimeSettingHeaders, new 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 memecahkan 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 memecahkan masalah
}
}
}
}
# -*- coding: utf-8 -*-
# File ini dibuat secara otomatis, jangan diedit. Terima kasih.
import sys
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 dengan 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()
get_overtime_setting_headers = dingtalkattendance__1__0_models.GetOvertimeSettingHeaders()
get_overtime_setting_headers.x_acs_dingtalk_access_token = '<your access token>'
get_overtime_setting_request = dingtalkattendance__1__0_models.GetOvertimeSettingRequest(
overtime_setting_ids=[
12345678
]
)
try:
client.get_overtime_setting_with_options(get_overtime_setting_request, get_overtime_setting_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 memecahkan masalah
pass
@staticmethod
async def main_async(
args: List[str],
) -> None:
client = Sample.create_client()
get_overtime_setting_headers = dingtalkattendance__1__0_models.GetOvertimeSettingHeaders()
get_overtime_setting_headers.x_acs_dingtalk_access_token = '<your access token>'
get_overtime_setting_request = dingtalkattendance__1__0_models.GetOvertimeSettingRequest(
overtime_setting_ids=[
12345678
]
)
try:
await client.get_overtime_setting_with_options_async(get_overtime_setting_request, get_overtime_setting_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 memecahkan 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\GetOvertimeSettingHeaders;
use AlibabaCloud\SDK\Dingtalk\Vattendance_1_0\Models\GetOvertimeSettingRequest;
use AlibabaCloud\Tea\Utils\Utils\RuntimeOptions;
class Sample {
/**
* Inisialisasi Client akun dengan 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();
$getOvertimeSettingHeaders = new GetOvertimeSettingHeaders([]);
$getOvertimeSettingHeaders->xAcsDingtalkAccessToken = "<your access token>";
$getOvertimeSettingRequest = new GetOvertimeSettingRequest([
"overtimeSettingIds" => [
12345678
]
]);
try {
$client->getOvertimeSettingWithOptions($getOvertimeSettingRequest, $getOvertimeSettingHeaders, 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 memecahkan 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));
// File ini dibuat secara otomatis, jangan diedit. Terima kasih.
package main
import (
"os"
util "github.com/alibabacloud-go/tea-utils/service"
dingtalkattendance_1_0 "github.com/alibabacloud-go/dingtalk/attendance_1_0"
openapi "github.com/alibabacloud-go/darabonba-openapi/client"
"github.com/alibabacloud-go/tea/tea"
)
/**
* Inisialisasi Client akun dengan 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
}
getOvertimeSettingHeaders := &dingtalkattendance_1_0.GetOvertimeSettingHeaders{}
getOvertimeSettingHeaders.XAcsDingtalkAccessToken = tea.String("<your access token>")
getOvertimeSettingRequest := &dingtalkattendance_1_0.GetOvertimeSettingRequest{
OvertimeSettingIds: []*int64{tea.Int(12345678)},
}
tryErr := func()(_e error) {
defer func() {
if r := tea.Recover(recover()); r != nil {
_e = r
}
}()
_, _err = client.GetOvertimeSettingWithOptions(getOvertimeSettingRequest, getOvertimeSettingHeaders, &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 memecahkan masalah
}
}
return _err
}
func main() {
err := _main(tea.StringSlice(os.Args[1:]))
if err != nil {
panic(err)
}
}
// File ini dibuat secara otomatis, jangan diedit
import Util, * as $Util from '@alicloud/tea-util';
import dingtalkattendance_1_0, * as $dingtalkattendance_1_0 from '@alicloud/dingtalk/attendance_1_0';
import OpenApi, * as $OpenApi from '@alicloud/openapi-client';
import * as $tea from '@alicloud/tea-typescript';
export default class Client {
/**
* Inisialisasi Client akun dengan Token
* @return Client
* @throws Exception
*/
static createClient(): dingtalkattendance_1_0 {
let config = new $OpenApi.Config({ });
config.protocol = "https";
config.regionId = "central";
return new dingtalkattendance_1_0(config);
}
static async main(args: string[]): Promise<void> {
let client = Client.createClient();
let getOvertimeSettingHeaders = new $dingtalkattendance_1_0.GetOvertimeSettingHeaders({ });
getOvertimeSettingHeaders.xAcsDingtalkAccessToken = "<your access token>";
let getOvertimeSettingRequest = new $dingtalkattendance_1_0.GetOvertimeSettingRequest({
overtimeSettingIds: [
12345678
],
});
try {
await client.getOvertimeSettingWithOptions(getOvertimeSettingRequest, getOvertimeSettingHeaders, new $Util.RuntimeOptions({ }));
} catch (err) {
if (!Util.empty(err.code) && !Util.empty(err.message)) {
// err berisi atribut code dan message untuk membantu memecahkan masalah
}
}
}
}
Client.main(process.argv.slice(2));
// File ini dibuat secara otomatis, jangan diedit. Terima kasih.
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
{
/**
* Inisialisasi Client akun dengan Token
* @return Client
* @throws 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.GetOvertimeSettingHeaders getOvertimeSettingHeaders = new AlibabaCloud.SDK.Dingtalkattendance_1_0.Models.GetOvertimeSettingHeaders();
getOvertimeSettingHeaders.XAcsDingtalkAccessToken = "<your access token>";
AlibabaCloud.SDK.Dingtalkattendance_1_0.Models.GetOvertimeSettingRequest getOvertimeSettingRequest = new AlibabaCloud.SDK.Dingtalkattendance_1_0.Models.GetOvertimeSettingRequest
{
OvertimeSettingIds = new List<long?>
{
12345678
},
};
try
{
client.GetOvertimeSettingWithOptions(getOvertimeSettingRequest, getOvertimeSettingHeaders, 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 memecahkan 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 memecahkan masalah
}
}
}
}
}
// File ini dibuat secara otomatis, jangan diedit. Terima kasih.
#include <alibabacloud/dingtalkattendance__1__0.hpp>
#include <alibabacloud/open_api.hpp>
#include <boost/any.hpp>
#include <darabonba/core.hpp>
#include <darabonba/util.hpp>
#include <iostream>
#include <map>
#include <vector>
using namespace std;
Alibabacloud_Dingtalkattendance_1_0::Client createClient() {
shared_ptr<Alibabacloud_OpenApi::Config> config = make_shared<Alibabacloud_OpenApi::Config>();
config->protocol = make_shared<string>("https");
config->regionId = make_shared<string>("central");
return Alibabacloud_Dingtalkattendance_1_0::Client(config);
}
int main(int argc, char *args[]) {
args++;
shared_ptr<Alibabacloud_Dingtalkattendance_1_0::Client> client = make_shared<Alibabacloud_Dingtalkattendance_1_0::Client>(createClient());
shared_ptr<Alibabacloud_Dingtalkattendance_1_0::GetOvertimeSettingHeaders> getOvertimeSettingHeaders = make_shared<Alibabacloud_Dingtalkattendance_1_0::GetOvertimeSettingHeaders>();
getOvertimeSettingHeaders->xAcsDingtalkAccessToken = make_shared<string>("<your access token>");
shared_ptr<Alibabacloud_Dingtalkattendance_1_0::GetOvertimeSettingRequest> getOvertimeSettingRequest = make_shared<Alibabacloud_Dingtalkattendance_1_0::GetOvertimeSettingRequest>(map<string, boost::any>({
{"overtimeSettingIds", boost::any(vector<long>({
12345678
}))}
}));
try {
client->getOvertimeSettingWithOptions(getOvertimeSettingRequest, getOvertimeSettingHeaders, make_shared<Darabonba_Util::RuntimeOptions>(Darabonba_Util::RuntimeOptions()));
}
catch (std::exception &err) {
if (!Darabonba_Util::Client::empty(err.code) && !Darabonba_Util::Client::empty(err.message)) {
// err berisi atribut code dan message untuk membantu memecahkan masalah
}
}
}
Respons
Isi respons
| Nama | Tipe | Deskripsi |
|---|---|---|
| result | Array | Daftar detail pengaturan lembur. |
| settingId | Long | ID pengaturan. |
| name | String | Nama aturan. |
| default | Boolean | Apakah aturan ini merupakan aturan default. - true: Ya - false: Tidak |
| durationSettings | Map<String, Object> | Daftar jenis tanggal untuk aturan lembur. |
| Object | Detail jenis aturan lembur. | |
| calcType | Integer | Apakah formulir persetujuan diperlukan untuk lembur. Nilai yang valid: - 1: Formulir persetujuan wajib diajukan - 2: Formulir persetujuan tidak diperlukan - 3: Lembur tidak diizinkan |
| durationType | Integer | Metode perhitungan. Nilai yang valid: - 1: Dihitung berdasarkan durasi formulir persetujuan - 2: Dihitung berdasarkan durasi absen |
| overtimeRedress | Boolean | Tombol untuk menghitung durasi lembur sebagai cuti pengganti atau upah lembur. |
| settings | Map | Nilainya adalah Waktu mulai lembur atau Durasi lembur minimum. |
| overtimeRedressBy | String | Cara durasi lembur dihitung. Nilai yang valid: - vacation: Dihitung sebagai cuti pengganti - charge: Dihitung sebagai upah lembur - manual: Dipilih oleh Karyawan |
| vacationRate | Float | Rasio perhitungan durasi cuti pengganti. |
| skipTime | String | Cara waktu istirahat dipotong. Nilai yang valid: - frame: Potong berdasarkan periode istirahat - duration: Potong berdasarkan durasi lembur |
| skipTimeByFrames | Array | Pemotongan berdasarkan periode istirahat. Parameter ini hanya memiliki nilai jika skipTime bernilai frame. |
| startTime | String | Waktu mulai, dalam format HH:mm. |
| endTime | String | Waktu selesai, dalam format HH:mm. |
| valid | Boolean | Apakah pengaturan ini berlaku. - true: Berlaku - false: Tidak berlaku |
| skipTimeByDurations | Array | Pemotongan berdasarkan durasi lembur. Parameter ini hanya memiliki nilai jika skipTime bernilai duration. |
| duration | Long | Ambang batas durasi lembur harian, dalam detik. |
| minus | Long | Durasi yang dipotong, dalam detik. |
| holidayPlanOvertimeRedress | Boolean | Tombol untuk menghitung lembur terjadwal pada hari istirahat atau hari libur sebagai cuti pengganti atau upah lembur. |
| holidayPlanOvertimeRedressBy | String | Cara lembur terjadwal pada hari istirahat atau hari libur dihitung. Nilai yang valid: - vacation: Dihitung sebagai cuti pengganti - charge: Dihitung sebagai upah lembur - manual: Dipilih oleh Karyawan |
| holidayPlanVacationRate | Float | Rasio perhitungan durasi cuti pengganti untuk lembur terjadwal pada hari istirahat atau hari libur. |
| warningSettings | Array | Pengaturan peringatan. |
| time | String | Jenis peringatan. Nilai yang valid: - everyday: Harian - everyweek: Mingguan - everymonth: Bulanan |
| threshold | Long | Ambang batas pengingat. |
| action | String | Nilainya adalah Peringatan risiko atau Durasi lembur maksimum. |
| stepType | Integer | Satuan durasi lembur. |
| stepValue | Float | Apakah durasi lembur dibulatkan, dalam jam. Nilai yang valid: - 1: Tanpa pembulatan - Nilai lain: Dibulatkan ke bawah ke kelipatan terdekat dari nilai langkah |
| workMinutesPerDay | Integer | Durasi yang setara dengan satu hari, dalam menit. |
| overtimeDivisions | Array | Aturan pemisahan waktu. |
| previousDayType | String | Jenis hari sebelumnya. |
| nextDayType | String | Jenis hari berikutnya. |
| timeSplitPoint | String | Titik pemisahan waktu. |
| id | Long | ID pengaturan aturan lembur historis. |
Contoh isi respons
HTTP/1.1 200 OK
Content-Type:application/json
{
"result" : [ {
"settingId" : 841251521,
"name" : "Nama aturan lembur uji coba",
"default" : false,
"durationSettings" : {
"key" : {
"calcType" : 1,
"durationType" : 2,
"overtimeRedress" : true,
"overtimeRedressBy" : "charge",
"vacationRate" : 1,
"skipTime" : "frame",
"skipTimeByFrames" : [ {
"startTime" : "12:00",
"endTime" : "13:00",
"valid" : true
} ],
"skipTimeByDurations" : [ {
"duration" : 18000,
"minus" : 3600
} ],
"holidayPlanOvertimeRedress" : true,
"holidayPlanOvertimeRedressBy" : "vacation",
"holidayPlanVacationRate" : 1
}
},
"warningSettings" : [ {
"time" : "everymonth",
"threshold" : 129600,
"action" : "alert"
} ],
"stepType" : 0,
"stepValue" : 1,
"workMinutesPerDay" : 480,
"overtimeDivisions" : [ {
"previousDayType" : "workDay",
"nextDayType" : "restDay",
"timeSplitPoint" : "00:00"
} ],
"id" : 12345678
} ]
}
Kode error
Jika panggilan API ini gagal, cari solusinya di Dokumen Kode error global berdasarkan pesan error.| HttpCode | Kode error | Pesan error | Deskripsi |
|---|---|---|---|
| 400 | invalidSize | Ukuran tidak valid | Ukuran overtimeSettingIds tidak valid |
| 400 | invalidParameter | Error parameter | Parameter overtimeSettingIds tidak valid |
| 500 | systemError | Error sistem | Error sistem |