Deskripsi panggilan API
Di konsol admin OA DingTalk, Anda dapat membatasi anggota suatu departemen dalam melihat Kontak. API ini memperluas kemampuan tersebut. API ini tidak hanya dapat membatasi anggota suatu departemen, tetapi juga karyawan individu dan peran, dalam melihat Kontak.Pengaturan pembatasan visibilitas yang dikonfigurasi melalui API ini disimpan secara independen dari pengaturan yang dikonfigurasi di konsol admin OA. Efek akhirnya merupakan operasi logika OR dari keduanya. Misalnya, jika departemen yang sama diatur ke “lihat diri sendiri saja” baik melalui API ini maupun konsol admin OA, departemen tersebut akan dibatasi hanya untuk melihat diri sendiri.
Permintaan
Informasi dasar
| Bidang | Nilai |
|---|---|
| URL HTTP | https://api.dingtalk.io/v1.0/contact/restrictions/settings |
| Metode HTTP | PUT |
| Jenis aplikasi yang didukung | appType-Aplikasi internal |
| Izin yang wajib | permission-Contact.Visibility.ReadWrite-Izin untuk mengelola cakupan visibilitas data Kontak |
Header permintaan
| Nama | Tipe | Wajib | Deskripsi |
|---|---|---|---|
| x-acs-dingtalk-access-token | String | Ya | Kredensial akses untuk memanggil API ini. Dapatkan dengan memanggil API Mendapatkan access token aplikasi internal. |
Isi permintaan
| Nama | Tipe | Wajib | Deskripsi |
|---|---|---|---|
| id | Long | Tidak | ID pengaturan. - Jangan sertakan parameter ini saat menambah pengaturan baru. - Untuk mengubah pengaturan yang sudah ada, tentukan parameter ini. Dapatkan ID dengan memanggil API Mendapatkan daftar pengaturan pembatasan visibilitas Kontak. |
| name | String | Tidak | Nama pengaturan. |
| description | String | Tidak | Deskripsi pengaturan. |
| subjectUserIds | Array of String | Tidak | Daftar ID pengguna yang visibilitas Kontaknya dibatasi. Dapatkan userid dengan memanggil API Mendapatkan daftar ID pengguna suatu departemen. Jumlah total elemen pada subjectUserIds, subjectDeptIds, dan subjectTagIds tidak boleh melebihi 50. |
| subjectDeptIds | Array of Long | Tidak | Daftar ID departemen yang visibilitas Kontaknya dibatasi. Dapatkan dept_id dengan memanggil API Mendapatkan daftar departemen. Jumlah total elemen pada subjectUserIds, subjectDeptIds, dan subjectTagIds tidak boleh melebihi 50. |
| subjectTagIds | Array of Long | Tidak | Daftar ID peran yang visibilitas Kontaknya dibatasi. Dapatkan ID peran dengan memanggil API Mendapatkan daftar peran. Jumlah total elemen pada subjectUserIds, subjectDeptIds, dan subjectTagIds tidak boleh melebihi 50. |
| type | String | Ya | Tipe pembatasan. Nilai yang valid: - onlySelf: Hanya dapat melihat diri sendiri. Tidak dapat melihat departemen atau pengguna lain. - onlySelfDeptAndChild: Hanya dapat melihat departemen milik pengguna sendiri dan sub-departemennya. Tidak dapat melihat departemen atau pengguna lain. - excludeNode: Nilai default. Hanya dapat melihat departemen dan pengguna dalam daftar izin. Daftar izin hanya berlaku jika parameter ini diatur ke excludeNode. |
| excludeUserIds | Array of String | Tidak | ID pengguna dalam daftar izin. Dapatkan userid dengan memanggil API Mendapatkan daftar ID pengguna suatu departemen. - Jumlah total elemen pada excludeUserIds, excludeDeptIds, dan excludeTagIds tidak boleh melebihi 50. - Daftar izin hanya berlaku jika type diatur ke excludeNode. |
| excludeDeptIds | Array of Long | Tidak | ID departemen dalam daftar izin. Dapatkan dengan memanggil API Mendapatkan daftar departemen. - Jumlah total elemen pada excludeUserIds, excludeDeptIds, dan excludeTagIds tidak boleh melebihi 50. - Daftar izin hanya berlaku jika type diatur ke excludeNode. |
| excludeTagIds | Array of Long | Tidak | ID peran dalam daftar izin. Dapatkan dengan memanggil API Mendapatkan daftar peran. - Jumlah total elemen pada excludeUserIds, excludeDeptIds, dan excludeTagIds tidak boleh melebihi 50. - Daftar izin hanya berlaku jika type diatur ke excludeNode. |
| active | Boolean | Tidak | Apakah pengaturan ini berlaku. - true: Berlaku. - false: Tidak berlaku. |
| restrictInUserProfile | Boolean | Tidak | Apakah juga membatasi visibilitas di halaman Profil. - true: Ya. - false: Tidak. Jika diaktifkan, mengetuk Foto Profil karyawan di luar cakupan visibilitas pada DingTalk Client tidak akan menampilkan informasi profil pengguna tersebut dalam organisasi saat ini. |
| restrictInSearch | Boolean | Tidak | Apakah juga membatasi pencarian. - true: Ya. - false: Tidak. Jika diaktifkan, mencari karyawan di luar cakupan visibilitas pada DingTalk Client tidak akan menampilkan hasil apa pun. |
Contoh permintaan
HTTPPUT /v1.0/contact/restrictions/settings HTTP/1.1
Host:api.dingtalk.io
x-acs-dingtalk-access-token:xxxxx
Content-Type:application/json
{
"id" : 10001,
"name" : "Anggota departemen xxx hanya dapat melihat diri sendiri",
"description" : "Anggota departemen xxx dibatasi untuk melihat departemen lain",
"subjectUserIds" : [ "userId1" ],
"subjectDeptIds" : [ 10000 ],
"subjectTagIds" : [ 20000 ],
"type" : "excludeNode",
"excludeUserIds" : [ "userId2" ],
"excludeDeptIds" : [ 10000 ],
"excludeTagIds" : [ 20000 ],
"active" : true,
"restrictInUserProfile" : true,
"restrictInSearch" : true
}
// This file is auto-generated, don't edit it. Thanks.
package com.aliyun.sample;
import com.aliyun.tea.*;
public class Sample {
/**
* Initialize the account Client using a Token
* @return Client
* @throws Exception
*/
public static com.aliyun.dingtalkcontact_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.dingtalkcontact_1_0.Client(config);
}
public static void main(String[] args_) throws Exception {
java.util.List<String> args = java.util.Arrays.asList(args_);
com.aliyun.dingtalkcontact_1_0.Client client = Sample.createClient();
com.aliyun.dingtalkcontact_1_0.models.UpdateContactRestrictSettingHeaders updateContactRestrictSettingHeaders = new com.aliyun.dingtalkcontact_1_0.models.UpdateContactRestrictSettingHeaders();
updateContactRestrictSettingHeaders.xAcsDingtalkAccessToken = "<your access token>";
com.aliyun.dingtalkcontact_1_0.models.UpdateContactRestrictSettingRequest updateContactRestrictSettingRequest = new com.aliyun.dingtalkcontact_1_0.models.UpdateContactRestrictSettingRequest()
.setId(10001L)
.setName("Anggota departemen xxx hanya dapat melihat diri sendiri")
.setDescription("Anggota departemen xxx dibatasi untuk melihat departemen lain")
.setSubjectUserIds(java.util.Arrays.asList(
"userId1"
))
.setSubjectDeptIds(java.util.Arrays.asList(
10000L
))
.setSubjectTagIds(java.util.Arrays.asList(
20000L
))
.setType("excludeNode")
.setExcludeUserIds(java.util.Arrays.asList(
"userId2"
))
.setExcludeDeptIds(java.util.Arrays.asList(
10000L
))
.setExcludeTagIds(java.util.Arrays.asList(
20000L
))
.setActive(true)
.setRestrictInUserProfile(true)
.setRestrictInSearch(true);
try {
client.updateContactRestrictSettingWithOptions(updateContactRestrictSettingRequest, updateContactRestrictSettingHeaders, 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, yang membantu menemukan masalah selama pengembangan.
}
} 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, yang membantu menemukan masalah selama pengembangan.
}
}
}
}
# -*- coding: utf-8 -*-
# This file is auto-generated, don't edit it. Thanks.
import sys
from typing import List
from alibabacloud_dingtalk.contact_1_0.client import Client as dingtalkcontact_1_0Client
from alibabacloud_tea_openapi import models as open_api_models
from alibabacloud_dingtalk.contact_1_0 import models as dingtalkcontact__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() -> dingtalkcontact_1_0Client:
"""
Initialize the account Client using a Token
@return: Client
@throws Exception
"""
config = open_api_models.Config()
config.protocol = 'https'
config.region_id = 'central'
return dingtalkcontact_1_0Client(config)
@staticmethod
def main(
args: List[str],
) -> None:
client = Sample.create_client()
update_contact_restrict_setting_headers = dingtalkcontact__1__0_models.UpdateContactRestrictSettingHeaders()
update_contact_restrict_setting_headers.x_acs_dingtalk_access_token = '<your access token>'
update_contact_restrict_setting_request = dingtalkcontact__1__0_models.UpdateContactRestrictSettingRequest(
id=10001,
name='Anggota departemen xxx hanya dapat melihat diri sendiri',
description='Anggota departemen xxx dibatasi untuk melihat departemen lain',
subject_user_ids=[
'userId1'
],
subject_dept_ids=[
10000
],
subject_tag_ids=[
20000
],
type='excludeNode',
exclude_user_ids=[
'userId2'
],
exclude_dept_ids=[
10000
],
exclude_tag_ids=[
20000
],
active=True,
restrict_in_user_profile=True,
restrict_in_search=True
)
try:
client.update_contact_restrict_setting_with_options(update_contact_restrict_setting_request, update_contact_restrict_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, yang membantu menemukan masalah selama pengembangan.
pass
@staticmethod
async def main_async(
args: List[str],
) -> None:
client = Sample.create_client()
update_contact_restrict_setting_headers = dingtalkcontact__1__0_models.UpdateContactRestrictSettingHeaders()
update_contact_restrict_setting_headers.x_acs_dingtalk_access_token = '<your access token>'
update_contact_restrict_setting_request = dingtalkcontact__1__0_models.UpdateContactRestrictSettingRequest(
id=10001,
name='Anggota departemen xxx hanya dapat melihat diri sendiri',
description='Anggota departemen xxx dibatasi untuk melihat departemen lain',
subject_user_ids=[
'userId1'
],
subject_dept_ids=[
10000
],
subject_tag_ids=[
20000
],
type='excludeNode',
exclude_user_ids=[
'userId2'
],
exclude_dept_ids=[
10000
],
exclude_tag_ids=[
20000
],
active=True,
restrict_in_user_profile=True,
restrict_in_search=True
)
try:
await client.update_contact_restrict_setting_with_options_async(update_contact_restrict_setting_request, update_contact_restrict_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, yang membantu menemukan masalah selama pengembangan.
pass
if __name__ == '__main__':
Sample.main(sys.argv[1:])
<?php
// This file is auto-generated, don't edit it. Thanks.
namespace AlibabaCloud\SDK\Sample;
use AlibabaCloud\SDK\Dingtalk\Vcontact_1_0\Dingtalk;
use \Exception;
use AlibabaCloud\Tea\Exception\TeaError;
use AlibabaCloud\Tea\Utils\Utils;
use Darabonba\OpenApi\Models\Config;
use AlibabaCloud\SDK\Dingtalk\Vcontact_1_0\Models\UpdateContactRestrictSettingHeaders;
use AlibabaCloud\SDK\Dingtalk\Vcontact_1_0\Models\UpdateContactRestrictSettingRequest;
use AlibabaCloud\Tea\Utils\Utils\RuntimeOptions;
class Sample {
/**
* Initialize the account Client using a 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();
$updateContactRestrictSettingHeaders = new UpdateContactRestrictSettingHeaders([]);
$updateContactRestrictSettingHeaders->xAcsDingtalkAccessToken = "<your access token>";
$updateContactRestrictSettingRequest = new UpdateContactRestrictSettingRequest([
"id" => 10001,
"name" => "Anggota departemen xxx hanya dapat melihat diri sendiri",
"description" => "Anggota departemen xxx dibatasi untuk melihat departemen lain",
"subjectUserIds" => [
"userId1"
],
"subjectDeptIds" => [
10000
],
"subjectTagIds" => [
20000
],
"type" => "excludeNode",
"excludeUserIds" => [
"userId2"
],
"excludeDeptIds" => [
10000
],
"excludeTagIds" => [
20000
],
"active" => true,
"restrictInUserProfile" => true,
"restrictInSearch" => true
]);
try {
$client->updateContactRestrictSettingWithOptions($updateContactRestrictSettingRequest, $updateContactRestrictSettingHeaders, 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, yang membantu menemukan masalah selama pengembangan.
}
}
}
}
$path = __DIR__ . \DIRECTORY_SEPARATOR . '..' . \DIRECTORY_SEPARATOR . 'vendor' . \DIRECTORY_SEPARATOR . 'autoload.php';
if (file_exists($path)) {
require_once $path;
}
Sample::main(array_slice($argv, 1));
// This file is auto-generated, don't edit it. Thanks.
package main
import (
"os"
util "github.com/alibabacloud-go/tea-utils/v2/service"
dingtalkcontact_1_0 "github.com/alibabacloud-go/dingtalk/contact_1_0"
openapi "github.com/alibabacloud-go/darabonba-openapi/v2/client"
"github.com/alibabacloud-go/tea/tea"
)
/**
* Initialize the account Client using a Token
* @return Client
* @throws Exception
*/
func CreateClient () (_result *dingtalkcontact_1_0.Client, _err error) {
config := &openapi.Config{}
config.Protocol = tea.String("https")
config.RegionId = tea.String("central")
_result = &dingtalkcontact_1_0.Client{}
_result, _err = dingtalkcontact_1_0.NewClient(config)
return _result, _err
}
func _main (args []*string) (_err error) {
client, _err := CreateClient()
if _err != nil {
return _err
}
updateContactRestrictSettingHeaders := &dingtalkcontact_1_0.UpdateContactRestrictSettingHeaders{}
updateContactRestrictSettingHeaders.XAcsDingtalkAccessToken = tea.String("<your access token>")
updateContactRestrictSettingRequest := &dingtalkcontact_1_0.UpdateContactRestrictSettingRequest{
Id: tea.Int64(10001),
Name: tea.String("Anggota departemen xxx hanya dapat melihat diri sendiri"),
Description: tea.String("Anggota departemen xxx dibatasi untuk melihat departemen lain"),
SubjectUserIds: []*string{tea.String("userId1")},
SubjectDeptIds: []*int64{tea.Int64(10000)},
SubjectTagIds: []*int64{tea.Int64(20000)},
Type: tea.String("excludeNode"),
ExcludeUserIds: []*string{tea.String("userId2")},
ExcludeDeptIds: []*int64{tea.Int64(10000)},
ExcludeTagIds: []*int64{tea.Int64(20000)},
Active: tea.Bool(true),
RestrictInUserProfile: tea.Bool(true),
RestrictInSearch: tea.Bool(true),
}
tryErr := func()(_e error) {
defer func() {
if r := tea.Recover(recover()); r != nil {
_e = r
}
}()
_, _err = client.UpdateContactRestrictSettingWithOptions(updateContactRestrictSettingRequest, updateContactRestrictSettingHeaders, &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, yang membantu menemukan masalah selama pengembangan.
}
}
return _err
}
func main() {
err := _main(tea.StringSlice(os.Args[1:]))
if err != nil {
panic(err)
}
}
// This file is auto-generated, don't edit it
import Util, * as $Util from '@alicloud/tea-util';
import dingtalkcontact_1_0, * as $dingtalkcontact_1_0 from '@alicloud/dingtalk/contact_1_0';
import OpenApi, * as $OpenApi from '@alicloud/openapi-client';
import * as $tea from '@alicloud/tea-typescript';
export default class Client {
/**
* Initialize the account Client using a Token
* @return Client
* @throws Exception
*/
static createClient(): dingtalkcontact_1_0 {
let config = new $OpenApi.Config({ });
config.protocol = "https";
config.regionId = "central";
return new dingtalkcontact_1_0(config);
}
static async main(args: string[]): Promise<void> {
let client = Client.createClient();
let updateContactRestrictSettingHeaders = new $dingtalkcontact_1_0.UpdateContactRestrictSettingHeaders({ });
updateContactRestrictSettingHeaders.xAcsDingtalkAccessToken = "<your access token>";
let updateContactRestrictSettingRequest = new $dingtalkcontact_1_0.UpdateContactRestrictSettingRequest({
id: 10001,
name: "Anggota departemen xxx hanya dapat melihat diri sendiri",
description: "Anggota departemen xxx dibatasi untuk melihat departemen lain",
subjectUserIds: [
"userId1"
],
subjectDeptIds: [
10000
],
subjectTagIds: [
20000
],
type: "excludeNode",
excludeUserIds: [
"userId2"
],
excludeDeptIds: [
10000
],
excludeTagIds: [
20000
],
active: true,
restrictInUserProfile: true,
restrictInSearch: true,
});
try {
await client.updateContactRestrictSettingWithOptions(updateContactRestrictSettingRequest, updateContactRestrictSettingHeaders, new $Util.RuntimeOptions({ }));
} catch (err) {
if (!Util.empty(err.code) && !Util.empty(err.message)) {
// err berisi atribut code dan message, yang membantu menemukan masalah selama pengembangan.
}
}
}
}
Client.main(process.argv.slice(2));
// This file is auto-generated, don't edit it. Thanks.
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
{
/**
* Initialize the account Client using a Token
* @return Client
* @throws Exception
*/
public static AlibabaCloud.SDK.Dingtalkcontact_1_0.Client CreateClient()
{
AlibabaCloud.OpenApiClient.Models.Config config = new AlibabaCloud.OpenApiClient.Models.Config();
config.Protocol = "https";
config.RegionId = "central";
return new AlibabaCloud.SDK.Dingtalkcontact_1_0.Client(config);
}
public static void Main(string[] args)
{
AlibabaCloud.SDK.Dingtalkcontact_1_0.Client client = CreateClient();
AlibabaCloud.SDK.Dingtalkcontact_1_0.Models.UpdateContactRestrictSettingHeaders updateContactRestrictSettingHeaders = new AlibabaCloud.SDK.Dingtalkcontact_1_0.Models.UpdateContactRestrictSettingHeaders();
updateContactRestrictSettingHeaders.XAcsDingtalkAccessToken = "<your access token>";
AlibabaCloud.SDK.Dingtalkcontact_1_0.Models.UpdateContactRestrictSettingRequest updateContactRestrictSettingRequest = new AlibabaCloud.SDK.Dingtalkcontact_1_0.Models.UpdateContactRestrictSettingRequest
{
Id = 10001,
Name = "Anggota departemen xxx hanya dapat melihat diri sendiri",
Description = "Anggota departemen xxx dibatasi untuk melihat departemen lain",
SubjectUserIds = new List<string>
{
"userId1"
},
SubjectDeptIds = new List<long?>
{
10000
},
SubjectTagIds = new List<long?>
{
20000
},
Type = "excludeNode",
ExcludeUserIds = new List<string>
{
"userId2"
},
ExcludeDeptIds = new List<long?>
{
10000
},
ExcludeTagIds = new List<long?>
{
20000
},
Active = true,
RestrictInUserProfile = true,
RestrictInSearch = true,
};
try
{
client.UpdateContactRestrictSettingWithOptions(updateContactRestrictSettingRequest, updateContactRestrictSettingHeaders, 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, yang membantu menemukan masalah selama pengembangan.
}
}
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, yang membantu menemukan masalah selama pengembangan.
}
}
}
}
}
Respons
Isi respons
| Nama | Tipe | Deskripsi |
|---|---|---|
| result | Long | ID pengaturan pembatasan. |
Contoh isi respons
HTTP/1.1 200 OK
Content-Type:application/json
{
"result" : 10001
}
Kode error
Jika error dikembalikan saat memanggil API ini, cari solusinya di dokumentasi Kode error global berdasarkan pesan error.| HttpCode | Kode error | Pesan error | Deskripsi |
|---|---|---|---|
| 400 | userIdInvalid | The userId does not exist. | userId tidak ada. |
| 400 | excludeNodeExceed | The total number of elements across the excludeUserIds, excludeDeptIds, and excludeTagIds arrays cannot exceed 50. | Jumlah total elemen pada array excludeUserIds, excludeDeptIds, dan excludeTagIds tidak boleh melebihi 50. |
| 400 | subjectNodeExceed | The total number of elements across the subjectUserIds, subjectDeptIds, and subjectTagIds arrays cannot exceed 50. | Jumlah total elemen pada array subjectUserIds, subjectDeptIds, dan subjectTagIds tidak boleh melebihi 50. |
| 400 | typeInvalid | The type must be one of excludeNode, onlySelf, or onlySelfDeptAndChild. | Tipe harus salah satu dari excludeNode, onlySelf, atau onlySelfDeptAndChild. |
| 400 | subjectNodeEmpty | subjectUserIds, subjectDeptIds, and subjectTagIds cannot all be empty. | subjectUserIds, subjectDeptIds, dan subjectTagIds tidak boleh semuanya kosong. |
| 400 | idInvalid | The setting corresponding to the id does not exist. | Pengaturan yang sesuai dengan id tidak ada. |
| 500 | system.error | System error. | Error sistem. |