一、概述
本文档涵盖 VSaaS 平台核心接口,包含两大部分:
1. Token 获取:分为服务器级 VSaaS Token(server oauth token)和用户级 VSaaS Token(user vsaas token),是调用所有接口的前置条件;
2. 强绑设备:解决用户退货未解绑设备的场景,支持将设备强制绑定到新账户。
前置条件:所有接口调用前需获取对应权限的 Token(服务器 Token/用户 Token),且调用者需具备对应操作权限(如设备所有权、服务器级授权)。
1. Token 获取:分为服务器级 VSaaS Token(server oauth token)和用户级 VSaaS Token(user vsaas token),是调用所有接口的前置条件;
2. 强绑设备:解决用户退货未解绑设备的场景,支持将设备强制绑定到新账户。
前置条件:所有接口调用前需获取对应权限的 Token(服务器 Token/用户 Token),且调用者需具备对应操作权限(如设备所有权、服务器级授权)。
二、VSaaS Token 获取接口
(一)获取服务器级 VSaaS Token(server oauth token)
从 TUTK VSaaS 平台获取服务器级 Token,用于后续调用用户 Token 获取、强绑设备等需要服务器级权限的接口,需使用 TUTK 提供的 client_id 和 client_secret 进行 Base64 编码授权。
1. 请求说明
| 项 | 说明 |
|---|---|
| HTTP请求方式 | POST |
| 请求URL | https://vsaas-domain/vsaas/api/v1/ss/oauth_token |
| 请求头(Header) | Authorization: Basic {base64(client_id:client_secret)} Content-Type: application/x-www-form-urlencoded(必传) |
2. 请求参数
| 参数类型 | 参数名 | 类型 | 必选 | 说明 |
|---|---|---|---|---|
| URL参数 | realm | String | 是 | 由TUTK提供,用以区分不同客户 |
| 表单参数 | grant_type | String | 是 | 固定值:client_credentials |
3. 响应说明
3.1 响应参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| data.token.access_token | String | 服务器级 VSaaS Token(server oauth token) |
| data.token.token_type | String | 固定返回:Bearer |
| data.token.expires_in | Number | Token 有效期(秒),示例:2592000 |
| data.token.refresh_token | String | 空值,无需刷新 Token |
| data.token.scope | String | 权限类型,示例:vsaas.ss.contract.action.all |
3.2 响应状态码
| 状态码 | 徽章 | 说明 |
|---|---|---|
| 200 | 成功 | 请求成功,返回 Token 信息 |
| 400 | 参数错误 | 必填参数缺失、realm 无效、grant_type 错误 |
| 401 | 授权失败 | client_id/client_secret 无效、Base64 编码错误 |
4. 请求示例(curl)
curl --location --request POST 'https://vsaas-domain/vsaas/api/v1/ss/oauth_token?realm=aaaa' \
--header 'Authorization: Basic TVZPVUJRMzVsYnNTNmJGVzlQQmNMc2UzVjNaWkRZUUtmYno0UXlYTjpTZXJjck12czM2VXVjbXZnVk1UOHQ3dFc3eHJpMG56bnhwNlRuT3VCOHVuNkU3RjJreW5SWllxSmJFc2RiTEh4WmFsbUlncllCZnQ0NjdmSUx6aXRjaGxCM0RSdUxUR3djM2RYY0d2N3c5NlR3dVRkMEx5WEFKM1hMNE4zRTdUWg==' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-raw 'grant_type=client_credentials'
5. 响应示例(成功)
{
"data": {
"token": {
"access_token": "Sz05S5sWOrssssssPsi5M",
"expires_in": 2592000,
"refresh_token": "",
"scope": "vsaas.ss.contract.action.all",
"token_type": "Bearer"
}
}
}
(二)获取用户级 VSaaS Token(user vsaas token)
基于服务器级 Token 获取指定用户的 VSaaS Token,用于后续操作该用户的设备(如分享、管理),支持通过邮箱/手机号/用户ID指定用户。
1. 请求说明
| 项 | 说明 |
|---|---|
| HTTP请求方式 | POST |
| 请求URL | https://vsaas-domain/vsaas/api/v1/ss/login |
| 请求头(Header) | Authorization: Bearer {server_token}(服务器级 Token) Content-Type: application/json(必传) |
2. 请求参数
| 参数类型 | 参数名 | 类型 | 必选 | 说明 |
|---|---|---|---|---|
| JSON参数 | email/account | String | 是 | 用户标识:邮箱、手机号或用户ID(二选一传入) |
3. 响应说明
3.1 响应参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| data.access_token | String | 用户级 VSaaS Token(user vsaas token) |
| data.token_type | String | 固定返回:Bearer |
| data.expires_in | String | Token 有效期(秒),示例:3600 |
| data.refresh_token | String | 空值,无需刷新 Token |
| data.scopes | Array | 权限列表,示例:["read", "write"] |
3.2 响应状态码
| 状态码 | 徽章 | 说明 |
|---|---|---|
| 200 | 成功 | 请求成功,返回用户 Token 信息 |
| 400 | 参数错误 | 用户标识缺失、格式错误 |
| 401 | 授权失败 | 服务器 Token 无效/过期、用户不存在 |
4. 请求示例(curl)
curl --location --request POST 'https://vsaas-domain/vsaas/api/v1/ss/login' \
--header 'Authorization: Bearer LKdkjlk8873BNN' \
--header 'Content-Type: application/json' \
--data-raw '{
"email": "[email protected]"
}'
5. 响应示例(成功)
{
"data": {
"access_token": "WpgE1ke2squVznSSvJiJ",
"expires_in": "3600",
"refresh_token": "",
"scopes": ["read", "write"],
"token_type": "Bearer"
}
}
