上传API

上传 API 是一个 HTTP API,允许您上传工艺品和配件。

通过调用上传启动接口,您可以获得上传执行URL和状态确认URL。通过依次调用获取到的URL,您可以上传PITM数据和缩略图并检查验证结果。

示例代码 (Python) 包含这些进程的包装器。

https://github.com/ClusterVR/PITMSample/blob/main/python/cluster_api.py

上传文件

上传 API 将 PITM 数据和缩略图作为单个 zip 文件接收。

仅将以下两个文件放入 zip 文件的“/”中。

对于工艺品

  • item_template.glb:工艺物品(PITM 数据格式)
  • icon.png:缩略图(512px x 512px 不透明 PNG)

对于配件

  • accessory_template.glb:配件(PITM 数据格式)
  • icon.png:缩略图(512px x 512px 不透明 PNG)

上传起始端点

POST https://api.cluster.mu/v1/upload/item_template/policies(工艺物品)

POST https://api.cluster.mu/v1/upload/accessory_template/policies(配件)

通知开始上传并获取文件本身的上传URL和状态确认URL。

请在 HTTP 标头中设置以下内容。

  • Content-Type: “application/json”
  • X-Cluster-Access-Token:上传者的 CCK 访问令牌
  • X-Cluster-App-Version: “2.0.0”
  • X-Cluster-Device: “ClusterCreatorKit”
  • X-Cluster-Platform: “ClusterCreatorKit”
  • X-Cluster-Platform-Version:“api-<工具名称>-<版本>”(例如“api-itemcreator-0.5”)

注意:请小心使用上传者的 CCK 访问令牌,而不是开发人员的。

工艺品

{
    "contentType": "application/zip",
    "fileName": "item_template.zip",
    "fileSize": 123456, // zip 文件的大小 (字节)
    "isBeta": false // 如果作为测试版上传则为 true,作为正式版上传则为 false
}

回复 正常:201 Created

{
  "form": {...}, // 上传URL使用的数据
  "itemTemplateID": "12345678-abcd-1234-abcd-12345678abcd", // 新发放的ID
  "uploadUrl": "https://file-storage.cluster.mu/xxxxxx",
  "statusApiUrl": "https://upload-status.cluster.mu/item_template/xxxxxxxxxxxxxx"
}

此处获取的 itemTemplateID 可以在 https://docs.cluster.mu/script/en/classes/ItemTemplateId.html 中使用。上传URL可以从 uploadUrl 获取,状态确认URL可以从 statusApiUrl 获取。

配件

{
    "contentType": "application/zip",
    "fileName": "accessory_template.zip",
    "fileSize": 123456, // zip 文件的大小 (字节)
}

回复 正常:201 Created

{
  "form": {...}, // 上传URL使用的数据
  "accessoryTemplateID": "12345678-abcd-1234-abcd-12345678abcd", // 新发放的ID
  "uploadUrl": "https://file-storage.cluster.mu/xxxxxx",
  "statusApiUrl": "https://upload-status.cluster.mu/accessory_template/xxxxxxxxxxxxxx"
}

上传URL可以从 uploadUrl 获取,状态确认URL可以从 statusApiUrl 获取。

上传

通过对上传 URL 执行“POST”,您将实际上传文件并开始验证。发出的上传 URL 调用仅允许一次。

form 的内容作为 HTTP 表单,zip 文件作为 “item.zip”(MIME 类型:“application/zip”)发布。

使用状态确认 URL 检查上传和验证结果。

检查状态

您可以通过对状态确认 URL 执行 GET 来检查上传是否成功。即使完成对上传 URL 的 POST 后,服务器的内部处理和验证也可能需要一些时间。这通常需要几秒钟。状态确认URL可以多次调用。建议每秒轮询一次。如果在 120 秒内未完成,则视为上传失败并停止轮询状态确认端点。

回复

{
    "status": "...",
    "reason": "..."
}
  • status: "VALIDATING", "ERROR", "COMPLETED" 之一
    • VALIDATING:验证上传的内容
    • COMPLETED: 上传成功
    • ERROR:由于某种原因导致验证错误或上传失败
  • reason: 如果 status"ERROR",验证错误的详细信息