若接收烟台小樱桃网络科技有限公司(以下称为“小樱桃”)的此份文档,即表示您已同意以下条款。若不同意以下条款,请立即停止使用本文档。
本文档版权所有烟台小樱桃网络科技有限公司。保留任何未在本文档中明示授予的权利。文档中涉及小樱桃的专有信息。未经小樱桃事先书面许可,任何单位和个人不得复制、传递、分发、使用和泄漏该文档以及该文档包含的任何图片、表格、数据及其他信息。本网页版文档仅在xswitch.cn上发布。
本产品符合有关环境保护和人身安全方面的设计要求,产品的存放、使用和弃置应遵照产品手册、相关合同或相关国法律、法规的要求进行。
本文档按“现状”和“仅此状态”提供。本文档中的信息随着小樱桃的产品和技术的进步将不断更新,小樱桃不再通知此类信息的更新。
烟台小樱桃网络科技有限公司
地址:烟台市高新区蓝海路1号
邮编:264000
电话:0535-6753997
XUI支持通过API方式访问。根据安装部署方式的不同,可以使用不同的鉴权方式。
本文讨论基于Session的认证方式。
通过认证API拿到Token后,即可携带Token访问有权限认证的接口。
使用用户名密码获取Token。
/api/sessions
POST
参数 | 必选 | 类型 | 备注 |
---|---|---|---|
Content-Type | 是 | string | application/json
或
application/x-www-form-urlencoded |
参数 | 必选 | 类型 | 备注 |
---|---|---|---|
login | 是 | string | 用户名 |
password | 是 | string | 密码 |
正常返回一个JSON Object。
返回字段 | 必选 | 类型 | 备注 |
---|---|---|---|
code | 是 | int | 结果代码 |
token | 是 | string | TOKEN (X-XTRA-AUTH-ID) |
如果出错,返回HTTP状态码如403
(用户名/密码错)500
(内部错误)等。
首先,用用户名和密码获取一个TOKEN,参数的提交方式有两种,一种是基于URL字符串(www-form-urlencoded
),如:
curl -XPOST -d 'login=1007&password=1234' 192.168.1.100:8081/api/sessions
也可以提交一个JSON请求,如:
curl -XPOST -d '{"login": "1007", "password": "1234"}' \
-H "Content-Type: application/json" 192.168.1.100:8081/api/sessions
返回:
状态 | 返回值 |
---|---|
成功 | {"code": 200, "token": "319a18e6-98e0-4b7e-b2f1-10d85d4a1d3d"} |
失败 | {code = 403, text = "Wrong username or password"} |
后续所有的请求(包括注销)都需要使用该Token。如
curl -H "X-XTRA-AUTH-ID: 62dd0173-4916-4b1c-b958-546e4d7c91fe" 192.168.1.100:8081/api/users
也可以将该Key加入到Cookie中,如
freeswitch_xtra_session_id=62dd0173-4916-4b1c-b958-546e4d7c91fe
如上所见,Key与Cookie是通用的,所以,在Web界面上获取到的Cookie,也可以直接在API中使用,直到Cookie失效。
/api/sessions
DELETE
正常返回一个Object。
返回字段 | 必选 | 类型 | 备注 |
---|---|---|---|
code | 是 | int | 结果码 |
text | 是 | string | 描述字符串 |
curl -XDELETE -H "X-XTRA-AUTH-ID: 62dd0173-4916-4b1c-b958-546e4d7c91fe" 192.168.1.100:8081/api/sessions
返回:
状态 | 返回值 |
---|---|
成功 | {"code":200, "text":"OK"} |
失败 | 500 |
{"code":200, "text":"OK"}
用户在集成调用XUI
接口的过程中,需要Session ID
作为验证身份的标识,对于开发者,可以申请一个永久有效的Session ID
,申请途径有两种,一种是通过XUI Web
界面登陆后去申请,另外一种是通过HTTP REST API
。
Web
方式TODO
如图所示,每个用户登录后只能操作自己的开发key,申请后永久有效。当然申请后还可以查询和删除。
Key API
说明POST http://host:port/api/users/dev_keys
参数 | 必选 | 类型 | 备注 |
---|---|---|---|
Content-Type | 是 | string | application/json |
参数 | 必选 | 类型 | 备注 |
---|---|---|---|
username | 是 | string | 用户名(分机号码) |
password | 是 | string | 用户密码(分机密码) |
domain | 是 | string | 用户域名 |
description | 否 | string | key描述 |
curl -0 -H "Content-Type: application/json" --data \
'{"username": "t13201", "password": "1234", "domain":"test.com"}' \
-XPOST 192.168.1.100:8081/api/users/dev_keys
{
"username" : "t13201",
"password" : "1234",
"domain" : "test.com"
}
{
"data": {
"description": "test",
"updated_at": "2019-08-07 20:27:07",
"key": "5bdd2cdd-fc64-47b1-b40e-f578d48b6d82",
"deleted_at": "",
"id": "20",
"user_id": "35",
"created_at": "2019-08-07 20:27:07"
},
"code": 200,
"text": "success"
}
返回字段 | 必选 | 类型 | 备注 |
---|---|---|---|
code | 是 | int | 状态码 |
text | 是 | string | 状态描述 |
data | 是 | string | key数据 |
状态码 | 描述 |
---|---|
200 | success |
403 | Wrong Username Or Password |
406 | Missing Args |
500 | service error |
用户API客户端删除自己的开发key
请求URL
DELETE http://host:port/api/users/dev_keys
参数:
参数 | 必选 | 类型 | 备注 |
---|---|---|---|
Content-Type | 是 | string | application/json |
X-XTRA-AUTH-ID | 是 | string | key值 |
curl -0 -H "Content-Type: application/json" \
-H "X-XTRA-AUTH-ID: 62dd0173-4916-4b1c-b958-546e4d7c91fe" \
-XDELETE 192.168.1.100:8081/api/users/dev_keys
发送:
返回:
{
"code": 0,
"text": "sucess"
}
返回字段 | 必选 | 类型 | 备注 |
---|---|---|---|
code | 是 | int | 状态码 |
text | 是 | string | 状态描述 |
状态码 | 描述 |
---|---|
0 | success |
403 | Wrong Auth Id |
406 | Missing Args |
500 | service error |
用户API客户端查询自己的开发key列表 ###请求URL:
http://host:port/api/users/dev_keys
参数 | 必选 | 类型 | 备注 |
---|---|---|---|
Content-Type | 是 | string | application/json |
X-XTRA-AUTH-ID | 是 | string | key值 |
curl -0 -H "Content-Type: application/json" -GET \
-H "X-XTRA-AUTH-ID: 62dd0173-4916-4b1c-b958-546e4d7c91fe" \
192.168.1.100:8081/api/users/dev_keys
{
"text": "success",
"data": [{
"created_at": "2019-08-06 20:13:06",
"key": "62dd0173-4916-4b1c-b958-546e4d7c91fe",
"id": "2",
"description": "",
"user_id": "35",
"deleted_at": "",
"updated_at": "2019-08-06 20:13:06"
}, {
"created_at": "2019-08-06 21:03:15",
"key": "a09a4f9f-afc5-4eb9-bc32-db5fc4c75c7f",
"id": "9",
"description": "",
"user_id": "35",
"deleted_at": "",
"updated_at": "2019-08-06 21:03:15"
}],
"code": 200
}
返回字段 | 必选 | 类型 | 备注 |
---|---|---|---|
code | 是 | int | 状态码 |
text | 是 | string | 状态描述 |
data | 是 | string | key列表 |
状态码 | 描述 |
---|---|
0 | success |
403 | Wrong Auth Id |
406 | Missing Args |
500 | service error |
Websocket认证地址是/ws
,在建立连接后进行认证。文档见JSON
API相关文档。