Skip to content

OpenAPI 接入说明

DAMODEL OpenAPI 允许您通过 API Key 管理账号下的云资源。本文档主要介绍规格查询、实例、云磁盘和镜像管理接口。

配置
API 地址https://www.damodel.com
API Key前往控制台 - 管理 - API 密钥创建
请求格式application/json
时间戳Unix 秒级时间戳

需重点关注

API Key 具有账号资源操作权限,请仅在服务端保存和使用,不要放入网页、客户端安装包、公开代码仓库或日志中。

鉴权方式

每次请求都必须携带以下两个 HTTP Header:

Header必填说明
X-Damodel-Token控制台创建的 API Key,直接填写,不要添加 Bearer 前缀
X-Damodel-Timestamp发起请求时的 Unix 秒级时间戳,与服务端时间偏差不能超过 300 秒

示例:

shell
export DAMODEL_API="https://www.damodel.com"
export DAMODEL_TOKEN="sk-your-api-key"

curl "$DAMODEL_API/api/spec/list?region=cn-north-a" \
  -H "X-Damodel-Token: $DAMODEL_TOKEN" \
  -H "X-Damodel-Timestamp: $(date +%s)"

需关注

X-Damodel-Timestamp 必须在每次请求前重新生成。不要传毫秒时间戳,也不要复用超过 5 分钟的时间戳。

如果请求同时携带 Authorization 和非空的 X-Damodel-Token,服务端会优先使用 X-Damodel-Token;API Key 鉴权失败时不会回退到 Authorization

Python 请求示例

python
import os
import time
import requests

BASE_URL = "https://www.damodel.com"
API_KEY = os.environ["DAMODEL_TOKEN"]


def headers():
    return {
        "X-Damodel-Token": API_KEY,
        "X-Damodel-Timestamp": str(int(time.time())),
        "Content-Type": "application/json",
    }


response = requests.get(
    f"{BASE_URL}/api/spec/list",
    params={"region": "cn-north-a"},
    headers=headers(),
    timeout=30,
)
response.raise_for_status()
print(response.json())

通用响应格式

所有 JSON 接口都使用统一响应结构。请求成功时,response_metadata.errornull,业务数据位于 result

json
{
  "result": {},
  "response_metadata": {
    "request_id": "afcb17f1-1b9e-42dd-9e7d-78c4482f49d2",
    "trace_id": "65ea5d78bdaf4a88b064cf8f58f590bc",
    "action": "",
    "version": "",
    "service": "",
    "error": null
  }
}

请求失败时,result 通常为 null,错误信息位于 response_metadata.error

json
{
  "result": null,
  "response_metadata": {
    "request_id": "afcb17f1-1b9e-42dd-9e7d-78c4482f49d2",
    "trace_id": "65ea5d78bdaf4a88b064cf8f58f590bc",
    "action": "",
    "version": "",
    "service": "",
    "error": {
      "code_n": 100002,
      "code": "InvalidParameter",
      "message": "InvalidParameter: invalid request",
      "description": "参数错误"
    }
  }
}
字段说明
result接口业务数据;无返回数据或失败时通常为 null
request_id请求编号,向客服或技术支持反馈问题时请提供
trace_id链路追踪编号,排查跨服务问题时使用
error.code_n数字错误码,程序应优先根据此字段判断错误
error.code英文错误名称
error.message本次请求的详细错误信息
error.description面向用户的中文错误说明

HTTP 状态码和通用错误

不要只根据 HTTP 状态码判断业务结果;收到非 2xx 响应时,还应读取 response_metadata.error.code_n

HTTP 状态码code_ncode说明
400100002InvalidParameter缺少必填参数、参数格式或取值不正确
401100006InvalidTokenAPI Key 不存在、已删除、账号不可用,或时间戳缺失/过期
400100042PermissionDeniedAPI Key 所属子账号没有调用该接口的权限
429100015TooManyRequests请求频率过高
500100014InternalError服务内部错误,请保留 request_idtrace_id 后重试或联系技术支持

权限和资源归属

  • API Key 继承创建者当前的账号身份和权限。
  • 主账号 API Key 可以操作主账号资源。
  • 子账号 API Key 只能操作该子账号有权限访问的资源,计费仍归属主账号。
  • API Key 被删除、创建者被禁用或主账号被禁用后,后续请求会立即失败。

接口导航

分类文档主要接口
规格规格查询实例规格、云磁盘规格
实例实例管理创建、列表、详情、重命名、释放
云磁盘云磁盘管理创建、列表、重命名、扩容、释放
镜像镜像管理公共镜像、私有镜像、保存、重命名、删除

调用建议

  • 创建资源前先调用规格和镜像查询接口,不要在程序中长期硬编码规格 ID 或镜像 ID。
  • 创建、保存镜像等操作可能异步完成,请通过对应列表或详情接口轮询最终状态。
  • 对创建、扩容、释放和删除等非幂等操作谨慎重试。网络超时时,应先查询资源状态再决定是否重试。
  • 429 和临时性 500 错误使用指数退避;对参数、权限和余额错误不要自动重试。