Data Exchange的 createExchange操作拒绝已发布的Revit云协作模型的source.fileId,原因是格式错误(EMEA)

编程语言 2026-07-11

我正在为ACC EMEA项目中的一个已发布的Revit Cloud工作共享模型调用APS Data Exchange GraphQL createExchange 方法。

What already works:

  • PublishModel 返回 200
  • /items/{itemId}/tip 返回一个有效的已发布版本
  • 动态 viewName 解析工作正常

阻塞的问题在于 createExchangesource.fileId 视为格式错误并拒绝。

我把这两个值测试为 source.fileId

  • urn:adsk.wipemea:dm.lineage:Rpzb-JclT_CiRrIJG2s6_A
  • urn:adsk.wipemea:fs.file:vf.Rpzb-JclT_CiRrIJG2s6_A?version=21

两者都被拒绝。

我使用的区域是 EMEA,以及这个端点:

POST https://developer.api.autodesk.com/dataexchange/2023-05/graphql

这些是请求头:

Authorization: Bearer <token>
Content-Type: application/json
Region: EMEA

这是我发送的mutation体:

{
    "query": "mutation CreateExchange($input: CreateExchangeInput!) { createExchange(input: $input) { exchange { id name } } }",
    "variables": {
        "input": {
            "viewName": "{3D - kasp084nNVZPT}",
            "source": {
                "fileId": "urn:adsk.wipemea:fs.file:vf.Rpzb-JclT_CiRrIJG2s6_A?version=21"
            },
            "target": {
                "name": "DX_Auto",
                "folderId": "urn:adsk.wipemea:fs.folder:co.IKtTt0VuS0Sq8ngHp9otfA"
            }
        }
    }
}

这是我收到的响应:

{
  "errors": [
    {
      "message": "[400 Bad Request] The following ID is malformed: urn:adsk.wipemea:fs.file:vf.Rpzb-JclT_CiRrIJG2s6_A?version=21.",
      "locations": [
        {
          "line": 1,
          "column": 57
        }
      ],
      "path": [
        "createExchange"
      ],
      "extensions": {
        "x-request-id": "af217ec4-fba8-4e52-834f-822c122f5e36",
        "errorType": "BAD_REQUEST"
      }
    }
  ],
  "data": {
    "createExchange": null
  }
}

我也测试了RCW lineage id,得到同样的“malformed id”错误。

示例请求ID:

  • 38ac0ee7-0ef8-4181-b5fc-21be18ba8b3a
  • af217ec4-fba8-4e52-834f-822c122f5e36

我的问题:在ACC EMEA中,createExchange 调用期望的 source.fileId 格式是什么,用于已发布的Revit Cloud工作共享模型?

我已经测试了来自 /tip 的RCW lineage项目ID和已发布版本ID,结果两者都被视为格式错误而被拒绝。

解决方案

fileId和 folderId并非来自Data Management API的 ID。它们应当是Data Exchange GraphQL API的 ID值。

对于folderId,请使用以下查询任一返回的ID值。

query GetProjectFolders ($projectId:ID!){
  project(projectId: $projectId) {
    id
    name
    folders {
      results {
        id
        name
      }
    }
  }
}
query GetFolderContent($folderId: ID!) {
  folder(folderId: $folderId) {
    id
    name
    folders {
      results {
        id
        name
        __typename
      }
    }
    items {
      ... on Items {
        results {
          id
          name
          extensionType
        }
      }
    }
  }
}

对于fileId,请使用上述文件夹查询中项的ID值。

参考:

站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。

相关文章