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

# Memperbarui properti aplikasi dari file atau folder

> Panggil API ini untuk memperbarui properti aplikasi dari file atau folder di DingTalk. Mendokumentasikan metode panggilan API, parameter permintaan, dan struktur respons.

Panggil API ini untuk memperbarui properti aplikasi dari file atau folder.

## Deskripsi panggilan API

Informasi properti aplikasi yang diteruskan dalam API divalidasi berdasarkan nama properti.

* Jika nama properti file atau folder yang ada cocok dengan nama properti yang diteruskan, API akan memperbarui properti tersebut.
* Jika nama properti file atau folder yang ada tidak cocok dengan nama properti yang diteruskan, API akan menambahkan properti tersebut.

## Permintaan

### Informasi dasar

| Bidang                      | Nilai                                                                                     |
| --------------------------- | ----------------------------------------------------------------------------------------- |
| URL HTTP                    | `https://api.dingtalk.io/v1.0/storage/spaces/{spaceId}/dentries/{dentryId}/appProperties` |
| Metode HTTP                 | PUT                                                                                       |
| Tipe aplikasi yang didukung | appType-Aplikasi internal　appType-Aplikasi perusahaan pihak ketiga                        |
| Izin yang diperlukan        | permission-Storage.File.Write-Izin tulis untuk file penyimpanan organisasi                |

### Header permintaan

| Nama                        | Tipe   | Wajib | Deskripsi                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| --------------------------- | ------ | ----- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| x-acs-dingtalk-access-token | String | Ya    | Kredensial akses untuk memanggil API ini. Dapatkan sebagai berikut:   - Untuk aplikasi internal, panggil API [Mendapatkan access token dari aplikasi internal](/id/open/development/obtain-the-access-token-of-an-internal-app). - Untuk aplikasi perusahaan pihak ketiga, panggil API [Mendapatkan access token dari perusahaan yang diberi otorisasi untuk aplikasi pihak ketiga](https://open.dingtalk.com/document/development/obtain-the-access-token-of-the-authorized-enterprise-1). |

### Parameter jalur

| Nama     | Tipe | Wajib | Deskripsi                                                                                                                                                                                                                                                                             |
| -------- | ---- | ----- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| spaceId  | Long | Ya    | ID ruang. Panggil API [Menambahkan ruang](/id/open/development/add-space) untuk mendapatkan nilai parameter id.                                                                                                                                                                       |
| dentryId | Long | Ya    | ID dari file atau folder. Panggil API [Mendapatkan daftar file atau folder](/id/open/development/get-a-list-of-files-or-folders) atau API [Mendapatkan spaceId dan dentryId berdasarkan dentryUuid](/id/open/development/api-getdentryidbyuuid) untuk mendapatkan nilai parameter id. |

### Parameter kueri

| Nama    | Tipe   | Wajib | Deskripsi                                                                                                                                          |
| ------- | ------ | ----- | -------------------------------------------------------------------------------------------------------------------------------------------------- |
| unionId | String | Ya    | unionId dari operator. Panggil API [Mengkueri detail pengguna](/id/open/development/query-user-details) untuk mendapatkan nilai parameter unionid. |

### Isi permintaan

| Nama          | Tipe   | Wajib | Deskripsi                                                                                                                                                                       |
| ------------- | ------ | ----- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| appProperties | Array  | Ya    | Daftar properti aplikasi. Nilai maksimum adalah 3.                                                                                                                              |
| name          | String | Ya    | Nama properti.       - Jika nama properti sudah ada, informasi properti yang ada akan diperbarui. - Jika nama properti tidak ada, informasi properti akan ditambahkan.          |
| value         | String | Ya    | Nilai properti.                                                                                                                                                                 |
| visibility    | String | Ya    | Cakupan visibilitas properti.   - **PUBLIC**: Properti terlihat oleh semua aplikasi. - **PRIVATE**: Properti hanya terlihat oleh aplikasi pemiliknya. Ini adalah nilai default. |

### Contoh permintaan

HTTP

```http theme={"theme":{"light":"github-light","dark":"github-dark"}}
PUT /v1.0/storage/spaces/854xxxxx/dentries/634xxxxx/appProperties?unionId=cHtUxxxxx HTTP/1.1
Host:api.dingtalk.io
x-acs-dingtalk-access-token:xxxxx
Content-Type:application/json

{
  "appProperties" : [ {
    "name" : "Atribut1",
    "value" : "NilaiAtribut1",
    "visibility" : "PRIVATE"
  } ]
}
```

Java

```java theme={"theme":{"light":"github-light","dark":"github-dark"}}
package com.aliyun.sample;

import com.aliyun.tea.*;

public class Sample {

    /**
     * <b>description</b> :
     * <p>Initialize the account Client with the Token</p>
     * @return Client
     * 
     * @throws Exception
     */
    public static com.aliyun.dingtalkstorage_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.dingtalkstorage_1_0.Client(config);
    }

    public static void main(String[] args_) throws Exception {
        
        com.aliyun.dingtalkstorage_1_0.Client client = Sample.createClient();
        com.aliyun.dingtalkstorage_1_0.models.UpdateDentryAppPropertiesHeaders updateDentryAppPropertiesHeaders = new com.aliyun.dingtalkstorage_1_0.models.UpdateDentryAppPropertiesHeaders();
        updateDentryAppPropertiesHeaders.xAcsDingtalkAccessToken = "<your access token>";
        com.aliyun.dingtalkstorage_1_0.models.UpdateDentryAppPropertiesRequest.UpdateDentryAppPropertiesRequestAppProperties appProperties0 = new com.aliyun.dingtalkstorage_1_0.models.UpdateDentryAppPropertiesRequest.UpdateDentryAppPropertiesRequestAppProperties()
                .setName("Attribute1")
                .setValue("AttributeValue1")
                .setVisibility("PRIVATE");
        com.aliyun.dingtalkstorage_1_0.models.UpdateDentryAppPropertiesRequest updateDentryAppPropertiesRequest = new com.aliyun.dingtalkstorage_1_0.models.UpdateDentryAppPropertiesRequest()
                .setUnionId("cHtUxxxxx")
                .setAppProperties(java.util.Arrays.asList(
                    appProperties0
                ));
        try {
            client.updateDentryAppPropertiesWithOptions("", "", updateDentryAppPropertiesRequest, updateDentryAppPropertiesHeaders, new com.aliyun.teautil.models.RuntimeOptions());
        } catch (TeaException err) {
            if (!com.aliyun.teautil.Common.empty(err.code) && !com.aliyun.teautil.Common.empty(err.message)) {
                // Objek err berisi properti code dan message, yang membantu 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)) {
                // Objek err berisi properti code dan message, yang membantu menemukan masalah
            }

        }        
    }
}
```

Python

```python theme={"theme":{"light":"github-light","dark":"github-dark"}}
# -*- coding: utf-8 -*-
# This file is auto-generated, don't edit it. Thanks.
import os
import sys
import json

from typing import List

from alibabacloud_dingtalk.storage_1_0.client import Client as dingtalkstorage_1_0Client
from alibabacloud_tea_openapi import models as open_api_models
from alibabacloud_dingtalk.storage_1_0 import models as dingtalkstorage__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() -> dingtalkstorage_1_0Client:
        """
        Initialize the account Client with the Token
        @return: Client
        @throws Exception
        """
        config = open_api_models.Config()
        config.protocol = 'https'
        config.region_id = 'central'
        return dingtalkstorage_1_0Client(config)

    @staticmethod
    def main(
        args: List[str],
    ) -> None:
        client = Sample.create_client()
        update_dentry_app_properties_headers = dingtalkstorage__1__0_models.UpdateDentryAppPropertiesHeaders()
        update_dentry_app_properties_headers.x_acs_dingtalk_access_token = '<your access token>'
        app_properties_0 = dingtalkstorage__1__0_models.UpdateDentryAppPropertiesRequestAppProperties(
            name='Attribute1',
            value='AttributeValue1',
            visibility='PRIVATE'
        )
        update_dentry_app_properties_request = dingtalkstorage__1__0_models.UpdateDentryAppPropertiesRequest(
            union_id='cHtUxxxxx',
            app_properties=[
                app_properties_0
            ]
        )
        try:
            client.update_dentry_app_properties_with_options('', '', update_dentry_app_properties_request, update_dentry_app_properties_headers, util_models.RuntimeOptions())
        except Exception as err:
            if not UtilClient.empty(err.code) and not UtilClient.empty(err.message):
                # Objek err berisi properti code dan message, yang membantu menemukan masalah
                pass

    @staticmethod
    async def main_async(
        args: List[str],
    ) -> None:
        client = Sample.create_client()
        update_dentry_app_properties_headers = dingtalkstorage__1__0_models.UpdateDentryAppPropertiesHeaders()
        update_dentry_app_properties_headers.x_acs_dingtalk_access_token = '<your access token>'
        app_properties_0 = dingtalkstorage__1__0_models.UpdateDentryAppPropertiesRequestAppProperties(
            name='Attribute1',
            value='AttributeValue1',
            visibility='PRIVATE'
        )
        update_dentry_app_properties_request = dingtalkstorage__1__0_models.UpdateDentryAppPropertiesRequest(
            union_id='cHtUxxxxx',
            app_properties=[
                app_properties_0
            ]
        )
        try:
            await client.update_dentry_app_properties_with_options_async('', '', update_dentry_app_properties_request, update_dentry_app_properties_headers, util_models.RuntimeOptions())
        except Exception as err:
            if not UtilClient.empty(err.code) and not UtilClient.empty(err.message):
                # Objek err berisi properti code dan message, yang membantu menemukan masalah
                pass

if __name__ == '__main__':
    Sample.main(sys.argv[1:])
```

PHP

```java theme={"theme":{"light":"github-light","dark":"github-dark"}}
<?php

// This file is auto-generated, don't edit it. Thanks.
namespace AlibabaCloud\SDK\Sample;

use AlibabaCloud\SDK\Dingtalk\Vstorage_1_0\Dingtalk;
use \Exception;
use AlibabaCloud\Tea\Exception\TeaError;
use AlibabaCloud\Tea\Utils\Utils;

use Darabonba\OpenApi\Models\Config;
use AlibabaCloud\SDK\Dingtalk\Vstorage_1_0\Models\UpdateDentryAppPropertiesHeaders;
use AlibabaCloud\SDK\Dingtalk\Vstorage_1_0\Models\UpdateDentryAppPropertiesRequest\appProperties;
use AlibabaCloud\SDK\Dingtalk\Vstorage_1_0\Models\UpdateDentryAppPropertiesRequest;
use AlibabaCloud\Tea\Utils\Utils\RuntimeOptions;

class Sample {

    /**
     * Initialize the account Client with the 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();
        $updateDentryAppPropertiesHeaders = new UpdateDentryAppPropertiesHeaders([]);
        $updateDentryAppPropertiesHeaders->xAcsDingtalkAccessToken = "<your access token>";
        $appProperties0 = new appProperties([
            "name" => "Attribute1",
            "value" => "AttributeValue1",
            "visibility" => "PRIVATE"
        ]);
        $updateDentryAppPropertiesRequest = new UpdateDentryAppPropertiesRequest([
            "unionId" => "cHtUxxxxx",
            "appProperties" => [
                $appProperties0
            ]
        ]);
        try {
            $client->updateDentryAppPropertiesWithOptions("", "", $updateDentryAppPropertiesRequest, $updateDentryAppPropertiesHeaders, 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)) {
                // Objek err berisi properti code dan message, yang membantu 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));
```

Go

```go theme={"theme":{"light":"github-light","dark":"github-dark"}}
package main

import (
  "encoding/json"
  "strings"
  "fmt"
  "os"
  util  "github.com/alibabacloud-go/tea-utils/v2/service"
  dingtalkstorage_1_0  "github.com/alibabacloud-go/dingtalk/storage_1_0"
  openapi  "github.com/alibabacloud-go/darabonba-openapi/v2/client"
  "github.com/alibabacloud-go/tea/tea"
)

// Description:
// 
// Initialize the account Client with the Token
// 
// @return Client
// 
// @throws Exception
func CreateClient () (_result *dingtalkstorage_1_0.Client, _err error) {
  config := &openapi.Config{}
  config.Protocol = tea.String("https")
  config.RegionId = tea.String("central")
  _result = &dingtalkstorage_1_0.Client{}
  _result, _err = dingtalkstorage_1_0.NewClient(config)
  return _result, _err
}

func _main (args []*string) (_err error) {
  client, _err := CreateClient()
  if _err != nil {
    return _err
  }

  updateDentryAppPropertiesHeaders := &dingtalkstorage_1_0.UpdateDentryAppPropertiesHeaders{}
  updateDentryAppPropertiesHeaders.XAcsDingtalkAccessToken = tea.String("<your access token>")
  appProperties0 := &dingtalkstorage_1_0.UpdateDentryAppPropertiesRequestAppProperties{
    Name: tea.String("Attribute1"),
    Value: tea.String("AttributeValue1"),
    Visibility: tea.String("PRIVATE"),
  }
  updateDentryAppPropertiesRequest := &dingtalkstorage_1_0.UpdateDentryAppPropertiesRequest{
    UnionId: tea.String("cHtUxxxxx"),
    AppProperties: []*dingtalkstorage_1_0.UpdateDentryAppPropertiesRequestAppProperties{appProperties0},
  }
  tryErr := func()(_e error) {
    defer func() {
      if r := tea.Recover(recover()); r != nil {
        _e = r
      }
    }()
    _, _err = client.UpdateDentryAppPropertiesWithOptions(tea.String(""), tea.String(""), updateDentryAppPropertiesRequest, updateDentryAppPropertiesHeaders, &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)) {
      // Objek err berisi properti code dan message, yang membantu menemukan masalah
    }

  }
  return _err
}

func main() {
  err := _main(tea.StringSlice(os.Args[1:]))
  if err != nil {
    panic(err)
  }
}
```

Node.js

```text theme={"theme":{"light":"github-light","dark":"github-dark"}}
'use strict';
// This file is auto-generated, don't edit it
const Util = require('@alicloud/tea-util');
const dingtalkstorage_1_0 = require('@alicloud/dingtalk/storage_1_0');
const OpenApi = require('@alicloud/openapi-client');
const Tea = require('@alicloud/tea-typescript');

class Client {

  /**
   * Initialize the account Client with the Token
   * @return Client
   * @throws Exception
   */
  static createClient() {
    let config = new OpenApi.Config({ });
    config.protocol = 'https';
    config.regionId = 'central';
    return new dingtalkstorage_1_0.default(config);
  }

  static async main(args) {
    let client = Client.createClient();
    let updateDentryAppPropertiesHeaders = new dingtalkstorage_1_0.UpdateDentryAppPropertiesHeaders({ });
    updateDentryAppPropertiesHeaders.xAcsDingtalkAccessToken = '<your access token>';
    let appProperties0 = new dingtalkstorage_1_0.UpdateDentryAppPropertiesRequestAppProperties({
      name: 'Attribute1',
      value: 'AttributeValue1',
      visibility: 'PRIVATE',
    });
    let updateDentryAppPropertiesRequest = new dingtalkstorage_1_0.UpdateDentryAppPropertiesRequest({
      unionId: 'cHtUxxxxx',
      appProperties: [
        appProperties0
      ],
    });
    try {
      await client.updateDentryAppPropertiesWithOptions('', '', updateDentryAppPropertiesRequest, updateDentryAppPropertiesHeaders, new Util.RuntimeOptions({ }));
    } catch (err) {
      if (!Util.default.empty(err.code) && !Util.default.empty(err.message)) {
        // Objek err berisi properti code dan message, yang membantu menemukan masalah
      }

    }    
  }

}

exports.Client = Client;
Client.main(process.argv.slice(2));
```

C#

```java theme={"theme":{"light":"github-light","dark":"github-dark"}}
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>Description:</b></term>
        /// <description>
        /// <para>Initialize the account Client with the Token</para>
        /// </description>
        /// 
        /// <returns>
        /// Client
        /// </returns>
        /// 
        /// <term><b>Exception:</b></term>
        /// Exception
        public static AlibabaCloud.SDK.Dingtalkstorage_1_0.Client CreateClient()
        {
            AlibabaCloud.OpenApiClient.Models.Config config = new AlibabaCloud.OpenApiClient.Models.Config();
            config.Protocol = "https";
            config.RegionId = "central";
            return new AlibabaCloud.SDK.Dingtalkstorage_1_0.Client(config);
        }

        public static void Main(string[] args)
        {
            AlibabaCloud.SDK.Dingtalkstorage_1_0.Client client = CreateClient();
            AlibabaCloud.SDK.Dingtalkstorage_1_0.Models.UpdateDentryAppPropertiesHeaders updateDentryAppPropertiesHeaders = new AlibabaCloud.SDK.Dingtalkstorage_1_0.Models.UpdateDentryAppPropertiesHeaders();
            updateDentryAppPropertiesHeaders.XAcsDingtalkAccessToken = "<your access token>";
            AlibabaCloud.SDK.Dingtalkstorage_1_0.Models.UpdateDentryAppPropertiesRequest.UpdateDentryAppPropertiesRequestAppProperties appProperties0 = new AlibabaCloud.SDK.Dingtalkstorage_1_0.Models.UpdateDentryAppPropertiesRequest.UpdateDentryAppPropertiesRequestAppProperties
            {
                Name = "Attribute1",
                Value = "AttributeValue1",
                Visibility = "PRIVATE",
            };
            AlibabaCloud.SDK.Dingtalkstorage_1_0.Models.UpdateDentryAppPropertiesRequest updateDentryAppPropertiesRequest = new AlibabaCloud.SDK.Dingtalkstorage_1_0.Models.UpdateDentryAppPropertiesRequest
            {
                UnionId = "cHtUxxxxx",
                AppProperties = new List<AlibabaCloud.SDK.Dingtalkstorage_1_0.Models.UpdateDentryAppPropertiesRequest.UpdateDentryAppPropertiesRequestAppProperties>
                {
                    appProperties0
                },
            };
            try
            {
                client.UpdateDentryAppPropertiesWithOptions("", "", updateDentryAppPropertiesRequest, updateDentryAppPropertiesHeaders, new AlibabaCloud.TeaUtil.Models.RuntimeOptions());
            }
            catch (TeaException err)
            {
                if (!AlibabaCloud.TeaUtil.Common.Empty(err.Code) && !AlibabaCloud.TeaUtil.Common.Empty(err.Message))
                {
                    // Objek err berisi properti code dan message, yang membantu 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))
                {
                    // Objek err berisi properti code dan message, yang membantu menemukan masalah
                }
            }
        }

    }
}
```

## Respons

### Isi respons

| Nama    | Tipe    | Deskripsi                                                                |
| ------- | ------- | ------------------------------------------------------------------------ |
| success | Boolean | Apakah pembaruan ini berhasil.   - **true**: Berhasil - **false**: Gagal |

### Contoh isi respons

```text theme={"theme":{"light":"github-light","dark":"github-dark"}}
HTTP/1.1 200 OK
Content-Type:application/json

{
  "success" : true
}
```

### Kode error

Jika pemanggilan API ini mengembalikan error, lihat dokumen [Kode error global](/id/open/development/server-api-error-codes-1) untuk mendapatkan solusi berdasarkan pesan error.

| HttpCode | Kode error                            | Pesan error   | Deskripsi                                                                                                   |
| -------- | ------------------------------------- | ------------- | ----------------------------------------------------------------------------------------------------------- |
| 400      | operationConcurrentControl            | %s            | Kontrol konkurensi                                                                                          |
| 400      | paramError                            | %s            | Error parameter                                                                                             |
| 400      | paramError.spaceId                    | %s            | Error parameter - spaceId                                                                                   |
| 400      | paramError.dentryId                   | %s            | Error parameter - dentryId                                                                                  |
| 400      | dentryAppPropertiesNumberExceedsLimit | %s            | Jumlah properti yang diatur oleh satu aplikasi pada sebuah dentry melebihi batas. Jumlah maksimum adalah 3. |
| 403      | permissionDenied                      | %s            | Pengguna tidak memiliki izin untuk mengubah properti file (atau folder).                                    |
| 404      | spaceNotExist                         | %s            | Ruang tidak ada.                                                                                            |
| 404      | dentryNotExist                        | %s            | File tidak ada.                                                                                             |
| 500      | systemError                           | %s            | Error sistem                                                                                                |
| 500      | unknownError                          | Unknown Error | Error tidak dikenal                                                                                         |
| 503      | operationTimeout                      | %s            | Permintaan melebihi batas waktu                                                                             |
