mirror of https://github.com/veops/cmdb.git
686 lines
21 KiB
Markdown
686 lines
21 KiB
Markdown
# CMDB API 文档
|
||
|
||
```
|
||
Rule Endpoint
|
||
------------------------------------------------------------------------------------------------------------
|
||
/api/login account_api.loginview
|
||
/api/logout account_api.logoutview
|
||
/api/sso/login cas.login
|
||
/api/sso/logout cas.logout
|
||
/api/v0.1/attributes cmdb_api_v01.attributeview
|
||
/api/v0.1/attributes/<int:attr_id> cmdb_api_v01.attributeview
|
||
/api/v0.1/attributes/<string:attr_name> cmdb_api_v01.attributeview
|
||
/api/v0.1/attributes/s cmdb_api_v01.attributesearchview
|
||
/api/v0.1/attributes/search cmdb_api_v01.attributesearchview
|
||
/api/v0.1/ci cmdb_api_v01.ciview
|
||
/api/v0.1/ci/<int:ci_id> cmdb_api_v01.ciview
|
||
/api/v0.1/ci/<int:ci_id>/detail cmdb_api_v01.cidetailview
|
||
/api/v0.1/ci/<int:ci_id>/flush cmdb_api_v01.ciflushview
|
||
/api/v0.1/ci/<int:ci_id>/unique cmdb_api_v01.ciunique
|
||
/api/v0.1/ci/flush cmdb_api_v01.ciflushview
|
||
/api/v0.1/ci/heartbeat cmdb_api_v01.ciheartbeatview
|
||
/api/v0.1/ci/heartbeat/<string:ci_type>/<string:unique> cmdb_api_v01.ciheartbeatview
|
||
/api/v0.1/ci/s cmdb_api_v01.cisearchview
|
||
/api/v0.1/ci/search cmdb_api_v01.cisearchview
|
||
/api/v0.1/ci/type/<int:type_id> cmdb_api_v01.cisbytypeview
|
||
/api/v0.1/ci_relations/<int:cr_id> cmdb_api_v01.deletecirelationview
|
||
/api/v0.1/ci_relations/<int:first_ci_id>/<int:second_ci_id> cmdb_api_v01.cirelationview
|
||
/api/v0.1/ci_relations/<int:first_ci_id>/second_cis cmdb_api_v01.getsecondcisview
|
||
/api/v0.1/ci_relations/<int:second_ci_id>/first_cis cmdb_api_v01.getfirstcisview
|
||
/api/v0.1/ci_relations/s cmdb_api_v01.cirelationsearchview
|
||
/api/v0.1/ci_relations/search cmdb_api_v01.cirelationsearchview
|
||
/api/v0.1/ci_relations/statistics cmdb_api_v01.cirelationstatisticsview
|
||
/api/v0.1/ci_type_relations cmdb_api_v01.cityperelationview
|
||
/api/v0.1/ci_type_relations/<int:child_id>/parents cmdb_api_v01.getparentsview
|
||
/api/v0.1/ci_type_relations/<int:ctr_id> cmdb_api_v01.cityperelationdelete2view
|
||
/api/v0.1/ci_type_relations/<int:parent_id>/<int:child_id> cmdb_api_v01.cityperelationview
|
||
/api/v0.1/ci_type_relations/<int:parent_id>/children cmdb_api_v01.getchildrenview
|
||
/api/v0.1/ci_types cmdb_api_v01.citypeview
|
||
/api/v0.1/ci_types/<int:type_id> cmdb_api_v01.citypeview
|
||
/api/v0.1/ci_types/<int:type_id>/attribute_groups cmdb_api_v01.citypeattributegroupview
|
||
/api/v0.1/ci_types/<int:type_id>/attributes cmdb_api_v01.citypeattributeview
|
||
/api/v0.1/ci_types/<int:type_id>/enable cmdb_api_v01.enablecitypeview
|
||
/api/v0.1/ci_types/<string:type_name> cmdb_api_v01.citypeview
|
||
/api/v0.1/ci_types/<string:type_name>/attributes cmdb_api_v01.citypeattributeview
|
||
/api/v0.1/ci_types/attribute_groups/<int:group_id> cmdb_api_v01.citypeattributegroupview
|
||
/api/v0.1/ci_types/groups cmdb_api_v01.citypegroupview
|
||
/api/v0.1/ci_types/groups/<int:gid> cmdb_api_v01.citypegroupview
|
||
/api/v0.1/ci_types/query cmdb_api_v01.citypequeryview
|
||
/api/v0.1/history/ci/<int:ci_id> cmdb_api_v01.cihistoryview
|
||
/api/v0.1/history/records cmdb_api_v01.recordview
|
||
/api/v0.1/history/records/<int:record_id> cmdb_api_v01.recorddetailview
|
||
/api/v0.1/preference/ci_types cmdb_api_v01.preferenceshowcitypesview
|
||
/api/v0.1/preference/ci_types/<id_or_name>/attributes cmdb_api_v01.preferenceshowattributesview
|
||
/api/v0.1/preference/relation/view cmdb_api_v01.preferencerelationapiview
|
||
/api/v0.1/preference/tree/view cmdb_api_v01.preferencetreeapiview
|
||
/api/v0.1/relation_types cmdb_api_v01.relationtypeview
|
||
/api/v0.1/relation_types/<int:rel_id> cmdb_api_v01.relationtypeview
|
||
/api/v1/acl/resource_groups acl_api_v1.resourcegroupview
|
||
/api/v1/acl/resource_groups/<int:group_id> acl_api_v1.resourcegroupview
|
||
/api/v1/acl/resource_groups/<int:group_id>/items acl_api_v1.resourcegroupitemsview
|
||
/api/v1/acl/resource_groups/<int:group_id>/permissions acl_api_v1.resourcepermissionview
|
||
/api/v1/acl/resource_types acl_api_v1.resourcetypeview
|
||
/api/v1/acl/resource_types/<int:type_id> acl_api_v1.resourcetypeview
|
||
/api/v1/acl/resource_types/<int:type_id>/perms acl_api_v1.resourcetypepermsview
|
||
/api/v1/acl/resources acl_api_v1.resourceview
|
||
/api/v1/acl/resources/<int:resource_id> acl_api_v1.resourceview
|
||
/api/v1/acl/resources/<int:resource_id>/permissions acl_api_v1.resourcepermissionview
|
||
/api/v1/acl/roles acl_api_v1.roleview
|
||
/api/v1/acl/roles/<int:child_id>/parents acl_api_v1.rolerelationview
|
||
/api/v1/acl/roles/<int:rid> acl_api_v1.roleview
|
||
/api/v1/acl/roles/<int:rid>/resource_groups/<int:group_id>/grant acl_api_v1.rolepermissiongrantview
|
||
/api/v1/acl/roles/<int:rid>/resource_groups/<int:group_id>/revoke acl_api_v1.rolepermissionrevokeview
|
||
/api/v1/acl/roles/<int:rid>/resources/<int:resource_id>/grant acl_api_v1.rolepermissiongrantview
|
||
/api/v1/acl/roles/<int:rid>/resources/<int:resource_id>/revoke acl_api_v1.rolepermissionrevokeview
|
||
/api/v1/acl/users acl_api_v1.userview
|
||
/api/v1/acl/users/<int:uid> acl_api_v1.userview
|
||
/api/v1/acl/users/info acl_api_v1.getuserinfoview
|
||
/api/v1/acl/users/reset_key_secret acl_api_v1.userresetkeysecretview
|
||
```
|
||
|
||
## 状态返回码的定义
|
||
|
||
- 200:成功
|
||
- 400:失败
|
||
- 401:未认证
|
||
- 403:no permission
|
||
- 404:not found
|
||
- 500:服务器未知错误
|
||
|
||
## 用户接口
|
||
|
||
### CI 搜索接口
|
||
|
||
- GET `/api/v0.1/ci/s`
|
||
- 参数
|
||
- `string:_type` 搜索的 ci_type,多个用分号隔开, 例如: \_type:(server;vservser)
|
||
- `string:q` 搜索表达式, 例如`q=hostname:cmdb*`
|
||
- `string:fl` 返回字段(id, attr_name, attr_alias 均可),英文半角逗号分隔
|
||
- `string:ret_key` 返回字段类型 `Enum("id", "name", "alias")` 默认 `name`
|
||
- `count` 指定一次返回 CI 数
|
||
- `facet` 属性字段,逗号分隔,返回属性字段对应的所有值
|
||
- 搜索表达式:
|
||
- 简单的字符串
|
||
- `attribute:value` 指定属性搜索, `attribute`可以是`id`,`attr_name`和`attr_alias`
|
||
- 以上的组合,逗号分隔
|
||
- 组合查询支持
|
||
- `AND`关系-`默认关系`
|
||
- `OR`关系 - eg.`-hostname:cmdb*`、
|
||
- `NOT`关系-属性字段前加`~`eg. `~hostname:cmdb*`
|
||
- `IN`查询. eg. `hostname:(cmdb*;cmdb-web*)` 小括号, 分号分隔
|
||
- `RANGE`查询. eg. `hostname:[cmdb* _TO_ cmdb-web*]` `_TO_`分隔
|
||
- `COMPARISON`查询. eg. `cpu_core_num:>5` 支持`>, >=, <, <=`
|
||
|
||
### CI Relation 搜索接口
|
||
|
||
- GET `/api/v0.1/ci_relations/s`
|
||
- 参数
|
||
- `int:root_id` 搜索的根节点的 ci_id
|
||
- `int:level` 搜索的层级
|
||
- `string:_type` 搜索的 ci_type,多个用分号隔开, 例如: \_type:(docker;kvm)
|
||
- `string:q` 搜索表达式, 例如`q=hostname:cmdb*`
|
||
- `string:fl` 返回字段(id, attr_name, attr_alias 均可),英文半角逗号分隔
|
||
- `string:ret_key` 返回字段类型 `Enum("id", "name", "alias")` 默认 `name`
|
||
- `count` 指定一次返回 CI 数
|
||
- `facet` 属性字段,逗号分隔,返回属性字段对应的所有值
|
||
- 搜索表达式:
|
||
- 简单的字符串
|
||
- `attribute:value` 指定属性搜索, `attribute`可以是`id`,`attr_name`和`attr_alias`
|
||
- 以上的组合,逗号分隔
|
||
- 组合查询支持
|
||
- `AND`关系-`默认关系`
|
||
- `OR`关系 - eg.`-hostname:cmdb*`、
|
||
- `NOT`关系-属性字段前加`~`eg. `~hostname:cmdb*`
|
||
- `IN`查询. eg. `hostname:(cmdb*;cmdb-web*)` 小括号, 分号分隔
|
||
- `RANGE`查询. eg. `hostname:[cmdb* _TO_ cmdb-web*]` `_TO_`分隔
|
||
- `COMPARISON`查询. eg. `cpu_count:>5` 支持`>, >=, <, <=`
|
||
|
||
## api key 认证
|
||
|
||
每个用户会自动生成一个 `api key` 和 一个`secret`, 通过 API 接口使用的时候,需要提供一个参数 `_key`值为您的`api key`, 以及参数`_secret`值为除`_key`以外的参数,按照**参数名的字典序**排列,并连接到`url path` + `secret`之后的`sha1`**十六进制**值。
|
||
|
||
## 管理接口
|
||
|
||
### Attribute 管理接口
|
||
|
||
- GET `/api/v0.1/attributes/s` 列出所有属性
|
||
|
||
- param
|
||
- `string:q` 属性名称或者别名,允许为空
|
||
- return
|
||
|
||
```
|
||
{
|
||
"numfound": 1,
|
||
"attributes": [
|
||
{
|
||
"attr_name": "idc",
|
||
"is_choice": true,
|
||
"choice_value": ["南汇", "欧阳路"],
|
||
"attr_id": 1,
|
||
"is_multivalue": false,
|
||
"attr_alias": "IDC",
|
||
"value_type": "text",
|
||
"is_uniq": false
|
||
}
|
||
}
|
||
```
|
||
|
||
- error 无
|
||
|
||
- GET `/api/v0.1/attributes/<string:attr_name>`、 `/api/v0.1/attributes/<int:attr_id>` 根据属性名称、别名或 ID 获取属性
|
||
- param
|
||
- `string:attr_name` 属性名称或别名
|
||
- `int:attr_id` 属性 ID
|
||
- `attr_id`和`attr_name`选其一
|
||
- return
|
||
```
|
||
{
|
||
"attribute": {
|
||
"attr_name": "idc",
|
||
"is_choice": true,
|
||
"choice_value": ["南汇", "欧阳路"],
|
||
"attr_id": 1,
|
||
"is_multivalue": false,
|
||
"attr_alias": "IDC",
|
||
"value_type": "text",
|
||
"is_uniq": false
|
||
},
|
||
}
|
||
```
|
||
- error
|
||
- `404` 找不到属性
|
||
- POST `/api/v0.1/attributes` 增加新的属性
|
||
- param
|
||
- `string:attr_name` 属性名称
|
||
- `string:attr_alias` 属性别名,可为空,为空时等于`attr_name`
|
||
- `boolean:choice_value` 若属性有预定义值, 则不能为空
|
||
- `boolean:is_multivalue` 属性是否允许多值,默认`False`
|
||
- `boolean:is_uniq` 属性是否唯一,默认`False`
|
||
- `string:value_type` 属性值类型, `Enum("text", "int", "float", "date")`, 默认`text`
|
||
- return
|
||
```
|
||
{
|
||
"attr_id":1
|
||
}
|
||
```
|
||
- error
|
||
- `500` 属性已存在
|
||
- `500` 属性增加失败
|
||
- PUT `/api/v0.1/attributes/<int:attr_id>` 修改属性
|
||
|
||
- param
|
||
- `string:attr_name` 属性名称
|
||
- `string:attr_alias` 属性别名,可为空,为空时等于`attr_name`
|
||
- `boolean:choice_value` 若属性有预定义值, 则不能为空
|
||
- `boolean:is_multivalue` 属性是否允许多值,值为 0 或者 1,默认`False`
|
||
- `boolean:is_uniq` 属性是否唯一,值为 0 或者 1,默认`False`
|
||
- `string:value_type` 属性值类型, `Enum("text", "int", "float", "date")`, 默认`text`
|
||
- return
|
||
|
||
```
|
||
{
|
||
"attr_id":1
|
||
}
|
||
```
|
||
|
||
- error
|
||
- `500` 属性已存在
|
||
- `500` 属性增加失败
|
||
|
||
- DELETE `/api/v0.1/attributes/<int:attr_id>` 根据 ID 删除属性
|
||
- param
|
||
- `int:attr_id` 属性 ID
|
||
- return
|
||
```
|
||
{
|
||
"message":"attribute %s deleted" % attr_name
|
||
}
|
||
```
|
||
- error
|
||
- `404` 属性不存在
|
||
- `500` 删除属性失败
|
||
|
||
#### CIType 属性管理
|
||
|
||
- GET `/api/v0.1/ci_types/<int:type_id>/attributes` 根据 type_id 查询固有属性列表
|
||
- return
|
||
```
|
||
{
|
||
"attributes": [
|
||
{
|
||
"attr_name": "idc",
|
||
"is_choice": true,
|
||
"choice_value": ["南汇", "欧阳路"],
|
||
"attr_id": 1,
|
||
"is_multivalue": false,
|
||
"attr_alias": "IDC",
|
||
"value_type": "text",
|
||
"is_uniq": false
|
||
},
|
||
],
|
||
"type_id": 1,
|
||
}
|
||
```
|
||
- POST `/api/v0.1/ci_types/<int:type_id>/attributes` 根据`attr_id`增加 CIType 的属性
|
||
- param
|
||
- `string:attr_id` `,`分隔的`attr_id`
|
||
- `int:is_required` 0 或者 1
|
||
- return
|
||
```
|
||
{
|
||
"attributes":[1, 2, 3]
|
||
}
|
||
```
|
||
- error
|
||
- `404` CIType 不存在
|
||
- `404` 属性不存在
|
||
- `500` 增加失败
|
||
- DELETE `/api/v0.1/ci_types/<int:type_id>/attributes` 删除 CIType 的属性
|
||
- param
|
||
|
||
- `string:attr_id` `,`分隔的`attr_id`
|
||
|
||
- return
|
||
```
|
||
{
|
||
"attributes":[1, 2, 3]
|
||
}
|
||
```
|
||
- error
|
||
- `404` CIType 不存在
|
||
- `404` 属性不存在
|
||
- `500` 增加失败
|
||
|
||
### CIType 管理接口
|
||
|
||
- `/api/v0.1/ci_types` 列出所有 CI 类型
|
||
- param `string:type_name` 类型名称,允许为空
|
||
- return
|
||
```
|
||
{
|
||
"numfound": 2,
|
||
"ci_types": [
|
||
{
|
||
"uniq_key": "sn",
|
||
"type_name": "物理机",
|
||
"type_id": 1,
|
||
"enabled": True,
|
||
"icon_url": ""
|
||
},
|
||
{
|
||
"uniq_key": "uuid",
|
||
"type_name": "KVM",
|
||
"type_id": 2,
|
||
"enabled": True,
|
||
"icon_url": ""
|
||
}
|
||
],
|
||
}
|
||
```
|
||
- error 无
|
||
- GET `/api/v0.1/ci_types/query` 查询 CI 类型
|
||
- param `string:q` 可以是 type_id, type_name, type_alias
|
||
- return
|
||
```
|
||
{
|
||
"citype": {
|
||
"type_name": "software",
|
||
"type_id": 4,
|
||
"icon_url": "",
|
||
"type_alias": "\u8f6f\u4ef6",
|
||
"enabled": true,
|
||
"uniq_key": 21
|
||
}
|
||
}
|
||
```
|
||
- error
|
||
- `400` message=输入参数缺失
|
||
- `404` message='citype is not found'
|
||
- POST `/api/v0.1/ci_types` 增加新 CIType
|
||
- param (下列参数任意一个或多个)
|
||
- `string:type_name` CIType 名称
|
||
- `string:type_alias` 类型别名,可为空
|
||
- `int:_id` 唯一属性 ID
|
||
- `string:unique` 唯一属性名称
|
||
- `_id`和`unique`只能二选一
|
||
- `icon_url`
|
||
- `enabled` 0/1
|
||
- return
|
||
```
|
||
{
|
||
"type_id": 2
|
||
}
|
||
```
|
||
- error
|
||
- `400` message=输入参数缺失
|
||
- `500` message=CIType 已存在
|
||
- `500` message=唯一属性不存在
|
||
- `500` message=唯一属性不是唯一的
|
||
- PUT `/api/v0.1/ci_types/<int:type_id>` 修改 CIType
|
||
|
||
- param (下列参数任意一个或多个)
|
||
- `string:type_name` CIType 名称
|
||
- `string:type_alias` 类型别名,可为空
|
||
- `int:_id` 唯一属性 ID
|
||
- `string:unique` 唯一属性名称
|
||
- `_id`和`unique`只能二选一
|
||
- `icon_url`
|
||
- `enabled` 0/1
|
||
- return
|
||
|
||
```
|
||
{
|
||
"type_id": 2
|
||
}
|
||
```
|
||
|
||
- error
|
||
- `400` message=输入参数缺失
|
||
- `500` message=CIType 已存在
|
||
- `500` message=唯一属性不存在
|
||
- `500` message=唯一属性不是唯一的
|
||
|
||
- GET/POST `/api/v0.1/ci_types/<int:type_id>/enable` 修改 CIType
|
||
- param
|
||
- `enabled` 0 or 1
|
||
- return
|
||
```
|
||
{
|
||
"type_id": 2
|
||
}
|
||
```
|
||
- error
|
||
- `500` 设置失败
|
||
- `404` CIType 不存在
|
||
- DELETE `/api/v0.1/ci_types/<int:type_id>` 根据 ID 删除 CIType
|
||
- return
|
||
```
|
||
{
|
||
"message":"ci type %s deleted" % type_name
|
||
}
|
||
```
|
||
- error
|
||
- `500` 删除失败
|
||
- `404` CIType 不存在
|
||
|
||
### CITypeRelation 管理接口
|
||
|
||
- GET `/api/v0.1/relation_types` 列出所有 CIType 关系类型名
|
||
- return
|
||
```
|
||
[
|
||
{
|
||
"created_at": null,
|
||
"deleted": false,
|
||
"deleted_at": null,
|
||
"id": 1,
|
||
"name": "contain",
|
||
"updated_at": null
|
||
}
|
||
]
|
||
```
|
||
- error 无
|
||
- GET `/api/v0.1/ci_type_relations/<int:parent_id>/children` 返回所有 child id
|
||
- return
|
||
```
|
||
{
|
||
"children": [
|
||
{
|
||
"ctr_id": 1,
|
||
"type_name": "project",
|
||
"type_id": 2,
|
||
"icon_url": "",
|
||
"type_alias": "应用",
|
||
"enabled": true,
|
||
"uniq_key": 3
|
||
}
|
||
]
|
||
}
|
||
```
|
||
- error 无
|
||
- GET `/api/v0.1/ci_type_relations/<int:child_id>/parents` 返回 parent id
|
||
|
||
- return
|
||
|
||
```
|
||
{
|
||
"parents": [{'parent':1, 'relaltion_type': 'containes', "ctr_id":1}],
|
||
}
|
||
```
|
||
|
||
- error 无
|
||
|
||
- POST `/api/v0.1/ci_type_relations/<int:parent_id>/<int:child_id>` 增加 CIType 关系
|
||
- param
|
||
- `string:relation_type` 类型名称
|
||
- return
|
||
```
|
||
{
|
||
"ctr_id": 1
|
||
}
|
||
```
|
||
- error
|
||
- `500` 增加失败
|
||
- `404` CIType 不存在
|
||
- DELETE `/api/v0.1/ci_type_relations/<int:ctr_id>` 根据`ctr_id`删除 CIType 关系
|
||
- return
|
||
```
|
||
{
|
||
"message": "CIType relation deleted"
|
||
}
|
||
```
|
||
- error
|
||
- `500` 删除失败
|
||
- `404` 关系不存在
|
||
|
||
### CI 管理接口
|
||
|
||
- GET `/api/v0.1/ci/type/<int:type_id>` 查询 CIType 的所有 CI,一次返回 25 条记录
|
||
|
||
- param
|
||
|
||
- `string:fields` 返回属性名、id,逗号隔开
|
||
- `string:ret_key` 返回属性 key,默认'name',还可是'id', 'alias'
|
||
- `int:page` 页码
|
||
|
||
- return
|
||
|
||
```
|
||
{
|
||
"numfound": 1,
|
||
"type_id":1,
|
||
"page": 1,
|
||
"cis": [
|
||
{
|
||
"ci_type": "KVM",
|
||
"_type": 1,
|
||
"nic": [
|
||
2
|
||
],
|
||
"hostname": "xxxxxx",
|
||
"_unique": "xxxxxx",
|
||
"_id": 1
|
||
}
|
||
]
|
||
}
|
||
```
|
||
|
||
- error
|
||
- `404` CIType 不存在
|
||
|
||
- GET `/api/v0.1/ci/<int:ci_id>` 查询 CI
|
||
|
||
- return
|
||
|
||
```
|
||
{
|
||
"ci": {
|
||
"ci_type": "KVM",
|
||
"_type": 1,
|
||
"nic": [2],
|
||
"hostname": "xxxxx",
|
||
"_unique": "xxxxx",
|
||
"_id": 1
|
||
},
|
||
"ci_id": 1
|
||
}
|
||
```
|
||
|
||
- error 无
|
||
|
||
- POST `/api/v0.1/ci` 增加 CI
|
||
- param
|
||
- `string:ci_type` CIType name 或者 id
|
||
- `string:_no_attribute_policy` 当添加不存在的 attribute 时的策略, 默认`ignore`
|
||
- 其他 url 参数`k=v`: `k` 为属性名(id 或别名亦可), `v`为对应的值
|
||
- 此 CIType 的`unique`字段必须包含在 url 参数中
|
||
- return
|
||
```
|
||
{
|
||
"ci_id": 1,
|
||
}
|
||
```
|
||
- error
|
||
- `500` 添加失败
|
||
- PUT `/api/v0.1/ci` 修改 CI
|
||
- param
|
||
- `string:ci_type` CIType name 或者 id
|
||
- `string:_no_attribute_policy` 当添加不存在的 attribute 时的策略, 默认`ignore`
|
||
- 其他 url 参数`k=v`: `k` 为属性名(id 或别名亦可), `v`为对应的值
|
||
- 此 CIType 的`unique`字段必须包含在 url 参数中
|
||
- return
|
||
```
|
||
{
|
||
"ci_id":1,
|
||
}
|
||
```
|
||
- error
|
||
- `500` 添加失败
|
||
- DELETE `/api/v0.1/ci/<int:ci_id>` 删除 ci
|
||
- return
|
||
```
|
||
{
|
||
"message":"ok",
|
||
}
|
||
```
|
||
- error
|
||
- `500` 删除失败
|
||
|
||
## CI Relation 管理接口
|
||
|
||
- GET `/api/v0.1/ci_relations/<int:first_ci_id>/second_cis` 返回所有 second cis
|
||
- return
|
||
```
|
||
{
|
||
"numfound": 1,
|
||
"second_cis": [
|
||
{
|
||
"ci_type": "project",
|
||
"ci_type_alias": "应用",
|
||
"_type": 2,
|
||
"_id": 18,
|
||
"project_name": "cmdb-api"
|
||
}
|
||
]
|
||
}
|
||
```
|
||
- error 无
|
||
- GET `/api/v0.1/ci_relations/<int:second_ci_id>/first_cis` 返回 first cis
|
||
|
||
- return
|
||
|
||
```
|
||
{
|
||
"first_cis": [
|
||
{
|
||
"ci_type": "project",
|
||
"ci_type_alias": "应用",
|
||
"_type": 2,
|
||
"_id": 18,
|
||
"project_name": "cmdb-api"
|
||
}
|
||
],
|
||
"numfound": 1
|
||
}
|
||
```
|
||
|
||
- error 无
|
||
|
||
- POST `/api/v0.1/ci_relations/<int:first_ci_id>/<int:second_ci_id>` 增加 CI 关系
|
||
- param
|
||
- `int: more` more 实例
|
||
- `string:relation_type` 类型名称
|
||
- return
|
||
```
|
||
{
|
||
"cr_id":1
|
||
}
|
||
```
|
||
- error
|
||
- `500` 增加失败
|
||
- `404` CI 不存在
|
||
- DELETE `/api/v0.1/ci_relations/<int:cr_id>` 根据`cr_id`删除 CI 关系
|
||
- return
|
||
```
|
||
{
|
||
"message":"CIType relation deleted"
|
||
}
|
||
```
|
||
- error
|
||
- `500` 删除失败
|
||
- `404` 关系不存在
|
||
|
||
## 历史记录管理接口
|
||
|
||
- GET `/api/v0.1/history/records` 查询历史记录
|
||
- param
|
||
- `int: page`
|
||
- `string: username` 变更用户
|
||
- `string: start` 变更开始时间
|
||
- `string: end` 变更结束时间
|
||
- return
|
||
```
|
||
{
|
||
"username": "",
|
||
"start": "2014-12-31 14:57:43",
|
||
"end": "2015-01-07 14:57:43",
|
||
"records": [
|
||
{
|
||
"origin": null,
|
||
"attr_history": [],
|
||
"timestamp": "2015-01-01 22:12:39",
|
||
"reason": null,
|
||
"rel_history": {
|
||
"add": 1
|
||
},
|
||
"user": 1,
|
||
"record_id": 1234,
|
||
"ticket_id": null
|
||
}
|
||
]
|
||
}
|
||
```
|
||
- error 无
|
||
- GET `/api/v0.1/history/records/<int:record_id>` 历史记录详情
|
||
- return
|
||
```
|
||
{
|
||
"username": "demo",
|
||
"timestamp": "2015-01-02 20:21:16",
|
||
"rel_history": {
|
||
"add": [
|
||
[
|
||
123,
|
||
"deploy",
|
||
234
|
||
]
|
||
],
|
||
"delete": []
|
||
},
|
||
"attr_history": {}
|
||
}
|
||
```
|
||
- error
|
||
- `404` 该记录不存在
|