发布自定义属性定义时出现“CUSTOM_ATTRIBUTE_DUPLICATE_NAME”错误

时间:2021-04-09 02:41:38

标签: autodesk-forge autodesk-bim360 autodesk-data-management

我正在尝试使用此处的说明将自定义属性添加到 BIM360 文件夹: https://forge.autodesk.com/en/docs/bim360/v1/reference/http/document-management-custom-attribute-definitions-POST/

public async Task<long> addFolderCustomAttribute(string projectId, string folderId, string attributeName, string type)
    {
        var localVarPath = $"bim360/docs/v1/projects/{projectId.Replace("b.", "")}/folders/{System.Web.HttpUtility.UrlEncode(folderId)}/custom-attribute-definitions";
        var localVarQueryParams = new Dictionary<String, String>();
        Object localVarPostBody = null;
        var localVarHeaderParams = new Dictionary<String, String>(Configuration.Default.DefaultHeader);
        var localVarFormParams = new Dictionary<String, String>();
        var localVarFileParams = new Dictionary<String, FileParameter>();
        var localVarPathParams = new Dictionary<String, String>();
        String[] localVarHttpContentTypes = new String[] {
            "application/vnd.api+json"
        };
        String localVarHttpContentType = Configuration.Default.ApiClient.SelectHeaderContentType(localVarHttpContentTypes);
        if (!String.IsNullOrEmpty(Configuration.Default.AccessToken))
        {
            localVarHeaderParams["Authorization"] = "Bearer " + Configuration.Default.AccessToken;
        }
        localVarPostBody = "{\"name\":\"" + attributeName + "\", \"type\":\"" + type + "\"}";
        IRestResponse localVarResponse = (IRestResponse)await Configuration.Default.ApiClient.CallApiAsync(localVarPath,
            Method.POST, localVarQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarFileParams,
            localVarPathParams, localVarHttpContentType);

        int localVarStatusCode = (int)localVarResponse.StatusCode;

        var response = new ApiResponse</*JsonApiCollection*/dynamic>(localVarStatusCode,
            localVarResponse.Headers.ToDictionary(x => x.Name, x => x.Value.ToString()),
            /*(JsonApiCollection)*/ Configuration.Default.ApiClient.Deserialize(localVarResponse, typeof(JsonApiCollection)));

        var id = (long)((Autodesk.Forge.Model.DynamicJsonResponse)response.Data).Dictionary["id"];
        return id;
    }

我收到此错误:CUSTOM_ATTRIBUTE_DUPLICATE_NAME

但是,当我使用以下方法枚举文件夹的自定义属性时: https://forge.autodesk.com/en/docs/bim360/v1/reference/http/document-management-custom-attribute-definitions-GET/

public async Task<Dictionary<long, Tuple<string, string>>> getFolderCustomAttributeDefinition(string projectId, string folderId)
    {
        var localVarPath = $"bim360/docs/v1/projects/{projectId.Replace("b.", "")}/folders/{System.Web.HttpUtility.UrlEncode(folderId)}/custom-attribute-definitions";
        var localVarQueryParams = new Dictionary<String, String>();
        Object localVarPostBody = null;
        var localVarHeaderParams = new Dictionary<String, String>(Configuration.Default.DefaultHeader);
        var localVarFormParams = new Dictionary<String, String>();
        var localVarFileParams = new Dictionary<String, FileParameter>();
        var localVarPathParams = new Dictionary<String, String>();
        String[] localVarHttpContentTypes = new String[] {
            "application/vnd.api+json"
        };
        String localVarHttpContentType = Configuration.Default.ApiClient.SelectHeaderContentType(localVarHttpContentTypes);
        if (!String.IsNullOrEmpty(Configuration.Default.AccessToken))
        {
            localVarHeaderParams["Authorization"] = "Bearer " + Configuration.Default.AccessToken;
        }
        IRestResponse localVarResponse = (IRestResponse) await Configuration.Default.ApiClient.CallApiAsync(localVarPath,
            Method.GET, localVarQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarFileParams,
            localVarPathParams, localVarHttpContentType);

        int localVarStatusCode = (int)localVarResponse.StatusCode;

        var response =  new ApiResponse</*JsonApiCollection*/dynamic>(localVarStatusCode,
            localVarResponse.Headers.ToDictionary(x => x.Name, x => x.Value.ToString()),
            /*(JsonApiCollection)*/ Configuration.Default.ApiClient.Deserialize(localVarResponse, typeof(JsonApiCollection)));
        
        var sret = ((Autodesk.Forge.Model.DynamicJsonResponse)response.Data).Dictionary["results"];
        var resultsDic = ((Autodesk.Forge.Model.DynamicDictionary)sret).Dictionary;
        Dictionary<long, Tuple<string, string>> ret = new Dictionary<long, Tuple<string, string>>();
        foreach (var att in resultsDic) {
            var attrDic = (Autodesk.Forge.Model.DynamicDictionary)att.Value;
            ret.Add((long)attrDic.Dictionary["id"], new Tuple<string, string>((string)attrDic.Dictionary["name"], (string)attrDic.Dictionary["type"]));
        }
        return ret;
    }

它没有显示任何具有该名称的属性。

有什么想法吗?

0 个答案:

没有答案