Skip to content

HTTP API

业务服务端通过 TiRTC HTTP API 查询设备连接信息或提交设备唤醒请求。所有请求都应由持有应用鉴权凭证的可信业务服务端发起,不要从客户端应用或设备固件直接调用。

HTTP API 地址:

text
https://api-tirtc.tange365.com

TGV1-HMAC-SHA256 鉴权

请求使用 TGV1-HMAC-SHA256 鉴权。签名计算方法见 HTTP API:TGV1-HMAC-SHA256 签名

每次请求携带以下鉴权 Header:

Header说明
AuthorizationTGV1 鉴权行
X-Tg-Algorithm算法名
X-Tg-DateUTC 请求时间
X-Tg-App-Id应用 ID,必须与签名凭证中的 app_id 一致
X-Tg-Content-Sha256请求体 SHA-256,使用十六进制小写字符串;GET 请求按空请求体计算
X-Tg-Signed-Headers参与签名的 Header 名称列表

SecretKeyId 只用于业务服务端计算签名,不得出现在请求、客户端代码或设备固件中。以下示例中的 <...> 需要替换为签名器为当前请求生成的实际值。

接口列表

能力接口用途
低功耗休眠唤醒GET /v1/device/connectivity查询设备当前连接信息
低功耗休眠唤醒POST /v1/device/wakeup-request向设备提交唤醒请求

低功耗休眠唤醒

以下接口与设备端低功耗接入配合使用。调用唤醒接口前,设备主控需要先通过 TiRTC SDK 获取休眠连接参数,休眠模块再使用这些参数登录至少一个休眠服务器并持续发送心跳。完整设备端流程见接入低功耗休眠唤醒

客户端正常连接设备时,TiRTC 会自动触发唤醒,不需要业务服务端重复提交唤醒请求。业务服务端通常只在告警、门铃或其他业务事件需要主动启动主控时调用唤醒接口。

查询设备连接信息

此接口查询设备当前连接信息,包括平台最近观察到的主控信令连接和休眠连接事件。它适合联调和辅助判断连接变化,不直接判断设备是否存活、是否已完成唤醒或当前处于哪一种业务状态。

请求

http
GET /v1/device/connectivity?device_id={device_id}

查询参数:

参数必填说明
device_idTiRTC 业务设备 ID;长度为 1~255 字节,必须是有效 UTF-8;作为查询参数传递时需要进行 URL 编码
bash
curl --get \
  'https://api-tirtc.tange365.com/v1/device/connectivity' \
  -H 'Authorization: <TGV1-Authorization>' \
  -H 'X-Tg-Algorithm: TGV1-HMAC-SHA256' \
  -H 'X-Tg-Date: <UTC-Request-Time>' \
  -H 'X-Tg-App-Id: <AppId>' \
  -H 'X-Tg-Content-Sha256: <Empty-Body-SHA256>' \
  -H 'X-Tg-Signed-Headers: <Signed-Header-Names>' \
  --data-urlencode 'device_id=example-device-id'

响应

接口使用统一响应结构:

字段类型说明
codenumber业务状态码;0 表示成功,非 0 表示业务错误
messagestring业务状态说明
dataobject成功时按接口定义返回设备连接信息;无数据时省略该字段

无论业务成功还是失败,HTTP 状态码均为 200 OK。调用方必须根据响应体中的 code 判断业务结果,不能只检查 HTTP 状态码。

业务成功时:

json
{
  "code": 0,
  "message": "ok",
  "data": {
    "device_id": "example-device-id",
    "signal": {
      "is_online": true,
      "last_login_at": 1787000000,
      "last_heartbeat_at": 1787000030,
      "last_offline_at": 1786999000
    },
    "sleep": {
      "last_login_at": 1786998000,
      "last_heartbeat_at": 1786998060,
      "last_offline_at": 1786999100
    }
  }
}

signalsleep 分别对应设备上的两条连接链路:

对象表示的设备侧状态字段说明
signal设备主控运行 TiRTC SDK 时,与 TiRTC 平台建立的信令连接状态is_online 表示平台当前是否观察到主控的信令连接在线;其余字段记录该连接最近的登录、心跳和离线事件
sleep主控休眠期间,休眠模块与休眠服务器建立的 TCP 保活连接状态记录休眠连接最近的登录、心跳和离线事件;当前响应不提供 is_online 字段

last_login_atlast_heartbeat_atlast_offline_at 分别表示对应链路最近一次登录、心跳和离线事件的时间。时间字段使用 Unix 秒时间;没有对应事件时返回 null

这两个对象是平台对两条独立连接的观测结果,不是互斥的设备状态。在主控进入休眠或从休眠恢复的切换阶段,两组时间可能同时存在。不要仅根据 signalsleep 推断设备已经唤醒、仍然存活或当前处于哪一种业务状态;需要结合设备上线通知或其他业务信号判断最终状态。

错误

业务失败时同样返回 200 OK,例如:

json
{
  "code": 40003,
  "message": "参数错误"
}

主要业务错误:

code说明
40003参数错误,例如 device_id 缺失、长度不在 1~255 字节范围内或不是有效 UTF-8
40301应用凭证无权限
40302设备与应用不匹配
40304设备已过期
40403设备不存在
50000服务内部错误
50301连接状态服务不可用
50401查询超时

连接状态服务不可用或查询超时时,平台不会把缺失结果解释成设备离线,而是返回对应的业务错误码。

提交设备唤醒请求

此接口用于向设备提交唤醒请求,由业务事件主动唤醒设备。目标设备必须已经按照设备接入流程登录休眠服务器;如果平台没有找到对应休眠连接,请求无法表示设备可被唤醒。

请求

http
POST /v1/device/wakeup-request
Content-Type: application/json

可选请求头 X-Request-ID 用于指定请求标识,取值为 1~128 个可打印 ASCII 字符。省略时由服务端生成;请求头非法时返回 40003,并由服务端生成新的 request_id。最终使用的请求标识通过响应体顶层的 request_id 返回,且与响应头 X-Tg-Request-Id 一致。

请求体:

json
{
  "device_id": "example-device-id",
  "custom_data": "0x1234"
}
字段必填说明
device_idTiRTC 业务设备 ID;长度为 1~255 字节,必须是有效 UTF-8
custom_data两字节自定义唤醒数据;必须为字符串,格式为 0x 加四位十六进制字符,例如 0x1234;非字符串时返回 40003 和稳定提示 custom_data must be a string;仅在目标设备能够解析自定义数据时传入

custom_data 会成为八字节唤醒包的最后两字节。目标设备的休眠模块只能匹配固定报文时,必须省略 custom_data,平台随后下发默认唤醒包 98 3b 16 f8 f3 9c 00 00;如果传入自定义数据导致最后两字节发生变化,该设备可能无法被唤醒。可编程设备如何校验报文、解析自定义数据并保证唤醒幂等,见处理唤醒包

请求示例:

bash
curl -X POST \
  'https://api-tirtc.tange365.com/v1/device/wakeup-request' \
  -H 'Content-Type: application/json' \
  -H 'Authorization: <TGV1-Authorization>' \
  -H 'X-Tg-Algorithm: TGV1-HMAC-SHA256' \
  -H 'X-Tg-Date: <UTC-Request-Time>' \
  -H 'X-Tg-App-Id: <AppId>' \
  -H 'X-Tg-Content-Sha256: <Request-Body-SHA256>' \
  -H 'X-Tg-Signed-Headers: <Signed-Header-Names>' \
  -H 'X-Request-ID: req-001' \
  -d '{"device_id":"example-device-id","custom_data":"0x1234"}'

响应

响应体使用统一结构,request_idcodemessage 同为顶层字段;成功时按接口定义返回 data,无数据时省略 data

字段类型说明
codenumber业务状态码;0 表示成功,非 0 表示业务错误
messagestring业务状态说明
request_idstring本次请求标识;优先使用有效的 X-Request-ID,未传时由服务端生成;与响应头 X-Tg-Request-Id 一致
dataobject成功时按接口定义返回唤醒请求信息;无数据时省略该字段

平台接受请求时返回 HTTP 202 Accepted

json
{
  "code": 0,
  "message": "ok",
  "request_id": "req-001",
  "data": {
    "device_id": "example-device-id",
    "status": "accepted",
    "accepted_at": "2026-08-23T10:00:00.126+08:00"
  }
}

202 Accepted 表示平台至少在一个目标节点找到了设备休眠连接,并且唤醒数据的 TCP 写入调用没有立即失败。它不表示唤醒数据已经到达设备、主控已经启动、设备已经连接 signal,或设备最终唤醒成功。

提交成功后,可以再次查询设备连接信息,或使用你的业务上线信号判断设备是否完成启动。不要把 202 Accepted 当作最终上线信号。

错误

业务错误使用相同的 codemessagerequest_id 结构,例如:

json
{
  "code": 40412,
  "message": "设备未连接",
  "request_id": "req-001"
}

主要业务错误:

code说明
40003参数错误,例如字段缺失、长度超限或格式不合法,或 custom_data 不是字符串
40301应用凭证无权限
40302设备与应用不匹配
40304设备已过期
40403设备不存在
40412设备未连接
40902不支持唤醒协议
42901请求过载
50000服务内部错误
50204唤醒投递失败
50301唤醒服务不可用
50402投递结果未知

收到 50402 时,不能据此判断唤醒数据是否已经投递。使用 request_id 关联日志,并结合设备上线信号判断最终结果;重试时仍需保证业务操作幂等。

TiRTC 开发文档