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 |