github.com/cnotch/ipchub@v1.1.0/docs/apis.md (about) 1 ## 1 系统API 2 系统API无需登录,可以匿名访问。 3 4 ### 1.1 服务器信息查询 5 GET /api/v1/server 6 #### 1.1.1 参数和响应 7 8 + Body参数 9 无 10 + 查询参数 11 无 12 + 响应(200) 13 14 项目 | 类型 | 说明 15 -|-|- 16 vendor|string| 软件提供商 | 17 name | string | 服务名称 | 18 version | string | 服务版本 | 19 os | string | 服务运行的平台 | 20 arch | string | 服务运行的平台架构 | 21 start_on | string(timestamp) | 服务启动时间(RFC3339Nano 格式) | 22 duration | string | 持续时间 | 23 24 #### 1.1.2 示例 25 curl 示例: 26 ``` shell 27 curl http://localhost:1554/api/v1/server 28 ``` 29 30 响应: 31 ``` json 32 { 33 "vendor": "CAOHONGJU", 34 "name": "ipchub", 35 "version": "V1.0", 36 "os": "Darwin", 37 "arch": "AMD64", 38 "start_on": "2019-07-15T14:02:16.638804+08:00", 39 "duration": "23.319603373s" 40 } 41 ``` 42 43 ### 1.2 运行信息查询 44 GET /api/v1/runtime?extra={0|1} 45 #### 1.2.1 参数和响应 46 + Body参数 47 无 48 + 查询参数 49 50 项目 | 类型 | 说明及示例 51 -|-|- 52 extra | number | 0 或 1 ;如果=1响应会包含额外信息| 53 + 响应(200) 54 55 获取运行是信息,extra=1返回额外信息 56 项目 | 类型 | 说明及示例 57 -|-|- 58 on | timestamp | 采集时间(RFC3339Nano 格式)| 59 proc | object | 进程相关的统计信息 | 60 proc.cpu | number |cpu使用情况| 61 proc.priv | number |物理内存使用情况(kb)| 62 proc.cpu | number |虚拟内存使用情况(kb)| 63 proc.uptime|number | 进程运行时间(s)| 64 streams | object | 流信息 | 65 streams.sc| number | 流媒体源数量 | 66 streams.cc|number|流媒体消费者数量 | 67 rtsp| object| RTSP连接信息 | 68 rtsp.total|number|累计总链接数 | 69 rtsp.active | number | 当前活跃连接数 | 70 flv| object| flv连接信息 | 71 flv.total|number|累计总链接数 | 72 flv.active | number | 当前活跃连接数 | 73 extra | object | 运行时内存等信息 | 74 75 #### 1.2.1 示例 76 curl 示例一: 77 ``` 78 curl http://localhost:1554/api/v1/runtime 79 ``` 80 响应: 81 ``` json 82 { 83 "on": "2019-07-15T14:05:20.524916+08:00", 84 "proc": { 85 "cpu": 0, 86 "priv": 6876, 87 "virt": 2545968, 88 "uptime": 183 89 }, 90 "streams": { 91 "sources": 0, 92 "consumers": 0 93 }, 94 "rtsp": { 95 "total": 0, 96 "active": 0 97 }, 98 "flv": { 99 "total": 0, 100 "active": 0 101 } 102 } 103 ``` 104 105 示例二: 106 ``` 107 curl http://localhost:1554/api/v1/runtime?extra=1 108 ``` 109 响应: 110 ``` json 111 { 112 "on": "2019-07-15T14:06:41.012543+08:00", 113 "proc": { 114 "cpu": 0, 115 "priv": 6912, 116 "virt": 2545968, 117 "uptime": 264 118 }, 119 "streams": { 120 "sources": 0, 121 "consumers": 0 122 }, 123 "rtsp": { 124 "total": 0, 125 "active": 0 126 }, 127 "wsp": { 128 "total": 0, 129 "active": 0 130 }, 131 "rtmp": { 132 "total": 0, 133 "active": 0 134 }, 135 "extra": { 136 "heap": { 137 "inuse": 1768, 138 "sys": 64992, 139 "alloc": 641, 140 "idle": 63224, 141 "released": 0, 142 "objects": 3988 143 }, 144 "mcache": { 145 "inuse": 13, 146 "sys": 16 147 }, 148 "mspan": { 149 "inuse": 28, 150 "sys": 32 151 }, 152 "stack": { 153 "inuse": 544, 154 "sys": 544 155 }, 156 "gc": { 157 "cpu": 0, 158 "sys": 2182 159 }, 160 "go": { 161 "count": 11, 162 "procs": 8, 163 "sys": 70462, 164 "alloc": 641 165 } 166 } 167 } 168 ``` 169 170 ### 1.3 登录 171 POST api/v1/login 172 173 #### 1.3.1 参数和响应 174 + Body 参数 175 176 项目 | 类型 | 说明及示例 177 -|-|- 178 username | string | 用户名称| 179 password | string | 密码 | 180 + 查询参数 181 无 182 + 响应(200) 183 184 项目 | 类型 | 说明及示例 185 -|-|- 186 access_token | string | 访问令牌(有效期 2 小时)| 187 refresh_token | string | 刷新令牌(有效期 7 天) | 188 189 #### 1.3.2 示例 190 curl 示例: 191 ``` 192 curl -H "Content-Type: application/json" -X POST --data '{"username":"admin","password":"admin"}' http://localhost:1554/api/v1/login 193 ``` 194 195 响应: 196 ``` json 197 { 198 "access_token": "e8962d3214957043680e111d14e73721", 199 "refresh_token": "b447808fe9ada297bae6e2e898711bb4" 200 } 201 ``` 202 203 #### 1.3.3 使用access_token 204 所有需要授权的访问都需要 access_token。使用查询参数 token={access_token} 205 包括: 206 + 访问Api 207 http://.../api/v1/streams/rtsp/room/door?token=your_access_token 208 + http-flv 209 http://.../streams/room/door.flv?token=your_access_token 210 + websocket-flv 211 ws://.../ws/room/door.flv?token=your_access_token 212 + http-flv 213 http://.../steams/room/door.m3u8?token=your_access_token 214 215 ### 1.4 刷新access token 216 GET api/v1/refreshtoken?token={refresh_tokebn} 217 #### 1.3.1 参数和响应 218 + Body 参数 219 无 220 + 查询参数 221 222 项目 | 类型 | 说明及示例 223 -|-|- 224 token | string | 登录或上次Refreshtoken返回的refresh_token| 225 + 响应(200) 226 227 项目 | 类型 | 说明及示例 228 -|-|- 229 access_token | string | 访问令牌| 230 refresh_token | string | 刷新令牌 | 231 232 ## 2 用户管理 233 需要管理员权限 234 ### 2.1 获取用户信息 235 GET api/v1/users/{username} 236 237 #### 1.3.1 参数和响应 238 + Body 参数 239 无 240 + 查询参数 241 无 242 + 路径参数 243 244 项目 | 类型 | 说明及示例 245 -|-|- 246 username | string | 用户名称| 247 + 响应(200) 248 249 项目 | 类型 | 说明及示例 250 -|-|- 251 name | string | 用户名 | 252 admin | string | 是否是管理员 | 253 push | string |推送权限 | 254 pull | string | 拉取权限 | 255 256 ### 2.2 删除用户 257 DELETE api/v1/users/{username} 258 259 删除用户信息,但不会断开已有连接 260 261 ### 2.3 创建或更新用户信息 262 POST api/v1/users?update_password={0|1} 263 264 update_password 如果用户已存在,1 更新密码,其他值不会更新密码 265 266 ### 2.4 获取用户列表 267 GET api/v1/users 268 269 #### 1.3.1 参数和响应 270 + Body 参数 271 无 272 + 查询参数 273 274 项目 | 类型 | 说明及示例 275 -|-|- 276 page_size | number | 分页大小 | 277 page_token | string | 上次查询时返回的页token | 278 + 路径参数 279 无 280 + 响应(200) 281 282 项目 | 类型 | 说明及示例 | 283 -|-|-| 284 total | number | 用户总数 | 285 next_page_token | string | 下次查询的token | 286 users | array | 用户列表 | 287 name | string | 用户名 | 288 admin | string | 是否是管理员 | 289 push | string |推送权限 | 290 pull | string | 拉取权限 | 291 292 293 ## 3 路由管理 294 ### 3.1 基本对象 295 #### 3.1.1 路由 296 属性 | 类型 | 说明及示例 297 -|-|- 298 pattern | string | 本地路径模式字串| 299 url | string | 路由的目标地址,用户名和密码可以直接写在url中 | 300 keepalive | bool|是否保持连接;如果没有消费者是否继续保持连接,如果为false在5分钟后自动断开 | 301 302 #### 3.1.2 路由表 303 属性 | 类型 | 说明及示例 304 -|-|- 305 total |number |路由表中总个数 306 next_page_token | string |下一页查询需带上的 page_token 307 routes | array|路由信息数组 308 309 ### 3.2 获取路由信息 310 GET api/v1/routes/{pattern=**} 311 312 ### 3.2 删除路由 313 DELETE api/v1/routes/{pattern=**} 314 但不会断开已有连接 315 316 ### 3.3 创建路由 317 POST api/v1/routes 318 创建或更新路由信息 319 320 ### 3.4 获取路由表 321 GET api/v1/routes 322 323 + 查询参数 324 325 项目 | 类型 | 说明及示例 326 -|-|- 327 page_size | number | 分页大小 | 328 page_token | string | 上次查询时返回的页token | 329 330 ### 4 流管理 331 ### 4.1 基本对象 332 #### 4.1.1 流 333 属性 | 类型 | 说明及示例 334 -|-|- 335 start_on | string(timestamp) | 流启动时间(RFC3339Nano 格式) | 336 path | string | 流路径| 337 addr | string | 流提供者的地址,push或pull| 338 size | number | 流的大小| 339 video| object | 视频元数据| 340 audio| object | 音频元数据| 341 cc | number | 正在消费流的消费者数量| 342 cs | array | 正在消费流的消费者数组| 343 [].id | number | 消费者ID| 344 [].start_on | string(timestamp) | 消费启动时间(RFC3339Nano 格式) | 345 [].packet_type | string | 消费的包类型| 346 [].extra | string | 消费者额外描述| 347 [].flow | object | 消费者接收和发送的流量统计| 348 [].flow.inbytes | number | 消费者接收和发送的流量统计(kb)| 349 [].flow.outbytes | number | 消费者接收和发送的流量统计(kb)| 350 351 #### 4.1.2 流列表 352 属性 | 类型 | 说明及示例 353 -|-|- 354 total | number|流总个数 355 next_page_token | string |下一页查询需带上的 page_token 356 streams | array|流数组 357 358 ### 4.2 获取流列表 359 GET api/v1/streams?c={0|1} 360 获取流列表 361 + 查询参数 362 363 项目 | 类型 | 说明及示例 364 -|-|- 365 page_size | number | 分页大小 | 366 page_token | string | 上次查询时返回的页token | 367 c |number|是否返回消费者信息 1 返回,其他值不返回| 368 369 ### 4.3 获取流信息 370 GET api/v1/streams/{path=**}?c={0|1} 371 372 ### 4.4 删除流 373 DELETE api/v1/streams/{path=**} 374 375 ### 4.5 停止指定消费者 376 DELETE api/v1/streams/{path=**}:consumer?cid={cid} 377 + 查询参数 378 379 项目 | 类型 | 说明及示例 380 -|-|- 381 cid | number | 消费者id |