# 个人开放参数
> **OpenID**
```用户的唯一标识,智城云系统内部用户唯一标识,32位随机字符串```
> **OpenKey**
```每次用户登录后会返回的有效密钥,每次会话中有效,有效期72小时,超过有效期需要重新进行鉴权。```
> **ApplicationId**
```开发者的应用ID,不同的应用ID有独立的用户系统,比如相同的手机号可以在不同的应用下分别注册,应用ID可以在开发者个人中心中找到```
> **ApplicationKey**
```应用Key,平台会分配给每一个应用一个单独的Key,平台会根据应用ID来判断请求是否是正确的,应用Key可以在开发者个人中心中找到```
# 命名规范
OpenAPI采用标准的[Restful规范](http://www.ruanyifeng.com/blog/2014/05/restful_api.html)定义接口
HTTP请求的几大关键要素:
- 请求协议
包括安全的和非安全的协议,安全的一般为:HTTPS,非安全的为:HTTP
- 请求主机域名
请求的域名,决定请求哪种环境,例如:api.machtalk.net,test.api.machtalk.net
- 请求地址
请求的相对路径,类似 /v1/user,请求地址一般为名词
- 请求头信息
头信息包括标准的头信息,如:Accept-Language,Keep-Alive等,智城云的标准开放参数也放在头信息中,如openid,openkey,applicationid,applicationkey,开放参数统一使用小写。注意Content-Type头信息对于文本型的请求统一使用application/json
- 请求方式
请求方式包括四种:GET,POST,PUT,DELETE;标识请求的操作类型
| 请求方式 | 含义 |
| --- | --- |
| GET | 获取资源 |
| POST | 增加资源 |
| PUT | 修改资源 |
| DELETE | 删除资源 |
## **OpenAPI命名规范**
> - 使用有含义的英文单词
> - API中包含版本号
> - 使用请求方式决定操作类型,而不是将操作类型放在API地址上
> - 同一模块尽量使用相同的层级,比如用户模块使用/v1/user/XX/YY,保证可读性
> - API的参数会进行业务校验
# 接口的输入和输出
OpenAPI的输入与输出都是JSON,提交的参数以流的形式传参给服务器,服务器会把每个请求都理解为JSON字符串
智城云OpenAPI采用标准的Restful接口风格,标准的文本类接口的content-type使用application/json,**输入和输出均使用标准的JSON格式**,对于文件上传的接口的content-type使用multipart/form-data,对于文件下载的接口的content-type使用application/octet-stream
**设备输入的参数长度不能超过2K**
# 接口安全规范
> 接口请求,必须保证每次请求的安全合法,智城云OpenAPI使用SHA1对请求信息进行运算得到一个摘要进行请求的签名
智城云OpenAPI分为两类API:**需要用户鉴权的**和**不需要用户鉴权的**
* 不需要用户鉴权的:例如用户信息重复性检查,发送验证码,获取验证码凭证等,具体的可以看参数说明,不需要用户鉴权的加密方法为:SHA1\(HTTPMethod+RequestURI+params+applicationkey\)
* 需要用户鉴权的:例如查看用户信息,修改密码等,具体的可以看参数说明,需要用户鉴权的加密方法为:SHA1\(HTTPMethod+RequestURI+params+ts+openkey+applicationkey\)
## 接口限制
> 平台的接口调用并不是无限制的。为了防止开发者号的程序错误而引发服务器负载异常,默认情况下,每个应用调用接口都不能超过一定限制,当即将超过一定限制时,调用对应接口会收到错误码,同时会发送告警邮件给企业负责人和平台运维人员,基本的访问限制规则为每小时默认允许每小时调用接口4000次,超过阈值则抛错,1小时后恢复接口调用。
> 对于接口请求的IP如果超过一定限制也会放入请求黑名单,同时提供告警
> 平台会统计接口响应速度报表,提供接口服务质量依据
- 前言
- 名词解释
- 接口规范
- 接口调用原理说明
- 接口SDK使用
- 接口调试工具
- 用户类
- 基本操作
- 用户信息重复检查
- 发送验证码
- 获取验证码凭证
- 用户注册
- 用户鉴权
- 用户信息查看
- 修改用户基本信息
- 修改密码
- 修改邮箱
- 修改手机号
- 找回密码
- 上传头像
- 设备相关
- 设备管理
- 绑定设备
- 解绑设备
- 设备分享
- 获取设备分享码
- 绑定分享设备
- 修改设备名称
- 设备关系
- 查询设备列表
- 设置设备显示顺序
- 查询设备所属用户列表
- 设备权限
- 转让主人权限
- 设置客人权限
- 设备分组
- 添加设备分组
- 删除设备分组
- 修改设备分组
- 获取设备分组列表
- 设备售后
- 设备意见反馈
- 用户关系
- 添加好友
- 验证好友
- 删除好友
- 查看好友信息
- 好友列表
- 编辑好友昵称
- 搜索好友
- 用户消息
- 官方消息
- 查看官方消息
- 订阅/取消订阅官方消息
- 获取离线消息
- 情景模式
- 添加情景模式
- 修改情景模式
- 删除情景模式
- 查看情景模式
- 查询情景模式
- 执行情景模式
- 联动规则
- 新建规则
- 修改规则
- 查看规则
- 删除规则
- 查询规则列表
- 设备类
- 查询设备描述
- 查询设备快照
- 操作设备
- 查询设备LanPin
- 更新设备经纬度
- 查询设备版本信息
- 恢复出厂设置
- 设备PIN码申请
- 设备强制下线
- 推送升级
- 推送固件版本
- 推送模块版本
- 定时任务
- 新建定时任务
- 修改定时任务
- 删除定时任务
- 查看定时任务
- 定时任务列表
- 企业类
- 查询设备详细信息
- 查看设备快照
- 操控设备
- 恢复单个设备出厂设置
- 申请设备ID及PIN码
- 强制某设备下线
- 查询单个设备版本信息
- 推送升级版本信息
- 获取固件、模块版本列表
- 初始化设备信息
- 获取设备列表
- 设备数据上报
- 数据类
- 设备上报数据
- 设备数据查询
- 用户操作数据
- 设备告警数据
- 设备故障数据
- 在线时长统计
- 设备上下线日志
- 用户上下线日志
- 周期统计数据
- APP类
- 资源包
- 查询UI资源MD5
- 获取最新版UI资源包
- 获取指定版UI资源包
- APP版本
- 获取最新版本信息
- 最新版本下载地址
- 通用下载页面
- 查询APP基本信息
- 获取APP启动页图片地址
- 设备层级
- 查询层级列表
- 下载层级资源包
- 获取资源包MD5
- 获取型号配网引导信息
- APP意见反馈
- 通用类
- 地市信息
- 获取省信息
- 获取市信息
- 获取区信息
- 错误码
- 查看错误码信息
- 错误码文件下载
- 错误码文件MD5
- 文件
- 文件上传
- 文件下载
- 文件信息
- 获取客户端访问IP
- 获取服务器时间